fix(i18n): address PR review feedback

Bugs:
- GeneralPage: network access toast used the keep-server-running title key
  (wrong semantic scope). Add networkAccess.updatedTitle and use it.
- GeneralPage: fallback "Unknown" version was stored as a translated string
  in state, so it stayed stale across language switches. Store null, resolve
  the label at render time.
- GeneralPage: memoize the zod resolver on t and retrigger validation when
  the locale changes so existing error messages retranslate.
- GpuPage: adding t to the CUDA progress EventSource effect deps caused the
  SSE connection to be torn down and reopened on every language change,
  potentially dropping in-flight download events. Capture t in a ref.
- HistoryTable: Effects dialog still rendered English "Source" / "Select
  source version" / "Cancel" / "Apply" / "Applying..." — localize them.
- Locales: zh-CN / zh-TW / ja devSuffix was missing the leading space before
  "(开发版)"/"(開發版)"/"(開発版)", so dev builds rendered "v0.4.2(开发版)"
  instead of "v0.4.2 (开发版)".

Nits:
- ModelManagement: rename .find((t) => ...) callback param to avoid
  shadowing useTranslation().t.
- GenerationPage: rename chunkLimit.value interpolation key from count →
  chars so i18next doesn't silently activate pluralization if a translator
  later adds _one/_other forms.
- LanguageSelect: narrow onValueChange handler param to LanguageCode.

Key count now 559 across en/zh-CN/zh-TW/ja (added 4 effectsDialog keys
plus networkAccess.updatedTitle).

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
This commit is contained in:
James Pine
2026-04-20 04:31:53 -07:00
co-authored by Claude Opus 4.7
parent 9c888008c9
commit d2ecffb455
10 changed files with 72 additions and 29 deletions
+7 -2
View File
@@ -518,7 +518,11 @@
},
"effectsDialog": {
"title": "Apply Effects",
"body": "Configure post-processing effects to apply to this generation. A new version will be created."
"body": "Configure post-processing effects to apply to this generation. A new version will be created.",
"sourceLabel": "Source",
"sourcePlaceholder": "Select source version",
"apply": "Apply",
"applying": "Applying…"
}
},
"generation": {
@@ -598,6 +602,7 @@
"networkAccess": {
"title": "Allow network access",
"description": "Makes the server accessible from other devices on your network. Restart the app after changing.",
"updatedTitle": "Setting updated",
"enabled": "Network access enabled. Restart the app to apply.",
"disabled": "Network access disabled. Restart the app to apply."
},
@@ -651,7 +656,7 @@
"chunkLimit": {
"title": "Auto-chunking limit",
"description": "Long text is split into chunks at sentence boundaries. Lower values can improve quality for long outputs.",
"value": "{{count}} chars"
"value": "{{chars}} chars"
},
"crossfade": {
"title": "Chunk crossfade",