summaryrefslogtreecommitdiffhomepage
path: root/packages/app
diff options
context:
space:
mode:
authorAdam <[email protected]>2026-03-05 08:10:32 -0600
committerAdam <[email protected]>2026-03-05 08:10:36 -0600
commita3d4ea0de17ec208d73d27fdfe2f9a226db902f1 (patch)
tree21e5eb496214e5051063e8120204775cc7449747 /packages/app
parent152df2428df84a1029be2b472b4a840cd94c966d (diff)
downloadopencode-a3d4ea0de17ec208d73d27fdfe2f9a226db902f1.tar.gz
opencode-a3d4ea0de17ec208d73d27fdfe2f9a226db902f1.zip
fix(app): locale error
Diffstat (limited to 'packages/app')
-rw-r--r--packages/app/src/components/session-context-usage.tsx4
-rw-r--r--packages/app/src/components/session/session-context-tab.tsx12
-rw-r--r--packages/app/src/components/session/session-new-view.tsx2
-rw-r--r--packages/app/src/context/language.tsx22
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")}&nbsp;
<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,