diff --git a/docs/i18n-translation-guidelines.md b/docs/i18n-translation-guidelines.md index f92c577b..56aea2a9 100644 --- a/docs/i18n-translation-guidelines.md +++ b/docs/i18n-translation-guidelines.md @@ -4,7 +4,7 @@ This document is the canonical set of conventions for translating LoRA Manager U It applies to **human translators and AI agents** alike. Read it before editing anything in `locales/`. -Source of truth: `locales/en.json` (10 locales, 2025 leaf keys; all locales share the exact +Source of truth: `locales/en.json` (10 locales, 2105 leaf keys; all locales share the exact same key structure). Locales: `en`, `zh-CN`, `zh-TW`, `ja`, `ko`, `fr`, `de`, `es`, `ru`, `he` (RTL). @@ -78,6 +78,15 @@ Locales: `en`, `zh-CN`, `zh-TW`, `ja`, `ko`, `fr`, `de`, `es`, `ru`, `he` (RTL). > the `toast.loras.filenameTemplate*` / `toast.settings.filenameTemplates*` toasts. All 9 > locales are translated (terminology in §2, "Filename Templates feature"). +> **Status (2026-09, folder delete verification):** the folder delete modal no longer trusts the +> sidebar's "empty folder" prediction — it dry-runs the delete against the backend and renders +> the answer, so a folder whose models are all *excluded* (invisible to the model lists, still +> real weight files on disk) is refused with an explanation instead of contradicting itself. +> That added 5 keys (`sidebar.deleteFolderModal.notEmptyMessageCount`, +> `.notEmptyMessageExcluded`, `.busyTitle`, `.checking`, `sidebar.deleteFolderResult.notEmptyWithCount`); +> all 9 locales are translated (terminology in §2, "Folder sidebar feature"), so the +> "no remaining placeholders" claim holds again. + --- ## 1. Hard rules (do not violate) @@ -391,11 +400,32 @@ The model-root sidebar manages on-disk folders. "Folder" reuses the noun already | tree view / list view | zh-CN 树形视图 / 列表视图 · zh-TW 樹狀檢視 / 清單檢視 · ja ツリー表示 / リスト表示 · ko 트리 보기 / 목록 보기 · fr Vue arborescente / Vue liste · de Baumansicht / Listenansicht · es Vista de árbol / Vista de lista · ru Дерево / Список · he תצוגת עץ / תצוגת רשימה | | sidebar | reuse each locale's `sidebar.hideOnThisPage` noun: zh-CN 侧边栏 · zh-TW 側邊欄 · ja サイドバー · ko 사이드바 · fr barre latérale · de Seitenleiste · es barra lateral · ru боковая панель · he סרגל צד | -Deleting a folder **never cascades over model files** — the backend refuses it and -`sidebar.deleteFolderModal.notEmptyMessage` states the rule in every locale, so keep that -clause (and its `—`) when the copy is edited. The `{name}` / `{count}` / `{message}` tokens in -`sidebar.createFolderResult.*`, `sidebar.deleteFolderResult.*` and `sidebar.renameFolderResult.*` -are verbatim §1-R2 placeholders; `successWithFiles` is the only key carrying `{count}`. +Deleting a folder **never cascades over model files** — the backend refuses it and the +`sidebar.deleteFolderModal.notEmptyMessage*` keys state the rule in every locale, so keep that +clause (and its `—`) when the copy is edited. The three variants split by what the modal knows: +`notEmptyMessage` (no counts), `notEmptyMessageCount` (`{count}`, the blocking models are all +listed) and `notEmptyMessageExcluded` (`{count}` + `{excluded}`, at least one is hidden by the +`exclude` flag — the case where the folder legitimately looks empty). `checking` ("Checking the +folder contents...", ASCII ellipsis) shows while the backend dry run is pending, `busyTitle` +titles the already-pending-staged-delete state, and `notEmptyWithCount` mirrors +`deleteFolderResult.notEmpty` with the count for the stale-tree toast. + +| Term | Rendering | +|---|---| +| excluded from the library | zh-CN 已从模型库中排除 · zh-TW 已從模型庫中排除 · ja ライブラリから除外 · ko 라이브러리에서 제외 · fr exclu de la bibliothèque · de von der Bibliothek ausgeschlossen · es excluido de la biblioteca · ru исключены из библиотеки · he מוחרגים מהספרייה | +| un-exclude (verb) | zh-CN 取消排除 · zh-TW 取消排除 · ja 除外を解除 · ko 제외를 해제 · fr annuler l'exclusion · de den Ausschluss aufheben · es anular la exclusión · ru снять исключение · he לבטל את ההחרגה | +| "Manage Excluded Models" quoted in prose | zh-CN “管理已排除的模型” · zh-TW 「管理已排除的模型」 · ja 「除外モデルを管理」 · ko '제외된 모델 관리' · fr « Gérer les modèles exclus » · de „Ausgeschlossene Modelle verwalten“ · es «Gestionar modelos excluidos» · ru «Управление исключёнными моделями» · he «ניהול מודלים מוחרגים» | + +A UI label quoted inside prose follows each locale's existing help-text style (zh-CN “ ”, +zh-TW/ja 「 」, ko ASCII `' '`, fr/ru/es/he « », de „ “) — see `settings.hideEarlyAccessUpdates.help` +/ `settings.civitaiHost.help` as the precedent. `קובצי מודלים` is the Hebrew model-file noun +(`notEmptyMessage`); keep it identical in all four Hebrew keys. + +The `{name}` / `{count}` / `{excluded}` / `{message}` tokens in `sidebar.createFolderResult.*`, +`sidebar.deleteFolderResult.*` and `sidebar.renameFolderResult.*` are verbatim §1-R2 +placeholders. The keys carrying `{count}` are `successWithFiles`, `notEmptyMessageCount`, +`notEmptyMessageExcluded` and `notEmptyWithCount`; `notEmptyMessageExcluded` is the only key +carrying `{excluded}`. ### Settings Organization tab diff --git a/locales/de.json b/locales/de.json index 45109ad7..db7bf693 100644 --- a/locales/de.json +++ b/locales/de.json @@ -1350,10 +1350,10 @@ "emptyNote": "Dieser Ordner enthält keine Modelle. Alle anderen darin enthaltenen Dateien werden ebenfalls gelöscht.", "notEmptyTitle": "Ordner ist nicht leer", "notEmptyMessage": "Dieser Ordner enthält noch Modelle. Löschen oder verschieben Sie diese zuerst — beim Löschen eines Ordners werden Modelldateien niemals mitgelöscht.", - "notEmptyMessageCount": "[TODO: Translate] This folder still contains {count} model file(s). Delete or move them first — deleting a folder never cascades over model files.", - "notEmptyMessageExcluded": "[TODO: Translate] This folder still contains {count} model file(s), {excluded} of them excluded from the library. Un-exclude them in Manage Excluded Models and delete them first — deleting a folder never cascades over model files.", - "busyTitle": "[TODO: Translate] A deletion is still pending", - "checking": "[TODO: Translate] Checking the folder contents...", + "notEmptyMessageCount": "Dieser Ordner enthält noch {count} Modelldatei(en). Löschen oder verschieben Sie diese zuerst — beim Löschen eines Ordners werden Modelldateien niemals mitgelöscht.", + "notEmptyMessageExcluded": "Dieser Ordner enthält noch {count} Modelldatei(en), davon {excluded} von der Bibliothek ausgeschlossen. Heben Sie den Ausschluss unter „Ausgeschlossene Modelle verwalten“ auf und löschen Sie sie zuerst — beim Löschen eines Ordners werden Modelldateien niemals mitgelöscht.", + "busyTitle": "Eine Löschung steht noch aus", + "checking": "Ordnerinhalt wird geprüft...", "confirm": "Ordner löschen" }, "deleteFolderResult": { @@ -1362,7 +1362,7 @@ "restored": "Ordner wiederhergestellt", "failed": "Ordner konnte nicht gelöscht werden: {message}", "notEmpty": "Dieser Ordner enthält noch Modelle. Aktualisieren Sie die Seitenleiste und versuchen Sie es erneut.", - "notEmptyWithCount": "[TODO: Translate] This folder still contains {count} model file(s). Refresh the sidebar and try again.", + "notEmptyWithCount": "Dieser Ordner enthält noch {count} Modelldatei(en). Aktualisieren Sie die Seitenleiste und versuchen Sie es erneut.", "busy": "In diesem Ordner steht noch eine Löschung aus. Warten Sie, bis das Zeitfenster für das Rückgängigmachen abgelaufen ist.", "unsupported": "Das Löschen von Ordnern wird auf dieser Seite nicht unterstützt", "noRoot": "Es ist kein Modell-Stammverzeichnis konfiguriert" diff --git a/locales/es.json b/locales/es.json index 5b5f0647..2bba03d3 100644 --- a/locales/es.json +++ b/locales/es.json @@ -1350,10 +1350,10 @@ "emptyNote": "Esta carpeta no contiene modelos. Los demás archivos que contenga también se eliminarán.", "notEmptyTitle": "La carpeta no está vacía", "notEmptyMessage": "Esta carpeta aún contiene modelos. Elimínalos o muévelos primero — eliminar una carpeta nunca elimina los archivos de modelo en cascada.", - "notEmptyMessageCount": "[TODO: Translate] This folder still contains {count} model file(s). Delete or move them first — deleting a folder never cascades over model files.", - "notEmptyMessageExcluded": "[TODO: Translate] This folder still contains {count} model file(s), {excluded} of them excluded from the library. Un-exclude them in Manage Excluded Models and delete them first — deleting a folder never cascades over model files.", - "busyTitle": "[TODO: Translate] A deletion is still pending", - "checking": "[TODO: Translate] Checking the folder contents...", + "notEmptyMessageCount": "Esta carpeta aún contiene {count} archivo(s) de modelo. Elimínalos o muévelos primero — eliminar una carpeta nunca elimina los archivos de modelo en cascada.", + "notEmptyMessageExcluded": "Esta carpeta aún contiene {count} archivo(s) de modelo, de los cuales {excluded} están excluidos de la biblioteca. Anula su exclusión en «Gestionar modelos excluidos» y elimínalos primero — eliminar una carpeta nunca elimina los archivos de modelo en cascada.", + "busyTitle": "Todavía hay una eliminación pendiente", + "checking": "Comprobando el contenido de la carpeta...", "confirm": "Eliminar carpeta" }, "deleteFolderResult": { @@ -1362,7 +1362,7 @@ "restored": "Carpeta restaurada", "failed": "Error al eliminar la carpeta: {message}", "notEmpty": "Esta carpeta aún contiene modelos. Actualiza la barra lateral e inténtalo de nuevo.", - "notEmptyWithCount": "[TODO: Translate] This folder still contains {count} model file(s). Refresh the sidebar and try again.", + "notEmptyWithCount": "Esta carpeta aún contiene {count} archivo(s) de modelo. Actualiza la barra lateral e inténtalo de nuevo.", "busy": "Todavía hay una eliminación pendiente dentro de esta carpeta. Espera a que caduque la ventana de deshacer.", "unsupported": "La eliminación de carpetas no es compatible con esta página", "noRoot": "No hay ninguna raíz de modelo configurada" diff --git a/locales/fr.json b/locales/fr.json index b341428a..8eb372a4 100644 --- a/locales/fr.json +++ b/locales/fr.json @@ -1350,10 +1350,10 @@ "emptyNote": "Ce dossier ne contient aucun modèle. Les autres fichiers qu’il contient seront également supprimés.", "notEmptyTitle": "Le dossier n’est pas vide", "notEmptyMessage": "Ce dossier contient encore des modèles. Supprimez-les ou déplacez-les d’abord — la suppression d’un dossier n’entraîne jamais celle des fichiers de modèles.", - "notEmptyMessageCount": "[TODO: Translate] This folder still contains {count} model file(s). Delete or move them first — deleting a folder never cascades over model files.", - "notEmptyMessageExcluded": "[TODO: Translate] This folder still contains {count} model file(s), {excluded} of them excluded from the library. Un-exclude them in Manage Excluded Models and delete them first — deleting a folder never cascades over model files.", - "busyTitle": "[TODO: Translate] A deletion is still pending", - "checking": "[TODO: Translate] Checking the folder contents...", + "notEmptyMessageCount": "Ce dossier contient encore {count} fichier(s) de modèle. Supprimez-les ou déplacez-les d’abord — la suppression d’un dossier n’entraîne jamais celle des fichiers de modèles.", + "notEmptyMessageExcluded": "Ce dossier contient encore {count} fichier(s) de modèle, dont {excluded} sont exclus de la bibliothèque. Annulez leur exclusion dans « Gérer les modèles exclus » et supprimez-les d’abord — la suppression d’un dossier n’entraîne jamais celle des fichiers de modèles.", + "busyTitle": "Une suppression est encore en attente", + "checking": "Vérification du contenu du dossier...", "confirm": "Supprimer le dossier" }, "deleteFolderResult": { @@ -1362,7 +1362,7 @@ "restored": "Dossier restauré", "failed": "Échec de la suppression du dossier : {message}", "notEmpty": "Ce dossier contient encore des modèles. Actualisez la barre latérale et réessayez.", - "notEmptyWithCount": "[TODO: Translate] This folder still contains {count} model file(s). Refresh the sidebar and try again.", + "notEmptyWithCount": "Ce dossier contient encore {count} fichier(s) de modèle. Actualisez la barre latérale et réessayez.", "busy": "Une suppression est encore en attente dans ce dossier. Attendez la fin de la fenêtre d’annulation.", "unsupported": "La suppression de dossiers n’est pas prise en charge sur cette page", "noRoot": "Aucune racine de modèle n’est configurée" diff --git a/locales/he.json b/locales/he.json index e838be52..63335a3d 100644 --- a/locales/he.json +++ b/locales/he.json @@ -1350,10 +1350,10 @@ "emptyNote": "אין מודלים בתיקייה זו. קבצים אחרים שבה יימחקו גם הם.", "notEmptyTitle": "התיקייה אינה ריקה", "notEmptyMessage": "בתיקייה זו עדיין יש מודלים. מחק או העבר אותם תחילה — מחיקת תיקייה לעולם אינה מוחקת קובצי מודלים.", - "notEmptyMessageCount": "[TODO: Translate] This folder still contains {count} model file(s). Delete or move them first — deleting a folder never cascades over model files.", - "notEmptyMessageExcluded": "[TODO: Translate] This folder still contains {count} model file(s), {excluded} of them excluded from the library. Un-exclude them in Manage Excluded Models and delete them first — deleting a folder never cascades over model files.", - "busyTitle": "[TODO: Translate] A deletion is still pending", - "checking": "[TODO: Translate] Checking the folder contents...", + "notEmptyMessageCount": "בתיקייה זו עדיין יש {count} קובצי מודלים. מחק או העבר אותם תחילה — מחיקת תיקייה לעולם אינה מוחקת קובצי מודלים.", + "notEmptyMessageExcluded": "בתיקייה זו עדיין יש {count} קובצי מודלים, שמהם {excluded} מוחרגים מהספרייה. בטל את ההחרגה ב«ניהול מודלים מוחרגים» ומחק אותם תחילה — מחיקת תיקייה לעולם אינה מוחקת קובצי מודלים.", + "busyTitle": "מחיקה עדיין ממתינה", + "checking": "בודק את תוכן התיקייה...", "confirm": "מחק תיקייה" }, "deleteFolderResult": { @@ -1362,7 +1362,7 @@ "restored": "התיקייה שוחזרה", "failed": "מחיקת התיקייה נכשלה: {message}", "notEmpty": "בתיקייה זו עדיין יש מודלים. רענן את סרגל הצד ונסה שוב.", - "notEmptyWithCount": "[TODO: Translate] This folder still contains {count} model file(s). Refresh the sidebar and try again.", + "notEmptyWithCount": "בתיקייה זו עדיין יש {count} קובצי מודלים. רענן את סרגל הצד ונסה שוב.", "busy": "מחיקה עדיין ממתינה בתיקייה זו. המתן לסיום חלון הביטול.", "unsupported": "מחיקת תיקיות אינה נתמכת בדף זה", "noRoot": "לא הוגדר שורש מודלים" diff --git a/locales/ja.json b/locales/ja.json index 277fbc5f..648978e3 100644 --- a/locales/ja.json +++ b/locales/ja.json @@ -1350,10 +1350,10 @@ "emptyNote": "このフォルダにはモデルがありません。他のファイルもすべて削除されます。", "notEmptyTitle": "フォルダが空ではありません", "notEmptyMessage": "このフォルダにはまだモデルがあります。先に削除するか移動してください —— フォルダを削除してもモデルファイルがまとめて削除されることはありません。", - "notEmptyMessageCount": "[TODO: Translate] This folder still contains {count} model file(s). Delete or move them first — deleting a folder never cascades over model files.", - "notEmptyMessageExcluded": "[TODO: Translate] This folder still contains {count} model file(s), {excluded} of them excluded from the library. Un-exclude them in Manage Excluded Models and delete them first — deleting a folder never cascades over model files.", - "busyTitle": "[TODO: Translate] A deletion is still pending", - "checking": "[TODO: Translate] Checking the folder contents...", + "notEmptyMessageCount": "このフォルダにはまだ {count} 個のモデルファイルがあります。先に削除するか移動してください —— フォルダを削除してもモデルファイルがまとめて削除されることはありません。", + "notEmptyMessageExcluded": "このフォルダにはまだ {count} 個のモデルファイルがあり、そのうち {excluded} 個はライブラリから除外されています。「除外モデルを管理」で除外を解除してから削除してください —— フォルダを削除してもモデルファイルがまとめて削除されることはありません。", + "busyTitle": "保留中の削除があります", + "checking": "フォルダの内容を確認しています...", "confirm": "フォルダを削除" }, "deleteFolderResult": { @@ -1362,7 +1362,7 @@ "restored": "フォルダを復元しました", "failed": "フォルダの削除に失敗しました: {message}", "notEmpty": "このフォルダにはまだモデルがあります。サイドバーを再読み込みしてからもう一度お試しください。", - "notEmptyWithCount": "[TODO: Translate] This folder still contains {count} model file(s). Refresh the sidebar and try again.", + "notEmptyWithCount": "このフォルダにはまだ {count} 個のモデルファイルがあります。サイドバーを再読み込みしてからもう一度お試しください。", "busy": "このフォルダ内に保留中の削除があります。取り消し可能な時間が過ぎるまでお待ちください。", "unsupported": "このページではフォルダを削除できません", "noRoot": "モデルルートが設定されていません" diff --git a/locales/ko.json b/locales/ko.json index 7a9e0886..22e59caf 100644 --- a/locales/ko.json +++ b/locales/ko.json @@ -1350,10 +1350,10 @@ "emptyNote": "이 폴더에는 모델이 없습니다. 폴더 안의 다른 파일도 함께 삭제됩니다.", "notEmptyTitle": "폴더가 비어 있지 않습니다", "notEmptyMessage": "이 폴더에는 아직 모델이 있습니다. 먼저 해당 모델을 삭제하거나 이동하세요 —— 폴더를 삭제해도 모델 파일이 함께 삭제되지는 않습니다.", - "notEmptyMessageCount": "[TODO: Translate] This folder still contains {count} model file(s). Delete or move them first — deleting a folder never cascades over model files.", - "notEmptyMessageExcluded": "[TODO: Translate] This folder still contains {count} model file(s), {excluded} of them excluded from the library. Un-exclude them in Manage Excluded Models and delete them first — deleting a folder never cascades over model files.", - "busyTitle": "[TODO: Translate] A deletion is still pending", - "checking": "[TODO: Translate] Checking the folder contents...", + "notEmptyMessageCount": "이 폴더에는 아직 모델 파일이 {count}개 있습니다. 먼저 해당 모델을 삭제하거나 이동하세요 —— 폴더를 삭제해도 모델 파일이 함께 삭제되지는 않습니다.", + "notEmptyMessageExcluded": "이 폴더에는 아직 모델 파일이 {count}개 있으며, 그중 {excluded}개는 라이브러리에서 제외되어 있습니다. '제외된 모델 관리'에서 제외를 해제한 뒤 먼저 삭제하세요 —— 폴더를 삭제해도 모델 파일이 함께 삭제되지는 않습니다.", + "busyTitle": "대기 중인 삭제 작업이 있습니다", + "checking": "폴더 내용을 확인하는 중...", "confirm": "폴더 삭제" }, "deleteFolderResult": { @@ -1362,7 +1362,7 @@ "restored": "폴더를 복원했습니다", "failed": "폴더 삭제 실패: {message}", "notEmpty": "이 폴더에는 아직 모델이 있습니다. 사이드바를 새로 고친 후 다시 시도하세요.", - "notEmptyWithCount": "[TODO: Translate] This folder still contains {count} model file(s). Refresh the sidebar and try again.", + "notEmptyWithCount": "이 폴더에는 아직 모델 파일이 {count}개 있습니다. 사이드바를 새로 고친 후 다시 시도하세요.", "busy": "이 폴더에 아직 대기 중인 삭제 작업이 있습니다. 되돌리기 시간이 끝날 때까지 기다리세요.", "unsupported": "이 페이지에서는 폴더를 삭제할 수 없습니다", "noRoot": "모델 루트가 설정되지 않았습니다" diff --git a/locales/ru.json b/locales/ru.json index 45ce745f..104d9331 100644 --- a/locales/ru.json +++ b/locales/ru.json @@ -1350,10 +1350,10 @@ "emptyNote": "В этой папке нет моделей. Остальные файлы в ней тоже будут удалены.", "notEmptyTitle": "Папка не пуста", "notEmptyMessage": "В этой папке ещё есть модели. Сначала удалите или переместите их — удаление папки никогда не затрагивает файлы моделей.", - "notEmptyMessageCount": "[TODO: Translate] This folder still contains {count} model file(s). Delete or move them first — deleting a folder never cascades over model files.", - "notEmptyMessageExcluded": "[TODO: Translate] This folder still contains {count} model file(s), {excluded} of them excluded from the library. Un-exclude them in Manage Excluded Models and delete them first — deleting a folder never cascades over model files.", - "busyTitle": "[TODO: Translate] A deletion is still pending", - "checking": "[TODO: Translate] Checking the folder contents...", + "notEmptyMessageCount": "В этой папке ещё есть {count} файл(ов) модели. Сначала удалите или переместите их — удаление папки никогда не затрагивает файлы моделей.", + "notEmptyMessageExcluded": "В этой папке ещё есть {count} файл(ов) модели, из них {excluded} исключены из библиотеки. Снимите исключение в разделе «Управление исключёнными моделями» и удалите их — удаление папки никогда не затрагивает файлы моделей.", + "busyTitle": "Удаление всё ещё отложено", + "checking": "Проверка содержимого папки...", "confirm": "Удалить папку" }, "deleteFolderResult": { @@ -1362,7 +1362,7 @@ "restored": "Папка восстановлена", "failed": "Не удалось удалить папку: {message}", "notEmpty": "В этой папке ещё есть модели. Обновите боковую панель и повторите попытку.", - "notEmptyWithCount": "[TODO: Translate] This folder still contains {count} model file(s). Refresh the sidebar and try again.", + "notEmptyWithCount": "В этой папке ещё есть {count} файл(ов) модели. Обновите боковую панель и повторите попытку.", "busy": "В этой папке всё ещё есть отложенное удаление. Дождитесь окончания окна отмены.", "unsupported": "Удаление папок не поддерживается на этой странице", "noRoot": "Корневая папка моделей не настроена" diff --git a/locales/zh-CN.json b/locales/zh-CN.json index 4950a991..6696540b 100644 --- a/locales/zh-CN.json +++ b/locales/zh-CN.json @@ -1350,10 +1350,10 @@ "emptyNote": "该文件夹中没有模型,其中的其他文件也会一并删除。", "notEmptyTitle": "文件夹不为空", "notEmptyMessage": "该文件夹中仍有模型,请先删除或移出这些模型 —— 删除文件夹不会级联删除模型文件。", - "notEmptyMessageCount": "[TODO: Translate] This folder still contains {count} model file(s). Delete or move them first — deleting a folder never cascades over model files.", - "notEmptyMessageExcluded": "[TODO: Translate] This folder still contains {count} model file(s), {excluded} of them excluded from the library. Un-exclude them in Manage Excluded Models and delete them first — deleting a folder never cascades over model files.", - "busyTitle": "[TODO: Translate] A deletion is still pending", - "checking": "[TODO: Translate] Checking the folder contents...", + "notEmptyMessageCount": "该文件夹中仍有 {count} 个模型文件,请先删除或移出这些模型 —— 删除文件夹不会级联删除模型文件。", + "notEmptyMessageExcluded": "该文件夹中仍有 {count} 个模型文件,其中 {excluded} 个已从模型库中排除。请先在“管理已排除的模型”中取消排除并删除它们 —— 删除文件夹不会级联删除模型文件。", + "busyTitle": "仍有删除操作待处理", + "checking": "正在检查文件夹内容...", "confirm": "删除文件夹" }, "deleteFolderResult": { @@ -1362,7 +1362,7 @@ "restored": "文件夹已恢复", "failed": "删除文件夹失败: {message}", "notEmpty": "该文件夹中仍有模型。请刷新侧边栏后重试。", - "notEmptyWithCount": "[TODO: Translate] This folder still contains {count} model file(s). Refresh the sidebar and try again.", + "notEmptyWithCount": "该文件夹中仍有 {count} 个模型文件。请刷新侧边栏后重试。", "busy": "该文件夹内仍有待处理的删除操作,请等待撤销窗口结束。", "unsupported": "此页面不支持删除文件夹", "noRoot": "未配置模型根目录" diff --git a/locales/zh-TW.json b/locales/zh-TW.json index 35a37191..4624094c 100644 --- a/locales/zh-TW.json +++ b/locales/zh-TW.json @@ -1350,10 +1350,10 @@ "emptyNote": "該資料夾中沒有模型,其中的其他檔案也會一併刪除。", "notEmptyTitle": "資料夾不是空的", "notEmptyMessage": "該資料夾中仍有模型,請先刪除或移出這些模型 —— 刪除資料夾不會串聯刪除模型檔案。", - "notEmptyMessageCount": "[TODO: Translate] This folder still contains {count} model file(s). Delete or move them first — deleting a folder never cascades over model files.", - "notEmptyMessageExcluded": "[TODO: Translate] This folder still contains {count} model file(s), {excluded} of them excluded from the library. Un-exclude them in Manage Excluded Models and delete them first — deleting a folder never cascades over model files.", - "busyTitle": "[TODO: Translate] A deletion is still pending", - "checking": "[TODO: Translate] Checking the folder contents...", + "notEmptyMessageCount": "該資料夾中仍有 {count} 個模型檔案,請先刪除或移出這些模型 —— 刪除資料夾不會串聯刪除模型檔案。", + "notEmptyMessageExcluded": "該資料夾中仍有 {count} 個模型檔案,其中 {excluded} 個已從模型庫中排除。請先在「管理已排除的模型」中取消排除並刪除它們 —— 刪除資料夾不會串聯刪除模型檔案。", + "busyTitle": "仍有刪除操作待處理", + "checking": "正在檢查資料夾內容...", "confirm": "刪除資料夾" }, "deleteFolderResult": { @@ -1362,7 +1362,7 @@ "restored": "資料夾已還原", "failed": "刪除資料夾失敗: {message}", "notEmpty": "該資料夾中仍有模型。請重新整理側邊欄後再試。", - "notEmptyWithCount": "[TODO: Translate] This folder still contains {count} model file(s). Refresh the sidebar and try again.", + "notEmptyWithCount": "該資料夾中仍有 {count} 個模型檔案。請重新整理側邊欄後再試。", "busy": "該資料夾內仍有待處理的刪除操作,請等待復原時間結束。", "unsupported": "此頁面不支援刪除資料夾", "noRoot": "未設定模型根目錄"