]> source.dussan.org Git - nextcloud-server.git/commitdiff
Add L10N interface to server container
authorBart Visscher <bartv@thisnet.nl>
Wed, 25 Sep 2013 16:34:01 +0000 (18:34 +0200)
committerBart Visscher <bartv@thisnet.nl>
Fri, 4 Oct 2013 16:11:02 +0000 (18:11 +0200)
lib/l10n/factory.php [new file with mode: 0644]
lib/private/l10n.php
lib/private/server.php
lib/public/il10n.php [new file with mode: 0644]
lib/public/iservercontainer.php

diff --git a/lib/l10n/factory.php b/lib/l10n/factory.php
new file mode 100644 (file)
index 0000000..ba16887
--- /dev/null
@@ -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];
+       }
+
+}
index f93443b886a52e1794e2f39c5a14e13c2f588d7a..3e84c306dc2ff861f34c1cddf1adccef5da7a1b2 100644 (file)
 /**
  * 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);
                }
        }
 
index ef2007663c691e48859b2659b3cf453ea229a285..e4cc0c6da818c713660786344b345e8f7647f115 100644 (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
         *
diff --git a/lib/public/il10n.php b/lib/public/il10n.php
new file mode 100644 (file)
index 0000000..9cf9093
--- /dev/null
@@ -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);
+}
index f4045faefeff98ed52343d0b63b86a02b055b473..e8bc1bedf919ed9b9d02fdbcf224c35464076f6d 100644 (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
         *