]> source.dussan.org Git - nextcloud-server.git/commitdiff
make l10n libs capable of handling plural translations
authorJakob Sack <mail@jakobsack.de>
Sun, 7 Jul 2013 18:06:14 +0000 (20:06 +0200)
committerJakob Sack <mail@jakobsack.de>
Sun, 7 Jul 2013 18:06:14 +0000 (20:06 +0200)
lib/l10n.php
lib/l10n/string.php

index d35ce5fed14f4b19b3007f9e8b71c919b6ef4780..03528c22746e841abeb24b3e292f3604ed105322 100644 (file)
@@ -166,6 +166,26 @@ class OC_L10N{
                return new OC_L10N_String($this, $text, $parameters);
        }
 
+       /**
+        * @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 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.
+        */
+       public function tp($text_singular, $text_plural, $count, $parameters = array()) {
+               if($count == 1){
+                       return new OC_L10N_String($this, $text_singular, $parameters, $count);
+               }
+               else{
+                       return new OC_L10N_String($this, $text_plural, $parameters, $count);
+               }
+       }
+
        /**
         * @brief Translating
         * @param $textArray The text array we need a translation for
index 8eef10071e6451010dfb385f889bcfc1cb5536af..1bef7330945b4773765826ffd7921ca53458c0ba 100644 (file)
@@ -8,18 +8,23 @@
 
 class OC_L10N_String{
        protected $l10n;
-       public function __construct($l10n, $text, $parameters) {
+       public function __construct($l10n, $text, $parameters, $count = 1) {
                $this->l10n = $l10n;
                $this->text = $text;
                $this->parameters = $parameters;
+               $this->count = $count;
 
        }
 
        public function __toString() {
                $translations = $this->l10n->getTranslations();
+
+               $text = $this->text;
                if(array_key_exists($this->text, $translations)) {
-                       return vsprintf($translations[$this->text], $this->parameters);
+                       $text = $translations[$this->text];
                }
-               return vsprintf($this->text, $this->parameters);
+               // Replace %n first (won't interfere with vsprintf)
+               $text = str_replace('%n', $this->count, $text);
+               return vsprintf($text, $this->parameters);
        }
 }