Просмотр исходного кода

add option `File name > replace emojis with text`
(fix #1150)

Gildas 2 лет назад
Родитель
Сommit
97e27a66bc

+ 4 - 0
_locales/de/messages.json

@@ -207,6 +207,10 @@
 		"message": "Zeichen",
 		"message": "Zeichen",
 		"description": "Options page label: 'characters'"
 		"description": "Options page label: 'characters'"
 	},
 	},
+	"optionReplaceEmojisInFilename" : {
+		"message": "Emojis durch Text ersetzen",
+		"description": "Options page label: 'replace emojis with text'"
+	},
 	"optionConfirmFilename": {
 	"optionConfirmFilename": {
 		"message": "Dialogfenster \"Sichern als\" zur Bestätigung des Dateinamens öffnen",
 		"message": "Dialogfenster \"Sichern als\" zur Bestätigung des Dateinamens öffnen",
 		"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"
 		"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"

+ 4 - 0
_locales/en/messages.json

@@ -207,6 +207,10 @@
 		"message": "characters",
 		"message": "characters",
 		"description": "Options page label: 'characters'"
 		"description": "Options page label: 'characters'"
 	},
 	},
+	"optionReplaceEmojisInFilename" : {
+		"message": "replace emojis with text",
+		"description": "Options page label: 'replace emojis with text'"
+	},
 	"optionConfirmFilename": {
 	"optionConfirmFilename": {
 		"message": "open the \"Save as\" dialog to confirm the file name",
 		"message": "open the \"Save as\" dialog to confirm the file name",
 		"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"
 		"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"

+ 4 - 0
_locales/es/messages.json

@@ -207,6 +207,10 @@
 		"message": "caracteres",
 		"message": "caracteres",
 		"description": "Options page label: 'characters'"
 		"description": "Options page label: 'characters'"
 	},
 	},
+	"optionReplaceEmojisInFilename" : {
+		"message": "reemplazar emojis con texto",
+		"description": "Options page label: 'replace emojis with text'"
+	},
 	"optionConfirmFilename": {
 	"optionConfirmFilename": {
 		"message": "abrir el cuadro de diálogo \"Guardar como\" para confirmar el nombre del archivo",
 		"message": "abrir el cuadro de diálogo \"Guardar como\" para confirmar el nombre del archivo",
 		"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"
 		"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"

+ 4 - 0
_locales/fr/messages.json

@@ -207,6 +207,10 @@
 		"message": "caractères",
 		"message": "caractères",
 		"description": "Options page label: 'characters'"
 		"description": "Options page label: 'characters'"
 	},
 	},
+	"optionReplaceEmojisInFilename" : {
+		"message": "remplacer les emojis par du texte",
+		"description": "Options page label: 'replace emojis with text'"
+	},
 	"optionConfirmFilename": {
 	"optionConfirmFilename": {
 		"message": "ouvrir la boite de dialogue \"Sauver sous\" pour confirmer le nom de fichier",
 		"message": "ouvrir la boite de dialogue \"Sauver sous\" pour confirmer le nom de fichier",
 		"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"
 		"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"

+ 4 - 0
_locales/it/messages.json

@@ -207,6 +207,10 @@
 		"message": "caratteri",
 		"message": "caratteri",
 		"description": "Options page label: 'characters'"
 		"description": "Options page label: 'characters'"
 	},
 	},
+	"optionReplaceEmojisInFilename" : {
+		"message": "sostituisci le emoji con il testo",
+		"description": "Options page label: 'replace emojis with text'"
+	},
 	"optionConfirmFilename": {
 	"optionConfirmFilename": {
 		"message": "Apri la finesta di dialogo \"Salva come\" per confermare il nome del file",
 		"message": "Apri la finesta di dialogo \"Salva come\" per confermare il nome del file",
 		"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"
 		"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"

+ 4 - 0
_locales/ja/messages.json

@@ -207,6 +207,10 @@
 		"message": "characters",
 		"message": "characters",
 		"description": "Options page label: 'characters'"
 		"description": "Options page label: 'characters'"
 	},
 	},
+	"optionReplaceEmojisInFilename" : {
+		"message": "絵文字をテキストに置き換える",
+		"description": "Options page label: 'replace emojis with text'"
+	},
 	"optionConfirmFilename": {
 	"optionConfirmFilename": {
 		"message": "を開く(として保存する:ファイル名を確認するためのダイアログ)",
 		"message": "を開く(として保存する:ファイル名を確認するためのダイアログ)",
 		"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"
 		"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"

+ 4 - 0
_locales/pl/messages.json

@@ -207,6 +207,10 @@
 		"message": "znaki",
 		"message": "znaki",
 		"description": "Options page label: 'characters'"
 		"description": "Options page label: 'characters'"
 	},
 	},
+	"optionReplaceEmojisInFilename" : {
+		"message": "zamień emotikony na tekst",
+		"description": "Options page label: 'replace emojis with text'"
+	},
 	"optionConfirmFilename": {
 	"optionConfirmFilename": {
 		"message": "otwieraj okno \"Zapisz jako\", aby potwierdzić nazwę pliku",
 		"message": "otwieraj okno \"Zapisz jako\", aby potwierdzić nazwę pliku",
 		"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"
 		"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"

+ 4 - 0
_locales/pt_br/messages.json

@@ -207,6 +207,10 @@
 		"message": "caracteres",
 		"message": "caracteres",
 		"description": "Options page label: 'characters'"
 		"description": "Options page label: 'characters'"
 	},
 	},
+	"optionReplaceEmojisInFilename" : {
+		"message": "substituir emojis por texto",
+		"description": "Options page label: 'replace emojis with text'"
+	},
 	"optionConfirmFilename": {
 	"optionConfirmFilename": {
 		"message": "abrir o diálogo \"Salvar como\" para confirmar nome de arquivo",
 		"message": "abrir o diálogo \"Salvar como\" para confirmar nome de arquivo",
 		"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"
 		"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"

+ 4 - 0
_locales/ru/messages.json

@@ -207,6 +207,10 @@
 		"message": "символов",
 		"message": "символов",
 		"description": "Options page label: 'characters'"
 		"description": "Options page label: 'characters'"
 	},
 	},
+	"optionReplaceEmojisInFilename" : {
+		"message": "заменять эмодзи текстом",
+		"description": "Options page label: 'replace emojis with text'"
+	},
 	"optionConfirmFilename": {
 	"optionConfirmFilename": {
 		"message": "открыть диалоговое окно \"Сохранить как\" для подтверждения имени файла",
 		"message": "открыть диалоговое окно \"Сохранить как\" для подтверждения имени файла",
 		"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"
 		"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"

+ 4 - 0
_locales/tr/messages.json

@@ -207,6 +207,10 @@
 		"message": "karakterler",
 		"message": "karakterler",
 		"description": "Options page label: 'characters'"
 		"description": "Options page label: 'characters'"
 	},
 	},
+	"optionReplaceEmojisInFilename" : {
+		"message": "emoji'leri metinle değiştir",
+		"description": "Options page label: 'replace emojis with text'"
+	},
 	"optionConfirmFilename": {
 	"optionConfirmFilename": {
 		"message": "dosya adını onaylamak için \"Farklı kaydet\" iletişim kutusunu aç",
 		"message": "dosya adını onaylamak için \"Farklı kaydet\" iletişim kutusunu aç",
 		"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"
 		"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"

+ 4 - 0
_locales/uk/messages.json

@@ -207,6 +207,10 @@
 		"message": "символи",
 		"message": "символи",
 		"description": "Options page label: 'characters'"
 		"description": "Options page label: 'characters'"
 	},
 	},
+	"optionReplaceEmojisInFilename" : {
+		"message": "Замініть смайлики на текст",
+		"description": "Options page label: 'replace emojis with text'"
+	},
 	"optionConfirmFilename": {
 	"optionConfirmFilename": {
 		"message": "відкривати діалогове вікно \"Save as\" для підтвердження імені файлу",
 		"message": "відкривати діалогове вікно \"Save as\" для підтвердження імені файлу",
 		"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"
 		"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"

+ 4 - 0
_locales/zh_CN/messages.json

@@ -207,6 +207,10 @@
 		"message": "字符",
 		"message": "字符",
 		"description": "Options page label: 'characters'"
 		"description": "Options page label: 'characters'"
 	},
 	},
+	"optionReplaceEmojisInFilename" : {
+		"message": "用文本替换表情符号",
+		"description": "Options page label: 'replace emojis with text'"
+	},
 	"optionConfirmFilename": {
 	"optionConfirmFilename": {
 		"message": "打开 “另存为” 对话框以确认文件名",
 		"message": "打开 “另存为” 对话框以确认文件名",
 		"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"
 		"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"

+ 4 - 0
_locales/zh_TW/messages.json

@@ -207,6 +207,10 @@
 		"message": "字符",
 		"message": "字符",
 		"description": "Options page label: 'characters'"
 		"description": "Options page label: 'characters'"
 	},
 	},
+	"optionReplaceEmojisInFilename" : {
+		"message": "用文字替換表情符號",
+		"description": "Options page label: 'replace emojis with text'"
+	},
 	"optionConfirmFilename": {
 	"optionConfirmFilename": {
 		"message": "打開 “另存為” 對話框以確認文件名",
 		"message": "打開 “另存為” 對話框以確認文件名",
 		"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"
 		"description": "Options page label: 'open the \"Save as\" dialog to confirm the file name'"

+ 1 - 0
src/core/bg/config.js

@@ -69,6 +69,7 @@ const DEFAULT_CONFIG = {
 	filenameMaxLengthUnit: "bytes",
 	filenameMaxLengthUnit: "bytes",
 	filenameReplacedCharacters: ["~", "+", "\\\\", "?", "%", "*", ":", "|", "\"", "<", ">", "\x00-\x1f", "\x7F"],
 	filenameReplacedCharacters: ["~", "+", "\\\\", "?", "%", "*", ":", "|", "\"", "<", ">", "\x00-\x1f", "\x7F"],
 	filenameReplacementCharacter: "_",
 	filenameReplacementCharacter: "_",
+	replaceEmojisInFilename: false,
 	contextMenuEnabled: true,
 	contextMenuEnabled: true,
 	tabMenuEnabled: true,
 	tabMenuEnabled: true,
 	browserActionMenuEnabled: true,
 	browserActionMenuEnabled: true,

+ 5 - 0
src/ui/bg/ui-options.js

@@ -102,6 +102,7 @@ const filenameTemplateLabel = document.getElementById("filenameTemplateLabel");
 const filenameMaxLengthLabel = document.getElementById("filenameMaxLengthLabel");
 const filenameMaxLengthLabel = document.getElementById("filenameMaxLengthLabel");
 const filenameMaxLengthBytesUnitLabel = document.getElementById("filenameMaxLengthBytesUnitLabel");
 const filenameMaxLengthBytesUnitLabel = document.getElementById("filenameMaxLengthBytesUnitLabel");
 const filenameMaxLengthCharsUnitLabel = document.getElementById("filenameMaxLengthCharsUnitLabel");
 const filenameMaxLengthCharsUnitLabel = document.getElementById("filenameMaxLengthCharsUnitLabel");
+const replaceEmojisInFilenameLabel = document.getElementById("replaceEmojisInFilenameLabel");
 const shadowEnabledLabel = document.getElementById("shadowEnabledLabel");
 const shadowEnabledLabel = document.getElementById("shadowEnabledLabel");
 const setMaxResourceSizeLabel = document.getElementById("setMaxResourceSizeLabel");
 const setMaxResourceSizeLabel = document.getElementById("setMaxResourceSizeLabel");
 const maxResourceSizeLabel = document.getElementById("maxResourceSizeLabel");
 const maxResourceSizeLabel = document.getElementById("maxResourceSizeLabel");
@@ -224,6 +225,7 @@ const contextMenuEnabledInput = document.getElementById("contextMenuEnabledInput
 const filenameTemplateInput = document.getElementById("filenameTemplateInput");
 const filenameTemplateInput = document.getElementById("filenameTemplateInput");
 const filenameMaxLengthInput = document.getElementById("filenameMaxLengthInput");
 const filenameMaxLengthInput = document.getElementById("filenameMaxLengthInput");
 const filenameMaxLengthUnitInput = document.getElementById("filenameMaxLengthUnitInput");
 const filenameMaxLengthUnitInput = document.getElementById("filenameMaxLengthUnitInput");
+const replaceEmojisInFilenameInput = document.getElementById("replaceEmojisInFilenameInput");
 const shadowEnabledInput = document.getElementById("shadowEnabledInput");
 const shadowEnabledInput = document.getElementById("shadowEnabledInput");
 const maxResourceSizeInput = document.getElementById("maxResourceSizeInput");
 const maxResourceSizeInput = document.getElementById("maxResourceSizeInput");
 const maxResourceSizeEnabledInput = document.getElementById("maxResourceSizeEnabledInput");
 const maxResourceSizeEnabledInput = document.getElementById("maxResourceSizeEnabledInput");
@@ -598,6 +600,7 @@ filenameTemplateLabel.textContent = browser.i18n.getMessage("optionFilenameTempl
 filenameMaxLengthLabel.textContent = browser.i18n.getMessage("optionFilenameMaxLength");
 filenameMaxLengthLabel.textContent = browser.i18n.getMessage("optionFilenameMaxLength");
 filenameMaxLengthBytesUnitLabel.textContent = browser.i18n.getMessage("optionFilenameMaxLengthBytesUnit");
 filenameMaxLengthBytesUnitLabel.textContent = browser.i18n.getMessage("optionFilenameMaxLengthBytesUnit");
 filenameMaxLengthCharsUnitLabel.textContent = browser.i18n.getMessage("optionFilenameMaxLengthCharsUnit");
 filenameMaxLengthCharsUnitLabel.textContent = browser.i18n.getMessage("optionFilenameMaxLengthCharsUnit");
+replaceEmojisInFilenameLabel.textContent = browser.i18n.getMessage("optionReplaceEmojisInFilename");
 shadowEnabledLabel.textContent = browser.i18n.getMessage("optionDisplayShadow");
 shadowEnabledLabel.textContent = browser.i18n.getMessage("optionDisplayShadow");
 setMaxResourceSizeLabel.textContent = browser.i18n.getMessage("optionSetMaxResourceSize");
 setMaxResourceSizeLabel.textContent = browser.i18n.getMessage("optionSetMaxResourceSize");
 maxResourceSizeLabel.textContent = browser.i18n.getMessage("optionMaxResourceSize");
 maxResourceSizeLabel.textContent = browser.i18n.getMessage("optionMaxResourceSize");
@@ -881,6 +884,7 @@ async function refresh(profileName) {
 	filenameTemplateInput.value = profileOptions.filenameTemplate;
 	filenameTemplateInput.value = profileOptions.filenameTemplate;
 	filenameMaxLengthInput.value = profileOptions.filenameMaxLength;
 	filenameMaxLengthInput.value = profileOptions.filenameMaxLength;
 	filenameMaxLengthUnitInput.value = profileOptions.filenameMaxLengthUnit;
 	filenameMaxLengthUnitInput.value = profileOptions.filenameMaxLengthUnit;
+	replaceEmojisInFilenameInput.checked = profileOptions.replaceEmojisInFilename;
 	shadowEnabledInput.checked = profileOptions.shadowEnabled;
 	shadowEnabledInput.checked = profileOptions.shadowEnabled;
 	maxResourceSizeEnabledInput.checked = profileOptions.maxResourceSizeEnabled;
 	maxResourceSizeEnabledInput.checked = profileOptions.maxResourceSizeEnabled;
 	maxResourceSizeInput.value = profileOptions.maxResourceSizeEnabled ? profileOptions.maxResourceSize : 10;
 	maxResourceSizeInput.value = profileOptions.maxResourceSizeEnabled ? profileOptions.maxResourceSize : 10;
@@ -993,6 +997,7 @@ async function update() {
 			filenameTemplate: filenameTemplateInput.value,
 			filenameTemplate: filenameTemplateInput.value,
 			filenameMaxLength: filenameMaxLengthInput.value,
 			filenameMaxLength: filenameMaxLengthInput.value,
 			filenameMaxLengthUnit: filenameMaxLengthUnitInput.value,
 			filenameMaxLengthUnit: filenameMaxLengthUnitInput.value,
+			replaceEmojisInFilename: replaceEmojisInFilenameInput.checked,
 			shadowEnabled: shadowEnabledInput.checked,
 			shadowEnabled: shadowEnabledInput.checked,
 			maxResourceSizeEnabled: maxResourceSizeEnabledInput.checked,
 			maxResourceSizeEnabled: maxResourceSizeEnabledInput.checked,
 			maxResourceSize: maxResourceSizeEnabledInput.checked ? Math.max(maxResourceSizeInput.value, 0) : 10,
 			maxResourceSize: maxResourceSizeEnabledInput.checked ? Math.max(maxResourceSizeInput.value, 0) : 10,

+ 4 - 0
src/ui/pages/help.html

@@ -167,6 +167,10 @@
 							existing ones on the filesystem. The "skip duplicate files" action only detects duplicates
 							existing ones on the filesystem. The "skip duplicate files" action only detects duplicates
 							among files downloaded during the current browsing session.</p>
 							among files downloaded during the current browsing session.</p>
 					</li>
 					</li>
+					<li data-options-label="replaceEmojisInFilenameLabel">
+						<span class="option">Option: replace emojis with text</span>
+						<p>Check this option to replace emojis in the file name with their unicode text representation.</p>
+					</li>
 				</ul>
 				</ul>
 				<p>HTML content</p>
 				<p>HTML content</p>
 				<ul>
 				<ul>

+ 4 - 0
src/ui/pages/options.html

@@ -74,6 +74,10 @@
 					<option id="filenameConflictActionSkipLabel" value="skip"></option>
 					<option id="filenameConflictActionSkipLabel" value="skip"></option>
 				</select>
 				</select>
 			</div>
 			</div>
+			<div class="option">
+				<label for="replaceEmojisInFilenameInput" id="replaceEmojisInFilenameLabel"></label>
+				<input type="checkbox" id="replaceEmojisInFilenameInput">
+			</div>
 		</details>
 		</details>
 		<details>
 		<details>
 			<summary id="htmlContentLabel"></summary>
 			<summary id="htmlContentLabel"></summary>