Add L10N interface to server container

This commit is contained in:
Bart Visscher 2013-09-25 18:34:01 +02:00
parent bae121b16d
commit 9f777fba98
5 changed files with 125 additions and 13 deletions

34
lib/l10n/factory.php Normal file
View File

@ -0,0 +1,34 @@
<?php
/**
* Copyright (c) 2013 Bart Visscher <bartv@thisnet.nl>
* This file is licensed under the Affero General Public License version 3 or
* later.
* See the COPYING-README file.
*
*/
namespace OC\L10N;
/**
* TODO: Description
*/
class Factory {
/**
* cached instances
*/
protected $instances = array();
/**
* get an L10N instance
* @param $app string
* @param $lang string|null
* @return OC_L10N
*/
public function get($app) {
if (!isset($this->instances[$app])) {
$this->instances[$app] = new \OC_L10N($app);
}
return $this->instances[$app];
}
}

View File

@ -25,12 +25,7 @@
/**
* This class is for i18n and l10n
*/
class OC_L10N {
/**
* cached instances
*/
protected static $instances=array();
class OC_L10N implements \OCP\IL10N {
/**
* cache
*/
@ -83,13 +78,10 @@ class OC_L10N {
* @return OC_L10N
*/
public static function get($app, $lang=null) {
if(is_null($lang)) {
if(!isset(self::$instances[$app])) {
self::$instances[$app]=new OC_L10N($app);
}
return self::$instances[$app];
}else{
return new OC_L10N($app, $lang);
if (is_null($lang)) {
return OC::$server->getL10N($app);
} else {
return new \OC_L10N($app, $lang);
}
}

View File

@ -102,6 +102,9 @@ class Server extends SimpleContainer implements IServerContainer {
$this->registerService('AllConfig', function($c) {
return new \OC\AllConfig();
});
$this->registerService('L10NFactory', function($c) {
return new \OC\L10N\Factory();
});
$this->registerService('UserCache', function($c) {
return new UserCache();
});
@ -217,6 +220,15 @@ class Server extends SimpleContainer implements IServerContainer {
return $this->query('AllConfig');
}
/**
* get an L10N instance
* @param $app string appid
* @return \OC_L10N
*/
function getL10N($app) {
return $this->query('L10NFactory')->get($app);
}
/**
* Returns an ICache instance
*

67
lib/public/il10n.php Normal file
View File

@ -0,0 +1,67 @@
<?php
/**
* Copyright (c) 2013 Bart Visscher <bartv@thisnet.nl>
* This file is licensed under the Affero General Public License version 3 or
* later.
* See the COPYING-README file.
*
*/
namespace OCP;
/**
* TODO: Description
*/
interface IL10N {
/**
* @brief Translating
* @param $text String The text we need a translation for
* @param array $parameters default:array() Parameters for sprintf
* @return \OC_L10N_String|string Translation or the same text
*
* Returns the translation. If no translation is found, $text will be
* returned.
*/
public function t($text, $parameters = array());
/**
* @brief Translating
* @param $text_singular String the string to translate for exactly one object
* @param $text_plural String the string to translate for n objects
* @param $count Integer Number of objects
* @param array $parameters default:array() Parameters for sprintf
* @return \OC_L10N_String|string Translation or the same text
*
* Returns the translation. If no translation is found, $text will be
* returned. %n will be replaced with the number of objects.
*
* The correct plural is determined by the plural_forms-function
* provided by the po file.
*
*/
public function n($text_singular, $text_plural, $count, $parameters = array());
/**
* @brief Localization
* @param $type Type of localization
* @param $params parameters for this localization
* @returns String or false
*
* Returns the localized data.
*
* Implemented types:
* - date
* - Creates a date
* - l10n-field: date
* - params: timestamp (int/string)
* - datetime
* - Creates date and time
* - l10n-field: datetime
* - params: timestamp (int/string)
* - time
* - Creates a time
* - l10n-field: time
* - params: timestamp (int/string)
*/
public function l($type, $data);
}

View File

@ -101,6 +101,13 @@ interface IServerContainer {
*/
function getConfig();
/**
* get an L10N instance
* @param $app string appid
* @return \OCP\IL10N
*/
function getL10N($app);
/**
* Returns an ICache instance
*