mirror of
https://github.com/gorhill/uBlock.git
synced 2026-03-11 09:04:36 +00:00
[mv3] Add dashboard pane to manage custom filters
Related issue: https://github.com/uBlockOrigin/uBOL-home/issues/418
This commit is contained in:
parent
4fb4aa1b25
commit
8af80be5b2
85 changed files with 1907 additions and 94 deletions
|
|
@ -19,6 +19,10 @@
|
|||
"message": "الإعدادات",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "فلاتر مخصصة",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "تطوير",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "المناطق واللغات",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "استيراد / تصدير",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "الصق هنا فلاتر تجميلية محددة لإضافتها",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "سجل التغييرات",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "إرجاع",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "أضِف",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "استيراد وإلحاق…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Tənzimləmələr",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Develop",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Bölgələr, dillər",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Dəyişikliklər siyahısı",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Revert",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Import and append…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Налады",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Распрацоўка",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Рэгіёны, мовы",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Журнал змяненняў",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Вярнуць",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Імпартаваць ды дадаць…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Настройки",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Персонализирани филтри",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Разработка",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Региони, езици",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Импортиране / експортиране",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Поставете тук конкретни козметични филтри, които искате да добавите",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Списък с промени",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Връщане",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Добавяне",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Импортиране и добавяне…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "সেটিংস",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Develop",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "অঞ্চল, ভাষা",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "পরিবর্তনসূচি",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Revert",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Import and append…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Arventennoù",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Siloù personelaet",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Diorren",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Rannvroioù, broioù",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Enporzhiañ / Ezporzhiañ",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Eilañ amañ ar siloù kenedel resis da ouzhpennañ",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Deizlevr ar cheñchamantoù",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Nullañ",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Ouzhpennañ",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Enporzhiañ hag ouzhpennañ",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Postavke",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Razvoj",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Regije, jezici",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Dnevnik izmjena",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Vrati",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Uvezi i dodaj…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Configuració",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Filtres personalitzats",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Desenvolupament",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Regions, llengües",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Importa/Exporta",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Enganxeu aquí els filtres cosmètics que voleu afegir",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Registre de canvis",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Restaura",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Afegeix",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Importa i annexa…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Nastavení",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Vývoj",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Regionální, jazykové",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Přehled změn",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Vrátit",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Importovat a připojit…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Settings",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Develop",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Regions, languages",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Changelog",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Revert",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Import and append…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Gosodiadau",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Datblygu",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Rhanbarthau, ieithoedd",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Cofnod newidiadau",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Revert",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Import and append…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Indstillinger",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Udvikl",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Regioner, sprog",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Ændringslog",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Tilbagefør",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Importér og tilføj…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Einstellungen",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Eigene Filter",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Entwickeln",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Regionen, Sprachen",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Importieren und exportieren",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Kosmetische Filter zum Hinzufügen einfügen",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Änderungsprotokoll",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Rückgängig machen",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Hinzufügen",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Importieren und ergänzen …",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Ρυθμίσεις",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Προσαρμοσμένα φίλτρα",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Ανάπτυξη",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Περιοχές, γλώσσες",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Εισαγωγή / Εξαγωγή",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Αρχείο αλλαγών",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Επαναφορά",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Προσθήκη",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Εισαγωγή και προσθήκη…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Settings",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Develop",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Regions, languages",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Changelog",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Revert",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Import and append…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Settings",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Develop",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Regions, languages",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Change-log",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Revert",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Import and append…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Agordoj",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Develop",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Regions, languages",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Ŝanĝprotokolo",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Revert",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Import and append…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Configuración",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Filtros personalizados",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Desarrollo",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Regiones, idiomas",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Importar / Exportar",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Pega aquí los filtros cosméticos específicos a agregar",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Registro de cambios",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Revertir",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Agregar",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Importar y anexar…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Sätted",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Isetehtud filtrid",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Arendajale",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Regioonid, keeled",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Impordi/ekspordi",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Kindlate kosmeetiliste filtrite lisamiseks asetage need siia",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Muudatuste logi",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Taasta",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Lisa",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Impordi ja lisa…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Ezarpenak",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Develop",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Eskualdeak, hizkuntzak",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Aldaketen erregistroa",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Revert",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Import and append…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "تنظیمات",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Develop",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "مناطق، زبانها",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "گزارش دگرگونی",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Revert",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Import and append…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Asetukset",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Kehitys",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Alueet, kielet",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Muutoshistoria",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Palauta",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Tuo ja lisää…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Mga Setting",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Bumuo",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Mga rehiyon o wika",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Talaan ng mga pagbabago",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Ibalik",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "I-import at idagdag...",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Paramètres",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Filtres personnalisés",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Développement",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Régions, langues",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Importer / Exporter",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Coller ici les filtres cosmétiques spécifiques à ajouter",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Journal des changements",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Rétablir",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Ajouter",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Importer",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Ynstellingen",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Oanpaste filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Untwikkelje",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Gebieden, talen",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Wizigingslochboek",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Ungedien meitsje",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Ymportearje en tafoegje…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Axustes",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Filtros persoais",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Desenvolvemento",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -68,7 +72,7 @@
|
|||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"3pGroupMalware": {
|
||||
"message": "Malware protection, security",
|
||||
"message": "Protección contra malware, seguridade",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"3pGroupAnnoyances": {
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Rexións, linguas",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Importar/Exportar",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Pega aquí os filtros cosméticos a engadir",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Rexistro de cambios",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Reverter",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Engadir",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Importar e engadir…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Settings",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Develop",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Regions, languages",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Changelog",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Revert",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Import and append…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "הגדרות",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "פיתוח",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "אזורים, שפות",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "יומן שינויים",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "ביטול שינויים",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "ייבא וצרף…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "सेटिंग्स",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "विकास",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "क्षेत्र, भाषाएँ",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "परिवर्तन पत्र",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "पूर्ववत",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "इम्पोर्ट करें और जोड़ें…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Postavke",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Prilagođeni filteri",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Razvoj",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Regije, jezici",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Uvoz / Izvoz",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Ovdje zalijepite određene vizualne filtere koje želite dodati",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Popis promjena",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Poništi",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Dodaj",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Uvesti i dodati...",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Beállítások",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Saját szűrők",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Fejlesztés",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Régiók, nyelvek",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Importálás/exportálás",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Illessze be ide a hozzáadandó kozmetikai szűrőket",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Változások listája",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Visszaállítás",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Hozzáadás",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Importálás és hozzáadás…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Կարգավորումներ",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Develop",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Տարածաշրջաններ, լեզուներ",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Փոփոխությունների մատյան",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Revert",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Import and append…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Pengaturan",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Mengembangkan",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Wilayah, bahasa",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Catatan perubahan",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Kembalikan",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Impor dan tambahkan…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Impostazioni",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Filtri personalizzati",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Sviluppo",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Lingue e regioni",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Importa / Esporta",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Incolla qui i filtri cosmetici specifici da aggiungere",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Reg. modifiche",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Ritorna",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Aggiungi",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Importa e accoda…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "設定",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "開発",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "地域・言語",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "更新履歴",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "元に戻す",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "インポートと追加",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "პარამეტრები",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "შემუშავება",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "მხარეები, ენები",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "ცვლილებები",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "დაბრუნება",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "შეტანა და დამატება…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Settings",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Develop",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Regions, languages",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Changelog",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Revert",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Import and append…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "ಸಂಯೋಜನೆಗಳು",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Develop",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "ಪ್ರದೇಶಗಳು, ಭಾಷೆಗಳು\n",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "ಬದಲಾವಣೆಗಳು",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Revert",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Import and append…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "설정",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "개발자용",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "지역, 언어",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "변경 로그",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "되돌리기",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "가져오기 및 추가하기…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Nustatymai",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Develop",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Regionai, kalbos",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Pakeitimų žurnalas",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Revert",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Import and append…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Iestatījumi",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Pielāgoti atsijātāji",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Izstrādāt",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Apgabali, valodas",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Ievietot/izgūt",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Šeit ir ielīmējami noteikti kosmētiskie aizturētāji, kurus pievienot",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Izmaiņu žurnāls",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Atjaunot",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Pievienot",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Ievietot un pievienot…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Прилагодби",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Develop",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Региони, Јазици",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Промени",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Revert",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Import and append…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "ക്രമീകരണങ്ങൾ",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Develop",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "പ്രാദേശികം, ഭാഷകള്",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "ചേഞ്ച് ലോഗ്",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Revert",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Import and append…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Settings",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Develop",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Regions, languages",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Changelog",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Revert",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Import and append…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Tetapan",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Develop",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Wilayah, bahasa",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Log perubahan",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Revert",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Import and append…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Innstillinger",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Develop",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Regioner, språk",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Endringslogg",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Tilbakestill",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Importer og legg til...",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Instellingen",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Aangepaste filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Ontwikkelen",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Gebieden, talen",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Importeren / Exporteren",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Plak hier specifieke cosmetische filters om toe te voegen",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Wijzigingenlogboek",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Ongedaan maken",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Toevoegen",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Importeren en toevoegen…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Settings",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Develop",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Regions, languages",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Changelog",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Revert",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Import and append…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "ਸੈਟਿੰਗਾਂ",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Develop",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "ਖੇਤਰ, ਭਾਸ਼ਾਵਾਂ",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "ਤਬਦੀਲੀ-ਸੂਚੀ",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Revert",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Import and append…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Ustawienia",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Własne filtry",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Programowanie",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Regiony, języki",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import i eksport",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Wklej tutaj określone filtry kosmetyczne do dodania",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Informacje o wydaniu",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Przywróć",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Dodaj",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Importuj i dołącz…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Configurações",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Filtros personalizados",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Desenvolver",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Regiões, idiomas",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Importar / Exportar",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Cole filtros cosméticos específicos aqui para adicioná-los",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Notas de lançamento",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Reverter",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Adicionar",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Importar e anexar…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Definições",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Programação",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Regiões, idiomas",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Registo de alterações",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Reverter",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Importar e anexar…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Opțiuni",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Develop",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Regiuni, limbi",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Jurnal de modificări",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Revert",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Import and append…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Настройки",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Пользовательские фильтры",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Разработка",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Регионы, языки",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Импорт и экспорт",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Вставьте сюда специальные косметические фильтры для добавления",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Список изменений",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Вернуть",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Добавить",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Импортировать и добавить…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "සැකසුම්",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Develop",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "කලාපීය, භාෂා",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "වෙනස්කම් සටහන",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Revert",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Import and append…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Nastavenia",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Vlastné filtre",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Vývoj",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Regióny, jazyky",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import/export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Sem vložte špecifické kozmetické filtre, ktoré chcete pridať",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Zoznam zmien",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Vrátiť späť",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Pridať",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Importovať a pripojiť…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Settings",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Develop",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Regions, languages",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Changelog",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Revert",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Import and append…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Settings",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Develop",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Regions, languages",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Changelog",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Revert",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Import and append…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Parametrat",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Zhvillimi",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Sipas rajonit, gjuhës",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Ditari i ndryshimeve",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Rikthej",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Importoj dhe shtoj…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Подешавања",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Прилагођени филтери",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Развити",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Регионални, језички",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Увоз / извоз",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Овде налепите одређене козметичке филтере које желите додати",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Списак измена",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Врати",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Додај",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Увези и додај…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Inställningar",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Anpassade filter",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Utveckla",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Regioner, språk",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Importera / Exportera",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Här klistrar du in specifika kosmetiska filter att lägga till",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Ändringslogg",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Ångra",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Lägg till",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Importera och lägg till…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Settings",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Develop",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Regions, languages",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Changelog",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Revert",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Import and append…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Settings",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Develop",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Regions, languages",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Changelog",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Revert",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Import and append…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "ఐచ్చికాలు",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Develop",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Regions, languages",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Changelog",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Revert",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Import and append…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "การตั้งค่า",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "พัฒนา",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "ภูมิภาค, ภาษา",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "บันทึการเปลี่ยนแปลง",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "ย้อนกลับ",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "นำเข้าและต่อท้าย…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Ayarlar",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Özel filtreler",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Geliştir",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Bölgeler, diller",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "İçeri/Dışarı aktar",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Eklenmesi için kozmetik filtreleri buraya yapıştırın",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Değişiklik günlüğü",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Geri al",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Ekle",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "İçe aktar ve ekle…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Налаштування",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Розробка",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Регіони, мови",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Журнал змін",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Повернути",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Імпортувати та додати…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "ترتیبات",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Develop",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "علاقے، زبانیں۔",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "چینج لاگ",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Revert",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Import and append…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "Cài đặt",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "Phát triển",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "Khu vực, ngôn ngữ",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "Nhật ký thay đổi",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "Đặt lại",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "Nhập và thêm vào",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "设置",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "Custom filters",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "开发",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "区域、语言",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "Import / Export",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "Paste here specific cosmetic filters to add",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "更新日志",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "还原",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "Add",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "导入并添加…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@
|
|||
"message": "設定",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"customFiltersPageName": {
|
||||
"message": "自訂過濾規則",
|
||||
"description": "appears as tab name in dashboard"
|
||||
},
|
||||
"developPageName": {
|
||||
"message": "開發",
|
||||
"description": "appears as tab name in dashboard. Inspired from 'Develop' menu in Safari, see https://developer.apple.com/documentation/safari-developer-tools/develop-menu"
|
||||
|
|
@ -83,6 +87,14 @@
|
|||
"message": "地區及語言",
|
||||
"description": "Header for a ruleset section in 'Filter lists pane'"
|
||||
},
|
||||
"customFiltersImportExportLabel": {
|
||||
"message": "匯入 / 匯出",
|
||||
"description": "Text label heading the import/export area of custom filters"
|
||||
},
|
||||
"customFiltersImportTextareaPlaceholder": {
|
||||
"message": "在此貼上要新增的元素隱藏過濾規則",
|
||||
"description": "Placeholder text which describes the purpose of the textarea widget"
|
||||
},
|
||||
"aboutChangelog": {
|
||||
"message": "變更日誌",
|
||||
"description": ""
|
||||
|
|
@ -339,6 +351,10 @@
|
|||
"message": "還原",
|
||||
"description": "Text for buttons used to revert changes"
|
||||
},
|
||||
"addButton": {
|
||||
"message": "新增",
|
||||
"description": "Text for buttons used to add content"
|
||||
},
|
||||
"importAndAppendButton": {
|
||||
"message": "匯入並加入…",
|
||||
"description": "Text for buttons used to import and append content"
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@ body {
|
|||
box-sizing: border-box;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
padding: 0 var(--default-gap-xxsmall);
|
||||
}
|
||||
body > * {
|
||||
width: min(640px, 100%);
|
||||
|
|
|
|||
|
|
@ -36,6 +36,7 @@ nav > .tabButton:hover {
|
|||
|
||||
body[data-pane="settings"] #dashboard-nav .tabButton[data-pane="settings"],
|
||||
body[data-pane="rulesets"] #dashboard-nav .tabButton[data-pane="rulesets"],
|
||||
body[data-pane="filters"] #dashboard-nav .tabButton[data-pane="filters"],
|
||||
body[data-pane="develop"] #dashboard-nav .tabButton[data-pane="develop"],
|
||||
body[data-pane="about"] #dashboard-nav .tabButton[data-pane="about"] {
|
||||
background-color: var(--dashboard-tab-active-surface);
|
||||
|
|
@ -51,11 +52,18 @@ body:not([data-pane="rulesets"]) header [data-pane-related="rulesets"] {
|
|||
}
|
||||
|
||||
body > section {
|
||||
box-sizing: border-box;
|
||||
display: none;
|
||||
padding: 0 var(--default-gap-xxsmall);
|
||||
padding-bottom: 2rem;
|
||||
}
|
||||
body [data-pane-related] {
|
||||
padding: 0 var(--default-gap-xxsmall);
|
||||
}
|
||||
|
||||
body[data-pane="settings"] > section[data-pane="settings"],
|
||||
body[data-pane="rulesets"] > section[data-pane="rulesets"],
|
||||
body[data-pane="filters"] > section[data-pane="filters"],
|
||||
body[data-pane="develop"] > section[data-pane="develop"],
|
||||
body[data-pane="about"] > section[data-pane="about"] {
|
||||
display: block;
|
||||
|
|
|
|||
|
|
@ -227,9 +227,105 @@ body.noMoreRuleset .listEntry:has(> .detailbar input:not(:checked)) {
|
|||
margin-top: 0.2em;
|
||||
}
|
||||
|
||||
#templates {
|
||||
body section[data-pane="filters"] {
|
||||
padding-inline: 0;
|
||||
}
|
||||
body section[data-pane="filters"] .hostnames {
|
||||
border-bottom: 1px solid var(--border-1);
|
||||
margin-block-start: 1em;
|
||||
}
|
||||
body section[data-pane="filters"] .hostnames:empty {
|
||||
display: none;
|
||||
}
|
||||
body.busy section[data-pane="filters"] .hostnames {
|
||||
pointer-events: none;
|
||||
}
|
||||
section[data-pane="filters"] ul {
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding-inline-start: 0;
|
||||
}
|
||||
section[data-pane="filters"] .hostnames > li.hostname > div {
|
||||
background-color: var(--surface-2);
|
||||
padding-inline-start: 0.5em;
|
||||
}
|
||||
section[data-pane="filters"] ul ul {
|
||||
padding-block-end: 1em;
|
||||
padding-inline-start: 0.5em;
|
||||
}
|
||||
section[data-pane="filters"] li > div {
|
||||
display: flex;
|
||||
padding-block: 4px;
|
||||
}
|
||||
section[data-pane="filters"] li [contenteditable] {
|
||||
flex-grow: 1;
|
||||
word-break: break-all;
|
||||
}
|
||||
section[data-pane="filters"] li [contenteditable]:focus {
|
||||
background-color: var(--surface-0);
|
||||
}
|
||||
section[data-pane="filters"] li .fa-icon {
|
||||
align-self: baseline;
|
||||
font-size: calc(var(--font-size) + 2px);
|
||||
padding: 0 0.5em;
|
||||
top: 2px;
|
||||
}
|
||||
section[data-pane="filters"] li.selector:not(:first-of-type) {
|
||||
border-top: 1px dotted var(--border-1);
|
||||
}
|
||||
section[data-pane="filters"] li.hostname:not(:has(li.selector:not(.removed))) > div [contenteditable],
|
||||
section[data-pane="filters"] li.selector.removed [contenteditable] {
|
||||
color: red;
|
||||
text-decoration-line: line-through;
|
||||
}
|
||||
section[data-pane="filters"] li.hostname:not(:has(li.selector:not(.removed))) > div span.remove,
|
||||
section[data-pane="filters"] li.selector.removed > div span.remove,
|
||||
section[data-pane="filters"] li.hostname:has(li.selector:not(.removed)) > div span.undo,
|
||||
section[data-pane="filters"] li.selector:not(.removed) > div span.undo {
|
||||
display: none;
|
||||
}
|
||||
html.desktop section[data-pane="filters"] li > div:hover {
|
||||
background-color: var(--surface-0);
|
||||
}
|
||||
html.desktop section[data-pane="filters"] li > div span.fa-icon:hover {
|
||||
transform: scale(1.3);
|
||||
}
|
||||
section[data-pane="filters"] aside {
|
||||
padding: 1em 0.5em;
|
||||
}
|
||||
section[data-pane="filters"] aside details {
|
||||
padding: 0;
|
||||
}
|
||||
section[data-pane="filters"] aside summary {
|
||||
cursor: default;
|
||||
line-height: 2;
|
||||
}
|
||||
section[data-pane="filters"] aside .importFromText {
|
||||
color: var(--ink-2);
|
||||
}
|
||||
section[data-pane="filters"] aside .importFromText textarea {
|
||||
background-color: var(--surface-1);
|
||||
border: 1px solid var(--border-1);
|
||||
box-sizing: border-box;
|
||||
min-height: 6em;
|
||||
resize: vertical;
|
||||
width: 100%;
|
||||
}
|
||||
section[data-pane="filters"] aside .importFromText textarea:focus {
|
||||
background-color: var(--surface-0);
|
||||
}
|
||||
section[data-pane="filters"] aside .importFromText:has(textarea:placeholder-shown) button:has([data-i18n="addButton"]) {
|
||||
display: none;
|
||||
}
|
||||
section[data-pane="filters"] aside .importFromText:not(:has(textarea:placeholder-shown)) button:has([data-i18n="importAndAppendButton"]),
|
||||
section[data-pane="filters"] aside .importFromText:not(:has(textarea:placeholder-shown)) button:has([data-i18n="exportButton"]) {
|
||||
display: none;
|
||||
}
|
||||
section[data-pane="filters"] aside p {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 1em;
|
||||
}
|
||||
|
||||
@media (max-width: 480px) {
|
||||
#defaultFilteringMode {
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@
|
|||
<span class="logo"><img data-i18n-title="extName" src="img/ublock.svg" alt="uBO Lite"></span><!--
|
||||
--><button class="tabButton" type="button" data-pane="settings" data-i18n="settingsPageName" tabindex="0"></button><!--
|
||||
--><button class="tabButton" type="button" data-pane="rulesets" data-i18n="aboutFilterLists" tabindex="0"></button><!--
|
||||
--><button class="tabButton" type="button" data-pane="filters" data-i18n="customFiltersPageName"tabindex="0"></button><!--
|
||||
--><button class="tabButton" type="button" data-pane="develop" data-i18n="developPageName"tabindex="0"></button><!--
|
||||
--><button class="tabButton" type="button" data-pane="about" data-i18n="aboutPageName" tabindex="0"></button>
|
||||
</nav>
|
||||
|
|
@ -103,6 +104,20 @@
|
|||
<div id="lists"></div>
|
||||
</section>
|
||||
<!-- -------- -->
|
||||
<section data-pane="filters">
|
||||
<ul class="hostnames"></ul>
|
||||
<aside>
|
||||
<details class="importFromText"><summary data-i18n="customFiltersImportExportLabel">_</summary>
|
||||
<div><textarea spellcheck="false" placeholder="customFiltersImportTextareaPlaceholder"></textarea></div>
|
||||
<p>
|
||||
<button class="iconified dontshrink" type="button"><span class="fa-icon">check</span><span data-i18n="addButton">_</span><span class="hover"></span></button>
|
||||
<button class="iconified dontshrink" type="button"><span class="fa-icon">download-alt</span><span data-i18n="importAndAppendButton">_</span><span class="hover"></span></button>
|
||||
<button class="iconified dontshrink" type="button"><span class="fa-icon">upload-alt</span><span data-i18n="exportButton">_</span><span class="hover"></span></button><input type="file" accept="text/plain">
|
||||
</p>
|
||||
</details>
|
||||
</aside>
|
||||
</section>
|
||||
<!-- -------- -->
|
||||
<section data-pane="develop">
|
||||
<div>
|
||||
<p>
|
||||
|
|
@ -150,8 +165,7 @@
|
|||
</div>
|
||||
</section>
|
||||
<!-- -------- -->
|
||||
<div id="templates">
|
||||
<div class="listEntries"></div>
|
||||
<template id="listEntryLeaf">
|
||||
<div class="listEntry" data-role="leaf">
|
||||
<span class="detailbar">
|
||||
<label><span class="input checkbox"><input type="checkbox"><svg viewBox="0 0 24 24"><path d="M1.73,12.91 8.1,19.28 22.79,4.59"/></svg></span><span class="listname forinput"></span>
|
||||
|
|
@ -161,6 +175,8 @@
|
|||
</span>
|
||||
</span>
|
||||
</div>
|
||||
</template>
|
||||
<template id="listEntryNode">
|
||||
<div class="listEntry expandable" data-role="node">
|
||||
<span class="detailbar">
|
||||
<label><span class="input checkbox"><input type="checkbox"><svg viewBox="0 0 24 24"><path d="M1.73,12.91 8.1,19.28 22.79,4.59"/></svg></span><span class="listname forinput"></span></label>
|
||||
|
|
@ -168,6 +184,8 @@
|
|||
<span class="fa-icon listExpander">angle-up</span>
|
||||
</span>
|
||||
</div>
|
||||
</template>
|
||||
<template id="listEntryRoot">
|
||||
<div class="listEntry expandable" data-role="rootnode">
|
||||
<div class="detailbar">
|
||||
<h3 class="listname"></h3>
|
||||
|
|
@ -175,7 +193,18 @@
|
|||
<span class="fa-icon listExpander">angle-up</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<template id="listEntries">
|
||||
<div class="listEntries"></div>
|
||||
</template>
|
||||
<template id="customFiltersHostname">
|
||||
<li class="hostname"><div><span class="hostname" spellcheck="false" contenteditable="plaintext-only" data-pretty="" data-ugly=""></span><span class="remove fa-icon">trash-o</span><span class="undo fa-icon">undo</span></div>
|
||||
<ul class="selectors"></ul>
|
||||
</li>
|
||||
</template>
|
||||
<template id="customFiltersSelector">
|
||||
<li class="selector"><div><span class="selector" spellcheck="false" contenteditable="plaintext-only" data-pretty="" data-ugly=""></span><span class="remove fa-icon">trash-o</span><span class="undo fa-icon">undo</span></div></li>
|
||||
</template>
|
||||
<template class="io-panel">
|
||||
<span class="io-panel">
|
||||
<button id="apply" class="preferred iconified" type="button" disabled><span class="fa-icon">save</span><span data-i18n="saveButton">_</span><span class="hover"></span></button>
|
||||
|
|
@ -209,6 +238,7 @@
|
|||
<script src="js/i18n.js" type="module"></script>
|
||||
<script src="js/dashboard.js" type="module"></script>
|
||||
<script src="js/settings.js" type="module"></script>
|
||||
<script src="js/filter-manager-ui.js" type="module"></script>
|
||||
<script src="js/develop.js" type="module"></script>
|
||||
|
||||
</body>
|
||||
|
|
|
|||
|
|
@ -32,11 +32,13 @@ import {
|
|||
} from './mode-manager.js';
|
||||
|
||||
import {
|
||||
addCustomFilter,
|
||||
addCustomFilters,
|
||||
customFiltersFromHostname,
|
||||
getAllCustomFilters,
|
||||
hasCustomFilters,
|
||||
injectCustomFilters,
|
||||
removeCustomFilter,
|
||||
selectorsFromCustomFilters,
|
||||
removeAllCustomFilters,
|
||||
removeCustomFilters,
|
||||
startCustomFilters,
|
||||
terminateCustomFilters,
|
||||
} from './filter-manager.js';
|
||||
|
|
@ -475,8 +477,8 @@ function onMessage(request, sender, callback) {
|
|||
});
|
||||
return true;
|
||||
|
||||
case 'addCustomFilter':
|
||||
addCustomFilter(request.hostname, request.selector).then(modified => {
|
||||
case 'addCustomFilters':
|
||||
addCustomFilters(request.hostname, request.selectors).then(modified => {
|
||||
if ( modified !== true ) { return; }
|
||||
return registerInjectables();
|
||||
}).then(( ) => {
|
||||
|
|
@ -484,8 +486,8 @@ function onMessage(request, sender, callback) {
|
|||
})
|
||||
return true;
|
||||
|
||||
case 'removeCustomFilter':
|
||||
removeCustomFilter(request.hostname, request.selector).then(modified => {
|
||||
case 'removeCustomFilters':
|
||||
removeCustomFilters(request.hostname, request.selectors).then(modified => {
|
||||
if ( modified !== true ) { return; }
|
||||
return registerInjectables();
|
||||
}).then(( ) => {
|
||||
|
|
@ -493,12 +495,27 @@ function onMessage(request, sender, callback) {
|
|||
});
|
||||
return true;
|
||||
|
||||
case 'selectorsFromCustomFilters':
|
||||
selectorsFromCustomFilters(request.hostname).then(selectors => {
|
||||
case 'removeAllCustomFilters':
|
||||
removeAllCustomFilters(request.hostname).then(modified => {
|
||||
if ( modified !== true ) { return; }
|
||||
return registerInjectables();
|
||||
}).then(( ) => {
|
||||
callback();
|
||||
});
|
||||
return true;
|
||||
|
||||
case 'customFiltersFromHostname':
|
||||
customFiltersFromHostname(request.hostname).then(selectors => {
|
||||
callback(selectors);
|
||||
});
|
||||
return true;
|
||||
|
||||
case 'getAllCustomFilters':
|
||||
getAllCustomFilters().then(data => {
|
||||
callback(data);
|
||||
});
|
||||
return true;
|
||||
|
||||
case 'getTroubleshootingInfo':
|
||||
getTroubleshootingInfo(request.siteMode).then(info => {
|
||||
callback(info);
|
||||
|
|
|
|||
|
|
@ -28,6 +28,8 @@ import {
|
|||
sendMessage,
|
||||
webextFlavor,
|
||||
} from './ext.js';
|
||||
import { faIconsInit } from './fa-icons.js';
|
||||
import { i18n } from './i18n.js';
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
|
|
@ -66,7 +68,21 @@ tsinfoObserver.observe(qs$('[data-i18n="supportS5H"] + pre'));
|
|||
|
||||
/******************************************************************************/
|
||||
|
||||
export function nodeFromTemplate(templateId, nodeSelector) {
|
||||
const template = qs$(`template#${templateId}`);
|
||||
const fragment = template.content.cloneNode(true);
|
||||
const node = nodeSelector !== undefined
|
||||
? qs$(fragment, nodeSelector)
|
||||
: fragment.firstElementChild;
|
||||
faIconsInit(node);
|
||||
i18n.render(node);
|
||||
return node;
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
export function hashFromIterable(iter) {
|
||||
if ( Boolean(iter) === false ) { return ''; }
|
||||
return Array.from(iter).sort().join('\n');
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -517,7 +517,7 @@ class Editor {
|
|||
importFromFile() {
|
||||
const editor = this.editor;
|
||||
if ( typeof editor.importFromFile !== 'function' ) { return; }
|
||||
const input = qs$('input[type="file"]');
|
||||
const input = qs$('section[data-pane="develop"] input[type="file"]');
|
||||
input.accept = editor.ioAccept || '';
|
||||
input.onchange = ev => {
|
||||
input.onchange = null;
|
||||
|
|
@ -619,15 +619,6 @@ async function start() {
|
|||
});
|
||||
}
|
||||
|
||||
let observer = new IntersectionObserver(entries => {
|
||||
for ( const entry of entries ) {
|
||||
if ( entry.isIntersecting === false ) { continue; }
|
||||
start();
|
||||
observer.disconnect();
|
||||
observer = null;
|
||||
break;
|
||||
}
|
||||
});
|
||||
observer.observe(qs$('section[data-pane="develop"]'));
|
||||
dom.onFirstShown(start, qs$('section[data-pane="develop"]'));
|
||||
|
||||
/******************************************************************************/
|
||||
|
|
|
|||
|
|
@ -20,9 +20,9 @@
|
|||
*/
|
||||
|
||||
import { dom, qs$, qsa$ } from './dom.js';
|
||||
import { hashFromIterable, nodeFromTemplate } from './dashboard.js';
|
||||
import { i18n, i18n$ } from './i18n.js';
|
||||
import { localRead, localWrite, sendMessage } from './ext.js';
|
||||
import { hashFromIterable } from './dashboard.js';
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
|
|
@ -162,16 +162,16 @@ export function renderFilterLists(rulesetData) {
|
|||
|
||||
const createListEntry = (listDetails, depth) => {
|
||||
if ( listDetails.lists === undefined ) {
|
||||
return dom.clone('#templates .listEntry[data-role="leaf"]');
|
||||
return nodeFromTemplate('listEntryLeaf', '.listEntry');
|
||||
}
|
||||
if ( depth !== 0 ) {
|
||||
return dom.clone('#templates .listEntry[data-role="node"]');
|
||||
return nodeFromTemplate('listEntryNode', '.listEntry');
|
||||
}
|
||||
return dom.clone('#templates .listEntry[data-role="rootnode"]');
|
||||
return nodeFromTemplate('listEntryRoot', '.listEntry');
|
||||
};
|
||||
|
||||
const createListEntries = (parentkey, listTree, depth = 0) => {
|
||||
const listEntries = dom.clone('#templates .listEntries');
|
||||
const listEntries = nodeFromTemplate('listEntries', '.listEntries');
|
||||
const treeEntries = Object.entries(listTree);
|
||||
if ( depth !== 0 ) {
|
||||
const reEmojis = /\p{Emoji}+/gu;
|
||||
|
|
|
|||
486
platform/mv3/extension/js/filter-manager-ui.js
Normal file
486
platform/mv3/extension/js/filter-manager-ui.js
Normal file
|
|
@ -0,0 +1,486 @@
|
|||
/*******************************************************************************
|
||||
|
||||
uBlock Origin Lite - a comprehensive, MV3-compliant content blocker
|
||||
Copyright (C) 2025-present Raymond Hill
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see {http://www.gnu.org/licenses/}.
|
||||
|
||||
Home: https://github.com/gorhill/uBlock
|
||||
*/
|
||||
|
||||
import { browser, sendMessage } from './ext.js';
|
||||
import { dom, qs$, qsa$ } from './dom.js';
|
||||
import { nodeFromTemplate } from './dashboard.js';
|
||||
import punycode from './punycode.js';
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
const dataContainer = qs$('section[data-pane="filters"] .hostnames');
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
function isValidHostname(hostname) {
|
||||
try {
|
||||
const url = new URL(`https://${hostname}/`);
|
||||
return url.hostname === hostname;
|
||||
} catch {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
function toPrettySelector(selector) {
|
||||
if ( selector.startsWith('{') === false ) { return selector; }
|
||||
try {
|
||||
return JSON.parse(selector).raw;
|
||||
} catch {
|
||||
}
|
||||
return selector;
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
function hostnameFromNode(node) {
|
||||
const li = node.closest('li.hostname');
|
||||
if ( li === null ) { return; }
|
||||
const span = qs$(li, '.hostname[data-pretty]');
|
||||
if ( span === null ) { return; }
|
||||
return span.dataset.ugly || undefined;
|
||||
}
|
||||
|
||||
function selectorFromNode(node) {
|
||||
const li = node.closest('li.selector');
|
||||
if ( li === null ) { return; }
|
||||
const span = qs$(li, '.selector[data-pretty]');
|
||||
if ( span === null ) { return; }
|
||||
return span.dataset.ugly || undefined;
|
||||
}
|
||||
|
||||
function selectorsFromNode(node, all = false) {
|
||||
const li = node.closest('li.hostname');
|
||||
if ( li === null ) { return []; }
|
||||
const qsel = all
|
||||
? 'li.selector [contenteditable]'
|
||||
: 'li.selector:not(.removed) [contenteditable]';
|
||||
return Array.from(qsa$(li, qsel)).map(a => a.dataset.ugly);
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
async function removeSelectorsFromHostname(node) {
|
||||
const hostnameNode = node.closest('li.hostname');
|
||||
if ( hostnameNode === null ) { return; }
|
||||
const hostname = hostnameFromNode(hostnameNode);
|
||||
if ( hostname === undefined ) { return; }
|
||||
const selectors = Array.from(
|
||||
qsa$(hostnameNode, 'li.selector.removed [contenteditable]')
|
||||
).map(a => a.dataset.ugly);
|
||||
if ( selectors.length === 0 ) { return; }
|
||||
dom.cl.add(dom.body, 'busy');
|
||||
updateContentEditability();
|
||||
await sendMessage({ what: 'removeCustomFilters', hostname, selectors });
|
||||
await debounceRenderCustomFilters();
|
||||
dom.cl.remove(dom.body, 'busy');
|
||||
updateContentEditability();
|
||||
}
|
||||
|
||||
async function unremoveSelectorsFromHostname(node) {
|
||||
const hostnameNode = node.closest('li.hostname');
|
||||
if ( hostnameNode === null ) { return; }
|
||||
const hostname = hostnameFromNode(hostnameNode);
|
||||
if ( hostname === undefined ) { return; }
|
||||
const selectors = Array.from(
|
||||
qsa$(hostnameNode, 'li.selector:not(.removed) [contenteditable]')
|
||||
).map(a => a.dataset.ugly);
|
||||
if ( selectors.length === 0 ) { return; }
|
||||
dom.cl.add(dom.body, 'busy');
|
||||
updateContentEditability();
|
||||
await sendMessage({ what: 'addCustomFilters', hostname, selectors });
|
||||
await debounceRenderCustomFilters();
|
||||
dom.cl.remove(dom.body, 'busy');
|
||||
updateContentEditability();
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
function dataFromDOM() {
|
||||
const data = new Map();
|
||||
for ( const hostnameNode of qsa$('li.hostname') ) {
|
||||
const hostname = hostnameFromNode(hostnameNode);
|
||||
const selectors = [];
|
||||
for ( const selectorNode of qsa$(hostnameNode, 'li.selector') ) {
|
||||
selectors.push(selectorFromNode(selectorNode));
|
||||
}
|
||||
data.set(hostname, selectors);
|
||||
}
|
||||
return data;
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
async function renderCustomFilters() {
|
||||
const data = await sendMessage({ what: 'getAllCustomFilters' });
|
||||
if ( Boolean(data) === false ) { return; }
|
||||
const storedData = new Map(data);
|
||||
const domData = dataFromDOM();
|
||||
const hostnames = Array.from(
|
||||
new Set([
|
||||
...Array.from(storedData.keys()),
|
||||
...Array.from(domData.keys()),
|
||||
])
|
||||
).sort();
|
||||
const fragment = document.createDocumentFragment();
|
||||
for ( const hostname of hostnames ) {
|
||||
const hostnameNode = nodeFromTemplate('customFiltersHostname');
|
||||
const label = qs$(hostnameNode, 'span.hostname');
|
||||
label.dataset.ugly = hostname;
|
||||
const pretty = punycode.toUnicode(hostname);
|
||||
label.dataset.pretty = pretty;
|
||||
dom.text(label, pretty);
|
||||
const storedSelectors = new Set(storedData.get(hostname));
|
||||
const domSelectors = new Set(domData.get(hostname));
|
||||
const selectors = Array.from(
|
||||
new Set([
|
||||
...Array.from(storedSelectors),
|
||||
...Array.from(domSelectors),
|
||||
])
|
||||
).sort();
|
||||
const ulSelectors = qs$(hostnameNode, '.selectors');
|
||||
for ( const selector of selectors ) {
|
||||
const selectorNode = nodeFromTemplate('customFiltersSelector');
|
||||
const label = qs$(selectorNode, 'span.selector');
|
||||
label.dataset.ugly = selector;
|
||||
const pretty = toPrettySelector(selector);
|
||||
label.dataset.pretty = pretty;
|
||||
dom.text(label, pretty);
|
||||
if ( storedSelectors.has(selector) === false ) {
|
||||
dom.cl.add(selectorNode, 'removed');
|
||||
}
|
||||
ulSelectors.append(selectorNode);
|
||||
}
|
||||
fragment.append(hostnameNode);
|
||||
}
|
||||
dom.remove('section[data-pane="filters"] .hostnames > .hostname');
|
||||
dataContainer.prepend(fragment);
|
||||
}
|
||||
|
||||
async function debounceRenderCustomFilters() {
|
||||
let { debouncer } = debounceRenderCustomFilters;
|
||||
if ( debouncer === undefined ) {
|
||||
debouncer = debounceRenderCustomFilters.debouncer = {};
|
||||
debouncer.promise = new Promise(resolve => {
|
||||
debouncer.resolve = resolve;
|
||||
});
|
||||
}
|
||||
if ( debouncer.timer !== undefined ) {
|
||||
self.clearTimeout(debouncer.timer);
|
||||
}
|
||||
debouncer.timer = self.setTimeout(( ) => {
|
||||
const { resolve } = debounceRenderCustomFilters.debouncer;
|
||||
debounceRenderCustomFilters.debouncer = undefined;
|
||||
renderCustomFilters().then(resolve);
|
||||
}, 151);
|
||||
return debouncer.promise;
|
||||
}
|
||||
debounceRenderCustomFilters.debouncer = undefined;
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
function updateContentEditability() {
|
||||
if ( dom.cl.has(dom.body, 'busy') ) {
|
||||
dom.attr('[contenteditable]', 'contenteditable', 'false');
|
||||
return;
|
||||
}
|
||||
dom.attr('section[data-pane="filters"] li:not(.removed) [contenteditable]',
|
||||
'contenteditable',
|
||||
'plaintext-only'
|
||||
);
|
||||
// No point editing a removed hostname
|
||||
dom.attr('section[data-pane="filters"] li.hostname:not(:has(li.selector:not(.removed))) > div [contenteditable]',
|
||||
'contenteditable',
|
||||
'false'
|
||||
);
|
||||
// No point editing a removed selector
|
||||
dom.attr('section[data-pane="filters"] .selector.removed [contenteditable]',
|
||||
'contenteditable',
|
||||
'false'
|
||||
);
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
async function onHostnameChanged(target, before, after) {
|
||||
const uglyAfter = punycode.toASCII(after);
|
||||
if ( isValidHostname(uglyAfter) === false ) {
|
||||
target.textContent = before;
|
||||
return;
|
||||
}
|
||||
|
||||
dom.cl.add(dom.body, 'busy');
|
||||
updateContentEditability();
|
||||
|
||||
// Remove old hostname from storage
|
||||
await sendMessage({ what: 'removeAllCustomFilters',
|
||||
hostname: target.dataset.ugly,
|
||||
});
|
||||
|
||||
// Add selectors under new hostname to storage
|
||||
target.dataset.ugly = uglyAfter;
|
||||
target.dataset.pretty = after;
|
||||
await sendMessage({ what: 'addCustomFilters',
|
||||
hostname: hostnameFromNode(target),
|
||||
selectors: selectorsFromNode(target),
|
||||
});
|
||||
|
||||
await debounceRenderCustomFilters();
|
||||
dom.cl.remove(dom.body, 'busy');
|
||||
updateContentEditability();
|
||||
}
|
||||
|
||||
async function onSelectorChanged(target, before, after) {
|
||||
// Validate selector
|
||||
const parserModule = await import('./static-filtering-parser.js');
|
||||
const compiler = new parserModule.ExtSelectorCompiler({ nativeCssHas: true });
|
||||
const result = {};
|
||||
if ( compiler.compile(after, result) === false ) {
|
||||
target.textContent = before;
|
||||
return;
|
||||
}
|
||||
|
||||
const hostname = hostnameFromNode(target);
|
||||
|
||||
dom.cl.add(dom.body, 'busy');
|
||||
updateContentEditability();
|
||||
|
||||
// Remove old selector from storage
|
||||
await sendMessage({ what: 'removeCustomFilters',
|
||||
hostname,
|
||||
selectors: [ target.dataset.ugly ],
|
||||
});
|
||||
|
||||
// Add new selector to storage
|
||||
target.dataset.ugly = result.compiled;
|
||||
target.dataset.pretty = result.raw;
|
||||
await sendMessage({ what: 'addCustomFilters',
|
||||
hostname,
|
||||
selectors: [ result.compiled ],
|
||||
});
|
||||
|
||||
await debounceRenderCustomFilters();
|
||||
dom.cl.remove(dom.body, 'busy');
|
||||
updateContentEditability();
|
||||
}
|
||||
|
||||
function onTextChanged(target) {
|
||||
const before = target.dataset.pretty;
|
||||
const after = target.textContent.trim();
|
||||
if ( after !== target.textContent ) {
|
||||
target.textContent = after;
|
||||
}
|
||||
if ( after === before ) { return; }
|
||||
if ( after === '' ) {
|
||||
target.textContent = before;
|
||||
return;
|
||||
}
|
||||
if ( target.matches('.hostname') ) {
|
||||
onHostnameChanged(target, before, after);
|
||||
} else if ( target.matches('.selector') ) {
|
||||
onSelectorChanged(target, before, after);
|
||||
}
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
function startEdit(ev) {
|
||||
focusedEditableContent = ev.target;
|
||||
}
|
||||
|
||||
function endEdit(ev) {
|
||||
const { target } = ev;
|
||||
if ( target.textContent !== target.dataset.pretty ) {
|
||||
onTextChanged(target);
|
||||
}
|
||||
focusedEditableContent = null;
|
||||
}
|
||||
|
||||
function commitEdit(ev) {
|
||||
const { target } = ev;
|
||||
if ( target === focusedEditableContent ) {
|
||||
if ( ev.inputType === 'insertLineBreak' ) { target.blur(); }
|
||||
return;
|
||||
}
|
||||
onTextChanged(target);
|
||||
}
|
||||
|
||||
let focusedEditableContent = null;
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
function onTrashClicked(ev) {
|
||||
const { target } = ev;
|
||||
const node = target.closest('li.selector');
|
||||
if ( node ) {
|
||||
dom.cl.add(node, 'removed');
|
||||
} else {
|
||||
dom.cl.add(qsa$(target.closest('li.hostname'), 'li.selector'), 'removed');
|
||||
}
|
||||
removeSelectorsFromHostname(target);
|
||||
}
|
||||
|
||||
function onUndoClicked(ev) {
|
||||
const { target } = ev;
|
||||
const node = target.closest('li.selector');
|
||||
if ( node ) {
|
||||
dom.cl.remove(node, 'removed');
|
||||
} else {
|
||||
dom.cl.remove(qsa$(target.closest('li.hostname'), 'li.selector'), 'removed');
|
||||
}
|
||||
unremoveSelectorsFromHostname(target);
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
async function importFromText(text) {
|
||||
const parserModule = await import('./static-filtering-parser.js');
|
||||
const parser = new parserModule.AstFilterParser({ nativeCssHas: true });
|
||||
const lines = text.split(/\n/);
|
||||
const hostnameToSelectorsMap = new Map();
|
||||
|
||||
for ( const line of lines ) {
|
||||
parser.parse(line);
|
||||
if ( parser.hasError() ) { continue; }
|
||||
if ( parser.isCosmeticFilter() === false ) { continue; }
|
||||
if ( parser.hasOptions() === false ) { continue; }
|
||||
const { compiled, exception } = parser.result;
|
||||
if ( compiled === undefined ) { continue; }
|
||||
if ( exception ) { continue; }
|
||||
const hostnames = new Set();
|
||||
for ( const { hn, not, bad } of parser.getExtFilterDomainIterator() ) {
|
||||
if ( bad ) { continue; }
|
||||
if ( hn.includes('/') ) { continue; }
|
||||
if ( hn.includes('*') ) { continue; }
|
||||
if ( not ) { hostnames.length = 0; break; }
|
||||
hostnames.add(hn);
|
||||
}
|
||||
for ( const hn of hostnames ) {
|
||||
const selectors = hostnameToSelectorsMap.get(hn) || new Set();
|
||||
if ( selectors.size === 0 ) {
|
||||
hostnameToSelectorsMap.set(hn, selectors)
|
||||
}
|
||||
selectors.add(compiled);
|
||||
}
|
||||
}
|
||||
|
||||
if ( hostnameToSelectorsMap.size === 0 ) { return; }
|
||||
|
||||
dom.cl.add(dom.body, 'busy');
|
||||
updateContentEditability();
|
||||
|
||||
const promises = [];
|
||||
for ( const [ hostname, selectors ] of hostnameToSelectorsMap ) {
|
||||
promises.push(
|
||||
sendMessage({ what: 'addCustomFilters',
|
||||
hostname,
|
||||
selectors: Array.from(selectors),
|
||||
})
|
||||
);
|
||||
}
|
||||
await Promise.all(promises);
|
||||
|
||||
await debounceRenderCustomFilters();
|
||||
dom.cl.remove(dom.body, 'busy');
|
||||
updateContentEditability();
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
function importFromTextarea() {
|
||||
dom.prop('section[data-pane="filters"] details', 'open', false);
|
||||
const textarea = qs$('section[data-pane="filters"] .importFromText textarea');
|
||||
importFromText(textarea.value);
|
||||
textarea.value = '';
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
function importFromFile() {
|
||||
const input = qs$('section[data-pane="filters"] input[type="file"]');
|
||||
input.onchange = ev => {
|
||||
input.onchange = null;
|
||||
const file = ev.target.files[0];
|
||||
if ( file === undefined || file.name === '' ) { return; }
|
||||
const fr = new FileReader();
|
||||
fr.onload = ( ) => {
|
||||
if ( typeof fr.result !== 'string' ) { return; }
|
||||
importFromText(fr.result);
|
||||
};
|
||||
fr.readAsText(file);
|
||||
};
|
||||
// Reset to empty string, this will ensure a change event is properly
|
||||
// triggered if the user pick a file, even if it's the same as the last
|
||||
// one picked.
|
||||
input.value = '';
|
||||
input.click();
|
||||
dom.prop('section[data-pane="filters"] details', 'open', false);
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
function exportToFile() {
|
||||
const lines = [];
|
||||
for ( const hostnameNode of qsa$('.hostnames li.hostname') ) {
|
||||
const hostname = hostnameFromNode(hostnameNode);
|
||||
const selectors = selectorsFromNode(hostnameNode);
|
||||
for ( const selector of selectors ) {
|
||||
lines.push(`${hostname}##${toPrettySelector(selector)}`);
|
||||
}
|
||||
lines.push('');
|
||||
}
|
||||
const text = lines.join('\n').trim();
|
||||
if ( text.length === 0 ) { return; }
|
||||
const a = document.createElement('a');
|
||||
a.href = `data:text/plain;charset=utf-8,${encodeURIComponent(text + '\n')}`;
|
||||
dom.attr(a, 'download', 'my-ubol-filters.txt');
|
||||
dom.attr(a, 'type', 'text/plain');
|
||||
a.click();
|
||||
dom.prop('section[data-pane="filters"] details', 'open', false);
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
async function start() {
|
||||
renderCustomFilters();
|
||||
|
||||
dom.on(dataContainer, 'focusin', 'section[data-pane="filters"] [contenteditable]', startEdit);
|
||||
dom.on(dataContainer, 'focusout', 'section[data-pane="filters"] [contenteditable]', endEdit);
|
||||
dom.on(dataContainer, 'input', 'section[data-pane="filters"] [contenteditable]', commitEdit);
|
||||
dom.on(dataContainer, 'click', 'section[data-pane="filters"] .remove', onTrashClicked);
|
||||
dom.on(dataContainer, 'click', 'section[data-pane="filters"] .undo', onUndoClicked);
|
||||
dom.on('section[data-pane="filters"] [data-i18n="addButton"]', 'click', importFromTextarea);
|
||||
dom.on('section[data-pane="filters"] [data-i18n="importAndAppendButton"]', 'click', importFromFile);
|
||||
dom.on('section[data-pane="filters"] [data-i18n="exportButton"]', 'click', exportToFile);
|
||||
|
||||
browser.storage.local.onChanged.addListener((changes, area) => {
|
||||
if ( area !== undefined && area !== 'local' ) { return; }
|
||||
if ( Object.keys(changes).some(a => a.startsWith('site.')) ) {
|
||||
debounceRenderCustomFilters();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
// Update pane on-demand
|
||||
dom.onFirstShown(start, qs$('section[data-pane="filters"]'));
|
||||
|
|
@ -38,15 +38,41 @@ import { ubolErr } from './debug.js';
|
|||
|
||||
/******************************************************************************/
|
||||
|
||||
const perSitePendingIO = new Map();
|
||||
async function flushWrites() {
|
||||
while ( pendingWrites.length !== 0 ) {
|
||||
const promises = pendingWrites;
|
||||
pendingWrites.length = 0;
|
||||
await Promise.all(promises);
|
||||
}
|
||||
}
|
||||
|
||||
async function keysFromStorage() {
|
||||
await flushWrites();
|
||||
return localKeys();
|
||||
}
|
||||
|
||||
async function readFromStorage(key) {
|
||||
await flushWrites();
|
||||
return localRead(key);
|
||||
}
|
||||
|
||||
async function writeToStorage(key, value) {
|
||||
pendingWrites.push(localWrite(key, value));
|
||||
}
|
||||
|
||||
async function removeFromStorage(key) {
|
||||
pendingWrites.push(localRemove(key));
|
||||
}
|
||||
|
||||
const pendingWrites = [];
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
export async function selectorsFromCustomFilters(hostname) {
|
||||
export async function customFiltersFromHostname(hostname) {
|
||||
const promises = [];
|
||||
let hn = hostname;
|
||||
while ( hn !== '' ) {
|
||||
promises.push(localRead(`site.${hn}`));
|
||||
promises.push(readFromStorage(`site.${hn}`));
|
||||
const pos = hn.indexOf('.');
|
||||
if ( pos === -1 ) { break; }
|
||||
hn = hn.slice(pos + 1);
|
||||
|
|
@ -66,19 +92,31 @@ export async function selectorsFromCustomFilters(hostname) {
|
|||
/******************************************************************************/
|
||||
|
||||
export async function hasCustomFilters(hostname) {
|
||||
const selectors = await selectorsFromCustomFilters(hostname);
|
||||
const selectors = await customFiltersFromHostname(hostname);
|
||||
return selectors?.length ?? 0;
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
async function getAllCustomFilterKeys() {
|
||||
const storageKeys = await localKeys() || [];
|
||||
const storageKeys = await keysFromStorage() || [];
|
||||
return storageKeys.filter(a => a.startsWith('site.'));
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
export async function getAllCustomFilters() {
|
||||
const collect = async key => {
|
||||
const selectors = await readFromStorage(key);
|
||||
return [ key.slice(5), selectors.map(a => a.startsWith('0') ? a.slice(1) : a) ];
|
||||
};
|
||||
const keys = await getAllCustomFilterKeys();
|
||||
const promises = keys.map(k => collect(k));
|
||||
return Promise.all(promises);
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
export function startCustomFilters(tabId, frameId) {
|
||||
return browser.scripting.executeScript({
|
||||
files: [ '/js/scripting/css-user.js' ],
|
||||
|
|
@ -102,7 +140,7 @@ export function terminateCustomFilters(tabId, frameId) {
|
|||
/******************************************************************************/
|
||||
|
||||
export async function injectCustomFilters(tabId, frameId, hostname) {
|
||||
const selectors = await selectorsFromCustomFilters(hostname);
|
||||
const selectors = await customFiltersFromHostname(hostname);
|
||||
if ( selectors.length === 0 ) { return; }
|
||||
const promises = [];
|
||||
const plainSelectors = selectors.filter(a => a.startsWith('{') === false);
|
||||
|
|
@ -136,9 +174,6 @@ export async function injectCustomFilters(tabId, frameId, hostname) {
|
|||
/******************************************************************************/
|
||||
|
||||
export async function registerCustomFilters(context) {
|
||||
if ( perSitePendingIO.size !== 0 ) {
|
||||
await Promise.all(Array.from(perSitePendingIO.values()));
|
||||
}
|
||||
const siteKeys = await getAllCustomFilterKeys();
|
||||
if ( siteKeys.length === 0 ) { return; }
|
||||
|
||||
|
|
@ -174,37 +209,35 @@ export async function registerCustomFilters(context) {
|
|||
|
||||
/******************************************************************************/
|
||||
|
||||
export async function addCustomFilter(hostname, selector) {
|
||||
const pending = perSitePendingIO.get(hostname);
|
||||
const promise = pending
|
||||
? pending.then(( ) => addCustomFilterByHostname(hostname, selector))
|
||||
: addCustomFilterByHostname(hostname, selector);
|
||||
perSitePendingIO.set(hostname, promise);
|
||||
promise.then(( ) => {
|
||||
if ( promise !== perSitePendingIO.get(hostname) ) { return; }
|
||||
perSitePendingIO.delete(hostname);
|
||||
});
|
||||
return promise;
|
||||
}
|
||||
|
||||
async function addCustomFilterByHostname(hostname, selector) {
|
||||
export async function addCustomFilters(hostname, toAdd) {
|
||||
if ( hostname === '' ) { return false; }
|
||||
const key = `site.${hostname}`;
|
||||
const selectors = await localRead(key) || [];
|
||||
if ( selectors.includes(selector) ) { return false; }
|
||||
selectors.push(selector);
|
||||
const selectors = await readFromStorage(key) || [];
|
||||
const countBefore = selectors.length;
|
||||
for ( const selector of toAdd ) {
|
||||
if ( selectors.includes(selector) ) { continue; }
|
||||
selectors.push(selector);
|
||||
}
|
||||
if ( selectors.length === countBefore ) { return false; }
|
||||
selectors.sort();
|
||||
await localWrite(key, selectors);
|
||||
writeToStorage(key, selectors);
|
||||
return true;
|
||||
}
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
export async function removeCustomFilter(hostname, selector) {
|
||||
export async function removeAllCustomFilters(hostname) {
|
||||
const key = `site.${hostname}`;
|
||||
const selectors = await readFromStorage(key) || [];
|
||||
removeFromStorage(key);
|
||||
return selectors.length !== 0;
|
||||
}
|
||||
|
||||
export async function removeCustomFilters(hostname, selectors) {
|
||||
const promises = [];
|
||||
let hn = hostname;
|
||||
while ( hn !== '' ) {
|
||||
promises.push(removeCustomFilterByHostname(hn, selector));
|
||||
promises.push(removeCustomFiltersByKey(`site.${hn}`, selectors));
|
||||
const pos = hn.indexOf('.');
|
||||
if ( pos === -1 ) { break; }
|
||||
hn = hn.slice(pos + 1);
|
||||
|
|
@ -213,33 +246,24 @@ export async function removeCustomFilter(hostname, selector) {
|
|||
return results.some(a => a);
|
||||
}
|
||||
|
||||
async function removeCustomFilterByHostname(hostname, selector) {
|
||||
const pending = perSitePendingIO.get(hostname);
|
||||
const key = `site.${hostname}`;
|
||||
const promise = pending
|
||||
? pending.then(( ) => removeCustomFilterByKey(key, selector))
|
||||
: removeCustomFilterByKey(key, selector);
|
||||
perSitePendingIO.set(hostname, promise);
|
||||
promise.then(( ) => {
|
||||
if ( promise !== perSitePendingIO.get(hostname) ) { return; }
|
||||
perSitePendingIO.delete(hostname);
|
||||
});
|
||||
return promise;
|
||||
}
|
||||
|
||||
async function removeCustomFilterByKey(key, selector) {
|
||||
const selectors = await localRead(key);
|
||||
async function removeCustomFiltersByKey(key, toRemove) {
|
||||
const selectors = await readFromStorage(key);
|
||||
if ( selectors === undefined ) { return false; }
|
||||
let i = selectors.indexOf(selector);
|
||||
if ( i === -1 ) {
|
||||
i = selectors.indexOf(`0${selector}`);
|
||||
if ( i === -1 ) { return false; }
|
||||
const beforeCount = selectors.length;
|
||||
for ( const selector of toRemove ) {
|
||||
let i = selectors.indexOf(selector);
|
||||
if ( i === -1 ) {
|
||||
i = selectors.indexOf(`0${selector}`);
|
||||
if ( i === -1 ) { continue; }
|
||||
}
|
||||
selectors.splice(i, 1);
|
||||
}
|
||||
selectors.splice(i, 1);
|
||||
if ( selectors.length !== 0 ) {
|
||||
await localWrite(key, selectors);
|
||||
const afterCount = selectors.length;
|
||||
if ( afterCount === beforeCount ) { return false; }
|
||||
if ( afterCount !== 0 ) {
|
||||
writeToStorage(key, selectors);
|
||||
} else {
|
||||
await localRemove(key);
|
||||
removeFromStorage(key);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -230,9 +230,9 @@ async function onCreateClicked() {
|
|||
if ( selector === undefined ) { return; }
|
||||
await toolOverlay.postMessage({ what: 'terminateCustomFilters' });
|
||||
await toolOverlay.sendMessage({
|
||||
what: 'addCustomFilter',
|
||||
what: 'addCustomFilters',
|
||||
hostname: toolOverlay.url.hostname,
|
||||
selector,
|
||||
selectors: [ selector ],
|
||||
});
|
||||
await toolOverlay.postMessage({ what: 'startCustomFilters' });
|
||||
qs$('textarea').value = '';
|
||||
|
|
|
|||
|
|
@ -35,10 +35,10 @@ function onMessage(msg) {
|
|||
return ubolOverlay.sendMessage({ what: 'startCustomFilters' });
|
||||
case 'terminateCustomFilters':
|
||||
return ubolOverlay.sendMessage({ what: 'terminateCustomFilters' });
|
||||
case 'removeCustomFilter':
|
||||
return ubolOverlay.sendMessage({ what: 'removeCustomFilter',
|
||||
case 'removeCustomFilters':
|
||||
return ubolOverlay.sendMessage({ what: 'removeCustomFilters',
|
||||
hostname: ubolOverlay.url.hostname,
|
||||
selector: msg.selector,
|
||||
selectors: [ msg.selector ],
|
||||
});
|
||||
default:
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -69,9 +69,9 @@ function onFilterClicked(ev) {
|
|||
if ( target === trashElem ) {
|
||||
dom.cl.add(filterElem, 'removed');
|
||||
dom.cl.remove(filterElem, 'on');
|
||||
toolOverlay.sendMessage({ what: 'removeCustomFilter',
|
||||
toolOverlay.sendMessage({ what: 'removeCustomFilters',
|
||||
hostname: toolOverlay.url.hostname,
|
||||
selector,
|
||||
selectors: [ selector ],
|
||||
}).then(( ) => {
|
||||
autoSelectFilter();
|
||||
});
|
||||
|
|
@ -80,9 +80,9 @@ function onFilterClicked(ev) {
|
|||
const undoElem = qs$(filterElem, ':scope > span.undo');
|
||||
if ( target === undoElem ) {
|
||||
dom.cl.remove(filterElem, 'removed');
|
||||
toolOverlay.sendMessage({ what: 'addCustomFilter',
|
||||
toolOverlay.sendMessage({ what: 'addCustomFilters',
|
||||
hostname: toolOverlay.url.hostname,
|
||||
selector,
|
||||
selectors: [ selector ],
|
||||
}).then(( ) => {
|
||||
dom.cl.remove('.customFilter.on', 'on');
|
||||
dom.cl.add(filterElem, 'on');
|
||||
|
|
@ -130,7 +130,7 @@ function populateFilters(selectors) {
|
|||
|
||||
async function startUnpicker() {
|
||||
const selectors = await toolOverlay.sendMessage({
|
||||
what: 'selectorsFromCustomFilters',
|
||||
what: 'customFiltersFromHostname',
|
||||
hostname: toolOverlay.url.hostname,
|
||||
})
|
||||
if ( selectors.length === 0 ) {
|
||||
|
|
|
|||
|
|
@ -156,6 +156,16 @@ class dom {
|
|||
elem.removeEventListener(type, callback, options);
|
||||
}
|
||||
}
|
||||
|
||||
static onFirstShown(fn, elem) {
|
||||
let observer = new IntersectionObserver(entries => {
|
||||
if ( entries.every(a => a.isIntersecting === false) ) { return; }
|
||||
try { fn(); } catch { }
|
||||
observer.disconnect();
|
||||
observer = undefined;
|
||||
});
|
||||
observer.observe(elem);
|
||||
}
|
||||
}
|
||||
|
||||
dom.cl = class {
|
||||
|
|
|
|||
Loading…
Reference in a new issue