You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
111 lines
2.7 KiB
111 lines
2.7 KiB
define(["app/config", "app/i18n/bg", "app/i18n/cs", "app/i18n/da",
|
|
"app/i18n/de", "app/i18n/en", "app/i18n/fa", "app/i18n/fi",
|
|
"app/i18n/fr", "app/i18n/hr", "app/i18n/hu", "app/i18n/ru", "app/i18n/it",
|
|
"app/i18n/eo", "app/i18n/sv", "app/i18n/nl", "app/i18n/el_GR",
|
|
"app/i18n/es", "app/i18n/vi", "app/i18n/zh_CN", "app/i18n/zh_CN", "app/i18n/zh_TW"],
|
|
function(config, bg, cs, da, de, en, fa, fi, fr, hr, hu, ru, it, eo, sv, nl, el, es, vi, zh, zh_CN, zh_TW) {
|
|
|
|
"use strict";
|
|
|
|
var pluralforms = function(lang) {
|
|
switch (lang) {
|
|
case "bg":
|
|
case "cs":
|
|
case "da":
|
|
case "de":
|
|
case "el":
|
|
case "en":
|
|
case "es":
|
|
case "eo":
|
|
case "fa":
|
|
case "fi":
|
|
case "hr":
|
|
case "hu":
|
|
case "it":
|
|
case "sv":
|
|
case "nl":
|
|
case "vi":
|
|
case "zh":
|
|
case "zh_CN":
|
|
case "zh_TW":
|
|
return function(msgs, n) {
|
|
return msgs[n === 1 ? 0 : 1];
|
|
};
|
|
case "fr":
|
|
return function(msgs, n) {
|
|
return msgs[n > 1 ? 1 : 0];
|
|
};
|
|
case "ru":
|
|
return function(msgs, n) {
|
|
if (n % 10 === 1 && n % 100 !== 11) {
|
|
return msgs[0];
|
|
} else if (n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20)) {
|
|
return msgs[1];
|
|
} else {
|
|
return typeof msgs[2] !== "undefined" ? msgs[2] : msgs[1];
|
|
}
|
|
};
|
|
default:
|
|
return null;
|
|
}
|
|
};
|
|
|
|
// useragent's prefered language (or manually overridden)
|
|
var lang = config.lang;
|
|
|
|
// fall back to English
|
|
if (! pluralforms(lang)) {
|
|
lang = "en";
|
|
}
|
|
|
|
var catalogue = {
|
|
bg: bg,
|
|
cs: cs,
|
|
da: da,
|
|
de: de,
|
|
el: el,
|
|
en: en,
|
|
eo: eo,
|
|
es: es,
|
|
fa: fa,
|
|
fi: fi,
|
|
fr: fr,
|
|
it: it,
|
|
hr: hr,
|
|
hu: hu,
|
|
ru: ru,
|
|
sv: sv,
|
|
nl: nl,
|
|
vi: vi,
|
|
zh: zh_CN,
|
|
zh_CN: zh_CN,
|
|
zh_TW: zh_TW
|
|
};
|
|
|
|
var plural = pluralforms(lang);
|
|
|
|
var translate = function(msgid) {
|
|
return config[msgid + '-text-' + lang] ||
|
|
catalogue[lang][msgid] ||
|
|
en[msgid] ||
|
|
"???";
|
|
};
|
|
|
|
var pluralize = function(msgid, n) {
|
|
var msg;
|
|
|
|
msg = translate(msgid);
|
|
if (msg.indexOf("\n") > -1) {
|
|
msg = plural(msg.split("\n"), (+ n));
|
|
}
|
|
|
|
return msg ? msg.replace("{{ n }}", (+ n)) : msg;
|
|
};
|
|
|
|
return {
|
|
lang: lang,
|
|
translate: translate,
|
|
pluralize: pluralize
|
|
};
|
|
});
|