Bug 1374552 - Fix i18n.getUILanguage so it does not replace dashes with underscores, r?mixedpuppy draft
authorBob Silverberg <bsilverberg@mozilla.com>
Fri, 11 Aug 2017 09:45:35 -0400
changeset 654357 0d6c81223d4a12db833c2b2d37f6ff4fc124dc1d
parent 653766 d10c97627b51a226e19d0fa801201897fe1932f6
child 728545 ac1e93d5e2f1decb100962d6a7b5a40de1d8b892
push id76550
push userbmo:bob.silverberg@gmail.com
push dateMon, 28 Aug 2017 16:54:07 +0000
reviewersmixedpuppy
bugs1374552
milestone57.0a1
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
toolkit/components/extensions/ExtensionCommon.jsm
toolkit/components/extensions/test/xpcshell/test_ext_i18n.js
toolkit/components/extensions/test/xpcshell/test_ext_i18n_css.js
--- 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