From 3b54a13cae0cd500e33e6ad51dc45b824e46f4a0 Mon Sep 17 00:00:00 2001 From: Will Miao Date: Tue, 15 Sep 2026 20:18:06 +0800 Subject: [PATCH] i18n(sidebar): translate the folder-management strings (#999) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fills in the 35 `sidebar.*` placeholders the folder-sidebar feature series left behind — view options (tree/list, empty folders), folder creation, the delete confirmation modal and its result toasts, and folder renaming, including the undo copy and the "deleting a folder never cascades over model files" rule the backend enforces. All nine locales are translated, so no `[TODO: Translate]` placeholder remains anywhere: the state §7 of the translation guidelines describes holds again. Terminology reuses the existing §2 maps (folder, model root, sidebar) with tree/list view added, recorded in a new §2 subsection; the stale leaf-count in the header is refreshed too. --- docs/i18n-translation-guidelines.md | 27 ++++++++++- locales/de.json | 70 ++++++++++++++--------------- locales/es.json | 70 ++++++++++++++--------------- locales/fr.json | 70 ++++++++++++++--------------- locales/he.json | 70 ++++++++++++++--------------- locales/ja.json | 70 ++++++++++++++--------------- locales/ko.json | 70 ++++++++++++++--------------- locales/ru.json | 70 ++++++++++++++--------------- locales/zh-CN.json | 70 ++++++++++++++--------------- locales/zh-TW.json | 70 ++++++++++++++--------------- 10 files changed, 341 insertions(+), 316 deletions(-) diff --git a/docs/i18n-translation-guidelines.md b/docs/i18n-translation-guidelines.md index 36b8a5e8..850dc86b 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, 1982 leaf keys; all locales share the exact +Source of truth: `locales/en.json` (10 locales, 2022 leaf keys; all locales share the exact same key structure). Locales: `en`, `zh-CN`, `zh-TW`, `ja`, `ko`, `fr`, `de`, `es`, `ru`, `he` (RTL). @@ -42,6 +42,13 @@ Locales: `en`, `zh-CN`, `zh-TW`, `ja`, `ko`, `fr`, `de`, `es`, `ru`, `he` (RTL). > which had hardcoded "HF" for a button that now also enriches ModelScope models. The > `modals.linkModelSource.urlPlaceholder` value stays byte-identical to `en.json` (it is a URL, > the §6 exception). Terminology in §2, "Model source feature". +> +> **Status (2026-09, folder sidebar):** the model-root sidebar gained on-disk folder management +> (create / rename / delete folders, show empty folders, tree vs list view) plus its `...` +> view-options menu, adding 35 `sidebar.*` keys. Those were the only `[TODO: Translate]` +> placeholders left behind by the feature series, and all 35 are now translated in all 9 +> locales, so the "no remaining placeholders" claim above holds again. Terminology in §2, +> "Folder sidebar feature". --- @@ -330,6 +337,24 @@ in `en`, not "Enrich HF Metadata": they cover ModelScope as well, so no locale m an `HF` qualifier in `loras.contextMenu.enrichHfAgent` / `loras.bulkOperations.enrichHfAgent` (the key names keep the historical `Hf`; only the values changed). +### Folder sidebar feature (create / rename / delete folders, empty folders, view options) + +The model-root sidebar manages on-disk folders. "Folder" reuses the noun already fixed in §2 +(the `folder key` row); the rest is new surface: + +| Term | Rendering | +|---|---| +| folder | zh-CN 文件夹 · zh-TW 資料夾 · ja フォルダ · ko 폴더 · fr dossier · de Ordner · es carpeta · ru папка · he תיקייה | +| model root (as in "no model root is configured") | zh-CN 模型根目录 · zh-TW 模型根目錄 · ja モデルルート · ko 모델 루트 · fr racine de modèle · de Modell-Stammverzeichnis · es raíz de modelo · ru корневая папка моделей · he שורש מודלים — note `sidebar.modelRoot` alone is the shorter 根目录 / 根目錄 / ルート / 루트 / Racine / Stammverzeichnis / Raíz / Корень / שורש | +| 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}`. + --- ## 3. Cross-cutting confusion hot-spots (must-fix list) diff --git a/locales/de.json b/locales/de.json index c0526dbb..1aaa8393 100644 --- a/locales/de.json +++ b/locales/de.json @@ -1246,51 +1246,51 @@ "sidebar": { "modelRoot": "Stammverzeichnis", "collapseAll": "Alle Ordner einklappen", - "collapseAllDisabled": "[TODO: Translate] Not available in list view", + "collapseAllDisabled": "In der Listenansicht nicht verfügbar", "hideOnThisPage": "Seitenleiste auf dieser Seite ausblenden", "showSidebar": "Seitenleiste anzeigen", "sidebarHiddenNotification": "Seitenleiste auf der Seite {page} ausgeblendet", - "viewOptions": "[TODO: Translate] View options", - "treeView": "[TODO: Translate] Tree view", - "listView": "[TODO: Translate] List view", + "viewOptions": "Ansichtsoptionen", + "treeView": "Baumansicht", + "listView": "Listenansicht", "recursiveOn": "Unterordner einbeziehen", - "createFolder": "[TODO: Translate] New folder", - "newSubfolder": "[TODO: Translate] New subfolder", - "showEmptyFolders": "[TODO: Translate] Show empty folders", + "createFolder": "Neuer Ordner", + "newSubfolder": "Neuer Unterordner", + "showEmptyFolders": "Leere Ordner anzeigen", "createFolderResult": { - "success": "[TODO: Translate] Folder \"{name}\" created", - "failed": "[TODO: Translate] Failed to create folder: {message}", - "unsupported": "[TODO: Translate] Folder creation is not supported on this page", - "noRoot": "[TODO: Translate] No model root is configured" + "success": "Ordner \"{name}\" erstellt", + "failed": "Ordner konnte nicht erstellt werden: {message}", + "unsupported": "Das Erstellen von Ordnern wird auf dieser Seite nicht unterstützt", + "noRoot": "Es ist kein Modell-Stammverzeichnis konfiguriert" }, - "deleteFolder": "[TODO: Translate] Delete folder", + "deleteFolder": "Ordner löschen", "deleteFolderModal": { - "title": "[TODO: Translate] Delete folder?", - "message": "[TODO: Translate] The folder and everything inside it will be permanently removed from disk.", - "folderLabel": "[TODO: Translate] Folder", - "emptyNote": "[TODO: Translate] This folder contains no models. Any other files it holds will be deleted too.", - "notEmptyTitle": "[TODO: Translate] Folder is not empty", - "notEmptyMessage": "[TODO: Translate] This folder still contains models. Delete or move them first — deleting a folder never cascades over model files.", - "confirm": "[TODO: Translate] Delete folder" + "title": "Ordner löschen?", + "message": "Der Ordner und sein gesamter Inhalt werden endgültig vom Datenträger gelöscht.", + "folderLabel": "Ordner", + "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.", + "confirm": "Ordner löschen" }, "deleteFolderResult": { - "success": "[TODO: Translate] Folder \"{name}\" deleted", - "successWithFiles": "[TODO: Translate] Folder \"{name}\" deleted along with {count} other item(s)", - "restored": "[TODO: Translate] Folder restored", - "failed": "[TODO: Translate] Failed to delete folder: {message}", - "notEmpty": "[TODO: Translate] This folder still contains models. Refresh the sidebar and try again.", - "busy": "[TODO: Translate] A deletion is still pending inside this folder. Wait for the undo window to expire.", - "unsupported": "[TODO: Translate] Folder deletion is not supported on this page", - "noRoot": "[TODO: Translate] No model root is configured" + "success": "Ordner \"{name}\" gelöscht", + "successWithFiles": "Ordner \"{name}\" sowie {count} weitere(s) Element(e) gelöscht", + "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.", + "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" }, - "renameFolder": "[TODO: Translate] Rename folder", + "renameFolder": "Ordner umbenennen", "renameFolderResult": { - "success": "[TODO: Translate] Folder renamed to \"{name}\"", - "failed": "[TODO: Translate] Failed to rename folder: {message}", - "targetExists": "[TODO: Translate] A folder with that name already exists here", - "busy": "[TODO: Translate] A deletion is still pending inside this folder. Wait for the undo window to expire.", - "unsupported": "[TODO: Translate] Folder renaming is not supported on this page", - "noRoot": "[TODO: Translate] No model root is configured" + "success": "Ordner umbenannt in \"{name}\"", + "failed": "Ordner konnte nicht umbenannt werden: {message}", + "targetExists": "Ein Ordner mit diesem Namen ist hier bereits vorhanden", + "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 Umbenennen von Ordnern wird auf dieser Seite nicht unterstützt", + "noRoot": "Es ist kein Modell-Stammverzeichnis konfiguriert" }, "dragDrop": { "unableToResolveRoot": "Zielpfad für das Verschieben konnte nicht ermittelt werden.", @@ -1302,7 +1302,7 @@ }, "empty": { "noFolders": "Keine Ordner gefunden", - "createHint": "[TODO: Translate] Click the New Folder button above to create folders" + "createHint": "Klicken Sie oben auf „Neuer Ordner“, um Ordner zu erstellen" }, "folderUpdateCheck": { "label": "Auf Updates in diesem Ordner prüfen", diff --git a/locales/es.json b/locales/es.json index 20c08fc9..30c11a2a 100644 --- a/locales/es.json +++ b/locales/es.json @@ -1246,51 +1246,51 @@ "sidebar": { "modelRoot": "Raíz", "collapseAll": "Colapsar todas las carpetas", - "collapseAllDisabled": "[TODO: Translate] Not available in list view", + "collapseAllDisabled": "No disponible en la vista de lista", "hideOnThisPage": "Ocultar barra lateral en esta página", "showSidebar": "Mostrar barra lateral", "sidebarHiddenNotification": "Barra lateral oculta en la página {page}", - "viewOptions": "[TODO: Translate] View options", - "treeView": "[TODO: Translate] Tree view", - "listView": "[TODO: Translate] List view", + "viewOptions": "Opciones de vista", + "treeView": "Vista de árbol", + "listView": "Vista de lista", "recursiveOn": "Incluir subcarpetas", - "createFolder": "[TODO: Translate] New folder", - "newSubfolder": "[TODO: Translate] New subfolder", - "showEmptyFolders": "[TODO: Translate] Show empty folders", + "createFolder": "Nueva carpeta", + "newSubfolder": "Nueva subcarpeta", + "showEmptyFolders": "Mostrar carpetas vacías", "createFolderResult": { - "success": "[TODO: Translate] Folder \"{name}\" created", - "failed": "[TODO: Translate] Failed to create folder: {message}", - "unsupported": "[TODO: Translate] Folder creation is not supported on this page", - "noRoot": "[TODO: Translate] No model root is configured" + "success": "Carpeta \"{name}\" creada", + "failed": "Error al crear la carpeta: {message}", + "unsupported": "La creación de carpetas no es compatible con esta página", + "noRoot": "No hay ninguna raíz de modelo configurada" }, - "deleteFolder": "[TODO: Translate] Delete folder", + "deleteFolder": "Eliminar carpeta", "deleteFolderModal": { - "title": "[TODO: Translate] Delete folder?", - "message": "[TODO: Translate] The folder and everything inside it will be permanently removed from disk.", - "folderLabel": "[TODO: Translate] Folder", - "emptyNote": "[TODO: Translate] This folder contains no models. Any other files it holds will be deleted too.", - "notEmptyTitle": "[TODO: Translate] Folder is not empty", - "notEmptyMessage": "[TODO: Translate] This folder still contains models. Delete or move them first — deleting a folder never cascades over model files.", - "confirm": "[TODO: Translate] Delete folder" + "title": "¿Eliminar carpeta?", + "message": "La carpeta y todo su contenido se eliminarán permanentemente del disco.", + "folderLabel": "Carpeta", + "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.", + "confirm": "Eliminar carpeta" }, "deleteFolderResult": { - "success": "[TODO: Translate] Folder \"{name}\" deleted", - "successWithFiles": "[TODO: Translate] Folder \"{name}\" deleted along with {count} other item(s)", - "restored": "[TODO: Translate] Folder restored", - "failed": "[TODO: Translate] Failed to delete folder: {message}", - "notEmpty": "[TODO: Translate] This folder still contains models. Refresh the sidebar and try again.", - "busy": "[TODO: Translate] A deletion is still pending inside this folder. Wait for the undo window to expire.", - "unsupported": "[TODO: Translate] Folder deletion is not supported on this page", - "noRoot": "[TODO: Translate] No model root is configured" + "success": "Carpeta \"{name}\" eliminada", + "successWithFiles": "Carpeta \"{name}\" eliminada junto con {count} elemento(s) más", + "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.", + "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" }, - "renameFolder": "[TODO: Translate] Rename folder", + "renameFolder": "Cambiar nombre de la carpeta", "renameFolderResult": { - "success": "[TODO: Translate] Folder renamed to \"{name}\"", - "failed": "[TODO: Translate] Failed to rename folder: {message}", - "targetExists": "[TODO: Translate] A folder with that name already exists here", - "busy": "[TODO: Translate] A deletion is still pending inside this folder. Wait for the undo window to expire.", - "unsupported": "[TODO: Translate] Folder renaming is not supported on this page", - "noRoot": "[TODO: Translate] No model root is configured" + "success": "Carpeta renombrada a \"{name}\"", + "failed": "Error al cambiar el nombre de la carpeta: {message}", + "targetExists": "Ya existe una carpeta con ese nombre aquí", + "busy": "Todavía hay una eliminación pendiente dentro de esta carpeta. Espera a que caduque la ventana de deshacer.", + "unsupported": "El cambio de nombre de carpetas no es compatible con esta página", + "noRoot": "No hay ninguna raíz de modelo configurada" }, "dragDrop": { "unableToResolveRoot": "No se puede determinar la ruta de destino para el movimiento.", @@ -1302,7 +1302,7 @@ }, "empty": { "noFolders": "No se encontraron carpetas", - "createHint": "[TODO: Translate] Click the New Folder button above to create folders" + "createHint": "Haz clic en el botón Nueva carpeta de arriba para crear carpetas" }, "folderUpdateCheck": { "label": "Buscar actualizaciones en esta carpeta", diff --git a/locales/fr.json b/locales/fr.json index 41f1acf4..e746e497 100644 --- a/locales/fr.json +++ b/locales/fr.json @@ -1246,51 +1246,51 @@ "sidebar": { "modelRoot": "Racine", "collapseAll": "Réduire tous les dossiers", - "collapseAllDisabled": "[TODO: Translate] Not available in list view", + "collapseAllDisabled": "Non disponible en vue liste", "hideOnThisPage": "Masquer la barre latérale sur cette page", "showSidebar": "Afficher la barre latérale", "sidebarHiddenNotification": "Barre latérale masquée sur la page {page}", - "viewOptions": "[TODO: Translate] View options", - "treeView": "[TODO: Translate] Tree view", - "listView": "[TODO: Translate] List view", + "viewOptions": "Options d’affichage", + "treeView": "Vue arborescente", + "listView": "Vue liste", "recursiveOn": "Inclure les sous-dossiers", - "createFolder": "[TODO: Translate] New folder", - "newSubfolder": "[TODO: Translate] New subfolder", - "showEmptyFolders": "[TODO: Translate] Show empty folders", + "createFolder": "Nouveau dossier", + "newSubfolder": "Nouveau sous-dossier", + "showEmptyFolders": "Afficher les dossiers vides", "createFolderResult": { - "success": "[TODO: Translate] Folder \"{name}\" created", - "failed": "[TODO: Translate] Failed to create folder: {message}", - "unsupported": "[TODO: Translate] Folder creation is not supported on this page", - "noRoot": "[TODO: Translate] No model root is configured" + "success": "Dossier \"{name}\" créé", + "failed": "Échec de la création du dossier : {message}", + "unsupported": "La création de dossiers n’est pas prise en charge sur cette page", + "noRoot": "Aucune racine de modèle n’est configurée" }, - "deleteFolder": "[TODO: Translate] Delete folder", + "deleteFolder": "Supprimer le dossier", "deleteFolderModal": { - "title": "[TODO: Translate] Delete folder?", - "message": "[TODO: Translate] The folder and everything inside it will be permanently removed from disk.", - "folderLabel": "[TODO: Translate] Folder", - "emptyNote": "[TODO: Translate] This folder contains no models. Any other files it holds will be deleted too.", - "notEmptyTitle": "[TODO: Translate] Folder is not empty", - "notEmptyMessage": "[TODO: Translate] This folder still contains models. Delete or move them first — deleting a folder never cascades over model files.", - "confirm": "[TODO: Translate] Delete folder" + "title": "Supprimer le dossier ?", + "message": "Le dossier et tout son contenu seront définitivement supprimés du disque.", + "folderLabel": "Dossier", + "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.", + "confirm": "Supprimer le dossier" }, "deleteFolderResult": { - "success": "[TODO: Translate] Folder \"{name}\" deleted", - "successWithFiles": "[TODO: Translate] Folder \"{name}\" deleted along with {count} other item(s)", - "restored": "[TODO: Translate] Folder restored", - "failed": "[TODO: Translate] Failed to delete folder: {message}", - "notEmpty": "[TODO: Translate] This folder still contains models. Refresh the sidebar and try again.", - "busy": "[TODO: Translate] A deletion is still pending inside this folder. Wait for the undo window to expire.", - "unsupported": "[TODO: Translate] Folder deletion is not supported on this page", - "noRoot": "[TODO: Translate] No model root is configured" + "success": "Dossier \"{name}\" supprimé", + "successWithFiles": "Dossier \"{name}\" supprimé, ainsi que {count} autre(s) élément(s)", + "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.", + "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" }, - "renameFolder": "[TODO: Translate] Rename folder", + "renameFolder": "Renommer le dossier", "renameFolderResult": { - "success": "[TODO: Translate] Folder renamed to \"{name}\"", - "failed": "[TODO: Translate] Failed to rename folder: {message}", - "targetExists": "[TODO: Translate] A folder with that name already exists here", - "busy": "[TODO: Translate] A deletion is still pending inside this folder. Wait for the undo window to expire.", - "unsupported": "[TODO: Translate] Folder renaming is not supported on this page", - "noRoot": "[TODO: Translate] No model root is configured" + "success": "Dossier renommé en \"{name}\"", + "failed": "Échec du renommage du dossier : {message}", + "targetExists": "Un dossier portant ce nom existe déjà ici", + "busy": "Une suppression est encore en attente dans ce dossier. Attendez la fin de la fenêtre d’annulation.", + "unsupported": "Le renommage de dossiers n’est pas pris en charge sur cette page", + "noRoot": "Aucune racine de modèle n’est configurée" }, "dragDrop": { "unableToResolveRoot": "Impossible de déterminer le chemin de destination pour le déplacement.", @@ -1302,7 +1302,7 @@ }, "empty": { "noFolders": "Aucun dossier trouvé", - "createHint": "[TODO: Translate] Click the New Folder button above to create folders" + "createHint": "Cliquez sur le bouton Nouveau dossier ci-dessus pour créer des dossiers" }, "folderUpdateCheck": { "label": "Vérifier les mises à jour dans ce dossier", diff --git a/locales/he.json b/locales/he.json index cc3bf8e3..36a106a1 100644 --- a/locales/he.json +++ b/locales/he.json @@ -1246,51 +1246,51 @@ "sidebar": { "modelRoot": "שורש", "collapseAll": "כווץ את כל התיקיות", - "collapseAllDisabled": "[TODO: Translate] Not available in list view", + "collapseAllDisabled": "לא זמין בתצוגת רשימה", "hideOnThisPage": "הסתר סרגל צד בדף זה", "showSidebar": "הצג סרגל צד", "sidebarHiddenNotification": "סרגל הצד מוסתר בדף {page}", - "viewOptions": "[TODO: Translate] View options", - "treeView": "[TODO: Translate] Tree view", - "listView": "[TODO: Translate] List view", + "viewOptions": "אפשרויות תצוגה", + "treeView": "תצוגת עץ", + "listView": "תצוגת רשימה", "recursiveOn": "כלול תיקיות משנה", - "createFolder": "[TODO: Translate] New folder", - "newSubfolder": "[TODO: Translate] New subfolder", - "showEmptyFolders": "[TODO: Translate] Show empty folders", + "createFolder": "תיקייה חדשה", + "newSubfolder": "תיקיית משנה חדשה", + "showEmptyFolders": "הצג תיקיות ריקות", "createFolderResult": { - "success": "[TODO: Translate] Folder \"{name}\" created", - "failed": "[TODO: Translate] Failed to create folder: {message}", - "unsupported": "[TODO: Translate] Folder creation is not supported on this page", - "noRoot": "[TODO: Translate] No model root is configured" + "success": "התיקייה \"{name}\" נוצרה", + "failed": "יצירת התיקייה נכשלה: {message}", + "unsupported": "יצירת תיקיות אינה נתמכת בדף זה", + "noRoot": "לא הוגדר שורש מודלים" }, - "deleteFolder": "[TODO: Translate] Delete folder", + "deleteFolder": "מחק תיקייה", "deleteFolderModal": { - "title": "[TODO: Translate] Delete folder?", - "message": "[TODO: Translate] The folder and everything inside it will be permanently removed from disk.", - "folderLabel": "[TODO: Translate] Folder", - "emptyNote": "[TODO: Translate] This folder contains no models. Any other files it holds will be deleted too.", - "notEmptyTitle": "[TODO: Translate] Folder is not empty", - "notEmptyMessage": "[TODO: Translate] This folder still contains models. Delete or move them first — deleting a folder never cascades over model files.", - "confirm": "[TODO: Translate] Delete folder" + "title": "למחוק את התיקייה?", + "message": "התיקייה וכל תוכנה יימחקו לצמיתות מהדיסק.", + "folderLabel": "תיקייה", + "emptyNote": "אין מודלים בתיקייה זו. קבצים אחרים שבה יימחקו גם הם.", + "notEmptyTitle": "התיקייה אינה ריקה", + "notEmptyMessage": "בתיקייה זו עדיין יש מודלים. מחק או העבר אותם תחילה — מחיקת תיקייה לעולם אינה מוחקת קובצי מודלים.", + "confirm": "מחק תיקייה" }, "deleteFolderResult": { - "success": "[TODO: Translate] Folder \"{name}\" deleted", - "successWithFiles": "[TODO: Translate] Folder \"{name}\" deleted along with {count} other item(s)", - "restored": "[TODO: Translate] Folder restored", - "failed": "[TODO: Translate] Failed to delete folder: {message}", - "notEmpty": "[TODO: Translate] This folder still contains models. Refresh the sidebar and try again.", - "busy": "[TODO: Translate] A deletion is still pending inside this folder. Wait for the undo window to expire.", - "unsupported": "[TODO: Translate] Folder deletion is not supported on this page", - "noRoot": "[TODO: Translate] No model root is configured" + "success": "התיקייה \"{name}\" נמחקה", + "successWithFiles": "התיקייה \"{name}\" נמחקה יחד עם {count} פריטים נוספים", + "restored": "התיקייה שוחזרה", + "failed": "מחיקת התיקייה נכשלה: {message}", + "notEmpty": "בתיקייה זו עדיין יש מודלים. רענן את סרגל הצד ונסה שוב.", + "busy": "מחיקה עדיין ממתינה בתיקייה זו. המתן לסיום חלון הביטול.", + "unsupported": "מחיקת תיקיות אינה נתמכת בדף זה", + "noRoot": "לא הוגדר שורש מודלים" }, - "renameFolder": "[TODO: Translate] Rename folder", + "renameFolder": "שנה שם תיקייה", "renameFolderResult": { - "success": "[TODO: Translate] Folder renamed to \"{name}\"", - "failed": "[TODO: Translate] Failed to rename folder: {message}", - "targetExists": "[TODO: Translate] A folder with that name already exists here", - "busy": "[TODO: Translate] A deletion is still pending inside this folder. Wait for the undo window to expire.", - "unsupported": "[TODO: Translate] Folder renaming is not supported on this page", - "noRoot": "[TODO: Translate] No model root is configured" + "success": "שם התיקייה שונה ל-\"{name}\"", + "failed": "שינוי שם התיקייה נכשל: {message}", + "targetExists": "תיקייה בשם זה כבר קיימת כאן", + "busy": "מחיקה עדיין ממתינה בתיקייה זו. המתן לסיום חלון הביטול.", + "unsupported": "שינוי שם תיקיות אינו נתמך בדף זה", + "noRoot": "לא הוגדר שורש מודלים" }, "dragDrop": { "unableToResolveRoot": "לא ניתן לקבוע את נתיב היעד להעברה.", @@ -1302,7 +1302,7 @@ }, "empty": { "noFolders": "לא נמצאו תיקיות", - "createHint": "[TODO: Translate] Click the New Folder button above to create folders" + "createHint": "לחץ על כפתור תיקייה חדשה למעלה כדי ליצור תיקיות" }, "folderUpdateCheck": { "label": "בדוק עדכונים בתיקייה זו", diff --git a/locales/ja.json b/locales/ja.json index 89cdf684..e76ab85b 100644 --- a/locales/ja.json +++ b/locales/ja.json @@ -1246,51 +1246,51 @@ "sidebar": { "modelRoot": "ルート", "collapseAll": "すべてのフォルダを折りたたむ", - "collapseAllDisabled": "[TODO: Translate] Not available in list view", + "collapseAllDisabled": "リスト表示では利用できません", "hideOnThisPage": "このページでサイドバーを非表示", "showSidebar": "サイドバーを表示", "sidebarHiddenNotification": "{page}ページでサイドバーが非表示になっています", - "viewOptions": "[TODO: Translate] View options", - "treeView": "[TODO: Translate] Tree view", - "listView": "[TODO: Translate] List view", + "viewOptions": "表示オプション", + "treeView": "ツリー表示", + "listView": "リスト表示", "recursiveOn": "サブフォルダーを含める", - "createFolder": "[TODO: Translate] New folder", - "newSubfolder": "[TODO: Translate] New subfolder", - "showEmptyFolders": "[TODO: Translate] Show empty folders", + "createFolder": "新規フォルダ", + "newSubfolder": "新規サブフォルダ", + "showEmptyFolders": "空のフォルダを表示", "createFolderResult": { - "success": "[TODO: Translate] Folder \"{name}\" created", - "failed": "[TODO: Translate] Failed to create folder: {message}", - "unsupported": "[TODO: Translate] Folder creation is not supported on this page", - "noRoot": "[TODO: Translate] No model root is configured" + "success": "フォルダ \"{name}\" を作成しました", + "failed": "フォルダの作成に失敗しました: {message}", + "unsupported": "このページではフォルダを作成できません", + "noRoot": "モデルルートが設定されていません" }, - "deleteFolder": "[TODO: Translate] Delete folder", + "deleteFolder": "フォルダを削除", "deleteFolderModal": { - "title": "[TODO: Translate] Delete folder?", - "message": "[TODO: Translate] The folder and everything inside it will be permanently removed from disk.", - "folderLabel": "[TODO: Translate] Folder", - "emptyNote": "[TODO: Translate] This folder contains no models. Any other files it holds will be deleted too.", - "notEmptyTitle": "[TODO: Translate] Folder is not empty", - "notEmptyMessage": "[TODO: Translate] This folder still contains models. Delete or move them first — deleting a folder never cascades over model files.", - "confirm": "[TODO: Translate] Delete folder" + "title": "フォルダを削除しますか?", + "message": "フォルダとその内容はすべてディスクから完全に削除されます。", + "folderLabel": "フォルダ", + "emptyNote": "このフォルダにはモデルがありません。他のファイルもすべて削除されます。", + "notEmptyTitle": "フォルダが空ではありません", + "notEmptyMessage": "このフォルダにはまだモデルがあります。先に削除するか移動してください —— フォルダを削除してもモデルファイルがまとめて削除されることはありません。", + "confirm": "フォルダを削除" }, "deleteFolderResult": { - "success": "[TODO: Translate] Folder \"{name}\" deleted", - "successWithFiles": "[TODO: Translate] Folder \"{name}\" deleted along with {count} other item(s)", - "restored": "[TODO: Translate] Folder restored", - "failed": "[TODO: Translate] Failed to delete folder: {message}", - "notEmpty": "[TODO: Translate] This folder still contains models. Refresh the sidebar and try again.", - "busy": "[TODO: Translate] A deletion is still pending inside this folder. Wait for the undo window to expire.", - "unsupported": "[TODO: Translate] Folder deletion is not supported on this page", - "noRoot": "[TODO: Translate] No model root is configured" + "success": "フォルダ \"{name}\" を削除しました", + "successWithFiles": "フォルダ \"{name}\" を削除し、他に {count} 件の項目も削除しました", + "restored": "フォルダを復元しました", + "failed": "フォルダの削除に失敗しました: {message}", + "notEmpty": "このフォルダにはまだモデルがあります。サイドバーを再読み込みしてからもう一度お試しください。", + "busy": "このフォルダ内に保留中の削除があります。取り消し可能な時間が過ぎるまでお待ちください。", + "unsupported": "このページではフォルダを削除できません", + "noRoot": "モデルルートが設定されていません" }, - "renameFolder": "[TODO: Translate] Rename folder", + "renameFolder": "フォルダ名を変更", "renameFolderResult": { - "success": "[TODO: Translate] Folder renamed to \"{name}\"", - "failed": "[TODO: Translate] Failed to rename folder: {message}", - "targetExists": "[TODO: Translate] A folder with that name already exists here", - "busy": "[TODO: Translate] A deletion is still pending inside this folder. Wait for the undo window to expire.", - "unsupported": "[TODO: Translate] Folder renaming is not supported on this page", - "noRoot": "[TODO: Translate] No model root is configured" + "success": "フォルダ名を \"{name}\" に変更しました", + "failed": "フォルダ名の変更に失敗しました: {message}", + "targetExists": "同じ名前のフォルダが既に存在します", + "busy": "このフォルダ内に保留中の削除があります。取り消し可能な時間が過ぎるまでお待ちください。", + "unsupported": "このページではフォルダ名を変更できません", + "noRoot": "モデルルートが設定されていません" }, "dragDrop": { "unableToResolveRoot": "移動先のパスを特定できません。", @@ -1302,7 +1302,7 @@ }, "empty": { "noFolders": "フォルダが見つかりません", - "createHint": "[TODO: Translate] Click the New Folder button above to create folders" + "createHint": "上部の新規フォルダボタンからフォルダを作成できます" }, "folderUpdateCheck": { "label": "このフォルダのアップデートを確認", diff --git a/locales/ko.json b/locales/ko.json index b61b791e..73acbb39 100644 --- a/locales/ko.json +++ b/locales/ko.json @@ -1246,51 +1246,51 @@ "sidebar": { "modelRoot": "루트", "collapseAll": "모든 폴더 접기", - "collapseAllDisabled": "[TODO: Translate] Not available in list view", + "collapseAllDisabled": "목록 보기에서는 사용할 수 없습니다", "hideOnThisPage": "이 페이지에서 사이드바 숨기기", "showSidebar": "사이드바 표시", "sidebarHiddenNotification": "{page} 페이지에서 사이드바가 숨겨져 있습니다", - "viewOptions": "[TODO: Translate] View options", - "treeView": "[TODO: Translate] Tree view", - "listView": "[TODO: Translate] List view", + "viewOptions": "보기 옵션", + "treeView": "트리 보기", + "listView": "목록 보기", "recursiveOn": "하위 폴더 포함", - "createFolder": "[TODO: Translate] New folder", - "newSubfolder": "[TODO: Translate] New subfolder", - "showEmptyFolders": "[TODO: Translate] Show empty folders", + "createFolder": "새 폴더", + "newSubfolder": "새 하위 폴더", + "showEmptyFolders": "빈 폴더 표시", "createFolderResult": { - "success": "[TODO: Translate] Folder \"{name}\" created", - "failed": "[TODO: Translate] Failed to create folder: {message}", - "unsupported": "[TODO: Translate] Folder creation is not supported on this page", - "noRoot": "[TODO: Translate] No model root is configured" + "success": "\"{name}\" 폴더를 생성했습니다", + "failed": "폴더 생성 실패: {message}", + "unsupported": "이 페이지에서는 폴더를 만들 수 없습니다", + "noRoot": "모델 루트가 설정되지 않았습니다" }, - "deleteFolder": "[TODO: Translate] Delete folder", + "deleteFolder": "폴더 삭제", "deleteFolderModal": { - "title": "[TODO: Translate] Delete folder?", - "message": "[TODO: Translate] The folder and everything inside it will be permanently removed from disk.", - "folderLabel": "[TODO: Translate] Folder", - "emptyNote": "[TODO: Translate] This folder contains no models. Any other files it holds will be deleted too.", - "notEmptyTitle": "[TODO: Translate] Folder is not empty", - "notEmptyMessage": "[TODO: Translate] This folder still contains models. Delete or move them first — deleting a folder never cascades over model files.", - "confirm": "[TODO: Translate] Delete folder" + "title": "폴더를 삭제할까요?", + "message": "폴더와 그 안의 모든 내용이 디스크에서 영구적으로 삭제됩니다.", + "folderLabel": "폴더", + "emptyNote": "이 폴더에는 모델이 없습니다. 폴더 안의 다른 파일도 함께 삭제됩니다.", + "notEmptyTitle": "폴더가 비어 있지 않습니다", + "notEmptyMessage": "이 폴더에는 아직 모델이 있습니다. 먼저 해당 모델을 삭제하거나 이동하세요 —— 폴더를 삭제해도 모델 파일이 함께 삭제되지는 않습니다.", + "confirm": "폴더 삭제" }, "deleteFolderResult": { - "success": "[TODO: Translate] Folder \"{name}\" deleted", - "successWithFiles": "[TODO: Translate] Folder \"{name}\" deleted along with {count} other item(s)", - "restored": "[TODO: Translate] Folder restored", - "failed": "[TODO: Translate] Failed to delete folder: {message}", - "notEmpty": "[TODO: Translate] This folder still contains models. Refresh the sidebar and try again.", - "busy": "[TODO: Translate] A deletion is still pending inside this folder. Wait for the undo window to expire.", - "unsupported": "[TODO: Translate] Folder deletion is not supported on this page", - "noRoot": "[TODO: Translate] No model root is configured" + "success": "\"{name}\" 폴더를 삭제했습니다", + "successWithFiles": "\"{name}\" 폴더와 {count}개 항목을 함께 삭제했습니다", + "restored": "폴더를 복원했습니다", + "failed": "폴더 삭제 실패: {message}", + "notEmpty": "이 폴더에는 아직 모델이 있습니다. 사이드바를 새로 고친 후 다시 시도하세요.", + "busy": "이 폴더에 아직 대기 중인 삭제 작업이 있습니다. 되돌리기 시간이 끝날 때까지 기다리세요.", + "unsupported": "이 페이지에서는 폴더를 삭제할 수 없습니다", + "noRoot": "모델 루트가 설정되지 않았습니다" }, - "renameFolder": "[TODO: Translate] Rename folder", + "renameFolder": "폴더 이름 바꾸기", "renameFolderResult": { - "success": "[TODO: Translate] Folder renamed to \"{name}\"", - "failed": "[TODO: Translate] Failed to rename folder: {message}", - "targetExists": "[TODO: Translate] A folder with that name already exists here", - "busy": "[TODO: Translate] A deletion is still pending inside this folder. Wait for the undo window to expire.", - "unsupported": "[TODO: Translate] Folder renaming is not supported on this page", - "noRoot": "[TODO: Translate] No model root is configured" + "success": "폴더 이름을 \"{name}\"(으)로 변경했습니다", + "failed": "폴더 이름 바꾸기 실패: {message}", + "targetExists": "같은 이름의 폴더가 이미 있습니다", + "busy": "이 폴더에 아직 대기 중인 삭제 작업이 있습니다. 되돌리기 시간이 끝날 때까지 기다리세요.", + "unsupported": "이 페이지에서는 폴더 이름을 바꿀 수 없습니다", + "noRoot": "모델 루트가 설정되지 않았습니다" }, "dragDrop": { "unableToResolveRoot": "이동할 대상 경로를 확인할 수 없습니다.", @@ -1302,7 +1302,7 @@ }, "empty": { "noFolders": "폴더를 찾을 수 없습니다", - "createHint": "[TODO: Translate] Click the New Folder button above to create folders" + "createHint": "위의 새 폴더 버튼을 클릭하여 폴더를 만들 수 있습니다" }, "folderUpdateCheck": { "label": "이 폴더의 업데이트 확인", diff --git a/locales/ru.json b/locales/ru.json index 70af3190..279207a0 100644 --- a/locales/ru.json +++ b/locales/ru.json @@ -1246,51 +1246,51 @@ "sidebar": { "modelRoot": "Корень", "collapseAll": "Свернуть все папки", - "collapseAllDisabled": "[TODO: Translate] Not available in list view", + "collapseAllDisabled": "Недоступно в виде списка", "hideOnThisPage": "Скрыть боковую панель на этой странице", "showSidebar": "Показать боковую панель", "sidebarHiddenNotification": "Боковая панель скрыта на странице {page}", - "viewOptions": "[TODO: Translate] View options", - "treeView": "[TODO: Translate] Tree view", - "listView": "[TODO: Translate] List view", + "viewOptions": "Параметры отображения", + "treeView": "Дерево", + "listView": "Список", "recursiveOn": "Включать вложенные папки", - "createFolder": "[TODO: Translate] New folder", - "newSubfolder": "[TODO: Translate] New subfolder", - "showEmptyFolders": "[TODO: Translate] Show empty folders", + "createFolder": "Новая папка", + "newSubfolder": "Новая вложенная папка", + "showEmptyFolders": "Показывать пустые папки", "createFolderResult": { - "success": "[TODO: Translate] Folder \"{name}\" created", - "failed": "[TODO: Translate] Failed to create folder: {message}", - "unsupported": "[TODO: Translate] Folder creation is not supported on this page", - "noRoot": "[TODO: Translate] No model root is configured" + "success": "Папка \"{name}\" создана", + "failed": "Не удалось создать папку: {message}", + "unsupported": "Создание папок не поддерживается на этой странице", + "noRoot": "Корневая папка моделей не настроена" }, - "deleteFolder": "[TODO: Translate] Delete folder", + "deleteFolder": "Удалить папку", "deleteFolderModal": { - "title": "[TODO: Translate] Delete folder?", - "message": "[TODO: Translate] The folder and everything inside it will be permanently removed from disk.", - "folderLabel": "[TODO: Translate] Folder", - "emptyNote": "[TODO: Translate] This folder contains no models. Any other files it holds will be deleted too.", - "notEmptyTitle": "[TODO: Translate] Folder is not empty", - "notEmptyMessage": "[TODO: Translate] This folder still contains models. Delete or move them first — deleting a folder never cascades over model files.", - "confirm": "[TODO: Translate] Delete folder" + "title": "Удалить папку?", + "message": "Папка и всё её содержимое будут безвозвратно удалены с диска.", + "folderLabel": "Папка", + "emptyNote": "В этой папке нет моделей. Остальные файлы в ней тоже будут удалены.", + "notEmptyTitle": "Папка не пуста", + "notEmptyMessage": "В этой папке ещё есть модели. Сначала удалите или переместите их — удаление папки никогда не затрагивает файлы моделей.", + "confirm": "Удалить папку" }, "deleteFolderResult": { - "success": "[TODO: Translate] Folder \"{name}\" deleted", - "successWithFiles": "[TODO: Translate] Folder \"{name}\" deleted along with {count} other item(s)", - "restored": "[TODO: Translate] Folder restored", - "failed": "[TODO: Translate] Failed to delete folder: {message}", - "notEmpty": "[TODO: Translate] This folder still contains models. Refresh the sidebar and try again.", - "busy": "[TODO: Translate] A deletion is still pending inside this folder. Wait for the undo window to expire.", - "unsupported": "[TODO: Translate] Folder deletion is not supported on this page", - "noRoot": "[TODO: Translate] No model root is configured" + "success": "Папка \"{name}\" удалена", + "successWithFiles": "Папка \"{name}\" удалена вместе с ещё {count} элемент(ами)", + "restored": "Папка восстановлена", + "failed": "Не удалось удалить папку: {message}", + "notEmpty": "В этой папке ещё есть модели. Обновите боковую панель и повторите попытку.", + "busy": "В этой папке всё ещё есть отложенное удаление. Дождитесь окончания окна отмены.", + "unsupported": "Удаление папок не поддерживается на этой странице", + "noRoot": "Корневая папка моделей не настроена" }, - "renameFolder": "[TODO: Translate] Rename folder", + "renameFolder": "Переименовать папку", "renameFolderResult": { - "success": "[TODO: Translate] Folder renamed to \"{name}\"", - "failed": "[TODO: Translate] Failed to rename folder: {message}", - "targetExists": "[TODO: Translate] A folder with that name already exists here", - "busy": "[TODO: Translate] A deletion is still pending inside this folder. Wait for the undo window to expire.", - "unsupported": "[TODO: Translate] Folder renaming is not supported on this page", - "noRoot": "[TODO: Translate] No model root is configured" + "success": "Папка переименована в \"{name}\"", + "failed": "Не удалось переименовать папку: {message}", + "targetExists": "Папка с таким именем уже существует здесь", + "busy": "В этой папке всё ещё есть отложенное удаление. Дождитесь окончания окна отмены.", + "unsupported": "Переименование папок не поддерживается на этой странице", + "noRoot": "Корневая папка моделей не настроена" }, "dragDrop": { "unableToResolveRoot": "Не удалось определить путь назначения для перемещения.", @@ -1302,7 +1302,7 @@ }, "empty": { "noFolders": "Папки не найдены", - "createHint": "[TODO: Translate] Click the New Folder button above to create folders" + "createHint": "Нажмите кнопку «Новая папка» вверху, чтобы создать папки" }, "folderUpdateCheck": { "label": "Проверить обновления в этой папке", diff --git a/locales/zh-CN.json b/locales/zh-CN.json index 9442b3e1..f9a631d6 100644 --- a/locales/zh-CN.json +++ b/locales/zh-CN.json @@ -1246,51 +1246,51 @@ "sidebar": { "modelRoot": "根目录", "collapseAll": "折叠所有文件夹", - "collapseAllDisabled": "[TODO: Translate] Not available in list view", + "collapseAllDisabled": "列表视图下不可用", "hideOnThisPage": "隐藏此页面侧边栏", "showSidebar": "显示侧边栏", "sidebarHiddenNotification": "{page}页面的文件夹侧边栏已隐藏", - "viewOptions": "[TODO: Translate] View options", - "treeView": "[TODO: Translate] Tree view", - "listView": "[TODO: Translate] List view", + "viewOptions": "视图选项", + "treeView": "树形视图", + "listView": "列表视图", "recursiveOn": "包含子文件夹", - "createFolder": "[TODO: Translate] New folder", - "newSubfolder": "[TODO: Translate] New subfolder", - "showEmptyFolders": "[TODO: Translate] Show empty folders", + "createFolder": "新建文件夹", + "newSubfolder": "新建子文件夹", + "showEmptyFolders": "显示空文件夹", "createFolderResult": { - "success": "[TODO: Translate] Folder \"{name}\" created", - "failed": "[TODO: Translate] Failed to create folder: {message}", - "unsupported": "[TODO: Translate] Folder creation is not supported on this page", - "noRoot": "[TODO: Translate] No model root is configured" + "success": "已创建文件夹 \"{name}\"", + "failed": "创建文件夹失败: {message}", + "unsupported": "此页面不支持创建文件夹", + "noRoot": "未配置模型根目录" }, - "deleteFolder": "[TODO: Translate] Delete folder", + "deleteFolder": "删除文件夹", "deleteFolderModal": { - "title": "[TODO: Translate] Delete folder?", - "message": "[TODO: Translate] The folder and everything inside it will be permanently removed from disk.", - "folderLabel": "[TODO: Translate] Folder", - "emptyNote": "[TODO: Translate] This folder contains no models. Any other files it holds will be deleted too.", - "notEmptyTitle": "[TODO: Translate] Folder is not empty", - "notEmptyMessage": "[TODO: Translate] This folder still contains models. Delete or move them first — deleting a folder never cascades over model files.", - "confirm": "[TODO: Translate] Delete folder" + "title": "删除文件夹?", + "message": "该文件夹及其中所有内容都将从磁盘上永久删除。", + "folderLabel": "文件夹", + "emptyNote": "该文件夹中没有模型,其中的其他文件也会一并删除。", + "notEmptyTitle": "文件夹不为空", + "notEmptyMessage": "该文件夹中仍有模型,请先删除或移出这些模型 —— 删除文件夹不会级联删除模型文件。", + "confirm": "删除文件夹" }, "deleteFolderResult": { - "success": "[TODO: Translate] Folder \"{name}\" deleted", - "successWithFiles": "[TODO: Translate] Folder \"{name}\" deleted along with {count} other item(s)", - "restored": "[TODO: Translate] Folder restored", - "failed": "[TODO: Translate] Failed to delete folder: {message}", - "notEmpty": "[TODO: Translate] This folder still contains models. Refresh the sidebar and try again.", - "busy": "[TODO: Translate] A deletion is still pending inside this folder. Wait for the undo window to expire.", - "unsupported": "[TODO: Translate] Folder deletion is not supported on this page", - "noRoot": "[TODO: Translate] No model root is configured" + "success": "已删除文件夹 \"{name}\"", + "successWithFiles": "已删除文件夹 \"{name}\",同时删除了另外 {count} 项内容", + "restored": "文件夹已恢复", + "failed": "删除文件夹失败: {message}", + "notEmpty": "该文件夹中仍有模型。请刷新侧边栏后重试。", + "busy": "该文件夹内仍有待处理的删除操作,请等待撤销窗口结束。", + "unsupported": "此页面不支持删除文件夹", + "noRoot": "未配置模型根目录" }, - "renameFolder": "[TODO: Translate] Rename folder", + "renameFolder": "重命名文件夹", "renameFolderResult": { - "success": "[TODO: Translate] Folder renamed to \"{name}\"", - "failed": "[TODO: Translate] Failed to rename folder: {message}", - "targetExists": "[TODO: Translate] A folder with that name already exists here", - "busy": "[TODO: Translate] A deletion is still pending inside this folder. Wait for the undo window to expire.", - "unsupported": "[TODO: Translate] Folder renaming is not supported on this page", - "noRoot": "[TODO: Translate] No model root is configured" + "success": "文件夹已重命名为 \"{name}\"", + "failed": "重命名文件夹失败: {message}", + "targetExists": "此处已存在同名文件夹", + "busy": "该文件夹内仍有待处理的删除操作,请等待撤销窗口结束。", + "unsupported": "此页面不支持重命名文件夹", + "noRoot": "未配置模型根目录" }, "dragDrop": { "unableToResolveRoot": "无法确定移动的目标路径。", @@ -1302,7 +1302,7 @@ }, "empty": { "noFolders": "未找到文件夹", - "createHint": "[TODO: Translate] Click the New Folder button above to create folders" + "createHint": "点击上方的新建文件夹按钮即可创建文件夹" }, "folderUpdateCheck": { "label": "检查此文件夹的更新", diff --git a/locales/zh-TW.json b/locales/zh-TW.json index 56b0b01f..72d7b48b 100644 --- a/locales/zh-TW.json +++ b/locales/zh-TW.json @@ -1246,51 +1246,51 @@ "sidebar": { "modelRoot": "根目錄", "collapseAll": "全部摺疊資料夾", - "collapseAllDisabled": "[TODO: Translate] Not available in list view", + "collapseAllDisabled": "清單檢視下無法使用", "hideOnThisPage": "隱藏此頁面側邊欄", "showSidebar": "顯示側邊欄", "sidebarHiddenNotification": "{page}頁面的資料夾側邊欄已隱藏", - "viewOptions": "[TODO: Translate] View options", - "treeView": "[TODO: Translate] Tree view", - "listView": "[TODO: Translate] List view", + "viewOptions": "檢視選項", + "treeView": "樹狀檢視", + "listView": "清單檢視", "recursiveOn": "包含子資料夾", - "createFolder": "[TODO: Translate] New folder", - "newSubfolder": "[TODO: Translate] New subfolder", - "showEmptyFolders": "[TODO: Translate] Show empty folders", + "createFolder": "新增資料夾", + "newSubfolder": "新增子資料夾", + "showEmptyFolders": "顯示空資料夾", "createFolderResult": { - "success": "[TODO: Translate] Folder \"{name}\" created", - "failed": "[TODO: Translate] Failed to create folder: {message}", - "unsupported": "[TODO: Translate] Folder creation is not supported on this page", - "noRoot": "[TODO: Translate] No model root is configured" + "success": "已建立資料夾 \"{name}\"", + "failed": "建立資料夾失敗: {message}", + "unsupported": "此頁面不支援建立資料夾", + "noRoot": "未設定模型根目錄" }, - "deleteFolder": "[TODO: Translate] Delete folder", + "deleteFolder": "刪除資料夾", "deleteFolderModal": { - "title": "[TODO: Translate] Delete folder?", - "message": "[TODO: Translate] The folder and everything inside it will be permanently removed from disk.", - "folderLabel": "[TODO: Translate] Folder", - "emptyNote": "[TODO: Translate] This folder contains no models. Any other files it holds will be deleted too.", - "notEmptyTitle": "[TODO: Translate] Folder is not empty", - "notEmptyMessage": "[TODO: Translate] This folder still contains models. Delete or move them first — deleting a folder never cascades over model files.", - "confirm": "[TODO: Translate] Delete folder" + "title": "刪除資料夾?", + "message": "該資料夾及其中的所有內容都將從磁碟上永久刪除。", + "folderLabel": "資料夾", + "emptyNote": "該資料夾中沒有模型,其中的其他檔案也會一併刪除。", + "notEmptyTitle": "資料夾不是空的", + "notEmptyMessage": "該資料夾中仍有模型,請先刪除或移出這些模型 —— 刪除資料夾不會串聯刪除模型檔案。", + "confirm": "刪除資料夾" }, "deleteFolderResult": { - "success": "[TODO: Translate] Folder \"{name}\" deleted", - "successWithFiles": "[TODO: Translate] Folder \"{name}\" deleted along with {count} other item(s)", - "restored": "[TODO: Translate] Folder restored", - "failed": "[TODO: Translate] Failed to delete folder: {message}", - "notEmpty": "[TODO: Translate] This folder still contains models. Refresh the sidebar and try again.", - "busy": "[TODO: Translate] A deletion is still pending inside this folder. Wait for the undo window to expire.", - "unsupported": "[TODO: Translate] Folder deletion is not supported on this page", - "noRoot": "[TODO: Translate] No model root is configured" + "success": "已刪除資料夾 \"{name}\"", + "successWithFiles": "已刪除資料夾 \"{name}\",同時刪除了另外 {count} 項內容", + "restored": "資料夾已還原", + "failed": "刪除資料夾失敗: {message}", + "notEmpty": "該資料夾中仍有模型。請重新整理側邊欄後再試。", + "busy": "該資料夾內仍有待處理的刪除操作,請等待復原時間結束。", + "unsupported": "此頁面不支援刪除資料夾", + "noRoot": "未設定模型根目錄" }, - "renameFolder": "[TODO: Translate] Rename folder", + "renameFolder": "重新命名資料夾", "renameFolderResult": { - "success": "[TODO: Translate] Folder renamed to \"{name}\"", - "failed": "[TODO: Translate] Failed to rename folder: {message}", - "targetExists": "[TODO: Translate] A folder with that name already exists here", - "busy": "[TODO: Translate] A deletion is still pending inside this folder. Wait for the undo window to expire.", - "unsupported": "[TODO: Translate] Folder renaming is not supported on this page", - "noRoot": "[TODO: Translate] No model root is configured" + "success": "資料夾已重新命名為 \"{name}\"", + "failed": "重新命名資料夾失敗: {message}", + "targetExists": "此處已存在同名資料夾", + "busy": "該資料夾內仍有待處理的刪除操作,請等待復原時間結束。", + "unsupported": "此頁面不支援重新命名資料夾", + "noRoot": "未設定模型根目錄" }, "dragDrop": { "unableToResolveRoot": "無法確定移動的目標路徑。", @@ -1302,7 +1302,7 @@ }, "empty": { "noFolders": "未找到資料夾", - "createHint": "[TODO: Translate] Click the New Folder button above to create folders" + "createHint": "點擊上方的新增資料夾按鈕即可建立資料夾" }, "folderUpdateCheck": { "label": "檢查此資料夾的更新",