diff options
| author | Adam <[email protected]> | 2026-03-05 08:10:32 -0600 |
|---|---|---|
| committer | Adam <[email protected]> | 2026-03-05 08:10:36 -0600 |
| commit | a3d4ea0de17ec208d73d27fdfe2f9a226db902f1 (patch) | |
| tree | 21e5eb496214e5051063e8120204775cc7449747 /packages/app | |
| parent | 152df2428df84a1029be2b472b4a840cd94c966d (diff) | |
| download | opencode-a3d4ea0de17ec208d73d27fdfe2f9a226db902f1.tar.gz opencode-a3d4ea0de17ec208d73d27fdfe2f9a226db902f1.zip | |
fix(app): locale error
Diffstat (limited to 'packages/app')
4 files changed, 31 insertions, 9 deletions
diff --git a/packages/app/src/components/session-context-usage.tsx b/packages/app/src/components/session-context-usage.tsx index 47030aa17..08ae4d319 100644 --- a/packages/app/src/components/session-context-usage.tsx +++ b/packages/app/src/components/session-context-usage.tsx @@ -39,7 +39,7 @@ export function SessionContextUsage(props: SessionContextUsageProps) { const usd = createMemo( () => - new Intl.NumberFormat(language.locale(), { + new Intl.NumberFormat(language.intl(), { style: "currency", currency: "USD", }), @@ -77,7 +77,7 @@ export function SessionContextUsage(props: SessionContextUsageProps) { {(ctx) => ( <> <div class="flex items-center gap-2"> - <span class="text-text-invert-strong">{ctx().total.toLocaleString(language.locale())}</span> + <span class="text-text-invert-strong">{ctx().total.toLocaleString(language.intl())}</span> <span class="text-text-invert-base">{language.t("context.usage.tokens")}</span> </div> <div class="flex items-center gap-2"> diff --git a/packages/app/src/components/session/session-context-tab.tsx b/packages/app/src/components/session/session-context-tab.tsx index 582aa3391..39eb4b4c0 100644 --- a/packages/app/src/components/session/session-context-tab.tsx +++ b/packages/app/src/components/session/session-context-tab.tsx @@ -128,7 +128,7 @@ export function SessionContextTab() { const usd = createMemo( () => - new Intl.NumberFormat(language.locale(), { + new Intl.NumberFormat(language.intl(), { style: "currency", currency: "USD", }), @@ -136,7 +136,7 @@ export function SessionContextTab() { const metrics = createMemo(() => getSessionContextMetrics(messages(), sync.data.provider.all)) const ctx = createMemo(() => metrics().context) - const formatter = createMemo(() => createSessionContextFormatter(language.locale())) + const formatter = createMemo(() => createSessionContextFormatter(language.intl())) const cost = createMemo(() => { return usd().format(metrics().totalCost) @@ -200,7 +200,7 @@ export function SessionContextTab() { const stats = [ { label: "context.stats.session", value: () => info()?.title ?? params.id ?? "—" }, - { label: "context.stats.messages", value: () => counts().all.toLocaleString(language.locale()) }, + { label: "context.stats.messages", value: () => counts().all.toLocaleString(language.intl()) }, { label: "context.stats.provider", value: providerLabel }, { label: "context.stats.model", value: modelLabel }, { label: "context.stats.limit", value: () => formatter().number(ctx()?.limit) }, @@ -213,8 +213,8 @@ export function SessionContextTab() { label: "context.stats.cacheTokens", value: () => `${formatter().number(ctx()?.cacheRead)} / ${formatter().number(ctx()?.cacheWrite)}`, }, - { label: "context.stats.userMessages", value: () => counts().user.toLocaleString(language.locale()) }, - { label: "context.stats.assistantMessages", value: () => counts().assistant.toLocaleString(language.locale()) }, + { label: "context.stats.userMessages", value: () => counts().user.toLocaleString(language.intl()) }, + { label: "context.stats.assistantMessages", value: () => counts().assistant.toLocaleString(language.intl()) }, { label: "context.stats.totalCost", value: cost }, { label: "context.stats.sessionCreated", value: () => formatter().time(info()?.time.created) }, { label: "context.stats.lastActivity", value: () => formatter().time(ctx()?.message.time.created) }, @@ -307,7 +307,7 @@ export function SessionContextTab() { <div class="flex items-center gap-1 text-11-regular text-text-weak"> <div class="size-2 rounded-sm" style={{ "background-color": BREAKDOWN_COLOR[segment.key] }} /> <div>{breakdownLabel(segment.key)}</div> - <div class="text-text-weaker">{segment.percent.toLocaleString(language.locale())}%</div> + <div class="text-text-weaker">{segment.percent.toLocaleString(language.intl())}%</div> </div> )} </For> diff --git a/packages/app/src/components/session/session-new-view.tsx b/packages/app/src/components/session/session-new-view.tsx index 79a20430e..f2ecd5150 100644 --- a/packages/app/src/components/session/session-new-view.tsx +++ b/packages/app/src/components/session/session-new-view.tsx @@ -70,7 +70,7 @@ export function NewSessionView(props: NewSessionViewProps) { {language.t("session.new.lastModified")} <span class="text-text-strong"> {DateTime.fromMillis(project().time.updated ?? project().time.created) - .setLocale(language.locale()) + .setLocale(language.intl()) .toRelative()} </span> </div> diff --git a/packages/app/src/context/language.tsx b/packages/app/src/context/language.tsx index 50cc302f4..be1a1769b 100644 --- a/packages/app/src/context/language.tsx +++ b/packages/app/src/context/language.tsx @@ -84,6 +84,26 @@ const LOCALES: readonly Locale[] = [ "tr", ] +const INTL: Record<Locale, string> = { + en: "en", + zh: "zh-Hans", + zht: "zh-Hant", + ko: "ko", + de: "de", + es: "es", + fr: "fr", + da: "da", + ja: "ja", + pl: "pl", + ru: "ru", + ar: "ar", + no: "nb-NO", + br: "pt-BR", + th: "th", + bs: "bs", + tr: "tr", +} + const LABEL_KEY: Record<Locale, keyof Dictionary> = { en: "language.en", zh: "language.zh", @@ -197,6 +217,7 @@ export const { use: useLanguage, provider: LanguageProvider } = createSimpleCont ) const locale = createMemo<Locale>(() => normalizeLocale(store.locale)) + const intl = createMemo(() => INTL[locale()]) const dict = createMemo<Dictionary>(() => DICT[locale()]) @@ -213,6 +234,7 @@ export const { use: useLanguage, provider: LanguageProvider } = createSimpleCont return { ready, locale, + intl, locales: LOCALES, label, t, |
