aboutsummaryrefslogtreecommitdiff
path: root/extension/lib/i18n.ts
diff options
context:
space:
mode:
Diffstat (limited to 'extension/lib/i18n.ts')
-rw-r--r--extension/lib/i18n.ts44
1 files changed, 32 insertions, 12 deletions
diff --git a/extension/lib/i18n.ts b/extension/lib/i18n.ts
index 93bf9a622..a722e8322 100644
--- a/extension/lib/i18n.ts
+++ b/extension/lib/i18n.ts
@@ -28,26 +28,46 @@ function init () {
}
}
+function getI18nString (strings) {
+ let str = '';
+ for (let i = 0; i < strings.length; i++) {
+ str += strings[i];
+ if (i < strings.length - 1) {
+ str += '%'+ (i+1) +'$s';
+ }
+ }
+ return str;
+}
+
+function getPluralValue (values) {
+ // use the first number in values to determine plural form
+ for (let i = 0; i < values.length; i++) {
+ if ('number' == typeof values[i]) {
+ return values[i];
+ }
+ }
+ return 1;
+}
+
var i18n = <any>function i18n(strings, ...values) {
init();
- console.log('i18n:', strings[0]);
- return jed.translate(strings[0]).fetch();
+ let str = getI18nString (strings);
+ let n = getPluralValue (values);
+ console.log('i18n:', n, str, strings, values);
+ console.log('i18n:', jed.translate(str).ifPlural(n, str).fetch(...values););
+ return jed.translate(str).ifPlural(n, str).fetch(...values);
};
i18n.lang = chrome.i18n.getUILanguage();
i18n.strings = {};
-// Interpolate i8nized values with arbitrary objects and
+// Interpolate i18nized values with arbitrary objects and
// return array of strings/objects.
i18n.parts = function(strings, ...values) {
init();
- let str = '';
- for (let i = 0; i < strings.length; i++) {
- str += strings[i];
- if (i < strings.length - 1) {
- str += '%'+ (i+1) +'$s';
- }
- }
- console.log('i18n.parts:', str, ...values[0].children);
- return jed.translate(str).fetch(...values[0].children);
+ let str = getI18nString (strings);
+ let n = getPluralValue (values);
+ console.log('i18n.parts:', n, str, values, ...values);
+ console.log('i18n.parts:', jed.translate(str).ifPlural(n, str).fetch(...values));
+ return jed.translate(str).ifPlural(n, str).fetch(...values);
};