summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBart Visscher <bartv@thisnet.nl>2013-09-25 18:34:01 +0200
committerBart Visscher <bartv@thisnet.nl>2013-10-04 18:11:02 +0200
commit9f777fba988422366732a3f128e2fb73ffddfbb4 (patch)
tree69b43762523448f3b59ccf27667b296fb99500e3
parentbae121b16dbabed3ec307ea58e3b8a73ab27161c (diff)
downloadnextcloud-server-9f777fba988422366732a3f128e2fb73ffddfbb4.tar.gz
nextcloud-server-9f777fba988422366732a3f128e2fb73ffddfbb4.zip
Add L10N interface to server container
-rw-r--r--lib/l10n/factory.php34
-rw-r--r--lib/private/l10n.php18
-rw-r--r--lib/private/server.php12
-rw-r--r--lib/public/il10n.php67
-rw-r--r--lib/public/iservercontainer.php7
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