summaryrefslogtreecommitdiffstats
path: root/lib/l10n
diff options
context:
space:
mode:
authorOwen Winkler <a_github@midnightcircus.com>2013-08-08 10:34:28 -0700
committerOwen Winkler <a_github@midnightcircus.com>2013-08-08 10:34:28 -0700
commita2ac5e016334429892ac84bafa2644d8d39e6eb2 (patch)
tree64eb3aa2afdbd4788c05005d16d21d44f409e66d /lib/l10n
parente38025ba6790938155bbd956d024d639ceeed754 (diff)
parent19e3780ef24113bcb7950b5671e4c0149271c5c8 (diff)
downloadnextcloud-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.php39
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);
}
}