i18n(sidebar): translate the folder-management strings (#999)

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.
This commit is contained in:
Will Miao
2026-09-15 20:18:06 +08:00
parent 9bbe57ee85
commit 3b54a13cae
10 changed files with 341 additions and 316 deletions
+35 -35
View File
@@ -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": "이 폴더의 업데이트 확인",