summaryrefslogtreecommitdiffstats
path: root/lib/private/l10n/string.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/private/l10n/string.php')
-rw-r--r--lib/private/l10n/string.php56
1 files changed, 56 insertions, 0 deletions
diff --git a/lib/private/l10n/string.php b/lib/private/l10n/string.php
new file mode 100644
index 00000000000..88c85b32e70
--- /dev/null
+++ b/lib/private/l10n/string.php
@@ -0,0 +1,56 @@
+<?php
+/**
+ * Copyright (c) 2012 Bart Visscher <bartv@thisnet.nl>
+ * This file is licensed under the Affero General Public License version 3 or
+ * later.
+ * See the COPYING-README file.
+ */
+
+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();
+
+ $text = $this->text;
+ if(array_key_exists($this->text, $translations)) {
+ if(is_array($translations[$this->text])) {
+ $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);
+ }
+}