mirror of
https://github.com/discourse/discourse.git
synced 2025-05-24 03:36:18 +08:00
Rename all test files from JS -> ES6
This commit is contained in:
235
test/javascripts/lib/i18n-test.js
Normal file
235
test/javascripts/lib/i18n-test.js
Normal file
@ -0,0 +1,235 @@
|
||||
QUnit.module("lib:i18n", {
|
||||
_locale: I18n.locale,
|
||||
_fallbackLocale: I18n.fallbackLocale,
|
||||
_translations: I18n.translations,
|
||||
_extras: I18n.extras,
|
||||
_pluralizationRules: Object.assign({}, I18n.pluralizationRules),
|
||||
|
||||
beforeEach() {
|
||||
I18n.locale = "fr";
|
||||
|
||||
I18n.translations = {
|
||||
fr_FOO: {
|
||||
js: {
|
||||
topic: {
|
||||
reply: {
|
||||
title: "Foo"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
fr: {
|
||||
js: {
|
||||
hello: "Bonjour",
|
||||
topic: {
|
||||
reply: {
|
||||
title: "Répondre"
|
||||
},
|
||||
share: {
|
||||
title: "Partager"
|
||||
}
|
||||
},
|
||||
character_count: {
|
||||
zero: "{{count}} ZERO",
|
||||
one: "{{count}} ONE",
|
||||
two: "{{count}} TWO",
|
||||
few: "{{count}} FEW",
|
||||
many: "{{count}} MANY",
|
||||
other: "{{count}} OTHER"
|
||||
},
|
||||
days: {
|
||||
other: "%{count} jours"
|
||||
}
|
||||
}
|
||||
},
|
||||
en: {
|
||||
js: {
|
||||
hello: {
|
||||
world: "Hello World!",
|
||||
universe: ""
|
||||
},
|
||||
topic: {
|
||||
reply: {
|
||||
help: "begin composing a reply to this topic"
|
||||
}
|
||||
},
|
||||
word_count: {
|
||||
one: "1 word",
|
||||
other: "{{count}} words"
|
||||
},
|
||||
days: {
|
||||
one: "%{count} day",
|
||||
other: "%{count} days"
|
||||
},
|
||||
dollar_sign: "Hi {{description}}"
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// fake pluralization rules
|
||||
I18n.pluralizationRules = Object.assign({}, I18n.pluralizationRules);
|
||||
I18n.pluralizationRules.fr = function(n) {
|
||||
if (n === 0) return "zero";
|
||||
if (n === 1) return "one";
|
||||
if (n === 2) return "two";
|
||||
if (n >= 3 && n <= 9) return "few";
|
||||
if (n >= 10 && n <= 99) return "many";
|
||||
return "other";
|
||||
};
|
||||
},
|
||||
|
||||
afterEach() {
|
||||
I18n.locale = this._locale;
|
||||
I18n.fallbackLocale = this._fallbackLocale;
|
||||
I18n.translations = this._translations;
|
||||
I18n.extras = this._extras;
|
||||
I18n.pluralizationRules = this._pluralizationRules;
|
||||
}
|
||||
});
|
||||
|
||||
QUnit.test("defaults", assert => {
|
||||
assert.equal(I18n.defaultLocale, "en", "it has English as default locale");
|
||||
assert.ok(I18n.pluralizationRules["en"], "it has English pluralizer");
|
||||
});
|
||||
|
||||
QUnit.test("translations", assert => {
|
||||
assert.equal(
|
||||
I18n.t("topic.reply.title"),
|
||||
"Répondre",
|
||||
"uses locale translations when they exist"
|
||||
);
|
||||
assert.equal(
|
||||
I18n.t("topic.reply.help"),
|
||||
"begin composing a reply to this topic",
|
||||
"fallbacks to English translations"
|
||||
);
|
||||
assert.equal(
|
||||
I18n.t("hello.world"),
|
||||
"Hello World!",
|
||||
"doesn't break if a key is overriden in a locale"
|
||||
);
|
||||
assert.equal(I18n.t("hello.universe"), "", "allows empty strings");
|
||||
});
|
||||
|
||||
QUnit.test("extra translations", assert => {
|
||||
I18n.locale = "pl_PL";
|
||||
I18n.extras = {
|
||||
en: {
|
||||
admin: {
|
||||
dashboard: {
|
||||
title: "Dashboard",
|
||||
backup_count: {
|
||||
one: "%{count} backup",
|
||||
other: "%{count} backups"
|
||||
}
|
||||
},
|
||||
web_hooks: {
|
||||
events: {
|
||||
incoming: {
|
||||
one: "There is a new event.",
|
||||
other: "There are %{count} new events."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
pl_PL: {
|
||||
admin: {
|
||||
dashboard: {
|
||||
title: "Raporty"
|
||||
},
|
||||
web_hooks: {
|
||||
events: {
|
||||
incoming: {
|
||||
one: "Istnieje nowe wydarzenie",
|
||||
few: "Istnieją %{count} nowe wydarzenia.",
|
||||
many: "Istnieje %{count} nowych wydarzeń.",
|
||||
other: "Istnieje %{count} nowych wydarzeń."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
I18n.pluralizationRules.pl_PL = function(n) {
|
||||
if (n === 1) return "one";
|
||||
if (n % 10 >= 2 && n % 10 <= 4) return "few";
|
||||
if (n % 10 === 0) return "many";
|
||||
return "other";
|
||||
};
|
||||
|
||||
assert.equal(
|
||||
I18n.t("admin.dashboard.title"),
|
||||
"Raporty",
|
||||
"it uses extra translations when they exists"
|
||||
);
|
||||
|
||||
assert.equal(
|
||||
I18n.t("admin.web_hooks.events.incoming", { count: 2 }),
|
||||
"Istnieją 2 nowe wydarzenia.",
|
||||
"it uses pluralized extra translation when it exists"
|
||||
);
|
||||
|
||||
assert.equal(
|
||||
I18n.t("admin.dashboard.backup_count", { count: 2 }),
|
||||
"2 backups",
|
||||
"it falls back to English and uses extra translations when they exists"
|
||||
);
|
||||
});
|
||||
|
||||
QUnit.test("pluralizations", assert => {
|
||||
assert.equal(I18n.t("character_count", { count: 0 }), "0 ZERO");
|
||||
assert.equal(I18n.t("character_count", { count: 1 }), "1 ONE");
|
||||
assert.equal(I18n.t("character_count", { count: 2 }), "2 TWO");
|
||||
assert.equal(I18n.t("character_count", { count: 3 }), "3 FEW");
|
||||
assert.equal(I18n.t("character_count", { count: 10 }), "10 MANY");
|
||||
assert.equal(I18n.t("character_count", { count: 100 }), "100 OTHER");
|
||||
|
||||
assert.equal(I18n.t("word_count", { count: 0 }), "0 words");
|
||||
assert.equal(I18n.t("word_count", { count: 1 }), "1 word");
|
||||
assert.equal(I18n.t("word_count", { count: 2 }), "2 words");
|
||||
assert.equal(I18n.t("word_count", { count: 3 }), "3 words");
|
||||
assert.equal(I18n.t("word_count", { count: 10 }), "10 words");
|
||||
assert.equal(I18n.t("word_count", { count: 100 }), "100 words");
|
||||
});
|
||||
|
||||
QUnit.test("fallback", assert => {
|
||||
assert.equal(
|
||||
I18n.t("days", { count: 1 }),
|
||||
"1 day",
|
||||
"uses fallback locale for missing plural key"
|
||||
);
|
||||
assert.equal(
|
||||
I18n.t("days", { count: 200 }),
|
||||
"200 jours",
|
||||
"uses existing French plural key"
|
||||
);
|
||||
|
||||
I18n.locale = "fr_FOO";
|
||||
I18n.fallbackLocale = "fr";
|
||||
|
||||
assert.equal(
|
||||
I18n.t("topic.reply.title"),
|
||||
"Foo",
|
||||
"uses locale translations when they exist"
|
||||
);
|
||||
assert.equal(
|
||||
I18n.t("topic.share.title"),
|
||||
"Partager",
|
||||
"falls back to fallbackLocale translations when they exist"
|
||||
);
|
||||
assert.equal(
|
||||
I18n.t("topic.reply.help"),
|
||||
"begin composing a reply to this topic",
|
||||
"falls back to English translations"
|
||||
);
|
||||
});
|
||||
|
||||
QUnit.test("Dollar signs are properly escaped", assert => {
|
||||
assert.equal(
|
||||
I18n.t("dollar_sign", {
|
||||
description: "$& $&"
|
||||
}),
|
||||
"Hi $& $&"
|
||||
);
|
||||
});
|
Reference in New Issue
Block a user