Skip to content
Snippets Groups Projects
Commit 56083919 authored by Jakob Sack's avatar Jakob Sack
Browse files

make l10n libs capable of handling plural translations

parent e13d1d0c
Branches
No related tags found
No related merge requests found
......@@ -166,6 +166,26 @@ class OC_L10N{
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
* @param $textArray The text array we need a translation for
......
......@@ -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);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment