diff options
| author | Adam <[email protected]> | 2026-01-20 10:43:43 -0600 |
|---|---|---|
| committer | Adam <[email protected]> | 2026-01-20 17:58:06 -0600 |
| commit | 0f2e8ea2b49fcab8c539449b51c40eea8215c2d3 (patch) | |
| tree | abdad87b9bb3e608d74c6ab478bf76a50b0f6cce /packages/app/src/components | |
| parent | be493e8be045f25f38e619b79730f437839752a8 (diff) | |
| download | opencode-0f2e8ea2b49fcab8c539449b51c40eea8215c2d3.tar.gz opencode-0f2e8ea2b49fcab8c539449b51c40eea8215c2d3.zip | |
wip(app): i18n
Diffstat (limited to 'packages/app/src/components')
5 files changed, 16 insertions, 7 deletions
diff --git a/packages/app/src/components/dialog-fork.tsx b/packages/app/src/components/dialog-fork.tsx index c4c52fc4d..17782f5ab 100644 --- a/packages/app/src/components/dialog-fork.tsx +++ b/packages/app/src/components/dialog-fork.tsx @@ -61,7 +61,10 @@ export const DialogFork: Component = () => { if (!sessionID) return const parts = sync.data.part[item.id] ?? [] - const restored = extractPromptFromParts(parts, { directory: sdk.directory }) + const restored = extractPromptFromParts(parts, { + directory: sdk.directory, + attachmentName: language.t("common.attachment"), + }) dialog.close() diff --git a/packages/app/src/components/dialog-select-model.tsx b/packages/app/src/components/dialog-select-model.tsx index ba42ffdd6..cdb299c79 100644 --- a/packages/app/src/components/dialog-select-model.tsx +++ b/packages/app/src/components/dialog-select-model.tsx @@ -38,8 +38,6 @@ const ModelList: Component<{ sortBy={(a, b) => a.name.localeCompare(b.name)} groupBy={(x) => x.provider.name} sortGroupsBy={(a, b) => { - if (a.category === "Recent" && b.category !== "Recent") return -1 - if (b.category === "Recent" && a.category !== "Recent") return 1 const aProvider = a.items[0].provider.id const bProvider = b.items[0].provider.id if (popularProviders.includes(aProvider) && !popularProviders.includes(bProvider)) return -1 diff --git a/packages/app/src/components/session-lsp-indicator.tsx b/packages/app/src/components/session-lsp-indicator.tsx index ac3a39997..dab92920e 100644 --- a/packages/app/src/components/session-lsp-indicator.tsx +++ b/packages/app/src/components/session-lsp-indicator.tsx @@ -1,9 +1,11 @@ import { createMemo, Show } from "solid-js" import { useSync } from "@/context/sync" +import { useLanguage } from "@/context/language" import { Tooltip } from "@opencode-ai/ui/tooltip" export function SessionLspIndicator() { const sync = useSync() + const language = useLanguage() const lspStats = createMemo(() => { const lsp = sync.data.lsp ?? [] @@ -15,7 +17,7 @@ export function SessionLspIndicator() { const tooltipContent = createMemo(() => { const lsp = sync.data.lsp ?? [] - if (lsp.length === 0) return "No LSP servers" + if (lsp.length === 0) return language.t("lsp.tooltip.none") return lsp.map((s) => s.name).join(", ") }) @@ -30,7 +32,9 @@ export function SessionLspIndicator() { "bg-icon-success-base": !lspStats().hasError && lspStats().connected > 0, }} /> - <span class="text-12-regular text-text-weak">{lspStats().connected} LSP</span> + <span class="text-12-regular text-text-weak"> + {language.t("lsp.label.connected", { count: lspStats().connected })} + </span> </div> </Tooltip> </Show> diff --git a/packages/app/src/components/session/session-sortable-tab.tsx b/packages/app/src/components/session/session-sortable-tab.tsx index 595ff9d6f..a4a434b05 100644 --- a/packages/app/src/components/session/session-sortable-tab.tsx +++ b/packages/app/src/components/session/session-sortable-tab.tsx @@ -7,6 +7,7 @@ import { Tooltip } from "@opencode-ai/ui/tooltip" import { Tabs } from "@opencode-ai/ui/tabs" import { getFilename } from "@opencode-ai/util/path" import { useFile } from "@/context/file" +import { useLanguage } from "@/context/language" export function FileVisual(props: { path: string; active?: boolean }): JSX.Element { return ( @@ -25,6 +26,7 @@ export function FileVisual(props: { path: string; active?: boolean }): JSX.Eleme export function SortableTab(props: { tab: string; onTabClose: (tab: string) => void }): JSX.Element { const file = useFile() + const language = useLanguage() const sortable = createSortable(props.tab) const path = createMemo(() => file.pathFromTab(props.tab)) return ( @@ -34,7 +36,7 @@ export function SortableTab(props: { tab: string; onTabClose: (tab: string) => v <Tabs.Trigger value={props.tab} closeButton={ - <Tooltip value="Close tab" placement="bottom"> + <Tooltip value={language.t("common.closeTab")} placement="bottom"> <IconButton icon="close" variant="ghost" onClick={() => props.onTabClose(props.tab)} /> </Tooltip> } diff --git a/packages/app/src/components/titlebar.tsx b/packages/app/src/components/titlebar.tsx index 272f85144..bbfdf895d 100644 --- a/packages/app/src/components/titlebar.tsx +++ b/packages/app/src/components/titlebar.tsx @@ -6,11 +6,13 @@ import { useTheme } from "@opencode-ai/ui/theme" import { useLayout } from "@/context/layout" import { usePlatform } from "@/context/platform" import { useCommand } from "@/context/command" +import { useLanguage } from "@/context/language" export function Titlebar() { const layout = useLayout() const platform = usePlatform() const command = useCommand() + const language = useLanguage() const theme = useTheme() const mac = createMemo(() => platform.platform === "desktop" && platform.os === "macos") @@ -93,7 +95,7 @@ export function Titlebar() { <TooltipKeybind class={web() ? "hidden xl:flex shrink-0 ml-14" : "hidden xl:flex shrink-0"} placement="bottom" - title="Toggle sidebar" + title={language.t("command.sidebar.toggle")} keybind={command.keybind("sidebar.toggle")} > <IconButton |
