gecko-dev/intl/l10n/test/test_localization.js

51 строка
1.7 KiB
JavaScript
Исходник Обычный вид История

/* Any copyright is dedicated to the Public Domain.
http://creativecommons.org/publicdomain/zero/1.0/ */
const { Localization } = Components.utils.import("resource://gre/modules/Localization.jsm", {});
add_task(function test_methods_presence() {
equal(typeof Localization.prototype.formatValues, "function");
equal(typeof Localization.prototype.formatMessages, "function");
equal(typeof Localization.prototype.formatValue, "function");
});
add_task(async function test_methods_calling() {
const { L10nRegistry, FileSource } =
Components.utils.import("resource://gre/modules/L10nRegistry.jsm", {});
const LocaleService =
Components.classes["@mozilla.org/intl/localeservice;1"].getService(
Components.interfaces.mozILocaleService);
const fs = {
'/localization/de/browser/menu.ftl': 'key = [de] Value2',
'/localization/en-US/browser/menu.ftl': 'key = [en] Value2\nkey2 = [en] Value3',
};
const originalLoad = L10nRegistry.load;
const originalRequested = LocaleService.getRequestedLocales();
L10nRegistry.load = async function(url) {
return fs[url];
}
const source = new FileSource('test', ['de', 'en-US'], '/localization/{locale}');
L10nRegistry.registerSource(source);
async function * generateMessages(resIds) {
yield * await L10nRegistry.generateContexts(['de', 'en-US'], resIds);
}
const l10n = new Localization([
'/browser/menu.ftl'
], generateMessages);
let values = await l10n.formatValues([['key'], ['key2']]);
equal(values[0], '[de] Value2');
equal(values[1], '[en] Value3');
L10nRegistry.sources.clear();
L10nRegistry.load = originalLoad;
LocaleService.setRequestedLocales(originalRequested);
});