feat(ui): add global, bulk and per-recipe rematch actions

This commit is contained in:
Will Miao
2026-08-09 11:31:00 +08:00
parent 3001f0f0ef
commit 420530f532
21 changed files with 991 additions and 1 deletions

View File

@@ -186,6 +186,13 @@
"cancelled": "Reparatur abgebrochen. {count} Rezepte wurden repariert.",
"error": "Recipe-Reparatur fehlgeschlagen: {message}"
},
"rematchRecipes": {
"label": "[TODO: Translate] Rematch recipes to local models",
"loading": "[TODO: Translate] Rematching recipes to local models...",
"success": "[TODO: Translate] Successfully rematched {count} recipes.",
"cancelled": "[TODO: Translate] Rematch cancelled. {count} recipes were rematched.",
"error": "[TODO: Translate] Recipe rematch failed: {message}"
},
"manageExcludedModels": {
"label": "Ausgeschlossene Modelle verwalten"
},
@@ -768,6 +775,7 @@
"copyAll": "Alle Syntax kopieren",
"refreshAll": "Alle Metadaten aktualisieren",
"repairMetadata": "Metadaten der Auswahl reparieren",
"rematchMetadata": "[TODO: Translate] Rematch Selected to Local Models",
"reimportMetadata": "Aus Quelle neu importieren",
"checkUpdates": "Auswahl auf Updates prüfen",
"moveAll": "Alle in Ordner verschieben",
@@ -823,6 +831,7 @@
"setContentRating": "Inhaltsbewertung festlegen",
"moveToFolder": "In Ordner verschieben",
"repairMetadata": "Metadaten reparieren",
"rematchMetadata": "[TODO: Translate] Rematch to local models",
"reimportMetadata": "Aus Quelle neu importieren",
"excludeModel": "Modell ausschließen",
"restoreModel": "Modell wiederherstellen",
@@ -1951,6 +1960,9 @@
"repairBulkComplete": "Reparatur abgeschlossen: {repaired} repariert, {skipped} übersprungen (von {total})",
"repairBulkSkipped": "Keine Reparatur für die {total} ausgewählten Rezepte erforderlich",
"repairBulkFailed": "Reparatur der ausgewählten Rezepte fehlgeschlagen: {message}",
"rematchComplete": "[TODO: Translate] Rematch complete: {rematched} rematched, {skipped} skipped (of {total})",
"rematchSkipped": "[TODO: Translate] No rematch needed for any of the {total} selected recipes",
"rematchFailed": "[TODO: Translate] Failed to rematch selected recipes: {message}",
"reimporting": "Rezept wird aus Quelle neu importiert...",
"reimportSuccess": "Rezept erfolgreich neu importiert",
"reimportBulkComplete": "Neuimport abgeschlossen: {completed} importiert, {failed} fehlgeschlagen (von {total})",

View File

@@ -186,6 +186,13 @@
"cancelled": "Repair cancelled. {count} recipes were repaired.",
"error": "Recipe repair failed: {message}"
},
"rematchRecipes": {
"label": "Rematch recipes to local models",
"loading": "Rematching recipes to local models...",
"success": "Successfully rematched {count} recipes.",
"cancelled": "Rematch cancelled. {count} recipes were rematched.",
"error": "Recipe rematch failed: {message}"
},
"manageExcludedModels": {
"label": "Manage Excluded Models"
},
@@ -768,6 +775,7 @@
"copyAll": "Copy Selected Syntax",
"refreshAll": "Refresh Selected Metadata",
"repairMetadata": "Repair Metadata for Selected",
"rematchMetadata": "Rematch Selected to Local Models",
"reimportMetadata": "Re-import from Source",
"checkUpdates": "Check Updates for Selected",
"moveAll": "Move Selected to Folder",
@@ -823,6 +831,7 @@
"setContentRating": "Set Content Rating",
"moveToFolder": "Move to Folder",
"repairMetadata": "Repair metadata",
"rematchMetadata": "Rematch to local models",
"reimportMetadata": "Re-import from Source",
"excludeModel": "Exclude Model",
"restoreModel": "Restore Model",
@@ -1951,6 +1960,9 @@
"repairBulkComplete": "Repair complete: {repaired} repaired, {skipped} skipped (of {total})",
"repairBulkSkipped": "No repair needed for any of the {total} selected recipes",
"repairBulkFailed": "Failed to repair selected recipes: {message}",
"rematchComplete": "Rematch complete: {rematched} rematched, {skipped} skipped (of {total})",
"rematchSkipped": "No rematch needed for any of the {total} selected recipes",
"rematchFailed": "Failed to rematch selected recipes: {message}",
"reimporting": "Re-importing recipe from source...",
"reimportSuccess": "Recipe re-imported successfully",
"reimportBulkComplete": "Re-import complete: {completed} re-imported, {failed} failed (of {total})",

View File

@@ -186,6 +186,13 @@
"cancelled": "Reparación cancelada. {count} recetas fueron reparadas.",
"error": "Error al reparar recetas: {message}"
},
"rematchRecipes": {
"label": "[TODO: Translate] Rematch recipes to local models",
"loading": "[TODO: Translate] Rematching recipes to local models...",
"success": "[TODO: Translate] Successfully rematched {count} recipes.",
"cancelled": "[TODO: Translate] Rematch cancelled. {count} recipes were rematched.",
"error": "[TODO: Translate] Recipe rematch failed: {message}"
},
"manageExcludedModels": {
"label": "Gestionar modelos excluidos"
},
@@ -768,6 +775,7 @@
"copyAll": "Copiar toda la sintaxis",
"refreshAll": "Actualizar todos los metadatos",
"repairMetadata": "Reparar metadatos de la selección",
"rematchMetadata": "[TODO: Translate] Rematch Selected to Local Models",
"reimportMetadata": "Reimportar desde origen",
"checkUpdates": "Comprobar actualizaciones para la selección",
"moveAll": "Mover todos a carpeta",
@@ -823,6 +831,7 @@
"setContentRating": "Establecer clasificación de contenido",
"moveToFolder": "Mover a carpeta",
"repairMetadata": "Reparar metadatos",
"rematchMetadata": "[TODO: Translate] Rematch to local models",
"reimportMetadata": "Reimportar desde origen",
"excludeModel": "Excluir modelo",
"restoreModel": "Restaurar modelo",
@@ -1951,6 +1960,9 @@
"repairBulkComplete": "Reparación completa: {repaired} reparadas, {skipped} omitidas (de {total})",
"repairBulkSkipped": "No se necesita reparación para ninguna de las {total} recetas seleccionadas",
"repairBulkFailed": "Error al reparar las recetas seleccionadas: {message}",
"rematchComplete": "[TODO: Translate] Rematch complete: {rematched} rematched, {skipped} skipped (of {total})",
"rematchSkipped": "[TODO: Translate] No rematch needed for any of the {total} selected recipes",
"rematchFailed": "[TODO: Translate] Failed to rematch selected recipes: {message}",
"reimporting": "Reimportando receta desde origen...",
"reimportSuccess": "Receta reimportada exitosamente",
"reimportBulkComplete": "Reimportación completa: {completed} reimportadas, {failed} fallidas (de {total})",

View File

@@ -186,6 +186,13 @@
"cancelled": "Réparation annulée. {count} recettes ont été réparées.",
"error": "Échec de la réparation des recettes : {message}"
},
"rematchRecipes": {
"label": "[TODO: Translate] Rematch recipes to local models",
"loading": "[TODO: Translate] Rematching recipes to local models...",
"success": "[TODO: Translate] Successfully rematched {count} recipes.",
"cancelled": "[TODO: Translate] Rematch cancelled. {count} recipes were rematched.",
"error": "[TODO: Translate] Recipe rematch failed: {message}"
},
"manageExcludedModels": {
"label": "Gérer les modèles exclus"
},
@@ -768,6 +775,7 @@
"copyAll": "Copier toute la syntaxe",
"refreshAll": "Actualiser toutes les métadonnées",
"repairMetadata": "Réparer les métadonnées de la sélection",
"rematchMetadata": "[TODO: Translate] Rematch Selected to Local Models",
"reimportMetadata": "Ré-importer depuis la source",
"checkUpdates": "Vérifier les mises à jour pour la sélection",
"moveAll": "Déplacer tout vers un dossier",
@@ -823,6 +831,7 @@
"setContentRating": "Définir la classification du contenu",
"moveToFolder": "Déplacer vers un dossier",
"repairMetadata": "Réparer les métadonnées",
"rematchMetadata": "[TODO: Translate] Rematch to local models",
"reimportMetadata": "Ré-importer depuis la source",
"excludeModel": "Exclure le modèle",
"restoreModel": "Restaurer le modèle",
@@ -1951,6 +1960,9 @@
"repairBulkComplete": "Réparation terminée : {repaired} réparée(s), {skipped} ignorée(s) (sur {total})",
"repairBulkSkipped": "Aucune réparation nécessaire parmi les {total} recettes sélectionnées",
"repairBulkFailed": "Échec de la réparation des recettes sélectionnées : {message}",
"rematchComplete": "[TODO: Translate] Rematch complete: {rematched} rematched, {skipped} skipped (of {total})",
"rematchSkipped": "[TODO: Translate] No rematch needed for any of the {total} selected recipes",
"rematchFailed": "[TODO: Translate] Failed to rematch selected recipes: {message}",
"reimporting": "Ré-import de la recette depuis la source...",
"reimportSuccess": "Recette ré-importée avec succès",
"reimportBulkComplete": "Ré-import terminé : {completed} ré-importé(s), {failed} échec(s) (sur {total})",

View File

@@ -186,6 +186,13 @@
"cancelled": "תיקון בוטל. {count} מתכונים תוקנו.",
"error": "תיקון המתכונים נכשל: {message}"
},
"rematchRecipes": {
"label": "[TODO: Translate] Rematch recipes to local models",
"loading": "[TODO: Translate] Rematching recipes to local models...",
"success": "[TODO: Translate] Successfully rematched {count} recipes.",
"cancelled": "[TODO: Translate] Rematch cancelled. {count} recipes were rematched.",
"error": "[TODO: Translate] Recipe rematch failed: {message}"
},
"manageExcludedModels": {
"label": "ניהול מודלים מוחרגים"
},
@@ -768,6 +775,7 @@
"copyAll": "העתק את כל התחבירים",
"refreshAll": "רענן את כל המטא-דאטה",
"repairMetadata": "תקן מטא-דאטה עבור הנבחרים",
"rematchMetadata": "[TODO: Translate] Rematch Selected to Local Models",
"reimportMetadata": "ייבא מחדש ממקור",
"checkUpdates": "בדוק עדכונים לבחירה",
"moveAll": "העבר הכל לתיקייה",
@@ -823,6 +831,7 @@
"setContentRating": "הגדר דירוג תוכן",
"moveToFolder": "העבר לתיקייה",
"repairMetadata": "תיקון מטא-דאטה",
"rematchMetadata": "[TODO: Translate] Rematch to local models",
"reimportMetadata": "ייבא מחדש ממקור",
"excludeModel": "החרג מודל",
"restoreModel": "שחזור מודל",
@@ -1951,6 +1960,9 @@
"repairBulkComplete": "התיקון הושלם: {repaired} תוקנו, {skipped} דולגו (מתוך {total})",
"repairBulkSkipped": "אין צורך בתיקון עבור {total} המתכונים הנבחרים",
"repairBulkFailed": "תיקון המתכונים הנבחרים נכשל: {message}",
"rematchComplete": "[TODO: Translate] Rematch complete: {rematched} rematched, {skipped} skipped (of {total})",
"rematchSkipped": "[TODO: Translate] No rematch needed for any of the {total} selected recipes",
"rematchFailed": "[TODO: Translate] Failed to rematch selected recipes: {message}",
"reimporting": "מייבא מתכון מחדש מהמקור...",
"reimportSuccess": "המתכון יובא מחדש בהצלחה",
"reimportBulkComplete": "ייבוא מחדש הושלם: {completed} יובאו, {failed} נכשלו (מתוך {total})",

View File

@@ -186,6 +186,13 @@
"cancelled": "修復がキャンセルされました。{count}個のレシピが修復されました。",
"error": "レシピの修復に失敗しました: {message}"
},
"rematchRecipes": {
"label": "[TODO: Translate] Rematch recipes to local models",
"loading": "[TODO: Translate] Rematching recipes to local models...",
"success": "[TODO: Translate] Successfully rematched {count} recipes.",
"cancelled": "[TODO: Translate] Rematch cancelled. {count} recipes were rematched.",
"error": "[TODO: Translate] Recipe rematch failed: {message}"
},
"manageExcludedModels": {
"label": "除外モデルを管理"
},
@@ -768,6 +775,7 @@
"copyAll": "すべての構文をコピー",
"refreshAll": "すべてのメタデータを更新",
"repairMetadata": "選択したレシピのメタデータを修復",
"rematchMetadata": "[TODO: Translate] Rematch Selected to Local Models",
"reimportMetadata": "ソースから再インポート",
"checkUpdates": "選択項目の更新を確認",
"moveAll": "すべてをフォルダに移動",
@@ -823,6 +831,7 @@
"setContentRating": "コンテンツレーティングを設定",
"moveToFolder": "フォルダに移動",
"repairMetadata": "メタデータを修復",
"rematchMetadata": "[TODO: Translate] Rematch to local models",
"reimportMetadata": "ソースから再インポート",
"excludeModel": "モデルを除外",
"restoreModel": "モデルを復元",
@@ -1951,6 +1960,9 @@
"repairBulkComplete": "修復完了:{repaired} 件修復、{skipped} 件スキップ(合計 {total} 件)",
"repairBulkSkipped": "選択した {total} 件のレシピは修復不要です",
"repairBulkFailed": "選択したレシピの修復に失敗しました:{message}",
"rematchComplete": "[TODO: Translate] Rematch complete: {rematched} rematched, {skipped} skipped (of {total})",
"rematchSkipped": "[TODO: Translate] No rematch needed for any of the {total} selected recipes",
"rematchFailed": "[TODO: Translate] Failed to rematch selected recipes: {message}",
"reimporting": "ソースからレシピを再インポート中...",
"reimportSuccess": "レシピの再インポートが完了しました",
"reimportBulkComplete": "再インポート完了:{completed} 件成功、{failed} 件失敗(合計 {total} 件)",

View File

@@ -186,6 +186,13 @@
"cancelled": "수리가 취소되었습니다. {count}개의 레시피가 수리되었습니다.",
"error": "레시피 복구 실패: {message}"
},
"rematchRecipes": {
"label": "[TODO: Translate] Rematch recipes to local models",
"loading": "[TODO: Translate] Rematching recipes to local models...",
"success": "[TODO: Translate] Successfully rematched {count} recipes.",
"cancelled": "[TODO: Translate] Rematch cancelled. {count} recipes were rematched.",
"error": "[TODO: Translate] Recipe rematch failed: {message}"
},
"manageExcludedModels": {
"label": "제외된 모델 관리"
},
@@ -768,6 +775,7 @@
"copyAll": "모든 문법 복사",
"refreshAll": "모든 메타데이터 새로고침",
"repairMetadata": "선택한 레시피 메타데이터 복구",
"rematchMetadata": "[TODO: Translate] Rematch Selected to Local Models",
"reimportMetadata": "소스에서 다시 가져오기",
"checkUpdates": "선택 항목 업데이트 확인",
"moveAll": "모두 폴더로 이동",
@@ -823,6 +831,7 @@
"setContentRating": "콘텐츠 등급 설정",
"moveToFolder": "폴더로 이동",
"repairMetadata": "메타데이터 복구",
"rematchMetadata": "[TODO: Translate] Rematch to local models",
"reimportMetadata": "소스에서 다시 가져오기",
"excludeModel": "모델 제외",
"restoreModel": "모델 복원",
@@ -1951,6 +1960,9 @@
"repairBulkComplete": "복구 완료: {repaired}개 복구, {skipped}개 건너뜀 (총 {total}개)",
"repairBulkSkipped": "선택한 {total}개 레시피는 복구가 필요하지 않습니다",
"repairBulkFailed": "선택한 레시피 복구 실패: {message}",
"rematchComplete": "[TODO: Translate] Rematch complete: {rematched} rematched, {skipped} skipped (of {total})",
"rematchSkipped": "[TODO: Translate] No rematch needed for any of the {total} selected recipes",
"rematchFailed": "[TODO: Translate] Failed to rematch selected recipes: {message}",
"reimporting": "소스에서 레시피를 다시 가져오는 중...",
"reimportSuccess": "레시피를 다시 가져왔습니다",
"reimportBulkComplete": "다시 가져오기 완료: {completed}개 성공, {failed}개 실패 (총 {total}개)",

View File

@@ -186,6 +186,13 @@
"cancelled": "Восстановление отменено. {count} рецептов было восстановлено.",
"error": "Ошибка восстановления рецептов: {message}"
},
"rematchRecipes": {
"label": "[TODO: Translate] Rematch recipes to local models",
"loading": "[TODO: Translate] Rematching recipes to local models...",
"success": "[TODO: Translate] Successfully rematched {count} recipes.",
"cancelled": "[TODO: Translate] Rematch cancelled. {count} recipes were rematched.",
"error": "[TODO: Translate] Recipe rematch failed: {message}"
},
"manageExcludedModels": {
"label": "Управление исключёнными моделями"
},
@@ -768,6 +775,7 @@
"copyAll": "Копировать весь синтаксис",
"refreshAll": "Обновить все метаданные",
"repairMetadata": "Восстановить метаданные для выбранных",
"rematchMetadata": "[TODO: Translate] Rematch Selected to Local Models",
"reimportMetadata": "Переимпортировать из источника",
"checkUpdates": "Проверить обновления для выбранных",
"moveAll": "Переместить все в папку",
@@ -823,6 +831,7 @@
"setContentRating": "Установить рейтинг контента",
"moveToFolder": "Переместить в папку",
"repairMetadata": "Восстановить метаданные",
"rematchMetadata": "[TODO: Translate] Rematch to local models",
"reimportMetadata": "Переимпортировать из источника",
"excludeModel": "Исключить модель",
"restoreModel": "Восстановить модель",
@@ -1951,6 +1960,9 @@
"repairBulkComplete": "Восстановление завершено: {repaired} восстановлено, {skipped} пропущено (из {total})",
"repairBulkSkipped": "Ни один из {total} выбранных рецептов не требует восстановления",
"repairBulkFailed": "Не удалось восстановить выбранные рецепты: {message}",
"rematchComplete": "[TODO: Translate] Rematch complete: {rematched} rematched, {skipped} skipped (of {total})",
"rematchSkipped": "[TODO: Translate] No rematch needed for any of the {total} selected recipes",
"rematchFailed": "[TODO: Translate] Failed to rematch selected recipes: {message}",
"reimporting": "Переимпорт рецепта из источника...",
"reimportSuccess": "Рецепт успешно переимпортирован",
"reimportBulkComplete": "Переимпорт завершён: {completed} переимпортировано, {failed} ошибок (из {total})",

View File

@@ -186,6 +186,13 @@
"cancelled": "修复已取消。已修复 {count} 个配方。",
"error": "配方修复失败:{message}"
},
"rematchRecipes": {
"label": "[TODO: Translate] Rematch recipes to local models",
"loading": "[TODO: Translate] Rematching recipes to local models...",
"success": "[TODO: Translate] Successfully rematched {count} recipes.",
"cancelled": "[TODO: Translate] Rematch cancelled. {count} recipes were rematched.",
"error": "[TODO: Translate] Recipe rematch failed: {message}"
},
"manageExcludedModels": {
"label": "管理已排除的模型"
},
@@ -768,6 +775,7 @@
"copyAll": "复制所选中语法",
"refreshAll": "刷新所选中元数据",
"repairMetadata": "修复所选中元数据",
"rematchMetadata": "[TODO: Translate] Rematch Selected to Local Models",
"reimportMetadata": "从源重新导入",
"checkUpdates": "检查所选更新",
"moveAll": "移动所选中到文件夹",
@@ -823,6 +831,7 @@
"setContentRating": "设置内容评级",
"moveToFolder": "移动到文件夹",
"repairMetadata": "修复元数据",
"rematchMetadata": "[TODO: Translate] Rematch to local models",
"reimportMetadata": "从源重新导入",
"excludeModel": "排除模型",
"restoreModel": "恢复模型",
@@ -1951,6 +1960,9 @@
"repairBulkComplete": "修复完成:{repaired} 个已修复,{skipped} 个已跳过(共 {total} 个)",
"repairBulkSkipped": "所选 {total} 个配方无需修复",
"repairBulkFailed": "修复所选配方失败:{message}",
"rematchComplete": "[TODO: Translate] Rematch complete: {rematched} rematched, {skipped} skipped (of {total})",
"rematchSkipped": "[TODO: Translate] No rematch needed for any of the {total} selected recipes",
"rematchFailed": "[TODO: Translate] Failed to rematch selected recipes: {message}",
"reimporting": "正在从源重新导入配方...",
"reimportSuccess": "配方已从源重新导入成功",
"reimportBulkComplete": "重新导入完成:{completed} 个已导入,{failed} 个失败(共 {total} 个)",

View File

@@ -186,6 +186,13 @@
"cancelled": "修復已取消。已修復 {count} 個配方。",
"error": "配方修復失敗:{message}"
},
"rematchRecipes": {
"label": "[TODO: Translate] Rematch recipes to local models",
"loading": "[TODO: Translate] Rematching recipes to local models...",
"success": "[TODO: Translate] Successfully rematched {count} recipes.",
"cancelled": "[TODO: Translate] Rematch cancelled. {count} recipes were rematched.",
"error": "[TODO: Translate] Recipe rematch failed: {message}"
},
"manageExcludedModels": {
"label": "管理已排除的模型"
},
@@ -768,6 +775,7 @@
"copyAll": "複製全部語法",
"refreshAll": "刷新全部 metadata",
"repairMetadata": "修復所選中元數據",
"rematchMetadata": "[TODO: Translate] Rematch Selected to Local Models",
"reimportMetadata": "從來源重新匯入",
"checkUpdates": "檢查所選更新",
"moveAll": "全部移動到資料夾",
@@ -823,6 +831,7 @@
"setContentRating": "設定內容分級",
"moveToFolder": "移動到資料夾",
"repairMetadata": "修復元數據",
"rematchMetadata": "[TODO: Translate] Rematch to local models",
"reimportMetadata": "從來源重新匯入",
"excludeModel": "排除模型",
"restoreModel": "還原模型",
@@ -1951,6 +1960,9 @@
"repairBulkComplete": "修復完成:{repaired} 個已修復,{skipped} 個已跳過(共 {total} 個)",
"repairBulkSkipped": "所選 {total} 個配方無需修復",
"repairBulkFailed": "修復所選配方失敗:{message}",
"rematchComplete": "[TODO: Translate] Rematch complete: {rematched} rematched, {skipped} skipped (of {total})",
"rematchSkipped": "[TODO: Translate] No rematch needed for any of the {total} selected recipes",
"rematchFailed": "[TODO: Translate] Failed to rematch selected recipes: {message}",
"reimporting": "正在從來源重新匯入配方...",
"reimportSuccess": "配方已從來源重新匯入成功",
"reimportBulkComplete": "重新匯入完成:{completed} 個已匯入,{failed} 個失敗(共 {total} 個)",