summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorJakob Sack <mail@jakobsack.de>2013-07-07 20:06:14 +0200
committerJakob Sack <mail@jakobsack.de>2013-07-07 20:06:14 +0200
commit560839195e97abdaca4f8c144a6a760a0ab90c19 (patch)
tree04088ce598b21692d8fdcab52c0bef3e8c1db342 /lib
parente13d1d0cf2548c172e3c670ef7fe1b35befbb755 (diff)
downloadnextcloud-server-560839195e97abdaca4f8c144a6a760a0ab90c19.tar.gz
nextcloud-server-560839195e97abdaca4f8c144a6a760a0ab90c19.zip
make l10n libs capable of handling plural translations
Diffstat (limited to 'lib')
-rw-r--r--lib/l10n.php20
-rw-r--r--lib/l10n/string.php11
2 files changed, 28 insertions, 3 deletions
diff --git a/lib/l10n.php b/lib/l10n.php
index d35ce5fed14..03528c22746 100644
--- a/lib/l10n.php
+++ b/lib/l10n.php
@@ -168,6 +168,26 @@ class OC_L10N{
/**
* @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
* @returns Translation or the same text
*
diff --git a/lib/l10n/string.php b/lib/l10n/string.php
index 8eef10071e6..1bef7330945 100644
--- a/lib/l10n/string.php
+++ b/lib/l10n/string.php
@@ -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);
}
}