EQ 批量管理窗口支持多语言

This commit is contained in:
eafonyang
2026-07-01 15:16:26 +08:00
parent ac9bac4d18
commit 0ead88deee
7 changed files with 45 additions and 9 deletions
+6
View File
@@ -276,6 +276,12 @@
"deleteConfirm": "Kopfhörer \"{{name}}\" löschen?", "deleteConfirm": "Kopfhörer \"{{name}}\" löschen?",
"batchDeleteConfirm": "{{count}} ausgewählte Voreinstellung(en) löschen?", "batchDeleteConfirm": "{{count}} ausgewählte Voreinstellung(en) löschen?",
"deletePresetConfirm": "Voreinstellung \"{{name}}\" löschen?", "deletePresetConfirm": "Voreinstellung \"{{name}}\" löschen?",
"managePresetTitle": "EQ-Voreinstellungen verwalten",
"selectAll": "Alle auswählen",
"batchDelete": "Auswahl löschen",
"noPresets": "Keine Voreinstellungen",
"renamePreset": "Umbenennen",
"deletePreset": "Löschen",
"toastRenamed": "Umbenannt", "toastRenamed": "Umbenannt",
"toastRenameFail": "Umbenennung fehlgeschlagen", "toastRenameFail": "Umbenennung fehlgeschlagen",
"renameEmptyName": "Name darf nicht leer sein", "renameEmptyName": "Name darf nicht leer sein",
+6
View File
@@ -276,6 +276,12 @@
"deleteConfirm": "Delete headphone \"{{name}}\"?", "deleteConfirm": "Delete headphone \"{{name}}\"?",
"batchDeleteConfirm": "Delete {{count}} selected preset(s)?", "batchDeleteConfirm": "Delete {{count}} selected preset(s)?",
"deletePresetConfirm": "Delete preset \"{{name}}\"?", "deletePresetConfirm": "Delete preset \"{{name}}\"?",
"managePresetTitle": "Manage EQ presets",
"selectAll": "Select all",
"batchDelete": "Delete selected",
"noPresets": "No presets",
"renamePreset": "Rename",
"deletePreset": "Delete",
"toastRenamed": "Renamed", "toastRenamed": "Renamed",
"toastRenameFail": "Rename failed", "toastRenameFail": "Rename failed",
"renameEmptyName": "Name cannot be empty", "renameEmptyName": "Name cannot be empty",
+6
View File
@@ -276,6 +276,12 @@
"deleteConfirm": "¿Eliminar auriculares \"{{name}}\"?", "deleteConfirm": "¿Eliminar auriculares \"{{name}}\"?",
"batchDeleteConfirm": "¿Eliminar {{count}} preset(s) seleccionado(s)?", "batchDeleteConfirm": "¿Eliminar {{count}} preset(s) seleccionado(s)?",
"deletePresetConfirm": "¿Eliminar el preset \"{{name}}\"?", "deletePresetConfirm": "¿Eliminar el preset \"{{name}}\"?",
"managePresetTitle": "Gestionar presets EQ",
"selectAll": "Seleccionar todo",
"batchDelete": "Eliminar selección",
"noPresets": "Sin presets",
"renamePreset": "Renombrar",
"deletePreset": "Eliminar",
"toastRenamed": "Renombrado", "toastRenamed": "Renombrado",
"toastRenameFail": "Error al renombrar", "toastRenameFail": "Error al renombrar",
"renameEmptyName": "El nombre no puede estar vacío", "renameEmptyName": "El nombre no puede estar vacío",
+6
View File
@@ -276,6 +276,12 @@
"deleteConfirm": "Supprimer le casque \"{{name}}\" ?", "deleteConfirm": "Supprimer le casque \"{{name}}\" ?",
"batchDeleteConfirm": "Supprimer {{count}} préréglage(s) sélectionné(s) ?", "batchDeleteConfirm": "Supprimer {{count}} préréglage(s) sélectionné(s) ?",
"deletePresetConfirm": "Supprimer le préréglage \"{{name}}\" ?", "deletePresetConfirm": "Supprimer le préréglage \"{{name}}\" ?",
"managePresetTitle": "Gérer les préréglages EQ",
"selectAll": "Tout sélectionner",
"batchDelete": "Supprimer la sélection",
"noPresets": "Aucun préréglage",
"renamePreset": "Renommer",
"deletePreset": "Supprimer",
"toastRenamed": "Renommé", "toastRenamed": "Renommé",
"toastRenameFail": "Échec du renommage", "toastRenameFail": "Échec du renommage",
"renameEmptyName": "Le nom ne peut pas être vide", "renameEmptyName": "Le nom ne peut pas être vide",
+6
View File
@@ -269,6 +269,12 @@
"deleteConfirm": "是否刪除耳機「{{name}}」?", "deleteConfirm": "是否刪除耳機「{{name}}」?",
"batchDeleteConfirm": "是否刪除選中的 {{count}} 個預設?", "batchDeleteConfirm": "是否刪除選中的 {{count}} 個預設?",
"deletePresetConfirm": "是否刪除預設「{{name}}」?", "deletePresetConfirm": "是否刪除預設「{{name}}」?",
"managePresetTitle": "管理 EQ 預設",
"selectAll": "全選",
"batchDelete": "批量刪除",
"noPresets": "暫無預設",
"renamePreset": "重新命名",
"deletePreset": "刪除",
"toastRenamed": "已重新命名", "toastRenamed": "已重新命名",
"toastRenameFail": "重新命名失敗", "toastRenameFail": "重新命名失敗",
"renameEmptyName": "名稱不能為空", "renameEmptyName": "名稱不能為空",
+6
View File
@@ -269,6 +269,12 @@
"deleteConfirm": "是否删除耳机「{{name}}」?", "deleteConfirm": "是否删除耳机「{{name}}」?",
"batchDeleteConfirm": "是否删除选中的 {{count}} 个预设?", "batchDeleteConfirm": "是否删除选中的 {{count}} 个预设?",
"deletePresetConfirm": "是否删除预设「{{name}}」?", "deletePresetConfirm": "是否删除预设「{{name}}」?",
"managePresetTitle": "管理 EQ 预设",
"selectAll": "全选",
"batchDelete": "批量删除",
"noPresets": "暂无预设",
"renamePreset": "重命名",
"deletePreset": "删除",
"toastRenamed": "已重命名", "toastRenamed": "已重命名",
"toastRenameFail": "重命名失败", "toastRenameFail": "重命名失败",
"renameEmptyName": "名称不能为空", "renameEmptyName": "名称不能为空",
@@ -208,13 +208,13 @@ export function PeqPresetManageDialog({
> >
<div className="flex items-center justify-between mb-4"> <div className="flex items-center justify-between mb-4">
<h3 className="text-[18px] font-semibold leading-tight text-white/90"> <h3 className="text-[18px] font-semibold leading-tight text-white/90">
EQ {eqUi.managePresetTitle}
</h3> </h3>
<button <button
type="button" type="button"
className="rounded-full p-1.5 text-white/45 transition-colors hover:bg-white/10 hover:text-white/80" className="rounded-full p-1.5 text-white/45 transition-colors hover:bg-white/10 hover:text-white/80"
onClick={onClose} onClick={onClose}
aria-label="Close" aria-label={eqUi.closeDrawer}
> >
<X size={20} /> <X size={20} />
</button> </button>
@@ -223,7 +223,7 @@ export function PeqPresetManageDialog({
<div className="flex items-center justify-between gap-3 mb-3"> <div className="flex items-center justify-between gap-3 mb-3">
<label className="flex items-center gap-2.5 text-[13px] text-white/70 select-none cursor-pointer"> <label className="flex items-center gap-2.5 text-[13px] text-white/70 select-none cursor-pointer">
<Checkbox checked={allChecked} onChange={toggleAll} /> <Checkbox checked={allChecked} onChange={toggleAll} />
{eqUi.selectAll}
</label> </label>
<button <button
@@ -238,7 +238,7 @@ export function PeqPresetManageDialog({
onClick={() => void confirmAndDelete(checkedIdxs)} onClick={() => void confirmAndDelete(checkedIdxs)}
> >
{deleting && <Loader2 size={13} className="animate-spin" />} {deleting && <Loader2 size={13} className="animate-spin" />}
{eqUi.batchDelete}
</button> </button>
</div> </div>
@@ -252,7 +252,7 @@ export function PeqPresetManageDialog({
> >
{items.length === 0 ? ( {items.length === 0 ? (
<div className="py-10 text-center text-[13px] text-white/30"> <div className="py-10 text-center text-[13px] text-white/30">
{eqUi.noPresets}
</div> </div>
) : ( ) : (
items.map((item, idx) => { items.map((item, idx) => {
@@ -293,7 +293,7 @@ export function PeqPresetManageDialog({
onClick={() => void commitRename()} onClick={() => void commitRename()}
> >
{renaming && <Loader2 size={13} className="animate-spin" />} {renaming && <Loader2 size={13} className="animate-spin" />}
{eqUi.save}
</button> </button>
<button <button
type="button" type="button"
@@ -307,7 +307,7 @@ export function PeqPresetManageDialog({
setEditingName(""); setEditingName("");
}} }}
> >
{eqUi.cancel}
</button> </button>
</div> </div>
<PeqPresetNameLengthHint value={editingName} /> <PeqPresetNameLengthHint value={editingName} />
@@ -331,7 +331,7 @@ export function PeqPresetManageDialog({
background: "rgba(255,255,255,0.06)", background: "rgba(255,255,255,0.06)",
border: "1px solid rgba(255,255,255,0.1)", border: "1px solid rgba(255,255,255,0.1)",
}} }}
title="重命名" title={eqUi.renamePreset}
onClick={() => beginRename(idx)} onClick={() => beginRename(idx)}
> >
<Pencil size={14} /> <Pencil size={14} />
@@ -343,7 +343,7 @@ export function PeqPresetManageDialog({
background: "rgba(239,68,68,0.08)", background: "rgba(239,68,68,0.08)",
border: "1px solid rgba(239,68,68,0.2)", border: "1px solid rgba(239,68,68,0.2)",
}} }}
title="删除" title={eqUi.deletePreset}
onClick={() => void confirmAndDelete([idx])} onClick={() => void confirmAndDelete([idx])}
> >
<Trash2 size={14} /> <Trash2 size={14} />