diff options
Diffstat (limited to 'lib/private/l10n')
-rw-r--r-- | lib/private/l10n/string.php | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/lib/private/l10n/string.php b/lib/private/l10n/string.php index 04eaacab57b..5f5452ad16d 100644 --- a/lib/private/l10n/string.php +++ b/lib/private/l10n/string.php @@ -23,6 +23,11 @@ class OC_L10N_String{ protected $parameters; /** + * @var array + */ + protected $plurals; + + /** * @var integer */ protected $count; @@ -30,11 +35,12 @@ class OC_L10N_String{ /** * @param OC_L10N $l10n */ - public function __construct($l10n, $text, $parameters, $count = 1) { + public function __construct($l10n, $text, $parameters, $count = 1, $plurals = array()) { $this->l10n = $l10n; $this->text = $text; $this->parameters = $parameters; $this->count = $count; + $this->plurals = $plurals; } public function __toString() { @@ -45,7 +51,19 @@ class OC_L10N_String{ if(is_array($translations[$this->text])) { $fn = $this->l10n->getPluralFormFunction(); $id = $fn($this->count); - $text = $translations[$this->text][$id]; + + if ($translations[$this->text][$id] !== '') { + // The translation of this plural case is not empty, so use it + $text = $translations[$this->text][$id]; + } else { + // We didn't find the plural in the language, + // so we fall back to english. + $id = ($id != 0) ? 1 : 0; + if (isset($this->plurals[$id])) { + // Fallback to the english plural + $text = $this->plurals[$id]; + } + } } else{ $text = $translations[$this->text]; |