mirror of
https://github.com/willmiao/ComfyUI-Lora-Manager.git
synced 2026-10-07 18:12:12 -03:00
i18n(scanner): translate the reconcile walk progress strings
The walk-progress feature left exactly one [TODO: Translate] key behind,
common.scanProgress.walkFiles ("{count} files"), so this is the whole
pending set for all 9 locales. Each rendering reuses the locale's
stages.count_models noun for "files":
zh-CN {count} 个文件 zh-TW {count} 個檔案
ja {count} 件のファイル ko 파일 {count}개
fr {count} fichiers de {count} Dateien
es {count} archivos ru {count} файл(ов)
he {count} קבצים
{count} arrives pre-formatted (toLocaleString), so no locale adds digit
grouping, and the string stays a bare fragment: the root labels, the
parentheses and the " | " before the ETA are composed by
static/js/api/baseModelApi.js. ru uses файл(ов) because the counter ticks
live (notEmptyMessageCount precedent).
Also document the new surface in docs/i18n-translation-guidelines.md:
a status note plus the "Scan progress (walk phase)" terminology section
recording the per-locale renderings and the fragment/composition rule.
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:
@@ -151,6 +151,14 @@ Locales: `en`, `zh-CN`, `zh-TW`, `ja`, `ko`, `fr`, `de`, `es`, `ru`, `he` (RTL).
|
||||
> nothing is tracked for alerts). Register follows each file's existing norm: 你 (zh-CN),
|
||||
> 您 (zh-TW), Sie (de), tú (es), вы (ru). No remaining `[TODO: Translate]` placeholders.
|
||||
|
||||
> **Status (2026-10, reconcile walk progress):** a regular Refresh now reports the reconcile
|
||||
> walk per model root (which roots are being checked, how many model files have been seen, and
|
||||
> an ETA) and splits the progress bar into walk (0-50 %) and new-file (50-99 %) phases, which
|
||||
> added the single `common.scanProgress.walkFiles` fragment. All 9 locales are translated
|
||||
> (renderings in §2, "Scan progress (walk phase)"), so the "no remaining placeholders" claim
|
||||
> holds again. The same pass scoped the client-side ETA to the current stage in
|
||||
> `static/js/api/baseModelApi.js`; no other locale string changed.
|
||||
|
||||
---
|
||||
|
||||
## 1. Hard rules (do not violate)
|
||||
@@ -669,6 +677,27 @@ that form fits a tooltip (ru shortens both toggle labels to bare «Галере
|
||||
| gallery / vertical list (option labels) | zh-CN 画廊 / 纵向列表 · zh-TW 圖庫 / 垂直清單 · ja ギャラリー / 縦並びリスト · ko 갤러리 / 세로 목록 · fr Galerie / Liste verticale · de Galerie / Vertikale Liste · es Galería / Lista vertical · ru Галерея / Вертикальный список · he גלריה / רשימה אנכית |
|
||||
| gallery view / list view (toggle tooltips) | zh-CN 画廊视图 / 列表视图 · zh-TW 圖庫檢視 / 清單檢視 · ja ギャラリー表示 / リスト表示 · ko 갤러리 보기 / 목록 보기 · fr Vue galerie / Vue liste · de Galerieansicht / Listenansicht · es Vista de galería / Vista de lista · ru Галерея / Список · he תצוגת גלריה / תצוגת רשימה |
|
||||
|
||||
### Scan progress (walk phase)
|
||||
|
||||
The manual Refresh dialog renders its status line from `common.scanProgress.*`. During the
|
||||
reconcile walk the backend does not know the real file count yet (counting *is* the walk), so
|
||||
the client shows the roots being walked plus a running count instead of a `processed/total`
|
||||
ratio: `Checking for changes... G:, Y: (12,345 files) | ~3 min remaining`. The bar covers
|
||||
0-50 % for the walk and 50-99 % for the new-file pass.
|
||||
|
||||
| Term | Rendering |
|
||||
|---|---|
|
||||
| `walkFiles` ("{count} files") | zh-CN {count} 个文件 · zh-TW {count} 個檔案 · ja {count} 件のファイル · ko 파일 {count}개 · fr {count} fichiers · de {count} Dateien · es {count} archivos · ru {count} файл(ов) · he {count} קבצים |
|
||||
|
||||
`walkFiles` is a **fragment, not a sentence**: the root labels, the `(` `)`, the ` | ` before
|
||||
the ETA and the ETA text itself all come from `static/js/api/baseModelApi.js`, so no locale
|
||||
carries punctuation here (the ASCII parentheses match the sibling `stages.process_models`
|
||||
count, `(5/10)`). `{count}` is substituted with an already-formatted number
|
||||
(`toLocaleString()`), so no locale adds its own digit grouping. "files" means the **model
|
||||
files the walk looked at**, not every file on disk — the noun mirrors each locale's
|
||||
`stages.count_models` rendering, and `ru` uses the `файл(ов)` form because the count ticks
|
||||
live and can be any number (`notEmptyMessageCount` precedent).
|
||||
|
||||
---
|
||||
|
||||
## 3. Cross-cutting confusion hot-spots (must-fix list)
|
||||
|
||||
+1
-1
@@ -74,7 +74,7 @@
|
||||
"minutes": "~{minutes} Min. verbleibend",
|
||||
"hours": "~{hours} Std. {minutes} Min. verbleibend"
|
||||
},
|
||||
"walkFiles": "[TODO: Translate] {count} files"
|
||||
"walkFiles": "{count} Dateien"
|
||||
}
|
||||
},
|
||||
"onboarding": {
|
||||
|
||||
+1
-1
@@ -74,7 +74,7 @@
|
||||
"minutes": "Quedan ~{minutes} min",
|
||||
"hours": "Quedan ~{hours} h {minutes} min"
|
||||
},
|
||||
"walkFiles": "[TODO: Translate] {count} files"
|
||||
"walkFiles": "{count} archivos"
|
||||
}
|
||||
},
|
||||
"onboarding": {
|
||||
|
||||
+1
-1
@@ -74,7 +74,7 @@
|
||||
"minutes": "~{minutes} min restantes",
|
||||
"hours": "~{hours} h {minutes} min restantes"
|
||||
},
|
||||
"walkFiles": "[TODO: Translate] {count} files"
|
||||
"walkFiles": "{count} fichiers"
|
||||
}
|
||||
},
|
||||
"onboarding": {
|
||||
|
||||
+1
-1
@@ -74,7 +74,7 @@
|
||||
"minutes": "נותרו ~{minutes} דקות",
|
||||
"hours": "נותרו ~{hours} שעות ו-{minutes} דקות"
|
||||
},
|
||||
"walkFiles": "[TODO: Translate] {count} files"
|
||||
"walkFiles": "{count} קבצים"
|
||||
}
|
||||
},
|
||||
"onboarding": {
|
||||
|
||||
+1
-1
@@ -74,7 +74,7 @@
|
||||
"minutes": "残り約 {minutes} 分",
|
||||
"hours": "残り約 {hours} 時間 {minutes} 分"
|
||||
},
|
||||
"walkFiles": "[TODO: Translate] {count} files"
|
||||
"walkFiles": "{count} 件のファイル"
|
||||
}
|
||||
},
|
||||
"onboarding": {
|
||||
|
||||
+1
-1
@@ -74,7 +74,7 @@
|
||||
"minutes": "약 {minutes}분 남음",
|
||||
"hours": "약 {hours}시간 {minutes}분 남음"
|
||||
},
|
||||
"walkFiles": "[TODO: Translate] {count} files"
|
||||
"walkFiles": "파일 {count}개"
|
||||
}
|
||||
},
|
||||
"onboarding": {
|
||||
|
||||
+1
-1
@@ -74,7 +74,7 @@
|
||||
"minutes": "Осталось ~{minutes} мин",
|
||||
"hours": "Осталось ~{hours} ч {minutes} мин"
|
||||
},
|
||||
"walkFiles": "[TODO: Translate] {count} files"
|
||||
"walkFiles": "{count} файл(ов)"
|
||||
}
|
||||
},
|
||||
"onboarding": {
|
||||
|
||||
+1
-1
@@ -74,7 +74,7 @@
|
||||
"minutes": "剩余约 {minutes} 分钟",
|
||||
"hours": "剩余约 {hours} 小时 {minutes} 分钟"
|
||||
},
|
||||
"walkFiles": "[TODO: Translate] {count} files"
|
||||
"walkFiles": "{count} 个文件"
|
||||
}
|
||||
},
|
||||
"onboarding": {
|
||||
|
||||
+1
-1
@@ -74,7 +74,7 @@
|
||||
"minutes": "剩餘約 {minutes} 分鐘",
|
||||
"hours": "剩餘約 {hours} 小時 {minutes} 分鐘"
|
||||
},
|
||||
"walkFiles": "[TODO: Translate] {count} files"
|
||||
"walkFiles": "{count} 個檔案"
|
||||
}
|
||||
},
|
||||
"onboarding": {
|
||||
|
||||
Reference in New Issue
Block a user