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:
Will Miao
2026-10-06 12:42:08 +08:00
parent 14e660e876
commit a48855d576
10 changed files with 38 additions and 9 deletions
+1 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -74,7 +74,7 @@
"minutes": "נותרו ~{minutes} דקות",
"hours": "נותרו ~{hours} שעות ו-{minutes} דקות"
},
"walkFiles": "[TODO: Translate] {count} files"
"walkFiles": "{count} קבצים"
}
},
"onboarding": {
+1 -1
View File
@@ -74,7 +74,7 @@
"minutes": "残り約 {minutes} 分",
"hours": "残り約 {hours} 時間 {minutes} 分"
},
"walkFiles": "[TODO: Translate] {count} files"
"walkFiles": "{count} 件のファイル"
}
},
"onboarding": {
+1 -1
View File
@@ -74,7 +74,7 @@
"minutes": "약 {minutes}분 남음",
"hours": "약 {hours}시간 {minutes}분 남음"
},
"walkFiles": "[TODO: Translate] {count} files"
"walkFiles": "파일 {count}개"
}
},
"onboarding": {
+1 -1
View File
@@ -74,7 +74,7 @@
"minutes": "Осталось ~{minutes} мин",
"hours": "Осталось ~{hours} ч {minutes} мин"
},
"walkFiles": "[TODO: Translate] {count} files"
"walkFiles": "{count} файл(ов)"
}
},
"onboarding": {
+1 -1
View File
@@ -74,7 +74,7 @@
"minutes": "剩余约 {minutes} 分钟",
"hours": "剩余约 {hours} 小时 {minutes} 分钟"
},
"walkFiles": "[TODO: Translate] {count} files"
"walkFiles": "{count} 个文件"
}
},
"onboarding": {
+1 -1
View File
@@ -74,7 +74,7 @@
"minutes": "剩餘約 {minutes} 分鐘",
"hours": "剩餘約 {hours} 小時 {minutes} 分鐘"
},
"walkFiles": "[TODO: Translate] {count} files"
"walkFiles": "{count} 個檔案"
}
},
"onboarding": {