Bug 1374552 - Fix i18n.getUILanguage so it does not replace dashes with underscores, r?mixedpuppy
When we implemented this API we converted dashes in the language code to underscores because that is what Chrome did.
Chrome no longer does this, so we need to remove the code that does the replacing.
MozReview-Commit-ID: DuOQ218zXby
--- a/toolkit/components/extensions/ExtensionCommon.jsm
+++ b/toolkit/components/extensions/ExtensionCommon.jsm
@@ -1495,19 +1495,17 @@ LocaleData.prototype = {
get acceptLanguages() {
let result = Preferences.get("intl.accept_languages", "", Ci.nsIPrefLocalizedString);
return result.split(/\s*,\s*/g);
},
get uiLocale() {
- // Return the browser locale, but convert it to a Chrome-style
- // locale code.
- return Services.locale.getAppLocaleAsBCP47().replace(/-/g, "_");
+ return Services.locale.getAppLocaleAsBCP47();
},
};
defineLazyGetter(LocaleData.prototype, "availableLocales", function() {
return new Set([this.BUILTIN, this.selectedLocale, this.defaultLocale]
.filter(locale => this.messages.has(locale)));
});
--- a/toolkit/components/extensions/test/xpcshell/test_ext_i18n.js
+++ b/toolkit/components/extensions/test/xpcshell/test_ext_i18n.js
@@ -365,17 +365,17 @@ add_task(async function test_get_ui_lang
},
});
let contentPage = await ExtensionTestUtils.loadContentPage(`${BASE_URL}/file_sample.html`);
await extension.startup();
await extension.awaitMessage("content-loaded");
- extension.sendMessage(["expect-results", "en_US"]);
+ extension.sendMessage(["expect-results", "en-US"]);
await extension.awaitMessage("background-done");
await extension.awaitMessage("content-done");
// We don't currently have a good way to mock this.
if (false) {
Preferences.set("general.useragent.locale", "he");
--- a/toolkit/components/extensions/test/xpcshell/test_ext_i18n_css.js
+++ b/toolkit/components/extensions/test/xpcshell/test_ext_i18n_css.js
@@ -110,17 +110,17 @@ async function test_i18n_css(options = {
equal(maxWidth, "42px", "stylesheet correctly applied");
await contentPage.close();
cssURL = cssURL.replace(/foo.css$/, "locale.css");
css = await fetch(cssURL);
- equal(css, '* { content: "en_US ltr rtl left right" }', "CSS file localized in mochitest scope");
+ equal(css, '* { content: "en-US ltr rtl left right" }', "CSS file localized in mochitest scope");
// We don't currently have a good way to mock this.
if (false) {
const LOCALE = "general.useragent.locale";
const DIR = "intl.uidirection";
const DIR_LEGACY = "intl.uidirection.en"; // Needed for Android until bug 1215247 is resolved
// We don't wind up actually switching the chrome registry locale, since we