Backed out 2 changesets (bug 1435912, bug 1441733) for for Fluent in Preferences::General::XUL bc failures. a=backout on a CLOSED TREE
authorCiure Andrei <aciure@mozilla.com>
Wed, 28 Feb 2018 06:17:21 +0200
changeset 460640 37d0425705d14c3463fb3ea29720b8a54f3d2e05
parent 460639 05aaf7f46525408a1294b9ec313458faa5b64213
child 460641 53f2c8abb352ff7986b9c59072226a7d8fdedbd4
push id1683
push usersfraser@mozilla.com
push dateThu, 26 Apr 2018 16:43:40 +0000
treeherdermozilla-release@5af6cb21869d [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewersbackout
bugs1435912, 1441733
milestone60.0a1
backs out95eb6ee7690b0c326bfb1db0c12d37123fdc3fff
6ba30e00066492bdd9fe24d9db3e8bc5420a4e92
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Backed out 2 changesets (bug 1435912, bug 1441733) for for Fluent in Preferences::General::XUL bc failures. a=backout on a CLOSED TREE Backed out changeset 95eb6ee7690b (bug 1441733) Backed out changeset 6ba30e000664 (bug 1435912)
browser/components/preferences/handlers.xml
browser/components/preferences/in-content/main.js
browser/components/preferences/in-content/main.xul
browser/components/preferences/in-content/preferences.xul
browser/locales/en-US/browser/preferences/main.ftl
browser/locales/en-US/browser/preferences/preferences.ftl
browser/locales/en-US/chrome/browser/preferences/advanced.dtd
browser/locales/en-US/chrome/browser/preferences/applications.dtd
browser/locales/en-US/chrome/browser/preferences/content.dtd
browser/locales/en-US/chrome/browser/preferences/main.dtd
browser/locales/en-US/chrome/browser/preferences/preferences.dtd
browser/locales/en-US/chrome/browser/preferences/preferences.properties
browser/locales/en-US/chrome/browser/preferences/privacy.dtd
browser/locales/en-US/chrome/browser/preferences/tabs.dtd
browser/locales/jar.mn
python/l10n/fluent_migrations/bug_1435912_preferences_general_xul.py
--- a/browser/components/preferences/handlers.xml
+++ b/browser/components/preferences/handlers.xml
@@ -2,18 +2,20 @@
 
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 <!-- import-globals-from in-content/main.js -->
 
 <!DOCTYPE overlay [
   <!ENTITY % brandDTD SYSTEM "chrome://branding/locale/brand.dtd">
+  <!ENTITY % applicationsDTD SYSTEM "chrome://browser/locale/preferences/applications.dtd">
   <!ENTITY % containersDTD SYSTEM "chrome://browser/locale/preferences/containers.dtd">
   %brandDTD;
+  %applicationsDTD;
   %containersDTD;
 ]>
 
 <bindings id="handlerBindings"
           xmlns="http://www.mozilla.org/xbl"
           xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
           xmlns:xbl="http://www.mozilla.org/xbl">
 
--- a/browser/components/preferences/in-content/main.js
+++ b/browser/components/preferences/in-content/main.js
@@ -493,21 +493,17 @@ var gMainPane = {
     // Append "(32-bit)" or "(64-bit)" build architecture to the version number:
     let bundle = Services.strings.createBundle("chrome://browser/locale/browser.properties");
     let archResource = Services.appinfo.is64Bit
       ? "aboutDialog.architecture.sixtyFourBit"
       : "aboutDialog.architecture.thirtyTwoBit";
     let arch = bundle.GetStringFromName(archResource);
     version += ` (${arch})`;
 
-    document.l10n.setAttributes(
-      document.getElementById("updateAppInfo"),
-      "update-application-info",
-      { version }
-    );
+    document.getElementById("version").textContent = version;
 
     // Show a release notes link if we have a URL.
     let relNotesLink = document.getElementById("releasenotes");
     let relNotesPrefType = Services.prefs.getPrefType("app.releaseNotesURL");
     if (relNotesPrefType != Services.prefs.PREF_INVALID) {
       let relNotesURL = Services.urlFormatter.formatURLPref("app.releaseNotesURL");
       if (relNotesURL != "about:blank") {
         relNotesLink.href = relNotesURL;
@@ -765,42 +761,33 @@ var gMainPane = {
 
   syncFromHomePref() {
     let homePref = Preferences.get("browser.startup.homepage");
 
     // Set the "Use Current Page(s)" button's text and enabled state.
     this._updateUseCurrentButton();
 
     function setInputDisabledStates(isControlled) {
-      let tabCount = this._getTabsForHomePage().length;
-
       // Disable or enable the inputs based on if this is controlled by an extension.
       document.querySelectorAll("#browserHomePage, .homepage-button")
         .forEach((element) => {
-          let pref = element.getAttribute("preference");
-
-          let isDisabled = Preferences.get(pref).locked || isControlled;
-          if (pref == "pref.browser.disable_button.current_page") {
-            // Special case for current_page to disable it if tabCount is 0
-            isDisabled = isDisabled || tabCount < 1;
-          }
-
-          element.disabled = isDisabled;
+          let isLocked = Preferences.get(element.getAttribute("preference")).locked;
+          element.disabled = isLocked || isControlled;
         });
     }
 
     if (homePref.locked) {
       // An extension can't control these settings if they're locked.
       hideControllingExtension(HOMEPAGE_OVERRIDE_KEY);
-      setInputDisabledStates.call(this, false);
+      setInputDisabledStates(false);
     } else {
       // Asynchronously update the extension controlled UI.
       handleControllingExtension(
         PREF_SETTING_TYPE, HOMEPAGE_OVERRIDE_KEY, "extensionControlled.homepage_override2")
-        .then(setInputDisabledStates.bind(this));
+        .then(setInputDisabledStates);
     }
 
     // If the pref is set to about:home or about:newtab, set the value to ""
     // to show the placeholder text (about:home title) rather than
     // exposing those URLs to users.
     let defaultBranch = Services.prefs.getDefaultBranch("");
     let defaultValue = defaultBranch.getComplexValue("browser.startup.homepage",
       Ci.nsIPrefLocalizedString).data;
@@ -892,45 +879,45 @@ var gMainPane = {
   /**
    * Switches the "Use Current Page" button between its singular and plural
    * forms.
    */
   async _updateUseCurrentButton() {
     let useCurrent = document.getElementById("useCurrent");
     let tabs = this._getTabsForHomePage();
 
-    const tabCount = tabs.length;
-
-    document.l10n.setAttributes(useCurrent, "use-current-pages", { tabCount });
+    if (tabs.length > 1)
+      useCurrent.label = useCurrent.getAttribute("label2");
+    else
+      useCurrent.label = useCurrent.getAttribute("label1");
 
     // If the homepage is controlled by an extension then you can't use this.
     if (await getControllingExtensionInfo(PREF_SETTING_TYPE, HOMEPAGE_OVERRIDE_KEY)) {
+      useCurrent.disabled = true;
       return;
     }
 
     // In this case, the button's disabled state is set by preferences.xml.
     let prefName = "pref.browser.homepage.disable_button.current_page";
     if (Preferences.get(prefName).locked)
       return;
 
-    useCurrent.disabled = tabCount < 1;
+    useCurrent.disabled = !tabs.length;
   },
 
   _getTabsForHomePage() {
     var tabs = [];
     var win = Services.wm.getMostRecentWindow("navigator:browser");
 
     if (win && win.document.documentElement
       .getAttribute("windowtype") == "navigator:browser") {
       // We should only include visible & non-pinned tabs
 
       tabs = win.gBrowser.visibleTabs.slice(win.gBrowser._numPinnedTabs);
       tabs = tabs.filter(this.isNotAboutPreferences);
-      // XXX: Bug 1441637 - Fix tabbrowser to report tab.closing before it blurs it
-      tabs = tabs.filter(tab => !tab.closing);
     }
 
     return tabs;
   },
 
   /**
    * Check to see if a tab is not about:preferences
    */
@@ -1138,39 +1125,37 @@ var gMainPane = {
     // Remove the old content from the description.
     while (description.firstChild) {
       description.firstChild.remove();
     }
 
     description.appendChild(fragment);
   },
 
-  async checkBrowserContainers(event) {
+  checkBrowserContainers(event) {
     let checkbox = document.getElementById("browserContainersCheckbox");
     if (checkbox.checked) {
       Services.prefs.setBoolPref("privacy.userContext.enabled", true);
       return;
     }
 
     let count = ContextualIdentityService.countContainerTabs();
     if (count == 0) {
       Services.prefs.setBoolPref("privacy.userContext.enabled", false);
       return;
     }
 
-    let [
-      title, message, okButton, cancelButton
-    ] = await document.l10n.formatValues([
-      "containers-disable-alert-title",
-      "containers-disable-alert-desc",
-      "containers-disable-alert-ok-button",
-      "containers-disable-alert-cancel-button"
-    ], {
-      tabCount: count
-    });
+    let bundlePreferences = document.getElementById("bundlePreferences");
+
+    let title = bundlePreferences.getString("disableContainersAlertTitle");
+    let message = PluralForm.get(count, bundlePreferences.getString("disableContainersMsg"))
+      .replace("#S", count);
+    let okButton = PluralForm.get(count, bundlePreferences.getString("disableContainersOkButton"))
+      .replace("#S", count);
+    let cancelButton = bundlePreferences.getString("disableContainersButton2");
 
     let buttonFlags = (Ci.nsIPrompt.BUTTON_TITLE_IS_STRING * Ci.nsIPrompt.BUTTON_POS_0) +
       (Ci.nsIPrompt.BUTTON_TITLE_IS_STRING * Ci.nsIPrompt.BUTTON_POS_1);
 
     let rv = Services.prompt.confirmEx(window, title, message, buttonFlags,
       okButton, cancelButton, null, null, {});
     if (rv == 0) {
       Services.prefs.setBoolPref("privacy.userContext.enabled", false);
@@ -1359,25 +1344,39 @@ var gMainPane = {
       performanceSettings.hidden = false;
     }
   },
 
   buildContentProcessCountMenuList() {
     if (Services.appinfo.browserTabsRemoteAutostart) {
       let processCountPref = Preferences.get("dom.ipc.processCount");
       let defaultProcessCount = processCountPref.defaultValue;
+      let bundlePreferences = document.getElementById("bundlePreferences");
 
       let contentProcessCount =
         document.querySelector(`#contentProcessCount > menupopup >
                                 menuitem[value="${defaultProcessCount}"]`);
 
-      document.l10n.setAttributes(
-        contentProcessCount,
-        "performance-default-content-process-count",
-        { num: defaultProcessCount });
+      // New localization API experiment (October 2017).
+      // See bug 1402061 for details.
+      //
+      // The `intl.l10n.fluent.disabled` pref can be used
+      // to opt-out of the experiment in case of any
+      // unforseen problems. The legacy API will then
+      // be used.
+      if (Services.prefs.getBoolPref("intl.l10n.fluent.disabled", false)) {
+        let label = bundlePreferences.getFormattedString("defaultContentProcessCount",
+          [defaultProcessCount]);
+        contentProcessCount.label = label;
+      } else {
+        document.l10n.setAttributes(
+          contentProcessCount,
+          "default-content-process-count",
+          { num: defaultProcessCount });
+      }
 
       document.getElementById("limitContentProcess").disabled = false;
       document.getElementById("contentProcessCount").disabled = false;
       document.getElementById("contentProcessCountEnabledDescription").hidden = false;
       document.getElementById("contentProcessCountDisabledDescription").hidden = true;
     } else {
       document.getElementById("limitContentProcess").disabled = true;
       document.getElementById("contentProcessCount").disabled = true;
--- a/browser/components/preferences/in-content/main.xul
+++ b/browser/components/preferences/in-content/main.xul
@@ -15,95 +15,95 @@
         src="chrome://mozapps/content/preferences/fontbuilder.js"/>
 
 <stringbundle id="bundlePreferences" src="chrome://browser/locale/preferences.properties"/>
 
 <hbox id="generalCategory"
       class="subcategory"
       hidden="true"
       data-category="paneGeneral">
-      <label class="header-name" flex="1" data-l10n-id="pane-general-title"/>
+  <label class="header-name" flex="1">&paneGeneral.title;</label>
 </hbox>
 
 <!-- Startup -->
 <groupbox id="startupGroup"
           data-category="paneGeneral"
           hidden="true">
-  <caption><label data-l10n-id="startup-header"/></caption>
+  <caption><label>&startup.label;</label></caption>
 
 #ifdef MOZ_DEV_EDITION
   <vbox id="separateProfileBox">
     <checkbox id="separateProfileMode"
-              data-l10n-id="separate-profile-mode"/>
-    <hbox aid="sync-dev-edition-root" lign="center" class="indent">
-      <label id="useFirefoxSync" data-l10n-id="use-firefox-sync"/>
+              label="&separateProfileMode.label;"/>
+    <hbox id="sync-dev-edition-root" align="center" class="indent">
+      <label id="useFirefoxSync">&useFirefoxSync.label;</label>
       <deck id="getStarted">
-        <label class="text-link" data-l10n-id="get-started-not-logged-in"/>
-        <label class="text-link" data-l10n-id="get-started-configured"/>
+        <label class="text-link">&getStarted.notloggedin.label;</label>
+        <label class="text-link">&getStarted.configured.label;</label>
       </deck>
     </hbox>
   </vbox>
 #endif
 
 #ifdef HAVE_SHELL_SERVICE
   <vbox id="defaultBrowserBox">
     <checkbox id="alwaysCheckDefault" preference="browser.shell.checkDefaultBrowser"
-              data-l10n-id="always-check-default"/>
+              label="&alwaysCheckDefault2.label;" accesskey="&alwaysCheckDefault2.accesskey;"/>
     <deck id="setDefaultPane">
       <hbox align="center" class="indent">
         <image class="face-sad"/>
-        <label id="isNotDefaultLabel" flex="1" data-l10n-id="is-not-default"/>
+        <label id="isNotDefaultLabel" flex="1">&isNotDefault.label;</label>
         <button id="setDefaultButton"
                 class="accessory-button"
-                data-l10n-id="set-as-my-default-browser"
+                label="&setAsMyDefaultBrowser3.label;" accesskey="&setAsMyDefaultBrowser3.accesskey;"
                 preference="pref.general.disable_button.default_browser"/>
       </hbox>
       <hbox align="center" class="indent">
         <image class="face-smile"/>
-        <label id="isDefaultLabel" flex="1" data-l10n-id="is-default"/>
+        <label id="isDefaultLabel" flex="1">&isDefault.label;</label>
       </hbox>
     </deck>
   </vbox>
 #endif
 
   <vbox id="startupPageBox">
-    <label data-l10n-id="startup-page"
-           control="browserStartupPage"/>
+    <label accesskey="&startupPage2.accesskey;"
+           control="browserStartupPage">&startupPage2.label;</label>
     <radiogroup id="browserStartupPage"
                 preference="browser.startup.page">
-      <radio data-l10n-id="startup-user-homepage"
+      <radio label="&startupUserHomePage.label;"
              value="1"
              id="browserStartupHomePage"/>
-      <radio data-l10n-id="startup-blank-page"
+      <radio label="&startupBlankPage.label;"
              value="0"
              id="browserStartupBlank"/>
-      <radio data-l10n-id="startup-prev-session"
+      <radio label="&startupPrevSession.label;"
              value="3"
              id="browserStartupLastSession"/>
     </radiogroup>
     <hbox id="browserNewTabExtensionContent" align="center" hidden="true">
       <description control="disableNewTabExtension" flex="1" />
       <button id="disableNewTabExtension"
               class="extension-controlled-button accessory-button"
-              data-l10n-id="disable-extension" />
+              label="&disableExtension.label;" />
     </hbox>
   </vbox>
 </groupbox>
 
 <!-- Home Page -->
 <groupbox id="homepageGroup"
           data-category="paneGeneral"
           hidden="true">
-  <caption><label data-l10n-id="home-page-header"/></caption>
+  <caption><label>&homepage2.label;</label></caption>
 
   <hbox id="browserHomePageExtensionContent" align="center" hidden="true">
     <description control="disableHomePageExtension" flex="1" />
     <button id="disableHomePageExtension"
             class="extension-controlled-button accessory-button"
-            data-l10n-id="disable-extension" />
+            label="&disableExtension.label;" />
   </hbox>
 
   <vbox>
     <textbox id="browserHomePage"
              class="uri-element"
              type="autocomplete"
              autocompletesearch="unifiedcomplete"
              onsyncfrompreference="return gMainPane.syncFromHomePref();"
@@ -111,109 +111,122 @@
              placeholder="&abouthome.pageTitle;"
              preference="browser.startup.homepage"/>
   </vbox>
 
   <hbox class="homepage-buttons">
     <button id="useCurrent"
             flex="1"
             class="homepage-button"
-            data-l10n-id="use-current-pages"
-            data-l10n-args='{"tabCount": 0}'
-            disabled="true"
+            label=""
+            accesskey="&useCurrentPage.accesskey;"
+            label1="&useCurrentPage.label;"
+            label2="&useMultiple.label;"
             preference="pref.browser.homepage.disable_button.current_page"/>
     <button id="useBookmark"
             flex="1"
             class="homepage-button"
-            data-l10n-id="choose-bookmark"
+            label="&chooseBookmark.label;"
+            accesskey="&chooseBookmark.accesskey;"
             preference="pref.browser.homepage.disable_button.bookmark_page"
             searchkeywords="&selectBookmark.title; &selectBookmark.label;"/>
     <button id="restoreDefaultHomePage"
             flex="1"
             class="homepage-button"
-            data-l10n-id="restore-default"
+            label="&restoreDefault.label;"
+            accesskey="&restoreDefault.accesskey;"
             preference="pref.browser.homepage.disable_button.restore_default"/>
   </hbox>
 </groupbox>
 
 <!-- Tab preferences -->
 <groupbox data-category="paneGeneral"
           hidden="true">
-    <caption><label data-l10n-id="tabs-group-header"/></caption>
+    <caption><label>&tabsGroup.label;</label></caption>
 
-    <checkbox id="ctrlTabRecentlyUsedOrder" data-l10n-id="ctrl-tab-recently-used-order"
+    <checkbox id="ctrlTabRecentlyUsedOrder" label="&ctrlTabRecentlyUsedOrder.label;"
+              accesskey="&ctrlTabRecentlyUsedOrder.accesskey;"
               preference="browser.ctrlTab.previews"/>
 
-    <checkbox id="linkTargeting" data-l10n-id="open-new-link-as-tabs"
+    <checkbox id="linkTargeting" label="&newWindowsAsTabs3.label;"
+              accesskey="&newWindowsAsTabs3.accesskey;"
               preference="browser.link.open_newwindow"
               onsyncfrompreference="return gMainPane.readLinkTarget();"
               onsynctopreference="return gMainPane.writeLinkTarget();"/>
 
-    <checkbox id="warnCloseMultiple" data-l10n-id="warn-on-close-multiple-tabs"
+    <checkbox id="warnCloseMultiple" label="&warnOnCloseMultipleTabs.label;"
+              accesskey="&warnOnCloseMultipleTabs.accesskey;"
               preference="browser.tabs.warnOnClose"/>
 
-    <checkbox id="warnOpenMany" data-l10n-id="warn-on-open-many-tabs"
+    <checkbox id="warnOpenMany" label="&warnOnOpenManyTabs.label;"
+              accesskey="&warnOnOpenManyTabs.accesskey;"
               preference="browser.tabs.warnOnOpen"/>
 
-    <checkbox id="switchToNewTabs" data-l10n-id="switch-links-to-new-tabs"
+    <checkbox id="switchToNewTabs" label="&switchLinksToNewTabs.label;"
+              accesskey="&switchLinksToNewTabs.accesskey;"
               preference="browser.tabs.loadInBackground"/>
 
 #ifdef XP_WIN
-    <checkbox id="showTabsInTaskbar" data-l10n-id="show-tabs-in-taskbar"
+    <checkbox id="showTabsInTaskbar" label="&showTabsInTaskbar.label;"
+              accesskey="&showTabsInTaskbar.accesskey;"
               preference="browser.taskbar.previews.enable"/>
 #endif
 
     <vbox id="browserContainersbox" hidden="true">
       <hbox id="browserContainersExtensionContent" align="center">
         <description control="disableContainersExtension" flex="1" />
         <button id="disableContainersExtension"
                 class="extension-controlled-button accessory-button"
-                data-l10n-id="disable-extension" />
+                label="&disableExtension.label;" />
       </hbox>
       <hbox align="center">
         <checkbox id="browserContainersCheckbox"
                   class="tail-with-learn-more"
-                  data-l10n-id="browser-containers-enabled"
+                  label="&browserContainersEnabled.label;"
+                  accesskey="&browserContainersEnabled.accesskey;"
                   preference="privacy.userContext.enabled"
                   onsyncfrompreference="return gMainPane.readBrowserContainersCheckbox();"/>
-        <label id="browserContainersLearnMore" class="learnMore text-link" data-l10n-id="browser-containers-learn-more"/>
+        <label id="browserContainersLearnMore" class="learnMore text-link">
+          &browserContainersLearnMore.label;
+        </label>
         <spacer flex="1"/>
         <!-- Please don't remove the wrapping hbox/vbox/box for these elements. It's used to properly compute the search tooltip position. -->
         <hbox>
           <button id="browserContainersSettings"
                   class="accessory-button"
-                  data-l10n-id="browser-containers-settings"
+                  label="&browserContainersSettings.label;"
+                  accesskey="&browserContainersSettings.accesskey;"
                   searchkeywords="&addButton.label;
                                   &preferencesButton.label;
                                   &removeButton.label;"/>
         </hbox>
       </hbox>
     </vbox>
 </groupbox>
 
 <hbox id="languageAndAppearanceCategory"
       class="subcategory"
       hidden="true"
       data-category="paneGeneral">
-  <label class="header-name" flex="1" data-l10n-id="language-and-appearance-header"/>
+  <label class="header-name" flex="1">&languageAndAppearance.label;</label>
 </hbox>
 
 <!-- Fonts and Colors -->
 <groupbox id="fontsGroup" data-category="paneGeneral" hidden="true">
-  <caption><label data-l10n-id="fonts-and-colors-header"/></caption>
+  <caption><label>&fontsAndColors.label;</label></caption>
 
   <vbox>
     <hbox id="fontSettings">
       <hbox align="center" flex="1">
-        <label control="defaultFont" data-l10n-id="default-font"/>
+        <label control="defaultFont" accesskey="&defaultFont2.accesskey;">&defaultFont2.label;</label>
         <!-- Please don't remove the wrapping hbox/vbox/box for these elements. It's used to properly compute the search tooltip position. -->
         <hbox flex="1">
           <menulist id="defaultFont" flex="1" delayprefsave="true" onsyncfrompreference="return FontBuilder.readFontSelection(this);"/>
         </hbox>
-        <label id="defaultFontSizeLabel" control="defaultFontSize" data-l10n-id="default-font-size"></label>
+        <label id="defaultFontSizeLabel" control="defaultFontSize" accesskey="&defaultSize2.accesskey;">&defaultSize2.label;</label>
         <!-- Please don't remove the wrapping hbox/vbox/box for these elements. It's used to properly compute the search tooltip position. -->
         <hbox>
           <menulist id="defaultFontSize" delayprefsave="true">
             <menupopup>
               <menuitem value="9" label="9"/>
               <menuitem value="10" label="10"/>
               <menuitem value="11" label="11"/>
               <menuitem value="12" label="12"/>
@@ -243,17 +256,18 @@
         </hbox>
       </hbox>
 
       <!-- Please don't remove the wrapping hbox/vbox/box for these elements. It's used to properly compute the search tooltip position. -->
       <hbox>
         <button id="advancedFonts"
                 class="accessory-button"
                 icon="select-font"
-                data-l10n-id="advanced-fonts"
+                label="&advancedFonts.label;"
+                accesskey="&advancedFonts.accesskey;"
                 searchkeywords="&fontsDialog.title;
                                 &fonts.label;
                                 &size2.label;
                                 &proportional2.label;
                                 &serif2.label;
                                 &sans-serif2.label;
                                 &monospace2.label;
                                 &font.langGroup.latin;
@@ -313,17 +327,18 @@
     </hbox>
     <hbox id="colorsSettings">
       <spacer flex="1" />
       <!-- Please don't remove the wrapping hbox/vbox/box for these elements. It's used to properly compute the search tooltip position. -->
       <hbox>
         <button id="colors"
                 class="accessory-button"
                 icon="select-color"
-                data-l10n-id="colors-settings"
+                label="&colors.label;"
+                accesskey="&colors.accesskey;"
                 searchkeywords="&overrideDefaultPageColors2.label;
                                 &overrideDefaultPageColors.always.label;
                                 &overrideDefaultPageColors.auto.label;
                                 &overrideDefaultPageColors.never.label;
                                 &color;
                                 &textColor2.label;
                                 &backgroundColor2.label;
                                 &useSystemColors.label;
@@ -333,176 +348,192 @@
                                 &visitedLinkColor2.label;"/>
       </hbox>
     </hbox>
   </vbox>
 </groupbox>
 
 <!-- Languages -->
 <groupbox id="languagesGroup" data-category="paneGeneral" hidden="true">
-  <caption><label data-l10n-id="language-header"/></caption>
+  <caption><label>&language2.label;</label></caption>
 
   <hbox id="languagesBox" align="center">
-    <description flex="1" control="chooseLanguage" data-l10n-id="choose-language-description"/>
+    <description flex="1" control="chooseLanguage">&chooseLanguage.label;</description>
     <!-- Please don't remove the wrapping hbox/vbox/box for these elements. It's used to properly compute the search tooltip position. -->
     <hbox>
       <button id="chooseLanguage"
               class="accessory-button"
-              data-l10n-id="choose-button"
+              label="&chooseButton.label;"
+              accesskey="&chooseButton.accesskey;"
               searchkeywords="&languages.customize.Header;
                               &languages.customize2.description;
                               &languages.customize.moveUp.label;
                               &languages.customize.moveDown.label;
                               &languages.customize.deleteButton.label;
                               &languages.customize.selectLanguage.label;
                               &languages.customize.addButton.label;"/>
     </hbox>
   </hbox>
 
   <hbox id="translationBox" hidden="true">
     <hbox align="center" flex="1">
       <checkbox id="translate" preference="browser.translation.detectLanguage"
-                data-l10n-id="translate-web-pages"
+                label="&translateWebPages.label;." accesskey="&translateWebPages.accesskey;"
                 onsyncfrompreference="return gMainPane.updateButtons('translateButton',
                                               'browser.translation.detectLanguage');"/>
       <hbox id="bingAttribution" hidden="true" align="center">
+        <separator orient="vertical" class="thin"/>
         <label>&translation.options.attribution.beforeLogo;</label>
         <separator orient="vertical" class="thin"/>
         <image id="translationAttributionImage" aria-label="Microsoft Translator"
                src="chrome://browser/content/microsoft-translator-attribution.png"/>
         <separator orient="vertical" class="thin"/>
         <label>&translation.options.attribution.afterLogo;</label>
       </hbox>
     </hbox>
     <button id="translateButton"
             class="accessory-button"
-            data-l10n-id="translate-exceptions"/>
+            label="&translateExceptions.label;"
+            accesskey="&translateExceptions.accesskey;"/>
   </hbox>
   <checkbox id="checkSpelling"
-          data-l10n-id="check-user-spelling"
+          label="&checkUserSpelling.label;"
+          accesskey="&checkUserSpelling.accesskey;"
           onsyncfrompreference="return gMainPane.readCheckSpelling();"
           onsynctopreference="return gMainPane.writeCheckSpelling();"
           preference="layout.spellcheckDefault"/>
 </groupbox>
 
 <!-- Files and Applications -->
 <hbox id="filesAndApplicationsCategory"
       class="subcategory"
       hidden="true"
       data-category="paneGeneral">
-  <label class="header-name" flex="1" data-l10n-id="files-and-applications-title"/>
+  <label class="header-name" flex="1">&filesAndApplications.label;</label>
 </hbox>
 
 <!--Downloads-->
 <groupbox id="downloadsGroup" data-category="paneGeneral" hidden="true">
-  <caption><label data-l10n-id="download-header"/></caption>
+  <caption><label>&downloads.label;</label></caption>
 
   <radiogroup id="saveWhere"
               preference="browser.download.useDownloadDir"
               onsyncfrompreference="return gMainPane.readUseDownloadDir();">
     <hbox id="saveToRow">
       <radio id="saveTo"
             value="true"
-            data-l10n-id="download-save-to"
+            label="&saveTo.label;"
+            accesskey="&saveTo.accesskey;"
             aria-labelledby="saveTo downloadFolder"/>
       <filefield id="downloadFolder"
                 flex="1"
                 preference="browser.download.folderList"
                 preference-editable="true"
                 aria-labelledby="saveTo"
                 onsyncfrompreference="return gMainPane.displayDownloadDirPref();"/>
       <button id="chooseFolder"
-              data-l10n-id="download-choose-folder"
+#ifdef XP_MACOSX
+              accesskey="&chooseFolderMac.accesskey;"
+              label="&chooseFolderMac.label;"
+#else
+              accesskey="&chooseFolderWin.accesskey;"
+              label="&chooseFolderWin.label;"
+#endif
       />
     </hbox>
     <!-- Additional radio button added to support CloudStorage - Bug 1357171 -->
     <radio id="saveToCloud"
           value="true"
           hidden="true"/>
     <radio id="alwaysAsk"
           value="false"
-          data-l10n-id="download-always-ask-where"/>
+          label="&alwaysAskWhere.label;"
+          accesskey="&alwaysAskWhere.accesskey;"/>
   </radiogroup>
 </groupbox>
 
 <groupbox id="applicationsGroup" data-category="paneGeneral" hidden="true">
-  <caption><label data-l10n-id="applications-header"/></caption>
-  <description data-l10n-id="applications-description"/>
+  <caption><label>&applications.label;</label></caption>
+  <description>&applications.description;</description>
   <textbox id="filter" flex="1"
            type="search"
-           data-l10n-id="applications-filter"
+           placeholder="&filter2.emptytext;"
            aria-controls="handlersView"/>
 
   <richlistbox id="handlersView" orient="vertical" persist="lastSelectedType"
                preference="pref.downloads.disable_button.edit_actions"
                flex="1">
     <listheader equalsize="always">
-        <treecol id="typeColumn" data-l10n-id="applications-type-column" value="type"
-                 persist="sortDirection"
+        <treecol id="typeColumn" label="&typeColumn.label;" value="type"
+                 accesskey="&typeColumn.accesskey;" persist="sortDirection"
                  flex="1" sortDirection="ascending"/>
-        <treecol id="actionColumn" data-l10n-id="applications-action-column" value="action"
-                 persist="sortDirection"
+        <treecol id="actionColumn" label="&actionColumn2.label;" value="action"
+                 accesskey="&actionColumn2.accesskey;" persist="sortDirection"
                  flex="1"/>
     </listheader>
   </richlistbox>
 </groupbox>
 
 
 <!-- DRM Content -->
 <groupbox id="drmGroup" data-category="paneGeneral" data-subcategory="drm" hidden="true">
-  <caption><label data-l10n-id="drm-content-header"/></caption>
+  <caption><label>&drmContent2.label;</label></caption>
   <grid id="contentGrid2">
     <columns>
       <column flex="1"/>
       <column/>
     </columns>
     <rows id="contentRows-2">
       <row id="playDRMContentRow">
         <hbox align="center">
           <checkbox id="playDRMContent" preference="media.eme.enabled"
-                    class="tail-with-learn-more" data-l10n-id="play-drm-content" />
-          <label id="playDRMContentLink" class="learnMore text-link" data-l10n-id="play-drm-content-learn-more"/>
+                    class="tail-with-learn-more" label="&playDRMContent2.label;" accesskey="&playDRMContent2.accesskey;"/>
+          <label id="playDRMContentLink" class="learnMore text-link">
+            &playDRMContent.learnMore.label;
+          </label>
         </hbox>
       </row>
     </rows>
   </grid>
 </groupbox>
 
 #ifdef HAVE_SHELL_SERVICE
   <stringbundle id="bundleShell" src="chrome://browser/locale/shellservice.properties"/>
   <stringbundle id="bundleBrand" src="chrome://branding/locale/brand.properties"/>
 #endif
 
 <hbox id="updatesCategory"
       class="subcategory"
       hidden="true"
       data-category="paneGeneral">
-  <label class="header-name" flex="1" data-l10n-id="update-application-title"/>
+  <label class="header-name" flex="1">&updateApplication.label;</label>
 </hbox>
 
 <!-- Update -->
 <groupbox id="updateApp" data-category="paneGeneral" hidden="true">
-  <caption class="search-header" hidden="true"><label data-l10n-id="update-application-title"/></caption>
+  <caption class="search-header" hidden="true"><label>&updateApplication.label;</label></caption>
 
-  <label data-l10n-id="update-application-description"/>
+  <label>&updateApplicationDescription.label;</label>
   <hbox align="center">
     <vbox flex="1">
-      <description id="updateAppInfo">
-        <html:a id="releasenotes" class="learnMore text-link" hidden="true"/>
+      <description>
+        &updateApplication.version.pre;<label id="version" class="tail-with-learn-more" />&updateApplication.version.post;
+        <label id="releasenotes" class="learnMore text-link" hidden="true">&releaseNotes.link;</label>
       </description>
       <description id="distribution" class="text-blurb" hidden="true"/>
       <description id="distributionId" class="text-blurb" hidden="true"/>
     </vbox>
 #ifdef MOZ_UPDATER
     <spacer flex="1"/>
     <!-- Please don't remove the wrapping hbox/vbox/box for these elements. It's used to properly compute the search tooltip position. -->
     <vbox>
       <button id="showUpdateHistory"
               class="accessory-button"
-              data-l10n-id="update-history"
+              label="&updateHistory2.label;"
+              accesskey="&updateHistory2.accesskey;"
               preference="app.update.disable_button.showUpdateHistory"
               searchkeywords="&history.title; &history2.intro;"/>
     </vbox>
 #endif
   </hbox>
 #ifdef MOZ_UPDATER
   <vbox id="updateBox">
     <deck id="updateDeck" orient="vertical">
@@ -594,141 +625,152 @@
                 accesskey="&update.updateButton.accesskey;"
                 disabled="true"/>
       </hbox>
     </deck>
   </vbox>
 #endif
 
 #ifdef MOZ_UPDATER
-  <description data-l10n-id="update-application-allow-description"></description>
+  <description>&updateApplication.description;</description>
   <radiogroup id="updateRadioGroup">
     <radio id="autoDesktop"
            value="auto"
-           data-l10n-id="update-application-auto"/>
+           label="&updateAuto3.label;"
+           accesskey="&updateAuto3.accesskey;"/>
     <radio value="checkOnly"
-           data-l10n-id="update-application-check-choose"/>
+          label="&updateCheckChoose2.label;"
+          accesskey="&updateCheckChoose2.accesskey;"/>
     <radio value="manual"
-           data-l10n-id="update-application-manual"/>
+          label="&updateManual2.label;"
+          accesskey="&updateManual2.accesskey;"/>
   </radiogroup>
 #ifdef MOZ_MAINTENANCE_SERVICE
   <checkbox id="useService"
-            data-l10n-id="update-application-use-service"
+            label="&useService.label;"
+            accesskey="&useService.accesskey;"
             preference="app.update.service.enabled"/>
 #endif
 #endif
   <checkbox id="enableSearchUpdate"
-            data-l10n-id="update-enable-search-update"
+            label="&enableSearchUpdate2.label;"
+            accesskey="&enableSearchUpdate2.accesskey;"
             preference="browser.search.update"/>
 </groupbox>
 
 <hbox id="performanceCategory"
       class="subcategory"
       hidden="true"
       data-category="paneGeneral">
-  <label class="header-name" flex="1" data-l10n-id="performance-title"/>
+  <label class="header-name" flex="1">&performance.label;</label>
 </hbox>
 
 <!-- Performance -->
 <groupbox id="performanceGroup" data-category="paneGeneral" hidden="true">
-  <caption class="search-header" hidden="true"><label data-l10n-id="performance-title"/></caption>
+  <caption class="search-header" hidden="true"><label>&performance.label;</label></caption>
 
   <hbox align="center">
     <checkbox id="useRecommendedPerformanceSettings"
               class="tail-with-learn-more"
-              data-l10n-id="performance-use-recommended-settings-checkbox"
+              label="&useRecommendedPerformanceSettings2.label;"
+              accesskey="&useRecommendedPerformanceSettings2.accesskey;"
               preference="browser.preferences.defaultPerformanceSettings.enabled"/>
-    <label id="performanceSettingsLearnMore" class="learnMore text-link" data-l10n-id="performance-settings-learn-more"/>
+    <label id="performanceSettingsLearnMore" class="learnMore text-link">&performanceSettingsLearnMore.label;</label>
   </hbox>
-  <description class="indent tip-caption" data-l10n-id="performance-use-recommended-settings-desc"/>
+  <description class="indent tip-caption">&useRecommendedPerformanceSettings2.description;</description>
 
   <vbox id="performanceSettings" class="indent" hidden="true">
     <checkbox id="allowHWAccel"
-              data-l10n-id="performance-allow-hw-accel"
+              label="&allowHWAccel.label;"
+              accesskey="&allowHWAccel.accesskey;"
               preference="layers.acceleration.disabled"/>
     <hbox align="center">
-      <label id="limitContentProcess" data-l10n-id="performance-limit-content-process-option" control="contentProcessCount"/>
+      <label id="limitContentProcess" accesskey="&limitContentProcessOption.accesskey;" control="contentProcessCount">&limitContentProcessOption.label;</label>
       <menulist id="contentProcessCount" preference="dom.ipc.processCount">
         <menupopup>
           <menuitem label="1" value="1"/>
           <menuitem label="2" value="2"/>
           <menuitem label="3" value="3"/>
           <menuitem label="4" value="4"/>
           <menuitem label="5" value="5"/>
           <menuitem label="6" value="6"/>
           <menuitem label="7" value="7"/>
         </menupopup>
       </menulist>
     </hbox>
-    <description id="contentProcessCountEnabledDescription" class="tip-caption" data-l10n-id="performance-limit-content-process-enabled-desc"/>
-    <description id="contentProcessCountDisabledDescription" class="tip-caption" data-l10n-id="performance-limit-content-process-disabled-desc">
-      <html:a class="text-link" href="https://wiki.mozilla.org/Electrolysis"/>
-    </description>
+    <description id="contentProcessCountEnabledDescription" class="tip-caption">&limitContentProcessOption.description;</description>
+    <description id="contentProcessCountDisabledDescription" class="tip-caption">&limitContentProcessOption.disabledDescription;<label class="text-link" href="https://wiki.mozilla.org/Electrolysis">&limitContentProcessOption.disabledDescriptionLink;</label></description>
   </vbox>
 </groupbox>
 
 <hbox id="browsingCategory"
       class="subcategory"
       hidden="true"
       data-category="paneGeneral">
-  <label class="header-name" flex="1" data-l10n-id="browsing-title"/>
+  <label class="header-name" flex="1">&browsing.label;</label>
 </hbox>
 
 <!-- Browsing -->
 <groupbox id="browsingGroup" data-category="paneGeneral" hidden="true">
-  <caption class="search-header" hidden="true"><label data-l10n-id="browsing-title"/></caption>
+  <caption class="search-header" hidden="true"><label>&browsing.label;</label></caption>
 
   <checkbox id="useAutoScroll"
-            data-l10n-id="browsing-use-autoscroll"
+            label="&useAutoScroll.label;"
+            accesskey="&useAutoScroll.accesskey;"
             preference="general.autoScroll"/>
   <checkbox id="useSmoothScrolling"
-            data-l10n-id="browsing-use-smooth-scrolling"
+            label="&useSmoothScrolling.label;"
+            accesskey="&useSmoothScrolling.accesskey;"
             preference="general.smoothScroll"/>
 
 #ifdef XP_WIN
   <checkbox id="useOnScreenKeyboard"
             hidden="true"
-            data-l10n-id="browsing-use-onscreen-keyboard"
+            label="&useOnScreenKeyboard.label;"
+            accesskey="&useOnScreenKeyboard.accesskey;"
             preference="ui.osk.enabled"/>
 #endif
   <checkbox id="useCursorNavigation"
-            data-l10n-id="browsing-use-cursor-navigation"
+            label="&useCursorNavigation.label;"
+            accesskey="&useCursorNavigation.accesskey;"
             preference="accessibility.browsewithcaret"/>
   <checkbox id="searchStartTyping"
-            data-l10n-id="browsing-search-on-start-typing"
+            label="&searchOnStartTyping.label;"
+            accesskey="&searchOnStartTyping.accesskey;"
             preference="accessibility.typeaheadfind"/>
 </groupbox>
 
 <hbox id="networkProxyCategory"
       class="subcategory"
       hidden="true"
       data-category="paneGeneral">
-  <label class="header-name" flex="1" data-l10n-id="network-proxy-title"/>
+  <label class="header-name" flex="1">&networkProxy.label;</label>
 </hbox>
 
 <!-- Network Proxy-->
 <groupbox id="connectionGroup" data-category="paneGeneral" hidden="true">
-  <caption class="search-header" hidden="true"><label data-l10n-id="network-proxy-title"/></caption>
+  <caption class="search-header" hidden="true"><label>&networkProxy.label;</label></caption>
 
   <hbox align="center">
     <hbox align="center" flex="1">
-      <description id="connectionSettingsDescription" control="connectionSettings"/>
+      <description id="connectionSettingsDescription" control="connectionSettings"></description>
       <spacer width="5"/>
-      <label id="connectionSettingsLearnMore" class="learnMore text-link"
-        data-l10n-id="network-proxy-connection-learn-more">
+      <label id="connectionSettingsLearnMore" class="learnMore text-link">
+        &connectionSettingsLearnMore.label;
       </label>
       <separator orient="vertical"/>
     </hbox>
 
     <!-- Please don't remove the wrapping hbox/vbox/box for these elements. It's used to properly compute the search tooltip position. -->
     <hbox>
       <button id="connectionSettings"
               class="accessory-button"
               icon="network"
-              data-l10n-id="network-proxy-connection-settings"
+              label="&connectionSettings.label;"
+              accesskey="&connectionSettings.accesskey;"
               searchkeywords="&connectionsDialog.title;
                               &noProxyTypeRadio.label;
                               &WPADTypeRadio.label;
                               &systemTypeRadio.label;
                               &manualTypeRadio2.label;
                               &http2.label;
                               &ssl2.label;
                               &ftp2.label;
--- a/browser/components/preferences/in-content/preferences.xul
+++ b/browser/components/preferences/in-content/preferences.xul
@@ -30,27 +30,30 @@
 <!ENTITY % passwordManagerDTD SYSTEM "chrome://passwordmgr/locale/passwordManager.dtd">
 <!ENTITY % historyDTD SYSTEM "chrome://mozapps/locale/update/history.dtd">
 <!ENTITY % certManagerDTD SYSTEM "chrome://pippki/locale/certManager.dtd">
 <!ENTITY % deviceManangerDTD SYSTEM "chrome://pippki/locale/deviceManager.dtd">
 <!ENTITY % connectionDTD SYSTEM "chrome://browser/locale/preferences/connection.dtd">
 <!ENTITY % siteDataSettingsDTD SYSTEM
   "chrome://browser/locale/preferences/siteDataSettings.dtd" >
 <!ENTITY % privacyDTD SYSTEM "chrome://browser/locale/preferences/privacy.dtd">
+<!ENTITY % tabsDTD SYSTEM "chrome://browser/locale/preferences/tabs.dtd">
 <!ENTITY % searchDTD SYSTEM "chrome://browser/locale/preferences/search.dtd">
 <!ENTITY % syncBrandDTD SYSTEM "chrome://browser/locale/syncBrand.dtd">
 <!ENTITY % syncDTD SYSTEM "chrome://browser/locale/preferences/sync.dtd">
 <!ENTITY % securityDTD SYSTEM
   "chrome://browser/locale/preferences/security.dtd">
 <!ENTITY % containersDTD SYSTEM
   "chrome://browser/locale/preferences/containers.dtd">
 <!ENTITY % sanitizeDTD SYSTEM "chrome://browser/locale/sanitize.dtd">
 <!ENTITY % mainDTD SYSTEM "chrome://browser/locale/preferences/main.dtd">
 <!ENTITY % aboutHomeDTD SYSTEM "chrome://browser/locale/aboutHome.dtd">
 <!ENTITY % contentDTD SYSTEM "chrome://browser/locale/preferences/content.dtd">
+<!ENTITY % applicationsDTD SYSTEM
+  "chrome://browser/locale/preferences/applications.dtd">
 <!ENTITY % advancedDTD SYSTEM
   "chrome://browser/locale/preferences/advanced.dtd">
 <!ENTITY % aboutDialogDTD SYSTEM "chrome://browser/locale/aboutDialog.dtd" >
 %aboutDialogDTD;
 %brandDTD;
 %globalPreferencesDTD;
 %preferencesDTD;
 %selectBookmarkDTD;
@@ -60,39 +63,42 @@
 %permissionsDTD;
 %passwordManagerDTD;
 %historyDTD;
 %certManagerDTD;
 %deviceManangerDTD;
 %connectionDTD;
 %siteDataSettingsDTD;
 %privacyDTD;
+%tabsDTD;
 %searchDTD;
 %syncBrandDTD;
 %syncDTD;
 %securityDTD;
 %containersDTD;
 %sanitizeDTD;
 %mainDTD;
 %aboutHomeDTD;
 %contentDTD;
+%applicationsDTD;
 %advancedDTD;
 ]>
 
 #ifdef XP_WIN
 #define USE_WIN_TITLE_STYLE
 #endif
 
 <page xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
       xmlns:html="http://www.w3.org/1999/xhtml"
       disablefastfind="true"
       data-l10n-id="pref-page"
       data-l10n-attrs="title">
 
   <link rel="localization" href="branding/brand.ftl"/>
+  <link rel="localization" href="browser/preferences/main.ftl"/>
   <link rel="localization" href="browser/preferences/preferences.ftl"/>
   <script type="text/javascript" src="chrome://global/content/l10n.js"></script>
 
   <html:link rel="shortcut icon"
               href="chrome://browser/skin/settings.svg"/>
 
   <script type="application/javascript"
           src="chrome://browser/content/utilityOverlay.js"/>
new file mode 100644
--- /dev/null
+++ b/browser/locales/en-US/browser/preferences/main.ftl
@@ -0,0 +1,4 @@
+// Variables:
+//   $num - default value of the `dom.ipc.processCount` pref.
+default-content-process-count
+    .label = { $num } (default)
--- a/browser/locales/en-US/browser/preferences/preferences.ftl
+++ b/browser/locales/en-US/browser/preferences/preferences.ftl
@@ -5,18 +5,17 @@
 do-not-track-description = Send websites a “Do Not Track” signal that you don’t want to be tracked
 do-not-track-learn-more = Learn more
 do-not-track-option-default =
     .label = Only when using Tracking Protection
 do-not-track-option-always =
     .label = Always
 
 pref-page =
-    .title =
-        { PLATFORM() ->
+    .title = { PLATFORM() ->
             [windows] Options
            *[other] Preferences
         }
 
 # This is used to determine the width of the search field in about:preferences,
 # in order to make the entire placeholder string visible
 #
 # Notice: The value of the `.style` attribute is a CSS string, and the `width`
@@ -53,297 +52,8 @@ close-button =
 ## Browser Restart Dialog
 
 feature-enable-requires-restart = { -brand-short-name } must restart to enable this feature.
 feature-disable-requires-restart = { -brand-short-name } must restart to disable this feature.
 should-restart-title = Restart { -brand-short-name }
 should-restart-ok = Restart { -brand-short-name } now
 cancel-no-restart-button = Cancel
 restart-later = Restart Later
-
-## General Section
-
-startup-header = Startup
-
-# { -brand-short-name } will be 'Firefox Developer Edition',
-# since this setting is only exposed in Firefox Developer Edition
-separate-profile-mode =
-    .label = Allow { -brand-short-name } and Firefox to run at the same time
-use-firefox-sync = Tip: This uses separate profiles. Use { -sync-brand-short-name } to share data between them.
-get-started-not-logged-in = Sign in to { -sync-brand-short-name }…
-get-started-configured = Open { -sync-brand-short-name } preferences
-
-always-check-default =
-    .label = Always check if { -brand-short-name } is your default browser
-    .accesskey = y
-
-is-default = { -brand-short-name } is currently your default browser
-is-not-default = { -brand-short-name } is not your default browser
-
-set-as-my-default-browser =
-    .label = Make Default…
-    .accesskey = D
-
-startup-page = When { -brand-short-name } starts
-    .accesskey = s
-
-startup-user-homepage =
-    .label = Show your home page
-startup-blank-page =
-    .label = Show a blank page
-startup-prev-session =
-    .label = Show your windows and tabs from last time
-
-disable-extension =
-    .label = Disable Extension
-
-home-page-header = Home page
-
-# This string has a special case for '1' and [other] (default). If necessary for
-# your language, you can add {$tabCount} to your translations and use the
-# standard CLDR forms, or only use the form for [other] if both strings should
-# be identical.
-use-current-pages =
-    .label =
-        { $tabCount ->
-            [1] Use Current Page
-           *[other] Use Current Pages
-        }
-    .accesskey = C
-
-choose-bookmark =
-    .label = Use Bookmark…
-    .accesskey = B
-
-restore-default =
-    .label = Restore to Default
-    .accesskey = R
-
-tabs-group-header = Tabs
-
-ctrl-tab-recently-used-order =
-    .label = Ctrl+Tab cycles through tabs in recently used order
-    .accesskey = T
-
-open-new-link-as-tabs =
-    .label = Open links in tabs instead of new windows
-    .accesskey = w
-
-warn-on-close-multiple-tabs =
-    .label = Warn you when closing multiple tabs
-    .accesskey = m
-
-warn-on-open-many-tabs =
-    .label = Warn you when opening multiple tabs might slow down { -brand-short-name }
-    .accesskey = d
-
-switch-links-to-new-tabs =
-    .label = When you open a link in a new tab, switch to it immediately
-    .accesskey = h
-
-show-tabs-in-taskbar =
-    .label = Show tab previews in the Windows taskbar
-    .accesskey = k
-
-browser-containers-enabled =
-    .label = Enable Container Tabs
-    .accesskey = n
-
-browser-containers-learn-more = Learn more
-
-browser-containers-settings =
-    .label = Settings…
-    .accesskey = i
-
-containers-disable-alert-title = Close All Container Tabs?
-containers-disable-alert-desc =
-    { $tabCount ->
-        [one] If you disable Container Tabs now, { $tabCount } container tab will be closed. Are you sure you want to disable Container Tabs?
-       *[other] If you disable Container Tabs now, { $tabCount } container tabs will be closed. Are you sure you want to disable Container Tabs?
-    }
-
-containers-disable-alert-ok-button =
-    { $tabCount ->
-        [one] Close { $tabCount } Container Tab
-       *[other] Close { $tabCount } Container Tabs
-    }
-containers-disable-alert-cancel-button = Keep enabled
-
-## General Section - Language & Appearance
-
-language-and-appearance-header = Language and Appearance
-
-fonts-and-colors-header = Fonts & Colors
-
-default-font = Default font
-    .accesskey = D
-default-font-size = Size
-    .accesskey = S
-
-advanced-fonts =
-    .label = Advanced…
-    .accesskey = A
-
-colors-settings =
-    .label = Colors…
-    .accesskey = C
-
-language-header = Language
-
-choose-language-description = Choose your preferred language for displaying pages
-
-choose-button =
-    .label = Choose…
-    .accesskey = o
-
-translate-web-pages =
-    .label = Translate web content
-    .accesskey = T
-
-translate-exceptions =
-    .label = Exceptions…
-    .accesskey = x
-
-check-user-spelling =
-    .label = Check your spelling as you type
-    .accesskey = t
-
-## General Section - Files and Applications
-
-files-and-applications-title = Files and Applications
-
-download-header = Downloads
-
-download-save-to =
-    .label = Save files to
-    .accesskey = v
-
-download-choose-folder =
-    .label =
-        { PLATFORM() ->
-            [macos] Choose…
-           *[other] Browse…
-        }
-    .accesskey =
-        { PLATFORM() ->
-            [macos] e
-           *[other] o
-        }
-
-download-always-ask-where =
-    .label = Always ask you where to save files
-    .accesskey = A
-
-applications-header = Applications
-
-applications-description = Choose how { -brand-short-name } handles the files you download from the web or the applications you use while browsing.
-
-applications-filter =
-    .placeholder = Search file types or applications
-
-applications-type-column =
-    .label = Content Type
-    .accesskey = T
-
-applications-action-column =
-    .label = Action
-    .accesskey = A
-
-drm-content-header = Digital Rights Management (DRM) Content
-
-play-drm-content =
-    .label = Play DRM-controlled content
-    .accesskey = P
-
-play-drm-content-learn-more = Learn more
-
-update-application-title = { -brand-short-name } Updates
-
-update-application-description = Keep { -brand-short-name } up to date for the best performance, stability, and security.
-
-update-application-info = Version { $version } <a>What's new</a>
-
-update-history =
-    .label = Show Update History…
-    .accesskey = p
-
-update-application-allow-description = Allow { -brand-short-name } to
-
-update-application-auto =
-    .label = Automatically install updates (recommended)
-    .accesskey = A
-
-update-application-check-choose =
-    .label = Check for updates but let you choose to install them
-    .accesskey = C
-
-update-application-manual =
-    .label = Never check for updates (not recommended)
-    .accesskey = N
-
-update-application-use-service =
-    .label = Use a background service to install updates
-    .accesskey = b
-
-update-enable-search-update =
-    .label = Automatically update search engines
-    .accesskey = e
-
-## General Section - Performance
-
-performance-title = Performance
-
-performance-use-recommended-settings-checkbox =
-    .label = Use recommended performance settings
-    .accesskey = U
-
-performance-use-recommended-settings-desc = These settings are tailored to your computer’s hardware and operating system.
-
-performance-settings-learn-more = Learn more
-
-performance-allow-hw-accel =
-    .label = Use hardware acceleration when available
-    .accesskey = r
-
-performance-limit-content-process-option = Content process limit
-    .accesskey = l
-
-performance-limit-content-process-enabled-desc = Additional content processes can improve performance when using multiple tabs, but will also use more memory.
-performance-limit-content-process-disabled-desc = Modifying the number of content processes is only possible with multiprocess { -brand-short-name }. <a>Learn how to check if multiprocess is enabled</a>
-
-# Variables:
-#   $num - default value of the `dom.ipc.processCount` pref.
-performance-default-content-process-count =
-    .label = { $num } (default)
-
-## General Section - Browsing
-
-browsing-title = Browsing
-
-browsing-use-autoscroll =
-    .label = Use autoscrolling
-    .accesskey = a
-
-browsing-use-smooth-scrolling =
-    .label = Use smooth scrolling
-    .accesskey = m
-
-browsing-use-onscreen-keyboard =
-    .label = Show a touch keyboard when necessary
-    .accesskey = c
-
-browsing-use-cursor-navigation =
-    .label = Always use the cursor keys to navigate within pages
-    .accesskey = k
-
-browsing-search-on-start-typing =
-    .label = Search for text when you start typing
-    .accesskey = x
-
-## General Section - Proxy
-
-network-proxy-title = Network Proxy
-
-network-proxy-connection-learn-more = Learn More
-
-network-proxy-connection-settings =
-    .label = Settings…
-    .accesskey = e
--- a/browser/locales/en-US/chrome/browser/preferences/advanced.dtd
+++ b/browser/locales/en-US/chrome/browser/preferences/advanced.dtd
@@ -1,16 +1,32 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 <!-- Note: each tab panel must contain unique accesskeys -->
 
 <!ENTITY generalTab.label                "General">
 
+<!ENTITY useCursorNavigation.label       "Always use the cursor keys to navigate within pages">
+<!ENTITY useCursorNavigation.accesskey   "c">
+<!ENTITY searchOnStartTyping.label       "Search for text when you start typing">
+<!ENTITY searchOnStartTyping.accesskey   "x">
+<!ENTITY useOnScreenKeyboard.label       "Show a touch keyboard when necessary">
+<!ENTITY useOnScreenKeyboard.accesskey   "k">
+
+<!ENTITY browsing.label                  "Browsing">
+
+<!ENTITY useAutoScroll.label             "Use autoscrolling">
+<!ENTITY useAutoScroll.accesskey         "a">
+<!ENTITY useSmoothScrolling.label        "Use smooth scrolling">
+<!ENTITY useSmoothScrolling.accesskey    "m">
+<!ENTITY checkUserSpelling.label         "Check your spelling as you type">
+<!ENTITY checkUserSpelling.accesskey     "t">
+
 <!ENTITY dataChoicesTab.label            "Data Choices">
 
 <!-- LOCALIZATION NOTE (healthReportingDisabled.label): This message is displayed above
 disabled data sharing options in developer builds or builds with no Telemetry support
 available. -->
 <!ENTITY healthReportingDisabled.label   "Data reporting is disabled for this build configuration">
 
 <!ENTITY enableHealthReport2.label       "Allow &brandShortName; to send technical and interaction data to Mozilla">
@@ -26,30 +42,88 @@ available. -->
 <!ENTITY collectBrowserErrorsLearnMore.label "Learn more">
 
 <!ENTITY sendBackloggedCrashReports.label  "Allow &brandShortName; to send backlogged crash reports on your behalf">
 <!ENTITY sendBackloggedCrashReports.accesskey "c">
 <!ENTITY crashReporterLearnMore.label    "Learn more">
 
 <!ENTITY networkTab.label                "Network">
 
+<!ENTITY networkProxy.label              "Network Proxy">
+
+<!ENTITY connectionSettingsLearnMore.label "Learn more">
+<!ENTITY connectionSettings.label        "Settings…">
+<!ENTITY connectionSettings.accesskey    "e">
+
 <!--  Site Data section manages sites using Storage API and is under Network -->
 <!ENTITY siteData1.label                 "Cookies and Site Data">
 <!ENTITY clearSiteData1.label            "Clear Data…">
 <!ENTITY clearSiteData1.accesskey        "l">
 <!ENTITY siteDataSettings.label          "Settings…">
 <!ENTITY siteDataSettings.accesskey      "i">
 <!ENTITY siteDataLearnMoreLink.label     "Learn more">
 
 <!ENTITY updateTab.label                 "Update">
 
+<!-- LOCALIZATION NOTE (updateApplication.label):
+  Strings from aboutDialog.dtd are displayed in this section of the preferences.
+  Please check for possible accesskey conflicts.
+-->
+<!ENTITY updateApplication.label         "&brandShortName; Updates">
+<!-- LOCALIZATION NOTE (updateApplication.version.*): updateApplication.version.pre
+# is followed by a version number, keep the trailing space or replace it with a
+# different character as needed. updateApplication.version.post is displayed
+# after the version number, and is empty on purpose for English. You can use it
+# if required by your language.
+ -->
+<!ENTITY updateApplicationDescription.label
+                                         "Keep &brandShortName; up to date for the best performance, stability, and security.">
+<!ENTITY updateApplication.version.pre   "Version ">
+<!ENTITY updateApplication.version.post  "">
+<!ENTITY updateApplication.description   "Allow &brandShortName; to">
+<!ENTITY updateAuto3.label               "Automatically install updates (recommended)">
+<!ENTITY updateAuto3.accesskey           "A">
+<!ENTITY updateCheckChoose2.label        "Check for updates but let you choose to install them">
+<!ENTITY updateCheckChoose2.accesskey    "C">
+<!ENTITY updateManual2.label             "Never check for updates (not recommended)">
+<!ENTITY updateManual2.accesskey         "N">
+
+<!ENTITY updateHistory2.label            "Show Update History…">
+<!ENTITY updateHistory2.accesskey        "p">
+
+<!ENTITY useService.label                "Use a background service to install updates">
+<!ENTITY useService.accesskey            "b">
+
+<!ENTITY enableSearchUpdate2.label       "Automatically update search engines">
+<!ENTITY enableSearchUpdate2.accesskey   "e">
+
 <!ENTITY certificateTab.label            "Certificates">
 <!ENTITY certPersonal2.description       "When a server requests your personal certificate">
 <!ENTITY selectCerts.auto                "Select one automatically">
 <!ENTITY selectCerts.auto.accesskey      "S">
 <!ENTITY selectCerts.ask                 "Ask you every time">
 <!ENTITY selectCerts.ask.accesskey       "A">
 <!ENTITY enableOCSP.label                "Query OCSP responder servers to confirm the current validity of certificates">
 <!ENTITY enableOCSP.accesskey            "Q">
 <!ENTITY viewCerts2.label                "View Certificates…">
 <!ENTITY viewCerts2.accesskey            "C">
 <!ENTITY viewSecurityDevices2.label      "Security Devices…">
 <!ENTITY viewSecurityDevices2.accesskey  "D">
+
+<!ENTITY performance.label               "Performance">
+<!ENTITY useRecommendedPerformanceSettings2.label
+                                         "Use recommended performance settings">
+<!ENTITY useRecommendedPerformanceSettings2.description
+                                         "These settings are tailored to your computer’s hardware and operating system.">
+<!ENTITY useRecommendedPerformanceSettings2.accesskey
+                                         "U">
+<!ENTITY performanceSettingsLearnMore.label
+                                         "Learn more">
+<!ENTITY limitContentProcessOption.label "Content process limit">
+<!ENTITY limitContentProcessOption.description
+                                         "Additional content processes can improve performance when using multiple tabs, but will also use more memory.">
+<!ENTITY limitContentProcessOption.accesskey   "L">
+<!ENTITY limitContentProcessOption.disabledDescription
+                                         "Modifying the number of content processes is only possible with multiprocess &brandShortName;.">
+<!ENTITY limitContentProcessOption.disabledDescriptionLink
+                                         "Learn how to check if multiprocess is enabled">
+<!ENTITY allowHWAccel.label              "Use hardware acceleration when available">
+<!ENTITY allowHWAccel.accesskey          "r">
new file mode 100644
--- /dev/null
+++ b/browser/locales/en-US/chrome/browser/preferences/applications.dtd
@@ -0,0 +1,14 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+   - License, v. 2.0. If a copy of the MPL was not distributed with this
+   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY  applications.label       "Applications">
+<!ENTITY  applications.description "Choose how &brandShortName; handles the files you download from the web or the applications you use while browsing.">
+
+<!ENTITY  typeColumn.label        "Content Type">
+<!ENTITY  typeColumn.accesskey    "T">
+
+<!ENTITY  actionColumn2.label     "Action">
+<!ENTITY  actionColumn2.accesskey "A">
+
+<!ENTITY  filter2.emptytext        "Search file types or applications">
--- a/browser/locales/en-US/chrome/browser/preferences/content.dtd
+++ b/browser/locales/en-US/chrome/browser/preferences/content.dtd
@@ -22,17 +22,47 @@
 <!ENTITY  cameraPermissions.label                               "Camera">
 <!ENTITY  cameraSettingsButton.label                            "Settings…">
 <!ENTITY  cameraSettingsButton.accesskey                        "t">
 
 <!ENTITY  microphonePermissions.label                           "Microphone">
 <!ENTITY  microphoneSettingsButton.label                        "Settings…">
 <!ENTITY  microphoneSettingsButton.accesskey                    "t">
 
+<!ENTITY  fontsAndColors.label        "Fonts &amp; Colors">
+
+<!ENTITY  defaultFont2.label          "Default font">
+<!ENTITY  defaultFont2.accesskey      "D">
+<!ENTITY  defaultSize2.label          "Size">
+<!ENTITY  defaultSize2.accesskey      "S">
+
+<!ENTITY  advancedFonts.label         "Advanced…">
+<!ENTITY  advancedFonts.accesskey     "A">
+
+<!ENTITY  colors.label                "Colors…">
+<!ENTITY  colors.accesskey            "C">
+
+
+<!ENTITY language2.label              "Language">
+<!ENTITY chooseLanguage.label         "Choose your preferred language for displaying pages">
+<!ENTITY chooseButton.label           "Choose…">
+<!ENTITY chooseButton.accesskey       "o">
+
+<!ENTITY translateWebPages.label      "Translate web content">
+<!ENTITY translateWebPages.accesskey  "T">
+<!ENTITY translateExceptions.label    "Exceptions…">
+<!ENTITY translateExceptions.accesskey "x">
+
 <!-- LOCALIZATION NOTE (translation.options.attribution.beforeLogo,
   -                     translation.options.attribution.afterLogo):
   -  These 2 strings are displayed before and after a 'Microsoft Translator'
   -  logo.
   -  The translations for these strings should match the translations in
   -  browser/translation.dtd
   -->
 <!ENTITY translation.options.attribution.beforeLogo "Translations by">
 <!ENTITY translation.options.attribution.afterLogo "">
+
+<!ENTITY  drmContent2.label              "Digital Rights Management (DRM) Content">
+
+<!ENTITY  playDRMContent2.label          "Play DRM-controlled content">
+<!ENTITY  playDRMContent2.accesskey      "P">
+<!ENTITY  playDRMContent.learnMore.label "Learn more">
--- a/browser/locales/en-US/chrome/browser/preferences/main.dtd
+++ b/browser/locales/en-US/chrome/browser/preferences/main.dtd
@@ -1,1 +1,46 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+   - License, v. 2.0. If a copy of the MPL was not distributed with this
+   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY startup.label             "Startup">
+
+<!ENTITY startupPage2.label        "When &brandShortName; starts">
+<!ENTITY startupPage2.accesskey    "s">
+<!ENTITY startupUserHomePage.label "Show your home page">
+<!ENTITY startupBlankPage.label    "Show a blank page">
+<!ENTITY startupPrevSession.label  "Show your windows and tabs from last time">
+
+<!ENTITY homepage2.label           "Home page">
+<!ENTITY homepage2.accesskey       "P">
+<!ENTITY useCurrentPage.label      "Use Current Page">
+<!ENTITY useCurrentPage.accesskey  "C">
+<!ENTITY useMultiple.label         "Use Current Pages">
+<!ENTITY chooseBookmark.label      "Use Bookmark…">
+<!ENTITY chooseBookmark.accesskey  "B">
+<!ENTITY restoreDefault.label      "Restore to Default">
+<!ENTITY restoreDefault.accesskey  "R">
+
 <!ENTITY disableExtension.label    "Disable Extension">
+
+<!ENTITY downloads.label     "Downloads">
+
+<!ENTITY saveTo.label "Save files to">
+<!ENTITY saveTo.accesskey "v">
+<!ENTITY chooseFolderWin.label        "Browse…">
+<!ENTITY chooseFolderWin.accesskey    "o">
+<!ENTITY chooseFolderMac.label        "Choose…">
+<!ENTITY chooseFolderMac.accesskey    "e">
+<!ENTITY alwaysAskWhere.label         "Always ask you where to save files">
+<!ENTITY alwaysAskWhere.accesskey     "A">
+
+<!ENTITY alwaysCheckDefault2.label        "Always check if &brandShortName; is your default browser">
+<!ENTITY alwaysCheckDefault2.accesskey    "y">
+<!ENTITY setAsMyDefaultBrowser3.label     "Make Default…">
+<!ENTITY setAsMyDefaultBrowser3.accesskey "D">
+<!ENTITY isDefault.label                  "&brandShortName; is currently your default browser">
+<!ENTITY isNotDefault.label               "&brandShortName; is not your default browser">
+
+<!ENTITY separateProfileMode.label        "Allow &brandShortName; and Firefox to run at the same time">
+<!ENTITY useFirefoxSync.label             "Tip: This uses separate profiles. Use Sync to share data between them.">
+<!ENTITY getStarted.notloggedin.label     "Sign in to &syncBrand.shortName.label;…">
+<!ENTITY getStarted.configured.label      "Open &syncBrand.shortName.label; preferences">
--- a/browser/locales/en-US/chrome/browser/preferences/preferences.dtd
+++ b/browser/locales/en-US/chrome/browser/preferences/preferences.dtd
@@ -1,13 +1,15 @@
 <!-- This Source Code Form is subject to the terms of the Mozilla Public
    - License, v. 2.0. If a copy of the MPL was not distributed with this
    - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
 
 <!ENTITY  paneSearchResults.title       "Search Results">
+<!ENTITY  paneGeneral.title             "General">
 <!ENTITY  paneSearch.title              "Search">
 <!ENTITY  paneContainers.title          "Container Tabs">
 
-
+<!ENTITY  languageAndAppearance.label   "Language and Appearance">
+<!ENTITY  filesAndApplications.label    "Files and Applications">
 <!ENTITY  browserPrivacy.label          "Browser Privacy">
 
 <!-- LOCALIZATION NOTE (paneSync1.title): This should match syncBrand.fxAccount.label in ../syncBrand.dtd -->
 <!ENTITY  paneSync1.title          "Firefox Account">
--- a/browser/locales/en-US/chrome/browser/preferences/preferences.properties
+++ b/browser/locales/en-US/chrome/browser/preferences/preferences.properties
@@ -202,16 +202,30 @@ spaceAlert.over5GB.message1=%S is runnin
 # - On Windows Preferences is called Options
 # - %S = brandShortName
 spaceAlert.over5GB.messageWin1=%S is running out of disk space. Website contents may not display properly. You can clear stored data in Options > Privacy & Security > Cookies and Site Data.
 spaceAlert.under5GB.okButton.label=OK, Got it
 spaceAlert.under5GB.okButton.accesskey=K
 # LOCALIZATION NOTE (spaceAlert.under5GB.message): %S = brandShortName
 spaceAlert.under5GB.message=%S is running out of disk space. Website contents may not display properly. Visit “Learn More” to optimize your disk usage for better browsing experience.
 
+disableContainersAlertTitle=Close All Container Tabs?
+
+# LOCALIZATION NOTE (disableContainersMsg): Semi-colon list of plural forms.
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+# #S is the number of container tabs
+disableContainersMsg=If you disable Container Tabs now, #S container tab will be closed. Are you sure you want to disable Container Tabs?;If you disable Container Tabs now, #S container tabs will be closed. Are you sure you want to disable Container Tabs?
+
+# LOCALIZATION NOTE (disableContainersOkButton): Semi-colon list of plural forms.
+# See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
+# #S is the number of container tabs
+disableContainersOkButton=Close #S Container Tab;Close #S Container Tabs
+
+disableContainersButton2=Keep enabled
+
 removeContainerAlertTitle=Remove This Container?
 
 # LOCALIZATION NOTE (removeContainerMsg): Semi-colon list of plural forms.
 # See: http://developer.mozilla.org/en/docs/Localization_and_Plurals
 # #S is the number of container tabs
 removeContainerMsg=If you remove this Container now, #S container tab will be closed. Are you sure you want to remove this Container?;If you remove this Container now, #S container tabs will be closed. Are you sure you want to remove this Container?
 
 removeContainerOkButton=Remove this Container
@@ -227,16 +241,19 @@ searchInput.labelUnix=Find in Preference
 searchResults.sorryMessageWin=Sorry! There are no results in Options for “%S”.
 searchResults.sorryMessageUnix=Sorry! There are no results in Preferences for “%S”.
 # LOCALIZATION NOTE (searchResults.needHelp3): %S will be replaced with a link to the support page.
 # The label of the link is in searchResults.needHelpSupportLink .
 searchResults.needHelp3=Need help? Visit %S
 # LOCALIZATION NOTE (searchResults.needHelpSupportLink): %S will be replaced with the browser name.
 searchResults.needHelpSupportLink=%S Support
 
+# LOCALIZATION NOTE %S is the default value of the `dom.ipc.processCount` pref.
+defaultContentProcessCount=%S (default)
+
 # LOCALIZATION NOTE (extensionControlled.homepage_override):
 # This string is shown to notify the user that their home page is being controlled by an extension.
 extensionControlled.homepage_override2 = An extension, %S, is controlling your home page.
 
 # LOCALIZATION NOTE (extensionControlled.newTabURL):
 # This string is shown to notify the user that their new tab page is being controlled by an extension.
 extensionControlled.newTabURL2 = An extension, %S, is controlling your New Tab page.
 
--- a/browser/locales/en-US/chrome/browser/preferences/privacy.dtd
+++ b/browser/locales/en-US/chrome/browser/preferences/privacy.dtd
@@ -83,12 +83,18 @@
 <!ENTITY  rememberSearchForm.accesskey   "f">
 
 <!ENTITY  clearOnClose.label             "Clear history when &brandShortName; closes">
 <!ENTITY  clearOnClose.accesskey         "r">
 
 <!ENTITY  clearOnCloseSettings.label     "Settings…">
 <!ENTITY  clearOnCloseSettings.accesskey "t">
 
+<!ENTITY  browserContainersLearnMore.label      "Learn more">
+<!ENTITY  browserContainersEnabled.label        "Enable Container Tabs">
+<!ENTITY  browserContainersEnabled.accesskey    "n">
+<!ENTITY  browserContainersSettings.label        "Settings…">
+<!ENTITY  browserContainersSettings.accesskey    "i">
+
 <!ENTITY  a11yPrivacy.checkbox.label     "Prevent accessibility services from accessing your browser">
 <!ENTITY  a11yPrivacy.checkbox.accesskey "a">
 <!ENTITY  a11yPrivacy.learnmore.label    "Learn more">
 <!ENTITY enableSafeBrowsingLearnMore.label "Learn more">
new file mode 100644
--- /dev/null
+++ b/browser/locales/en-US/chrome/browser/preferences/tabs.dtd
@@ -0,0 +1,22 @@
+<!-- This Source Code Form is subject to the terms of the Mozilla Public
+   - License, v. 2.0. If a copy of the MPL was not distributed with this
+   - file, You can obtain one at http://mozilla.org/MPL/2.0/. -->
+
+<!ENTITY ctrlTabRecentlyUsedOrder.label       "Ctrl+Tab cycles through tabs in recently used order">
+<!ENTITY ctrlTabRecentlyUsedOrder.accesskey   "T">
+
+<!ENTITY newWindowsAsTabs3.label       "Open links in tabs instead of new windows">
+<!ENTITY newWindowsAsTabs3.accesskey   "w">
+
+<!ENTITY warnOnCloseMultipleTabs.label      "Warn you when closing multiple tabs">
+<!ENTITY warnOnCloseMultipleTabs.accesskey  "m">
+
+<!ENTITY warnOnOpenManyTabs.label       "Warn you when opening multiple tabs might slow down &brandShortName;">
+<!ENTITY warnOnOpenManyTabs.accesskey   "d">
+
+<!ENTITY switchLinksToNewTabs.label        "When you open a link in a new tab, switch to it immediately">
+<!ENTITY switchLinksToNewTabs.accesskey    "h">
+
+<!ENTITY showTabsInTaskbar.label          "Show tab previews in the Windows taskbar">
+<!ENTITY showTabsInTaskbar.accesskey      "k">
+<!ENTITY tabsGroup.label          "Tabs">
--- a/browser/locales/jar.mn
+++ b/browser/locales/jar.mn
@@ -59,16 +59,17 @@
     locale/browser/safebrowsing/safebrowsing.properties   (%chrome/browser/safebrowsing/safebrowsing.properties)
     locale/browser/feeds/subscribe.dtd              (%chrome/browser/feeds/subscribe.dtd)
     locale/browser/feeds/subscribe.properties       (%chrome/browser/feeds/subscribe.properties)
     locale/browser/migration/migration.dtd         (%chrome/browser/migration/migration.dtd)
     locale/browser/migration/migration.properties  (%chrome/browser/migration/migration.properties)
     locale/browser/preferences/advanced.dtd           (%chrome/browser/preferences/advanced.dtd)
     locale/browser/preferences/applicationManager.dtd     (%chrome/browser/preferences/applicationManager.dtd)
     locale/browser/preferences/applicationManager.properties     (%chrome/browser/preferences/applicationManager.properties)
+    locale/browser/preferences/applications.dtd       (%chrome/browser/preferences/applications.dtd)
     locale/browser/preferences/blocklists.dtd         (%chrome/browser/preferences/blocklists.dtd)
     locale/browser/preferences/clearSiteData.dtd      (%chrome/browser/preferences/clearSiteData.dtd)
     locale/browser/preferences/clearSiteData.properties     (%chrome/browser/preferences/clearSiteData.properties)
     locale/browser/preferences/colors.dtd             (%chrome/browser/preferences/colors.dtd)
     locale/browser/preferences/connection.dtd         (%chrome/browser/preferences/connection.dtd)
     locale/browser/preferences/containers.dtd         (%chrome/browser/preferences/containers.dtd)
     locale/browser/preferences/containers.properties     (%chrome/browser/preferences/containers.properties)
     locale/browser/preferences/content.dtd            (%chrome/browser/preferences/content.dtd)
@@ -80,16 +81,17 @@
     locale/browser/preferences/preferences.dtd        (%chrome/browser/preferences/preferences.dtd)
     locale/browser/preferences/preferences.properties     (%chrome/browser/preferences/preferences.properties)
     locale/browser/preferences/privacy.dtd            (%chrome/browser/preferences/privacy.dtd)
     locale/browser/preferences/search.dtd             (%chrome/browser/preferences/search.dtd)
     locale/browser/preferences/security.dtd           (%chrome/browser/preferences/security.dtd)
     locale/browser/preferences/selectBookmark.dtd     (%chrome/browser/preferences/selectBookmark.dtd)
     locale/browser/preferences/siteDataSettings.dtd     (%chrome/browser/preferences/siteDataSettings.dtd)
     locale/browser/preferences/sync.dtd               (%chrome/browser/preferences/sync.dtd)
+    locale/browser/preferences/tabs.dtd               (%chrome/browser/preferences/tabs.dtd)
     locale/browser/preferences/translation.dtd        (%chrome/browser/preferences/translation.dtd)
     locale/browser/syncBrand.dtd                (%chrome/browser/syncBrand.dtd)
     locale/browser/syncSetup.properties         (%chrome/browser/syncSetup.properties)
 #if BUILD_FASTER
     locale/browser/searchplugins/               (searchplugins/*.xml)
     locale/browser/searchplugins/list.json      (search/list.json)
 #else
     locale/browser/searchplugins/               (.deps/generated_@AB_CD@/*.xml)
deleted file mode 100644
--- a/python/l10n/fluent_migrations/bug_1435912_preferences_general_xul.py
+++ /dev/null
@@ -1,1308 +0,0 @@
-# coding=utf8
-
-# Any copyright is dedicated to the Public Domain.
-# http://creativecommons.org/publicdomain/zero/1.0/
-
-from __future__ import absolute_import
-import fluent.syntax.ast as FTL
-from fluent.migrate.helpers import MESSAGE_REFERENCE, EXTERNAL_ARGUMENT
-from fluent.migrate.transforms import REPLACE, PLURALS, REPLACE_IN_TEXT
-from fluent.migrate import COPY, CONCAT
-
-
-def migrate(ctx):
-    """Bug 1435912 - Migrate Preferences::General XUL to Fluent, part {index}."""
-
-    ctx.add_transforms(
-        'browser/browser/preferences/preferences.ftl',
-        'browser/locales/en-US/browser/preferences/preferences.ftl',
-        [
-            FTL.Message(
-                id=FTL.Identifier('startup-header'),
-                value=COPY(
-                    'browser/chrome/browser/preferences/main.dtd',
-                    'startup.label'
-                )
-            ),
-            FTL.Message(
-                id=FTL.Identifier('separate-profile-mode'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        REPLACE(
-                            'browser/chrome/browser/preferences/main.dtd',
-                            'separateProfileMode.label',
-                            {
-                                '&brandShortName;': MESSAGE_REFERENCE('-brand-short-name')
-                            }
-                        )
-                    )
-                ]
-            ),
-            FTL.Message(
-                id=FTL.Identifier('use-firefox-sync'),
-                value=REPLACE(
-                    'browser/chrome/browser/preferences/main.dtd',
-                    'useFirefoxSync.label',
-                    {
-                        'Sync': MESSAGE_REFERENCE('-sync-brand-short-name')
-                    },
-                )
-            ),
-            FTL.Message(
-                id=FTL.Identifier('get-started-not-logged-in'),
-                value=REPLACE(
-                    'browser/chrome/browser/preferences/main.dtd',
-                    'getStarted.notloggedin.label',
-                    {
-                        '&syncBrand.shortName.label;': MESSAGE_REFERENCE('-sync-brand-short-name')
-                    },
-                )
-            ),
-            FTL.Message(
-                id=FTL.Identifier('get-started-configured'),
-                value=REPLACE(
-                    'browser/chrome/browser/preferences/main.dtd',
-                    'getStarted.configured.label',
-                    {
-                        '&syncBrand.shortName.label;': MESSAGE_REFERENCE('-sync-brand-short-name')
-                    },
-                )
-            ),
-            FTL.Message(
-                id=FTL.Identifier('always-check-default'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        REPLACE(
-                            'browser/chrome/browser/preferences/main.dtd',
-                            'alwaysCheckDefault2.label',
-                            {
-                                '&brandShortName;': MESSAGE_REFERENCE('-brand-short-name')
-                            },
-                        )
-                    ),
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/main.dtd',
-                            'alwaysCheckDefault2.accesskey',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('is-default'),
-                value=REPLACE(
-                    'browser/chrome/browser/preferences/main.dtd',
-                    'isDefault.label',
-                    {
-                        '&brandShortName;': MESSAGE_REFERENCE('-brand-short-name')
-                    },
-                )
-            ),
-            FTL.Message(
-                id=FTL.Identifier('is-not-default'),
-                value=REPLACE(
-                    'browser/chrome/browser/preferences/main.dtd',
-                    'isNotDefault.label',
-                    {
-                        '&brandShortName;': MESSAGE_REFERENCE('-brand-short-name')
-                    },
-                )
-            ),
-            FTL.Message(
-                id=FTL.Identifier('set-as-my-default-browser'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        COPY(
-                            'browser/chrome/browser/preferences/main.dtd',
-                            'setAsMyDefaultBrowser3.label',
-                        )
-                    ),
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/main.dtd',
-                            'setAsMyDefaultBrowser3.accesskey',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('startup-page'),
-                value=REPLACE(
-                    'browser/chrome/browser/preferences/main.dtd',
-                    'startupPage2.label',
-                    {
-                        '&brandShortName;': MESSAGE_REFERENCE('-brand-short-name')
-                    },
-                ),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/main.dtd',
-                            'startupPage2.accesskey',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('startup-user-homepage'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        COPY(
-                            'browser/chrome/browser/preferences/main.dtd',
-                            'startupUserHomePage.label',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('startup-blank-page'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        COPY(
-                            'browser/chrome/browser/preferences/main.dtd',
-                            'startupBlankPage.label',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('startup-prev-session'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        COPY(
-                            'browser/chrome/browser/preferences/main.dtd',
-                            'startupPrevSession.label',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('disable-extension'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        COPY(
-                            'browser/chrome/browser/preferences/main.dtd',
-                            'disableExtension.label',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('home-page-header'),
-                value=COPY(
-                    'browser/chrome/browser/preferences/main.dtd',
-                    'startupUserHomePage.label',
-                )
-            ),
-            FTL.Message(
-                id=FTL.Identifier('use-current-pages'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        FTL.Pattern(
-                            elements=[
-                                FTL.Placeable(
-                                    expression=FTL.SelectExpression(
-                                        expression=EXTERNAL_ARGUMENT('tabCount'),
-                                        variants=[
-                                            FTL.Variant(
-                                                key=FTL.VariantName('1'),
-                                                default=False,
-                                                value=COPY(
-                                                    'browser/chrome/browser/preferences/main.dtd',
-                                                    'useCurrentPage.label',
-                                                )
-                                            ),
-                                            FTL.Variant(
-                                                key=FTL.VariantName('other'),
-                                                default=True,
-                                                value=COPY(
-                                                    'browser/chrome/browser/preferences/main.dtd',
-                                                    'useMultiple.label',
-                                                )
-                                            )
-                                        ]
-                                    )
-                                )
-                            ]
-                        )
-                    ),
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/main.dtd',
-                            'useCurrentPage.accesskey',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('choose-bookmark'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        COPY(
-                            'browser/chrome/browser/preferences/main.dtd',
-                            'chooseBookmark.label',
-                        )
-                    ),
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/main.dtd',
-                            'chooseBookmark.accesskey',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('restore-default'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        COPY(
-                            'browser/chrome/browser/preferences/main.dtd',
-                            'restoreDefault.label',
-                        )
-                    ),
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/main.dtd',
-                            'restoreDefault.accesskey',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('tabs-group-header'),
-                value=COPY(
-                    'browser/chrome/browser/preferences/tabs.dtd',
-                    'tabsGroup.label',
-                )
-            ),
-            FTL.Message(
-                id=FTL.Identifier('ctrl-tab-recently-used-order'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        COPY(
-                            'browser/chrome/browser/preferences/tabs.dtd',
-                            'ctrlTabRecentlyUsedOrder.label',
-                        )
-                    ),
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/tabs.dtd',
-                            'ctrlTabRecentlyUsedOrder.accesskey',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('open-new-link-as-tabs'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        COPY(
-                            'browser/chrome/browser/preferences/tabs.dtd',
-                            'newWindowsAsTabs3.label',
-                        )
-                    ),
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/tabs.dtd',
-                            'newWindowsAsTabs3.accesskey',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('warn-on-close-multiple-tabs'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        COPY(
-                            'browser/chrome/browser/preferences/tabs.dtd',
-                            'warnOnCloseMultipleTabs.label',
-                        )
-                    ),
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/tabs.dtd',
-                            'warnOnCloseMultipleTabs.accesskey',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('warn-on-open-many-tabs'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        REPLACE(
-                            'browser/chrome/browser/preferences/tabs.dtd',
-                            'warnOnOpenManyTabs.label',
-                            {
-                                '&brandShortName;': MESSAGE_REFERENCE('-brand-short-name')
-                            },
-                        )
-                    ),
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/tabs.dtd',
-                            'warnOnOpenManyTabs.accesskey',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('switch-links-to-new-tabs'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        COPY(
-                            'browser/chrome/browser/preferences/tabs.dtd',
-                            'switchLinksToNewTabs.label',
-                        )
-                    ),
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/tabs.dtd',
-                            'switchLinksToNewTabs.accesskey',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('show-tabs-in-taskbar'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        COPY(
-                            'browser/chrome/browser/preferences/tabs.dtd',
-                            'showTabsInTaskbar.label',
-                        )
-                    ),
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/tabs.dtd',
-                            'showTabsInTaskbar.accesskey',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('browser-containers-enabled'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        COPY(
-                            'browser/chrome/browser/preferences/privacy.dtd',
-                            'browserContainersEnabled.label',
-                        )
-                    ),
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/privacy.dtd',
-                            'browserContainersEnabled.accesskey',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('browser-containers-learn-more'),
-                value=COPY(
-                    'browser/chrome/browser/preferences/privacy.dtd',
-                    'browserContainersLearnMore.label',
-                )
-            ),
-            FTL.Message(
-                id=FTL.Identifier('browser-containers-settings'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        COPY(
-                            'browser/chrome/browser/preferences/privacy.dtd',
-                            'browserContainersSettings.label'
-                        )
-                    ),
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/privacy.dtd',
-                            'browserContainersSettings.accesskey'
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('containers-disable-alert-title'),
-                value=COPY(
-                    'browser/chrome/browser/preferences/preferences.properties',
-                    'disableContainersAlertTitle',
-                )
-            ),
-            FTL.Message(
-                id=FTL.Identifier('containers-disable-alert-desc'),
-                value=PLURALS(
-                    'browser/chrome/browser/preferences/preferences.properties',
-                    'disableContainersMsg',
-                    EXTERNAL_ARGUMENT('tabCount'),
-                    lambda text: REPLACE_IN_TEXT(
-                        text,
-                        {
-                            '#S': EXTERNAL_ARGUMENT('tabCount')
-                        }
-                    )
-                )
-            ),
-            FTL.Message(
-                id=FTL.Identifier('containers-disable-alert-ok-button'),
-                value=PLURALS(
-                    'browser/chrome/browser/preferences/preferences.properties',
-                    'disableContainersOkButton',
-                    EXTERNAL_ARGUMENT('tabCount'),
-                    lambda text: REPLACE_IN_TEXT(
-                        text,
-                        {
-                            '#S': EXTERNAL_ARGUMENT('tabCount')
-                        }
-                    )
-                )
-            ),
-            FTL.Message(
-                id=FTL.Identifier('containers-disable-alert-cancel-button'),
-                value=COPY(
-                    'browser/chrome/browser/preferences/preferences.properties',
-                    'disableContainersButton2',
-                )
-            ),
-            FTL.Message(
-                id=FTL.Identifier('language-and-appearance-header'),
-                value=COPY(
-                    'browser/chrome/browser/preferences/preferences.dtd',
-                    'languageAndAppearance.label',
-                )
-            ),
-            FTL.Message(
-                id=FTL.Identifier('fonts-and-colors-header'),
-                value=COPY(
-                    'browser/chrome/browser/preferences/content.dtd',
-                    'fontsAndColors.label',
-                )
-            ),
-            FTL.Message(
-                id=FTL.Identifier('default-font'),
-                value=COPY(
-                    'browser/chrome/browser/preferences/content.dtd',
-                    'defaultFont2.label',
-                ),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/content.dtd',
-                            'defaultFont2.accesskey',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('default-font-size'),
-                value=COPY(
-                    'browser/chrome/browser/preferences/content.dtd',
-                    'defaultSize2.label',
-                ),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/content.dtd',
-                            'defaultSize2.accesskey',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('advanced-fonts'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        COPY(
-                            'browser/chrome/browser/preferences/content.dtd',
-                            'advancedFonts.label',
-                        )
-                    ),
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/content.dtd',
-                            'advancedFonts.accesskey',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('colors-settings'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        COPY(
-                            'browser/chrome/browser/preferences/content.dtd',
-                            'colors.label',
-                        )
-                    ),
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/content.dtd',
-                            'colors.accesskey',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('language-header'),
-                value=COPY(
-                    'browser/chrome/browser/preferences/content.dtd',
-                    'language2.label',
-                )
-            ),
-            FTL.Message(
-                id=FTL.Identifier('choose-language-description'),
-                value=COPY(
-                    'browser/chrome/browser/preferences/content.dtd',
-                    'chooseLanguage.label',
-                )
-            ),
-            FTL.Message(
-                id=FTL.Identifier('choose-button'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        COPY(
-                            'browser/chrome/browser/preferences/content.dtd',
-                            'chooseButton.label',
-                        )
-                    ),
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/content.dtd',
-                            'chooseButton.accesskey',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('translate-web-pages'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        COPY(
-                            'browser/chrome/browser/preferences/content.dtd',
-                            'translateWebPages.label',
-                        )
-                    ),
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/content.dtd',
-                            'translateWebPages.accesskey',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('translate-exceptions'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        COPY(
-                            'browser/chrome/browser/preferences/content.dtd',
-                            'translateExceptions.label',
-                        )
-                    ),
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/content.dtd',
-                            'translateExceptions.accesskey',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('check-user-spelling'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        COPY(
-                            'browser/chrome/browser/preferences/advanced.dtd',
-                            'checkUserSpelling.label',
-                        )
-                    ),
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/advanced.dtd',
-                            'checkUserSpelling.accesskey',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('files-and-applications-title'),
-                value=COPY(
-                    'browser/chrome/browser/preferences/preferences.dtd',
-                    'filesAndApplications.label',
-                )
-            ),
-            FTL.Message(
-                id=FTL.Identifier('download-header'),
-                value=COPY(
-                    'browser/chrome/browser/preferences/main.dtd',
-                    'downloads.label',
-                )
-            ),
-            FTL.Message(
-                id=FTL.Identifier('download-save-to'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        COPY(
-                            'browser/chrome/browser/preferences/main.dtd',
-                            'saveTo.label',
-                        )
-                    ),
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/main.dtd',
-                            'saveTo.accesskey',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('download-choose-folder'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        FTL.Pattern(
-                            elements=[
-                                FTL.Placeable(
-                                    expression=FTL.SelectExpression(
-                                        expression=FTL.CallExpression(
-                                            callee=FTL.Identifier('PLATFORM')
-                                        ),
-                                        variants=[
-                                            FTL.Variant(
-                                                key=FTL.VariantName('macos'),
-                                                default=False,
-                                                value=COPY(
-                                                    'browser/chrome/browser/preferences/main.dtd',
-                                                    'chooseFolderMac.label'
-                                                )
-                                            ),
-                                            FTL.Variant(
-                                                key=FTL.VariantName('other'),
-                                                default=True,
-                                                value=COPY(
-                                                    'browser/chrome/browser/preferences/main.dtd',
-                                                    'chooseFolderWin.label'
-                                                )
-                                            )
-                                        ]
-                                    )
-                                )
-                            ]
-                        )
-                    ),
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        FTL.Pattern(
-                            elements=[
-                                FTL.Placeable(
-                                    expression=FTL.SelectExpression(
-                                        expression=FTL.CallExpression(
-                                            callee=FTL.Identifier('PLATFORM')
-                                        ),
-                                        variants=[
-                                            FTL.Variant(
-                                                key=FTL.VariantName('macos'),
-                                                default=False,
-                                                value=COPY(
-                                                    'browser/chrome/browser/preferences/main.dtd',
-                                                    'chooseFolderMac.accesskey'
-                                                )
-                                            ),
-                                            FTL.Variant(
-                                                key=FTL.VariantName('other'),
-                                                default=True,
-                                                value=COPY(
-                                                    'browser/chrome/browser/preferences/main.dtd',
-                                                    'chooseFolderWin.accesskey'
-                                                )
-                                            )
-                                        ]
-                                    )
-                                )
-                            ]
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('download-always-ask-where'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        COPY(
-                            'browser/chrome/browser/preferences/main.dtd',
-                            'alwaysAskWhere.label'
-                        )
-                    ),
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/main.dtd',
-                            'alwaysAskWhere.accesskey'
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('applications-header'),
-                value=COPY(
-                    'browser/chrome/browser/preferences/applications.dtd',
-                    'applications.label',
-                )
-            ),
-            FTL.Message(
-                id=FTL.Identifier('applications-description'),
-                value=REPLACE(
-                    'browser/chrome/browser/preferences/applications.dtd',
-                    'applications.description',
-                    {
-                        '&brandShortName;': MESSAGE_REFERENCE('-brand-short-name')
-                    },
-                )
-            ),
-            FTL.Message(
-                id=FTL.Identifier('applications-filter'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('placeholder'),
-                        COPY(
-                            'browser/chrome/browser/preferences/applications.dtd',
-                            'filter2.emptytext',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('applications-type-column'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        COPY(
-                            'browser/chrome/browser/preferences/applications.dtd',
-                            'typeColumn.label',
-                        )
-                    ),
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/applications.dtd',
-                            'typeColumn.accesskey',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('applications-action-column'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        COPY(
-                            'browser/chrome/browser/preferences/applications.dtd',
-                            'actionColumn2.label',
-                        )
-                    ),
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/applications.dtd',
-                            'actionColumn2.accesskey',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('drm-content-header'),
-                value=COPY(
-                    'browser/chrome/browser/preferences/content.dtd',
-                    'drmContent2.label',
-                )
-            ),
-            FTL.Message(
-                id=FTL.Identifier('play-drm-content'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        COPY(
-                            'browser/chrome/browser/preferences/content.dtd',
-                            'playDRMContent2.label',
-                        )
-                    ),
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/content.dtd',
-                            'playDRMContent2.accesskey',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('play-drm-content-learn-more'),
-                value=COPY(
-                    'browser/chrome/browser/preferences/content.dtd',
-                    'playDRMContent.learnMore.label',
-                )
-            ),
-            FTL.Message(
-                id=FTL.Identifier('update-application-title'),
-                value=REPLACE(
-                    'browser/chrome/browser/preferences/advanced.dtd',
-                    'updateApplication.label',
-                    {
-                        '&brandShortName;': MESSAGE_REFERENCE('-brand-short-name')
-                    },
-                )
-            ),
-            FTL.Message(
-                id=FTL.Identifier('update-application-description'),
-                value=REPLACE(
-                    'browser/chrome/browser/preferences/advanced.dtd',
-                    'updateApplicationDescription.label',
-                    {
-                        '&brandShortName;': MESSAGE_REFERENCE('-brand-short-name')
-                    },
-                )
-            ),
-            FTL.Message(
-                id=FTL.Identifier('update-application-info'),
-                value=CONCAT(
-                    COPY(
-                        'browser/chrome/browser/preferences/advanced.dtd',
-                        'updateApplication.version.pre'
-                    ),
-                    EXTERNAL_ARGUMENT('version'),
-                    COPY(
-                        'browser/chrome/browser/preferences/advanced.dtd',
-                        'updateApplication.version.post'
-                    ),
-                    FTL.TextElement(' <a>'),
-                    COPY(
-                        'browser/chrome/browser/aboutDialog.dtd',
-                        'releaseNotes.link',
-                    ),
-                    FTL.TextElement('</a>'),
-                ),
-            ),
-            FTL.Message(
-                id=FTL.Identifier('update-history'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        COPY(
-                            'browser/chrome/browser/preferences/advanced.dtd',
-                            'updateHistory2.label',
-                        )
-                    ),
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/advanced.dtd',
-                            'updateHistory2.accesskey',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('update-application-allow-description'),
-                value=REPLACE(
-                    'browser/chrome/browser/preferences/advanced.dtd',
-                    'updateApplication.description',
-                    {
-                        '&brandShortName;': MESSAGE_REFERENCE('-brand-short-name')
-                    },
-                )
-            ),
-            FTL.Message(
-                id=FTL.Identifier('update-application-auto'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        COPY(
-                            'browser/chrome/browser/preferences/advanced.dtd',
-                            'updateAuto3.label',
-                        )
-                    ),
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/advanced.dtd',
-                            'updateAuto3.accesskey',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('update-application-check-choose'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        COPY(
-                            'browser/chrome/browser/preferences/advanced.dtd',
-                            'updateCheckChoose2.label',
-                        )
-                    ),
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/advanced.dtd',
-                            'updateCheckChoose2.accesskey',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('update-application-manual'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        COPY(
-                            'browser/chrome/browser/preferences/advanced.dtd',
-                            'updateManual2.label',
-                        )
-                    ),
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/advanced.dtd',
-                            'updateManual2.accesskey',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('update-application-use-service'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        COPY(
-                            'browser/chrome/browser/preferences/advanced.dtd',
-                            'useService.label',
-                        )
-                    ),
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/advanced.dtd',
-                            'useService.accesskey',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('update-enable-search-update'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        COPY(
-                            'browser/chrome/browser/preferences/advanced.dtd',
-                            'enableSearchUpdate2.label',
-                        )
-                    ),
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/advanced.dtd',
-                            'enableSearchUpdate2.accesskey',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('performance-title'),
-                value=COPY(
-                    'browser/chrome/browser/preferences/advanced.dtd',
-                    'performance.label',
-                )
-            ),
-            FTL.Message(
-                id=FTL.Identifier('performance-use-recommended-settings-checkbox'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        COPY(
-                            'browser/chrome/browser/preferences/advanced.dtd',
-                            'useRecommendedPerformanceSettings2.label',
-                        )
-                    ),
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/advanced.dtd',
-                            'useRecommendedPerformanceSettings2.accesskey',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('performance-use-recommended-settings-desc'),
-                value=COPY(
-                    'browser/chrome/browser/preferences/advanced.dtd',
-                    'useRecommendedPerformanceSettings2.description',
-                )
-            ),
-            FTL.Message(
-                id=FTL.Identifier('performance-settings-learn-more'),
-                value=COPY(
-                    'browser/chrome/browser/preferences/advanced.dtd',
-                    'performanceSettingsLearnMore.label',
-                )
-            ),
-            FTL.Message(
-                id=FTL.Identifier('performance-allow-hw-accel'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        COPY(
-                            'browser/chrome/browser/preferences/advanced.dtd',
-                            'allowHWAccel.label',
-                        )
-                    ),
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/advanced.dtd',
-                            'allowHWAccel.accesskey',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('performance-limit-content-process-option'),
-                value=COPY(
-                    'browser/chrome/browser/preferences/advanced.dtd',
-                    'limitContentProcessOption.label',
-                ),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/advanced.dtd',
-                            'limitContentProcessOption.accesskey',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('performance-limit-content-process-enabled-desc'),
-                value=COPY(
-                    'browser/chrome/browser/preferences/advanced.dtd',
-                    'limitContentProcessOption.description',
-                )
-            ),
-            FTL.Message(
-                id=FTL.Identifier('performance-limit-content-process-disabled-desc'),
-                value=CONCAT(
-                    REPLACE(
-                        'browser/chrome/browser/preferences/advanced.dtd',
-                        'limitContentProcessOption.disabledDescription',
-                        {
-                            '&brandShortName;': MESSAGE_REFERENCE('-brand-short-name')
-                        },
-                    ),
-                    FTL.TextElement(' <a>'),
-                    COPY(
-                        'browser/chrome/browser/preferences/advanced.dtd',
-                        'limitContentProcessOption.disabledDescriptionLink',
-                    ),
-                    FTL.TextElement('</a>'),
-                )
-            ),
-            FTL.Message(
-                id=FTL.Identifier('performance-default-content-process-count'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        REPLACE(
-                            'browser/chrome/browser/preferences/preferences.properties',
-                            'defaultContentProcessCount',
-                            {
-                                '%S': EXTERNAL_ARGUMENT('num')
-                            },
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('browsing-title'),
-                value=COPY(
-                    'browser/chrome/browser/preferences/advanced.dtd',
-                    'browsing.label',
-                )
-            ),
-            FTL.Message(
-                id=FTL.Identifier('browsing-use-autoscroll'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        COPY(
-                            'browser/chrome/browser/preferences/advanced.dtd',
-                            'useAutoScroll.label',
-                        )
-                    ),
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/advanced.dtd',
-                            'useAutoScroll.accesskey',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('browsing-use-smooth-scrolling'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        COPY(
-                            'browser/chrome/browser/preferences/advanced.dtd',
-                            'useSmoothScrolling.label',
-                        )
-                    ),
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/advanced.dtd',
-                            'useSmoothScrolling.accesskey',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('browsing-use-onscreen-keyboard'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        COPY(
-                            'browser/chrome/browser/preferences/advanced.dtd',
-                            'useOnScreenKeyboard.label',
-                        )
-                    ),
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/advanced.dtd',
-                            'useOnScreenKeyboard.accesskey',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('browsing-use-cursor-navigation'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        COPY(
-                            'browser/chrome/browser/preferences/advanced.dtd',
-                            'useCursorNavigation.label',
-                        )
-                    ),
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/advanced.dtd',
-                            'useCursorNavigation.accesskey',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('browsing-search-on-start-typing'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        COPY(
-                            'browser/chrome/browser/preferences/advanced.dtd',
-                            'searchOnStartTyping.label',
-                        )
-                    ),
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/advanced.dtd',
-                            'searchOnStartTyping.accesskey',
-                        )
-                    ),
-                ],
-            ),
-            FTL.Message(
-                id=FTL.Identifier('network-proxy-title'),
-                value=COPY(
-                    'browser/chrome/browser/preferences/advanced.dtd',
-                    'networkProxy.label',
-                )
-            ),
-            FTL.Message(
-                id=FTL.Identifier('network-proxy-connection-learn-more'),
-                value=COPY(
-                    'browser/chrome/browser/preferences/advanced.dtd',
-                    'connectionSettingsLearnMore.label',
-                )
-            ),
-            FTL.Message(
-                id=FTL.Identifier('network-proxy-connection-settings'),
-                attributes=[
-                    FTL.Attribute(
-                        FTL.Identifier('label'),
-                        COPY(
-                            'browser/chrome/browser/preferences/advanced.dtd',
-                            'connectionSettings.label',
-                        )
-                    ),
-                    FTL.Attribute(
-                        FTL.Identifier('accesskey'),
-                        COPY(
-                            'browser/chrome/browser/preferences/advanced.dtd',
-                            'connectionSettings.accesskey',
-                        )
-                    ),
-                ],
-            ),
-        ]
-    )