diff options
author | Owen Winkler <a_github@midnightcircus.com> | 2013-08-08 10:34:28 -0700 |
---|---|---|
committer | Owen Winkler <a_github@midnightcircus.com> | 2013-08-08 10:34:28 -0700 |
commit | a2ac5e016334429892ac84bafa2644d8d39e6eb2 (patch) | |
tree | 64eb3aa2afdbd4788c05005d16d21d44f409e66d /lib/l10n | |
parent | e38025ba6790938155bbd956d024d639ceeed754 (diff) | |
parent | 19e3780ef24113bcb7950b5671e4c0149271c5c8 (diff) | |
download | nextcloud-server-a2ac5e016334429892ac84bafa2644d8d39e6eb2.tar.gz nextcloud-server-a2ac5e016334429892ac84bafa2644d8d39e6eb2.zip |
Merge pull request #4271 from owncloud/plural_translations
Plural translations
Diffstat (limited to 'lib/l10n')
-rw-r--r-- | lib/l10n/string.php | 39 |
1 files changed, 35 insertions, 4 deletions
diff --git a/lib/l10n/string.php b/lib/l10n/string.php index 8eef10071e6..88c85b32e70 100644 --- a/lib/l10n/string.php +++ b/lib/l10n/string.php @@ -7,19 +7,50 @@ */ class OC_L10N_String{ + /** + * @var OC_L10N + */ protected $l10n; - public function __construct($l10n, $text, $parameters) { + + /** + * @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(); + + $text = $this->text; if(array_key_exists($this->text, $translations)) { - return vsprintf($translations[$this->text], $this->parameters); + if(is_array($translations[$this->text])) { + $fn = $this->l10n->getPluralFormFunction(); + $id = $fn($this->count); + $text = $translations[$this->text][$id]; + } + else{ + $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); } } |