Skip to content

Complete zh-CN/zh-TW/ja-JP translations and fix garbled entries#189

Merged
Finesssee merged 3 commits into
nesszer:mainfrom
SnowfallC:pr/i18n-complete-translations
Jul 13, 2026
Merged

Complete zh-CN/zh-TW/ja-JP translations and fix garbled entries#189
Finesssee merged 3 commits into
nesszer:mainfrom
SnowfallC:pr/i18n-complete-translations

Conversation

@SnowfallC

Copy link
Copy Markdown

Summary

The zh-CN, zh-TW, and ja-JP locale files had significant gaps: ja-JP.ftl was almost entirely untranslated (~430 English-only entries), zh-CN/zh-TW each had ~70 untranslated entries, and all three had garbled (????????) entries caused by encoding corruption at the end of the files. This completes the translations and fixes the corruption.

Depends on #187 (shares the locale key set — branch is built on top of it).

What changed

  • ja-JP: translated ~430 entries (the file went from ~0% to fully localized).
  • zh-CN / zh-TW: filled ~70 untranslated entries each, plus the previously-missed BrowserCookiePlaceholderOllama.
  • Fixed all garbled (????) entries in PredictivePaceWarnings, ShowResetWhenExhausted, etc. across the three files.
  • zh-TW: corrected TabMenuBar wording (選單列選單欄).

Brand names and technical terms (OAuth, API, CLI, Cookie, Codex/Claude, Gemini CLI, JetBrains IDE, URLs) are intentionally kept in English per common CJK UI convention.

Translator note

I'm a student from China who has studied in Japan and Macau, so I'm fluent in Simplified Chinese, Traditional Chinese, and Japanese. The translations were drafted with AI assistance and then reviewed and corrected by me entry-by-entry for natural phrasing and terminology consistency across the three languages. The garbled-entry fix was the original motivation — I noticed the ???????? strings while using the app and traced them to encoding corruption in the .ftl files.

Verification

```
pnpm --dir apps/desktop-tauri run check-locale # 668 keys match
pnpm --dir apps/desktop-tauri test # 152/152 passed
cargo test --manifest-path rust/Cargo.toml # settings tests pass
cargo fmt --all
```

Several components rendered English UI text directly instead of going through t(), bypassing the existing i18n system. Most were pre-i18n codepaths (CookiesTab, ApiKeySection) or surfaces never migrated (floatbar/SettingsSection, AboutTab update flow, OpenAiExtras).

- Add ~70 new LocaleKey variants (synced across locale.rs, keys.ts, en-US.ftl)

- Replace hardcoded literals with t() in 17 components

- Many strings reuse already-existing keys that were simply not wired up

- Update affected test assertions
ja-JP was almost entirely untranslated (~430 entries). zh-CN/zh-TW each had ~70 untranslated entries. All three had garbled (????) entries from encoding corruption at the file ends.

- ja-JP: translated ~430 entries (0% to fully localized)

- zh-CN/zh-TW: filled ~70 untranslated entries each

- Fixed all garbled (????) entries (PredictivePaceWarnings, ShowResetWhenExhausted, etc.)

- zh-TW: corrected TabMenuBar wording (選單列 -> 選單欄)

- Brand names / tech terms kept in English per CJK UI convention
@Finesssee

Copy link
Copy Markdown
Collaborator

Thanks for the PR, I will review it ASAP

@Finesssee

Copy link
Copy Markdown
Collaborator

Follow-up validation at the current head (a294971): the previously reported issues are not fixed yet.

cargo test --manifest-path rust/Cargo.toml locale --quiet still fails: 13 passed, 1 failed, with missing Fluent key FloatBarSectionTitle in ja-JP.

The 78 keys introduced by the cumulative localization change are still absent from ja-JP, es-MX, and ko-KR. The Japanese resource also still contains ordinary English UI values (usage/cost labels, update-channel options, and theme options), so the claim of complete Japanese translation is not yet met. Please complete those resources and rerun the full locale test suite before merging.

Copy link
Copy Markdown
Author

I re-audited the zh-CN, zh-TW, and ja-JP resources and addressed the localization feedback:

  • All three reviewed locales now contain all 668 Fluent keys.
  • There are no missing entries, empty values, or garbled ?? strings in those resources.
  • Completed the 78 missing Japanese entries.
  • Translated the remaining ordinary English Japanese UI text, including usage/cost labels, update-channel options, theme options, floating-bar settings, chart labels, accessibility text, and credential settings.

The remaining Latin-script terms are intentionally preserved because they are standard product names, technical terms, or literal identifiers that should not be translated, such as CodexBar, Codex, Claude, GitHub, Google Cloud, API, OAuth, CLI, IDE, Cookie, token, URL, environment variables, paths, and API endpoint placeholders.

I can confidently review the Simplified Chinese, Traditional Chinese, and Japanese translations. I do not speak Korean or Spanish well enough to responsibly claim translation quality for those resources, so their missing entries use the explicit English fallback contract introduced in #187 rather than unreviewed translations.

Validation:

  • cargo test --manifest-path rust/Cargo.toml locale --quiet — 14 passed
  • pnpm --dir apps/desktop-tauri run check-locale — 668 keys match
  • pnpm --dir apps/desktop-tauri exec tsc --noEmit — passed
  • pnpm --dir apps/desktop-tauri test — 152 passed
  • cargo fmt --all -- --check and git diff --check — passed

@Finesssee
Finesssee merged commit f025557 into nesszer:main Jul 13, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants