summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2013-08-02 23:08:41 +0200
committerThomas Müller <thomas.mueller@tmit.eu>2013-08-02 23:08:41 +0200
commite04bf0aaeb92103ef432e56f1d6d712599952cee (patch)
treea56c98211a17812379a85ea76125b47e3616c5d9 /lib
parent550b647d8a777c11b74377002d58b4806f9e97e5 (diff)
downloadnextcloud-server-e04bf0aaeb92103ef432e56f1d6d712599952cee.tar.gz
nextcloud-server-e04bf0aaeb92103ef432e56f1d6d712599952cee.zip
unit tests for plural translations added
Diffstat (limited to 'lib')
-rw-r--r--lib/l10n.php16
-rw-r--r--lib/l10n/string.php26
2 files changed, 36 insertions, 6 deletions
diff --git a/lib/l10n.php b/lib/l10n.php
index 0e47215369c..a11ed785c5e 100644
--- a/lib/l10n.php
+++ b/lib/l10n.php
@@ -25,7 +25,7 @@
/**
* This class is for i18n and l10n
*/
-class OC_L10N{
+class OC_L10N {
/**
* cached instances
*/
@@ -107,6 +107,17 @@ class OC_L10N{
$this->lang = $lang;
}
+ public function load($transFile) {
+ $this->app = true;
+ include $transFile;
+ if(isset($TRANSLATIONS) && is_array($TRANSLATIONS)) {
+ $this->translations = $TRANSLATIONS;
+ }
+ if(isset($PLURAL_FORMS)) {
+ $this->plural_form_string = $PLURAL_FORMS;
+ }
+ }
+
protected function init() {
if ($this->app === true) {
return;
@@ -258,8 +269,9 @@ class OC_L10N{
*
*/
public function n($text_singular, $text_plural, $count, $parameters = array()) {
+ $this->init();
$identifier = "_${text_singular}__${text_plural}_";
- if( array_key_exists($this->translations, $identifier)) {
+ if( array_key_exists($identifier, $this->translations)) {
return new OC_L10N_String( $this, $identifier, $parameters, $count );
}
else{
diff --git a/lib/l10n/string.php b/lib/l10n/string.php
index c78b06428d3..88c85b32e70 100644
--- a/lib/l10n/string.php
+++ b/lib/l10n/string.php
@@ -7,30 +7,48 @@
*/
class OC_L10N_String{
+ /**
+ * @var OC_L10N
+ */
protected $l10n;
+
+ /**
+ * @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();
- $localizations = $this->l10n->getLocalizations();
$text = $this->text;
if(array_key_exists($this->text, $translations)) {
if(is_array($translations[$this->text])) {
- $fn = $l10n->getPluralFormFunction();
- $id = $fn($count);
+ $fn = $this->l10n->getPluralFormFunction();
+ $id = $fn($this->count);
$text = $translations[$this->text][$id];
}
else{
$text = $translations[$this->text];
}
}
+
// Replace %n first (won't interfere with vsprintf)
$text = str_replace('%n', $this->count, $text);
return vsprintf($text, $this->parameters);