i18n(scanner): translate the scoped-scan strings

The scoped-scan feature left exactly 6 [TODO: Translate] keys behind, so this
is the whole pending set for all 9 locales. Renderings reuse the established
nouns (folder: zh-CN 文件夹 / ja フォルダ / ru папка / he תיקייה; "model" counts
from sidebar.deleteFolderModal) and introduce one new term, "Offline" for a
configured root that cannot be read right now:

  scopeSection        zh-CN 只扫描一个文件夹 · ja フォルダを 1 つだけスキャン
                      fr Analyser un seul dossier · ru Сканировать только одну папку
  rootOffline         zh-CN 离线 · ja オフライン · fr Hors ligne · ru Недоступен
  rootModels          zh-CN {count} 个模型 · ko 모델 {count}개 · he {count} מודלים
  refreshCompleteScoped / refreshKeptUnreachable / scanRootUnreachable
                      (counts and {scope}/{paths} stay verbatim)

Every placeholder set matches en.json, fr keeps the typographic apostrophe, and
the three CJK locales keep full-width punctuation while ko uses ASCII like the
rest of that file. docs/i18n-translation-guidelines.md gains the
"Scoped scan and root availability" terminology table plus the updated status
note, so the "no remaining placeholders" claim holds again.

Verified: python scripts/sync_translation_keys.py --dry-run reports no pending
changes, pytest tests/i18n 20 passed, and grep -c "TODO: Translate"
locales/*.json is 0 everywhere.
This commit is contained in:
Will Miao
2026-10-07 15:04:16 +08:00
parent 470d85cca6
commit bd184559bf
10 changed files with 77 additions and 56 deletions
+6 -6
View File
@@ -919,9 +919,9 @@
"title": "모델 목록 새로고침",
"full": "캐시 재구성",
"fullTooltip": "메타데이터 파일에서 모든 모델 정보를 다시 불러옵니다. 라이브러리가 오래되어 보이거나 수동 수정 후에 사용하세요.",
"scopeSection": "[TODO: Translate] Scan one folder",
"rootOffline": "[TODO: Translate] Offline",
"rootModels": "[TODO: Translate] {count} models"
"scopeSection": "폴더 하나만 스캔",
"rootOffline": "오프라인",
"rootModels": "모델 {count}개"
},
"fetch": {
"title": "CivitAI에서 메타데이터 가져오기",
@@ -2808,9 +2808,9 @@
"moveFailed": "항목을 이동하지 못했습니다: {message}",
"copiedToClipboard": "클립보드에 복사됨",
"downloadStarted": "다운로드 시작됨",
"refreshCompleteScoped": "[TODO: Translate] Scanned {scope}: {added} new, {removed} removed",
"refreshKeptUnreachable": "[TODO: Translate] {count} models kept: {paths} not reachable",
"scanRootUnreachable": "[TODO: Translate] {scope} is not reachable right now. Nothing was changed."
"refreshCompleteScoped": "{scope} 스캔 완료: 새 모델 {added}개, 제거 {removed}개",
"refreshKeptUnreachable": "모델 {count}개 유지됨: {paths}에 접근할 수 없음",
"scanRootUnreachable": "{scope}에 현재 접근할 수 없습니다. 변경된 내용은 없습니다."
},
"agent": {
"llmNotConfigured": "AI 제공자가 설정되지 않았습니다. 설정 → AI 제공자에서 활성화하세요.",