summaryrefslogtreecommitdiffhomepage
path: root/packages/app/src/context
diff options
context:
space:
mode:
authorAdam <[email protected]>2026-01-20 20:16:57 -0600
committerAdam <[email protected]>2026-01-21 05:24:38 -0600
commite6438aa3f68cfc8d6a5b7b4f6e77042b0ab01049 (patch)
treeb2580a7f471ae3d9aed5e52c0ad65ce65cac0da9 /packages/app/src/context
parent64c80f1b512b5bf03a9132d39db71decfab10dc3 (diff)
downloadopencode-e6438aa3f68cfc8d6a5b7b4f6e77042b0ab01049.tar.gz
opencode-e6438aa3f68cfc8d6a5b7b4f6e77042b0ab01049.zip
feat(app): korean translations
Diffstat (limited to 'packages/app/src/context')
-rw-r--r--packages/app/src/context/language.tsx17
1 files changed, 13 insertions, 4 deletions
diff --git a/packages/app/src/context/language.tsx b/packages/app/src/context/language.tsx
index b04b4dfc4..3fd35183c 100644
--- a/packages/app/src/context/language.tsx
+++ b/packages/app/src/context/language.tsx
@@ -5,15 +5,17 @@ import { createSimpleContext } from "@opencode-ai/ui/context"
import { Persist, persisted } from "@/utils/persist"
import { dict as en } from "@/i18n/en"
import { dict as zh } from "@/i18n/zh"
+import { dict as ko } from "@/i18n/ko"
import { dict as uiEn } from "@opencode-ai/ui/i18n/en"
import { dict as uiZh } from "@opencode-ai/ui/i18n/zh"
+import { dict as uiKo } from "@opencode-ai/ui/i18n/ko"
-export type Locale = "en" | "zh"
+export type Locale = "en" | "zh" | "ko"
type RawDictionary = typeof en & typeof uiEn
type Dictionary = i18n.Flatten<RawDictionary>
-const LOCALES: readonly Locale[] = ["en", "zh"]
+const LOCALES: readonly Locale[] = ["en", "zh", "ko"]
function detectLocale(): Locale {
if (typeof navigator !== "object") return "en"
@@ -22,6 +24,7 @@ function detectLocale(): Locale {
for (const language of languages) {
if (!language) continue
if (language.toLowerCase().startsWith("zh")) return "zh"
+ if (language.toLowerCase().startsWith("ko")) return "ko"
}
return "en"
@@ -37,7 +40,11 @@ export const { use: useLanguage, provider: LanguageProvider } = createSimpleCont
}),
)
- const locale = createMemo<Locale>(() => (store.locale === "zh" ? "zh" : "en"))
+ const locale = createMemo<Locale>(() => {
+ if (store.locale === "zh") return "zh"
+ if (store.locale === "ko") return "ko"
+ return "en"
+ })
createEffect(() => {
const current = locale()
@@ -48,7 +55,8 @@ export const { use: useLanguage, provider: LanguageProvider } = createSimpleCont
const base = i18n.flatten({ ...en, ...uiEn })
const dict = createMemo<Dictionary>(() => {
if (locale() === "en") return base
- return { ...base, ...i18n.flatten({ ...zh, ...uiZh }) }
+ if (locale() === "zh") return { ...base, ...i18n.flatten({ ...zh, ...uiZh }) }
+ return { ...base, ...i18n.flatten({ ...ko, ...uiKo }) }
})
const t = i18n.translator(dict, i18n.resolveTemplate)
@@ -56,6 +64,7 @@ export const { use: useLanguage, provider: LanguageProvider } = createSimpleCont
const labelKey: Record<Locale, keyof Dictionary> = {
en: "language.en",
zh: "language.zh",
+ ko: "language.ko",
}
const label = (value: Locale) => t(labelKey[value])