From a3d4ea0de17ec208d73d27fdfe2f9a226db902f1 Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Thu, 5 Mar 2026 08:10:32 -0600 Subject: [PATCH] fix(app): locale error --- .../src/components/session-context-usage.tsx | 4 ++-- .../session/session-context-tab.tsx | 12 +++++----- .../components/session/session-new-view.tsx | 2 +- packages/app/src/context/language.tsx | 22 +++++++++++++++++++ 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) => ( <>
- {ctx().total.toLocaleString(language.locale())} + {ctx().total.toLocaleString(language.intl())} {language.t("context.usage.tokens")}
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() {
{breakdownLabel(segment.key)}
-
{segment.percent.toLocaleString(language.locale())}%
+
{segment.percent.toLocaleString(language.intl())}%
)} 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")}  {DateTime.fromMillis(project().time.updated ?? project().time.created) - .setLocale(language.locale()) + .setLocale(language.intl()) .toRelative()}
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 = { + 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 = { en: "language.en", zh: "language.zh", @@ -197,6 +217,7 @@ export const { use: useLanguage, provider: LanguageProvider } = createSimpleCont ) const locale = createMemo(() => normalizeLocale(store.locale)) + const intl = createMemo(() => INTL[locale()]) const dict = createMemo(() => DICT[locale()]) @@ -213,6 +234,7 @@ export const { use: useLanguage, provider: LanguageProvider } = createSimpleCont return { ready, locale, + intl, locales: LOCALES, label, t,