author | Zibi Braniecki <zbraniecki@mozilla.com> |
Tue, 27 Feb 2018 21:20:54 -0800 | |
changeset 760763 | 6d6efe43a3fd8f44e0dbc8b8fa1b101da94d17d1 |
parent 760740 | 95057e639b064d56f6239873624ccf36113abf20 |
push id | 100753 |
push user | bmo:gandalf@aviary.pl |
push date | Wed, 28 Feb 2018 05:27:53 +0000 |
reviewers | flod, jaws |
bugs | 1435912 |
milestone | 60.0a1 |
--- a/browser/components/preferences/handlers.xml +++ b/browser/components/preferences/handlers.xml @@ -2,20 +2,18 @@ <!-- 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,17 +493,21 @@ 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.getElementById("version").textContent = version; + document.l10n.setAttributes( + document.getElementById("updateAppInfo"), + "update-application-info", + { 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; @@ -761,33 +765,42 @@ 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 isLocked = Preferences.get(element.getAttribute("preference")).locked; - element.disabled = isLocked || isControlled; + 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; }); } if (homePref.locked) { // An extension can't control these settings if they're locked. hideControllingExtension(HOMEPAGE_OVERRIDE_KEY); - setInputDisabledStates(false); + setInputDisabledStates.call(this, false); } else { // Asynchronously update the extension controlled UI. handleControllingExtension( PREF_SETTING_TYPE, HOMEPAGE_OVERRIDE_KEY, "extensionControlled.homepage_override2") - .then(setInputDisabledStates); + .then(setInputDisabledStates.bind(this)); } // 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; @@ -879,45 +892,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(); - if (tabs.length > 1) - useCurrent.label = useCurrent.getAttribute("label2"); - else - useCurrent.label = useCurrent.getAttribute("label1"); + const tabCount = tabs.length; + + document.l10n.setAttributes(useCurrent, "use-current-pages", { tabCount }); // 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 = !tabs.length; + useCurrent.disabled = tabCount < 1; }, _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 */ @@ -1125,37 +1138,39 @@ var gMainPane = { // Remove the old content from the description. while (description.firstChild) { description.firstChild.remove(); } description.appendChild(fragment); }, - checkBrowserContainers(event) { + async 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 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 [ + 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 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); @@ -1344,39 +1359,25 @@ 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}"]`); - // 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.l10n.setAttributes( + contentProcessCount, + "performance-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">&paneGeneral.title;</label> + <label class="header-name" flex="1" data-l10n-id="pane-general-title"/> </hbox> <!-- Startup --> <groupbox id="startupGroup" data-category="paneGeneral" hidden="true"> - <caption><label>&startup.label;</label></caption> + <caption><label data-l10n-id="startup-header"/></caption> #ifdef MOZ_DEV_EDITION <vbox id="separateProfileBox"> <checkbox id="separateProfileMode" - label="&separateProfileMode.label;"/> - <hbox id="sync-dev-edition-root" align="center" class="indent"> - <label id="useFirefoxSync">&useFirefoxSync.label;</label> + 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"/> <deck id="getStarted"> - <label class="text-link">&getStarted.notloggedin.label;</label> - <label class="text-link">&getStarted.configured.label;</label> + <label class="text-link" data-l10n-id="get-started-not-logged-in"/> + <label class="text-link" data-l10n-id="get-started-configured"/> </deck> </hbox> </vbox> #endif #ifdef HAVE_SHELL_SERVICE <vbox id="defaultBrowserBox"> <checkbox id="alwaysCheckDefault" preference="browser.shell.checkDefaultBrowser" - label="&alwaysCheckDefault2.label;" accesskey="&alwaysCheckDefault2.accesskey;"/> + data-l10n-id="always-check-default"/> <deck id="setDefaultPane"> <hbox align="center" class="indent"> <image class="face-sad"/> - <label id="isNotDefaultLabel" flex="1">&isNotDefault.label;</label> + <label id="isNotDefaultLabel" flex="1" data-l10n-id="is-not-default"/> <button id="setDefaultButton" class="accessory-button" - label="&setAsMyDefaultBrowser3.label;" accesskey="&setAsMyDefaultBrowser3.accesskey;" + data-l10n-id="set-as-my-default-browser" preference="pref.general.disable_button.default_browser"/> </hbox> <hbox align="center" class="indent"> <image class="face-smile"/> - <label id="isDefaultLabel" flex="1">&isDefault.label;</label> + <label id="isDefaultLabel" flex="1" data-l10n-id="is-default"/> </hbox> </deck> </vbox> #endif <vbox id="startupPageBox"> - <label accesskey="&startupPage2.accesskey;" - control="browserStartupPage">&startupPage2.label;</label> + <label data-l10n-id="startup-page" + control="browserStartupPage"/> <radiogroup id="browserStartupPage" preference="browser.startup.page"> - <radio label="&startupUserHomePage.label;" + <radio data-l10n-id="startup-user-homepage" value="1" id="browserStartupHomePage"/> - <radio label="&startupBlankPage.label;" + <radio data-l10n-id="startup-blank-page" value="0" id="browserStartupBlank"/> - <radio label="&startupPrevSession.label;" + <radio data-l10n-id="startup-prev-session" 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" - label="&disableExtension.label;" /> + data-l10n-id="disable-extension" /> </hbox> </vbox> </groupbox> <!-- Home Page --> <groupbox id="homepageGroup" data-category="paneGeneral" hidden="true"> - <caption><label>&homepage2.label;</label></caption> + <caption><label data-l10n-id="home-page-header"/></caption> <hbox id="browserHomePageExtensionContent" align="center" hidden="true"> <description control="disableHomePageExtension" flex="1" /> <button id="disableHomePageExtension" class="extension-controlled-button accessory-button" - label="&disableExtension.label;" /> + data-l10n-id="disable-extension" /> </hbox> <vbox> <textbox id="browserHomePage" class="uri-element" type="autocomplete" autocompletesearch="unifiedcomplete" onsyncfrompreference="return gMainPane.syncFromHomePref();" @@ -111,122 +111,109 @@ placeholder="&abouthome.pageTitle;" preference="browser.startup.homepage"/> </vbox> <hbox class="homepage-buttons"> <button id="useCurrent" flex="1" class="homepage-button" - label="" - accesskey="&useCurrentPage.accesskey;" - label1="&useCurrentPage.label;" - label2="&useMultiple.label;" + data-l10n-id="use-current-pages" + data-l10n-args='{"tabCount": 0}' + disabled="true" preference="pref.browser.homepage.disable_button.current_page"/> <button id="useBookmark" flex="1" class="homepage-button" - label="&chooseBookmark.label;" - accesskey="&chooseBookmark.accesskey;" + data-l10n-id="choose-bookmark" preference="pref.browser.homepage.disable_button.bookmark_page" searchkeywords="&selectBookmark.title; &selectBookmark.label;"/> <button id="restoreDefaultHomePage" flex="1" class="homepage-button" - label="&restoreDefault.label;" - accesskey="&restoreDefault.accesskey;" + data-l10n-id="restore-default" preference="pref.browser.homepage.disable_button.restore_default"/> </hbox> </groupbox> <!-- Tab preferences --> <groupbox data-category="paneGeneral" hidden="true"> - <caption><label>&tabsGroup.label;</label></caption> + <caption><label data-l10n-id="tabs-group-header"/></caption> - <checkbox id="ctrlTabRecentlyUsedOrder" label="&ctrlTabRecentlyUsedOrder.label;" - accesskey="&ctrlTabRecentlyUsedOrder.accesskey;" + <checkbox id="ctrlTabRecentlyUsedOrder" data-l10n-id="ctrl-tab-recently-used-order" preference="browser.ctrlTab.previews"/> - <checkbox id="linkTargeting" label="&newWindowsAsTabs3.label;" - accesskey="&newWindowsAsTabs3.accesskey;" + <checkbox id="linkTargeting" data-l10n-id="open-new-link-as-tabs" preference="browser.link.open_newwindow" onsyncfrompreference="return gMainPane.readLinkTarget();" onsynctopreference="return gMainPane.writeLinkTarget();"/> - <checkbox id="warnCloseMultiple" label="&warnOnCloseMultipleTabs.label;" - accesskey="&warnOnCloseMultipleTabs.accesskey;" + <checkbox id="warnCloseMultiple" data-l10n-id="warn-on-close-multiple-tabs" preference="browser.tabs.warnOnClose"/> - <checkbox id="warnOpenMany" label="&warnOnOpenManyTabs.label;" - accesskey="&warnOnOpenManyTabs.accesskey;" + <checkbox id="warnOpenMany" data-l10n-id="warn-on-open-many-tabs" preference="browser.tabs.warnOnOpen"/> - <checkbox id="switchToNewTabs" label="&switchLinksToNewTabs.label;" - accesskey="&switchLinksToNewTabs.accesskey;" + <checkbox id="switchToNewTabs" data-l10n-id="switch-links-to-new-tabs" preference="browser.tabs.loadInBackground"/> #ifdef XP_WIN - <checkbox id="showTabsInTaskbar" label="&showTabsInTaskbar.label;" - accesskey="&showTabsInTaskbar.accesskey;" + <checkbox id="showTabsInTaskbar" data-l10n-id="show-tabs-in-taskbar" 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" - label="&disableExtension.label;" /> + data-l10n-id="disable-extension" /> </hbox> <hbox align="center"> <checkbox id="browserContainersCheckbox" class="tail-with-learn-more" - label="&browserContainersEnabled.label;" - accesskey="&browserContainersEnabled.accesskey;" + data-l10n-id="browser-containers-enabled" preference="privacy.userContext.enabled" onsyncfrompreference="return gMainPane.readBrowserContainersCheckbox();"/> - <label id="browserContainersLearnMore" class="learnMore text-link"> - &browserContainersLearnMore.label; - </label> + <label id="browserContainersLearnMore" class="learnMore text-link" data-l10n-id="browser-containers-learn-more"/> <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" - label="&browserContainersSettings.label;" - accesskey="&browserContainersSettings.accesskey;" + data-l10n-id="browser-containers-settings" 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">&languageAndAppearance.label;</label> + <label class="header-name" flex="1" data-l10n-id="language-and-appearance-header"/> </hbox> <!-- Fonts and Colors --> <groupbox id="fontsGroup" data-category="paneGeneral" hidden="true"> - <caption><label>&fontsAndColors.label;</label></caption> + <caption><label data-l10n-id="fonts-and-colors-header"/></caption> <vbox> <hbox id="fontSettings"> <hbox align="center" flex="1"> - <label control="defaultFont" accesskey="&defaultFont2.accesskey;">&defaultFont2.label;</label> + <label control="defaultFont" data-l10n-id="default-font"/> <!-- 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" accesskey="&defaultSize2.accesskey;">&defaultSize2.label;</label> + <label id="defaultFontSizeLabel" control="defaultFontSize" data-l10n-id="default-font-size"></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"/> @@ -256,18 +243,17 @@ </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" - label="&advancedFonts.label;" - accesskey="&advancedFonts.accesskey;" + data-l10n-id="advanced-fonts" searchkeywords="&fontsDialog.title; &fonts.label; &size2.label; &proportional2.label; &serif2.label; &sans-serif2.label; &monospace2.label; &font.langGroup.latin; @@ -327,18 +313,17 @@ </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" - label="&colors.label;" - accesskey="&colors.accesskey;" + data-l10n-id="colors-settings" searchkeywords="&overrideDefaultPageColors2.label; &overrideDefaultPageColors.always.label; &overrideDefaultPageColors.auto.label; &overrideDefaultPageColors.never.label; &color; &textColor2.label; &backgroundColor2.label; &useSystemColors.label; @@ -348,192 +333,176 @@ &visitedLinkColor2.label;"/> </hbox> </hbox> </vbox> </groupbox> <!-- Languages --> <groupbox id="languagesGroup" data-category="paneGeneral" hidden="true"> - <caption><label>&language2.label;</label></caption> + <caption><label data-l10n-id="language-header"/></caption> <hbox id="languagesBox" align="center"> - <description flex="1" control="chooseLanguage">&chooseLanguage.label;</description> + <description flex="1" control="chooseLanguage" data-l10n-id="choose-language-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" - label="&chooseButton.label;" - accesskey="&chooseButton.accesskey;" + data-l10n-id="choose-button" 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" - label="&translateWebPages.label;." accesskey="&translateWebPages.accesskey;" + data-l10n-id="translate-web-pages" 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" - label="&translateExceptions.label;" - accesskey="&translateExceptions.accesskey;"/> + data-l10n-id="translate-exceptions"/> </hbox> <checkbox id="checkSpelling" - label="&checkUserSpelling.label;" - accesskey="&checkUserSpelling.accesskey;" + data-l10n-id="check-user-spelling" 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">&filesAndApplications.label;</label> + <label class="header-name" flex="1" data-l10n-id="files-and-applications-title"/> </hbox> <!--Downloads--> <groupbox id="downloadsGroup" data-category="paneGeneral" hidden="true"> - <caption><label>&downloads.label;</label></caption> + <caption><label data-l10n-id="download-header"/></caption> <radiogroup id="saveWhere" preference="browser.download.useDownloadDir" onsyncfrompreference="return gMainPane.readUseDownloadDir();"> <hbox id="saveToRow"> <radio id="saveTo" value="true" - label="&saveTo.label;" - accesskey="&saveTo.accesskey;" + data-l10n-id="download-save-to" 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" -#ifdef XP_MACOSX - accesskey="&chooseFolderMac.accesskey;" - label="&chooseFolderMac.label;" -#else - accesskey="&chooseFolderWin.accesskey;" - label="&chooseFolderWin.label;" -#endif + data-l10n-id="download-choose-folder" /> </hbox> <!-- Additional radio button added to support CloudStorage - Bug 1357171 --> <radio id="saveToCloud" value="true" hidden="true"/> <radio id="alwaysAsk" value="false" - label="&alwaysAskWhere.label;" - accesskey="&alwaysAskWhere.accesskey;"/> + data-l10n-id="download-always-ask-where"/> </radiogroup> </groupbox> <groupbox id="applicationsGroup" data-category="paneGeneral" hidden="true"> - <caption><label>&applications.label;</label></caption> - <description>&applications.description;</description> + <caption><label data-l10n-id="applications-header"/></caption> + <description data-l10n-id="applications-description"/> <textbox id="filter" flex="1" type="search" - placeholder="&filter2.emptytext;" + data-l10n-id="applications-filter" 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" label="&typeColumn.label;" value="type" - accesskey="&typeColumn.accesskey;" persist="sortDirection" + <treecol id="typeColumn" data-l10n-id="applications-type-column" value="type" + persist="sortDirection" flex="1" sortDirection="ascending"/> - <treecol id="actionColumn" label="&actionColumn2.label;" value="action" - accesskey="&actionColumn2.accesskey;" persist="sortDirection" + <treecol id="actionColumn" data-l10n-id="applications-action-column" value="action" + persist="sortDirection" flex="1"/> </listheader> </richlistbox> </groupbox> <!-- DRM Content --> <groupbox id="drmGroup" data-category="paneGeneral" data-subcategory="drm" hidden="true"> - <caption><label>&drmContent2.label;</label></caption> + <caption><label data-l10n-id="drm-content-header"/></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" label="&playDRMContent2.label;" accesskey="&playDRMContent2.accesskey;"/> - <label id="playDRMContentLink" class="learnMore text-link"> - &playDRMContent.learnMore.label; - </label> + 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"/> </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">&updateApplication.label;</label> + <label class="header-name" flex="1" data-l10n-id="update-application-title"/> </hbox> <!-- Update --> <groupbox id="updateApp" data-category="paneGeneral" hidden="true"> - <caption class="search-header" hidden="true"><label>&updateApplication.label;</label></caption> + <caption class="search-header" hidden="true"><label data-l10n-id="update-application-title"/></caption> - <label>&updateApplicationDescription.label;</label> + <label data-l10n-id="update-application-description"/> <hbox align="center"> <vbox flex="1"> - <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 id="updateAppInfo"> + <html:a id="releasenotes" class="learnMore text-link" hidden="true"/> </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" - label="&updateHistory2.label;" - accesskey="&updateHistory2.accesskey;" + data-l10n-id="update-history" 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"> @@ -625,152 +594,141 @@ accesskey="&update.updateButton.accesskey;" disabled="true"/> </hbox> </deck> </vbox> #endif #ifdef MOZ_UPDATER - <description>&updateApplication.description;</description> + <description data-l10n-id="update-application-allow-description"></description> <radiogroup id="updateRadioGroup"> <radio id="autoDesktop" value="auto" - label="&updateAuto3.label;" - accesskey="&updateAuto3.accesskey;"/> + data-l10n-id="update-application-auto"/> <radio value="checkOnly" - label="&updateCheckChoose2.label;" - accesskey="&updateCheckChoose2.accesskey;"/> + data-l10n-id="update-application-check-choose"/> <radio value="manual" - label="&updateManual2.label;" - accesskey="&updateManual2.accesskey;"/> + data-l10n-id="update-application-manual"/> </radiogroup> #ifdef MOZ_MAINTENANCE_SERVICE <checkbox id="useService" - label="&useService.label;" - accesskey="&useService.accesskey;" + data-l10n-id="update-application-use-service" preference="app.update.service.enabled"/> #endif #endif <checkbox id="enableSearchUpdate" - label="&enableSearchUpdate2.label;" - accesskey="&enableSearchUpdate2.accesskey;" + data-l10n-id="update-enable-search-update" preference="browser.search.update"/> </groupbox> <hbox id="performanceCategory" class="subcategory" hidden="true" data-category="paneGeneral"> - <label class="header-name" flex="1">&performance.label;</label> + <label class="header-name" flex="1" data-l10n-id="performance-title"/> </hbox> <!-- Performance --> <groupbox id="performanceGroup" data-category="paneGeneral" hidden="true"> - <caption class="search-header" hidden="true"><label>&performance.label;</label></caption> + <caption class="search-header" hidden="true"><label data-l10n-id="performance-title"/></caption> <hbox align="center"> <checkbox id="useRecommendedPerformanceSettings" class="tail-with-learn-more" - label="&useRecommendedPerformanceSettings2.label;" - accesskey="&useRecommendedPerformanceSettings2.accesskey;" + data-l10n-id="performance-use-recommended-settings-checkbox" preference="browser.preferences.defaultPerformanceSettings.enabled"/> - <label id="performanceSettingsLearnMore" class="learnMore text-link">&performanceSettingsLearnMore.label;</label> + <label id="performanceSettingsLearnMore" class="learnMore text-link" data-l10n-id="performance-settings-learn-more"/> </hbox> - <description class="indent tip-caption">&useRecommendedPerformanceSettings2.description;</description> + <description class="indent tip-caption" data-l10n-id="performance-use-recommended-settings-desc"/> <vbox id="performanceSettings" class="indent" hidden="true"> <checkbox id="allowHWAccel" - label="&allowHWAccel.label;" - accesskey="&allowHWAccel.accesskey;" + data-l10n-id="performance-allow-hw-accel" preference="layers.acceleration.disabled"/> <hbox align="center"> - <label id="limitContentProcess" accesskey="&limitContentProcessOption.accesskey;" control="contentProcessCount">&limitContentProcessOption.label;</label> + <label id="limitContentProcess" data-l10n-id="performance-limit-content-process-option" control="contentProcessCount"/> <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">&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> + <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> </vbox> </groupbox> <hbox id="browsingCategory" class="subcategory" hidden="true" data-category="paneGeneral"> - <label class="header-name" flex="1">&browsing.label;</label> + <label class="header-name" flex="1" data-l10n-id="browsing-title"/> </hbox> <!-- Browsing --> <groupbox id="browsingGroup" data-category="paneGeneral" hidden="true"> - <caption class="search-header" hidden="true"><label>&browsing.label;</label></caption> + <caption class="search-header" hidden="true"><label data-l10n-id="browsing-title"/></caption> <checkbox id="useAutoScroll" - label="&useAutoScroll.label;" - accesskey="&useAutoScroll.accesskey;" + data-l10n-id="browsing-use-autoscroll" preference="general.autoScroll"/> <checkbox id="useSmoothScrolling" - label="&useSmoothScrolling.label;" - accesskey="&useSmoothScrolling.accesskey;" + data-l10n-id="browsing-use-smooth-scrolling" preference="general.smoothScroll"/> #ifdef XP_WIN <checkbox id="useOnScreenKeyboard" hidden="true" - label="&useOnScreenKeyboard.label;" - accesskey="&useOnScreenKeyboard.accesskey;" + data-l10n-id="browsing-use-onscreen-keyboard" preference="ui.osk.enabled"/> #endif <checkbox id="useCursorNavigation" - label="&useCursorNavigation.label;" - accesskey="&useCursorNavigation.accesskey;" + data-l10n-id="browsing-use-cursor-navigation" preference="accessibility.browsewithcaret"/> <checkbox id="searchStartTyping" - label="&searchOnStartTyping.label;" - accesskey="&searchOnStartTyping.accesskey;" + data-l10n-id="browsing-search-on-start-typing" preference="accessibility.typeaheadfind"/> </groupbox> <hbox id="networkProxyCategory" class="subcategory" hidden="true" data-category="paneGeneral"> - <label class="header-name" flex="1">&networkProxy.label;</label> + <label class="header-name" flex="1" data-l10n-id="network-proxy-title"/> </hbox> <!-- Network Proxy--> <groupbox id="connectionGroup" data-category="paneGeneral" hidden="true"> - <caption class="search-header" hidden="true"><label>&networkProxy.label;</label></caption> + <caption class="search-header" hidden="true"><label data-l10n-id="network-proxy-title"/></caption> <hbox align="center"> <hbox align="center" flex="1"> - <description id="connectionSettingsDescription" control="connectionSettings"></description> + <description id="connectionSettingsDescription" control="connectionSettings"/> <spacer width="5"/> - <label id="connectionSettingsLearnMore" class="learnMore text-link"> - &connectionSettingsLearnMore.label; + <label id="connectionSettingsLearnMore" class="learnMore text-link" + data-l10n-id="network-proxy-connection-learn-more"> </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" - label="&connectionSettings.label;" - accesskey="&connectionSettings.accesskey;" + data-l10n-id="network-proxy-connection-settings" 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,30 +30,27 @@ <!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; @@ -63,42 +60,39 @@ %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"/>
--- a/browser/components/preferences/in-content/tests/browser_fluent.js +++ b/browser/components/preferences/in-content/tests/browser_fluent.js @@ -27,17 +27,17 @@ add_task(async function() { let doc = gBrowser.contentDocument; let win = gBrowser.contentWindow; await doc.l10n.ready; let processCountPref = win.Preferences.get("dom.ipc.processCount"); let defaultProcessCount = processCountPref.defaultValue; let [ msg ] = await doc.l10n.formatMessages([ - ["default-content-process-count", { num: defaultProcessCount }] + ["performance-default-content-process-count", { num: defaultProcessCount }] ]); let elem = doc.querySelector( `#contentProcessCount > menupopup > menuitem[value="${defaultProcessCount}"]`); Assert.deepEqual(msg, { value: null, attrs: [
deleted file mode 100644 --- a/browser/locales/en-US/browser/preferences/main.ftl +++ /dev/null @@ -1,4 +0,0 @@ -// 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,17 +5,18 @@ 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` @@ -52,8 +53,297 @@ 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,32 +1,16 @@ <!-- 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"> @@ -42,88 +26,30 @@ 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">
deleted file mode 100644 --- a/browser/locales/en-US/chrome/browser/preferences/applications.dtd +++ /dev/null @@ -1,14 +0,0 @@ -<!-- 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,47 +22,17 @@ <!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 & 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,46 +1,1 @@ -<!-- 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,15 +1,13 @@ <!-- 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,30 +202,16 @@ 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 @@ -241,19 +227,16 @@ 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,18 +83,12 @@ <!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">
deleted file mode 100644 --- a/browser/locales/en-US/chrome/browser/preferences/tabs.dtd +++ /dev/null @@ -1,22 +0,0 @@ -<!-- 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,17 +59,16 @@ 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) @@ -81,17 +80,16 @@ 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)
new file mode 100644 --- /dev/null +++ b/python/l10n/fluent_migrations/bug_1435912_preferences_general_xul.py @@ -0,0 +1,1308 @@ +# 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', + ) + ), + ], + ), + ] + )