Context
showmycode currently ships English (en) and Korean (ko).
This issue adds Chinese (zh).
Great first issue — it follows the existing i18n pattern and touches only 5 well-defined spots.
No architecture knowledge needed.
What to do
- Create
locales/zh.json by translating every key in locales/en.json (nav, repo, code, commits, pulls, error, unauthorized). Keep the same JSON structure.
lib/i18n.ts → add "zh" to the locales array.
locales/index.ts → add export { default as zh } from "./zh.json";
lib/i18n.server.ts → add to the load map:
zh: () => import("@/locales/zh.json").then((m) => m.default),
components/LangSwitcher.tsx → add zh: "ZH" to the labels record.
Locale detection (Accept-Language) and routing are automatic — no changes needed in proxy.ts or the unauthorized page.
Note on Chinese variants
Use Simplified Chinese for zh in this issue.
Locale detection strips the region (zh-CN/zh-TW → zh), so a single zh covers both for routing.
Traditional Chinese (zh-TW) as a separate locale can be a follow-up issue — out of scope here.
⚠️ Do not translate
GitHub status badges (Private/Public, Merged/Open/Closed, file statuses Added/Removed/Modified/Renamed) stay in English in every locale.
Acceptance criteria
Comment below to claim this — we'll assign it to avoid duplicate work.
Context
showmycode currently ships English (
en) and Korean (ko).This issue adds Chinese (
zh).Great first issue — it follows the existing i18n pattern and touches only 5 well-defined spots.
No architecture knowledge needed.
What to do
locales/zh.jsonby translating every key inlocales/en.json(nav,repo,code,commits,pulls,error,unauthorized). Keep the same JSON structure.lib/i18n.ts→ add"zh"to thelocalesarray.locales/index.ts→ addexport { default as zh } from "./zh.json";lib/i18n.server.ts→ add to theloadmap:components/LangSwitcher.tsx→ addzh: "ZH"to thelabelsrecord.Note on Chinese variants
Use Simplified Chinese for
zhin this issue.Locale detection strips the region (
zh-CN/zh-TW→zh), so a singlezhcovers both for routing.Traditional Chinese (
zh-TW) as a separate locale can be a follow-up issue — out of scope here.GitHub status badges (
Private/Public,Merged/Open/Closed, file statusesAdded/Removed/Modified/Renamed) stay in English in every locale.Acceptance criteria
/zhroutes render correctly across home, code, commits, and PR pagesZHoption appears in the language switcher and switches correctly (query params preserved)npm run format:check,lint,typecheck, andbuildall passComment below to claim this — we'll assign it to avoid duplicate work.