Source code
Revision control
Copy as Markdown
Other Tools
/* 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,
import { Preferences } from "chrome://global/content/preferences/Preferences.mjs";
import { SettingGroupManager } from "chrome://browser/content/preferences/config/SettingGroupManager.mjs";
function createNeverTranslateSitesDescription() {
const description = document.createElement("span");
description.dataset.l10nId =
"settings-translations-subpage-never-translate-sites-description";
for (const [iconName, iconSrc] of [
["translations-icon", "chrome://browser/skin/translations.svg"],
["settings-icon", "chrome://global/skin/icons/settings.svg"],
]) {
const icon = document.createElement("img");
icon.src = iconSrc;
icon.dataset.l10nName = iconName;
icon.style.verticalAlign = "middle";
icon.setAttribute("role", "presentation");
icon.setAttribute("width", "16");
icon.setAttribute("height", "16");
description.appendChild(icon);
}
return description;
}
Preferences.addSetting({
id: "translationsDownloadLanguagesGroup",
});
Preferences.addSetting({
id: "translationsDownloadLanguagesRow",
});
Preferences.addSetting({
id: "translationsDownloadLanguagesSelect",
});
Preferences.addSetting({
id: "translationsDownloadLanguagesButton",
});
Preferences.addSetting({
id: "translationsDownloadLanguagesNoneRow",
});
Preferences.addSetting({
id: "translationsAlwaysTranslateLanguagesGroup",
});
Preferences.addSetting({
id: "translationsAlwaysTranslateLanguagesRow",
});
Preferences.addSetting({
id: "translationsAlwaysTranslateLanguagesSelect",
});
Preferences.addSetting({
id: "translationsAlwaysTranslateLanguagesNoneRow",
});
Preferences.addSetting({
id: "translationsAlwaysTranslateLanguagesButton",
});
Preferences.addSetting({
id: "translationsNeverTranslateLanguagesNoneRow",
});
Preferences.addSetting({
id: "translationsNeverTranslateLanguagesButton",
});
Preferences.addSetting({
id: "translationsNeverTranslateLanguagesGroup",
});
Preferences.addSetting({
id: "translationsNeverTranslateLanguagesRow",
});
Preferences.addSetting({
id: "translationsNeverTranslateLanguagesSelect",
});
Preferences.addSetting({
id: "translationsNeverTranslateSitesGroup",
});
Preferences.addSetting({
id: "translationsNeverTranslateSitesRow",
});
Preferences.addSetting({
id: "translationsNeverTranslateSitesNoneRow",
});
SettingGroupManager.registerGroups({
translationsAutomaticTranslation: {
inProgress: true,
headingLevel: 2,
l10nId: "settings-translations-subpage-automatic-translation-header",
items: [
{
id: "translationsAlwaysTranslateLanguagesGroup",
control: "moz-box-group",
controlAttrs: {
type: "list",
},
items: [
{
id: "translationsAlwaysTranslateLanguagesRow",
l10nId: "settings-translations-subpage-always-translate-header",
control: "moz-box-item",
slot: "header",
controlAttrs: {
class: "box-header-bold",
},
items: [
{
id: "translationsAlwaysTranslateLanguagesSelect",
slot: "actions",
control: "moz-select",
options: [
{
value: "",
l10nId:
"settings-translations-subpage-language-select-option",
},
],
},
{
id: "translationsAlwaysTranslateLanguagesButton",
l10nId: "settings-translations-subpage-language-add-button",
control: "moz-button",
slot: "actions",
controlAttrs: {
type: "icon",
iconsrc: "chrome://global/skin/icons/plus.svg",
},
},
],
},
{
id: "translationsAlwaysTranslateLanguagesNoneRow",
l10nId: "settings-translations-subpage-no-languages-added",
control: "moz-box-item",
controlAttrs: {
class: "description-deemphasized",
},
},
],
},
{
id: "translationsNeverTranslateLanguagesGroup",
control: "moz-box-group",
controlAttrs: {
type: "list",
},
items: [
{
id: "translationsNeverTranslateLanguagesRow",
l10nId: "settings-translations-subpage-never-translate-header",
control: "moz-box-item",
slot: "header",
controlAttrs: {
class: "box-header-bold",
},
items: [
{
id: "translationsNeverTranslateLanguagesSelect",
slot: "actions",
control: "moz-select",
options: [
{
value: "",
l10nId:
"settings-translations-subpage-language-select-option",
},
],
},
{
id: "translationsNeverTranslateLanguagesButton",
l10nId: "settings-translations-subpage-language-add-button",
control: "moz-button",
slot: "actions",
controlAttrs: {
type: "icon",
iconsrc: "chrome://global/skin/icons/plus.svg",
},
},
],
},
{
id: "translationsNeverTranslateLanguagesNoneRow",
l10nId: "settings-translations-subpage-no-languages-added",
control: "moz-box-item",
controlAttrs: {
class: "description-deemphasized",
},
},
],
},
{
id: "translationsNeverTranslateSitesGroup",
control: "moz-box-group",
controlAttrs: {
type: "list",
},
items: [
{
id: "translationsNeverTranslateSitesRow",
l10nId:
"settings-translations-subpage-never-translate-sites-header",
control: "moz-box-item",
controlAttrs: {
class: "box-header-bold",
".description": createNeverTranslateSitesDescription(),
},
},
{
id: "translationsNeverTranslateSitesNoneRow",
l10nId: "settings-translations-subpage-no-sites-added",
control: "moz-box-item",
controlAttrs: {
class: "description-deemphasized",
},
},
],
},
],
},
translationsDownloadLanguages: {
inProgress: true,
headingLevel: 2,
l10nId: "settings-translations-subpage-speed-up-translation-header",
items: [
{
id: "translationsDownloadLanguagesGroup",
control: "moz-box-group",
controlAttrs: {
type: "list",
},
items: [
{
id: "translationsDownloadLanguagesRow",
l10nId: "settings-translations-subpage-download-languages-header",
control: "moz-box-item",
slot: "header",
controlAttrs: {
class: "box-header-bold",
},
items: [
{
id: "translationsDownloadLanguagesSelect",
slot: "actions",
control: "moz-select",
options: [
{
value: "",
l10nId:
"settings-translations-subpage-download-languages-select-option",
},
],
},
{
id: "translationsDownloadLanguagesButton",
l10nId:
"settings-translations-subpage-download-languages-button",
control: "moz-button",
slot: "actions",
controlAttrs: {
type: "icon",
iconsrc: "chrome://browser/skin/downloads/downloads.svg",
},
},
],
},
{
id: "translationsDownloadLanguagesNoneRow",
l10nId: "settings-translations-subpage-no-languages-downloaded",
control: "moz-box-item",
controlAttrs: {
class: "description-deemphasized",
},
},
],
},
],
},
});