diff options
author | Bart Visscher <bartv@thisnet.nl> | 2013-09-25 18:34:01 +0200 |
---|---|---|
committer | Bart Visscher <bartv@thisnet.nl> | 2013-10-04 18:11:02 +0200 |
commit | 9f777fba988422366732a3f128e2fb73ffddfbb4 (patch) | |
tree | 69b43762523448f3b59ccf27667b296fb99500e3 | |
parent | bae121b16dbabed3ec307ea58e3b8a73ab27161c (diff) | |
download | nextcloud-server-9f777fba988422366732a3f128e2fb73ffddfbb4.tar.gz nextcloud-server-9f777fba988422366732a3f128e2fb73ffddfbb4.zip |
Add L10N interface to server container
-rw-r--r-- | lib/l10n/factory.php | 34 | ||||
-rw-r--r-- | lib/private/l10n.php | 18 | ||||
-rw-r--r-- | lib/private/server.php | 12 | ||||
-rw-r--r-- | lib/public/il10n.php | 67 | ||||
-rw-r--r-- | lib/public/iservercontainer.php | 7 |
5 files changed, 125 insertions, 13 deletions
diff --git a/lib/l10n/factory.php b/lib/l10n/factory.php new file mode 100644 index 00000000000..ba168872acd --- /dev/null +++ b/lib/l10n/factory.php @@ -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]; + } + +} diff --git a/lib/private/l10n.php b/lib/private/l10n.php index f93443b886a..3e84c306dc2 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 ef2007663c6..e4cc0c6da81 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(); }); @@ -218,6 +221,15 @@ class Server extends SimpleContainer implements IServerContainer { } /** + * get an L10N instance + * @param $app string appid + * @return \OC_L10N + */ + function getL10N($app) { + return $this->query('L10NFactory')->get($app); + } + + /** * Returns an ICache instance * * @return \OCP\ICache diff --git a/lib/public/il10n.php b/lib/public/il10n.php new file mode 100644 index 00000000000..9cf9093d391 --- /dev/null +++ b/lib/public/il10n.php @@ -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); +} diff --git a/lib/public/iservercontainer.php b/lib/public/iservercontainer.php index f4045faefef..e8bc1bedf91 100644 --- a/lib/public/iservercontainer.php +++ b/lib/public/iservercontainer.php @@ -102,6 +102,13 @@ interface IServerContainer { function getConfig(); /** + * get an L10N instance + * @param $app string appid + * @return \OCP\IL10N + */ + function getL10N($app); + + /** * Returns an ICache instance * * @return \OCP\ICache |