From 9f777fba988422366732a3f128e2fb73ffddfbb4 Mon Sep 17 00:00:00 2001 From: Bart Visscher Date: Wed, 25 Sep 2013 18:34:01 +0200 Subject: [PATCH] Add L10N interface to server container --- lib/l10n/factory.php | 34 +++++++++++++++++ lib/private/l10n.php | 18 +++------ lib/private/server.php | 12 ++++++ lib/public/il10n.php | 67 +++++++++++++++++++++++++++++++++ lib/public/iservercontainer.php | 7 ++++ 5 files changed, 125 insertions(+), 13 deletions(-) create mode 100644 lib/l10n/factory.php create mode 100644 lib/public/il10n.php diff --git a/lib/l10n/factory.php b/lib/l10n/factory.php new file mode 100644 index 0000000000..ba168872ac --- /dev/null +++ b/lib/l10n/factory.php @@ -0,0 +1,34 @@ + + * 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]; + } + +} diff --git a/lib/private/l10n.php b/lib/private/l10n.php index f93443b886..3e84c306dc 100644 --- a/lib/private/l10n.php +++ b/lib/private/l10n.php @@ -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); } } diff --git a/lib/private/server.php b/lib/private/server.php index ef2007663c..e4cc0c6da8 100644 --- a/lib/private/server.php +++ b/lib/private/server.php @@ -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 * diff --git a/lib/public/il10n.php b/lib/public/il10n.php new file mode 100644 index 0000000000..9cf9093d39 --- /dev/null +++ b/lib/public/il10n.php @@ -0,0 +1,67 @@ + + * 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); +} diff --git a/lib/public/iservercontainer.php b/lib/public/iservercontainer.php index f4045faefe..e8bc1bedf9 100644 --- a/lib/public/iservercontainer.php +++ b/lib/public/iservercontainer.php @@ -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 *