diff options
author | Thomas Müller <thomas.mueller@tmit.eu> | 2013-08-02 23:08:41 +0200 |
---|---|---|
committer | Thomas Müller <thomas.mueller@tmit.eu> | 2013-08-02 23:08:41 +0200 |
commit | e04bf0aaeb92103ef432e56f1d6d712599952cee (patch) | |
tree | a56c98211a17812379a85ea76125b47e3616c5d9 /lib | |
parent | 550b647d8a777c11b74377002d58b4806f9e97e5 (diff) | |
download | nextcloud-server-e04bf0aaeb92103ef432e56f1d6d712599952cee.tar.gz nextcloud-server-e04bf0aaeb92103ef432e56f1d6d712599952cee.zip |
unit tests for plural translations added
Diffstat (limited to 'lib')
-rw-r--r-- | lib/l10n.php | 16 | ||||
-rw-r--r-- | lib/l10n/string.php | 26 |
2 files changed, 36 insertions, 6 deletions
diff --git a/lib/l10n.php b/lib/l10n.php index 0e47215369c..a11ed785c5e 100644 --- a/lib/l10n.php +++ b/lib/l10n.php @@ -25,7 +25,7 @@ /** * This class is for i18n and l10n */ -class OC_L10N{ +class OC_L10N { /** * cached instances */ @@ -107,6 +107,17 @@ class OC_L10N{ $this->lang = $lang; } + public function load($transFile) { + $this->app = true; + include $transFile; + if(isset($TRANSLATIONS) && is_array($TRANSLATIONS)) { + $this->translations = $TRANSLATIONS; + } + if(isset($PLURAL_FORMS)) { + $this->plural_form_string = $PLURAL_FORMS; + } + } + protected function init() { if ($this->app === true) { return; @@ -258,8 +269,9 @@ class OC_L10N{ * */ public function n($text_singular, $text_plural, $count, $parameters = array()) { + $this->init(); $identifier = "_${text_singular}__${text_plural}_"; - if( array_key_exists($this->translations, $identifier)) { + if( array_key_exists($identifier, $this->translations)) { return new OC_L10N_String( $this, $identifier, $parameters, $count ); } else{ diff --git a/lib/l10n/string.php b/lib/l10n/string.php index c78b06428d3..88c85b32e70 100644 --- a/lib/l10n/string.php +++ b/lib/l10n/string.php @@ -7,30 +7,48 @@ */ class OC_L10N_String{ + /** + * @var OC_L10N + */ protected $l10n; + + /** + * @var string + */ + protected $text; + + /** + * @var array + */ + protected $parameters; + + /** + * @var integer + */ + protected $count; + 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(); - $localizations = $this->l10n->getLocalizations(); $text = $this->text; if(array_key_exists($this->text, $translations)) { if(is_array($translations[$this->text])) { - $fn = $l10n->getPluralFormFunction(); - $id = $fn($count); + $fn = $this->l10n->getPluralFormFunction(); + $id = $fn($this->count); $text = $translations[$this->text][$id]; } else{ $text = $translations[$this->text]; } } + // Replace %n first (won't interfere with vsprintf) $text = str_replace('%n', $this->count, $text); return vsprintf($text, $this->parameters); |