Pārlūkot izejas kodu

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

Gildas 2 gadi atpakaļ
vecāks
revīzija
97e27a66bc

+ 4 - 0
_locales/de/messages.json

@@ -207,6 +207,10 @@
 		"message": "Zeichen",
 		"description": "Options page label: 'characters'"
 	},
+	"optionReplaceEmojisInFilename" : {
+		"message": "Emojis durch Text ersetzen",
+		"description": "Options page label: 'replace emojis with text'"
+	},
 	"optionConfirmFilename": {
 		"message": "Dialogfenster \"Sichern als\" zur Bestätigung des Dateinamens öffnen",
 		"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",
 		"description": "Options page label: 'characters'"
 	},
+	"optionReplaceEmojisInFilename" : {
+		"message": "replace emojis with text",
+		"description": "Options page label: 'replace emojis with text'"
+	},
 	"optionConfirmFilename": {
 		"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'"

+ 4 - 0
_locales/es/messages.json

@@ -207,6 +207,10 @@
 		"message": "caracteres",
 		"description": "Options page label: 'characters'"
 	},
+	"optionReplaceEmojisInFilename" : {
+		"message": "reemplazar emojis con texto",
+		"description": "Options page label: 'replace emojis with text'"
+	},
 	"optionConfirmFilename": {
 		"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'"

+ 4 - 0
_locales/fr/messages.json

@@ -207,6 +207,10 @@
 		"message": "caractères",
 		"description": "Options page label: 'characters'"
 	},
+	"optionReplaceEmojisInFilename" : {
+		"message": "remplacer les emojis par du texte",
+		"description": "Options page label: 'replace emojis with text'"
+	},
 	"optionConfirmFilename": {
 		"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'"

+ 4 - 0
_locales/it/messages.json

@@ -207,6 +207,10 @@
 		"message": "caratteri",
 		"description": "Options page label: 'characters'"
 	},
+	"optionReplaceEmojisInFilename" : {
+		"message": "sostituisci le emoji con il testo",
+		"description": "Options page label: 'replace emojis with text'"
+	},
 	"optionConfirmFilename": {
 		"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'"

+ 4 - 0
_locales/ja/messages.json

@@ -207,6 +207,10 @@
 		"message": "characters",
 		"description": "Options page label: 'characters'"
 	},
+	"optionReplaceEmojisInFilename" : {
+		"message": "絵文字をテキストに置き換える",
+		"description": "Options page label: 'replace emojis with text'"
+	},
 	"optionConfirmFilename": {
 		"message": "を開く(として保存する:ファイル名を確認するためのダイアログ)",
 		"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",
 		"description": "Options page label: 'characters'"
 	},
+	"optionReplaceEmojisInFilename" : {
+		"message": "zamień emotikony na tekst",
+		"description": "Options page label: 'replace emojis with text'"
+	},
 	"optionConfirmFilename": {
 		"message": "otwieraj okno \"Zapisz jako\", aby potwierdzić nazwę pliku",
 		"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",
 		"description": "Options page label: 'characters'"
 	},
+	"optionReplaceEmojisInFilename" : {
+		"message": "substituir emojis por texto",
+		"description": "Options page label: 'replace emojis with text'"
+	},
 	"optionConfirmFilename": {
 		"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'"

+ 4 - 0
_locales/ru/messages.json

@@ -207,6 +207,10 @@
 		"message": "символов",
 		"description": "Options page label: 'characters'"
 	},
+	"optionReplaceEmojisInFilename" : {
+		"message": "заменять эмодзи текстом",
+		"description": "Options page label: 'replace emojis with text'"
+	},
 	"optionConfirmFilename": {
 		"message": "открыть диалоговое окно \"Сохранить как\" для подтверждения имени файла",
 		"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",
 		"description": "Options page label: 'characters'"
 	},
+	"optionReplaceEmojisInFilename" : {
+		"message": "emoji'leri metinle değiştir",
+		"description": "Options page label: 'replace emojis with text'"
+	},
 	"optionConfirmFilename": {
 		"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'"

+ 4 - 0
_locales/uk/messages.json

@@ -207,6 +207,10 @@
 		"message": "символи",
 		"description": "Options page label: 'characters'"
 	},
+	"optionReplaceEmojisInFilename" : {
+		"message": "Замініть смайлики на текст",
+		"description": "Options page label: 'replace emojis with text'"
+	},
 	"optionConfirmFilename": {
 		"message": "відкривати діалогове вікно \"Save as\" для підтвердження імені файлу",
 		"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": "字符",
 		"description": "Options page label: 'characters'"
 	},
+	"optionReplaceEmojisInFilename" : {
+		"message": "用文本替换表情符号",
+		"description": "Options page label: 'replace emojis with text'"
+	},
 	"optionConfirmFilename": {
 		"message": "打开 “另存为” 对话框以确认文件名",
 		"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": "字符",
 		"description": "Options page label: 'characters'"
 	},
+	"optionReplaceEmojisInFilename" : {
+		"message": "用文字替換表情符號",
+		"description": "Options page label: 'replace emojis with text'"
+	},
 	"optionConfirmFilename": {
 		"message": "打開 “另存為” 對話框以確認文件名",
 		"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",
 	filenameReplacedCharacters: ["~", "+", "\\\\", "?", "%", "*", ":", "|", "\"", "<", ">", "\x00-\x1f", "\x7F"],
 	filenameReplacementCharacter: "_",
+	replaceEmojisInFilename: false,
 	contextMenuEnabled: true,
 	tabMenuEnabled: 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 filenameMaxLengthBytesUnitLabel = document.getElementById("filenameMaxLengthBytesUnitLabel");
 const filenameMaxLengthCharsUnitLabel = document.getElementById("filenameMaxLengthCharsUnitLabel");
+const replaceEmojisInFilenameLabel = document.getElementById("replaceEmojisInFilenameLabel");
 const shadowEnabledLabel = document.getElementById("shadowEnabledLabel");
 const setMaxResourceSizeLabel = document.getElementById("setMaxResourceSizeLabel");
 const maxResourceSizeLabel = document.getElementById("maxResourceSizeLabel");
@@ -224,6 +225,7 @@ const contextMenuEnabledInput = document.getElementById("contextMenuEnabledInput
 const filenameTemplateInput = document.getElementById("filenameTemplateInput");
 const filenameMaxLengthInput = document.getElementById("filenameMaxLengthInput");
 const filenameMaxLengthUnitInput = document.getElementById("filenameMaxLengthUnitInput");
+const replaceEmojisInFilenameInput = document.getElementById("replaceEmojisInFilenameInput");
 const shadowEnabledInput = document.getElementById("shadowEnabledInput");
 const maxResourceSizeInput = document.getElementById("maxResourceSizeInput");
 const maxResourceSizeEnabledInput = document.getElementById("maxResourceSizeEnabledInput");
@@ -598,6 +600,7 @@ filenameTemplateLabel.textContent = browser.i18n.getMessage("optionFilenameTempl
 filenameMaxLengthLabel.textContent = browser.i18n.getMessage("optionFilenameMaxLength");
 filenameMaxLengthBytesUnitLabel.textContent = browser.i18n.getMessage("optionFilenameMaxLengthBytesUnit");
 filenameMaxLengthCharsUnitLabel.textContent = browser.i18n.getMessage("optionFilenameMaxLengthCharsUnit");
+replaceEmojisInFilenameLabel.textContent = browser.i18n.getMessage("optionReplaceEmojisInFilename");
 shadowEnabledLabel.textContent = browser.i18n.getMessage("optionDisplayShadow");
 setMaxResourceSizeLabel.textContent = browser.i18n.getMessage("optionSetMaxResourceSize");
 maxResourceSizeLabel.textContent = browser.i18n.getMessage("optionMaxResourceSize");
@@ -881,6 +884,7 @@ async function refresh(profileName) {
 	filenameTemplateInput.value = profileOptions.filenameTemplate;
 	filenameMaxLengthInput.value = profileOptions.filenameMaxLength;
 	filenameMaxLengthUnitInput.value = profileOptions.filenameMaxLengthUnit;
+	replaceEmojisInFilenameInput.checked = profileOptions.replaceEmojisInFilename;
 	shadowEnabledInput.checked = profileOptions.shadowEnabled;
 	maxResourceSizeEnabledInput.checked = profileOptions.maxResourceSizeEnabled;
 	maxResourceSizeInput.value = profileOptions.maxResourceSizeEnabled ? profileOptions.maxResourceSize : 10;
@@ -993,6 +997,7 @@ async function update() {
 			filenameTemplate: filenameTemplateInput.value,
 			filenameMaxLength: filenameMaxLengthInput.value,
 			filenameMaxLengthUnit: filenameMaxLengthUnitInput.value,
+			replaceEmojisInFilename: replaceEmojisInFilenameInput.checked,
 			shadowEnabled: shadowEnabledInput.checked,
 			maxResourceSizeEnabled: maxResourceSizeEnabledInput.checked,
 			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
 							among files downloaded during the current browsing session.</p>
 					</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>
 				<p>HTML content</p>
 				<ul>

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

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