Compare commits

..

10 Commits

Author SHA1 Message Date
lordwelch
3deac4cda0 First commit of tdl
Initial round of re-branding, I temporarily am using the dta icon just
rotated 180, waiting for a permanent icon to use
Removed the initial create tab for dta but left any download links as is
Added webextension-polyfill-ts to enable retrieval of cookies
Removed all access and preferences to the download manager as it is not
relevant in this fork
2021-03-27 21:26:37 -07:00
Nils Maier
49a589cb87 Add title and description to metalinks
Fixes #250
2020-08-30 00:29:26 +02:00
Nils Maier
3c644e615d Random typos etc 2020-08-29 23:49:48 +02:00
Nils Maier
c540c1fc29 Harden locale loader 2020-08-29 23:49:02 +02:00
Nils Maier
3e31cb326b Provide additional extension storage db backend
Related #159
2020-08-29 22:58:08 +02:00
Nils Maier
add5b65ff2 Code cleanups 2020-08-29 22:56:08 +02:00
Nils Maier
6282f54ac0 Use localforage to work around private browsing issues
Related #159
2020-08-29 22:55:32 +02:00
Nils Maier
1af01856e1 Provide MemoryDB fallback
Related to #159
2020-08-29 21:47:26 +02:00
Nils Maier
3f650be613 Allow right clicks on menu items 2020-08-29 20:56:58 +02:00
Nils Maier
0fa7738031 Update dependencies 2020-08-29 20:54:26 +02:00
66 changed files with 1558 additions and 1443 deletions

View File

@ -321,7 +321,7 @@
}, },
"extensionDescription": { "extensionDescription": {
"message": "أداة التنزيل لبحور من الروابط، داخل متصفحك", "message": "أداة التنزيل لبحور من الروابط، داخل متصفحك",
"description": "DownThemAll! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one" "description": "TraitorousDownloading! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one"
}, },
"fastfiltering": { "fastfiltering": {
"message": "ترشيح سريع", "message": "ترشيح سريع",

View File

@ -232,27 +232,27 @@
"description": "Download (verb/action); e.g. in single and select buttons" "description": "Download (verb/action); e.g. in single and select buttons"
}, },
"dta_regular": { "dta_regular": {
"message": "DownThemAll!", "message": "TraitorousDownloading!",
"description": "Regular dta action; Menu text" "description": "Regular dta action; Menu text"
}, },
"dta_regular_all": { "dta_regular_all": {
"message": "DownThemAll! всички раздели", "message": "TraitorousDownloading! всички раздели",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_image": { "dta_regular_image": {
"message": "Запазване на изображението с DownThemAll!", "message": "Запазване на изображението с TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_link": { "dta_regular_link": {
"message": "Запазване на връзката с DownThemAll!", "message": "Запазване на връзката с TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_media": { "dta_regular_media": {
"message": "Запазване на медията с DownThemAll!", "message": "Запазване на медията с TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_selection": { "dta_regular_selection": {
"message": "Запазване на избраното с DownThemAll!", "message": "Запазване на избраното с TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_turbo": { "dta_turbo": {
@ -321,7 +321,7 @@
}, },
"extensionDescription": { "extensionDescription": {
"message": "Диспечер за масови изтегляния за вашият браузър", "message": "Диспечер за масови изтегляния за вашият браузър",
"description": "DownThemAll! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one" "description": "TraitorousDownloading! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one"
}, },
"fastfiltering": { "fastfiltering": {
"message": "Бързо филтриране", "message": "Бързо филтриране",
@ -450,7 +450,7 @@
} }
}, },
"manager_title": { "manager_title": {
"message": "DownThemAll! Диспечер", "message": "TraitorousDownloading! Диспечер",
"description": "Window/tab title" "description": "Window/tab title"
}, },
"mask": { "mask": {
@ -486,7 +486,7 @@
"description": "Action for moving a download up" "description": "Action for moving a download up"
}, },
"nagging_message": { "nagging_message": {
"message": "До момента са добавени $DOWNLOADS$ изтегляния с DownThemAll! Като редовен потребител може да искате да обмислите дарение за подпомагане на по-нататъшното развитие. Благодаря!", "message": "До момента са добавени $DOWNLOADS$ изтегляния с TraitorousDownloading! Като редовен потребител може да искате да обмислите дарение за подпомагане на по-нататъшното развитие. Благодаря!",
"description": "Donation nagging message; displayed as a notification bar in manager", "description": "Donation nagging message; displayed as a notification bar in manager",
"placeholders": { "placeholders": {
"downloads": { "downloads": {
@ -566,7 +566,7 @@
"description": "Menu text; Preferences" "description": "Menu text; Preferences"
}, },
"prefs_title": { "prefs_title": {
"message": "DownThemAll! Предпочитания", "message": "TraitorousDownloading! Предпочитания",
"description": "Window/tab title; Preferences" "description": "Window/tab title; Preferences"
}, },
"pref_add_paused": { "pref_add_paused": {
@ -574,11 +574,11 @@
"description": "Preferences/General" "description": "Preferences/General"
}, },
"pref_button_type": { "pref_button_type": {
"message": "DownThemAll! бутон:", "message": "TraitorousDownloading! бутон:",
"description": "label" "description": "label"
}, },
"pref_button_type_dta": { "pref_button_type_dta": {
"message": "DownThemAll! избор", "message": "TraitorousDownloading! избор",
"description": "label" "description": "label"
}, },
"pref_button_type_manager": { "pref_button_type_manager": {
@ -1026,7 +1026,7 @@
"description": "Menu text; select context" "description": "Menu text; select context"
}, },
"select_title": { "select_title": {
"message": "DownThemAll! Избиране на изтегляния", "message": "TraitorousDownloading! Избиране на изтегляния",
"description": "Title of the select window" "description": "Title of the select window"
}, },
"SERVER_BAD_CONTENT": { "SERVER_BAD_CONTENT": {
@ -1070,7 +1070,7 @@
"description": "Header text; single window" "description": "Header text; single window"
}, },
"single_title": { "single_title": {
"message": "DownThemAll! добавяне на връзка", "message": "TraitorousDownloading! добавяне на връзка",
"description": "Title of single window" "description": "Title of single window"
}, },
"sizeB": { "sizeB": {

View File

@ -232,27 +232,27 @@
"description": "Download (verb/action); e.g. in single and select buttons" "description": "Download (verb/action); e.g. in single and select buttons"
}, },
"dta_regular": { "dta_regular": {
"message": "DownThemAll!", "message": "TraitorousDownloading!",
"description": "Regular dta action; Menu text" "description": "Regular dta action; Menu text"
}, },
"dta_regular_all": { "dta_regular_all": {
"message": "DownThemAll! - Všechny záložky", "message": "TraitorousDownloading! - Všechny záložky",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_image": { "dta_regular_image": {
"message": "Stáhnout obrázek pomocí DownThemAll!", "message": "Stáhnout obrázek pomocí TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_link": { "dta_regular_link": {
"message": "Stáhnout odkaz pomocí DownThemAll!", "message": "Stáhnout odkaz pomocí TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_media": { "dta_regular_media": {
"message": "Stáhnout média pomocí DownThemAll!", "message": "Stáhnout média pomocí TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_selection": { "dta_regular_selection": {
"message": "Stáhnout vybrané pomocí DownThemAll!", "message": "Stáhnout vybrané pomocí TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_turbo": { "dta_turbo": {
@ -321,7 +321,7 @@
}, },
"extensionDescription": { "extensionDescription": {
"message": "Správce stahování pro Váš prohlížeč", "message": "Správce stahování pro Váš prohlížeč",
"description": "DownThemAll! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one" "description": "TraitorousDownloading! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one"
}, },
"fastfiltering": { "fastfiltering": {
"message": "Rychlé filtrování", "message": "Rychlé filtrování",
@ -450,7 +450,7 @@
} }
}, },
"manager_title": { "manager_title": {
"message": "DownThemAll! Manažer", "message": "TraitorousDownloading! Manažer",
"description": "Window/tab title" "description": "Window/tab title"
}, },
"mask": { "mask": {
@ -486,7 +486,7 @@
"description": "Action for moving a download up" "description": "Action for moving a download up"
}, },
"nagging_message": { "nagging_message": {
"message": "Již bylo stáhnuto $DOWNLOADS$ souborů pomocí DownThemAll! Jako častý uživatel byste mohl/a podpořit další vývoj darem. Děkujeme!", "message": "Již bylo stáhnuto $DOWNLOADS$ souborů pomocí TraitorousDownloading! Jako častý uživatel byste mohl/a podpořit další vývoj darem. Děkujeme!",
"description": "Donation nagging message; displayed as a notification bar in manager", "description": "Donation nagging message; displayed as a notification bar in manager",
"placeholders": { "placeholders": {
"downloads": { "downloads": {
@ -566,7 +566,7 @@
"description": "Menu text; Preferences" "description": "Menu text; Preferences"
}, },
"prefs_title": { "prefs_title": {
"message": "Nastavení DownThemAll!", "message": "Nastavení TraitorousDownloading!",
"description": "Window/tab title; Preferences" "description": "Window/tab title; Preferences"
}, },
"pref_add_paused": { "pref_add_paused": {
@ -574,11 +574,11 @@
"description": "Preferences/General" "description": "Preferences/General"
}, },
"pref_button_type": { "pref_button_type": {
"message": "Tlačítko DownThemAll!:", "message": "Tlačítko TraitorousDownloading!:",
"description": "label" "description": "label"
}, },
"pref_button_type_dta": { "pref_button_type_dta": {
"message": "DownThemAll! selektor", "message": "TraitorousDownloading! selektor",
"description": "label" "description": "label"
}, },
"pref_button_type_manager": { "pref_button_type_manager": {
@ -1026,7 +1026,7 @@
"description": "Menu text; select context" "description": "Menu text; select context"
}, },
"select_title": { "select_title": {
"message": "DownThemAll! - Vyberte soubory ke stažení", "message": "TraitorousDownloading! - Vyberte soubory ke stažení",
"description": "Title of the select window" "description": "Title of the select window"
}, },
"SERVER_BAD_CONTENT": { "SERVER_BAD_CONTENT": {
@ -1070,7 +1070,7 @@
"description": "Header text; single window" "description": "Header text; single window"
}, },
"single_title": { "single_title": {
"message": "DownThemAll! - Přidat odkaz", "message": "TraitorousDownloading! - Přidat odkaz",
"description": "Title of single window" "description": "Title of single window"
}, },
"sizeB": { "sizeB": {

View File

@ -232,27 +232,27 @@
"description": "Download (verb/action); e.g. in single and select buttons" "description": "Download (verb/action); e.g. in single and select buttons"
}, },
"dta_regular": { "dta_regular": {
"message": "DownThemAll!", "message": "TraitorousDownloading!",
"description": "Regular dta action; Menu text" "description": "Regular dta action; Menu text"
}, },
"dta_regular_all": { "dta_regular_all": {
"message": "DownThemAll! - alle faner", "message": "TraitorousDownloading! - alle faner",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_image": { "dta_regular_image": {
"message": "Gem billede med DownThemAll!", "message": "Gem billede med TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_link": { "dta_regular_link": {
"message": "Gem link med DownThemAll!", "message": "Gem link med TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_media": { "dta_regular_media": {
"message": "Gem medie med DownThemAll!", "message": "Gem medie med TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_selection": { "dta_regular_selection": {
"message": "Gem valgte med DownThemAll!", "message": "Gem valgte med TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_turbo": { "dta_turbo": {
@ -321,7 +321,7 @@
}, },
"extensionDescription": { "extensionDescription": {
"message": "\"The Mass Downloader\" til din browser", "message": "\"The Mass Downloader\" til din browser",
"description": "DownThemAll! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one" "description": "TraitorousDownloading! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one"
}, },
"fastfiltering": { "fastfiltering": {
"message": "Hurtigfilter", "message": "Hurtigfilter",
@ -450,7 +450,7 @@
} }
}, },
"manager_title": { "manager_title": {
"message": "DownThemAll! Manager", "message": "TraitorousDownloading! Manager",
"description": "Window/tab title" "description": "Window/tab title"
}, },
"mask": { "mask": {
@ -486,7 +486,7 @@
"description": "Action for moving a download up" "description": "Action for moving a download up"
}, },
"nagging_message": { "nagging_message": {
"message": "Du har tilføjet $DOWNLOADS$ downloads med DownThemAll! indtil videre! Som fast bruger kunne du evt. overveje en donation for at holde udviklingen kørende. Tak!", "message": "Du har tilføjet $DOWNLOADS$ downloads med TraitorousDownloading! indtil videre! Som fast bruger kunne du evt. overveje en donation for at holde udviklingen kørende. Tak!",
"description": "Donation nagging message; displayed as a notification bar in manager", "description": "Donation nagging message; displayed as a notification bar in manager",
"placeholders": { "placeholders": {
"downloads": { "downloads": {
@ -566,7 +566,7 @@
"description": "Menu text; Preferences" "description": "Menu text; Preferences"
}, },
"prefs_title": { "prefs_title": {
"message": "DownThemAll! indstillinger", "message": "TraitorousDownloading! indstillinger",
"description": "Window/tab title; Preferences" "description": "Window/tab title; Preferences"
}, },
"pref_add_paused": { "pref_add_paused": {
@ -574,11 +574,11 @@
"description": "Preferences/General" "description": "Preferences/General"
}, },
"pref_button_type": { "pref_button_type": {
"message": "DownThemAll! knap:", "message": "TraitorousDownloading! knap:",
"description": "label" "description": "label"
}, },
"pref_button_type_dta": { "pref_button_type_dta": {
"message": "DownThemAll! markering", "message": "TraitorousDownloading! markering",
"description": "label" "description": "label"
}, },
"pref_button_type_manager": { "pref_button_type_manager": {
@ -1026,7 +1026,7 @@
"description": "Menu text; select context" "description": "Menu text; select context"
}, },
"select_title": { "select_title": {
"message": "DownThemAll! - vælg dine downloads", "message": "TraitorousDownloading! - vælg dine downloads",
"description": "Title of the select window" "description": "Title of the select window"
}, },
"SERVER_BAD_CONTENT": { "SERVER_BAD_CONTENT": {
@ -1070,7 +1070,7 @@
"description": "Header text; single window" "description": "Header text; single window"
}, },
"single_title": { "single_title": {
"message": "DownThemAll! - tilføj et link", "message": "TraitorousDownloading! - tilføj et link",
"description": "Title of single window" "description": "Title of single window"
}, },
"sizeB": { "sizeB": {

View File

@ -232,27 +232,27 @@
"description": "Download (verb/action); e.g. in single and select buttons" "description": "Download (verb/action); e.g. in single and select buttons"
}, },
"dta_regular": { "dta_regular": {
"message": "DownThemAll!", "message": "TraitorousDownloading!",
"description": "Regular dta action; Menu text" "description": "Regular dta action; Menu text"
}, },
"dta_regular_all": { "dta_regular_all": {
"message": "DownThemAll! - Alle Tabs", "message": "TraitorousDownloading! - Alle Tabs",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_image": { "dta_regular_image": {
"message": "Bild mit DownThemAll! speichern", "message": "Bild mit TraitorousDownloading! speichern",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_link": { "dta_regular_link": {
"message": "Link mit DownThemAll! speichern", "message": "Link mit TraitorousDownloading! speichern",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_media": { "dta_regular_media": {
"message": "Medium mit DownThemAll! speichern", "message": "Medium mit TraitorousDownloading! speichern",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_selection": { "dta_regular_selection": {
"message": "Auswahl mit DownThemAll! speichern", "message": "Auswahl mit TraitorousDownloading! speichern",
"description": "Menu text" "description": "Menu text"
}, },
"dta_turbo": { "dta_turbo": {
@ -321,7 +321,7 @@
}, },
"extensionDescription": { "extensionDescription": {
"message": "Der Massen-Downloader für Deinen Browser", "message": "Der Massen-Downloader für Deinen Browser",
"description": "DownThemAll! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one" "description": "TraitorousDownloading! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one"
}, },
"fastfiltering": { "fastfiltering": {
"message": "Schnelles Filtern", "message": "Schnelles Filtern",
@ -450,7 +450,7 @@
} }
}, },
"manager_title": { "manager_title": {
"message": "DownThemAll! Manager", "message": "TraitorousDownloading! Manager",
"description": "Window/tab title" "description": "Window/tab title"
}, },
"mask": { "mask": {
@ -486,7 +486,7 @@
"description": "Action for moving a download up" "description": "Action for moving a download up"
}, },
"nagging_message": { "nagging_message": {
"message": "Sie haben bisher $DOWNLOADS$ Downloads mit DownThemAll! hinzugefügt. Als regelmäßiger Benutzer können Sie eine Spende in Betracht ziehen um die Weiterentwicklung zu unterstützen. Danke!", "message": "Sie haben bisher $DOWNLOADS$ Downloads mit TraitorousDownloading! hinzugefügt. Als regelmäßiger Benutzer können Sie eine Spende in Betracht ziehen um die Weiterentwicklung zu unterstützen. Danke!",
"description": "Donation nagging message; displayed as a notification bar in manager", "description": "Donation nagging message; displayed as a notification bar in manager",
"placeholders": { "placeholders": {
"downloads": { "downloads": {
@ -566,7 +566,7 @@
"description": "Menu text; Preferences" "description": "Menu text; Preferences"
}, },
"prefs_title": { "prefs_title": {
"message": "DownThemAll! Einstellungen", "message": "TraitorousDownloading! Einstellungen",
"description": "Window/tab title; Preferences" "description": "Window/tab title; Preferences"
}, },
"pref_add_paused": { "pref_add_paused": {
@ -574,11 +574,11 @@
"description": "Preferences/General" "description": "Preferences/General"
}, },
"pref_button_type": { "pref_button_type": {
"message": "DownThemAll! Button:", "message": "TraitorousDownloading! Button:",
"description": "label" "description": "label"
}, },
"pref_button_type_dta": { "pref_button_type_dta": {
"message": "DownThemAll! Auswahl", "message": "TraitorousDownloading! Auswahl",
"description": "label" "description": "label"
}, },
"pref_button_type_manager": { "pref_button_type_manager": {
@ -1026,7 +1026,7 @@
"description": "Menu text; select context" "description": "Menu text; select context"
}, },
"select_title": { "select_title": {
"message": "DownThemAll! - Downloads auswählen", "message": "TraitorousDownloading! - Downloads auswählen",
"description": "Title of the select window" "description": "Title of the select window"
}, },
"SERVER_BAD_CONTENT": { "SERVER_BAD_CONTENT": {
@ -1070,7 +1070,7 @@
"description": "Header text; single window" "description": "Header text; single window"
}, },
"single_title": { "single_title": {
"message": "DownThemAll! - Link hinzufügen", "message": "TraitorousDownloading! - Link hinzufügen",
"description": "Title of single window" "description": "Title of single window"
}, },
"sizeB": { "sizeB": {

View File

@ -305,7 +305,7 @@
}, },
"extensionDescription": { "extensionDescription": {
"message": "Ο Διαχειριστής Πολλαπλών Λήψεων για τον φυλλομετρητή σας.", "message": "Ο Διαχειριστής Πολλαπλών Λήψεων για τον φυλλομετρητή σας.",
"description": "DownThemAll! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one" "description": "TraitorousDownloading! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one"
}, },
"fastfiltering": { "fastfiltering": {
"message": "Γρήγορο Φιλτράρισμα", "message": "Γρήγορο Φιλτράρισμα",

View File

@ -253,27 +253,27 @@
}, },
"dta_regular": { "dta_regular": {
"description": "Regular dta action; Menu text", "description": "Regular dta action; Menu text",
"message": "DownThemAll!" "message": "TraitorousDownloading!"
}, },
"dta_regular_all": { "dta_regular_all": {
"description": "Menu text", "description": "Menu text",
"message": "DownThemAll! - All Tabs" "message": "TraitorousDownloading! - All Tabs"
}, },
"dta_regular_image": { "dta_regular_image": {
"description": "Menu text", "description": "Menu text",
"message": "Save Image with DownThemAll!" "message": "Save Image with TraitorousDownloading!"
}, },
"dta_regular_link": { "dta_regular_link": {
"description": "Menu text", "description": "Menu text",
"message": "Save Link with DownThemAll!" "message": "Save Link with TraitorousDownloading!"
}, },
"dta_regular_media": { "dta_regular_media": {
"description": "Menu text", "description": "Menu text",
"message": "Save Media with DownThemAll!" "message": "Save Media with TraitorousDownloading!"
}, },
"dta_regular_selection": { "dta_regular_selection": {
"description": "Menu text", "description": "Menu text",
"message": "Save Selection with DownThemAll!" "message": "Save Selection with TraitorousDownloading!"
}, },
"dta_turbo": { "dta_turbo": {
"description": "OneClick! action; Menu text", "description": "OneClick! action; Menu text",
@ -303,6 +303,10 @@
"description": "Error message; single/select window", "description": "Error message; single/select window",
"message": "Invalid Renaming Mask" "message": "Invalid Renaming Mask"
}, },
"error_invalidServer": {
"description": "Error message; single/select window",
"message": "Invalid server URL"
},
"error_invalidReferrer": { "error_invalidReferrer": {
"description": "Error message; single window", "description": "Error message; single window",
"message": "Invalid Referrer" "message": "Invalid Referrer"
@ -340,7 +344,7 @@
"message": "Export As Text" "message": "Export As Text"
}, },
"extensionDescription": { "extensionDescription": {
"description": "DownThemAll! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one", "description": "TraitorousDownloading! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one",
"message": "The Mass Downloader for your browser" "message": "The Mass Downloader for your browser"
}, },
"fastfilter_placeholder": { "fastfilter_placeholder": {
@ -475,7 +479,7 @@
}, },
"manager_title": { "manager_title": {
"description": "Window/tab title", "description": "Window/tab title",
"message": "DownThemAll! Manager" "message": "TraitorousDownloading! Manager"
}, },
"mask": { "mask": {
"description": "Renaming mask (short); used in e.g. select", "description": "Renaming mask (short); used in e.g. select",
@ -511,7 +515,7 @@
}, },
"nagging_message": { "nagging_message": {
"description": "Donation nagging message; displayed as a notification bar in manager", "description": "Donation nagging message; displayed as a notification bar in manager",
"message": "You've added $DOWNLOADS$ downloads with DownThemAll! so far! As a regular user you might want to consider a donation to support further development. Thanks!", "message": "You've added $DOWNLOADS$ downloads with TraitorousDownloading! so far! As a regular user you might want to consider a donation to support further development. Thanks!",
"placeholders": { "placeholders": {
"downloads": { "downloads": {
"content": "$1", "content": "$1",
@ -583,11 +587,11 @@
}, },
"pref_button_type": { "pref_button_type": {
"description": "label", "description": "label",
"message": "DownThemAll! button:" "message": "TraitorousDownloading! button:"
}, },
"pref_button_type_dta": { "pref_button_type_dta": {
"description": "label", "description": "label",
"message": "DownThemAll! selection" "message": "TraitorousDownloading! selection"
}, },
"pref_button_type_manager": { "pref_button_type_manager": {
"description": "label", "description": "label",
@ -633,6 +637,10 @@
"description": "Preferences/General", "description": "Preferences/General",
"message": "Open the Manager tab after queuing some downloads" "message": "Open the Manager tab after queuing some downloads"
}, },
"pref_cookies": {
"description": "Preferences/General",
"message": "Send cookies to the download server"
},
"pref_queue_notification": { "pref_queue_notification": {
"description": "Preferences/General", "description": "Preferences/General",
"message": "Show a notification when queuing new downloads" "message": "Show a notification when queuing new downloads"
@ -695,7 +703,7 @@
}, },
"prefs_title": { "prefs_title": {
"description": "Window/tab title; Preferences", "description": "Window/tab title; Preferences",
"message": "DownThemAll! Preferences" "message": "TraitorousDownloading! Preferences"
}, },
"queue_finished": { "queue_finished": {
"description": "Notification text", "description": "Notification text",
@ -721,7 +729,7 @@
}, },
"referrer": { "referrer": {
"description": "Label for \"Referrer\"", "description": "Label for \"Referrer\"",
"message": "Referrer" "message": "Referrer (Not implemented)"
}, },
"remember": { "remember": {
"description": "Checkbox text for confirmation, e.g. when removing a download in manager", "description": "Checkbox text for confirmation, e.g. when removing a download in manager",
@ -921,7 +929,7 @@
}, },
"renamer_ref": { "renamer_ref": {
"description": "Mask text; see mask button", "description": "Mask text; see mask button",
"message": "Referrer" "message": "Referrer (Not implemented)"
}, },
"renamer_refdomain": { "renamer_refdomain": {
"description": "Mask text; see mask button", "description": "Mask text; see mask button",
@ -1047,7 +1055,11 @@
}, },
"select_title": { "select_title": {
"description": "Title of the select window", "description": "Title of the select window",
"message": "DownThemAll! - Select your Downloads" "message": "TraitorousDownloading! - Select your Downloads"
},
"server": {
"description": "Downloader Server",
"message": "Server"
}, },
"set_mask": { "set_mask": {
"description": "Menu text; select window", "description": "Menu text; select window",
@ -1075,7 +1087,7 @@
}, },
"single_title": { "single_title": {
"description": "Title of single window", "description": "Title of single window",
"message": "DownThemAll! - Add a link" "message": "TraitorousDownloading! - Add a link"
}, },
"sizeB": { "sizeB": {
"description": "Size formatting; bytes", "description": "Size formatting; bytes",
@ -1296,5 +1308,9 @@
"useonlyonce": { "useonlyonce": {
"description": "Label for Use-Once checkboxes", "description": "Label for Use-Once checkboxes",
"message": "Use Once" "message": "Use Once"
},
"cookies": {
"description": "Label for cookie checkboxes",
"message": "Send cookies to server"
} }
} }

View File

@ -232,27 +232,27 @@
"description": "Download (verb/action); e.g. in single and select buttons" "description": "Download (verb/action); e.g. in single and select buttons"
}, },
"dta_regular": { "dta_regular": {
"message": "DownThemAll!", "message": "TraitorousDownloading!",
"description": "Regular dta action; Menu text" "description": "Regular dta action; Menu text"
}, },
"dta_regular_all": { "dta_regular_all": {
"message": "DownThemAll! - Todas las pestañas", "message": "TraitorousDownloading! - Todas las pestañas",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_image": { "dta_regular_image": {
"message": "Guardar imagen con DownThemAll!", "message": "Guardar imagen con TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_link": { "dta_regular_link": {
"message": "Guardar enlace con DownThemAll!", "message": "Guardar enlace con TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_media": { "dta_regular_media": {
"message": "Guardar multimedia con DownThemAll!", "message": "Guardar multimedia con TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_selection": { "dta_regular_selection": {
"message": "Guardar selección con DownThemAll!", "message": "Guardar selección con TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_turbo": { "dta_turbo": {
@ -321,7 +321,7 @@
}, },
"extensionDescription": { "extensionDescription": {
"message": "El programa de descargas masivas para su navegador", "message": "El programa de descargas masivas para su navegador",
"description": "DownThemAll! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one" "description": "TraitorousDownloading! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one"
}, },
"fastfiltering": { "fastfiltering": {
"message": "Filtro rápido", "message": "Filtro rápido",
@ -450,7 +450,7 @@
} }
}, },
"manager_title": { "manager_title": {
"message": "Gestor DownThemAll!", "message": "Gestor TraitorousDownloading!",
"description": "Window/tab title" "description": "Window/tab title"
}, },
"mask": { "mask": {
@ -486,7 +486,7 @@
"description": "Action for moving a download up" "description": "Action for moving a download up"
}, },
"nagging_message": { "nagging_message": {
"message": "¡Ha añadido $DOWNLOADS$ descargas con DownThemAll! hasta el momento! Al ser un usuario habitual quizás podría plantearse hacer una donación para apoyar el futuro desarrollo del proyecto. ¡Gracias!", "message": "¡Ha añadido $DOWNLOADS$ descargas con TraitorousDownloading! hasta el momento! Al ser un usuario habitual quizás podría plantearse hacer una donación para apoyar el futuro desarrollo del proyecto. ¡Gracias!",
"description": "Donation nagging message; displayed as a notification bar in manager", "description": "Donation nagging message; displayed as a notification bar in manager",
"placeholders": { "placeholders": {
"downloads": { "downloads": {
@ -566,7 +566,7 @@
"description": "Menu text; Preferences" "description": "Menu text; Preferences"
}, },
"prefs_title": { "prefs_title": {
"message": "Preferencias de DownThemAll!", "message": "Preferencias de TraitorousDownloading!",
"description": "Window/tab title; Preferences" "description": "Window/tab title; Preferences"
}, },
"pref_add_paused": { "pref_add_paused": {
@ -574,11 +574,11 @@
"description": "Preferences/General" "description": "Preferences/General"
}, },
"pref_button_type": { "pref_button_type": {
"message": "Botón DownThemAll!:", "message": "Botón TraitorousDownloading!:",
"description": "label" "description": "label"
}, },
"pref_button_type_dta": { "pref_button_type_dta": {
"message": "Selección DownThemAll!", "message": "Selección TraitorousDownloading!",
"description": "label" "description": "label"
}, },
"pref_button_type_manager": { "pref_button_type_manager": {
@ -1026,7 +1026,7 @@
"description": "Menu text; select context" "description": "Menu text; select context"
}, },
"select_title": { "select_title": {
"message": "DownThemAll! - Seleccionar sus descargas", "message": "TraitorousDownloading! - Seleccionar sus descargas",
"description": "Title of the select window" "description": "Title of the select window"
}, },
"SERVER_BAD_CONTENT": { "SERVER_BAD_CONTENT": {
@ -1070,7 +1070,7 @@
"description": "Header text; single window" "description": "Header text; single window"
}, },
"single_title": { "single_title": {
"message": "DownThemAll! - Añadir un enlace", "message": "TraitorousDownloading! - Añadir un enlace",
"description": "Title of single window" "description": "Title of single window"
}, },
"sizeB": { "sizeB": {

View File

@ -232,27 +232,27 @@
"description": "Download (verb/action); e.g. in single and select buttons" "description": "Download (verb/action); e.g. in single and select buttons"
}, },
"dta_regular": { "dta_regular": {
"message": "DownThemAll!", "message": "TraitorousDownloading!",
"description": "Regular dta action; Menu text" "description": "Regular dta action; Menu text"
}, },
"dta_regular_all": { "dta_regular_all": {
"message": "DownThemAll! - Kõik kaardid", "message": "TraitorousDownloading! - Kõik kaardid",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_image": { "dta_regular_image": {
"message": "Salvesta pilt DownThemAll!-iga", "message": "Salvesta pilt TraitorousDownloading!-iga",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_link": { "dta_regular_link": {
"message": "Salvesta link DownThemAll!-iga", "message": "Salvesta link TraitorousDownloading!-iga",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_media": { "dta_regular_media": {
"message": "Salvesta meedia DownThemAll!-iga", "message": "Salvesta meedia TraitorousDownloading!-iga",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_selection": { "dta_regular_selection": {
"message": "Salvesta valik DownThemAll!-iga", "message": "Salvesta valik TraitorousDownloading!-iga",
"description": "Menu text" "description": "Menu text"
}, },
"dta_turbo": { "dta_turbo": {
@ -321,7 +321,7 @@
}, },
"extensionDescription": { "extensionDescription": {
"message": "Massallalaadija sinu veebilehitsejale", "message": "Massallalaadija sinu veebilehitsejale",
"description": "DownThemAll! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one" "description": "TraitorousDownloading! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one"
}, },
"fastfiltering": { "fastfiltering": {
"message": "Kiirfiltreerimine", "message": "Kiirfiltreerimine",
@ -450,7 +450,7 @@
} }
}, },
"manager_title": { "manager_title": {
"message": "DownThemAll! haldur", "message": "TraitorousDownloading! haldur",
"description": "Window/tab title" "description": "Window/tab title"
}, },
"mask": { "mask": {
@ -486,7 +486,7 @@
"description": "Action for moving a download up" "description": "Action for moving a download up"
}, },
"nagging_message": { "nagging_message": {
"message": "Sa oled praeguseks DownThemAll!-iga lisanud $DOWNLOADS$ allalaadimist! Tavakasutajana võiksid edasise arendamise toetamiseks kaaluda annetamist. Täname!", "message": "Sa oled praeguseks TraitorousDownloading!-iga lisanud $DOWNLOADS$ allalaadimist! Tavakasutajana võiksid edasise arendamise toetamiseks kaaluda annetamist. Täname!",
"description": "Donation nagging message; displayed as a notification bar in manager", "description": "Donation nagging message; displayed as a notification bar in manager",
"placeholders": { "placeholders": {
"downloads": { "downloads": {
@ -566,7 +566,7 @@
"description": "Menu text; Preferences" "description": "Menu text; Preferences"
}, },
"prefs_title": { "prefs_title": {
"message": "DownThemAll! eelistused", "message": "TraitorousDownloading! eelistused",
"description": "Window/tab title; Preferences" "description": "Window/tab title; Preferences"
}, },
"pref_add_paused": { "pref_add_paused": {
@ -574,11 +574,11 @@
"description": "Preferences/General" "description": "Preferences/General"
}, },
"pref_button_type": { "pref_button_type": {
"message": "DownThemAll! nupp:", "message": "TraitorousDownloading! nupp:",
"description": "label" "description": "label"
}, },
"pref_button_type_dta": { "pref_button_type_dta": {
"message": "DownThemAll! valik", "message": "TraitorousDownloading! valik",
"description": "label" "description": "label"
}, },
"pref_button_type_manager": { "pref_button_type_manager": {
@ -1026,7 +1026,7 @@
"description": "Menu text; select context" "description": "Menu text; select context"
}, },
"select_title": { "select_title": {
"message": "DownThemAll! - Vali oma allalaadimised", "message": "TraitorousDownloading! - Vali oma allalaadimised",
"description": "Title of the select window" "description": "Title of the select window"
}, },
"SERVER_BAD_CONTENT": { "SERVER_BAD_CONTENT": {
@ -1070,7 +1070,7 @@
"description": "Header text; single window" "description": "Header text; single window"
}, },
"single_title": { "single_title": {
"message": "DownThemAll! - Lingi lisamine", "message": "TraitorousDownloading! - Lingi lisamine",
"description": "Title of single window" "description": "Title of single window"
}, },
"sizeB": { "sizeB": {

View File

@ -232,27 +232,27 @@
"description": "Download (verb/action); e.g. in single and select buttons" "description": "Download (verb/action); e.g. in single and select buttons"
}, },
"dta_regular": { "dta_regular": {
"message": "DownThemAll!", "message": "TraitorousDownloading!",
"description": "Regular dta action; Menu text" "description": "Regular dta action; Menu text"
}, },
"dta_regular_all": { "dta_regular_all": {
"message": "DownThemAll! - Tous les onglets", "message": "TraitorousDownloading! - Tous les onglets",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_image": { "dta_regular_image": {
"message": "Enregistrer l'image avec DownThemAll!", "message": "Enregistrer l'image avec TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_link": { "dta_regular_link": {
"message": "Enregistrer le lien avec DownThemAll!", "message": "Enregistrer le lien avec TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_media": { "dta_regular_media": {
"message": "Enregistrer le média avec DownThemAll!", "message": "Enregistrer le média avec TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_selection": { "dta_regular_selection": {
"message": "Enregistrer la sélection avec DownThemAll!", "message": "Enregistrer la sélection avec TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_turbo": { "dta_turbo": {
@ -321,7 +321,7 @@
}, },
"extensionDescription": { "extensionDescription": {
"message": "Le gestionnaire de téléchargements pour votre navigateur", "message": "Le gestionnaire de téléchargements pour votre navigateur",
"description": "DownThemAll! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one" "description": "TraitorousDownloading! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one"
}, },
"fastfiltering": { "fastfiltering": {
"message": "Filtrage rapide", "message": "Filtrage rapide",
@ -450,7 +450,7 @@
} }
}, },
"manager_title": { "manager_title": {
"message": "DownThemAll! Gestionnaire", "message": "TraitorousDownloading! Gestionnaire",
"description": "Window/tab title" "description": "Window/tab title"
}, },
"mask": { "mask": {
@ -486,7 +486,7 @@
"description": "Action for moving a download up" "description": "Action for moving a download up"
}, },
"nagging_message": { "nagging_message": {
"message": "Vous avez utilisé DownThemAll! pour $DOWNLOADS$ téléchargements jusqu'à présent! En tant qu'utilisateur régulier, peut-être voudriez-vous faire un don pour supporter les versions futures. Merci!", "message": "Vous avez utilisé TraitorousDownloading! pour $DOWNLOADS$ téléchargements jusqu'à présent! En tant qu'utilisateur régulier, peut-être voudriez-vous faire un don pour supporter les versions futures. Merci!",
"description": "Donation nagging message; displayed as a notification bar in manager", "description": "Donation nagging message; displayed as a notification bar in manager",
"placeholders": { "placeholders": {
"downloads": { "downloads": {
@ -566,7 +566,7 @@
"description": "Menu text; Preferences" "description": "Menu text; Preferences"
}, },
"prefs_title": { "prefs_title": {
"message": "Paramètres DownThemAll!", "message": "Paramètres TraitorousDownloading!",
"description": "Window/tab title; Preferences" "description": "Window/tab title; Preferences"
}, },
"pref_add_paused": { "pref_add_paused": {
@ -574,11 +574,11 @@
"description": "Preferences/General" "description": "Preferences/General"
}, },
"pref_button_type": { "pref_button_type": {
"message": "Bouton DownThemAll!", "message": "Bouton TraitorousDownloading!",
"description": "label" "description": "label"
}, },
"pref_button_type_dta": { "pref_button_type_dta": {
"message": "Sélection DownthemAll!", "message": "Sélection TraitorousDownloading!",
"description": "label" "description": "label"
}, },
"pref_button_type_manager": { "pref_button_type_manager": {
@ -1026,7 +1026,7 @@
"description": "Menu text; select context" "description": "Menu text; select context"
}, },
"select_title": { "select_title": {
"message": "DownThemAll! - Selectionner vos téléchargements", "message": "TraitorousDownloading! - Selectionner vos téléchargements",
"description": "Title of the select window" "description": "Title of the select window"
}, },
"SERVER_BAD_CONTENT": { "SERVER_BAD_CONTENT": {
@ -1070,7 +1070,7 @@
"description": "Header text; single window" "description": "Header text; single window"
}, },
"single_title": { "single_title": {
"message": "DownThemAll! - Ajouter un lien", "message": "TraitorousDownloading! - Ajouter un lien",
"description": "Title of single window" "description": "Title of single window"
}, },
"sizeB": { "sizeB": {

View File

@ -232,27 +232,27 @@
"description": "Download (verb/action); e.g. in single and select buttons" "description": "Download (verb/action); e.g. in single and select buttons"
}, },
"dta_regular": { "dta_regular": {
"message": "DownThemAll!", "message": "TraitorousDownloading!",
"description": "Regular dta action; Menu text" "description": "Regular dta action; Menu text"
}, },
"dta_regular_all": { "dta_regular_all": {
"message": "DownThemAll! - Összes lap", "message": "TraitorousDownloading! - Összes lap",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_image": { "dta_regular_image": {
"message": "Kép mentése a DownThemAll-al!", "message": "Kép mentése a TraitorousDownloading-al!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_link": { "dta_regular_link": {
"message": "Hivatkozás mentése DownThemAll-al", "message": "Hivatkozás mentése TraitorousDownloading-al",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_media": { "dta_regular_media": {
"message": "Média mentése DownThemAll-al", "message": "Média mentése TraitorousDownloading-al",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_selection": { "dta_regular_selection": {
"message": "Kiválasztás mentése DownThemAll-al", "message": "Kiválasztás mentése TraitorousDownloading-al",
"description": "Menu text" "description": "Menu text"
}, },
"dta_turbo": { "dta_turbo": {
@ -321,7 +321,7 @@
}, },
"extensionDescription": { "extensionDescription": {
"message": "A tömeges letöltő a böngésződ számára", "message": "A tömeges letöltő a böngésződ számára",
"description": "DownThemAll! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one" "description": "TraitorousDownloading! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one"
}, },
"fastfiltering": { "fastfiltering": {
"message": "Gyors szűrés", "message": "Gyors szűrés",
@ -450,7 +450,7 @@
} }
}, },
"manager_title": { "manager_title": {
"message": "DownThemAll! kezelő", "message": "TraitorousDownloading! kezelő",
"description": "Window/tab title" "description": "Window/tab title"
}, },
"mask": { "mask": {
@ -486,7 +486,7 @@
"description": "Action for moving a download up" "description": "Action for moving a download up"
}, },
"nagging_message": { "nagging_message": {
"message": "Eddig $DOWNLOADS$ letöltést adtál hozzá a DownThemAll!-hoz! Gyakori felhasználóként megfontolhatnád a további fejlesztés támogatását. Köszönöm!", "message": "Eddig $DOWNLOADS$ letöltést adtál hozzá a TraitorousDownloading!-hoz! Gyakori felhasználóként megfontolhatnád a további fejlesztés támogatását. Köszönöm!",
"description": "Donation nagging message; displayed as a notification bar in manager", "description": "Donation nagging message; displayed as a notification bar in manager",
"placeholders": { "placeholders": {
"downloads": { "downloads": {
@ -566,7 +566,7 @@
"description": "Menu text; Preferences" "description": "Menu text; Preferences"
}, },
"prefs_title": { "prefs_title": {
"message": "DownThemAll! beállításai", "message": "TraitorousDownloading! beállításai",
"description": "Window/tab title; Preferences" "description": "Window/tab title; Preferences"
}, },
"pref_add_paused": { "pref_add_paused": {
@ -574,11 +574,11 @@
"description": "Preferences/General" "description": "Preferences/General"
}, },
"pref_button_type": { "pref_button_type": {
"message": "DownThemAll gomb:", "message": "TraitorousDownloading gomb:",
"description": "label" "description": "label"
}, },
"pref_button_type_dta": { "pref_button_type_dta": {
"message": "DownThemAll választás", "message": "TraitorousDownloading választás",
"description": "label" "description": "label"
}, },
"pref_button_type_manager": { "pref_button_type_manager": {
@ -1026,7 +1026,7 @@
"description": "Menu text; select context" "description": "Menu text; select context"
}, },
"select_title": { "select_title": {
"message": "DownThemAll! - Válaszd ki a letöltéseidet", "message": "TraitorousDownloading! - Válaszd ki a letöltéseidet",
"description": "Title of the select window" "description": "Title of the select window"
}, },
"SERVER_BAD_CONTENT": { "SERVER_BAD_CONTENT": {
@ -1070,7 +1070,7 @@
"description": "Header text; single window" "description": "Header text; single window"
}, },
"single_title": { "single_title": {
"message": "DownThemAll! - Adj hozzá egy hivatkozást", "message": "TraitorousDownloading! - Adj hozzá egy hivatkozást",
"description": "Title of single window" "description": "Title of single window"
}, },
"sizeB": { "sizeB": {

View File

@ -216,23 +216,23 @@
"description": "Download (verb/action); e.g. in single and select buttons" "description": "Download (verb/action); e.g. in single and select buttons"
}, },
"dta_regular_all": { "dta_regular_all": {
"message": "DownThemAll - Semua Tab", "message": "TraitorousDownloading - Semua Tab",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_image": { "dta_regular_image": {
"message": "Simpan Gambar menggunakan DownThemAll!", "message": "Simpan Gambar menggunakan TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_link": { "dta_regular_link": {
"message": "Simpan Tautan menggunakan DownThemAll!", "message": "Simpan Tautan menggunakan TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_media": { "dta_regular_media": {
"message": "Simpan Media menggunakan DownThemAll!", "message": "Simpan Media menggunakan TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_selection": { "dta_regular_selection": {
"message": "Simpan Pilihan menggunakan DownThemAll!", "message": "Simpan Pilihan menggunakan TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_turbo_all": { "dta_turbo_all": {
@ -297,7 +297,7 @@
}, },
"extensionDescription": { "extensionDescription": {
"message": "Pengunduh Masal untuk browser anda", "message": "Pengunduh Masal untuk browser anda",
"description": "DownThemAll! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one" "description": "TraitorousDownloading! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one"
}, },
"fastfiltering": { "fastfiltering": {
"message": "Penyaringan Cepat", "message": "Penyaringan Cepat",
@ -398,7 +398,7 @@
} }
}, },
"manager_title": { "manager_title": {
"message": "Pengelola DownThemAll!", "message": "Pengelola TraitorousDownloading!",
"description": "Window/tab title" "description": "Window/tab title"
}, },
"mask_default": { "mask_default": {
@ -426,7 +426,7 @@
"description": "Action for moving a download up" "description": "Action for moving a download up"
}, },
"nagging_message": { "nagging_message": {
"message": "Sejauh ini Anda telah menambahkan $DOWNLOADS$ unduhan menggunakan DownThemAll! Sebagai penggunan setia, silakan berdonasi untuk mendukung pengembangan lebih lanjut. Terima Kasih!", "message": "Sejauh ini Anda telah menambahkan $DOWNLOADS$ unduhan menggunakan TraitorousDownloading! Sebagai penggunan setia, silakan berdonasi untuk mendukung pengembangan lebih lanjut. Terima Kasih!",
"description": "Donation nagging message; displayed as a notification bar in manager", "description": "Donation nagging message; displayed as a notification bar in manager",
"placeholders": { "placeholders": {
"downloads": { "downloads": {
@ -498,7 +498,7 @@
"description": "Menu text; Preferences" "description": "Menu text; Preferences"
}, },
"prefs_title": { "prefs_title": {
"message": "Preferensi DownThemAll!", "message": "Preferensi TraitorousDownloading!",
"description": "Window/tab title; Preferences" "description": "Window/tab title; Preferences"
}, },
"pref_add_paused": { "pref_add_paused": {
@ -506,11 +506,11 @@
"description": "Preferences/General" "description": "Preferences/General"
}, },
"pref_button_type": { "pref_button_type": {
"message": "Tombol DownThemAll!:", "message": "Tombol TraitorousDownloading!:",
"description": "label" "description": "label"
}, },
"pref_button_type_dta": { "pref_button_type_dta": {
"message": "Pilihan DownThemAll!", "message": "Pilihan TraitorousDownloading!",
"description": "label" "description": "label"
}, },
"pref_button_type_manager": { "pref_button_type_manager": {
@ -926,7 +926,7 @@
"description": "Menu text; select context" "description": "Menu text; select context"
}, },
"select_title": { "select_title": {
"message": "DownThemAll! - Pilih Unduhan Anda", "message": "TraitorousDownloading! - Pilih Unduhan Anda",
"description": "Title of the select window" "description": "Title of the select window"
}, },
"SERVER_BAD_CONTENT": { "SERVER_BAD_CONTENT": {
@ -970,7 +970,7 @@
"description": "Header text; single window" "description": "Header text; single window"
}, },
"single_title": { "single_title": {
"message": "DownThemAll! - Tambah tautan", "message": "TraitorousDownloading! - Tambah tautan",
"description": "Title of single window" "description": "Title of single window"
}, },
"sizes_huge": { "sizes_huge": {

View File

@ -232,27 +232,27 @@
"description": "Download (verb/action); e.g. in single and select buttons" "description": "Download (verb/action); e.g. in single and select buttons"
}, },
"dta_regular": { "dta_regular": {
"message": "DownThemAll!", "message": "TraitorousDownloading!",
"description": "Regular dta action; Menu text" "description": "Regular dta action; Menu text"
}, },
"dta_regular_all": { "dta_regular_all": {
"message": "DownThemAll! - Tutte le schede", "message": "TraitorousDownloading! - Tutte le schede",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_image": { "dta_regular_image": {
"message": "Salva immagine con DownThemAll!", "message": "Salva immagine con TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_link": { "dta_regular_link": {
"message": "Salva link con DownThemAll!", "message": "Salva link con TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_media": { "dta_regular_media": {
"message": "Salva media con DownThemAll!", "message": "Salva media con TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_selection": { "dta_regular_selection": {
"message": "Salva selezione con DownThemAll!", "message": "Salva selezione con TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_turbo": { "dta_turbo": {
@ -321,7 +321,7 @@
}, },
"extensionDescription": { "extensionDescription": {
"message": "Il download manager di massa per il tuo browser", "message": "Il download manager di massa per il tuo browser",
"description": "DownThemAll! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one" "description": "TraitorousDownloading! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one"
}, },
"fastfiltering": { "fastfiltering": {
"message": "Filtro Rapido", "message": "Filtro Rapido",
@ -450,7 +450,7 @@
} }
}, },
"manager_title": { "manager_title": {
"message": "DownThemAll! Manager", "message": "TraitorousDownloading! Manager",
"description": "Window/tab title" "description": "Window/tab title"
}, },
"mask": { "mask": {
@ -486,7 +486,7 @@
"description": "Action for moving a download up" "description": "Action for moving a download up"
}, },
"nagging_message": { "nagging_message": {
"message": "Hai aggiunto $DOWNLOADS$ download a DownThemAll! Come utente abituale potresti considerare una donazione per supportare lo sviluppo. Grazie!", "message": "Hai aggiunto $DOWNLOADS$ download a TraitorousDownloading! Come utente abituale potresti considerare una donazione per supportare lo sviluppo. Grazie!",
"description": "Donation nagging message; displayed as a notification bar in manager", "description": "Donation nagging message; displayed as a notification bar in manager",
"placeholders": { "placeholders": {
"downloads": { "downloads": {
@ -566,7 +566,7 @@
"description": "Menu text; Preferences" "description": "Menu text; Preferences"
}, },
"prefs_title": { "prefs_title": {
"message": "Preferenze di DownThemAll!", "message": "Preferenze di TraitorousDownloading!",
"description": "Window/tab title; Preferences" "description": "Window/tab title; Preferences"
}, },
"pref_add_paused": { "pref_add_paused": {
@ -574,11 +574,11 @@
"description": "Preferences/General" "description": "Preferences/General"
}, },
"pref_button_type": { "pref_button_type": {
"message": "Pulsante DownThemAll!:", "message": "Pulsante TraitorousDownloading!:",
"description": "label" "description": "label"
}, },
"pref_button_type_dta": { "pref_button_type_dta": {
"message": "Selezione DownThemAll!", "message": "Selezione TraitorousDownloading!",
"description": "label" "description": "label"
}, },
"pref_button_type_manager": { "pref_button_type_manager": {
@ -1010,7 +1010,7 @@
"description": "Menu text; select context" "description": "Menu text; select context"
}, },
"select_title": { "select_title": {
"message": "DownThemAll! - Seleziona i tuoi download", "message": "TraitorousDownloading! - Seleziona i tuoi download",
"description": "Title of the select window" "description": "Title of the select window"
}, },
"SERVER_BAD_CONTENT": { "SERVER_BAD_CONTENT": {
@ -1054,7 +1054,7 @@
"description": "Header text; single window" "description": "Header text; single window"
}, },
"single_title": { "single_title": {
"message": "DownThemAll! - Aggiungi un link", "message": "TraitorousDownloading! - Aggiungi un link",
"description": "Title of single window" "description": "Title of single window"
}, },
"sizeB": { "sizeB": {

View File

@ -232,27 +232,27 @@
"description": "Download (verb/action); e.g. in single and select buttons" "description": "Download (verb/action); e.g. in single and select buttons"
}, },
"dta_regular": { "dta_regular": {
"message": "DownThemAll!", "message": "TraitorousDownloading!",
"description": "Regular dta action; Menu text" "description": "Regular dta action; Menu text"
}, },
"dta_regular_all": { "dta_regular_all": {
"message": "DownThemAll! - 全てのタブ", "message": "TraitorousDownloading! - 全てのタブ",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_image": { "dta_regular_image": {
"message": "画像をDownThemAll! で保存する", "message": "画像をTraitorousDownloading! で保存する",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_link": { "dta_regular_link": {
"message": "リンク先をDownThemAll! で保存する", "message": "リンク先をTraitorousDownloading! で保存する",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_media": { "dta_regular_media": {
"message": "メディアをDownThemAll! で保存する", "message": "メディアをTraitorousDownloading! で保存する",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_selection": { "dta_regular_selection": {
"message": "選択項目をDownThemAll! で保存する", "message": "選択項目をTraitorousDownloading! で保存する",
"description": "Menu text" "description": "Menu text"
}, },
"dta_turbo": { "dta_turbo": {
@ -321,7 +321,7 @@
}, },
"extensionDescription": { "extensionDescription": {
"message": "ブラウザ用マスダウンローダー", "message": "ブラウザ用マスダウンローダー",
"description": "DownThemAll! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one" "description": "TraitorousDownloading! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one"
}, },
"fastfiltering": { "fastfiltering": {
"message": "高速フィルタリング", "message": "高速フィルタリング",
@ -450,7 +450,7 @@
} }
}, },
"manager_title": { "manager_title": {
"message": "DownThemAll! マネージャ", "message": "TraitorousDownloading! マネージャ",
"description": "Window/tab title" "description": "Window/tab title"
}, },
"mask": { "mask": {
@ -486,7 +486,7 @@
"description": "Action for moving a download up" "description": "Action for moving a download up"
}, },
"nagging_message": { "nagging_message": {
"message": "これまでDownThemAllで$DOWNLOADS$ダウンロードを追加しました! 通常のユーザーとして、さらなる開発を支援するために寄付を検討することができます。 皆様のご協力、心よりお待ち致しております。", "message": "これまでTraitorousDownloadingで$DOWNLOADS$ダウンロードを追加しました! 通常のユーザーとして、さらなる開発を支援するために寄付を検討することができます。 皆様のご協力、心よりお待ち致しております。",
"description": "Donation nagging message; displayed as a notification bar in manager", "description": "Donation nagging message; displayed as a notification bar in manager",
"placeholders": { "placeholders": {
"downloads": { "downloads": {
@ -566,7 +566,7 @@
"description": "Menu text; Preferences" "description": "Menu text; Preferences"
}, },
"prefs_title": { "prefs_title": {
"message": "DownThemAll! 設定", "message": "TraitorousDownloading! 設定",
"description": "Window/tab title; Preferences" "description": "Window/tab title; Preferences"
}, },
"pref_add_paused": { "pref_add_paused": {
@ -574,7 +574,7 @@
"description": "Preferences/General" "description": "Preferences/General"
}, },
"pref_button_type": { "pref_button_type": {
"message": "DownThemAll! アイコンクリック時:", "message": "TraitorousDownloading! アイコンクリック時:",
"description": "label" "description": "label"
}, },
"pref_button_type_dta": { "pref_button_type_dta": {
@ -1026,7 +1026,7 @@
"description": "Menu text; select context" "description": "Menu text; select context"
}, },
"select_title": { "select_title": {
"message": "DownThemAll! - ダウンロードの選択", "message": "TraitorousDownloading! - ダウンロードの選択",
"description": "Title of the select window" "description": "Title of the select window"
}, },
"SERVER_BAD_CONTENT": { "SERVER_BAD_CONTENT": {
@ -1070,7 +1070,7 @@
"description": "Header text; single window" "description": "Header text; single window"
}, },
"single_title": { "single_title": {
"message": "DownThemAll! - リンクを追加", "message": "TraitorousDownloading! - リンクを追加",
"description": "Title of single window" "description": "Title of single window"
}, },
"sizeB": { "sizeB": {

View File

@ -232,27 +232,27 @@
"description": "Download (verb/action); e.g. in single and select buttons" "description": "Download (verb/action); e.g. in single and select buttons"
}, },
"dta_regular": { "dta_regular": {
"message": "DownThemAll!", "message": "TraitorousDownloading!",
"description": "Regular dta action; Menu text" "description": "Regular dta action; Menu text"
}, },
"dta_regular_all": { "dta_regular_all": {
"message": "DownThemAll! - 모든 탭", "message": "TraitorousDownloading! - 모든 탭",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_image": { "dta_regular_image": {
"message": "이미지를 DownThemAll!로 저장", "message": "이미지를 TraitorousDownloading!로 저장",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_link": { "dta_regular_link": {
"message": "링크를 DownThemAll!로 저장", "message": "링크를 TraitorousDownloading!로 저장",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_media": { "dta_regular_media": {
"message": "미디어를 DownThemAll!로 저장", "message": "미디어를 TraitorousDownloading!로 저장",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_selection": { "dta_regular_selection": {
"message": "선택영역을 DownThemAll!로 저장", "message": "선택영역을 TraitorousDownloading!로 저장",
"description": "Menu text" "description": "Menu text"
}, },
"dta_turbo": { "dta_turbo": {
@ -321,7 +321,7 @@
}, },
"extensionDescription": { "extensionDescription": {
"message": "브라우저용 대량 다운로더", "message": "브라우저용 대량 다운로더",
"description": "DownThemAll! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one" "description": "TraitorousDownloading! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one"
}, },
"fastfiltering": { "fastfiltering": {
"message": "빠른 필터링", "message": "빠른 필터링",
@ -450,7 +450,7 @@
} }
}, },
"manager_title": { "manager_title": {
"message": "DownThemAll! 관리자", "message": "TraitorousDownloading! 관리자",
"description": "Window/tab title" "description": "Window/tab title"
}, },
"mask": { "mask": {
@ -486,7 +486,7 @@
"description": "Action for moving a download up" "description": "Action for moving a download up"
}, },
"nagging_message": { "nagging_message": {
"message": "지금까지 DownThemAll!로 $DOWNLOADS$ 다운로드를 추가하셨습니다. 일반 사용자로서 추가 개발을 지원하기 위해 기부를 고려할 수 있습니다. 감사합니다!", "message": "지금까지 TraitorousDownloading!로 $DOWNLOADS$ 다운로드를 추가하셨습니다. 일반 사용자로서 추가 개발을 지원하기 위해 기부를 고려할 수 있습니다. 감사합니다!",
"description": "Donation nagging message; displayed as a notification bar in manager", "description": "Donation nagging message; displayed as a notification bar in manager",
"placeholders": { "placeholders": {
"downloads": { "downloads": {
@ -566,7 +566,7 @@
"description": "Menu text; Preferences" "description": "Menu text; Preferences"
}, },
"prefs_title": { "prefs_title": {
"message": "DownThemAll! 설정", "message": "TraitorousDownloading! 설정",
"description": "Window/tab title; Preferences" "description": "Window/tab title; Preferences"
}, },
"pref_add_paused": { "pref_add_paused": {
@ -574,11 +574,11 @@
"description": "Preferences/General" "description": "Preferences/General"
}, },
"pref_button_type": { "pref_button_type": {
"message": "DownThemAll! 버튼:", "message": "TraitorousDownloading! 버튼:",
"description": "label" "description": "label"
}, },
"pref_button_type_dta": { "pref_button_type_dta": {
"message": "DownThemAll! 선택", "message": "TraitorousDownloading! 선택",
"description": "label" "description": "label"
}, },
"pref_button_type_manager": { "pref_button_type_manager": {
@ -1010,7 +1010,7 @@
"description": "Menu text; select context" "description": "Menu text; select context"
}, },
"select_title": { "select_title": {
"message": "DownThemAll! - 다운로드 선택", "message": "TraitorousDownloading! - 다운로드 선택",
"description": "Title of the select window" "description": "Title of the select window"
}, },
"SERVER_BAD_CONTENT": { "SERVER_BAD_CONTENT": {
@ -1054,7 +1054,7 @@
"description": "Header text; single window" "description": "Header text; single window"
}, },
"single_title": { "single_title": {
"message": "DownThemAll! - 링크 추가", "message": "TraitorousDownloading! - 링크 추가",
"description": "Title of single window" "description": "Title of single window"
}, },
"sizeB": { "sizeB": {

View File

@ -232,27 +232,27 @@
"description": "Download (verb/action); e.g. in single and select buttons" "description": "Download (verb/action); e.g. in single and select buttons"
}, },
"dta_regular": { "dta_regular": {
"message": "DownThemAll!", "message": "TraitorousDownloading!",
"description": "Regular dta action; Menu text" "description": "Regular dta action; Menu text"
}, },
"dta_regular_all": { "dta_regular_all": {
"message": "DownThemAll! - Visoms kortelėms", "message": "TraitorousDownloading! - Visoms kortelėms",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_image": { "dta_regular_image": {
"message": "Išsaugoti vaizdą su DownThemAll!", "message": "Išsaugoti vaizdą su TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_link": { "dta_regular_link": {
"message": "Išsaugoti nuorodą su DownThemAll!", "message": "Išsaugoti nuorodą su TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_media": { "dta_regular_media": {
"message": "Išsaugoti media su DownThemAll!", "message": "Išsaugoti media su TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_selection": { "dta_regular_selection": {
"message": "Išsaugoti pažymėtą su DownThemAll!", "message": "Išsaugoti pažymėtą su TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_turbo": { "dta_turbo": {
@ -321,7 +321,7 @@
}, },
"extensionDescription": { "extensionDescription": {
"message": "Masinio parsisiuntimo programa jūsų naršyklėje", "message": "Masinio parsisiuntimo programa jūsų naršyklėje",
"description": "DownThemAll! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one" "description": "TraitorousDownloading! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one"
}, },
"fastfiltering": { "fastfiltering": {
"message": "Greitas filtravimas", "message": "Greitas filtravimas",
@ -450,7 +450,7 @@
} }
}, },
"manager_title": { "manager_title": {
"message": "DownThemAll! menedžeris", "message": "TraitorousDownloading! menedžeris",
"description": "Window/tab title" "description": "Window/tab title"
}, },
"mask": { "mask": {
@ -486,7 +486,7 @@
"description": "Action for moving a download up" "description": "Action for moving a download up"
}, },
"nagging_message": { "nagging_message": {
"message": "Iki šiol, naudodami DownThemAll!, pridėjote $DOWNLOADS$ parsisiuntimų! Kaip paprastas vartotojas, galbūt norėsite apsvarstyti galimybę paaukoti tolimesnei plėtrai. Ačiū!", "message": "Iki šiol, naudodami TraitorousDownloading!, pridėjote $DOWNLOADS$ parsisiuntimų! Kaip paprastas vartotojas, galbūt norėsite apsvarstyti galimybę paaukoti tolimesnei plėtrai. Ačiū!",
"description": "Donation nagging message; displayed as a notification bar in manager", "description": "Donation nagging message; displayed as a notification bar in manager",
"placeholders": { "placeholders": {
"downloads": { "downloads": {
@ -566,7 +566,7 @@
"description": "Menu text; Preferences" "description": "Menu text; Preferences"
}, },
"prefs_title": { "prefs_title": {
"message": "DownThemAll! nuostatos", "message": "TraitorousDownloading! nuostatos",
"description": "Window/tab title; Preferences" "description": "Window/tab title; Preferences"
}, },
"pref_add_paused": { "pref_add_paused": {
@ -574,11 +574,11 @@
"description": "Preferences/General" "description": "Preferences/General"
}, },
"pref_button_type": { "pref_button_type": {
"message": "DownThemAll! mygtukas:", "message": "TraitorousDownloading! mygtukas:",
"description": "label" "description": "label"
}, },
"pref_button_type_dta": { "pref_button_type_dta": {
"message": "DownThemAll! pasirinkimas", "message": "TraitorousDownloading! pasirinkimas",
"description": "label" "description": "label"
}, },
"pref_button_type_manager": { "pref_button_type_manager": {
@ -1026,7 +1026,7 @@
"description": "Menu text; select context" "description": "Menu text; select context"
}, },
"select_title": { "select_title": {
"message": "DownThemAll! - Pasirinkite parsisiuntimus", "message": "TraitorousDownloading! - Pasirinkite parsisiuntimus",
"description": "Title of the select window" "description": "Title of the select window"
}, },
"SERVER_BAD_CONTENT": { "SERVER_BAD_CONTENT": {
@ -1070,7 +1070,7 @@
"description": "Header text; single window" "description": "Header text; single window"
}, },
"single_title": { "single_title": {
"message": "DownThemAll! - Pridėti nuorodą", "message": "TraitorousDownloading! - Pridėti nuorodą",
"description": "Title of single window" "description": "Title of single window"
}, },
"sizeB": { "sizeB": {

View File

@ -232,27 +232,27 @@
"description": "Download (verb/action); e.g. in single and select buttons" "description": "Download (verb/action); e.g. in single and select buttons"
}, },
"dta_regular": { "dta_regular": {
"message": "DownThemAll!", "message": "TraitorousDownloading!",
"description": "Regular dta action; Menu text" "description": "Regular dta action; Menu text"
}, },
"dta_regular_all": { "dta_regular_all": {
"message": "DownThemAll! - Alle Tabbladen", "message": "TraitorousDownloading! - Alle Tabbladen",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_image": { "dta_regular_image": {
"message": "Afbeelding opslaan met DownThemAll!", "message": "Afbeelding opslaan met TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_link": { "dta_regular_link": {
"message": "Link opslaan met DownThemAll!", "message": "Link opslaan met TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_media": { "dta_regular_media": {
"message": "Media opslaan met DownThemAll!", "message": "Media opslaan met TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_selection": { "dta_regular_selection": {
"message": "Selectie opslaan met DownThemAll!", "message": "Selectie opslaan met TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_turbo": { "dta_turbo": {
@ -321,7 +321,7 @@
}, },
"extensionDescription": { "extensionDescription": {
"message": "De bulkdownloader voor uw browser", "message": "De bulkdownloader voor uw browser",
"description": "DownThemAll! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one" "description": "TraitorousDownloading! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one"
}, },
"fastfiltering": { "fastfiltering": {
"message": "Snel filteren", "message": "Snel filteren",
@ -450,7 +450,7 @@
} }
}, },
"manager_title": { "manager_title": {
"message": "DownThemAll! beheerder", "message": "TraitorousDownloading! beheerder",
"description": "Window/tab title" "description": "Window/tab title"
}, },
"mask": { "mask": {
@ -486,7 +486,7 @@
"description": "Action for moving a download up" "description": "Action for moving a download up"
}, },
"nagging_message": { "nagging_message": {
"message": "U heeft al $DOWNLOADS$ downloads toegevoegd met DownThemAll! Als regelmatige gebruiker wilt u wellicht een donatie overwegen om verdere ontwikkeling te ondersteunen. Alvast bedankt!", "message": "U heeft al $DOWNLOADS$ downloads toegevoegd met TraitorousDownloading! Als regelmatige gebruiker wilt u wellicht een donatie overwegen om verdere ontwikkeling te ondersteunen. Alvast bedankt!",
"description": "Donation nagging message; displayed as a notification bar in manager", "description": "Donation nagging message; displayed as a notification bar in manager",
"placeholders": { "placeholders": {
"downloads": { "downloads": {
@ -566,7 +566,7 @@
"description": "Menu text; Preferences" "description": "Menu text; Preferences"
}, },
"prefs_title": { "prefs_title": {
"message": "DownThemAll! voorkeuren", "message": "TraitorousDownloading! voorkeuren",
"description": "Window/tab title; Preferences" "description": "Window/tab title; Preferences"
}, },
"pref_add_paused": { "pref_add_paused": {
@ -574,11 +574,11 @@
"description": "Preferences/General" "description": "Preferences/General"
}, },
"pref_button_type": { "pref_button_type": {
"message": "DownThemAll! knop:", "message": "TraitorousDownloading! knop:",
"description": "label" "description": "label"
}, },
"pref_button_type_dta": { "pref_button_type_dta": {
"message": "DownThemAll! selectie", "message": "TraitorousDownloading! selectie",
"description": "label" "description": "label"
}, },
"pref_button_type_manager": { "pref_button_type_manager": {
@ -1026,7 +1026,7 @@
"description": "Menu text; select context" "description": "Menu text; select context"
}, },
"select_title": { "select_title": {
"message": "DownThemAll! - Selecteer uw Downloads", "message": "TraitorousDownloading! - Selecteer uw Downloads",
"description": "Title of the select window" "description": "Title of the select window"
}, },
"SERVER_BAD_CONTENT": { "SERVER_BAD_CONTENT": {
@ -1070,7 +1070,7 @@
"description": "Header text; single window" "description": "Header text; single window"
}, },
"single_title": { "single_title": {
"message": "DownThemAll! - Link toevoegen", "message": "TraitorousDownloading! - Link toevoegen",
"description": "Title of single window" "description": "Title of single window"
}, },
"sizeB": { "sizeB": {

View File

@ -232,27 +232,27 @@
"description": "Download (verb/action); e.g. in single and select buttons" "description": "Download (verb/action); e.g. in single and select buttons"
}, },
"dta_regular": { "dta_regular": {
"message": "DownThemAll!", "message": "TraitorousDownloading!",
"description": "Regular dta action; Menu text" "description": "Regular dta action; Menu text"
}, },
"dta_regular_all": { "dta_regular_all": {
"message": "DownThemAll! - Wszystkie zakładki", "message": "TraitorousDownloading! - Wszystkie zakładki",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_image": { "dta_regular_image": {
"message": "Zapisz Obraz z DownThemAll!", "message": "Zapisz Obraz z TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_link": { "dta_regular_link": {
"message": "Zapisz Link z DownThemAll!", "message": "Zapisz Link z TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_media": { "dta_regular_media": {
"message": "Zapisz Multimedia z DownThemAll!", "message": "Zapisz Multimedia z TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_selection": { "dta_regular_selection": {
"message": "Zapisz wybór z DownThemAll!", "message": "Zapisz wybór z TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_turbo": { "dta_turbo": {
@ -321,7 +321,7 @@
}, },
"extensionDescription": { "extensionDescription": {
"message": "Narzędzie do zbiorowego pobierania dla Twojej przeglądarki", "message": "Narzędzie do zbiorowego pobierania dla Twojej przeglądarki",
"description": "DownThemAll! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one" "description": "TraitorousDownloading! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one"
}, },
"fastfiltering": { "fastfiltering": {
"message": "Szybkie filtrowanie", "message": "Szybkie filtrowanie",
@ -450,7 +450,7 @@
} }
}, },
"manager_title": { "manager_title": {
"message": "Menedżer DownThemAll!", "message": "Menedżer TraitorousDownloading!",
"description": "Window/tab title" "description": "Window/tab title"
}, },
"mask": { "mask": {
@ -486,7 +486,7 @@
"description": "Action for moving a download up" "description": "Action for moving a download up"
}, },
"nagging_message": { "nagging_message": {
"message": "Dodałeś do tej pory $DOWNLOADS$ pobrań z DownThemAll! Jako stały użytkownik możesz rozważyć darowiznę na wsparcie dalszego rozwoju. Dzięki!", "message": "Dodałeś do tej pory $DOWNLOADS$ pobrań z TraitorousDownloading! Jako stały użytkownik możesz rozważyć darowiznę na wsparcie dalszego rozwoju. Dzięki!",
"description": "Donation nagging message; displayed as a notification bar in manager", "description": "Donation nagging message; displayed as a notification bar in manager",
"placeholders": { "placeholders": {
"downloads": { "downloads": {
@ -566,7 +566,7 @@
"description": "Menu text; Preferences" "description": "Menu text; Preferences"
}, },
"prefs_title": { "prefs_title": {
"message": "Ustawienia DownThemAll!", "message": "Ustawienia TraitorousDownloading!",
"description": "Window/tab title; Preferences" "description": "Window/tab title; Preferences"
}, },
"pref_add_paused": { "pref_add_paused": {
@ -574,11 +574,11 @@
"description": "Preferences/General" "description": "Preferences/General"
}, },
"pref_button_type": { "pref_button_type": {
"message": "Przycisk DownThemAll!:", "message": "Przycisk TraitorousDownloading!:",
"description": "label" "description": "label"
}, },
"pref_button_type_dta": { "pref_button_type_dta": {
"message": "Wybór DownThemAll!:", "message": "Wybór TraitorousDownloading!:",
"description": "label" "description": "label"
}, },
"pref_button_type_manager": { "pref_button_type_manager": {
@ -1026,7 +1026,7 @@
"description": "Menu text; select context" "description": "Menu text; select context"
}, },
"select_title": { "select_title": {
"message": "DownThemAll! - Wybierz swoje pobierania", "message": "TraitorousDownloading! - Wybierz swoje pobierania",
"description": "Title of the select window" "description": "Title of the select window"
}, },
"SERVER_BAD_CONTENT": { "SERVER_BAD_CONTENT": {
@ -1070,7 +1070,7 @@
"description": "Header text; single window" "description": "Header text; single window"
}, },
"single_title": { "single_title": {
"message": "DownThemAll! - Dodaj link", "message": "TraitorousDownloading! - Dodaj link",
"description": "Title of single window" "description": "Title of single window"
}, },
"sizeB": { "sizeB": {

View File

@ -232,27 +232,27 @@
"description": "Download (verb/action); e.g. in single and select buttons" "description": "Download (verb/action); e.g. in single and select buttons"
}, },
"dta_regular": { "dta_regular": {
"message": "DownThemAll!", "message": "TraitorousDownloading!",
"description": "Regular dta action; Menu text" "description": "Regular dta action; Menu text"
}, },
"dta_regular_all": { "dta_regular_all": {
"message": "DownThemAll! - Todas as abas", "message": "TraitorousDownloading! - Todas as abas",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_image": { "dta_regular_image": {
"message": "Salvar Imagem com o DownThemAll!", "message": "Salvar Imagem com o TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_link": { "dta_regular_link": {
"message": "Salvar Link com o DownThemAll!", "message": "Salvar Link com o TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_media": { "dta_regular_media": {
"message": "Salvar Mídia com o DownThemAll!", "message": "Salvar Mídia com o TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_selection": { "dta_regular_selection": {
"message": "Salvar Seleção com o DownThemAll!", "message": "Salvar Seleção com o TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_turbo": { "dta_turbo": {
@ -321,7 +321,7 @@
}, },
"extensionDescription": { "extensionDescription": {
"message": "A ferramenta de download em massa para o seu navegador", "message": "A ferramenta de download em massa para o seu navegador",
"description": "DownThemAll! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one" "description": "TraitorousDownloading! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one"
}, },
"fastfiltering": { "fastfiltering": {
"message": "Filtragem rápida", "message": "Filtragem rápida",
@ -450,7 +450,7 @@
} }
}, },
"manager_title": { "manager_title": {
"message": "Gerenciador do DownThemAll!", "message": "Gerenciador do TraitorousDownloading!",
"description": "Window/tab title" "description": "Window/tab title"
}, },
"mask": { "mask": {
@ -486,7 +486,7 @@
"description": "Action for moving a download up" "description": "Action for moving a download up"
}, },
"nagging_message": { "nagging_message": {
"message": "Você já adicionou $DOWNLOADS$ downloads com DownThemAll! Como usuário regular, você pode considerar uma doação para apoiar desenvolvimento adicional. Obrigado!", "message": "Você já adicionou $DOWNLOADS$ downloads com TraitorousDownloading! Como usuário regular, você pode considerar uma doação para apoiar desenvolvimento adicional. Obrigado!",
"description": "Donation nagging message; displayed as a notification bar in manager", "description": "Donation nagging message; displayed as a notification bar in manager",
"placeholders": { "placeholders": {
"downloads": { "downloads": {
@ -566,7 +566,7 @@
"description": "Menu text; Preferences" "description": "Menu text; Preferences"
}, },
"prefs_title": { "prefs_title": {
"message": "Preferências do DownThemAll!", "message": "Preferências do TraitorousDownloading!",
"description": "Window/tab title; Preferences" "description": "Window/tab title; Preferences"
}, },
"pref_add_paused": { "pref_add_paused": {
@ -574,11 +574,11 @@
"description": "Preferences/General" "description": "Preferences/General"
}, },
"pref_button_type": { "pref_button_type": {
"message": "Botão DownThemAll!", "message": "Botão TraitorousDownloading!",
"description": "label" "description": "label"
}, },
"pref_button_type_dta": { "pref_button_type_dta": {
"message": "Seleção do DownThemAll!", "message": "Seleção do TraitorousDownloading!",
"description": "label" "description": "label"
}, },
"pref_button_type_manager": { "pref_button_type_manager": {
@ -1026,7 +1026,7 @@
"description": "Menu text; select context" "description": "Menu text; select context"
}, },
"select_title": { "select_title": {
"message": "DownThemAll! - Selecione seus Downloads", "message": "TraitorousDownloading! - Selecione seus Downloads",
"description": "Title of the select window" "description": "Title of the select window"
}, },
"SERVER_BAD_CONTENT": { "SERVER_BAD_CONTENT": {
@ -1070,7 +1070,7 @@
"description": "Header text; single window" "description": "Header text; single window"
}, },
"single_title": { "single_title": {
"message": "DownThemAll! - Adicone um link", "message": "TraitorousDownloading! - Adicone um link",
"description": "Title of single window" "description": "Title of single window"
}, },
"sizeB": { "sizeB": {

View File

@ -232,27 +232,27 @@
"description": "Download (verb/action); e.g. in single and select buttons" "description": "Download (verb/action); e.g. in single and select buttons"
}, },
"dta_regular": { "dta_regular": {
"message": "DownThemAll!", "message": "TraitorousDownloading!",
"description": "Regular dta action; Menu text" "description": "Regular dta action; Menu text"
}, },
"dta_regular_all": { "dta_regular_all": {
"message": "DownThemAll! - Все вкладки", "message": "TraitorousDownloading! - Все вкладки",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_image": { "dta_regular_image": {
"message": "Закачать изображение через DownThemAll!", "message": "Закачать изображение через TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_link": { "dta_regular_link": {
"message": "Закачать ссылку через DownThemAll!", "message": "Закачать ссылку через TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_media": { "dta_regular_media": {
"message": "Закачать медиа через DownThemAll!", "message": "Закачать медиа через TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_selection": { "dta_regular_selection": {
"message": "Закачать выделенное через DownThemAll!", "message": "Закачать выделенное через TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_turbo": { "dta_turbo": {
@ -321,7 +321,7 @@
}, },
"extensionDescription": { "extensionDescription": {
"message": "Универсальная качалка для вашего браузера", "message": "Универсальная качалка для вашего браузера",
"description": "DownThemAll! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one" "description": "TraitorousDownloading! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one"
}, },
"fastfiltering": { "fastfiltering": {
"message": "Быстрый фильтр", "message": "Быстрый фильтр",
@ -450,7 +450,7 @@
} }
}, },
"manager_title": { "manager_title": {
"message": "DownThemAll! Менеджер", "message": "TraitorousDownloading! Менеджер",
"description": "Window/tab title" "description": "Window/tab title"
}, },
"mask": { "mask": {
@ -486,7 +486,7 @@
"description": "Action for moving a download up" "description": "Action for moving a download up"
}, },
"nagging_message": { "nagging_message": {
"message": "Добавлено $DOWNLOADS$ закачек через DownThemAll! на текущий момент! Как постоянный пользователь подумайте над тем чтобы поддержать дальнейшую разработку. Спасибо!", "message": "Добавлено $DOWNLOADS$ закачек через TraitorousDownloading! на текущий момент! Как постоянный пользователь подумайте над тем чтобы поддержать дальнейшую разработку. Спасибо!",
"description": "Donation nagging message; displayed as a notification bar in manager", "description": "Donation nagging message; displayed as a notification bar in manager",
"placeholders": { "placeholders": {
"downloads": { "downloads": {
@ -566,7 +566,7 @@
"description": "Menu text; Preferences" "description": "Menu text; Preferences"
}, },
"prefs_title": { "prefs_title": {
"message": "Настройки DownThemAll!", "message": "Настройки TraitorousDownloading!",
"description": "Window/tab title; Preferences" "description": "Window/tab title; Preferences"
}, },
"pref_add_paused": { "pref_add_paused": {
@ -574,11 +574,11 @@
"description": "Preferences/General" "description": "Preferences/General"
}, },
"pref_button_type": { "pref_button_type": {
"message": "Кнопка DownThemAll!", "message": "Кнопка TraitorousDownloading!",
"description": "label" "description": "label"
}, },
"pref_button_type_dta": { "pref_button_type_dta": {
"message": "DownThemAll! выделенного", "message": "TraitorousDownloading! выделенного",
"description": "label" "description": "label"
}, },
"pref_button_type_manager": { "pref_button_type_manager": {
@ -1026,7 +1026,7 @@
"description": "Menu text; select context" "description": "Menu text; select context"
}, },
"select_title": { "select_title": {
"message": "DownThemAll! - Выбрать ваши закачки", "message": "TraitorousDownloading! - Выбрать ваши закачки",
"description": "Title of the select window" "description": "Title of the select window"
}, },
"SERVER_BAD_CONTENT": { "SERVER_BAD_CONTENT": {
@ -1070,7 +1070,7 @@
"description": "Header text; single window" "description": "Header text; single window"
}, },
"single_title": { "single_title": {
"message": "DownThemAll! - Добавить ссылку", "message": "TraitorousDownloading! - Добавить ссылку",
"description": "Title of single window" "description": "Title of single window"
}, },
"sizeB": { "sizeB": {

View File

@ -232,27 +232,27 @@
"description": "Download (verb/action); e.g. in single and select buttons" "description": "Download (verb/action); e.g. in single and select buttons"
}, },
"dta_regular": { "dta_regular": {
"message": "DownThemAll!", "message": "TraitorousDownloading!",
"description": "Regular dta action; Menu text" "description": "Regular dta action; Menu text"
}, },
"dta_regular_all": { "dta_regular_all": {
"message": "DownThemAll! - Alla flikar", "message": "TraitorousDownloading! - Alla flikar",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_image": { "dta_regular_image": {
"message": "Spara bild med DownThemAll!", "message": "Spara bild med TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_link": { "dta_regular_link": {
"message": "Spara länk med DownThemAll!", "message": "Spara länk med TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_media": { "dta_regular_media": {
"message": "Spara media med DownThemAll!", "message": "Spara media med TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_selection": { "dta_regular_selection": {
"message": "Spara val med DownThemAll!", "message": "Spara val med TraitorousDownloading!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_turbo": { "dta_turbo": {
@ -313,7 +313,7 @@
}, },
"extensionDescription": { "extensionDescription": {
"message": "Bulkhämtaren för din webbläsare", "message": "Bulkhämtaren för din webbläsare",
"description": "DownThemAll! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one" "description": "TraitorousDownloading! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one"
}, },
"fastfiltering": { "fastfiltering": {
"message": "Snabb filtrering", "message": "Snabb filtrering",
@ -442,7 +442,7 @@
} }
}, },
"manager_title": { "manager_title": {
"message": "DownThemAll! Hanterare", "message": "TraitorousDownloading! Hanterare",
"description": "Window/tab title" "description": "Window/tab title"
}, },
"media": { "media": {
@ -470,7 +470,7 @@
"description": "Action for moving a download up" "description": "Action for moving a download up"
}, },
"nagging_message": { "nagging_message": {
"message": "Du har lagt till $DOWNLOADS$ hämtningar med DownThemAll! hittills! Som en vanlig användare kanske du vill överväga en donation för att stöda vidareutveckling. Tackar!", "message": "Du har lagt till $DOWNLOADS$ hämtningar med TraitorousDownloading! hittills! Som en vanlig användare kanske du vill överväga en donation för att stöda vidareutveckling. Tackar!",
"description": "Donation nagging message; displayed as a notification bar in manager", "description": "Donation nagging message; displayed as a notification bar in manager",
"placeholders": { "placeholders": {
"downloads": { "downloads": {
@ -550,7 +550,7 @@
"description": "Menu text; Preferences" "description": "Menu text; Preferences"
}, },
"prefs_title": { "prefs_title": {
"message": "DownThemAll! Inställningar", "message": "TraitorousDownloading! Inställningar",
"description": "Window/tab title; Preferences" "description": "Window/tab title; Preferences"
}, },
"pref_add_paused": { "pref_add_paused": {
@ -558,11 +558,11 @@
"description": "Preferences/General" "description": "Preferences/General"
}, },
"pref_button_type": { "pref_button_type": {
"message": "DownThemAll! knapp:", "message": "TraitorousDownloading! knapp:",
"description": "label" "description": "label"
}, },
"pref_button_type_dta": { "pref_button_type_dta": {
"message": "DownThemAll! urval", "message": "TraitorousDownloading! urval",
"description": "label" "description": "label"
}, },
"pref_button_type_manager": { "pref_button_type_manager": {
@ -966,7 +966,7 @@
"description": "Menu text; select context" "description": "Menu text; select context"
}, },
"select_title": { "select_title": {
"message": "DownThemAll! - Välj dina hämtningar", "message": "TraitorousDownloading! - Välj dina hämtningar",
"description": "Title of the select window" "description": "Title of the select window"
}, },
"SERVER_BAD_CONTENT": { "SERVER_BAD_CONTENT": {
@ -994,7 +994,7 @@
"description": "Header text; single window" "description": "Header text; single window"
}, },
"single_title": { "single_title": {
"message": "DownThemAll! - Lägg till en länk", "message": "TraitorousDownloading! - Lägg till en länk",
"description": "Title of single window" "description": "Title of single window"
}, },
"sizeB": { "sizeB": {

View File

@ -232,27 +232,27 @@
"description": "Download (verb/action); e.g. in single and select buttons" "description": "Download (verb/action); e.g. in single and select buttons"
}, },
"dta_regular": { "dta_regular": {
"message": "DownThemAll!", "message": "TraitorousDownloading!",
"description": "Regular dta action; Menu text" "description": "Regular dta action; Menu text"
}, },
"dta_regular_all": { "dta_regular_all": {
"message": "DownThemAll! - Tüm Sekmeler", "message": "TraitorousDownloading! - Tüm Sekmeler",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_image": { "dta_regular_image": {
"message": "DownThemAll ile Görüntüyü Kaydet!", "message": "TraitorousDownloading ile Görüntüyü Kaydet!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_link": { "dta_regular_link": {
"message": "DownThemAll ile Bağlantıyı Kaydet!", "message": "TraitorousDownloading ile Bağlantıyı Kaydet!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_media": { "dta_regular_media": {
"message": "DownThemAll ile Medyayı Kaydet!", "message": "TraitorousDownloading ile Medyayı Kaydet!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_selection": { "dta_regular_selection": {
"message": "DownThemAll ile Seçimi Kaydet!", "message": "TraitorousDownloading ile Seçimi Kaydet!",
"description": "Menu text" "description": "Menu text"
}, },
"dta_turbo": { "dta_turbo": {
@ -321,7 +321,7 @@
}, },
"extensionDescription": { "extensionDescription": {
"message": "Tarayıcınız için Toplu İndirme", "message": "Tarayıcınız için Toplu İndirme",
"description": "DownThemAll! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one" "description": "TraitorousDownloading! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one"
}, },
"fastfiltering": { "fastfiltering": {
"message": "Hızlı Filtreleme", "message": "Hızlı Filtreleme",
@ -450,7 +450,7 @@
} }
}, },
"manager_title": { "manager_title": {
"message": "DownThemAll! Yöneticisi", "message": "TraitorousDownloading! Yöneticisi",
"description": "Window/tab title" "description": "Window/tab title"
}, },
"mask": { "mask": {
@ -486,7 +486,7 @@
"description": "Action for moving a download up" "description": "Action for moving a download up"
}, },
"nagging_message": { "nagging_message": {
"message": "DownThemAll! ile şimdiye kadar $DOWNLOADS$ indirme eklediniz! Normal bir kullanıcı olarak, daha fazla gelişimi desteklemek için bir bağış düşünebilirsiniz. Teşekkürler!", "message": "TraitorousDownloading! ile şimdiye kadar $DOWNLOADS$ indirme eklediniz! Normal bir kullanıcı olarak, daha fazla gelişimi desteklemek için bir bağış düşünebilirsiniz. Teşekkürler!",
"description": "Donation nagging message; displayed as a notification bar in manager", "description": "Donation nagging message; displayed as a notification bar in manager",
"placeholders": { "placeholders": {
"downloads": { "downloads": {
@ -566,7 +566,7 @@
"description": "Menu text; Preferences" "description": "Menu text; Preferences"
}, },
"prefs_title": { "prefs_title": {
"message": "DownThemAll! Tercihleri", "message": "TraitorousDownloading! Tercihleri",
"description": "Window/tab title; Preferences" "description": "Window/tab title; Preferences"
}, },
"pref_add_paused": { "pref_add_paused": {
@ -574,11 +574,11 @@
"description": "Preferences/General" "description": "Preferences/General"
}, },
"pref_button_type": { "pref_button_type": {
"message": "DownThemAll! düğmesi:", "message": "TraitorousDownloading! düğmesi:",
"description": "label" "description": "label"
}, },
"pref_button_type_dta": { "pref_button_type_dta": {
"message": "DownThemAll! seçimi", "message": "TraitorousDownloading! seçimi",
"description": "label" "description": "label"
}, },
"pref_button_type_manager": { "pref_button_type_manager": {
@ -1026,7 +1026,7 @@
"description": "Menu text; select context" "description": "Menu text; select context"
}, },
"select_title": { "select_title": {
"message": "DownThemAll! - İndirilenlerinizi seçin", "message": "TraitorousDownloading! - İndirilenlerinizi seçin",
"description": "Title of the select window" "description": "Title of the select window"
}, },
"SERVER_BAD_CONTENT": { "SERVER_BAD_CONTENT": {
@ -1070,7 +1070,7 @@
"description": "Header text; single window" "description": "Header text; single window"
}, },
"single_title": { "single_title": {
"message": "DownThemAll! - Bir bağlantı ekle", "message": "TraitorousDownloading! - Bir bağlantı ekle",
"description": "Title of single window" "description": "Title of single window"
}, },
"sizeB": { "sizeB": {

View File

@ -232,27 +232,27 @@
"description": "Download (verb/action); e.g. in single and select buttons" "description": "Download (verb/action); e.g. in single and select buttons"
}, },
"dta_regular": { "dta_regular": {
"message": "DownThemAll!", "message": "TraitorousDownloading!",
"description": "Regular dta action; Menu text" "description": "Regular dta action; Menu text"
}, },
"dta_regular_all": { "dta_regular_all": {
"message": "DownThemAll! - 全部标签页", "message": "TraitorousDownloading! - 全部标签页",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_image": { "dta_regular_image": {
"message": "用 DownThemAll! 保存图片", "message": "用 TraitorousDownloading! 保存图片",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_link": { "dta_regular_link": {
"message": "用 DownThemAll! 保存链接", "message": "用 TraitorousDownloading! 保存链接",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_media": { "dta_regular_media": {
"message": "用 DownThemAll! 保存媒体", "message": "用 TraitorousDownloading! 保存媒体",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_selection": { "dta_regular_selection": {
"message": "用 DownThemAll! 保存选中项", "message": "用 TraitorousDownloading! 保存选中项",
"description": "Menu text" "description": "Menu text"
}, },
"dta_turbo": { "dta_turbo": {
@ -321,7 +321,7 @@
}, },
"extensionDescription": { "extensionDescription": {
"message": "适用您浏览器的批量下载工具", "message": "适用您浏览器的批量下载工具",
"description": "DownThemAll! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one" "description": "TraitorousDownloading! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one"
}, },
"fastfiltering": { "fastfiltering": {
"message": "快速筛选", "message": "快速筛选",
@ -450,7 +450,7 @@
} }
}, },
"manager_title": { "manager_title": {
"message": "DownThemAll! 管理器", "message": "TraitorousDownloading! 管理器",
"description": "Window/tab title" "description": "Window/tab title"
}, },
"mask": { "mask": {
@ -486,7 +486,7 @@
"description": "Action for moving a download up" "description": "Action for moving a download up"
}, },
"nagging_message": { "nagging_message": {
"message": "您使用 DownThemAll! 至今已经添加了 $DOWNLOADS$ 个下载。作为一名普通用户,您可以考虑捐助来支持一下开发。多谢!", "message": "您使用 TraitorousDownloading! 至今已经添加了 $DOWNLOADS$ 个下载。作为一名普通用户,您可以考虑捐助来支持一下开发。多谢!",
"description": "Donation nagging message; displayed as a notification bar in manager", "description": "Donation nagging message; displayed as a notification bar in manager",
"placeholders": { "placeholders": {
"downloads": { "downloads": {
@ -566,7 +566,7 @@
"description": "Menu text; Preferences" "description": "Menu text; Preferences"
}, },
"prefs_title": { "prefs_title": {
"message": "DownThemAll! 首选项", "message": "TraitorousDownloading! 首选项",
"description": "Window/tab title; Preferences" "description": "Window/tab title; Preferences"
}, },
"pref_add_paused": { "pref_add_paused": {
@ -574,11 +574,11 @@
"description": "Preferences/General" "description": "Preferences/General"
}, },
"pref_button_type": { "pref_button_type": {
"message": "DownThemAll! 按钮:", "message": "TraitorousDownloading! 按钮:",
"description": "label" "description": "label"
}, },
"pref_button_type_dta": { "pref_button_type_dta": {
"message": "DownThemAll! 选择框", "message": "TraitorousDownloading! 选择框",
"description": "label" "description": "label"
}, },
"pref_button_type_manager": { "pref_button_type_manager": {
@ -1026,7 +1026,7 @@
"description": "Menu text; select context" "description": "Menu text; select context"
}, },
"select_title": { "select_title": {
"message": "DownThemAll! - 选择您要下载的内容", "message": "TraitorousDownloading! - 选择您要下载的内容",
"description": "Title of the select window" "description": "Title of the select window"
}, },
"SERVER_BAD_CONTENT": { "SERVER_BAD_CONTENT": {
@ -1070,7 +1070,7 @@
"description": "Header text; single window" "description": "Header text; single window"
}, },
"single_title": { "single_title": {
"message": "DownThemAll! - 添加链接", "message": "TraitorousDownloading! - 添加链接",
"description": "Title of single window" "description": "Title of single window"
}, },
"sizeB": { "sizeB": {

View File

@ -232,27 +232,27 @@
"description": "Download (verb/action); e.g. in single and select buttons" "description": "Download (verb/action); e.g. in single and select buttons"
}, },
"dta_regular": { "dta_regular": {
"message": "DownThemAll!", "message": "TraitorousDownloading!",
"description": "Regular dta action; Menu text" "description": "Regular dta action; Menu text"
}, },
"dta_regular_all": { "dta_regular_all": {
"message": "DownThemAll!- 全部分頁", "message": "TraitorousDownloading!- 全部分頁",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_image": { "dta_regular_image": {
"message": "以 DownThemAll! 儲存圖片", "message": "以 TraitorousDownloading! 儲存圖片",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_link": { "dta_regular_link": {
"message": "以 DownThemAll! 下載連結", "message": "以 TraitorousDownloading! 下載連結",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_media": { "dta_regular_media": {
"message": "以 DownThemAll! 儲存媒體檔案", "message": "以 TraitorousDownloading! 儲存媒體檔案",
"description": "Menu text" "description": "Menu text"
}, },
"dta_regular_selection": { "dta_regular_selection": {
"message": "以 DownThemAll! 儲存選取項目", "message": "以 TraitorousDownloading! 儲存選取項目",
"description": "Menu text" "description": "Menu text"
}, },
"dta_turbo": { "dta_turbo": {
@ -321,7 +321,7 @@
}, },
"extensionDescription": { "extensionDescription": {
"message": "為你瀏覽器而生的大量下載工具", "message": "為你瀏覽器而生的大量下載工具",
"description": "DownThemAll! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one" "description": "TraitorousDownloading! tagline, displayed in about:addons; Please do NOT refer to a specific browser such as firefox, as we will probably support more than one"
}, },
"fastfiltering": { "fastfiltering": {
"message": "快速篩選", "message": "快速篩選",
@ -450,7 +450,7 @@
} }
}, },
"manager_title": { "manager_title": {
"message": "DownThemAll!下載管理", "message": "TraitorousDownloading!下載管理",
"description": "Window/tab title" "description": "Window/tab title"
}, },
"mask": { "mask": {
@ -486,7 +486,7 @@
"description": "Action for moving a download up" "description": "Action for moving a download up"
}, },
"nagging_message": { "nagging_message": {
"message": "目前已透過DownThemAll! 加入 $DOWNLOADS$ 個下載您可以贊助我們支持更進一步的開發謝謝!", "message": "目前已透過TraitorousDownloading! 加入 $DOWNLOADS$ 個下載您可以贊助我們支持更進一步的開發謝謝!",
"description": "Donation nagging message; displayed as a notification bar in manager", "description": "Donation nagging message; displayed as a notification bar in manager",
"placeholders": { "placeholders": {
"downloads": { "downloads": {
@ -566,7 +566,7 @@
"description": "Menu text; Preferences" "description": "Menu text; Preferences"
}, },
"prefs_title": { "prefs_title": {
"message": "DownThemAll!偏好設定", "message": "TraitorousDownloading!偏好設定",
"description": "Window/tab title; Preferences" "description": "Window/tab title; Preferences"
}, },
"pref_add_paused": { "pref_add_paused": {
@ -574,11 +574,11 @@
"description": "Preferences/General" "description": "Preferences/General"
}, },
"pref_button_type": { "pref_button_type": {
"message": "DownThemAll! 按鈕:", "message": "TraitorousDownloading! 按鈕:",
"description": "label" "description": "label"
}, },
"pref_button_type_dta": { "pref_button_type_dta": {
"message": "DownThemAll! 選取", "message": "TraitorousDownloading! 選取",
"description": "label" "description": "label"
}, },
"pref_button_type_manager": { "pref_button_type_manager": {
@ -1026,7 +1026,7 @@
"description": "Menu text; select context" "description": "Menu text; select context"
}, },
"select_title": { "select_title": {
"message": "DownThemAll!- 選擇下載", "message": "TraitorousDownloading!- 選擇下載",
"description": "Title of the select window" "description": "Title of the select window"
}, },
"SERVER_BAD_CONTENT": { "SERVER_BAD_CONTENT": {
@ -1070,7 +1070,7 @@
"description": "Header text; single window" "description": "Header text; single window"
}, },
"single_title": { "single_title": {
"message": "DownThemAll!- 新增連結", "message": "TraitorousDownloading!- 新增連結",
"description": "Title of single window" "description": "Title of single window"
}, },
"sizeB": { "sizeB": {

File diff suppressed because one or more lines are too long

View File

@ -11,7 +11,7 @@ import { getManager } from "./manager/man";
import { select } from "./select"; import { select } from "./select";
import { single } from "./single"; import { single } from "./single";
import { Notification } from "./notifications"; import { Notification } from "./notifications";
import { MASK, FASTFILTER, SUBFOLDER } from "./recentlist"; import { MASK, FASTFILTER, SUBFOLDER, SERVER } from "./recentlist";
import { openManager } from "./windowutils"; import { openManager } from "./windowutils";
import { _ } from "./i18n"; import { _ } from "./i18n";
@ -20,7 +20,9 @@ const MAX_BATCH = 10000;
export interface QueueOptions { export interface QueueOptions {
mask?: string; mask?: string;
subfolder?: string; subfolder?: string;
server?: string;
paused?: boolean; paused?: boolean;
cookies?: boolean;
} }
export const API = new class APIImpl { export const API = new class APIImpl {
@ -32,8 +34,10 @@ export const API = new class APIImpl {
await Promise.all([MASK.init(), SUBFOLDER.init()]); await Promise.all([MASK.init(), SUBFOLDER.init()]);
const {mask = MASK.current} = options; const {mask = MASK.current} = options;
const {subfolder = SUBFOLDER.current} = options; const {subfolder = SUBFOLDER.current} = options;
const {server = SERVER.current} = options;
const {paused = false} = options; const {paused = false} = options;
const {cookies = false} = options;
const defaults: any = { const defaults: any = {
_idx: 0, _idx: 0,
get idx() { get idx() {
@ -49,8 +53,10 @@ export const API = new class APIImpl {
postData: null, postData: null,
mask, mask,
subfolder, subfolder,
server,
date: Date.now(), date: Date.now(),
paused paused,
cookies,
}; };
let currentBatch = await Prefs.get("currentBatch", 0); let currentBatch = await Prefs.get("currentBatch", 0);
const initialBatch = currentBatch; const initialBatch = currentBatch;
@ -80,7 +86,7 @@ export const API = new class APIImpl {
new Notification(null, _("queued-downloads", items.length)); new Notification(null, _("queued-downloads", items.length));
} }
} }
if (await Prefs.get("open-manager-on-queue")) { if (false && await Prefs.get("open-manager-on-queue")) {
await openManager(false); await openManager(false);
} }
} }
@ -124,6 +130,10 @@ export const API = new class APIImpl {
await SUBFOLDER.init(); await SUBFOLDER.init();
await SUBFOLDER.push(options.subfolder); await SUBFOLDER.push(options.subfolder);
} }
if (typeof options.server === "string" && !options.serverOnce) {
await SERVER.init();
await SERVER.push(options.server);
}
if (typeof options.type === "string") { if (typeof options.type === "string") {
await Prefs.set("last-type", options.type); await Prefs.set("last-type", options.type);
} }

View File

@ -27,6 +27,7 @@ import {
} from "./browser"; } from "./browser";
import { Bus } from "./bus"; import { Bus } from "./bus";
import { filterInSitu } from "./util"; import { filterInSitu } from "./util";
import { DB } from "./db";
const menus = typeof (_menus) !== "undefined" && _menus || _cmenus; const menus = typeof (_menus) !== "undefined" && _menus || _cmenus;
@ -106,19 +107,19 @@ class Handler {
async performSelection(options: SelectionOptions) { async performSelection(options: SelectionOptions) {
try { try {
const toptions: any = { const tabOptions: any = {
currentWindow: true, currentWindow: true,
discarded: false, discarded: false,
}; };
if (!CHROME) { if (!CHROME) {
toptions.hidden = false; tabOptions.hidden = false;
} }
const selectedTabs = options.allTabs ? const selectedTabs = options.allTabs ?
await tabs.query(toptions) as any[] : await tabs.query(tabOptions) as any[] :
[options.tab]; [options.tab];
const textLinks = await Prefs.get("text-links", true); const textLinks = await Prefs.get("text-links", true);
const goptions = { const gatherOptions = {
type: "DTA:gather", type: "DTA:gather",
selectionOnly: options.selectionOnly, selectionOnly: options.selectionOnly,
textLinks, textLinks,
@ -127,7 +128,7 @@ class Handler {
}; };
const results = await Promise.all(selectedTabs. const results = await Promise.all(selectedTabs.
map((tab: any) => runContentJob(tab, GATHER, goptions))); map((tab: any) => runContentJob(tab, GATHER, gatherOptions)));
await this.processResults(options.turbo, results.flat()); await this.processResults(options.turbo, results.flat());
} }
@ -153,14 +154,14 @@ runtime.onInstalled.addListener(({reason, previousVersion}: OnInstalled) => {
const major = getMajor(version); const major = getMajor(version);
const prevMajor = getMajor(previousVersion); const prevMajor = getMajor(previousVersion);
if (reason === "update" && major !== prevMajor) { if (reason === "update" && major !== prevMajor) {
tabs.create({ // tabs.create({
url: `https://about.downthemall.org/changelog/?cur=${major}&prev=${prevMajor}`, // url: `https://about.downthemall.org/changelog/?cur=${major}&prev=${prevMajor}`,
}); // });
} }
else if (reason === "install") { else if (reason === "install") {
tabs.create({ // tabs.create({
url: `https://about.downthemall.org/4.0/?cur=${major}`, // url: `https://about.downthemall.org/4.0/?cur=${major}`,
}); // });
} }
}); });
@ -170,7 +171,7 @@ locale.then(() => {
super(); super();
this.onClicked = this.onClicked.bind(this); this.onClicked = this.onClicked.bind(this);
const alls = new Map<string, string[]>(); const alls = new Map<string, string[]>();
const mcreate = (options: any) => { const menuCreate = (options: any) => {
if (CHROME) { if (CHROME) {
delete options.icons; delete options.icons;
options.contexts = options.contexts. options.contexts = options.contexts.
@ -184,7 +185,7 @@ locale.then(() => {
} }
menus.create(options); menus.create(options);
}; };
mcreate({ menuCreate({
id: "DTARegularLink", id: "DTARegularLink",
contexts: ["link"], contexts: ["link"],
icons: { icons: {
@ -193,7 +194,7 @@ locale.then(() => {
}, },
title: _("dta.regular.link"), title: _("dta.regular.link"),
}); });
mcreate({ menuCreate({
id: "DTATurboLink", id: "DTATurboLink",
contexts: ["link"], contexts: ["link"],
icons: { icons: {
@ -202,7 +203,7 @@ locale.then(() => {
}, },
title: _("dta.turbo.link"), title: _("dta.turbo.link"),
}); });
mcreate({ menuCreate({
id: "DTARegularImage", id: "DTARegularImage",
contexts: ["image"], contexts: ["image"],
icons: { icons: {
@ -211,7 +212,7 @@ locale.then(() => {
}, },
title: _("dta.regular.image"), title: _("dta.regular.image"),
}); });
mcreate({ menuCreate({
id: "DTATurboImage", id: "DTATurboImage",
contexts: ["image"], contexts: ["image"],
icons: { icons: {
@ -220,7 +221,7 @@ locale.then(() => {
}, },
title: _("dta.turbo.image"), title: _("dta.turbo.image"),
}); });
mcreate({ menuCreate({
id: "DTARegularMedia", id: "DTARegularMedia",
contexts: ["video", "audio"], contexts: ["video", "audio"],
icons: { icons: {
@ -229,7 +230,7 @@ locale.then(() => {
}, },
title: _("dta.regular.media"), title: _("dta.regular.media"),
}); });
mcreate({ menuCreate({
id: "DTATurboMedia", id: "DTATurboMedia",
contexts: ["video", "audio"], contexts: ["video", "audio"],
icons: { icons: {
@ -238,7 +239,7 @@ locale.then(() => {
}, },
title: _("dta.turbo.media"), title: _("dta.turbo.media"),
}); });
mcreate({ menuCreate({
id: "DTARegularSelection", id: "DTARegularSelection",
contexts: ["selection"], contexts: ["selection"],
icons: { icons: {
@ -247,7 +248,7 @@ locale.then(() => {
}, },
title: _("dta.regular.selection"), title: _("dta.regular.selection"),
}); });
mcreate({ menuCreate({
id: "DTATurboSelection", id: "DTATurboSelection",
contexts: ["selection"], contexts: ["selection"],
icons: { icons: {
@ -256,7 +257,7 @@ locale.then(() => {
}, },
title: _("dta.turbo.selection"), title: _("dta.turbo.selection"),
}); });
mcreate({ menuCreate({
id: "DTARegular", id: "DTARegular",
contexts: ["all", "browser_action", "tools_menu"], contexts: ["all", "browser_action", "tools_menu"],
icons: { icons: {
@ -265,7 +266,7 @@ locale.then(() => {
}, },
title: _("dta.regular"), title: _("dta.regular"),
}); });
mcreate({ menuCreate({
id: "DTATurbo", id: "DTATurbo",
contexts: ["all", "browser_action", "tools_menu"], contexts: ["all", "browser_action", "tools_menu"],
icons: { icons: {
@ -274,12 +275,12 @@ locale.then(() => {
}, },
title: _("dta.turbo"), title: _("dta.turbo"),
}); });
mcreate({ menuCreate({
id: "sep-1", id: "sep-1",
contexts: ["all", "browser_action", "tools_menu"], contexts: ["all", "browser_action", "tools_menu"],
type: "separator" type: "separator"
}); });
mcreate({ menuCreate({
id: "DTARegularAll", id: "DTARegularAll",
contexts: ["all", "browser_action", "tools_menu"], contexts: ["all", "browser_action", "tools_menu"],
icons: { icons: {
@ -288,7 +289,7 @@ locale.then(() => {
}, },
title: _("dta-regular-all"), title: _("dta-regular-all"),
}); });
mcreate({ menuCreate({
id: "DTATurboAll", id: "DTATurboAll",
contexts: ["all", "browser_action", "tools_menu"], contexts: ["all", "browser_action", "tools_menu"],
icons: { icons: {
@ -300,12 +301,12 @@ locale.then(() => {
const sep2ctx = menus.ACTION_MENU_TOP_LEVEL_LIMIT === 6 ? const sep2ctx = menus.ACTION_MENU_TOP_LEVEL_LIMIT === 6 ?
["all", "tools_menu"] : ["all", "tools_menu"] :
["all", "browser_action", "tools_menu"]; ["all", "browser_action", "tools_menu"];
mcreate({ menuCreate({
id: "sep-2", id: "sep-2",
contexts: sep2ctx, contexts: sep2ctx,
type: "separator" type: "separator"
}); });
mcreate({ menuCreate({
id: "DTAAdd", id: "DTAAdd",
contexts: ["all", "browser_action", "tools_menu"], contexts: ["all", "browser_action", "tools_menu"],
icons: { icons: {
@ -316,12 +317,12 @@ locale.then(() => {
}, },
title: _("add-download"), title: _("add-download"),
}); });
mcreate({ menuCreate({
id: "sep-3", id: "sep-3",
contexts: ["all", "browser_action", "tools_menu"], contexts: ["all", "browser_action", "tools_menu"],
type: "separator" type: "separator"
}); });
mcreate({ /* menuCreate({
id: "DTAManager", id: "DTAManager",
contexts: ["all", "browser_action", "tools_menu"], contexts: ["all", "browser_action", "tools_menu"],
icons: { icons: {
@ -329,8 +330,8 @@ locale.then(() => {
32: "/style/button-manager@2x.png", 32: "/style/button-manager@2x.png",
}, },
title: _("manager.short"), title: _("manager.short"),
}); });*/
mcreate({ menuCreate({
id: "DTAPrefs", id: "DTAPrefs",
contexts: ["all", "browser_action", "tools_menu"], contexts: ["all", "browser_action", "tools_menu"],
icons: { icons: {
@ -662,6 +663,13 @@ locale.then(() => {
await sessionRemover(); await sessionRemover();
} }
try {
await DB.init();
}
catch (ex) {
console.error("db init", ex.toString(), ex.message, ex.stack, ex);
}
await Prefs.set("last-run", new Date()); await Prefs.set("last-run", new Date());
await filters(); await filters();
await getManager(); await getManager();

132
lib/db.ts
View File

@ -1,17 +1,25 @@
"use strict"; "use strict";
// License: MIT
// eslint-disable-next-line no-unused-vars // eslint-disable-next-line no-unused-vars
import { BaseItem } from "./item"; import { BaseItem } from "./item";
// eslint-disable-next-line no-unused-vars // eslint-disable-next-line no-unused-vars
import { Download } from "./manager/download"; import { Download } from "./manager/download";
import { RUNNING, QUEUED, RETRYING } from "./manager/state"; import { RUNNING, QUEUED, RETRYING } from "./manager/state";
import { storage } from "./browser";
// License: MIT import { sort } from "./sorting";
const VERSION = 1; const VERSION = 1;
const STORE = "queue"; const STORE = "queue";
export const DB = new class DB { interface Database {
init(): Promise<void>;
saveItems(items: Download[]): Promise<unknown>;
deleteItems(items: any[]): Promise<void>;
getAll(): Promise<BaseItem[]>;
}
export class IDB implements Database {
private db?: IDBDatabase; private db?: IDBDatabase;
constructor() { constructor() {
@ -106,7 +114,7 @@ export const DB = new class DB {
return await new Promise(this.saveItemsInternal.bind(this, items)); return await new Promise(this.saveItemsInternal.bind(this, items));
} }
deleteItemsInternal(items: any[], resolve: Function, reject: Function) { deleteItemsInternal(items: any[], resolve: () => void, reject: Function) {
if (!items || !items.length || !this.db) { if (!items || !items.length || !this.db) {
resolve(); resolve();
return; return;
@ -139,4 +147,120 @@ export const DB = new class DB {
await this.init(); await this.init();
await new Promise(this.deleteItemsInternal.bind(this, items)); await new Promise(this.deleteItemsInternal.bind(this, items));
} }
}
class StorageDB implements Database {
private counter = 1;
async init(): Promise<void> {
const {db = null} = await storage.local.get("db");
if (!db || !db.counter) {
return;
}
this.counter = db.counter;
}
async saveItems(items: Download[]) {
const db: any = {items: []};
for (const item of items) {
if (!item.dbId) {
item.dbId = ++this.counter;
}
db.items.push(item.toJSON());
}
db.counter = this.counter;
await storage.local.set({db});
}
async deleteItems(items: any[]): Promise<void> {
const gone = new Set(items.map(i => i.dbId));
const {db = null} = await storage.local.get("db");
if (!db) {
return;
}
db.items = db.items.filter((i: any) => !gone.has(i.dbId));
await storage.local.set({db});
}
async getAll() {
const {db = null} = await storage.local.get("db");
if (!db || !Array.isArray(db.items)) {
return [];
}
return sort(db.items, (i: any) => i.position) as BaseItem[];
}
}
class MemoryDB implements Database {
private counter = 1;
private items = new Map();
init(): Promise<void> {
return Promise.resolve();
}
saveItems(items: Download[]) {
for (const item of items) {
if (item.private) {
continue;
}
if (!item.dbId) {
item.dbId = ++this.counter;
}
this.items.set(item.dbId, item.toJSON());
}
return Promise.resolve();
}
deleteItems(items: any[]) {
for (const item of items) {
if (!("dbId" in item)) {
continue;
}
this.items.delete(item.dbId);
}
return Promise.resolve();
}
getAll(): Promise<BaseItem[]> {
return Promise.resolve(Array.from(this.items.values()));
}
}
export const DB = new class DBWrapper implements Database {
saveItems(items: Download[]): Promise<unknown> {
return this.db.saveItems(items);
}
deleteItems(items: any[]): Promise<void> {
return this.db.deleteItems(items);
}
getAll(): Promise<BaseItem[]> {
return this.db.getAll();
}
private db: Database;
async init() {
try {
this.db = new IDB();
await this.db.init();
}
catch (ex) {
console.warn(
"Failed to initialize idb backend, using storage db fallback", ex);
try {
this.db = new StorageDB();
await this.db.init();
}
catch (ex) {
console.warn(
"Failed to initialize storage backend, using memory db fallback", ex);
this.db = new MemoryDB();
await this.db.init();
}
}
}
}(); }();

View File

@ -4,7 +4,7 @@
import {memoize} from "./memoize"; import {memoize} from "./memoize";
import langs from "../_locales/all.json"; import langs from "../_locales/all.json";
import { sorted, naturalCaseCompare } from "./sorting"; import { sorted, naturalCaseCompare } from "./sorting";
import lf from "localforage";
export const ALL_LANGS = Object.freeze(new Map<string, string>( export const ALL_LANGS = Object.freeze(new Map<string, string>(
sorted(Object.entries(langs), e => { sorted(Object.entries(langs), e => {
@ -40,11 +40,11 @@ class Entry {
this.message = entry.message.replace(/\$[A-Z0-9]+\$/g, (r: string) => { this.message = entry.message.replace(/\$[A-Z0-9]+\$/g, (r: string) => {
hit = true; hit = true;
const id = r.substr(1, r.length - 2).toLocaleLowerCase(); const id = r.substr(1, r.length - 2).toLocaleLowerCase();
const pholder = entry.placeholders[id]; const placeholder = entry.placeholders[id];
if (!pholder || !pholder.content) { if (!placeholder || !placeholder.content) {
throw new Error(`Invalid placeholder: ${id}`); throw new Error(`Invalid placeholder: ${id}`);
} }
return `${pholder.content}$`; return `${placeholder.content}$`;
}); });
if (!hit) { if (!hit) {
throw new Error("Not entry-able"); throw new Error("Not entry-able");
@ -123,14 +123,17 @@ async function fetchLanguage(code: string) {
} }
function loadCached() { async function loadCached(): Promise<any> {
if (document.location.pathname.includes("/windows/")) { const cached = await lf.getItem<string>(CACHE_KEY);
const cached = localStorage.getItem(CACHE_KEY); if (!cached) {
if (cached) { return null;
return JSON.parse(cached) as any[];
}
} }
return null; const parsed = JSON.parse(cached);
if (!Array.isArray(parsed) || !parsed[0].CRASH || !parsed[0].CRASH.message) {
console.warn("rejecting cached locales", parsed);
return null;
}
return parsed;
} }
async function loadRawLocales() { async function loadRawLocales() {
@ -187,16 +190,16 @@ async function load(): Promise<Localization> {
} }
CURRENT = currentLang; CURRENT = currentLang;
// en is the base locale // en is the base locale
let valid = loadCached(); let valid = await loadCached();
if (!valid) { if (!valid) {
valid = await loadRawLocales(); valid = await loadRawLocales();
localStorage.setItem(CACHE_KEY, JSON.stringify(valid)); await lf.setItem(CACHE_KEY, JSON.stringify(valid));
} }
if (!valid.length) { if (!valid.length) {
throw new Error("Could not lood ANY of these locales"); throw new Error("Could not load ANY of these locales");
} }
const custom = localStorage.getItem(CUSTOM_KEY); const custom = await lf.getItem<string>(CUSTOM_KEY);
if (custom) { if (custom) {
try { try {
valid.push(JSON.parse(custom)); valid.push(JSON.parse(custom));
@ -239,7 +242,7 @@ locale.then(l => {
/** /**
* Localize a message * Localize a message
* @param {string} id Identifier of the string to localize * @param {string} id Identifier of the string to localize
* @param {string[]} [subst] Message substituations * @param {string[]} [subst] Message substitutions
* @returns {string} Localized message * @returns {string} Localized message
*/ */
export function _(id: string, ...subst: any[]) { export function _(id: string, ...subst: any[]) {
@ -302,11 +305,11 @@ export async function localize<T extends HTMLElement | DocumentFragment>(
return localize_(elem); return localize_(elem);
} }
export function saveCustomLocale(data?: string) { export async function saveCustomLocale(data?: string) {
if (!data) { if (!data) {
localStorage.removeItem(CUSTOM_KEY); await lf.removeItem(CUSTOM_KEY);
return; return;
} }
new Localization(JSON.parse(data)); new Localization(JSON.parse(data));
localStorage.setItem(CUSTOM_KEY, data); await localStorage.setItem(CUSTOM_KEY, data);
} }

View File

@ -4,9 +4,11 @@
import { downloads, CHROME } from "./browser"; import { downloads, CHROME } from "./browser";
import { EventEmitter } from "../uikit/lib/events"; import { EventEmitter } from "../uikit/lib/events";
import { PromiseSerializer } from "./pserializer"; import { PromiseSerializer } from "./pserializer";
import lf from "localforage";
const VERSION = 1;
const STORE = "iconcache"; const STORE = "iconcache";
// eslint-disable-next-line no-magic-numbers // eslint-disable-next-line no-magic-numbers
const CACHE_SIZES = CHROME ? [16, 32] : [16, 32, 64, 127]; const CACHE_SIZES = CHROME ? [16, 32] : [16, 32, 64, 127];
@ -48,37 +50,17 @@ const SYNONYMS = Object.freeze(new Map<string, string>([
])); ]));
export const IconCache = new class IconCache extends EventEmitter { export const IconCache = new class IconCache extends EventEmitter {
private db: Promise<IDBDatabase>; private db = lf.createInstance({name: STORE});
private cache: Map<string, string>; private cache: Map<string, string>;
constructor() { constructor() {
super(); super();
this.db = this.init();
this.cache = new Map(); this.cache = new Map();
this.get = PromiseSerializer.wrapNew(8, this, this.get); this.get = PromiseSerializer.wrapNew(8, this, this.get);
this.set = PromiseSerializer.wrapNew(1, this, this.set); this.set = PromiseSerializer.wrapNew(1, this, this.set);
} }
private async init() {
return await new Promise<IDBDatabase>((resolve, reject) => {
const req = indexedDB.open(STORE, VERSION);
req.onupgradeneeded = evt => {
const db = req.result;
switch (evt.oldVersion) {
case 0: {
db.createObjectStore(STORE);
break;
}
}
};
req.onerror = ex => reject(ex);
req.onsuccess = () => {
resolve(req.result);
};
});
}
private normalize(ext: string) { private normalize(ext: string) {
ext = ext.toLocaleLowerCase(); ext = ext.toLocaleLowerCase();
return SYNONYMS.get(ext) || ext; return SYNONYMS.get(ext) || ext;
@ -95,36 +77,25 @@ export const IconCache = new class IconCache extends EventEmitter {
if (rv) { if (rv) {
return rv; return rv;
} }
const db = await this.db;
rv = this.cache.get(sext); rv = this.cache.get(sext);
if (rv) { if (rv) {
return rv; return rv;
} }
return await new Promise<string | undefined>(resolve => { let result = await this.db.getItem<any>(sext);
const trans = db.transaction(STORE, "readonly"); if (!result) {
trans.onerror = () => resolve(undefined); return this.cache.get(sext);
const store = trans.objectStore(STORE); }
const req = store.get(sext); rv = this.cache.get(sext);
req.onerror = () => resolve(undefined); if (rv) {
req.onsuccess = () => { return rv;
const rv = this.cache.get(sext); }
if (rv) { if (typeof result !== "string") {
resolve(rv); result = URL.createObjectURL(result).toString();
return; }
}
let {result} = req; this.cache.set(sext, result);
if (!result) { this.cache.set(ext, "");
resolve(undefined); return result;
return;
}
if (typeof req.result !== "string") {
result = URL.createObjectURL(result).toString();
}
this.cache.set(sext, result);
this.cache.set(ext, "");
resolve(result);
};
});
} }
async set(ext: string, manId: number) { async set(ext: string, manId: number) {
@ -145,18 +116,9 @@ export const IconCache = new class IconCache extends EventEmitter {
} }
for (const {size, icon} of urls) { for (const {size, icon} of urls) {
this.cache.set(`${ext}-${size}`, URL.createObjectURL(icon)); this.cache.set(`${ext}-${size}`, URL.createObjectURL(icon));
await this.db.setItem(`${ext}-${size}`, icon);
} }
this.cache.set(ext, ""); this.cache.set(ext, "");
const db = await this.db;
await new Promise((resolve, reject) => {
const trans = db.transaction(STORE, "readwrite");
trans.onerror = reject;
trans.oncomplete = resolve;
const store = trans.objectStore(STORE);
for (const {size, icon} of urls) {
store.put(icon, `${ext}-${size}`);
}
});
this.emit("cached", ext); this.emit("cached", ext);
} }
}(); }();

View File

@ -81,6 +81,14 @@ function importMeta4(data: string) {
if (mask) { if (mask) {
item.mask = mask; item.mask = mask;
} }
const description = file.querySelector("description");
if (description && description.textContent) {
item.description = description.textContent.trim();
}
const title = file.getElementsByTagNameNS(NS_DTA, "title");
if (title && title[0] && title[0].textContent) {
item.title = title[0].textContent;
}
items.push(item); items.push(item);
} }
catch (ex) { catch (ex) {
@ -94,9 +102,9 @@ function parseKV(current: BaseItem, line: string) {
const [k, v] = line.split("=", 2); const [k, v] = line.split("=", 2);
switch (k.toLocaleLowerCase().trim()) { switch (k.toLocaleLowerCase().trim()) {
case "referer": { case "referer": {
const rurls = getTextLinks(v); const refererUrls = getTextLinks(v);
if (rurls && rurls.length) { if (refererUrls && refererUrls.length) {
current.referrer = rurls.pop(); current.referrer = refererUrls.pop();
current.usableReferrer = decodeURIComponent(current.referrer || ""); current.usableReferrer = decodeURIComponent(current.referrer || "");
} }
break; break;
@ -197,15 +205,15 @@ class MetalinkExporter {
const document = window.document.implementation. const document = window.document.implementation.
createDocument(NS_METALINK_RFC5854, "metalink", null); createDocument(NS_METALINK_RFC5854, "metalink", null);
const root = document.documentElement; const root = document.documentElement;
root.setAttributeNS(NS_DTA, "generator", "DownThemAll!"); root.setAttributeNS(NS_DTA, "generator", "TraitorousDownloading!");
root.appendChild(document.createComment( root.appendChild(document.createComment(
"metalink as exported by DownThemAll!", "metalink as exported by TraitorousDownloading!",
)); ));
for (const item of items) { for (const item of items) {
const aitem = item as any; const anyItem = item as any;
const f = document.createElementNS(NS_METALINK_RFC5854, "file"); const f = document.createElementNS(NS_METALINK_RFC5854, "file");
f.setAttribute("name", aitem.currentName); f.setAttribute("name", anyItem.currentName);
if (item.batch) { if (item.batch) {
f.setAttributeNS(NS_DTA, "num", item.batch.toString()); f.setAttributeNS(NS_DTA, "num", item.batch.toString());
} }
@ -225,13 +233,19 @@ class MetalinkExporter {
f.appendChild(n); f.appendChild(n);
} }
if (item.title) {
const n = document.createElementNS(NS_DTA, "title");
n.textContent = item.title;
f.appendChild(n);
}
const u = document.createElementNS(NS_METALINK_RFC5854, "url"); const u = document.createElementNS(NS_METALINK_RFC5854, "url");
u.textContent = item.url; u.textContent = item.url;
f.appendChild(u); f.appendChild(u);
if (aitem.totalSize > 0) { if (anyItem.totalSize > 0) {
const s = document.createElementNS(NS_METALINK_RFC5854, "size"); const s = document.createElementNS(NS_METALINK_RFC5854, "size");
s.textContent = aitem.totalSize.toString(); s.textContent = anyItem.totalSize.toString();
f.appendChild(s); f.appendChild(s);
} }
root.appendChild(f); root.appendChild(f);

View File

@ -32,7 +32,8 @@ const OPTIONPROPS = Object.freeze([
"startDate", "startDate",
"private", "private",
"postData", "postData",
"paused" "paused",
"server", "cookies",
]); ]);
function maybeAssign(options: any, what: any) { function maybeAssign(options: any, what: any) {

View File

@ -16,7 +16,7 @@ import {
DONE, DONE,
FORCABLE, FORCABLE,
MISSING, MISSING,
PAUSABLE, PAUSEABLE,
PAUSED, PAUSED,
QUEUED, QUEUED,
RUNNING, RUNNING,
@ -235,7 +235,7 @@ export class Download extends BaseDownload {
} }
async pause(retry?: boolean) { async pause(retry?: boolean) {
if (!(PAUSABLE & this.state)) { if (!(PAUSEABLE & this.state)) {
return; return;
} }
@ -277,7 +277,7 @@ export class Download extends BaseDownload {
await downloads.cancel(id); await downloads.cancel(id);
} }
catch (ex) { catch (ex) {
// ingored // ignored
} }
await new Promise(r => setTimeout(r, 1000)); await new Promise(r => setTimeout(r, 1000));
try { try {
@ -285,7 +285,7 @@ export class Download extends BaseDownload {
} }
catch (ex) { catch (ex) {
console.error(id, ex.toString(), ex); console.error(id, ex.toString(), ex);
// ingored // ignored
} }
} }
@ -399,7 +399,7 @@ export class Download extends BaseDownload {
} }
} }
updatefromSuggestion(state: any) { updateFromSuggestion(state: any) {
const res: PrerollResults = {}; const res: PrerollResults = {};
if (state.mime) { if (state.mime) {
res.mime = state.mime; res.mime = state.mime;

View File

@ -17,6 +17,7 @@ import { ManagerPort } from "./port";
import { Scheduler } from "./scheduler"; import { Scheduler } from "./scheduler";
import { Limits } from "./limits"; import { Limits } from "./limits";
import { downloads, runtime, webRequest, CHROME, OPERA } from "../browser"; import { downloads, runtime, webRequest, CHROME, OPERA } from "../browser";
import { browser } from "webextension-polyfill-ts";
const US = runtime.getURL(""); const US = runtime.getURL("");
@ -91,11 +92,11 @@ export class Manager extends EventEmitter {
} }
Bus.onPort("manager", (port: Port) => { Bus.onPort("manager", (port: Port) => {
const mport = new ManagerPort(this, port); const managerPort = new ManagerPort(this, port);
port.on("disconnect", () => { port.on("disconnect", () => {
this.ports.delete(mport); this.ports.delete(managerPort);
}); });
this.ports.add(mport); this.ports.add(managerPort);
return true; return true;
}); });
Limits.on("changed", () => { Limits.on("changed", () => {
@ -126,7 +127,7 @@ export class Manager extends EventEmitter {
// Do not wait for the scheduler // Do not wait for the scheduler
this.resetScheduler(); this.resetScheduler();
this.emit("inited"); this.emit("initialized");
setTimeout(() => this.checkMissing(), MISSING_TIMEOUT); setTimeout(() => this.checkMissing(), MISSING_TIMEOUT);
runtime.onUpdateAvailable.addListener(() => { runtime.onUpdateAvailable.addListener(() => {
if (this.running.size) { if (this.running.size) {
@ -171,7 +172,7 @@ export class Manager extends EventEmitter {
return; return;
} }
try { try {
download.updatefromSuggestion(state); download.updateFromSuggestion(state);
} }
finally { finally {
const suggestion = {filename: download.dest.full}; const suggestion = {filename: download.dest.full};
@ -261,6 +262,61 @@ export class Manager extends EventEmitter {
this.manIds.delete(id); this.manIds.delete(id);
} }
async prepareItems(items: any[]) {
var links = new Array();
for (var item of items) {
var cookiesToSend = Array();
var cs = await browser.cookies.getAll({
url: item.url,
firstPartyDomain: null,
});
if (item.cookies) {
for (var c of cs){
cookiesToSend.push({
name: c.name,
value: c.value,
domain: c.domain,
// expires: new Date(c.expirationDate * 1000) ?? null,
path: c.path,
secure: c.secure,
httponly: c.httpOnly,
// samesite: c.sameSite,
});
}
}
var status = item.paused ? "Paused":"Queue";
links.push({
description: item.description,
filename: item.fileName,
mask: item.mask,
status: status,
postData: item.postData,
subdir: item.subfolder,
title: item.title,
url: item.usable,
referrer: item.usableReferrer,
cookies: cookiesToSend,
});
}
return links;
}
addNewDownloads(items: any[]) {
if (!items || !items.length) {
return;
}
this.prepareItems(items).then(links => {
var xhr = new XMLHttpRequest();
xhr.open("POST", items[0].server);
xhr.setRequestHeader("Content-Type", "application/javascript");
xhr.send(JSON.stringify(links));
});
}
/*
addNewDownloads(items: any[]) { addNewDownloads(items: any[]) {
if (!items || !items.length) { if (!items || !items.length) {
return; return;
@ -283,6 +339,7 @@ export class Manager extends EventEmitter {
this.save(items); this.save(items);
this.startNext(); this.startNext();
} }
*/
setDirty(item: Download) { setDirty(item: Download) {
this.dirty.add(item); this.dirty.add(item);
@ -358,8 +415,8 @@ export class Manager extends EventEmitter {
this.startNext().catch(console.error); this.startNext().catch(console.error);
} }
else if (newState === RUNNING) { else if (newState === RUNNING) {
// Usually we already added it. Buit if a user uses the built-in // Usually we already added it. But if a user uses the built-in
// download manager to resart // download manager to restart
// a download, we have not, so make sure it is added either way // a download, we have not, so make sure it is added either way
this.running.add(download); this.running.add(download);
} }
@ -417,17 +474,18 @@ export class Manager extends EventEmitter {
sorted(sids: number[]) { sorted(sids: number[]) {
try { try {
// Construct new items // Construct new items
const csids = new Map(this.sids); const currentSids = new Map(this.sids);
let items = mapFilterInSitu(sids, sid => { let items = mapFilterInSitu(sids, sid => {
const item = csids.get(sid); const item = currentSids.get(sid);
if (!item) { if (!item) {
return null; return null;
} }
csids.delete(sid); currentSids.delete(sid);
return item; return item;
}, e => !!e); }, e => !!e);
if (csids.size) { if (currentSids.size) {
items = items.concat(sort(Array.from(csids.values()), i => i.position)); items = items.concat(
sort(Array.from(currentSids.values()), i => i.position));
} }
this.items = items; this.items = items;
this.setPositions(); this.setPositions();

View File

@ -12,5 +12,5 @@ export const RETRYING = 1 << 7;
export const RESUMABLE = PAUSED | CANCELED | RETRYING; export const RESUMABLE = PAUSED | CANCELED | RETRYING;
export const FORCABLE = PAUSED | QUEUED | CANCELED | RETRYING; export const FORCABLE = PAUSED | QUEUED | CANCELED | RETRYING;
export const PAUSABLE = QUEUED | CANCELED | RUNNING | RETRYING; export const PAUSEABLE = QUEUED | CANCELED | RUNNING | RETRYING;
export const CANCELABLE = QUEUED | RUNNING | PAUSED | DONE | MISSING | RETRYING; export const CANCELABLE = QUEUED | RUNNING | PAUSED | DONE | MISSING | RETRYING;

View File

@ -8,7 +8,7 @@ import {EventEmitter} from "./events";
const DEFAULTS = { const DEFAULTS = {
type: "basic", type: "basic",
iconUrl: extension.getURL("/style/icon64.png"), iconUrl: extension.getURL("/style/icon64.png"),
title: "DownThemAll!", title: "TraitorousDownloading!",
message: "message", message: "message",
}; };
@ -25,7 +25,7 @@ export class Notification extends EventEmitter {
super(); super();
this.generated = !id; this.generated = !id;
id = id || `DownThemAll-notification${++gid}`; id = id || `TraitorousDownloading-notification${++gid}`;
if (typeof options === "string") { if (typeof options === "string") {
options = {message: options}; options = {message: options};
} }

View File

@ -122,3 +122,8 @@ export const SUBFOLDER = new RecentList("subfolder", [
"downthemall", "downthemall",
]); ]);
SUBFOLDER.init().catch(console.error); SUBFOLDER.init().catch(console.error);
export const SERVER = new RecentList("server", [
"",
]);
SERVER.init().catch(console.error);

View File

@ -1,11 +1,11 @@
{ {
"manifest_version": 2, "manifest_version": 2,
"name": "DownThemAll!", "name": "TraitorousDownloading!",
"version": "4.2.6", "version": "4.2.6",
"description": "__MSG_extensionDescription__", "description": "__MSG_extensionDescription__",
"homepage_url": "https://downthemall.org/", "homepage_url": "https://github.com/lordwelch/downthemall",
"author": "Nils Maier", "author": "lordwelch",
"default_locale": "en", "default_locale": "en",
@ -23,6 +23,7 @@
"permissions": [ "permissions": [
"<all_urls>", "<all_urls>",
"contextMenus", "contextMenus",
"cookies",
"downloads", "downloads",
"downloads.open", "downloads.open",
"downloads.shelf", "downloads.shelf",
@ -56,7 +57,7 @@
"128": "style/icon128.png", "128": "style/icon128.png",
"256": "style/icon256.png" "256": "style/icon256.png"
}, },
"default_title": "DownThemAll!" "default_title": "TraitorousDownloading!"
}, },
"options_ui": { "options_ui": {
@ -66,7 +67,7 @@
"browser_specific_settings": { "browser_specific_settings": {
"gecko": { "gecko": {
"id": "dtalite@downthemall.org", "id": "downloading@traitorousenterprises.net",
"strict_min_version": "67.0" "strict_min_version": "67.0"
} }
} }

View File

@ -1,7 +1,7 @@
{ {
"name": "dtalite", "name": "tdl",
"version": "4.0.0", "version": "4.0.0",
"description": "DownThemAll! lite", "description": "TraitorousDownloading!",
"main": "main.js", "main": "main.js",
"directories": { "directories": {
"lib": "lib" "lib": "lib"
@ -35,8 +35,10 @@
"dependencies": { "dependencies": {
"@types/psl": "^1.1.0", "@types/psl": "^1.1.0",
"@types/whatwg-mimetype": "^2.1.0", "@types/whatwg-mimetype": "^2.1.0",
"localforage": "^1.9.0",
"psl": "^1.4.0", "psl": "^1.4.0",
"webextension-polyfill": "^0.5.0", "webextension-polyfill": "^0.5.0",
"webextension-polyfill-ts": "^0.22.0",
"whatwg-mimetype": "^2.3.0" "whatwg-mimetype": "^2.3.0"
} }
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 763 B

After

Width:  |  Height:  |  Size: 747 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 725 B

After

Width:  |  Height:  |  Size: 711 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 130 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 785 B

After

Width:  |  Height:  |  Size: 810 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

View File

@ -64,7 +64,7 @@ p.example {
} }
#options > #subfolderOptions, #options > #subfolderOptions,
#options > #maskOptions { #options > #maskOptions, #options > #serverOptions {
display: grid; display: grid;
grid-template-columns: 2fr auto auto; grid-template-columns: 2fr auto auto;
} }

View File

@ -108,8 +108,13 @@ export class MenuItem extends MenuItemBase {
super(owner, id, text, options); super(owner, id, text, options);
this.disabled = options.disabled === "true"; this.disabled = options.disabled === "true";
this.elem.setAttribute("aria-role", "menuitem"); this.elem.setAttribute("aria-role", "menuitem");
this.elem.addEventListener( this.clicked = this.clicked.bind(this);
"click", () => this.owner.emit("clicked", this.id, this.autoHide)); this.elem.addEventListener("click", this.clicked);
this.elem.addEventListener("contextmenu", this.clicked);
}
clicked() {
this.owner.emit("clicked", this.id, this.autoHide);
} }
get disabled() { get disabled() {

View File

@ -20,7 +20,7 @@ FILES = [
"LICENSE.*", "LICENSE.*",
] ]
RELEASE_ID = "{DDC359D1-844A-42a7-9AA1-88A850A938A8}" RELEASE_ID = "downloading@traitorousenterprises.net"
UNCOMPRESSABLE = set((".png", ".jpg", ".zip", ".woff2")) UNCOMPRESSABLE = set((".png", ".jpg", ".zip", ".woff2"))
LICENSED = set((".css", ".html", ".js", "*.ts")) LICENSED = set((".css", ".html", ".js", "*.ts"))
@ -88,14 +88,14 @@ def build_firefox(args):
if args.mode != "release": if args.mode != "release":
infos["version_name"] = f"{version}-{args.mode}" infos["version_name"] = f"{version}-{args.mode}"
infos["browser_specific_settings"]["gecko"]["id"] = f"{args.mode}@downthemall.org" infos["browser_specific_settings"]["gecko"]["id"] = f"{args.mode}@traitorousenterprises.net"
infos["short_name"] = infos.get("name") infos["short_name"] = infos.get("name")
infos["name"] = f"{infos.get('name')} {args.mode}" infos["name"] = f"{infos.get('name')} {args.mode}"
else: else:
infos["browser_specific_settings"]["gecko"]["id"] = RELEASE_ID infos["browser_specific_settings"]["gecko"]["id"] = RELEASE_ID
infos["permissions"] = [p for p in infos.get("permissions") if not p in PERM_IGNORED_FX] infos["permissions"] = [p for p in infos.get("permissions") if not p in PERM_IGNORED_FX]
out = Path("web-ext-artifacts") / f"dta-{version}-{args.mode}-fx.zip" out = Path("web-ext-artifacts") / f"tdl-{version}-{args.mode}-fx.zip"
if not out.parent.exists(): if not out.parent.exists():
out.parent.mkdir() out.parent.mkdir()
if out.exists(): if out.exists():
@ -122,7 +122,7 @@ def build_chromium(args, pkg, additional_ignored=set()):
infos["name"] = f"{infos.get('name')} {args.mode}" infos["name"] = f"{infos.get('name')} {args.mode}"
infos["permissions"] = [p for p in infos.get("permissions") if not p in PERM_IGNORED_CHROME] infos["permissions"] = [p for p in infos.get("permissions") if not p in PERM_IGNORED_CHROME]
out = Path("web-ext-artifacts") / f"dta-{version}-{args.mode}-{pkg}.zip" out = Path("web-ext-artifacts") / f"tdl-{version}-{args.mode}-{pkg}.zip"
if not out.parent.exists(): if not out.parent.exists():
out.parent.mkdir() out.parent.mkdir()
if out.exists(): if out.exists():

View File

@ -3,7 +3,7 @@
<!-- License: gpl-v2 --> <!-- License: gpl-v2 -->
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title data-i18n="manager.title">DownThemAll!</title> <title data-i18n="manager.title">TraitorousDownloading!</title>
<style> <style>
@import "/uikit/css/virtualtable.css"; @import "/uikit/css/virtualtable.css";
@import "/uikit/css/modal.css"; @import "/uikit/css/modal.css";

View File

@ -131,7 +131,6 @@ addEventListener("DOMContentLoaded", function dom() {
addEventListener("contextmenu", event => { addEventListener("contextmenu", event => {
event.preventDefault(); event.preventDefault();
event.stopPropagation();
return false; return false;
}); });

View File

@ -790,7 +790,7 @@ export class DownloadTable extends VirtualTable {
const items = this.getSelectedItems(); const items = this.getSelectedItems();
const states = items.reduce((p, c) => p |= c.state, 0); const states = items.reduce((p, c) => p |= c.state, 0);
if (!(states & DownloadState.PAUSABLE)) { if (!(states & DownloadState.PAUSEABLE)) {
this.pauseAction.disabled = true; this.pauseAction.disabled = true;
} }
@ -828,7 +828,7 @@ export class DownloadTable extends VirtualTable {
} }
pauseDownloads() { pauseDownloads() {
const sids = this.getSelectedSids(DownloadState.PAUSABLE); const sids = this.getSelectedSids(DownloadState.PAUSEABLE);
if (!sids.length) { if (!sids.length) {
return; return;
} }

View File

@ -100,10 +100,10 @@
<li class="sep"> <li class="sep">
<hr> <hr>
</li> </li>
<li id="manager" data-action="open-manager"> <!-- <li id="manager" data-action="open-manager">
<img srcset="/style/button-manager.png, /style/button-manager@2x.png 2x"> <img srcset="/style/button-manager.png, /style/button-manager@2x.png 2x">
<span data-i18n="manager.short"></span> <span data-i18n="manager.short"></span>
</li> </li> -->
<li id="prefs" data-action="open-prefs"> <li id="prefs" data-action="open-prefs">
<span class="icon icon-settings"></span> <span class="icon icon-settings"></span>
<span data-i18n="prefs.short">Preferences</span> <span data-i18n="prefs.short">Preferences</span>

View File

@ -16,7 +16,7 @@
} }
</style> </style>
<title data-i18n="prefs.title">DownThemAll! - Preferences</title> <title data-i18n="prefs.title">TraitorousDownloading! - Preferences</title>
<link rel="icon" href="/style/icon32.png"> <link rel="icon" href="/style/icon32.png">
<link rel="icon" sizes="16x16" href="/style/icon16.png"> <link rel="icon" sizes="16x16" href="/style/icon16.png">
<link rel="icon" sizes="32x32" href="/style/icon32.png"> <link rel="icon" sizes="32x32" href="/style/icon32.png">
@ -49,7 +49,7 @@
<label><input type="radio" name="pref-button-type" value="popup"> <span data-i18n="pref-button-type-popup"></span></label> <label><input type="radio" name="pref-button-type" value="popup"> <span data-i18n="pref-button-type-popup"></span></label>
<label><input type="radio" name="pref-button-type" value="dta"> <span data-i18n="pref-button-type-dta"></span></label> <label><input type="radio" name="pref-button-type" value="dta"> <span data-i18n="pref-button-type-dta"></span></label>
<label><input type="radio" name="pref-button-type" value="turbo"> <span data-i18n="pref-button-type-turbo"></span></label> <label><input type="radio" name="pref-button-type" value="turbo"> <span data-i18n="pref-button-type-turbo"></span></label>
<label><input type="radio" name="pref-button-type" value="manager"> <span data-i18n="pref-button-type-manager"></span></label> <label style="display: none;"><input type="radio" name="pref-button-type" value="manager"> <span data-i18n="pref-button-type-manager"></span></label>
</div> </div>
<label data-i18n="pref-theme"></label> <label data-i18n="pref-theme"></label>
<div id="pref-theme"> <div id="pref-theme">
@ -59,7 +59,7 @@
</div> </div>
</div> </div>
<hr> <hr>
<label><input type="checkbox" id="pref-manager-in-popup"> <span data-i18n="pref-manager-in-popup"></span></label> <label style="display: none;"><input type="checkbox" id="pref-manager-in-popup"> <span data-i18n="pref-manager-in-popup"></span></label>
<label><input type="checkbox" id="pref-finish-notification"> <span data-i18n="pref-finish-notification"></span></label> <label><input type="checkbox" id="pref-finish-notification"> <span data-i18n="pref-finish-notification"></span></label>
<label><input type="checkbox" id="pref-sounds"> <span data-i18n="pref-sounds"></span></label> <label><input type="checkbox" id="pref-sounds"> <span data-i18n="pref-sounds"></span></label>
<label><input type="checkbox" id="pref-hide-context"> <span data-i18n="pref-hide-context"></span></label> <label><input type="checkbox" id="pref-hide-context"> <span data-i18n="pref-hide-context"></span></label>
@ -68,15 +68,16 @@
<button id="reset-layout" data-i18n="reset-layouts"></button> <button id="reset-layout" data-i18n="reset-layouts"></button>
</div> </div>
</fieldset> </fieldset>
<fieldset> <fieldset style="display: none;">
<legend data-i18n="pref.manager">Manager</legend> <legend data-i18n="pref.manager">Manager</legend>
<label><input type="checkbox" id="pref-tooltip"> <span data-i18n="pref-manager-tooltip"></span></label> <label><input type="checkbox" id="pref-tooltip"> <span data-i18n="pref-manager-tooltip"></span></label>
<label><input type="checkbox" id="pref-show-urls"> <span data-i18n="pref-show-urls"></span></label> <label><input type="checkbox" id="pref-show-urls"> <span data-i18n="pref-show-urls"></span></label>
</fieldset> </fieldset>
<fieldset> <fieldset>
<legend data-i18n="pref.queueing">Queueing Downloads</legend> <legend data-i18n="pref.queueing">Queueing Downloads</legend>
<label><input type="checkbox" id="pref-cookies"> <span data-i18n="pref-cookies"></span></label>
<label><input type="checkbox" id="pref-queue-notification"> <span data-i18n="pref-queue-notification"></span></label> <label><input type="checkbox" id="pref-queue-notification"> <span data-i18n="pref-queue-notification"></span></label>
<label><input type="checkbox" id="pref-open-manager-on-queue"> <span data-i18n="pref-open-manager-on-queue"></span></label> <label style="display: none;"><input type="checkbox" id="pref-open-manager-on-queue"> <span data-i18n="pref-open-manager-on-queue"></span></label>
<label><input type="checkbox" id="pref-text-links"> <span data-i18n="pref-text-links"></span></label> <label><input type="checkbox" id="pref-text-links"> <span data-i18n="pref-text-links"></span></label>
<label><input type="checkbox" id="pref-add-paused"> <span data-i18n="pref-add-paused"></span></label> <label><input type="checkbox" id="pref-add-paused"> <span data-i18n="pref-add-paused"></span></label>
<label><input type="checkbox" id="pref-remove-missing-on-init"> <span data-i18n="pref-remove-missing-on-init"></span></label> <label><input type="checkbox" id="pref-remove-missing-on-init"> <span data-i18n="pref-remove-missing-on-init"></span></label>

View File

@ -568,6 +568,7 @@ addEventListener("DOMContentLoaded", async () => {
} }
new BoolPref("pref-hide-context", "hide-context"); new BoolPref("pref-hide-context", "hide-context");
new BoolPref("pref-tooltip", "tooltip"); new BoolPref("pref-tooltip", "tooltip");
new BoolPref("pref-cookies", "cookies");
new BoolPref("pref-open-manager-on-queue", "open-manager-on-queue"); new BoolPref("pref-open-manager-on-queue", "open-manager-on-queue");
new BoolPref("pref-text-links", "text-links"); new BoolPref("pref-text-links", "text-links");
new BoolPref("pref-add-paused", "add-paused"); new BoolPref("pref-add-paused", "add-paused");
@ -641,10 +642,11 @@ addEventListener("DOMContentLoaded", async () => {
$<HTMLInputElement>("#loadCustomLocale").addEventListener("click", () => { $<HTMLInputElement>("#loadCustomLocale").addEventListener("click", () => {
customLocale.click(); customLocale.click();
}); });
$<HTMLInputElement>("#clearCustomLocale").addEventListener("click", () => { $<HTMLInputElement>("#clearCustomLocale").
saveCustomLocale(undefined); addEventListener("click", async () => {
runtime.reload(); await saveCustomLocale(undefined);
}); runtime.reload();
});
customLocale.addEventListener("change", async () => { customLocale.addEventListener("change", async () => {
if (!customLocale.files || !customLocale.files.length) { if (!customLocale.files || !customLocale.files.length) {
return; return;
@ -662,8 +664,9 @@ addEventListener("DOMContentLoaded", async () => {
reader.onerror = reject; reader.onerror = reject;
reader.readAsText(file); reader.readAsText(file);
}); });
saveCustomLocale(text); await saveCustomLocale(text);
if (confirm("Imported your file.\nWant to relaod the extension now?")) {
if (confirm("Imported your file.\nWant to reload the extension now?")) {
runtime.reload(); runtime.reload();
} }
} }

View File

@ -4,7 +4,7 @@
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title data-i18n="select.title">DownThemAll! - Select your links</title> <title data-i18n="select.title">TraitorousDownloading! - Select your links</title>
<style> <style>
@import "/uikit/css/virtualtable.css"; @import "/uikit/css/virtualtable.css";
@import "/uikit/css/modal.css"; @import "/uikit/css/modal.css";
@ -75,6 +75,17 @@
<input type="checkbox" id="maskOnceCheck"> <input type="checkbox" id="maskOnceCheck">
<span data-i18n="useonlyonce">Use only once</span> <span data-i18n="useonlyonce">Use only once</span>
</label> </label>
<h2 data-i18n="server">Server</h2>
<input id="server">
<label id="cookies">
<input type="checkbox" id="cookiesCheck">
<span data-i18n="cookies">Send cookies to server</span>
</label>
<label>
<input type="checkbox" id="serverOnceCheck">
<span data-i18n="useonlyonce">Use only once</span>
</label>
</section> </section>
<section id="notification"></section> <section id="notification"></section>
<section id="buttons"> <section id="buttons">

View File

@ -7,7 +7,7 @@ import { ContextMenu } from "./contextmenu";
import { iconForPath } from "../lib/windowutils"; import { iconForPath } from "../lib/windowutils";
import { _, localize } from "../lib/i18n"; import { _, localize } from "../lib/i18n";
import { Prefs } from "../lib/prefs"; import { Prefs } from "../lib/prefs";
import { MASK, FASTFILTER, SUBFOLDER } from "../lib/recentlist"; import { MASK, FASTFILTER, SUBFOLDER, SERVER } from "../lib/recentlist";
import { WindowState } from "./windowstate"; import { WindowState } from "./windowstate";
import { Dropdown } from "./dropdown"; import { Dropdown } from "./dropdown";
import { Keys } from "./keys"; import { Keys } from "./keys";
@ -43,6 +43,7 @@ const NUM_FILTER_CLASSES = 8;
let Table: SelectionTable; let Table: SelectionTable;
let Mask: Dropdown; let Mask: Dropdown;
let OServer: Dropdown;
let FastFilter: Dropdown; let FastFilter: Dropdown;
let Subfolder: Dropdown; let Subfolder: Dropdown;
@ -433,6 +434,12 @@ class SelectionTable extends VirtualTable {
return true; return true;
}); });
Prefs.get("cookies").then(checked=>{
if ($<HTMLInputElement>("#cookiesCheck").checked != !!checked) {
$<HTMLInputElement>("#cookiesCheck").click();
}
});
this.init(); this.init();
this.switchTab(type); this.switchTab(type);
} }
@ -678,6 +685,10 @@ async function download(paused = false) {
if (!mask) { if (!mask) {
throw new Error("error.invalidMask"); throw new Error("error.invalidMask");
} }
const server = OServer.value;
if (!server) {
throw new Error("error.invalidServer");
}
const subfolder = Subfolder.value; const subfolder = Subfolder.value;
validateSubfolder(subfolder); validateSubfolder(subfolder);
@ -716,6 +727,9 @@ async function download(paused = false) {
fastOnce: $<HTMLInputElement>("#fastOnceCheck").checked, fastOnce: $<HTMLInputElement>("#fastOnceCheck").checked,
subfolder, subfolder,
subfolderOnce: $<HTMLInputElement>("#subfolderOnceCheck").checked, subfolderOnce: $<HTMLInputElement>("#subfolderOnceCheck").checked,
server,
serverOnce: $<HTMLInputElement>("#serverOnceCheck").checked,
cookies: $<HTMLInputElement>("#cookiesCheck").checked,
} }
}); });
} }
@ -791,7 +805,9 @@ function cancel() {
} }
async function init() { async function init() {
await Promise.all([MASK.init(), FASTFILTER.init(), SUBFOLDER.init()]); await Promise.all([MASK.init(), FASTFILTER.init(), SUBFOLDER.init(), SERVER.init()]);
OServer = new Dropdown("#server", SERVER.values);
OServer.on("changed", clearErrors);
Mask = new Dropdown("#mask", MASK.values); Mask = new Dropdown("#mask", MASK.values);
Mask.on("changed", clearErrors); Mask.on("changed", clearErrors);
FastFilter = new Dropdown("#fast", FASTFILTER.values); FastFilter = new Dropdown("#fast", FASTFILTER.values);
@ -890,7 +906,6 @@ addEventListener("DOMContentLoaded", function dom() {
addEventListener("contextmenu", event => { addEventListener("contextmenu", event => {
event.preventDefault(); event.preventDefault();
event.stopPropagation();
return false; return false;
}); });

View File

@ -4,7 +4,7 @@
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<title data-i18n="single.title">DownThemAll! - Add a Link</title> <title data-i18n="single.title">TraitorousDownloading! - Add a Link</title>
<style> <style>
@import "/uikit/css/modal.css"; @import "/uikit/css/modal.css";
@import "/style/single.css"; @import "/style/single.css";
@ -32,12 +32,12 @@
<input type="text" id="URL"> <input type="text" id="URL">
<h2 data-i18n="custom-filename">Custom Filename</h2> <h2 data-i18n="custom-filename">Custom Filename</h2>
<input type="text" id="filename"> <input type="text" id="filename">
<h3 data-i18n="referrer">Referring page</h3> <h3 data-i18n="referrer">Referring page (Not implemented)</h3>
<input type="text" id="referrer"> <input type="text" id="referrer">
<h3 data-i18n="title">Title</h3> <h3 data-i18n="title" style="display: none;">Title</h3>
<input type="text" id="title"> <input type="text" id="title" style="display: none;">
<h3 data-i18n="description">Description</h3> <h3 data-i18n="description" style="display: none;">Description</h3>
<input type="text" id="description"> <input type="text" id="description" style="display: none;">
<h3 data-i18n="mask">Mask</h3> <h3 data-i18n="mask">Mask</h3>
<div id="maskOptions"> <div id="maskOptions">
<input type="text" id="mask"> <input type="text" id="mask">
@ -47,6 +47,18 @@
<span data-i18n="useonlyonce">Use only once</span> <span data-i18n="useonlyonce">Use only once</span>
</label> </label>
</div> </div>
<h3 data-i18n="server">Server</h3>
<div id="serverOptions">
<input type="text" id="server">
<label id="cookies">
<input type="checkbox" id="cookiesCheck">
<span data-i18n="cookies">Send cookies to server</span>
</label>
<label id="serverOnce">
<input type="checkbox" id="serverOnceCheck">
<span data-i18n="useonlyonce">Use only once</span>
</label>
</div>
<h3 data-i18n="subfolder"></h3> <h3 data-i18n="subfolder"></h3>
<div id="subfolderOptions"> <div id="subfolderOptions">
<input type="text" id="subfolder" data-i18n="placeholder=subfolder.placeholder"> <input type="text" id="subfolder" data-i18n="placeholder=subfolder.placeholder">

View File

@ -4,9 +4,10 @@
import ModalDialog from "../uikit/lib/modal"; import ModalDialog from "../uikit/lib/modal";
import { _, localize } from "../lib/i18n"; import { _, localize } from "../lib/i18n";
import { Prefs } from "../lib/prefs";
// eslint-disable-next-line no-unused-vars // eslint-disable-next-line no-unused-vars
import { Item, BaseItem } from "../lib/item"; import { Item, BaseItem } from "../lib/item";
import { MASK, SUBFOLDER } from "../lib/recentlist"; import { MASK, SUBFOLDER, SERVER } from "../lib/recentlist";
import { BatchGenerator } from "../lib/batches"; import { BatchGenerator } from "../lib/batches";
import { WindowState } from "./windowstate"; import { WindowState } from "./windowstate";
import { Dropdown } from "./dropdown"; import { Dropdown } from "./dropdown";
@ -22,6 +23,7 @@ const PORT = runtime.connect(null, { name: "single" });
let ITEM: BaseItem; let ITEM: BaseItem;
let Mask: Dropdown; let Mask: Dropdown;
let Subfolder: Dropdown; let Subfolder: Dropdown;
let OServer: Dropdown;
class BatchModalDialog extends ModalDialog { class BatchModalDialog extends ModalDialog {
private readonly gen: BatchGenerator; private readonly gen: BatchGenerator;
@ -131,6 +133,11 @@ async function downloadInternal(paused: boolean) {
return displayError("error.invalidMask"); return displayError("error.invalidMask");
} }
const server = OServer.value;
if (!server) {
throw new Error("error.invalidServer");
}
const subfolder = Subfolder.value.trim(); const subfolder = Subfolder.value.trim();
validateSubFolder(subfolder); validateSubFolder(subfolder);
@ -199,6 +206,9 @@ async function downloadInternal(paused: boolean) {
maskOnce: $<HTMLInputElement>("#maskOnceCheck").checked, maskOnce: $<HTMLInputElement>("#maskOnceCheck").checked,
subfolder, subfolder,
subfolderOnce: $<HTMLInputElement>("#subfolderOnceCheck").checked, subfolderOnce: $<HTMLInputElement>("#subfolderOnceCheck").checked,
server,
serverOnce: $<HTMLInputElement>("#serverOnceCheck").checked,
cookies: $<HTMLInputElement>("#cookiesCheck").checked,
} }
}); });
return null; return null;
@ -215,9 +225,15 @@ function cancel() {
async function init() { async function init() {
await localize(document.documentElement); await localize(document.documentElement);
await Promise.all([MASK.init(), SUBFOLDER.init()]); await Promise.all([MASK.init(), SUBFOLDER.init(), SERVER.init()]);
Mask = new Dropdown("#mask", MASK.values); Mask = new Dropdown("#mask", MASK.values);
Subfolder = new Dropdown("#subfolder", SUBFOLDER.values); Subfolder = new Dropdown("#subfolder", SUBFOLDER.values);
OServer = new Dropdown("#server", SERVER.values);
Prefs.get("cookies").then(checked=>{
if ($<HTMLInputElement>("#cookiesCheck").checked != !!checked) {
$<HTMLInputElement>("#cookiesCheck").click();
}
});
} }
addEventListener("DOMContentLoaded", async function dom() { addEventListener("DOMContentLoaded", async function dom() {

View File

@ -2,7 +2,7 @@
// License: MIT // License: MIT
export function $<T extends HTMLElement>( export function $<T extends HTMLElement>(
q: string, el?: HTMLElement | DocumentFragment): T { q: string, el?: HTMLElement | DocumentFragment | Document): T {
if (!el) { if (!el) {
el = document; el = document;
} }

1723
yarn.lock

File diff suppressed because it is too large Load Diff