make l10n libs capable of handling plural translations
This commit is contained in:
parent
e13d1d0cf2
commit
560839195e
20
lib/l10n.php
20
lib/l10n.php
|
@ -166,6 +166,26 @@ class OC_L10N{
|
||||||
return new OC_L10N_String($this, $text, $parameters);
|
return new OC_L10N_String($this, $text, $parameters);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @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
|
* @brief Translating
|
||||||
* @param $textArray The text array we need a translation for
|
* @param $textArray The text array we need a translation for
|
||||||
|
|
|
@ -8,18 +8,23 @@
|
||||||
|
|
||||||
class OC_L10N_String{
|
class OC_L10N_String{
|
||||||
protected $l10n;
|
protected $l10n;
|
||||||
public function __construct($l10n, $text, $parameters) {
|
public function __construct($l10n, $text, $parameters, $count = 1) {
|
||||||
$this->l10n = $l10n;
|
$this->l10n = $l10n;
|
||||||
$this->text = $text;
|
$this->text = $text;
|
||||||
$this->parameters = $parameters;
|
$this->parameters = $parameters;
|
||||||
|
$this->count = $count;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function __toString() {
|
public function __toString() {
|
||||||
$translations = $this->l10n->getTranslations();
|
$translations = $this->l10n->getTranslations();
|
||||||
|
|
||||||
|
$text = $this->text;
|
||||||
if(array_key_exists($this->text, $translations)) {
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue