commit c98984eee22212b4b12be660b34d47bcc0b05c5c
parent 5b48f111a19095bb5d1118530b2f059d32340b99
Author: Erik Nordin <enordin@mozilla.com>
Date: Thu, 18 Dec 2025 01:17:26 +0000
Bug 2002127 - Part 08: Implement Automatic translation default state r=fluent-reviewers,bolsson,hjones
This commit adds the default state for the "Automatic translation" section
in the Translations subpage within the about:settings UI, compatible with
the settings redesign initiative.
Differential Revision: https://phabricator.services.mozilla.com/D274225
Diffstat:
2 files changed, 212 insertions(+), 27 deletions(-)
diff --git a/browser/components/preferences/main.js b/browser/components/preferences/main.js
@@ -687,6 +687,72 @@ Preferences.addSetting({
});
Preferences.addSetting({
+ id: "translationsDownloadLanguagesFieldset",
+});
+
+Preferences.addSetting({
+ id: "translationsAutomaticTranslationFieldset",
+});
+
+Preferences.addSetting({
+ id: "translationsAlwaysTranslateLanguagesGroup",
+});
+
+Preferences.addSetting({
+ id: "translationsAlwaysTranslateLanguagesRow",
+});
+
+Preferences.addSetting({
+ id: "translationsAlwaysTranslateLanguagesSelect",
+ _value: "",
+ get() {
+ return this._value;
+ },
+ set(val, _deps, setting) {
+ const newValue = val ?? "";
+ if (this._value === newValue) {
+ return this._value;
+ }
+ this._value = newValue;
+ setting?.emit("change");
+ return this._value;
+ },
+});
+
+Preferences.addSetting({
+ id: "translationsAlwaysTranslateLanguagesNoneRow",
+});
+
+Preferences.addSetting({
+ id: "translationsNeverTranslateLanguagesNoneRow",
+});
+
+Preferences.addSetting({
+ id: "translationsNeverTranslateLanguagesGroup",
+});
+
+Preferences.addSetting({
+ id: "translationsNeverTranslateLanguagesRow",
+});
+
+Preferences.addSetting({
+ id: "translationsNeverTranslateLanguagesSelect",
+ _value: "",
+ get() {
+ return this._value;
+ },
+ set(val, _deps, setting) {
+ const newValue = val ?? "";
+ if (this._value === newValue) {
+ return this._value;
+ }
+ this._value = newValue;
+ setting?.emit("change");
+ return this._value;
+ },
+});
+
+Preferences.addSetting({
id: "translationsManageButton",
onUserClick(e) {
e.preventDefault();
@@ -3735,58 +3801,162 @@ SettingGroupManager.registerGroups({
},
moreTranslationSettings: {
inProgress: true,
- l10nId: "settings-translations-subpage-speed-up-translation-header",
- headingLevel: 2,
items: [
{
- id: "translationsDownloadLanguagesGroup",
- control: "moz-box-group",
+ id: "translationsAutomaticTranslationFieldset",
+ l10nId: "settings-translations-subpage-automatic-translation-header",
+ control: "moz-fieldset",
controlAttrs: {
- type: "list",
+ headingLevel: 2,
},
items: [
{
- id: "translationsDownloadLanguagesRow",
- l10nId: "settings-translations-subpage-download-languages-header",
- control: "moz-box-item",
+ id: "translationsAlwaysTranslateLanguagesGroup",
+ control: "moz-box-group",
controlAttrs: {
- style: "--box-label-font-weight: var(--font-weight-semibold);",
+ type: "list",
},
items: [
{
- id: "translationsDownloadLanguagesSelect",
- control: "moz-select",
+ id: "translationsAlwaysTranslateLanguagesRow",
+ l10nId: "settings-translations-subpage-always-translate-header",
+ control: "moz-box-item",
controlAttrs: {
- slot: "actions",
+ style:
+ "--box-label-font-weight: var(--font-weight-semibold);",
},
- options: [
+ items: [
{
- value: "",
- l10nId:
- "settings-translations-subpage-download-languages-select-option",
+ id: "translationsAlwaysTranslateLanguagesSelect",
+ control: "moz-select",
+ controlAttrs: {
+ slot: "actions",
+ },
+ options: [
+ {
+ value: "",
+ l10nId:
+ "settings-translations-subpage-language-select-option",
+ },
+ ],
},
],
},
{
- id: "translationsDownloadLanguagesButton",
- l10nId:
- "settings-translations-subpage-download-languages-button",
- control: "moz-button",
+ id: "translationsAlwaysTranslateLanguagesNoneRow",
+ l10nId: "settings-translations-subpage-no-languages-added",
+ control: "moz-box-item",
controlAttrs: {
- slot: "actions",
- type: "ghost",
- iconsrc: "chrome://browser/skin/downloads/downloads.svg",
+ class: "text-deemphasized",
},
},
],
},
{
- id: "translationsDownloadLanguagesNoneRow",
- l10nId: "settings-translations-subpage-no-languages-downloaded",
- control: "moz-box-item",
+ id: "translationsNeverTranslateLanguagesGroup",
+ control: "moz-box-group",
controlAttrs: {
- class: "text-deemphasized",
+ type: "list",
},
+ items: [
+ {
+ id: "translationsNeverTranslateLanguagesRow",
+ l10nId: "settings-translations-subpage-never-translate-header",
+ control: "moz-box-item",
+ controlAttrs: {
+ style:
+ "--box-label-font-weight: var(--font-weight-semibold);",
+ },
+ items: [
+ {
+ id: "translationsNeverTranslateLanguagesSelect",
+ control: "moz-select",
+ controlAttrs: {
+ slot: "actions",
+ },
+ options: [
+ {
+ value: "",
+ l10nId:
+ "settings-translations-subpage-language-select-option",
+ },
+ ],
+ },
+ ],
+ },
+ {
+ id: "translationsNeverTranslateLanguagesNoneRow",
+ l10nId: "settings-translations-subpage-no-languages-added",
+ control: "moz-box-item",
+ controlAttrs: {
+ class: "text-deemphasized",
+ },
+ },
+ ],
+ },
+ ],
+ },
+ {
+ id: "translationsDownloadLanguagesFieldset",
+ l10nId: "settings-translations-subpage-speed-up-translation-header",
+ control: "moz-fieldset",
+ controlAttrs: {
+ headingLevel: 2,
+ },
+ items: [
+ {
+ id: "translationsDownloadLanguagesGroup",
+ control: "moz-box-group",
+ controlAttrs: {
+ type: "list",
+ },
+ items: [
+ {
+ id: "translationsDownloadLanguagesRow",
+ l10nId:
+ "settings-translations-subpage-download-languages-header",
+ control: "moz-box-item",
+ controlAttrs: {
+ style:
+ "--box-label-font-weight: var(--font-weight-semibold);",
+ },
+ items: [
+ {
+ id: "translationsDownloadLanguagesSelect",
+ control: "moz-select",
+ controlAttrs: {
+ slot: "actions",
+ },
+ options: [
+ {
+ value: "",
+ l10nId:
+ "settings-translations-subpage-download-languages-select-option",
+ },
+ ],
+ },
+ {
+ id: "translationsDownloadLanguagesButton",
+ l10nId:
+ "settings-translations-subpage-download-languages-button",
+ control: "moz-button",
+ controlAttrs: {
+ slot: "actions",
+ type: "ghost",
+ iconsrc: "chrome://browser/skin/downloads/downloads.svg",
+ },
+ },
+ ],
+ },
+ {
+ id: "translationsDownloadLanguagesNoneRow",
+ l10nId: "settings-translations-subpage-no-languages-downloaded",
+ control: "moz-box-item",
+ controlAttrs: {
+ class: "text-deemphasized",
+ },
+ },
+ ],
},
],
},
diff --git a/browser/locales/en-US/browser/preferences/preferences.ftl b/browser/locales/en-US/browser/preferences/preferences.ftl
@@ -440,6 +440,18 @@ settings-translations-subpage-speed-up-translation-header =
.label = Speed up translation
.description = Download complete languages for faster translations and to translate offline.
+settings-translations-subpage-automatic-translation-header =
+ .label = Automatic translation
+
+settings-translations-subpage-always-translate-header =
+ .label = Always translate these languages
+
+settings-translations-subpage-never-translate-header =
+ .label = Never translate these languages
+
+settings-translations-subpage-language-select-option =
+ .label = Add language
+
settings-translations-subpage-download-languages-header =
.label = Download languages
@@ -453,6 +465,9 @@ settings-translations-subpage-download-languages-button =
settings-translations-subpage-no-languages-downloaded =
.label = No languages downloaded
+settings-translations-subpage-no-languages-added =
+ .label = No languages added
+
# Variables:
# $localeName (string) - Localized name of the locale to be used.
use-system-locale =