BACK-478 - Web UI i18n: en, ja, zh-CN, zh-TW (split 3/9 of #669)#677
Draft
MrLesk wants to merge 1 commit into
Draft
BACK-478 - Web UI i18n: en, ja, zh-CN, zh-TW (split 3/9 of #669)#677MrLesk wants to merge 1 commit into
MrLesk wants to merge 1 commit into
Conversation
This was referenced Jun 9, 2026
Draft
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Note
Maintainer-split slice 3/9 of #669. All commits are authored by @kuwork — I only rebased them onto current
mainand resolved conflicts. Merge with Rebase and merge to keep the per-task commits and original authorship.Stack
Based on
pr669/2-wiki-core(slice 2). Review only the commit unique to this PR. After the previous slice merges, restack withgit rebase --onto main pr669/2-wiki-core pr669/3-i18n.Tasks in this slice
BACK-478 — Web UI i18n (English, Japanese, Chinese Simplified/Traditional)
src/web/contexts/I18nContext.tsx: locale state via config (apiClient.fetchConfig())src/web/hooks/useI18n.ts:tdictionary hooksrc/web/locales/{index,types,en,ja,zh-CN,zh-TW}.ts: registry + full dictionaries for 30+ componentssrc/web/components/*.tsx: hardcoded strings →t.*BacklogConfig: newlocalefield persisted tobacklog/config.ymlNotes
useI18nContextthrew when used outsideI18nProvider, which broke everymaintest that renders components directly (the BACK-470 comment tests postdate the fork). Changed to fall back to the English dictionary — no behavior change inside the app, and components without a provider behave exactly as before i18n.en.tsvalues in the milestones section were aligned to main's exact English ("Unassigned tasks", "Edit milestone",No milestones or tasks match "…", "No active unassigned tasks. Completed tasks are hidden.", "No matching unassigned tasks.") so the English dictionary reproduces main's UI verbatim and main's MilestonesPage tests pass unchanged.TranslationDicttype derived fromen), and whether alocaleconfig field belongs inconfig.yml.bun install --frozen-lockfile,bunx tsc --noEmit.Original combined PR: #669.
Full stack: #675 editor/paste → #676 wiki → #677 i18n → #678 doc editing → #679 search/sidebar → #680 fixes → #681 dates/stats → #682 Gantt → #683 timezone/polish — split from #669, all commits authored by @kuwork.