Compare commits

...

10 Commits

Author SHA1 Message Date
opencode-agent[bot] edc8d1d91e chore: generate
containers / build (push) Waiting to run
deploy / deploy (push) Waiting to run
generate / generate (push) Waiting to run
nix-eval / nix-eval (push) Waiting to run
nix-hashes / compute-hash (blacksmith-4vcpu-ubuntu-2404, x86_64-linux) (push) Waiting to run
nix-hashes / compute-hash (blacksmith-4vcpu-ubuntu-2404-arm, aarch64-linux) (push) Waiting to run
nix-hashes / compute-hash (macos-15-intel, x86_64-darwin) (push) Waiting to run
nix-hashes / compute-hash (macos-latest, aarch64-darwin) (push) Waiting to run
nix-hashes / update-hashes (push) Blocked by required conditions
publish / version (push) Waiting to run
publish / build-cli (push) Blocked by required conditions
publish / sign-cli-windows (push) Blocked by required conditions
publish / build-electron (map[bun_install_flags:--os=darwin --cpu=arm64 host:macos-26 platform_flag:--mac --arm64 target:aarch64-apple-darwin]) (push) Blocked by required conditions
publish / build-electron (map[bun_install_flags:--os=darwin --cpu=x64 host:macos-26-intel platform_flag:--mac --x64 target:x86_64-apple-darwin]) (push) Blocked by required conditions
publish / build-electron (map[host:blacksmith-4vcpu-ubuntu-2404 platform_flag:--linux target:x86_64-unknown-linux-gnu]) (push) Blocked by required conditions
publish / build-electron (map[host:blacksmith-4vcpu-ubuntu-2404-arm platform_flag:--linux --arm64 target:aarch64-unknown-linux-gnu]) (push) Blocked by required conditions
publish / build-electron (map[host:blacksmith-4vcpu-windows-2025 platform_flag:--win target:x86_64-pc-windows-msvc]) (push) Blocked by required conditions
publish / build-electron (map[host:windows-2025 platform_flag:--win --arm64 target:aarch64-pc-windows-msvc]) (push) Blocked by required conditions
publish / publish (push) Blocked by required conditions
storybook / storybook build (push) Waiting to run
typecheck / typecheck (push) Waiting to run
2026-08-04 06:57:27 +00:00
opencode-agent[bot] e85735028c feat(i18n): localize hardcoded application copy (#40377)
Co-authored-by: Luke Parker <10430890+Hona@users.noreply.github.com>
2026-08-04 16:56:03 +10:00
opencode-agent[bot] 6c3299103c feat(app): add minimal RTL support (#40372)
Co-authored-by: Luke Parker <10430890+Hona@users.noreply.github.com>
2026-08-04 05:08:51 +00:00
opencode-agent[bot] 60e23fee16 chore: generate 2026-08-04 04:38:17 +00:00
opencode-agent[bot] 0c380f31ac feat(app): support locale plural rules (#40370)
Co-authored-by: Luke Parker <10430890+Hona@users.noreply.github.com>
2026-08-04 04:36:57 +00:00
opencode-agent[bot] 26aefa68f5 chore: update nix node_modules hashes 2026-08-04 04:30:14 +00:00
Luke Parker 638788f8d0 fix(app): move markdown parsing to worker (#40356) 2026-08-04 04:13:34 +00:00
opencode-agent[bot] b005a15a4a chore: generate 2026-08-04 03:58:49 +00:00
opencode-agent[bot] 0efa33cf33 feat(desktop): expand and audit locale translations (#40362)
Co-authored-by: Luke Parker <10430890+Hona@users.noreply.github.com>
2026-08-04 03:57:33 +00:00
opencode-agent[bot] 7e94ddafe8 fix(github): include pull request identity in context (#40363)
Co-authored-by: Aiden Cline <rekram1-node@users.noreply.github.com>
2026-08-03 22:18:52 -05:00
193 changed files with 20142 additions and 2589 deletions
+2 -9
View File
@@ -814,11 +814,8 @@
"diff": "catalog:",
"dompurify": "3.3.1",
"fuzzysort": "catalog:",
"katex": "0.16.27",
"luxon": "catalog:",
"marked": "catalog:",
"marked-katex-extension": "5.1.6",
"marked-shiki": "catalog:",
"morphdom": "2.7.8",
"motion": "12.34.5",
"remeda": "catalog:",
@@ -831,7 +828,6 @@
"devDependencies": {
"@tsconfig/node22": "catalog:",
"@types/bun": "catalog:",
"@types/katex": "0.16.7",
"@types/luxon": "catalog:",
"@typescript/native-preview": "catalog:",
"typescript": "catalog:",
@@ -991,7 +987,6 @@
"katex": "0.16.27",
"luxon": "catalog:",
"marked": "catalog:",
"marked-katex-extension": "5.1.6",
"marked-shiki": "catalog:",
"morphdom": "2.7.8",
"motion": "12.34.5",
@@ -1137,7 +1132,7 @@
"hono": "4.10.7",
"hono-openapi": "1.1.2",
"luxon": "3.6.1",
"marked": "17.0.6",
"marked": "18.0.7",
"marked-shiki": "1.2.1",
"opentui-spinner": "0.0.7",
"remeda": "2.26.0",
@@ -4318,9 +4313,7 @@
"markdown-table": ["markdown-table@3.0.4", "", {}, "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw=="],
"marked": ["marked@17.0.6", "", { "bin": { "marked": "bin/marked.js" } }, "sha512-gB0gkNafnonOw0obSTEGZTT86IuhILt2Wfx0mWH/1Au83kybTayroZ/V6nS25mN7u8ASy+5fMhgB3XPNrOZdmA=="],
"marked-katex-extension": ["marked-katex-extension@5.1.6", "", { "peerDependencies": { "katex": ">=0.16 <0.17", "marked": ">=4 <18" } }, "sha512-vYpLXwmlIDKILIhJtiRTgdyZRn5sEYdFBuTmbpjD7lbCIzg0/DWyK3HXIntN3Tp8zV6hvOUgpZNLWRCgWVc24A=="],
"marked": ["marked@18.0.7", "", { "bin": { "marked": "bin/marked.js" } }, "sha512-iDVQ5ldaiKXn6b2JroX5kgRfmwgqolW7NpaEzTl1k/2Zh1njIEN9yniyLV/mOvWwtsE8OGgkjsCYvijuPk1dtA=="],
"marked-shiki": ["marked-shiki@1.2.1", "", { "peerDependencies": { "marked": ">=7.0.0", "shiki": ">=1.0.0" } }, "sha512-yHxYQhPY5oYaIRnROn98foKhuClark7M373/VpLxiy5TrDu9Jd/LsMwo8w+U91Up4oDb9IXFrP0N1MFRz8W/DQ=="],
+4 -4
View File
@@ -1,8 +1,8 @@
{
"nodeModules": {
"x86_64-linux": "sha256-a7NyYa9vRUEqDfZNDPXXmFO58RDEgioyuGSl5CPBvxo=",
"aarch64-linux": "sha256-l4OJtSEllHvRhktjcaJYwkXBSaJvsIoyoLusbZfYMcM=",
"aarch64-darwin": "sha256-IIl0BQGs1/HLFh0auiQjiwfSQ2nfHcK2G2BAphYW59c=",
"x86_64-darwin": "sha256-vVeuPyd4ZIRYrHouphTuEb4rkRZLKKTAHe840jNh9rU="
"x86_64-linux": "sha256-GRjnvvyj37H36RqiCB7dz5ALAEwvw16izwuk1wsHEpU=",
"aarch64-linux": "sha256-0OIn1o6dpqIQ5XgIMzpenMCMqsYzraaYVJk+te5eINU=",
"aarch64-darwin": "sha256-sQSQcuox78d8wT1lsKYHqVBl11NusiszQ+gu2XYXZi8=",
"x86_64-darwin": "sha256-SINkhMRd4oM1zABSs1Uf3OAzxJ1lgcycl1U4fmi+baY="
}
}
+1 -1
View File
@@ -70,7 +70,7 @@
"hono-openapi": "1.1.2",
"fuzzysort": "3.1.0",
"luxon": "3.6.1",
"marked": "17.0.6",
"marked": "18.0.7",
"marked-shiki": "1.2.1",
"remend": "1.3.0",
"@playwright/test": "1.59.1",
+8
View File
@@ -19,6 +19,14 @@
- Always prefer `createStore` over multiple `createSignal` calls
## Localization
- NEVER hardcode user-visible English strings in production code. ALWAYS use an i18n key for visible copy, placeholders, accessible labels, tooltips, menus, dialogs, toasts, empty states, and displayed errors.
- When migrating existing copy to i18n, preserve the English text byte-for-byte unless the task explicitly requests a copy change.
- NEVER change existing English text or English keys to facilitate translation. English is intentional, designer-written source copy; adapt locale-specific translations and i18n mechanics around it.
- Do not translate from model knowledge alone. Verify terminology and grammar with Unicode CLDR locale/plural data, Microsoft Localization Style Guides and terminology, Apple localization/style guidance and localized platform UI, Mozilla localization style guides, Mozilla Pontoon, and the Firefox localization corpus at `github.com/mozilla-l10n/firefox-l10n`.
- Also use the relevant language authority or official dictionary for the locale (for example RAE/Fundéu, FranceTerme, Duden, TDK, Kotus/Kielitoimiston sanakirja, Språkrådet/Bokmålsordboka, Rada Języka Polskiego/PWN, the Russian and Arabic language academies, the Ukrainian Orthography, Taiwan MOE dictionaries, or the Royal Society of Thailand). Treat the English dictionary as the semantic source of truth and preserve placeholders, code identifiers, product names, and keyboard labels.
## Tool Calling
- ALWAYS USE PARALLEL TOOLS WHEN APPLICABLE.
@@ -2,7 +2,7 @@ import { expect, test } from "@playwright/test"
import { assistantMessage, setupTimeline, toolPart, userMessage } from "../performance/timeline-stability/fixture"
for (const profile of [
{ locale: "de", label: "Erkundet" },
{ locale: "de", label: "Erkundung abgeschlossen" },
{ locale: "ar", label: "تم الاستكشاف" },
] as const) {
test(`projects translated context status in ${profile.locale}`, async ({ page }) => {
+1
View File
@@ -6,6 +6,7 @@
"exports": {
".": "./src/index.ts",
"./desktop-menu": "./src/desktop-menu.ts",
"./i18n/desktop-native": "./src/i18n/desktop-native.ts",
"./updater": "./src/updater.ts",
"./wsl/types": "./src/wsl/types.ts",
"./vite": "./vite.js",
+14 -8
View File
@@ -3,7 +3,6 @@ import * as Sentry from "@sentry/solid"
import { I18nProvider } from "@opencode-ai/ui/context"
import { DialogProvider } from "@opencode-ai/ui/context/dialog"
import { FileComponentProvider } from "@opencode-ai/ui/context/file"
import { MarkedProvider } from "@opencode-ai/ui/context/marked"
import { File } from "@opencode-ai/session-ui/file"
import { Font } from "@opencode-ai/ui/font"
import { Splash } from "@opencode-ai/ui/logo"
@@ -234,7 +233,11 @@ function ResolvedDraftRoute(props: { draft: DraftTab }) {
function UiI18nBridge(props: ParentProps) {
const language = useLanguage()
return <I18nProvider value={{ locale: language.intl, t: language.t }}>{props.children}</I18nProvider>
return (
<I18nProvider value={{ locale: language.intl, t: language.t, plural: language.plural }}>
{props.children}
</I18nProvider>
)
}
function LayoutCompatibility(props: ParentProps) {
@@ -327,7 +330,7 @@ function DesktopCommands() {
if (platform.platform === "desktop" && platform.exportDebugLogs) {
commands.push({
id: "logs.export",
title: "Export logs",
title: language.t("command.logs.export"),
category: language.t("command.category.settings"),
onSelect: () => {
void platform.exportDebugLogs?.()
@@ -385,7 +388,12 @@ function DraftProviders(props: ParentProps) {
)
}
export function AppBaseProviders(props: ParentProps<{ locale?: Locale }>) {
export function AppBaseProviders(
props: ParentProps<{
locale?: Locale
onNativeTranslations?: Parameters<typeof LanguageProvider>[0]["onNativeTranslations"]
}>,
) {
return (
<MetaProvider>
<Font />
@@ -394,7 +402,7 @@ export function AppBaseProviders(props: ParentProps<{ locale?: Locale }>) {
void window.api?.setTitlebar?.({ mode, scheme })
}}
>
<LanguageProvider locale={props.locale}>
<LanguageProvider locale={props.locale} onNativeTranslations={props.onNativeTranslations}>
<UiI18nBridge>
<ErrorBoundary
fallback={(error) => {
@@ -405,9 +413,7 @@ export function AppBaseProviders(props: ParentProps<{ locale?: Locale }>) {
<QueryProvider>
<WslServersProvider>
<DialogProvider>
<MarkedProvider>
<FileComponentProvider component={File}>{props.children}</FileComponentProvider>
</MarkedProvider>
<FileComponentProvider component={File}>{props.children}</FileComponentProvider>
</DialogProvider>
</WslServersProvider>
</QueryProvider>
@@ -509,7 +509,12 @@ function ProviderConnection(props: {
const hint = suffix?.[1]
return {
label: suffix ? label.slice(0, -suffix[0].length) : label,
hint: hint ? hint[0].toUpperCase() + hint.slice(1) : value?.type === "key" ? "Browser" : undefined,
hint:
hint?.toLowerCase() === "headless"
? language.t("provider.connect.method.headless")
: hint?.toLowerCase() === "browser" || (!hint && value?.type === "key")
? language.t("provider.connect.method.browser")
: undefined,
}
}
@@ -131,7 +131,7 @@ export function CustomProviderForm(props: { autofocus?: boolean } = {}) {
const saveMutation = useMutation(() => ({
mutationFn: async (result: NonNullable<ReturnType<typeof validate>>) => {
if ((await serverSDK().protocol) !== "v1") throw new Error("Custom providers are unavailable on this server")
if ((await serverSDK().protocol) !== "v1") throw new Error(language.t("provider.custom.unavailable"))
const disabledProviders = serverSync().data.config.disabled_providers ?? []
const nextDisabled = disabledProviders.filter((id) => id !== result.providerID)
@@ -215,6 +215,7 @@ export default function FileTreeV2(props: {
<div
ref={setRoot}
data-component="file-tree-v2"
dir="ltr"
data-total-rows={live() ? rows().length : model()!.total}
class="group/file-tree-v2"
style={{ position: "relative", height: `${virtualizer.getTotalSize()}px` }}
+16 -26
View File
@@ -4,6 +4,7 @@ import { createSignal, Show } from "solid-js"
import { Drawer, DrawerClose, DrawerContent } from "@/components/ui/drawer"
import { usePlatform } from "@/context/platform"
import { useSettings } from "@/context/settings"
import { useLanguage } from "@/context/language"
import introducingTabsVideo from "@/assets/help/introducing-tabs.mp4"
import homeImage from "@/assets/help/home.png"
import tabsImage from "@/assets/help/tabs.png"
@@ -15,6 +16,7 @@ const showPopover = () => true
export function TabsInfoPopup() {
const settings = useSettings()
const platform = usePlatform()
const language = useLanguage()
const [drawerOpen, setDrawerOpen] = createSignal(false)
const windows = () => platform.platform === "desktop" && platform.os === "windows"
@@ -23,11 +25,11 @@ export function TabsInfoPopup() {
<Show when={settings.general.shouldDisplayTabsToast()}>
<div
class="fixed bottom-5 right-5 z-50 h-[240px] w-[192px] rounded-[8px] bg-v2-background-bg-base p-1 shadow-[var(--v2-elevation-floating)]"
aria-label="Introducing Tabs. Organize your work and active sessions with tabs"
aria-label={language.t("help.tabs.toast.ariaLabel")}
>
<button
type="button"
aria-label="Dismiss Tabs information"
aria-label={language.t("help.tabs.toast.dismiss")}
class="absolute top-3 right-3 z-10 size-5 flex items-center justify-center rounded-[4px] bg-[rgba(0,0,0,0.4)]"
onClick={settings.general.dismissTabsToast}
>
@@ -62,10 +64,10 @@ export function TabsInfoPopup() {
/>
<div class="absolute inset-x-0 bottom-0 flex w-full flex-col items-start gap-1.5 bg-[linear-gradient(180deg,rgba(0,0,0,0)_0%,#000000_100%)] px-3 py-5">
<p class="w-full select-none text-[13px] font-[530] leading-none tracking-[-0.04px] text-[#FFFFFF]">
Introducing Tabs
{language.t("help.tabs.title")}
</p>
<p class="w-full select-none text-[13px] font-[440] leading-[140%] tracking-[-0.04px] text-[#808080]">
Organize your work and active sessions with tabs
{language.t("help.tabs.description")}
</p>
</div>
</button>
@@ -89,7 +91,7 @@ export function TabsInfoPopup() {
type="button"
size="small"
variant="neutral"
aria-label="Close"
aria-label={language.t("common.close")}
icon={<IconV2 name="xmark-small" />}
class="absolute top-[10px] left-[-36px]"
/>
@@ -102,7 +104,7 @@ export function TabsInfoPopup() {
}}
>
<p class="min-h-0 min-w-0 flex-1 text-[13px] font-[530] leading-5 tracking-[-0.04px] tabular-nums text-v2-text-text-muted">
July 14
{language.t("help.tabs.date")}
</p>
<Show when={!windows()}>
<DrawerClose
@@ -110,36 +112,24 @@ export function TabsInfoPopup() {
type="button"
size="small"
variant="ghost-muted"
aria-label="Close"
aria-label={language.t("common.close")}
icon={<IconV2 name="xmark-small" />}
/>
</Show>
</div>
<div class="relative flex min-h-0 w-full flex-1 flex-col items-start gap-6 overflow-y-auto p-8">
<p class="w-full shrink-0 self-stretch text-[21px] font-[610] leading-6 tracking-[-0.37px] tabular-nums text-v2-text-text-base">
Introducing Tabs
{language.t("help.tabs.title")}
</p>
<div class="flex w-full flex-1 flex-col gap-4 text-[13px] font-[440] leading-5 tracking-[-0.04px] text-v2-text-text-base">
<p>OpenCode Desktop is now built around tabs.</p>
<p>{language.t("help.tabs.introduction")}</p>
<img src={tabsImage} alt="" class="aspect-video w-full rounded-[6px] object-cover" />
<p>
Start a new session in a tab, or open an existing session from any of your projects. Open a new tab when
you're starting something new, and close it when you're done.
</p>
<p>
Keeping a few tabs open makes it easier to organize your active sessions. Rename tabs to something
memorable if you plan to keep them around.
</p>
<p>
You'll find all your sessions and projects on the new Home screen. Selecting a session opens it in a tab.
</p>
<p>{language.t("help.tabs.sessions")}</p>
<p>{language.t("help.tabs.organize")}</p>
<p>{language.t("help.tabs.home")}</p>
<img src={homeImage} alt="" class="aspect-video w-full rounded-[6px] object-cover" />
<p>When you reopen the app, your tabs are still open.</p>
<p>
The new design does not support Git Worktrees yet, it's coming soon. So if you'd prefer to continue using
the previous layout, you can switch between layouts in Settings. Just keep in mind that the new layout
will become permanent in a few weeks.
</p>
<p>{language.t("help.tabs.persistence")}</p>
<p>{language.t("help.tabs.worktrees")}</p>
</div>
</div>
</DrawerContent>
@@ -137,7 +137,10 @@ export function usePromptInputV2Controller(props: PromptInputV2ControllerProps):
t: (key, params) => language.t(key as Parameters<typeof language.t>[0], params as never),
}),
)
const designPlaceholder = () => promptDesignPlaceholder(mode(), placeholder())
const designPlaceholder = () =>
promptDesignPlaceholder(mode(), placeholder(), (key, params) =>
language.t(key as Parameters<typeof language.t>[0], params as never),
)
const historyComments = () => {
const byID = new Map(comments.all().map((item) => [`${item.file}\n${item.id}`, item] as const))
+2 -1
View File
@@ -77,7 +77,7 @@ import { PromptPopover, type AtOption, type SlashCommand } from "./prompt-input/
import { PromptContextItems } from "./prompt-input/context-items"
import { PromptImageAttachments } from "./prompt-input/image-attachments"
import { PromptDragOverlay } from "./prompt-input/drag-overlay"
import { promptDesignPlaceholder, promptPlaceholder } from "./prompt-input/placeholder"
import { promptPlaceholder } from "./prompt-input/placeholder"
import { createPromptInputTransientState } from "./prompt-input/transient-state"
import { showToast } from "@/utils/toast"
import { ImagePreview } from "@opencode-ai/ui/image-preview"
@@ -1493,6 +1493,7 @@ export const PromptInput: Component<PromptInputProps> = (props) => {
}
onRemove={removeAttachment}
removeLabel={language.t("prompt.attachment.remove")}
fileLabel={language.t("ui.common.file")}
newLayoutDesigns={false}
/>
<div
@@ -16,6 +16,7 @@ type PromptImageAttachmentsProps = {
onOpen: (attachment: ImageAttachmentPart) => void
onRemove: (id: string) => void
removeLabel: string
fileLabel: string
newLayoutDesigns: boolean
comments?: PromptCommentItem[]
commentActive?: (item: PromptCommentItem) => boolean
@@ -94,7 +95,7 @@ export const PromptImageAttachments: Component<PromptImageAttachmentsProps> = (p
}
>
<AttachmentCardV2 title={attachment.filename}>
{typeLabel(attachment.filename, attachment.mime)}
{typeLabel(attachment.filename, attachment.mime, props.fileLabel)}
</AttachmentCardV2>
</Show>
}
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test"
import { promptPlaceholder } from "./placeholder"
import { promptDesignPlaceholder, promptPlaceholder } from "./placeholder"
describe("promptPlaceholder", () => {
const t = (key: string, params?: Record<string, string>) => `${key}${params?.example ? `:${params.example}` : ""}`
@@ -46,3 +46,18 @@ describe("promptPlaceholder", () => {
expect(value).toBe("prompt.placeholder.simple")
})
})
describe("promptDesignPlaceholder", () => {
const t = (key: string, params?: Record<string, string>) => {
if (key !== "ui.promptInput.placeholder.normal") return key
return `Ask anything, ${params?.slash} for commands, ${params?.at} for context...`
}
test("composes the design placeholder from localized fragments", () => {
expect(promptDesignPlaceholder("normal", "fallback", t)).toBe("Ask anything, / for commands, @ for context...")
})
test("preserves the shell placeholder", () => {
expect(promptDesignPlaceholder("shell", "Enter shell command...", t)).toBe("Enter shell command...")
})
})
@@ -14,7 +14,11 @@ export function promptPlaceholder(input: PromptPlaceholderInput) {
return input.t("prompt.placeholder.normal", { example: input.example })
}
export function promptDesignPlaceholder(mode: PromptPlaceholderInput["mode"], placeholder: string) {
export function promptDesignPlaceholder(
mode: PromptPlaceholderInput["mode"],
placeholder: string,
t: PromptPlaceholderInput["t"],
) {
if (mode === "shell") return placeholder
return "Ask anything, / for commands, @ for context..."
return t("ui.promptInput.placeholder.normal", { slash: "/", at: "@" })
}
+3 -3
View File
@@ -573,9 +573,8 @@ export const Terminal = (props: TerminalProps) => {
if (!result) return
if (result.response.status === 200 && result.data?.ticket) return result.data.ticket
if (result.response.status === 404 || result.response.status === 405) return
if (result.response.status === 403)
throw new Error("PTY connect ticket rejected by origin or CSRF checks. Check the server CORS config.")
throw new Error(`PTY connect ticket failed with ${result.response.status}`)
if (result.response.status === 403) throw new Error(language.t("terminal.connectTicket.csrfError"))
throw new Error(language.t("terminal.connectTicket.statusError", { status: result.response.status }))
}
// return sdk()
// .api.pty.connectToken({
@@ -742,6 +741,7 @@ export const Terminal = (props: TerminalProps) => {
<div
ref={container}
data-component="terminal"
dir="ltr"
data-prevent-autofocus
tabIndex={-1}
style={{ "background-color": terminalColors().background }}
@@ -5,6 +5,7 @@ import { createMutation } from "@tanstack/solid-query"
import { IconButtonV2 } from "@opencode-ai/ui/v2/icon-button-v2"
import { Icon as IconV2 } from "@opencode-ai/ui/v2/icon"
import { useGlobal } from "@/context/global"
import { useLanguage } from "@/context/language"
import { ServerConnection, serverName } from "@/context/server"
import { displayName, projectForSession } from "@/pages/layout/helpers"
import { SessionTabAvatar } from "@/pages/layout/session-tab-avatar"
@@ -323,6 +324,7 @@ export function DraftTabItem(props: {
pressed?: boolean
hidden?: boolean
}) {
const language = useLanguage()
const closeTab = (event: MouseEvent) => {
event.preventDefault()
event.stopPropagation()
@@ -397,7 +399,7 @@ export function DraftTabItem(props: {
class="hover-reveal relative z-10 group-hover:opacity-100 group-data-[active=true]:opacity-100 group-data-[editing=true]:opacity-100"
onClick={closeTab}
icon={<IconV2 name="xmark-small" />}
aria-label="Close tab"
aria-label={language.t("common.closeTab")}
/>
</div>
</div>
+2 -2
View File
@@ -113,9 +113,9 @@ export function Titlebar(props: { update?: TitlebarUpdate; debugTools?: { visibl
return {
visible: version !== undefined || installing,
installing,
label: "Update",
label: language.t("titlebar.update"),
ariaLabel: language.t("toast.update.action.installRestart"),
title: version ? `Update ${version}` : undefined,
title: version ? language.t("titlebar.updateVersion", { version }) : undefined,
onInstall: () => props.update?.install(),
}
})
@@ -8,6 +8,7 @@ import { Icon as IconV2 } from "@opencode-ai/ui/v2/icon"
import { useCommand } from "@/context/command"
import { DESKTOP_MENU, desktopMenuVisible, type DesktopMenuAction, type DesktopMenuEntry } from "@/desktop-menu"
import { usePlatform } from "@/context/platform"
import { useLanguage } from "@/context/language"
export function WindowsAppMenu(props: {
command: ReturnType<typeof useCommand>
@@ -15,6 +16,7 @@ export function WindowsAppMenu(props: {
variant?: "legacy" | "v2"
}) {
let lastFocused: HTMLElement | undefined
const language = useLanguage()
const rememberFocus = () => {
const active = document.activeElement
@@ -58,7 +60,7 @@ export function WindowsAppMenu(props: {
variant="ghost-muted"
size="large"
icon={<IconV2 name="menu" />}
aria-label="OpenCode menu"
aria-label={language.t("desktop.menu.ariaLabel")}
onPointerDown={rememberFocus}
onKeyDown={rememberFocus}
/>
@@ -69,7 +71,7 @@ export function WindowsAppMenu(props: {
icon="menu"
variant="ghost"
class="titlebar-icon rounded-md shrink-0"
aria-label="OpenCode menu"
aria-label={language.t("desktop.menu.ariaLabel")}
onPointerDown={rememberFocus}
onKeyDown={rememberFocus}
/>
@@ -79,7 +81,7 @@ export function WindowsAppMenu(props: {
<DropdownMenu.Group>
<DropdownMenu.GroupLabel class="desktop-app-menu-heading">OpenCode</DropdownMenu.GroupLabel>
{DESKTOP_MENU.filter((menu) => desktopMenuVisible(menu, "windows")).map((menu) => (
<DesktopMenuSubmenu label={menu.label}>
<DesktopMenuSubmenu label={language.t(menu.labelKey)}>
{menu.items
?.filter((entry) => desktopMenuVisible(entry, "windows"))
.map((entry) =>
@@ -87,7 +89,7 @@ export function WindowsAppMenu(props: {
<DropdownMenu.Separator />
) : (
<DesktopMenuItem
label={entry.label ?? ""}
label={entry.labelKey ? language.t(entry.labelKey) : ""}
keybind={entry.command ? props.command.keybind(entry.command) : entry.accelerator?.windows}
disabled={entry.command ? commandDisabled(entry.command) : false}
onSelect={() => runEntry(entry)}
+2 -2
View File
@@ -83,7 +83,7 @@ export const ACCEPTED_FILE_EXTENSIONS = Array.from(
),
).sort()
export function filePickerFilters(ext?: string[]) {
export function filePickerFilters(name: string, ext?: string[]) {
if (!ext || ext.length === 0) return undefined
return [{ name: "Files", extensions: ext }]
return [{ name, extensions: ext }]
}
+101 -45
View File
@@ -2,58 +2,36 @@ import * as i18n from "@solid-primitives/i18n"
import { createEffect, createMemo, createResource } from "solid-js"
import { createStore } from "solid-js/store"
import { createSimpleContext } from "@opencode-ai/ui/context"
import { pluralCategory, type UiI18nPluralKey } from "@opencode-ai/ui/context/i18n"
import { Persist, persisted } from "@/utils/persist"
import { dict as en } from "@/i18n/en"
import { dict as uiEn } from "@opencode-ai/ui/i18n/en"
import {
createDesktopNativeBundle,
DESKTOP_NATIVE_ENGLISH,
DESKTOP_NATIVE_LOCALES,
type DesktopNativeBundle,
type DesktopNativeLocale,
} from "@/i18n/desktop-native"
export type Locale =
| "en"
| "zh"
| "zht"
| "ko"
| "de"
| "es"
| "fr"
| "da"
| "ja"
| "pl"
| "ru"
| "uk"
| "ar"
| "no"
| "br"
| "th"
| "bs"
| "tr"
export type Locale = DesktopNativeLocale
const RTL_LOCALES: ReadonlySet<Locale> = new Set(["ar", "ur", "pa"])
type RawDictionary = typeof en & typeof uiEn
type Dictionary = i18n.Flatten<RawDictionary>
type PluralKey =
| UiI18nPluralKey
| "session.question.pending"
| "session.followupDock.summary"
| "session.revertDock.summary"
type Source = { dict: Record<string, string> }
function cookie(locale: Locale) {
return `oc_locale=${encodeURIComponent(locale)}; Path=/; Max-Age=31536000; SameSite=Lax`
}
const LOCALES: readonly Locale[] = [
"en",
"zh",
"zht",
"ko",
"de",
"es",
"fr",
"da",
"ja",
"pl",
"ru",
"uk",
"bs",
"ar",
"no",
"br",
"th",
"tr",
]
const LOCALES: readonly Locale[] = DESKTOP_NATIVE_LOCALES
const INTL: Record<Locale, string> = {
en: "en",
@@ -74,9 +52,19 @@ const INTL: Record<Locale, string> = {
th: "th",
bs: "bs",
tr: "tr",
hi: "hi-IN",
nl: "nl-NL",
id: "id-ID",
vi: "vi-VN",
it: "it-IT",
ur: "ur-PK",
pa: "pa-Arab-PK",
az: "az-Latn-AZ",
fi: "fi-FI",
sv: "sv-SE",
}
const LABEL_KEY: Record<Locale, keyof Dictionary> = {
const LABEL_KEY: Partial<Record<Locale, keyof Dictionary>> = {
en: "language.en",
zh: "language.zh",
zht: "language.zht",
@@ -97,6 +85,19 @@ const LABEL_KEY: Record<Locale, keyof Dictionary> = {
tr: "language.tr",
}
const LABEL: Partial<Record<Locale, string>> = {
hi: "हिन्दी",
nl: "Nederlands",
id: "Bahasa Indonesia",
vi: "Tiếng Việt",
it: "Italiano",
ur: "اردو",
pa: "پنجابی",
az: "Azərbaycanca",
fi: "Suomi",
sv: "Svenska",
}
const base = i18n.flatten({ ...en, ...uiEn })
const dicts = new Map<Locale, Dictionary>([["en", base]])
@@ -121,6 +122,16 @@ const loaders: Record<Exclude<Locale, "en">, () => Promise<Dictionary>> = {
th: () => merge(import("@/i18n/th"), import("@opencode-ai/ui/i18n/th")),
bs: () => merge(import("@/i18n/bs"), import("@opencode-ai/ui/i18n/bs")),
tr: () => merge(import("@/i18n/tr"), import("@opencode-ai/ui/i18n/tr")),
hi: () => merge(import("@/i18n/hi"), import("@opencode-ai/ui/i18n/hi")),
nl: () => merge(import("@/i18n/nl"), import("@opencode-ai/ui/i18n/nl")),
id: () => merge(import("@/i18n/id"), import("@opencode-ai/ui/i18n/id")),
vi: () => merge(import("@/i18n/vi"), import("@opencode-ai/ui/i18n/vi")),
it: () => merge(import("@/i18n/it"), import("@opencode-ai/ui/i18n/it")),
ur: () => merge(import("@/i18n/ur"), import("@opencode-ai/ui/i18n/ur")),
pa: () => merge(import("@/i18n/pa"), import("@opencode-ai/ui/i18n/pa")),
az: () => merge(import("@/i18n/az"), import("@opencode-ai/ui/i18n/az")),
fi: () => merge(import("@/i18n/fi"), import("@opencode-ai/ui/i18n/fi")),
sv: () => merge(import("@/i18n/sv"), import("@opencode-ai/ui/i18n/sv")),
}
function loadDict(locale: Locale) {
@@ -140,7 +151,12 @@ export function loadLocaleDict(locale: Locale) {
const localeMatchers: Array<{ locale: Locale; match: (language: string) => boolean }> = [
{ locale: "en", match: (language) => language.startsWith("en") },
{ locale: "zht", match: (language) => language.startsWith("zh") && language.includes("hant") },
{
locale: "zht",
match: (language) =>
language.startsWith("zh") &&
(language.includes("hant") || language.includes("-tw") || language.includes("-hk") || language.includes("-mo")),
},
{ locale: "zh", match: (language) => language.startsWith("zh") },
{ locale: "ko", match: (language) => language.startsWith("ko") },
{ locale: "de", match: (language) => language.startsWith("de") },
@@ -160,6 +176,22 @@ const localeMatchers: Array<{ locale: Locale; match: (language: string) => boole
{ locale: "th", match: (language) => language.startsWith("th") },
{ locale: "bs", match: (language) => language.startsWith("bs") },
{ locale: "tr", match: (language) => language.startsWith("tr") },
{ locale: "hi", match: (language) => language.startsWith("hi") },
{ locale: "nl", match: (language) => language.startsWith("nl") },
{ locale: "id", match: (language) => language.startsWith("id") },
{ locale: "vi", match: (language) => language.startsWith("vi") },
{ locale: "it", match: (language) => language.startsWith("it") },
{ locale: "ur", match: (language) => language.startsWith("ur") },
{
locale: "pa",
match: (language) => language.startsWith("pa") && (language.includes("arab") || language.includes("-pk")),
},
{
locale: "az",
match: (language) => language.startsWith("az") && !language.includes("arab") && !language.includes("cyrl"),
},
{ locale: "fi", match: (language) => language.startsWith("fi") },
{ locale: "sv", match: (language) => language.startsWith("sv") },
]
function detectLocale(): Locale {
@@ -199,7 +231,7 @@ if (warm !== "en") void loadDict(warm)
export const { use: useLanguage, provider: LanguageProvider } = createSimpleContext({
name: "Language",
gate: false,
init: (props: { locale?: Locale }) => {
init: (props: { locale?: Locale; onNativeTranslations?: (bundle: DesktopNativeBundle) => void }) => {
const initial = props.locale ?? readStoredLocale() ?? detectLocale()
const [store, setStore, _, ready] = persisted(
Persist.global("language", ["language.v1"]),
@@ -220,12 +252,35 @@ export const { use: useLanguage, provider: LanguageProvider } = createSimpleCont
params?: Record<string, string | number | boolean>,
) => string
const label = (value: Locale) => t(LABEL_KEY[value])
const plural = (key: PluralKey, count: number, params?: Record<string, string | number | boolean>) => {
const category = pluralCategory(intl(), count)
const current = (dict.loading ? base : (dict() ?? base)) as Record<string, string>
const candidate = `${key}.${category}`
const fallback = `${key}.other`
return i18n.resolveTemplate(current[candidate] ?? current[fallback] ?? fallback, { ...params, count })
}
const label = (value: Locale) => {
const key = LABEL_KEY[value]
if (key) return t(key)
return LABEL[value] ?? value
}
createEffect(() => {
if (typeof document !== "object") return
document.documentElement.lang = locale()
document.cookie = cookie(locale())
const value = locale()
document.documentElement.lang = value
document.documentElement.dir = RTL_LOCALES.has(value) ? "rtl" : "ltr"
document.cookie = cookie(value)
})
createEffect(() => {
if (!props.onNativeTranslations || dict.loading) return
const current = dict()
if (!current) return
props.onNativeTranslations(
createDesktopNativeBundle(locale(), (key) => current[key] ?? DESKTOP_NATIVE_ENGLISH[key]),
)
})
return {
@@ -235,6 +290,7 @@ export const { use: useLanguage, provider: LanguageProvider } = createSimpleCont
locales: LOCALES,
label,
t,
plural,
setLocale(next: Locale) {
setStore("locale", normalizeLocale(next))
},
+10 -4
View File
@@ -6,6 +6,7 @@ import type { FileSelection } from "@/context/file"
import { Persist, persisted } from "@/utils/persist"
import type { ServerScope } from "@/utils/server-scope"
import type { BlobReference } from "@/utils/draft-store"
import type { Platform } from "@/context/platform"
interface PartBase {
content: string
@@ -236,13 +237,18 @@ function createPromptStateValue(store: PromptStore, setStore: SetStoreFunction<P
return value
}
function createPersistedPrompt(target: ReturnType<typeof promptTarget>, initial?: InitialPrompt) {
const [store, setStore, _, ready] = persisted(target, createStore<PromptStore>(promptStore(initial)))
function createPersistedPrompt(target: ReturnType<typeof promptTarget>, initial?: InitialPrompt, platform?: Platform) {
const [store, setStore, _, ready] = persisted(target, createStore<PromptStore>(promptStore(initial)), platform)
return { ready, ...createPromptStateValue(store, setStore) }
}
export function createPromptSession(serverScope: ServerScope, scope: PromptScope, initial?: InitialPrompt) {
return createPersistedPrompt(promptTarget(serverScope, scope), initial)
export function createPromptSession(
serverScope: ServerScope,
scope: PromptScope,
initial?: InitialPrompt,
platform?: Platform,
) {
return createPersistedPrompt(promptTarget(serverScope, scope), initial, platform)
}
export function createDraftPromptSession(draftID: string, initial?: InitialPrompt) {
+11 -1
View File
@@ -4,10 +4,20 @@ import { DESKTOP_MENU } from "./desktop-menu"
describe("desktop menu", () => {
test("exports logs through the desktop command registry", () => {
const items = DESKTOP_MENU.flatMap((menu) => menu.items ?? []).filter(
(item) => item.type === "item" && item.label === "Export Logs...",
(item) => item.type === "item" && item.labelKey === "desktop.menu.exportLogs",
)
expect(items).toHaveLength(2)
expect(items.every((item) => item.type === "item" && item.command === "logs.export" && !item.action)).toBe(true)
})
test("provides translated labels for role-backed entries", () => {
const windowMenu = DESKTOP_MENU.find((menu) => menu.role === "windowMenu")
const roleItems = DESKTOP_MENU.flatMap((menu) => menu.items ?? []).filter(
(item) => item.type === "item" && item.role && item.labelKey,
)
expect(windowMenu?.labelKey).toBe("desktop.menu.window")
expect(roleItems.length).toBeGreaterThan(0)
})
})
+130 -51
View File
@@ -1,3 +1,5 @@
import type { DesktopNativeKey } from "./i18n/desktop-native"
export type DesktopMenuPlatform = "macos" | "windows"
export type DesktopMenuAction =
@@ -44,7 +46,7 @@ export type DesktopMenuRole =
export type DesktopMenuItem = {
type: "item"
label?: string
labelKey?: DesktopNativeKey
command?: string
action?: DesktopMenuAction
role?: DesktopMenuRole
@@ -63,7 +65,7 @@ export type DesktopMenuEntry = DesktopMenuItem | DesktopMenuSeparator
export type DesktopMenu = {
id: string
label: string
labelKey: DesktopNativeKey
role?: DesktopMenuRole
items?: DesktopMenuEntry[]
platforms?: DesktopMenuPlatform[]
@@ -72,15 +74,20 @@ export type DesktopMenu = {
export const DESKTOP_MENU: DesktopMenu[] = [
{
id: "app",
label: "OpenCode",
labelKey: "desktop.menu.app",
platforms: ["macos"],
items: [
{ type: "item", role: "about" },
{ type: "item", label: "Check for Updates...", action: "app.checkForUpdates", enabled: "updater" },
{ type: "item", label: "Settings", command: "settings.open", accelerator: { macos: "Cmd+," } },
{ type: "item", label: "Reload Webview", action: "view.reload" },
{ type: "item", label: "Restart", action: "app.relaunch" },
{ type: "item", label: "Export Logs...", command: "logs.export" },
{
type: "item",
labelKey: "desktop.menu.checkForUpdates",
action: "app.checkForUpdates",
enabled: "updater",
},
{ type: "item", labelKey: "desktop.menu.settings", command: "settings.open", accelerator: { macos: "Cmd+," } },
{ type: "item", labelKey: "desktop.menu.reloadWebview", action: "view.reload" },
{ type: "item", labelKey: "desktop.menu.restart", action: "app.relaunch" },
{ type: "item", labelKey: "desktop.menu.exportLogs", command: "logs.export" },
{ type: "separator" },
{ type: "item", role: "hide" },
{ type: "item", role: "hideOthers" },
@@ -91,46 +98,81 @@ export const DESKTOP_MENU: DesktopMenu[] = [
},
{
id: "file",
label: "File",
labelKey: "desktop.menu.file",
items: [
{
type: "item",
label: "New Session",
labelKey: "desktop.menu.newSession",
command: "session.new",
accelerator: { macos: "Shift+Cmd+S" },
},
{ type: "item", label: "Open Project...", command: "project.open", accelerator: { macos: "Cmd+O" } },
{
type: "item",
label: "Settings",
labelKey: "desktop.menu.openProject",
command: "project.open",
accelerator: { macos: "Cmd+O" },
},
{
type: "item",
labelKey: "desktop.menu.settings",
command: "settings.open",
accelerator: { windows: "Ctrl+," },
platforms: ["windows"],
},
{
type: "item",
label: "New Window",
labelKey: "desktop.menu.newWindow",
action: "window.new",
accelerator: { macos: "Cmd+Shift+N", windows: "Ctrl+Shift+N" },
},
{ type: "separator" },
{ type: "item", label: "Close Window", action: "window.close", role: "close" },
{ type: "item", labelKey: "desktop.menu.closeWindow", action: "window.close", role: "close" },
],
},
{
id: "edit",
label: "Edit",
labelKey: "desktop.menu.edit",
items: [
{ type: "item", label: "Undo", action: "edit.undo", role: "undo", accelerator: { windows: "Ctrl+Z" } },
{ type: "item", label: "Redo", action: "edit.redo", role: "redo", accelerator: { windows: "Ctrl+Y" } },
{ type: "separator" },
{ type: "item", label: "Cut", action: "edit.cut", role: "cut", accelerator: { windows: "Ctrl+X" } },
{ type: "item", label: "Copy", action: "edit.copy", role: "copy", accelerator: { windows: "Ctrl+C" } },
{ type: "item", label: "Paste", action: "edit.paste", role: "paste", accelerator: { windows: "Ctrl+V" } },
{ type: "item", label: "Delete", action: "edit.delete" },
{
type: "item",
label: "Select All",
labelKey: "desktop.menu.undo",
action: "edit.undo",
role: "undo",
accelerator: { windows: "Ctrl+Z" },
},
{
type: "item",
labelKey: "desktop.menu.redo",
action: "edit.redo",
role: "redo",
accelerator: { windows: "Ctrl+Y" },
},
{ type: "separator" },
{
type: "item",
labelKey: "desktop.menu.cut",
action: "edit.cut",
role: "cut",
accelerator: { windows: "Ctrl+X" },
},
{
type: "item",
labelKey: "desktop.menu.copy",
action: "edit.copy",
role: "copy",
accelerator: { windows: "Ctrl+C" },
},
{
type: "item",
labelKey: "desktop.menu.paste",
action: "edit.paste",
role: "paste",
accelerator: { windows: "Ctrl+V" },
},
{ type: "item", labelKey: "desktop.menu.delete", action: "edit.delete" },
{
type: "item",
labelKey: "desktop.menu.selectAll",
action: "edit.selectAll",
role: "selectAll",
accelerator: { windows: "Ctrl+A" },
@@ -139,47 +181,84 @@ export const DESKTOP_MENU: DesktopMenu[] = [
},
{
id: "view",
label: "View",
labelKey: "desktop.menu.view",
items: [
{ type: "item", label: "Toggle Sidebar", command: "sidebar.toggle" },
{ type: "item", label: "Toggle Terminal", command: "terminal.toggle", accelerator: { macos: "Ctrl+`" } },
{ type: "item", label: "Toggle File Tree", command: "fileTree.toggle" },
{ type: "item", labelKey: "desktop.menu.toggleSidebar", command: "sidebar.toggle" },
{
type: "item",
labelKey: "desktop.menu.toggleTerminal",
command: "terminal.toggle",
accelerator: { macos: "Ctrl+`" },
},
{ type: "item", labelKey: "desktop.menu.toggleFileTree", command: "fileTree.toggle" },
{ type: "separator" },
{ type: "item", label: "Reload", action: "view.reload", role: "reload" },
{ type: "item", label: "Toggle Developer Tools", action: "view.toggleDevTools", role: "toggleDevTools" },
{ type: "item", labelKey: "desktop.menu.reload", action: "view.reload", role: "reload" },
{
type: "item",
labelKey: "desktop.menu.toggleDeveloperTools",
action: "view.toggleDevTools",
role: "toggleDevTools",
},
{ type: "separator" },
{
type: "item",
label: "Actual Size",
labelKey: "desktop.menu.actualSize",
action: "view.resetZoom",
role: "resetZoom",
accelerator: { windows: "Ctrl+0" },
},
{ type: "item", label: "Zoom In", action: "view.zoomIn", role: "zoomIn", accelerator: { windows: "Ctrl++" } },
{ type: "item", label: "Zoom Out", action: "view.zoomOut", role: "zoomOut", accelerator: { windows: "Ctrl+-" } },
{
type: "item",
labelKey: "desktop.menu.zoomIn",
action: "view.zoomIn",
role: "zoomIn",
accelerator: { windows: "Ctrl++" },
},
{
type: "item",
labelKey: "desktop.menu.zoomOut",
action: "view.zoomOut",
role: "zoomOut",
accelerator: { windows: "Ctrl+-" },
},
{ type: "separator" },
{ type: "item", label: "Toggle Full Screen", action: "view.toggleFullscreen", role: "togglefullscreen" },
{
type: "item",
labelKey: "desktop.menu.toggleFullScreen",
action: "view.toggleFullscreen",
role: "togglefullscreen",
},
],
},
{
id: "go",
label: "Go",
labelKey: "desktop.menu.go",
items: [
{ type: "item", label: "Back", command: "common.goBack", accelerator: { macos: "Cmd+[" } },
{ type: "item", label: "Forward", command: "common.goForward", accelerator: { macos: "Cmd+]" } },
{ type: "separator" },
{ type: "item", label: "Previous Session", command: "session.previous", accelerator: { macos: "Option+Up" } },
{ type: "item", label: "Next Session", command: "session.next", accelerator: { macos: "Option+Down" } },
{ type: "item", labelKey: "desktop.menu.back", command: "common.goBack", accelerator: { macos: "Cmd+[" } },
{ type: "item", labelKey: "desktop.menu.forward", command: "common.goForward", accelerator: { macos: "Cmd+]" } },
{ type: "separator" },
{
type: "item",
label: "Previous Project",
labelKey: "desktop.menu.previousSession",
command: "session.previous",
accelerator: { macos: "Option+Up" },
},
{
type: "item",
labelKey: "desktop.menu.nextSession",
command: "session.next",
accelerator: { macos: "Option+Down" },
},
{ type: "separator" },
{
type: "item",
labelKey: "desktop.menu.previousProject",
command: "project.previous",
accelerator: { macos: "Cmd+Option+Up" },
},
{
type: "item",
label: "Next Project",
labelKey: "desktop.menu.nextProject",
command: "project.next",
accelerator: { macos: "Cmd+Option+Down" },
},
@@ -187,31 +266,31 @@ export const DESKTOP_MENU: DesktopMenu[] = [
},
{
id: "window",
label: "Window",
labelKey: "desktop.menu.window",
role: "windowMenu",
items: [
{ type: "item", label: "Minimize", action: "window.minimize" },
{ type: "item", label: "Maximize", action: "window.toggleMaximize" },
{ type: "item", labelKey: "desktop.menu.minimize", action: "window.minimize" },
{ type: "item", labelKey: "desktop.menu.maximize", action: "window.toggleMaximize" },
{ type: "separator" },
{ type: "item", label: "Close Window", action: "window.close" },
{ type: "item", labelKey: "desktop.menu.closeWindow", action: "window.close" },
],
},
{
id: "help",
label: "Help",
labelKey: "desktop.menu.help",
items: [
{ type: "item", label: "OpenCode Documentation", href: "https://opencode.ai/docs" },
{ type: "item", label: "Support Forum", href: "https://discord.com/invite/opencode" },
{ type: "item", label: "Export Logs...", command: "logs.export" },
{ type: "item", labelKey: "desktop.menu.documentation", href: "https://opencode.ai/docs" },
{ type: "item", labelKey: "desktop.menu.supportForum", href: "https://discord.com/invite/opencode" },
{ type: "item", labelKey: "desktop.menu.exportLogs", command: "logs.export" },
{ type: "separator" },
{
type: "item",
label: "Share Feedback",
labelKey: "desktop.menu.shareFeedback",
href: "https://github.com/anomalyco/opencode/issues/new?template=feature_request.yml",
},
{
type: "item",
label: "Report a Bug",
labelKey: "desktop.menu.reportBug",
href: "https://github.com/anomalyco/opencode/issues/new?template=bug_report.yml",
},
],
+223 -82
View File
@@ -1,4 +1,102 @@
export const dict = {
"desktop.menu.app": "OpenCode",
"desktop.menu.file": "ملف",
"desktop.menu.edit": "تحرير",
"desktop.menu.view": "عرض",
"desktop.menu.go": "انتقال",
"desktop.menu.window": "نافذة",
"desktop.menu.help": "مساعدة",
"desktop.menu.checkForUpdates": "التحقق من وجود تحديثات...",
"desktop.menu.settings": "الإعدادات",
"desktop.menu.reloadWebview": "إعادة تحميل Webview",
"desktop.menu.restart": "إعادة التشغيل",
"desktop.menu.exportLogs": "تصدير السجلات...",
"desktop.menu.newSession": "جلسة جديدة",
"desktop.menu.openProject": "فتح مشروع...",
"desktop.menu.newWindow": "نافذة جديدة",
"desktop.menu.closeWindow": "إغلاق النافذة",
"desktop.menu.undo": "تراجع",
"desktop.menu.redo": "إعادة",
"desktop.menu.cut": "قص",
"desktop.menu.copy": "نسخ",
"desktop.menu.paste": "لصق",
"desktop.menu.delete": "حذف",
"desktop.menu.selectAll": "تحديد الكل",
"desktop.menu.toggleSidebar": "إظهار الشريط الجانبي أو إخفاؤه",
"desktop.menu.toggleTerminal": "إظهار المحطة الطرفية أو إخفاؤها",
"desktop.menu.toggleFileTree": "إظهار شجرة الملفات أو إخفاؤها",
"desktop.menu.reload": "إعادة التحميل",
"desktop.menu.toggleDeveloperTools": "إظهار أدوات المطور أو إخفاؤها",
"desktop.menu.actualSize": "الحجم الفعلي",
"desktop.menu.zoomIn": "تكبير",
"desktop.menu.zoomOut": "تصغير",
"desktop.menu.toggleFullScreen": "الدخول إلى ملء الشاشة أو الخروج منه",
"desktop.menu.back": "رجوع",
"desktop.menu.forward": "تقدم",
"desktop.menu.previousSession": "الجلسة السابقة",
"desktop.menu.nextSession": "الجلسة التالية",
"desktop.menu.previousProject": "المشروع السابق",
"desktop.menu.nextProject": "المشروع التالي",
"desktop.menu.minimize": "تصغير النافذة",
"desktop.menu.maximize": "تكبير النافذة",
"desktop.menu.documentation": "وثائق OpenCode",
"desktop.menu.supportForum": "منتدى الدعم",
"desktop.menu.shareFeedback": "إرسال الملاحظات",
"desktop.menu.reportBug": "الإبلاغ عن خلل",
"desktop.menu.ariaLabel": "قائمة OpenCode",
"desktop.updater.dialog.checkFailed.message": "فشل التحقق من وجود تحديثات.",
"desktop.updater.dialog.checkFailed.title": "خطأ في التحديث",
"desktop.updater.dialog.upToDate.message": "لديك أحدث إصدار.",
"desktop.updater.dialog.upToDate.title": "لا توجد تحديثات",
"desktop.updater.dialog.ready.message": "تم تنزيل التحديث {{version}}. هل تريد إعادة التشغيل الآن؟",
"desktop.updater.dialog.ready.title": "التحديث جاهز",
"desktop.updater.dialog.restart": "إعادة التشغيل",
"desktop.updater.dialog.later": "لاحقًا",
"desktop.recovery.action.relaunch": "إعادة تشغيل التطبيق",
"desktop.recovery.action.exportLogs": "تصدير السجلات",
"desktop.recovery.action.keepWaiting": "متابعة الانتظار",
"desktop.recovery.action.quit": "إنهاء",
"desktop.recovery.loadFailed": "فشل تحميل OpenCode",
"desktop.recovery.terminated": "توقفت نافذة OpenCode بشكل غير متوقع",
"desktop.recovery.unresponsive": "OpenCode لا يستجيب",
"desktop.recovery.unresponsive.detail": "يمكنك إعادة تشغيل التطبيق أو فتح السجلات أو متابعة الانتظار.",
"desktop.recovery.loadFailed.detail": "النافذة: {{window}}\nعنوان URL: {{url}}\nالخطأ: {{code}} {{description}}",
"desktop.recovery.terminated.detail": "النافذة: {{window}}\nالسبب: {{reason}}\nالرمز: {{code}}",
"desktop.recovery.unknown": "<غير معروف>",
"desktop.dialog.chooseFolder": "اختيار مجلد",
"desktop.dialog.chooseFile": "اختيار ملف",
"desktop.dialog.saveFile": "حفظ الملف",
"desktop.dialog.files": "الملفات",
"desktop.server.local": "الخادم المحلي",
"desktop.wsl.error.windowsOnly": "لا يتوفر WSL إلا على Windows",
"desktop.wsl.error.unavailable": "WSL غير متاح",
"desktop.wsl.error.listInstalled": "فشل سرد توزيعات WSL المثبتة",
"desktop.wsl.error.listOnline": "فشل سرد توزيعات WSL المتاحة عبر الإنترنت",
"desktop.wsl.error.executeDistro": "تعذر تنفيذ الأوامر في التوزيعة",
"desktop.wsl.error.installWsl": "فشل تثبيت WSL",
"desktop.wsl.error.installDistro": "فشل تثبيت التوزيعة: {{distro}}",
"desktop.wsl.error.installOpencode": "فشل تثبيت OpenCode",
"desktop.wsl.error.alreadyAdded": "تمت إضافة {{distro}} بالفعل",
"desktop.wsl.error.opencodeMissing": "opencode غير مثبت في هذه التوزيعة",
"desktop.wsl.error.opencodeCannotRun": "opencode مثبت، لكن تعذر تشغيله",
"desktop.wsl.error.opencodeNotInstalled": "OpenCode غير مثبت في {{distro}}",
"desktop.wsl.error.updateVersion":
"اكتمل تحديث OpenCode، لكن {{distro}} ما زالت تعرض الإصدار {{installed}}؛ الإصدار المتوقع هو {{expected}}",
"desktop.wsl.error.noVersion": "لا يوجد إصدار",
"desktop.wsl.error.serverExited": "خرج خادم WSL بعد بدء التشغيل (code={{code}} signal={{signal}})",
"desktop.wsl.error.serverExitedBeforeHealthy":
"خرج خادم WSL قبل أن يصبح سليمًا (code={{code}} signal={{signal}}){{output}}",
"desktop.wsl.error.healthTimeout": "انتهت مهلة فحص سلامة العملية المصاحبة للتوزيعة {{distro}} بعد {{timeout}}ms",
"desktop.wsl.error.commandTimeout": "انتهت مهلة {{command}} {{args}} بعد {{timeout}}ms",
"desktop.wsl.error.failedPort": "فشل الحصول على المنفذ",
"desktop.picker.error.notSelected": "لم يحدد منتقي الملفات ملفًا",
"desktop.picker.error.sizeLimit": "تتجاوز المرفقات المحددة الحد البالغ {{limit}} MB",
"command.category.suggested": "مقترح",
"command.category.view": "عرض",
"command.category.project": "مشروع",
@@ -16,6 +114,7 @@ export const dict = {
"command.category.permissions": "أذونات",
"command.category.workspace": "مساحة عمل",
"command.category.settings": "إعدادات",
"command.logs.export": "تصدير السجلات",
"theme.scheme.system": "نظام",
"theme.scheme.light": "فاتح",
"theme.scheme.dark": "داكن",
@@ -59,16 +158,16 @@ export const dict = {
"command.message.next.description": "انتقل إلى رسالة المستخدم التالية",
"command.model.choose": "اختيار نموذج",
"command.model.choose.description": "حدد نموذجًا مختلفًا",
"command.mcp.toggle": "تبديل MCPs",
"command.mcp.toggle.description": "تبديل MCPs",
"command.mcp.toggle": "تبديل خوادم MCP",
"command.mcp.toggle.description": "تبديل خوادم MCP",
"command.agent.cycle": "تغيير الوكيل",
"command.agent.cycle.description": "التبديل إلى الوكيل التالي",
"command.agent.cycle.reverse": "تغيير الوكيل للخلف",
"command.agent.cycle.reverse.description": "التبديل إلى الوكيل السابق",
"command.model.variant.cycle": "تغيير جهد التفكير",
"command.model.variant.cycle": "تغيير جهد الاستدلال",
"command.model.variant.cycle.description": "التبديل إلى مستوى الجهد التالي",
"command.prompt.mode.shell": "Shell",
"command.prompt.mode.normal": "Prompt",
"command.prompt.mode.normal": "موجّه",
"command.permissions.autoaccept.enable": "قبول الأذونات تلقائيًا",
"command.permissions.autoaccept.disable": "إيقاف قبول الأذونات تلقائيًا",
"command.workspace.toggle": "تبديل مساحات العمل",
@@ -94,13 +193,14 @@ export const dict = {
"dialog.provider.empty": "لم يتم العثور على موفرين",
"dialog.provider.group.popular": "شائع",
"dialog.provider.group.other": "آخر",
"dialog.provider.custom.label": "موفر مخصص متوافق مع OpenAI",
"dialog.provider.tag.recommended": "موصى به",
"dialog.provider.opencode.note": "نماذج مختارة تتضمن Claude و GPT و Gemini والمزيد",
"dialog.provider.opencode.tagline": "نماذج موثوقة ومحسنة",
"dialog.provider.opencodeGo.tagline": "اشتراك منخفض التكلفة للجميع",
"dialog.provider.anthropic.note": "اتصل باستخدام Claude Pro/Max أو مفتاح API",
"dialog.provider.copilot.note": "اتصل باستخدام Copilot أو مفتاح API",
"dialog.provider.openai.note": "اتصل باستخدام ChatGPT Pro/Plus أو مفتاح API",
"dialog.provider.anthropic.note": "وصول مباشر إلى نماذج Claude، بما فيها Pro و Max",
"dialog.provider.copilot.note": "نماذج ذكاء اصطناعي للمساعدة في البرمجة عبر GitHub Copilot",
"dialog.provider.openai.note": "نماذج GPT لمهام الذكاء الاصطناعي العامة السريعة والمتقدمة",
"dialog.provider.google.note": "نماذج Gemini لاستجابات سريعة ومنظمة",
"dialog.provider.openrouter.note": "الوصول إلى جميع النماذج المدعومة من موفر واحد",
"dialog.provider.vercel.note": "وصول موحد إلى نماذج الذكاء الاصطناعي مع توجيه ذكي",
@@ -112,17 +212,20 @@ export const dict = {
"dialog.model.manage.provider.toggle": "تبديل جميع نماذج {{provider}}",
"dialog.model.unpaid.freeModels.title": "نماذج مجانية مقدمة من OpenCode",
"dialog.model.unpaid.addMore.title": "إضافة المزيد من النماذج من موفرين مشهورين",
"dialog.model.unpaid.viewMoreProviders": "عرض أكثر من 70 موفرًا إضافيًا",
"dialog.provider.viewAll": "عرض المزيد من الموفرين",
"provider.connect.title": "اتصال {{provider}}",
"provider.connect.title": "الاتصال بـ {{provider}}",
"provider.connect.title.anthropicProMax": "تسجيل الدخول باستخدام Claude Pro/Max",
"provider.connect.selectMethod": "حدد طريقة تسجيل الدخول لـ {{provider}}.",
"provider.connect.method.apiKey": "مفتاح API",
"provider.connect.method.browser": "المتصفح",
"provider.connect.method.headless": "بدون واجهة رسومية",
"provider.connect.status.inProgress": "جارٍ التفويض...",
"provider.connect.status.waiting": "في انتظار التفويض...",
"provider.connect.status.failed": "فشل التفويض: {{error}}",
"provider.connect.apiKey.description":
"أدخل مفتاح واجهة برمجة تطبيقات {{provider}} الخاص بك لتوصيل حسابك واستخدام نماذج {{provider}} في OpenCode.",
"provider.connect.apiKey.label": "مفتاح واجهة برمجة تطبيقات {{provider}}",
"أدخل مفتاح API الخاص بـ {{provider}} لتوصيل حسابك واستخدام نماذج {{provider}} في OpenCode.",
"provider.connect.apiKey.label": "مفتاح API لـ {{provider}}",
"provider.connect.apiKey.placeholder": "مفتاح API",
"provider.connect.apiKey.required": "مفتاح API مطلوب",
"provider.connect.opencodeZen.line1":
@@ -148,6 +251,7 @@ export const dict = {
"provider.connect.toast.connected.title": "تم توصيل {{provider}}",
"provider.connect.toast.connected.description": "نماذج {{provider}} متاحة الآن للاستخدام.",
"provider.custom.title": "موفر مخصص",
"provider.custom.unavailable": "الموفرون المخصصون غير متاحين على هذا الخادم",
"provider.custom.description.prefix": "تكوين موفر متوافق مع OpenAI. راجع ",
"provider.custom.description.link": "وثائق تكوين الموفر",
"provider.custom.description.suffix": ".",
@@ -196,26 +300,26 @@ export const dict = {
"model.input.image": "صورة",
"model.input.audio": "صوت",
"model.input.video": "فيديو",
"model.input.pdf": "pdf",
"model.input.pdf": "PDF",
"model.tooltip.allows": "يسمح: {{inputs}}",
"model.tooltip.context.label": "السياق",
"model.tooltip.inputs": "المدخلات",
"model.tooltip.model": "النموذج",
"model.tooltip.provider": "الموفر",
"model.tooltip.reasoning": "الاستنتاج",
"model.tooltip.reasoning.allowed": سمح بالاستنتاج",
"model.tooltip.reasoning.none": "بدون استنتاج",
"model.tooltip.reasoning": "الاستدلال",
"model.tooltip.reasoning.allowed": دعم الاستدلال",
"model.tooltip.reasoning.none": "بدون استدلال",
"model.tooltip.context": "حد السياق {{limit}}",
"common.search.placeholder": "بحث",
"common.goBack": "رجوع",
"common.goForward": "انتقل للأمام",
"common.goForward": "التقدم",
"common.loading": "جارٍ التحميل",
"common.loading.ellipsis": "...",
"common.cancel": "إلغاء",
"common.clear": "مسح",
"common.connect": "اتصال",
"common.disconnect": "قطع الاتصال",
"common.continue": "إرسال",
"common.continue": "متابعة",
"common.submit": "إرسال",
"common.save": "حفظ",
"common.saving": "جارٍ الحفظ...",
@@ -227,7 +331,7 @@ export const dict = {
"prompt.placeholder.summarizeComments": "لخّص التعليقات…",
"prompt.placeholder.summarizeComment": "لخّص التعليق…",
"prompt.mode.shell": "Shell",
"prompt.mode.normal": "Prompt",
"prompt.mode.normal": "موجّه",
"prompt.mode.shell.exit": "esc للخروج",
"session.child.promptDisabled": "لا يمكن إرسال موجّهات إلى جلسات الوكلاء الفرعيين.",
"session.child.backToParent": "العودة إلى الجلسة الرئيسية.",
@@ -249,17 +353,17 @@ export const dict = {
"prompt.example.16": "إضافة معالجة الأخطاء لهذه الدالة",
"prompt.example.17": "اشرح نمط regex هذا",
"prompt.example.18": "تحويل هذا إلى TypeScript",
"prompt.example.19": "إضافة تسجيل الدخول (logging) في جميع أنحاء قاعدة التعليمات البرمجية",
"prompt.example.19": "إضافة التسجيل في جميع أنحاء قاعدة التعليمات البرمجية",
"prompt.example.20": "ما هي التبعيات القديمة؟",
"prompt.example.21": "ساعدني في كتابة برنامج نصي للهجرة",
"prompt.example.22": "تنفيذ التخزين المؤقت لهذه النقطة النهائية",
"prompt.example.21": "ساعدني في كتابة برنامج نصي للترحيل",
"prompt.example.22": "تنفيذ التخزين المؤقت لنقطة النهاية هذه",
"prompt.example.23": "إضافة ترقيم الصفحات إلى هذه القائمة",
"prompt.example.24": "إنشاء أمر CLI لـ...",
"prompt.example.25": "كيف تعمل متغيرات البيئة هنا؟",
"prompt.popover.emptyResults": "لا توجد نتائج مطابقة",
"prompt.popover.emptyCommands": "لا توجد أوامر مطابقة",
"prompt.dropzone.label": "أفلت الصور أو ملفات PDF أو الملفات النصية هنا",
"prompt.dropzone.file.label": "أفلت لإشارة @ للملف",
"prompt.dropzone.file.label": "أفلت الملف للإشارة إليه باستخدام @",
"prompt.slash.badge.custom": "مخصص",
"prompt.slash.badge.skill": "مهارة",
"prompt.slash.badge.mcp": "mcp",
@@ -267,7 +371,7 @@ export const dict = {
"prompt.context.includeActiveFile": "تضمين الملف النشط",
"prompt.context.removeActiveFile": "إزالة الملف النشط من السياق",
"prompt.context.removeFile": "إزالة الملف من السياق",
"prompt.action.attachFile": رفاق ملف",
"prompt.action.attachFile": ضافة ملفات",
"prompt.menu.addImagesAndFiles": "إضافة ملفات والمزيد",
"prompt.menu.imagesAndFiles": "الصور والملفات",
"prompt.menu.commands": "الأوامر",
@@ -275,7 +379,7 @@ export const dict = {
"prompt.menu.shellCommand": "أمر shell",
"prompt.attachment.remove": "إزالة المرفق",
"prompt.action.send": "إرسال",
"prompt.action.stop": "توقف",
"prompt.action.stop": "إيقاف",
"prompt.toast.pasteUnsupported.title": "مرفق غير مدعوم",
"prompt.toast.attachmentDuplicate.title": "تم تحميل هذا الملف بالفعل",
"prompt.toast.pasteUnsupported.description": "يمكن إرفاق الصور أو ملفات PDF أو الملفات النصية فقط هنا.",
@@ -287,10 +391,10 @@ export const dict = {
"prompt.toast.commandSendFailed.title": "فشل إرسال الأمر",
"prompt.toast.promptSendFailed.title": "فشل إرسال الموجه",
"prompt.toast.promptSendFailed.description": "تعذر استرداد الجلسة",
"dialog.mcp.title": "MCPs",
"dialog.mcp.description": "{{enabled}} من {{total}} مفعل",
"dialog.mcp.empty": "لم يتم تكوين MCPs",
"dialog.lsp.empty": م الكشف تلقائيًا عن LSPs من أنواع الملفات",
"dialog.mcp.title": "خوادم MCP",
"dialog.mcp.description": "تم تفعيل {{enabled}} من أصل {{total}}",
"dialog.mcp.empty": "لم يتم تكوين أي خوادم MCP",
"dialog.lsp.empty": ُكتشف خوادم LSP تلقائيًا من أنواع الملفات",
"dialog.plugins.empty": "الإضافات المكونة في opencode.json",
"mcp.status.connected": "متصل",
"mcp.status.failed": "فشل",
@@ -401,6 +505,21 @@ export const dict = {
"wsl.onboarding.desktopVersion": "سطح المكتب {{version}}",
"wsl.onboarding.versionMismatch": "لا يتطابق الإصدار المثبت مع إصدار تطبيق سطح المكتب.",
"wsl.onboarding.adding": "جارٍ الإضافة...",
"help.tabs.toast.ariaLabel": "نقدّم علامات التبويب. نظّم عملك وجلساتك النشطة باستخدام علامات التبويب",
"help.tabs.toast.dismiss": "إغلاق معلومات علامات التبويب",
"help.tabs.title": "نقدّم علامات التبويب",
"help.tabs.description": "نظّم عملك وجلساتك النشطة باستخدام علامات التبويب",
"help.tabs.date": "14 يوليو",
"help.tabs.introduction": "أصبح OpenCode Desktop الآن قائمًا على علامات التبويب.",
"help.tabs.sessions":
"ابدأ جلسة جديدة في علامة تبويب، أو افتح جلسة حالية من أي من مشاريعك. افتح علامة تبويب جديدة عندما تبدأ عملاً جديدًا، وأغلقها عند الانتهاء.",
"help.tabs.organize":
"يسهّل إبقاء بضع علامات تبويب مفتوحة تنظيم جلساتك النشطة. أعد تسمية علامات التبويب بأسماء يسهل تذكرها إذا كنت تنوي إبقاءها مفتوحة.",
"help.tabs.home":
"ستجد جميع جلساتك ومشاريعك في شاشة الصفحة الرئيسية الجديدة. يؤدي تحديد جلسة إلى فتحها في علامة تبويب.",
"help.tabs.persistence": "عندما تعيد فتح التطبيق، تظل علامات تبويبك مفتوحة.",
"help.tabs.worktrees":
"لا يدعم التصميم الجديد أشجار عمل Git حتى الآن، وستتوفر قريبًا. لذلك، إذا كنت تفضل مواصلة استخدام التخطيط السابق، فيمكنك التبديل بين التخطيطات في الإعدادات. ضع في اعتبارك أن التخطيط الجديد سيصبح دائمًا خلال بضعة أسابيع.",
"dialog.project.edit.title": "تحرير المشروع",
"dialog.project.edit.name": "الاسم",
"dialog.project.edit.icon": "أيقونة",
@@ -409,35 +528,35 @@ export const dict = {
"dialog.project.edit.icon.recommended": "موصى به: 128x128px",
"dialog.project.edit.color": "لون",
"dialog.project.edit.color.select": "اختر لون {{color}}",
"dialog.project.edit.worktree.startup": "سكريبت بدء تشغيل مساحة العمل",
"dialog.project.edit.worktree.startup": "برنامج نصي لبدء تشغيل مساحة العمل",
"dialog.project.edit.worktree.startup.description": "يتم تشغيله بعد إنشاء مساحة عمل جديدة (شجرة عمل).",
"dialog.project.edit.worktree.startup.placeholder": "مثال: bun install",
"context.breakdown.title": "تفصيل السياق",
"context.breakdown.note": 'تفصيل تقريبي لرموز الإدخال. يشمل "أخرى" تعريفات الأدوات والنفقات العامة.',
"context.breakdown.note": 'تفصيل تقريبي لرموز الإدخال المميزة. يشمل "أخرى" تعريفات الأدوات والأعباء الإضافية.',
"context.breakdown.system": "النظام",
"context.breakdown.user": "المستخدم",
"context.breakdown.assistant": "المساعد",
"context.breakdown.tool": "استدعاءات الأداة",
"context.breakdown.tool": "استدعاءات الأدوات",
"context.breakdown.other": "أخرى",
"context.systemPrompt.title": "موجه النظام",
"context.systemPrompt.title": "موجّه النظام",
"context.rawMessages.title": "الرسائل الخام",
"context.stats.session": "جلسة",
"context.stats.messages": "رسائل",
"context.stats.provider": "موفر",
"context.stats.model": "نموذج",
"context.stats.limit": "حد السياق",
"context.stats.totalTokens": "إجمالي الرموز",
"context.stats.totalTokens": "إجمالي الرموز المميزة",
"context.stats.usage": "استخدام",
"context.stats.inputTokens": "رموز الإدخال",
"context.stats.outputTokens": "رموز الإخراج",
"context.stats.reasoningTokens": "رموز الاستنتاج",
"context.stats.cacheTokens": "رموز التخزين المؤقت (قراءة/كتابة)",
"context.stats.inputTokens": "رموز الإدخال المميزة",
"context.stats.outputTokens": "رموز الإخراج المميزة",
"context.stats.reasoningTokens": "رموز الاستدلال المميزة",
"context.stats.cacheTokens": "رموز التخزين المؤقت المميزة (قراءة/كتابة)",
"context.stats.userMessages": "رسائل المستخدم",
"context.stats.assistantMessages": "رسائل المساعد",
"context.stats.totalCost": "التكلفة الإجمالية",
"context.stats.sessionCreated": "تم إنشاء الجلسة",
"context.stats.lastActivity": "آخر نشاط",
"context.usage.tokens": "رموز",
"context.usage.tokens": "الرموز المميزة",
"context.usage.usage": "استخدام",
"context.usage.cost": "تكلفة",
"context.usage.clickToView": "انقر لعرض السياق",
@@ -465,9 +584,9 @@ export const dict = {
"toast.theme.title": "تم تبديل السمة",
"toast.scheme.title": "مخطط الألوان",
"toast.workspace.enabled.title": "تم تمكين مساحات العمل",
"toast.workspace.enabled.description": "الآن يتم عرض عدة worktrees في الشريط الجانبي",
"toast.workspace.enabled.description": "تُعرض الآن عدة أشجار عمل في الشريط الجانبي",
"toast.workspace.disabled.title": "تم تعطيل مساحات العمل",
"toast.workspace.disabled.description": "يتم عرض worktree الرئيسي فقط في الشريط الجانبي",
"toast.workspace.disabled.description": "تُعرض شجرة العمل الرئيسية فقط في الشريط الجانبي",
"toast.permissions.autoaccept.on.title": "يتم قبول الأذونات تلقائيًا",
"toast.permissions.autoaccept.on.description": "ستتم الموافقة على طلبات الأذونات تلقائيًا",
"toast.permissions.autoaccept.off.title": "تم إيقاف قبول الأذونات تلقائيًا",
@@ -489,7 +608,7 @@ export const dict = {
"toast.session.unshare.failed.description": "حدث خطأ أثناء إلغاء مشاركة الجلسة",
"toast.session.listFailed.title": "فشل تحميل الجلسات لـ {{project}}",
"toast.update.title": "تحديث متاح",
"toast.update.description": "نسخة جديدة من OpenCode ({{version}}) متاحة الآن للتثبيت.",
"toast.update.description": "يتوفر الآن إصدار جديد من OpenCode ({{version}}) للتثبيت.",
"toast.update.action.installRestart": "تثبيت وإعادة تشغيل",
"toast.update.action.notYet": "ليس الآن",
"error.page.title": "حدث خطأ ما",
@@ -509,7 +628,7 @@ export const dict = {
"error.dev.rootNotFound":
"لم يتم العثور على العنصر الجذري. هل نسيت إضافته إلى index.html؟ أو ربما تمت كتابة سمة id بشكل خاطئ؟",
"error.serverSync.connectFailed": "تعذر الاتصال بالخادم. هل هناك خادم يعمل في `{{url}}`؟",
"directory.error.invalidUrl": ليل غير صالح في عنوان URL.",
"directory.error.invalidUrl": "مجلد غير صالح في عنوان URL.",
"error.chain.unknown": "خطأ غير معروف",
"error.chain.causedBy": "بسبب:",
"error.chain.apiError": "خطأ API",
@@ -537,7 +656,7 @@ export const dict = {
"notification.session.responseReady.title": "الاستجابة جاهزة",
"notification.session.error.title": "خطأ في الجلسة",
"notification.session.error.fallbackDescription": "حدث خطأ",
"home.recentProjects": "المشاريع الحديثة",
"home.recentProjects": "المشاريع الأخيرة",
"home.empty.title": "لا توجد مشاريع حديثة",
"home.empty.description": "ابدأ بفتح مشروع محلي",
"home.title": "الرئيسية",
@@ -555,7 +674,7 @@ export const dict = {
"home.sessions.group.today": "اليوم",
"home.sessions.group.yesterday": "أمس",
"home.sessions.group.older": "الأقدم",
"home.providerTip": "اتصل بأكثر من 75 مزودًا لاستخدام نماذج أخرى، بما فيها Claude وGPT وGemini وغيرها",
"home.providerTip": "اتصل بأكثر من 75 موفرًا لاستخدام نماذج أخرى، بما فيها Claude وGPT وGemini وغيرها",
"session.tab.session": "جلسة",
"session.tab.review": "مراجعة",
"session.tab.context": "سياق",
@@ -565,7 +684,7 @@ export const dict = {
"session.error.notFound.description": "يشير هذا التبويب إلى جلسة لم تعد موجودة على هذا الخادم.",
"session.error.notFound.closeTab": "إغلاق علامة التبويب",
"session.error.serverConnection": "تعذر الاتصال بهذا الخادم",
"session.review.filesChanged": "تم تغيير {{count}} ملفات",
"session.review.filesChanged": "الملفات المتغيرة: {{count}}",
"session.review.change.one": "تغيير",
"session.review.change.other": "تغييرات",
"session.review.loadingChanges": "جارٍ تحميل التغييرات...",
@@ -573,7 +692,7 @@ export const dict = {
"session.review.noChanges": "لا توجد تغييرات",
"session.review.noUncommittedChanges": "لا توجد تغييرات غير مُودَعة بعد",
"session.review.noBranchChanges": "لا توجد تغييرات في الفرع بعد",
"session.review.noVcs": "لم يتم اكتشاف نظام التحكم في الإصدار Git، لن يتم عرض التغييرات",
"session.review.noVcs": "لم يُكتشف نظام Git للتحكم في الإصدارات، لذا لن تُعرض التغييرات",
"session.review.noSnapshot": "تم تعطيل تتبع اللقطات في التكوين، لذا فإن تغييرات الجلسة غير متوفرة",
"session.files.selectToOpen": "اختر ملفًا لفتحه",
"session.files.all": "كل الملفات",
@@ -591,14 +710,26 @@ export const dict = {
"session.question.minimize": "تصغير السؤال",
"session.question.restore": "استعادة السؤال",
"session.question.pending.one": "{{count}} سؤال معلق",
"session.question.pending.zero": "عدد الأسئلة المعلقة: {{count}}",
"session.question.pending.two": "عدد الأسئلة المعلقة: {{count}}",
"session.question.pending.few": "{{count}} أسئلة معلقة",
"session.question.pending.many": "{{count}} سؤالًا معلقًا",
"session.question.pending.other": "الأسئلة المعلقة: {{count}}",
"session.followupDock.summary.one": "{{count}} رسالة في الانتظار",
"session.followupDock.summary.other": "{{count}} رسائل في الانتظار",
"session.followupDock.summary.one": "{{count}} رسالة في قائمة الانتظار",
"session.followupDock.summary.zero": "عدد الرسائل في قائمة الانتظار: {{count}}",
"session.followupDock.summary.two": "عدد الرسائل في قائمة الانتظار: {{count}}",
"session.followupDock.summary.few": "{{count}} رسائل في قائمة الانتظار",
"session.followupDock.summary.many": "{{count}} رسالةً في قائمة الانتظار",
"session.followupDock.summary.other": "{{count}} رسائل في قائمة الانتظار",
"session.followupDock.sendNow": "إرسال الآن",
"session.followupDock.edit": "تحرير",
"session.followupDock.collapse": "طي الرسائل المنتظرة",
"session.followupDock.expand": "توسيع الرسائل المنتظرة",
"session.revertDock.summary.one": "{{count}} رسالة تم التراجع عنها",
"session.revertDock.summary.zero": "عدد الرسائل التي تم التراجع عنها: {{count}}",
"session.revertDock.summary.two": "عدد الرسائل التي تم التراجع عنها: {{count}}",
"session.revertDock.summary.few": "{{count}} رسائل تم التراجع عنها",
"session.revertDock.summary.many": "{{count}} رسالةً تم التراجع عنها",
"session.revertDock.summary.other": "{{count}} رسائل تم التراجع عنها",
"session.revertDock.collapse": "طي الرسائل التي تم التراجع عنها",
"session.revertDock.expand": "توسيع الرسائل التي تم التراجع عنها",
@@ -650,11 +781,17 @@ export const dict = {
"terminal.close": "إغلاق المحطة الطرفية",
"terminal.connectionLost.title": "فقد الاتصال",
"terminal.connectionLost.description": "انقطع اتصال المحطة الطرفية. يمكن أن يحدث هذا عند إعادة تشغيل الخادم.",
"terminal.connectTicket.csrfError": "رُفضت تذكرة اتصال PTY بسبب فحوصات الأصل أو CSRF. تحقق من إعداد CORS للخادم.",
"terminal.connectTicket.statusError": "فشلت تذكرة اتصال PTY بالحالة {{status}}",
"titlebar.update": "تحديث",
"titlebar.updateVersion": "تحديث {{version}}",
"common.closeTab": "إغلاق علامة التبويب",
"common.dismiss": "رفض",
"common.dismiss": "إهمال",
"common.requestFailed": "فشل الطلب",
"common.moreOptions": "مزيد من الخيارات",
"common.learnMore": "اعرف المزيد",
"common.learnMore": "اطّلع على المزيد",
"common.rename": "إعادة تسمية",
"common.reset": "إعادة تعيين",
"common.archive": "أرشفة",
@@ -672,7 +809,7 @@ export const dict = {
"sidebar.gettingStarted.title": "البدء",
"sidebar.gettingStarted.line1": "يتضمن OpenCode نماذج مجانية حتى تتمكن من البدء فورًا.",
"sidebar.gettingStarted.line2": "قم بتوصيل أي موفر لاستخدام النماذج، بما في ذلك Claude و GPT و Gemini وما إلى ذلك.",
"sidebar.project.recentSessions": "الجلسات الحديثة",
"sidebar.project.recentSessions": "الجلسات الأخيرة",
"sidebar.project.viewAllSessions": "عرض جميع الجلسات",
"sidebar.project.clearNotifications": "مسح الإشعارات",
"sidebar.empty.title": "لا توجد مشاريع مفتوحة",
@@ -691,7 +828,7 @@ export const dict = {
"settings.general.section.updates": "التحديثات",
"settings.general.section.sounds": "المؤثرات الصوتية",
"settings.general.section.feed": "الخلاصة",
"settings.general.section.display": "شاشة العرض",
"settings.general.section.display": "العرض",
"settings.general.row.language.title": "اللغة",
"settings.general.row.language.description": "تغيير لغة العرض لـ OpenCode",
"settings.general.row.shell.title": "Shell المحطة الطرفية",
@@ -728,10 +865,11 @@ export const dict = {
"settings.general.row.mobileTitlebarBottom.title": "التنقل السفلي",
"settings.general.row.mobileTitlebarBottom.description":
"وضع شريط العنوان وعلامات تبويب الجلسات أسفل الشاشة على الأجهزة المحمولة",
"settings.general.row.showCustomAgents.title": "الوكلاء المخصصون",
"settings.general.row.showCustomAgents.description": "إظهار محدد الوكلاء في محرر الرسائل",
"settings.general.row.reasoningSummaries.title": "إظهار ملخصات الاستنتاج",
"settings.general.row.reasoningSummaries.description": "عرض ملخصات استنتاج النموذج في الشريط الزمني",
"settings.general.row.showCustomAgents.title": "إظهار الوكيل",
"settings.general.row.showCustomAgents.description":
"التبديل بين الوكلاء في محرر الرسائل. عند إخفائه، يُستخدم وكيل Build افتراضيًا.",
"settings.general.row.reasoningSummaries.title": "إظهار ملخصات الاستدلال",
"settings.general.row.reasoningSummaries.description": "عرض ملخصات استدلال النموذج في الشريط الزمني",
"settings.general.row.shellToolPartsExpanded.title": "توسيع أجزاء أداة shell",
"settings.general.row.shellToolPartsExpanded.description":
"إظهار أجزاء أداة shell موسعة بشكل افتراضي في الشريط الزمني",
@@ -744,11 +882,12 @@ export const dict = {
"استخدم علامات التبويب الجديدة وتخطيط الصفحة الرئيسية. يمكنك التبديل بين التخطيطات لفترة محدودة.",
"settings.general.row.newInterfaceNotice.title": "أنت تستخدم الآن التخطيط الجديد",
"settings.general.row.newInterfaceNotice.description": "التخطيط السابق لم يعد متاحًا",
"settings.general.row.newInterfaceNotice.dismiss": "رفض",
"settings.general.row.pinchZoom.title": "التكبير بإيماءة القرص",
"settings.general.row.pinchZoom.description": "السماح بإيماءة القرص على لوحة اللمس وإيماءة Ctrl-scroll للتكبير",
"settings.general.row.newInterfaceNotice.dismiss": "إهمال",
"settings.general.row.pinchZoom.title": "التكبير بالمقاربة والمباعدة",
"settings.general.row.pinchZoom.description":
"السماح بإيماءات مقاربة الأصابع ومباعدتها على لوحة التعقب والتمرير مع الضغط على Ctrl للتكبير",
"settings.general.row.wayland.title": "استخدام Wayland الأصلي",
"settings.general.row.wayland.description": "تعطيل التراجع إلى X11 على Wayland. يتطلب إعادة التشغيل.",
"settings.general.row.wayland.description": "تعطيل الرجوع إلى X11 على Wayland. يتطلب إعادة التشغيل.",
"settings.general.row.wayland.tooltip":
"على Linux مع شاشات بمعدلات تحديث مختلطة، يمكن أن يكون Wayland الأصلي أكثر استقرارًا.",
"settings.general.row.releaseNotes.title": "ملاحظات الإصدار",
@@ -761,7 +900,7 @@ export const dict = {
"settings.updates.action.checking": "جارٍ التحقق...",
"settings.updates.action.downloading": "جارٍ التنزيل...",
"settings.updates.action.installing": "جارٍ التثبيت...",
"settings.updates.toast.latest.title": "أنت على آخر إصدار",
"settings.updates.toast.latest.title": "لديك أحدث إصدار",
"settings.updates.toast.latest.description": "أنت تستخدم أحدث إصدار من OpenCode.",
"sound.option.none": "بلا",
"sound.option.alert01": "تنبيه 01",
@@ -823,17 +962,17 @@ export const dict = {
"settings.general.sounds.errors.description": "تشغيل صوت عند حدوث خطأ",
"settings.shortcuts.title": "اختصارات لوحة المفاتيح",
"settings.shortcuts.reset.button": "إعادة التعيين إلى الافتراضيات",
"settings.shortcuts.reset.toast.title": "تم إعادة تعيين الاختصارات",
"settings.shortcuts.reset.toast.description": "تم إعادة تعيين اختصارات لوحة المفاتيح إلى الافتراضيات.",
"settings.shortcuts.reset.toast.title": "أُعيد تعيين الاختصارات",
"settings.shortcuts.reset.toast.description": "أُعيد تعيين اختصارات لوحة المفاتيح إلى الإعدادات الافتراضية.",
"settings.shortcuts.conflict.title": "الاختصار قيد الاستخدام بالفعل",
"settings.shortcuts.conflict.description": "{{keybind}} معين بالفعل لـ {{titles}}.",
"settings.shortcuts.unassigned": "غير معين",
"settings.shortcuts.conflict.description": "الاختصار {{keybind}} مخصص بالفعل لـ {{titles}}.",
"settings.shortcuts.unassigned": "غير مخصص",
"settings.shortcuts.pressKeys": "اضغط على المفاتيح",
"settings.shortcuts.search.placeholder": "البحث في الاختصارات",
"settings.shortcuts.search.empty": "لم يتم العثور على اختصارات",
"settings.shortcuts.group.general": "عام",
"settings.shortcuts.group.session": "جلسة",
"settings.shortcuts.group.navigation": "تصفح",
"settings.shortcuts.group.navigation": "التنقل",
"settings.shortcuts.group.modelAndAgent": "النموذج والوكيل",
"settings.shortcuts.group.terminal": "المحطة الطرفية",
"settings.shortcuts.group.prompt": "موجه",
@@ -858,19 +997,18 @@ export const dict = {
"settings.permissions.description": "تحكم في الأدوات التي يمكن للخادم استخدامها بشكل افتراضي.",
"settings.permissions.section.tools": "الأدوات",
"settings.permissions.toast.updateFailed.title": "فشل تحديث الأذونات",
"settings.permissions.action.allow": "سماح",
"settings.permissions.action.ask": "سؤال",
"settings.permissions.action.deny": "رفض",
"settings.permissions.action.allow": "السماح",
"settings.permissions.action.ask": "طلب الإذن",
"settings.permissions.action.deny": "الرفض",
"settings.permissions.tool.read.title": "قراءة",
"settings.permissions.tool.read.description": "قراءة ملف (يطابق مسار الملف)",
"settings.permissions.tool.edit.title": "تحرير",
"settings.permissions.tool.edit.description":
"تعديل الملفات، بما في ذلك التحرير والكتابة والتصحيحات والتحرير المتعدد",
"settings.permissions.tool.edit.description": "تعديل الملفات، بما في ذلك عمليات التحرير والكتابة وتطبيق الرقع",
"settings.permissions.tool.glob.title": "Glob",
"settings.permissions.tool.glob.description": "مطابقة الملفات باستخدام أنماط glob",
"settings.permissions.tool.grep.title": "Grep",
"settings.permissions.tool.grep.description": "البحث في محتويات الملف باستخدام التعبيرات العادية",
"settings.permissions.tool.list.title": "قائمة",
"settings.permissions.tool.list.title": "سرد",
"settings.permissions.tool.list.description": "سرد الملفات داخل دليل",
"settings.permissions.tool.bash.title": "Bash",
"settings.permissions.tool.bash.description": "تشغيل أوامر shell",
@@ -888,7 +1026,7 @@ export const dict = {
"settings.permissions.tool.websearch.description": "البحث في الويب",
"settings.permissions.tool.external_directory.title": "دليل خارجي",
"settings.permissions.tool.external_directory.description": "الوصول إلى الملفات خارج دليل المشروع",
"settings.permissions.tool.doom_loop.title": "حلقة الموت",
"settings.permissions.tool.doom_loop.title": "حلقة مفرغة",
"settings.permissions.tool.doom_loop.description": "اكتشاف استدعاءات الأدوات المتكررة بمدخلات متطابقة",
"session.delete.failed.title": "فشل حذف الجلسة",
"session.delete.title": "حذف الجلسة",
@@ -896,7 +1034,7 @@ export const dict = {
"session.delete.button": "حذف الجلسة",
"workspace.new": "مساحة عمل جديدة",
"workspace.type.local": "محلي",
"workspace.type.sandbox": "صندوق رمل",
"workspace.type.sandbox": "بيئة معزولة",
"workspace.create.failed.title": "فشل إنشاء مساحة العمل",
"workspace.delete.failed.title": "فشل حذف مساحة العمل",
"workspace.resetting.title": "إعادة تعيين مساحة العمل",
@@ -906,7 +1044,7 @@ export const dict = {
"workspace.reset.success.description": "مساحة العمل تطابق الآن الفرع الافتراضي.",
"workspace.error.stillPreparing": "مساحة العمل لا تزال قيد الإعداد",
"workspace.status.checking": "التحقق من التغييرات غير المدمجة...",
"workspace.status.error": "تعذر التحقق من حالة git.",
"workspace.status.error": "تعذر التحقق من حالة Git.",
"workspace.status.clean": "لم يتم اكتشاف تغييرات غير مدمجة.",
"workspace.status.dirty": "تم اكتشاف تغييرات غير مدمجة في مساحة العمل هذه.",
"workspace.delete.title": "حذف مساحة العمل",
@@ -922,7 +1060,7 @@ export const dict = {
"common.open": "فتح",
"dialog.releaseNotes.action.getStarted": "البدء",
"dialog.releaseNotes.action.next": "التالي",
"dialog.releaseNotes.action.hideFuture": "عدم إظهار هذا في المستقبل",
"dialog.releaseNotes.action.hideFuture": "عدم إظهارها مستقبلاً",
"dialog.releaseNotes.media.alt": "معاينة الإصدار",
"toast.project.reloadFailed.title": "فشل في إعادة تحميل {{project}}",
"error.server.invalidConfiguration": "تكوين غير صالح",
@@ -932,22 +1070,25 @@ export const dict = {
"common.time.hoursAgo.short": "قبل {{count}} س",
"common.time.daysAgo.short": "قبل {{count}} ي",
"settings.providers.connected.environmentDescription": "متصل من متغيرات البيئة الخاصة بك",
"settings.providers.custom.description": "أضف مزود متوافق مع OpenAI بواسطة عنوان URL الأساسي.",
"settings.providers.custom.description": "أضف موفرًا متوافقًا مع OpenAI باستخدام عنوان URL الأساسي.",
"app.server.unreachable": "تعذر الوصول إلى {{server}}",
"app.server.retrying": "جاري إعادة المحاولة تلقائيًا...",
"app.server.retrying": "جارٍ إعادة المحاولة تلقائيًا...",
"app.server.otherServers": "خوادم أخرى",
"dialog.server.add.usernamePlaceholder": "اسم المستخدم",
"dialog.server.add.passwordPlaceholder": "كلمة المرور",
"server.row.noUsername": "لا يوجد اسم مستخدم",
"session.review.noVcs.createGit.title": "إنشاء مستودع Git",
"session.review.noVcs.createGit.description": "تتبع ومراجعة والتراجع عن التغييرات في هذا المشروع",
"session.review.noVcs.createGit.actionLoading": "جاري إنشاء مستودع Git...",
"session.review.noVcs.createGit.actionLoading": "جارٍ إنشاء مستودع Git...",
"session.review.noVcs.createGit.action": "إنشاء مستودع Git",
"session.todo.progress": "تم إكمال {{done}} من {{total}} مهام",
"session.question.progress": "{{current}} من {{total}} أسئلة",
"session.header.open.finder": "Finder",
"session.header.open.fileExplorer": "مستكشف الملفات",
"session.header.reveal.finder": "إظهار في Finder",
"session.header.reveal.fileExplorer": "إظهار في مستكشف الملفات",
"session.header.reveal.containingFolder": "فتح المجلد الحاوي",
"session.header.open.fileManager": "مدير الملفات",
"session.header.open.app.vscode": "VS Code",
"session.header.open.app.cursor": "Cursor",
@@ -965,9 +1106,9 @@ export const dict = {
"debugBar.ariaLabel": "تشخيص أداء التطوير",
"debugBar.na": "غير متاح",
"debugBar.nav.label": "NAV",
"debugBar.nav.tip": "آخر انتقال مكتمل للمسار يمس صفحة جلسة، مُقاسًا من بدء التوجيه حتى أول رسم بعد استقراره.",
"debugBar.nav.tip": "آخر انتقال مكتمل للمسار يتضمن صفحة جلسة، مُقاسًا من بدء التوجيه حتى أول رسم بعد استقراره.",
"debugBar.fps.label": "FPS",
"debugBar.fps.tip": "الإطارات المتجددة في الثانية خلال آخر 5 ثوانٍ.",
"debugBar.fps.tip": "متوسط متحرك لمعدل الإطارات في الثانية خلال آخر 5 ثوانٍ.",
"debugBar.frame.label": "FRAME",
"debugBar.frame.tip": "أسوأ وقت للإطار خلال آخر 5 ثوانٍ.",
"debugBar.jank.label": "JANK",
@@ -979,7 +1120,7 @@ export const dict = {
"debugBar.inp.label": "INP",
"debugBar.inp.tip": "مدة التفاعل التقريبية خلال آخر 5 ثوانٍ. هذا يشبه INP، وليس Web Vitals INP الرسمي.",
"debugBar.cls.label": "CLS",
"debugBar.cls.tip": "التحول التخطيطي التراكمي لعمر التطبيق الحالي.",
"debugBar.cls.tip": "التحول التخطيطي التراكمي منذ تشغيل التطبيق الحالي.",
"debugBar.mem.label": "MEM",
"debugBar.mem.tipUnavailable": "كومة JS المستخدمة مقابل حد الكومة. Chromium فقط.",
"debugBar.mem.tip": "كومة JS المستخدمة مقابل حد الكومة. {{used}} من {{limit}}.",
@@ -998,7 +1139,7 @@ export const dict = {
"common.key.pageDown": "Page Down",
"common.key.insert": "Insert",
"common.unknown": "غير معروف",
"error.page.circular": "[دائري]",
"error.page.circular": "[مرجع دائري]",
"error.serverSDK.noServerAvailable": "لا يوجد خادم متاح",
"error.serverSDK.serverNotAvailable": "الخادم غير متاح",
"error.childStore.persistedCacheCreateFailed": "فشل إنشاء ذاكرة التخزين المؤقت الدائمة",
+1147
View File
@@ -0,0 +1,1147 @@
export const dict = {
"desktop.menu.app": "OpenCode",
"desktop.menu.file": "Fayl",
"desktop.menu.edit": "Redaktə",
"desktop.menu.view": "Görünüş",
"desktop.menu.go": "Keçid",
"desktop.menu.window": "Pəncərə",
"desktop.menu.help": "Kömək",
"desktop.menu.checkForUpdates": "Yeniləmələri yoxla...",
"desktop.menu.settings": "Tənzimləmələr",
"desktop.menu.reloadWebview": "Webview-u yenidən yüklə",
"desktop.menu.restart": "Yenidən başlat",
"desktop.menu.exportLogs": "Jurnalları ixrac et...",
"desktop.menu.newSession": "Yeni sessiya",
"desktop.menu.openProject": "Layihəni aç...",
"desktop.menu.newWindow": "Yeni pəncərə",
"desktop.menu.closeWindow": "Pəncərəni bağla",
"desktop.menu.undo": "Geri al",
"desktop.menu.redo": "Yenidən et",
"desktop.menu.cut": "Kəs",
"desktop.menu.copy": "Kopyala",
"desktop.menu.paste": "Yapışdır",
"desktop.menu.delete": "Sil",
"desktop.menu.selectAll": "Hamısını seç",
"desktop.menu.toggleSidebar": "Yan paneli aç/bağla",
"desktop.menu.toggleTerminal": "Terminalı aç/bağla",
"desktop.menu.toggleFileTree": "Fayl ağacını aç/bağla",
"desktop.menu.reload": "Yenidən yüklə",
"desktop.menu.toggleDeveloperTools": "Tərtibatçı alətlərini aç/bağla",
"desktop.menu.actualSize": "Faktiki ölçü",
"desktop.menu.zoomIn": "Böyüt",
"desktop.menu.zoomOut": "Kiçilt",
"desktop.menu.toggleFullScreen": "Tam ekran rejimini aç/bağla",
"desktop.menu.back": "Geri",
"desktop.menu.forward": "İrəli",
"desktop.menu.previousSession": "Əvvəlki sessiya",
"desktop.menu.nextSession": "Növbəti sessiya",
"desktop.menu.previousProject": "Əvvəlki layihə",
"desktop.menu.nextProject": "Növbəti layihə",
"desktop.menu.minimize": "Kiçilt",
"desktop.menu.maximize": "Böyüt",
"desktop.menu.documentation": "OpenCode sənədləri",
"desktop.menu.supportForum": "Dəstək forumu",
"desktop.menu.shareFeedback": "Rəy bildir",
"desktop.menu.reportBug": "Xəta bildir",
"desktop.menu.ariaLabel": "OpenCode menyusu",
"desktop.updater.dialog.checkFailed.message": "Yeniləmələri yoxlamaq mümkün olmadı.",
"desktop.updater.dialog.checkFailed.title": "Yeniləmə xətası",
"desktop.updater.dialog.upToDate.message": "Ən son versiyadan istifadə edirsiniz.",
"desktop.updater.dialog.upToDate.title": "Yeniləmə yoxdur",
"desktop.updater.dialog.ready.message": "{{version}} yeniləməsi endirildi. İndi yenidən başlatmaq istəyirsiniz?",
"desktop.updater.dialog.ready.title": "Yeniləmə hazırdır",
"desktop.updater.dialog.restart": "Yenidən başlat",
"desktop.updater.dialog.later": "Daha sonra",
"desktop.recovery.action.relaunch": "Yenidən işə sal",
"desktop.recovery.action.exportLogs": "Jurnalları ixrac et",
"desktop.recovery.action.keepWaiting": "Gözləməyə davam et",
"desktop.recovery.action.quit": "Çıx",
"desktop.recovery.loadFailed": "OpenCode yüklənə bilmədi",
"desktop.recovery.terminated": "OpenCode pəncərəsinin işi gözlənilmədən dayandı",
"desktop.recovery.unresponsive": "OpenCode cavab vermir",
"desktop.recovery.unresponsive.detail":
"Tətbiqi yenidən işə sala, jurnalları aça və ya gözləməyə davam edə bilərsiniz.",
"desktop.recovery.loadFailed.detail": "Pəncərə: {{window}}\nURL: {{url}}\nXəta: {{code}} {{description}}",
"desktop.recovery.terminated.detail": "Pəncərə: {{window}}\nSəbəb: {{reason}}\nKod: {{code}}",
"desktop.recovery.unknown": "<naməlum>",
"desktop.dialog.chooseFolder": "Qovluq seçin",
"desktop.dialog.chooseFile": "Fayl seçin",
"desktop.dialog.saveFile": "Faylı saxla",
"desktop.dialog.files": "Fayllar",
"desktop.server.local": "Yerli server",
"desktop.wsl.error.windowsOnly": "WSL yalnız Windows-da əlçatandır",
"desktop.wsl.error.unavailable": "WSL əlçatan deyil",
"desktop.wsl.error.listInstalled": "Quraşdırılmış WSL distribütivlərini siyahılamaq mümkün olmadı",
"desktop.wsl.error.listOnline": "Onlayn WSL distribütivlərini siyahılamaq mümkün olmadı",
"desktop.wsl.error.executeDistro": "Distribütivdə əmrləri icra etmək mümkün deyil",
"desktop.wsl.error.installWsl": "WSL quraşdırılması uğursuz oldu",
"desktop.wsl.error.installDistro": "Distribütivi quraşdırmaq mümkün olmadı: {{distro}}",
"desktop.wsl.error.installOpencode": "OpenCode quraşdırılması uğursuz oldu",
"desktop.wsl.error.alreadyAdded": "{{distro}} artıq əlavə edilib",
"desktop.wsl.error.opencodeMissing": "Bu distribütivdə opencode quraşdırılmayıb",
"desktop.wsl.error.opencodeCannotRun": "opencode quraşdırılıb, lakin onu işə salmaq mümkün olmadı",
"desktop.wsl.error.opencodeNotInstalled": "OpenCode {{distro}} distribütivində quraşdırılmayıb",
"desktop.wsl.error.updateVersion":
"OpenCode yeniləməsi tamamlandı, lakin {{distro}} hələ də {{installed}} versiyasını bildirir; gözlənilən versiya: {{expected}}",
"desktop.wsl.error.noVersion": "versiya yoxdur",
"desktop.wsl.error.serverExited": "WSL serveri başladıqdan sonra dayandı (code={{code}} signal={{signal}})",
"desktop.wsl.error.serverExitedBeforeHealthy":
"WSL serveri işlək vəziyyətə gəlməzdən əvvəl dayandı (code={{code}} signal={{signal}}){{output}}",
"desktop.wsl.error.healthTimeout":
"{{distro}} üçün sidecar sağlamlıq yoxlamasının {{timeout}}ms gözləmə müddəti bitdi",
"desktop.wsl.error.commandTimeout": "{{command}} {{args}} üçün {{timeout}}ms gözləmə müddəti bitdi",
"desktop.wsl.error.failedPort": "Portu əldə etmək mümkün olmadı",
"desktop.picker.error.notSelected": "Seçim vasitəsində fayl seçilməyib",
"desktop.picker.error.sizeLimit": "Seçilmiş əlavələr {{limit}} MB limitini aşır",
"command.category.suggested": "Təklif olunan",
"command.category.view": "Görünüş",
"command.category.project": "Layihə",
"command.category.provider": "Provayder",
"command.category.server": "Server",
"command.category.session": "Sessiya",
"command.category.theme": "Mövzu",
"command.category.language": "Dil",
"command.category.file": "Fayl",
"command.category.context": "Kontekst",
"command.category.terminal": "Terminal",
"command.category.model": "Model",
"command.category.mcp": "MCP",
"command.category.agent": "Agent",
"command.category.permissions": "İcazələr",
"command.category.workspace": "İş sahəsi",
"command.category.settings": "Tənzimləmələr",
"command.logs.export": "Jurnalları ixrac et",
"theme.scheme.system": "Sistem",
"theme.scheme.light": "Açıq",
"theme.scheme.dark": "Tünd",
"command.sidebar.toggle": "Yan paneli aç/bağla",
"command.project.open": "Layihəni aç",
"command.project.previous": "Əvvəlki layihə",
"command.project.next": "Növbəti layihə",
"command.project.index": "{{index}} nömrəli layihəyə keç",
"command.provider.connect": "Provayderi qoş",
"command.server.switch": "Serveri dəyiş",
"command.settings.open": "Tənzimləmələri aç",
"command.session.previous": "Əvvəlki sessiya",
"command.session.next": "Növbəti sessiya",
"command.session.previous.unseen": "Əvvəlki oxunmamış sessiya",
"command.session.next.unseen": "Növbəti oxunmamış sessiya",
"command.session.archive": "Sessiyanı arxivlə",
"command.palette": "Əmr paneli",
"command.theme.cycle": "Mövzunu dəyiş",
"command.theme.set": "Mövzudan istifadə et: {{theme}}",
"command.theme.scheme.cycle": "Rəng sxemini dəyiş",
"command.theme.scheme.set": "Rəng sxemindən istifadə et: {{scheme}}",
"command.language.cycle": "Dili dəyiş",
"command.language.set": "Dildən istifadə et: {{language}}",
"command.session.new": "Yeni sessiya",
"command.file.open": "Faylı aç",
"command.tab.close": "Tabı bağla",
"command.tab.reopenClosed": "Bağlanmış tabı yenidən aç",
"command.context.addSelection": "Seçimi kontekstə əlavə et",
"command.context.addSelection.description": "Cari fayldan seçilmiş sətirləri əlavə et",
"command.input.focus": "Giriş sahəsinə fokusla",
"command.terminal.toggle": "Terminalı aç/bağla",
"command.fileTree.toggle": "Fayl ağacını aç/bağla",
"command.review.toggle": "İcmalı aç/bağla",
"command.terminal.new": "Yeni terminal",
"command.terminal.new.description": "Yeni terminal tabı yarat",
"command.steps.toggle": "Addımları aç/bağla",
"command.steps.toggle.description": "Cari mesaj üçün addımları göstər və ya gizlət",
"command.message.previous": "Əvvəlki mesaj",
"command.message.previous.description": "Əvvəlki istifadəçi mesajına keç",
"command.message.next": "Növbəti mesaj",
"command.message.next.description": "Növbəti istifadəçi mesajına keç",
"command.model.choose": "Model seç",
"command.model.choose.description": "Fərqli model seç",
"command.mcp.toggle": "MCP-ləri aç/bağla",
"command.mcp.toggle.description": "MCP-ləri aç/bağla",
"command.agent.cycle": "Agenti dəyiş",
"command.agent.cycle.description": "Növbəti agentə keç",
"command.agent.cycle.reverse": "Agenti geri dəyiş",
"command.agent.cycle.reverse.description": "Əvvəlki agentə keç",
"command.model.variant.cycle": "Düşünmə səviyyəsini dəyiş",
"command.model.variant.cycle.description": "Növbəti səviyyəyə keç",
"command.prompt.mode.shell": "Shell",
"command.prompt.mode.normal": "Prompt",
"command.permissions.autoaccept.enable": "İcazələri avtomatik qəbul et",
"command.permissions.autoaccept.disable": "İcazələrin avtomatik qəbulunu dayandır",
"command.workspace.toggle": "İş sahələrini aç/bağla",
"command.workspace.toggle.description": "Yan paneldə birdən çox iş sahəsini aktiv və ya deaktiv et",
"command.session.undo": "Geri al",
"command.session.undo.description": "Son mesajı geri al",
"command.session.redo": "Yenidən et",
"command.session.redo.description": "Son geri alınmış mesajı yenidən et",
"command.session.compact": "Sessiyanı sıxlaşdır",
"command.session.compact.description": "Kontekst həcmini azaltmaq üçün sessiyanı xülasə et",
"command.session.fork": "Mesajdan fork et",
"command.session.fork.description": "Əvvəlki mesajdan yeni sessiya yarat",
"command.session.share": "Sessiyanı paylaş",
"command.session.share.description": "Bu sessiyanı paylaş və URL-ni buferə kopyala",
"command.session.unshare": "Sessiyanın paylaşımını dayandır",
"command.session.unshare.description": "Bu sessiyanın paylaşımını dayandır",
"palette.search.placeholder": "Fayl, əmr və sessiya axtar",
"palette.search.placeholder.home": "Əmr və sessiyaları axtar",
"palette.empty": "Nəticə tapılmadı",
"palette.group.commands": "Əmrlər",
"palette.group.files": "Fayllar",
"dialog.provider.search.placeholder": "Provayderləri axtar",
"dialog.provider.empty": "Provayder tapılmadı",
"dialog.provider.group.popular": "Populyar",
"dialog.provider.group.other": "Digər",
"dialog.provider.custom.label": "Xüsusi OpenAI-a uyğun provayder",
"dialog.provider.tag.recommended": "Tövsiyə olunan",
"dialog.provider.opencode.note": "Claude, GPT, Gemini və daha çoxu daxil olmaqla seçilmiş modellər",
"dialog.provider.opencode.tagline": "Etibarlı optimallaşdırılmış modellər",
"dialog.provider.opencodeGo.tagline": "Hamı üçün aşağı qiymətli abunəlik",
"dialog.provider.anthropic.note": "Pro və Max daxil olmaqla Claude modellərinə birbaşa giriş",
"dialog.provider.copilot.note": "GitHub Copilot vasitəsilə kodlaşdırma yardımı üçün AI modelləri",
"dialog.provider.openai.note": "Sürətli və bacarıqlı ümumi AI tapşırıqları üçün GPT modelləri",
"dialog.provider.google.note": "Sürətli, strukturlaşdırılmış cavablar üçün Gemini modelləri",
"dialog.provider.openrouter.note": "Bir provayderdən bütün dəstəklənən modellərə giriş",
"dialog.provider.vercel.note": "Ağıllı yönləndirmə ilə AI modellərinə vahid giriş",
"dialog.model.select.title": "Model seç",
"dialog.model.search.placeholder": "Modelləri axtar",
"dialog.model.empty": "Model nəticəsi yoxdur",
"dialog.model.manage": "Modelləri idarə et",
"dialog.model.manage.description": "Model seçicisində hansı modellərin görünəcəyini fərdiləşdir.",
"dialog.model.manage.provider.toggle": "Bütün {{provider}} modellərini aç/bağla",
"dialog.model.unpaid.freeModels.title": "OpenCode tərəfindən təqdim olunan pulsuz modellər",
"dialog.model.unpaid.addMore.title": "Populyar provayderlərdən daha çox model əlavə edin",
"dialog.model.unpaid.viewMoreProviders": "Daha 70+ provayderə baxın",
"dialog.provider.viewAll": "Daha çox provayder göstər",
"provider.connect.title": "{{provider}} provayderini qoş",
"provider.connect.title.anthropicProMax": "Claude Pro/Max ilə daxil ol",
"provider.connect.selectMethod": "{{provider}} üçün giriş üsulunu seçin.",
"provider.connect.method.apiKey": "API açarı",
"provider.connect.method.browser": "Brauzer",
"provider.connect.method.headless": "Başsız",
"provider.connect.status.inProgress": "Avtorizasiya davam edir...",
"provider.connect.status.waiting": "Avtorizasiya gözlənilir...",
"provider.connect.status.failed": "Avtorizasiya uğursuz oldu: {{error}}",
"provider.connect.apiKey.description":
"Hesabınızı qoşmaq və OpenCode-da {{provider}} modellərindən istifadə etmək üçün {{provider}} API açarınızı daxil edin.",
"provider.connect.apiKey.label": "{{provider}} API açarı",
"provider.connect.apiKey.placeholder": "API açarı",
"provider.connect.apiKey.required": "API açarı tələb olunur",
"provider.connect.opencodeZen.line1":
"OpenCode Zen sizə kodlaşdırma agentləri üçün etibarlı optimallaşdırılmış seçilmiş modellər dəstinə giriş verir.",
"provider.connect.opencodeZen.line2":
"Tək bir API açarı ilə Claude, GPT, Gemini, GLM və daha çox modellərə giriş əldə edəcəksiniz.",
"provider.connect.opencodeZen.visit.prefix": "",
"provider.connect.opencodeZen.visit.link": "opencode.ai/zen",
"provider.connect.opencodeZen.visit.suffix": " səhifəsinə daxil olub API açarınızı əldə edin.",
"provider.connect.oauth.code.visit.prefix": "",
"provider.connect.oauth.code.visit.link": "Bu linkə",
"provider.connect.oauth.code.visit.suffix":
" daxil olub hesabınızı qoşmaq və OpenCode-da {{provider}} modellərindən istifadə etmək üçün avtorizasiya kodunuzu əldə edin.",
"provider.connect.oauth.code.label": "{{method}} avtorizasiya kodu",
"provider.connect.oauth.code.placeholder": "Avtorizasiya kodu",
"provider.connect.oauth.code.required": "Avtorizasiya kodu tələb olunur",
"provider.connect.oauth.code.invalid": "Yanlış avtorizasiya kodu",
"provider.connect.oauth.auto.visit.prefix": "",
"provider.connect.oauth.auto.visit.link": "Bu linkə",
"provider.connect.oauth.auto.visit.suffix":
" daxil olub aşağıdakı kodu daxil edərək hesabınızı qoşun və OpenCode-da {{provider}} modellərindən istifadə edin.",
"provider.connect.oauth.auto.confirmationCode": "Təsdiq kodu",
"provider.connect.toast.connected.title": "{{provider}} qoşuldu",
"provider.connect.toast.connected.description": "{{provider}} modelləri artıq istifadə üçün mövcuddur.",
"provider.custom.title": "Fərdi provayder",
"provider.custom.unavailable": "Fərdi provayderlər bu serverdə əlçatan deyil",
"provider.custom.description.prefix": "OpenAI ilə uyğun provayderi konfiqurasiya edin. ",
"provider.custom.description.link": "Provayder konfiqurasiyası sənədləri",
"provider.custom.description.suffix": "nə baxın.",
"provider.custom.field.providerID.label": "Provayder ID",
"provider.custom.field.providerID.placeholder": "myprovider",
"provider.custom.field.providerID.description": "Kiçik hərflər, rəqəmlər, tire və ya alt xətt",
"provider.custom.field.name.label": "Görünən ad",
"provider.custom.field.name.placeholder": "Mənim AI Provayderim",
"provider.custom.field.baseURL.label": "Əsas URL",
"provider.custom.field.baseURL.placeholder": "https://api.myprovider.com/v1",
"provider.custom.field.apiKey.label": "API açarı",
"provider.custom.field.apiKey.placeholder": "API açarı",
"provider.custom.field.apiKey.description":
"İstəyə bağlıdır. Autentifikasiyanı başlıqlar vasitəsilə idarə edirsinizsə, boş buraxın.",
"provider.custom.models.label": "Modellər",
"provider.custom.models.id.label": "ID",
"provider.custom.models.id.placeholder": "model-id",
"provider.custom.models.name.label": "Ad",
"provider.custom.models.name.placeholder": "Görünən ad",
"provider.custom.models.remove": "Modeli sil",
"provider.custom.models.add": "Model əlavə et",
"provider.custom.headers.label": "Başlıqlar (istəyə bağlı)",
"provider.custom.headers.key.label": "Başlıq",
"provider.custom.headers.key.placeholder": "Başlıq-Adı",
"provider.custom.headers.value.label": "Dəyər",
"provider.custom.headers.value.placeholder": "dəyər",
"provider.custom.headers.remove": "Başlığı sil",
"provider.custom.headers.add": "Başlıq əlavə et",
"provider.custom.error.providerID.required": "Provayder ID tələb olunur",
"provider.custom.error.providerID.format": "Kiçik hərflər, rəqəmlər, tire və ya alt xətt istifadə edin",
"provider.custom.error.providerID.exists": "Bu provayder ID artıq mövcuddur",
"provider.custom.error.name.required": "Görünən ad tələb olunur",
"provider.custom.error.baseURL.required": "Əsas URL tələb olunur",
"provider.custom.error.baseURL.format": "http:// və ya https:// ilə başlamalıdır",
"provider.custom.error.required": "Tələb olunur",
"provider.custom.error.duplicate": "Təkrar",
"provider.disconnect.toast.disconnected.title": "{{provider}} ayrıldı",
"provider.disconnect.toast.disconnected.description": "{{provider}} modelləri artıq mövcud deyil.",
"model.tag.free": "Pulsuz",
"model.tag.latest": "Ən son",
"model.provider.anthropic": "Anthropic",
"model.provider.openai": "OpenAI",
"model.provider.google": "Google",
"model.provider.xai": "xAI",
"model.provider.meta": "Meta",
"model.input.text": "mətn",
"model.input.image": "şəkil",
"model.input.audio": "səs",
"model.input.video": "video",
"model.input.pdf": "pdf",
"model.tooltip.allows": "Dəstəkləyir: {{inputs}}",
"model.tooltip.context.label": "Kontekst",
"model.tooltip.inputs": "Girişlər",
"model.tooltip.model": "Model",
"model.tooltip.provider": "Provayder",
"model.tooltip.reasoning": "Düşünmə",
"model.tooltip.reasoning.allowed": "Düşünməni dəstəkləyir",
"model.tooltip.reasoning.none": "Düşünmə yoxdur",
"model.tooltip.context": "Kontekst limiti {{limit}}",
"common.search.placeholder": "Axtar",
"common.goBack": "Geri keç",
"common.goForward": "İrəli keç",
"common.loading": "Yüklənir",
"common.loading.ellipsis": "...",
"common.cancel": "Ləğv et",
"common.clear": "Təmizlə",
"common.open": "Aç",
"common.connect": "Qoş",
"common.disconnect": "Ayır",
"common.continue": "Davam et",
"common.submit": "Göndər",
"common.save": "Saxla",
"common.saving": "Saxlanılır...",
"common.default": "Standart",
"common.attachment": "əlavə",
"prompt.placeholder.shell": "Qabıq əmrini daxil edin... {{example}}",
"prompt.placeholder.normal": 'Nə istəsəniz soruşun... "{{example}}"',
"prompt.placeholder.simple": "Nə istəsəniz soruşun...",
"prompt.placeholder.summarizeComments": "Şərhləri xülasə et…",
"prompt.placeholder.summarizeComment": "Şərhi xülasə et…",
"prompt.mode.shell": "Shell",
"prompt.mode.normal": "Prompt",
"prompt.mode.shell.exit": "çıxmaq üçün esc",
"session.child.promptDisabled": "Alt agent sessiyalarına prompt göndərmək olmaz.",
"session.child.backToParent": "Əsas sessiyaya qayıt.",
"prompt.example.1": "Kod bazasında TODO-nu həll et",
"prompt.example.2": "Bu layihənin texnologiya yığını nədir?",
"prompt.example.3": "Xətalı testləri düzəlt",
"prompt.example.4": "Autentifikasiyanın necə işlədiyini izah et",
"prompt.example.5": "Təhlükəsizlik boşluqlarını tap və düzəlt",
"prompt.example.6": "İstifadəçi xidməti üçün vahid testləri əlavə et",
"prompt.example.7": "Bu funksiyanı daha oxunaqlı hala gətir",
"prompt.example.8": "Bu xəta nə deməkdir?",
"prompt.example.9": "Bu problemi sazlamağa kömək et",
"prompt.example.10": "API sənədləri yarat",
"prompt.example.11": "Verilənlər bazası sorğularını optimallaşdır",
"prompt.example.12": "Giriş doğrulaması əlavə et",
"prompt.example.13": "Bunun üçün yeni komponent yarat...",
"prompt.example.14": "Bu layihəni necə yerləşdirə bilərəm?",
"prompt.example.15": "Kodumu qabaqcıl təcrübələr baxımından nəzərdən keçir",
"prompt.example.16": "Bu funksiyaya xəta idarəetməsi əlavə et",
"prompt.example.17": "Bu regex nümunəsini izah et",
"prompt.example.18": "Bunu TypeScript-ə çevir",
"prompt.example.19": "Bütün kod bazasına jurnallaşdırma əlavə et",
"prompt.example.20": "Hansı asılılıqlar köhnəlib?",
"prompt.example.21": "Miqrasiya skripti yazmağıma kömək et",
"prompt.example.22": "Bu endpoint üçün keşləmə tətbiq et",
"prompt.example.23": "Bu siyahıya səhifələmə əlavə et",
"prompt.example.24": "Bunun üçün CLI əmri yarat...",
"prompt.example.25": "Burada mühit dəyişənləri necə işləyir?",
"prompt.popover.emptyResults": "Uyğun nəticə yoxdur",
"prompt.popover.emptyCommands": "Uyğun əmr yoxdur",
"prompt.dropzone.label": "Şəkilləri, PDF-ləri və ya mətn fayllarını bura buraxın",
"prompt.dropzone.file.label": "Faylı @ ilə qeyd etmək üçün buraxın",
"prompt.slash.badge.custom": "fərdi",
"prompt.slash.badge.skill": "bacarıq",
"prompt.slash.badge.mcp": "mcp",
"prompt.context.active": "aktiv",
"prompt.context.includeActiveFile": "Aktiv faylı daxil et",
"prompt.context.removeActiveFile": "Aktiv faylı kontekstdən sil",
"prompt.context.removeFile": "Faylı kontekstdən sil",
"prompt.action.attachFile": "Fayllar əlavə et",
"prompt.menu.addImagesAndFiles": "Fayllar və daha çox əlavə edin",
"prompt.menu.imagesAndFiles": "Şəkillər və fayllar",
"prompt.menu.commands": "Əmrlər",
"prompt.menu.context": "Kontekst",
"prompt.menu.shellCommand": "Shell əmri",
"prompt.attachment.remove": "Əlavəni sil",
"prompt.action.send": "Göndər",
"prompt.action.stop": "Dayandır",
"prompt.toast.pasteUnsupported.title": "Dəstəklənməyən əlavə",
"prompt.toast.pasteUnsupported.description": "Buraya yalnız şəkillər, PDF-lər və ya mətn faylları əlavə edilə bilər.",
"prompt.toast.attachmentDuplicate.title": "Bu fayl artıq yüklənib",
"prompt.toast.modelAgentRequired.title": "Agent və model seçin",
"prompt.toast.modelAgentRequired.description": "Prompt göndərməzdən əvvəl agent və model seçin.",
"prompt.toast.worktreeCreateFailed.title": "Worktree yaradıla bilmədi",
"prompt.toast.sessionCreateFailed.title": "Sessiya yaradıla bilmədi",
"prompt.toast.shellSendFailed.title": "Shell əmri göndərilə bilmədi",
"prompt.toast.commandSendFailed.title": "Əmr göndərilə bilmədi",
"prompt.toast.promptSendFailed.title": "Prompt göndərilə bilmədi",
"prompt.toast.promptSendFailed.description": "Sessiya əldə edilə bilmədi",
"dialog.mcp.title": "MCP-lər",
"dialog.mcp.description": "{{total}}-dən {{enabled}} aktiv",
"dialog.mcp.empty": "MCP konfiqurasiya edilməyib",
"dialog.lsp.empty": "LSP-lər fayl növlərindən avtomatik aşkarlanır",
"dialog.plugins.empty": "Plaginlər opencode.json-da konfiqurasiya edilib",
"mcp.status.connected": "qoşulub",
"mcp.status.failed": "uğursuz",
"mcp.status.needs_auth": "avtorizasiya lazımdır",
"mcp.status.disabled": "deaktiv",
"mcp.auth.clickToAuthenticate": "Autentifikasiya üçün klikləyin",
"dialog.fork.empty": "Yeni sessiyaya ayırmaq üçün mesaj yoxdur",
"dialog.directory.search.placeholder": "Qovluqları axtar",
"dialog.directory.empty": "Qovluq tapılmadı",
"dialog.directory.action.selectFile": "Fayl seçin",
"dialog.directory.action.selectFolder": "Qovluğu seçin",
"dialog.directory.root": "Kök",
"dialog.directory.parent": "Üst qovluq",
"dialog.directory.readError": "Bu qovluğu oxumaq mümkün deyil",
"app.server.unreachable": "{{server}}-ə çatmaq mümkün olmadı",
"app.server.retrying": "Avtomatik olaraq yenidən cəhd edilir...",
"app.server.otherServers": "Digər serverlər",
"dialog.server.title": "Serverlər",
"dialog.server.description": "Bu tətbiqin qoşulduğu OpenCode serverini dəyişdirin.",
"dialog.server.search.placeholder": "Serverləri axtar",
"dialog.server.empty": "Hələ server yoxdur",
"dialog.server.add.title": "Server əlavə et",
"dialog.server.add.url": "Server ünvanı",
"dialog.server.add.placeholder": "http://localhost:4096",
"dialog.server.add.error": "Serverə qoşulmaq mümkün olmadı",
"dialog.server.add.checking": "Yoxlanılır...",
"dialog.server.add.button": "Server əlavə et",
"dialog.server.add.name": "Server adı (istəyə bağlı)",
"dialog.server.add.namePlaceholder": "Localhost",
"dialog.server.add.username": "İstifadəçi adı (istəyə bağlı)",
"dialog.server.add.usernamePlaceholder": "istifadəçi adı",
"dialog.server.add.password": "Şifrə (istəyə bağlı)",
"dialog.server.add.passwordPlaceholder": "parol",
"dialog.server.edit.title": "Serveri redaktə et",
"dialog.server.default.title": "Standart server",
"dialog.server.default.description":
"Tətbiq açıldıqda yerli server başlatmaq əvəzinə bu serverə qoşulun. Yenidən başlatma tələb olunur.",
"dialog.server.default.none": "Server seçilməyib",
"dialog.server.default.set": "Cari serveri standart olaraq təyin et",
"dialog.server.default.clear": "Təmizlə",
"dialog.server.action.remove": "Serveri sil",
"dialog.server.menu.edit": "Redaktə et",
"dialog.server.menu.default": "Standart olaraq təyin et",
"dialog.server.menu.defaultRemove": "Standartı sil",
"dialog.server.menu.delete": "Sil",
"dialog.server.current": "Cari server",
"dialog.server.status.default": "Standart",
"wsl.server.add": "WSL server əlavə edin",
"wsl.server.addShort": "WSL əlavə edin",
"wsl.server.label": "WSL",
"wsl.server.menu.label": "WSL server",
"wsl.server.retryStart": "Yenidən başlamağa cəhd edin",
"wsl.server.updating": "Yenilənir...",
"wsl.onboarding.step.distro": "Distribütiv seçin",
"wsl.onboarding.step.opencode": "OpenCode",
"wsl.onboarding.checkingRuntime": "WSL yoxlanılır...",
"wsl.onboarding.restartRequired":
"WSL-nin quraşdırılmasını başa çatdırmaq üçün Windows-un yenidən başlaması lazımdır.",
"wsl.onboarding.ready": "WSL hazırdır.",
"wsl.onboarding.required": "Davam etmək üçün WSL tələb olunur.",
"wsl.onboarding.checkingDistros": "Distribütivlər yoxlanılır...",
"wsl.onboarding.installingDistro": "{{distro}} quraşdırılır...",
"wsl.onboarding.checkingDistro": "{{distro}} yoxlanılır...",
"wsl.onboarding.listingDistros": "Distribütivlər siyahılanır...",
"wsl.onboarding.distroReady": "{{distro}} hazırdır.",
"wsl.onboarding.distroNotInstalled": "{{distro}} hələ quraşdırılmayıb.",
"wsl.onboarding.openDistroOnce": "Quraşdırmanı bitirmək üçün {{distro}}-ni bir dəfə açın.",
"wsl.onboarding.finishingDistro": "{{distro}} üçün quraşdırma tamamlanır.",
"wsl.onboarding.pickDistro": "Distribütiv seçin və ya aşağıdakılardan birini quraşdırın.",
"wsl.onboarding.checkingOpencode": "OpenCode yoxlanılır...",
"wsl.onboarding.checkingOpencodeIn": "{{distro}}-də OpenCode yoxlanılır...",
"wsl.onboarding.updatingOpencode": "OpenCode yenilənir...",
"wsl.onboarding.updatingOpencodeIn": "{{distro}}-də OpenCode yenilənir...",
"wsl.onboarding.updateOpencodeIn": "{{distro}}-də OpenCode-u yeniləyin.",
"wsl.onboarding.updateOpencode": "OpenCode-u yeniləyin",
"wsl.onboarding.opencodeReadyIn": "OpenCode {{distro}}-də hazırdır.",
"wsl.onboarding.opencodeReady": "OpenCode hazırdır.",
"wsl.onboarding.installOpencodeIn": "OpenCode-u {{distro}}-də quraşdırın.",
"wsl.onboarding.installOpencode": "OpenCode quraşdırın",
"wsl.onboarding.chooseDistroFirst": "Əvvəlcə distribütiv seçin.",
"wsl.onboarding.loadFailed": "WSL vəziyyətini yükləmək alınmadı.",
"wsl.onboarding.loading": "Yüklənir...",
"wsl.onboarding.installedDistros": "Quraşdırılmış distribütivlər",
"wsl.onboarding.checkAgain": "Yenidən yoxlayın",
"wsl.onboarding.distroStatus.ready": "Hazır",
"wsl.onboarding.distroStatus.checking": "Yoxlanır...",
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode quraşdırılmayıb",
"wsl.onboarding.distroStatus.missingTools": "Çatışmayan bash, curl",
"wsl.onboarding.distroStatus.unsupported": "Dəstəklənmir · WSL 2 istifadə edin",
"wsl.onboarding.needAnotherDistro": "Başqa distribütiv lazımdır?",
"wsl.onboarding.needAnotherDistroHint": "WSL kataloqundan Linux paylamasını quraşdırın",
"wsl.onboarding.wslNotInstalled.title": "WSL quraşdırılmayıb",
"wsl.onboarding.wslNotInstalled.description":
"OpenCode WSL serveri əlavə etməzdən əvvəl WSL (Linux üçün Windows alt sistemi) tələb olunur",
"wsl.onboarding.wslUnavailable.title": "WSL mövcud deyil",
"wsl.onboarding.wslUnavailable.description": "OpenCode bu maşında WSL-i doğrulaya bilmədi.",
"wsl.onboarding.installWsl": "WSL quraşdırın",
"wsl.onboarding.windowsRestartRequired":
"WSL-nin quraşdırılmasını başa çatdırmaq üçün Windows-u yenidən başladın, sonra OpenCode-u yenidən açın.",
"wsl.onboarding.next": "Növbəti",
"wsl.onboarding.refresh": "Yeniləyin",
"wsl.onboarding.allDistrosAdded": "Bütün quraşdırılmış distribütivlər artıq əlavə edilib.",
"wsl.onboarding.noDistros": "Hələ distribütiv aşkarlanmayıb.",
"wsl.onboarding.install": "Quraşdırın",
"wsl.onboarding.installing": "Quraşdırılır...",
"wsl.onboarding.installDistro": "Distribütiv quraşdırın",
"wsl.onboarding.searchDistros": "Distribütivləri axtar",
"wsl.onboarding.wsl2Required": "WSL 2 tələb olunur.",
"wsl.onboarding.toolsRequired": "Bu distribütiv üçün bash və curl tələb olunur.",
"wsl.onboarding.openTerminal": "Terminalı aç",
"wsl.onboarding.path": "Yol: {{path}}",
"wsl.onboarding.notFound": "tapılmadı",
"wsl.onboarding.version": "Versiya: {{version}}",
"wsl.onboarding.unknown": "naməlum",
"wsl.onboarding.desktopVersion": "masaüstü {{version}}",
"wsl.onboarding.versionMismatch": "Quraşdırılmış versiya masaüstü proqram versiyasına uyğun gəlmir.",
"wsl.onboarding.adding": "Əlavə edilir...",
"help.tabs.toast.ariaLabel": "Tablarla tanışlıq. İşinizi və aktiv sessiyalarınızı tablarla təşkil edin",
"help.tabs.toast.dismiss": "Tablar haqqında məlumatı bağla",
"help.tabs.title": "Tablarla tanışlıq",
"help.tabs.description": "İşinizi və aktiv sessiyalarınızı tablarla təşkil edin",
"help.tabs.date": "14 iyul",
"help.tabs.introduction": "OpenCode Desktop indi tablar əsasında qurulub.",
"help.tabs.sessions":
"Yeni sessiyanı tabda başladın və ya layihələrinizdən mövcud sessiyanı açın. Yeni işə başlayanda yeni tab açın, işi bitirdikdə isə onu bağlayın.",
"help.tabs.organize":
"Bir neçə tabı açıq saxlamaq aktiv sessiyalarınızı təşkil etməyi asanlaşdırır. Onları saxlamağı planlaşdırırsınızsa, tablara yadda qalan adlar verin.",
"help.tabs.home":
"Bütün sessiya və layihələrinizi yeni Ana səhifədə tapa bilərsiniz. Sessiyanı seçdikdə o, tabda açılır.",
"help.tabs.persistence": "Tətbiqi yenidən açdıqda tablarınız açıq qalır.",
"help.tabs.worktrees":
"Yeni dizayn hələ Git Worktrees-i dəstəkləmir, lakin bu imkan tezliklə əlavə olunacaq. Əvvəlki tərtibatdan istifadə etməyə davam etmək istəyirsinizsə, Tənzimləmələrdə tərtibatlar arasında keçid edə bilərsiniz. Nəzərə alın ki, yeni tərtibat bir neçə həftədən sonra daimi olacaq.",
"server.row.noUsername": "istifadəçi adı yoxdur",
"dialog.project.edit.title": "Layihəni redaktə et",
"dialog.project.edit.name": "Ad",
"dialog.project.edit.icon": "İkon",
"dialog.project.edit.icon.alt": "Layihə ikonu",
"dialog.project.edit.icon.hint": "Şəkilə klikləyin və ya onu sürükləyin",
"dialog.project.edit.icon.recommended": "Tövsiyə: 128x128px",
"dialog.project.edit.color": "Rəng",
"dialog.project.edit.color.select": "{{color}} rəngini seçin",
"dialog.project.edit.worktree.startup": "İş sahəsi başlanğıc skripti",
"dialog.project.edit.worktree.startup.description": "Yeni iş sahəsi (worktree) yaradıldıqdan sonra işləyir.",
"dialog.project.edit.worktree.startup.placeholder": "məs. bun install",
"dialog.releaseNotes.action.getStarted": "Başla",
"dialog.releaseNotes.action.next": "Növbəti",
"dialog.releaseNotes.action.hideFuture": "Gələcəkdə göstərmə",
"dialog.releaseNotes.media.alt": "Buraxılış önbaxışı",
"context.breakdown.title": "Kontekst bölgüsü",
"context.breakdown.note": 'Giriş tokenlərinin təxmini bölgüsü. "Digər" alət təriflərini və əlavə yükü əhatə edir.',
"context.breakdown.system": "Sistem",
"context.breakdown.user": "İstifadəçi",
"context.breakdown.assistant": "Köməkçi",
"context.breakdown.tool": "Alət çağırışları",
"context.breakdown.other": "Digər",
"context.systemPrompt.title": "Sistem promptu",
"context.rawMessages.title": "Xam mesajlar",
"context.stats.session": "Sessiya",
"context.stats.messages": "Mesajlar",
"context.stats.provider": "Provayder",
"context.stats.model": "Model",
"context.stats.limit": "Kontekst limiti",
"context.stats.totalTokens": "Ümumi tokenlər",
"context.stats.usage": "İstifadə",
"context.stats.inputTokens": "Giriş tokenləri",
"context.stats.outputTokens": "Çıxış tokenləri",
"context.stats.reasoningTokens": "Düşünmə tokenləri",
"context.stats.cacheTokens": "Keş tokenləri (oxuma/yazma)",
"context.stats.userMessages": "İstifadəçi mesajları",
"context.stats.assistantMessages": "Köməkçi mesajları",
"context.stats.totalCost": "Ümumi xərc",
"context.stats.sessionCreated": "Sessiya yaradıldı",
"context.stats.lastActivity": "Son fəaliyyət",
"context.usage.tokens": "Tokenlər",
"context.usage.usage": "İstifadə",
"context.usage.cost": "Xərc",
"context.usage.clickToView": "Kontekstə baxmaq üçün klikləyin",
"context.usage.view": "Kontekst istifadəsinə bax",
"language.en": "English",
"language.zh": "简体中文",
"language.zht": "繁體中文",
"language.ko": "한국어",
"language.de": "Deutsch",
"language.es": "Español",
"language.fr": "Français",
"language.da": "Dansk",
"language.ja": "日本語",
"language.pl": "Polski",
"language.ru": "Русский",
"language.ar": "العربية",
"language.no": "Norsk",
"language.br": "Português (Brasil)",
"language.bs": "Bosanski",
"language.uk": "Українська",
"language.th": "ไทย",
"language.tr": "Türkçe",
"toast.language.title": "Dil",
"toast.language.description": "{{language}} dilinə keçildi",
"toast.theme.title": "Mövzu dəyişdirildi",
"toast.scheme.title": "Rəng sxemi",
"toast.workspace.enabled.title": "İş sahələri aktivləşdirildi",
"toast.workspace.enabled.description": "Birdən çox worktree indi yan paneldə göstərilir",
"toast.workspace.disabled.title": "İş sahələri deaktiv edildi",
"toast.workspace.disabled.description": "Yan paneldə yalnız əsas worktree göstərilir",
"toast.permissions.autoaccept.on.title": "İcazələr avtomatik qəbul edilir",
"toast.permissions.autoaccept.on.description": "İcazə sorğuları avtomatik təsdiqlənəcək",
"toast.permissions.autoaccept.off.title": "İcazələrin avtomatik qəbulu dayandırıldı",
"toast.permissions.autoaccept.off.description": "İcazə sorğuları təsdiq tələb edəcək",
"toast.model.none.title": "Model seçilməyib",
"toast.model.none.description": "Bu sessiyanı xülasə etmək üçün provayder qoşun",
"toast.file.loadFailed.title": "Fayl yüklənə bilmədi",
"toast.file.listFailed.title": "Fayllar siyahılana bilmədi",
"toast.context.noLineSelection.title": "Sətir seçimi yoxdur",
"toast.context.noLineSelection.description": "Əvvəlcə fayl tabında sətir aralığı seçin.",
"toast.session.share.copyFailed.title": "URL buferə kopyalana bilmədi",
"toast.session.share.success.title": "Sessiya paylaşıldı",
"toast.session.share.success.description": "Paylaşma URL-si buferə kopyalandı!",
"toast.session.share.failed.title": "Sessiya paylaşıla bilmədi",
"toast.session.share.failed.description": "Sessiyanı paylaşarkən xəta baş verdi",
"toast.session.unshare.success.title": "Sessiyanın paylaşımı dayandırıldı",
"toast.session.unshare.success.description": "Sessiyanın paylaşımı uğurla dayandırıldı!",
"toast.session.unshare.failed.title": "Sessiyanın paylaşımı dayandırıla bilmədi",
"toast.session.unshare.failed.description": "Sessiyanın paylaşımını dayandırarkən xəta baş verdi",
"toast.session.listFailed.title": "{{project}} üçün sessiyalar yüklənə bilmədi",
"toast.project.reloadFailed.title": "{{project}} yenidən yüklənə bilmədi",
"toast.update.title": "Yeniləmə mövcuddur",
"toast.update.description": "OpenCode-un yeni versiyası ({{version}}) quraşdırma üçün mövcuddur.",
"toast.update.action.installRestart": "Quraşdır və yenidən başlat",
"toast.update.action.notYet": "Hələ yox",
"error.page.title": "Xəta baş verdi",
"error.page.description": "Tətbiq yüklənərkən xəta baş verdi.",
"error.page.description.localServerStartup": "Lokal serveri işə salarkən xəta baş verdi.",
"error.page.details.label": "Xəta detalları",
"error.page.action.restart": "Yenidən başlat",
"error.page.action.report": "Xəta bildirin",
"error.page.action.reported": "Xəta bildirildi",
"error.page.action.exportLogs": "Qeydləri ixrac edin",
"error.page.action.checking": "Yoxlanılır...",
"error.page.action.checkUpdates": "Yeniləmələri yoxla",
"error.page.action.updateTo": "{{version}} versiyasına yenilə",
"error.page.circular": "[Dairəvi]",
"error.page.report.prefix": "Bu xətanı OpenCode komandasına",
"error.page.report.discord": "Discord-da bildirin",
"error.page.version": "Versiya: {{version}}",
"error.dev.rootNotFound":
"Kök element tapılmadı. index.html-ə əlavə etməyi unutmusunuz? Yoxsa id atributu səhv yazılıb?",
"error.serverSync.connectFailed": "Serverə qoşulmaq mümkün olmadı. `{{url}}`-də işləyən server varmı?",
"error.serverSDK.noServerAvailable": "Əlçatan server yoxdur",
"error.serverSDK.serverNotAvailable": "Server mövcud deyil",
"error.childStore.persistedCacheCreateFailed": "Qalıcı keş yaradıla bilmədi",
"error.childStore.persistedProjectMetadataCreateFailed": "Qalıcı layihə metadatası yaradıla bilmədi",
"error.childStore.persistedProjectIconCreateFailed": "Qalıcı layihə nişanı yaradıla bilmədi",
"error.childStore.storeCreateFailed": "Saxlanc yaradıla bilmədi",
"directory.error.invalidUrl": "URL-də yanlış qovluq.",
"error.chain.unknown": "Naməlum xəta",
"error.server.invalidConfiguration": "Yanlış konfiqurasiya",
"error.chain.causedBy": "Səbəb:",
"error.chain.apiError": "API xətası",
"error.chain.status": "Status: {{status}}",
"error.chain.retryable": "Təkrar cəhd mümkündür: {{retryable}}",
"error.chain.responseBody": "Cavab gövdəsi:\n{{body}}",
"error.chain.didYouMean": "Bunu nəzərdə tuturdunuz: {{suggestions}}",
"error.chain.modelNotFound": "Model tapılmadı: {{provider}}/{{model}}",
"error.chain.checkConfig": "Konfiqurasiyanızdakı (opencode.json) provayder/model adlarını yoxlayın",
"error.chain.mcpFailed":
'MCP server "{{name}}" uğursuz oldu. Qeyd: OpenCode hələ MCP autentifikasiyasını dəstəkləmir.',
"error.chain.providerAuthFailed": "Provayder autentifikasiyası uğursuz oldu ({{provider}}): {{message}}",
"error.chain.providerInitFailed":
'"{{provider}}" provayderinin işə salınması uğursuz oldu. Giriş məlumatlarını və konfiqurasiyanı yoxlayın.',
"error.chain.configJsonInvalid": "{{path}} ünvanındakı konfiqurasiya faylı etibarlı JSON(C) deyil",
"error.chain.configJsonInvalidWithMessage":
"{{path}} ünvanındakı konfiqurasiya faylı etibarlı JSON(C) deyil: {{message}}",
"error.chain.configDirectoryTypo":
'{{path}} içindəki "{{dir}}" qovluğu etibarlı deyil. Qovluğu "{{suggestion}}" adına dəyişdirin və ya silin. Bu ümumi bir yazım xətasıdır.',
"error.chain.configFrontmatterError": "{{path}} faylındakı frontmatter təhlil edilə bilmədi:\n{{message}}",
"error.chain.configInvalid": "{{path}} ünvanındakı konfiqurasiya faylı etibarsızdır",
"error.chain.configInvalidWithMessage": "{{path}} ünvanındakı konfiqurasiya faylı etibarsızdır: {{message}}",
"notification.permission.title": "İcazə tələb olunur",
"notification.permission.description": "{{projectName}} layihəsində {{sessionTitle}} icazə tələb edir",
"notification.question.title": "Sual",
"notification.question.description": "{{projectName}} layihəsində {{sessionTitle}} sualı var",
"notification.action.goToSession": "Sessiyaya keç",
"notification.session.responseReady.title": "Cavab hazırdır",
"notification.session.error.title": "Sessiya xətası",
"notification.session.error.fallbackDescription": "Xəta baş verdi",
"home.recentProjects": "Son layihələr",
"home.empty.title": "Son layihə yoxdur",
"home.empty.description": "Yerli layihə açaraq başlayın",
"home.title": "Ana səhifə",
"home.projects": "Layihələr",
"home.project.add": "Layihə əlavə edin",
"home.recentlyClosed": "Bu yaxınlarda bağlandı",
"home.server.collapse": "Server layihələrini yığışdırın",
"home.server.expand": "Server layihələrini genişləndirin",
"home.sessions.search.placeholder": "Sessiyaları axtar",
"home.sessions.search.placeholder.scoped": "{{scope}}-də sessiyaları axtarın",
"home.sessions.search.sessions": "Sessiyalar",
"home.sessions.search.noResults": "{{query}} üçün sessiya tapılmadı",
"home.sessions.empty": "Burada hələ heç nə yoxdur",
"home.sessions.empty.description": "Başlamaq üçün sessiya yaradın",
"home.sessions.group.today": "Bu gün",
"home.sessions.group.yesterday": "Dünən",
"home.sessions.group.older": "Daha əvvəl",
"home.providerTip":
"Claude, GPT, Gemini və s. daxil olmaqla, digər modellərdən istifadə etmək üçün 75+ provayderə qoşulun",
"session.tab.session": "Sessiya",
"session.tab.review": "İcmal",
"session.tab.context": "Kontekst",
"session.tab.unknown": "Naməlum sessiya",
"session.panel.reviewAndFiles": "İcmal və fayllar",
"session.error.notFound": "Bu sessiyanı tapmaq mümkün deyil",
"session.error.notFound.description": "Bu tab artıq bu serverdə olmayan sessiyaya işarə edir.",
"session.error.notFound.closeTab": "Tabı bağla",
"session.error.serverConnection": "Bu serverə qoşulmaq mümkün deyil",
"session.review.filesChanged": "{{count}} fayl dəyişdi",
"session.review.change.one": "Dəyişiklik",
"session.review.change.other": "Dəyişikliklər",
"session.review.loadingChanges": "Dəyişikliklər yüklənir...",
"session.review.empty": "Bu sessiyada hələ dəyişiklik yoxdur",
"session.review.noVcs": "Git versiyaya nəzarət sistemi aşkarlanmadı; sessiya dəyişiklikləri göstərilməyəcək",
"session.review.noVcs.createGit.title": "Git repozitoriyası yaradın",
"session.review.noVcs.createGit.description": "Bu layihədə dəyişiklikləri izləyin, nəzərdən keçirin və ləğv edin",
"session.review.noVcs.createGit.actionLoading": "Git repozitoriyası yaradılır...",
"session.review.noVcs.createGit.action": "Git repozitoriyası yaradın",
"session.review.noSnapshot":
"Snapshot izləmə konfiqurasiyada deaktiv edilib, ona görə də sessiya dəyişiklikləri əlçatan deyil",
"session.review.noChanges": "Dəyişiklik yoxdur",
"session.review.noUncommittedChanges": "Hələ commit edilməmiş dəyişiklik yoxdur",
"session.review.noBranchChanges": "Hələ branch dəyişikliyi yoxdur",
"session.files.selectToOpen": "Açmaq üçün fayl seçin",
"session.files.all": "Bütün fayllar",
"session.files.empty": "Fayl yoxdur",
"session.files.binaryContent": "İkili fayl (məzmun göstərilə bilmir)",
"session.messages.renderEarlier": "Əvvəlki mesajları göstər",
"session.messages.loadingEarlier": "Əvvəlki mesajlar yüklənir...",
"session.messages.loadEarlier": "Əvvəlki mesajları yüklə",
"session.messages.loading": "Mesajlar yüklənir...",
"session.messages.jumpToLatest": "Ən sonuncuya keç",
"session.context.addToContext": "{{selection}} kontekstə əlavə et",
"session.todo.title": "Tapşırıqlar",
"session.todo.collapse": "Yığ",
"session.todo.expand": "Genişlət",
"session.todo.progress": "{{total}} tapşırıqdan {{done}}-i tamamlandı",
"session.question.progress": "{{total}} sualdan {{current}}-i",
"session.question.minimize": "Sualı kiçilt",
"session.question.restore": "Sualı bərpa edin",
"session.question.pending.one": "{{count}} cavab gözləyən sual",
"session.question.pending.other": "{{count}} cavab gözləyən sual",
"session.followupDock.summary.one": "{{count}} növbəyə qoyulmuş mesaj",
"session.followupDock.summary.other": "{{count}} növbəyə qoyulmuş mesajlar",
"session.followupDock.sendNow": "İndi göndər",
"session.followupDock.edit": "Redaktə et",
"session.followupDock.collapse": "Növbəyə qoyulmuş mesajları yığcamlaşdırın",
"session.followupDock.expand": "Növbəyə qoyulmuş mesajları genişləndirin",
"session.revertDock.summary.one": "{{count}} geri alınmış mesaj",
"session.revertDock.summary.other": "{{count}} geri alınmış mesaj",
"session.revertDock.collapse": "Geri alınmış mesajları yığcamlaşdırın",
"session.revertDock.expand": "Geri qaytarılmış mesajları genişləndirin",
"session.revertDock.restore": "Mesajı bərpa edin",
"session.new.title": "İstədiyinizi qurun",
"session.new.project.new": "Yeni layihə",
"session.new.project.search": "Layihələri axtarın",
"session.new.project.add": "Layihə əlavə edin",
"session.new.worktree.main": "Əsas branch",
"session.new.worktree.mainWithBranch": "Əsas branch ({{branch}})",
"session.new.worktree.create": "Yeni worktree yarat",
"session.new.workspace.runIn": "Sessiyanı burada işə sal",
"session.new.workspace.triggerLocal": "Yerli",
"session.new.workspace.local": "Yerli depo",
"session.new.workspace.existing": "İş sahəsi…",
"session.new.git.none": "Git yoxdur",
"session.new.lastModified": "Son dəyişiklik",
"session.header.search.placeholder": "{{project}} axtar",
"session.header.searchFiles": "Faylları axtar",
"session.header.openIn": "Burada aç:",
"session.header.open.action": "{{app}} tətbiqini aç",
"session.header.open.ariaLabel": "{{app}} tətbiqində aç",
"session.header.open.menu": "Seçimləri aç",
"session.header.open.copyPath": "Yolu kopyala",
"session.header.open.finder": "Finder",
"session.header.open.fileExplorer": "File Explorer",
"session.header.open.fileManager": "Fayl meneceri",
"session.header.reveal.finder": "Finder-də göstər",
"session.header.reveal.fileExplorer": "File Explorer-də göstər",
"session.header.reveal.containingFolder": "Tərkibindəki qovluğu açın",
"session.header.open.app.vscode": "VS Code",
"session.header.open.app.cursor": "Cursor",
"session.header.open.app.zed": "Zed",
"session.header.open.app.textmate": "TextMate",
"session.header.open.app.antigravity": "Antigravity",
"session.header.open.app.terminal": "Terminal",
"session.header.open.app.iterm2": "iTerm2",
"session.header.open.app.ghostty": "Ghostty",
"session.header.open.app.warp": "Warp",
"session.header.open.app.xcode": "Xcode",
"session.header.open.app.androidStudio": "Android Studio",
"session.header.open.app.powershell": "PowerShell",
"session.header.open.app.sublimeText": "Sublime Text",
"status.popover.trigger": "Status",
"status.popover.ariaLabel": "Server konfiqurasiyaları",
"status.popover.tab.servers": "Serverlər",
"status.popover.tab.mcp": "MCP",
"status.popover.tab.lsp": "LSP",
"status.popover.tab.plugins": "Plaginlər",
"status.popover.action.manageServers": "Serverləri idarə et",
"session.share.popover.title": "Vebdə dərc et",
"session.share.popover.description.shared": "Bu sessiya vebdə açıqdır. Linkə sahib olan hər kəs daxil ola bilər.",
"session.share.popover.description.unshared":
"Sessiyanı vebdə açıq paylaşın. Linkə sahib olan hər kəs daxil ola biləcək.",
"session.share.action.share": "Paylaş",
"session.share.action.publish": "Dərc et",
"session.share.action.publishing": "Dərc edilir...",
"session.share.action.unpublish": "Dərcdən çıxar",
"session.share.action.unpublishing": "Dərcdən çıxarılır...",
"session.share.action.view": "Bax",
"session.share.copy.copied": "Kopyalandı",
"session.share.copy.copyLink": "Linki kopyala",
"lsp.tooltip.none": "LSP server yoxdur",
"lsp.label.connected": "{{count}} LSP",
"prompt.loading": "Prompt yüklənir...",
"terminal.loading": "Terminal yüklənir...",
"terminal.title": "Terminal",
"terminal.title.numbered": "Terminal {{number}}",
"terminal.close": "Terminalı bağla",
"terminal.connectionLost.title": "Bağlantı kəsildi",
"terminal.connectionLost.abnormalClose": "WebSocket anormal bağlandı: {{code}}",
"terminal.connectionLost.description": "Terminal bağlantısı kəsildi. Bu server yenidən başladıqda baş verə bilər.",
"terminal.connectTicket.csrfError":
"PTY bağlantı bileti mənşə və ya CSRF yoxlaması zamanı rədd edildi. Serverin CORS konfiqurasiyasını yoxlayın.",
"terminal.connectTicket.statusError": "PTY bağlantı bileti {{status}} statusu ilə uğursuz oldu",
"titlebar.update": "Yenilə",
"titlebar.updateVersion": "Yenilə {{version}}",
"common.closeTab": "Tabı bağla",
"common.dismiss": "Bağla",
"common.moreCountSuffix": " (+{{count}} daha)",
"common.requestFailed": "Sorğu uğursuz oldu",
"common.moreOptions": "Daha çox seçim",
"common.learnMore": "Ətraflı öyrən",
"common.rename": "Adını dəyiş",
"common.reset": "Sıfırla",
"common.archive": "Arxivlə",
"common.delete": "Sil",
"common.close": "Bağla",
"common.edit": "Redaktə et",
"common.loadMore": "Daha çox yüklə",
"common.key.esc": "ESC",
"common.key.ctrl": "Ctrl",
"common.key.alt": "Alt",
"common.key.shift": "Shift",
"common.key.meta": "Meta",
"common.key.space": "Boşluq",
"common.key.backspace": "Backspace",
"common.key.enter": "Enter",
"common.key.tab": "Tab",
"common.key.delete": "Sil",
"common.key.home": "Home",
"common.key.end": "Son",
"common.key.pageUp": "Səhifə Yuxarı",
"common.key.pageDown": "Səhifə Aşağı",
"common.key.insert": "Daxil et",
"common.unknown": "naməlum",
"common.time.justNow": "İndicə",
"common.time.minutesAgo.short": "{{count}}d əvvəl",
"common.time.hoursAgo.short": "{{count}}s əvvəl",
"common.time.daysAgo.short": "{{count}}g əvvəl",
"sidebar.menu.toggle": "Menyunu aç/bağla",
"sidebar.nav.projectsAndSessions": "Layihələr və sessiyalar",
"sidebar.settings": "Tənzimləmələr",
"sidebar.help": "Kömək",
"sidebar.workspaces.enable": "İş sahələrini aktivləşdir",
"sidebar.workspaces.disable": "İş sahələrini deaktiv et",
"sidebar.gettingStarted.title": "Başlanğıc",
"sidebar.gettingStarted.line1": "OpenCode-a pulsuz modellər daxildir, buna görə dərhal başlaya bilərsiniz.",
"sidebar.gettingStarted.line2":
"Claude, GPT, Gemini və s. kimi modellərdən istifadə etmək üçün istənilən provayderi qoşun.",
"sidebar.project.recentSessions": "Son sessiyalar",
"sidebar.project.viewAllSessions": "Bütün sessiyalara bax",
"sidebar.project.clearNotifications": "Bildirişləri təmizlə",
"sidebar.empty.title": "Heç bir layihə açılmayıb",
"sidebar.empty.description": "Başlamaq üçün bir layihə açın",
"debugBar.ariaLabel": "Tərtibatçı performans diaqnostikası",
"debugBar.na": "yox",
"debugBar.nav.label": "NAV",
"debugBar.nav.tip":
"Sessiya səhifəsinə aid son tamamlanmış marşrut keçidi; marşrutlaşdırıcının başladığı andan keçid tamamlandıqdan sonrakı ilk göstərilməyədək ölçülür.",
"debugBar.fps.label": "FPS",
"debugBar.fps.tip": "Son 5 saniyə üzrə saniyədə kadrların hərəkətli orta qiyməti.",
"debugBar.frame.label": "FRAME",
"debugBar.frame.tip": "Son 5 saniyədə ən uzun kadr müddəti.",
"debugBar.jank.label": "JANK",
"debugBar.jank.tip": "Son 5 saniyədə 32 ms-dən uzun çəkən kadrlar.",
"debugBar.long.label": "LONG",
"debugBar.long.tip": "Son 5 saniyədə bloklanma müddəti və uzun tapşırıqların sayı. Ən uzun tapşırıq: {{max}}.",
"debugBar.delay.label": "DELAY",
"debugBar.delay.tip": "Son 5 saniyədə müşahidə olunan ən uzun daxiletmə gecikməsi.",
"debugBar.inp.label": "INP",
"debugBar.inp.tip":
"Son 5 saniyədə təxmini qarşılıqlı əlaqə müddəti. Bu, rəsmi Web Vitals INP göstəricisi deyil, ona bənzər göstəricidir.",
"debugBar.cls.label": "CLS",
"debugBar.cls.tip": "Tətbiqin cari işləmə müddəti üzrə məcmu tərtibat sürüşməsi.",
"debugBar.mem.label": "MEM",
"debugBar.mem.tipUnavailable": "İstifadə olunmuş JS yığını və yığın limiti. Yalnız Chromium.",
"debugBar.mem.tip": "İstifadə olunmuş JS yığını və yığın limiti. {{used}} və {{limit}}.",
"app.name.desktop": "OpenCode Desktop",
"settings.section.desktop": "Masaüstü",
"settings.section.server": "Server",
"settings.tab.general": "Ümumi",
"settings.tab.shortcuts": "Qısa yollar",
"settings.desktop.section.wsl": "WSL",
"settings.desktop.wsl.title": "WSL inteqrasiyası",
"settings.desktop.wsl.description": "Windows-da WSL daxilində OpenCode serverini işlət.",
"settings.general.section.appearance": "Görünüş",
"settings.general.section.advanced": "Qabaqcıl",
"settings.general.section.notifications": "Sistem bildirişləri",
"settings.general.section.updates": "Yeniləmələr",
"settings.general.section.sounds": "Səs effektləri",
"settings.general.section.feed": "Lenta",
"settings.general.section.display": "Ekran",
"settings.general.row.language.title": "Dil",
"settings.general.row.language.description": "OpenCode üçün ekran dilini dəyişdirin",
"settings.general.row.shell.title": "Terminal qabığı",
"settings.general.row.shell.description": "Terminal və agent alətləri tərəfindən istifadə edilən qabıq",
"settings.general.row.shell.autoDefault": "Avtomatik (Standart)",
"settings.general.row.shell.terminalOnly": "yalnız terminal",
"settings.general.row.appearance.title": "Görünüş",
"settings.general.row.appearance.description": "OpenCode-un cihazınızda necə göründüyünü fərdiləşdirin",
"settings.general.row.colorScheme.title": "Rəng sxemi",
"settings.general.row.colorScheme.description":
"OpenCode-un sistem, açıq və ya tünd mövzudan istifadə etməsini seçin",
"settings.general.row.theme.title": "Mövzu",
"settings.general.row.theme.description": "OpenCode-un mövzusunu fərdiləşdirin.",
"settings.general.row.font.title": "Kod şrifti",
"settings.general.row.font.description": "Kod bloklarında istifadə olunan mono şrifti fərdiləşdirin",
"settings.general.row.terminalFont.title": "Terminal şrifti",
"settings.general.row.terminalFont.description": "Terminalda istifadə olunan şrifti fərdiləşdirin",
"settings.general.row.uiFont.title": "İnterfeys şrifti",
"settings.general.row.uiFont.description": "Bütün interfeysdə istifadə olunan şrifti fərdiləşdirin",
"settings.general.row.followup.title": "Sonrakı sorğuların davranışı",
"settings.general.row.followup.description":
"Sonrakı sorğuların dərhal yönləndirilməsini və ya növbədə gözləməsini seçin",
"settings.general.row.followup.option.queue": "Növbə",
"settings.general.row.followup.option.steer": "Yönləndir",
"settings.general.row.showFileTree.title": "Fayl ağacı",
"settings.general.row.showFileTree.description": "Seanslarda fayl ağacı panelini göstərin",
"settings.general.row.showNavigation.title": "Naviqasiya nəzarətləri",
"settings.general.row.showNavigation.description":
"Masaüstü tətbiqin başlıq zolağında geri və irəli düymələrini göstərin",
"settings.general.row.showSearch.title": "Komanda palitrası",
"settings.general.row.showSearch.description": "Başlıq çubuğunda axtarış və əmr palitrası düyməsini göstərin",
"settings.general.row.showTerminal.title": "Terminal",
"settings.general.row.showTerminal.description": "Masaüstü tətbiqin başlıq zolağında terminal düyməsini göstərin",
"settings.general.row.showStatus.title": "Server statusu",
"settings.general.row.showStatus.description": "Başlıq çubuğunda server statusu düyməsini göstərin",
"settings.general.row.mobileTitlebarBottom.title": "Aşağı naviqasiya",
"settings.general.row.mobileTitlebarBottom.description":
"Başlıq çubuğunu və sessiya tablarını mobil cihazda ekranın aşağısına yerləşdirin",
"settings.general.row.showCustomAgents.title": "Agenti göstər",
"settings.general.row.showCustomAgents.description":
"Mesaj sahəsində agentlər arasında keçid edin. Gizlədildikdə Build agenti seçilir.",
"settings.general.row.reasoningSummaries.title": "Düşünmə xülasələrini göstər",
"settings.general.row.reasoningSummaries.description": "Zaman xəttində modelin düşünmə xülasələrini göstər",
"settings.general.row.shellToolPartsExpanded.title": "Shell alət hissələrini genişlət",
"settings.general.row.shellToolPartsExpanded.description":
"Zaman xəttində shell alət hissələrini standart olaraq genişlədilmiş göstər",
"settings.general.row.editToolPartsExpanded.title": "Redaktə alət hissələrini genişlət",
"settings.general.row.editToolPartsExpanded.description":
"Zaman xəttində redaktə, yazma və patch alət hissələrini standart olaraq genişlədilmiş göstər",
"settings.general.row.newInterface.title": "Yeni tərtibat",
"settings.general.row.newInterface.badge": "Yeni",
"settings.general.row.newInterface.description":
"Yeni tab və ana səhifə tərtibatından istifadə edin. Məhdud müddət ərzində tərtibatlar arasında keçid edin.",
"settings.general.row.newInterfaceNotice.title": "İndi yeni tərtibatdan istifadə edirsiniz",
"settings.general.row.newInterfaceNotice.description": "Əvvəlki tərtibat artıq mövcud deyil",
"settings.general.row.newInterfaceNotice.dismiss": "Rədd et",
"settings.general.row.pinchZoom.title": "Böyütmək üçün çimdikləyin",
"settings.general.row.pinchZoom.description":
"Trekpadda çimdikləmə və Ctrl-sürüşdürmə jestləri ilə miqyaslamağa icazə verin",
"settings.general.row.wayland.title": "Nativ Wayland-dan istifadə et",
"settings.general.row.wayland.description": "Wayland-da X11 geri dönüşünü deaktiv et. Yenidən başlatma tələb olunur.",
"settings.general.row.wayland.tooltip":
"Qarışıq yeniləmə tezlikli monitorlu Linux-da nativ Wayland daha sabit ola bilər.",
"settings.general.row.releaseNotes.title": "Buraxılış qeydləri",
"settings.general.row.releaseNotes.description": "Yeniləmələrdən sonra yenilikləri göstər",
"settings.updates.row.startup.title": "Başlanğıcda yeniləmələri yoxla",
"settings.updates.row.startup.description": "OpenCode açıldıqda avtomatik yeniləmələri yoxla",
"settings.updates.row.check.title": "Yeniləmələri yoxla",
"settings.updates.row.check.description": "Əl ilə yeniləmələri yoxla və mövcud olduqda quraşdır",
"settings.updates.action.checkNow": "İndi yoxla",
"settings.updates.action.checking": "Yoxlanılır...",
"settings.updates.action.downloading": "Yüklənir...",
"settings.updates.action.installing": "Quraşdırılır...",
"settings.updates.toast.latest.title": "Ən son versiyadan istifadə edirsiniz",
"settings.updates.toast.latest.description": "OpenCode-un ən son versiyasından istifadə edirsiniz.",
"sound.option.none": "Yoxdur",
"sound.option.alert01": "Alert 01",
"sound.option.alert02": "Alert 02",
"sound.option.alert03": "Alert 03",
"sound.option.alert04": "Alert 04",
"sound.option.alert05": "Alert 05",
"sound.option.alert06": "Alert 06",
"sound.option.alert07": "Alert 07",
"sound.option.alert08": "Alert 08",
"sound.option.alert09": "Alert 09",
"sound.option.alert10": "Alert 10",
"sound.option.bipbop01": "Bip-bop 01",
"sound.option.bipbop02": "Bip-bop 02",
"sound.option.bipbop03": "Bip-bop 03",
"sound.option.bipbop04": "Bip-bop 04",
"sound.option.bipbop05": "Bip-bop 05",
"sound.option.bipbop06": "Bip-bop 06",
"sound.option.bipbop07": "Bip-bop 07",
"sound.option.bipbop08": "Bip-bop 08",
"sound.option.bipbop09": "Bip-bop 09",
"sound.option.bipbop10": "Bip-bop 10",
"sound.option.staplebops01": "Staplebops 01",
"sound.option.staplebops02": "Staplebops 02",
"sound.option.staplebops03": "Staplebops 03",
"sound.option.staplebops04": "Staplebops 04",
"sound.option.staplebops05": "Staplebops 05",
"sound.option.staplebops06": "Staplebops 06",
"sound.option.staplebops07": "Staplebops 07",
"sound.option.nope01": "Nope 01",
"sound.option.nope02": "Nope 02",
"sound.option.nope03": "Nope 03",
"sound.option.nope04": "Nope 04",
"sound.option.nope05": "Nope 05",
"sound.option.nope06": "Nope 06",
"sound.option.nope07": "Nope 07",
"sound.option.nope08": "Nope 08",
"sound.option.nope09": "Nope 09",
"sound.option.nope10": "Nope 10",
"sound.option.nope11": "Nope 11",
"sound.option.nope12": "Nope 12",
"sound.option.yup01": "Yup 01",
"sound.option.yup02": "Yup 02",
"sound.option.yup03": "Yup 03",
"sound.option.yup04": "Yup 04",
"sound.option.yup05": "Yup 05",
"sound.option.yup06": "Yup 06",
"settings.general.notifications.agent.title": "Agent",
"settings.general.notifications.agent.description":
"Agent tamamlandıqda və ya diqqət tələb etdikdə sistem bildirişi göstər",
"settings.general.notifications.permissions.title": "İcazələr",
"settings.general.notifications.permissions.description": "İcazə tələb olunduqda sistem bildirişi göstər",
"settings.general.notifications.errors.title": "Xətalar",
"settings.general.notifications.errors.description": "Xəta baş verdikdə sistem bildirişi göstər",
"settings.general.sounds.agent.title": "Agent",
"settings.general.sounds.agent.description": "Agent tamamlandıqda və ya diqqət tələb etdikdə səs çal",
"settings.general.sounds.permissions.title": "İcazələr",
"settings.general.sounds.permissions.description": "İcazə tələb olunduqda səs çal",
"settings.general.sounds.errors.title": "Xətalar",
"settings.general.sounds.errors.description": "Xəta baş verdikdə səs çal",
"settings.shortcuts.title": "Klaviatura qısa yolları",
"settings.shortcuts.reset.button": "Standartlara sıfırla",
"settings.shortcuts.reset.toast.title": "Qısa yollar sıfırlandı",
"settings.shortcuts.reset.toast.description": "Klaviatura qısa yolları standartlara sıfırlandı.",
"settings.shortcuts.conflict.title": "Qısa yol artıq istifadə olunur",
"settings.shortcuts.conflict.description": "{{keybind}} artıq {{titles}} üçün təyin edilib.",
"settings.shortcuts.unassigned": "Təyin edilməyib",
"settings.shortcuts.pressKeys": "Düymələrə basın",
"settings.shortcuts.search.placeholder": "Qısa yolları axtar",
"settings.shortcuts.search.empty": "Qısa yol tapılmadı",
"settings.shortcuts.group.general": "Ümumi",
"settings.shortcuts.group.session": "Sessiya",
"settings.shortcuts.group.navigation": "Naviqasiya",
"settings.shortcuts.group.modelAndAgent": "Model və agent",
"settings.shortcuts.group.terminal": "Terminal",
"settings.shortcuts.group.prompt": "Prompt",
"settings.providers.title": "Provayderlər",
"settings.providers.description": "Provayder tənzimləmələri burada konfiqurasiya edilə biləcək.",
"settings.providers.section.connected": "Qoşulmuş provayderlər",
"settings.providers.connected.empty": "Qoşulmuş provayder yoxdur",
"settings.providers.connected.environmentDescription": "Mühit dəyişənlərinizdən qoşulub",
"settings.providers.section.popular": "Populyar provayderlər",
"settings.providers.custom.description": "Əsas URL ilə OpenAI-uyğun provayder əlavə edin.",
"settings.providers.tag.environment": "Mühit",
"settings.providers.tag.config": "Konfiqurasiya",
"settings.providers.tag.custom": "Fərdi",
"settings.providers.tag.other": "Digər",
"settings.models.title": "Modellər",
"settings.models.description": "Model tənzimləmələri burada konfiqurasiya edilə biləcək.",
"settings.agents.title": "Agentlər",
"settings.agents.description": "Agent tənzimləmələri burada konfiqurasiya edilə biləcək.",
"settings.commands.title": "Əmrlər",
"settings.commands.description": "Əmr tənzimləmələri burada konfiqurasiya edilə biləcək.",
"settings.mcp.title": "MCP",
"settings.mcp.description": "MCP tənzimləmələri burada konfiqurasiya edilə biləcək.",
"settings.permissions.title": "İcazələr",
"settings.permissions.description": "Serverin standart olaraq hansı alətləri istifadə edə biləcəyini idarə edin.",
"settings.permissions.section.tools": "Alətlər",
"settings.permissions.toast.updateFailed.title": "İcazələr yenilənə bilmədi",
"settings.permissions.action.allow": "İcazə ver",
"settings.permissions.action.ask": "Soruş",
"settings.permissions.action.deny": "Rədd et",
"settings.permissions.tool.read.title": "Oxu",
"settings.permissions.tool.read.description": "Fayl oxuma (fayl yoluna uyğun gəlir)",
"settings.permissions.tool.edit.title": "Redaktə",
"settings.permissions.tool.edit.description": "Redaktə, yazma və yamaq tətbiqi daxil olmaqla faylları dəyişdir",
"settings.permissions.tool.glob.title": "Glob",
"settings.permissions.tool.glob.description": "Glob nümunələri ilə faylları uyğunlaşdır",
"settings.permissions.tool.grep.title": "Grep",
"settings.permissions.tool.grep.description": "Müntəzəm ifadələrlə fayl məzmununu axtar",
"settings.permissions.tool.list.title": "Siyahı",
"settings.permissions.tool.list.description": "Qovluq daxilindəki faylları siyahıla",
"settings.permissions.tool.bash.title": "Bash",
"settings.permissions.tool.bash.description": "Shell əmrlərini işlət",
"settings.permissions.tool.task.title": "Tapşırıq",
"settings.permissions.tool.task.description": "Alt agentləri işə sal",
"settings.permissions.tool.skill.title": "Bacarıq",
"settings.permissions.tool.skill.description": "Adla bacarıq yüklə",
"settings.permissions.tool.lsp.title": "LSP",
"settings.permissions.tool.lsp.description": "Dil server sorğularını işlət",
"settings.permissions.tool.todowrite.title": "Tapşırıq yaz",
"settings.permissions.tool.todowrite.description": "Tapşırıq siyahısını yenilə",
"settings.permissions.tool.webfetch.title": "Veb əldə et",
"settings.permissions.tool.webfetch.description": "URL-dən məzmun əldə et",
"settings.permissions.tool.websearch.title": "Veb axtarış",
"settings.permissions.tool.websearch.description": "Vebdə axtar",
"settings.permissions.tool.external_directory.title": "Xarici qovluq",
"settings.permissions.tool.external_directory.description": "Layihə qovluğundan kənardakı fayllara daxil ol",
"settings.permissions.tool.doom_loop.title": "Sonsuz dövr",
"settings.permissions.tool.doom_loop.description": "Eyni girişlə təkrarlanan alət çağırışlarını aşkarla",
"session.delete.failed.title": "Sessiya silinə bilmədi",
"session.delete.title": "Sessiyanı sil",
"session.delete.confirm": '"{{name}}" sessiyasını silmək istəyirsiniz?',
"session.delete.button": "Sessiyanı sil",
"workspace.new": "Yeni iş sahəsi",
"workspace.type.local": "yerli",
"workspace.type.sandbox": "sandbox",
"workspace.create.failed.title": "İş sahəsi yaradıla bilmədi",
"workspace.delete.failed.title": "İş sahəsi silinə bilmədi",
"workspace.resetting.title": "İş sahəsi sıfırlanır",
"workspace.resetting.description": "Bu bir dəqiqə çəkə bilər.",
"workspace.reset.failed.title": "İş sahəsi sıfırlana bilmədi",
"workspace.reset.success.title": "İş sahəsi sıfırlandı",
"workspace.reset.success.description": "İş sahəsi indi standart branch ilə uyğunlaşır.",
"workspace.error.stillPreparing": "İş sahəsi hələ hazırlanır",
"workspace.status.checking": "Birləşdirilməmiş dəyişikliklər yoxlanılır...",
"workspace.status.error": "Git statusu doğrulana bilmədi.",
"workspace.status.clean": "Birləşdirilməmiş dəyişiklik aşkarlanmadı.",
"workspace.status.dirty": "Bu iş sahəsində birləşdirilməmiş dəyişikliklər aşkarlandı.",
"workspace.delete.title": "İş sahəsini sil",
"workspace.delete.confirm": '"{{name}}" iş sahəsini silmək istəyirsiniz?',
"workspace.delete.button": "İş sahəsini sil",
"workspace.reset.title": "İş sahəsini sıfırla",
"workspace.reset.confirm": '"{{name}}" iş sahəsini sıfırlamaq istəyirsiniz?',
"workspace.reset.button": "İş sahəsini sıfırla",
"workspace.reset.archived.none": "Heç bir aktiv sessiya arxivlənməyəcək.",
"workspace.reset.archived.one": "1 sessiya arxivlənəcək.",
"workspace.reset.archived.many": "{{count}} sessiya arxivlənəcək.",
"workspace.reset.note": "Bu iş sahəsini standart branch ilə uyğunlaşdırmaq üçün sıfırlayacaq.",
}
+179 -44
View File
@@ -1,4 +1,104 @@
export const dict = {
"desktop.menu.app": "OpenCode",
"desktop.menu.file": "Arquivo",
"desktop.menu.edit": "Editar",
"desktop.menu.view": "Visualizar",
"desktop.menu.go": "Ir",
"desktop.menu.window": "Janela",
"desktop.menu.help": "Ajuda",
"desktop.menu.checkForUpdates": "Verificar atualizações...",
"desktop.menu.settings": "Configurações",
"desktop.menu.reloadWebview": "Recarregar WebView",
"desktop.menu.restart": "Reiniciar",
"desktop.menu.exportLogs": "Exportar logs...",
"desktop.menu.newSession": "Nova sessão",
"desktop.menu.openProject": "Abrir projeto...",
"desktop.menu.newWindow": "Nova janela",
"desktop.menu.closeWindow": "Fechar janela",
"desktop.menu.undo": "Desfazer",
"desktop.menu.redo": "Refazer",
"desktop.menu.cut": "Recortar",
"desktop.menu.copy": "Copiar",
"desktop.menu.paste": "Colar",
"desktop.menu.delete": "Excluir",
"desktop.menu.selectAll": "Selecionar tudo",
"desktop.menu.toggleSidebar": "Alternar barra lateral",
"desktop.menu.toggleTerminal": "Alternar terminal",
"desktop.menu.toggleFileTree": "Alternar árvore de arquivos",
"desktop.menu.reload": "Recarregar",
"desktop.menu.toggleDeveloperTools": "Alternar ferramentas de desenvolvedor",
"desktop.menu.actualSize": "Tamanho real",
"desktop.menu.zoomIn": "Ampliar",
"desktop.menu.zoomOut": "Reduzir",
"desktop.menu.toggleFullScreen": "Alternar tela inteira",
"desktop.menu.back": "Voltar",
"desktop.menu.forward": "Avançar",
"desktop.menu.previousSession": "Sessão anterior",
"desktop.menu.nextSession": "Próxima sessão",
"desktop.menu.previousProject": "Projeto anterior",
"desktop.menu.nextProject": "Próximo projeto",
"desktop.menu.minimize": "Minimizar",
"desktop.menu.maximize": "Maximizar",
"desktop.menu.documentation": "Documentação do OpenCode",
"desktop.menu.supportForum": "Fórum de suporte",
"desktop.menu.shareFeedback": "Enviar comentários",
"desktop.menu.reportBug": "Relatar um bug",
"desktop.menu.ariaLabel": "Menu do OpenCode",
"desktop.updater.dialog.checkFailed.message": "Falha ao verificar atualizações.",
"desktop.updater.dialog.checkFailed.title": "Erro de atualização",
"desktop.updater.dialog.upToDate.message": "Você está em dia.",
"desktop.updater.dialog.upToDate.title": "Nenhuma atualização",
"desktop.updater.dialog.ready.message": "A atualização {{version}} foi baixada. Deseja reiniciar agora?",
"desktop.updater.dialog.ready.title": "Atualização pronta",
"desktop.updater.dialog.restart": "Reiniciar",
"desktop.updater.dialog.later": "Mais tarde",
"desktop.recovery.action.relaunch": "Reabrir",
"desktop.recovery.action.exportLogs": "Exportar logs",
"desktop.recovery.action.keepWaiting": "Continuar aguardando",
"desktop.recovery.action.quit": "Encerrar",
"desktop.recovery.loadFailed": "Falha ao carregar o OpenCode",
"desktop.recovery.terminated": "A janela do OpenCode foi encerrada inesperadamente",
"desktop.recovery.unresponsive": "O OpenCode não está respondendo",
"desktop.recovery.unresponsive.detail": "Você pode reabrir o aplicativo, abrir os logs ou continuar aguardando.",
"desktop.recovery.loadFailed.detail": "Janela: {{window}}\nURL: {{url}}\nErro: {{code}} {{description}}",
"desktop.recovery.terminated.detail": "Janela: {{window}}\nMotivo: {{reason}}\nCódigo: {{code}}",
"desktop.recovery.unknown": "<desconhecido>",
"desktop.dialog.chooseFolder": "Escolher uma pasta",
"desktop.dialog.chooseFile": "Escolher um arquivo",
"desktop.dialog.saveFile": "Salvar arquivo",
"desktop.dialog.files": "Arquivos",
"desktop.server.local": "Servidor local",
"desktop.wsl.error.windowsOnly": "O WSL está disponível somente no Windows",
"desktop.wsl.error.unavailable": "O WSL está indisponível",
"desktop.wsl.error.listInstalled": "Falha ao listar as distribuições WSL instaladas",
"desktop.wsl.error.listOnline": "Falha ao listar as distribuições WSL disponíveis online",
"desktop.wsl.error.executeDistro": "Não é possível executar comandos na distribuição",
"desktop.wsl.error.installWsl": "Falha na instalação do WSL",
"desktop.wsl.error.installDistro": "Falha ao instalar a distribuição: {{distro}}",
"desktop.wsl.error.installOpencode": "Falha na instalação do OpenCode",
"desktop.wsl.error.alreadyAdded": "{{distro}} já foi adicionada",
"desktop.wsl.error.opencodeMissing": "O opencode não está instalado nesta distribuição",
"desktop.wsl.error.opencodeCannotRun": "O opencode está instalado, mas não pôde ser executado",
"desktop.wsl.error.opencodeNotInstalled": "O OpenCode não está instalado em {{distro}}",
"desktop.wsl.error.updateVersion":
"A atualização do OpenCode foi concluída, mas {{distro}} ainda informa a versão {{installed}}; a versão esperada é {{expected}}",
"desktop.wsl.error.noVersion": "sem versão",
"desktop.wsl.error.serverExited":
"O servidor WSL foi encerrado após a inicialização (código={{code}} sinal={{signal}})",
"desktop.wsl.error.serverExitedBeforeHealthy":
"O servidor WSL foi encerrado antes de ficar íntegro (código={{code}} sinal={{signal}}){{output}}",
"desktop.wsl.error.healthTimeout":
"O tempo limite da verificação de integridade do sidecar de {{distro}} foi excedido após {{timeout}}ms",
"desktop.wsl.error.commandTimeout": "O tempo limite de {{command}} {{args}} foi excedido após {{timeout}}ms",
"desktop.wsl.error.failedPort": "Falha ao obter a porta",
"desktop.picker.error.notSelected": "O arquivo não foi selecionado pelo seletor",
"desktop.picker.error.sizeLimit": "Os anexos selecionados excedem o limite de {{limit}} MB",
"command.category.suggested": "Sugerido",
"command.category.view": "Visualizar",
"command.category.project": "Projeto",
@@ -16,6 +116,7 @@ export const dict = {
"command.category.permissions": "Permissões",
"command.category.workspace": "Espaço de trabalho",
"command.category.settings": "Configurações",
"command.logs.export": "Exportar logs",
"theme.scheme.system": "Sistema",
"theme.scheme.light": "Claro",
"theme.scheme.dark": "Escuro",
@@ -94,13 +195,14 @@ export const dict = {
"dialog.provider.empty": "Nenhum provedor encontrado",
"dialog.provider.group.popular": "Popular",
"dialog.provider.group.other": "Outro",
"dialog.provider.custom.label": "Provedor personalizado compatível com OpenAI",
"dialog.provider.tag.recommended": "Recomendado",
"dialog.provider.opencode.note": "Modelos selecionados incluindo Claude, GPT, Gemini e mais",
"dialog.provider.opencode.tagline": "Modelos otimizados e confiáveis",
"dialog.provider.opencodeGo.tagline": "Assinatura de baixo custo para todos",
"dialog.provider.anthropic.note": "Conectar com Claude Pro/Max ou chave de API",
"dialog.provider.copilot.note": "Conectar com Copilot ou chave de API",
"dialog.provider.openai.note": "Conectar com ChatGPT Pro/Plus ou chave de API",
"dialog.provider.anthropic.note": "Acesso direto aos modelos Claude, incluindo Pro e Max",
"dialog.provider.copilot.note": "Modelos de IA para auxílio à programação pelo GitHub Copilot",
"dialog.provider.openai.note": "Modelos GPT rápidos e avançados para tarefas gerais de IA",
"dialog.provider.google.note": "Modelos Gemini para respostas rápidas e estruturadas",
"dialog.provider.openrouter.note": "Acesse todos os modelos suportados de um único provedor",
"dialog.provider.vercel.note": "Acesso unificado a modelos de IA com roteamento inteligente",
@@ -112,11 +214,14 @@ export const dict = {
"dialog.model.manage.provider.toggle": "Alternar todos os modelos {{provider}}",
"dialog.model.unpaid.freeModels.title": "Modelos gratuitos fornecidos pelo OpenCode",
"dialog.model.unpaid.addMore.title": "Adicionar mais modelos de provedores populares",
"dialog.model.unpaid.viewMoreProviders": "Ver mais de 70 provedores",
"dialog.provider.viewAll": "Ver mais provedores",
"provider.connect.title": "Conectar {{provider}}",
"provider.connect.title.anthropicProMax": "Entrar com Claude Pro/Max",
"provider.connect.selectMethod": "Selecionar método de login para {{provider}}.",
"provider.connect.method.apiKey": "Chave de API",
"provider.connect.method.browser": "Navegador",
"provider.connect.method.headless": "Sem interface gráfica",
"provider.connect.status.inProgress": "Autorização em andamento...",
"provider.connect.status.waiting": "Aguardando autorização...",
"provider.connect.status.failed": "Autorização falhou: {{error}}",
@@ -148,15 +253,16 @@ export const dict = {
"provider.connect.toast.connected.title": "{{provider}} conectado",
"provider.connect.toast.connected.description": "Modelos do {{provider}} agora estão disponíveis para uso.",
"provider.custom.title": "Provedor personalizado",
"provider.custom.unavailable": "Provedores personalizados não estão disponíveis neste servidor",
"provider.custom.description.prefix": "Configure um provedor compatível com OpenAI. Veja a ",
"provider.custom.description.link": "documentação de configuração do provedor",
"provider.custom.description.suffix": ".",
"provider.custom.field.providerID.label": "ID do Provedor",
"provider.custom.field.providerID.label": "ID do provedor",
"provider.custom.field.providerID.placeholder": "meuprovedor",
"provider.custom.field.providerID.description": "Letras minúsculas, números, hifens ou sublinhados",
"provider.custom.field.name.label": "Nome de exibição",
"provider.custom.field.name.placeholder": "Meu Provedor de IA",
"provider.custom.field.baseURL.label": "URL Base",
"provider.custom.field.name.placeholder": "Meu provedor de IA",
"provider.custom.field.baseURL.label": "URL base",
"provider.custom.field.baseURL.placeholder": "https://api.meuprovedor.com/v1",
"provider.custom.field.apiKey.label": "Chave de API",
"provider.custom.field.apiKey.placeholder": "Chave de API",
@@ -165,7 +271,7 @@ export const dict = {
"provider.custom.models.id.label": "ID",
"provider.custom.models.id.placeholder": "id-do-modelo",
"provider.custom.models.name.label": "Nome",
"provider.custom.models.name.placeholder": "Nome de Exibição",
"provider.custom.models.name.placeholder": "Nome de exibição",
"provider.custom.models.remove": "Remover modelo",
"provider.custom.models.add": "Adicionar modelo",
"provider.custom.headers.label": "Cabeçalhos (opcional)",
@@ -175,11 +281,11 @@ export const dict = {
"provider.custom.headers.value.placeholder": "valor",
"provider.custom.headers.remove": "Remover cabeçalho",
"provider.custom.headers.add": "Adicionar cabeçalho",
"provider.custom.error.providerID.required": "ID do Provedor é obrigatório",
"provider.custom.error.providerID.required": "O ID do provedor é obrigatório",
"provider.custom.error.providerID.format": "Use letras minúsculas, números, hifens ou sublinhados",
"provider.custom.error.providerID.exists": "Esse ID de provedor já existe",
"provider.custom.error.name.required": "Nome de exibição é obrigatório",
"provider.custom.error.baseURL.required": "URL Base é obrigatória",
"provider.custom.error.name.required": "O nome de exibição é obrigatório",
"provider.custom.error.baseURL.required": "A URL base é obrigatória",
"provider.custom.error.baseURL.format": "Deve começar com http:// ou https://",
"provider.custom.error.required": "Obrigatório",
"provider.custom.error.duplicate": "Duplicado",
@@ -215,7 +321,7 @@ export const dict = {
"common.clear": "Limpar",
"common.connect": "Conectar",
"common.disconnect": "Desconectar",
"common.continue": "Enviar",
"common.continue": "Continuar",
"common.submit": "Enviar",
"common.save": "Salvar",
"common.saving": "Salvando...",
@@ -267,7 +373,7 @@ export const dict = {
"prompt.context.includeActiveFile": "Incluir arquivo ativo",
"prompt.context.removeActiveFile": "Remover arquivo ativo do contexto",
"prompt.context.removeFile": "Remover arquivo do contexto",
"prompt.action.attachFile": "Anexar arquivo",
"prompt.action.attachFile": "Adicionar arquivos",
"prompt.menu.addImagesAndFiles": "Adicionar arquivos e mais",
"prompt.menu.imagesAndFiles": "Imagens e arquivos",
"prompt.menu.commands": "Comandos",
@@ -288,7 +394,7 @@ export const dict = {
"prompt.toast.promptSendFailed.title": "Falha ao enviar prompt",
"prompt.toast.promptSendFailed.description": "Não foi possível recuperar a sessão",
"dialog.mcp.title": "MCPs",
"dialog.mcp.description": "{{enabled}} of {{total}} habilitados",
"dialog.mcp.description": "{{enabled}} de {{total}} ativados",
"dialog.mcp.empty": "Nenhum MCP configurado",
"dialog.lsp.empty": "LSPs detectados automaticamente pelos tipos de arquivo",
"dialog.plugins.empty": "Plugins configurados em opencode.json",
@@ -310,11 +416,11 @@ export const dict = {
"dialog.server.search.placeholder": "Buscar servidores",
"dialog.server.empty": "Nenhum servidor ainda",
"dialog.server.add.title": "Adicionar um servidor",
"dialog.server.add.url": "URL do servidor",
"dialog.server.add.url": "Endereço do servidor",
"dialog.server.add.placeholder": "http://localhost:4096",
"dialog.server.add.error": "Não foi possível conectar ao servidor",
"dialog.server.add.checking": "Verificando...",
"dialog.server.add.button": "Adicionar",
"dialog.server.add.button": "Adicionar servidor",
"dialog.server.add.name": "Nome do servidor (opcional)",
"dialog.server.add.namePlaceholder": "Localhost",
"dialog.server.add.username": "Nome de usuário (opcional)",
@@ -322,7 +428,7 @@ export const dict = {
"dialog.server.edit.title": "Editar servidor",
"dialog.server.default.title": "Servidor padrão",
"dialog.server.default.description":
"Conectar a este servidor na inicialização do aplicativo ao invés de iniciar um servidor local. Requer reinicialização.",
"Conectar a este servidor na inicialização do aplicativo em vez de iniciar um servidor local. Requer reinicialização.",
"dialog.server.default.none": "Nenhum servidor selecionado",
"dialog.server.default.set": "Definir servidor atual como padrão",
"dialog.server.default.clear": "Limpar",
@@ -402,6 +508,21 @@ export const dict = {
"wsl.onboarding.desktopVersion": "desktop {{version}}",
"wsl.onboarding.versionMismatch": "A versão instalada não corresponde à versão do aplicativo para desktop.",
"wsl.onboarding.adding": "Adicionando...",
"help.tabs.toast.ariaLabel": "Apresentamos as abas. Organize seu trabalho e suas sessões ativas com abas",
"help.tabs.toast.dismiss": "Dispensar informações sobre as abas",
"help.tabs.title": "Apresentamos as abas",
"help.tabs.description": "Organize seu trabalho e suas sessões ativas com abas",
"help.tabs.date": "14 de julho",
"help.tabs.introduction": "Agora, o OpenCode Desktop é organizado em abas.",
"help.tabs.sessions":
"Inicie uma nova sessão em uma aba ou abra uma sessão existente de qualquer um dos seus projetos. Abra uma nova aba quando começar algo novo e feche-a quando terminar.",
"help.tabs.organize":
"Manter algumas abas abertas facilita a organização das sessões ativas. Renomeie as abas com nomes fáceis de lembrar se pretende mantê-las abertas.",
"help.tabs.home":
"Você encontrará todas as suas sessões e projetos na nova tela Início. Ao selecionar uma sessão, ela será aberta em uma aba.",
"help.tabs.persistence": "Quando você reabrir o aplicativo, suas abas ainda estarão abertas.",
"help.tabs.worktrees":
"O novo design ainda não oferece suporte a Git Worktrees, mas esse recurso estará disponível em breve. Se preferir continuar usando o layout anterior, você poderá alternar entre os layouts nas Configurações. Lembre-se apenas de que o novo layout se tornará permanente em algumas semanas.",
"dialog.project.edit.title": "Editar projeto",
"dialog.project.edit.name": "Nome",
"dialog.project.edit.icon": "Ícone",
@@ -412,33 +533,33 @@ export const dict = {
"dialog.project.edit.color.select": "Selecionar cor {{color}}",
"dialog.project.edit.worktree.startup": "Script de inicialização do espaço de trabalho",
"dialog.project.edit.worktree.startup.description": "Executa após criar um novo espaço de trabalho (worktree).",
"dialog.project.edit.worktree.startup.placeholder": "ex: bun install",
"context.breakdown.title": "Detalhamento do Contexto",
"dialog.project.edit.worktree.startup.placeholder": "Ex.: bun install",
"context.breakdown.title": "Detalhamento do contexto",
"context.breakdown.note":
'Detalhamento aproximado dos tokens de entrada. "Outros" inclui definições de ferramentas e overhead.',
'Detalhamento aproximado dos tokens de entrada. "Outros" inclui definições de ferramentas e sobrecarga.',
"context.breakdown.system": "Sistema",
"context.breakdown.user": "Usuário",
"context.breakdown.assistant": "Assistente",
"context.breakdown.tool": "Chamadas de Ferramentas",
"context.breakdown.tool": "Chamadas de ferramentas",
"context.breakdown.other": "Outros",
"context.systemPrompt.title": "Prompt do Sistema",
"context.systemPrompt.title": "Prompt do sistema",
"context.rawMessages.title": "Mensagens brutas",
"context.stats.session": "Sessão",
"context.stats.messages": "Mensagens",
"context.stats.provider": "Provedor",
"context.stats.model": "Modelo",
"context.stats.limit": "Limite de Contexto",
"context.stats.totalTokens": "Total de Tokens",
"context.stats.limit": "Limite de contexto",
"context.stats.totalTokens": "Total de tokens",
"context.stats.usage": "Uso",
"context.stats.inputTokens": "Tokens de Entrada",
"context.stats.outputTokens": "Tokens de Saída",
"context.stats.reasoningTokens": "Tokens de Raciocínio",
"context.stats.cacheTokens": "Tokens de Cache (leitura/escrita)",
"context.stats.userMessages": "Mensagens de Usuário",
"context.stats.assistantMessages": "Mensagens do Assistente",
"context.stats.totalCost": "Custo Total",
"context.stats.sessionCreated": "Sessão Criada",
"context.stats.lastActivity": "Última Atividade",
"context.stats.inputTokens": "Tokens de entrada",
"context.stats.outputTokens": "Tokens de saída",
"context.stats.reasoningTokens": "Tokens de raciocínio",
"context.stats.cacheTokens": "Tokens de cache (leitura/escrita)",
"context.stats.userMessages": "Mensagens do usuário",
"context.stats.assistantMessages": "Mensagens do assistente",
"context.stats.totalCost": "Custo total",
"context.stats.sessionCreated": "Sessão criada",
"context.stats.lastActivity": "Última atividade",
"context.usage.tokens": "Tokens",
"context.usage.usage": "Uso",
"context.usage.cost": "Custo",
@@ -497,7 +618,7 @@ export const dict = {
"error.page.title": "Algo deu errado",
"error.page.description": "Ocorreu um erro ao carregar a aplicação.",
"error.page.description.localServerStartup": "Ocorreu um erro ao iniciar o servidor local.",
"error.page.details.label": "Detalhes do Erro",
"error.page.details.label": "Detalhes do erro",
"error.page.action.restart": "Reiniciar",
"error.page.action.report": "Reportar erro",
"error.page.action.reported": "Erro reportado",
@@ -570,7 +691,7 @@ export const dict = {
"session.error.notFound.description": "Esta aba aponta para uma sessão que não existe mais neste servidor.",
"session.error.notFound.closeTab": "Fechar aba",
"session.error.serverConnection": "Não é possível conectar a este servidor",
"session.review.filesChanged": "{{count}} Arquivos Alterados",
"session.review.filesChanged": "{{count}} arquivos alterados",
"session.review.change.one": "Alteração",
"session.review.change.other": "Alterações",
"session.review.loadingChanges": "Carregando alterações...",
@@ -597,14 +718,17 @@ export const dict = {
"session.question.minimize": "Minimizar pergunta",
"session.question.restore": "Restaurar pergunta",
"session.question.pending.one": "{{count}} pergunta pendente",
"session.question.pending.many": "{{count}} de perguntas pendentes",
"session.question.pending.other": "{{count}} perguntas pendentes",
"session.followupDock.summary.one": "{{count}} mensagem na fila",
"session.followupDock.summary.many": "{{count}} de mensagens na fila",
"session.followupDock.summary.other": "{{count}} mensagens na fila",
"session.followupDock.sendNow": "Enviar agora",
"session.followupDock.edit": "Editar",
"session.followupDock.collapse": "Recolher mensagens na fila",
"session.followupDock.expand": "Expandir mensagens na fila",
"session.revertDock.summary.one": "{{count}} mensagem revertida",
"session.revertDock.summary.many": "{{count}} de mensagens revertidas",
"session.revertDock.summary.other": "{{count}} mensagens revertidas",
"session.revertDock.collapse": "Recolher mensagens revertidas",
"session.revertDock.expand": "Expandir mensagens revertidas",
@@ -656,9 +780,16 @@ export const dict = {
"terminal.title": "Terminal",
"terminal.title.numbered": "Terminal {{number}}",
"terminal.close": "Fechar terminal",
"terminal.connectionLost.title": "Conexão Perdida",
"terminal.connectionLost.title": "Conexão perdida",
"terminal.connectionLost.description":
"A conexão do terminal foi interrompida. Isso pode acontecer quando o servidor reinicia.",
"terminal.connectTicket.csrfError":
"O tíquete de conexão PTY foi rejeitado pelas verificações de origem ou CSRF. Verifique a configuração de CORS do servidor.",
"terminal.connectTicket.statusError": "O tíquete de conexão PTY falhou com o status {{status}}",
"titlebar.update": "Atualizar",
"titlebar.updateVersion": "Atualizar {{version}}",
"common.closeTab": "Fechar aba",
"common.dismiss": "Descartar",
"common.requestFailed": "Requisição falhou",
@@ -706,7 +837,7 @@ export const dict = {
"settings.general.row.shell.title": "Shell do terminal",
"settings.general.row.shell.description":
"Escolha o shell usado no terminal. Os shells compatíveis também são usados nas chamadas de ferramentas do agente.",
"settings.general.row.shell.autoDefault": "Automático (Padrão)",
"settings.general.row.shell.autoDefault": "Automático (padrão)",
"settings.general.row.shell.terminalOnly": "somente no terminal",
"settings.general.row.appearance.title": "Aparência",
"settings.general.row.appearance.description": "Personalize como o OpenCode aparece no seu dispositivo",
@@ -739,8 +870,9 @@ export const dict = {
"settings.general.row.mobileTitlebarBottom.title": "Navegação inferior",
"settings.general.row.mobileTitlebarBottom.description":
"Posicionar a barra de título e as abas da sessão na parte inferior da tela em dispositivos móveis",
"settings.general.row.showCustomAgents.title": "Agentes personalizados",
"settings.general.row.showCustomAgents.description": "Mostrar o seletor de agentes na área de composição",
"settings.general.row.showCustomAgents.title": "Mostrar agente",
"settings.general.row.showCustomAgents.description":
"Alternar entre agentes na área de composição. Quando oculto, usa o agente Build como padrão.",
"settings.general.row.reasoningSummaries.title": "Mostrar resumos de raciocínio",
"settings.general.row.reasoningSummaries.description": "Exibir resumos de raciocínio do modelo na linha do tempo",
"settings.general.row.shellToolPartsExpanded.title": "Expandir partes da ferramenta shell",
@@ -823,14 +955,15 @@ export const dict = {
"sound.option.yup06": "Sim 06",
"settings.general.notifications.agent.title": "Agente",
"settings.general.notifications.agent.description":
"Mostrar notificação do sistema quando o agente estiver completo ou precisar de atenção",
"Mostrar notificação do sistema quando o agente concluir o trabalho ou precisar de atenção",
"settings.general.notifications.permissions.title": "Permissões",
"settings.general.notifications.permissions.description":
"Mostrar notificação do sistema quando uma permissão for necessária",
"settings.general.notifications.errors.title": "Erros",
"settings.general.notifications.errors.description": "Mostrar notificação do sistema quando ocorrer um erro",
"settings.general.sounds.agent.title": "Agente",
"settings.general.sounds.agent.description": "Reproduzir som quando o agente estiver completo ou precisar de atenção",
"settings.general.sounds.agent.description":
"Reproduzir som quando o agente concluir o trabalho ou precisar de atenção",
"settings.general.sounds.permissions.title": "Permissões",
"settings.general.sounds.permissions.description": "Reproduzir som quando uma permissão for necessária",
"settings.general.sounds.errors.title": "Erros",
@@ -878,8 +1011,7 @@ export const dict = {
"settings.permissions.tool.read.title": "Ler",
"settings.permissions.tool.read.description": "Ler um arquivo (corresponde ao caminho do arquivo)",
"settings.permissions.tool.edit.title": "Editar",
"settings.permissions.tool.edit.description":
"Modificar arquivos, incluindo edições, escritas, patches e multi-edições",
"settings.permissions.tool.edit.description": "Modificar arquivos, incluindo edições, escritas e patches",
"settings.permissions.tool.glob.title": "Glob",
"settings.permissions.tool.glob.description": "Corresponder arquivos usando padrões glob",
"settings.permissions.tool.grep.title": "Grep",
@@ -889,7 +1021,7 @@ export const dict = {
"settings.permissions.tool.bash.title": "Bash",
"settings.permissions.tool.bash.description": "Executar comandos shell",
"settings.permissions.tool.task.title": "Tarefa",
"settings.permissions.tool.task.description": "Lançar sub-agentes",
"settings.permissions.tool.task.description": "Iniciar subagentes",
"settings.permissions.tool.skill.title": "Habilidade",
"settings.permissions.tool.skill.description": "Carregar uma habilidade por nome",
"settings.permissions.tool.lsp.title": "LSP",
@@ -946,7 +1078,7 @@ export const dict = {
"common.time.hoursAgo.short": "{{count}}h atrás",
"common.time.daysAgo.short": "{{count}}d atrás",
"settings.providers.connected.environmentDescription": "Conectado a partir de suas variáveis de ambiente",
"settings.providers.custom.description": "Adicionar um provedor compatível com a OpenAI através do URL base.",
"settings.providers.custom.description": "Adicionar um provedor compatível com OpenAI por meio da URL base.",
"app.server.unreachable": "Não foi possível conectar a {{server}}",
"app.server.retrying": "Tentando novamente automaticamente...",
@@ -962,6 +1094,9 @@ export const dict = {
"session.question.progress": "{{current}} de {{total}} perguntas",
"session.header.open.finder": "Finder",
"session.header.open.fileExplorer": "Explorador de Arquivos",
"session.header.reveal.finder": "Revelar no Finder",
"session.header.reveal.fileExplorer": "Revelar no Explorador de Arquivos",
"session.header.reveal.containingFolder": "Abrir pasta que contém este item",
"session.header.open.fileManager": "Gerenciador de Arquivos",
"session.header.open.app.vscode": "VS Code",
"session.header.open.app.cursor": "Cursor",
+177 -42
View File
@@ -1,4 +1,104 @@
export const dict = {
"desktop.menu.app": "OpenCode",
"desktop.menu.file": "Datoteka",
"desktop.menu.edit": "Uredi",
"desktop.menu.view": "Prikaz",
"desktop.menu.go": "Idi",
"desktop.menu.window": "Prozor",
"desktop.menu.help": "Pomoć",
"desktop.menu.checkForUpdates": "Provjeri ima li ažuriranja...",
"desktop.menu.settings": "Postavke",
"desktop.menu.reloadWebview": "Ponovo učitaj Webview",
"desktop.menu.restart": "Ponovo pokreni",
"desktop.menu.exportLogs": "Izvezi zapisnike...",
"desktop.menu.newSession": "Nova sesija",
"desktop.menu.openProject": "Otvori projekat...",
"desktop.menu.newWindow": "Novi prozor",
"desktop.menu.closeWindow": "Zatvori prozor",
"desktop.menu.undo": "Poništi",
"desktop.menu.redo": "Vrati",
"desktop.menu.cut": "Izreži",
"desktop.menu.copy": "Kopiraj",
"desktop.menu.paste": "Zalijepi",
"desktop.menu.delete": "Izbriši",
"desktop.menu.selectAll": "Odaberi sve",
"desktop.menu.toggleSidebar": "Prikaži ili sakrij bočnu traku",
"desktop.menu.toggleTerminal": "Prikaži ili sakrij terminal",
"desktop.menu.toggleFileTree": "Prikaži ili sakrij stablo datoteka",
"desktop.menu.reload": "Ponovo učitaj",
"desktop.menu.toggleDeveloperTools": "Prikaži ili sakrij alate za programere",
"desktop.menu.actualSize": "Stvarna veličina",
"desktop.menu.zoomIn": "Uvećaj",
"desktop.menu.zoomOut": "Umanji",
"desktop.menu.toggleFullScreen": "Prikaži ili sakrij prikaz preko cijelog ekrana",
"desktop.menu.back": "Nazad",
"desktop.menu.forward": "Naprijed",
"desktop.menu.previousSession": "Prethodna sesija",
"desktop.menu.nextSession": "Sljedeća sesija",
"desktop.menu.previousProject": "Prethodni projekat",
"desktop.menu.nextProject": "Sljedeći projekat",
"desktop.menu.minimize": "Minimiziraj",
"desktop.menu.maximize": "Maksimiziraj",
"desktop.menu.documentation": "Dokumentacija za OpenCode",
"desktop.menu.supportForum": "Forum za podršku",
"desktop.menu.shareFeedback": "Pošalji povratne informacije",
"desktop.menu.reportBug": "Prijavi grešku",
"desktop.menu.ariaLabel": "OpenCode meni",
"desktop.updater.dialog.checkFailed.message": "Provjera ažuriranja nije uspjela.",
"desktop.updater.dialog.checkFailed.title": "Greška pri ažuriranju",
"desktop.updater.dialog.upToDate.message": "Sve je ažurno.",
"desktop.updater.dialog.upToDate.title": "Nema ažuriranja",
"desktop.updater.dialog.ready.message":
"Ažuriranje {{version}} je preuzeto. Želiš li sada ponovo pokrenuti aplikaciju?",
"desktop.updater.dialog.ready.title": "Ažuriranje je spremno",
"desktop.updater.dialog.restart": "Ponovo pokreni",
"desktop.updater.dialog.later": "Kasnije",
"desktop.recovery.action.relaunch": "Ponovo pokreni",
"desktop.recovery.action.exportLogs": "Izvezi zapisnike",
"desktop.recovery.action.keepWaiting": "Nastavi čekati",
"desktop.recovery.action.quit": "Izađi",
"desktop.recovery.loadFailed": "OpenCode se nije uspio učitati",
"desktop.recovery.terminated": "Prozor OpenCode-a neočekivano je zatvoren",
"desktop.recovery.unresponsive": "OpenCode ne reaguje",
"desktop.recovery.unresponsive.detail": "Možeš ponovo pokrenuti aplikaciju, otvoriti zapisnike ili nastaviti čekati.",
"desktop.recovery.loadFailed.detail": "Prozor: {{window}}\nURL: {{url}}\nGreška: {{code}} {{description}}",
"desktop.recovery.terminated.detail": "Prozor: {{window}}\nRazlog: {{reason}}\nKod: {{code}}",
"desktop.recovery.unknown": "<nepoznato>",
"desktop.dialog.chooseFolder": "Odaberi fasciklu",
"desktop.dialog.chooseFile": "Odaberi datoteku",
"desktop.dialog.saveFile": "Sačuvaj datoteku",
"desktop.dialog.files": "Datoteke",
"desktop.server.local": "Lokalni server",
"desktop.wsl.error.windowsOnly": "WSL je dostupan samo u Windowsu",
"desktop.wsl.error.unavailable": "WSL nije dostupan",
"desktop.wsl.error.listInstalled": "Nije uspjelo prikazivanje instaliranih WSL distribucija",
"desktop.wsl.error.listOnline": "Nije uspjelo prikazivanje dostupnih WSL distribucija",
"desktop.wsl.error.executeDistro": "Nije moguće izvršiti komande u distribuciji",
"desktop.wsl.error.installWsl": "Instalacija WSL-a nije uspjela",
"desktop.wsl.error.installDistro": "Instalacija distribucije nije uspjela: {{distro}}",
"desktop.wsl.error.installOpencode": "Instalacija OpenCode-a nije uspjela",
"desktop.wsl.error.alreadyAdded": "Distribucija {{distro}} je već dodana",
"desktop.wsl.error.opencodeMissing": "opencode nije instaliran u ovoj distribuciji",
"desktop.wsl.error.opencodeCannotRun": "opencode je instaliran, ali se ne može pokrenuti",
"desktop.wsl.error.opencodeNotInstalled": "OpenCode nije instaliran u distribuciji {{distro}}",
"desktop.wsl.error.updateVersion":
"Ažuriranje OpenCode-a je završeno, ali {{distro}} i dalje prijavljuje {{installed}}; očekivano je {{expected}}",
"desktop.wsl.error.noVersion": "nema verzije",
"desktop.wsl.error.serverExited": "WSL server se zatvorio nakon pokretanja (code={{code}} signal={{signal}})",
"desktop.wsl.error.serverExitedBeforeHealthy":
"WSL server se zatvorio prije nego što je postao dostupan (code={{code}} signal={{signal}}){{output}}",
"desktop.wsl.error.healthTimeout":
"Isteklo je vrijeme provjere dostupnosti komponente Sidecar za {{distro}} nakon {{timeout}} ms",
"desktop.wsl.error.commandTimeout": "Isteklo je vrijeme za {{command}} {{args}} nakon {{timeout}} ms",
"desktop.wsl.error.failedPort": "Nije uspjelo dohvaćanje porta",
"desktop.picker.error.notSelected": "Datoteka nije odabrana u izborniku",
"desktop.picker.error.sizeLimit": "Odabrani prilozi premašuju ograničenje od {{limit}} MB",
"command.category.suggested": "Predloženo",
"command.category.view": "Prikaz",
"command.category.project": "Projekat",
@@ -16,6 +116,7 @@ export const dict = {
"command.category.permissions": "Dozvole",
"command.category.workspace": "Radni prostor",
"command.category.settings": "Postavke",
"command.logs.export": "Izvezi zapisnike",
"theme.scheme.system": "Sistem",
"theme.scheme.light": "Svijetlo",
@@ -102,6 +203,7 @@ export const dict = {
"dialog.provider.empty": "Nema pronađenih provajdera",
"dialog.provider.group.popular": "Popularno",
"dialog.provider.group.other": "Ostalo",
"dialog.provider.custom.label": "Prilagođeni provajder kompatibilan s OpenAI-jem",
"dialog.provider.tag.recommended": "Preporučeno",
"dialog.provider.opencode.note": "Kurirani modeli uključujući Claude, GPT, Gemini i druge",
"dialog.provider.opencode.tagline": "Pouzdani optimizovani modeli",
@@ -122,6 +224,7 @@ export const dict = {
"dialog.model.unpaid.freeModels.title": "Besplatni modeli koje obezbjeđuje OpenCode",
"dialog.model.unpaid.addMore.title": "Dodaj još modela od popularnih provajdera",
"dialog.model.unpaid.viewMoreProviders": "Pogledaj još više od 70 provajdera",
"dialog.provider.viewAll": "Prikaži više provajdera",
@@ -129,6 +232,8 @@ export const dict = {
"provider.connect.title.anthropicProMax": "Prijavi se putem Claude Pro/Max",
"provider.connect.selectMethod": "Odaberi način prijave za {{provider}}.",
"provider.connect.method.apiKey": "API ključ",
"provider.connect.method.browser": "Preglednik",
"provider.connect.method.headless": "Bez grafičkog interfejsa",
"provider.connect.status.inProgress": "Autorizacija je u toku...",
"provider.connect.status.waiting": "Čekanje na autorizaciju...",
"provider.connect.status.failed": "Autorizacija nije uspjela: {{error}}",
@@ -161,6 +266,7 @@ export const dict = {
"provider.connect.toast.connected.description": "{{provider}} modeli su sada dostupni za korištenje.",
"provider.custom.title": "Prilagođeni provajder",
"provider.custom.unavailable": "Prilagođeni provajderi nisu dostupni na ovom serveru",
"provider.custom.description.prefix": "Konfiguriši OpenAI-kompatibilnog provajdera. Pogledaj ",
"provider.custom.description.link": "dokumentaciju za konfiguraciju provajdera",
"provider.custom.description.suffix": ".",
@@ -232,7 +338,7 @@ export const dict = {
"common.clear": "Očisti",
"common.connect": "Poveži",
"common.disconnect": "Prekini vezu",
"common.continue": "Pošalji",
"common.continue": "Nastavi",
"common.submit": "Pošalji",
"common.save": "Sačuvaj",
"common.saving": "Čuvanje...",
@@ -263,7 +369,7 @@ export const dict = {
"prompt.example.11": "Optimizuj upite prema bazi podataka",
"prompt.example.12": "Dodaj validaciju ulaza",
"prompt.example.13": "Napravi novu komponentu za...",
"prompt.example.14": "Kako da deployam ovaj projekat?",
"prompt.example.14": "Kako da postavim ovaj projekat?",
"prompt.example.15": "Pregledaj moj kod prema najboljim praksama",
"prompt.example.16": "Dodaj obradu grešaka u ovu funkciju",
"prompt.example.17": "Objasni ovaj regex obrazac",
@@ -271,14 +377,14 @@ export const dict = {
"prompt.example.19": "Dodaj logovanje kroz cijelu bazu koda",
"prompt.example.20": "Koje su zavisnosti zastarjele?",
"prompt.example.21": "Pomozi mi da napišem migracijsku skriptu",
"prompt.example.22": "Implementiraj keširanje za ovaj endpoint",
"prompt.example.22": "Implementiraj keširanje za ovu krajnju tačku",
"prompt.example.23": "Dodaj paginaciju u ovu listu",
"prompt.example.24": "Napravi CLI komandu za...",
"prompt.example.25": "Kako ovdje rade varijable okruženja?",
"prompt.popover.emptyResults": "Nema rezultata",
"prompt.popover.emptyCommands": "Nema komandi",
"prompt.dropzone.label": "Ovdje prevucite slike, PDF-ove ili tekstualne datoteke",
"prompt.dropzone.label": "Ovdje prevuci slike, PDF-ove ili tekstualne datoteke",
"prompt.dropzone.file.label": "Spusti za @spominjanje datoteke",
"prompt.slash.badge.custom": "prilagođeno",
"prompt.slash.badge.skill": "skill",
@@ -287,7 +393,7 @@ export const dict = {
"prompt.context.includeActiveFile": "Uključi aktivnu datoteku",
"prompt.context.removeActiveFile": "Ukloni aktivnu datoteku iz konteksta",
"prompt.context.removeFile": "Ukloni datoteku iz konteksta",
"prompt.action.attachFile": "Priloži datoteku",
"prompt.action.attachFile": "Dodaj datoteke",
"prompt.menu.addImagesAndFiles": "Dodaj datoteke i više",
"prompt.menu.imagesAndFiles": "Slike i datoteke",
"prompt.menu.commands": "Komande",
@@ -311,7 +417,7 @@ export const dict = {
"dialog.mcp.title": "MCP-ovi",
"dialog.mcp.description": "{{enabled}} od {{total}} omogućeno",
"dialog.mcp.empty": "Nema konfigurisnih MCP-ova",
"dialog.mcp.empty": "Nema konfigurisanih MCP-ova",
"dialog.lsp.empty": "LSP-ovi se automatski otkrivaju prema tipu datoteke",
"dialog.plugins.empty": "Plugini su konfigurisani u opencode.json",
@@ -319,18 +425,18 @@ export const dict = {
"mcp.status.connected": "povezano",
"mcp.status.failed": "neuspjelo",
"mcp.status.needs_auth": "potrebna autentifikacija",
"mcp.auth.clickToAuthenticate": "Kliknite za autentifikaciju",
"mcp.auth.clickToAuthenticate": "Klikni za autentifikaciju",
"mcp.status.disabled": "onemogućeno",
"dialog.fork.empty": "Nema poruka za fork",
"dialog.directory.search.placeholder": "Pretraži foldere",
"dialog.directory.empty": "Nema pronađenih foldera",
"dialog.directory.search.placeholder": "Pretraži fascikle",
"dialog.directory.empty": "Nema pronađenih fascikli",
"dialog.directory.action.selectFile": "Odaberi datoteku",
"dialog.directory.action.selectFolder": "Odaberi folder",
"dialog.directory.action.selectFolder": "Odaberi fasciklu",
"dialog.directory.root": "Korijen",
"dialog.directory.parent": "Nadređeni folder",
"dialog.directory.readError": "Nije moguće pročitati ovaj folder",
"dialog.directory.parent": "Nadređena fascikla",
"dialog.directory.readError": "Nije moguće pročitati ovu fasciklu",
"dialog.server.title": "Serveri",
"dialog.server.description": "Promijeni na koji se OpenCode server ova aplikacija povezuje.",
@@ -349,7 +455,7 @@ export const dict = {
"dialog.server.edit.title": "Uredi server",
"dialog.server.default.title": "Podrazumijevani server",
"dialog.server.default.description":
"Poveži se na ovaj server pri pokretanju aplikacije umjesto pokretanja lokalnog servera. Potreban je restart.",
"Poveži se na ovaj server pri pokretanju aplikacije umjesto pokretanja lokalnog servera. Potrebno je ponovo pokrenuti aplikaciju.",
"dialog.server.default.none": "Nije odabran server",
"dialog.server.default.set": "Postavi trenutni server kao podrazumijevani",
"dialog.server.default.clear": "Očisti",
@@ -431,6 +537,22 @@ export const dict = {
"wsl.onboarding.versionMismatch": "Instalirana verzija ne odgovara verziji desktop aplikacije.",
"wsl.onboarding.adding": "Dodavanje...",
"help.tabs.toast.ariaLabel": "Predstavljamo kartice. Organizuj svoj rad i aktivne sesije pomoću kartica",
"help.tabs.toast.dismiss": "Odbaci informacije o karticama",
"help.tabs.title": "Predstavljamo kartice",
"help.tabs.description": "Organizuj svoj rad i aktivne sesije pomoću kartica",
"help.tabs.date": "14. juli",
"help.tabs.introduction": "OpenCode Desktop sada je organizovan oko kartica.",
"help.tabs.sessions":
"Započni novu sesiju u kartici ili otvori postojeću sesiju iz bilo kojeg projekta. Otvori novu karticu kada započinješ nešto novo, a zatvori je kada završiš.",
"help.tabs.organize":
"Nekoliko otvorenih kartica olakšava organizovanje aktivnih sesija. Preimenuj kartice tako da ih možeš lako prepoznati ako ih namjeravaš zadržati.",
"help.tabs.home":
"Sve svoje sesije i projekte pronaći ćeš na novom početnom ekranu. Odabirom sesije ona se otvara u kartici.",
"help.tabs.persistence": "Kada ponovo otvoriš aplikaciju, tvoje kartice ostaju otvorene.",
"help.tabs.worktrees":
"Novi dizajn još ne podržava Git Worktrees, ali podrška stiže uskoro. Ako želiš nastaviti koristiti prethodni raspored, možeš mijenjati rasporede u Postavkama. Imaj na umu da će novi raspored za nekoliko sedmica postati trajan.",
"dialog.project.edit.title": "Uredi projekat",
"dialog.project.edit.name": "Naziv",
"dialog.project.edit.icon": "Ikonica",
@@ -445,7 +567,7 @@ export const dict = {
"context.breakdown.title": "Razlaganje konteksta",
"context.breakdown.note":
'Približna raspodjela ulaznih tokena. "Ostalo" uključuje definicije alata i dodatni overhead.',
'Približna raspodjela ulaznih tokena. "Ostalo" uključuje definicije alata i dodatno opterećenje.',
"context.breakdown.system": "Sistem",
"context.breakdown.user": "Korisnik",
"context.breakdown.assistant": "Asistent",
@@ -465,7 +587,7 @@ export const dict = {
"context.stats.inputTokens": "Ulazni tokeni",
"context.stats.outputTokens": "Izlazni tokeni",
"context.stats.reasoningTokens": "Tokeni za rasuđivanje",
"context.stats.cacheTokens": "Cache tokeni (čitanje/pisanje)",
"context.stats.cacheTokens": "Keširani tokeni (čitanje/pisanje)",
"context.stats.userMessages": "Korisničke poruke",
"context.stats.assistantMessages": "Poruke asistenta",
"context.stats.totalCost": "Ukupni trošak",
@@ -537,14 +659,14 @@ export const dict = {
"toast.update.title": "Dostupno ažuriranje",
"toast.update.description": "Nova verzija OpenCode-a ({{version}}) je dostupna za instalaciju.",
"toast.update.action.installRestart": "Instaliraj i restartuj",
"toast.update.action.installRestart": "Instaliraj i ponovo pokreni",
"toast.update.action.notYet": "Ne još",
"error.page.title": "Nešto je pošlo po zlu",
"error.page.description": "Došlo je do greške prilikom učitavanja aplikacije.",
"error.page.description.localServerStartup": "Došlo je do greške pri pokretanju lokalnog servera.",
"error.page.details.label": "Detalji greške",
"error.page.action.restart": "Restartuj",
"error.page.action.restart": "Ponovo pokreni",
"error.page.action.report": "Prijavi grešku",
"error.page.action.reported": "Greška prijavljena",
"error.page.action.exportLogs": "Izvezi logove",
@@ -569,7 +691,7 @@ export const dict = {
"error.chain.responseBody": "Tijelo odgovora:\n{{body}}",
"error.chain.didYouMean": "Da li si mislio: {{suggestions}}",
"error.chain.modelNotFound": "Model nije pronađen: {{provider}}/{{model}}",
"error.chain.checkConfig": "Provjeri konfiguraciju (opencode.json) provider/model names",
"error.chain.checkConfig": "Provjeri nazive provajdera/modela u konfiguraciji (opencode.json)",
"error.chain.mcpFailed": 'MCP server "{{name}}" nije uspio. Napomena: OpenCode još ne podržava MCP autentifikaciju.',
"error.chain.providerAuthFailed": "Autentifikacija provajdera nije uspjela ({{provider}}): {{message}}",
"error.chain.providerInitFailed":
@@ -611,7 +733,7 @@ export const dict = {
"home.sessions.group.yesterday": "Jučer",
"home.sessions.group.older": "Starije",
"home.providerTip":
"Povežite se s više od 75 pružalaca usluga kako biste koristili druge modele, uključujući Claude, GPT, Gemini i druge",
"Poveži se s više od 75 provajdera da koristiš druge modele, uključujući Claude, GPT, Gemini i druge",
"session.tab.session": "Sesija",
"session.tab.review": "Pregled",
@@ -627,11 +749,11 @@ export const dict = {
"session.review.change.other": "Izmjene",
"session.review.loadingChanges": "Učitavanje izmjena...",
"session.review.empty": "Još nema izmjena u ovoj sesiji",
"session.review.noVcs": "Nije detektovan Git sistem kontrole verzija, promjene se ne prikazuju",
"session.review.noVcs": "Nije otkriven Git sistem za kontrolu verzija, pa se promjene ne prikazuju",
"session.review.noSnapshot":
"Praćenje snimaka (snapshot) je onemogućeno u konfiguraciji, pa promjene sesije nisu dostupne",
"session.review.noChanges": "Nema izmjena",
"session.review.noUncommittedChanges": "Još nema nepotvrđenih promjena",
"session.review.noUncommittedChanges": "Još nema promjena koje nisu commitovane",
"session.review.noBranchChanges": "Još nema promjena na grani",
"session.files.selectToOpen": "Odaberi datoteku za otvaranje",
@@ -652,14 +774,17 @@ export const dict = {
"session.question.minimize": "Minimiziraj pitanje",
"session.question.restore": "Vrati pitanje",
"session.question.pending.one": "{{count}} pitanje na čekanju",
"session.question.pending.few": "{{count}} pitanja na čekanju",
"session.question.pending.other": "{{count}} pitanja na čekanju",
"session.followupDock.summary.one": "{{count}} poruka na čekanju",
"session.followupDock.summary.few": "{{count}} poruke na čekanju",
"session.followupDock.summary.other": "{{count}} poruka na čekanju",
"session.followupDock.sendNow": "Pošalji sada",
"session.followupDock.edit": "Uredi",
"session.followupDock.collapse": "Sažmi poruke na čekanju",
"session.followupDock.expand": "Proširi poruke na čekanju",
"session.revertDock.summary.one": "{{count}} vraćena poruka",
"session.revertDock.summary.few": "{{count}} vraćene poruke",
"session.revertDock.summary.other": "{{count}} vraćenih poruka",
"session.revertDock.collapse": "Sažmi vraćene poruke",
"session.revertDock.expand": "Proširi vraćene poruke",
@@ -717,7 +842,13 @@ export const dict = {
"terminal.close": "Zatvori terminal",
"terminal.connectionLost.title": "Veza prekinuta",
"terminal.connectionLost.description":
"Veza s terminalom je prekinuta. Ovo se može desiti kada se server restartuje.",
"Veza s terminalom je prekinuta. Ovo se može desiti kada se server ponovo pokrene.",
"terminal.connectTicket.csrfError":
"PTY tiket za povezivanje odbijen je zbog provjera porijekla ili CSRF-a. Provjeri CORS konfiguraciju servera.",
"terminal.connectTicket.statusError": "PTY tiket za povezivanje nije uspio sa statusom {{status}}",
"titlebar.update": "Ažuriraj",
"titlebar.updateVersion": "Ažuriraj {{version}}",
"common.closeTab": "Zatvori karticu",
"common.dismiss": "Odbaci",
@@ -725,7 +856,7 @@ export const dict = {
"common.moreOptions": "Više opcija",
"common.learnMore": "Saznaj više",
"common.rename": "Preimenuj",
"common.reset": "Resetuj",
"common.reset": "Vrati na početno stanje",
"common.archive": "Arhiviraj",
"common.delete": "Izbriši",
"common.close": "Zatvori",
@@ -782,7 +913,7 @@ export const dict = {
"settings.general.row.font.title": "Font za kod",
"settings.general.row.font.description": "Prilagodi font koji se koristi u blokovima koda",
"settings.general.row.terminalFont.title": "Font terminala",
"settings.general.row.terminalFont.description": "Prilagodite font koji se koristi u terminalu",
"settings.general.row.terminalFont.description": "Prilagodi font koji se koristi u terminalu",
"settings.general.row.uiFont.title": "UI font",
"settings.general.row.uiFont.description": "Prilagodi font koji se koristi u cijelom interfejsu",
"settings.general.row.followup.title": "Ponašanje nadovezivanja",
@@ -817,15 +948,16 @@ export const dict = {
"settings.general.row.newInterface.title": "Novi raspored",
"settings.general.row.newInterface.badge": "Novo",
"settings.general.row.newInterface.description":
"Koristite nove kartice i raspored početne stranice. Ograničeno vrijeme možete se prebacivati između rasporeda.",
"settings.general.row.newInterfaceNotice.title": "Sada koristite novi raspored",
"Koristi nove kartice i raspored početne stranice. Ograničeno vrijeme možeš se prebacivati između rasporeda.",
"settings.general.row.newInterfaceNotice.title": "Sada koristiš novi raspored",
"settings.general.row.newInterfaceNotice.description": "Prethodni raspored više nije dostupan",
"settings.general.row.newInterfaceNotice.dismiss": "Odbaci",
"settings.general.row.pinchZoom.title": "Zumiranje štipanjem",
"settings.general.row.pinchZoom.description":
"Dozvoli zumiranje gestom štipanja na dodirnoj ploči i pomoću Ctrl-pomjeranja",
"settings.general.row.wayland.title": "Koristi nativni Wayland",
"settings.general.row.wayland.description": "Onemogući X11 fallback na Waylandu. Zahtijeva restart.",
"settings.general.row.wayland.description":
"Onemogući rezervni X11 način rada na Waylandu. Zahtijeva ponovno pokretanje.",
"settings.general.row.wayland.tooltip":
"Na Linuxu sa monitorima miješanih stopa osvježavanja, nativni Wayland može biti stabilniji.",
@@ -941,7 +1073,7 @@ export const dict = {
"settings.mcp.description": "MCP postavke će se ovdje moći podešavati.",
"settings.permissions.title": "Dozvole",
"settings.permissions.description": "Kontroliši koje alate server smije koristiti po defaultu.",
"settings.permissions.description": "Kontroliši koje alate server smije koristiti zadano.",
"settings.permissions.section.tools": "Alati",
"settings.permissions.toast.updateFailed.title": "Neuspjelo ažuriranje dozvola",
@@ -953,7 +1085,7 @@ export const dict = {
"settings.permissions.tool.read.description": "Čitanje datoteke (podudara se s putanjom datoteke)",
"settings.permissions.tool.edit.title": "Uređivanje",
"settings.permissions.tool.edit.description":
"Mijenjanje datoteka, uključujući izmjene, pisanja, patch-eve i multi-izmjene",
"Mijenjanje datoteka, uključujući uređivanje, pisanje, zakrpe i višestruke izmjene",
"settings.permissions.tool.glob.title": "Glob",
"settings.permissions.tool.glob.description": "Podudaranje datoteka pomoću glob šablona",
"settings.permissions.tool.grep.title": "Grep",
@@ -989,26 +1121,26 @@ export const dict = {
"workspace.type.sandbox": "sandbox",
"workspace.create.failed.title": "Neuspješno kreiranje radnog prostora",
"workspace.delete.failed.title": "Neuspješno brisanje radnog prostora",
"workspace.resetting.title": "Resetovanje radnog prostora",
"workspace.resetting.title": "Vraćanje radnog prostora na početno stanje",
"workspace.resetting.description": "Ovo može potrajati minut.",
"workspace.reset.failed.title": "Neuspješno resetovanje radnog prostora",
"workspace.reset.success.title": "Radni prostor resetovan",
"workspace.reset.failed.title": "Neuspješno vraćanje radnog prostora na početno stanje",
"workspace.reset.success.title": "Radni prostor vraćen na početno stanje",
"workspace.reset.success.description": "Radni prostor sada odgovara podrazumijevanoj grani.",
"workspace.error.stillPreparing": "Radni prostor se još priprema",
"workspace.status.checking": "Provjera neobjedinjenih promjena...",
"workspace.status.checking": "Provjera promjena koje nisu commitovane...",
"workspace.status.error": "Nije moguće provjeriti git status.",
"workspace.status.clean": "Nisu pronađene neobjedinjene promjene.",
"workspace.status.dirty": "Pronađene su neobjedinjene promjene u ovom radnom prostoru.",
"workspace.status.clean": "Nisu pronađene promjene koje nisu commitovane.",
"workspace.status.dirty": "Pronađene su promjene koje nisu commitovane u ovom radnom prostoru.",
"workspace.delete.title": "Izbriši radni prostor",
"workspace.delete.confirm": 'Izbriši radni prostor "{{name}}"?',
"workspace.delete.button": "Izbriši radni prostor",
"workspace.reset.title": "Resetuj radni prostor",
"workspace.reset.confirm": 'Resetuj radni prostor "{{name}}"?',
"workspace.reset.button": "Resetuj radni prostor",
"workspace.reset.title": "Vrati radni prostor na početno stanje",
"workspace.reset.confirm": 'Vrati radni prostor "{{name}}" na početno stanje?',
"workspace.reset.button": "Vrati radni prostor na početno stanje",
"workspace.reset.archived.none": "Nijedna aktivna sesija neće biti arhivirana.",
"workspace.reset.archived.one": "1 sesija će biti arhivirana.",
"workspace.reset.archived.many": "Biće arhivirano {{count}} sesija.",
"workspace.reset.note": "Ovo će resetovati radni prostor da odgovara podrazumijevanoj grani.",
"workspace.reset.note": "Ovo će vratiti radni prostor na stanje podrazumijevane grane.",
"common.open": "Otvori",
"dialog.releaseNotes.action.getStarted": "Započni",
"dialog.releaseNotes.action.next": "Sljedeće",
@@ -1021,8 +1153,8 @@ export const dict = {
"common.time.minutesAgo.short": "prije {{count}} min",
"common.time.hoursAgo.short": "prije {{count}} h",
"common.time.daysAgo.short": "prije {{count}} d",
"settings.providers.connected.environmentDescription": "Povezano sa vašim varijablama okruženja",
"settings.providers.custom.description": "Dodajte provajdera kompatibilnog s OpenAI putem osnovnog URL-a.",
"settings.providers.connected.environmentDescription": "Povezano s tvojim varijablama okruženja",
"settings.providers.custom.description": "Dodaj provajdera kompatibilnog s OpenAI putem baznog URL-a.",
"app.server.unreachable": "Nije moguće pristupiti {{server}}",
"app.server.retrying": "Automatski ponovni pokušaj...",
@@ -1031,13 +1163,16 @@ export const dict = {
"dialog.server.add.passwordPlaceholder": "lozinka",
"server.row.noUsername": "nema korisničkog imena",
"session.review.noVcs.createGit.title": "Kreiraj Git repozitorij",
"session.review.noVcs.createGit.description": "Pratite, pregledajte i poništite promjene u ovom projektu",
"session.review.noVcs.createGit.description": "Prati, pregledaj i poništi promjene u ovom projektu",
"session.review.noVcs.createGit.actionLoading": "Kreiranje Git repozitorija...",
"session.review.noVcs.createGit.action": "Kreiraj Git repozitorij",
"session.todo.progress": "{{done}} od {{total}} zadataka završeno",
"session.question.progress": "{{current}} od {{total}} pitanja",
"session.header.open.finder": "Finder",
"session.header.open.fileExplorer": "File Explorer",
"session.header.reveal.finder": "Prikaži u Finderu",
"session.header.reveal.fileExplorer": "Prikaži u File Exploreru",
"session.header.reveal.containingFolder": "Otvori fasciklu koja sadrži ovu stavku",
"session.header.open.fileManager": "File Manager",
"session.header.open.app.vscode": "VS Code",
"session.header.open.app.cursor": "Cursor",
+172 -38
View File
@@ -102,6 +102,7 @@ export const dict = {
"dialog.provider.empty": "Ingen udbydere fundet",
"dialog.provider.group.popular": "Populære",
"dialog.provider.group.other": "Andre",
"dialog.provider.custom.label": "Brugerdefineret OpenAI-kompatibel udbyder",
"dialog.provider.tag.recommended": "Anbefalet",
"dialog.provider.opencode.note": "Udvalgte modeller inklusive Claude, GPT, Gemini og flere",
"dialog.provider.opencode.tagline": "Pålidelige optimerede modeller",
@@ -122,6 +123,7 @@ export const dict = {
"dialog.model.unpaid.freeModels.title": "Gratis modeller leveret af OpenCode",
"dialog.model.unpaid.addMore.title": "Tilføj flere modeller fra populære udbydere",
"dialog.model.unpaid.viewMoreProviders": "Se mere end 70 yderligere udbydere",
"dialog.provider.viewAll": "Vis flere udbydere",
@@ -129,12 +131,14 @@ export const dict = {
"provider.connect.title.anthropicProMax": "Log ind med Claude Pro/Max",
"provider.connect.selectMethod": "Vælg loginmetode for {{provider}}.",
"provider.connect.method.apiKey": "API-nøgle",
"provider.connect.method.browser": "Browser",
"provider.connect.method.headless": "Browserløs",
"provider.connect.status.inProgress": "Godkendelse i gang...",
"provider.connect.status.waiting": "Venter på godkendelse...",
"provider.connect.status.failed": "Godkendelse mislykkedes: {{error}}",
"provider.connect.apiKey.description":
"Indtast din {{provider}} API-nøgle for at forbinde din konto og bruge {{provider}} modeller i OpenCode.",
"provider.connect.apiKey.label": "{{provider}} API-nøgle",
"Indtast din API-nøgle til {{provider}} for at forbinde din konto og bruge modeller fra {{provider}} i OpenCode.",
"provider.connect.apiKey.label": "API-nøgle til {{provider}}",
"provider.connect.apiKey.placeholder": "API-nøgle",
"provider.connect.apiKey.required": "API-nøgle er påkrævet",
"provider.connect.opencodeZen.line1":
@@ -147,7 +151,7 @@ export const dict = {
"provider.connect.oauth.code.visit.prefix": "Besøg ",
"provider.connect.oauth.code.visit.link": "dette link",
"provider.connect.oauth.code.visit.suffix":
" for at hente din godkendelseskode for at forbinde din konto og bruge {{provider}} modeller i OpenCode.",
" for at hente din godkendelseskode, forbinde din konto og bruge modeller fra {{provider}} i OpenCode.",
"provider.connect.oauth.code.label": "{{method}} godkendelseskode",
"provider.connect.oauth.code.placeholder": "Godkendelseskode",
"provider.connect.oauth.code.required": "Godkendelseskode er påkrævet",
@@ -155,12 +159,13 @@ export const dict = {
"provider.connect.oauth.auto.visit.prefix": "Besøg ",
"provider.connect.oauth.auto.visit.link": "dette link",
"provider.connect.oauth.auto.visit.suffix":
" og indtast koden nedenfor for at forbinde din konto og bruge {{provider}} modeller i OpenCode.",
" og indtast koden nedenfor for at forbinde din konto og bruge modeller fra {{provider}} i OpenCode.",
"provider.connect.oauth.auto.confirmationCode": "Bekræftelseskode",
"provider.connect.toast.connected.title": "{{provider}} forbundet",
"provider.connect.toast.connected.description": "{{provider}} modeller er nu tilgængelige.",
"provider.connect.toast.connected.description": "Modeller fra {{provider}} er nu tilgængelige.",
"provider.custom.title": "Brugerdefineret udbyder",
"provider.custom.unavailable": "Brugerdefinerede udbydere er ikke tilgængelige på denne server",
"provider.custom.description.prefix": "Konfigurer en OpenAI-kompatibel udbyder. Se ",
"provider.custom.description.link": "dokumentation for udbyderkonfiguration",
"provider.custom.description.suffix": ".",
@@ -217,9 +222,9 @@ export const dict = {
"model.tooltip.inputs": "Input",
"model.tooltip.model": "Model",
"model.tooltip.provider": "Udbyder",
"model.tooltip.reasoning": "Tænkning",
"model.tooltip.reasoning.allowed": "Tillader tænkning",
"model.tooltip.reasoning.none": "Ingen tænkning",
"model.tooltip.reasoning": "Ræsonnering",
"model.tooltip.reasoning.allowed": "Tillader ræsonnering",
"model.tooltip.reasoning.none": "Ingen ræsonnering",
"model.tooltip.context": "Kontekstgrænse {{limit}}",
"common.search.placeholder": "Søg",
"common.goBack": "Gå tilbage",
@@ -230,7 +235,7 @@ export const dict = {
"common.clear": "Ryd",
"common.connect": "Forbind",
"common.disconnect": "Frakobl",
"common.continue": "Indsend",
"common.continue": "Fortsæt",
"common.submit": "Indsend",
"common.save": "Gem",
"common.saving": "Gemmer...",
@@ -253,7 +258,7 @@ export const dict = {
"prompt.example.3": "Ret ødelagte tests",
"prompt.example.4": "Forklar hvordan godkendelse fungerer",
"prompt.example.5": "Find og ret sikkerhedshuller",
"prompt.example.6": "Tilføj enhedstests for brugerservice",
"prompt.example.6": "Tilføj enhedstests for brugertjenesten",
"prompt.example.7": "Refaktorer denne funktion så den er mere læsbar",
"prompt.example.8": "Hvad betyder denne fejl?",
"prompt.example.9": "Hjælp mig med at debugge dette problem",
@@ -335,7 +340,7 @@ export const dict = {
"dialog.server.search.placeholder": "Søg servere",
"dialog.server.empty": "Ingen servere endnu",
"dialog.server.add.title": "Tilføj en server",
"dialog.server.add.url": "Server URL",
"dialog.server.add.url": "Serveradresse",
"dialog.server.add.placeholder": "http://localhost:4096",
"dialog.server.add.error": "Kunne ikke forbinde til server",
"dialog.server.add.checking": "Tjekker...",
@@ -347,7 +352,7 @@ export const dict = {
"dialog.server.edit.title": "Rediger server",
"dialog.server.default.title": "Standardserver",
"dialog.server.default.description":
"Forbind til denne server ved start af app i stedet for at starte en lokal server. Kræver genstart.",
"Opret forbindelse til denne server, når appen starter, i stedet for at starte en lokal server. Kræver genstart.",
"dialog.server.default.none": "Ingen server valgt",
"dialog.server.default.set": "Sæt nuværende server som standard",
"dialog.server.default.clear": "Ryd",
@@ -462,8 +467,8 @@ export const dict = {
"context.stats.usage": "Forbrug",
"context.stats.inputTokens": "Input-tokens",
"context.stats.outputTokens": "Output-tokens",
"context.stats.reasoningTokens": "Tænke Tokens",
"context.stats.cacheTokens": "Cache Tokens (læs/skriv)",
"context.stats.reasoningTokens": "Ræsonneringstokens",
"context.stats.cacheTokens": "Cachetokens (læsning/skrivning)",
"context.stats.userMessages": "Brugerbeskeder",
"context.stats.assistantMessages": "Assistentbeskeder",
"context.stats.totalCost": "Samlede omkostninger",
@@ -566,7 +571,7 @@ export const dict = {
"error.chain.responseBody": "Svarindhold:\n{{body}}",
"error.chain.didYouMean": "Mente du: {{suggestions}}",
"error.chain.modelNotFound": "Model ikke fundet: {{provider}}/{{model}}",
"error.chain.checkConfig": "Tjek dine konfigurations (opencode.json) udbyder/modelnavne",
"error.chain.checkConfig": "Kontrollér udbyder- og modelnavnene i din konfiguration (opencode.json)",
"error.chain.mcpFailed": 'MCP-server "{{name}}" fejlede. Bemærk, OpenCode understøtter ikke MCP-godkendelse endnu.',
"error.chain.providerAuthFailed": "Udbydergodkendelse mislykkedes ({{provider}}): {{message}}",
"error.chain.providerInitFailed":
@@ -619,12 +624,12 @@ export const dict = {
"session.error.notFound.description": "Denne fane henviser til en session, der ikke længere findes på denne server.",
"session.error.notFound.closeTab": "Luk fane",
"session.error.serverConnection": "Kan ikke oprette forbindelse til denne server",
"session.review.filesChanged": "{{count}} Filer ændret",
"session.review.filesChanged": "{{count}} ændrede filer",
"session.review.change.one": "Ændring",
"session.review.change.other": "Ændringer",
"session.review.loadingChanges": "Indlæser ændringer...",
"session.review.empty": "Ingen ændringer i denne session endnu",
"session.review.noVcs": "Intet Git versionsstyringssystem fundet, ændringer vises ikke",
"session.review.noVcs": "Intet Git-versionsstyringssystem fundet, ændringer vises ikke",
"session.review.noSnapshot":
"Snapshot-sporing er deaktiveret i konfigurationen, så sessionsændringer er ikke tilgængelige",
"session.review.noChanges": "Ingen ændringer",
@@ -715,6 +720,13 @@ export const dict = {
"terminal.connectionLost.title": "Forbindelse mistet",
"terminal.connectionLost.description": "Terminalforbindelsen blev afbrudt. Dette kan ske, når serveren genstarter.",
"terminal.connectTicket.csrfError":
"PTY-forbindelsesticket blev afvist ved kontrollen af oprindelse eller CSRF. Kontrollér serverens CORS-konfiguration.",
"terminal.connectTicket.statusError": "PTY-forbindelsesticket mislykkedes med {{status}}",
"titlebar.update": "Opdater",
"titlebar.updateVersion": "Opdater {{version}}",
"common.closeTab": "Luk fane",
"common.dismiss": "Afvis",
"common.requestFailed": "Forespørgsel mislykkedes",
@@ -750,7 +762,7 @@ export const dict = {
"settings.tab.general": "Generelt",
"settings.tab.shortcuts": "Genveje",
"settings.desktop.section.wsl": "WSL",
"settings.desktop.wsl.title": "WSL integration",
"settings.desktop.wsl.title": "WSL-integration",
"settings.desktop.wsl.description": "Kør OpenCode-serveren inde i WSL på Windows.",
"settings.general.section.appearance": "Udseende",
@@ -771,15 +783,16 @@ export const dict = {
"settings.general.row.appearance.title": "Udseende",
"settings.general.row.appearance.description": "Tilpas hvordan OpenCode ser ud på din enhed",
"settings.general.row.colorScheme.title": "Farveskema",
"settings.general.row.colorScheme.description": "Vælg om OpenCode følger systemets, lyst eller mørkt tema",
"settings.general.row.colorScheme.description":
"Vælg, om OpenCode skal følge systemtemaet eller bruge et lyst eller mørkt tema",
"settings.general.row.theme.title": "Tema",
"settings.general.row.theme.description": "Tilpas hvordan OpenCode er temabestemt.",
"settings.general.row.theme.description": "Tilpas OpenCodes tema.",
"settings.general.row.font.title": "Kode-skrifttype",
"settings.general.row.font.description": "Tilpas skrifttypen, der bruges i kodeblokke",
"settings.general.row.terminalFont.title": "Terminalskrifttype",
"settings.general.row.terminalFont.description": "Tilpas den skrifttype, der bruges i terminalen",
"settings.general.row.uiFont.title": "UI-skrifttype",
"settings.general.row.uiFont.description": "Tilpas skrifttypen, der bruges i hele brugerfladen",
"settings.general.row.uiFont.description": "Tilpas skrifttypen, der bruges i hele brugergrænsefladen",
"settings.general.row.followup.title": "Opfølgningsadfærd",
"settings.general.row.followup.description": "Vælg om opfølgende forespørgsler skal styre straks eller vente i kø",
"settings.general.row.followup.option.queue": "Kø",
@@ -797,10 +810,11 @@ export const dict = {
"settings.general.row.mobileTitlebarBottom.title": "Navigation nederst",
"settings.general.row.mobileTitlebarBottom.description":
"Placer titellinjen og sessionsfanerne nederst på skærmen på mobilenheder",
"settings.general.row.showCustomAgents.title": "Brugerdefinerede agenter",
"settings.general.row.showCustomAgents.description": "Vis agentvælgeren i promptfeltet",
"settings.general.row.reasoningSummaries.title": "Vis tænkeoversigter",
"settings.general.row.reasoningSummaries.description": "Vis model tænkeoversigter i tidslinjen",
"settings.general.row.showCustomAgents.title": "Vis agent",
"settings.general.row.showCustomAgents.description":
"Skift mellem agenter i promptfeltet. Når vælgeren er skjult, bruges Build-agenten som standard.",
"settings.general.row.reasoningSummaries.title": "Vis ræsonneringsoversigter",
"settings.general.row.reasoningSummaries.description": "Vis oversigter over modellens ræsonnering på tidslinjen",
"settings.general.row.shellToolPartsExpanded.title": "Udvid shell-værktøjsdele",
"settings.general.row.shellToolPartsExpanded.description": "Vis shell-værktøjsdele udvidet som standard i tidslinjen",
@@ -816,13 +830,13 @@ export const dict = {
"settings.general.row.newInterfaceNotice.dismiss": "Afvis",
"settings.general.row.pinchZoom.title": "Knib for at zoome",
"settings.general.row.pinchZoom.description": "Tillad knibebevægelser på pegefeltet og Ctrl-rulning for at zoome",
"settings.general.row.wayland.title": "Brug native Wayland",
"settings.general.row.wayland.title": "Brug indbygget Wayland",
"settings.general.row.wayland.description": "Deaktiver X11-fallback på Wayland. Kræver genstart.",
"settings.general.row.wayland.tooltip":
"På Linux med skærme med blandet opdateringshastighed kan native Wayland være mere stabilt.",
"På Linux med skærme med forskellige opdateringshastigheder kan indbygget Wayland være mere stabilt.",
"settings.general.row.releaseNotes.title": "Udgivelsesnoter",
"settings.general.row.releaseNotes.description": 'Vis "Hvad er nyt"-popups efter opdateringer',
"settings.general.row.releaseNotes.description": 'Vis pop op-vinduer med "Hvad er nyt" efter opdateringer',
"settings.updates.row.startup.title": "Tjek for opdateringer ved opstart",
"settings.updates.row.startup.description": "Tjek automatisk for opdateringer, når OpenCode starter",
@@ -945,9 +959,9 @@ export const dict = {
"settings.permissions.tool.read.description": "Læsning af en fil (matcher filstien)",
"settings.permissions.tool.edit.title": "Rediger",
"settings.permissions.tool.edit.description":
"Ændre filer, herunder redigeringer, skrivninger, patches og multi-redigeringer",
"Rediger filer, herunder med redigeringer, skrivning, patches og multiredigeringer",
"settings.permissions.tool.glob.title": "Glob",
"settings.permissions.tool.glob.description": "Match filer ved hjælp af glob-mønstre",
"settings.permissions.tool.glob.description": "Find filer ved hjælp af globmønstre",
"settings.permissions.tool.grep.title": "Grep",
"settings.permissions.tool.grep.description": "Søg i filindhold ved hjælp af regulære udtryk",
"settings.permissions.tool.list.title": "Liste",
@@ -960,8 +974,8 @@ export const dict = {
"settings.permissions.tool.skill.description": "Indlæs en færdighed efter navn",
"settings.permissions.tool.lsp.title": "LSP",
"settings.permissions.tool.lsp.description": "Kør sprogserverforespørgsler",
"settings.permissions.tool.todowrite.title": "Skriv To-do",
"settings.permissions.tool.todowrite.description": "Opdater to-do listen",
"settings.permissions.tool.todowrite.title": "Skriv to-do",
"settings.permissions.tool.todowrite.description": "Opdater to-do-listen",
"settings.permissions.tool.webfetch.title": "Webhentning",
"settings.permissions.tool.webfetch.description": "Hent indhold fra en URL",
"settings.permissions.tool.websearch.title": "Websøgning",
@@ -988,7 +1002,7 @@ export const dict = {
"workspace.reset.success.description": "Arbejdsområdet matcher nu hovedgrenen.",
"workspace.error.stillPreparing": "Arbejdsområdet er stadig ved at blive klargjort",
"workspace.status.checking": "Tjekker for uflettede ændringer...",
"workspace.status.error": "Kunne ikke bekræfte git-status.",
"workspace.status.error": "Kunne ikke bekræfte Git-status.",
"workspace.status.clean": "Ingen uflettede ændringer fundet.",
"workspace.status.dirty": "Uflettede ændringer fundet i dette arbejdsområde.",
"workspace.delete.title": "Slet arbejdsområde",
@@ -1030,6 +1044,9 @@ export const dict = {
"session.question.progress": "{{current}} af {{total}} spørgsmål",
"session.header.open.finder": "Finder",
"session.header.open.fileExplorer": "Stifinder",
"session.header.reveal.finder": "Vis i Finder",
"session.header.reveal.fileExplorer": "Vis i Stifinder",
"session.header.reveal.containingFolder": "Åbn den overordnede mappe",
"session.header.open.fileManager": "Filhåndtering",
"session.header.open.app.vscode": "VS Code",
"session.header.open.app.cursor": "Cursor",
@@ -1050,11 +1067,11 @@ export const dict = {
"debugBar.nav.tip":
"Sidste gennemførte ruteovergang, der berører en sessionsside, målt fra routerstart til den første optegning efter den falder til ro.",
"debugBar.fps.label": "FPS",
"debugBar.fps.tip": "Rullende billeder pr. sekund over de sidste 5 sekunder.",
"debugBar.fps.tip": "Rullende antal billedrammer pr. sekund over de sidste 5 sekunder.",
"debugBar.frame.label": "FRAME",
"debugBar.frame.tip": "Værste billedtid over de sidste 5 sekunder.",
"debugBar.frame.tip": "Længste billedrammetid over de sidste 5 sekunder.",
"debugBar.jank.label": "JANK",
"debugBar.jank.tip": "Billeder over 32ms i de sidste 5 sekunder.",
"debugBar.jank.tip": "Billedrammer over 32 ms i de sidste 5 sekunder.",
"debugBar.long.label": "LONG",
"debugBar.long.tip": "Blokeret tid og antal lange opgaver i de sidste 5 sekunder. Maks opgave: {{max}}.",
"debugBar.delay.label": "DELAY",
@@ -1065,8 +1082,8 @@ export const dict = {
"debugBar.cls.label": "CLS",
"debugBar.cls.tip": "Kumulativt layoutskift for den nuværende app-levetid.",
"debugBar.mem.label": "MEM",
"debugBar.mem.tipUnavailable": "Brugt JS-heap vs heap-grænse. Kun Chromium.",
"debugBar.mem.tip": "Brugt JS-heap vs heap-grænse. {{used}} af {{limit}}.",
"debugBar.mem.tipUnavailable": "Brugt JS-heap sammenholdt med heapgrænsen. Kun Chromium.",
"debugBar.mem.tip": "Brugt JS-heap sammenholdt med heapgrænsen. {{used}} af {{limit}}.",
"common.key.ctrl": "Ctrl",
"common.key.alt": "Alt",
"common.key.shift": "Shift",
@@ -1090,4 +1107,121 @@ export const dict = {
"error.childStore.persistedProjectIconCreateFailed": "Kunne ikke oprette vedvarende projektikon",
"error.childStore.storeCreateFailed": "Kunne ikke oprette lager",
"terminal.connectionLost.abnormalClose": "WebSocket lukkede unormalt: {{code}}",
"desktop.menu.app": "OpenCode",
"desktop.menu.file": "Arkiv",
"desktop.menu.edit": "Rediger",
"desktop.menu.view": "Oversigt",
"desktop.menu.go": "Gå",
"desktop.menu.window": "Vindue",
"desktop.menu.help": "Hjælp",
"desktop.menu.checkForUpdates": "Søg efter opdateringer...",
"desktop.menu.settings": "Indstillinger",
"desktop.menu.reloadWebview": "Genindlæs webvisning",
"desktop.menu.restart": "Genstart",
"desktop.menu.exportLogs": "Eksportér logfiler...",
"desktop.menu.newSession": "Ny session",
"desktop.menu.openProject": "Åbn projekt...",
"desktop.menu.newWindow": "Nyt vindue",
"desktop.menu.closeWindow": "Luk vindue",
"desktop.menu.undo": "Fortryd",
"desktop.menu.redo": "Gentag",
"desktop.menu.cut": "Klip",
"desktop.menu.copy": "Kopier",
"desktop.menu.paste": "Sæt ind",
"desktop.menu.delete": "Slet",
"desktop.menu.selectAll": "Vælg alt",
"desktop.menu.toggleSidebar": "Vis eller skjul indholdsoversigt",
"desktop.menu.toggleTerminal": "Vis eller skjul terminal",
"desktop.menu.toggleFileTree": "Vis eller skjul filtræ",
"desktop.menu.reload": "Genindlæs",
"desktop.menu.toggleDeveloperTools": "Vis eller skjul udviklerværktøjer",
"desktop.menu.actualSize": "Faktisk størrelse",
"desktop.menu.zoomIn": "Zoom ind",
"desktop.menu.zoomOut": "Zoom ud",
"desktop.menu.toggleFullScreen": "Slå fuldskærmsvisning til eller fra",
"desktop.menu.back": "Tilbage",
"desktop.menu.forward": "Frem",
"desktop.menu.previousSession": "Forrige session",
"desktop.menu.nextSession": "Næste session",
"desktop.menu.previousProject": "Forrige projekt",
"desktop.menu.nextProject": "Næste projekt",
"desktop.menu.minimize": "Minimer",
"desktop.menu.maximize": "Maksimer",
"desktop.menu.documentation": "OpenCode-dokumentation",
"desktop.menu.supportForum": "Supportforum",
"desktop.menu.shareFeedback": "Giv feedback",
"desktop.menu.reportBug": "Rapportér en fejl",
"desktop.menu.ariaLabel": "OpenCode-menu",
"desktop.updater.dialog.checkFailed.message": "Søgningen efter opdateringer mislykkedes.",
"desktop.updater.dialog.checkFailed.title": "Opdateringsfejl",
"desktop.updater.dialog.upToDate.message": "Du er opdateret.",
"desktop.updater.dialog.upToDate.title": "Ingen opdateringer",
"desktop.updater.dialog.ready.message": "Opdatering {{version}} er downloadet. Vil du genstarte nu?",
"desktop.updater.dialog.ready.title": "Opdateringen er klar",
"desktop.updater.dialog.restart": "Genstart",
"desktop.updater.dialog.later": "Senere",
"desktop.recovery.action.relaunch": "Start igen",
"desktop.recovery.action.exportLogs": "Eksportér logfiler",
"desktop.recovery.action.keepWaiting": "Vent fortsat",
"desktop.recovery.action.quit": "Afslut",
"desktop.recovery.loadFailed": "OpenCode kunne ikke indlæses",
"desktop.recovery.terminated": "OpenCode-vinduet blev uventet afsluttet",
"desktop.recovery.unresponsive": "OpenCode svarer ikke",
"desktop.recovery.unresponsive.detail": "Du kan starte appen igen, åbne logfilerne eller fortsætte med at vente.",
"desktop.recovery.loadFailed.detail": "Vindue: {{window}}\nURL: {{url}}\nFejl: {{code}} {{description}}",
"desktop.recovery.terminated.detail": "Vindue: {{window}}\nÅrsag: {{reason}}\nKode: {{code}}",
"desktop.recovery.unknown": "<ukendt>",
"desktop.dialog.chooseFolder": "Vælg en mappe",
"desktop.dialog.chooseFile": "Vælg en fil",
"desktop.dialog.saveFile": "Gem fil",
"desktop.dialog.files": "Filer",
"desktop.server.local": "Lokal server",
"desktop.wsl.error.windowsOnly": "WSL er kun tilgængelig i Windows",
"desktop.wsl.error.unavailable": "WSL er ikke tilgængelig",
"desktop.wsl.error.listInstalled": "Kunne ikke vise installerede WSL-distributioner",
"desktop.wsl.error.listOnline": "Kunne ikke vise WSL-distributioner på nettet",
"desktop.wsl.error.executeDistro": "Kan ikke udføre kommandoer i distributionen",
"desktop.wsl.error.installWsl": "Installationen af WSL mislykkedes",
"desktop.wsl.error.installDistro": "Kunne ikke installere distributionen: {{distro}}",
"desktop.wsl.error.installOpencode": "Installationen af OpenCode mislykkedes",
"desktop.wsl.error.alreadyAdded": "{{distro}} er allerede tilføjet",
"desktop.wsl.error.opencodeMissing": "opencode er ikke installeret i denne distribution",
"desktop.wsl.error.opencodeCannotRun": "opencode er installeret, men kunne ikke køre",
"desktop.wsl.error.opencodeNotInstalled": "OpenCode er ikke installeret i {{distro}}",
"desktop.wsl.error.updateVersion":
"Opdateringen af OpenCode er fuldført, men {{distro}} rapporterer stadig {{installed}}. Forventet: {{expected}}",
"desktop.wsl.error.noVersion": "ingen version",
"desktop.wsl.error.serverExited": "WSL-serveren blev afsluttet efter opstart (code={{code}} signal={{signal}})",
"desktop.wsl.error.serverExitedBeforeHealthy":
"WSL-serveren blev afsluttet, før den var klar (code={{code}} signal={{signal}}){{output}}",
"desktop.wsl.error.healthTimeout":
"Tilstandskontrollen af sidecar-processen for {{distro}} fik timeout efter {{timeout}} ms",
"desktop.wsl.error.commandTimeout": "{{command}} {{args}} fik timeout efter {{timeout}} ms",
"desktop.wsl.error.failedPort": "Kunne ikke hente porten",
"desktop.picker.error.notSelected": "Filen blev ikke valgt i filvælgeren",
"desktop.picker.error.sizeLimit": "De valgte vedhæftede filer overskrider grænsen på {{limit}} MB",
"command.logs.export": "Eksportér logfiler",
"help.tabs.toast.ariaLabel": "Introduktion til faner. Organiser dit arbejde og dine aktive sessioner med faner",
"help.tabs.toast.dismiss": "Luk oplysninger om faner",
"help.tabs.title": "Introduktion til faner",
"help.tabs.description": "Organiser dit arbejde og dine aktive sessioner med faner",
"help.tabs.date": "14. juli",
"help.tabs.introduction": "OpenCode Desktop er nu bygget op omkring faner.",
"help.tabs.sessions":
"Start en ny session i en fane, eller åbn en eksisterende session fra et af dine projekter. Åbn en ny fane, når du går i gang med noget nyt, og luk den, når du er færdig.",
"help.tabs.organize":
"Når du holder nogle få faner åbne, er det nemmere at organisere dine aktive sessioner. Giv fanerne navne, der er nemme at huske, hvis du vil beholde dem.",
"help.tabs.home":
"Du finder alle dine sessioner og projekter på den nye startskærm. Når du vælger en session, åbnes den i en fane.",
"help.tabs.persistence": "Dine faner er stadig åbne, når du åbner appen igen.",
"help.tabs.worktrees":
"Det nye design understøtter endnu ikke Git Worktrees, men understøttelsen kommer snart. Hvis du foretrækker at fortsætte med det tidligere layout, kan du skifte mellem layoutene under Indstillinger. Bemærk, at det nye layout bliver permanent om nogle få uger.",
}
+220 -94
View File
@@ -98,13 +98,14 @@ export const dict = {
"dialog.provider.empty": "Keine Anbieter gefunden",
"dialog.provider.group.popular": "Beliebt",
"dialog.provider.group.other": "Andere",
"dialog.provider.custom.label": "Benutzerdefinierter OpenAI-kompatibler Anbieter",
"dialog.provider.tag.recommended": "Empfohlen",
"dialog.provider.opencode.note": "Kuratierte Modelle inklusive Claude, GPT, Gemini und mehr",
"dialog.provider.opencode.tagline": "Zuverlässige, optimierte Modelle",
"dialog.provider.opencodeGo.tagline": "Kostengünstiges Abo für alle",
"dialog.provider.anthropic.note": "Mit Claude Pro/Max oder API-Schlüssel verbinden",
"dialog.provider.copilot.note": "Mit Copilot oder API-Schlüssel verbinden",
"dialog.provider.openai.note": "Mit ChatGPT Pro/Plus oder API-Schlüssel verbinden",
"dialog.provider.anthropic.note": "Direkter Zugriff auf Claude-Modelle, einschließlich Pro und Max",
"dialog.provider.copilot.note": "KI-Modelle zur Programmierunterstützung über GitHub Copilot",
"dialog.provider.openai.note": "GPT-Modelle für schnelle, leistungsfähige allgemeine KI-Aufgaben",
"dialog.provider.google.note": "Gemini-Modelle für schnelle, strukturierte Antworten",
"dialog.provider.openrouter.note": "Zugriff auf alle unterstützten Modelle über einen Anbieter",
"dialog.provider.vercel.note": "Einheitlicher Zugriff auf KI-Modelle mit intelligentem Routing",
@@ -116,17 +117,20 @@ export const dict = {
"dialog.model.manage.provider.toggle": "Alle {{provider}}-Modelle umschalten",
"dialog.model.unpaid.freeModels.title": "Kostenlose Modelle von OpenCode",
"dialog.model.unpaid.addMore.title": "Weitere Modelle von beliebten Anbietern hinzufügen",
"dialog.model.unpaid.viewMoreProviders": "Über 70 weitere Anbieter anzeigen",
"dialog.provider.viewAll": "Mehr Anbieter anzeigen",
"provider.connect.title": "{{provider}} verbinden",
"provider.connect.title.anthropicProMax": "Mit Claude Pro/Max anmelden",
"provider.connect.selectMethod": "Anmeldemethode für {{provider}} auswählen.",
"provider.connect.method.apiKey": "API-Schlüssel",
"provider.connect.status.inProgress": "Autorisierung läuft...",
"provider.connect.status.waiting": "Warten auf Autorisierung...",
"provider.connect.method.browser": "Browser",
"provider.connect.method.headless": "Browserlos",
"provider.connect.status.inProgress": "Autorisierung läuft…",
"provider.connect.status.waiting": "Warten auf Autorisierung…",
"provider.connect.status.failed": "Autorisierung fehlgeschlagen: {{error}}",
"provider.connect.apiKey.description":
"Geben Sie Ihren {{provider}} API-Schlüssel ein, um Ihr Konto zu verbinden und {{provider}} Modelle in OpenCode zu nutzen.",
"provider.connect.apiKey.label": "{{provider}} API-Schlüssel",
"Geben Sie Ihren API-Schlüssel für {{provider}} ein, um Ihr Konto zu verbinden und {{provider}}-Modelle in OpenCode zu nutzen.",
"provider.connect.apiKey.label": "API-Schlüssel für {{provider}}",
"provider.connect.apiKey.placeholder": "API-Schlüssel",
"provider.connect.apiKey.required": "API-Schlüssel ist erforderlich",
"provider.connect.opencodeZen.line1":
@@ -139,21 +143,22 @@ export const dict = {
"provider.connect.oauth.code.visit.prefix": "Besuchen Sie ",
"provider.connect.oauth.code.visit.link": "diesen Link",
"provider.connect.oauth.code.visit.suffix":
", um Ihren Autorisierungscode zu erhalten, Ihr Konto zu verbinden und {{provider}} Modelle in OpenCode zu nutzen.",
"provider.connect.oauth.code.label": "{{method}} Autorisierungscode",
", um Ihren Autorisierungscode zu erhalten, Ihr Konto zu verbinden und {{provider}}-Modelle in OpenCode zu nutzen.",
"provider.connect.oauth.code.label": "{{method}}-Autorisierungscode",
"provider.connect.oauth.code.placeholder": "Autorisierungscode",
"provider.connect.oauth.code.required": "Autorisierungscode ist erforderlich",
"provider.connect.oauth.code.invalid": "Ungültiger Autorisierungscode",
"provider.connect.oauth.auto.visit.prefix": "Besuchen Sie ",
"provider.connect.oauth.auto.visit.link": "diesen Link",
"provider.connect.oauth.auto.visit.suffix":
" und geben Sie den untenstehenden Code ein, um Ihr Konto zu verbinden und {{provider}} Modelle in OpenCode zu nutzen.",
" und geben Sie den untenstehenden Code ein, um Ihr Konto zu verbinden und {{provider}}-Modelle in OpenCode zu nutzen.",
"provider.connect.oauth.auto.confirmationCode": "Bestätigungscode",
"provider.connect.toast.connected.title": "{{provider}} verbunden",
"provider.connect.toast.connected.description": "{{provider}} Modelle sind jetzt verfügbar.",
"provider.connect.toast.connected.description": "{{provider}}-Modelle sind jetzt verfügbar.",
"provider.custom.title": "Benutzerdefinierter Anbieter",
"provider.custom.unavailable": "Benutzerdefinierte Anbieter sind auf diesem Server nicht verfügbar",
"provider.custom.description.prefix": "Konfigurieren Sie einen OpenAI-kompatiblen Anbieter. Siehe die ",
"provider.custom.description.link": "Anbieter-Konfigurationsdokumente",
"provider.custom.description.link": "Dokumentation zur Anbieterkonfiguration",
"provider.custom.description.suffix": ".",
"provider.custom.field.providerID.label": "Anbieter-ID",
"provider.custom.field.providerID.placeholder": "myprovider",
@@ -208,32 +213,32 @@ export const dict = {
"model.tooltip.model": "Modell",
"model.tooltip.provider": "Anbieter",
"model.tooltip.reasoning": "Reasoning",
"model.tooltip.reasoning.allowed": "Erlaubt Reasoning",
"model.tooltip.reasoning.allowed": "Reasoning möglich",
"model.tooltip.reasoning.none": "Kein Reasoning",
"model.tooltip.context": "Kontextlimit {{limit}}",
"common.search.placeholder": "Suchen",
"common.goBack": "Zurück",
"common.goForward": "Vorwärts navigieren",
"common.loading": "Laden",
"common.loading.ellipsis": "...",
"common.loading": "Wird geladen",
"common.loading.ellipsis": "",
"common.cancel": "Abbrechen",
"common.clear": "Leeren",
"common.connect": "Verbinden",
"common.disconnect": "Trennen",
"common.continue": "Absenden",
"common.continue": "Weiter",
"common.submit": "Absenden",
"common.save": "Speichern",
"common.saving": "Speichert...",
"common.saving": "Wird gespeichert",
"common.default": "Standard",
"common.attachment": "Anhang",
"prompt.placeholder.shell": "Shell-Befehl eingeben... {{example}}",
"prompt.placeholder.normal": 'Fragen Sie alles... "{{example}}"',
"prompt.placeholder.simple": "Fragen Sie alles...",
"prompt.placeholder.shell": "Shell-Befehl eingeben {{example}}",
"prompt.placeholder.normal": 'Beliebige Frage stellen… "{{example}}"',
"prompt.placeholder.simple": "Beliebige Frage stellen…",
"prompt.placeholder.summarizeComments": "Kommentare zusammenfassen…",
"prompt.placeholder.summarizeComment": "Kommentar zusammenfassen…",
"prompt.mode.shell": "Shell",
"prompt.mode.normal": "Prompt",
"prompt.mode.shell.exit": "esc zum Verlassen",
"prompt.mode.shell.exit": "Esc zum Verlassen",
"session.child.promptDisabled": "Unteragenten-Sitzungen können keine Prompts erhalten.",
"session.child.backToParent": "Zurück zur Hauptsitzung.",
"prompt.example.1": "Ein TODO in der Codebasis beheben",
@@ -248,8 +253,8 @@ export const dict = {
"prompt.example.10": "API-Dokumentation generieren",
"prompt.example.11": "Datenbankabfragen optimieren",
"prompt.example.12": "Eingabevalidierung hinzufügen",
"prompt.example.13": "Neue Komponente erstellen für...",
"prompt.example.14": "Wie deploye ich dieses Projekt?",
"prompt.example.13": "Neue Komponente erstellen für",
"prompt.example.14": "Wie stelle ich dieses Projekt bereit?",
"prompt.example.15": "Meinen Code auf Best Practices überprüfen",
"prompt.example.16": "Fehlerbehandlung zu dieser Funktion hinzufügen",
"prompt.example.17": "Erkläre dieses Regex-Muster",
@@ -259,12 +264,12 @@ export const dict = {
"prompt.example.21": "Hilf mir, ein Migrationsskript zu schreiben",
"prompt.example.22": "Caching für diesen Endpunkt implementieren",
"prompt.example.23": "Paginierung zu dieser Liste hinzufügen",
"prompt.example.24": "CLI-Befehl erstellen für...",
"prompt.example.24": "CLI-Befehl erstellen für",
"prompt.example.25": "Wie funktionieren Umgebungsvariablen hier?",
"prompt.popover.emptyResults": "Keine passenden Ergebnisse",
"prompt.popover.emptyCommands": "Keine passenden Befehle",
"prompt.dropzone.label": "Bilder, PDFs oder Textdateien hier ablegen",
"prompt.dropzone.file.label": "Ablegen zum @Erwähnen der Datei",
"prompt.dropzone.file.label": "Ablegen, um die Datei mit @ zu erwähnen",
"prompt.slash.badge.custom": "benutzerdefiniert",
"prompt.slash.badge.skill": "Skill",
"prompt.slash.badge.mcp": "MCP",
@@ -280,14 +285,14 @@ export const dict = {
"prompt.menu.shellCommand": "Shell-Befehl",
"prompt.attachment.remove": "Anhang entfernen",
"prompt.action.send": "Senden",
"prompt.action.stop": "Stopp",
"prompt.action.stop": "Stoppen",
"prompt.toast.pasteUnsupported.title": "Nicht unterstützter Anhang",
"prompt.toast.attachmentDuplicate.title": "Diese Datei wurde bereits hochgeladen",
"prompt.toast.pasteUnsupported.description": "Hier können nur Bilder, PDFs oder Textdateien angehängt werden.",
"prompt.toast.modelAgentRequired.title": "Wählen Sie einen Agenten und ein Modell",
"prompt.toast.modelAgentRequired.description":
"Wählen Sie einen Agenten und ein Modell, bevor Sie eine Eingabe senden.",
"prompt.toast.worktreeCreateFailed.title": "Worktree konnte nicht erstellt werden",
"prompt.toast.worktreeCreateFailed.title": "Der Worktree konnte nicht erstellt werden",
"prompt.toast.sessionCreateFailed.title": "Sitzung konnte nicht erstellt werden",
"prompt.toast.shellSendFailed.title": "Shell-Befehl konnte nicht gesendet werden",
"prompt.toast.commandSendFailed.title": "Befehl konnte nicht gesendet werden",
@@ -300,7 +305,7 @@ export const dict = {
"dialog.plugins.empty": "In opencode.json konfigurierte Plugins",
"mcp.status.connected": "verbunden",
"mcp.status.failed": "fehlgeschlagen",
"mcp.status.needs_auth": "benötigt Authentifizierung",
"mcp.status.needs_auth": "Authentifizierung erforderlich",
"mcp.auth.clickToAuthenticate": "Zum Authentifizieren klicken",
"mcp.status.disabled": "deaktiviert",
"dialog.fork.empty": "Keine Nachrichten zum Abzweigen vorhanden",
@@ -316,10 +321,10 @@ export const dict = {
"dialog.server.search.placeholder": "Server durchsuchen",
"dialog.server.empty": "Noch keine Server",
"dialog.server.add.title": "Server hinzufügen",
"dialog.server.add.url": "Server-URL",
"dialog.server.add.url": "Serveradresse",
"dialog.server.add.placeholder": "http://localhost:4096",
"dialog.server.add.error": "Verbindung zum Server fehlgeschlagen",
"dialog.server.add.checking": "Prüfen...",
"dialog.server.add.checking": "Prüfen",
"dialog.server.add.button": "Server hinzufügen",
"dialog.server.add.name": "Servername (optional)",
"dialog.server.add.namePlaceholder": "Localhost",
@@ -328,7 +333,7 @@ export const dict = {
"dialog.server.edit.title": "Server bearbeiten",
"dialog.server.default.title": "Standardserver",
"dialog.server.default.description":
"Beim App-Start mit diesem Server verbinden, anstatt einen lokalen Server zu starten. Erfordert Neustart.",
"Beim App-Start mit diesem Server verbinden, anstatt einen lokalen Server zu starten. Ein Neustart ist erforderlich.",
"dialog.server.default.none": "Kein Server ausgewählt",
"dialog.server.default.set": "Aktuellen Server als Standard setzen",
"dialog.server.default.clear": "Löschen",
@@ -344,26 +349,26 @@ export const dict = {
"wsl.server.label": "WSL",
"wsl.server.menu.label": "WSL-Server",
"wsl.server.retryStart": "Start erneut versuchen",
"wsl.server.updating": "Wird aktualisiert...",
"wsl.server.updating": "Wird aktualisiert",
"wsl.onboarding.step.distro": "Distribution auswählen",
"wsl.onboarding.step.opencode": "OpenCode",
"wsl.onboarding.checkingRuntime": "WSL wird geprüft...",
"wsl.onboarding.checkingRuntime": "WSL wird geprüft",
"wsl.onboarding.restartRequired": "Windows muss neu gestartet werden, um die WSL-Installation abzuschließen.",
"wsl.onboarding.ready": "WSL ist bereit.",
"wsl.onboarding.required": "WSL ist erforderlich, um fortzufahren.",
"wsl.onboarding.checkingDistros": "Distributionen werden geprüft...",
"wsl.onboarding.installingDistro": "{{distro}} wird installiert...",
"wsl.onboarding.checkingDistro": "{{distro}} wird geprüft...",
"wsl.onboarding.listingDistros": "Distributionen werden aufgelistet...",
"wsl.onboarding.checkingDistros": "Distributionen werden geprüft",
"wsl.onboarding.installingDistro": "{{distro}} wird installiert",
"wsl.onboarding.checkingDistro": "{{distro}} wird geprüft",
"wsl.onboarding.listingDistros": "Distributionen werden aufgelistet",
"wsl.onboarding.distroReady": "{{distro}} ist bereit.",
"wsl.onboarding.distroNotInstalled": "{{distro}} ist noch nicht installiert.",
"wsl.onboarding.openDistroOnce": "Öffnen Sie {{distro}} einmal, um die Einrichtung abzuschließen.",
"wsl.onboarding.finishingDistro": "Einrichtung von {{distro}} wird abgeschlossen.",
"wsl.onboarding.pickDistro": "Wählen Sie eine Distribution aus oder installieren Sie unten eine.",
"wsl.onboarding.checkingOpencode": "OpenCode wird geprüft...",
"wsl.onboarding.checkingOpencodeIn": "OpenCode in {{distro}} wird geprüft...",
"wsl.onboarding.updatingOpencode": "OpenCode wird aktualisiert...",
"wsl.onboarding.updatingOpencodeIn": "OpenCode in {{distro}} wird aktualisiert...",
"wsl.onboarding.checkingOpencode": "OpenCode wird geprüft",
"wsl.onboarding.checkingOpencodeIn": "OpenCode in {{distro}} wird geprüft",
"wsl.onboarding.updatingOpencode": "OpenCode wird aktualisiert",
"wsl.onboarding.updatingOpencodeIn": "OpenCode in {{distro}} wird aktualisiert",
"wsl.onboarding.updateOpencodeIn": "Aktualisieren Sie OpenCode in {{distro}}.",
"wsl.onboarding.updateOpencode": "OpenCode aktualisieren",
"wsl.onboarding.opencodeReadyIn": "OpenCode ist in {{distro}} bereit.",
@@ -372,11 +377,11 @@ export const dict = {
"wsl.onboarding.installOpencode": "OpenCode installieren",
"wsl.onboarding.chooseDistroFirst": "Wählen Sie zuerst eine Distribution aus.",
"wsl.onboarding.loadFailed": "WSL-Status konnte nicht geladen werden.",
"wsl.onboarding.loading": "Wird geladen...",
"wsl.onboarding.loading": "Wird geladen",
"wsl.onboarding.installedDistros": "Installierte Distributionen",
"wsl.onboarding.checkAgain": "Erneut prüfen",
"wsl.onboarding.distroStatus.ready": "Bereit",
"wsl.onboarding.distroStatus.checking": "Wird geprüft...",
"wsl.onboarding.distroStatus.checking": "Wird geprüft",
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode nicht installiert",
"wsl.onboarding.distroStatus.missingTools": "Fehlend: bash, curl",
"wsl.onboarding.distroStatus.unsupported": "Nicht unterstützt · WSL 2 verwenden",
@@ -395,7 +400,7 @@ export const dict = {
"wsl.onboarding.allDistrosAdded": "Alle installierten Distributionen wurden bereits hinzugefügt.",
"wsl.onboarding.noDistros": "Noch keine Distributionen erkannt.",
"wsl.onboarding.install": "Installieren",
"wsl.onboarding.installing": "Wird installiert...",
"wsl.onboarding.installing": "Wird installiert",
"wsl.onboarding.installDistro": "Distribution installieren",
"wsl.onboarding.searchDistros": "Distributionen durchsuchen",
"wsl.onboarding.wsl2Required": "WSL 2 ist erforderlich.",
@@ -407,13 +412,13 @@ export const dict = {
"wsl.onboarding.unknown": "unbekannt",
"wsl.onboarding.desktopVersion": "Desktop {{version}}",
"wsl.onboarding.versionMismatch": "Die installierte Version entspricht nicht der Version der Desktop-App.",
"wsl.onboarding.adding": "Wird hinzugefügt...",
"wsl.onboarding.adding": "Wird hinzugefügt",
"dialog.project.edit.title": "Projekt bearbeiten",
"dialog.project.edit.name": "Name",
"dialog.project.edit.icon": "Icon",
"dialog.project.edit.icon.alt": "Projekt-Icon",
"dialog.project.edit.icon": "Symbol",
"dialog.project.edit.icon.alt": "Projektsymbol",
"dialog.project.edit.icon.hint": "Klicken oder Bild ziehen",
"dialog.project.edit.icon.recommended": "Empfohlen: 128x128px",
"dialog.project.edit.icon.recommended": "Empfohlen: 128 × 128 px",
"dialog.project.edit.color": "Farbe",
"dialog.project.edit.color.select": "{{color}}-Farbe auswählen",
"dialog.project.edit.worktree.startup": "Startup-Skript für Arbeitsbereich",
@@ -489,7 +494,7 @@ export const dict = {
"toast.context.noLineSelection.description": "Wählen Sie zuerst einen Zeilenbereich in einem Datei-Tab aus.",
"toast.session.share.copyFailed.title": "URL konnte nicht in die Zwischenablage kopiert werden",
"toast.session.share.success.title": "Sitzung geteilt",
"toast.session.share.success.description": "Teilen-URL in die Zwischenablage kopiert!",
"toast.session.share.success.description": "URL zum Teilen in die Zwischenablage kopiert!",
"toast.session.share.failed.title": "Sitzung konnte nicht geteilt werden",
"toast.session.share.failed.description": "Beim Teilen der Sitzung ist ein Fehler aufgetreten",
"toast.session.unshare.success.title": "Teilen der Sitzung aufgehoben",
@@ -509,14 +514,14 @@ export const dict = {
"error.page.action.report": "Fehler melden",
"error.page.action.reported": "Fehler gemeldet",
"error.page.action.exportLogs": "Protokolle exportieren",
"error.page.action.checking": "Prüfen...",
"error.page.action.checking": "Prüfen",
"error.page.action.checkUpdates": "Nach Updates suchen",
"error.page.action.updateTo": "Auf {{version}} aktualisieren",
"error.page.report.prefix": "Bitte melden Sie diesen Fehler dem OpenCode-Team",
"error.page.report.discord": "auf Discord",
"error.page.version": "Version: {{version}}",
"error.dev.rootNotFound":
"Wurzelelement nicht gefunden. Haben Sie vergessen, es in Ihre index.html aufzunehmen? Oder wurde das id-Attribut falsch geschrieben?",
"Wurzelelement nicht gefunden. Haben Sie vergessen, es in Ihre index.html aufzunehmen? Oder wurde das ID-Attribut falsch geschrieben?",
"error.serverSync.connectFailed": "Verbindung zum Server fehlgeschlagen. Läuft ein Server unter `{{url}}`?",
"directory.error.invalidUrl": "Ungültiges Verzeichnis in der URL.",
"error.chain.unknown": "Unbekannter Fehler",
@@ -524,10 +529,10 @@ export const dict = {
"error.chain.apiError": "API-Fehler",
"error.chain.status": "Status: {{status}}",
"error.chain.retryable": "Wiederholbar: {{retryable}}",
"error.chain.responseBody": "Antwort-Body:\n{{body}}",
"error.chain.responseBody": "Antwortinhalt:\n{{body}}",
"error.chain.didYouMean": "Meinten Sie: {{suggestions}}",
"error.chain.modelNotFound": "Modell nicht gefunden: {{provider}}/{{model}}",
"error.chain.checkConfig": "Überprüfen Sie Ihre Konfiguration (opencode.json) auf Anbieter-/Modellnamen",
"error.chain.checkConfig": "Überprüfen Sie die Anbieter- und Modellnamen in Ihrer Konfiguration (opencode.json)",
"error.chain.mcpFailed":
'MCP-Server "{{name}}" fehlgeschlagen. Hinweis: OpenCode unterstützt noch keine MCP-Authentifizierung.',
"error.chain.providerAuthFailed": "Anbieter-Authentifizierung fehlgeschlagen ({{provider}}): {{message}}",
@@ -568,7 +573,7 @@ export const dict = {
"home.sessions.group.yesterday": "Gestern",
"home.sessions.group.older": "Älter",
"home.providerTip":
"Verbinde dich mit über 75 Anbietern, um weitere Modelle wie Claude, GPT, Gemini und andere zu nutzen",
"OpenCode mit über 75 Anbietern verbinden, um weitere Modelle wie Claude, GPT, Gemini und andere zu nutzen",
"session.tab.session": "Sitzung",
"session.tab.review": "Überprüfung",
"session.tab.context": "Kontext",
@@ -579,12 +584,12 @@ export const dict = {
"Dieser Tab verweist auf eine Sitzung, die auf diesem Server nicht mehr existiert.",
"session.error.notFound.closeTab": "Tab schließen",
"session.error.serverConnection": "Verbindung zu diesem Server nicht möglich",
"session.review.filesChanged": "{{count}} Dateien geändert",
"session.review.filesChanged": "Geänderte Dateien: {{count}}",
"session.review.change.one": "Änderung",
"session.review.change.other": "Änderungen",
"session.review.loadingChanges": "Lade Änderungen...",
"session.review.loadingChanges": "Änderungen werden geladen…",
"session.review.empty": "Noch keine Änderungen in dieser Sitzung",
"session.review.noVcs": "Kein Git-Versionskontrollsystem erkannt, Änderungen werden nicht angezeigt",
"session.review.noVcs": "Kein Git-Versionskontrollsystem erkannt. Änderungen werden nicht angezeigt",
"session.review.noSnapshot":
"Snapshot-Tracking ist in der Konfiguration deaktiviert, daher sind Sitzungsänderungen nicht verfügbar",
"session.review.noChanges": "Keine Änderungen",
@@ -595,10 +600,10 @@ export const dict = {
"session.files.empty": "Keine Dateien",
"session.files.binaryContent": "Binärdatei (Inhalt kann nicht angezeigt werden)",
"session.messages.renderEarlier": "Frühere Nachrichten rendern",
"session.messages.loadingEarlier": "Lade frühere Nachrichten...",
"session.messages.loadingEarlier": "Frühere Nachrichten werden geladen…",
"session.messages.loadEarlier": "Frühere Nachrichten laden",
"session.messages.loading": "Lade Nachrichten...",
"session.messages.jumpToLatest": "Zum neuesten springen",
"session.messages.loading": "Nachrichten werden geladen…",
"session.messages.jumpToLatest": "Zur neuesten Nachricht springen",
"session.context.addToContext": "{{selection}} zum Kontext hinzufügen",
"session.todo.title": "Aufgaben",
"session.todo.collapse": "Einklappen",
@@ -618,7 +623,7 @@ export const dict = {
"session.revertDock.collapse": "Zurückgesetzte Nachrichten einklappen",
"session.revertDock.expand": "Zurückgesetzte Nachrichten ausklappen",
"session.revertDock.restore": "Nachricht wiederherstellen",
"session.new.title": "Baue, was du willst",
"session.new.title": "Alles entwickeln",
"session.new.project.new": "Neues Projekt",
"session.new.project.search": "Projekte durchsuchen",
"session.new.project.add": "Projekt hinzufügen",
@@ -652,22 +657,29 @@ export const dict = {
"Sitzung öffentlich im Web teilen. Sie wird für jeden mit dem Link zugänglich sein.",
"session.share.action.share": "Teilen",
"session.share.action.publish": "Veröffentlichen",
"session.share.action.publishing": "Veröffentliche...",
"session.share.action.publishing": "Wird veröffentlicht…",
"session.share.action.unpublish": "Veröffentlichung aufheben",
"session.share.action.unpublishing": "Hebe Veröffentlichung auf...",
"session.share.action.unpublishing": "Veröffentlichung wird aufgehoben…",
"session.share.action.view": "Ansehen",
"session.share.copy.copied": "Kopiert",
"session.share.copy.copyLink": "Link kopieren",
"lsp.tooltip.none": "Keine LSP-Server",
"lsp.label.connected": "{{count}} LSP",
"prompt.loading": "Lade Prompt...",
"terminal.loading": "Lade Terminal...",
"prompt.loading": "Prompt wird geladen…",
"terminal.loading": "Terminal wird geladen…",
"terminal.title": "Terminal",
"terminal.title.numbered": "Terminal {{number}}",
"terminal.close": "Terminal schließen",
"terminal.connectionLost.title": "Verbindung verloren",
"terminal.connectionLost.description":
"Die Terminalverbindung wurde unterbrochen. Das kann passieren, wenn der Server neu startet.",
"terminal.connectTicket.csrfError":
"Das PTY-Verbindungsticket wurde bei der Ursprungs- oder CSRF-Prüfung abgelehnt. Überprüfen Sie die CORS-Konfiguration des Servers.",
"terminal.connectTicket.statusError": "Das PTY-Verbindungsticket ist mit {{status}} fehlgeschlagen",
"titlebar.update": "Aktualisieren",
"titlebar.updateVersion": "Aktualisieren {{version}}",
"common.closeTab": "Tab schließen",
"common.dismiss": "Verwerfen",
"common.requestFailed": "Anfrage fehlgeschlagen",
@@ -728,12 +740,12 @@ export const dict = {
"settings.general.row.font.title": "Code-Schriftart",
"settings.general.row.font.description": "Die in Codeblöcken verwendete Schriftart anpassen",
"settings.general.row.terminalFont.title": "Terminalschriftart",
"settings.general.row.terminalFont.description": "Passe die im Terminal verwendete Schriftart an",
"settings.general.row.terminalFont.description": "Die im Terminal verwendete Schriftart anpassen",
"settings.general.row.uiFont.title": "UI-Schriftart",
"settings.general.row.uiFont.description": "Die im gesamten Interface verwendete Schriftart anpassen",
"settings.general.row.followup.title": "Verhalten bei Folgefragen",
"settings.general.row.uiFont.description": "Die in der gesamten Benutzeroberfläche verwendete Schriftart anpassen",
"settings.general.row.followup.title": "Verhalten bei Folgeeingaben",
"settings.general.row.followup.description":
"Wählen Sie, ob Folgefragen sofort steuern oder in einer Warteschlange warten",
"Wählen Sie, ob Folgeeingaben die laufende Sitzung sofort steuern oder in einer Warteschlange warten",
"settings.general.row.followup.option.queue": "Warteschlange",
"settings.general.row.followup.option.steer": "Steuern",
"settings.general.row.showFileTree.title": "Dateibaum",
@@ -751,8 +763,9 @@ export const dict = {
"settings.general.row.mobileTitlebarBottom.title": "Navigation unten",
"settings.general.row.mobileTitlebarBottom.description":
"Titelleiste und Sitzungs-Tabs auf Mobilgeräten am unteren Bildschirmrand platzieren",
"settings.general.row.showCustomAgents.title": "Benutzerdefinierte Agenten",
"settings.general.row.showCustomAgents.description": "Agentenauswahl im Eingabebereich anzeigen",
"settings.general.row.showCustomAgents.title": "Agent anzeigen",
"settings.general.row.showCustomAgents.description":
"Im Eingabebereich zwischen Agenten wechseln. Ist die Auswahl ausgeblendet, wird standardmäßig der Build-Agent verwendet.",
"settings.general.row.reasoningSummaries.title": "Reasoning-Zusammenfassungen anzeigen",
"settings.general.row.reasoningSummaries.description":
"Zusammenfassungen des Modell-Reasonings in der Timeline anzeigen",
@@ -772,7 +785,7 @@ export const dict = {
"settings.general.row.pinchZoom.title": "Zoom per Fingergeste",
"settings.general.row.pinchZoom.description": "Zoomen per Zwei-Finger- und Ctrl-Scroll-Geste erlauben",
"settings.general.row.wayland.title": "Natives Wayland verwenden",
"settings.general.row.wayland.description": "X11-Fallback unter Wayland deaktivieren. Erfordert Neustart.",
"settings.general.row.wayland.description": "X11-Fallback unter Wayland deaktivieren. Ein Neustart ist erforderlich.",
"settings.general.row.wayland.tooltip":
"Unter Linux mit Monitoren unterschiedlicher Bildwiederholraten kann natives Wayland stabiler sein.",
"settings.general.row.releaseNotes.title": "Versionshinweise",
@@ -782,11 +795,11 @@ export const dict = {
"settings.updates.row.check.title": "Nach Updates suchen",
"settings.updates.row.check.description": "Manuell nach Updates suchen und installieren, wenn verfügbar",
"settings.updates.action.checkNow": "Jetzt prüfen",
"settings.updates.action.checking": "Wird geprüft...",
"settings.updates.action.downloading": "Wird heruntergeladen...",
"settings.updates.action.installing": "Wird installiert...",
"settings.updates.toast.latest.title": "Du bist auf dem neuesten Stand",
"settings.updates.toast.latest.description": "Du verwendest die aktuelle Version von OpenCode.",
"settings.updates.action.checking": "Wird geprüft",
"settings.updates.action.downloading": "Wird heruntergeladen",
"settings.updates.action.installing": "Wird installiert",
"settings.updates.toast.latest.title": "OpenCode ist auf dem neuesten Stand",
"settings.updates.toast.latest.description": "Die aktuelle Version von OpenCode wird verwendet.",
"sound.option.none": "Keine",
"sound.option.alert01": "Alarm 01",
"sound.option.alert02": "Alarm 02",
@@ -902,8 +915,8 @@ export const dict = {
"settings.permissions.tool.bash.description": "Shell-Befehle ausführen",
"settings.permissions.tool.task.title": "Aufgabe",
"settings.permissions.tool.task.description": "Unteragenten starten",
"settings.permissions.tool.skill.title": "Fähigkeit",
"settings.permissions.tool.skill.description": "Eine Fähigkeit nach Namen laden",
"settings.permissions.tool.skill.title": "Skill",
"settings.permissions.tool.skill.description": "Einen Skill anhand des Namens laden",
"settings.permissions.tool.lsp.title": "LSP",
"settings.permissions.tool.lsp.description": "Language-Server-Abfragen ausführen",
"settings.permissions.tool.todowrite.title": "Todo schreiben",
@@ -931,7 +944,7 @@ export const dict = {
"workspace.reset.success.title": "Arbeitsbereich zurückgesetzt",
"workspace.reset.success.description": "Der Arbeitsbereich entspricht jetzt dem Standard-Branch.",
"workspace.error.stillPreparing": "Arbeitsbereich wird noch vorbereitet",
"workspace.status.checking": "Suche nach nicht zusammengeführten Änderungen...",
"workspace.status.checking": "Suche nach nicht zusammengeführten Änderungen",
"workspace.status.error": "Git-Status konnte nicht überprüft werden.",
"workspace.status.clean": "Keine nicht zusammengeführten Änderungen erkannt.",
"workspace.status.dirty": "Nicht zusammengeführte Änderungen in diesem Arbeitsbereich erkannt.",
@@ -961,7 +974,7 @@ export const dict = {
"settings.providers.custom.description": "Fügen Sie einen OpenAI-kompatiblen Anbieter per Basis-URL hinzu.",
"app.server.unreachable": "Konnte {{server}} nicht erreichen",
"app.server.retrying": "Automatische erneute Verbindung...",
"app.server.retrying": "Verbindung wird automatisch erneut hergestellt…",
"app.server.otherServers": "Andere Server",
"dialog.server.add.usernamePlaceholder": "Benutzername",
"dialog.server.add.passwordPlaceholder": "Passwort",
@@ -969,12 +982,15 @@ export const dict = {
"session.review.noVcs.createGit.title": "Git-Repository erstellen",
"session.review.noVcs.createGit.description":
"Änderungen in diesem Projekt verfolgen, überprüfen und rückgängig machen",
"session.review.noVcs.createGit.actionLoading": "Git-Repository wird erstellt...",
"session.review.noVcs.createGit.actionLoading": "Git-Repository wird erstellt",
"session.review.noVcs.createGit.action": "Git-Repository erstellen",
"session.todo.progress": "{{done}} von {{total}} Aufgaben erledigt",
"session.question.progress": "{{current}} von {{total}} Fragen",
"session.header.open.finder": "Finder",
"session.header.open.fileExplorer": "Datei-Explorer",
"session.header.reveal.finder": "Im Finder anzeigen",
"session.header.reveal.fileExplorer": "Im Datei-Explorer anzeigen",
"session.header.reveal.containingFolder": "Übergeordneten Ordner öffnen",
"session.header.open.fileManager": "Dateimanager",
"session.header.open.app.vscode": "VS Code",
"session.header.open.app.cursor": "Cursor",
@@ -989,29 +1005,30 @@ export const dict = {
"session.header.open.app.androidStudio": "Android Studio",
"session.header.open.app.powershell": "PowerShell",
"session.header.open.app.sublimeText": "Sublime Text",
"debugBar.ariaLabel": "Entwicklungs-Leistungsdiagnose",
"debugBar.ariaLabel": "Leistungsdiagnose für die Entwicklung",
"debugBar.na": "n.v.",
"debugBar.nav.label": "NAV",
"debugBar.nav.tip":
"Letzter abgeschlossener Routenübergang, der eine Sitzungsseite berührt, gemessen vom Start des Routers bis zum ersten Rendern nach dem Einschwingen.",
"Letzter abgeschlossener Routenübergang zu einer Sitzungsseite, gemessen vom Start des Routers bis zum ersten Rendering nach Abschluss des Übergangs.",
"debugBar.fps.label": "FPS",
"debugBar.fps.tip": "Gleitende Bilder pro Sekunde in den letzten 5 Sekunden.",
"debugBar.fps.tip": "Gleitender Mittelwert der Frames pro Sekunde in den letzten 5 Sekunden.",
"debugBar.frame.label": "FRAME",
"debugBar.frame.tip": "Schlechteste Frame-Zeit in den letzten 5 Sekunden.",
"debugBar.frame.tip": "Längste Framedauer in den letzten 5 Sekunden.",
"debugBar.jank.label": "JANK",
"debugBar.jank.tip": "Frames über 32ms in den letzten 5 Sekunden.",
"debugBar.jank.tip": "Frames über 32 ms in den letzten 5 Sekunden.",
"debugBar.long.label": "LONG",
"debugBar.long.tip": "Blockierte Zeit und Anzahl langer Aufgaben in den letzten 5 Sekunden. Max Aufgabe: {{max}}.",
"debugBar.long.tip":
"Blockierte Zeit und Anzahl langer Aufgaben in den letzten 5 Sekunden. Längste Aufgabe: {{max}}.",
"debugBar.delay.label": "DELAY",
"debugBar.delay.tip": "Schlechteste beobachtete Eingabeverzögerung in den letzten 5 Sekunden.",
"debugBar.inp.label": "INP",
"debugBar.inp.tip":
"Ungefähre Interaktionsdauer in den letzten 5 Sekunden. Dies ist INP-ähnlich, nicht das offizielle Web Vitals INP.",
"Ungefähre Interaktionsdauer in den letzten 5 Sekunden. Dies ist INP-ähnlich, nicht das offizielle Web-Vitals-INP.",
"debugBar.cls.label": "CLS",
"debugBar.cls.tip": "Kumulative Layoutverschiebung für die aktuelle App-Lebensdauer.",
"debugBar.cls.tip": "Kumulative Layoutverschiebung während der aktuellen App-Laufzeit.",
"debugBar.mem.label": "MEM",
"debugBar.mem.tipUnavailable": "Verwendeter JS-Heap vs Heap-Limit. Nur Chromium.",
"debugBar.mem.tip": "Verwendeter JS-Heap vs Heap-Limit. {{used}} von {{limit}}.",
"debugBar.mem.tipUnavailable": "Belegter JS-Heap im Verhältnis zum Heap-Limit. Nur Chromium.",
"debugBar.mem.tip": "Belegter JS-Heap im Verhältnis zum Heap-Limit. {{used}} von {{limit}}.",
"common.key.ctrl": "Strg",
"common.key.alt": "Alt",
"common.key.shift": "Umschalt",
@@ -1032,7 +1049,116 @@ export const dict = {
"error.serverSDK.serverNotAvailable": "Server nicht verfügbar",
"error.childStore.persistedCacheCreateFailed": "Dauerhafter Cache konnte nicht erstellt werden",
"error.childStore.persistedProjectMetadataCreateFailed": "Dauerhafte Projektmetadaten konnten nicht erstellt werden",
"error.childStore.persistedProjectIconCreateFailed": "Dauerhaftes Projekticon konnte nicht erstellt werden",
"error.childStore.persistedProjectIconCreateFailed": "Dauerhaftes Projektsymbol konnte nicht erstellt werden",
"error.childStore.storeCreateFailed": "Speicher konnte nicht erstellt werden",
"terminal.connectionLost.abnormalClose": "WebSocket abnormal geschlossen: {{code}}",
"terminal.connectionLost.abnormalClose": "WebSocket unerwartet geschlossen: {{code}}",
"desktop.menu.app": "OpenCode",
"desktop.menu.file": "Datei",
"desktop.menu.edit": "Bearbeiten",
"desktop.menu.view": "Ansicht",
"desktop.menu.go": "Gehe zu",
"desktop.menu.window": "Fenster",
"desktop.menu.help": "Hilfe",
"desktop.menu.checkForUpdates": "Nach Updates suchen…",
"desktop.menu.settings": "Einstellungen",
"desktop.menu.reloadWebview": "Webview neu laden",
"desktop.menu.restart": "Neu starten",
"desktop.menu.exportLogs": "Protokolle exportieren…",
"desktop.menu.newSession": "Neue Sitzung",
"desktop.menu.openProject": "Projekt öffnen…",
"desktop.menu.newWindow": "Neues Fenster",
"desktop.menu.closeWindow": "Fenster schließen",
"desktop.menu.undo": "Rückgängig",
"desktop.menu.redo": "Wiederholen",
"desktop.menu.cut": "Ausschneiden",
"desktop.menu.copy": "Kopieren",
"desktop.menu.paste": "Einfügen",
"desktop.menu.delete": "Löschen",
"desktop.menu.selectAll": "Alles auswählen",
"desktop.menu.toggleSidebar": "Seitenleiste umschalten",
"desktop.menu.toggleTerminal": "Terminal umschalten",
"desktop.menu.toggleFileTree": "Dateibaum umschalten",
"desktop.menu.reload": "Neu laden",
"desktop.menu.toggleDeveloperTools": "Entwicklertools umschalten",
"desktop.menu.actualSize": "Tatsächliche Größe",
"desktop.menu.zoomIn": "Vergrößern",
"desktop.menu.zoomOut": "Verkleinern",
"desktop.menu.toggleFullScreen": "Vollbildmodus umschalten",
"desktop.menu.back": "Zurück",
"desktop.menu.forward": "Vorwärts",
"desktop.menu.previousSession": "Vorherige Sitzung",
"desktop.menu.nextSession": "Nächste Sitzung",
"desktop.menu.previousProject": "Vorheriges Projekt",
"desktop.menu.nextProject": "Nächstes Projekt",
"desktop.menu.minimize": "Minimieren",
"desktop.menu.maximize": "Maximieren",
"desktop.menu.documentation": "OpenCode-Dokumentation",
"desktop.menu.supportForum": "Supportforum",
"desktop.menu.shareFeedback": "Feedback senden",
"desktop.menu.reportBug": "Fehler melden",
"desktop.menu.ariaLabel": "OpenCode-Menü",
"desktop.updater.dialog.checkFailed.message": "Die Suche nach Updates ist fehlgeschlagen.",
"desktop.updater.dialog.checkFailed.title": "Updatefehler",
"desktop.updater.dialog.upToDate.message": "Sie sind auf dem neuesten Stand.",
"desktop.updater.dialog.upToDate.title": "Keine Updates",
"desktop.updater.dialog.ready.message": "Update {{version}} wurde heruntergeladen. Jetzt neu starten?",
"desktop.updater.dialog.ready.title": "Update bereit",
"desktop.updater.dialog.restart": "Neu starten",
"desktop.updater.dialog.later": "Später",
"desktop.recovery.action.relaunch": "Neu starten",
"desktop.recovery.action.exportLogs": "Protokolle exportieren",
"desktop.recovery.action.keepWaiting": "Weiter warten",
"desktop.recovery.action.quit": "Beenden",
"desktop.recovery.loadFailed": "OpenCode konnte nicht geladen werden",
"desktop.recovery.terminated": "Das OpenCode-Fenster wurde unerwartet beendet",
"desktop.recovery.unresponsive": "OpenCode reagiert nicht",
"desktop.recovery.unresponsive.detail": "Sie können die App neu starten, die Protokolle öffnen oder weiter warten.",
"desktop.recovery.loadFailed.detail": "Fenster: {{window}}\nURL: {{url}}\nFehler: {{code}} {{description}}",
"desktop.recovery.terminated.detail": "Fenster: {{window}}\nGrund: {{reason}}\nCode: {{code}}",
"desktop.recovery.unknown": "<unbekannt>",
"desktop.dialog.chooseFolder": "Ordner auswählen",
"desktop.dialog.chooseFile": "Datei auswählen",
"desktop.dialog.saveFile": "Datei speichern",
"desktop.dialog.files": "Dateien",
"desktop.server.local": "Lokaler Server",
"desktop.wsl.error.windowsOnly": "WSL ist nur unter Windows verfügbar",
"desktop.wsl.error.unavailable": "WSL ist nicht verfügbar",
"desktop.wsl.error.listInstalled": "Installierte WSL-Distributionen konnten nicht aufgelistet werden",
"desktop.wsl.error.listOnline": "Verfügbare WSL-Distributionen konnten nicht aufgelistet werden",
"desktop.wsl.error.executeDistro": "In der Distribution können keine Befehle ausgeführt werden",
"desktop.wsl.error.installWsl": "WSL-Installation fehlgeschlagen",
"desktop.wsl.error.installDistro": "Distribution konnte nicht installiert werden: {{distro}}",
"desktop.wsl.error.installOpencode": "OpenCode-Installation fehlgeschlagen",
"desktop.wsl.error.alreadyAdded": "{{distro}} wurde bereits hinzugefügt",
"desktop.wsl.error.opencodeMissing": "opencode ist in dieser Distribution nicht installiert",
"desktop.wsl.error.opencodeCannotRun": "opencode ist installiert, konnte aber nicht ausgeführt werden",
"desktop.wsl.error.opencodeNotInstalled": "OpenCode ist in {{distro}} nicht installiert",
"desktop.wsl.error.updateVersion":
"Das OpenCode-Update wurde abgeschlossen, aber {{distro}} meldet weiterhin {{installed}}; erwartet wurde {{expected}}",
"desktop.wsl.error.noVersion": "keine Version",
"desktop.wsl.error.serverExited": "WSL-Server wurde nach dem Start beendet (code={{code}} signal={{signal}})",
"desktop.wsl.error.serverExitedBeforeHealthy":
"WSL-Server wurde beendet, bevor er betriebsbereit war (code={{code}} signal={{signal}}){{output}}",
"desktop.wsl.error.healthTimeout":
"Zeitüberschreitung bei der Integritätsprüfung des Sidecars für {{distro}} nach {{timeout}} ms",
"desktop.wsl.error.commandTimeout": "Zeitüberschreitung bei {{command}} {{args}} nach {{timeout}} ms",
"desktop.wsl.error.failedPort": "Port konnte nicht abgerufen werden",
"desktop.picker.error.notSelected": "Im Auswahldialog wurde keine Datei ausgewählt",
"desktop.picker.error.sizeLimit": "Die ausgewählten Anhänge überschreiten das Limit von {{limit}} MB",
"command.logs.export": "Protokolle exportieren",
"help.tabs.toast.ariaLabel": "Neu: Tabs. Organisieren Sie Ihre Arbeit und aktiven Sitzungen mithilfe von Tabs",
"help.tabs.toast.dismiss": "Informationen zu Tabs schließen",
"help.tabs.title": "Neu: Tabs",
"help.tabs.description": "Organisieren Sie Ihre Arbeit und aktiven Sitzungen mithilfe von Tabs",
"help.tabs.date": "14. Juli",
"help.tabs.introduction": "OpenCode Desktop basiert jetzt auf Tabs.",
"help.tabs.sessions":
"Starten Sie eine neue Sitzung in einem Tab oder öffnen Sie eine vorhandene Sitzung aus einem Ihrer Projekte. Öffnen Sie einen neuen Tab, wenn Sie etwas Neues beginnen, und schließen Sie ihn, wenn Sie fertig sind.",
"help.tabs.organize":
"Wenn Sie einige Tabs geöffnet lassen, können Sie Ihre aktiven Sitzungen leichter organisieren. Benennen Sie Tabs einprägsam, wenn Sie sie länger behalten möchten.",
"help.tabs.home":
"Auf der neuen Startseite finden Sie alle Ihre Sitzungen und Projekte. Wenn Sie eine Sitzung auswählen, wird sie in einem Tab geöffnet.",
"help.tabs.persistence": "Wenn Sie die App erneut öffnen, sind Ihre Tabs weiterhin geöffnet.",
"help.tabs.worktrees":
"Das neue Design unterstützt Git-Worktrees noch nicht. Diese Funktion folgt in Kürze. Wenn Sie das bisherige Layout vorerst weiterverwenden möchten, können Sie in den Einstellungen zwischen den Layouts wechseln. Beachten Sie jedoch, dass das neue Layout in einigen Wochen dauerhaft verwendet wird.",
} satisfies Partial<Record<Keys, string>>
@@ -0,0 +1,41 @@
import { describe, expect, test } from "bun:test"
import {
createDesktopNativeBundle,
DESKTOP_NATIVE_ENGLISH,
DESKTOP_NATIVE_KEYS,
DESKTOP_NATIVE_MAX_PAYLOAD_BYTES,
formatDesktopNativeMessage,
parseDesktopNativeBundle,
} from "./desktop-native"
describe("desktop native translations", () => {
test("accepts the exact typed bundle", () => {
const bundle = createDesktopNativeBundle("en", (key) => DESKTOP_NATIVE_ENGLISH[key])
expect(parseDesktopNativeBundle(bundle)).toEqual(bundle)
})
test("rejects unsupported locales and mismatched key sets", () => {
const bundle = createDesktopNativeBundle("en", (key) => DESKTOP_NATIVE_ENGLISH[key])
expect(parseDesktopNativeBundle({ ...bundle, locale: "en-US" })).toBeUndefined()
expect(
parseDesktopNativeBundle({
...bundle,
messages: Object.fromEntries(DESKTOP_NATIVE_KEYS.slice(1).map((key) => [key, bundle.messages[key]])),
}),
).toBeUndefined()
expect(parseDesktopNativeBundle({ ...bundle, messages: { ...bundle.messages, extra: "no" } })).toBeUndefined()
expect(
parseDesktopNativeBundle({
...bundle,
messages: { ...bundle.messages, [DESKTOP_NATIVE_KEYS[0]]: "x".repeat(DESKTOP_NATIVE_MAX_PAYLOAD_BYTES) },
}),
).toBeUndefined()
expect(
parseDesktopNativeBundle({ ...bundle, messages: { ...bundle.messages, [DESKTOP_NATIVE_KEYS[0]]: 1 } }),
).toBeUndefined()
})
test("interpolates native templates without changing unknown placeholders", () => {
expect(formatDesktopNativeMessage("{{known}} {{unknown}}", { known: "yes" })).toBe("yes {{unknown}}")
})
})
+175
View File
@@ -0,0 +1,175 @@
export const DESKTOP_NATIVE_LOCALES = [
"en",
"zh",
"zht",
"ko",
"de",
"es",
"fr",
"da",
"ja",
"pl",
"ru",
"uk",
"bs",
"ar",
"no",
"br",
"th",
"tr",
"hi",
"nl",
"id",
"vi",
"it",
"ur",
"pa",
"az",
"fi",
"sv",
] as const
export type DesktopNativeLocale = (typeof DESKTOP_NATIVE_LOCALES)[number]
export const DESKTOP_NATIVE_ENGLISH = {
"desktop.menu.app": "OpenCode",
"desktop.menu.file": "File",
"desktop.menu.edit": "Edit",
"desktop.menu.view": "View",
"desktop.menu.go": "Go",
"desktop.menu.window": "Window",
"desktop.menu.help": "Help",
"desktop.menu.checkForUpdates": "Check for Updates...",
"desktop.menu.settings": "Settings",
"desktop.menu.reloadWebview": "Reload Webview",
"desktop.menu.restart": "Restart",
"desktop.menu.exportLogs": "Export Logs...",
"desktop.menu.newSession": "New Session",
"desktop.menu.openProject": "Open Project...",
"desktop.menu.newWindow": "New Window",
"desktop.menu.closeWindow": "Close Window",
"desktop.menu.undo": "Undo",
"desktop.menu.redo": "Redo",
"desktop.menu.cut": "Cut",
"desktop.menu.copy": "Copy",
"desktop.menu.paste": "Paste",
"desktop.menu.delete": "Delete",
"desktop.menu.selectAll": "Select All",
"desktop.menu.toggleSidebar": "Toggle Sidebar",
"desktop.menu.toggleTerminal": "Toggle Terminal",
"desktop.menu.toggleFileTree": "Toggle File Tree",
"desktop.menu.reload": "Reload",
"desktop.menu.toggleDeveloperTools": "Toggle Developer Tools",
"desktop.menu.actualSize": "Actual Size",
"desktop.menu.zoomIn": "Zoom In",
"desktop.menu.zoomOut": "Zoom Out",
"desktop.menu.toggleFullScreen": "Toggle Full Screen",
"desktop.menu.back": "Back",
"desktop.menu.forward": "Forward",
"desktop.menu.previousSession": "Previous Session",
"desktop.menu.nextSession": "Next Session",
"desktop.menu.previousProject": "Previous Project",
"desktop.menu.nextProject": "Next Project",
"desktop.menu.minimize": "Minimize",
"desktop.menu.maximize": "Maximize",
"desktop.menu.documentation": "OpenCode Documentation",
"desktop.menu.supportForum": "Support Forum",
"desktop.menu.shareFeedback": "Share Feedback",
"desktop.menu.reportBug": "Report a Bug",
"desktop.menu.ariaLabel": "OpenCode menu",
"desktop.updater.dialog.checkFailed.message": "Update check failed.",
"desktop.updater.dialog.checkFailed.title": "Update Error",
"desktop.updater.dialog.upToDate.message": "You're up to date.",
"desktop.updater.dialog.upToDate.title": "No Updates",
"desktop.updater.dialog.ready.message": "Update {{version}} downloaded. Restart now?",
"desktop.updater.dialog.ready.title": "Update Ready",
"desktop.updater.dialog.restart": "Restart",
"desktop.updater.dialog.later": "Later",
"desktop.recovery.action.relaunch": "Relaunch",
"desktop.recovery.action.exportLogs": "Export Logs",
"desktop.recovery.action.keepWaiting": "Keep Waiting",
"desktop.recovery.action.quit": "Quit",
"desktop.recovery.loadFailed": "OpenCode failed to load",
"desktop.recovery.terminated": "OpenCode window terminated unexpectedly",
"desktop.recovery.unresponsive": "OpenCode is not responding",
"desktop.recovery.unresponsive.detail": "You can relaunch the app, open the logs, or keep waiting.",
"desktop.recovery.loadFailed.detail": "Window: {{window}}\nURL: {{url}}\nError: {{code}} {{description}}",
"desktop.recovery.terminated.detail": "Window: {{window}}\nReason: {{reason}}\nCode: {{code}}",
"desktop.recovery.unknown": "<unknown>",
"desktop.dialog.chooseFolder": "Choose a folder",
"desktop.dialog.chooseFile": "Choose a file",
"desktop.dialog.saveFile": "Save file",
"desktop.dialog.files": "Files",
"desktop.server.local": "Local Server",
"desktop.wsl.error.windowsOnly": "WSL is only available on Windows",
"desktop.wsl.error.unavailable": "WSL is unavailable",
"desktop.wsl.error.listInstalled": "Failed to list installed WSL distros",
"desktop.wsl.error.listOnline": "Failed to list online WSL distros",
"desktop.wsl.error.executeDistro": "Cannot execute commands in distro",
"desktop.wsl.error.installWsl": "WSL installation failed",
"desktop.wsl.error.installDistro": "Failed to install distro: {{distro}}",
"desktop.wsl.error.installOpencode": "OpenCode installation failed",
"desktop.wsl.error.alreadyAdded": "{{distro}} is already added",
"desktop.wsl.error.opencodeMissing": "opencode is not installed in this distro",
"desktop.wsl.error.opencodeCannotRun": "opencode is installed but could not run",
"desktop.wsl.error.opencodeNotInstalled": "OpenCode is not installed in {{distro}}",
"desktop.wsl.error.updateVersion":
"OpenCode update finished but {{distro}} still reports {{installed}}; expected {{expected}}",
"desktop.wsl.error.noVersion": "no version",
"desktop.wsl.error.serverExited": "WSL server exited after startup (code={{code}} signal={{signal}})",
"desktop.wsl.error.serverExitedBeforeHealthy":
"WSL server exited before becoming healthy (code={{code}} signal={{signal}}){{output}}",
"desktop.wsl.error.healthTimeout": "Sidecar for {{distro}} health check timed out after {{timeout}}ms",
"desktop.wsl.error.commandTimeout": "{{command}} {{args}} timed out after {{timeout}}ms",
"desktop.wsl.error.failedPort": "Failed to get port",
"desktop.picker.error.notSelected": "File was not selected by the picker",
"desktop.picker.error.sizeLimit": "Selected attachments exceed the {{limit}} MB limit",
} as const
export type DesktopNativeKey = keyof typeof DESKTOP_NATIVE_ENGLISH
export type DesktopNativeMessages = Record<DesktopNativeKey, string>
export type DesktopNativeBundle = { locale: DesktopNativeLocale; messages: DesktopNativeMessages }
export const DESKTOP_NATIVE_KEYS = Object.keys(DESKTOP_NATIVE_ENGLISH) as DesktopNativeKey[]
export const DESKTOP_NATIVE_MAX_PAYLOAD_BYTES = 64 * 1024
export function createDesktopNativeBundle(
locale: DesktopNativeLocale,
translate: (key: DesktopNativeKey) => string,
): DesktopNativeBundle {
return {
locale,
messages: Object.fromEntries(DESKTOP_NATIVE_KEYS.map((key) => [key, translate(key)])) as DesktopNativeMessages,
}
}
export function parseDesktopNativeBundle(value: unknown): DesktopNativeBundle | undefined {
if (!value || typeof value !== "object" || Array.isArray(value)) return undefined
try {
if (new TextEncoder().encode(JSON.stringify(value)).byteLength > DESKTOP_NATIVE_MAX_PAYLOAD_BYTES) return undefined
} catch {
return undefined
}
const bundle = value as { locale?: unknown; messages?: unknown }
if (!DESKTOP_NATIVE_LOCALES.some((locale) => locale === bundle.locale)) return undefined
if (!bundle.messages || typeof bundle.messages !== "object" || Array.isArray(bundle.messages)) return undefined
const messages = bundle.messages as Record<string, unknown>
const keys = Object.keys(messages)
if (keys.length !== DESKTOP_NATIVE_KEYS.length) return undefined
if (!DESKTOP_NATIVE_KEYS.every((key) => typeof messages[key] === "string")) return undefined
if (!keys.every((key) => key in DESKTOP_NATIVE_ENGLISH)) return undefined
return bundle as DesktopNativeBundle
}
export function formatDesktopNativeMessage(message: string, params?: Record<string, string | number>) {
if (!params) return message
return message.replace(/\{\{([^{}]+)\}\}/g, (match, key: string) => {
const value = params[key]
return value === undefined ? match : String(value)
})
}
+29
View File
@@ -1,4 +1,7 @@
import { DESKTOP_NATIVE_ENGLISH } from "./desktop-native"
export const dict = {
...DESKTOP_NATIVE_ENGLISH,
"command.category.suggested": "Suggested",
"command.category.view": "View",
"command.category.project": "Project",
@@ -16,6 +19,7 @@ export const dict = {
"command.category.permissions": "Permissions",
"command.category.workspace": "Workspace",
"command.category.settings": "Settings",
"command.logs.export": "Export logs",
"theme.scheme.system": "System",
"theme.scheme.light": "Light",
@@ -131,6 +135,8 @@ export const dict = {
"provider.connect.title.anthropicProMax": "Login with Claude Pro/Max",
"provider.connect.selectMethod": "Select login method for {{provider}}.",
"provider.connect.method.apiKey": "API key",
"provider.connect.method.browser": "Browser",
"provider.connect.method.headless": "Headless",
"provider.connect.status.inProgress": "Authorization in progress...",
"provider.connect.status.waiting": "Waiting for authorization...",
"provider.connect.status.failed": "Authorization failed: {{error}}",
@@ -163,6 +169,7 @@ export const dict = {
"provider.connect.toast.connected.description": "{{provider}} models are now available to use.",
"provider.custom.title": "Custom provider",
"provider.custom.unavailable": "Custom providers are unavailable on this server",
"provider.custom.description.prefix": "Configure an OpenAI-compatible provider. See the ",
"provider.custom.description.link": "provider config docs",
"provider.custom.description.suffix": ".",
@@ -437,6 +444,22 @@ export const dict = {
"wsl.onboarding.desktopVersion": "desktop {{version}}",
"wsl.onboarding.versionMismatch": "Installed version does not match the desktop app version.",
"wsl.onboarding.adding": "Adding...",
"help.tabs.toast.ariaLabel": "Introducing Tabs. Organize your work and active sessions with tabs",
"help.tabs.toast.dismiss": "Dismiss Tabs information",
"help.tabs.title": "Introducing Tabs",
"help.tabs.description": "Organize your work and active sessions with tabs",
"help.tabs.date": "July 14",
"help.tabs.introduction": "OpenCode Desktop is now built around tabs.",
"help.tabs.sessions":
"Start a new session in a tab, or open an existing session from any of your projects. Open a new tab when you're starting something new, and close it when you're done.",
"help.tabs.organize":
"Keeping a few tabs open makes it easier to organize your active sessions. Rename tabs to something memorable if you plan to keep them around.",
"help.tabs.home":
"You'll find all your sessions and projects on the new Home screen. Selecting a session opens it in a tab.",
"help.tabs.persistence": "When you reopen the app, your tabs are still open.",
"help.tabs.worktrees":
"The new design does not support Git Worktrees yet, it's coming soon. So if you'd prefer to continue using the previous layout, you can switch between layouts in Settings. Just keep in mind that the new layout will become permanent in a few weeks.",
"server.row.noUsername": "no username",
"dialog.project.edit.title": "Edit project",
@@ -765,6 +788,12 @@ export const dict = {
"terminal.connectionLost.abnormalClose": "WebSocket closed abnormally: {{code}}",
"terminal.connectionLost.description":
"The terminal connection was interrupted. This can happen when the server restarts.",
"terminal.connectTicket.csrfError":
"PTY connect ticket rejected by origin or CSRF checks. Check the server CORS config.",
"terminal.connectTicket.statusError": "PTY connect ticket failed with {{status}}",
"titlebar.update": "Update",
"titlebar.updateVersion": "Update {{version}}",
"common.closeTab": "Close tab",
"common.dismiss": "Dismiss",
+236 -101
View File
@@ -1,4 +1,104 @@
export const dict = {
"desktop.menu.app": "OpenCode",
"desktop.menu.file": "Archivo",
"desktop.menu.edit": "Editar",
"desktop.menu.view": "Ver",
"desktop.menu.go": "Ir",
"desktop.menu.window": "Ventana",
"desktop.menu.help": "Ayuda",
"desktop.menu.checkForUpdates": "Buscar actualizaciones...",
"desktop.menu.settings": "Ajustes",
"desktop.menu.reloadWebview": "Volver a cargar la vista web",
"desktop.menu.restart": "Reiniciar",
"desktop.menu.exportLogs": "Exportar registros...",
"desktop.menu.newSession": "Nueva sesión",
"desktop.menu.openProject": "Abrir proyecto...",
"desktop.menu.newWindow": "Nueva ventana",
"desktop.menu.closeWindow": "Cerrar ventana",
"desktop.menu.undo": "Deshacer",
"desktop.menu.redo": "Rehacer",
"desktop.menu.cut": "Cortar",
"desktop.menu.copy": "Copiar",
"desktop.menu.paste": "Pegar",
"desktop.menu.delete": "Eliminar",
"desktop.menu.selectAll": "Seleccionar todo",
"desktop.menu.toggleSidebar": "Mostrar u ocultar barra lateral",
"desktop.menu.toggleTerminal": "Mostrar u ocultar terminal",
"desktop.menu.toggleFileTree": "Mostrar u ocultar árbol de archivos",
"desktop.menu.reload": "Volver a cargar",
"desktop.menu.toggleDeveloperTools": "Mostrar u ocultar herramientas para desarrolladores",
"desktop.menu.actualSize": "Tamaño real",
"desktop.menu.zoomIn": "Ampliar",
"desktop.menu.zoomOut": "Reducir",
"desktop.menu.toggleFullScreen": "Mostrar u ocultar pantalla completa",
"desktop.menu.back": "Atrás",
"desktop.menu.forward": "Adelante",
"desktop.menu.previousSession": "Sesión anterior",
"desktop.menu.nextSession": "Siguiente sesión",
"desktop.menu.previousProject": "Proyecto anterior",
"desktop.menu.nextProject": "Siguiente proyecto",
"desktop.menu.minimize": "Minimizar",
"desktop.menu.maximize": "Maximizar",
"desktop.menu.documentation": "Documentación de OpenCode",
"desktop.menu.supportForum": "Foro de asistencia",
"desktop.menu.shareFeedback": "Enviar comentarios",
"desktop.menu.reportBug": "Informar de un error",
"desktop.menu.ariaLabel": "Menú de OpenCode",
"desktop.updater.dialog.checkFailed.message": "No se pudo buscar actualizaciones.",
"desktop.updater.dialog.checkFailed.title": "Error de actualización",
"desktop.updater.dialog.upToDate.message": "Estás al día.",
"desktop.updater.dialog.upToDate.title": "No hay actualizaciones",
"desktop.updater.dialog.ready.message": "Se ha descargado la actualización {{version}}. ¿Quieres reiniciar ahora?",
"desktop.updater.dialog.ready.title": "Actualización lista",
"desktop.updater.dialog.restart": "Reiniciar",
"desktop.updater.dialog.later": "Más tarde",
"desktop.recovery.action.relaunch": "Volver a iniciar",
"desktop.recovery.action.exportLogs": "Exportar registros",
"desktop.recovery.action.keepWaiting": "Seguir esperando",
"desktop.recovery.action.quit": "Salir",
"desktop.recovery.loadFailed": "No se pudo cargar OpenCode",
"desktop.recovery.terminated": "La ventana de OpenCode se cerró de forma inesperada",
"desktop.recovery.unresponsive": "OpenCode no responde",
"desktop.recovery.unresponsive.detail":
"Puedes volver a iniciar la aplicación, abrir los registros o seguir esperando.",
"desktop.recovery.loadFailed.detail": "Ventana: {{window}}\nURL: {{url}}\nError: {{code}} {{description}}",
"desktop.recovery.terminated.detail": "Ventana: {{window}}\nMotivo: {{reason}}\nCódigo: {{code}}",
"desktop.recovery.unknown": "<desconocido>",
"desktop.dialog.chooseFolder": "Elegir una carpeta",
"desktop.dialog.chooseFile": "Elegir un archivo",
"desktop.dialog.saveFile": "Guardar archivo",
"desktop.dialog.files": "Archivos",
"desktop.server.local": "Servidor local",
"desktop.wsl.error.windowsOnly": "WSL solo está disponible en Windows",
"desktop.wsl.error.unavailable": "WSL no está disponible",
"desktop.wsl.error.listInstalled": "No se pudieron listar las distribuciones WSL instaladas",
"desktop.wsl.error.listOnline": "No se pudieron listar las distribuciones WSL en línea",
"desktop.wsl.error.executeDistro": "No se pueden ejecutar comandos en la distribución",
"desktop.wsl.error.installWsl": "No se pudo instalar WSL",
"desktop.wsl.error.installDistro": "No se pudo instalar la distribución: {{distro}}",
"desktop.wsl.error.installOpencode": "No se pudo instalar OpenCode",
"desktop.wsl.error.alreadyAdded": "Ya se ha añadido {{distro}}",
"desktop.wsl.error.opencodeMissing": "opencode no está instalado en esta distribución",
"desktop.wsl.error.opencodeCannotRun": "opencode está instalado, pero no se pudo ejecutar",
"desktop.wsl.error.opencodeNotInstalled": "OpenCode no está instalado en {{distro}}",
"desktop.wsl.error.updateVersion":
"La actualización de OpenCode finalizó, pero {{distro}} sigue indicando {{installed}}; se esperaba {{expected}}",
"desktop.wsl.error.noVersion": "sin versión",
"desktop.wsl.error.serverExited": "El servidor WSL se cerró después de iniciarse (código={{code}} señal={{signal}})",
"desktop.wsl.error.serverExitedBeforeHealthy":
"El servidor WSL se cerró antes de estar operativo (código={{code}} señal={{signal}}){{output}}",
"desktop.wsl.error.healthTimeout":
"Se agotó el tiempo de espera de la comprobación de estado del sidecar de {{distro}} tras {{timeout}} ms",
"desktop.wsl.error.commandTimeout": "Se agotó el tiempo de espera de {{command}} {{args}} tras {{timeout}} ms",
"desktop.wsl.error.failedPort": "No se pudo obtener el puerto",
"desktop.picker.error.notSelected": "No se seleccionó ningún archivo en el selector",
"desktop.picker.error.sizeLimit": "Los adjuntos seleccionados superan el límite de {{limit}} MB",
"command.category.suggested": "Sugerido",
"command.category.view": "Ver",
"command.category.project": "Proyecto",
@@ -16,12 +116,13 @@ export const dict = {
"command.category.permissions": "Permisos",
"command.category.workspace": "Espacio de trabajo",
"command.category.settings": "Ajustes",
"command.logs.export": "Exportar registros",
"theme.scheme.system": "Sistema",
"theme.scheme.light": "Claro",
"theme.scheme.dark": "Oscuro",
"command.sidebar.toggle": "Alternar barra lateral",
"command.sidebar.toggle": "Mostrar u ocultar barra lateral",
"command.project.open": "Abrir proyecto",
"command.project.previous": "Proyecto anterior",
"command.project.next": "Siguiente proyecto",
@@ -37,12 +138,12 @@ export const dict = {
"command.palette": "Paleta de comandos",
"command.theme.cycle": "Alternar tema",
"command.theme.cycle": "Cambiar tema",
"command.theme.set": "Usar tema: {{theme}}",
"command.theme.scheme.cycle": "Alternar esquema de color",
"command.theme.scheme.cycle": "Cambiar esquema de color",
"command.theme.scheme.set": "Usar esquema de color: {{scheme}}",
"command.language.cycle": "Alternar idioma",
"command.language.cycle": "Cambiar idioma",
"command.language.set": "Usar idioma: {{language}}",
"command.session.new": "Nueva sesión",
@@ -52,12 +153,12 @@ export const dict = {
"command.context.addSelection": "Añadir selección al contexto",
"command.context.addSelection.description": "Añadir las líneas seleccionadas del archivo actual",
"command.input.focus": "Enfocar entrada",
"command.terminal.toggle": "Alternar terminal",
"command.fileTree.toggle": "Alternar árbol de archivos",
"command.review.toggle": "Alternar revisión",
"command.terminal.toggle": "Mostrar u ocultar terminal",
"command.fileTree.toggle": "Mostrar u ocultar árbol de archivos",
"command.review.toggle": "Mostrar u ocultar revisión",
"command.terminal.new": "Nueva terminal",
"command.terminal.new.description": "Crear una nueva pestaña de terminal",
"command.steps.toggle": "Alternar pasos",
"command.steps.toggle": "Mostrar u ocultar pasos",
"command.steps.toggle.description": "Mostrar u ocultar pasos para el mensaje actual",
"command.message.previous": "Mensaje anterior",
"command.message.previous.description": "Ir al mensaje de usuario anterior",
@@ -65,19 +166,19 @@ export const dict = {
"command.message.next.description": "Ir al siguiente mensaje de usuario",
"command.model.choose": "Elegir modelo",
"command.model.choose.description": "Seleccionar un modelo diferente",
"command.mcp.toggle": "Alternar MCPs",
"command.mcp.toggle.description": "Alternar MCPs",
"command.agent.cycle": "Alternar agente",
"command.mcp.toggle": "Activar o desactivar servidores MCP",
"command.mcp.toggle.description": "Activar o desactivar servidores MCP",
"command.agent.cycle": "Cambiar de agente",
"command.agent.cycle.description": "Cambiar al siguiente agente",
"command.agent.cycle.reverse": "Alternar agente hacia atrás",
"command.agent.cycle.reverse": "Cambiar al agente anterior",
"command.agent.cycle.reverse.description": "Cambiar al agente anterior",
"command.model.variant.cycle": "Alternar esfuerzo de pensamiento",
"command.model.variant.cycle": "Cambiar esfuerzo de razonamiento",
"command.model.variant.cycle.description": "Cambiar al siguiente nivel de esfuerzo",
"command.prompt.mode.shell": "Shell",
"command.prompt.mode.normal": "Prompt",
"command.permissions.autoaccept.enable": "Aceptar permisos automáticamente",
"command.permissions.autoaccept.disable": "Dejar de aceptar permisos automáticamente",
"command.workspace.toggle": "Alternar espacios de trabajo",
"command.workspace.toggle": "Activar o desactivar espacios de trabajo",
"command.workspace.toggle.description": "Habilitar o deshabilitar múltiples espacios de trabajo en la barra lateral",
"command.session.undo": "Deshacer",
"command.session.undo.description": "Deshacer el último mensaje",
@@ -100,17 +201,18 @@ export const dict = {
"dialog.provider.search.placeholder": "Buscar proveedores",
"dialog.provider.empty": "No se encontraron proveedores",
"dialog.provider.group.popular": "Popular",
"dialog.provider.group.other": "Otro",
"dialog.provider.group.popular": "Populares",
"dialog.provider.group.other": "Otros",
"dialog.provider.custom.label": "Proveedor personalizado compatible con OpenAI",
"dialog.provider.tag.recommended": "Recomendado",
"dialog.provider.opencode.note": "Modelos seleccionados incluyendo Claude, GPT, Gemini y s",
"dialog.provider.opencode.note": "Selección de modelos como Claude, GPT, Gemini y otros",
"dialog.provider.opencode.tagline": "Modelos optimizados y fiables",
"dialog.provider.opencodeGo.tagline": "Suscripción económica para todos",
"dialog.provider.anthropic.note": "Acceso directo a modelos Claude, incluyendo Pro y Max",
"dialog.provider.anthropic.note": "Acceso directo a modelos Claude, incluidos Pro y Max",
"dialog.provider.copilot.note": "Modelos de IA para asistencia de codificación a través de GitHub Copilot",
"dialog.provider.openai.note": "Modelos GPT para tareas de IA generales rápidas y capaces",
"dialog.provider.google.note": "Modelos Gemini para respuestas rápidas y estructuradas",
"dialog.provider.openrouter.note": "Accede a todos los modelos soportados desde un solo proveedor",
"dialog.provider.openrouter.note": "Accede a todos los modelos compatibles desde un solo proveedor",
"dialog.provider.vercel.note": "Acceso unificado a modelos de IA con enrutamiento inteligente",
"dialog.model.select.title": "Seleccionar modelo",
@@ -118,10 +220,11 @@ export const dict = {
"dialog.model.empty": "Sin resultados de modelos",
"dialog.model.manage": "Gestionar modelos",
"dialog.model.manage.description": "Personalizar qué modelos aparecen en el selector de modelos.",
"dialog.model.manage.provider.toggle": "Alternar todos los modelos de {{provider}}",
"dialog.model.manage.provider.toggle": "Mostrar u ocultar todos los modelos de {{provider}}",
"dialog.model.unpaid.freeModels.title": "Modelos gratuitos proporcionados por OpenCode",
"dialog.model.unpaid.addMore.title": "Añadir más modelos de proveedores populares",
"dialog.model.unpaid.viewMoreProviders": "Ver más de 70 proveedores",
"dialog.provider.viewAll": "Ver más proveedores",
@@ -129,6 +232,8 @@ export const dict = {
"provider.connect.title.anthropicProMax": "Iniciar sesión con Claude Pro/Max",
"provider.connect.selectMethod": "Seleccionar método de inicio de sesión para {{provider}}.",
"provider.connect.method.apiKey": "Clave API",
"provider.connect.method.browser": "Navegador",
"provider.connect.method.headless": "Sin navegador",
"provider.connect.status.inProgress": "Autorización en progreso...",
"provider.connect.status.waiting": "Esperando autorización...",
"provider.connect.status.failed": "Autorización fallida: {{error}}",
@@ -161,6 +266,7 @@ export const dict = {
"provider.connect.toast.connected.description": "Los modelos de {{provider}} ahora están disponibles para usar.",
"provider.custom.title": "Proveedor personalizado",
"provider.custom.unavailable": "Los proveedores personalizados no están disponibles en este servidor",
"provider.custom.description.prefix": "Configurar un proveedor compatible con OpenAI. Ver la ",
"provider.custom.description.link": "documentación de configuración del proveedor",
"provider.custom.description.suffix": ".",
@@ -173,7 +279,8 @@ export const dict = {
"provider.custom.field.baseURL.placeholder": "https://api.miproveedor.com/v1",
"provider.custom.field.apiKey.label": "Clave API",
"provider.custom.field.apiKey.placeholder": "Clave API",
"provider.custom.field.apiKey.description": "Opcional. Dejar vacío si gestionas la autenticación mediante cabeceras.",
"provider.custom.field.apiKey.description":
"Opcional. Déjalo vacío si gestionas la autenticación mediante encabezados.",
"provider.custom.models.label": "Modelos",
"provider.custom.models.id.label": "ID",
"provider.custom.models.id.placeholder": "id-modelo",
@@ -181,13 +288,13 @@ export const dict = {
"provider.custom.models.name.placeholder": "Nombre para mostrar",
"provider.custom.models.remove": "Eliminar modelo",
"provider.custom.models.add": "Añadir modelo",
"provider.custom.headers.label": "Cabeceras (opcional)",
"provider.custom.headers.key.label": "Cabecera",
"provider.custom.headers.key.placeholder": "Nombre-Cabecera",
"provider.custom.headers.label": "Encabezados (opcional)",
"provider.custom.headers.key.label": "Encabezado",
"provider.custom.headers.key.placeholder": "Nombre-Encabezado",
"provider.custom.headers.value.label": "Valor",
"provider.custom.headers.value.placeholder": "valor",
"provider.custom.headers.remove": "Eliminar cabecera",
"provider.custom.headers.add": "Añadir cabecera",
"provider.custom.headers.remove": "Eliminar encabezado",
"provider.custom.headers.add": "Añadir encabezado",
"provider.custom.error.providerID.required": "El ID del proveedor es obligatorio",
"provider.custom.error.providerID.format": "Usa letras minúsculas, números, guiones o guiones bajos",
"provider.custom.error.providerID.exists": "Ese ID de proveedor ya existe",
@@ -201,7 +308,7 @@ export const dict = {
"provider.disconnect.toast.disconnected.description": "Los modelos de {{provider}} ya no están disponibles.",
"model.tag.free": "Gratis",
"model.tag.latest": "Último",
"model.tag.latest": "Más reciente",
"model.provider.anthropic": "Anthropic",
"model.provider.openai": "OpenAI",
"model.provider.google": "Google",
@@ -211,7 +318,7 @@ export const dict = {
"model.input.image": "imagen",
"model.input.audio": "audio",
"model.input.video": "video",
"model.input.pdf": "pdf",
"model.input.pdf": "PDF",
"model.tooltip.allows": "Permite: {{inputs}}",
"model.tooltip.context.label": "Contexto",
"model.tooltip.inputs": "Entradas",
@@ -231,7 +338,7 @@ export const dict = {
"common.clear": "Limpiar",
"common.connect": "Conectar",
"common.disconnect": "Desconectar",
"common.continue": "Enviar",
"common.continue": "Continuar",
"common.submit": "Enviar",
"common.save": "Guardar",
"common.saving": "Guardando...",
@@ -250,7 +357,7 @@ export const dict = {
"session.child.backToParent": "Volver a la sesión principal.",
"prompt.example.1": "Arreglar un TODO en el código",
"prompt.example.2": "¿Cuál es el stack tecnológico de este proyecto?",
"prompt.example.2": "¿Qué tecnologías usa este proyecto?",
"prompt.example.3": "Arreglar pruebas rotas",
"prompt.example.4": "Explicar cómo funciona la autenticación",
"prompt.example.5": "Encontrar y arreglar vulnerabilidades de seguridad",
@@ -263,22 +370,22 @@ export const dict = {
"prompt.example.12": "Añadir validación de entrada",
"prompt.example.13": "Crear un nuevo componente para...",
"prompt.example.14": "¿Cómo despliego este proyecto?",
"prompt.example.15": "Revisar mi código para mejores prácticas",
"prompt.example.16": "Añadir manejo de errores a esta función",
"prompt.example.17": "Explicar este patrón de regex",
"prompt.example.15": "Revisar si mi código sigue las prácticas recomendadas",
"prompt.example.16": "Añadir gestión de errores a esta función",
"prompt.example.17": "Explicar este patrón de expresión regular",
"prompt.example.18": "Convertir esto a TypeScript",
"prompt.example.19": "Añadir logging en todo el código",
"prompt.example.19": "Añadir registros en todo el código",
"prompt.example.20": "¿Qué dependencias están desactualizadas?",
"prompt.example.21": "Ayúdame a escribir un script de migración",
"prompt.example.22": "Implementar caché para este endpoint",
"prompt.example.22": "Implementar caché para este punto de conexión",
"prompt.example.23": "Añadir paginación a esta lista",
"prompt.example.24": "Crear un comando CLI para...",
"prompt.example.25": "¿Cómo funcionan las variables de entorno aquí?",
"prompt.popover.emptyResults": "Sin resultados coincidentes",
"prompt.popover.emptyCommands": "Sin comandos coincidentes",
"prompt.dropzone.label": "Suelta imágenes, PDFs o archivos de texto aquí",
"prompt.dropzone.file.label": "Suelta para @mencionar archivo",
"prompt.dropzone.label": "Suelta aquí imágenes, archivos PDF o archivos de texto",
"prompt.dropzone.file.label": "Suelta para @mencionar el archivo",
"prompt.slash.badge.custom": "personalizado",
"prompt.slash.badge.skill": "skill",
"prompt.slash.badge.mcp": "mcp",
@@ -286,7 +393,7 @@ export const dict = {
"prompt.context.includeActiveFile": "Incluir archivo activo",
"prompt.context.removeActiveFile": "Eliminar archivo activo del contexto",
"prompt.context.removeFile": "Eliminar archivo del contexto",
"prompt.action.attachFile": "Adjuntar archivo",
"prompt.action.attachFile": "Añadir archivos",
"prompt.menu.addImagesAndFiles": "Añadir archivos y más",
"prompt.menu.imagesAndFiles": "Imágenes y archivos",
"prompt.menu.commands": "Comandos",
@@ -298,7 +405,8 @@ export const dict = {
"prompt.toast.pasteUnsupported.title": "Adjunto no compatible",
"prompt.toast.attachmentDuplicate.title": "Este archivo ya se ha subido",
"prompt.toast.pasteUnsupported.description": "Solo se pueden adjuntar imágenes, PDFs o archivos de texto aquí.",
"prompt.toast.pasteUnsupported.description":
"Aquí solo se pueden adjuntar imágenes, archivos PDF o archivos de texto.",
"prompt.toast.modelAgentRequired.title": "Selecciona un agente y modelo",
"prompt.toast.modelAgentRequired.description": "Elige un agente y modelo antes de enviar un prompt.",
"prompt.toast.worktreeCreateFailed.title": "Fallo al crear el árbol de trabajo",
@@ -308,16 +416,16 @@ export const dict = {
"prompt.toast.promptSendFailed.title": "Fallo al enviar prompt",
"prompt.toast.promptSendFailed.description": "No se pudo recuperar la sesión",
"dialog.mcp.title": "MCPs",
"dialog.mcp.title": "Servidores MCP",
"dialog.mcp.description": "{{enabled}} de {{total}} habilitados",
"dialog.mcp.empty": "No hay MCPs configurados",
"dialog.mcp.empty": "No hay servidores MCP configurados",
"dialog.lsp.empty": "LSPs detectados automáticamente por tipo de archivo",
"dialog.lsp.empty": "Servidores LSP detectados automáticamente por tipo de archivo",
"dialog.plugins.empty": "Plugins configurados en opencode.json",
"mcp.status.connected": "conectado",
"mcp.status.failed": "fallido",
"mcp.status.needs_auth": "necesita auth",
"mcp.status.needs_auth": "requiere autenticación",
"mcp.auth.clickToAuthenticate": "Haz clic para autenticar",
"mcp.status.disabled": "deshabilitado",
@@ -328,13 +436,13 @@ export const dict = {
"dialog.directory.action.selectFile": "Seleccionar archivo",
"dialog.directory.action.selectFolder": "Seleccionar carpeta",
"dialog.directory.root": "Raíz",
"dialog.directory.parent": "Superior",
"dialog.directory.parent": "Carpeta superior",
"dialog.directory.readError": "No se puede leer esta carpeta",
"dialog.server.title": "Servidores",
"dialog.server.description": "Cambiar a qué servidor de OpenCode se conecta esta app.",
"dialog.server.description": "Cambiar el servidor de OpenCode al que se conecta esta aplicación.",
"dialog.server.search.placeholder": "Buscar servidores",
"dialog.server.empty": "No hay servidores aún",
"dialog.server.empty": "Aún no hay servidores",
"dialog.server.add.title": "Añadir un servidor",
"dialog.server.add.url": "URL del servidor",
"dialog.server.add.placeholder": "http://localhost:4096",
@@ -348,7 +456,7 @@ export const dict = {
"dialog.server.edit.title": "Editar servidor",
"dialog.server.default.title": "Servidor predeterminado",
"dialog.server.default.description":
"Conectar a este servidor al iniciar la app en lugar de iniciar un servidor local. Requiere reinicio.",
"Conectar a este servidor al iniciar la aplicación en lugar de iniciar un servidor local. Requiere reiniciar.",
"dialog.server.default.none": "Ningún servidor seleccionado",
"dialog.server.default.set": "Establecer servidor actual como predeterminado",
"dialog.server.default.clear": "Limpiar",
@@ -356,7 +464,7 @@ export const dict = {
"dialog.server.menu.edit": "Editar",
"dialog.server.menu.default": "Establecer como predeterminado",
"dialog.server.menu.defaultRemove": "Quitar predeterminado",
"dialog.server.menu.defaultRemove": "Quitar como predeterminado",
"dialog.server.menu.delete": "Eliminar",
"dialog.server.current": "Servidor actual",
"dialog.server.status.default": "Predeterminado",
@@ -430,6 +538,22 @@ export const dict = {
"wsl.onboarding.versionMismatch": "La versión instalada no coincide con la versión de la aplicación de escritorio.",
"wsl.onboarding.adding": "Añadiendo...",
"help.tabs.toast.ariaLabel": "Presentamos las pestañas. Organiza tu trabajo y las sesiones activas con pestañas",
"help.tabs.toast.dismiss": "Descartar información sobre las pestañas",
"help.tabs.title": "Presentamos las pestañas",
"help.tabs.description": "Organiza tu trabajo y las sesiones activas con pestañas",
"help.tabs.date": "14 de julio",
"help.tabs.introduction": "OpenCode Desktop ahora se organiza en torno a pestañas.",
"help.tabs.sessions":
"Inicia una nueva sesión en una pestaña o abre una sesión existente de cualquiera de tus proyectos. Abre una pestaña nueva cuando empieces algo nuevo y ciérrala cuando termines.",
"help.tabs.organize":
"Mantener algunas pestañas abiertas facilita la organización de las sesiones activas. Cambia el nombre de las pestañas por uno fácil de recordar si piensas conservarlas.",
"help.tabs.home":
"Encontrarás todas tus sesiones y proyectos en la nueva pantalla Inicio. Al seleccionar una sesión, se abre en una pestaña.",
"help.tabs.persistence": "Cuando vuelvas a abrir la aplicación, las pestañas seguirán abiertas.",
"help.tabs.worktrees":
"El nuevo diseño aún no admite Git Worktrees, pero estarán disponibles pronto. Si prefieres seguir usando el diseño anterior, puedes cambiar de diseño en Ajustes. Ten en cuenta que el nuevo diseño será permanente dentro de unas semanas.",
"dialog.project.edit.title": "Editar proyecto",
"dialog.project.edit.name": "Nombre",
"dialog.project.edit.icon": "Icono",
@@ -443,7 +567,7 @@ export const dict = {
"Se ejecuta después de crear un nuevo espacio de trabajo (árbol de trabajo).",
"dialog.project.edit.worktree.startup.placeholder": "p. ej. bun install",
"context.breakdown.title": "Desglose de Contexto",
"context.breakdown.title": "Desglose del contexto",
"context.breakdown.note":
'Desglose aproximado de tokens de entrada. "Otro" incluye definiciones de herramientas y sobrecarga.',
"context.breakdown.system": "Sistema",
@@ -452,25 +576,25 @@ export const dict = {
"context.breakdown.tool": "Llamadas a herramientas",
"context.breakdown.other": "Otro",
"context.systemPrompt.title": "Prompt del Sistema",
"context.systemPrompt.title": "Prompt del sistema",
"context.rawMessages.title": "Mensajes en bruto",
"context.stats.session": "Sesión",
"context.stats.messages": "Mensajes",
"context.stats.provider": "Proveedor",
"context.stats.model": "Modelo",
"context.stats.limit": "Límite de Contexto",
"context.stats.totalTokens": "Tokens Totales",
"context.stats.limit": "Límite de contexto",
"context.stats.totalTokens": "Tokens totales",
"context.stats.usage": "Uso",
"context.stats.inputTokens": "Tokens de Entrada",
"context.stats.outputTokens": "Tokens de Salida",
"context.stats.reasoningTokens": "Tokens de Razonamiento",
"context.stats.cacheTokens": "Tokens de Caché (lectura/escritura)",
"context.stats.userMessages": "Mensajes de Usuario",
"context.stats.assistantMessages": "Mensajes de Asistente",
"context.stats.totalCost": "Costo Total",
"context.stats.sessionCreated": "Sesión Creada",
"context.stats.lastActivity": "Última Actividad",
"context.stats.inputTokens": "Tokens de entrada",
"context.stats.outputTokens": "Tokens de salida",
"context.stats.reasoningTokens": "Tokens de razonamiento",
"context.stats.cacheTokens": "Tokens de caché (lectura/escritura)",
"context.stats.userMessages": "Mensajes de usuario",
"context.stats.assistantMessages": "Mensajes de asistente",
"context.stats.totalCost": "Costo total",
"context.stats.sessionCreated": "Sesión creada",
"context.stats.lastActivity": "Última actividad",
"context.usage.tokens": "Tokens",
"context.usage.usage": "Uso",
@@ -524,12 +648,12 @@ export const dict = {
"toast.session.share.copyFailed.title": "Fallo al copiar URL al portapapeles",
"toast.session.share.success.title": "Sesión compartida",
"toast.session.share.success.description": "¡URL compartida copiada al portapapeles!",
"toast.session.share.success.description": "Enlace para compartir copiado al portapapeles.",
"toast.session.share.failed.title": "Fallo al compartir sesión",
"toast.session.share.failed.description": "Ocurrió un error al compartir la sesión",
"toast.session.unshare.success.title": "Sesión dejó de compartirse",
"toast.session.unshare.success.description": "¡La sesión dejó de compartirse exitosamente!",
"toast.session.unshare.success.title": "La sesión dejó de compartirse",
"toast.session.unshare.success.description": "La sesión dejó de compartirse correctamente.",
"toast.session.unshare.failed.title": "Fallo al dejar de compartir sesión",
"toast.session.unshare.failed.description": "Ocurrió un error al dejar de compartir la sesión",
@@ -545,13 +669,13 @@ export const dict = {
"error.page.description.localServerStartup": "Ocurrió un error al iniciar el servidor local.",
"error.page.details.label": "Detalles del error",
"error.page.action.restart": "Reiniciar",
"error.page.action.report": "Informar error",
"error.page.action.reported": "Error informado",
"error.page.action.report": "Informar del error",
"error.page.action.reported": "Error notificado",
"error.page.action.exportLogs": "Exportar registros",
"error.page.action.checking": "Comprobando...",
"error.page.action.checkUpdates": "Buscar actualizaciones",
"error.page.action.updateTo": "Actualizar a {{version}}",
"error.page.report.prefix": "Por favor reporta este error al equipo de OpenCode",
"error.page.report.prefix": "Informa de este error al equipo de OpenCode",
"error.page.report.discord": "en Discord",
"error.page.version": "Versión: {{version}}",
@@ -567,10 +691,10 @@ export const dict = {
"error.chain.status": "Estado: {{status}}",
"error.chain.retryable": "Reintentable: {{retryable}}",
"error.chain.responseBody": "Cuerpo de la respuesta:\n{{body}}",
"error.chain.didYouMean": "¿Quisiste decir: {{suggestions}}",
"error.chain.didYouMean": "¿Quizá quisiste decir {{suggestions}}?",
"error.chain.modelNotFound": "Modelo no encontrado: {{provider}}/{{model}}",
"error.chain.checkConfig": "Comprueba los nombres de proveedor/modelo en tu configuración (opencode.json)",
"error.chain.mcpFailed": 'El servidor MCP "{{name}}" falló. Nota, OpenCode no soporta autenticación MCP todavía.',
"error.chain.mcpFailed": 'El servidor MCP "{{name}}" falló. Nota: OpenCode aún no admite la autenticación MCP.',
"error.chain.providerAuthFailed": "Autenticación de proveedor fallida ({{provider}}): {{message}}",
"error.chain.providerInitFailed":
'Fallo al inicializar proveedor "{{provider}}". Comprueba credenciales y configuración.',
@@ -623,12 +747,12 @@ export const dict = {
"session.error.notFound.description": "Esta pestaña apunta a una sesión que ya no existe en este servidor.",
"session.error.notFound.closeTab": "Cerrar pestaña",
"session.error.serverConnection": "No se puede conectar a este servidor",
"session.review.filesChanged": "{{count}} Archivos Cambiados",
"session.review.filesChanged": "Archivos modificados: {{count}}",
"session.review.change.one": "Cambio",
"session.review.change.other": "Cambios",
"session.review.loadingChanges": "Cargando cambios...",
"session.review.empty": "No hay cambios en esta sesión aún",
"session.review.noVcs": "No se detectó Sistema de Control de Versiones Git, los cambios no se muestran",
"session.review.empty": "Aún no hay cambios en esta sesión",
"session.review.noVcs": "No se detectó ningún sistema de control de versiones Git; no se muestran los cambios",
"session.review.noSnapshot":
"El seguimiento de instantáneas está deshabilitado en la configuración, por lo que los cambios de sesión no están disponibles",
"session.review.noChanges": "Sin cambios",
@@ -638,13 +762,13 @@ export const dict = {
"session.files.selectToOpen": "Selecciona un archivo para abrir",
"session.files.all": "Todos los archivos",
"session.files.empty": "Sin archivos",
"session.files.binaryContent": "Archivo binario (el contenido no puede ser mostrado)",
"session.files.binaryContent": "Archivo binario (no se puede mostrar el contenido)",
"session.messages.renderEarlier": "Renderizar mensajes anteriores",
"session.messages.renderEarlier": "Mostrar mensajes anteriores",
"session.messages.loadingEarlier": "Cargando mensajes anteriores...",
"session.messages.loadEarlier": "Cargar mensajes anteriores",
"session.messages.loading": "Cargando mensajes...",
"session.messages.jumpToLatest": "Ir al último",
"session.messages.jumpToLatest": "Ir al mensaje más reciente",
"session.context.addToContext": "Añadir {{selection}} al contexto",
"session.todo.title": "Tareas",
@@ -653,14 +777,17 @@ export const dict = {
"session.question.minimize": "Minimizar pregunta",
"session.question.restore": "Restaurar pregunta",
"session.question.pending.one": "{{count}} pregunta pendiente",
"session.question.pending.many": "{{count}} de preguntas pendientes",
"session.question.pending.other": "{{count}} preguntas pendientes",
"session.followupDock.summary.one": "{{count}} mensaje en cola",
"session.followupDock.summary.many": "{{count}} de mensajes en cola",
"session.followupDock.summary.other": "{{count}} mensajes en cola",
"session.followupDock.sendNow": "Enviar ahora",
"session.followupDock.edit": "Editar",
"session.followupDock.collapse": "Contraer mensajes en cola",
"session.followupDock.expand": "Expandir mensajes en cola",
"session.revertDock.summary.one": "{{count}} mensaje revertido",
"session.revertDock.summary.many": "{{count}} de mensajes revertidos",
"session.revertDock.summary.other": "{{count}} mensajes revertidos",
"session.revertDock.collapse": "Contraer mensajes revertidos",
"session.revertDock.expand": "Expandir mensajes revertidos",
@@ -694,9 +821,9 @@ export const dict = {
"status.popover.tab.mcp": "MCP",
"status.popover.tab.lsp": "LSP",
"status.popover.tab.plugins": "Plugins",
"status.popover.action.manageServers": "Administrar servidores",
"status.popover.action.manageServers": "Gestionar servidores",
"session.share.popover.title": "Publicar en web",
"session.share.popover.title": "Publicar en la web",
"session.share.popover.description.shared":
"Esta sesión es pública en la web. Es accesible para cualquiera con el enlace.",
"session.share.popover.description.unshared":
@@ -721,12 +848,18 @@ export const dict = {
"terminal.connectionLost.title": "Conexión perdida",
"terminal.connectionLost.description":
"La conexión del terminal se interrumpió. Esto puede ocurrir cuando el servidor se reinicia.",
"terminal.connectTicket.csrfError":
"El ticket de conexión PTY fue rechazado por las comprobaciones de origen o CSRF. Comprueba la configuración CORS del servidor.",
"terminal.connectTicket.statusError": "El ticket de conexión PTY falló con {{status}}",
"titlebar.update": "Actualizar",
"titlebar.updateVersion": "Actualizar {{version}}",
"common.closeTab": "Cerrar pestaña",
"common.dismiss": "Descartar",
"common.requestFailed": "Solicitud fallida",
"common.moreOptions": "Más opciones",
"common.learnMore": "Saber más",
"common.learnMore": "Más información",
"common.rename": "Renombrar",
"common.reset": "Restablecer",
"common.archive": "Archivar",
@@ -736,15 +869,15 @@ export const dict = {
"common.loadMore": "Cargar más",
"common.key.esc": "ESC",
"sidebar.menu.toggle": "Alternar menú",
"sidebar.menu.toggle": "Mostrar u ocultar menú",
"sidebar.nav.projectsAndSessions": "Proyectos y sesiones",
"sidebar.settings": "Ajustes",
"sidebar.help": "Ayuda",
"sidebar.workspaces.enable": "Habilitar espacios de trabajo",
"sidebar.workspaces.disable": "Deshabilitar espacios de trabajo",
"sidebar.gettingStarted.title": "Empezando",
"sidebar.gettingStarted.title": "Primeros pasos",
"sidebar.gettingStarted.line1": "OpenCode incluye modelos gratuitos para que puedas empezar inmediatamente.",
"sidebar.gettingStarted.line2": "Conecta cualquier proveedor para usar modelos, inc. Claude, GPT, Gemini etc.",
"sidebar.gettingStarted.line2": "Conecta cualquier proveedor para usar modelos como Claude, GPT o Gemini.",
"sidebar.project.recentSessions": "Sesiones recientes",
"sidebar.project.viewAllSessions": "Ver todas las sesiones",
"sidebar.project.clearNotifications": "Borrar notificaciones",
@@ -772,9 +905,8 @@ export const dict = {
"settings.general.row.language.title": "Idioma",
"settings.general.row.language.description": "Cambiar el idioma de visualización para OpenCode",
"settings.general.row.shell.title": "Shell del terminal",
"settings.general.row.shell.description":
"Elige el shell que se usará en el terminal. Los shells compatibles también se usarán para las llamadas a herramientas del agente.",
"settings.general.row.shell.autoDefault": "Automático (Predeterminado)",
"settings.general.row.shell.description": "Shell que usan el terminal y las herramientas del agente",
"settings.general.row.shell.autoDefault": "Automático (predeterminado)",
"settings.general.row.shell.terminalOnly": "solo en el terminal",
"settings.general.row.appearance.title": "Apariencia",
"settings.general.row.appearance.description": "Personaliza cómo se ve OpenCode en tu dispositivo",
@@ -808,8 +940,9 @@ export const dict = {
"settings.general.row.mobileTitlebarBottom.title": "Navegación inferior",
"settings.general.row.mobileTitlebarBottom.description":
"Colocar la barra de título y las pestañas de sesión en la parte inferior de la pantalla en dispositivos móviles",
"settings.general.row.showCustomAgents.title": "Agentes personalizados",
"settings.general.row.showCustomAgents.description": "Mostrar el selector de agentes en el editor",
"settings.general.row.showCustomAgents.title": "Mostrar agente",
"settings.general.row.showCustomAgents.description":
"Cambiar de agente en el editor. Si se oculta, se usa el agente Build de forma predeterminada.",
"settings.general.row.reasoningSummaries.title": "Mostrar resúmenes de razonamiento",
"settings.general.row.reasoningSummaries.description":
"Mostrar resúmenes del razonamiento del modelo en la línea de tiempo",
@@ -828,9 +961,9 @@ export const dict = {
"settings.general.row.newInterfaceNotice.dismiss": "Descartar",
"settings.general.row.pinchZoom.title": "Pellizcar para ampliar",
"settings.general.row.pinchZoom.description":
"Permitir ampliar con el gesto de pellizco del panel táctil y con Ctrl-scroll",
"Permitir ampliar con el gesto de pellizco del panel táctil y con Ctrl + desplazamiento",
"settings.general.row.wayland.title": "Usar Wayland nativo",
"settings.general.row.wayland.description": "Deshabilitar fallback a X11 en Wayland. Requiere reinicio.",
"settings.general.row.wayland.description": "Deshabilitar el uso alternativo de X11 en Wayland. Requiere reiniciar.",
"settings.general.row.wayland.tooltip":
"En Linux con monitores de frecuencia de actualización mixta, Wayland nativo puede ser más estable.",
@@ -960,8 +1093,7 @@ export const dict = {
"settings.permissions.tool.read.title": "Leer",
"settings.permissions.tool.read.description": "Leer un archivo (coincide con la ruta del archivo)",
"settings.permissions.tool.edit.title": "Editar",
"settings.permissions.tool.edit.description":
"Modificar archivos, incluyendo ediciones, escrituras, parches y multi-ediciones",
"settings.permissions.tool.edit.description": "Modificar archivos mediante ediciones, escrituras y parches",
"settings.permissions.tool.glob.title": "Glob",
"settings.permissions.tool.glob.description": "Coincidir archivos usando patrones glob",
"settings.permissions.tool.grep.title": "Grep",
@@ -971,20 +1103,20 @@ export const dict = {
"settings.permissions.tool.bash.title": "Bash",
"settings.permissions.tool.bash.description": "Ejecutar comandos de shell",
"settings.permissions.tool.task.title": "Tarea",
"settings.permissions.tool.task.description": "Lanzar sub-agentes",
"settings.permissions.tool.task.description": "Iniciar subagentes",
"settings.permissions.tool.skill.title": "Habilidad",
"settings.permissions.tool.skill.description": "Cargar una habilidad por nombre",
"settings.permissions.tool.lsp.title": "LSP",
"settings.permissions.tool.lsp.description": "Ejecutar consultas de servidor de lenguaje",
"settings.permissions.tool.todowrite.title": "Escribir Todo",
"settings.permissions.tool.todowrite.title": "Escribir tareas",
"settings.permissions.tool.todowrite.description": "Actualizar la lista de tareas",
"settings.permissions.tool.webfetch.title": "Web Fetch",
"settings.permissions.tool.webfetch.title": "Obtener contenido web",
"settings.permissions.tool.webfetch.description": "Obtener contenido de una URL",
"settings.permissions.tool.websearch.title": "Búsqueda Web",
"settings.permissions.tool.websearch.title": "Búsqueda web",
"settings.permissions.tool.websearch.description": "Buscar en la web",
"settings.permissions.tool.external_directory.title": "Directorio Externo",
"settings.permissions.tool.external_directory.title": "Directorio externo",
"settings.permissions.tool.external_directory.description": "Acceder a archivos fuera del directorio del proyecto",
"settings.permissions.tool.doom_loop.title": "Bucle Infinito",
"settings.permissions.tool.doom_loop.title": "Bucle infinito",
"settings.permissions.tool.doom_loop.description": "Detectar llamadas a herramientas repetidas con entrada idéntica",
"session.delete.failed.title": "Fallo al eliminar sesión",
@@ -998,13 +1130,13 @@ export const dict = {
"workspace.create.failed.title": "Fallo al crear espacio de trabajo",
"workspace.delete.failed.title": "Fallo al eliminar espacio de trabajo",
"workspace.resetting.title": "Restableciendo espacio de trabajo",
"workspace.resetting.description": "Esto puede tomar un minuto.",
"workspace.resetting.description": "Esto puede tardar un minuto.",
"workspace.reset.failed.title": "Fallo al restablecer espacio de trabajo",
"workspace.reset.success.title": "Espacio de trabajo restablecido",
"workspace.reset.success.description": "El espacio de trabajo ahora coincide con la rama predeterminada.",
"workspace.error.stillPreparing": "El espacio de trabajo aún se está preparando",
"workspace.status.checking": "Comprobando cambios no fusionados...",
"workspace.status.error": "No se pudo verificar el estado de git.",
"workspace.status.error": "No se pudo verificar el estado de Git.",
"workspace.status.clean": "No se detectaron cambios no fusionados.",
"workspace.status.dirty": "Cambios no fusionados detectados en este espacio de trabajo.",
"workspace.delete.title": "Eliminar espacio de trabajo",
@@ -1046,6 +1178,9 @@ export const dict = {
"session.question.progress": "{{current}} de {{total}} preguntas",
"session.header.open.finder": "Finder",
"session.header.open.fileExplorer": "Explorador de archivos",
"session.header.reveal.finder": "Mostrar en Finder",
"session.header.reveal.fileExplorer": "Mostrar en el Explorador de archivos",
"session.header.reveal.containingFolder": "Abrir carpeta contenedora",
"session.header.open.fileManager": "Gestor de archivos",
"session.header.open.app.vscode": "VS Code",
"session.header.open.app.cursor": "Cursor",
@@ -1064,13 +1199,13 @@ export const dict = {
"debugBar.na": "n/d",
"debugBar.nav.label": "NAV",
"debugBar.nav.tip":
"Última transición de ruta completada tocando una página de sesión, medida desde el inicio del router hasta el primer pintado después de asentarse.",
"Última transición de ruta completada que afecta a una página de sesión, medida desde el inicio del enrutador hasta el primer renderizado tras estabilizarse.",
"debugBar.fps.label": "FPS",
"debugBar.fps.tip": "Cuadros por segundo en los últimos 5 segundos.",
"debugBar.frame.label": "FRAME",
"debugBar.frame.tip": "Peor tiempo de cuadro en los últimos 5 segundos.",
"debugBar.jank.label": "JANK",
"debugBar.jank.tip": "Cuadros superiores a 32ms en los últimos 5 segundos.",
"debugBar.jank.tip": "Cuadros superiores a 32 ms en los últimos 5 segundos.",
"debugBar.long.label": "LONG",
"debugBar.long.tip": "Tiempo bloqueado y recuento de tareas largas en los últimos 5 segundos. Tarea máx: {{max}}.",
"debugBar.delay.label": "DELAY",
@@ -1079,7 +1214,7 @@ export const dict = {
"debugBar.inp.tip":
"Duración aproximada de la interacción en los últimos 5 segundos. Esto es similar a INP, no el INP oficial de Web Vitals.",
"debugBar.cls.label": "CLS",
"debugBar.cls.tip": "Cambio de diseño acumulativo para la vida útil actual de la aplicación.",
"debugBar.cls.tip": "Cambio de diseño acumulativo durante la ejecución actual de la aplicación.",
"debugBar.mem.label": "MEM",
"debugBar.mem.tipUnavailable": "Heap JS usado vs límite de heap. Solo Chromium.",
"debugBar.mem.tip": "Heap JS usado vs límite de heap. {{used}} de {{limit}}.",
+1147
View File
@@ -0,0 +1,1147 @@
export const dict = {
"command.category.suggested": "Ehdotetut",
"command.category.view": "Näytä",
"command.category.project": "Projekti",
"command.category.provider": "Palveluntarjoaja",
"command.category.server": "Palvelin",
"command.category.session": "Istunto",
"command.category.theme": "Teema",
"command.category.language": "Kieli",
"command.category.file": "Tiedosto",
"command.category.context": "Konteksti",
"command.category.terminal": "Terminaali",
"command.category.model": "Malli",
"command.category.mcp": "MCP",
"command.category.agent": "Agentti",
"command.category.permissions": "Käyttöoikeudet",
"command.category.workspace": "Työtila",
"command.category.settings": "Asetukset",
"theme.scheme.system": "Järjestelmän mukaan",
"theme.scheme.light": "Vaalea",
"theme.scheme.dark": "Tumma",
"command.sidebar.toggle": "Näytä tai piilota sivupalkki",
"command.project.open": "Avaa projekti",
"command.project.previous": "Edellinen projekti",
"command.project.next": "Seuraava projekti",
"command.project.index": "Vaihda projektiin {{index}}",
"command.provider.connect": "Yhdistä palveluntarjoaja",
"command.server.switch": "Vaihda palvelinta",
"command.settings.open": "Avaa asetukset",
"command.session.previous": "Edellinen istunto",
"command.session.next": "Seuraava istunto",
"command.session.previous.unseen": "Edellinen lukematon istunto",
"command.session.next.unseen": "Seuraava lukematon istunto",
"command.session.archive": "Arkistoi istunto",
"command.palette": "Komentopaletti",
"command.theme.cycle": "Vaihda teemaa",
"command.theme.set": "Käytä teemaa: {{theme}}",
"command.theme.scheme.cycle": "Vaihda värimallia",
"command.theme.scheme.set": "Käytä värimallia: {{scheme}}",
"command.language.cycle": "Vaihda kieltä",
"command.language.set": "Käytä kieltä: {{language}}",
"command.session.new": "Uusi istunto",
"command.file.open": "Avaa tiedosto",
"command.tab.close": "Sulje välilehti",
"command.tab.reopenClosed": "Avaa suljettu välilehti uudelleen",
"command.context.addSelection": "Lisää valinta kontekstiin",
"command.context.addSelection.description": "Lisää valitut rivit nykyisestä tiedostosta",
"command.input.focus": "Kohdista syötekenttään",
"command.terminal.toggle": "Näytä tai piilota terminaali",
"command.fileTree.toggle": "Näytä tai piilota tiedostopuu",
"command.review.toggle": "Näytä tai piilota tarkistus",
"command.terminal.new": "Uusi terminaali",
"command.terminal.new.description": "Luo uusi terminaalivälilehti",
"command.steps.toggle": "Näytä tai piilota vaiheet",
"command.steps.toggle.description": "Näytä tai piilota nykyisen viestin vaiheet",
"command.message.previous": "Edellinen viesti",
"command.message.previous.description": "Siirry edelliseen käyttäjän viestiin",
"command.message.next": "Seuraava viesti",
"command.message.next.description": "Siirry seuraavaan käyttäjäviestiin",
"command.model.choose": "Valitse malli",
"command.model.choose.description": "Valitse eri malli",
"command.mcp.toggle": "Ota MCP:t käyttöön tai poista käytöstä",
"command.mcp.toggle.description": "Ota MCP:t käyttöön tai poista käytöstä",
"command.agent.cycle": "Vaihda agenttia",
"command.agent.cycle.description": "Vaihda seuraavaan agenttiin",
"command.agent.cycle.reverse": "Vaihda agenttia taaksepäin",
"command.agent.cycle.reverse.description": "Vaihda edelliseen agenttiin",
"command.model.variant.cycle": "Vaihda päättelyn tasoa",
"command.model.variant.cycle.description": "Vaihda seuraavalle päättelyn tasolle",
"command.prompt.mode.shell": "Shell",
"command.prompt.mode.normal": "Kehote",
"command.permissions.autoaccept.enable": "Hyväksy käyttöoikeudet automaattisesti",
"command.permissions.autoaccept.disable": "Lopeta käyttöoikeuksien automaattinen hyväksyminen",
"command.workspace.toggle": "Vaihda työtiloja",
"command.workspace.toggle.description": "Ota käyttöön tai poista käytöstä useita työtiloja sivupalkissa",
"command.session.undo": "Kumoa",
"command.session.undo.description": "Kumoa viimeinen viesti",
"command.session.redo": "Toista",
"command.session.redo.description": "Toista viimeisin kumottu viesti",
"command.session.compact": "Tiivistä istunto",
"command.session.compact.description": "Tee yhteenveto istunnosta pienentääksesi kontekstin kokoa",
"command.session.fork": "Haarauta viestistä",
"command.session.fork.description": "Luo uusi istunto edellisestä viestistä",
"command.session.share": "Jaa istunto",
"command.session.share.description": "Jaa tämä istunto ja kopioi URL-osoite leikepöydälle",
"command.session.unshare": "Peru istunnon jakaminen",
"command.session.unshare.description": "Lopeta tämän istunnon jakaminen",
"palette.search.placeholder": "Hae tiedostoja, komentoja ja istuntoja",
"palette.search.placeholder.home": "Hae komentoja ja istuntoja",
"palette.empty": "Tuloksia ei löytynyt",
"palette.group.commands": "Komennot",
"palette.group.files": "Tiedostot",
"dialog.provider.search.placeholder": "Etsi palveluntarjoajia",
"dialog.provider.empty": "Palveluntarjoajia ei löytynyt",
"dialog.provider.group.popular": "Suositut",
"dialog.provider.group.other": "Muut",
"dialog.provider.custom.label": "Mukautettu OpenAI-yhteensopiva palveluntarjoaja",
"dialog.provider.tag.recommended": "Suositeltu",
"dialog.provider.opencode.note": "Kuratoituja malleja, kuten Claude, GPT, Gemini ja muita",
"dialog.provider.opencode.tagline": "Luotettavat optimoidut mallit",
"dialog.provider.opencodeGo.tagline": "Edullinen tilaus kaikille",
"dialog.provider.anthropic.note": "Suora pääsy Claude-malleihin, mukaan lukien Pro ja Max",
"dialog.provider.copilot.note": "AI-malleja koodausapuun GitHub Copilotin kautta",
"dialog.provider.openai.note": "GPT-mallit nopeisiin, suorituskykyisiin yleisiin tekoälytehtäviin",
"dialog.provider.google.note": "Gemini-mallit nopeisiin, jäsenneltyihin vastauksiin",
"dialog.provider.openrouter.note": "Käytä kaikkia tuettuja malleja yhdeltä palveluntarjoajalta",
"dialog.provider.vercel.note": "Yhdistetty pääsy AI-malleihin älykkäällä reitityksellä",
"dialog.model.select.title": "Valitse malli",
"dialog.model.search.placeholder": "Hae malleja",
"dialog.model.empty": "Ei mallituloksia",
"dialog.model.manage": "Hallitse malleja",
"dialog.model.manage.description": "Mukauta, mitkä mallit näkyvät mallivalitsimessa.",
"dialog.model.manage.provider.toggle": "Ota kaikki palveluntarjoajan {{provider}} mallit käyttöön tai pois käytöstä",
"dialog.model.unpaid.freeModels.title": "OpenCoden tarjoamat ilmaiset mallit",
"dialog.model.unpaid.addMore.title": "Lisää malleja suosituilta palveluntarjoajilta",
"dialog.model.unpaid.viewMoreProviders": "Katso yli 70 muuta palveluntarjoajaa",
"dialog.provider.viewAll": "Näytä lisää palveluntarjoajia",
"provider.connect.title": "Yhdistä {{provider}}",
"provider.connect.title.anthropicProMax": "Kirjaudu sisään Claude Pro/Maxilla",
"provider.connect.selectMethod": "Valitse kirjautumistapa palvelulle {{provider}}.",
"provider.connect.method.apiKey": "API-avain",
"provider.connect.method.browser": "Selain",
"provider.connect.method.headless": "Päätön",
"provider.connect.status.inProgress": "Valtuutus käynnissä...",
"provider.connect.status.waiting": "Odotetaan valtuutusta...",
"provider.connect.status.failed": "Valtuutus epäonnistui: {{error}}",
"provider.connect.apiKey.description":
"Anna {{provider}}-API-avaimesi yhdistääksesi tilisi ja käyttääksesi {{provider}}-malleja OpenCodessa.",
"provider.connect.apiKey.label": "{{provider}}-API-avain",
"provider.connect.apiKey.placeholder": "API-avain",
"provider.connect.apiKey.required": "API-avain vaaditaan",
"provider.connect.opencodeZen.line1":
"OpenCode Zen antaa sinulle pääsyn kuratoituun joukkoon luotettavia optimoituja malleja koodausagenteille.",
"provider.connect.opencodeZen.line2":
"Yhdellä API-avaimella pääset käyttämään malleja, kuten Claude, GPT, Gemini, GLM ja paljon muuta.",
"provider.connect.opencodeZen.visit.prefix": "Avaa ",
"provider.connect.opencodeZen.visit.link": "opencode.ai/zen",
"provider.connect.opencodeZen.visit.suffix": " ja hae API-avaimesi.",
"provider.connect.oauth.code.visit.prefix": "Avaa ",
"provider.connect.oauth.code.visit.link": "tämä linkki",
"provider.connect.oauth.code.visit.suffix":
" ja hae valtuutuskoodi, jolla voit yhdistää tilisi ja käyttää {{provider}}-malleja OpenCodessa.",
"provider.connect.oauth.code.label": "Palvelun {{method}} valtuutuskoodi",
"provider.connect.oauth.code.placeholder": "Valtuutuskoodi",
"provider.connect.oauth.code.required": "Valtuutuskoodi vaaditaan",
"provider.connect.oauth.code.invalid": "Virheellinen valtuutuskoodi",
"provider.connect.oauth.auto.visit.prefix": "Avaa ",
"provider.connect.oauth.auto.visit.link": "tämä linkki",
"provider.connect.oauth.auto.visit.suffix":
" ja anna alla oleva koodi yhdistääksesi tilisi ja käyttääksesi {{provider}}-malleja OpenCodessa.",
"provider.connect.oauth.auto.confirmationCode": "Vahvistuskoodi",
"provider.connect.toast.connected.title": "{{provider}} yhdistetty",
"provider.connect.toast.connected.description": "{{provider}}-mallit ovat nyt käytettävissä.",
"provider.custom.title": "Mukautettu palveluntarjoaja",
"provider.custom.unavailable": "Mukautetut palveluntarjoajat eivät ole käytettävissä tällä palvelimella",
"provider.custom.description.prefix": "Määritä OpenAI-yhteensopiva palveluntarjoaja. Katso ",
"provider.custom.description.link": "palveluntarjoajan asetusdokumentit",
"provider.custom.description.suffix": ".",
"provider.custom.field.providerID.label": "Palveluntarjoajan tunnus",
"provider.custom.field.providerID.placeholder": "myprovider",
"provider.custom.field.providerID.description": "Pienet kirjaimet, numerot, yhdysmerkit tai alaviivat",
"provider.custom.field.name.label": "Näyttönimi",
"provider.custom.field.name.placeholder": "Oma tekoälypalveluni",
"provider.custom.field.baseURL.label": "Perus-URL-osoite",
"provider.custom.field.baseURL.placeholder": "https://api.myprovider.com/v1",
"provider.custom.field.apiKey.label": "API-avain",
"provider.custom.field.apiKey.placeholder": "API-avain",
"provider.custom.field.apiKey.description": "Valinnainen. Jätä tyhjäksi, jos hallitset todennusta otsikoiden avulla.",
"provider.custom.models.label": "Mallit",
"provider.custom.models.id.label": "ID",
"provider.custom.models.id.placeholder": "model-id",
"provider.custom.models.name.label": "Nimi",
"provider.custom.models.name.placeholder": "Näyttönimi",
"provider.custom.models.remove": "Poista malli",
"provider.custom.models.add": "Lisää malli",
"provider.custom.headers.label": "Otsikot (valinnainen)",
"provider.custom.headers.key.label": "Otsikko",
"provider.custom.headers.key.placeholder": "Header-Name",
"provider.custom.headers.value.label": "Arvo",
"provider.custom.headers.value.placeholder": "value",
"provider.custom.headers.remove": "Poista otsikko",
"provider.custom.headers.add": "Lisää otsikko",
"provider.custom.error.providerID.required": "Palveluntarjoajan tunnus vaaditaan",
"provider.custom.error.providerID.format": "Käytä pieniä kirjaimia, numeroita, tavuviivoja tai alaviivoja",
"provider.custom.error.providerID.exists": "Palveluntarjoajan tunnus on jo olemassa",
"provider.custom.error.name.required": "Näyttönimi vaaditaan",
"provider.custom.error.baseURL.required": "Perus-URL-osoite vaaditaan",
"provider.custom.error.baseURL.format": "Alussa on oltava http:// tai https://",
"provider.custom.error.required": "Pakollinen",
"provider.custom.error.duplicate": "Kaksoiskappale",
"provider.disconnect.toast.disconnected.title": "Yhteys palveluntarjoajaan {{provider}} katkaistu",
"provider.disconnect.toast.disconnected.description": "{{provider}}-mallit eivät ole enää saatavilla.",
"model.tag.free": "Ilmainen",
"model.tag.latest": "Uusin",
"model.provider.anthropic": "Anthropic",
"model.provider.openai": "OpenAI",
"model.provider.google": "Google",
"model.provider.xai": "xAI",
"model.provider.meta": "Meta",
"model.input.text": "teksti",
"model.input.image": "kuva",
"model.input.audio": "ääni",
"model.input.video": "video",
"model.input.pdf": "pdf",
"model.tooltip.allows": "Sallitut syötteet: {{inputs}}",
"model.tooltip.context.label": "Konteksti",
"model.tooltip.inputs": "Syötteet",
"model.tooltip.model": "Malli",
"model.tooltip.provider": "Palveluntarjoaja",
"model.tooltip.reasoning": "Päättely",
"model.tooltip.reasoning.allowed": "Mahdollistaa päättelyn",
"model.tooltip.reasoning.none": "Ei päättelyä",
"model.tooltip.context": "Kontekstirajoitus {{limit}}",
"common.search.placeholder": "Etsi",
"common.goBack": "Siirry takaisin",
"common.goForward": "Siirry eteenpäin",
"common.loading": "Ladataan",
"common.loading.ellipsis": "...",
"common.cancel": "Peruuta",
"common.clear": "Tyhjennä",
"common.open": "Avaa",
"common.connect": "Yhdistä",
"common.disconnect": "Katkaise yhteys",
"common.continue": "Jatka",
"common.submit": "Lähetä",
"common.save": "Tallenna",
"common.saving": "Tallennetaan...",
"common.default": "Oletus",
"common.attachment": "liite",
"prompt.placeholder.shell": "Anna shell-komento... {{example}}",
"prompt.placeholder.normal": 'Kysy mitä tahansa... "{{example}}"',
"prompt.placeholder.simple": "Kysy mitä tahansa...",
"prompt.placeholder.summarizeComments": "Tiivistä kommentit…",
"prompt.placeholder.summarizeComment": "Tiivistä kommentti…",
"prompt.mode.shell": "Shell",
"prompt.mode.normal": "Kehote",
"prompt.mode.shell.exit": "poistu painamalla Esc",
"session.child.promptDisabled": "Aliagentti-istuntoihin ei voi lähettää kehotteita.",
"session.child.backToParent": "Takaisin pääistuntoon.",
"prompt.example.1": "Korjaa TODO koodikannassa",
"prompt.example.2": "Mikä on tämän projektin teknologiapino?",
"prompt.example.3": "Korjaa rikkinäiset testit",
"prompt.example.4": "Selitä, kuinka todennus toimii",
"prompt.example.5": "Etsi ja korjaa tietoturva-aukkoja",
"prompt.example.6": "Lisää yksikkötestejä käyttäjäpalveluun",
"prompt.example.7": "Refaktoroi tämä funktio luettavammaksi",
"prompt.example.8": "Mitä tämä virhe tarkoittaa?",
"prompt.example.9": "Auta minua selvittämään tämä ongelma",
"prompt.example.10": "Luo API-dokumentaatio",
"prompt.example.11": "Optimoi tietokantakyselyt",
"prompt.example.12": "Lisää syötteen validointi",
"prompt.example.13": "Luo uusi komponentti...",
"prompt.example.14": "Kuinka otan tämän projektin käyttöön?",
"prompt.example.15": "Tarkista koodini parhaat käytännöt",
"prompt.example.16": "Lisää tähän toimintoon virheenkäsittely",
"prompt.example.17": "Selitä tämä säännöllinen lauseke",
"prompt.example.18": "Muunna tämä TypeScriptiksi",
"prompt.example.19": "Lisää kirjaus koko koodikantaan",
"prompt.example.20": "Mitkä riippuvuudet ovat vanhentuneita?",
"prompt.example.21": "Auta minua kirjoittamaan migraatioskripti",
"prompt.example.22": "Ota välimuisti käyttöön tälle päätepisteelle",
"prompt.example.23": "Lisää sivutus tähän luetteloon",
"prompt.example.24": "Luo CLI-komento...",
"prompt.example.25": "Miten ympäristömuuttujat toimivat tässä?",
"prompt.popover.emptyResults": "Ei vastaavia tuloksia",
"prompt.popover.emptyCommands": "Ei vastaavia komentoja",
"prompt.dropzone.label": "Pudota kuvia, PDF-tiedostoja tai tekstitiedostoja tähän",
"prompt.dropzone.file.label": "Pudota lisätäksesi tiedoston @-mainintana",
"prompt.slash.badge.custom": "mukautettu",
"prompt.slash.badge.skill": "taito",
"prompt.slash.badge.mcp": "mcp",
"prompt.context.active": "aktiivinen",
"prompt.context.includeActiveFile": "Sisällytä aktiivinen tiedosto",
"prompt.context.removeActiveFile": "Poista aktiivinen tiedosto kontekstista",
"prompt.context.removeFile": "Poista tiedosto kontekstista",
"prompt.action.attachFile": "Lisää tiedostoja",
"prompt.menu.addImagesAndFiles": "Lisää tiedostoja ja paljon muuta",
"prompt.menu.imagesAndFiles": "Kuvia ja tiedostoja",
"prompt.menu.commands": "Komennot",
"prompt.menu.context": "Konteksti",
"prompt.menu.shellCommand": "Shell-komento",
"prompt.attachment.remove": "Poista liite",
"prompt.action.send": "Lähetä",
"prompt.action.stop": "Pysäytä",
"prompt.toast.pasteUnsupported.title": "Liitettä ei tueta",
"prompt.toast.pasteUnsupported.description": "Vain kuvia, PDF-tiedostoja tai tekstitiedostoja voi liittää tähän.",
"prompt.toast.attachmentDuplicate.title": "Tämä tiedosto on jo ladattu",
"prompt.toast.modelAgentRequired.title": "Valitse agentti ja malli",
"prompt.toast.modelAgentRequired.description": "Valitse agentti ja malli ennen kehotteen lähettämistä.",
"prompt.toast.worktreeCreateFailed.title": "Työpuun luominen epäonnistui",
"prompt.toast.sessionCreateFailed.title": "Istunnon luominen epäonnistui",
"prompt.toast.shellSendFailed.title": "Shell-komennon lähettäminen epäonnistui",
"prompt.toast.commandSendFailed.title": "Komennon lähettäminen epäonnistui",
"prompt.toast.promptSendFailed.title": "Kehotteen lähettäminen epäonnistui",
"prompt.toast.promptSendFailed.description": "Istuntoa ei voi noutaa",
"dialog.mcp.title": "MCP:t",
"dialog.mcp.description": "{{enabled}}/{{total}} käytössä",
"dialog.mcp.empty": "MCP:tä ei ole määritetty",
"dialog.lsp.empty": "LSP:t tunnistetaan automaattisesti tiedostotyypeistä",
"dialog.plugins.empty": "Laajennukset määritetään opencode.json-tiedostossa",
"mcp.status.connected": "yhdistetty",
"mcp.status.failed": "epäonnistunut",
"mcp.status.needs_auth": "tarvitsee todennusta",
"mcp.status.disabled": "pois käytöstä",
"mcp.auth.clickToAuthenticate": "Todenna napsauttamalla",
"dialog.fork.empty": "Ei viestejä, joista voisi haarauttaa",
"dialog.directory.search.placeholder": "Hae kansioita",
"dialog.directory.empty": "Kansioita ei löytynyt",
"dialog.directory.action.selectFile": "Valitse tiedosto",
"dialog.directory.action.selectFolder": "Valitse kansio",
"dialog.directory.root": "Juuri",
"dialog.directory.parent": "Ylätaso",
"dialog.directory.readError": "Tätä kansiota ei voi lukea",
"app.server.unreachable": "Palvelimeen {{server}} ei saatu yhteyttä",
"app.server.retrying": "Yritetään automaattisesti uudelleen...",
"app.server.otherServers": "Muut palvelimet",
"dialog.server.title": "Palvelimet",
"dialog.server.description": "Vaihda OpenCode-palvelimeen, johon tämä sovellus muodostaa yhteyden.",
"dialog.server.search.placeholder": "Etsi palvelimia",
"dialog.server.empty": "Ei vielä palvelimia",
"dialog.server.add.title": "Lisää palvelin",
"dialog.server.add.url": "Palvelimen osoite",
"dialog.server.add.placeholder": "http://localhost:4096",
"dialog.server.add.error": "Ei voitu muodostaa yhteyttä palvelimeen",
"dialog.server.add.checking": "Tarkistetaan...",
"dialog.server.add.button": "Lisää palvelin",
"dialog.server.add.name": "Palvelimen nimi (valinnainen)",
"dialog.server.add.namePlaceholder": "Localhost",
"dialog.server.add.username": "Käyttäjätunnus (valinnainen)",
"dialog.server.add.usernamePlaceholder": "käyttäjätunnus",
"dialog.server.add.password": "Salasana (valinnainen)",
"dialog.server.add.passwordPlaceholder": "salasana",
"dialog.server.edit.title": "Muokkaa palvelinta",
"dialog.server.default.title": "Oletuspalvelin",
"dialog.server.default.description":
"Yhdistä tähän palvelimeen sovelluksen käynnistyksen yhteydessä paikallisen palvelimen käynnistämisen sijaan. Vaatii uudelleenkäynnistyksen.",
"dialog.server.default.none": "Palvelinta ei ole valittu",
"dialog.server.default.set": "Aseta nykyinen palvelin oletukseksi",
"dialog.server.default.clear": "Tyhjennä",
"dialog.server.action.remove": "Poista palvelin",
"dialog.server.menu.edit": "Muokkaa",
"dialog.server.menu.default": "Aseta oletukseksi",
"dialog.server.menu.defaultRemove": "Poista oletuspalvelin",
"dialog.server.menu.delete": "Poista",
"dialog.server.current": "Nykyinen palvelin",
"dialog.server.status.default": "Oletus",
"wsl.server.add": "Lisää WSL-palvelin",
"wsl.server.addShort": "Lisää WSL",
"wsl.server.label": "WSL",
"wsl.server.menu.label": "WSL-palvelin",
"wsl.server.retryStart": "Yritä käynnistystä uudelleen",
"wsl.server.updating": "Päivitetään...",
"wsl.onboarding.step.distro": "Valitse jakelu",
"wsl.onboarding.step.opencode": "OpenCode",
"wsl.onboarding.checkingRuntime": "Tarkistetaan WSL...",
"wsl.onboarding.restartRequired": "Windows tarvitsee uudelleenkäynnistyksen WSL:n asennuksen viimeistelemiseksi.",
"wsl.onboarding.ready": "WSL on valmis.",
"wsl.onboarding.required": "WSL vaaditaan jatkamiseen.",
"wsl.onboarding.checkingDistros": "Tarkistetaan jakeluja...",
"wsl.onboarding.installingDistro": "Asennetaan {{distro}}...",
"wsl.onboarding.checkingDistro": "Tarkistetaan {{distro}}...",
"wsl.onboarding.listingDistros": "Luetteloidaan jakeluja...",
"wsl.onboarding.distroReady": "{{distro}} on valmis.",
"wsl.onboarding.distroNotInstalled": "{{distro}} ei ole vielä asennettu.",
"wsl.onboarding.openDistroOnce": "Avaa {{distro}} kerran viimeistelläksesi asetukset.",
"wsl.onboarding.finishingDistro": "Viimeistellään jakelun {{distro}} asennusta.",
"wsl.onboarding.pickDistro": "Valitse jakelu tai asenna sellainen alta.",
"wsl.onboarding.checkingOpencode": "Tarkistetaan OpenCodea...",
"wsl.onboarding.checkingOpencodeIn": "Tarkistetaan OpenCodea kohteessa {{distro}}...",
"wsl.onboarding.updatingOpencode": "Päivitetään OpenCodea...",
"wsl.onboarding.updatingOpencodeIn": "Päivitetään OpenCodea kohteessa {{distro}}...",
"wsl.onboarding.updateOpencodeIn": "Päivitä OpenCode jakelussa {{distro}}.",
"wsl.onboarding.updateOpencode": "Päivitä OpenCode",
"wsl.onboarding.opencodeReadyIn": "OpenCode on valmis jakelussa {{distro}}.",
"wsl.onboarding.opencodeReady": "OpenCode on valmis.",
"wsl.onboarding.installOpencodeIn": "Asenna OpenCode jakeluun {{distro}}.",
"wsl.onboarding.installOpencode": "Asenna OpenCode",
"wsl.onboarding.chooseDistroFirst": "Valitse ensin jakelu.",
"wsl.onboarding.loadFailed": "WSL-tilan lataaminen epäonnistui.",
"wsl.onboarding.loading": "Ladataan...",
"wsl.onboarding.installedDistros": "Asennetut jakelut",
"wsl.onboarding.checkAgain": "Tarkista uudelleen",
"wsl.onboarding.distroStatus.ready": "Valmis",
"wsl.onboarding.distroStatus.checking": "Tarkistetaan...",
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCodea ei ole asennettu",
"wsl.onboarding.distroStatus.missingTools": "Puuttuu bash, curl",
"wsl.onboarding.distroStatus.unsupported": "Ei tuettu · Käytä WSL 2:ta",
"wsl.onboarding.needAnotherDistro": "Tarvitsetko toisen jakelun?",
"wsl.onboarding.needAnotherDistroHint": "Asenna Linux-jakelu WSL-luettelosta",
"wsl.onboarding.wslNotInstalled.title": "WSL:ää ei ole asennettu",
"wsl.onboarding.wslNotInstalled.description":
"WSL (Windows Subsystem for Linux) vaaditaan ennen kuin OpenCode voi lisätä WSL-palvelimen",
"wsl.onboarding.wslUnavailable.title": "WSL ei ole käytettävissä",
"wsl.onboarding.wslUnavailable.description": "OpenCode ei voinut vahvistaa WSL:ää tällä koneella.",
"wsl.onboarding.installWsl": "Asenna WSL",
"wsl.onboarding.windowsRestartRequired":
"Viimeistele WSL:n asennus käynnistämällä Windows uudelleen ja avaa sitten OpenCode uudelleen.",
"wsl.onboarding.next": "Seuraava",
"wsl.onboarding.refresh": "Päivitä",
"wsl.onboarding.allDistrosAdded": "Kaikki asennetut jakelut on jo lisätty.",
"wsl.onboarding.noDistros": "Jakeluja ei ole vielä havaittu.",
"wsl.onboarding.install": "Asenna",
"wsl.onboarding.installing": "Asennetaan...",
"wsl.onboarding.installDistro": "Asenna jakelu",
"wsl.onboarding.searchDistros": "Etsi jakeluja",
"wsl.onboarding.wsl2Required": "WSL 2 vaaditaan.",
"wsl.onboarding.toolsRequired": "Tämä jakelu tarvitsee bashin ja curlin.",
"wsl.onboarding.openTerminal": "Avaa terminaali",
"wsl.onboarding.path": "Polku: {{path}}",
"wsl.onboarding.notFound": "ei löytynyt",
"wsl.onboarding.version": "Versio: {{version}}",
"wsl.onboarding.unknown": "tuntematon",
"wsl.onboarding.desktopVersion": "Desktop {{version}}",
"wsl.onboarding.versionMismatch": "Asennettu versio ei vastaa työpöytäsovelluksen versiota.",
"wsl.onboarding.adding": "Lisätään...",
"server.row.noUsername": "ei käyttäjätunnusta",
"dialog.project.edit.title": "Muokkaa projektia",
"dialog.project.edit.name": "Nimi",
"dialog.project.edit.icon": "Kuvake",
"dialog.project.edit.icon.alt": "Projektikuvake",
"dialog.project.edit.icon.hint": "Napsauta tai vedä kuvaa",
"dialog.project.edit.icon.recommended": "Suositus: 128x128px",
"dialog.project.edit.color": "Väri",
"dialog.project.edit.color.select": "Valitse väri {{color}}",
"dialog.project.edit.worktree.startup": "Työtilan käynnistysskripti",
"dialog.project.edit.worktree.startup.description": "Suoritetaan uuden työtilan (työpuun) luomisen jälkeen.",
"dialog.project.edit.worktree.startup.placeholder": "esim. bun install",
"dialog.releaseNotes.action.getStarted": "Aloita",
"dialog.releaseNotes.action.next": "Seuraava",
"dialog.releaseNotes.action.hideFuture": "Älä näytä näitä jatkossa",
"dialog.releaseNotes.media.alt": "Julkaisun esikatselu",
"context.breakdown.title": "Kontekstin erittely",
"context.breakdown.note":
'Syötetokenien arvioitu jakautuminen. "Muut" sisältää työkalumäärittelyt ja muun oheissisällön.',
"context.breakdown.system": "Järjestelmä",
"context.breakdown.user": "Käyttäjä",
"context.breakdown.assistant": "Avustaja",
"context.breakdown.tool": "Työkalukutsut",
"context.breakdown.other": "Muut",
"context.systemPrompt.title": "Järjestelmäkehote",
"context.rawMessages.title": "Raakaviestit",
"context.stats.session": "Istunto",
"context.stats.messages": "Viestit",
"context.stats.provider": "Palveluntarjoaja",
"context.stats.model": "Malli",
"context.stats.limit": "Kontekstirajoitus",
"context.stats.totalTokens": "Tokenit yhteensä",
"context.stats.usage": "Käyttö",
"context.stats.inputTokens": "Syötetokenit",
"context.stats.outputTokens": "Tulostokenit",
"context.stats.reasoningTokens": "Päättelytokenit",
"context.stats.cacheTokens": "Välimuistitokenit (luku/kirjoitus)",
"context.stats.userMessages": "Käyttäjäviestit",
"context.stats.assistantMessages": "Avustajan viestit",
"context.stats.totalCost": "Kokonaiskustannukset",
"context.stats.sessionCreated": "Istunto luotu",
"context.stats.lastActivity": "Viimeisin toiminta",
"context.usage.tokens": "Tokenit",
"context.usage.usage": "Käyttö",
"context.usage.cost": "Kustannukset",
"context.usage.clickToView": "Näytä konteksti napsauttamalla",
"context.usage.view": "Näytä kontekstin käyttö",
"language.en": "English",
"language.zh": "简体中文",
"language.zht": "繁體中文",
"language.ko": "한국어",
"language.de": "Deutsch",
"language.es": "Español",
"language.fr": "Français",
"language.da": "Dansk",
"language.ja": "日本語",
"language.pl": "Polski",
"language.ru": "Русский",
"language.ar": "العربية",
"language.no": "Norsk",
"language.br": "Português (Brasil)",
"language.bs": "Bosanski",
"language.uk": "Українська",
"language.th": "ไทย",
"language.tr": "Türkçe",
"toast.language.title": "Kieli",
"toast.language.description": "Kieleksi vaihdettu {{language}}",
"toast.theme.title": "Teema vaihdettu",
"toast.scheme.title": "Värimalli",
"toast.workspace.enabled.title": "Työtilat käytössä",
"toast.workspace.enabled.description": "Sivupalkissa näkyy nyt useita työpuita",
"toast.workspace.disabled.title": "Työtilat pois käytöstä",
"toast.workspace.disabled.description": "Vain päätyöpuu näkyy sivupalkissa",
"toast.permissions.autoaccept.on.title": "Käyttöoikeudet hyväksytään automaattisesti",
"toast.permissions.autoaccept.on.description": "Lupapyynnöt hyväksytään automaattisesti",
"toast.permissions.autoaccept.off.title": "Lupien automaattinen hyväksyminen lopetettu",
"toast.permissions.autoaccept.off.description": "Lupapyynnöt vaativat hyväksynnän",
"toast.model.none.title": "Mallia ei ole valittu",
"toast.model.none.description": "Yhdistä palveluntarjoaja tehdäksesi yhteenvedon tästä istunnosta",
"toast.file.loadFailed.title": "Tiedoston lataaminen epäonnistui",
"toast.file.listFailed.title": "Tiedostojen luettelointi epäonnistui",
"toast.context.noLineSelection.title": "Ei rivivalintaa",
"toast.context.noLineSelection.description": "Valitse ensin riviväli tiedostovälilehdeltä.",
"toast.session.share.copyFailed.title": "URL-osoitteen kopioiminen leikepöydälle epäonnistui",
"toast.session.share.success.title": "Istunto jaettu",
"toast.session.share.success.description": "Jakolinkki kopioitu leikepöydälle!",
"toast.session.share.failed.title": "Istunnon jakaminen epäonnistui",
"toast.session.share.failed.description": "Istunnon jakamisessa tapahtui virhe",
"toast.session.unshare.success.title": "Istunnon jako peruttu",
"toast.session.unshare.success.description": "Istunnon jakaminen peruutettu onnistuneesti!",
"toast.session.unshare.failed.title": "Istunnon jakamisen peruuttaminen epäonnistui",
"toast.session.unshare.failed.description": "Virhe peruttaessa istunnon jakamista",
"toast.session.listFailed.title": "Projektin {{project}} istuntojen lataaminen epäonnistui",
"toast.project.reloadFailed.title": "Projektin {{project}} lataaminen uudelleen epäonnistui",
"toast.update.title": "Päivitys saatavilla",
"toast.update.description": "OpenCoden uusi versio ({{version}}) on nyt saatavana asennettavaksi.",
"toast.update.action.installRestart": "Asenna ja käynnistä uudelleen",
"toast.update.action.notYet": "Ei vielä",
"error.page.title": "Jotain meni pieleen",
"error.page.description": "Sovellusta ladattaessa tapahtui virhe.",
"error.page.description.localServerStartup": "Paikallista palvelinta käynnistettäessä tapahtui virhe.",
"error.page.details.label": "Virheen tiedot",
"error.page.action.restart": "Käynnistä uudelleen",
"error.page.action.report": "Ilmoita virheestä",
"error.page.action.reported": "Virhe raportoitu",
"error.page.action.exportLogs": "Vie lokit",
"error.page.action.checking": "Tarkistetaan...",
"error.page.action.checkUpdates": "Tarkista päivitykset",
"error.page.action.updateTo": "Päivitä versioon {{version}}",
"error.page.circular": "[Kehäviittaus]",
"error.page.report.prefix": "Ilmoita tästä virheestä OpenCode-tiimille",
"error.page.report.discord": "Discordissa",
"error.page.version": "Versio: {{version}}",
"error.dev.rootNotFound":
"Juurielementtiä ei löydy. Unohditko lisätä sen index.html-tiedostoosi? Tai ehkä id-attribuutti on kirjoitettu väärin?",
"error.serverSync.connectFailed":
"Ei voitu muodostaa yhteyttä palvelimeen. Onko osoitteessa `{{url}}` käynnissä palvelin?",
"error.serverSDK.noServerAvailable": "Palvelinta ei ole saatavilla",
"error.serverSDK.serverNotAvailable": "Palvelin ei ole käytettävissä",
"error.childStore.persistedCacheCreateFailed": "Pysyvän välimuistin luominen epäonnistui",
"error.childStore.persistedProjectMetadataCreateFailed": "Projektin pysyvien metatietojen luominen epäonnistui",
"error.childStore.persistedProjectIconCreateFailed": "Pysyvän projektin kuvakkeen luominen epäonnistui",
"error.childStore.storeCreateFailed": "Tietovaraston luominen epäonnistui",
"directory.error.invalidUrl": "Virheellinen hakemisto URL-osoitteessa.",
"error.chain.unknown": "Tuntematon virhe",
"error.server.invalidConfiguration": "Virheellinen määritys",
"error.chain.causedBy": "Aiheuttaja:",
"error.chain.apiError": "API-virhe",
"error.chain.status": "Tila: {{status}}",
"error.chain.retryable": "Voidaan yrittää uudelleen: {{retryable}}",
"error.chain.responseBody": "Vastausteksti:\n{{body}}",
"error.chain.didYouMean": "Tarkoititko: {{suggestions}}",
"error.chain.modelNotFound": "Mallia ei löydy: {{provider}}/{{model}}",
"error.chain.checkConfig": "Tarkista määritysten (opencode.json) palveluntarjoajien ja mallien nimet",
"error.chain.mcpFailed": 'MCP-palvelin "{{name}}" epäonnistui. Huomaa, että OpenCode ei vielä tue MCP-todennusta.',
"error.chain.providerAuthFailed": "Palveluntarjoajan todennus epäonnistui ({{provider}}): {{message}}",
"error.chain.providerInitFailed":
'Palveluntarjoajan "{{provider}}" alustaminen epäonnistui. Tarkista tunnistetiedot ja määritykset.',
"error.chain.configJsonInvalid": "Polun {{path}} määritystiedosto ei ole kelvollista JSON(C)-muotoa",
"error.chain.configJsonInvalidWithMessage":
"Polun {{path}} määritystiedosto ei ole kelvollista JSON(C)-muotoa: {{message}}",
"error.chain.configDirectoryTypo":
'Hakemisto "{{dir}}" polussa {{path}} ei kelpaa. Nimeä hakemisto uudelleen nimellä "{{suggestion}}" tai poista se. Tämä on yleinen kirjoitusvirhe.',
"error.chain.configFrontmatterError": "Polun {{path}} front matter -tietojen jäsentäminen epäonnistui:\n{{message}}",
"error.chain.configInvalid": "Polun {{path}} määritystiedosto on virheellinen",
"error.chain.configInvalidWithMessage": "Polun {{path}} määritystiedosto on virheellinen: {{message}}",
"notification.permission.title": "Lupa vaaditaan",
"notification.permission.description": "Istunto {{sessionTitle}} projektissa {{projectName}} tarvitsee luvan",
"notification.question.title": "Kysymys",
"notification.question.description": "Istunto {{sessionTitle}} projektissa {{projectName}} esittää kysymyksen",
"notification.action.goToSession": "Siirry istuntoon",
"notification.session.responseReady.title": "Vastaus valmiina",
"notification.session.error.title": "Istuntovirhe",
"notification.session.error.fallbackDescription": "Tapahtui virhe",
"home.recentProjects": "Viimeaikaiset projektit",
"home.empty.title": "Ei viimeaikaisia projekteja",
"home.empty.description": "Aloita avaamalla paikallinen projekti",
"home.title": "Etusivu",
"home.projects": "Projektit",
"home.project.add": "Lisää projekti",
"home.recentlyClosed": "Äskettäin suljettu",
"home.server.collapse": "Kutista palvelimen projektit",
"home.server.expand": "Laajenna palvelimen projektit",
"home.sessions.search.placeholder": "Hae istuntoja",
"home.sessions.search.placeholder.scoped": "Hae istuntoja kohteesta {{scope}}",
"home.sessions.search.sessions": "Istunnot",
"home.sessions.search.noResults": "Ei istuntoja haulle {{query}}",
"home.sessions.empty": "Ei täällä vielä mitään",
"home.sessions.empty.description": "Aloita luomalla istunto",
"home.sessions.group.today": "Tänään",
"home.sessions.group.yesterday": "Eilen",
"home.sessions.group.older": "Vanhemmat",
"home.providerTip": "Yhdistä yli 75 palveluntarjoajaan käyttääksesi muita malleja, kuten Claude, GPT, Gemini jne",
"session.tab.session": "Istunto",
"session.tab.review": "Tarkistus",
"session.tab.context": "Konteksti",
"session.tab.unknown": "Tuntematon istunto",
"session.panel.reviewAndFiles": "Tarkistus ja tiedostot",
"session.error.notFound": "Tätä istuntoa ei löydy",
"session.error.notFound.description": "Tämä välilehti osoittaa istuntoon, jota ei enää ole tällä palvelimella.",
"session.error.notFound.closeTab": "Sulje välilehti",
"session.error.serverConnection": "Ei voi muodostaa yhteyttä tähän palvelimeen",
"session.review.filesChanged": "Muutettuja tiedostoja: {{count}}",
"session.review.change.one": "Muutos",
"session.review.change.other": "Muutokset",
"session.review.loadingChanges": "Ladataan muutoksia...",
"session.review.empty": "Tässä istunnossa ei vielä muutoksia",
"session.review.noVcs": "Git-versionhallintaa ei havaittu, joten muutoksia ei näytetä",
"session.review.noVcs.createGit.title": "Luo Git-säilö",
"session.review.noVcs.createGit.description": "Seuraa, tarkista ja kumoa muutoksia tässä projektissa",
"session.review.noVcs.createGit.actionLoading": "Luodaan Git-säilöä...",
"session.review.noVcs.createGit.action": "Luo Git-säilö",
"session.review.noSnapshot":
"Tilannevedosten seuranta on poistettu käytöstä määrityksessä, joten istunnon muutokset eivät ole käytettävissä",
"session.review.noChanges": "Ei muutoksia",
"session.review.noUncommittedChanges": "Ei vielä sitomattomia muutoksia",
"session.review.noBranchChanges": "Ei vielä haaran muutoksia",
"session.files.selectToOpen": "Valitse avattava tiedosto",
"session.files.all": "Kaikki tiedostot",
"session.files.empty": "Ei tiedostoja",
"session.files.binaryContent": "Binääritiedosto (sisältöä ei voi näyttää)",
"session.messages.renderEarlier": "Hahmonna aiemmat viestit",
"session.messages.loadingEarlier": "Ladataan aikaisempia viestejä...",
"session.messages.loadEarlier": "Lataa aikaisemmat viestit",
"session.messages.loading": "Ladataan viestejä...",
"session.messages.jumpToLatest": "Siirry uusimpaan",
"session.context.addToContext": "Lisää {{selection}} kontekstiin",
"session.todo.title": "Tehtävät",
"session.todo.collapse": "Kutista",
"session.todo.expand": "Laajenna",
"session.todo.progress": "{{done}}/{{total}} tehtävää suoritettu",
"session.question.progress": "{{current}}/{{total}} kysymystä",
"session.question.minimize": "Pienennä kysymys",
"session.question.restore": "Palauta kysymys",
"session.question.pending.one": "{{count}} odottava kysymys",
"session.question.pending.other": "{{count}} odottavaa kysymystä",
"session.followupDock.summary.one": "{{count}} jonossa oleva viesti",
"session.followupDock.summary.other": "{{count}} jonossa olevaa viestiä",
"session.followupDock.sendNow": "Lähetä nyt",
"session.followupDock.edit": "Muokkaa",
"session.followupDock.collapse": "Kutista jonossa olevat viestit",
"session.followupDock.expand": "Laajenna jonossa olevia viestejä",
"session.revertDock.summary.one": "{{count}} palautettu viesti",
"session.revertDock.summary.other": "{{count}} palautettua viestiä",
"session.revertDock.collapse": "Kutista palautetut viestit",
"session.revertDock.expand": "Laajenna palautetut viestit",
"session.revertDock.restore": "Palauta viesti",
"session.new.title": "Rakenna mitä tahansa",
"session.new.project.new": "Uusi projekti",
"session.new.project.search": "Etsi projekteja",
"session.new.project.add": "Lisää projekti",
"session.new.worktree.main": "Päähaara",
"session.new.worktree.mainWithBranch": "Päähaara ({{branch}})",
"session.new.worktree.create": "Luo uusi työpuu",
"session.new.workspace.runIn": "Suorita istunto kohteessa",
"session.new.workspace.triggerLocal": "Paikallinen",
"session.new.workspace.local": "Paikallinen säilö",
"session.new.workspace.existing": "Työtila…",
"session.new.git.none": "Ei Gitiä",
"session.new.lastModified": "Viimeksi muokattu",
"session.header.search.placeholder": "Hae projektista {{project}}",
"session.header.searchFiles": "Etsi tiedostoja",
"session.header.openIn": "Avaa sovelluksessa",
"session.header.open.action": "Avaa {{app}}",
"session.header.open.ariaLabel": "Avaa sovelluksessa {{app}}",
"session.header.open.menu": "Avausvaihtoehdot",
"session.header.open.copyPath": "Kopioi polku",
"session.header.open.finder": "Finder",
"session.header.open.fileExplorer": "Tiedostonhallinta",
"session.header.open.fileManager": "Tiedostonhallinta",
"session.header.reveal.finder": "Näytä Finderissa",
"session.header.reveal.fileExplorer": "Näytä Resurssienhallinnassa",
"session.header.reveal.containingFolder": "Avaa tiedoston sisältävä kansio",
"session.header.open.app.vscode": "VS Code",
"session.header.open.app.cursor": "Cursor",
"session.header.open.app.zed": "Zed",
"session.header.open.app.textmate": "TextMate",
"session.header.open.app.antigravity": "Antigravity",
"session.header.open.app.terminal": "Terminaali",
"session.header.open.app.iterm2": "iTerm2",
"session.header.open.app.ghostty": "Ghostty",
"session.header.open.app.warp": "Warp",
"session.header.open.app.xcode": "Xcode",
"session.header.open.app.androidStudio": "Android Studio",
"session.header.open.app.powershell": "PowerShell",
"session.header.open.app.sublimeText": "Sublime Text",
"status.popover.trigger": "Tila",
"status.popover.ariaLabel": "Palvelimen määritykset",
"status.popover.tab.servers": "Palvelimet",
"status.popover.tab.mcp": "MCP",
"status.popover.tab.lsp": "LSP",
"status.popover.tab.plugins": "Laajennukset",
"status.popover.action.manageServers": "Hallinnoi palvelimia",
"session.share.popover.title": "Julkaise verkossa",
"session.share.popover.description.shared":
"Tämä istunto on julkinen verkossa. Se on kaikkien linkin saaneiden käytettävissä.",
"session.share.popover.description.unshared":
"Jaa istunto julkisesti verkossa. Se on kaikkien linkin saaneiden käytettävissä.",
"session.share.action.share": "Jaa",
"session.share.action.publish": "Julkaise",
"session.share.action.publishing": "Julkaistaan...",
"session.share.action.unpublish": "Peruuta julkaisu",
"session.share.action.unpublishing": "Peruutetaan julkaisua...",
"session.share.action.view": "Näytä",
"session.share.copy.copied": "Kopioitu",
"session.share.copy.copyLink": "Kopioi linkki",
"lsp.tooltip.none": "Ei LSP-palvelimia",
"lsp.label.connected": "{{count}} LSP",
"prompt.loading": "Ladataan kehotetta...",
"terminal.loading": "Ladataan terminaalia...",
"terminal.title": "Terminaali",
"terminal.title.numbered": "Terminaali {{number}}",
"terminal.close": "Sulje terminaali",
"terminal.connectionLost.title": "Yhteys katkesi",
"terminal.connectionLost.abnormalClose": "WebSocket sulkeutui poikkeavasti: {{code}}",
"terminal.connectionLost.description":
"Terminaaliyhteys katkesi. Näin voi tapahtua, kun palvelin käynnistyy uudelleen.",
"terminal.connectTicket.csrfError":
"PTY-yhteyslippu hylättiin alkuperä- tai CSRF-tarkistuksessa. Tarkista palvelimen CORS-määritys.",
"terminal.connectTicket.statusError": "PTY-yhteyslippu epäonnistui tilakoodilla {{status}}",
"titlebar.update": "Päivitä",
"titlebar.updateVersion": "Päivitä {{version}}",
"common.closeTab": "Sulje välilehti",
"common.dismiss": "Hylkää",
"common.moreCountSuffix": " (+{{count}} muuta)",
"common.requestFailed": "Pyyntö epäonnistui",
"common.moreOptions": "Lisää vaihtoehtoja",
"common.learnMore": "Lue lisää",
"common.rename": "Nimeä uudelleen",
"common.reset": "Palauta",
"common.archive": "Arkistoi",
"common.delete": "Poista",
"common.close": "Sulje",
"common.edit": "Muokkaa",
"common.loadMore": "Lataa lisää",
"common.key.esc": "ESC",
"common.key.ctrl": "Ctrl",
"common.key.alt": "Alt",
"common.key.shift": "Shift",
"common.key.meta": "Meta",
"common.key.space": "Space",
"common.key.backspace": "Backspace",
"common.key.enter": "Enter",
"common.key.tab": "Tab",
"common.key.delete": "Delete",
"common.key.home": "Home",
"common.key.end": "End",
"common.key.pageUp": "Page Up",
"common.key.pageDown": "Page Down",
"common.key.insert": "Insert",
"common.unknown": "tuntematon",
"common.time.justNow": "Juuri nyt",
"common.time.minutesAgo.short": "{{count}} min sitten",
"common.time.hoursAgo.short": "{{count}} h sitten",
"common.time.daysAgo.short": "{{count}} pv sitten",
"sidebar.menu.toggle": "Näytä tai piilota valikko",
"sidebar.nav.projectsAndSessions": "Projektit ja istunnot",
"sidebar.settings": "Asetukset",
"sidebar.help": "Ohje",
"sidebar.workspaces.enable": "Ota työtilat käyttöön",
"sidebar.workspaces.disable": "Poista työtilat käytöstä",
"sidebar.gettingStarted.title": "Aloittaminen",
"sidebar.gettingStarted.line1": "OpenCode sisältää ilmaisia malleja, joten voit aloittaa heti.",
"sidebar.gettingStarted.line2":
"Yhdistä mikä tahansa palveluntarjoaja käyttääksesi malleja, mm. Claude, GPT, Gemini jne.",
"sidebar.project.recentSessions": "Viimeaikaiset istunnot",
"sidebar.project.viewAllSessions": "Näytä kaikki istunnot",
"sidebar.project.clearNotifications": "Tyhjennä ilmoitukset",
"sidebar.empty.title": "Ei avoimia projekteja",
"sidebar.empty.description": "Aloita avaamalla projekti",
"debugBar.ariaLabel": "Kehityksen suorituskyvyn diagnostiikka",
"debugBar.na": "n/a",
"debugBar.nav.label": "NAV",
"debugBar.nav.tip":
"Viimeisin valmis reittisiirtymä, joka koskee istuntosivua, mitattuna reitityksen alusta ensimmäiseen piirtoon siirtymän valmistumisen jälkeen.",
"debugBar.fps.label": "FPS",
"debugBar.fps.tip": "Liukuva kuvataajuus viimeisten 5 sekunnin ajalta.",
"debugBar.frame.label": "FRAME",
"debugBar.frame.tip": "Pisin kuvan piirtoaika viimeisten 5 sekunnin aikana.",
"debugBar.jank.label": "JANK",
"debugBar.jank.tip": "Yli 32 ms kestäneet kuvat viimeisten 5 sekunnin aikana.",
"debugBar.long.label": "PITKÄ",
"debugBar.long.tip": "Estetty aika ja pitkien tehtävien määrä viimeisten 5 sekunnin aikana. Pisin tehtävä: {{max}}.",
"debugBar.delay.label": "VIIVE",
"debugBar.delay.tip": "Pisin havaittu syöttöviive viimeisten 5 sekunnin aikana.",
"debugBar.inp.label": "INP",
"debugBar.inp.tip":
"Vuorovaikutuksen arvioitu kesto viimeisen 5 sekunnin ajalta. Tämä on INP-tyyppinen, ei virallinen Web Vitals INP.",
"debugBar.cls.label": "CLS",
"debugBar.cls.tip": "Kumulatiivinen asettelusiirtymä sovelluksen nykyisen käyttöjakson aikana.",
"debugBar.mem.label": "MEM",
"debugBar.mem.tipUnavailable": "Käytetty JS-keko suhteessa keon rajaan. Vain Chromium.",
"debugBar.mem.tip": "Käytetty JS-keko suhteessa keon rajaan. {{used}} / {{limit}}.",
"app.name.desktop": "OpenCode Desktop",
"settings.section.desktop": "Työpöytä",
"settings.section.server": "Palvelin",
"settings.tab.general": "Yleiset",
"settings.tab.shortcuts": "Pikanäppäimet",
"settings.desktop.section.wsl": "WSL",
"settings.desktop.wsl.title": "WSL-integraatio",
"settings.desktop.wsl.description": "Suorita OpenCode-palvelin WSL:n sisällä Windowsissa.",
"settings.general.section.appearance": "Ulkonäkö",
"settings.general.section.advanced": "Lisäasetukset",
"settings.general.section.notifications": "Järjestelmän ilmoitukset",
"settings.general.section.updates": "Päivitykset",
"settings.general.section.sounds": "Äänitehosteet",
"settings.general.section.feed": "Syöte",
"settings.general.section.display": "Näyttö",
"settings.general.row.language.title": "Kieli",
"settings.general.row.language.description": "Vaihda OpenCoden näyttökieli",
"settings.general.row.shell.title": "Terminaalin komentotulkki",
"settings.general.row.shell.description": "Terminaalin ja agenttityökalujen käyttämä komentotulkki",
"settings.general.row.shell.autoDefault": "Automaattinen (oletus)",
"settings.general.row.shell.terminalOnly": "vain terminaali",
"settings.general.row.appearance.title": "Ulkonäkö",
"settings.general.row.appearance.description": "Mukauta, miltä OpenCode näyttää laitteellasi",
"settings.general.row.colorScheme.title": "Värimalli",
"settings.general.row.colorScheme.description":
"Valitse, käyttääkö OpenCode järjestelmän mukaista, vaaleaa vai tummaa teemaa",
"settings.general.row.theme.title": "Teema",
"settings.general.row.theme.description": "Mukauta OpenCoden teemaa.",
"settings.general.row.font.title": "Koodifontti",
"settings.general.row.font.description": "Mukauta koodilohkoissa käytettyä fonttia",
"settings.general.row.terminalFont.title": "Terminaalin fontti",
"settings.general.row.terminalFont.description": "Mukauta terminaalissa käytettävää fonttia",
"settings.general.row.uiFont.title": "Käyttöliittymän fontti",
"settings.general.row.uiFont.description": "Mukauta koko käyttöliittymässä käytettyä fonttia",
"settings.general.row.followup.title": "Jatkokehotteiden toiminta",
"settings.general.row.followup.description": "Valitse, ohjaavatko jatkokehotteet heti vai odottavatko ne jonossa",
"settings.general.row.followup.option.queue": "Jonota",
"settings.general.row.followup.option.steer": "Ohjaa heti",
"settings.general.row.showFileTree.title": "Tiedostopuu",
"settings.general.row.showFileTree.description": "Näytä tiedostopuupaneeli istunnoissa",
"settings.general.row.showNavigation.title": "Navigointiohjaimet",
"settings.general.row.showNavigation.description":
"Näytä taaksepäin- ja eteenpäin-painikkeet työpöydän otsikkorivillä",
"settings.general.row.showSearch.title": "Komentopaletti",
"settings.general.row.showSearch.description": "Näytä haku- ja komentopalettipainike otsikkorivillä",
"settings.general.row.showTerminal.title": "Terminaali",
"settings.general.row.showTerminal.description": "Näytä terminaalipainike työpöydän otsikkorivillä",
"settings.general.row.showStatus.title": "Palvelimen tila",
"settings.general.row.showStatus.description": "Näytä palvelimen tilapainike otsikkorivillä",
"settings.general.row.mobileTitlebarBottom.title": "Navigointi alareunassa",
"settings.general.row.mobileTitlebarBottom.description":
"Sijoita otsikkopalkki ja istuntovälilehdet mobiililaitteen näytön alareunaan",
"settings.general.row.showCustomAgents.title": "Näytä agentin valinta",
"settings.general.row.showCustomAgents.description":
"Vaihda agenttien välillä viestikentässä. Kun valinta on piilotettu, Build-agenttia käytetään oletuksena.",
"settings.general.row.reasoningSummaries.title": "Näytä päättelyn yhteenvedot",
"settings.general.row.reasoningSummaries.description": "Näytä mallin päättelyn yhteenvedot aikajanalla",
"settings.general.row.shellToolPartsExpanded.title": "Laajenna shell-työkalun osat",
"settings.general.row.shellToolPartsExpanded.description":
"Näytä shell-työkalun osat oletuksena laajennettuina aikajanalla",
"settings.general.row.editToolPartsExpanded.title": "Laajenna muokkaustyökalun osat",
"settings.general.row.editToolPartsExpanded.description":
"Näytä muokkaus-, kirjoitus- ja paikkaustyökalun osat oletusarvoisesti laajennettuina aikajanalla",
"settings.general.row.newInterface.title": "Uusi asettelu",
"settings.general.row.newInterface.badge": "Uusi",
"settings.general.row.newInterface.description":
"Käytä uusia välilehtiä ja etusivun asettelua. Vaihda asettelujen välillä rajoitetun ajan.",
"settings.general.row.newInterfaceNotice.title": "Käytät nyt uutta asettelua",
"settings.general.row.newInterfaceNotice.description": "Edellinen asettelu ei ole enää käytettävissä",
"settings.general.row.newInterfaceNotice.dismiss": "Hylkää",
"settings.general.row.pinchZoom.title": "Zoomaa nipistämällä",
"settings.general.row.pinchZoom.description": "Salli zoomaus ohjauslevyn nipistyseleellä ja Ctrl-vierityksellä",
"settings.general.row.wayland.title": "Käytä alkuperäistä Waylandia",
"settings.general.row.wayland.description":
"Poista X11-varatila käytöstä Waylandissa. Vaatii uudelleenkäynnistyksen.",
"settings.general.row.wayland.tooltip":
"Linuxissa alkuperäinen Wayland voi olla vakaampi käytettäessä näyttöjä, joiden virkistystaajuudet eroavat toisistaan.",
"settings.general.row.releaseNotes.title": "Julkaisutiedot",
"settings.general.row.releaseNotes.description": "Näytä Mitä uutta -ponnahdusikkunat päivitysten jälkeen",
"settings.updates.row.startup.title": "Tarkista päivitykset käynnistyksen yhteydessä",
"settings.updates.row.startup.description": "Tarkista päivitykset automaattisesti, kun OpenCode käynnistyy",
"settings.updates.row.check.title": "Tarkista päivitykset",
"settings.updates.row.check.description": "Tarkista päivitykset manuaalisesti ja asenna, jos niitä on saatavilla",
"settings.updates.action.checkNow": "Tarkista nyt",
"settings.updates.action.checking": "Tarkistetaan...",
"settings.updates.action.downloading": "Ladataan...",
"settings.updates.action.installing": "Asennetaan...",
"settings.updates.toast.latest.title": "Olet ajan tasalla",
"settings.updates.toast.latest.description": "Käytät OpenCoden uusinta versiota.",
"sound.option.none": "Ei mitään",
"sound.option.alert01": "Alert 01",
"sound.option.alert02": "Alert 02",
"sound.option.alert03": "Alert 03",
"sound.option.alert04": "Alert 04",
"sound.option.alert05": "Alert 05",
"sound.option.alert06": "Alert 06",
"sound.option.alert07": "Alert 07",
"sound.option.alert08": "Alert 08",
"sound.option.alert09": "Alert 09",
"sound.option.alert10": "Alert 10",
"sound.option.bipbop01": "Bip-bop 01",
"sound.option.bipbop02": "Bip-bop 02",
"sound.option.bipbop03": "Bip-bop 03",
"sound.option.bipbop04": "Bip-bop 04",
"sound.option.bipbop05": "Bip-bop 05",
"sound.option.bipbop06": "Bip-bop 06",
"sound.option.bipbop07": "Bip-bop 07",
"sound.option.bipbop08": "Bip-bop 08",
"sound.option.bipbop09": "Bip-bop 09",
"sound.option.bipbop10": "Bip-bop 10",
"sound.option.staplebops01": "Staplebops 01",
"sound.option.staplebops02": "Staplebops 02",
"sound.option.staplebops03": "Staplebops 03",
"sound.option.staplebops04": "Staplebops 04",
"sound.option.staplebops05": "Staplebops 05",
"sound.option.staplebops06": "Staplebops 06",
"sound.option.staplebops07": "Staplebops 07",
"sound.option.nope01": "Nope 01",
"sound.option.nope02": "Nope 02",
"sound.option.nope03": "Nope 03",
"sound.option.nope04": "Nope 04",
"sound.option.nope05": "Nope 05",
"sound.option.nope06": "Nope 06",
"sound.option.nope07": "Nope 07",
"sound.option.nope08": "Nope 08",
"sound.option.nope09": "Nope 09",
"sound.option.nope10": "Nope 10",
"sound.option.nope11": "Nope 11",
"sound.option.nope12": "Nope 12",
"sound.option.yup01": "Yup 01",
"sound.option.yup02": "Yup 02",
"sound.option.yup03": "Yup 03",
"sound.option.yup04": "Yup 04",
"sound.option.yup05": "Yup 05",
"sound.option.yup06": "Yup 06",
"settings.general.notifications.agent.title": "Agentti",
"settings.general.notifications.agent.description":
"Näytä järjestelmäilmoitus, kun agentti on valmis tai tarvitsee huomiota",
"settings.general.notifications.permissions.title": "Käyttöoikeudet",
"settings.general.notifications.permissions.description": "Näytä järjestelmäilmoitus, kun lupa vaaditaan",
"settings.general.notifications.errors.title": "Virheet",
"settings.general.notifications.errors.description": "Näytä järjestelmäilmoitus, kun tapahtuu virhe",
"settings.general.sounds.agent.title": "Agentti",
"settings.general.sounds.agent.description": "Toista ääni, kun agentti on valmis tai tarvitsee huomiota",
"settings.general.sounds.permissions.title": "Käyttöoikeudet",
"settings.general.sounds.permissions.description": "Toista ääni, kun vaaditaan lupa",
"settings.general.sounds.errors.title": "Virheet",
"settings.general.sounds.errors.description": "Toista ääni, kun tapahtuu virhe",
"settings.shortcuts.title": "Pikanäppäimet",
"settings.shortcuts.reset.button": "Palauta oletusasetukset",
"settings.shortcuts.reset.toast.title": "Pikanäppäimet palautettu",
"settings.shortcuts.reset.toast.description": "Pikanäppäimet on palautettu oletusasetuksiin.",
"settings.shortcuts.conflict.title": "Pikanäppäin on jo käytössä",
"settings.shortcuts.conflict.description": "{{keybind}} on jo määritetty toiminnolle {{titles}}.",
"settings.shortcuts.unassigned": "Ei määritetty",
"settings.shortcuts.pressKeys": "Paina näppäimiä",
"settings.shortcuts.search.placeholder": "Hae pikanäppäimiä",
"settings.shortcuts.search.empty": "Pikanäppäimiä ei löytynyt",
"settings.shortcuts.group.general": "Yleiset",
"settings.shortcuts.group.session": "Istunto",
"settings.shortcuts.group.navigation": "Navigointi",
"settings.shortcuts.group.modelAndAgent": "Malli ja agentti",
"settings.shortcuts.group.terminal": "Terminaali",
"settings.shortcuts.group.prompt": "Kehote",
"settings.providers.title": "Palveluntarjoajat",
"settings.providers.description": "Palveluntarjoajan asetukset voidaan määrittää täällä.",
"settings.providers.section.connected": "Yhdistetyt palveluntarjoajat",
"settings.providers.connected.empty": "Ei yhdistettyjä palveluntarjoajia",
"settings.providers.connected.environmentDescription": "Yhdistetty ympäristömuuttujien kautta",
"settings.providers.section.popular": "Suositut palveluntarjoajat",
"settings.providers.custom.description":
"Lisää OpenAI-yhteensopiva palveluntarjoaja perus-URL-osoitteen perusteella.",
"settings.providers.tag.environment": "Ympäristö",
"settings.providers.tag.config": "Määritys",
"settings.providers.tag.custom": "Mukautettu",
"settings.providers.tag.other": "Muut",
"settings.models.title": "Mallit",
"settings.models.description": "Mallin asetukset voidaan määrittää täällä.",
"settings.agents.title": "Agentit",
"settings.agents.description": "Agentin asetukset voidaan määrittää täällä.",
"settings.commands.title": "Komennot",
"settings.commands.description": "Komentoasetukset voidaan määrittää täällä.",
"settings.mcp.title": "MCP",
"settings.mcp.description": "MCP-asetukset voidaan määrittää täällä.",
"settings.permissions.title": "Käyttöoikeudet",
"settings.permissions.description": "Hallitse, mitä työkaluja palvelin voi käyttää oletuksena.",
"settings.permissions.section.tools": "Työkalut",
"settings.permissions.toast.updateFailed.title": "Käyttöoikeuksien päivittäminen epäonnistui",
"settings.permissions.action.allow": "Salli",
"settings.permissions.action.ask": "Kysy",
"settings.permissions.action.deny": "Kiellä",
"settings.permissions.tool.read.title": "Lue",
"settings.permissions.tool.read.description": "Tiedoston lukeminen (vastaa tiedostopolkua)",
"settings.permissions.tool.edit.title": "Muokkaa",
"settings.permissions.tool.edit.description":
"Tiedostojen muokkaaminen, mukaan lukien muokkaus-, kirjoitus- ja paikkaustoiminnot",
"settings.permissions.tool.glob.title": "Glob",
"settings.permissions.tool.glob.description": "Etsi glob-malleja vastaavia tiedostoja",
"settings.permissions.tool.grep.title": "Grep",
"settings.permissions.tool.grep.description": "Hae tiedostojen sisällöstä säännöllisten lausekkeiden avulla",
"settings.permissions.tool.list.title": "Luettelo",
"settings.permissions.tool.list.description": "Listaa tiedostot hakemistossa",
"settings.permissions.tool.bash.title": "Bash",
"settings.permissions.tool.bash.description": "Suorita shell-komennot",
"settings.permissions.tool.task.title": "Tehtävä",
"settings.permissions.tool.task.description": "Käynnistä aliagentit",
"settings.permissions.tool.skill.title": "Taito",
"settings.permissions.tool.skill.description": "Lataa taito nimen perusteella",
"settings.permissions.tool.lsp.title": "LSP",
"settings.permissions.tool.lsp.description": "Suorita kielipalvelinkyselyt",
"settings.permissions.tool.todowrite.title": "Tehtävälistan päivitys",
"settings.permissions.tool.todowrite.description": "Päivitä tehtävälista",
"settings.permissions.tool.webfetch.title": "Web Fetch",
"settings.permissions.tool.webfetch.description": "Nouda sisältöä URL-osoitteesta",
"settings.permissions.tool.websearch.title": "Verkkohaku",
"settings.permissions.tool.websearch.description": "Hae verkosta",
"settings.permissions.tool.external_directory.title": "Ulkoinen hakemisto",
"settings.permissions.tool.external_directory.description": "Käytä tiedostoja projektihakemiston ulkopuolella",
"settings.permissions.tool.doom_loop.title": "Doom Loop",
"settings.permissions.tool.doom_loop.description": "Tunnista toistuvat työkalukutsut samalla syötteellä",
"session.delete.failed.title": "Istunnon poistaminen epäonnistui",
"session.delete.title": "Poista istunto",
"session.delete.confirm": 'Poistetaanko istunto "{{name}}"?',
"session.delete.button": "Poista istunto",
"workspace.new": "Uusi työtila",
"workspace.type.local": "paikallinen",
"workspace.type.sandbox": "hiekkalaatikko",
"workspace.create.failed.title": "Työtilan luominen epäonnistui",
"workspace.delete.failed.title": "Työtilan poistaminen epäonnistui",
"workspace.resetting.title": "Palautetaan työtilaa",
"workspace.resetting.description": "Tämä voi kestää minuutin.",
"workspace.reset.failed.title": "Työtilan palauttaminen epäonnistui",
"workspace.reset.success.title": "Työtila palautettu",
"workspace.reset.success.description": "Työtila vastaa nyt oletushaaraa.",
"workspace.error.stillPreparing": "Työtilaa valmistellaan vielä",
"workspace.status.checking": "Tarkistetaan yhdistämättömiä muutoksia...",
"workspace.status.error": "Gitin tilaa ei voi vahvistaa.",
"workspace.status.clean": "Yhdistämättömiä muutoksia ei havaittu.",
"workspace.status.dirty": "Tässä työtilassa havaittu yhdistämättömiä muutoksia.",
"workspace.delete.title": "Poista työtila",
"workspace.delete.confirm": 'Poistetaanko työtila "{{name}}"?',
"workspace.delete.button": "Poista työtila",
"workspace.reset.title": "Palauta työtila",
"workspace.reset.confirm": 'Palautetaanko työtila "{{name}}"?',
"workspace.reset.button": "Palauta työtila",
"workspace.reset.archived.none": "Aktiivisia istuntoja ei arkistoida.",
"workspace.reset.archived.one": "1 istunto arkistoidaan.",
"workspace.reset.archived.many": "{{count}} istuntoa arkistoidaan.",
"workspace.reset.note": "Tämä palauttaa työtilan vastaamaan oletushaaraa.",
"desktop.menu.app": "OpenCode",
"desktop.menu.file": "Tiedosto",
"desktop.menu.edit": "Muokkaa",
"desktop.menu.view": "Näytä",
"desktop.menu.go": "Siirry",
"desktop.menu.window": "Ikkuna",
"desktop.menu.help": "Ohje",
"desktop.menu.checkForUpdates": "Tarkista päivitykset...",
"desktop.menu.settings": "Asetukset",
"desktop.menu.reloadWebview": "Lataa verkkonäkymä uudelleen",
"desktop.menu.restart": "Käynnistä uudelleen",
"desktop.menu.exportLogs": "Vie lokit...",
"desktop.menu.newSession": "Uusi istunto",
"desktop.menu.openProject": "Avaa projekti...",
"desktop.menu.newWindow": "Uusi ikkuna",
"desktop.menu.closeWindow": "Sulje ikkuna",
"desktop.menu.undo": "Kumoa",
"desktop.menu.redo": "Tee uudelleen",
"desktop.menu.cut": "Leikkaa",
"desktop.menu.copy": "Kopioi",
"desktop.menu.paste": "Liitä",
"desktop.menu.delete": "Poista",
"desktop.menu.selectAll": "Valitse kaikki",
"desktop.menu.toggleSidebar": "Näytä tai piilota sivupalkki",
"desktop.menu.toggleTerminal": "Näytä tai piilota terminaali",
"desktop.menu.toggleFileTree": "Näytä tai piilota tiedostopuu",
"desktop.menu.reload": "Lataa uudelleen",
"desktop.menu.toggleDeveloperTools": "Näytä tai piilota kehittäjätyökalut",
"desktop.menu.actualSize": "Todellinen koko",
"desktop.menu.zoomIn": "Lähennä",
"desktop.menu.zoomOut": "Loitonna",
"desktop.menu.toggleFullScreen": "Koko näytön tila",
"desktop.menu.back": "Takaisin",
"desktop.menu.forward": "Eteenpäin",
"desktop.menu.previousSession": "Edellinen istunto",
"desktop.menu.nextSession": "Seuraava istunto",
"desktop.menu.previousProject": "Edellinen projekti",
"desktop.menu.nextProject": "Seuraava projekti",
"desktop.menu.minimize": "Pienennä",
"desktop.menu.maximize": "Suurenna",
"desktop.menu.documentation": "OpenCode-dokumentaatio",
"desktop.menu.supportForum": "Tukifoorumi",
"desktop.menu.shareFeedback": "Anna palautetta",
"desktop.menu.reportBug": "Ilmoita ohjelmavirheestä",
"desktop.menu.ariaLabel": "OpenCode-valikko",
"desktop.updater.dialog.checkFailed.message": "Päivitysten tarkistus epäonnistui.",
"desktop.updater.dialog.checkFailed.title": "Päivitysvirhe",
"desktop.updater.dialog.upToDate.message": "Olet ajan tasalla.",
"desktop.updater.dialog.upToDate.title": "Ei päivityksiä",
"desktop.updater.dialog.ready.message": "Päivitys {{version}} on ladattu. Käynnistetäänkö nyt uudelleen?",
"desktop.updater.dialog.ready.title": "Päivitys valmis",
"desktop.updater.dialog.restart": "Käynnistä uudelleen",
"desktop.updater.dialog.later": "Myöhemmin",
"desktop.recovery.action.relaunch": "Käynnistä uudelleen",
"desktop.recovery.action.exportLogs": "Vie lokit",
"desktop.recovery.action.keepWaiting": "Jatka odottamista",
"desktop.recovery.action.quit": "Lopeta",
"desktop.recovery.loadFailed": "OpenCoden lataaminen epäonnistui",
"desktop.recovery.terminated": "OpenCode-ikkuna sulkeutui odottamatta",
"desktop.recovery.unresponsive": "OpenCode ei vastaa",
"desktop.recovery.unresponsive.detail": "Voit käynnistää sovelluksen uudelleen, avata lokit tai jatkaa odottamista.",
"desktop.recovery.loadFailed.detail": "Ikkuna: {{window}}\nURL: {{url}}\nVirhe: {{code}} {{description}}",
"desktop.recovery.terminated.detail": "Ikkuna: {{window}}\nSyy: {{reason}}\nKoodi: {{code}}",
"desktop.recovery.unknown": "<tuntematon>",
"desktop.dialog.chooseFolder": "Valitse kansio",
"desktop.dialog.chooseFile": "Valitse tiedosto",
"desktop.dialog.saveFile": "Tallenna tiedosto",
"desktop.dialog.files": "Tiedostot",
"desktop.server.local": "Paikallinen palvelin",
"desktop.wsl.error.windowsOnly": "WSL on käytettävissä vain Windowsissa",
"desktop.wsl.error.unavailable": "WSL ei ole käytettävissä",
"desktop.wsl.error.listInstalled": "Asennettujen WSL-jakelujen luettelointi epäonnistui",
"desktop.wsl.error.listOnline": "Verkossa saatavilla olevien WSL-jakelujen luettelointi epäonnistui",
"desktop.wsl.error.executeDistro": "Jakelussa ei voi suorittaa komentoja",
"desktop.wsl.error.installWsl": "WSL:n asennus epäonnistui",
"desktop.wsl.error.installDistro": "Jakelun asentaminen epäonnistui: {{distro}}",
"desktop.wsl.error.installOpencode": "OpenCoden asennus epäonnistui",
"desktop.wsl.error.alreadyAdded": "{{distro}} on jo lisätty",
"desktop.wsl.error.opencodeMissing": "opencodea ei ole asennettu tähän jakeluun",
"desktop.wsl.error.opencodeCannotRun": "opencode on asennettu, mutta sitä ei voitu suorittaa",
"desktop.wsl.error.opencodeNotInstalled": "OpenCodea ei ole asennettu jakeluun {{distro}}",
"desktop.wsl.error.updateVersion":
"OpenCoden päivitys valmistui, mutta {{distro}} ilmoittaa yhä version {{installed}}; odotettu versio on {{expected}}",
"desktop.wsl.error.noVersion": "ei versiota",
"desktop.wsl.error.serverExited": "WSL-palvelin sulkeutui käynnistyksen jälkeen (koodi={{code}} signaali={{signal}})",
"desktop.wsl.error.serverExitedBeforeHealthy":
"WSL-palvelin sulkeutui ennen toimintavalmiutta (koodi={{code}} signaali={{signal}}){{output}}",
"desktop.wsl.error.healthTimeout":
"Jakelun {{distro}} sivuprosessin kuntotarkistus aikakatkaistiin {{timeout}} ms:n jälkeen",
"desktop.wsl.error.commandTimeout": "Komento {{command}} {{args}} aikakatkaistiin {{timeout}} ms:n jälkeen",
"desktop.wsl.error.failedPort": "Portin noutaminen epäonnistui",
"desktop.picker.error.notSelected": "Tiedostovalitsimessa ei valittu tiedostoa",
"desktop.picker.error.sizeLimit": "Valitut liitteet ylittävät {{limit}} Mt:n rajan",
"command.logs.export": "Vie lokit",
"help.tabs.toast.ariaLabel": "Esittelyssä välilehdet. Järjestä työsi ja aktiiviset istuntosi välilehtien avulla",
"help.tabs.toast.dismiss": "Sulje välilehtien tiedot",
"help.tabs.title": "Esittelyssä välilehdet",
"help.tabs.description": "Järjestä työsi ja aktiiviset istuntosi välilehtien avulla",
"help.tabs.date": "14. heinäkuuta",
"help.tabs.introduction": "OpenCode Desktop perustuu nyt välilehtiin.",
"help.tabs.sessions":
"Aloita uusi istunto välilehdessä tai avaa olemassa oleva istunto mistä tahansa projektistasi. Avaa uusi välilehti, kun aloitat jotain uutta, ja sulje se, kun olet valmis.",
"help.tabs.organize":
"Muutaman välilehden pitäminen avoinna helpottaa aktiivisten istuntojen järjestämistä. Nimeä välilehdet helposti muistettaviksi, jos aiot pitää ne avoinna.",
"help.tabs.home":
"Kaikki istuntosi ja projektisi ovat uudessa etusivunäkymässä. Istunnon valitseminen avaa sen välilehteen.",
"help.tabs.persistence": "Kun avaat sovelluksen uudelleen, välilehtesi ovat yhä avoinna.",
"help.tabs.worktrees":
"Uusi ulkoasu ei vielä tue Git-työpuita, mutta tuki on tulossa pian. Jos haluat jatkaa aiemman ulkoasun käyttöä, voit vaihtaa ulkoasua asetuksissa. Huomaa kuitenkin, että uudesta ulkoasusta tulee pysyvä muutaman viikon kuluttua.",
}
+228 -88
View File
@@ -1,4 +1,104 @@
export const dict = {
"desktop.menu.app": "OpenCode",
"desktop.menu.file": "Fichier",
"desktop.menu.edit": "Édition",
"desktop.menu.view": "Affichage",
"desktop.menu.go": "Aller",
"desktop.menu.window": "Fenêtre",
"desktop.menu.help": "Aide",
"desktop.menu.checkForUpdates": "Rechercher les mises à jour...",
"desktop.menu.settings": "Paramètres",
"desktop.menu.reloadWebview": "Recharger la vue Web",
"desktop.menu.restart": "Redémarrer",
"desktop.menu.exportLogs": "Exporter les journaux...",
"desktop.menu.newSession": "Nouvelle session",
"desktop.menu.openProject": "Ouvrir un projet...",
"desktop.menu.newWindow": "Nouvelle fenêtre",
"desktop.menu.closeWindow": "Fermer la fenêtre",
"desktop.menu.undo": "Annuler",
"desktop.menu.redo": "Rétablir",
"desktop.menu.cut": "Couper",
"desktop.menu.copy": "Copier",
"desktop.menu.paste": "Coller",
"desktop.menu.delete": "Supprimer",
"desktop.menu.selectAll": "Tout sélectionner",
"desktop.menu.toggleSidebar": "Afficher ou masquer la barre latérale",
"desktop.menu.toggleTerminal": "Afficher ou masquer le terminal",
"desktop.menu.toggleFileTree": "Afficher ou masquer l'arborescence des fichiers",
"desktop.menu.reload": "Recharger",
"desktop.menu.toggleDeveloperTools": "Afficher ou masquer les outils de développement",
"desktop.menu.actualSize": "Taille réelle",
"desktop.menu.zoomIn": "Zoom avant",
"desktop.menu.zoomOut": "Zoom arrière",
"desktop.menu.toggleFullScreen": "Activer ou désactiver le mode plein écran",
"desktop.menu.back": "Précédent",
"desktop.menu.forward": "Suivant",
"desktop.menu.previousSession": "Session précédente",
"desktop.menu.nextSession": "Session suivante",
"desktop.menu.previousProject": "Projet précédent",
"desktop.menu.nextProject": "Projet suivant",
"desktop.menu.minimize": "Réduire",
"desktop.menu.maximize": "Agrandir",
"desktop.menu.documentation": "Documentation d'OpenCode",
"desktop.menu.supportForum": "Forum d'assistance",
"desktop.menu.shareFeedback": "Envoyer des commentaires",
"desktop.menu.reportBug": "Signaler un bogue",
"desktop.menu.ariaLabel": "Menu OpenCode",
"desktop.updater.dialog.checkFailed.message": "La recherche de mises à jour a échoué.",
"desktop.updater.dialog.checkFailed.title": "Erreur de mise à jour",
"desktop.updater.dialog.upToDate.message": "Vous êtes à jour.",
"desktop.updater.dialog.upToDate.title": "Aucune mise à jour",
"desktop.updater.dialog.ready.message": "La mise à jour {{version}} a été téléchargée. Redémarrer maintenant ?",
"desktop.updater.dialog.ready.title": "Mise à jour prête",
"desktop.updater.dialog.restart": "Redémarrer",
"desktop.updater.dialog.later": "Plus tard",
"desktop.recovery.action.relaunch": "Relancer",
"desktop.recovery.action.exportLogs": "Exporter les journaux",
"desktop.recovery.action.keepWaiting": "Continuer d'attendre",
"desktop.recovery.action.quit": "Quitter",
"desktop.recovery.loadFailed": "Échec du chargement d'OpenCode",
"desktop.recovery.terminated": "La fenêtre OpenCode s'est arrêtée de manière inattendue",
"desktop.recovery.unresponsive": "OpenCode ne répond pas",
"desktop.recovery.unresponsive.detail":
"Vous pouvez relancer l'application, ouvrir les journaux ou continuer d'attendre.",
"desktop.recovery.loadFailed.detail": "Fenêtre : {{window}}\nURL : {{url}}\nErreur : {{code}} {{description}}",
"desktop.recovery.terminated.detail": "Fenêtre : {{window}}\nMotif : {{reason}}\nCode : {{code}}",
"desktop.recovery.unknown": "<inconnu>",
"desktop.dialog.chooseFolder": "Sélectionner un dossier",
"desktop.dialog.chooseFile": "Sélectionner un fichier",
"desktop.dialog.saveFile": "Enregistrer le fichier",
"desktop.dialog.files": "Fichiers",
"desktop.server.local": "Serveur local",
"desktop.wsl.error.windowsOnly": "WSL est disponible uniquement sous Windows",
"desktop.wsl.error.unavailable": "WSL est indisponible",
"desktop.wsl.error.listInstalled": "Impossible de répertorier les distributions WSL installées",
"desktop.wsl.error.listOnline": "Impossible de répertorier les distributions WSL en ligne",
"desktop.wsl.error.executeDistro": "Impossible d'exécuter des commandes dans la distribution",
"desktop.wsl.error.installWsl": "Échec de l'installation de WSL",
"desktop.wsl.error.installDistro": "Échec de l'installation de la distribution : {{distro}}",
"desktop.wsl.error.installOpencode": "Échec de l'installation d'OpenCode",
"desktop.wsl.error.alreadyAdded": "{{distro}} a déjà été ajoutée",
"desktop.wsl.error.opencodeMissing": "opencode n'est pas installé dans cette distribution",
"desktop.wsl.error.opencodeCannotRun": "opencode est installé, mais n'a pas pu s'exécuter",
"desktop.wsl.error.opencodeNotInstalled": "OpenCode n'est pas installé dans {{distro}}",
"desktop.wsl.error.updateVersion":
"La mise à jour d'OpenCode est terminée, mais {{distro}} indique toujours {{installed}} au lieu de {{expected}}",
"desktop.wsl.error.noVersion": "aucune version",
"desktop.wsl.error.serverExited": "Le serveur WSL s'est arrêté après son démarrage (code={{code}} signal={{signal}})",
"desktop.wsl.error.serverExitedBeforeHealthy":
"Le serveur WSL s'est arrêté avant d'être opérationnel (code={{code}} signal={{signal}}){{output}}",
"desktop.wsl.error.healthTimeout":
"La vérification de l'état du processus auxiliaire pour {{distro}} a dépassé le délai de {{timeout}} ms",
"desktop.wsl.error.commandTimeout": "{{command}} {{args}} a dépassé le délai de {{timeout}} ms",
"desktop.wsl.error.failedPort": "Impossible d'obtenir le port",
"desktop.picker.error.notSelected": "Aucun fichier n'a été sélectionné dans le sélecteur",
"desktop.picker.error.sizeLimit": "Les pièces jointes sélectionnées dépassent la limite de {{limit}} Mo",
"command.category.suggested": "Suggéré",
"command.category.view": "Affichage",
"command.category.project": "Projet",
@@ -16,6 +116,7 @@ export const dict = {
"command.category.permissions": "Permissions",
"command.category.workspace": "Espace de travail",
"command.category.settings": "Paramètres",
"command.logs.export": "Exporter les journaux",
"theme.scheme.system": "Système",
"theme.scheme.light": "Clair",
"theme.scheme.dark": "Sombre",
@@ -29,8 +130,8 @@ export const dict = {
"command.settings.open": "Ouvrir les paramètres",
"command.session.previous": "Session précédente",
"command.session.next": "Session suivante",
"command.session.previous.unseen": "Session non lue précédente",
"command.session.next.unseen": "Session non lue suivante",
"command.session.previous.unseen": "Session précédente non lue",
"command.session.next.unseen": "Session suivante non lue",
"command.session.archive": "Archiver la session",
"command.palette": "Palette de commandes",
"command.theme.cycle": "Changer de thème",
@@ -45,7 +146,7 @@ export const dict = {
"command.tab.reopenClosed": "Rouvrir l'onglet fermé",
"command.context.addSelection": "Ajouter la sélection au contexte",
"command.context.addSelection.description": "Ajouter les lignes sélectionnées du fichier actuel",
"command.input.focus": "Focus sur l'entrée",
"command.input.focus": "Activer la zone de saisie",
"command.terminal.toggle": "Basculer le terminal",
"command.fileTree.toggle": "Basculer l'arborescence des fichiers",
"command.review.toggle": "Basculer la revue",
@@ -59,8 +160,8 @@ export const dict = {
"command.message.next.description": "Aller au message utilisateur suivant",
"command.model.choose": "Choisir le modèle",
"command.model.choose.description": "Sélectionner un modèle différent",
"command.mcp.toggle": "Basculer MCP",
"command.mcp.toggle.description": "Basculer les MCPs",
"command.mcp.toggle": "Activer ou désactiver les MCP",
"command.mcp.toggle.description": "Activer ou désactiver les MCP",
"command.agent.cycle": "Changer d'agent",
"command.agent.cycle.description": "Passer à l'agent suivant",
"command.agent.cycle.reverse": "Changer d'agent (inverse)",
@@ -68,7 +169,7 @@ export const dict = {
"command.model.variant.cycle": "Changer l'effort de réflexion",
"command.model.variant.cycle.description": "Passer au niveau d'effort suivant",
"command.prompt.mode.shell": "Shell",
"command.prompt.mode.normal": "Prompt",
"command.prompt.mode.normal": "Invite",
"command.permissions.autoaccept.enable": "Accepter automatiquement les permissions",
"command.permissions.autoaccept.disable": "Arrêter d'accepter automatiquement les permissions",
"command.workspace.toggle": "Basculer les espaces de travail",
@@ -92,8 +193,9 @@ export const dict = {
"palette.group.files": "Fichiers",
"dialog.provider.search.placeholder": "Rechercher des fournisseurs",
"dialog.provider.empty": "Aucun fournisseur trouvé",
"dialog.provider.group.popular": "Populaire",
"dialog.provider.group.other": "Autre",
"dialog.provider.group.popular": "Populaires",
"dialog.provider.group.other": "Autres",
"dialog.provider.custom.label": "Fournisseur personnalisé compatible avec OpenAI",
"dialog.provider.tag.recommended": "Recommandé",
"dialog.provider.opencode.note": "Modèles sélectionnés incluant Claude, GPT, Gemini et plus",
"dialog.provider.opencode.tagline": "Modèles optimisés et fiables",
@@ -109,14 +211,17 @@ export const dict = {
"dialog.model.empty": "Aucun résultat de modèle",
"dialog.model.manage": "Gérer les modèles",
"dialog.model.manage.description": "Personnalisez les modèles qui apparaissent dans le sélecteur.",
"dialog.model.manage.provider.toggle": "Basculer tous les modèles {{provider}}",
"dialog.model.manage.provider.toggle": "Activer ou désactiver tous les modèles {{provider}}",
"dialog.model.unpaid.freeModels.title": "Modèles gratuits fournis par OpenCode",
"dialog.model.unpaid.addMore.title": "Ajouter plus de modèles de fournisseurs populaires",
"dialog.model.unpaid.viewMoreProviders": "Voir plus de 70 autres fournisseurs",
"dialog.provider.viewAll": "Voir plus de fournisseurs",
"provider.connect.title": "Connecter {{provider}}",
"provider.connect.title.anthropicProMax": "Connexion avec Claude Pro/Max",
"provider.connect.selectMethod": "Sélectionnez la méthode de connexion pour {{provider}}.",
"provider.connect.method.apiKey": "Clé API",
"provider.connect.method.browser": "Navigateur",
"provider.connect.method.headless": "Mode headless",
"provider.connect.status.inProgress": "Autorisation en cours...",
"provider.connect.status.waiting": "En attente d'autorisation...",
"provider.connect.status.failed": "Échec de l'autorisation : {{error}}",
@@ -148,19 +253,22 @@ export const dict = {
"provider.connect.toast.connected.title": "{{provider}} connecté",
"provider.connect.toast.connected.description": "Les modèles {{provider}} sont maintenant disponibles.",
"provider.custom.title": "Fournisseur personnalisé",
"provider.custom.description.prefix": "Configurer un fournisseur compatible OpenAI. Voir la ",
"provider.custom.description.link": "doc de config fournisseur",
"provider.custom.unavailable": "Les fournisseurs personnalisés ne sont pas disponibles sur ce serveur",
"provider.custom.description.prefix": "Configurez un fournisseur compatible avec OpenAI. Consultez la ",
"provider.custom.description.link": "documentation sur la configuration des fournisseurs",
"provider.custom.description.suffix": ".",
"provider.custom.field.providerID.label": "ID du fournisseur",
"provider.custom.field.providerID.placeholder": "monfournisseur",
"provider.custom.field.providerID.description": "Lettres minuscules, chiffres, traits d'union ou tirets bas",
"provider.custom.field.providerID.description":
"Lettres minuscules, chiffres, traits d'union ou traits de soulignement",
"provider.custom.field.name.label": "Nom d'affichage",
"provider.custom.field.name.placeholder": "Mon fournisseur IA",
"provider.custom.field.baseURL.label": "URL de base",
"provider.custom.field.baseURL.placeholder": "https://api.monfournisseur.com/v1",
"provider.custom.field.apiKey.label": "Clé API",
"provider.custom.field.apiKey.placeholder": "Clé API",
"provider.custom.field.apiKey.description": "Optionnel. Laisser vide si vous gérez l'auth via les en-têtes.",
"provider.custom.field.apiKey.description":
"Facultatif. Laissez ce champ vide si vous gérez l'authentification au moyen des en-têtes.",
"provider.custom.models.label": "Modèles",
"provider.custom.models.id.label": "ID",
"provider.custom.models.id.placeholder": "id-modele",
@@ -176,7 +284,8 @@ export const dict = {
"provider.custom.headers.remove": "Supprimer l'en-tête",
"provider.custom.headers.add": "Ajouter un en-tête",
"provider.custom.error.providerID.required": "L'ID du fournisseur est requis",
"provider.custom.error.providerID.format": "Utilisez des lettres minuscules, chiffres, traits d'union ou tirets bas",
"provider.custom.error.providerID.format":
"Utilisez des lettres minuscules, des chiffres, des traits d'union ou des traits de soulignement",
"provider.custom.error.providerID.exists": "Cet ID de fournisseur existe déjà",
"provider.custom.error.name.required": "Le nom d'affichage est requis",
"provider.custom.error.baseURL.required": "L'URL de base est requise",
@@ -186,7 +295,7 @@ export const dict = {
"provider.disconnect.toast.disconnected.title": "{{provider}} déconnecté",
"provider.disconnect.toast.disconnected.description": "Les modèles {{provider}} ne sont plus disponibles.",
"model.tag.free": "Gratuit",
"model.tag.latest": "Dernier",
"model.tag.latest": "Le plus récent",
"model.provider.anthropic": "Anthropic",
"model.provider.openai": "OpenAI",
"model.provider.google": "Google",
@@ -197,29 +306,29 @@ export const dict = {
"model.input.audio": "audio",
"model.input.video": "vidéo",
"model.input.pdf": "pdf",
"model.tooltip.allows": "Autorise : {{inputs}}",
"model.tooltip.allows": "Formats pris en charge : {{inputs}}",
"model.tooltip.context.label": "Contexte",
"model.tooltip.inputs": "Entrées",
"model.tooltip.model": "Modèle",
"model.tooltip.provider": "Fournisseur",
"model.tooltip.reasoning": "Raisonnement",
"model.tooltip.reasoning.allowed": "Autorise le raisonnement",
"model.tooltip.reasoning.allowed": "Raisonnement pris en charge",
"model.tooltip.reasoning.none": "Sans raisonnement",
"model.tooltip.context": "Limite de contexte {{limit}}",
"common.search.placeholder": "Rechercher",
"common.goBack": "Retour",
"common.goForward": "Avancer",
"common.goForward": "Suivant",
"common.loading": "Chargement",
"common.loading.ellipsis": "...",
"common.cancel": "Annuler",
"common.clear": "Effacer",
"common.connect": "Connecter",
"common.disconnect": "Déconnecter",
"common.continue": "Soumettre",
"common.continue": "Continuer",
"common.submit": "Soumettre",
"common.save": "Enregistrer",
"common.saving": "Enregistrement...",
"common.default": "Défaut",
"common.default": "Par défaut",
"common.attachment": "pièce jointe",
"prompt.placeholder.shell": "Entrez une commande shell... {{example}}",
"prompt.placeholder.normal": 'Demandez n\'importe quoi... "{{example}}"',
@@ -227,8 +336,8 @@ export const dict = {
"prompt.placeholder.summarizeComments": "Résumer les commentaires…",
"prompt.placeholder.summarizeComment": "Résumer le commentaire…",
"prompt.mode.shell": "Shell",
"prompt.mode.normal": "Prompt",
"prompt.mode.shell.exit": "esc pour quitter",
"prompt.mode.normal": "Invite",
"prompt.mode.shell.exit": "Échap pour quitter",
"session.child.promptDisabled": "Les sessions de sous-agents ne peuvent pas recevoir de messages.",
"session.child.backToParent": "Revenir à la session principale.",
"prompt.example.1": "Corriger un TODO dans la base de code",
@@ -237,7 +346,7 @@ export const dict = {
"prompt.example.4": "Expliquer comment fonctionne l'authentification",
"prompt.example.5": "Trouver et corriger les vulnérabilités de sécurité",
"prompt.example.6": "Ajouter des tests unitaires pour le service utilisateur",
"prompt.example.7": "Refactoriser cette fonction pour être plus lisible",
"prompt.example.7": "Refactoriser cette fonction pour la rendre plus lisible",
"prompt.example.8": "Que signifie cette erreur ?",
"prompt.example.9": "Aidez-moi à déboguer ce problème",
"prompt.example.10": "Générer la documentation de l'API",
@@ -245,11 +354,11 @@ export const dict = {
"prompt.example.12": "Ajouter une validation d'entrée",
"prompt.example.13": "Créer un nouveau composant pour...",
"prompt.example.14": "Comment déployer ce projet ?",
"prompt.example.15": "Vérifier mon code pour les meilleures pratiques",
"prompt.example.15": "Vérifier que mon code respecte les bonnes pratiques",
"prompt.example.16": "Ajouter la gestion des erreurs à cette fonction",
"prompt.example.17": "Expliquer ce modèle regex",
"prompt.example.17": "Expliquer cette expression régulière",
"prompt.example.18": "Convertir ceci en TypeScript",
"prompt.example.19": "Ajouter des logs dans toute la base de code",
"prompt.example.19": "Ajouter une journalisation dans toute la base de code",
"prompt.example.20": "Quelles dépendances sont obsolètes ?",
"prompt.example.21": "Aidez-moi à écrire un script de migration",
"prompt.example.22": "Implémenter la mise en cache pour ce point de terminaison",
@@ -261,7 +370,7 @@ export const dict = {
"prompt.dropzone.label": "Déposez des images, des PDF ou des fichiers texte ici",
"prompt.dropzone.file.label": "Déposez pour @mentionner le fichier",
"prompt.slash.badge.custom": "personnalisé",
"prompt.slash.badge.skill": "skill",
"prompt.slash.badge.skill": "compétence",
"prompt.slash.badge.mcp": "mcp",
"prompt.context.active": "actif",
"prompt.context.includeActiveFile": "Inclure le fichier actif",
@@ -281,21 +390,21 @@ export const dict = {
"prompt.toast.pasteUnsupported.description":
"Seules les images, les PDF ou les fichiers texte peuvent être joints ici.",
"prompt.toast.modelAgentRequired.title": "Sélectionnez un agent et un modèle",
"prompt.toast.modelAgentRequired.description": "Choisissez un agent et un modèle avant d'envoyer un message.",
"prompt.toast.modelAgentRequired.description": "Choisissez un agent et un modèle avant d'envoyer une invite.",
"prompt.toast.worktreeCreateFailed.title": "Échec de la création de l'arbre de travail",
"prompt.toast.sessionCreateFailed.title": "Échec de la création de la session",
"prompt.toast.shellSendFailed.title": "Échec de l'envoi de la commande shell",
"prompt.toast.commandSendFailed.title": "Échec de l'envoi de la commande",
"prompt.toast.promptSendFailed.title": "Échec de l'envoi du message",
"prompt.toast.promptSendFailed.title": "Échec de l'envoi de l'invite",
"prompt.toast.promptSendFailed.description": "Impossible de récupérer la session",
"dialog.mcp.title": "MCPs",
"dialog.mcp.description": "{{enabled}} sur {{total}} activés",
"dialog.mcp.title": "MCP",
"dialog.mcp.description": "MCP actifs : {{enabled}} sur {{total}}",
"dialog.mcp.empty": "Aucun MCP configuré",
"dialog.lsp.empty": "LSPs détectés automatiquement par type de fichier",
"dialog.plugins.empty": "Plugins configurés dans opencode.json",
"dialog.lsp.empty": "Serveurs LSP détectés automatiquement selon le type de fichier",
"dialog.plugins.empty": "Extensions configurées dans opencode.json",
"mcp.status.connected": "connecté",
"mcp.status.failed": "échoué",
"mcp.status.needs_auth": "nécessite auth",
"mcp.status.failed": "en échec",
"mcp.status.needs_auth": "authentification requise",
"mcp.auth.clickToAuthenticate": "Cliquez pour vous authentifier",
"mcp.status.disabled": "désactivé",
"dialog.fork.empty": "Aucun message à partir duquel bifurquer",
@@ -330,7 +439,7 @@ export const dict = {
"dialog.server.action.remove": "Supprimer le serveur",
"dialog.server.menu.edit": "Modifier",
"dialog.server.menu.default": "Définir par défaut",
"dialog.server.menu.defaultRemove": "Supprimer par défaut",
"dialog.server.menu.defaultRemove": "Ne plus utiliser par défaut",
"dialog.server.menu.delete": "Supprimer",
"dialog.server.current": "Serveur actuel",
"dialog.server.status.default": "Défaut",
@@ -400,9 +509,25 @@ export const dict = {
"wsl.onboarding.notFound": "introuvable",
"wsl.onboarding.version": "Version : {{version}}",
"wsl.onboarding.unknown": "inconnue",
"wsl.onboarding.desktopVersion": "desktop {{version}}",
"wsl.onboarding.versionMismatch": "La version installée ne correspond pas à celle de l'application desktop.",
"wsl.onboarding.desktopVersion": "application de bureau {{version}}",
"wsl.onboarding.versionMismatch": "La version installée ne correspond pas à celle de l'application de bureau.",
"wsl.onboarding.adding": "Ajout...",
"help.tabs.toast.ariaLabel":
"Présentation des onglets. Organisez votre travail et vos sessions actives à l'aide d'onglets",
"help.tabs.toast.dismiss": "Ignorer les informations sur les onglets",
"help.tabs.title": "Présentation des onglets",
"help.tabs.description": "Organisez votre travail et vos sessions actives à l'aide d'onglets",
"help.tabs.date": "14 juillet",
"help.tabs.introduction": "OpenCode Desktop s'articule désormais autour d'onglets.",
"help.tabs.sessions":
"Démarrez une nouvelle session dans un onglet ou ouvrez une session existante depuis l'un de vos projets. Ouvrez un nouvel onglet lorsque vous commencez une nouvelle tâche et fermez-le une fois celle-ci terminée.",
"help.tabs.organize":
"Garder quelques onglets ouverts facilite l'organisation de vos sessions actives. Si vous comptez les conserver, renommez-les pour pouvoir les reconnaître facilement.",
"help.tabs.home":
"Vous trouverez toutes vos sessions et tous vos projets sur le nouvel écran d'accueil. La sélection d'une session l'ouvre dans un onglet.",
"help.tabs.persistence": "Lorsque vous rouvrez l'application, vos onglets sont toujours ouverts.",
"help.tabs.worktrees":
"La nouvelle interface ne prend pas encore en charge les arbres de travail Git, mais cette fonctionnalité sera bientôt disponible. Si vous préférez continuer à utiliser la mise en page précédente, vous pouvez changer de mise en page dans les paramètres. N'oubliez pas que la nouvelle mise en page deviendra définitive dans quelques semaines.",
"dialog.project.edit.title": "Modifier le projet",
"dialog.project.edit.name": "Nom",
"dialog.project.edit.icon": "Icône",
@@ -417,13 +542,13 @@ export const dict = {
"dialog.project.edit.worktree.startup.placeholder": "p. ex. bun install",
"context.breakdown.title": "Répartition du contexte",
"context.breakdown.note":
"Répartition approximative des jetons d'entrée. \"Autre\" inclut les définitions d'outils et les frais généraux.",
"Répartition approximative des jetons d'entrée. \"Autre\" inclut les définitions d'outils et les données annexes.",
"context.breakdown.system": "Système",
"context.breakdown.user": "Utilisateur",
"context.breakdown.assistant": "Assistant",
"context.breakdown.tool": "Appels d'outils",
"context.breakdown.other": "Autre",
"context.systemPrompt.title": "Prompt système",
"context.systemPrompt.title": "Invite système",
"context.rawMessages.title": "Messages bruts",
"context.stats.session": "Session",
"context.stats.messages": "Messages",
@@ -437,7 +562,7 @@ export const dict = {
"context.stats.reasoningTokens": "Jetons de raisonnement",
"context.stats.cacheTokens": "Jetons de cache (lecture/écriture)",
"context.stats.userMessages": "Messages utilisateur",
"context.stats.assistantMessages": "Messages assistant",
"context.stats.assistantMessages": "Messages de l'assistant",
"context.stats.totalCost": "Coût total",
"context.stats.sessionCreated": "Session créée",
"context.stats.lastActivity": "Dernière activité",
@@ -465,16 +590,16 @@ export const dict = {
"language.th": "ไทย",
"language.tr": "Türkçe",
"toast.language.title": "Langue",
"toast.language.description": "Passé à {{language}}",
"toast.language.description": "Langue définie sur {{language}}",
"toast.theme.title": "Thème changé",
"toast.scheme.title": "Schéma de couleurs",
"toast.workspace.enabled.title": "Espaces de travail activés",
"toast.workspace.enabled.description": "Plusieurs worktrees sont désormais affichés dans la barre latérale",
"toast.workspace.enabled.description": "Plusieurs arbres de travail sont désormais affichés dans la barre latérale",
"toast.workspace.disabled.title": "Espaces de travail désactivés",
"toast.workspace.disabled.description": "Seul le worktree principal est affiché dans la barre latérale",
"toast.workspace.disabled.description": "Seul l'arbre de travail principal est affiché dans la barre latérale",
"toast.permissions.autoaccept.on.title": "Acceptation automatique des permissions",
"toast.permissions.autoaccept.on.description": "Les demandes de permission seront approuvées automatiquement",
"toast.permissions.autoaccept.off.title": "Acceptation automatique des permissions arrêtée",
"toast.permissions.autoaccept.off.title": "Acceptation automatique des permissions désactivée",
"toast.permissions.autoaccept.off.description": "Les demandes de permission nécessiteront une approbation",
"toast.model.none.title": "Aucun modèle sélectionné",
"toast.model.none.description": "Connectez un fournisseur pour résumer cette session",
@@ -487,17 +612,18 @@ export const dict = {
"toast.session.share.success.description": "URL de partage copiée dans le presse-papiers !",
"toast.session.share.failed.title": "Échec du partage de la session",
"toast.session.share.failed.description": "Une erreur s'est produite lors du partage de la session",
"toast.session.unshare.success.title": "Session non partagée",
"toast.session.unshare.success.description": "Session non partagée avec succès !",
"toast.session.unshare.failed.title": "Échec de l'annulation du partage",
"toast.session.unshare.failed.description": "Une erreur s'est produite lors de l'annulation du partage de la session",
"toast.session.unshare.success.title": "Partage de la session désactivé",
"toast.session.unshare.success.description": "Le partage de la session a bien été désactivé.",
"toast.session.unshare.failed.title": "Échec de la désactivation du partage",
"toast.session.unshare.failed.description":
"Une erreur s'est produite lors de la désactivation du partage de la session",
"toast.session.listFailed.title": "Échec du chargement des sessions pour {{project}}",
"toast.update.title": "Mise à jour disponible",
"toast.update.description":
"Une nouvelle version d'OpenCode ({{version}}) est maintenant disponible pour installation.",
"toast.update.action.installRestart": "Installer et redémarrer",
"toast.update.action.notYet": "Pas encore",
"error.page.title": "Quelque chose s'est mal passé",
"toast.update.action.notYet": "Plus tard",
"error.page.title": "Un problème est survenu",
"error.page.description": "Une erreur s'est produite lors du chargement de l'application.",
"error.page.description.localServerStartup": "Une erreur s'est produite lors du démarrage du serveur local.",
"error.page.details.label": "Détails de l'erreur",
@@ -520,13 +646,13 @@ export const dict = {
"error.chain.causedBy": "Causé par :",
"error.chain.apiError": "Erreur API",
"error.chain.status": "Statut : {{status}}",
"error.chain.retryable": "Réessayable : {{retryable}}",
"error.chain.retryable": "Nouvelle tentative possible : {{retryable}}",
"error.chain.responseBody": "Corps de la réponse :\n{{body}}",
"error.chain.didYouMean": "Vouliez-vous dire : {{suggestions}}",
"error.chain.modelNotFound": "Modèle introuvable : {{provider}}/{{model}}",
"error.chain.checkConfig": "Vérifiez votre configuration (opencode.json) pour les noms de fournisseur/modèle",
"error.chain.checkConfig": "Vérifiez les noms de fournisseur et de modèle dans votre configuration (opencode.json)",
"error.chain.mcpFailed":
"Le serveur MCP \"{{name}}\" a échoué. Notez qu'OpenCode ne supporte pas encore l'authentification MCP.",
"Le serveur MCP \"{{name}}\" a échoué. Notez qu'OpenCode ne prend pas encore en charge l'authentification MCP.",
"error.chain.providerAuthFailed": "Échec de l'authentification du fournisseur ({{provider}}) : {{message}}",
"error.chain.providerInitFailed":
'Échec de l\'initialisation du fournisseur "{{provider}}". Vérifiez les identifiants et la configuration.',
@@ -535,7 +661,7 @@ export const dict = {
"Le fichier de configuration à {{path}} n'est pas un JSON(C) valide : {{message}}",
"error.chain.configDirectoryTypo":
'Le répertoire "{{dir}}" dans {{path}} n\'est pas valide. Renommez le répertoire en "{{suggestion}}" ou supprimez-le. C\'est une faute de frappe courante.',
"error.chain.configFrontmatterError": "Échec de l'analyse du frontmatter dans {{path}} :\n{{message}}",
"error.chain.configFrontmatterError": "Échec de l'analyse de l'en-tête dans {{path}} :\n{{message}}",
"error.chain.configInvalid": "Le fichier de configuration à {{path}} est invalide",
"error.chain.configInvalidWithMessage": "Le fichier de configuration à {{path}} est invalide : {{message}}",
"notification.permission.title": "Permission requise",
@@ -583,7 +709,7 @@ export const dict = {
"session.review.noChanges": "Aucune modification",
"session.review.noUncommittedChanges": "Aucune modification non validée pour l'instant",
"session.review.noBranchChanges": "Aucune modification de branche pour l'instant",
"session.review.noVcs": "Aucun système de contrôle de version Git détecté, modifications non affichées",
"session.review.noVcs": "Aucun système de gestion de versions Git détecté ; modifications non affichées",
"session.review.noSnapshot":
"Le suivi des instantanés est désactivé dans la configuration, les modifications de session sont donc indisponibles",
"session.files.selectToOpen": "Sélectionnez un fichier à ouvrir",
@@ -594,7 +720,7 @@ export const dict = {
"session.messages.loadingEarlier": "Chargement des messages précédents...",
"session.messages.loadEarlier": "Charger les messages précédents",
"session.messages.loading": "Chargement des messages...",
"session.messages.jumpToLatest": "Aller au dernier",
"session.messages.jumpToLatest": "Aller au message le plus récent",
"session.context.addToContext": "Ajouter {{selection}} au contexte",
"session.todo.title": "Tâches",
"session.todo.collapse": "Réduire",
@@ -602,14 +728,17 @@ export const dict = {
"session.question.minimize": "Réduire la question",
"session.question.restore": "Restaurer la question",
"session.question.pending.one": "{{count}} question en attente",
"session.question.pending.many": "{{count}} de questions en attente",
"session.question.pending.other": "{{count}} questions en attente",
"session.followupDock.summary.one": "{{count}} message en file d'attente",
"session.followupDock.summary.many": "{{count}} de messages en file d'attente",
"session.followupDock.summary.other": "{{count}} messages en file d'attente",
"session.followupDock.sendNow": "Envoyer maintenant",
"session.followupDock.edit": "Modifier",
"session.followupDock.collapse": "Réduire les messages en file d'attente",
"session.followupDock.expand": "Développer les messages en file d'attente",
"session.revertDock.summary.one": "{{count}} message annulé",
"session.revertDock.summary.many": "{{count}} de messages annulés",
"session.revertDock.summary.other": "{{count}} messages annulés",
"session.revertDock.collapse": "Réduire les messages annulés",
"session.revertDock.expand": "Développer les messages annulés",
@@ -635,17 +764,17 @@ export const dict = {
"session.header.open.menu": "Options d'ouverture",
"session.header.open.copyPath": "Copier le chemin",
"status.popover.trigger": "Statut",
"status.popover.ariaLabel": "Configurations des serveurs",
"status.popover.ariaLabel": "Configuration des serveurs",
"status.popover.tab.servers": "Serveurs",
"status.popover.tab.mcp": "MCP",
"status.popover.tab.lsp": "LSP",
"status.popover.tab.plugins": "Plugins",
"status.popover.action.manageServers": "Gérer les serveurs",
"session.share.popover.title": "Publier sur le web",
"session.share.popover.title": "Publier sur le Web",
"session.share.popover.description.shared":
"Cette session est publique sur le web. Elle est accessible à toute personne disposant du lien.",
"Cette session est publique sur le Web. Elle est accessible à toute personne disposant du lien.",
"session.share.popover.description.unshared":
"Partager la session publiquement sur le web. Elle sera accessible à toute personne disposant du lien.",
"Rendre la session publique sur le Web. Elle sera accessible à toute personne disposant du lien.",
"session.share.action.share": "Partager",
"session.share.action.publish": "Publier",
"session.share.action.publishing": "Publication...",
@@ -656,7 +785,7 @@ export const dict = {
"session.share.copy.copyLink": "Copier le lien",
"lsp.tooltip.none": "Aucun serveur LSP",
"lsp.label.connected": "{{count}} LSP",
"prompt.loading": "Chargement du prompt...",
"prompt.loading": "Chargement de l'invite...",
"terminal.loading": "Chargement du terminal...",
"terminal.title": "Terminal",
"terminal.title.numbered": "Terminal {{number}}",
@@ -694,7 +823,7 @@ export const dict = {
"sidebar.empty.title": "Aucun projet ouvert",
"sidebar.empty.description": "Ouvrez un projet pour commencer",
"app.name.desktop": "OpenCode Desktop",
"settings.section.desktop": "Bureau",
"settings.section.desktop": "Application de bureau",
"settings.section.server": "Serveur",
"settings.tab.general": "Général",
"settings.tab.shortcuts": "Raccourcis",
@@ -710,10 +839,10 @@ export const dict = {
"settings.general.section.display": "Affichage",
"settings.general.row.language.title": "Langue",
"settings.general.row.language.description": "Changer la langue d'affichage pour OpenCode",
"settings.general.row.shell.title": "Shell du terminal",
"settings.general.row.shell.title": "Interpréteur de commandes du terminal",
"settings.general.row.shell.description":
"Choisissez le shell utilisé par votre terminal. Les shells compatibles sont également utilisés pour les appels d'outils de l'agent.",
"settings.general.row.shell.autoDefault": "Auto (par défaut)",
"settings.general.row.shell.autoDefault": "Automatique (par défaut)",
"settings.general.row.shell.terminalOnly": "terminal uniquement",
"settings.general.row.appearance.title": "Apparence",
"settings.general.row.appearance.description": "Personnaliser l'apparence d'OpenCode sur votre appareil",
@@ -727,22 +856,22 @@ export const dict = {
"settings.general.row.terminalFont.description": "Personnalisez la police utilisée dans le terminal",
"settings.general.row.uiFont.title": "Police de l'interface",
"settings.general.row.uiFont.description": "Personnaliser la police utilisée dans toute l'interface",
"settings.general.row.followup.title": "Comportement de suivi",
"settings.general.row.followup.title": "Comportement des messages de suivi",
"settings.general.row.followup.description":
"Choisissez si les messages de suivi dirigent immédiatement ou attendent dans une file d'attente",
"Choisissez si les messages de suivi orientent immédiatement l'agent ou sont placés dans une file d'attente",
"settings.general.row.followup.option.queue": "File d'attente",
"settings.general.row.followup.option.steer": "Diriger",
"settings.general.row.followup.option.steer": "Orienter",
"settings.general.row.showFileTree.title": "Arborescence des fichiers",
"settings.general.row.showFileTree.description": "Afficher le panneau d'arborescence des fichiers dans les sessions",
"settings.general.row.showNavigation.title": "Commandes de navigation",
"settings.general.row.showNavigation.description":
"Afficher les boutons précédent et suivant dans la barre de titre de l'application desktop",
"Afficher les boutons précédent et suivant dans la barre de titre de l'application de bureau",
"settings.general.row.showSearch.title": "Palette de commandes",
"settings.general.row.showSearch.description":
"Afficher le bouton de recherche et de palette de commandes dans la barre de titre",
"settings.general.row.showTerminal.title": "Terminal",
"settings.general.row.showTerminal.description":
"Afficher le bouton du terminal dans la barre de titre de l'application desktop",
"Afficher le bouton du terminal dans la barre de titre de l'application de bureau",
"settings.general.row.showStatus.title": "État du serveur",
"settings.general.row.showStatus.description": "Afficher le bouton d'état du serveur dans la barre de titre",
"settings.general.row.mobileTitlebarBottom.title": "Navigation en bas",
@@ -774,11 +903,13 @@ export const dict = {
"settings.general.row.wayland.tooltip":
"Sur Linux avec des moniteurs à taux de rafraîchissement mixte, Wayland natif peut être plus stable.",
"settings.general.row.releaseNotes.title": "Notes de version",
"settings.general.row.releaseNotes.description": 'Afficher des pop-ups "Quoi de neuf" après les mises à jour',
"settings.general.row.releaseNotes.description":
"Afficher les fenêtres contextuelles « Quoi de neuf » après les mises à jour",
"settings.updates.row.startup.title": "Vérifier les mises à jour au démarrage",
"settings.updates.row.startup.description": "Vérifier automatiquement les mises à jour au lancement d'OpenCode",
"settings.updates.row.check.title": "Vérifier les mises à jour",
"settings.updates.row.check.description": "Vérifier manuellement les mises à jour et installer si disponible",
"settings.updates.row.check.description":
"Rechercher manuellement les mises à jour et installer toute mise à jour disponible",
"settings.updates.action.checkNow": "Vérifier maintenant",
"settings.updates.action.checking": "Vérification...",
"settings.updates.action.downloading": "Téléchargement...",
@@ -846,12 +977,12 @@ export const dict = {
"settings.general.sounds.errors.title": "Erreurs",
"settings.general.sounds.errors.description": "Jouer un son lorsqu'une erreur se produit",
"settings.shortcuts.title": "Raccourcis clavier",
"settings.shortcuts.reset.button": "Rétablir les défauts",
"settings.shortcuts.reset.button": "Rétablir les valeurs par défaut",
"settings.shortcuts.reset.toast.title": "Raccourcis réinitialisés",
"settings.shortcuts.reset.toast.description": "Les raccourcis clavier ont été réinitialisés aux valeurs par défaut.",
"settings.shortcuts.conflict.title": "Raccourci déjà utilisé",
"settings.shortcuts.conflict.description": "{{keybind}} est déjà assigné à {{titles}}.",
"settings.shortcuts.unassigned": "Non assigné",
"settings.shortcuts.conflict.description": "{{keybind}} est déjà attribué à {{titles}}.",
"settings.shortcuts.unassigned": "Non attribué",
"settings.shortcuts.pressKeys": "Appuyez sur les touches",
"settings.shortcuts.search.placeholder": "Rechercher des raccourcis",
"settings.shortcuts.search.empty": "Aucun raccourci trouvé",
@@ -860,7 +991,7 @@ export const dict = {
"settings.shortcuts.group.navigation": "Navigation",
"settings.shortcuts.group.modelAndAgent": "Modèle et agent",
"settings.shortcuts.group.terminal": "Terminal",
"settings.shortcuts.group.prompt": "Prompt",
"settings.shortcuts.group.prompt": "Invite",
"settings.providers.title": "Fournisseurs",
"settings.providers.description": "Les paramètres des fournisseurs seront configurables ici.",
"settings.providers.section.connected": "Fournisseurs connectés",
@@ -889,9 +1020,9 @@ export const dict = {
"settings.permissions.tool.read.description": "Lecture d'un fichier (correspond au chemin du fichier)",
"settings.permissions.tool.edit.title": "Modifier",
"settings.permissions.tool.edit.description":
"Modifier des fichiers, y compris les modifications, écritures, patchs et multi-modifications",
"Modifier des fichiers, notamment au moyen des outils edit, write et patch",
"settings.permissions.tool.glob.title": "Glob",
"settings.permissions.tool.glob.description": "Correspondre aux fichiers utilisant des modèles glob",
"settings.permissions.tool.glob.description": "Rechercher des fichiers à l'aide de motifs glob",
"settings.permissions.tool.grep.title": "Grep",
"settings.permissions.tool.grep.description":
"Rechercher dans le contenu des fichiers à l'aide d'expressions régulières",
@@ -905,12 +1036,12 @@ export const dict = {
"settings.permissions.tool.skill.description": "Charger une compétence par son nom",
"settings.permissions.tool.lsp.title": "LSP",
"settings.permissions.tool.lsp.description": "Exécuter des requêtes de serveur de langage",
"settings.permissions.tool.todowrite.title": "Écrire Todo",
"settings.permissions.tool.todowrite.title": "Écrire les tâches",
"settings.permissions.tool.todowrite.description": "Mettre à jour la liste de tâches",
"settings.permissions.tool.webfetch.title": "Récupération Web",
"settings.permissions.tool.webfetch.description": "Récupérer le contenu d'une URL",
"settings.permissions.tool.websearch.title": "Recherche Web",
"settings.permissions.tool.websearch.description": "Rechercher sur le web",
"settings.permissions.tool.websearch.description": "Rechercher sur le Web",
"settings.permissions.tool.external_directory.title": "Répertoire externe",
"settings.permissions.tool.external_directory.description": "Accéder aux fichiers en dehors du répertoire du projet",
"settings.permissions.tool.doom_loop.title": "Boucle infernale",
@@ -931,7 +1062,7 @@ export const dict = {
"workspace.reset.success.description": "L'espace de travail correspond maintenant à la branche par défaut.",
"workspace.error.stillPreparing": "L'espace de travail est encore en cours de préparation",
"workspace.status.checking": "Vérification des modifications non fusionnées...",
"workspace.status.error": "Impossible de vérifier le statut git.",
"workspace.status.error": "Impossible de vérifier l'état de Git.",
"workspace.status.clean": "Aucune modification non fusionnée détectée.",
"workspace.status.dirty": "Modifications non fusionnées détectées dans cet espace de travail.",
"workspace.delete.title": "Supprimer l'espace de travail",
@@ -953,9 +1084,9 @@ export const dict = {
"error.server.invalidConfiguration": "Configuration invalide",
"common.moreCountSuffix": " (+{{count}} de plus)",
"common.time.justNow": "À l'instant",
"common.time.minutesAgo.short": "il y a {{count}}m",
"common.time.hoursAgo.short": "il y a {{count}}h",
"common.time.daysAgo.short": "il y a {{count}}j",
"common.time.minutesAgo.short": "il y a {{count}} min",
"common.time.hoursAgo.short": "il y a {{count}} h",
"common.time.daysAgo.short": "il y a {{count}} j",
"settings.providers.connected.environmentDescription": "Connecté à partir de vos variables d'environnement",
"settings.providers.custom.description": "Ajouter un fournisseur compatible avec OpenAI via l'URL de base.",
@@ -973,6 +1104,9 @@ export const dict = {
"session.question.progress": "{{current}} questions sur {{total}}",
"session.header.open.finder": "Finder",
"session.header.open.fileExplorer": "Explorateur de fichiers",
"session.header.reveal.finder": "Afficher dans le Finder",
"session.header.reveal.fileExplorer": "Afficher dans lExplorateur de fichiers",
"session.header.reveal.containingFolder": "Ouvrir le dossier contenant",
"session.header.open.fileManager": "Gestionnaire de fichiers",
"session.header.open.app.vscode": "VS Code",
"session.header.open.app.cursor": "Cursor",
@@ -993,11 +1127,11 @@ export const dict = {
"debugBar.nav.tip":
"Dernière transition de route terminée touchant une page de session, mesurée du début du routeur jusqu'au premier affichage après stabilisation.",
"debugBar.fps.label": "FPS",
"debugBar.fps.tip": "Images par seconde glissantes sur les 5 dernières secondes.",
"debugBar.fps.tip": "Fréquence d'images calculée sur les 5 dernières secondes.",
"debugBar.frame.label": "FRAME",
"debugBar.frame.tip": "Pire temps d'image sur les 5 dernières secondes.",
"debugBar.frame.tip": "Durée d'image maximale sur les 5 dernières secondes.",
"debugBar.jank.label": "JANK",
"debugBar.jank.tip": "Images de plus de 32ms au cours des 5 dernières secondes.",
"debugBar.jank.tip": "Images de plus de 32 ms au cours des 5 dernières secondes.",
"debugBar.long.label": "LONG",
"debugBar.long.tip":
"Temps bloqué et nombre de tâches longues au cours des 5 dernières secondes. Tâche max : {{max}}.",
@@ -1005,7 +1139,7 @@ export const dict = {
"debugBar.delay.tip": "Pire délai d'entrée observé au cours des 5 dernières secondes.",
"debugBar.inp.label": "INP",
"debugBar.inp.tip":
"Durée approximative d'interaction au cours des 5 dernières secondes. Ceci est similaire à INP, pas le INP officiel des Web Vitals.",
"Durée approximative d'interaction au cours des 5 dernières secondes. Il s'agit d'une mesure similaire à l'INP, et non de l'INP officiel des Web Vitals.",
"debugBar.cls.label": "CLS",
"debugBar.cls.tip": "Décalage cumulatif de la mise en page pour la durée de vie actuelle de l'application.",
"debugBar.mem.label": "MEM",
@@ -1035,4 +1169,10 @@ export const dict = {
"error.childStore.persistedProjectIconCreateFailed": "Échec de la création de l'icône de projet persistante",
"error.childStore.storeCreateFailed": "Échec de la création du stockage",
"terminal.connectionLost.abnormalClose": "WebSocket fermé anormalement : {{code}}",
"terminal.connectTicket.csrfError":
"Le ticket de connexion PTY a été rejeté par les contrôles d'origine ou CSRF. Vérifiez la configuration CORS du serveur.",
"terminal.connectTicket.statusError": "Le ticket de connexion PTY a échoué avec le statut {{status}}",
"titlebar.update": "Mettre à jour",
"titlebar.updateVersion": "Mettre à jour {{version}}",
}
+1142
View File
@@ -0,0 +1,1142 @@
export const dict = {
"desktop.menu.app": "OpenCode",
"desktop.menu.file": "फ़ाइल",
"desktop.menu.edit": "संपादित करें",
"desktop.menu.view": "दृश्य",
"desktop.menu.go": "जाएँ",
"desktop.menu.window": "विंडो",
"desktop.menu.help": "सहायता",
"desktop.menu.checkForUpdates": "अपडेट की जाँच करें...",
"desktop.menu.settings": "सेटिंग्स",
"desktop.menu.reloadWebview": "वेबव्यू पुनः लोड करें",
"desktop.menu.restart": "पुनः आरंभ करें",
"desktop.menu.exportLogs": "लॉग निर्यात करें...",
"desktop.menu.newSession": "नया सेशन",
"desktop.menu.openProject": "प्रोजेक्ट खोलें...",
"desktop.menu.newWindow": "नई विंडो",
"desktop.menu.closeWindow": "विंडो बंद करें",
"desktop.menu.undo": "पूर्ववत करें",
"desktop.menu.redo": "फिर से करें",
"desktop.menu.cut": "काटें",
"desktop.menu.copy": "कॉपी करें",
"desktop.menu.paste": "चिपकाएँ",
"desktop.menu.delete": "हटाएँ",
"desktop.menu.selectAll": "सभी चुनें",
"desktop.menu.toggleSidebar": "साइडबार टॉगल करें",
"desktop.menu.toggleTerminal": "टर्मिनल टॉगल करें",
"desktop.menu.toggleFileTree": "फ़ाइल ट्री टॉगल करें",
"desktop.menu.reload": "पुनः लोड करें",
"desktop.menu.toggleDeveloperTools": "डेवलपर टूल टॉगल करें",
"desktop.menu.actualSize": "वास्तविक आकार",
"desktop.menu.zoomIn": "ज़ूम इन करें",
"desktop.menu.zoomOut": "ज़ूम आउट करें",
"desktop.menu.toggleFullScreen": "पूर्ण स्क्रीन टॉगल करें",
"desktop.menu.back": "पीछे",
"desktop.menu.forward": "आगे",
"desktop.menu.previousSession": "पिछला सेशन",
"desktop.menu.nextSession": "अगला सेशन",
"desktop.menu.previousProject": "पिछला प्रोजेक्ट",
"desktop.menu.nextProject": "अगला प्रोजेक्ट",
"desktop.menu.minimize": "छोटा करें",
"desktop.menu.maximize": "बड़ा करें",
"desktop.menu.documentation": "OpenCode दस्तावेज़",
"desktop.menu.supportForum": "सहायता फ़ोरम",
"desktop.menu.shareFeedback": "प्रतिक्रिया साझा करें",
"desktop.menu.reportBug": "बग रिपोर्ट करें",
"desktop.menu.ariaLabel": "OpenCode मेन्यू",
"desktop.updater.dialog.checkFailed.message": "अपडेट की जाँच विफल रही।",
"desktop.updater.dialog.checkFailed.title": "अपडेट त्रुटि",
"desktop.updater.dialog.upToDate.message": "आप नवीनतम संस्करण का उपयोग कर रहे हैं।",
"desktop.updater.dialog.upToDate.title": "कोई अपडेट नहीं",
"desktop.updater.dialog.ready.message": "अपडेट {{version}} डाउनलोड हो गया है। अभी पुनः आरंभ करें?",
"desktop.updater.dialog.ready.title": "अपडेट तैयार है",
"desktop.updater.dialog.restart": "पुनः आरंभ करें",
"desktop.updater.dialog.later": "बाद में",
"desktop.recovery.action.relaunch": "पुनः लॉन्च करें",
"desktop.recovery.action.exportLogs": "लॉग निर्यात करें",
"desktop.recovery.action.keepWaiting": "प्रतीक्षा जारी रखें",
"desktop.recovery.action.quit": "बाहर निकलें",
"desktop.recovery.loadFailed": "OpenCode लोड नहीं हो सका",
"desktop.recovery.terminated": "OpenCode विंडो अनपेक्षित रूप से बंद हो गई",
"desktop.recovery.unresponsive": "OpenCode प्रतिसाद नहीं दे रहा है",
"desktop.recovery.unresponsive.detail":
"आप ऐप को पुनः लॉन्च कर सकते हैं, लॉग खोल सकते हैं या प्रतीक्षा जारी रख सकते हैं।",
"desktop.recovery.loadFailed.detail": "विंडो: {{window}}\nURL: {{url}}\nत्रुटि: {{code}} {{description}}",
"desktop.recovery.terminated.detail": "विंडो: {{window}}\nकारण: {{reason}}\nकोड: {{code}}",
"desktop.recovery.unknown": "<अज्ञात>",
"desktop.dialog.chooseFolder": "फ़ोल्डर चुनें",
"desktop.dialog.chooseFile": "फ़ाइल चुनें",
"desktop.dialog.saveFile": "फ़ाइल सहेजें",
"desktop.dialog.files": "फ़ाइलें",
"desktop.server.local": "स्थानीय सर्वर",
"desktop.wsl.error.windowsOnly": "WSL केवल Windows पर उपलब्ध है",
"desktop.wsl.error.unavailable": "WSL उपलब्ध नहीं है",
"desktop.wsl.error.listInstalled": "इंस्टॉल किए गए WSL डिस्ट्रो की सूची नहीं बनाई जा सकी",
"desktop.wsl.error.listOnline": "ऑनलाइन WSL डिस्ट्रो की सूची नहीं बनाई जा सकी",
"desktop.wsl.error.executeDistro": "डिस्ट्रो में कमांड निष्पादित नहीं किए जा सकते",
"desktop.wsl.error.installWsl": "WSL इंस्टॉल नहीं हो सका",
"desktop.wsl.error.installDistro": "डिस्ट्रो इंस्टॉल नहीं हो सका: {{distro}}",
"desktop.wsl.error.installOpencode": "OpenCode इंस्टॉल नहीं हो सका",
"desktop.wsl.error.alreadyAdded": "{{distro}} पहले ही जोड़ा जा चुका है",
"desktop.wsl.error.opencodeMissing": "इस डिस्ट्रो में opencode इंस्टॉल नहीं है",
"desktop.wsl.error.opencodeCannotRun": "opencode इंस्टॉल है, लेकिन चल नहीं सका",
"desktop.wsl.error.opencodeNotInstalled": "{{distro}} में OpenCode इंस्टॉल नहीं है",
"desktop.wsl.error.updateVersion":
"OpenCode अपडेट पूरा हो गया, लेकिन {{distro}} अब भी {{installed}} रिपोर्ट कर रहा है; अपेक्षित संस्करण {{expected}} है",
"desktop.wsl.error.noVersion": "कोई संस्करण नहीं",
"desktop.wsl.error.serverExited": "WSL सर्वर स्टार्टअप के बाद बंद हो गया (code={{code}} signal={{signal}})",
"desktop.wsl.error.serverExitedBeforeHealthy":
"WSL सर्वर के सुचारु होने से पहले बंद हो गया (code={{code}} signal={{signal}}){{output}}",
"desktop.wsl.error.healthTimeout": "{{distro}} के Sidecar की स्वास्थ्य जाँच {{timeout}}ms के बाद समय-सीमा पार कर गई",
"desktop.wsl.error.commandTimeout": "{{command}} {{args}} ने {{timeout}}ms के बाद समय-सीमा पार कर दी",
"desktop.wsl.error.failedPort": "पोर्ट प्राप्त नहीं किया जा सका",
"desktop.picker.error.notSelected": "पिकर में फ़ाइल नहीं चुनी गई",
"desktop.picker.error.sizeLimit": "चुने गए अटैचमेंट {{limit}} MB की सीमा से अधिक हैं",
"command.category.suggested": "सुझाए गए",
"command.category.view": "दृश्य",
"command.category.project": "प्रोजेक्ट",
"command.category.provider": "प्रोवाइडर",
"command.category.server": "सर्वर",
"command.category.session": "सेशन",
"command.category.theme": "थीम",
"command.category.language": "भाषा",
"command.category.file": "फ़ाइल",
"command.category.context": "कॉन्टेक्स्ट",
"command.category.terminal": "टर्मिनल",
"command.category.model": "मॉडल",
"command.category.mcp": "MCP",
"command.category.agent": "एजेंट",
"command.category.permissions": "अनुमतियाँ",
"command.category.workspace": "वर्कस्पेस",
"command.category.settings": "सेटिंग्स",
"command.logs.export": "लॉग निर्यात करें",
"theme.scheme.system": "सिस्टम",
"theme.scheme.light": "हल्की",
"theme.scheme.dark": "गहरी",
"command.sidebar.toggle": "साइडबार टॉगल करें",
"command.project.open": "प्रोजेक्ट खोलें",
"command.project.previous": "पिछला प्रोजेक्ट",
"command.project.next": "अगला प्रोजेक्ट",
"command.project.index": "प्रोजेक्ट {{index}} पर स्विच करें",
"command.provider.connect": "प्रोवाइडर कनेक्ट करें",
"command.server.switch": "सर्वर स्विच करें",
"command.settings.open": "सेटिंग्स खोलें",
"command.session.previous": "पिछला सेशन",
"command.session.next": "अगला सेशन",
"command.session.previous.unseen": "पिछला अपठित सेशन",
"command.session.next.unseen": "अगला अपठित सेशन",
"command.session.archive": "सेशन संग्रहित करें",
"command.palette": "कमांड पैलेट",
"command.theme.cycle": "थीम बदलें",
"command.theme.set": "थीम का उपयोग करें: {{theme}}",
"command.theme.scheme.cycle": "रंग योजना बदलें",
"command.theme.scheme.set": "रंग योजना का उपयोग करें: {{scheme}}",
"command.language.cycle": "भाषा बदलें",
"command.language.set": "भाषा का प्रयोग करें: {{language}}",
"command.session.new": "नया सेशन",
"command.file.open": "फ़ाइल खोलें",
"command.tab.close": "टैब बंद करें",
"command.tab.reopenClosed": "बंद टैब पुनः खोलें",
"command.context.addSelection": "कॉन्टेक्स्ट में चयन जोड़ें",
"command.context.addSelection.description": "वर्तमान फ़ाइल से चयनित पंक्तियाँ जोड़ें",
"command.input.focus": "इनपुट पर फ़ोकस करें",
"command.terminal.toggle": "टर्मिनल टॉगल करें",
"command.fileTree.toggle": "फ़ाइल ट्री टॉगल करें",
"command.review.toggle": "समीक्षा टॉगल करें",
"command.terminal.new": "नया टर्मिनल",
"command.terminal.new.description": "एक नया टर्मिनल टैब बनाएं",
"command.steps.toggle": "चरण टॉगल करें",
"command.steps.toggle.description": "वर्तमान संदेश के लिए चरण दिखाएँ या छिपाएँ",
"command.message.previous": "पिछला संदेश",
"command.message.previous.description": "पिछले उपयोगकर्ता संदेश पर जाएँ",
"command.message.next": "अगला संदेश",
"command.message.next.description": "अगले उपयोगकर्ता संदेश पर जाएँ",
"command.model.choose": "मॉडल चुनें",
"command.model.choose.description": "एक अलग मॉडल चुनें",
"command.mcp.toggle": "MCPs टॉगल करें",
"command.mcp.toggle.description": "MCPs टॉगल करें",
"command.agent.cycle": "एजेंट बदलें",
"command.agent.cycle.description": "अगले एजेंट पर स्विच करें",
"command.agent.cycle.reverse": "पिछला एजेंट चुनें",
"command.agent.cycle.reverse.description": "पिछले एजेंट पर स्विच करें",
"command.model.variant.cycle": "तर्क का स्तर बदलें",
"command.model.variant.cycle.description": "तर्क के अगले स्तर पर जाएँ",
"command.prompt.mode.shell": "शेल",
"command.prompt.mode.normal": "प्रॉम्प्ट",
"command.permissions.autoaccept.enable": "अनुमतियाँ स्वतः स्वीकार करें",
"command.permissions.autoaccept.disable": "अनुमतियाँ स्वत: स्वीकार करना बंद करें",
"command.workspace.toggle": "वर्कस्पेस टॉगल करें",
"command.workspace.toggle.description": "साइडबार में एकाधिक वर्कस्पेस को सक्षम या अक्षम करें",
"command.session.undo": "पूर्ववत",
"command.session.undo.description": "अंतिम संदेश पूर्ववत करें",
"command.session.redo": "फिर से करें",
"command.session.redo.description": "अंतिम पूर्ववत संदेश को पुनः करें",
"command.session.compact": "सेशन संक्षिप्त करें",
"command.session.compact.description": "कॉन्टेक्स्ट आकार को कम करने के लिए सेशन को सारांशित करें",
"command.session.fork": "संदेश से फ़ोर्क",
"command.session.fork.description": "पिछले संदेश से एक नया सेशन बनाएं",
"command.session.share": "सेशन साझा करें",
"command.session.share.description": "इस सेशन को साझा करें और URL को क्लिपबोर्ड पर कॉपी करें",
"command.session.unshare": "सेशन साझा करना बंद करें",
"command.session.unshare.description": "इस सेशन को साझा करना बंद करें",
"palette.search.placeholder": "फ़ाइलें, कमांड और सेशन खोजें",
"palette.search.placeholder.home": "कमांड और सेशन खोजें",
"palette.empty": "कोई परिणाम नहीं मिला",
"palette.group.commands": "कमांड",
"palette.group.files": "फ़ाइलें",
"dialog.provider.search.placeholder": "प्रोवाइडर खोजें",
"dialog.provider.empty": "कोई प्रोवाइडर नहीं मिला",
"dialog.provider.group.popular": "लोकप्रिय",
"dialog.provider.group.other": "अन्य",
"dialog.provider.custom.label": "कस्टम OpenAI-संगत प्रोवाइडर",
"dialog.provider.tag.recommended": "अनुशंसित",
"dialog.provider.opencode.note": "Claude, GPT, Gemini और अधिक सहित क्यूरेटेड मॉडल",
"dialog.provider.opencode.tagline": "विश्वसनीय अनुकूलित मॉडल",
"dialog.provider.opencodeGo.tagline": "सभी के लिए कम लागत वाली सदस्यता",
"dialog.provider.anthropic.note": "प्रो और मैक्स सहित Claude मॉडल तक सीधी पहुँच",
"dialog.provider.copilot.note": "GitHub Copilot के माध्यम से कोडिंग सहायता के लिए AI मॉडल",
"dialog.provider.openai.note": "तेज़, सक्षम सामान्य AI कार्यों के लिए GPT मॉडल",
"dialog.provider.google.note": "तेज़, संरचित प्रतिक्रियाओं के लिए Gemini मॉडल",
"dialog.provider.openrouter.note": "एक प्रोवाइडर से सभी समर्थित मॉडल तक पहुँचें",
"dialog.provider.vercel.note": "स्मार्ट रूटिंग के साथ AI मॉडल तक एकीकृत पहुँच",
"dialog.model.select.title": "मॉडल चुनें",
"dialog.model.search.placeholder": "मॉडल खोजें",
"dialog.model.empty": "कोई मॉडल परिणाम नहीं",
"dialog.model.manage": "मॉडल प्रबंधित करें",
"dialog.model.manage.description": "तय करें कि मॉडल चयनकर्ता में कौन-से मॉडल दिखाई दें।",
"dialog.model.manage.provider.toggle": "सभी {{provider}} मॉडल को टॉगल करें",
"dialog.model.unpaid.freeModels.title": "OpenCode द्वारा उपलब्ध निःशुल्क मॉडल",
"dialog.model.unpaid.addMore.title": "लोकप्रिय प्रोवाइडर से अधिक मॉडल जोड़ें",
"dialog.model.unpaid.viewMoreProviders": "70+ अधिक प्रोवाइडर देखें",
"dialog.provider.viewAll": "और प्रोवाइडर दिखाएँ",
"provider.connect.title": "{{provider}} कनेक्ट करें",
"provider.connect.title.anthropicProMax": "Claude प्रो/मैक्स के साथ लॉगिन करें",
"provider.connect.selectMethod": "{{provider}} के लिए लॉगिन विधि चुनें।",
"provider.connect.method.apiKey": "API कुंजी",
"provider.connect.method.browser": "ब्राउज़र",
"provider.connect.method.headless": "हेडलेस मोड",
"provider.connect.status.inProgress": "प्राधिकरण प्रगति पर है...",
"provider.connect.status.waiting": "प्राधिकरण की प्रतीक्षा हो रही है...",
"provider.connect.status.failed": "प्राधिकरण विफल: {{error}}",
"provider.connect.apiKey.description":
"अपने खाते को कनेक्ट करने के लिए अपनी {{provider}} API कुंजी दर्ज करें और OpenCode में {{provider}} मॉडल का उपयोग करें।",
"provider.connect.apiKey.label": "{{provider}} API कुंजी",
"provider.connect.apiKey.placeholder": "API कुंजी",
"provider.connect.apiKey.required": "API कुंजी आवश्यक है",
"provider.connect.opencodeZen.line1":
"OpenCode Zen आपको कोडिंग एजेंटों के लिए चुने गए विश्वसनीय, अनुकूलित मॉडलों तक पहुँच देता है।",
"provider.connect.opencodeZen.line2": "एक API कुंजी से आपको Claude, GPT, Gemini, GLM जैसे कई मॉडलों तक पहुँच मिलेगी।",
"provider.connect.opencodeZen.visit.prefix": "यहाँ जाएँ: ",
"provider.connect.opencodeZen.visit.link": "opencode.ai/zen",
"provider.connect.opencodeZen.visit.suffix": " अपनी API कुंजी प्राप्त करने के लिए।",
"provider.connect.oauth.code.visit.prefix": "यहाँ जाएँ: ",
"provider.connect.oauth.code.visit.link": "इस लिंक",
"provider.connect.oauth.code.visit.suffix":
" अपने खाते को कनेक्ट करने और OpenCode में {{provider}} मॉडल का उपयोग करने के लिए अपना प्राधिकरण कोड प्राप्त करें।",
"provider.connect.oauth.code.label": "{{method}} प्राधिकरण कोड",
"provider.connect.oauth.code.placeholder": "प्राधिकरण कोड",
"provider.connect.oauth.code.required": "प्राधिकरण कोड आवश्यक है",
"provider.connect.oauth.code.invalid": "अमान्य प्राधिकरण कोड",
"provider.connect.oauth.auto.visit.prefix": "यहाँ जाएँ: ",
"provider.connect.oauth.auto.visit.link": "इस लिंक",
"provider.connect.oauth.auto.visit.suffix":
" और अपने खाते को कनेक्ट करने तथा OpenCode में {{provider}} मॉडल का उपयोग करने के लिए नीचे दिया गया कोड दर्ज करें।",
"provider.connect.oauth.auto.confirmationCode": "पुष्टि कोड",
"provider.connect.toast.connected.title": "{{provider}} कनेक्ट हो गया",
"provider.connect.toast.connected.description": "{{provider}} मॉडल अब उपयोग के लिए उपलब्ध हैं।",
"provider.custom.title": "कस्टम प्रोवाइडर",
"provider.custom.unavailable": "इस सर्वर पर कस्टम प्रोवाइडर उपलब्ध नहीं हैं",
"provider.custom.description.prefix": "एक OpenAI-संगत प्रोवाइडर कॉन्फ़िगर करें। देखें ",
"provider.custom.description.link": "प्रोवाइडर कॉन्फ़िगरेशन दस्तावेज़",
"provider.custom.description.suffix": ".",
"provider.custom.field.providerID.label": "प्रोवाइडर ID",
"provider.custom.field.providerID.placeholder": "myprovider",
"provider.custom.field.providerID.description": "छोटे अक्षर, संख्याएँ, हाइफ़न, या अंडरस्कोर",
"provider.custom.field.name.label": "प्रदर्शित होने वाला नाम",
"provider.custom.field.name.placeholder": "मेरा AI प्रोवाइडर",
"provider.custom.field.baseURL.label": "आधार URL",
"provider.custom.field.baseURL.placeholder": "https://api.myprovider.com/v1",
"provider.custom.field.apiKey.label": "API कुंजी",
"provider.custom.field.apiKey.placeholder": "API कुंजी",
"provider.custom.field.apiKey.description":
"वैकल्पिक। यदि आप हेडर के माध्यम से प्रमाणीकरण प्रबंधित करते हैं तो खाली छोड़ दें।",
"provider.custom.models.label": "मॉडल",
"provider.custom.models.id.label": "ID",
"provider.custom.models.id.placeholder": "model-id",
"provider.custom.models.name.label": "नाम",
"provider.custom.models.name.placeholder": "प्रदर्शित होने वाला नाम",
"provider.custom.models.remove": "मॉडल हटाएँ",
"provider.custom.models.add": "मॉडल जोड़ें",
"provider.custom.headers.label": "हेडर (वैकल्पिक)",
"provider.custom.headers.key.label": "हेडर",
"provider.custom.headers.key.placeholder": "Header-Name",
"provider.custom.headers.value.label": "मान",
"provider.custom.headers.value.placeholder": "value",
"provider.custom.headers.remove": "हेडर हटाएँ",
"provider.custom.headers.add": "हेडर जोड़ें",
"provider.custom.error.providerID.required": "प्रोवाइडर ID आवश्यक है",
"provider.custom.error.providerID.format": "छोटे अक्षरों, संख्याओं, हाइफ़न या अंडरस्कोर का उपयोग करें",
"provider.custom.error.providerID.exists": "वह प्रोवाइडर ID पहले से मौजूद है",
"provider.custom.error.name.required": "प्रदर्शन नाम आवश्यक है",
"provider.custom.error.baseURL.required": "आधार URL आवश्यक है",
"provider.custom.error.baseURL.format": "http:// या https:// से प्रारंभ होना चाहिए",
"provider.custom.error.required": "आवश्यक",
"provider.custom.error.duplicate": "डुप्लिकेट",
"provider.disconnect.toast.disconnected.title": "{{provider}} डिस्कनेक्ट हो गया",
"provider.disconnect.toast.disconnected.description": "{{provider}} मॉडल अब उपलब्ध नहीं हैं।",
"model.tag.free": "निःशुल्क",
"model.tag.latest": "नवीनतम",
"model.provider.anthropic": "Anthropic",
"model.provider.openai": "OpenAI",
"model.provider.google": "Google",
"model.provider.xai": "xAI",
"model.provider.meta": "Meta",
"model.input.text": "टेक्स्ट",
"model.input.image": "छवि",
"model.input.audio": "ऑडियो",
"model.input.video": "वीडियो",
"model.input.pdf": "PDF",
"model.tooltip.allows": "अनुमति देता है: {{inputs}}",
"model.tooltip.context.label": "कॉन्टेक्स्ट",
"model.tooltip.inputs": "इनपुट",
"model.tooltip.model": "मॉडल",
"model.tooltip.provider": "प्रोवाइडर",
"model.tooltip.reasoning": "तर्क",
"model.tooltip.reasoning.allowed": "तर्क करने की अनुमति देता है",
"model.tooltip.reasoning.none": "कोई तर्क नहीं",
"model.tooltip.context": "कॉन्टेक्स्ट सीमा {{limit}}",
"common.search.placeholder": "खोज",
"common.goBack": "पीछे जाएँ",
"common.goForward": "आगे जाएँ",
"common.loading": "लोड हो रहा है",
"common.loading.ellipsis": "...",
"common.cancel": "रद्द करें",
"common.clear": "साफ़ करें",
"common.open": "खोलें",
"common.connect": "कनेक्ट करें",
"common.disconnect": "डिस्कनेक्ट करें",
"common.continue": "जारी रखें",
"common.submit": "जमा करें",
"common.save": "सहेजें",
"common.saving": "सहेजा जा रहा है...",
"common.default": "डिफ़ॉल्ट",
"common.attachment": "अटैचमेंट",
"prompt.placeholder.shell": "शेल कमांड... {{example}} दर्ज करें",
"prompt.placeholder.normal": 'कुछ भी पूछें... "{{example}}"',
"prompt.placeholder.simple": "कुछ भी पूछें...",
"prompt.placeholder.summarizeComments": "टिप्पणियों को सारांशित करें...",
"prompt.placeholder.summarizeComment": "टिप्पणी को सारांशित करें...",
"prompt.mode.shell": "शेल",
"prompt.mode.normal": "प्रॉम्प्ट",
"prompt.mode.shell.exit": "बाहर निकलने के लिए esc",
"session.child.promptDisabled": "सबएजेंट सेशन में प्रॉम्प्ट नहीं भेजा जा सकता।",
"session.child.backToParent": "मुख्य सेशन पर वापस जाएँ।",
"prompt.example.1": "कोडबेस में एक TODO ठीक करें",
"prompt.example.2": "इस प्रोजेक्ट का तकनीकी स्टैक क्या है?",
"prompt.example.3": "टूटे हुए परीक्षणों को ठीक करें",
"prompt.example.4": "बताएं कि प्रमाणीकरण कैसे काम करता है",
"prompt.example.5": "सुरक्षा कमजोरियाँ खोजें और ठीक करें",
"prompt.example.6": "उपयोगकर्ता सेवा के लिए यूनिट परीक्षण जोड़ें",
"prompt.example.7": "इस फ़ंक्शन को अधिक पठनीय बनाने के लिए रीफ़ैक्टर करें",
"prompt.example.8": "इस त्रुटि का मतलब क्या है?",
"prompt.example.9": "इस मुद्दे को डीबग करने में मेरी सहायता करें",
"prompt.example.10": "API दस्तावेज़ तैयार करें",
"prompt.example.11": "डेटाबेस क्वेरीज़ को अनुकूलित करें",
"prompt.example.12": "इनपुट सत्यापन जोड़ें",
"prompt.example.13": "इसके लिए एक नया कॉम्पोनेंट बनाएँ...",
"prompt.example.14": "मैं इस प्रोजेक्ट को कैसे तैनात करूं?",
"prompt.example.15": "सर्वोत्तम प्रथाओं के लिए मेरे कोड की समीक्षा करें",
"prompt.example.16": "इस फ़ंक्शन में त्रुटि प्रबंधन जोड़ें",
"prompt.example.17": "इस रेगेक्स पैटर्न को समझाइये",
"prompt.example.18": "इसे TypeScript में बदलें",
"prompt.example.19": "पूरे कोडबेस में लॉगिंग जोड़ें",
"prompt.example.20": "कौन सी निर्भरताएँ पुरानी हो चुकी हैं?",
"prompt.example.21": "माइग्रेशन स्क्रिप्ट लिखने में मेरी सहायता करें",
"prompt.example.22": "इस समापन बिंदु के लिए कैशिंग लागू करें",
"prompt.example.23": "इस सूची में पेजिनेशन जोड़ें",
"prompt.example.24": "इसके लिए एक CLI कमांड बनाएं...",
"prompt.example.25": "पर्यावरण चर यहाँ कैसे काम करते हैं?",
"prompt.popover.emptyResults": "कोई मेल खाता परिणाम नहीं",
"prompt.popover.emptyCommands": "कोई मेल खाता कमांड नहीं",
"prompt.dropzone.label": "छवियाँ, PDFs, या टेक्स्ट फ़ाइलें यहां छोड़ें",
"prompt.dropzone.file.label": "फ़ाइल का @mention करने के लिए छोड़ें",
"prompt.slash.badge.custom": "कस्टम",
"prompt.slash.badge.skill": "कौशल",
"prompt.slash.badge.mcp": "mcp",
"prompt.context.active": "सक्रिय",
"prompt.context.includeActiveFile": "सक्रिय फ़ाइल शामिल करें",
"prompt.context.removeActiveFile": "कॉन्टेक्स्ट से सक्रिय फ़ाइल हटाएँ",
"prompt.context.removeFile": "कॉन्टेक्स्ट से फ़ाइल हटाएँ",
"prompt.action.attachFile": "फ़ाइलें जोड़ें",
"prompt.menu.addImagesAndFiles": "फ़ाइलें और बहुत कुछ जोड़ें",
"prompt.menu.imagesAndFiles": "छवियाँ और फ़ाइलें",
"prompt.menu.commands": "कमांड",
"prompt.menu.context": "कॉन्टेक्स्ट",
"prompt.menu.shellCommand": "शेल कमांड",
"prompt.attachment.remove": "अनुलग्नक हटाएँ",
"prompt.action.send": "भेजें",
"prompt.action.stop": "रोकें",
"prompt.toast.pasteUnsupported.title": "असमर्थित अनुलग्नक",
"prompt.toast.pasteUnsupported.description": "यहां केवल छवियां, PDFs, या टेक्स्ट फ़ाइलें संलग्न की जा सकती हैं।",
"prompt.toast.attachmentDuplicate.title": "यह फ़ाइल पहले ही अपलोड की जा चुकी है",
"prompt.toast.modelAgentRequired.title": "एक एजेंट और मॉडल चुनें",
"prompt.toast.modelAgentRequired.description": "प्रॉम्प्ट भेजने से पहले एक एजेंट और मॉडल चुनें।",
"prompt.toast.worktreeCreateFailed.title": "वर्कट्री बनाने में विफल",
"prompt.toast.sessionCreateFailed.title": "सेशन बनाने में विफल",
"prompt.toast.shellSendFailed.title": "शेल कमांड भेजने में विफल",
"prompt.toast.commandSendFailed.title": "कमांड भेजने में विफल",
"prompt.toast.promptSendFailed.title": "प्रॉम्प्ट भेजने में विफल",
"prompt.toast.promptSendFailed.description": "सेशन पुनः प्राप्त करने में असमर्थ",
"dialog.mcp.title": "MCPs",
"dialog.mcp.description": "{{total}} में से {{enabled}} सक्षम",
"dialog.mcp.empty": "कोई MCP कॉन्फ़िगर नहीं किया गया",
"dialog.lsp.empty": "फ़ाइल प्रकारों से LSP का स्वतः पता लगाया जाता है",
"dialog.plugins.empty": "प्लगइन opencode.json में कॉन्फ़िगर किए गए हैं",
"mcp.status.connected": "कनेक्टेड",
"mcp.status.failed": "असफल",
"mcp.status.needs_auth": "प्रमाणीकरण की आवश्यकता है",
"mcp.status.disabled": "अक्षम",
"mcp.auth.clickToAuthenticate": "प्रमाणित करने के लिए क्लिक करें",
"dialog.fork.empty": "फ़ोर्क करने के लिए कोई संदेश नहीं",
"dialog.directory.search.placeholder": "फ़ोल्डर खोजें",
"dialog.directory.empty": "कोई फ़ोल्डर नहीं मिला",
"dialog.directory.action.selectFile": "फ़ाइल का चयन करें",
"dialog.directory.action.selectFolder": "फ़ोल्डर चुनें",
"dialog.directory.root": "रूट",
"dialog.directory.parent": "पैरेंट",
"dialog.directory.readError": "इस फ़ोल्डर को पढ़ने में असमर्थ",
"app.server.unreachable": "{{server}} तक नहीं पहुँचा जा सका",
"app.server.retrying": "स्वचालित रूप से पुनः प्रयास किया जा रहा है...",
"app.server.otherServers": "अन्य सर्वर",
"dialog.server.title": "सर्वर",
"dialog.server.description": "स्विच करें कि यह ऐप किस OpenCode सर्वर से कनेक्ट होता है।",
"dialog.server.search.placeholder": "सर्वर खोजें",
"dialog.server.empty": "अभी तक कोई सर्वर नहीं है",
"dialog.server.add.title": "सर्वर जोड़ें",
"dialog.server.add.url": "सर्वर पता",
"dialog.server.add.placeholder": "http://localhost:4096",
"dialog.server.add.error": "सर्वर से कनेक्ट नहीं कर सका",
"dialog.server.add.checking": "जाँच हो रही है...",
"dialog.server.add.button": "सर्वर जोड़ें",
"dialog.server.add.name": "सर्वर नाम (वैकल्पिक)",
"dialog.server.add.namePlaceholder": "Localhost",
"dialog.server.add.username": "उपयोगकर्ता नाम (वैकल्पिक)",
"dialog.server.add.usernamePlaceholder": "उपयोक्तानाम",
"dialog.server.add.password": "पासवर्ड (वैकल्पिक)",
"dialog.server.add.passwordPlaceholder": "पासवर्ड",
"dialog.server.edit.title": "सर्वर संपादित करें",
"dialog.server.default.title": "डिफ़ॉल्ट सर्वर",
"dialog.server.default.description":
"स्थानीय सर्वर शुरू करने के बजाय ऐप लॉन्च होने पर इस सर्वर से कनेक्ट करें। पुनः आरंभ करना आवश्यक है।",
"dialog.server.default.none": "कोई सर्वर चयनित नहीं",
"dialog.server.default.set": "वर्तमान सर्वर को डिफ़ॉल्ट के रूप में सेट करें",
"dialog.server.default.clear": "साफ़ करें",
"dialog.server.action.remove": "सर्वर हटाएँ",
"dialog.server.menu.edit": "संपादित करें",
"dialog.server.menu.default": "डिफाल्ट के रूप में सेट",
"dialog.server.menu.defaultRemove": "डिफ़ॉल्ट हटाएँ",
"dialog.server.menu.delete": "हटाएँ",
"dialog.server.current": "वर्तमान सर्वर",
"dialog.server.status.default": "डिफ़ॉल्ट",
"wsl.server.add": "WSL सर्वर जोड़ें",
"wsl.server.addShort": "WSL जोड़ें",
"wsl.server.label": "WSL",
"wsl.server.menu.label": "WSL सर्वर",
"wsl.server.retryStart": "पुन: प्रयास प्रारंभ करें",
"wsl.server.updating": "अद्यतन किया जा रहा है...",
"wsl.onboarding.step.distro": "डिस्ट्रो चुनें",
"wsl.onboarding.step.opencode": "OpenCode",
"wsl.onboarding.checkingRuntime": "WSL की जाँच हो रही है...",
"wsl.onboarding.restartRequired": "WSL की स्थापना पूरी करने के लिए Windows को पुनः आरंभ करना होगा।",
"wsl.onboarding.ready": "WSL तैयार है।",
"wsl.onboarding.required": "जारी रखने के लिए WSL आवश्यक है।",
"wsl.onboarding.checkingDistros": "डिस्ट्रोज़ की जाँच हो रही है...",
"wsl.onboarding.installingDistro": "{{distro}} इंस्टॉल किया जा रहा है...",
"wsl.onboarding.checkingDistro": "{{distro}} की जाँच हो रही है...",
"wsl.onboarding.listingDistros": "डिस्ट्रो की सूची बनाई जा रही है...",
"wsl.onboarding.distroReady": "{{distro}} तैयार है।",
"wsl.onboarding.distroNotInstalled": "{{distro}} अभी तक इंस्टॉल नहीं है।",
"wsl.onboarding.openDistroOnce": "सेटअप पूरा करने के लिए एक बार {{distro}} खोलें।",
"wsl.onboarding.finishingDistro": "{{distro}} का सेटअप पूरा किया जा रहा है।",
"wsl.onboarding.pickDistro": "एक डिस्ट्रो चुनें या नीचे एक स्थापित करें।",
"wsl.onboarding.checkingOpencode": "OpenCode की जाँच हो रही है...",
"wsl.onboarding.checkingOpencodeIn": "{{distro}} में OpenCode की जाँच हो रही है...",
"wsl.onboarding.updatingOpencode": "OpenCode अपडेट हो रहा है...",
"wsl.onboarding.updatingOpencodeIn": "{{distro}} में OpenCode अपडेट हो रहा है...",
"wsl.onboarding.updateOpencodeIn": "{{distro}} में OpenCode को अपडेट करें।",
"wsl.onboarding.updateOpencode": "OpenCode को अपडेट करें",
"wsl.onboarding.opencodeReadyIn": "OpenCode {{distro}} में तैयार है।",
"wsl.onboarding.opencodeReady": "OpenCode तैयार है।",
"wsl.onboarding.installOpencodeIn": "{{distro}} में OpenCode स्थापित करें।",
"wsl.onboarding.installOpencode": "OpenCode स्थापित करें",
"wsl.onboarding.chooseDistroFirst": "पहले एक डिस्ट्रो चुनें।",
"wsl.onboarding.loadFailed": "WSL स्थिति लोड करने में विफल।",
"wsl.onboarding.loading": "लोड हो रहा है...",
"wsl.onboarding.installedDistros": "स्थापित डिस्ट्रोस",
"wsl.onboarding.checkAgain": "फिर से जाँचें",
"wsl.onboarding.distroStatus.ready": "तैयार",
"wsl.onboarding.distroStatus.checking": "जाँच हो रही है...",
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode स्थापित नहीं है",
"wsl.onboarding.distroStatus.missingTools": "गायब बैश, कर्ल",
"wsl.onboarding.distroStatus.unsupported": "असमर्थित · WSL 2 का उपयोग करें",
"wsl.onboarding.needAnotherDistro": "एक और डिस्ट्रो की आवश्यकता है?",
"wsl.onboarding.needAnotherDistroHint": "WSL कैटलॉग से Linux वितरण स्थापित करें",
"wsl.onboarding.wslNotInstalled.title": "WSL स्थापित नहीं है",
"wsl.onboarding.wslNotInstalled.description":
"OpenCode द्वारा WSL सर्वर जोड़ने से पहले WSL (Linux के लिए Windows सबसिस्टम) आवश्यक है",
"wsl.onboarding.wslUnavailable.title": "WSL अनुपलब्ध है",
"wsl.onboarding.wslUnavailable.description": "OpenCode इस मशीन पर WSL को सत्यापित नहीं कर सका।",
"wsl.onboarding.installWsl": "WSL स्थापित करें",
"wsl.onboarding.windowsRestartRequired":
"WSL की स्थापना समाप्त करने के लिए Windows को पुनरारंभ करें, फिर OpenCode को फिर से खोलें।",
"wsl.onboarding.next": "अगला",
"wsl.onboarding.refresh": "रीफ़्रेश करें",
"wsl.onboarding.allDistrosAdded": "सभी स्थापित डिस्ट्रो पहले ही जोड़े जा चुके हैं।",
"wsl.onboarding.noDistros": "अभी तक कोई डिस्ट्रो नहीं मिला।",
"wsl.onboarding.install": "स्थापित करें",
"wsl.onboarding.installing": "स्थापित किया जा रहा है...",
"wsl.onboarding.installDistro": "डिस्ट्रो स्थापित करें",
"wsl.onboarding.searchDistros": "डिस्ट्रोस खोजें",
"wsl.onboarding.wsl2Required": "WSL 2 आवश्यक है।",
"wsl.onboarding.toolsRequired": "इस डिस्ट्रो को बैश और कर्ल की जरूरत है।",
"wsl.onboarding.openTerminal": "टर्मिनल खोलें",
"wsl.onboarding.path": "पथ: {{path}}",
"wsl.onboarding.notFound": "नहीं मिला",
"wsl.onboarding.version": "संस्करण: {{version}}",
"wsl.onboarding.unknown": "अज्ञात",
"wsl.onboarding.desktopVersion": "डेस्कटॉप {{version}}",
"wsl.onboarding.versionMismatch": "इंस्टॉल किया गया संस्करण डेस्कटॉप ऐप संस्करण से मेल नहीं खाता।",
"wsl.onboarding.adding": "जोड़ा जा रहा है...",
"help.tabs.toast.ariaLabel": "टैब प्रस्तुत हैं। टैब की सहायता से अपना काम और सक्रिय सेशन व्यवस्थित करें",
"help.tabs.toast.dismiss": "टैब की जानकारी हटाएँ",
"help.tabs.title": "टैब प्रस्तुत हैं",
"help.tabs.description": "टैब की सहायता से अपना काम और सक्रिय सेशन व्यवस्थित करें",
"help.tabs.date": "14 जुलाई",
"help.tabs.introduction": "OpenCode Desktop अब टैब पर आधारित है।",
"help.tabs.sessions":
"किसी टैब में नया सेशन शुरू करें या अपने किसी भी प्रोजेक्ट से मौजूदा सेशन खोलें। कुछ नया शुरू करते समय नया टैब खोलें और काम पूरा होने पर उसे बंद कर दें।",
"help.tabs.organize":
"कुछ टैब खुले रखने से सक्रिय सेशन व्यवस्थित करना आसान होता है। यदि आप टैब खुले रखना चाहते हैं, तो उन्हें कोई याद रहने वाला नाम दें।",
"help.tabs.home": "आपके सभी सेशन और प्रोजेक्ट नई होम स्क्रीन पर मिलेंगे। किसी सेशन को चुनने पर वह टैब में खुलता है।",
"help.tabs.persistence": "ऐप दोबारा खोलने पर भी आपके टैब खुले रहते हैं।",
"help.tabs.worktrees":
"नया डिज़ाइन अभी Git Worktrees का समर्थन नहीं करता है, यह सुविधा जल्द आ रही है। इसलिए यदि आप पिछले लेआउट का उपयोग जारी रखना चाहते हैं, तो सेटिंग्स में लेआउट के बीच स्विच कर सकते हैं। ध्यान रखें कि नया लेआउट कुछ सप्ताह में स्थायी हो जाएगा।",
"server.row.noUsername": "कोई उपयोगकर्ता नाम नहीं",
"dialog.project.edit.title": "प्रोजेक्ट संपादित करें",
"dialog.project.edit.name": "नाम",
"dialog.project.edit.icon": "आइकन",
"dialog.project.edit.icon.alt": "प्रोजेक्ट आइकन",
"dialog.project.edit.icon.hint": "किसी छवि को क्लिक करें या खींचें",
"dialog.project.edit.icon.recommended": "अनुशंसित: 128x128px",
"dialog.project.edit.color": "रंग",
"dialog.project.edit.color.select": "{{color}} रंग चुनें",
"dialog.project.edit.worktree.startup": "वर्कस्पेस स्टार्टअप स्क्रिप्ट",
"dialog.project.edit.worktree.startup.description": "एक नया वर्कस्पेस (वर्कट्री) बनाने के बाद चलता है।",
"dialog.project.edit.worktree.startup.placeholder": "जैसे: bun install",
"dialog.releaseNotes.action.getStarted": "शुरू करें",
"dialog.releaseNotes.action.next": "अगला",
"dialog.releaseNotes.action.hideFuture": "भविष्य में इन्हें न दिखाएँ",
"dialog.releaseNotes.media.alt": "रिलीज़ पूर्वावलोकन",
"context.breakdown.title": "कॉन्टेक्स्ट ब्रेकडाउन",
"context.breakdown.note": 'इनपुट टोकन का अनुमानित विभाजन। "अन्य" में टूल की परिभाषाएँ और अतिरिक्त खर्च शामिल हैं।',
"context.breakdown.system": "सिस्टम",
"context.breakdown.user": "उपयोगकर्ता",
"context.breakdown.assistant": "सहायक",
"context.breakdown.tool": "टूल कॉल",
"context.breakdown.other": "अन्य",
"context.systemPrompt.title": "सिस्टम प्रॉम्प्ट",
"context.rawMessages.title": "मूल संदेश",
"context.stats.session": "सेशन",
"context.stats.messages": "संदेश",
"context.stats.provider": "प्रोवाइडर",
"context.stats.model": "मॉडल",
"context.stats.limit": "कॉन्टेक्स्ट सीमा",
"context.stats.totalTokens": "कुल टोकन",
"context.stats.usage": "उपयोग",
"context.stats.inputTokens": "इनपुट टोकन",
"context.stats.outputTokens": "आउटपुट टोकन",
"context.stats.reasoningTokens": "तर्क टोकन",
"context.stats.cacheTokens": "कैश टोकन (पढ़ें/लिखें)",
"context.stats.userMessages": "उपयोगकर्ता संदेश",
"context.stats.assistantMessages": "सहायक संदेश",
"context.stats.totalCost": "कुल लागत",
"context.stats.sessionCreated": "सेशन बनाया गया",
"context.stats.lastActivity": "अंतिम गतिविधि",
"context.usage.tokens": "टोकन",
"context.usage.usage": "उपयोग",
"context.usage.cost": "लागत",
"context.usage.clickToView": "कॉन्टेक्स्ट देखने के लिए क्लिक करें",
"context.usage.view": "कॉन्टेक्स्ट उपयोग देखें",
"language.en": "English",
"language.zh": "简体中文",
"language.zht": "繁體中文",
"language.ko": "한국어",
"language.de": "Deutsch",
"language.es": "Español",
"language.fr": "Français",
"language.da": "Dansk",
"language.ja": "日本語",
"language.pl": "Polski",
"language.ru": "Русский",
"language.ar": "العربية",
"language.no": "Norsk",
"language.br": "Português (Brasil)",
"language.bs": "Bosanski",
"language.uk": "Українська",
"language.th": "ไทย",
"language.tr": "Türkçe",
"toast.language.title": "भाषा",
"toast.language.description": "{{language}} पर स्विच किया गया",
"toast.theme.title": "थीम स्विच किया गया",
"toast.scheme.title": "रंग योजना",
"toast.workspace.enabled.title": "वर्कस्पेस सक्षम",
"toast.workspace.enabled.description": "एकाधिक वर्कट्री अब साइडबार में दिखाए गए हैं",
"toast.workspace.disabled.title": "वर्कस्पेस अक्षम",
"toast.workspace.disabled.description": "साइडबार में केवल मुख्य वर्कट्री दिखाया गया है",
"toast.permissions.autoaccept.on.title": "अनुमतियाँ स्वतः स्वीकार करना",
"toast.permissions.autoaccept.on.description": "अनुमति अनुरोध स्वचालित रूप से स्वीकृत हो जाएंगे",
"toast.permissions.autoaccept.off.title": "अनुमतियों को स्वतः स्वीकार करना बंद कर दिया गया",
"toast.permissions.autoaccept.off.description": "अनुमति अनुरोधों के लिए अनुमोदन की आवश्यकता होगी",
"toast.model.none.title": "कोई मॉडल चयनित नहीं",
"toast.model.none.description": "इस सेशन को सारांशित करने के लिए एक प्रोवाइडर कनेक्ट करें",
"toast.file.loadFailed.title": "फ़ाइल लोड करने में विफल",
"toast.file.listFailed.title": "फ़ाइलें सूचीबद्ध करने में विफल",
"toast.context.noLineSelection.title": "कोई पंक्ति चयन नहीं",
"toast.context.noLineSelection.description": "पहले फ़ाइल टैब में एक पंक्ति श्रेणी का चयन करें।",
"toast.session.share.copyFailed.title": "URL को क्लिपबोर्ड पर कॉपी करने में विफल",
"toast.session.share.success.title": "सेशन साझा किया गया",
"toast.session.share.success.description": "साझा URL क्लिपबोर्ड पर कॉपी किया गया!",
"toast.session.share.failed.title": "सेशन साझा करने में विफल",
"toast.session.share.failed.description": "सेशन साझा करते समय एक त्रुटि उत्पन्न हुई",
"toast.session.unshare.success.title": "सेशन अनशेयर किया गया",
"toast.session.unshare.success.description": "सेशन सफलतापूर्वक अनशेयर किया गया!",
"toast.session.unshare.failed.title": "सेशन को अनशेयर करने में विफल",
"toast.session.unshare.failed.description": "सेशन को अनशेयर करते समय एक त्रुटि उत्पन्न हुई",
"toast.session.listFailed.title": "{{project}} के लिए सेशन लोड करने में विफल",
"toast.project.reloadFailed.title": "{{project}} को पुनः लोड करने में विफल",
"toast.update.title": "उपलब्ध अद्यतन",
"toast.update.description": "OpenCode ({{version}}) का एक नया संस्करण अब इंस्टॉल करने के लिए उपलब्ध है।",
"toast.update.action.installRestart": "स्थापित करें और पुनः आरंभ करें",
"toast.update.action.notYet": "अभी नहीं",
"error.page.title": "कुछ गलत हो गया",
"error.page.description": "एप्लिकेशन लोड करते समय एक त्रुटि हुई।",
"error.page.description.localServerStartup": "स्थानीय सर्वर शुरू करते समय एक त्रुटि हुई।",
"error.page.details.label": "त्रुटि विवरण",
"error.page.action.restart": "पुनः आरंभ करें",
"error.page.action.report": "त्रुटि की रिपोर्ट करें",
"error.page.action.reported": "त्रुटि रिपोर्ट की गई",
"error.page.action.exportLogs": "लॉग निर्यात करें",
"error.page.action.checking": "जाँच हो रही है...",
"error.page.action.checkUpdates": "अद्यतन के लिए जाँच",
"error.page.action.updateTo": "{{version}} पर अपडेट करें",
"error.page.circular": "[Circular]",
"error.page.report.prefix": "कृपया इस त्रुटि की रिपोर्ट OpenCode टीम को करें",
"error.page.report.discord": "Discord पर",
"error.page.version": "संस्करण: {{version}}",
"error.dev.rootNotFound":
"मूल तत्व नहीं मिला. क्या आप इसे अपने index.html में जोड़ना भूल गए? या हो सकता है कि आईडी विशेषता गलत वर्तनी हो गई हो?",
"error.serverSync.connectFailed": "सर्वर से कनेक्ट नहीं कर सका। क्या `{{url}}` पर कोई सर्वर चल रहा है?",
"error.serverSDK.noServerAvailable": "कोई सर्वर उपलब्ध नहीं है",
"error.serverSDK.serverNotAvailable": "सर्वर उपलब्ध नहीं है",
"error.childStore.persistedCacheCreateFailed": "सतत कैश बनाने में विफल",
"error.childStore.persistedProjectMetadataCreateFailed": "निरंतर प्रोजेक्ट मेटाडेटा बनाने में विफल",
"error.childStore.persistedProjectIconCreateFailed": "स्थायी प्रोजेक्ट आइकन बनाने में विफल",
"error.childStore.storeCreateFailed": "स्टोर बनाने में विफल",
"directory.error.invalidUrl": "URL में अमान्य निर्देशिका।",
"error.chain.unknown": "अज्ञात त्रुटि",
"error.server.invalidConfiguration": "अमान्य कॉन्फ़िगरेशन",
"error.chain.causedBy": "कारण:",
"error.chain.apiError": "API त्रुटि",
"error.chain.status": "स्थिति: {{status}}",
"error.chain.retryable": "पुनः प्रयास योग्य: {{retryable}}",
"error.chain.responseBody": "प्रतिक्रिया निकाय:\n{{body}}",
"error.chain.didYouMean": "क्या आपका मतलब था: {{suggestions}}",
"error.chain.modelNotFound": "मॉडल नहीं मिला: {{provider}}/{{model}}",
"error.chain.checkConfig": "अपने कॉन्फ़िगरेशन (opencode.json) प्रोवाइडर/मॉडल नामों की जाँच करें",
"error.chain.mcpFailed":
'MCP सर्वर "{{name}}" विफल रहा। ध्यान दें, OpenCode अभी तक MCP प्रमाणीकरण का समर्थन नहीं करता है।',
"error.chain.providerAuthFailed": "प्रोवाइडर प्रमाणीकरण विफल ({{provider}}): {{message}}",
"error.chain.providerInitFailed":
'प्रोवाइडर "{{provider}}" शुरू नहीं किया जा सका। क्रेडेंशियल और कॉन्फ़िगरेशन की जाँच करें।',
"error.chain.configJsonInvalid": "{{path}} पर कॉन्फ़िगरेशन फ़ाइल वैध JSON(C) नहीं है",
"error.chain.configJsonInvalidWithMessage": "{{path}} पर कॉन्फ़िगरेशन फ़ाइल वैध नहीं है JSON(C): {{message}}",
"error.chain.configDirectoryTypo":
'{{path}} में निर्देशिका "{{dir}}" मान्य नहीं है। निर्देशिका का नाम बदलकर "{{suggestion}}" करें या इसे हटा दें। यह वर्तनी की एक सामान्य त्रुटि है।',
"error.chain.configFrontmatterError": "{{path}} में फ्रंटमैटर को पार्स करने में विफल:\n{{message}}",
"error.chain.configInvalid": "{{path}} पर कॉन्फ़िगरेशन फ़ाइल अमान्य है",
"error.chain.configInvalidWithMessage": "{{path}} पर कॉन्फ़िगरेशन फ़ाइल अमान्य है: {{message}}",
"notification.permission.title": "अनुमति आवश्यक है",
"notification.permission.description": "{{projectName}} में {{sessionTitle}} को अनुमति की आवश्यकता है",
"notification.question.title": "प्रश्न",
"notification.question.description": "{{projectName}} में {{sessionTitle}} का एक प्रश्न है",
"notification.action.goToSession": "सेशन पर जाएं",
"notification.session.responseReady.title": "प्रतिक्रिया तैयार",
"notification.session.error.title": "सेशन त्रुटि",
"notification.session.error.fallbackDescription": "एक त्रुटि पाई गई",
"home.recentProjects": "हाल के प्रोजेक्ट",
"home.empty.title": "कोई हालिया प्रोजेक्ट नहीं",
"home.empty.description": "स्थानीय प्रोजेक्ट खोलकर शुरुआत करें",
"home.title": "होम",
"home.projects": "प्रोजेक्ट",
"home.project.add": "प्रोजेक्ट जोड़ें",
"home.recentlyClosed": "हाल ही में बंद हुआ",
"home.server.collapse": "सर्वर प्रोजेक्ट को संक्षिप्त करें",
"home.server.expand": "सर्वर प्रोजेक्ट का विस्तार करें",
"home.sessions.search.placeholder": "सेशन खोजें",
"home.sessions.search.placeholder.scoped": "{{scope}} में सेशन खोजें",
"home.sessions.search.sessions": "सेशन",
"home.sessions.search.noResults": "{{query}} के लिए कोई सेशन नहीं मिला",
"home.sessions.empty": "अभी तक यहां कुछ भी नहीं है",
"home.sessions.empty.description": "आरंभ करने के लिए एक सेशन बनाएं",
"home.sessions.group.today": "आज",
"home.sessions.group.yesterday": "कल",
"home.sessions.group.older": "पुराने",
"home.providerTip": "Claude, GPT, Gemini आदि सहित अन्य मॉडल का उपयोग करने के लिए 75+ प्रोवाइडर से कनेक्ट करें",
"session.tab.session": "सेशन",
"session.tab.review": "समीक्षा",
"session.tab.context": "कॉन्टेक्स्ट",
"session.tab.unknown": "अज्ञात सेशन",
"session.panel.reviewAndFiles": "समीक्षा और फ़ाइलें",
"session.error.notFound": "यह सेशन नहीं मिल सका",
"session.error.notFound.description": "यह टैब एक सेशन की ओर इशारा करता है जो अब इस सर्वर पर मौजूद नहीं है।",
"session.error.notFound.closeTab": "टैब बंद करें",
"session.error.serverConnection": "इस सर्वर से कनेक्ट नहीं किया जा सकता",
"session.review.filesChanged": "बदली गई फ़ाइलें: {{count}}",
"session.review.change.one": "परिवर्तन",
"session.review.change.other": "परिवर्तन",
"session.review.loadingChanges": "परिवर्तन लोड हो रहे हैं...",
"session.review.empty": "इस सेशन में अभी तक कोई बदलाव नहीं हुआ है",
"session.review.noVcs": "कोई Git संस्करण नियंत्रण प्रणाली नहीं पाई गई, परिवर्तन प्रदर्शित नहीं हुए",
"session.review.noVcs.createGit.title": "एक Git रिपॉजिटरी बनाएं",
"session.review.noVcs.createGit.description":
"इस प्रोजेक्ट में परिवर्तनों को ट्रैक करें, समीक्षा करें और पूर्ववत करें",
"session.review.noVcs.createGit.actionLoading": "Git रिपॉजिटरी बनाई जा रही है...",
"session.review.noVcs.createGit.action": "Git रिपॉजिटरी बनाएं",
"session.review.noSnapshot": "कॉन्फ़िगरेशन में स्नैपशॉट ट्रैकिंग अक्षम है, इसलिए सेशन परिवर्तन अनुपलब्ध हैं",
"session.review.noChanges": "कोई परिवर्तन नहीं",
"session.review.noUncommittedChanges": "अभी तक कोई अप्रतिबद्ध परिवर्तन नहीं",
"session.review.noBranchChanges": "अभी तक शाखा में कोई परिवर्तन नहीं",
"session.files.selectToOpen": "खोलने के लिए एक फ़ाइल का चयन करें",
"session.files.all": "सभी फ़ाइलें",
"session.files.empty": "कोई फ़ाइल नहीं",
"session.files.binaryContent": "बाइनरी फ़ाइल (सामग्री प्रदर्शित नहीं की जा सकती)",
"session.messages.renderEarlier": "पहले के संदेश रेंडर करें",
"session.messages.loadingEarlier": "पुराने संदेश लोड हो रहे हैं...",
"session.messages.loadEarlier": "पहले के संदेश लोड करें",
"session.messages.loading": "संदेश लोड हो रहे हैं...",
"session.messages.jumpToLatest": "नवीनतम पर जाएं",
"session.context.addToContext": "{{selection}} को कॉन्टेक्स्ट में जोड़ें",
"session.todo.title": "कार्य सूची",
"session.todo.collapse": "संकुचित करें",
"session.todo.expand": "विस्तृत करें",
"session.todo.progress": "{{total}} में से {{done}} कार्य पूरे हुए",
"session.question.progress": "{{total}} प्रश्नों में से {{current}}",
"session.question.minimize": "प्रश्न छोटा करें",
"session.question.restore": "प्रश्न पुनर्स्थापित करें",
"session.question.pending.one": "{{count}} लंबित प्रश्न",
"session.question.pending.other": "{{count}} लंबित प्रश्न",
"session.followupDock.summary.one": "कतार में {{count}} संदेश",
"session.followupDock.summary.other": "कतार में {{count}} संदेश",
"session.followupDock.sendNow": "अब भेजें",
"session.followupDock.edit": "संपादित करें",
"session.followupDock.collapse": "कतार के संदेश संकुचित करें",
"session.followupDock.expand": "कतार के संदेश विस्तृत करें",
"session.revertDock.summary.one": "{{count}} संदेश वापस लिया गया",
"session.revertDock.summary.other": "{{count}} संदेश वापस लिए गए",
"session.revertDock.collapse": "रोलबैक संदेशों को संक्षिप्त करें",
"session.revertDock.expand": "वापस लाये गए संदेशों का विस्तार करें",
"session.revertDock.restore": "संदेश पुनर्स्थापित करें",
"session.new.title": "कुछ भी बनाएँ",
"session.new.project.new": "नया प्रोजेक्ट",
"session.new.project.search": "प्रोजेक्ट खोजें",
"session.new.project.add": "प्रोजेक्ट जोड़ें",
"session.new.worktree.main": "मुख्य शाखा",
"session.new.worktree.mainWithBranch": "मुख्य शाखा ({{branch}})",
"session.new.worktree.create": "नया वर्कट्री बनाएं",
"session.new.workspace.runIn": "सेशन यहाँ चलाएँ",
"session.new.workspace.triggerLocal": "स्थानीय",
"session.new.workspace.local": "स्थानीय रिपॉजिटरी",
"session.new.workspace.existing": "वर्कस्पेस…",
"session.new.git.none": "कोई Git नहीं",
"session.new.lastModified": "अंतिम बार संशोधित",
"session.header.search.placeholder": "{{project}} खोजें",
"session.header.searchFiles": "फ़ाइलें खोजें",
"session.header.openIn": "में खोलें",
"session.header.open.action": "{{app}} खोलें",
"session.header.open.ariaLabel": "{{app}} में खोलें",
"session.header.open.menu": "विकल्प खोलें",
"session.header.open.copyPath": "पथ कॉपी करें",
"session.header.open.finder": "Finder",
"session.header.open.fileExplorer": "File Explorer",
"session.header.open.fileManager": "File Manager",
"session.header.reveal.finder": "Finder में प्रकट करें",
"session.header.reveal.fileExplorer": "File Explorer में प्रकट करें",
"session.header.reveal.containingFolder": "मूल फ़ोल्डर खोलें",
"session.header.open.app.vscode": "VS Code",
"session.header.open.app.cursor": "Cursor",
"session.header.open.app.zed": "Zed",
"session.header.open.app.textmate": "TextMate",
"session.header.open.app.antigravity": "Antigravity",
"session.header.open.app.terminal": "टर्मिनल",
"session.header.open.app.iterm2": "iTerm2",
"session.header.open.app.ghostty": "Ghostty",
"session.header.open.app.warp": "Warp",
"session.header.open.app.xcode": "Xcode",
"session.header.open.app.androidStudio": "Android Studio",
"session.header.open.app.powershell": "PowerShell",
"session.header.open.app.sublimeText": "Sublime Text",
"status.popover.trigger": "स्थिति",
"status.popover.ariaLabel": "सर्वर कॉन्फ़िगरेशन",
"status.popover.tab.servers": "सर्वर",
"status.popover.tab.mcp": "MCP",
"status.popover.tab.lsp": "LSP",
"status.popover.tab.plugins": "प्लग-इन",
"status.popover.action.manageServers": "सर्वर प्रबंधित करें",
"session.share.popover.title": "वेब पर प्रकाशित करें",
"session.share.popover.description.shared":
"यह सेशन वेब पर सार्वजनिक है। यह लिंक वाले किसी भी व्यक्ति के लिए सुलभ है।",
"session.share.popover.description.unshared":
"सेशन को वेब पर सार्वजनिक रूप से साझा करें। यह लिंक वाले किसी भी व्यक्ति के लिए सुलभ होगा।",
"session.share.action.share": "साझा करें",
"session.share.action.publish": "प्रकाशित करें",
"session.share.action.publishing": "प्रकाशित किया जा रहा है...",
"session.share.action.unpublish": "प्रकाशन हटाएँ",
"session.share.action.unpublishing": "प्रकाशन हटाया जा रहा है...",
"session.share.action.view": "देखें",
"session.share.copy.copied": "कॉपी किया गया",
"session.share.copy.copyLink": "लिंक कॉपी करें",
"lsp.tooltip.none": "कोई LSP सर्वर नहीं",
"lsp.label.connected": "{{count}} LSP",
"prompt.loading": "प्रॉम्प्ट लोड हो रहा है...",
"terminal.loading": "टर्मिनल लोड हो रहा है...",
"terminal.title": "टर्मिनल",
"terminal.title.numbered": "टर्मिनल {{number}}",
"terminal.close": "टर्मिनल बंद करें",
"terminal.connectionLost.title": "कनेक्शन टूट गया",
"terminal.connectionLost.abnormalClose": "WebSocket असामान्य रूप से बंद हुआ: {{code}}",
"terminal.connectionLost.description": "टर्मिनल कनेक्शन बाधित हो गया था। ऐसा तब हो सकता है जब सर्वर पुनरारंभ हो।",
"terminal.connectTicket.csrfError":
"ओरिजिन या CSRF जाँच के कारण PTY कनेक्ट टिकट अस्वीकार कर दिया गया। सर्वर का CORS कॉन्फ़िगरेशन जाँचें।",
"terminal.connectTicket.statusError": "PTY कनेक्ट टिकट विफल रहा (स्थिति: {{status}})",
"titlebar.update": "अपडेट करें",
"titlebar.updateVersion": "अपडेट करें {{version}}",
"common.closeTab": "टैब बंद करें",
"common.dismiss": "हटाएँ",
"common.moreCountSuffix": " (+{{count}} और)",
"common.requestFailed": "अनुरोध विफल रहा",
"common.moreOptions": "अधिक विकल्प",
"common.learnMore": "और अधिक जानें",
"common.rename": "नाम बदलें",
"common.reset": "रीसेट करें",
"common.archive": "संग्रहित करें",
"common.delete": "हटाएँ",
"common.close": "बंद करें",
"common.edit": "संपादित करें",
"common.loadMore": "और लोड करें",
"common.key.esc": "ESC",
"common.key.ctrl": "Ctrl",
"common.key.alt": "Alt",
"common.key.shift": "Shift",
"common.key.meta": "Meta",
"common.key.space": "Space",
"common.key.backspace": "Backspace",
"common.key.enter": "Enter",
"common.key.tab": "Tab",
"common.key.delete": "Delete",
"common.key.home": "Home",
"common.key.end": "End",
"common.key.pageUp": "Page Up",
"common.key.pageDown": "Page Down",
"common.key.insert": "Insert",
"common.unknown": "अज्ञात",
"common.time.justNow": "अभी-अभी",
"common.time.minutesAgo.short": "{{count}}m पहले",
"common.time.hoursAgo.short": "{{count}}h पहले",
"common.time.daysAgo.short": "{{count}}d पहले",
"sidebar.menu.toggle": "मेनू टॉगल करें",
"sidebar.nav.projectsAndSessions": "प्रोजेक्ट और सेशन",
"sidebar.settings": "सेटिंग्स",
"sidebar.help": "मदद",
"sidebar.workspaces.enable": "वर्कस्पेस सक्षम करें",
"sidebar.workspaces.disable": "वर्कस्पेस अक्षम करें",
"sidebar.gettingStarted.title": "शुरुआत करें",
"sidebar.gettingStarted.line1": "OpenCode में निःशुल्क मॉडल शामिल है ताकि आप तुरंत शुरू कर सकें।",
"sidebar.gettingStarted.line2": "Claude, GPT, Gemini आदि मॉडल उपयोग करने के लिए किसी भी प्रोवाइडर को कनेक्ट करें।",
"sidebar.project.recentSessions": "हाल ही में सेशन",
"sidebar.project.viewAllSessions": "सभी सेशन देखें",
"sidebar.project.clearNotifications": "सूचनाएँ साफ़ करें",
"sidebar.empty.title": "कोई प्रोजेक्ट खुला नहीं",
"sidebar.empty.description": "आरंभ करने के लिए एक प्रोजेक्ट खोलें",
"debugBar.ariaLabel": "विकास प्रदर्शन निदान",
"debugBar.na": "एन/ए",
"debugBar.nav.label": "NAV",
"debugBar.nav.tip":
"सेशन पृष्ठ को छूते हुए अंतिम पूर्ण मार्ग परिवर्तन, राउटर प्रारंभ से लेकर उसके व्यवस्थित होने के बाद पहले पेंट तक मापा जाता है।",
"debugBar.fps.label": "FPS",
"debugBar.fps.tip": "पिछले 5 सेकंड में फ़्रेम प्रति सेकंड रोलिंग।",
"debugBar.frame.label": "FRAME",
"debugBar.frame.tip": "पिछले 5 सेकंड में सबसे खराब फ़्रेम समय।",
"debugBar.jank.label": "JANK",
"debugBar.jank.tip": "अंतिम 5 सेकंड में 32 एमएस से अधिक फ़्रेम।",
"debugBar.long.label": "LONG",
"debugBar.long.tip": "पिछले 5 सेकंड में अवरुद्ध समय और लंबे कार्यों की संख्या। सबसे लंबा कार्य: {{max}}।",
"debugBar.delay.label": "DELAY",
"debugBar.delay.tip": "पिछले 5 सेकंड में सबसे खराब इनपुट विलंब देखा गया।",
"debugBar.inp.label": "INP",
"debugBar.inp.tip": "पिछले 5 सेकंड में अनुमानित इंटरैक्शन अवधि। यह INP जैसा है, आधिकारिक Web Vitals INP नहीं।",
"debugBar.cls.label": "CLS",
"debugBar.cls.tip": "वर्तमान ऐप जीवनकाल के लिए संचयी लेआउट बदलाव।",
"debugBar.mem.label": "MEM",
"debugBar.mem.tipUnavailable": "उपयोग किया गया JS हीप बनाम हीप सीमा। केवल Chromium।",
"debugBar.mem.tip": "उपयोग किया गया JS हीप बनाम हीप सीमा। {{limit}} में से {{used}}।",
"app.name.desktop": "OpenCode Desktop",
"settings.section.desktop": "डेस्कटॉप",
"settings.section.server": "सर्वर",
"settings.tab.general": "सामान्य",
"settings.tab.shortcuts": "शॉर्टकट",
"settings.desktop.section.wsl": "WSL",
"settings.desktop.wsl.title": "WSL एकीकरण",
"settings.desktop.wsl.description": "Windows पर WSL के अंदर OpenCode सर्वर चलाएँ।",
"settings.general.section.appearance": "उपस्थिति",
"settings.general.section.advanced": "उन्नत",
"settings.general.section.notifications": "सिस्टम सूचनाएँ",
"settings.general.section.updates": "अपडेट",
"settings.general.section.sounds": "ध्वनि प्रभाव",
"settings.general.section.feed": "फ़ीड",
"settings.general.section.display": "प्रदर्शन",
"settings.general.row.language.title": "भाषा",
"settings.general.row.language.description": "OpenCode के लिए प्रदर्शन भाषा बदलें",
"settings.general.row.shell.title": "टर्मिनल शेल",
"settings.general.row.shell.description": "शेल का उपयोग टर्मिनल और एजेंट टूल द्वारा किया जाता है",
"settings.general.row.shell.autoDefault": "स्वतः (डिफ़ॉल्ट)",
"settings.general.row.shell.terminalOnly": "केवल टर्मिनल",
"settings.general.row.appearance.title": "उपस्थिति",
"settings.general.row.appearance.description": "अनुकूलित करें कि OpenCode आपके डिवाइस पर कैसा दिखता है",
"settings.general.row.colorScheme.title": "रंग योजना",
"settings.general.row.colorScheme.description": "चुनें कि OpenCode सिस्टम, हल्की या गहरी थीम में से किसका उपयोग करे",
"settings.general.row.theme.title": "थीम",
"settings.general.row.theme.description": "अनुकूलित करें कि OpenCode की थीम कैसी है।",
"settings.general.row.font.title": "कोड फ़ॉन्ट",
"settings.general.row.font.description": "कोड ब्लॉक में प्रयुक्त फ़ॉन्ट को अनुकूलित करें",
"settings.general.row.terminalFont.title": "टर्मिनल फ़ॉन्ट",
"settings.general.row.terminalFont.description": "टर्मिनल में प्रयुक्त फ़ॉन्ट को अनुकूलित करें",
"settings.general.row.uiFont.title": "UI फ़ॉन्ट",
"settings.general.row.uiFont.description": "पूरे इंटरफ़ेस में उपयोग किए गए फ़ॉन्ट को कस्टमाइज़ करें",
"settings.general.row.followup.title": "अनुवर्ती व्यवहार",
"settings.general.row.followup.description":
"चुनें कि क्या अनुवर्ती प्रॉम्प्ट तुरंत आगे बढ़ेगा या कतार में प्रतीक्षा करेगा",
"settings.general.row.followup.option.queue": "कतार",
"settings.general.row.followup.option.steer": "तुरंत निर्देश दें",
"settings.general.row.showFileTree.title": "फ़ाइल वृक्ष",
"settings.general.row.showFileTree.description": "सेशन में फ़ाइल ट्री पैनल दिखाएँ",
"settings.general.row.showNavigation.title": "नेविगेशन नियंत्रण",
"settings.general.row.showNavigation.description": "डेस्कटॉप टाइटल बार में पीछे और आगे के बटन दिखाएँ",
"settings.general.row.showSearch.title": "कमांड पैलेट",
"settings.general.row.showSearch.description": "टाइटल बार में खोज और कमांड पैलेट बटन दिखाएँ",
"settings.general.row.showTerminal.title": "टर्मिनल",
"settings.general.row.showTerminal.description": "डेस्कटॉप टाइटल बार में टर्मिनल बटन दिखाएँ",
"settings.general.row.showStatus.title": "सर्वर की स्थिति",
"settings.general.row.showStatus.description": "टाइटल बार में सर्वर स्थिति बटन दिखाएँ",
"settings.general.row.mobileTitlebarBottom.title": "निचला नेविगेशन",
"settings.general.row.mobileTitlebarBottom.description": "मोबाइल पर स्क्रीन के नीचे टाइटल बार और सेशन टैब रखें",
"settings.general.row.showCustomAgents.title": "एजेंट दिखाएँ",
"settings.general.row.showCustomAgents.description":
"कंपोज़र में एजेंट के बीच स्विच करें। छिपाए जाने पर, डिफ़ॉल्ट रूप से बिल्ड एजेंट हो जाता है।",
"settings.general.row.reasoningSummaries.title": "तर्क सारांश दिखाएँ",
"settings.general.row.reasoningSummaries.description": "टाइमलाइन में मॉडल तर्क सारांश प्रदर्शित करें",
"settings.general.row.shellToolPartsExpanded.title": "शेल टूल पार्ट्स का विस्तार करें",
"settings.general.row.shellToolPartsExpanded.description":
"टाइमलाइन में डिफ़ॉल्ट रूप से विस्तारित शेल टूल पार्ट्स दिखाएं",
"settings.general.row.editToolPartsExpanded.title": "संपादन टूल भागों का विस्तार करें",
"settings.general.row.editToolPartsExpanded.description":
"टाइमलाइन में डिफ़ॉल्ट रूप से विस्तारित संपादित करें, लिखें और पैच टूल पार्ट्स दिखाएं",
"settings.general.row.newInterface.title": "नया लेआउट",
"settings.general.row.newInterface.badge": "नया",
"settings.general.row.newInterface.description":
"नए टैब और होम लेआउट का उपयोग करें. सीमित समय के लिए लेआउट के बीच स्विच करें।",
"settings.general.row.newInterfaceNotice.title": "अब आप नए लेआउट का उपयोग कर रहे हैं",
"settings.general.row.newInterfaceNotice.description": "पिछला लेआउट अब उपलब्ध नहीं है",
"settings.general.row.newInterfaceNotice.dismiss": "हटाएँ",
"settings.general.row.pinchZoom.title": "ज़ूम करने के लिए पिंच करें",
"settings.general.row.pinchZoom.description": "ट्रैकपैड पिंच और Ctrl-स्क्रॉल जेस्चर को ज़ूम करने की अनुमति दें",
"settings.general.row.wayland.title": "नेटिव Wayland का उपयोग करें",
"settings.general.row.wayland.description": "Wayland पर X11 फ़ॉलबैक अक्षम करें। पुनः आरंभ करना आवश्यक है।",
"settings.general.row.wayland.tooltip":
"अलग-अलग रीफ़्रेश दर वाले मॉनिटर के साथ Linux पर नेटिव Wayland अधिक स्थिर हो सकता है।",
"settings.general.row.releaseNotes.title": "रिलीज़ नोट्स",
"settings.general.row.releaseNotes.description": "अपडेट के बाद 'नया क्या है' पॉपअप दिखाएँ",
"settings.updates.row.startup.title": "स्टार्टअप पर अपडेट की जाँच करें",
"settings.updates.row.startup.description": "OpenCode लॉन्च होने पर अपने-आप अपडेट की जाँच करें",
"settings.updates.row.check.title": "अद्यतन के लिए जाँच",
"settings.updates.row.check.description": "अपडेट के लिए मैन्युअल रूप से जाँच करें और यदि उपलब्ध हो तो इंस्टॉल करें",
"settings.updates.action.checkNow": "अभी जाँचें",
"settings.updates.action.checking": "जाँच हो रही है...",
"settings.updates.action.downloading": "डाउनलोड हो रहा है...",
"settings.updates.action.installing": "स्थापित किया जा रहा है...",
"settings.updates.toast.latest.title": "आपके पास नवीनतम संस्करण है",
"settings.updates.toast.latest.description": "आप OpenCode का नवीनतम संस्करण चला रहे हैं।",
"sound.option.none": "कोई नहीं",
"sound.option.alert01": "Alert 01",
"sound.option.alert02": "Alert 02",
"sound.option.alert03": "Alert 03",
"sound.option.alert04": "Alert 04",
"sound.option.alert05": "Alert 05",
"sound.option.alert06": "Alert 06",
"sound.option.alert07": "Alert 07",
"sound.option.alert08": "Alert 08",
"sound.option.alert09": "Alert 09",
"sound.option.alert10": "Alert 10",
"sound.option.bipbop01": "Bip-bop 01",
"sound.option.bipbop02": "Bip-bop 02",
"sound.option.bipbop03": "Bip-bop 03",
"sound.option.bipbop04": "Bip-bop 04",
"sound.option.bipbop05": "Bip-bop 05",
"sound.option.bipbop06": "Bip-bop 06",
"sound.option.bipbop07": "Bip-bop 07",
"sound.option.bipbop08": "Bip-bop 08",
"sound.option.bipbop09": "Bip-bop 09",
"sound.option.bipbop10": "Bip-bop 10",
"sound.option.staplebops01": "Staplebops 01",
"sound.option.staplebops02": "Staplebops 02",
"sound.option.staplebops03": "Staplebops 03",
"sound.option.staplebops04": "Staplebops 04",
"sound.option.staplebops05": "Staplebops 05",
"sound.option.staplebops06": "Staplebops 06",
"sound.option.staplebops07": "Staplebops 07",
"sound.option.nope01": "Nope 01",
"sound.option.nope02": "Nope 02",
"sound.option.nope03": "Nope 03",
"sound.option.nope04": "Nope 04",
"sound.option.nope05": "Nope 05",
"sound.option.nope06": "Nope 06",
"sound.option.nope07": "Nope 07",
"sound.option.nope08": "Nope 08",
"sound.option.nope09": "Nope 09",
"sound.option.nope10": "Nope 10",
"sound.option.nope11": "Nope 11",
"sound.option.nope12": "Nope 12",
"sound.option.yup01": "Yup 01",
"sound.option.yup02": "Yup 02",
"sound.option.yup03": "Yup 03",
"sound.option.yup04": "Yup 04",
"sound.option.yup05": "Yup 05",
"sound.option.yup06": "Yup 06",
"settings.general.notifications.agent.title": "एजेंट",
"settings.general.notifications.agent.description":
"जब एजेंट पूरा हो जाए या ध्यान देने की आवश्यकता हो तो सिस्टम अधिसूचना दिखाएं",
"settings.general.notifications.permissions.title": "अनुमतियाँ",
"settings.general.notifications.permissions.description": "अनुमति की आवश्यकता होने पर सिस्टम अधिसूचना दिखाएं",
"settings.general.notifications.errors.title": "त्रुटियाँ",
"settings.general.notifications.errors.description": "त्रुटि होने पर सिस्टम अधिसूचना दिखाएं",
"settings.general.sounds.agent.title": "एजेंट",
"settings.general.sounds.agent.description": "जब एजेंट पूरा हो जाए या ध्यान देने की आवश्यकता हो तो ध्वनि बजाएं",
"settings.general.sounds.permissions.title": "अनुमतियाँ",
"settings.general.sounds.permissions.description": "अनुमति की आवश्यकता होने पर ध्वनि बजाएं",
"settings.general.sounds.errors.title": "त्रुटियाँ",
"settings.general.sounds.errors.description": "कोई त्रुटि होने पर ध्वनि बजाएं",
"settings.shortcuts.title": "कीबोर्ड शॉर्टकट",
"settings.shortcuts.reset.button": "डिफ़ॉल्ट पर पुनः सेट करें",
"settings.shortcuts.reset.toast.title": "शॉर्टकट रीसेट",
"settings.shortcuts.reset.toast.description": "कीबोर्ड शॉर्टकट को डिफ़ॉल्ट पर रीसेट कर दिया गया है।",
"settings.shortcuts.conflict.title": "शॉर्टकट पहले से ही उपयोग में है",
"settings.shortcuts.conflict.description": "{{keybind}} पहले से ही {{titles}} को सौंपा गया है।",
"settings.shortcuts.unassigned": "सौंपे नहीं गए",
"settings.shortcuts.pressKeys": "कुंजियाँ दबाएँ",
"settings.shortcuts.search.placeholder": "शॉर्टकट खोजें",
"settings.shortcuts.search.empty": "कोई शॉर्टकट नहीं मिला",
"settings.shortcuts.group.general": "सामान्य",
"settings.shortcuts.group.session": "सेशन",
"settings.shortcuts.group.navigation": "नेविगेशन",
"settings.shortcuts.group.modelAndAgent": "मॉडल और एजेंट",
"settings.shortcuts.group.terminal": "टर्मिनल",
"settings.shortcuts.group.prompt": "प्रॉम्प्ट",
"settings.providers.title": "प्रोवाइडर",
"settings.providers.description": "प्रोवाइडर सेटिंग्स यहां कॉन्फ़िगर करने योग्य होंगी।",
"settings.providers.section.connected": "कनेक्टेड प्रोवाइडर",
"settings.providers.connected.empty": "कोई कनेक्टेड प्रोवाइडर नहीं",
"settings.providers.connected.environmentDescription": "आपके एनवायरनमेंट वेरिएबल से कनेक्ट किया गया",
"settings.providers.section.popular": "लोकप्रिय प्रोवाइडर",
"settings.providers.custom.description": "आधार URL द्वारा एक OpenAI-संगत प्रोवाइडर जोड़ें।",
"settings.providers.tag.environment": "एनवायरनमेंट",
"settings.providers.tag.config": "कॉन्फ़िगरेशन",
"settings.providers.tag.custom": "कस्टम",
"settings.providers.tag.other": "अन्य",
"settings.models.title": "मॉडल",
"settings.models.description": "मॉडल सेटिंग्स यहां कॉन्फ़िगर करने योग्य होंगी।",
"settings.agents.title": "एजेंट",
"settings.agents.description": "एजेंट सेटिंग्स यहां कॉन्फ़िगर करने योग्य होंगी।",
"settings.commands.title": "कमांड",
"settings.commands.description": "कमांड सेटिंग्स यहां कॉन्फ़िगर करने योग्य होंगी।",
"settings.mcp.title": "MCP",
"settings.mcp.description": "MCP सेटिंग्स यहां कॉन्फ़िगर करने योग्य होंगी।",
"settings.permissions.title": "अनुमतियाँ",
"settings.permissions.description": "नियंत्रित करें कि सर्वर डिफ़ॉल्ट रूप से कौन से टूल का उपयोग कर सकता है।",
"settings.permissions.section.tools": "टूल",
"settings.permissions.toast.updateFailed.title": "अनुमतियाँ अद्यतन करने में विफल",
"settings.permissions.action.allow": "अनुमति दें",
"settings.permissions.action.ask": "पूछें",
"settings.permissions.action.deny": "अस्वीकार करें",
"settings.permissions.tool.read.title": "पढ़ें",
"settings.permissions.tool.read.description": "फ़ाइल पढ़ना (फ़ाइल पथ से मेल खाता है)",
"settings.permissions.tool.edit.title": "संपादित करें",
"settings.permissions.tool.edit.description": "संपादन, लेखन और पैच सहित फ़ाइलों को संशोधित करें",
"settings.permissions.tool.glob.title": "Glob",
"settings.permissions.tool.glob.description": "ग्लोब पैटर्न का उपयोग करके फ़ाइलों का मिलान करें",
"settings.permissions.tool.grep.title": "Grep",
"settings.permissions.tool.grep.description": "रेगुलर एक्सप्रेशन का उपयोग करके फ़ाइल सामग्री खोजें",
"settings.permissions.tool.list.title": "सूची",
"settings.permissions.tool.list.description": "किसी निर्देशिका में फ़ाइलों की सूची बनाएं",
"settings.permissions.tool.bash.title": "Bash",
"settings.permissions.tool.bash.description": "शेल कमांड चलाएँ",
"settings.permissions.tool.task.title": "कार्य",
"settings.permissions.tool.task.description": "उप-एजेंट लॉन्च करें",
"settings.permissions.tool.skill.title": "कौशल",
"settings.permissions.tool.skill.description": "किसी कौशल को नाम से लोड करें",
"settings.permissions.tool.lsp.title": "LSP",
"settings.permissions.tool.lsp.description": "भाषा सर्वर क्वेरी चलाएँ",
"settings.permissions.tool.todowrite.title": "Todo Write",
"settings.permissions.tool.todowrite.description": "कार्य सूची अद्यतन करें",
"settings.permissions.tool.webfetch.title": "Web Fetch",
"settings.permissions.tool.webfetch.description": "URL से सामग्री प्राप्त करें",
"settings.permissions.tool.websearch.title": "Web Search",
"settings.permissions.tool.websearch.description": "वेब खोज",
"settings.permissions.tool.external_directory.title": "बाह्य निर्देशिका",
"settings.permissions.tool.external_directory.description": "प्रोजेक्ट निर्देशिका के बाहर फ़ाइलों तक पहुँचें",
"settings.permissions.tool.doom_loop.title": "Doom Loop",
"settings.permissions.tool.doom_loop.description": "समान इनपुट के साथ बार-बार टूल कॉल का पता लगाएं",
"session.delete.failed.title": "सेशन को हटाने में विफल",
"session.delete.title": "सेशन हटाएं",
"session.delete.confirm": 'सेशन "{{name}}" हटाएं?',
"session.delete.button": "सेशन हटाएं",
"workspace.new": "नया वर्कस्पेस",
"workspace.type.local": "स्थानीय",
"workspace.type.sandbox": "सैंडबॉक्स",
"workspace.create.failed.title": "वर्कस्पेस बनाने में विफल",
"workspace.delete.failed.title": "वर्कस्पेस को हटाने में विफल",
"workspace.resetting.title": "वर्कस्पेस को रीसेट करना",
"workspace.resetting.description": "इसमें एक मिनट लग सकता है।",
"workspace.reset.failed.title": "वर्कस्पेस को रीसेट करने में विफल",
"workspace.reset.success.title": "वर्कस्पेस रीसेट",
"workspace.reset.success.description": "वर्कस्पेस अब डिफ़ॉल्ट शाखा से मेल खाता है।",
"workspace.error.stillPreparing": "वर्कस्पेस अभी भी तैयारी कर रहा है",
"workspace.status.checking": "मर्ज न किए गए परिवर्तनों की जाँच हो रही है...",
"workspace.status.error": "Git स्थिति सत्यापित नहीं की जा सकी।",
"workspace.status.clean": "मर्ज न किए गए कोई परिवर्तन नहीं मिले।",
"workspace.status.dirty": "इस वर्कस्पेस में मर्ज न किए गए परिवर्तन मिले।",
"workspace.delete.title": "वर्कस्पेस हटाएं",
"workspace.delete.confirm": 'वर्कस्पेस "{{name}}" हटाएं?',
"workspace.delete.button": "वर्कस्पेस हटाएं",
"workspace.reset.title": "वर्कस्पेस रीसेट करें",
"workspace.reset.confirm": 'वर्कस्पेस "{{name}}" रीसेट करें?',
"workspace.reset.button": "वर्कस्पेस रीसेट करें",
"workspace.reset.archived.none": "कोई सक्रिय सेशन संग्रहित नहीं किया जाएगा।",
"workspace.reset.archived.one": "1 सेशन संग्रहित किया जाएगा।",
"workspace.reset.archived.many": "{{count}} सेशन संग्रहित किए जाएँगे।",
"workspace.reset.note": "यह डिफ़ॉल्ट शाखा से मिलान करने के लिए वर्कस्पेस को रीसेट कर देगा।",
}
+1229
View File
@@ -0,0 +1,1229 @@
export const dict = {
"desktop.menu.app": "OpenCode",
"desktop.menu.file": "Berkas",
"desktop.menu.edit": "Sunting",
"desktop.menu.view": "Tampilan",
"desktop.menu.go": "Navigasi",
"desktop.menu.window": "Jendela",
"desktop.menu.help": "Bantuan",
"desktop.menu.checkForUpdates": "Periksa pembaruan...",
"desktop.menu.settings": "Pengaturan",
"desktop.menu.reloadWebview": "Muat ulang tampilan web",
"desktop.menu.restart": "Mulai ulang",
"desktop.menu.exportLogs": "Ekspor log...",
"desktop.menu.newSession": "Sesi baru",
"desktop.menu.openProject": "Buka proyek...",
"desktop.menu.newWindow": "Jendela baru",
"desktop.menu.closeWindow": "Tutup jendela",
"desktop.menu.undo": "Urungkan",
"desktop.menu.redo": "Ulangi",
"desktop.menu.cut": "Potong",
"desktop.menu.copy": "Salin",
"desktop.menu.paste": "Tempel",
"desktop.menu.delete": "Hapus",
"desktop.menu.selectAll": "Pilih semua",
"desktop.menu.toggleSidebar": "Alihkan panel samping",
"desktop.menu.toggleTerminal": "Alihkan terminal",
"desktop.menu.toggleFileTree": "Alihkan pohon berkas",
"desktop.menu.reload": "Muat ulang",
"desktop.menu.toggleDeveloperTools": "Alihkan alat pengembang",
"desktop.menu.actualSize": "Ukuran sebenarnya",
"desktop.menu.zoomIn": "Perbesar",
"desktop.menu.zoomOut": "Perkecil",
"desktop.menu.toggleFullScreen": "Alihkan layar penuh",
"desktop.menu.back": "Kembali",
"desktop.menu.forward": "Maju",
"desktop.menu.previousSession": "Sesi sebelumnya",
"desktop.menu.nextSession": "Sesi berikutnya",
"desktop.menu.previousProject": "Proyek sebelumnya",
"desktop.menu.nextProject": "Proyek berikutnya",
"desktop.menu.minimize": "Minimalkan",
"desktop.menu.maximize": "Maksimalkan",
"desktop.menu.documentation": "Dokumentasi OpenCode",
"desktop.menu.supportForum": "Forum dukungan",
"desktop.menu.shareFeedback": "Bagikan umpan balik",
"desktop.menu.reportBug": "Laporkan bug",
"desktop.menu.ariaLabel": "Menu OpenCode",
"desktop.updater.dialog.checkFailed.message": "Pemeriksaan pembaruan gagal.",
"desktop.updater.dialog.checkFailed.title": "Kesalahan pembaruan",
"desktop.updater.dialog.upToDate.message": "Versi Anda sudah terbaru.",
"desktop.updater.dialog.upToDate.title": "Tidak ada pembaruan",
"desktop.updater.dialog.ready.message": "Pembaruan {{version}} telah diunduh. Mulai ulang sekarang?",
"desktop.updater.dialog.ready.title": "Pembaruan siap",
"desktop.updater.dialog.restart": "Mulai ulang",
"desktop.updater.dialog.later": "Nanti",
"desktop.recovery.action.relaunch": "Luncurkan ulang",
"desktop.recovery.action.exportLogs": "Ekspor log",
"desktop.recovery.action.keepWaiting": "Tetap tunggu",
"desktop.recovery.action.quit": "Keluar",
"desktop.recovery.loadFailed": "OpenCode gagal dimuat",
"desktop.recovery.terminated": "Jendela OpenCode berhenti secara tidak terduga",
"desktop.recovery.unresponsive": "OpenCode tidak merespons",
"desktop.recovery.unresponsive.detail": "Anda dapat meluncurkan ulang aplikasi, membuka log, atau tetap menunggu.",
"desktop.recovery.loadFailed.detail": "Jendela: {{window}}\nURL: {{url}}\nKesalahan: {{code}} {{description}}",
"desktop.recovery.terminated.detail": "Jendela: {{window}}\nAlasan: {{reason}}\nKode: {{code}}",
"desktop.recovery.unknown": "<tidak diketahui>",
"desktop.dialog.chooseFolder": "Pilih folder",
"desktop.dialog.chooseFile": "Pilih berkas",
"desktop.dialog.saveFile": "Simpan berkas",
"desktop.dialog.files": "Berkas",
"desktop.server.local": "Server lokal",
"desktop.wsl.error.windowsOnly": "WSL hanya tersedia di Windows",
"desktop.wsl.error.unavailable": "WSL tidak tersedia",
"desktop.wsl.error.listInstalled": "Gagal menampilkan daftar distro WSL yang terinstal",
"desktop.wsl.error.listOnline": "Gagal menampilkan daftar distro WSL daring",
"desktop.wsl.error.executeDistro": "Tidak dapat menjalankan perintah di distro",
"desktop.wsl.error.installWsl": "Instalasi WSL gagal",
"desktop.wsl.error.installDistro": "Gagal menginstal distro: {{distro}}",
"desktop.wsl.error.installOpencode": "Instalasi OpenCode gagal",
"desktop.wsl.error.alreadyAdded": "{{distro}} sudah ditambahkan",
"desktop.wsl.error.opencodeMissing": "opencode belum terinstal di distro ini",
"desktop.wsl.error.opencodeCannotRun": "opencode telah terinstal, tetapi tidak dapat dijalankan",
"desktop.wsl.error.opencodeNotInstalled": "OpenCode belum terinstal di {{distro}}",
"desktop.wsl.error.updateVersion":
"Pembaruan OpenCode selesai, tetapi {{distro}} masih melaporkan {{installed}}; seharusnya {{expected}}",
"desktop.wsl.error.noVersion": "tanpa versi",
"desktop.wsl.error.serverExited": "Server WSL berhenti setelah dimulai (kode={{code}} sinyal={{signal}})",
"desktop.wsl.error.serverExitedBeforeHealthy":
"Server WSL berhenti sebelum siap (kode={{code}} sinyal={{signal}}){{output}}",
"desktop.wsl.error.healthTimeout":
"Pemeriksaan kesehatan sidecar untuk {{distro}} kehabisan waktu setelah {{timeout}}ms",
"desktop.wsl.error.commandTimeout": "{{command}} {{args}} kehabisan waktu setelah {{timeout}}ms",
"desktop.wsl.error.failedPort": "Gagal mendapatkan porta",
"desktop.picker.error.notSelected": "Berkas tidak dipilih melalui pemilih",
"desktop.picker.error.sizeLimit": "Lampiran yang dipilih melebihi batas {{limit}} MB",
"command.category.suggested": "Disarankan",
"command.category.view": "Tampilan",
"command.category.project": "Proyek",
"command.category.provider": "Penyedia",
"command.category.server": "Server",
"command.category.session": "Sesi",
"command.category.theme": "Tema",
"command.category.language": "Bahasa",
"command.category.file": "Berkas",
"command.category.context": "Konteks",
"command.category.terminal": "Terminal",
"command.category.model": "Model",
"command.category.mcp": "MCP",
"command.category.agent": "Agen",
"command.category.permissions": "Izin",
"command.category.workspace": "Ruang kerja",
"command.category.settings": "Pengaturan",
"command.logs.export": "Ekspor log",
"theme.scheme.system": "Sistem",
"theme.scheme.light": "Terang",
"theme.scheme.dark": "Gelap",
"command.sidebar.toggle": "Alihkan panel samping",
"command.project.open": "Buka proyek",
"command.project.previous": "Proyek sebelumnya",
"command.project.next": "Proyek berikutnya",
"command.project.index": "Beralih ke proyek {{index}}",
"command.provider.connect": "Hubungkan penyedia",
"command.server.switch": "Ganti server",
"command.settings.open": "Buka pengaturan",
"command.session.previous": "Sesi sebelumnya",
"command.session.next": "Sesi berikutnya",
"command.session.previous.unseen": "Sesi sebelumnya yang belum dibaca",
"command.session.next.unseen": "Sesi berikutnya yang belum dibaca",
"command.session.archive": "Arsipkan sesi",
"command.palette": "Palet perintah",
"command.theme.cycle": "Ganti tema",
"command.theme.set": "Gunakan tema: {{theme}}",
"command.theme.scheme.cycle": "Ganti skema warna",
"command.theme.scheme.set": "Gunakan skema warna: {{scheme}}",
"command.language.cycle": "Ganti bahasa",
"command.language.set": "Gunakan bahasa: {{language}}",
"command.session.new": "Sesi baru",
"command.file.open": "Buka berkas",
"command.tab.close": "Tutup tab",
"command.tab.reopenClosed": "Buka kembali tab yang ditutup",
"command.context.addSelection": "Tambahkan pilihan ke konteks",
"command.context.addSelection.description": "Tambahkan baris yang dipilih dari berkas saat ini",
"command.input.focus": "Fokuskan masukan",
"command.terminal.toggle": "Alihkan terminal",
"command.fileTree.toggle": "Alihkan pohon berkas",
"command.review.toggle": "Alihkan tinjauan",
"command.terminal.new": "Terminal baru",
"command.terminal.new.description": "Buat tab terminal baru",
"command.steps.toggle": "Alihkan langkah",
"command.steps.toggle.description": "Tampilkan atau sembunyikan langkah untuk pesan saat ini",
"command.message.previous": "Pesan sebelumnya",
"command.message.previous.description": "Pergi ke pesan pengguna sebelumnya",
"command.message.next": "Pesan berikutnya",
"command.message.next.description": "Pergi ke pesan pengguna berikutnya",
"command.model.choose": "Pilih model",
"command.model.choose.description": "Pilih model yang berbeda",
"command.mcp.toggle": "Alihkan MCP",
"command.mcp.toggle.description": "Alihkan MCP",
"command.agent.cycle": "Ganti agen",
"command.agent.cycle.description": "Beralih ke agen berikutnya",
"command.agent.cycle.reverse": "Ganti agen mundur",
"command.agent.cycle.reverse.description": "Beralih ke agen sebelumnya",
"command.model.variant.cycle": "Ganti usaha berpikir",
"command.model.variant.cycle.description": "Beralih ke tingkat usaha berikutnya",
"command.prompt.mode.shell": "Shell",
"command.prompt.mode.normal": "Prompt",
"command.permissions.autoaccept.enable": "Terima izin otomatis",
"command.permissions.autoaccept.disable": "Hentikan penerimaan izin otomatis",
"command.workspace.toggle": "Alihkan ruang kerja",
"command.workspace.toggle.description": "Aktifkan atau nonaktifkan beberapa ruang kerja di panel samping",
"command.session.undo": "Urungkan",
"command.session.undo.description": "Urungkan pesan terakhir",
"command.session.redo": "Ulangi",
"command.session.redo.description": "Ulangi pesan yang diurungkan",
"command.session.compact": "Ringkas sesi",
"command.session.compact.description": "Ringkas sesi untuk mengurangi ukuran konteks",
"command.session.fork": "Fork dari pesan",
"command.session.fork.description": "Buat sesi baru dari pesan sebelumnya",
"command.session.share": "Bagikan sesi",
"command.session.share.description": "Bagikan sesi ini dan salin URL ke papan klip",
"command.session.unshare": "Hentikan berbagi",
"command.session.unshare.description": "Hentikan berbagi sesi ini",
"palette.search.placeholder": "Cari berkas, perintah, dan sesi",
"palette.search.placeholder.home": "Cari perintah dan sesi",
"palette.empty": "Hasil tidak ditemukan",
"palette.group.commands": "Perintah",
"palette.group.files": "Berkas",
"dialog.provider.search.placeholder": "Cari penyedia",
"dialog.provider.empty": "Penyedia tidak ditemukan",
"dialog.provider.group.popular": "Populer",
"dialog.provider.group.other": "Lainnya",
"dialog.provider.custom.label": "Penyedia kustom yang kompatibel dengan OpenAI",
"dialog.provider.tag.recommended": "Direkomendasikan",
"dialog.provider.opencode.note": "Model pilihan, termasuk Claude, GPT, Gemini, dan lainnya",
"dialog.provider.opencode.tagline": "Model andal yang dioptimalkan",
"dialog.provider.opencodeGo.tagline": "Langganan terjangkau untuk semua orang",
"dialog.provider.anthropic.note": "Akses langsung ke model Claude, termasuk Pro dan Max",
"dialog.provider.copilot.note": "Model AI untuk bantuan pengodean melalui GitHub Copilot",
"dialog.provider.openai.note": "Model GPT untuk tugas AI umum yang cepat dan mumpuni",
"dialog.provider.google.note": "Model Gemini untuk respons cepat dan terstruktur",
"dialog.provider.openrouter.note": "Akses semua model yang didukung dari satu penyedia",
"dialog.provider.vercel.note": "Akses terpadu ke model AI dengan perutean cerdas",
"dialog.model.select.title": "Pilih model",
"dialog.model.search.placeholder": "Cari model",
"dialog.model.empty": "Tidak ada hasil model",
"dialog.model.manage": "Kelola model",
"dialog.model.manage.description": "Sesuaikan model mana yang muncul di pemilih model.",
"dialog.model.manage.provider.toggle": "Alihkan semua model {{provider}}",
"dialog.model.unpaid.freeModels.title": "Model gratis disediakan oleh OpenCode",
"dialog.model.unpaid.addMore.title": "Tambahkan lebih banyak model dari penyedia populer",
"dialog.model.unpaid.viewMoreProviders": "Lihat 70+ penyedia lainnya",
"dialog.provider.viewAll": "Tampilkan lebih banyak penyedia",
"provider.connect.title": "Hubungkan {{provider}}",
"provider.connect.title.anthropicProMax": "Masuk dengan Claude Pro/Max",
"provider.connect.selectMethod": "Pilih metode masuk untuk {{provider}}.",
"provider.connect.method.apiKey": "Kunci API",
"provider.connect.method.browser": "Peramban",
"provider.connect.method.headless": "Headless",
"provider.connect.status.inProgress": "Otorisasi sedang berlangsung...",
"provider.connect.status.waiting": "Menunggu otorisasi...",
"provider.connect.status.failed": "Otorisasi gagal: {{error}}",
"provider.connect.apiKey.description":
"Masukkan kunci API {{provider}} untuk menghubungkan akun Anda dan gunakan model {{provider}} di OpenCode.",
"provider.connect.apiKey.label": "Kunci API {{provider}}",
"provider.connect.apiKey.placeholder": "Kunci API",
"provider.connect.apiKey.required": "Kunci API diperlukan",
"provider.connect.opencodeZen.line1":
"OpenCode Zen memberi Anda akses ke serangkaian model andal yang dioptimalkan untuk agen pengodean.",
"provider.connect.opencodeZen.line2":
"Dengan satu kunci API, Anda akan mendapatkan akses ke model seperti Claude, GPT, Gemini, GLM dan lainnya.",
"provider.connect.opencodeZen.visit.prefix": "Kunjungi ",
"provider.connect.opencodeZen.visit.link": "opencode.ai/zen",
"provider.connect.opencodeZen.visit.suffix": " untuk mendapatkan kunci API Anda.",
"provider.connect.oauth.code.visit.prefix": "Kunjungi ",
"provider.connect.oauth.code.visit.link": "tautan ini",
"provider.connect.oauth.code.visit.suffix":
" untuk mendapatkan kode otorisasi guna menghubungkan akun Anda dan menggunakan model {{provider}} di OpenCode.",
"provider.connect.oauth.code.label": "Kode otorisasi {{method}}",
"provider.connect.oauth.code.placeholder": "Kode otorisasi",
"provider.connect.oauth.code.required": "Kode otorisasi diperlukan",
"provider.connect.oauth.code.invalid": "Kode otorisasi tidak valid",
"provider.connect.oauth.auto.visit.prefix": "Kunjungi ",
"provider.connect.oauth.auto.visit.link": "tautan ini",
"provider.connect.oauth.auto.visit.suffix":
" dan masukkan kode di bawah untuk menghubungkan akun dan menggunakan model {{provider}} di OpenCode.",
"provider.connect.oauth.auto.confirmationCode": "Kode konfirmasi",
"provider.connect.toast.connected.title": "{{provider}} terhubung",
"provider.connect.toast.connected.description": "Model {{provider}} sekarang tersedia untuk digunakan.",
"provider.custom.title": "Penyedia kustom",
"provider.custom.unavailable": "Penyedia kustom tidak tersedia di server ini",
"provider.custom.description.prefix": "Konfigurasikan penyedia yang kompatibel dengan OpenAI. Lihat ",
"provider.custom.description.link": "dokumen konfigurasi penyedia",
"provider.custom.description.suffix": ".",
"provider.custom.field.providerID.label": "ID Penyedia",
"provider.custom.field.providerID.placeholder": "penyediaku",
"provider.custom.field.providerID.description": "Huruf kecil, angka, tanda hubung, atau garis bawah",
"provider.custom.field.name.label": "Nama tampilan",
"provider.custom.field.name.placeholder": "Penyedia AI Saya",
"provider.custom.field.baseURL.label": "URL Dasar",
"provider.custom.field.baseURL.placeholder": "https://api.penyediaku.com/v1",
"provider.custom.field.apiKey.label": "Kunci API",
"provider.custom.field.apiKey.placeholder": "Kunci API",
"provider.custom.field.apiKey.description": "Opsional. Kosongkan jika Anda mengelola autentikasi melalui tajuk.",
"provider.custom.models.label": "Model",
"provider.custom.models.id.label": "ID",
"provider.custom.models.id.placeholder": "model-id",
"provider.custom.models.name.label": "Nama",
"provider.custom.models.name.placeholder": "Nama Tampilan",
"provider.custom.models.remove": "Hapus model",
"provider.custom.models.add": "Tambah model",
"provider.custom.headers.label": "Tajuk (opsional)",
"provider.custom.headers.key.label": "Tajuk",
"provider.custom.headers.key.placeholder": "Nama-Tajuk",
"provider.custom.headers.value.label": "Nilai",
"provider.custom.headers.value.placeholder": "nilai",
"provider.custom.headers.remove": "Hapus tajuk",
"provider.custom.headers.add": "Tambah tajuk",
"provider.custom.error.providerID.required": "ID Penyedia diperlukan",
"provider.custom.error.providerID.format": "Gunakan huruf kecil, angka, tanda hubung, atau garis bawah",
"provider.custom.error.providerID.exists": "ID penyedia tersebut sudah ada",
"provider.custom.error.name.required": "Nama tampilan diperlukan",
"provider.custom.error.baseURL.required": "URL Dasar diperlukan",
"provider.custom.error.baseURL.format": "Harus dimulai dengan http:// atau https://",
"provider.custom.error.required": "Diperlukan",
"provider.custom.error.duplicate": "Duplikat",
"provider.disconnect.toast.disconnected.title": "{{provider}} terputus",
"provider.disconnect.toast.disconnected.description": "Model {{provider}} tidak lagi tersedia.",
"model.tag.free": "Gratis",
"model.tag.latest": "Terbaru",
"model.provider.anthropic": "Anthropic",
"model.provider.openai": "OpenAI",
"model.provider.google": "Google",
"model.provider.xai": "xAI",
"model.provider.meta": "Meta",
"model.input.text": "teks",
"model.input.image": "gambar",
"model.input.audio": "audio",
"model.input.video": "video",
"model.input.pdf": "pdf",
"model.tooltip.allows": "Mengizinkan: {{inputs}}",
"model.tooltip.context.label": "Konteks",
"model.tooltip.inputs": "Masukan",
"model.tooltip.model": "Model",
"model.tooltip.provider": "Penyedia",
"model.tooltip.reasoning": "Penalaran",
"model.tooltip.reasoning.allowed": "Mengizinkan penalaran",
"model.tooltip.reasoning.none": "Tanpa penalaran",
"model.tooltip.context": "Batas konteks {{limit}}",
"common.search.placeholder": "Cari",
"common.goBack": "Navigasi mundur",
"common.goForward": "Navigasi maju",
"common.loading": "Memuat",
"common.loading.ellipsis": "...",
"common.cancel": "Batal",
"common.clear": "Bersihkan",
"common.open": "Buka",
"common.connect": "Hubungkan",
"common.disconnect": "Putuskan",
"common.continue": "Lanjutkan",
"common.submit": "Kirim",
"common.save": "Simpan",
"common.saving": "Menyimpan...",
"common.default": "Bawaan",
"common.attachment": "lampiran",
"prompt.placeholder.shell": "Masukkan perintah shell... {{example}}",
"prompt.placeholder.normal": 'Tanyakan apa saja... "{{example}}"',
"prompt.placeholder.simple": "Tanyakan apa saja...",
"prompt.placeholder.summarizeComments": "Ringkas komentar…",
"prompt.placeholder.summarizeComment": "Ringkas komentar…",
"prompt.mode.shell": "Shell",
"prompt.mode.normal": "Prompt",
"prompt.mode.shell.exit": "esc untuk keluar",
"session.child.promptDisabled": "Sesi subagen tidak dapat diberi prompt.",
"session.child.backToParent": "Kembali ke sesi utama.",
"prompt.example.1": "Perbaiki TODO di basis kode",
"prompt.example.2": "Apa tumpukan teknologi proyek ini?",
"prompt.example.3": "Perbaiki tes yang rusak",
"prompt.example.4": "Jelaskan cara kerja autentikasi",
"prompt.example.5": "Temukan dan perbaiki kerentanan keamanan",
"prompt.example.6": "Tambahkan pengujian unit untuk layanan pengguna",
"prompt.example.7": "Refaktor fungsi ini agar lebih mudah dibaca",
"prompt.example.8": "Apa arti kesalahan ini?",
"prompt.example.9": "Bantu saya mengawakutu masalah ini",
"prompt.example.10": "Hasilkan dokumentasi API",
"prompt.example.11": "Optimalkan kueri basis data",
"prompt.example.12": "Tambahkan validasi masukan",
"prompt.example.13": "Buat komponen baru untuk...",
"prompt.example.14": "Bagaimana cara menerapkan proyek ini?",
"prompt.example.15": "Tinjau kode saya untuk praktik terbaik",
"prompt.example.16": "Tambahkan penanganan kesalahan ke fungsi ini",
"prompt.example.17": "Jelaskan pola regex ini",
"prompt.example.18": "Konversi ini ke TypeScript",
"prompt.example.19": "Tambahkan pencatatan log di seluruh basis kode",
"prompt.example.20": "Dependensi mana yang sudah kedaluwarsa?",
"prompt.example.21": "Bantu saya menulis skrip migrasi",
"prompt.example.22": "Terapkan penembolokan untuk titik akhir ini",
"prompt.example.23": "Tambahkan paginasi ke daftar ini",
"prompt.example.24": "Buat perintah CLI untuk...",
"prompt.example.25": "Bagaimana cara kerja variabel lingkungan di sini?",
"prompt.popover.emptyResults": "Tidak ada hasil yang cocok",
"prompt.popover.emptyCommands": "Tidak ada perintah yang cocok",
"prompt.dropzone.label": "Letakkan gambar, PDF, atau berkas teks di sini",
"prompt.dropzone.file.label": "Letakkan untuk menyebut berkas dengan @",
"prompt.slash.badge.custom": "kustom",
"prompt.slash.badge.skill": "keahlian",
"prompt.slash.badge.mcp": "mcp",
"prompt.context.active": "aktif",
"prompt.context.includeActiveFile": "Sertakan berkas aktif",
"prompt.context.removeActiveFile": "Hapus berkas aktif dari konteks",
"prompt.context.removeFile": "Hapus berkas dari konteks",
"prompt.action.attachFile": "Tambah berkas",
"prompt.menu.addImagesAndFiles": "Tambah berkas dan lainnya",
"prompt.menu.imagesAndFiles": "Gambar dan berkas",
"prompt.menu.commands": "Perintah",
"prompt.menu.context": "Konteks",
"prompt.menu.shellCommand": "Perintah shell",
"prompt.attachment.remove": "Hapus lampiran",
"prompt.action.send": "Kirim",
"prompt.action.stop": "Hentikan",
"prompt.toast.pasteUnsupported.title": "Lampiran tidak didukung",
"prompt.toast.pasteUnsupported.description": "Hanya gambar, PDF, atau berkas teks yang dapat dilampirkan di sini.",
"prompt.toast.attachmentDuplicate.title": "Berkas ini sudah diunggah",
"prompt.toast.modelAgentRequired.title": "Pilih agen dan model",
"prompt.toast.modelAgentRequired.description": "Pilih agen dan model sebelum mengirim prompt.",
"prompt.toast.worktreeCreateFailed.title": "Gagal membuat worktree",
"prompt.toast.sessionCreateFailed.title": "Gagal membuat sesi",
"prompt.toast.shellSendFailed.title": "Gagal mengirim perintah shell",
"prompt.toast.commandSendFailed.title": "Gagal mengirim perintah",
"prompt.toast.promptSendFailed.title": "Gagal mengirim prompt",
"prompt.toast.promptSendFailed.description": "Tidak dapat mengambil sesi",
"dialog.mcp.title": "MCP",
"dialog.mcp.description": "{{enabled}} dari {{total}} diaktifkan",
"dialog.mcp.empty": "Tidak ada MCP yang dikonfigurasi",
"dialog.lsp.empty": "LSP terdeteksi otomatis dari jenis berkas",
"dialog.plugins.empty": "Plugin dikonfigurasi di opencode.json",
"mcp.status.connected": "terhubung",
"mcp.status.failed": "gagal",
"mcp.status.needs_auth": "perlu autentikasi",
"mcp.status.disabled": "nonaktif",
"mcp.auth.clickToAuthenticate": "Klik untuk mengautentikasi",
"dialog.fork.empty": "Tidak ada pesan yang dapat dicabangkan",
"dialog.directory.search.placeholder": "Cari folder",
"dialog.directory.empty": "Folder tidak ditemukan",
"dialog.directory.action.selectFile": "Pilih berkas",
"dialog.directory.action.selectFolder": "Pilih folder",
"dialog.directory.root": "Akar",
"dialog.directory.parent": "Induk",
"dialog.directory.readError": "Tidak dapat membaca folder ini",
"app.server.unreachable": "Tidak dapat menjangkau {{server}}",
"app.server.retrying": "Mencoba ulang secara otomatis...",
"app.server.otherServers": "Server lainnya",
"dialog.server.title": "Server",
"dialog.server.description": "Ganti server OpenCode mana yang terhubung dengan aplikasi ini.",
"dialog.server.search.placeholder": "Cari server",
"dialog.server.empty": "Belum ada server",
"dialog.server.add.title": "Tambah server",
"dialog.server.add.url": "Alamat server",
"dialog.server.add.placeholder": "http://localhost:4096",
"dialog.server.add.error": "Tidak dapat terhubung ke server",
"dialog.server.add.checking": "Memeriksa...",
"dialog.server.add.button": "Tambah server",
"dialog.server.add.name": "Nama server (opsional)",
"dialog.server.add.namePlaceholder": "Localhost",
"dialog.server.add.username": "Nama pengguna (opsional)",
"dialog.server.add.usernamePlaceholder": "nama pengguna",
"dialog.server.add.password": "Kata sandi (opsional)",
"dialog.server.add.passwordPlaceholder": "kata sandi",
"dialog.server.edit.title": "Sunting server",
"dialog.server.default.title": "Server bawaan",
"dialog.server.default.description":
"Hubungkan ke server ini saat aplikasi diluncurkan, alih-alih memulai server lokal. Memerlukan mulai ulang.",
"dialog.server.default.none": "Tidak ada server dipilih",
"dialog.server.default.set": "Tetapkan server saat ini sebagai bawaan",
"dialog.server.default.clear": "Hapus",
"dialog.server.action.remove": "Hapus server",
"dialog.server.menu.edit": "Sunting",
"dialog.server.menu.default": "Tetapkan sebagai bawaan",
"dialog.server.menu.defaultRemove": "Hapus bawaan",
"dialog.server.menu.delete": "Hapus",
"dialog.server.current": "Server Saat Ini",
"dialog.server.status.default": "Bawaan",
"wsl.server.add": "Tambah server WSL",
"wsl.server.addShort": "Tambah WSL",
"wsl.server.label": "WSL",
"wsl.server.menu.label": "Server WSL",
"wsl.server.retryStart": "Coba mulai ulang",
"wsl.server.updating": "Memperbarui...",
"wsl.onboarding.step.distro": "Pilih distro",
"wsl.onboarding.step.opencode": "OpenCode",
"wsl.onboarding.checkingRuntime": "Memeriksa WSL...",
"wsl.onboarding.restartRequired": "Windows perlu dimulai ulang untuk menyelesaikan instalasi WSL.",
"wsl.onboarding.ready": "WSL siap.",
"wsl.onboarding.required": "WSL diperlukan untuk melanjutkan.",
"wsl.onboarding.checkingDistros": "Memeriksa distro...",
"wsl.onboarding.installingDistro": "Menginstal {{distro}}...",
"wsl.onboarding.checkingDistro": "Memeriksa {{distro}}...",
"wsl.onboarding.listingDistros": "Memuat daftar distro...",
"wsl.onboarding.distroReady": "{{distro}} siap.",
"wsl.onboarding.distroNotInstalled": "{{distro}} belum terinstal.",
"wsl.onboarding.openDistroOnce": "Buka {{distro}} sekali untuk menyelesaikan pengaturan.",
"wsl.onboarding.finishingDistro": "Menyelesaikan pengaturan untuk {{distro}}.",
"wsl.onboarding.pickDistro": "Pilih distro atau instal salah satu di bawah.",
"wsl.onboarding.checkingOpencode": "Memeriksa OpenCode...",
"wsl.onboarding.checkingOpencodeIn": "Memeriksa OpenCode di {{distro}}...",
"wsl.onboarding.updatingOpencode": "Memperbarui OpenCode...",
"wsl.onboarding.updatingOpencodeIn": "Memperbarui OpenCode di {{distro}}...",
"wsl.onboarding.updateOpencodeIn": "Perbarui OpenCode di {{distro}}.",
"wsl.onboarding.updateOpencode": "Perbarui OpenCode",
"wsl.onboarding.opencodeReadyIn": "OpenCode siap di {{distro}}.",
"wsl.onboarding.opencodeReady": "OpenCode siap.",
"wsl.onboarding.installOpencodeIn": "Instal OpenCode di {{distro}}.",
"wsl.onboarding.installOpencode": "Instal OpenCode",
"wsl.onboarding.chooseDistroFirst": "Pilih distro terlebih dahulu.",
"wsl.onboarding.loadFailed": "Gagal memuat keadaan WSL.",
"wsl.onboarding.loading": "Memuat...",
"wsl.onboarding.installedDistros": "Distro terinstal",
"wsl.onboarding.checkAgain": "Periksa lagi",
"wsl.onboarding.distroStatus.ready": "Siap",
"wsl.onboarding.distroStatus.checking": "Memeriksa...",
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode belum terinstal",
"wsl.onboarding.distroStatus.missingTools": "bash dan curl tidak tersedia",
"wsl.onboarding.distroStatus.unsupported": "Tidak didukung · Gunakan WSL 2",
"wsl.onboarding.needAnotherDistro": "Perlu distro lain?",
"wsl.onboarding.needAnotherDistroHint": "Instal distribusi Linux dari katalog WSL",
"wsl.onboarding.wslNotInstalled.title": "WSL belum terinstal",
"wsl.onboarding.wslNotInstalled.description":
"WSL (Windows Subsystem for Linux) diperlukan sebelum OpenCode dapat menambahkan server WSL",
"wsl.onboarding.wslUnavailable.title": "WSL tidak tersedia",
"wsl.onboarding.wslUnavailable.description": "OpenCode tidak dapat memverifikasi WSL di komputer ini.",
"wsl.onboarding.installWsl": "Instal WSL",
"wsl.onboarding.windowsRestartRequired":
"Mulai ulang Windows untuk menyelesaikan instalasi WSL, lalu buka kembali OpenCode.",
"wsl.onboarding.next": "Berikutnya",
"wsl.onboarding.refresh": "Muat ulang",
"wsl.onboarding.allDistrosAdded": "Semua distro yang terinstal sudah ditambahkan.",
"wsl.onboarding.noDistros": "Belum ada distro terdeteksi.",
"wsl.onboarding.install": "Instal",
"wsl.onboarding.installing": "Menginstal...",
"wsl.onboarding.installDistro": "Instal distro",
"wsl.onboarding.searchDistros": "Cari distro",
"wsl.onboarding.wsl2Required": "WSL 2 diperlukan.",
"wsl.onboarding.toolsRequired": "Distro ini memerlukan bash dan curl.",
"wsl.onboarding.openTerminal": "Buka terminal",
"wsl.onboarding.path": "Jalur: {{path}}",
"wsl.onboarding.notFound": "tidak ditemukan",
"wsl.onboarding.version": "Versi: {{version}}",
"wsl.onboarding.unknown": "tidak diketahui",
"wsl.onboarding.desktopVersion": "desktop {{version}}",
"wsl.onboarding.versionMismatch": "Versi terinstal tidak cocok dengan versi aplikasi desktop.",
"wsl.onboarding.adding": "Menambahkan...",
"help.tabs.toast.ariaLabel": "Memperkenalkan Tab. Atur pekerjaan dan sesi aktif Anda dengan tab",
"help.tabs.toast.dismiss": "Tutup informasi tentang Tab",
"help.tabs.title": "Memperkenalkan Tab",
"help.tabs.description": "Atur pekerjaan dan sesi aktif Anda dengan tab",
"help.tabs.date": "14 Juli",
"help.tabs.introduction": "OpenCode Desktop kini dirancang dengan tab sebagai pusatnya.",
"help.tabs.sessions":
"Mulai sesi baru di tab, atau buka sesi yang sudah ada dari proyek Anda. Buka tab baru saat Anda memulai sesuatu yang baru, lalu tutup setelah selesai.",
"help.tabs.organize":
"Membiarkan beberapa tab tetap terbuka memudahkan Anda mengatur sesi aktif. Ganti nama tab agar mudah diingat jika Anda berencana mempertahankannya.",
"help.tabs.home": "Semua sesi dan proyek Anda tersedia di layar Beranda baru. Memilih sesi akan membukanya di tab.",
"help.tabs.persistence": "Saat Anda membuka kembali aplikasi, tab Anda tetap terbuka.",
"help.tabs.worktrees":
"Desain baru belum mendukung Git Worktrees, tetapi dukungan tersebut akan segera hadir. Jika Anda ingin tetap menggunakan tata letak sebelumnya, Anda dapat beralih antartata letak di Pengaturan. Perlu diingat bahwa tata letak baru akan menjadi permanen dalam beberapa minggu.",
"server.row.noUsername": "tanpa nama pengguna",
"dialog.project.edit.title": "Sunting proyek",
"dialog.project.edit.name": "Nama",
"dialog.project.edit.icon": "Ikon",
"dialog.project.edit.icon.alt": "Ikon proyek",
"dialog.project.edit.icon.hint": "Klik atau seret gambar",
"dialog.project.edit.icon.recommended": "Disarankan: 128x128px",
"dialog.project.edit.color": "Warna",
"dialog.project.edit.color.select": "Pilih warna {{color}}",
"dialog.project.edit.worktree.startup": "Skrip awal ruang kerja",
"dialog.project.edit.worktree.startup.description": "Berjalan setelah membuat ruang kerja (worktree) baru.",
"dialog.project.edit.worktree.startup.placeholder": "mis. bun install",
"dialog.releaseNotes.action.getStarted": "Mulai",
"dialog.releaseNotes.action.next": "Berikutnya",
"dialog.releaseNotes.action.hideFuture": "Jangan tampilkan ini di masa depan",
"dialog.releaseNotes.media.alt": "Pratinjau rilis",
"context.breakdown.title": "Rincian Konteks",
"context.breakdown.note": 'Perkiraan rincian token masukan. "Lainnya" mencakup definisi alat dan beban tambahan.',
"context.breakdown.system": "Sistem",
"context.breakdown.user": "Pengguna",
"context.breakdown.assistant": "Asisten",
"context.breakdown.tool": "Panggilan Alat",
"context.breakdown.other": "Lainnya",
"context.systemPrompt.title": "Prompt Sistem",
"context.rawMessages.title": "Pesan mentah",
"context.stats.session": "Sesi",
"context.stats.messages": "Pesan",
"context.stats.provider": "Penyedia",
"context.stats.model": "Model",
"context.stats.limit": "Batas Konteks",
"context.stats.totalTokens": "Total Token",
"context.stats.usage": "Penggunaan",
"context.stats.inputTokens": "Token Masukan",
"context.stats.outputTokens": "Token Keluaran",
"context.stats.reasoningTokens": "Token Penalaran",
"context.stats.cacheTokens": "Token Tembolok (baca/tulis)",
"context.stats.userMessages": "Pesan Pengguna",
"context.stats.assistantMessages": "Pesan Asisten",
"context.stats.totalCost": "Total Biaya",
"context.stats.sessionCreated": "Sesi Dibuat",
"context.stats.lastActivity": "Aktivitas Terakhir",
"context.usage.tokens": "Token",
"context.usage.usage": "Penggunaan",
"context.usage.cost": "Biaya",
"context.usage.clickToView": "Klik untuk melihat konteks",
"context.usage.view": "Lihat penggunaan konteks",
"language.en": "English",
"language.zh": "简体中文",
"language.zht": "繁體中文",
"language.ko": "한국어",
"language.de": "Deutsch",
"language.es": "Español",
"language.fr": "Français",
"language.da": "Dansk",
"language.ja": "日本語",
"language.pl": "Polski",
"language.ru": "Русский",
"language.ar": "العربية",
"language.no": "Norsk",
"language.br": "Português (Brasil)",
"language.bs": "Bosanski",
"language.uk": "Українська",
"language.th": "ไทย",
"language.tr": "Türkçe",
"toast.language.title": "Bahasa",
"toast.language.description": "Beralih ke {{language}}",
"toast.theme.title": "Tema diganti",
"toast.scheme.title": "Skema warna",
"toast.workspace.enabled.title": "Ruang kerja diaktifkan",
"toast.workspace.enabled.description": "Beberapa worktree sekarang ditampilkan di panel samping",
"toast.workspace.disabled.title": "Ruang kerja dinonaktifkan",
"toast.workspace.disabled.description": "Hanya worktree utama yang ditampilkan di panel samping",
"toast.permissions.autoaccept.on.title": "Menerima izin secara otomatis",
"toast.permissions.autoaccept.on.description": "Permintaan izin akan disetujui secara otomatis",
"toast.permissions.autoaccept.off.title": "Berhenti menerima izin otomatis",
"toast.permissions.autoaccept.off.description": "Permintaan izin akan memerlukan persetujuan",
"toast.model.none.title": "Tidak ada model dipilih",
"toast.model.none.description": "Hubungkan penyedia untuk meringkas sesi ini",
"toast.file.loadFailed.title": "Gagal memuat berkas",
"toast.file.listFailed.title": "Gagal mendaftar berkas",
"toast.context.noLineSelection.title": "Tidak ada pilihan baris",
"toast.context.noLineSelection.description": "Pilih rentang baris di tab berkas terlebih dahulu.",
"toast.session.share.copyFailed.title": "Gagal menyalin URL ke papan klip",
"toast.session.share.success.title": "Sesi dibagikan",
"toast.session.share.success.description": "URL berbagi disalin ke papan klip!",
"toast.session.share.failed.title": "Gagal membagikan sesi",
"toast.session.share.failed.description": "Terjadi kesalahan saat membagikan sesi",
"toast.session.unshare.success.title": "Berbagi sesi dihentikan",
"toast.session.unshare.success.description": "Berbagi sesi berhasil dihentikan!",
"toast.session.unshare.failed.title": "Gagal menghentikan berbagi sesi",
"toast.session.unshare.failed.description": "Terjadi kesalahan saat menghentikan berbagi sesi",
"toast.session.listFailed.title": "Gagal memuat sesi untuk {{project}}",
"toast.project.reloadFailed.title": "Gagal memuat ulang {{project}}",
"toast.update.title": "Pembaruan tersedia",
"toast.update.description": "Versi baru OpenCode ({{version}}) sekarang tersedia untuk diinstal.",
"toast.update.action.installRestart": "Instal dan mulai ulang",
"toast.update.action.notYet": "Nanti saja",
"error.page.title": "Terjadi kesalahan",
"error.page.description": "Terjadi kesalahan saat memuat aplikasi.",
"error.page.description.localServerStartup": "Terjadi kesalahan saat memulai server lokal.",
"error.page.details.label": "Detail Kesalahan",
"error.page.action.restart": "Mulai Ulang",
"error.page.action.report": "Laporkan Kesalahan",
"error.page.action.reported": "Kesalahan Dilaporkan",
"error.page.action.exportLogs": "Ekspor Log",
"error.page.action.checking": "Memeriksa...",
"error.page.action.checkUpdates": "Periksa pembaruan",
"error.page.action.updateTo": "Perbarui ke {{version}}",
"error.page.circular": "[Sirkular]",
"error.page.report.prefix": "Harap laporkan kesalahan ini ke tim OpenCode",
"error.page.report.discord": "di Discord",
"error.page.version": "Versi: {{version}}",
"error.dev.rootNotFound":
"Elemen root tidak ditemukan. Apakah Anda lupa menambahkannya ke index.html? Atau mungkin atribut id salah eja?",
"error.serverSync.connectFailed": "Tidak dapat terhubung ke server. Apakah ada server yang berjalan di `{{url}}`?",
"error.serverSDK.noServerAvailable": "Tidak ada server tersedia",
"error.serverSDK.serverNotAvailable": "Server tidak tersedia",
"error.childStore.persistedCacheCreateFailed": "Gagal membuat tembolok persisten",
"error.childStore.persistedProjectMetadataCreateFailed": "Gagal membuat metadata proyek persisten",
"error.childStore.persistedProjectIconCreateFailed": "Gagal membuat ikon proyek persisten",
"error.childStore.storeCreateFailed": "Gagal membuat penyimpanan",
"directory.error.invalidUrl": "Direktori tidak valid di URL.",
"error.chain.unknown": "Kesalahan tidak diketahui",
"error.server.invalidConfiguration": "Konfigurasi tidak valid",
"error.chain.causedBy": "Disebabkan oleh:",
"error.chain.apiError": "Kesalahan API",
"error.chain.status": "Status: {{status}}",
"error.chain.retryable": "Dapat dicoba ulang: {{retryable}}",
"error.chain.responseBody": "Isi respons:\n{{body}}",
"error.chain.didYouMean": "Maksud Anda: {{suggestions}}",
"error.chain.modelNotFound": "Model tidak ditemukan: {{provider}}/{{model}}",
"error.chain.checkConfig": "Periksa nama penyedia/model di konfigurasi Anda (opencode.json)",
"error.chain.mcpFailed": 'Server MCP "{{name}}" gagal. Catatan: OpenCode belum mendukung autentikasi MCP.',
"error.chain.providerAuthFailed": "Autentikasi penyedia gagal ({{provider}}): {{message}}",
"error.chain.providerInitFailed":
'Gagal menginisialisasi penyedia "{{provider}}". Periksa kredensial dan konfigurasi.',
"error.chain.configJsonInvalid": "Berkas konfigurasi di {{path}} bukan JSON(C) yang valid",
"error.chain.configJsonInvalidWithMessage": "Berkas konfigurasi di {{path}} bukan JSON(C) yang valid: {{message}}",
"error.chain.configDirectoryTypo":
'Direktori "{{dir}}" di {{path}} tidak valid. Ganti nama direktori menjadi "{{suggestion}}" atau hapus. Ini adalah kesalahan ketik yang umum.',
"error.chain.configFrontmatterError": "Gagal mengurai frontmatter di {{path}}:\n{{message}}",
"error.chain.configInvalid": "Berkas konfigurasi di {{path}} tidak valid",
"error.chain.configInvalidWithMessage": "Berkas konfigurasi di {{path}} tidak valid: {{message}}",
"notification.permission.title": "Izin diperlukan",
"notification.permission.description": "{{sessionTitle}} di {{projectName}} memerlukan izin",
"notification.question.title": "Pertanyaan",
"notification.question.description": "{{sessionTitle}} di {{projectName}} memiliki pertanyaan",
"notification.action.goToSession": "Pergi ke sesi",
"notification.session.responseReady.title": "Respons siap",
"notification.session.error.title": "Kesalahan sesi",
"notification.session.error.fallbackDescription": "Terjadi kesalahan",
"home.recentProjects": "Proyek terbaru",
"home.empty.title": "Tidak ada proyek terbaru",
"home.empty.description": "Mulai dengan membuka proyek lokal",
"home.title": "Beranda",
"home.projects": "Proyek",
"home.project.add": "Tambah proyek",
"home.recentlyClosed": "Baru saja ditutup",
"home.server.collapse": "Ciutkan proyek server",
"home.server.expand": "Bentangkan proyek server",
"home.sessions.search.placeholder": "Cari sesi",
"home.sessions.search.placeholder.scoped": "Cari sesi di {{scope}}",
"home.sessions.search.sessions": "Sesi",
"home.sessions.search.noResults": "Tidak ada sesi ditemukan untuk {{query}}",
"home.sessions.empty": "Belum ada apa pun di sini",
"home.sessions.empty.description": "Buat sesi untuk memulai",
"home.sessions.group.today": "Hari ini",
"home.sessions.group.yesterday": "Kemarin",
"home.sessions.group.older": "Lebih lama",
"home.providerTip":
"Hubungkan ke 75+ penyedia untuk menggunakan model lain, termasuk Claude, GPT, Gemini, dan lainnya",
"session.tab.session": "Sesi",
"session.tab.review": "Tinjauan",
"session.tab.context": "Konteks",
"session.tab.unknown": "Sesi Tidak Dikenal",
"session.panel.reviewAndFiles": "Tinjauan dan berkas",
"session.error.notFound": "Sesi ini tidak dapat ditemukan",
"session.error.notFound.description": "Tab ini mengarah ke sesi yang sudah tidak ada di server ini.",
"session.error.notFound.closeTab": "Tutup Tab",
"session.error.serverConnection": "Tidak dapat terhubung ke server ini",
"session.review.filesChanged": "{{count}} Berkas Berubah",
"session.review.change.one": "Perubahan",
"session.review.change.other": "Perubahan",
"session.review.loadingChanges": "Memuat perubahan...",
"session.review.empty": "Belum ada perubahan di sesi ini",
"session.review.noVcs": "Tidak ada sistem kontrol versi Git yang terdeteksi, perubahan tidak ditampilkan",
"session.review.noVcs.createGit.title": "Buat repositori Git",
"session.review.noVcs.createGit.description": "Lacak, tinjau, dan urungkan perubahan di proyek ini",
"session.review.noVcs.createGit.actionLoading": "Membuat repositori Git...",
"session.review.noVcs.createGit.action": "Buat repositori Git",
"session.review.noSnapshot":
"Pelacakan snapshot dinonaktifkan di konfigurasi, sehingga perubahan sesi tidak tersedia",
"session.review.noChanges": "Tidak ada perubahan",
"session.review.noUncommittedChanges": "Belum ada perubahan yang belum dikomit",
"session.review.noBranchChanges": "Belum ada perubahan cabang",
"session.files.selectToOpen": "Pilih berkas untuk dibuka",
"session.files.all": "Semua berkas",
"session.files.empty": "Tidak ada berkas",
"session.files.binaryContent": "Berkas biner (konten tidak dapat ditampilkan)",
"session.messages.renderEarlier": "Tampilkan pesan sebelumnya",
"session.messages.loadingEarlier": "Memuat pesan sebelumnya...",
"session.messages.loadEarlier": "Muat pesan sebelumnya",
"session.messages.loading": "Memuat pesan...",
"session.messages.jumpToLatest": "Lompat ke pesan terbaru",
"session.context.addToContext": "Tambahkan {{selection}} ke konteks",
"session.todo.title": "Tugas",
"session.todo.collapse": "Ciutkan",
"session.todo.expand": "Bentangkan",
"session.todo.progress": "{{done}} dari {{total}} tugas selesai",
"session.question.progress": "{{current}} dari {{total}} pertanyaan",
"session.question.minimize": "Minimalkan pertanyaan",
"session.question.restore": "Pulihkan pertanyaan",
"session.question.pending.one": "{{count}} pertanyaan tertunda",
"session.question.pending.other": "{{count}} pertanyaan tertunda",
"session.followupDock.summary.one": "{{count}} pesan dalam antrean",
"session.followupDock.summary.other": "{{count}} pesan dalam antrean",
"session.followupDock.sendNow": "Kirim sekarang",
"session.followupDock.edit": "Sunting",
"session.followupDock.collapse": "Ciutkan pesan dalam antrean",
"session.followupDock.expand": "Bentangkan pesan dalam antrean",
"session.revertDock.summary.one": "{{count}} pesan diurungkan",
"session.revertDock.summary.other": "{{count}} pesan diurungkan",
"session.revertDock.collapse": "Ciutkan pesan yang diurungkan",
"session.revertDock.expand": "Bentangkan pesan yang diurungkan",
"session.revertDock.restore": "Pulihkan pesan",
"session.new.title": "Buat apa saja",
"session.new.project.new": "Proyek baru",
"session.new.project.search": "Cari proyek",
"session.new.project.add": "Tambah proyek",
"session.new.worktree.main": "Cabang utama",
"session.new.worktree.mainWithBranch": "Cabang utama ({{branch}})",
"session.new.worktree.create": "Buat worktree baru",
"session.new.workspace.runIn": "Jalankan sesi dalam",
"session.new.workspace.triggerLocal": "Lokal",
"session.new.workspace.local": "Repositori lokal",
"session.new.workspace.existing": "Ruang kerja…",
"session.new.git.none": "Tanpa Git",
"session.new.lastModified": "Terakhir diubah",
"session.header.search.placeholder": "Cari {{project}}",
"session.header.searchFiles": "Cari berkas",
"session.header.openIn": "Buka di",
"session.header.open.action": "Buka {{app}}",
"session.header.open.ariaLabel": "Buka di {{app}}",
"session.header.open.menu": "Opsi buka",
"session.header.open.copyPath": "Salin jalur",
"session.header.open.finder": "Finder",
"session.header.open.fileExplorer": "File Explorer",
"session.header.open.fileManager": "File Manager",
"session.header.reveal.finder": "Tampilkan di Finder",
"session.header.reveal.fileExplorer": "Tampilkan di File Explorer",
"session.header.reveal.containingFolder": "Buka folder yang memuatnya",
"session.header.open.app.vscode": "VS Code",
"session.header.open.app.cursor": "Cursor",
"session.header.open.app.zed": "Zed",
"session.header.open.app.textmate": "TextMate",
"session.header.open.app.antigravity": "Antigravity",
"session.header.open.app.terminal": "Terminal",
"session.header.open.app.iterm2": "iTerm2",
"session.header.open.app.ghostty": "Ghostty",
"session.header.open.app.warp": "Warp",
"session.header.open.app.xcode": "Xcode",
"session.header.open.app.androidStudio": "Android Studio",
"session.header.open.app.sublimeText": "Sublime Text",
"session.header.open.app.powershell": "PowerShell",
"status.popover.trigger": "Status",
"status.popover.ariaLabel": "Konfigurasi server",
"status.popover.tab.servers": "Server",
"status.popover.tab.mcp": "MCP",
"status.popover.tab.lsp": "LSP",
"status.popover.tab.plugins": "Plugin",
"status.popover.action.manageServers": "Kelola server",
"session.share.popover.title": "Publikasikan di web",
"session.share.popover.description.shared": "Sesi ini publik di web. Siapa pun dengan tautan dapat mengaksesnya.",
"session.share.popover.description.unshared":
"Bagikan sesi secara publik di web. Siapa pun dengan tautan dapat mengaksesnya.",
"session.share.action.share": "Bagikan",
"session.share.action.publish": "Publikasikan",
"session.share.action.publishing": "Mempublikasikan...",
"session.share.action.unpublish": "Batalkan publikasi",
"session.share.action.unpublishing": "Membatalkan publikasi...",
"session.share.action.view": "Lihat",
"session.share.copy.copied": "Tersalin",
"session.share.copy.copyLink": "Salin tautan",
"lsp.tooltip.none": "Tidak ada server LSP",
"lsp.label.connected": "{{count}} LSP",
"prompt.loading": "Memuat prompt...",
"terminal.loading": "Memuat terminal...",
"terminal.title": "Terminal",
"terminal.title.numbered": "Terminal {{number}}",
"terminal.close": "Tutup terminal",
"terminal.connectionLost.title": "Koneksi Terputus",
"terminal.connectionLost.abnormalClose": "WebSocket ditutup secara tidak normal: {{code}}",
"terminal.connectionLost.description": "Koneksi terminal terputus. Ini bisa terjadi saat server dimulai ulang.",
"terminal.connectTicket.csrfError":
"Tiket koneksi PTY ditolak oleh pemeriksaan asal atau CSRF. Periksa konfigurasi CORS server.",
"terminal.connectTicket.statusError": "Tiket koneksi PTY gagal dengan status {{status}}",
"titlebar.update": "Perbarui",
"titlebar.updateVersion": "Perbarui {{version}}",
"common.closeTab": "Tutup tab",
"common.dismiss": "Tutup",
"common.moreCountSuffix": " (+{{count}} lainnya)",
"common.requestFailed": "Permintaan gagal",
"common.moreOptions": "Opsi lainnya",
"common.learnMore": "Pelajari lebih lanjut",
"common.rename": "Ganti nama",
"common.reset": "Atur ulang",
"common.archive": "Arsipkan",
"common.delete": "Hapus",
"common.close": "Tutup",
"common.edit": "Sunting",
"common.loadMore": "Muat lebih banyak",
"common.key.esc": "ESC",
"common.key.ctrl": "Ctrl",
"common.key.alt": "Alt",
"common.key.shift": "Shift",
"common.key.meta": "Meta",
"common.key.space": "Spasi",
"common.key.backspace": "Backspace",
"common.key.enter": "Enter",
"common.key.tab": "Tab",
"common.key.delete": "Delete",
"common.key.home": "Home",
"common.key.end": "End",
"common.key.pageUp": "Page Up",
"common.key.pageDown": "Page Down",
"common.key.insert": "Insert",
"common.unknown": "tidak diketahui",
"common.time.justNow": "Baru saja",
"common.time.minutesAgo.short": "{{count}}m lalu",
"common.time.hoursAgo.short": "{{count}}j lalu",
"common.time.daysAgo.short": "{{count}}h lalu",
"sidebar.menu.toggle": "Alihkan menu",
"sidebar.nav.projectsAndSessions": "Proyek dan sesi",
"sidebar.settings": "Pengaturan",
"sidebar.help": "Bantuan",
"sidebar.workspaces.enable": "Aktifkan ruang kerja",
"sidebar.workspaces.disable": "Nonaktifkan ruang kerja",
"sidebar.gettingStarted.title": "Memulai",
"sidebar.gettingStarted.line1": "OpenCode menyertakan model gratis sehingga Anda dapat memulai dengan segera.",
"sidebar.gettingStarted.line2":
"Hubungkan penyedia mana pun untuk menggunakan model, termasuk Claude, GPT, Gemini, dll.",
"sidebar.project.recentSessions": "Sesi terbaru",
"sidebar.project.viewAllSessions": "Lihat semua sesi",
"sidebar.project.clearNotifications": "Hapus notifikasi",
"sidebar.empty.title": "Tidak ada proyek terbuka",
"sidebar.empty.description": "Buka proyek untuk memulai",
"debugBar.ariaLabel": "Diagnostik kinerja pengembangan",
"debugBar.na": "n/a",
"debugBar.nav.label": "NAV",
"debugBar.nav.tip":
"Transisi rute terakhir yang mencapai halaman sesi, diukur sejak perute dimulai hingga render pertama setelah stabil.",
"debugBar.fps.label": "FPS",
"debugBar.fps.tip": "Frame per detik yang dihitung secara bergulir selama 5 detik terakhir.",
"debugBar.frame.label": "FRAME",
"debugBar.frame.tip": "Waktu frame terburuk selama 5 detik terakhir.",
"debugBar.jank.label": "JANK",
"debugBar.jank.tip": "Frame di atas 32ms dalam 5 detik terakhir.",
"debugBar.long.label": "LONG",
"debugBar.long.tip": "Waktu terblokir dan jumlah tugas panjang dalam 5 detik terakhir. Tugas maks: {{max}}.",
"debugBar.delay.label": "DELAY",
"debugBar.delay.tip": "Penundaan masukan terburuk yang diamati dalam 5 detik terakhir.",
"debugBar.inp.label": "INP",
"debugBar.inp.tip": "Perkiraan durasi interaksi selama 5 detik terakhir. Ini mirip INP, bukan INP Web Vitals resmi.",
"debugBar.cls.label": "CLS",
"debugBar.cls.tip": "Pergeseran tata letak kumulatif untuk masa pakai aplikasi saat ini.",
"debugBar.mem.label": "MEM",
"debugBar.mem.tipUnavailable": "Heap JS terpakai vs batas heap. Khusus Chromium.",
"debugBar.mem.tip": "Heap JS terpakai vs batas heap. {{used}} dari {{limit}}.",
"app.name.desktop": "OpenCode Desktop",
"settings.section.desktop": "Desktop",
"settings.section.server": "Server",
"settings.tab.general": "Umum",
"settings.tab.shortcuts": "Pintasan",
"settings.desktop.section.wsl": "WSL",
"settings.desktop.wsl.title": "Integrasi WSL",
"settings.desktop.wsl.description": "Jalankan server OpenCode di dalam WSL di Windows.",
"settings.general.section.appearance": "Tampilan",
"settings.general.section.advanced": "Lanjutan",
"settings.general.section.notifications": "Notifikasi sistem",
"settings.general.section.updates": "Pembaruan",
"settings.general.section.sounds": "Efek suara",
"settings.general.section.feed": "Umpan",
"settings.general.section.display": "Tampilan",
"settings.general.row.language.title": "Bahasa",
"settings.general.row.language.description": "Ubah bahasa tampilan untuk OpenCode",
"settings.general.row.shell.title": "Shell terminal",
"settings.general.row.shell.description": "Shell yang digunakan oleh terminal dan alat agen",
"settings.general.row.shell.autoDefault": "Otomatis (Bawaan)",
"settings.general.row.shell.terminalOnly": "hanya terminal",
"settings.general.row.appearance.title": "Tampilan",
"settings.general.row.appearance.description": "Sesuaikan tampilan OpenCode di perangkat Anda",
"settings.general.row.colorScheme.title": "Skema warna",
"settings.general.row.colorScheme.description": "Pilih apakah OpenCode mengikuti tema sistem, terang, atau gelap",
"settings.general.row.theme.title": "Tema",
"settings.general.row.theme.description": "Sesuaikan tema OpenCode.",
"settings.general.row.font.title": "Font kode",
"settings.general.row.font.description": "Sesuaikan font yang digunakan di blok kode",
"settings.general.row.terminalFont.title": "Font terminal",
"settings.general.row.terminalFont.description": "Sesuaikan font yang digunakan di terminal",
"settings.general.row.uiFont.title": "Font UI",
"settings.general.row.uiFont.description": "Sesuaikan font yang digunakan di seluruh antarmuka",
"settings.general.row.followup.title": "Perilaku lanjutan",
"settings.general.row.followup.description":
"Pilih apakah prompt lanjutan segera mengarahkan atau menunggu dalam antrean",
"settings.general.row.followup.option.queue": "Antrean",
"settings.general.row.followup.option.steer": "Arahkan",
"settings.general.row.showFileTree.title": "Pohon berkas",
"settings.general.row.showFileTree.description": "Tampilkan panel pohon berkas di sesi",
"settings.general.row.showNavigation.title": "Kontrol navigasi",
"settings.general.row.showNavigation.description": "Tampilkan tombol mundur dan maju di bilah judul desktop",
"settings.general.row.showSearch.title": "Palet perintah",
"settings.general.row.showSearch.description": "Tampilkan tombol pencarian dan palet perintah di bilah judul",
"settings.general.row.showTerminal.title": "Terminal",
"settings.general.row.showTerminal.description": "Tampilkan tombol terminal di bilah judul desktop",
"settings.general.row.showStatus.title": "Status server",
"settings.general.row.showStatus.description": "Tampilkan tombol status server di bilah judul",
"settings.general.row.mobileTitlebarBottom.title": "Navigasi bawah",
"settings.general.row.mobileTitlebarBottom.description":
"Tempatkan bilah judul dan tab sesi di bagian bawah layar pada perangkat seluler",
"settings.general.row.showCustomAgents.title": "Tampilkan agen",
"settings.general.row.showCustomAgents.description":
"Beralih antaragen di penyusun. Saat disembunyikan, Agen Build digunakan sebagai bawaan.",
"settings.general.row.reasoningSummaries.title": "Tampilkan ringkasan penalaran",
"settings.general.row.reasoningSummaries.description": "Tampilkan ringkasan penalaran model di linimasa",
"settings.general.row.shellToolPartsExpanded.title": "Bentangkan bagian alat shell",
"settings.general.row.shellToolPartsExpanded.description":
"Tampilkan bagian alat shell yang dibentangkan secara bawaan di linimasa",
"settings.general.row.editToolPartsExpanded.title": "Bentangkan bagian alat edit",
"settings.general.row.editToolPartsExpanded.description":
"Tampilkan bagian alat edit, tulis, dan patch yang dibentangkan secara bawaan di linimasa",
"settings.general.row.newInterface.title": "Tata letak baru",
"settings.general.row.newInterface.badge": "Baru",
"settings.general.row.newInterface.description":
"Gunakan tab dan tata letak beranda baru. Beralihlah antartata letak untuk waktu terbatas.",
"settings.general.row.newInterfaceNotice.title": "Anda sekarang menggunakan tata letak baru",
"settings.general.row.newInterfaceNotice.description": "Tata letak sebelumnya sudah tidak tersedia",
"settings.general.row.newInterfaceNotice.dismiss": "Tutup",
"settings.general.row.pinchZoom.title": "Cubit untuk zum",
"settings.general.row.pinchZoom.description":
"Izinkan gerakan cubit pada trackpad dan Ctrl-gulir untuk melakukan zum",
"settings.general.row.wayland.title": "Gunakan Wayland asli",
"settings.general.row.wayland.description": "Nonaktifkan sistem cadangan X11 di Wayland. Memerlukan mulai ulang.",
"settings.general.row.wayland.tooltip":
"Di Linux dengan monitor berlaju penyegaran berbeda, Wayland asli bisa lebih stabil.",
"settings.general.row.releaseNotes.title": "Catatan rilis",
"settings.general.row.releaseNotes.description": "Tampilkan pop-up Apa yang Baru setelah pembaruan",
"settings.updates.row.startup.title": "Periksa pembaruan saat dimulai",
"settings.updates.row.startup.description": "Secara otomatis memeriksa pembaruan saat OpenCode diluncurkan",
"settings.updates.row.check.title": "Periksa pembaruan",
"settings.updates.row.check.description": "Periksa pembaruan secara manual dan instal jika tersedia",
"settings.updates.action.checkNow": "Periksa sekarang",
"settings.updates.action.checking": "Memeriksa...",
"settings.updates.action.downloading": "Mengunduh...",
"settings.updates.action.installing": "Menginstal...",
"settings.updates.toast.latest.title": "Versi Anda sudah terbaru",
"settings.updates.toast.latest.description": "Anda menjalankan versi terbaru OpenCode.",
"sound.option.none": "Tidak ada",
"sound.option.alert01": "Peringatan 01",
"sound.option.alert02": "Peringatan 02",
"sound.option.alert03": "Peringatan 03",
"sound.option.alert04": "Peringatan 04",
"sound.option.alert05": "Peringatan 05",
"sound.option.alert06": "Peringatan 06",
"sound.option.alert07": "Peringatan 07",
"sound.option.alert08": "Peringatan 08",
"sound.option.alert09": "Peringatan 09",
"sound.option.alert10": "Peringatan 10",
"sound.option.bipbop01": "Bip-bop 01",
"sound.option.bipbop02": "Bip-bop 02",
"sound.option.bipbop03": "Bip-bop 03",
"sound.option.bipbop04": "Bip-bop 04",
"sound.option.bipbop05": "Bip-bop 05",
"sound.option.bipbop06": "Bip-bop 06",
"sound.option.bipbop07": "Bip-bop 07",
"sound.option.bipbop08": "Bip-bop 08",
"sound.option.bipbop09": "Bip-bop 09",
"sound.option.bipbop10": "Bip-bop 10",
"sound.option.staplebops01": "Staplebops 01",
"sound.option.staplebops02": "Staplebops 02",
"sound.option.staplebops03": "Staplebops 03",
"sound.option.staplebops04": "Staplebops 04",
"sound.option.staplebops05": "Staplebops 05",
"sound.option.staplebops06": "Staplebops 06",
"sound.option.staplebops07": "Staplebops 07",
"sound.option.nope01": "Nope 01",
"sound.option.nope02": "Nope 02",
"sound.option.nope03": "Nope 03",
"sound.option.nope04": "Nope 04",
"sound.option.nope05": "Nope 05",
"sound.option.nope06": "Nope 06",
"sound.option.nope07": "Nope 07",
"sound.option.nope08": "Nope 08",
"sound.option.nope09": "Nope 09",
"sound.option.nope10": "Nope 10",
"sound.option.nope11": "Nope 11",
"sound.option.nope12": "Nope 12",
"sound.option.yup01": "Yup 01",
"sound.option.yup02": "Yup 02",
"sound.option.yup03": "Yup 03",
"sound.option.yup04": "Yup 04",
"sound.option.yup05": "Yup 05",
"sound.option.yup06": "Yup 06",
"settings.general.notifications.agent.title": "Agen",
"settings.general.notifications.agent.description":
"Tampilkan notifikasi sistem saat agen selesai atau memerlukan perhatian",
"settings.general.notifications.permissions.title": "Izin",
"settings.general.notifications.permissions.description": "Tampilkan notifikasi sistem saat izin diperlukan",
"settings.general.notifications.errors.title": "Kesalahan",
"settings.general.notifications.errors.description": "Tampilkan notifikasi sistem saat terjadi kesalahan",
"settings.general.sounds.agent.title": "Agen",
"settings.general.sounds.agent.description": "Mainkan suara saat agen selesai atau memerlukan perhatian",
"settings.general.sounds.permissions.title": "Izin",
"settings.general.sounds.permissions.description": "Mainkan suara saat izin diperlukan",
"settings.general.sounds.errors.title": "Kesalahan",
"settings.general.sounds.errors.description": "Mainkan suara saat terjadi kesalahan",
"settings.shortcuts.title": "Pintasan keyboard",
"settings.shortcuts.reset.button": "Atur ulang ke bawaan",
"settings.shortcuts.reset.toast.title": "Pintasan diatur ulang",
"settings.shortcuts.reset.toast.description": "Pintasan keyboard telah diatur ulang ke bawaan.",
"settings.shortcuts.conflict.title": "Pintasan sudah digunakan",
"settings.shortcuts.conflict.description": "{{keybind}} sudah ditetapkan ke {{titles}}.",
"settings.shortcuts.unassigned": "Belum ditetapkan",
"settings.shortcuts.pressKeys": "Tekan tombol",
"settings.shortcuts.search.placeholder": "Cari pintasan",
"settings.shortcuts.search.empty": "Tidak ada pintasan ditemukan",
"settings.shortcuts.group.general": "Umum",
"settings.shortcuts.group.session": "Sesi",
"settings.shortcuts.group.navigation": "Navigasi",
"settings.shortcuts.group.modelAndAgent": "Model dan agen",
"settings.shortcuts.group.terminal": "Terminal",
"settings.shortcuts.group.prompt": "Prompt",
"settings.providers.title": "Penyedia",
"settings.providers.description": "Pengaturan penyedia akan dapat dikonfigurasi di sini.",
"settings.providers.section.connected": "Penyedia terhubung",
"settings.providers.connected.empty": "Tidak ada penyedia terhubung",
"settings.providers.connected.environmentDescription": "Terhubung dari variabel lingkungan Anda",
"settings.providers.section.popular": "Penyedia populer",
"settings.providers.custom.description": "Tambahkan penyedia yang kompatibel dengan OpenAI berdasarkan URL dasar.",
"settings.providers.tag.environment": "Lingkungan",
"settings.providers.tag.config": "Konfigurasi",
"settings.providers.tag.custom": "Kustom",
"settings.providers.tag.other": "Lainnya",
"settings.models.title": "Model",
"settings.models.description": "Pengaturan model akan dapat dikonfigurasi di sini.",
"settings.agents.title": "Agen",
"settings.agents.description": "Pengaturan agen akan dapat dikonfigurasi di sini.",
"settings.commands.title": "Perintah",
"settings.commands.description": "Pengaturan perintah akan dapat dikonfigurasi di sini.",
"settings.mcp.title": "MCP",
"settings.mcp.description": "Pengaturan MCP akan dapat dikonfigurasi di sini.",
"settings.permissions.title": "Izin",
"settings.permissions.description": "Kontrol alat apa yang dapat digunakan server secara bawaan.",
"settings.permissions.section.tools": "Alat",
"settings.permissions.toast.updateFailed.title": "Gagal memperbarui izin",
"settings.permissions.action.allow": "Izinkan",
"settings.permissions.action.ask": "Tanya",
"settings.permissions.action.deny": "Tolak",
"settings.permissions.tool.read.title": "Baca",
"settings.permissions.tool.read.description": "Membaca berkas (mencocokkan jalur berkas)",
"settings.permissions.tool.edit.title": "Sunting",
"settings.permissions.tool.edit.description": "Memodifikasi berkas, termasuk suntingan, tulisan, dan patch",
"settings.permissions.tool.glob.title": "Glob",
"settings.permissions.tool.glob.description": "Cocokkan berkas menggunakan pola glob",
"settings.permissions.tool.grep.title": "Grep",
"settings.permissions.tool.grep.description": "Cari konten berkas menggunakan ekspresi reguler",
"settings.permissions.tool.list.title": "Daftar",
"settings.permissions.tool.list.description": "Daftarkan berkas dalam direktori",
"settings.permissions.tool.bash.title": "Bash",
"settings.permissions.tool.bash.description": "Jalankan perintah shell",
"settings.permissions.tool.task.title": "Tugas",
"settings.permissions.tool.task.description": "Luncurkan sub-agen",
"settings.permissions.tool.skill.title": "Keahlian",
"settings.permissions.tool.skill.description": "Muat keahlian berdasarkan nama",
"settings.permissions.tool.lsp.title": "LSP",
"settings.permissions.tool.lsp.description": "Jalankan kueri server bahasa",
"settings.permissions.tool.todowrite.title": "Tulis Tugas",
"settings.permissions.tool.todowrite.description": "Perbarui daftar tugas",
"settings.permissions.tool.webfetch.title": "Web Fetch",
"settings.permissions.tool.webfetch.description": "Ambil konten dari URL",
"settings.permissions.tool.websearch.title": "Pencarian Web",
"settings.permissions.tool.websearch.description": "Cari di web",
"settings.permissions.tool.external_directory.title": "Direktori Eksternal",
"settings.permissions.tool.external_directory.description": "Akses berkas di luar direktori proyek",
"settings.permissions.tool.doom_loop.title": "Doom Loop",
"settings.permissions.tool.doom_loop.description": "Deteksi panggilan alat berulang dengan masukan yang identik",
"session.delete.failed.title": "Gagal menghapus sesi",
"session.delete.title": "Hapus sesi",
"session.delete.confirm": 'Hapus sesi "{{name}}"?',
"session.delete.button": "Hapus sesi",
"workspace.new": "Ruang kerja baru",
"workspace.type.local": "lokal",
"workspace.type.sandbox": "sandbox",
"workspace.create.failed.title": "Gagal membuat ruang kerja",
"workspace.delete.failed.title": "Gagal menghapus ruang kerja",
"workspace.resetting.title": "Mengatur ulang ruang kerja",
"workspace.resetting.description": "Ini mungkin memakan waktu sebentar.",
"workspace.reset.failed.title": "Gagal mengatur ulang ruang kerja",
"workspace.reset.success.title": "Ruang kerja diatur ulang",
"workspace.reset.success.description": "Ruang kerja sekarang cocok dengan cabang bawaan.",
"workspace.error.stillPreparing": "Ruang kerja masih disiapkan",
"workspace.status.checking": "Memeriksa perubahan yang belum digabung...",
"workspace.status.error": "Tidak dapat memverifikasi status Git.",
"workspace.status.clean": "Tidak terdeteksi perubahan yang belum digabung.",
"workspace.status.dirty": "Terdeteksi perubahan yang belum digabung di ruang kerja ini.",
"workspace.delete.title": "Hapus ruang kerja",
"workspace.delete.confirm": 'Hapus ruang kerja "{{name}}"?',
"workspace.delete.button": "Hapus ruang kerja",
"workspace.reset.title": "Atur ulang ruang kerja",
"workspace.reset.confirm": 'Atur ulang ruang kerja "{{name}}"?',
"workspace.reset.button": "Atur ulang ruang kerja",
"workspace.reset.archived.none": "Tidak ada sesi aktif yang akan diarsipkan.",
"workspace.reset.archived.one": "1 sesi akan diarsipkan.",
"workspace.reset.archived.many": "{{count}} sesi akan diarsipkan.",
"workspace.reset.note": "Ini akan mengatur ulang ruang kerja agar cocok dengan cabang bawaan.",
}
+1155
View File
@@ -0,0 +1,1155 @@
export const dict = {
"command.category.suggested": "Suggeriti",
"command.category.view": "Visualizzazione",
"command.category.project": "Progetto",
"command.category.provider": "Provider",
"command.category.server": "Server",
"command.category.session": "Sessione",
"command.category.theme": "Tema",
"command.category.language": "Lingua",
"command.category.file": "File",
"command.category.context": "Contesto",
"command.category.terminal": "Terminale",
"command.category.model": "Modello",
"command.category.mcp": "MCP",
"command.category.agent": "Agente",
"command.category.permissions": "Autorizzazioni",
"command.category.workspace": "Area di lavoro",
"command.category.settings": "Impostazioni",
"command.logs.export": "Esporta log",
"theme.scheme.system": "Sistema",
"theme.scheme.light": "Chiaro",
"theme.scheme.dark": "Scuro",
"command.sidebar.toggle": "Mostra o nascondi la barra laterale",
"command.project.open": "Apri progetto",
"command.project.previous": "Progetto precedente",
"command.project.next": "Progetto successivo",
"command.project.index": "Passa al progetto {{index}}",
"command.provider.connect": "Connetti provider",
"command.server.switch": "Cambia server",
"command.settings.open": "Apri le impostazioni",
"command.session.previous": "Sessione precedente",
"command.session.next": "Sessione successiva",
"command.session.previous.unseen": "Sessione precedente non letta",
"command.session.next.unseen": "Sessione successiva non letta",
"command.session.archive": "Archivia sessione",
"command.palette": "Palette dei comandi",
"command.theme.cycle": "Cambia tema",
"command.theme.set": "Usa tema: {{theme}}",
"command.theme.scheme.cycle": "Cambia combinazione di colori",
"command.theme.scheme.set": "Usa combinazione di colori: {{scheme}}",
"command.language.cycle": "Cambia lingua",
"command.language.set": "Usa la lingua: {{language}}",
"command.session.new": "Nuova sessione",
"command.file.open": "Apri file",
"command.tab.close": "Chiudi scheda",
"command.tab.reopenClosed": "Riapri la scheda chiusa",
"command.context.addSelection": "Aggiungi la selezione al contesto",
"command.context.addSelection.description": "Aggiungi le righe selezionate dal file corrente",
"command.input.focus": "Attiva il campo di inserimento",
"command.terminal.toggle": "Mostra o nascondi il terminale",
"command.fileTree.toggle": "Mostra o nascondi l'albero dei file",
"command.review.toggle": "Mostra o nascondi la revisione",
"command.terminal.new": "Nuovo terminale",
"command.terminal.new.description": "Crea una nuova scheda terminale",
"command.steps.toggle": "Mostra o nascondi i passaggi",
"command.steps.toggle.description": "Mostra o nascondi i passaggi per il messaggio corrente",
"command.message.previous": "Messaggio precedente",
"command.message.previous.description": "Vai al messaggio utente precedente",
"command.message.next": "Messaggio successivo",
"command.message.next.description": "Vai al messaggio utente successivo",
"command.model.choose": "Scegli il modello",
"command.model.choose.description": "Seleziona un modello diverso",
"command.mcp.toggle": "Attiva o disattiva gli MCP",
"command.mcp.toggle.description": "Attiva o disattiva gli MCP",
"command.agent.cycle": "Cambia agente",
"command.agent.cycle.description": "Passa all'agente successivo",
"command.agent.cycle.reverse": "Cambia agente all'indietro",
"command.agent.cycle.reverse.description": "Passa all'agente precedente",
"command.model.variant.cycle": "Cambia livello di ragionamento",
"command.model.variant.cycle.description": "Passa al livello di ragionamento successivo",
"command.prompt.mode.shell": "Shell",
"command.prompt.mode.normal": "Prompt",
"command.permissions.autoaccept.enable": "Accetta automaticamente le autorizzazioni",
"command.permissions.autoaccept.disable": "Interrompi l'accettazione automatica delle autorizzazioni",
"command.workspace.toggle": "Attiva o disattiva le aree di lavoro",
"command.workspace.toggle.description": "Abilita o disabilita più aree di lavoro nella barra laterale",
"command.session.undo": "Annulla",
"command.session.undo.description": "Annulla l'ultimo messaggio",
"command.session.redo": "Ripeti",
"command.session.redo.description": "Ripristina l'ultimo messaggio annullato",
"command.session.compact": "Compatta sessione",
"command.session.compact.description": "Riepiloga la sessione per ridurre le dimensioni del contesto",
"command.session.fork": "Crea sessione dal messaggio",
"command.session.fork.description": "Crea una nuova sessione da un messaggio precedente",
"command.session.share": "Condividi sessione",
"command.session.share.description": "Condividi questa sessione e copia l'URL negli appunti",
"command.session.unshare": "Annulla condivisione sessione",
"command.session.unshare.description": "Interrompi la condivisione di questa sessione",
"palette.search.placeholder": "Cerca file, comandi e sessioni",
"palette.search.placeholder.home": "Cerca comandi e sessioni",
"palette.empty": "Nessun risultato trovato",
"palette.group.commands": "Comandi",
"palette.group.files": "File",
"dialog.provider.search.placeholder": "Cerca provider",
"dialog.provider.empty": "Nessun provider trovato",
"dialog.provider.group.popular": "Popolari",
"dialog.provider.group.other": "Altro",
"dialog.provider.custom.label": "Provider personalizzato compatibile con OpenAI",
"dialog.provider.tag.recommended": "Consigliato",
"dialog.provider.opencode.note": "Modelli selezionati tra cui Claude, GPT, Gemini e altri",
"dialog.provider.opencode.tagline": "Modelli affidabili e ottimizzati",
"dialog.provider.opencodeGo.tagline": "Abbonamento economico per tutti",
"dialog.provider.anthropic.note": "Accesso diretto ai modelli Claude, inclusi Pro e Max",
"dialog.provider.copilot.note": "Modelli di IA per assistere nella programmazione tramite GitHub Copilot",
"dialog.provider.openai.note": "Modelli GPT veloci e potenti per attività generiche di IA",
"dialog.provider.google.note": "Modelli Gemini per risposte rapide e strutturate",
"dialog.provider.openrouter.note": "Accedi a tutti i modelli supportati da un unico provider",
"dialog.provider.vercel.note": "Accesso unificato ai modelli di IA con instradamento intelligente",
"dialog.model.select.title": "Seleziona modello",
"dialog.model.search.placeholder": "Cerca modelli",
"dialog.model.empty": "Nessun modello trovato",
"dialog.model.manage": "Gestisci modelli",
"dialog.model.manage.description": "Personalizza quali modelli appaiono nel selettore del modello.",
"dialog.model.manage.provider.toggle": "Attiva o disattiva tutti i modelli {{provider}}",
"dialog.model.unpaid.freeModels.title": "Modelli gratuiti forniti da OpenCode",
"dialog.model.unpaid.addMore.title": "Aggiungi altri modelli dai provider più diffusi",
"dialog.model.unpaid.viewMoreProviders": "Scopri oltre 70 provider",
"dialog.provider.viewAll": "Mostra altri provider",
"provider.connect.title": "Connetti {{provider}}",
"provider.connect.title.anthropicProMax": "Accedi con Claude Pro/Max",
"provider.connect.selectMethod": "Seleziona il metodo di accesso per {{provider}}.",
"provider.connect.method.apiKey": "Chiave API",
"provider.connect.method.browser": "Browser",
"provider.connect.method.headless": "Headless",
"provider.connect.status.inProgress": "Autorizzazione in corso...",
"provider.connect.status.waiting": "In attesa di autorizzazione...",
"provider.connect.status.failed": "Autorizzazione fallita: {{error}}",
"provider.connect.apiKey.description":
"Inserisci la chiave API di {{provider}} per connettere il tuo account e utilizzare i modelli {{provider}} in OpenCode.",
"provider.connect.apiKey.label": "Chiave API di {{provider}}",
"provider.connect.apiKey.placeholder": "Chiave API",
"provider.connect.apiKey.required": "È richiesta la chiave API",
"provider.connect.opencodeZen.line1":
"OpenCode Zen offre l'accesso a una selezione di modelli affidabili e ottimizzati per gli agenti di programmazione.",
"provider.connect.opencodeZen.line2":
"Con una sola chiave API avrai accesso a modelli come Claude, GPT, Gemini, GLM e altri.",
"provider.connect.opencodeZen.visit.prefix": "Visita ",
"provider.connect.opencodeZen.visit.link": "opencode.ai/zen",
"provider.connect.opencodeZen.visit.suffix": " per ottenere la tua chiave API.",
"provider.connect.oauth.code.visit.prefix": "Visita ",
"provider.connect.oauth.code.visit.link": "questo collegamento",
"provider.connect.oauth.code.visit.suffix":
" per ottenere il codice di autorizzazione, connettere il tuo account e usare i modelli {{provider}} in OpenCode.",
"provider.connect.oauth.code.label": "Codice di autorizzazione {{method}}",
"provider.connect.oauth.code.placeholder": "Codice di autorizzazione",
"provider.connect.oauth.code.required": "È richiesto il codice di autorizzazione",
"provider.connect.oauth.code.invalid": "Codice di autorizzazione non valido",
"provider.connect.oauth.auto.visit.prefix": "Visita ",
"provider.connect.oauth.auto.visit.link": "questo collegamento",
"provider.connect.oauth.auto.visit.suffix":
" e inserisci il codice qui sotto per connettere il tuo account e usare i modelli {{provider}} in OpenCode.",
"provider.connect.oauth.auto.confirmationCode": "Codice di conferma",
"provider.connect.toast.connected.title": "{{provider}} connesso",
"provider.connect.toast.connected.description": "I modelli {{provider}} sono ora disponibili per l'uso.",
"provider.custom.title": "Provider personalizzato",
"provider.custom.description.prefix": "Configura un provider compatibile con OpenAI. Consulta la ",
"provider.custom.description.link": "documentazione sulla configurazione dei provider",
"provider.custom.description.suffix": ".",
"provider.custom.field.providerID.label": "ID provider",
"provider.custom.field.providerID.placeholder": "myprovider",
"provider.custom.field.providerID.description": "Lettere minuscole, numeri, trattini o trattini bassi",
"provider.custom.field.name.label": "Nome da visualizzare",
"provider.custom.field.name.placeholder": "Il mio provider IA",
"provider.custom.field.baseURL.label": "URL di base",
"provider.custom.field.baseURL.placeholder": "https://api.myprovider.com/v1",
"provider.custom.field.apiKey.label": "Chiave API",
"provider.custom.field.apiKey.placeholder": "Chiave API",
"provider.custom.field.apiKey.description":
"Opzionale. Lascia vuoto se gestisci l'autenticazione tramite intestazioni.",
"provider.custom.models.label": "Modelli",
"provider.custom.models.id.label": "ID",
"provider.custom.models.id.placeholder": "model-id",
"provider.custom.models.name.label": "Nome",
"provider.custom.models.name.placeholder": "Nome da visualizzare",
"provider.custom.models.remove": "Rimuovi il modello",
"provider.custom.models.add": "Aggiungi modello",
"provider.custom.headers.label": "Intestazioni (facoltative)",
"provider.custom.headers.key.label": "Intestazione",
"provider.custom.headers.key.placeholder": "Header-Name",
"provider.custom.headers.value.label": "Valore",
"provider.custom.headers.value.placeholder": "valore",
"provider.custom.headers.remove": "Rimuovi intestazione",
"provider.custom.headers.add": "Aggiungi intestazione",
"provider.custom.error.providerID.required": "L'ID provider è obbligatorio",
"provider.custom.error.providerID.format": "Utilizza lettere minuscole, numeri, trattini o trattini bassi",
"provider.custom.error.providerID.exists": "Questo ID provider esiste già",
"provider.custom.error.name.required": "Il nome visualizzato è obbligatorio",
"provider.custom.error.baseURL.required": "L'URL di base è obbligatorio",
"provider.custom.error.baseURL.format": "Deve iniziare con http:// o https://",
"provider.custom.error.required": "Necessario",
"provider.custom.error.duplicate": "Duplicato",
"provider.custom.unavailable": "I provider personalizzati non sono disponibili su questo server",
"provider.disconnect.toast.disconnected.title": "{{provider}} disconnesso",
"provider.disconnect.toast.disconnected.description": "I modelli {{provider}} non sono più disponibili.",
"model.tag.free": "Gratuito",
"model.tag.latest": "Più recente",
"model.provider.anthropic": "Anthropic",
"model.provider.openai": "OpenAI",
"model.provider.google": "Google",
"model.provider.xai": "xAI",
"model.provider.meta": "Meta",
"model.input.text": "testo",
"model.input.image": "immagine",
"model.input.audio": "audio",
"model.input.video": "video",
"model.input.pdf": "pdf",
"model.tooltip.allows": "Supporta: {{inputs}}",
"model.tooltip.context.label": "Contesto",
"model.tooltip.inputs": "Input",
"model.tooltip.model": "Modello",
"model.tooltip.provider": "Provider",
"model.tooltip.reasoning": "Ragionamento",
"model.tooltip.reasoning.allowed": "Supporta il ragionamento",
"model.tooltip.reasoning.none": "Nessun ragionamento",
"model.tooltip.context": "Limite del contesto: {{limit}}",
"common.search.placeholder": "Cerca",
"common.goBack": "Torna indietro",
"common.goForward": "Vai avanti",
"common.loading": "Caricamento",
"common.loading.ellipsis": "...",
"common.cancel": "Annulla",
"common.clear": "Cancella",
"common.open": "Apri",
"common.connect": "Connetti",
"common.disconnect": "Disconnetti",
"common.continue": "Continua",
"common.submit": "Invia",
"common.save": "Salva",
"common.saving": "Salvataggio...",
"common.default": "Predefinito",
"common.attachment": "allegato",
"prompt.placeholder.shell": "Inserisci il comando shell... {{example}}",
"prompt.placeholder.normal": 'Chiedi qualsiasi cosa... "{{example}}"',
"prompt.placeholder.simple": "Chiedi qualsiasi cosa...",
"prompt.placeholder.summarizeComments": "Riepiloga i commenti...",
"prompt.placeholder.summarizeComment": "Riepiloga il commento...",
"prompt.mode.shell": "Shell",
"prompt.mode.normal": "Prompt",
"prompt.mode.shell.exit": "esc per uscire",
"session.child.promptDisabled": "Non è possibile inviare prompt alle sessioni dei subagenti.",
"session.child.backToParent": "Torna alla sessione principale.",
"prompt.example.1": "Correggi un TODO nel codice sorgente",
"prompt.example.2": "Qual è lo stack tecnologico di questo progetto?",
"prompt.example.3": "Correggi i test non funzionanti",
"prompt.example.4": "Spiega come funziona l'autenticazione",
"prompt.example.5": "Trova e correggi le vulnerabilità di sicurezza",
"prompt.example.6": "Aggiungi test unitari per il servizio utente",
"prompt.example.7": "Rifattorizza questa funzione per renderla più leggibile",
"prompt.example.8": "Cosa significa questo errore?",
"prompt.example.9": "Aiutami a eseguire il debug di questo problema",
"prompt.example.10": "Genera documentazione API",
"prompt.example.11": "Ottimizza le query del database",
"prompt.example.12": "Aggiungi la convalida dell'input",
"prompt.example.13": "Crea un nuovo componente per...",
"prompt.example.14": "Come distribuisco questo progetto?",
"prompt.example.15": "Esamina il mio codice verificando che rispetti le buone pratiche",
"prompt.example.16": "Aggiungi la gestione degli errori a questa funzione",
"prompt.example.17": "Spiega questa espressione regolare",
"prompt.example.18": "Convertilo in TypeScript",
"prompt.example.19": "Aggiungi log in tutto il codice sorgente",
"prompt.example.20": "Quali dipendenze sono obsolete?",
"prompt.example.21": "Aiutami a scrivere uno script di migrazione",
"prompt.example.22": "Implementa la cache per questo endpoint",
"prompt.example.23": "Aggiungi la paginazione a questo elenco",
"prompt.example.24": "Crea un comando CLI per...",
"prompt.example.25": "Come funzionano le variabili d'ambiente qui?",
"prompt.popover.emptyResults": "Nessun risultato corrispondente",
"prompt.popover.emptyCommands": "Nessun comando corrispondente",
"prompt.dropzone.label": "Trascina qui immagini, PDF o file di testo",
"prompt.dropzone.file.label": "Trascina per menzionare il file con @",
"prompt.slash.badge.custom": "personalizzato",
"prompt.slash.badge.skill": "skill",
"prompt.slash.badge.mcp": "mcp",
"prompt.context.active": "attivo",
"prompt.context.includeActiveFile": "Includi file attivo",
"prompt.context.removeActiveFile": "Rimuovi il file attivo dal contesto",
"prompt.context.removeFile": "Rimuovi il file dal contesto",
"prompt.action.attachFile": "Aggiungi file",
"prompt.menu.addImagesAndFiles": "Aggiungi file e altro ancora",
"prompt.menu.imagesAndFiles": "Immagini e file",
"prompt.menu.commands": "Comandi",
"prompt.menu.context": "Contesto",
"prompt.menu.shellCommand": "Comando della shell",
"prompt.attachment.remove": "Rimuovi l'allegato",
"prompt.action.send": "Invia",
"prompt.action.stop": "Interrompi",
"prompt.toast.pasteUnsupported.title": "Allegato non supportato",
"prompt.toast.pasteUnsupported.description": "Qui è possibile allegare solo immagini, PDF o file di testo.",
"prompt.toast.attachmentDuplicate.title": "Questo file è già stato caricato",
"prompt.toast.modelAgentRequired.title": "Seleziona un agente e un modello",
"prompt.toast.modelAgentRequired.description": "Scegli un agente e un modello prima di inviare un prompt.",
"prompt.toast.worktreeCreateFailed.title": "Impossibile creare il worktree",
"prompt.toast.sessionCreateFailed.title": "Impossibile creare la sessione",
"prompt.toast.shellSendFailed.title": "Impossibile inviare il comando shell",
"prompt.toast.commandSendFailed.title": "Impossibile inviare il comando",
"prompt.toast.promptSendFailed.title": "Impossibile inviare il prompt",
"prompt.toast.promptSendFailed.description": "Impossibile recuperare la sessione",
"dialog.mcp.title": "MCP",
"dialog.mcp.description": "{{enabled}} di {{total}} abilitati",
"dialog.mcp.empty": "Nessun MCP configurato",
"dialog.lsp.empty": "LSP rilevati automaticamente in base ai tipi di file",
"dialog.plugins.empty": "Plugin configurati in opencode.json",
"mcp.status.connected": "collegato",
"mcp.status.failed": "fallito",
"mcp.status.needs_auth": "richiede l'autenticazione",
"mcp.status.disabled": "disabilitato",
"mcp.auth.clickToAuthenticate": "Fai clic per autenticarti",
"dialog.fork.empty": "Nessun messaggio da cui effettuare il fork",
"dialog.directory.search.placeholder": "Cerca cartelle",
"dialog.directory.empty": "Nessuna cartella trovata",
"dialog.directory.action.selectFile": "Seleziona file",
"dialog.directory.action.selectFolder": "Seleziona la cartella",
"dialog.directory.root": "Radice",
"dialog.directory.parent": "Cartella superiore",
"dialog.directory.readError": "Impossibile leggere questa cartella",
"app.server.unreachable": "Impossibile raggiungere {{server}}",
"app.server.retrying": "Nuovo tentativo automatico...",
"app.server.otherServers": "Altri server",
"dialog.server.title": "Server",
"dialog.server.description": "Cambia il server OpenCode a cui si connette l'app.",
"dialog.server.search.placeholder": "Cerca server",
"dialog.server.empty": "Ancora nessun server",
"dialog.server.add.title": "Aggiungi server",
"dialog.server.add.url": "Indirizzo del server",
"dialog.server.add.placeholder": "http://localhost:4096",
"dialog.server.add.error": "Impossibile connettersi al server",
"dialog.server.add.checking": "Controllo...",
"dialog.server.add.button": "Aggiungi server",
"dialog.server.add.name": "Nome del server (facoltativo)",
"dialog.server.add.namePlaceholder": "Host locale",
"dialog.server.add.username": "Nome utente (facoltativo)",
"dialog.server.add.usernamePlaceholder": "nomeutente",
"dialog.server.add.password": "Password (facoltativa)",
"dialog.server.add.passwordPlaceholder": "password",
"dialog.server.edit.title": "Modifica server",
"dialog.server.default.title": "Server predefinito",
"dialog.server.default.description":
"Connettiti a questo server all'avvio dell'app invece di avviare un server locale. Richiede il riavvio.",
"dialog.server.default.none": "Nessun server selezionato",
"dialog.server.default.set": "Imposta il server corrente come predefinito",
"dialog.server.default.clear": "Cancella",
"dialog.server.action.remove": "Rimuovi server",
"dialog.server.menu.edit": "Modifica",
"dialog.server.menu.default": "Imposta come predefinito",
"dialog.server.menu.defaultRemove": "Rimuovi predefinito",
"dialog.server.menu.delete": "Elimina",
"dialog.server.current": "Server corrente",
"dialog.server.status.default": "Predefinito",
"wsl.server.add": "Aggiungi il server WSL",
"wsl.server.addShort": "Aggiungi WSL",
"wsl.server.label": "WSL",
"wsl.server.menu.label": "Server WSL",
"wsl.server.retryStart": "Riprova l'avvio",
"wsl.server.updating": "Aggiornamento...",
"wsl.onboarding.step.distro": "Scegli la distribuzione",
"wsl.onboarding.step.opencode": "OpenCode",
"wsl.onboarding.checkingRuntime": "Controllo WSL...",
"wsl.onboarding.restartRequired": "Windows deve essere riavviato per completare l'installazione di WSL.",
"wsl.onboarding.ready": "WSL è pronto.",
"wsl.onboarding.required": "WSL è necessario per continuare.",
"wsl.onboarding.checkingDistros": "Controllo delle distribuzioni...",
"wsl.onboarding.installingDistro": "Installazione di {{distro}}...",
"wsl.onboarding.checkingDistro": "Controllo {{distro}}...",
"wsl.onboarding.listingDistros": "Elenco delle distribuzioni...",
"wsl.onboarding.distroReady": "{{distro}} è pronto.",
"wsl.onboarding.distroNotInstalled": "{{distro}} non è ancora installato.",
"wsl.onboarding.openDistroOnce": "Apri {{distro}} una volta per completare la configurazione.",
"wsl.onboarding.finishingDistro": "Completamento della configurazione di {{distro}}.",
"wsl.onboarding.pickDistro": "Scegli una distribuzione o installane una qui sotto.",
"wsl.onboarding.checkingOpencode": "Controllo OpenCode...",
"wsl.onboarding.checkingOpencodeIn": "Controllo OpenCode in {{distro}}...",
"wsl.onboarding.updatingOpencode": "Aggiornamento OpenCode...",
"wsl.onboarding.updatingOpencodeIn": "Aggiornamento OpenCode in {{distro}}...",
"wsl.onboarding.updateOpencodeIn": "Aggiorna OpenCode in {{distro}}.",
"wsl.onboarding.updateOpencode": "Aggiorna OpenCode",
"wsl.onboarding.opencodeReadyIn": "OpenCode è pronto in {{distro}}.",
"wsl.onboarding.opencodeReady": "OpenCode è pronto.",
"wsl.onboarding.installOpencodeIn": "Installa OpenCode in {{distro}}.",
"wsl.onboarding.installOpencode": "Installa OpenCode",
"wsl.onboarding.chooseDistroFirst": "Scegli prima una distribuzione.",
"wsl.onboarding.loadFailed": "Impossibile caricare lo stato WSL.",
"wsl.onboarding.loading": "Caricamento...",
"wsl.onboarding.installedDistros": "Distribuzioni installate",
"wsl.onboarding.checkAgain": "Controlla di nuovo",
"wsl.onboarding.distroStatus.ready": "Pronto",
"wsl.onboarding.distroStatus.checking": "Controllo...",
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode non installato",
"wsl.onboarding.distroStatus.missingTools": "bash e curl non disponibili",
"wsl.onboarding.distroStatus.unsupported": "Non supportato · Utilizza WSL 2",
"wsl.onboarding.needAnotherDistro": "Hai bisogno di un'altra distribuzione?",
"wsl.onboarding.needAnotherDistroHint": "Installa una distribuzione Linux dal catalogo WSL",
"wsl.onboarding.wslNotInstalled.title": "WSL non installato",
"wsl.onboarding.wslNotInstalled.description":
"WSL (Sottosistema Windows per Linux) è necessario prima che OpenCode possa aggiungere un server WSL",
"wsl.onboarding.wslUnavailable.title": "WSL non disponibile",
"wsl.onboarding.wslUnavailable.description": "OpenCode non ha potuto verificare WSL su questa macchina.",
"wsl.onboarding.installWsl": "Installa WSL",
"wsl.onboarding.windowsRestartRequired":
"Riavvia Windows per completare l'installazione WSL, quindi riapri OpenCode.",
"wsl.onboarding.next": "Avanti",
"wsl.onboarding.refresh": "Aggiorna",
"wsl.onboarding.allDistrosAdded": "Tutte le distribuzioni installate sono già aggiunte.",
"wsl.onboarding.noDistros": "Nessuna distribuzione ancora rilevata.",
"wsl.onboarding.install": "Installa",
"wsl.onboarding.installing": "Installazione...",
"wsl.onboarding.installDistro": "Installa la distribuzione",
"wsl.onboarding.searchDistros": "Cerca distribuzioni",
"wsl.onboarding.wsl2Required": "WSL 2 è obbligatorio.",
"wsl.onboarding.toolsRequired": "Questa distribuzione richiede bash e curl.",
"wsl.onboarding.openTerminal": "Apri terminale",
"wsl.onboarding.path": "Percorso: {{path}}",
"wsl.onboarding.notFound": "non trovato",
"wsl.onboarding.version": "Versione: {{version}}",
"wsl.onboarding.unknown": "sconosciuto",
"wsl.onboarding.desktopVersion": "desktop {{version}}",
"wsl.onboarding.versionMismatch": "La versione installata non corrisponde alla versione dell'app desktop.",
"wsl.onboarding.adding": "Aggiunta...",
"help.tabs.toast.ariaLabel": "Novità: le schede. Organizza il lavoro e le sessioni attive con le schede",
"help.tabs.toast.dismiss": "Ignora le informazioni sulle schede",
"help.tabs.title": "Novità: le schede",
"help.tabs.description": "Organizza il lavoro e le sessioni attive con le schede",
"help.tabs.date": "14 luglio",
"help.tabs.introduction": "OpenCode Desktop ora è incentrato sulle schede.",
"help.tabs.sessions":
"Avvia una nuova sessione in una scheda oppure apri una sessione esistente da uno dei tuoi progetti. Apri una nuova scheda quando inizi qualcosa di nuovo e chiudila quando hai finito.",
"help.tabs.organize":
"Tenere aperte alcune schede semplifica l'organizzazione delle sessioni attive. Se prevedi di conservarle, rinominale con un nome facile da ricordare.",
"help.tabs.home":
"Troverai tutte le sessioni e i progetti nella nuova schermata Home. Quando selezioni una sessione, questa si apre in una scheda.",
"help.tabs.persistence": "Quando riapri l'app, le schede sono ancora aperte.",
"help.tabs.worktrees":
"Il nuovo design non supporta ancora Git Worktrees, ma il supporto arriverà presto. Se preferisci continuare a utilizzare la disposizione precedente, puoi passare da una disposizione all'altra nelle Impostazioni. Tieni presente che la nuova disposizione diventerà permanente tra alcune settimane.",
"server.row.noUsername": "nessun nome utente",
"dialog.project.edit.title": "Modifica progetto",
"dialog.project.edit.name": "Nome",
"dialog.project.edit.icon": "Icona",
"dialog.project.edit.icon.alt": "Icona del progetto",
"dialog.project.edit.icon.hint": "Fai clic o trascina un'immagine",
"dialog.project.edit.icon.recommended": "Consigliato: 128x128px",
"dialog.project.edit.color": "Colore",
"dialog.project.edit.color.select": "Seleziona il colore {{color}}",
"dialog.project.edit.worktree.startup": "Script di avvio dell'area di lavoro",
"dialog.project.edit.worktree.startup.description":
"Viene eseguito dopo la creazione di una nuova area di lavoro (worktree).",
"dialog.project.edit.worktree.startup.placeholder": "es. bun install",
"dialog.releaseNotes.action.getStarted": "Inizia",
"dialog.releaseNotes.action.next": "Avanti",
"dialog.releaseNotes.action.hideFuture": "Non mostrarli in futuro",
"dialog.releaseNotes.media.alt": "Anteprima delle novità",
"context.breakdown.title": "Ripartizione del contesto",
"context.breakdown.note":
'Ripartizione approssimativa dei token di input. "Altro" include le definizioni degli strumenti e i dati aggiuntivi.',
"context.breakdown.system": "Sistema",
"context.breakdown.user": "Utente",
"context.breakdown.assistant": "Assistente",
"context.breakdown.tool": "Chiamate agli strumenti",
"context.breakdown.other": "Altro",
"context.systemPrompt.title": "Prompt di sistema",
"context.rawMessages.title": "Messaggi non elaborati",
"context.stats.session": "Sessione",
"context.stats.messages": "Messaggi",
"context.stats.provider": "Provider",
"context.stats.model": "Modello",
"context.stats.limit": "Limite del contesto",
"context.stats.totalTokens": "Token totali",
"context.stats.usage": "Utilizzo",
"context.stats.inputTokens": "Token di input",
"context.stats.outputTokens": "Token di output",
"context.stats.reasoningTokens": "Token di ragionamento",
"context.stats.cacheTokens": "Token cache (lettura/scrittura)",
"context.stats.userMessages": "Messaggi utente",
"context.stats.assistantMessages": "Messaggi dell'assistente",
"context.stats.totalCost": "Costo totale",
"context.stats.sessionCreated": "Sessione creata",
"context.stats.lastActivity": "Ultima attività",
"context.usage.tokens": "Token",
"context.usage.usage": "Utilizzo",
"context.usage.cost": "Costo",
"context.usage.clickToView": "Fai clic per visualizzare il contesto",
"context.usage.view": "Visualizza l'utilizzo del contesto",
"language.en": "English",
"language.zh": "简体中文",
"language.zht": "繁體中文",
"language.ko": "한국어",
"language.de": "Deutsch",
"language.es": "Español",
"language.fr": "Français",
"language.da": "Dansk",
"language.ja": "日本語",
"language.pl": "Polski",
"language.ru": "Русский",
"language.ar": "العربية",
"language.no": "Norsk",
"language.br": "Português (Brasil)",
"language.bs": "Bosanski",
"language.uk": "Українська",
"language.th": "ไทย",
"language.tr": "Türkçe",
"toast.language.title": "Lingua",
"toast.language.description": "Lingua impostata su {{language}}",
"toast.theme.title": "Tema cambiato",
"toast.scheme.title": "Combinazione di colori",
"toast.workspace.enabled.title": "Aree di lavoro abilitate",
"toast.workspace.enabled.description": "Nella barra laterale vengono ora visualizzati più worktree",
"toast.workspace.disabled.title": "Aree di lavoro disabilitate",
"toast.workspace.disabled.description": "Nella barra laterale viene mostrato solo il worktree principale",
"toast.permissions.autoaccept.on.title": "Accettazione automatica delle autorizzazioni",
"toast.permissions.autoaccept.on.description": "Le richieste di autorizzazione verranno approvate automaticamente",
"toast.permissions.autoaccept.off.title": "Accettazione automatica delle autorizzazioni disattivata",
"toast.permissions.autoaccept.off.description": "Le richieste di autorizzazione richiederanno l'approvazione",
"toast.model.none.title": "Nessun modello selezionato",
"toast.model.none.description": "Connetti un provider per riepilogare questa sessione",
"toast.file.loadFailed.title": "Impossibile caricare il file",
"toast.file.listFailed.title": "Impossibile elencare i file",
"toast.context.noLineSelection.title": "Nessuna riga selezionata",
"toast.context.noLineSelection.description": "Selezionare prima un intervallo di righe nella scheda di un file.",
"toast.session.share.copyFailed.title": "Impossibile copiare l'URL negli appunti",
"toast.session.share.success.title": "Sessione condivisa",
"toast.session.share.success.description": "URL di condivisione copiato negli appunti",
"toast.session.share.failed.title": "Impossibile condividere la sessione",
"toast.session.share.failed.description": "Si è verificato un errore durante la condivisione della sessione",
"toast.session.unshare.success.title": "Sessione non condivisa",
"toast.session.unshare.success.description": "Condivisione della sessione annullata!",
"toast.session.unshare.failed.title": "Impossibile annullare la condivisione della sessione",
"toast.session.unshare.failed.description":
"Si è verificato un errore durante l'annullamento della condivisione della sessione",
"toast.session.listFailed.title": "Impossibile caricare le sessioni per {{project}}",
"toast.project.reloadFailed.title": "Impossibile ricaricare {{project}}",
"toast.update.title": "Aggiornamento disponibile",
"toast.update.description": "Una nuova versione di OpenCode ({{version}}) è ora disponibile per l'installazione.",
"toast.update.action.installRestart": "Installa e riavvia",
"toast.update.action.notYet": "Non ancora",
"error.page.title": "Qualcosa è andato storto",
"error.page.description": "Si è verificato un errore durante il caricamento dell'applicazione.",
"error.page.description.localServerStartup": "Si è verificato un errore durante l'avvio del server locale.",
"error.page.details.label": "Dettagli errore",
"error.page.action.restart": "Riavvia",
"error.page.action.report": "Segnala errore",
"error.page.action.reported": "Errore segnalato",
"error.page.action.exportLogs": "Esporta log",
"error.page.action.checking": "Controllo...",
"error.page.action.checkUpdates": "Controlla gli aggiornamenti",
"error.page.action.updateTo": "Aggiorna a {{version}}",
"error.page.circular": "[Circular]",
"error.page.report.prefix": "Segnala questo errore al team OpenCode",
"error.page.report.discord": "su Discord",
"error.page.version": "Versione: {{version}}",
"error.dev.rootNotFound":
"Elemento radice non trovato. Hai dimenticato di aggiungerlo al tuo index.html? O forse l'attributo id è stato scritto in modo errato?",
"error.serverSync.connectFailed": "Impossibile connettersi al server. C'è un server in esecuzione a `{{url}}`?",
"error.serverSDK.noServerAvailable": "Nessun server disponibile",
"error.serverSDK.serverNotAvailable": "Server non disponibile",
"error.childStore.persistedCacheCreateFailed": "Impossibile creare la cache persistente",
"error.childStore.persistedProjectMetadataCreateFailed": "Impossibile creare metadati di progetto persistenti",
"error.childStore.persistedProjectIconCreateFailed": "Impossibile creare l'icona del progetto persistente",
"error.childStore.storeCreateFailed": "Impossibile creare lo store",
"directory.error.invalidUrl": "Cartella non valida nell'URL.",
"error.chain.unknown": "Errore sconosciuto",
"error.server.invalidConfiguration": "Configurazione non valida",
"error.chain.causedBy": "Causato da:",
"error.chain.apiError": "Errore API",
"error.chain.status": "Stato: {{status}}",
"error.chain.retryable": "Nuovo tentativo possibile: {{retryable}}",
"error.chain.responseBody": "Corpo della risposta:\n{{body}}",
"error.chain.didYouMean": "Forse intendi: {{suggestions}}",
"error.chain.modelNotFound": "Modello non trovato: {{provider}}/{{model}}",
"error.chain.checkConfig": "Controlla i nomi di provider e modelli nella configurazione (opencode.json)",
"error.chain.mcpFailed":
'Il server MCP "{{name}}" non ha funzionato. Nota: OpenCode non supporta ancora l\'autenticazione MCP.',
"error.chain.providerAuthFailed": "Autenticazione del provider non riuscita ({{provider}}): {{message}}",
"error.chain.providerInitFailed":
'Impossibile inizializzare il provider "{{provider}}". Controlla credenziali e configurazione.',
"error.chain.configJsonInvalid": "Il file di configurazione in {{path}} non è valido JSON(C)",
"error.chain.configJsonInvalidWithMessage": "Il file di configurazione in {{path}} non è valido JSON(C): {{message}}",
"error.chain.configDirectoryTypo":
'La directory "{{dir}}" in {{path}} non è valida. Rinominare la directory in "{{suggestion}}" o rimuoverla. Questo è un errore di battitura comune.',
"error.chain.configFrontmatterError": "Impossibile analizzare il frontmatter in {{path}}:\n{{message}}",
"error.chain.configInvalid": "Il file di configurazione in {{path}} non è valido",
"error.chain.configInvalidWithMessage": "Il file di configurazione in {{path}} non è valido: {{message}}",
"notification.permission.title": "Autorizzazione richiesta",
"notification.permission.description": "{{sessionTitle}} in {{projectName}} necessita dell'autorizzazione",
"notification.question.title": "Domanda",
"notification.question.description": "{{sessionTitle}} in {{projectName}} ha una domanda",
"notification.action.goToSession": "Vai alla sessione",
"notification.session.responseReady.title": "Risposta pronta",
"notification.session.error.title": "Errore di sessione",
"notification.session.error.fallbackDescription": "Si è verificato un errore",
"home.recentProjects": "Progetti recenti",
"home.empty.title": "Nessun progetto recente",
"home.empty.description": "Inizia aprendo un progetto locale",
"home.title": "Home",
"home.projects": "Progetti",
"home.project.add": "Aggiungi progetto",
"home.recentlyClosed": "Chiusi di recente",
"home.server.collapse": "Comprimi progetti server",
"home.server.expand": "Espandi i progetti server",
"home.sessions.search.placeholder": "Cerca sessioni",
"home.sessions.search.placeholder.scoped": "Cerca sessioni in {{scope}}",
"home.sessions.search.sessions": "Sessioni",
"home.sessions.search.noResults": "Nessuna sessione trovata per {{query}}",
"home.sessions.empty": "Ancora nessun elemento",
"home.sessions.empty.description": "Crea una sessione per iniziare",
"home.sessions.group.today": "Oggi",
"home.sessions.group.yesterday": "Ieri",
"home.sessions.group.older": "Meno recenti",
"home.providerTip": "Connettiti a oltre 75 provider per utilizzare altri modelli, inclusi Claude, GPT, Gemini, ecc.",
"session.tab.session": "Sessione",
"session.tab.review": "Revisione",
"session.tab.context": "Contesto",
"session.tab.unknown": "Sessione sconosciuta",
"session.panel.reviewAndFiles": "Revisione e file",
"session.error.notFound": "Impossibile trovare questa sessione",
"session.error.notFound.description": "Questa scheda punta a una sessione che non esiste più su questo server.",
"session.error.notFound.closeTab": "Chiudi scheda",
"session.error.serverConnection": "Impossibile connettersi a questo server",
"session.review.filesChanged": "{{count}} file modificati",
"session.review.change.one": "Modifica",
"session.review.change.other": "Modifiche",
"session.review.loadingChanges": "Caricamento modifiche...",
"session.review.empty": "Nessuna modifica ancora in questa sessione",
"session.review.noVcs": "Nessun sistema di controllo della versione Git rilevato, modifiche non visualizzate",
"session.review.noVcs.createGit.title": "Crea un repository Git",
"session.review.noVcs.createGit.description": "Tieni traccia, rivedi e annulla le modifiche in questo progetto",
"session.review.noVcs.createGit.actionLoading": "Creazione del repository Git in corso...",
"session.review.noVcs.createGit.action": "Crea un repository Git",
"session.review.noSnapshot":
"Il tracciamento degli snapshot è disabilitato nella configurazione, quindi le modifiche della sessione non sono disponibili",
"session.review.noChanges": "Nessuna modifica",
"session.review.noUncommittedChanges": "Ancora nessuna modifica senza commit",
"session.review.noBranchChanges": "Ancora nessuna modifica del branch",
"session.files.selectToOpen": "Seleziona un file da aprire",
"session.files.all": "Tutti i file",
"session.files.empty": "Nessun file",
"session.files.binaryContent": "File binario (il contenuto non può essere visualizzato)",
"session.messages.renderEarlier": "Visualizza i messaggi precedenti",
"session.messages.loadingEarlier": "Caricamento dei messaggi precedenti...",
"session.messages.loadEarlier": "Carica i messaggi precedenti",
"session.messages.loading": "Caricamento messaggi...",
"session.messages.jumpToLatest": "Vai all'ultimo",
"session.context.addToContext": "Aggiungi {{selection}} al contesto",
"session.todo.title": "Attività",
"session.todo.collapse": "Comprimi",
"session.todo.expand": "Espandi",
"session.todo.progress": "{{done}} di {{total}} attività completate",
"session.question.progress": "{{current}} di {{total}} domande",
"session.question.minimize": "Riduci la domanda",
"session.question.restore": "Ripristina la domanda",
"session.question.pending.one": "{{count}} domanda in sospeso",
"session.question.pending.many": "{{count}} di domande in sospeso",
"session.question.pending.other": "{{count}} domande in sospeso",
"session.followupDock.summary.one": "{{count}} messaggio in coda",
"session.followupDock.summary.many": "{{count}} di messaggi in coda",
"session.followupDock.summary.other": "{{count}} messaggi in coda",
"session.followupDock.sendNow": "Invia ora",
"session.followupDock.edit": "Modifica",
"session.followupDock.collapse": "Comprimi i messaggi in coda",
"session.followupDock.expand": "Espandi i messaggi in coda",
"session.revertDock.summary.one": "{{count}} messaggio annullato",
"session.revertDock.summary.many": "{{count}} di messaggi annullati",
"session.revertDock.summary.other": "{{count}} messaggi annullati",
"session.revertDock.collapse": "Comprimi i messaggi annullati",
"session.revertDock.expand": "Espandi i messaggi annullati",
"session.revertDock.restore": "Ripristina il messaggio",
"session.new.title": "Crea qualsiasi cosa",
"session.new.project.new": "Nuovo progetto",
"session.new.project.search": "Cerca progetti",
"session.new.project.add": "Aggiungi progetto",
"session.new.worktree.main": "Branch principale",
"session.new.worktree.mainWithBranch": "Branch principale ({{branch}})",
"session.new.worktree.create": "Crea un nuovo worktree",
"session.new.workspace.runIn": "Esegui la sessione in",
"session.new.workspace.triggerLocal": "Locale",
"session.new.workspace.local": "Repository locale",
"session.new.workspace.existing": "Area di lavoro...",
"session.new.git.none": "Senza Git",
"session.new.lastModified": "Ultima modifica",
"session.header.search.placeholder": "Cerca {{project}}",
"session.header.searchFiles": "Cerca file",
"session.header.openIn": "Apri in",
"session.header.open.action": "Apri {{app}}",
"session.header.open.ariaLabel": "Apri in {{app}}",
"session.header.open.menu": "Opzioni di apertura",
"session.header.open.copyPath": "Copia percorso",
"session.header.open.finder": "Finder",
"session.header.open.fileExplorer": "Esplora file",
"session.header.open.fileManager": "Gestore file",
"session.header.reveal.finder": "Mostra nel Finder",
"session.header.reveal.fileExplorer": "Mostra in Esplora file",
"session.header.reveal.containingFolder": "Apri la cartella contenente",
"session.header.open.app.vscode": "VS Code",
"session.header.open.app.cursor": "Cursor",
"session.header.open.app.zed": "Zed",
"session.header.open.app.textmate": "TextMate",
"session.header.open.app.antigravity": "Antigravity",
"session.header.open.app.terminal": "Terminale",
"session.header.open.app.iterm2": "iTerm2",
"session.header.open.app.ghostty": "Ghostty",
"session.header.open.app.warp": "Warp",
"session.header.open.app.xcode": "Xcode",
"session.header.open.app.androidStudio": "Android Studio",
"session.header.open.app.powershell": "PowerShell",
"session.header.open.app.sublimeText": "Sublime Text",
"status.popover.trigger": "Stato",
"status.popover.ariaLabel": "Configurazioni del server",
"status.popover.tab.servers": "Server",
"status.popover.tab.mcp": "MCP",
"status.popover.tab.lsp": "LSP",
"status.popover.tab.plugins": "Plugin",
"status.popover.action.manageServers": "Gestisci server",
"session.share.popover.title": "Pubblica sul web",
"session.share.popover.description.shared":
"Questa sessione è pubblica sul web. È accessibile a chiunque abbia il collegamento.",
"session.share.popover.description.unshared":
"Condividi la sessione pubblicamente sul web. Sarà accessibile a chiunque abbia il collegamento.",
"session.share.action.share": "Condividi",
"session.share.action.publish": "Pubblica",
"session.share.action.publishing": "Pubblicazione...",
"session.share.action.unpublish": "Annulla pubblicazione",
"session.share.action.unpublishing": "Annullamento della pubblicazione...",
"session.share.action.view": "Visualizza",
"session.share.copy.copied": "Copiato",
"session.share.copy.copyLink": "Copia collegamento",
"lsp.tooltip.none": "Nessun server LSP",
"lsp.label.connected": "{{count}} LSP",
"prompt.loading": "Caricamento del prompt...",
"terminal.loading": "Caricamento terminale...",
"terminal.title": "Terminale",
"terminal.title.numbered": "Terminale {{number}}",
"terminal.close": "Chiudi il terminale",
"terminal.connectionLost.title": "Connessione persa",
"terminal.connectionLost.abnormalClose": "WebSocket chiuso in modo anomalo: {{code}}",
"terminal.connectionLost.description":
"La connessione del terminale è stata interrotta. Ciò può verificarsi al riavvio del server.",
"terminal.connectTicket.csrfError":
"Il ticket di connessione PTY è stato rifiutato dai controlli sull'origine o CSRF. Verifica la configurazione CORS del server.",
"terminal.connectTicket.statusError": "Il ticket di connessione PTY non è riuscito con lo stato {{status}}",
"titlebar.update": "Aggiorna",
"titlebar.updateVersion": "Aggiorna {{version}}",
"common.closeTab": "Chiudi scheda",
"common.dismiss": "Ignora",
"common.moreCountSuffix": " (+ altri {{count}})",
"common.requestFailed": "Richiesta non riuscita",
"common.moreOptions": "Altre opzioni",
"common.learnMore": "Saperne di più",
"common.rename": "Rinomina",
"common.reset": "Ripristina",
"common.archive": "Archivia",
"common.delete": "Elimina",
"common.close": "Chiudi",
"common.edit": "Modifica",
"common.loadMore": "Carica altri elementi",
"common.key.esc": "ESC",
"common.key.ctrl": "Ctrl",
"common.key.alt": "Alt",
"common.key.shift": "Maiusc",
"common.key.meta": "Meta",
"common.key.space": "Spazio",
"common.key.backspace": "Backspace",
"common.key.enter": "Invio",
"common.key.tab": "Tab",
"common.key.delete": "Canc",
"common.key.home": "Home",
"common.key.end": "Fine",
"common.key.pageUp": "Pag su",
"common.key.pageDown": "Pag giù",
"common.key.insert": "Ins",
"common.unknown": "sconosciuto",
"common.time.justNow": "Adesso",
"common.time.minutesAgo.short": "{{count}}m fa",
"common.time.hoursAgo.short": "{{count}}h fa",
"common.time.daysAgo.short": "{{count}}d fa",
"sidebar.menu.toggle": "Mostra o nascondi il menu",
"sidebar.nav.projectsAndSessions": "Progetti e sessioni",
"sidebar.settings": "Impostazioni",
"sidebar.help": "Aiuto",
"sidebar.workspaces.enable": "Abilita aree di lavoro",
"sidebar.workspaces.disable": "Disabilita aree di lavoro",
"sidebar.gettingStarted.title": "Introduzione",
"sidebar.gettingStarted.line1": "OpenCode include modelli gratuiti così puoi iniziare immediatamente.",
"sidebar.gettingStarted.line2": "Connetti un provider per usare altri modelli, tra cui Claude, GPT, Gemini e altri.",
"sidebar.project.recentSessions": "Sessioni recenti",
"sidebar.project.viewAllSessions": "Visualizza tutte le sessioni",
"sidebar.project.clearNotifications": "Cancella notifiche",
"sidebar.empty.title": "Nessun progetto aperto",
"sidebar.empty.description": "Apri un progetto per iniziare",
"debugBar.ariaLabel": "Diagnostica delle prestazioni di sviluppo",
"debugBar.na": "n/d",
"debugBar.nav.label": "NAV",
"debugBar.nav.tip":
"Ultima transizione completata relativa a una pagina di sessione, misurata dall'avvio del router fino al primo rendering dopo la stabilizzazione.",
"debugBar.fps.label": "FPS",
"debugBar.fps.tip": "Media mobile dei fotogrammi al secondo negli ultimi 5 secondi.",
"debugBar.frame.label": "FRAME",
"debugBar.frame.tip": "Tempo di rendering del fotogramma peggiore negli ultimi 5 secondi.",
"debugBar.jank.label": "JANK",
"debugBar.jank.tip": "Fotogrammi con durata superiore a 32 ms negli ultimi 5 secondi.",
"debugBar.long.label": "LONG",
"debugBar.long.tip":
"Tempo bloccato e numero di attività lunghe negli ultimi 5 secondi. Attività più lunga: {{max}}.",
"debugBar.delay.label": "DELAY",
"debugBar.delay.tip": "Peggiore ritardo di risposta all'input osservato negli ultimi 5 secondi.",
"debugBar.inp.label": "INP",
"debugBar.inp.tip":
"Durata approssimativa dell'interazione negli ultimi 5 secondi. È una misura simile a INP, non l'INP ufficiale di Web Vitals.",
"debugBar.cls.label": "CLS",
"debugBar.cls.tip": "Spostamento cumulativo del layout per la durata corrente dell'app.",
"debugBar.mem.label": "MEM",
"debugBar.mem.tipUnavailable": "Heap JS utilizzato rispetto al limite dell'heap. Solo Chromium.",
"debugBar.mem.tip": "Heap JS utilizzato rispetto al limite dell'heap. {{used}} di {{limit}}.",
"app.name.desktop": "OpenCode Desktop",
"settings.section.desktop": "Desktop",
"settings.section.server": "Server",
"settings.tab.general": "Generale",
"settings.tab.shortcuts": "Scorciatoie",
"settings.desktop.section.wsl": "WSL",
"settings.desktop.wsl.title": "Integrazione WSL",
"settings.desktop.wsl.description": "Esegui il server OpenCode all'interno di WSL su Windows.",
"settings.general.section.appearance": "Aspetto",
"settings.general.section.advanced": "Avanzato",
"settings.general.section.notifications": "Notifiche di sistema",
"settings.general.section.updates": "Aggiornamenti",
"settings.general.section.sounds": "Effetti sonori",
"settings.general.section.feed": "Feed",
"settings.general.section.display": "Visualizzazione",
"settings.general.row.language.title": "Lingua",
"settings.general.row.language.description": "Cambia la lingua di visualizzazione per OpenCode",
"settings.general.row.shell.title": "Shell del terminale",
"settings.general.row.shell.description": "Shell utilizzata dal terminale e dagli strumenti dell'agente",
"settings.general.row.shell.autoDefault": "Automatico (predefinito)",
"settings.general.row.shell.terminalOnly": "solo terminale",
"settings.general.row.appearance.title": "Aspetto",
"settings.general.row.appearance.description": "Personalizza l'aspetto di OpenCode sul tuo dispositivo",
"settings.general.row.colorScheme.title": "Combinazione di colori",
"settings.general.row.colorScheme.description": "Scegli se OpenCode segue il tema di sistema, chiaro o scuro",
"settings.general.row.theme.title": "Tema",
"settings.general.row.theme.description": "Personalizza il tema di OpenCode.",
"settings.general.row.font.title": "Carattere del codice",
"settings.general.row.font.description": "Personalizza il carattere utilizzato nei blocchi di codice",
"settings.general.row.terminalFont.title": "Carattere terminale",
"settings.general.row.terminalFont.description": "Personalizza il carattere utilizzato nel terminale",
"settings.general.row.uiFont.title": "Carattere dell'interfaccia utente",
"settings.general.row.uiFont.description": "Personalizza il carattere utilizzato nell'interfaccia",
"settings.general.row.followup.title": "Gestione dei prompt successivi",
"settings.general.row.followup.description": "Scegli se i prompt successivi intervengono subito o attendono in coda",
"settings.general.row.followup.option.queue": "Coda",
"settings.general.row.followup.option.steer": "Intervieni subito",
"settings.general.row.showFileTree.title": "Albero dei file",
"settings.general.row.showFileTree.description": "Mostra il pannello dell'albero dei file nelle sessioni",
"settings.general.row.showNavigation.title": "Controlli di navigazione",
"settings.general.row.showNavigation.description":
"Mostra i pulsanti Avanti e Indietro nella barra del titolo del desktop",
"settings.general.row.showSearch.title": "Palette dei comandi",
"settings.general.row.showSearch.description":
"Mostra il pulsante di ricerca e della palette dei comandi nella barra del titolo",
"settings.general.row.showTerminal.title": "Terminale",
"settings.general.row.showTerminal.description":
"Mostra il pulsante del terminale nella barra del titolo del desktop",
"settings.general.row.showStatus.title": "Stato del server",
"settings.general.row.showStatus.description": "Mostra il pulsante di stato del server nella barra del titolo",
"settings.general.row.mobileTitlebarBottom.title": "Navigazione in basso",
"settings.general.row.mobileTitlebarBottom.description":
"Posiziona la barra del titolo e le schede della sessione nella parte inferiore dello schermo sul dispositivo mobile",
"settings.general.row.showCustomAgents.title": "Mostra agente",
"settings.general.row.showCustomAgents.description":
"Passa da un agente all'altro nel campo di composizione. Se nascosto, viene usato l'agente Build.",
"settings.general.row.reasoningSummaries.title": "Mostra riassunti del ragionamento",
"settings.general.row.reasoningSummaries.description":
"Visualizza i riepiloghi del ragionamento del modello nella sequenza temporale",
"settings.general.row.shellToolPartsExpanded.title": "Espandi le parti dello strumento Shell",
"settings.general.row.shellToolPartsExpanded.description":
"Mostra le parti dello strumento Shell espanse per impostazione predefinita nella sequenza temporale",
"settings.general.row.editToolPartsExpanded.title": "Espandi le parti dello strumento di modifica",
"settings.general.row.editToolPartsExpanded.description":
"Mostra le parti degli strumenti di modifica, scrittura e patch espanse per impostazione predefinita nella sequenza temporale",
"settings.general.row.newInterface.title": "Nuova disposizione",
"settings.general.row.newInterface.badge": "Nuovo",
"settings.general.row.newInterface.description":
"Utilizza le nuove schede e il layout della home page. Passa da un layout all'altro per un periodo limitato.",
"settings.general.row.newInterfaceNotice.title": "Ora stai utilizzando il nuovo layout",
"settings.general.row.newInterfaceNotice.description": "Il layout precedente non è più disponibile",
"settings.general.row.newInterfaceNotice.dismiss": "Ignora",
"settings.general.row.pinchZoom.title": "Pizzica per ingrandire",
"settings.general.row.pinchZoom.description":
"Consenti i gesti di pizzicamento del trackpad e di scorrimento Ctrl per eseguire lo zoom",
"settings.general.row.wayland.title": "Usa Wayland nativo",
"settings.general.row.wayland.description": "Disabilita il fallback X11 su Wayland. Richiede il riavvio.",
"settings.general.row.wayland.tooltip":
"Su Linux con monitor dalle diverse frequenze di aggiornamento, Wayland nativo può essere più stabile.",
"settings.general.row.releaseNotes.title": "Note sulla versione",
"settings.general.row.releaseNotes.description": "Mostra i popup Novità dopo gli aggiornamenti",
"settings.updates.row.startup.title": "Controlla gli aggiornamenti all'avvio",
"settings.updates.row.startup.description": "Controlla automaticamente gli aggiornamenti all'avvio di OpenCode",
"settings.updates.row.check.title": "Controlla gli aggiornamenti",
"settings.updates.row.check.description": "Controlla manualmente gli aggiornamenti e installali se disponibili",
"settings.updates.action.checkNow": "Controlla ora",
"settings.updates.action.checking": "Controllo...",
"settings.updates.action.downloading": "Download in corso...",
"settings.updates.action.installing": "Installazione...",
"settings.updates.toast.latest.title": "OpenCode è aggiornato",
"settings.updates.toast.latest.description": "Stai utilizzando l'ultima versione di OpenCode.",
"sound.option.none": "Nessuno",
"sound.option.alert01": "Avviso 01",
"sound.option.alert02": "Avviso 02",
"sound.option.alert03": "Avviso 03",
"sound.option.alert04": "Avviso 04",
"sound.option.alert05": "Avviso 05",
"sound.option.alert06": "Avviso 06",
"sound.option.alert07": "Avviso 07",
"sound.option.alert08": "Avviso 08",
"sound.option.alert09": "Avviso 09",
"sound.option.alert10": "Avviso 10",
"sound.option.bipbop01": "Bip-bop 01",
"sound.option.bipbop02": "Bip-bop 02",
"sound.option.bipbop03": "Bip-bop 03",
"sound.option.bipbop04": "Bip-bop 04",
"sound.option.bipbop05": "Bip-bop 05",
"sound.option.bipbop06": "Bip-bop 06",
"sound.option.bipbop07": "Bip-bop 07",
"sound.option.bipbop08": "Bip-bop 08",
"sound.option.bipbop09": "Bip-bop 09",
"sound.option.bipbop10": "Bip-bop 10",
"sound.option.staplebops01": "Staplebops 01",
"sound.option.staplebops02": "Staplebops 02",
"sound.option.staplebops03": "Staplebops 03",
"sound.option.staplebops04": "Staplebops 04",
"sound.option.staplebops05": "Staplebops 05",
"sound.option.staplebops06": "Staplebops 06",
"sound.option.staplebops07": "Staplebops 07",
"sound.option.nope01": "No 01",
"sound.option.nope02": "No 02",
"sound.option.nope03": "No 03",
"sound.option.nope04": "No 04",
"sound.option.nope05": "No 05",
"sound.option.nope06": "No 06",
"sound.option.nope07": "No 07",
"sound.option.nope08": "No 08",
"sound.option.nope09": "No 09",
"sound.option.nope10": "No 10",
"sound.option.nope11": "No 11",
"sound.option.nope12": "No 12",
"sound.option.yup01": "Sì 01",
"sound.option.yup02": "Sì 02",
"sound.option.yup03": "Sì 03",
"sound.option.yup04": "Sì 04",
"sound.option.yup05": "Sì 05",
"sound.option.yup06": "Sì 06",
"settings.general.notifications.agent.title": "Agente",
"settings.general.notifications.agent.description":
"Mostra una notifica di sistema quando l'agente ha terminato o richiede attenzione",
"settings.general.notifications.permissions.title": "Autorizzazioni",
"settings.general.notifications.permissions.description":
"Mostra la notifica di sistema quando è richiesta un'autorizzazione",
"settings.general.notifications.errors.title": "Errori",
"settings.general.notifications.errors.description": "Mostra la notifica di sistema quando si verifica un errore",
"settings.general.sounds.agent.title": "Agente",
"settings.general.sounds.agent.description": "Riproduci un suono quando l'agente ha terminato o richiede attenzione",
"settings.general.sounds.permissions.title": "Autorizzazioni",
"settings.general.sounds.permissions.description": "Riproduci l'audio quando è richiesta un'autorizzazione",
"settings.general.sounds.errors.title": "Errori",
"settings.general.sounds.errors.description": "Riproduci un suono quando si verifica un errore",
"settings.shortcuts.title": "Scorciatoie da tastiera",
"settings.shortcuts.reset.button": "Ripristina le impostazioni predefinite",
"settings.shortcuts.reset.toast.title": "Scorciatoie ripristinate",
"settings.shortcuts.reset.toast.description":
"Le scorciatoie da tastiera sono state ripristinate ai valori predefiniti.",
"settings.shortcuts.conflict.title": "Scorciatoia già in uso",
"settings.shortcuts.conflict.description": "{{keybind}} è già assegnato a {{titles}}.",
"settings.shortcuts.unassigned": "Non assegnato",
"settings.shortcuts.pressKeys": "Premi i tasti",
"settings.shortcuts.search.placeholder": "Cerca scorciatoie",
"settings.shortcuts.search.empty": "Nessuna scorciatoia trovata",
"settings.shortcuts.group.general": "Generale",
"settings.shortcuts.group.session": "Sessione",
"settings.shortcuts.group.navigation": "Navigazione",
"settings.shortcuts.group.modelAndAgent": "Modello e agente",
"settings.shortcuts.group.terminal": "Terminale",
"settings.shortcuts.group.prompt": "Prompt",
"settings.providers.title": "Provider",
"settings.providers.description": "Le impostazioni dei provider saranno configurabili qui.",
"settings.providers.section.connected": "Provider connessi",
"settings.providers.connected.empty": "Nessun provider connesso",
"settings.providers.connected.environmentDescription": "Connesso tramite le variabili di ambiente",
"settings.providers.section.popular": "Provider più diffusi",
"settings.providers.custom.description": "Aggiungi un provider compatibile con OpenAI tramite l'URL di base.",
"settings.providers.tag.environment": "Ambiente",
"settings.providers.tag.config": "Configurazione",
"settings.providers.tag.custom": "Personalizzato",
"settings.providers.tag.other": "Altro",
"settings.models.title": "Modelli",
"settings.models.description": "Le impostazioni del modello saranno configurabili qui.",
"settings.agents.title": "Agenti",
"settings.agents.description": "Le impostazioni dell'agente saranno configurabili qui.",
"settings.commands.title": "Comandi",
"settings.commands.description": "Le impostazioni dei comandi saranno configurabili qui.",
"settings.mcp.title": "MCP",
"settings.mcp.description": "Le impostazioni MCP saranno configurabili qui.",
"settings.permissions.title": "Autorizzazioni",
"settings.permissions.description":
"Controlla quali strumenti può utilizzare il server per impostazione predefinita.",
"settings.permissions.section.tools": "Strumenti",
"settings.permissions.toast.updateFailed.title": "Impossibile aggiornare le autorizzazioni",
"settings.permissions.action.allow": "Consenti",
"settings.permissions.action.ask": "Chiedi",
"settings.permissions.action.deny": "Nega",
"settings.permissions.tool.read.title": "Lettura",
"settings.permissions.tool.read.description": "Lettura di un file (corrisponde al percorso del file)",
"settings.permissions.tool.edit.title": "Modifica",
"settings.permissions.tool.edit.description": "Modifica file, incluse modifiche, scritture e patch",
"settings.permissions.tool.glob.title": "Glob",
"settings.permissions.tool.glob.description": "Trova corrispondenze tra file usando pattern glob",
"settings.permissions.tool.grep.title": "Grep",
"settings.permissions.tool.grep.description": "Cerca il contenuto del file utilizzando le espressioni regolari",
"settings.permissions.tool.list.title": "Elenco",
"settings.permissions.tool.list.description": "Elenca i file all'interno di una directory",
"settings.permissions.tool.bash.title": "Bash",
"settings.permissions.tool.bash.description": "Esegui i comandi della shell",
"settings.permissions.tool.task.title": "Attività",
"settings.permissions.tool.task.description": "Avvia subagenti",
"settings.permissions.tool.skill.title": "Skill",
"settings.permissions.tool.skill.description": "Carica una skill in base al nome",
"settings.permissions.tool.lsp.title": "LSP",
"settings.permissions.tool.lsp.description": "Esegui query sul server di linguaggio",
"settings.permissions.tool.todowrite.title": "Scrittura attività",
"settings.permissions.tool.todowrite.description": "Aggiorna l'elenco delle attività",
"settings.permissions.tool.webfetch.title": "Recupero dal web",
"settings.permissions.tool.webfetch.description": "Recupera contenuto da un URL",
"settings.permissions.tool.websearch.title": "Ricerca sul web",
"settings.permissions.tool.websearch.description": "Cerca sul web",
"settings.permissions.tool.external_directory.title": "Directory esterna",
"settings.permissions.tool.external_directory.description": "Accedi ai file all'esterno della directory del progetto",
"settings.permissions.tool.doom_loop.title": "Ciclo ripetitivo",
"settings.permissions.tool.doom_loop.description": "Rileva chiamate ripetute di strumenti con input identico",
"session.delete.failed.title": "Impossibile eliminare la sessione",
"session.delete.title": "Elimina sessione",
"session.delete.confirm": 'Eliminare la sessione "{{name}}"?',
"session.delete.button": "Elimina sessione",
"workspace.new": "Nuova area di lavoro",
"workspace.type.local": "locale",
"workspace.type.sandbox": "sandbox",
"workspace.create.failed.title": "Impossibile creare l'area di lavoro",
"workspace.delete.failed.title": "Impossibile eliminare l'area di lavoro",
"workspace.resetting.title": "Reimpostazione dell'area di lavoro",
"workspace.resetting.description": "L'operazione potrebbe richiedere un minuto.",
"workspace.reset.failed.title": "Impossibile reimpostare l'area di lavoro",
"workspace.reset.success.title": "Area di lavoro reimpostata",
"workspace.reset.success.description": "L'area di lavoro ora corrisponde al branch predefinito.",
"workspace.error.stillPreparing": "L'area di lavoro è ancora in preparazione",
"workspace.status.checking": "Verifica delle modifiche non integrate in corso...",
"workspace.status.error": "Impossibile verificare lo stato di Git.",
"workspace.status.clean": "Nessuna modifica non integrata rilevata.",
"workspace.status.dirty": "Modifiche non integrate rilevate in quest'area di lavoro.",
"workspace.delete.title": "Elimina l'area di lavoro",
"workspace.delete.confirm": 'Eliminare l\'area di lavoro "{{name}}"?',
"workspace.delete.button": "Elimina l'area di lavoro",
"workspace.reset.title": "Reimposta l'area di lavoro",
"workspace.reset.confirm": 'Reimpostare l\'area di lavoro "{{name}}"?',
"workspace.reset.button": "Reimposta l'area di lavoro",
"workspace.reset.archived.none": "Nessuna sessione attiva verrà archiviata.",
"workspace.reset.archived.one": "1 sessione verrà archiviata.",
"workspace.reset.archived.many": "Verranno archiviate {{count}} sessioni.",
"workspace.reset.note": "L'area di lavoro verrà reimpostata in modo che corrisponda al branch predefinito.",
"desktop.menu.app": "OpenCode",
"desktop.menu.file": "File",
"desktop.menu.edit": "Modifica",
"desktop.menu.view": "Vista",
"desktop.menu.go": "Vai",
"desktop.menu.window": "Finestra",
"desktop.menu.help": "Aiuto",
"desktop.menu.checkForUpdates": "Verifica aggiornamenti...",
"desktop.menu.settings": "Impostazioni",
"desktop.menu.reloadWebview": "Ricarica Webview",
"desktop.menu.restart": "Riavvia",
"desktop.menu.exportLogs": "Esporta log...",
"desktop.menu.newSession": "Nuova sessione",
"desktop.menu.openProject": "Apri progetto...",
"desktop.menu.newWindow": "Nuova finestra",
"desktop.menu.closeWindow": "Chiudi finestra",
"desktop.menu.undo": "Annulla",
"desktop.menu.redo": "Ripristina",
"desktop.menu.cut": "Taglia",
"desktop.menu.copy": "Copia",
"desktop.menu.paste": "Incolla",
"desktop.menu.delete": "Elimina",
"desktop.menu.selectAll": "Seleziona tutto",
"desktop.menu.toggleSidebar": "Mostra o nascondi la barra laterale",
"desktop.menu.toggleTerminal": "Mostra o nascondi il terminale",
"desktop.menu.toggleFileTree": "Mostra o nascondi l'albero dei file",
"desktop.menu.reload": "Ricarica",
"desktop.menu.toggleDeveloperTools": "Mostra o nascondi gli strumenti per sviluppatori",
"desktop.menu.actualSize": "Dimensioni effettive",
"desktop.menu.zoomIn": "Ingrandisci",
"desktop.menu.zoomOut": "Riduci",
"desktop.menu.toggleFullScreen": "Attiva o disattiva lo schermo intero",
"desktop.menu.back": "Indietro",
"desktop.menu.forward": "Avanti",
"desktop.menu.previousSession": "Sessione precedente",
"desktop.menu.nextSession": "Sessione successiva",
"desktop.menu.previousProject": "Progetto precedente",
"desktop.menu.nextProject": "Progetto successivo",
"desktop.menu.minimize": "Riduci a icona",
"desktop.menu.maximize": "Ingrandisci",
"desktop.menu.documentation": "Documentazione di OpenCode",
"desktop.menu.supportForum": "Forum di supporto",
"desktop.menu.shareFeedback": "Invia feedback",
"desktop.menu.reportBug": "Segnala un bug",
"desktop.menu.ariaLabel": "Menu OpenCode",
"desktop.updater.dialog.checkFailed.message": "Impossibile verificare la disponibilità di aggiornamenti.",
"desktop.updater.dialog.checkFailed.title": "Errore di aggiornamento",
"desktop.updater.dialog.upToDate.message": "La versione è aggiornata.",
"desktop.updater.dialog.upToDate.title": "Nessun aggiornamento",
"desktop.updater.dialog.ready.message": "L'aggiornamento {{version}} è stato scaricato. Riavviare ora?",
"desktop.updater.dialog.ready.title": "Aggiornamento pronto",
"desktop.updater.dialog.restart": "Riavvia",
"desktop.updater.dialog.later": "Più tardi",
"desktop.recovery.action.relaunch": "Riapri",
"desktop.recovery.action.exportLogs": "Esporta log",
"desktop.recovery.action.keepWaiting": "Continua ad attendere",
"desktop.recovery.action.quit": "Esci",
"desktop.recovery.loadFailed": "Impossibile caricare OpenCode",
"desktop.recovery.terminated": "La finestra di OpenCode si è chiusa in modo imprevisto",
"desktop.recovery.unresponsive": "OpenCode non risponde",
"desktop.recovery.unresponsive.detail": "Puoi riaprire l'app, aprire i log o continuare ad attendere.",
"desktop.recovery.loadFailed.detail": "Finestra: {{window}}\nURL: {{url}}\nErrore: {{code}} {{description}}",
"desktop.recovery.terminated.detail": "Finestra: {{window}}\nMotivo: {{reason}}\nCodice: {{code}}",
"desktop.recovery.unknown": "<sconosciuto>",
"desktop.dialog.chooseFolder": "Scegli una cartella",
"desktop.dialog.chooseFile": "Scegli un file",
"desktop.dialog.saveFile": "Salva file",
"desktop.dialog.files": "File",
"desktop.server.local": "Server locale",
"desktop.wsl.error.windowsOnly": "WSL è disponibile solo in Windows",
"desktop.wsl.error.unavailable": "WSL non è disponibile",
"desktop.wsl.error.listInstalled": "Impossibile elencare le distribuzioni WSL installate",
"desktop.wsl.error.listOnline": "Impossibile elencare le distribuzioni WSL disponibili online",
"desktop.wsl.error.executeDistro": "Impossibile eseguire comandi nella distribuzione",
"desktop.wsl.error.installWsl": "Installazione di WSL non riuscita",
"desktop.wsl.error.installDistro": "Impossibile installare la distribuzione: {{distro}}",
"desktop.wsl.error.installOpencode": "Installazione di OpenCode non riuscita",
"desktop.wsl.error.alreadyAdded": "{{distro}} è già stata aggiunta",
"desktop.wsl.error.opencodeMissing": "opencode non è installato in questa distribuzione",
"desktop.wsl.error.opencodeCannotRun": "opencode è installato, ma non è stato possibile eseguirlo",
"desktop.wsl.error.opencodeNotInstalled": "OpenCode non è installato in {{distro}}",
"desktop.wsl.error.updateVersion":
"L'aggiornamento di OpenCode è terminato, ma {{distro}} segnala ancora la versione {{installed}}; era prevista la versione {{expected}}",
"desktop.wsl.error.noVersion": "nessuna versione",
"desktop.wsl.error.serverExited": "Il server WSL si è chiuso dopo l'avvio (code={{code}} signal={{signal}})",
"desktop.wsl.error.serverExitedBeforeHealthy":
"Il server WSL si è chiuso prima di diventare operativo (code={{code}} signal={{signal}}){{output}}",
"desktop.wsl.error.healthTimeout":
"Il controllo dello stato del sidecar per {{distro}} ha superato il tempo limite di {{timeout}}ms",
"desktop.wsl.error.commandTimeout": "{{command}} {{args}} ha superato il tempo limite di {{timeout}}ms",
"desktop.wsl.error.failedPort": "Impossibile ottenere la porta",
"desktop.picker.error.notSelected": "Il file non è stato selezionato nella finestra di selezione",
"desktop.picker.error.sizeLimit": "Gli allegati selezionati superano il limite di {{limit}} MB",
}
+148 -17
View File
@@ -1,4 +1,102 @@
export const dict = {
"desktop.menu.app": "OpenCode",
"desktop.menu.file": "ファイル",
"desktop.menu.edit": "編集",
"desktop.menu.view": "表示",
"desktop.menu.go": "移動",
"desktop.menu.window": "ウインドウ",
"desktop.menu.help": "ヘルプ",
"desktop.menu.checkForUpdates": "アップデートを確認...",
"desktop.menu.settings": "設定",
"desktop.menu.reloadWebview": "Webビューを再読み込み",
"desktop.menu.restart": "再起動",
"desktop.menu.exportLogs": "ログをエクスポート...",
"desktop.menu.newSession": "新しいセッション",
"desktop.menu.openProject": "プロジェクトを開く...",
"desktop.menu.newWindow": "新しいウインドウ",
"desktop.menu.closeWindow": "ウインドウを閉じる",
"desktop.menu.undo": "取り消す",
"desktop.menu.redo": "やり直す",
"desktop.menu.cut": "切り取り",
"desktop.menu.copy": "コピー",
"desktop.menu.paste": "ペースト",
"desktop.menu.delete": "削除",
"desktop.menu.selectAll": "すべてを選択",
"desktop.menu.toggleSidebar": "サイドバーの表示を切り替える",
"desktop.menu.toggleTerminal": "ターミナルの表示を切り替える",
"desktop.menu.toggleFileTree": "ファイルツリーの表示を切り替える",
"desktop.menu.reload": "再読み込み",
"desktop.menu.toggleDeveloperTools": "開発者ツールの表示を切り替える",
"desktop.menu.actualSize": "実際のサイズ",
"desktop.menu.zoomIn": "拡大",
"desktop.menu.zoomOut": "縮小",
"desktop.menu.toggleFullScreen": "フルスクリーン表示を切り替える",
"desktop.menu.back": "戻る",
"desktop.menu.forward": "進む",
"desktop.menu.previousSession": "前のセッション",
"desktop.menu.nextSession": "次のセッション",
"desktop.menu.previousProject": "前のプロジェクト",
"desktop.menu.nextProject": "次のプロジェクト",
"desktop.menu.minimize": "最小化",
"desktop.menu.maximize": "最大化",
"desktop.menu.documentation": "OpenCodeドキュメント",
"desktop.menu.supportForum": "サポートフォーラム",
"desktop.menu.shareFeedback": "フィードバックを送信",
"desktop.menu.reportBug": "バグを報告",
"desktop.menu.ariaLabel": "OpenCodeメニュー",
"desktop.updater.dialog.checkFailed.message": "アップデートを確認できませんでした。",
"desktop.updater.dialog.checkFailed.title": "アップデートエラー",
"desktop.updater.dialog.upToDate.message": "最新の状態です。",
"desktop.updater.dialog.upToDate.title": "アップデートはありません",
"desktop.updater.dialog.ready.message": "アップデート{{version}}をダウンロードしました。今すぐ再起動しますか?",
"desktop.updater.dialog.ready.title": "アップデートの準備ができました",
"desktop.updater.dialog.restart": "再起動",
"desktop.updater.dialog.later": "後で",
"desktop.recovery.action.relaunch": "再起動",
"desktop.recovery.action.exportLogs": "ログをエクスポート",
"desktop.recovery.action.keepWaiting": "待機を続ける",
"desktop.recovery.action.quit": "終了",
"desktop.recovery.loadFailed": "OpenCodeを読み込めませんでした",
"desktop.recovery.terminated": "OpenCodeのウインドウが予期せず終了しました",
"desktop.recovery.unresponsive": "OpenCodeが応答していません",
"desktop.recovery.unresponsive.detail": "アプリを再起動するか、ログを開くか、待機を続けることができます。",
"desktop.recovery.loadFailed.detail": "ウインドウ: {{window}}\nURL: {{url}}\nエラー: {{code}} {{description}}",
"desktop.recovery.terminated.detail": "ウインドウ: {{window}}\n理由: {{reason}}\nコード: {{code}}",
"desktop.recovery.unknown": "<不明>",
"desktop.dialog.chooseFolder": "フォルダを選択",
"desktop.dialog.chooseFile": "ファイルを選択",
"desktop.dialog.saveFile": "ファイルを保存",
"desktop.dialog.files": "ファイル",
"desktop.server.local": "ローカルサーバー",
"desktop.wsl.error.windowsOnly": "WSLはWindowsでのみ利用できます",
"desktop.wsl.error.unavailable": "WSLを利用できません",
"desktop.wsl.error.listInstalled": "インストール済みのWSLディストリビューションの一覧を取得できませんでした",
"desktop.wsl.error.listOnline": "オンラインのWSLディストリビューションの一覧を取得できませんでした",
"desktop.wsl.error.executeDistro": "ディストリビューションでコマンドを実行できません",
"desktop.wsl.error.installWsl": "WSLのインストールに失敗しました",
"desktop.wsl.error.installDistro": "ディストリビューションのインストールに失敗しました: {{distro}}",
"desktop.wsl.error.installOpencode": "OpenCodeのインストールに失敗しました",
"desktop.wsl.error.alreadyAdded": "{{distro}}はすでに追加されています",
"desktop.wsl.error.opencodeMissing": "このディストリビューションにはopencodeがインストールされていません",
"desktop.wsl.error.opencodeCannotRun": "opencodeはインストールされていますが、実行できませんでした",
"desktop.wsl.error.opencodeNotInstalled": "{{distro}}にはOpenCodeがインストールされていません",
"desktop.wsl.error.updateVersion":
"OpenCodeのアップデートは完了しましたが、{{distro}}から報告されたバージョンはまだ{{installed}}です。想定されるバージョンは{{expected}}です",
"desktop.wsl.error.noVersion": "バージョンなし",
"desktop.wsl.error.serverExited": "WSLサーバーが起動後に終了しました (code={{code}} signal={{signal}})",
"desktop.wsl.error.serverExitedBeforeHealthy":
"WSLサーバーが正常に稼働する前に終了しました (code={{code}} signal={{signal}}){{output}}",
"desktop.wsl.error.healthTimeout": "{{distro}}のSidecarのヘルスチェックが{{timeout}}ms後にタイムアウトしました",
"desktop.wsl.error.commandTimeout": "{{command}} {{args}}が{{timeout}}ms後にタイムアウトしました",
"desktop.wsl.error.failedPort": "ポートを取得できませんでした",
"desktop.picker.error.notSelected": "ピッカーでファイルが選択されませんでした",
"desktop.picker.error.sizeLimit": "選択した添付ファイルが上限の{{limit}} MBを超えています",
"command.category.suggested": "おすすめ",
"command.category.view": "表示",
"command.category.project": "プロジェクト",
@@ -16,6 +114,7 @@ export const dict = {
"command.category.permissions": "権限",
"command.category.workspace": "ワークスペース",
"command.category.settings": "設定",
"command.logs.export": "ログをエクスポート",
"theme.scheme.system": "システム",
"theme.scheme.light": "ライト",
"theme.scheme.dark": "ダーク",
@@ -94,13 +193,14 @@ export const dict = {
"dialog.provider.empty": "プロバイダーが見つかりません",
"dialog.provider.group.popular": "人気",
"dialog.provider.group.other": "その他",
"dialog.provider.custom.label": "OpenAI互換のカスタムプロバイダー",
"dialog.provider.tag.recommended": "推奨",
"dialog.provider.opencode.note": "Claude, GPT, Geminiなどを含む厳選されたモデル",
"dialog.provider.opencode.tagline": "信頼性の高い最適化モデル",
"dialog.provider.opencodeGo.tagline": "すべての人に低価格のサブスクリプション",
"dialog.provider.anthropic.note": "Claude Pro/MaxまたはAPIキーで接続",
"dialog.provider.copilot.note": "CopilotまたはAPIキーで接続",
"dialog.provider.openai.note": "ChatGPT Pro/PlusまたはAPIキーで接続",
"dialog.provider.anthropic.note": "ProやMaxを含むClaudeモデルに直接アクセス",
"dialog.provider.copilot.note": "GitHub Copilotを通じてコーディングを支援するAIモデル",
"dialog.provider.openai.note": "高速で高性能な汎用AIタスク向けのGPTモデル",
"dialog.provider.google.note": "高速で構造化された応答のためのGeminiモデル",
"dialog.provider.openrouter.note": "1つのプロバイダーからすべてのサポートされているモデルにアクセス",
"dialog.provider.vercel.note": "スマートルーターによるAIモデルへの統合アクセス",
@@ -112,11 +212,14 @@ export const dict = {
"dialog.model.manage.provider.toggle": "すべての{{provider}}モデルを切り替え",
"dialog.model.unpaid.freeModels.title": "OpenCodeが提供する無料モデル",
"dialog.model.unpaid.addMore.title": "人気のプロバイダーからモデルを追加",
"dialog.model.unpaid.viewMoreProviders": "その他70以上のプロバイダーを見る",
"dialog.provider.viewAll": "さらにプロバイダーを表示",
"provider.connect.title": "{{provider}}を接続",
"provider.connect.title.anthropicProMax": "Claude Pro/Maxでログイン",
"provider.connect.selectMethod": "{{provider}}のログイン方法を選択してください。",
"provider.connect.method.apiKey": "APIキー",
"provider.connect.method.browser": "ブラウザ",
"provider.connect.method.headless": "ヘッドレス モード",
"provider.connect.status.inProgress": "認証中...",
"provider.connect.status.waiting": "認証を待機中...",
"provider.connect.status.failed": "認証に失敗しました: {{error}}",
@@ -147,6 +250,7 @@ export const dict = {
"provider.connect.toast.connected.title": "{{provider}}が接続されました",
"provider.connect.toast.connected.description": "{{provider}}モデルが使用可能になりました。",
"provider.custom.title": "カスタムプロバイダー",
"provider.custom.unavailable": "このサーバーではカスタムプロバイダーを利用できません",
"provider.custom.description.prefix": "OpenAI互換のプロバイダーを設定します。詳細は",
"provider.custom.description.link": "プロバイダー設定ドキュメント",
"provider.custom.description.suffix": "をご覧ください。",
@@ -195,7 +299,7 @@ export const dict = {
"model.input.image": "画像",
"model.input.audio": "音声",
"model.input.video": "動画",
"model.input.pdf": "pdf",
"model.input.pdf": "PDF",
"model.tooltip.allows": "対応: {{inputs}}",
"model.tooltip.context.label": "コンテキスト",
"model.tooltip.inputs": "入力",
@@ -214,7 +318,7 @@ export const dict = {
"common.clear": "クリア",
"common.connect": "接続",
"common.disconnect": "切断",
"common.continue": "送信",
"common.continue": "続行",
"common.submit": "送信",
"common.save": "保存",
"common.saving": "保存中...",
@@ -258,7 +362,7 @@ export const dict = {
"prompt.popover.emptyResults": "一致する結果がありません",
"prompt.popover.emptyCommands": "一致するコマンドがありません",
"prompt.dropzone.label": "画像、PDF、またはテキストファイルをここにドロップしてください",
"prompt.dropzone.file.label": "ドロップして@メンションファイルを追加",
"prompt.dropzone.file.label": "ドロップしてファイルを@メンション",
"prompt.slash.badge.custom": "カスタム",
"prompt.slash.badge.skill": "スキル",
"prompt.slash.badge.mcp": "mcp",
@@ -401,6 +505,22 @@ export const dict = {
"wsl.onboarding.desktopVersion": "デスクトップ {{version}}",
"wsl.onboarding.versionMismatch": "インストールされているバージョンがデスクトップアプリのバージョンと一致しません。",
"wsl.onboarding.adding": "追加中...",
"help.tabs.toast.ariaLabel": "タブのご紹介。タブを使って作業と進行中のセッションを整理できます",
"help.tabs.toast.dismiss": "タブに関する案内を閉じる",
"help.tabs.title": "タブのご紹介",
"help.tabs.description": "タブを使って作業と進行中のセッションを整理できます",
"help.tabs.date": "7月14日",
"help.tabs.introduction": "OpenCode Desktopでタブを中心とした操作ができるようになりました。",
"help.tabs.sessions":
"新しいセッションをタブで開始したり、プロジェクトから既存のセッションを開いたりできます。新しい作業を始めるときは新しいタブを開き、作業が終わったら閉じます。",
"help.tabs.organize":
"複数のタブを開いておくと、進行中のセッションを整理しやすくなります。タブを残しておく場合は、覚えやすい名前に変更できます。",
"help.tabs.home":
"新しいホーム画面には、すべてのセッションとプロジェクトが表示されます。セッションを選択するとタブで開きます。",
"help.tabs.persistence": "アプリを再度開いたときも、タブは開いたままです。",
"help.tabs.worktrees":
"新しいデザインはまだGitワークツリーに対応していませんが、近日中に対応する予定です。以前のレイアウトを引き続き使用する場合は、設定でレイアウトを切り替えることができます。新しいレイアウトは数週間後に標準となる予定です。",
"dialog.project.edit.title": "プロジェクトを編集",
"dialog.project.edit.name": "名前",
"dialog.project.edit.icon": "アイコン",
@@ -567,7 +687,7 @@ export const dict = {
"session.error.notFound.description": "このタブが参照するセッションは、このサーバーには存在しません。",
"session.error.notFound.closeTab": "タブを閉じる",
"session.error.serverConnection": "このサーバーに接続できません",
"session.review.filesChanged": "{{count}} ファイル変更",
"session.review.filesChanged": "変更されたファイル: {{count}}",
"session.review.change.one": "変更",
"session.review.change.other": "変更",
"session.review.loadingChanges": "変更を読み込み中...",
@@ -657,10 +777,10 @@ export const dict = {
"ターミナルの接続が中断されました。これはサーバーが再起動したときに発生することがあります。",
"common.closeTab": "タブを閉じる",
"common.dismiss": "閉じる",
"common.requestFailed": "リクエスト失敗",
"common.requestFailed": "リクエスト失敗しました",
"common.moreOptions": "その他のオプション",
"common.learnMore": "詳細",
"common.rename": "名前変更",
"common.rename": "名前変更",
"common.reset": "リセット",
"common.archive": "アーカイブ",
"common.delete": "削除",
@@ -734,8 +854,9 @@ export const dict = {
"settings.general.row.mobileTitlebarBottom.title": "下部ナビゲーション",
"settings.general.row.mobileTitlebarBottom.description":
"モバイルではタイトルバーとセッションタブを画面下部に配置します",
"settings.general.row.showCustomAgents.title": "カスタムエージェント",
"settings.general.row.showCustomAgents.description": "コンポーザーにエージェント選択を表示します",
"settings.general.row.showCustomAgents.title": "エージェントを表示",
"settings.general.row.showCustomAgents.description":
"コンポーザーでエージェントを切り替えます。非表示の場合は、デフォルトでBuildエージェントが使用されます。",
"settings.general.row.reasoningSummaries.title": "推論の要約を表示",
"settings.general.row.reasoningSummaries.description": "タイムラインにモデルの推論の要約を表示します",
"settings.general.row.shellToolPartsExpanded.title": "shell ツールパーツを展開",
@@ -846,7 +967,7 @@ export const dict = {
"settings.shortcuts.group.terminal": "ターミナル",
"settings.shortcuts.group.prompt": "プロンプト",
"settings.providers.title": "プロバイダー",
"settings.providers.description": "プロバイダー設定はここで構成できます。",
"settings.providers.description": "プロバイダー設定は今後ここで構成できるようになります。",
"settings.providers.section.connected": "接続済みプロバイダー",
"settings.providers.connected.empty": "接続済みプロバイダーはありません",
"settings.providers.section.popular": "人気のプロバイダー",
@@ -855,13 +976,13 @@ export const dict = {
"settings.providers.tag.custom": "カスタム",
"settings.providers.tag.other": "その他",
"settings.models.title": "モデル",
"settings.models.description": "モデル設定はここで構成できます。",
"settings.models.description": "モデル設定は今後ここで構成できるようになります。",
"settings.agents.title": "エージェント",
"settings.agents.description": "エージェント設定はここで構成できます。",
"settings.agents.description": "エージェント設定は今後ここで構成できるようになります。",
"settings.commands.title": "コマンド",
"settings.commands.description": "コマンド設定はここで構成できます。",
"settings.commands.description": "コマンド設定は今後ここで構成できるようになります。",
"settings.mcp.title": "MCP",
"settings.mcp.description": "MCP設定はここで構成できます。",
"settings.mcp.description": "MCP設定は今後ここで構成できるようになります。",
"settings.permissions.title": "権限",
"settings.permissions.description": "サーバーがデフォルトで使用できるツールを制御します。",
"settings.permissions.section.tools": "ツール",
@@ -955,6 +1076,9 @@ export const dict = {
"session.question.progress": "{{total}} 問中 {{current}} 問",
"session.header.open.finder": "Finder",
"session.header.open.fileExplorer": "エクスプローラー",
"session.header.reveal.finder": "Finderで表示",
"session.header.reveal.fileExplorer": "エクスプローラーで表示",
"session.header.reveal.containingFolder": "親フォルダーを開く",
"session.header.open.fileManager": "ファイルマネージャー",
"session.header.open.app.vscode": "VS Code",
"session.header.open.app.cursor": "Cursor",
@@ -972,7 +1096,8 @@ export const dict = {
"debugBar.ariaLabel": "開発パフォーマンス診断",
"debugBar.na": "n/a",
"debugBar.nav.label": "NAV",
"debugBar.nav.tip": "セッションページに触れる最後に完了したルート遷移。ルーター開始から安定後の最初の描画まで測定。",
"debugBar.nav.tip":
"セッションページに関係する最後に完了したルート遷移。ルーターの開始から処理完了後の最初の描画までを測定。",
"debugBar.fps.label": "FPS",
"debugBar.fps.tip": "過去5秒間のローリングフレーム/秒。",
"debugBar.frame.label": "FRAME",
@@ -1014,4 +1139,10 @@ export const dict = {
"error.childStore.persistedProjectIconCreateFailed": "永続プロジェクトアイコンの作成に失敗しました",
"error.childStore.storeCreateFailed": "ストアの作成に失敗しました",
"terminal.connectionLost.abnormalClose": "WebSocket が異常終了しました: {{code}}",
"terminal.connectTicket.csrfError":
"PTY接続チケットは、オリジンまたはCSRFチェックによって拒否されました。サーバーのCORS設定を確認してください。",
"terminal.connectTicket.statusError": "PTY接続チケットがステータス {{status}} で失敗しました",
"titlebar.update": "アップデート",
"titlebar.updateVersion": "アップデート {{version}}",
}
+153 -23
View File
@@ -19,7 +19,7 @@ export const dict = {
"theme.scheme.system": "시스템",
"theme.scheme.light": "라이트",
"theme.scheme.dark": "다크",
"command.sidebar.toggle": "사이드바 토글",
"command.sidebar.toggle": "사이드바 표시/숨기기",
"command.project.open": "프로젝트 열기",
"command.provider.connect": "공급자 연결",
"command.server.switch": "서버 전환",
@@ -42,12 +42,12 @@ export const dict = {
"command.context.addSelection": "선택 영역을 컨텍스트에 추가",
"command.context.addSelection.description": "현재 파일에서 선택한 줄을 추가",
"command.input.focus": "입력창 포커스",
"command.terminal.toggle": "터미널 토글",
"command.fileTree.toggle": "파일 트리 토글",
"command.review.toggle": "검토 토글",
"command.terminal.toggle": "터미널 표시/숨기기",
"command.fileTree.toggle": "파일 트리 표시/숨기기",
"command.review.toggle": "검토 표시/숨기기",
"command.terminal.new": "새 터미널",
"command.terminal.new.description": "새 터미널 탭 생성",
"command.steps.toggle": "단계 토글",
"command.steps.toggle": "단계 표시/숨기기",
"command.steps.toggle.description": "현재 메시지의 단계 표시/숨기기",
"command.message.previous": "이전 메시지",
"command.message.previous.description": "이전 사용자 메시지로 이동",
@@ -55,8 +55,8 @@ export const dict = {
"command.message.next.description": "다음 사용자 메시지로 이동",
"command.model.choose": "모델 선택",
"command.model.choose.description": "다른 모델 선택",
"command.mcp.toggle": "MCP 토글",
"command.mcp.toggle.description": "MCP 토글",
"command.mcp.toggle": "MCP 전환",
"command.mcp.toggle.description": "MCP 전환",
"command.agent.cycle": "에이전트 순환",
"command.agent.cycle.description": "다음 에이전트로 전환",
"command.agent.cycle.reverse": "에이전트 역순환",
@@ -90,13 +90,14 @@ export const dict = {
"dialog.provider.empty": "공급자 없음",
"dialog.provider.group.popular": "인기",
"dialog.provider.group.other": "기타",
"dialog.provider.custom.label": "OpenAI 호환 사용자 지정 공급자",
"dialog.provider.tag.recommended": "추천",
"dialog.provider.opencode.note": "Claude, GPT, Gemini 등을 포함한 엄선된 모델",
"dialog.provider.opencode.tagline": "신뢰할 수 있는 최적화 모델",
"dialog.provider.opencodeGo.tagline": "모두를 위한 저렴한 구독",
"dialog.provider.anthropic.note": "Claude Pro/Max 또는 API 키로 연결",
"dialog.provider.copilot.note": "Copilot 또는 API 키로 연결",
"dialog.provider.openai.note": "ChatGPT Pro/Plus 또는 API 키로 연결",
"dialog.provider.anthropic.note": "Pro 및 Max를 포함한 Claude 모델에 직접 액세스",
"dialog.provider.copilot.note": "GitHub Copilot을 통한 코딩 지원용 AI 모델",
"dialog.provider.openai.note": "빠르고 강력한 범용 AI 작업을 위한 GPT 모델",
"dialog.provider.google.note": "빠르고 구조화된 응답을 위한 Gemini 모델",
"dialog.provider.openrouter.note": "모든 지원 모델을 단일 공급자에서 액세스",
"dialog.provider.vercel.note": "스마트 라우팅을 통한 AI 모델 통합 액세스",
@@ -108,11 +109,14 @@ export const dict = {
"dialog.model.manage.provider.toggle": "모든 {{provider}} 모델 토글",
"dialog.model.unpaid.freeModels.title": "OpenCode에서 제공하는 무료 모델",
"dialog.model.unpaid.addMore.title": "인기 공급자의 모델 추가",
"dialog.model.unpaid.viewMoreProviders": "70개 이상의 공급자 더 보기",
"dialog.provider.viewAll": "더 많은 공급자 보기",
"provider.connect.title": "{{provider}} 연결",
"provider.connect.title.anthropicProMax": "Claude Pro/Max로 로그인",
"provider.connect.selectMethod": "{{provider}} 로그인 방법 선택",
"provider.connect.method.apiKey": "API 키",
"provider.connect.method.browser": "브라우저",
"provider.connect.method.headless": "헤드리스 모드",
"provider.connect.status.inProgress": "인증 진행 중...",
"provider.connect.status.waiting": "인증 대기 중...",
"provider.connect.status.failed": "인증 실패: {{error}}",
@@ -143,6 +147,7 @@ export const dict = {
"provider.connect.toast.connected.title": "{{provider}} 연결됨",
"provider.connect.toast.connected.description": "이제 {{provider}} 모델을 사용할 수 있습니다.",
"provider.custom.title": "사용자 지정 공급자",
"provider.custom.unavailable": "이 서버에서는 사용자 지정 공급자를 사용할 수 없습니다",
"provider.custom.description.prefix": "OpenAI 호환 공급자를 구성합니다. ",
"provider.custom.description.link": "공급자 구성 문서",
"provider.custom.description.suffix": "를 참조하세요.",
@@ -191,7 +196,7 @@ export const dict = {
"model.input.image": "이미지",
"model.input.audio": "오디오",
"model.input.video": "비디오",
"model.input.pdf": "pdf",
"model.input.pdf": "PDF",
"model.tooltip.allows": "지원: {{inputs}}",
"model.tooltip.reasoning.allowed": "추론 허용",
"model.tooltip.reasoning.none": "추론 없음",
@@ -204,7 +209,7 @@ export const dict = {
"common.cancel": "취소",
"common.connect": "연결",
"common.disconnect": "연결 해제",
"common.continue": "제출",
"common.continue": "계속",
"common.submit": "제출",
"common.save": "저장",
"common.saving": "저장 중...",
@@ -254,7 +259,7 @@ export const dict = {
"prompt.context.includeActiveFile": "활성 파일 포함",
"prompt.context.removeActiveFile": "컨텍스트에서 활성 파일 제거",
"prompt.context.removeFile": "컨텍스트에서 파일 제거",
"prompt.action.attachFile": "파일 첨부",
"prompt.action.attachFile": "파일 추가",
"prompt.menu.addImagesAndFiles": "파일 및 기타 항목 추가",
"prompt.menu.imagesAndFiles": "이미지 및 파일",
"prompt.menu.commands": "명령어",
@@ -589,15 +594,15 @@ export const dict = {
"settings.general.row.followup.title": "후속 조치 동작",
"settings.general.row.followup.description": "후속 프롬프트를 즉시 실행할지 대기열에 넣을지 선택하세요",
"settings.general.row.followup.option.queue": "대기열",
"settings.general.row.followup.option.steer": "조종",
"settings.general.row.followup.option.steer": "즉시 반영",
"settings.general.row.reasoningSummaries.title": "추론 요약 표시",
"settings.general.row.reasoningSummaries.description": "타임라인에 모델 추론 요약 표시",
"settings.general.row.shellToolPartsExpanded.title": "shell 도구 파트 펼치기",
"settings.general.row.shellToolPartsExpanded.title": "shell 도구 항목 펼치기",
"settings.general.row.shellToolPartsExpanded.description":
"타임라인에서 기본적으로 shell 도구 파트를 펼친 상태로 표시합니다",
"settings.general.row.editToolPartsExpanded.title": "edit 도구 파트 펼치기",
"타임라인에서 기본적으로 shell 도구 항목을 펼친 상태로 표시합니다",
"settings.general.row.editToolPartsExpanded.title": "edit 도구 항목 펼치기",
"settings.general.row.editToolPartsExpanded.description":
"타임라인에서 기본적으로 edit, write, patch 도구 파트를 펼친 상태로 표시합니다",
"타임라인에서 기본적으로 edit, write, patch 도구 항목을 펼친 상태로 표시합니다",
"settings.general.row.wayland.title": "네이티브 Wayland 사용",
"settings.general.row.wayland.description": "Wayland에서 X11 폴백을 비활성화합니다. 다시 시작해야 합니다.",
"settings.general.row.wayland.tooltip":
@@ -724,8 +729,8 @@ export const dict = {
"settings.permissions.tool.bash.description": "셸 명령어 실행",
"settings.permissions.tool.task.title": "작업",
"settings.permissions.tool.task.description": "하위 에이전트 실행",
"settings.permissions.tool.skill.title": "기술",
"settings.permissions.tool.skill.description": "이름으로 기술 로드",
"settings.permissions.tool.skill.title": "스킬",
"settings.permissions.tool.skill.description": "이름으로 스킬 불러오기",
"settings.permissions.tool.lsp.title": "LSP",
"settings.permissions.tool.lsp.description": "언어 서버 쿼리 실행",
"settings.permissions.tool.todowrite.title": "할 일 쓰기",
@@ -796,6 +801,9 @@ export const dict = {
"session.question.progress": "{{total}}개의 질문 중 {{current}}개",
"session.header.open.finder": "Finder",
"session.header.open.fileExplorer": "파일 탐색기",
"session.header.reveal.finder": "Finder에서 보기",
"session.header.reveal.fileExplorer": "파일 탐색기에서 보기",
"session.header.reveal.containingFolder": "이 항목이 있는 폴더 열기",
"session.header.open.fileManager": "파일 관리자",
"session.header.open.app.vscode": "VS Code",
"session.header.open.app.cursor": "Cursor",
@@ -855,6 +863,12 @@ export const dict = {
"error.childStore.persistedProjectIconCreateFailed": "영구 프로젝트 아이콘 생성 실패",
"error.childStore.storeCreateFailed": "저장소 생성 실패",
"terminal.connectionLost.abnormalClose": "WebSocket이 비정상적으로 닫힘: {{code}}",
"terminal.connectTicket.csrfError":
"PTY 연결 티켓이 오리진 또는 CSRF 검사에서 거부되었습니다. 서버의 CORS 구성을 확인하세요.",
"terminal.connectTicket.statusError": "PTY 연결 티켓 실패(상태: {{status}})",
"titlebar.update": "업데이트",
"titlebar.updateVersion": "업데이트 {{version}}",
"command.project.previous": "이전 프로젝트",
"command.project.next": "다음 프로젝트",
@@ -957,7 +971,7 @@ export const dict = {
"home.sessions.group.today": "오늘",
"home.sessions.group.yesterday": "어제",
"home.sessions.group.older": "이전",
"home.providerTip": "75개 이상의 제공업체에 연결하여 Claude, GPT, Gemini 등의 다른 모델을 사용하세요",
"home.providerTip": "75개 이상의 공급자에 연결하여 Claude, GPT, Gemini 등의 다른 모델을 사용하세요",
"session.tab.unknown": "알 수 없는 세션",
"session.error.notFound": "이 세션을 찾을 수 없습니다",
@@ -1000,8 +1014,9 @@ export const dict = {
"settings.general.row.showStatus.description": "제목 표시줄에 서버 상태 버튼 표시",
"settings.general.row.mobileTitlebarBottom.title": "하단 탐색",
"settings.general.row.mobileTitlebarBottom.description": "모바일에서 제목 표시줄과 세션 탭을 화면 하단에 배치",
"settings.general.row.showCustomAgents.title": "사용자 지정 에이전트",
"settings.general.row.showCustomAgents.description": "입력창에 에이전트 선택기 표시",
"settings.general.row.showCustomAgents.title": "에이전트 표시",
"settings.general.row.showCustomAgents.description":
"입력창에서 에이전트를 전환합니다. 숨기면 기본적으로 Build 에이전트를 사용합니다.",
"settings.general.row.newInterface.title": "새 레이아웃",
"settings.general.row.newInterface.badge": "신규",
"settings.general.row.newInterface.description":
@@ -1013,4 +1028,119 @@ export const dict = {
"settings.general.row.pinchZoom.description": "트랙패드 핀치 및 Ctrl-스크롤 제스처로 확대/축소 허용",
"settings.updates.action.downloading": "다운로드 중...",
"settings.updates.action.installing": "설치 중...",
"command.logs.export": "로그 내보내기",
"help.tabs.toast.ariaLabel": "탭을 소개합니다. 탭으로 작업과 활성 세션을 정리하세요",
"help.tabs.toast.dismiss": "탭 정보 닫기",
"help.tabs.title": "탭 소개",
"help.tabs.description": "탭으로 작업과 활성 세션을 정리하세요",
"help.tabs.date": "7월 14일",
"help.tabs.introduction": "이제 OpenCode Desktop은 탭을 중심으로 구성됩니다.",
"help.tabs.sessions":
"탭에서 새 세션을 시작하거나 프로젝트에서 기존 세션을 여세요. 새로운 작업을 시작할 때 새 탭을 열고, 작업을 마치면 닫으세요.",
"help.tabs.organize":
"탭을 몇 개 열어 두면 활성 세션을 더 쉽게 정리할 수 있습니다. 탭을 계속 열어 둘 예정이라면 기억하기 쉬운 이름으로 바꾸세요.",
"help.tabs.home": "새 홈 화면에서 모든 세션과 프로젝트를 확인할 수 있습니다. 세션을 선택하면 탭에서 열립니다.",
"help.tabs.persistence": "앱을 다시 열어도 탭은 그대로 열려 있습니다.",
"help.tabs.worktrees":
"새 디자인은 아직 Git Worktrees를 지원하지 않지만 곧 지원할 예정입니다. 이전 레이아웃을 계속 사용하려면 설정에서 레이아웃을 전환할 수 있습니다. 단, 몇 주 후에는 새 레이아웃이 영구 적용됩니다.",
"desktop.menu.app": "OpenCode",
"desktop.menu.file": "파일",
"desktop.menu.edit": "편집",
"desktop.menu.view": "보기",
"desktop.menu.go": "이동",
"desktop.menu.window": "윈도우",
"desktop.menu.help": "도움말",
"desktop.menu.checkForUpdates": "업데이트 확인...",
"desktop.menu.settings": "설정",
"desktop.menu.reloadWebview": "WebView 새로 고침",
"desktop.menu.restart": "다시 시작",
"desktop.menu.exportLogs": "로그 내보내기...",
"desktop.menu.newSession": "새 세션",
"desktop.menu.openProject": "프로젝트 열기...",
"desktop.menu.newWindow": "새 윈도우",
"desktop.menu.closeWindow": "윈도우 닫기",
"desktop.menu.undo": "실행 취소",
"desktop.menu.redo": "다시 실행",
"desktop.menu.cut": "잘라내기",
"desktop.menu.copy": "복사",
"desktop.menu.paste": "붙여넣기",
"desktop.menu.delete": "삭제",
"desktop.menu.selectAll": "모두 선택",
"desktop.menu.toggleSidebar": "사이드바 표시/숨기기",
"desktop.menu.toggleTerminal": "터미널 표시/숨기기",
"desktop.menu.toggleFileTree": "파일 트리 표시/숨기기",
"desktop.menu.reload": "새로 고침",
"desktop.menu.toggleDeveloperTools": "개발자 도구 표시/숨기기",
"desktop.menu.actualSize": "실제 크기",
"desktop.menu.zoomIn": "확대",
"desktop.menu.zoomOut": "축소",
"desktop.menu.toggleFullScreen": "전체 화면 전환",
"desktop.menu.back": "뒤로",
"desktop.menu.forward": "앞으로",
"desktop.menu.previousSession": "이전 세션",
"desktop.menu.nextSession": "다음 세션",
"desktop.menu.previousProject": "이전 프로젝트",
"desktop.menu.nextProject": "다음 프로젝트",
"desktop.menu.minimize": "최소화",
"desktop.menu.maximize": "최대화",
"desktop.menu.documentation": "OpenCode 문서",
"desktop.menu.supportForum": "지원 포럼",
"desktop.menu.shareFeedback": "피드백 보내기",
"desktop.menu.reportBug": "버그 신고",
"desktop.menu.ariaLabel": "OpenCode 메뉴",
"desktop.updater.dialog.checkFailed.message": "업데이트를 확인하지 못했습니다.",
"desktop.updater.dialog.checkFailed.title": "업데이트 오류",
"desktop.updater.dialog.upToDate.message": "최신 버전을 사용 중입니다.",
"desktop.updater.dialog.upToDate.title": "업데이트 없음",
"desktop.updater.dialog.ready.message": "업데이트 {{version}} 다운로드가 완료되었습니다. 지금 다시 시작할까요?",
"desktop.updater.dialog.ready.title": "업데이트 준비 완료",
"desktop.updater.dialog.restart": "다시 시작",
"desktop.updater.dialog.later": "나중에",
"desktop.recovery.action.relaunch": "다시 실행",
"desktop.recovery.action.exportLogs": "로그 내보내기",
"desktop.recovery.action.keepWaiting": "계속 기다리기",
"desktop.recovery.action.quit": "종료",
"desktop.recovery.loadFailed": "OpenCode를 불러오지 못했습니다",
"desktop.recovery.terminated": "OpenCode 윈도우가 예기치 않게 종료되었습니다",
"desktop.recovery.unresponsive": "OpenCode가 응답하지 않습니다",
"desktop.recovery.unresponsive.detail": "앱을 다시 실행하거나 로그를 열거나 계속 기다릴 수 있습니다.",
"desktop.recovery.loadFailed.detail": "윈도우: {{window}}\nURL: {{url}}\n오류: {{code}} {{description}}",
"desktop.recovery.terminated.detail": "윈도우: {{window}}\n원인: {{reason}}\n코드: {{code}}",
"desktop.recovery.unknown": "<알 수 없음>",
"desktop.dialog.chooseFolder": "폴더 선택",
"desktop.dialog.chooseFile": "파일 선택",
"desktop.dialog.saveFile": "파일 저장",
"desktop.dialog.files": "파일",
"desktop.server.local": "로컬 서버",
"desktop.wsl.error.windowsOnly": "WSL은 Windows에서만 사용할 수 있습니다",
"desktop.wsl.error.unavailable": "WSL을 사용할 수 없습니다",
"desktop.wsl.error.listInstalled": "설치된 WSL 배포판 목록을 가져오지 못했습니다",
"desktop.wsl.error.listOnline": "온라인 WSL 배포판 목록을 가져오지 못했습니다",
"desktop.wsl.error.executeDistro": "배포판에서 명령을 실행할 수 없습니다",
"desktop.wsl.error.installWsl": "WSL 설치 실패",
"desktop.wsl.error.installDistro": "배포판 설치 실패: {{distro}}",
"desktop.wsl.error.installOpencode": "OpenCode 설치 실패",
"desktop.wsl.error.alreadyAdded": "{{distro}} 배포판은 이미 추가되었습니다",
"desktop.wsl.error.opencodeMissing": "이 배포판에 opencode가 설치되어 있지 않습니다",
"desktop.wsl.error.opencodeCannotRun": "opencode가 설치되어 있지만 실행할 수 없습니다",
"desktop.wsl.error.opencodeNotInstalled": "{{distro}}에 OpenCode가 설치되어 있지 않습니다",
"desktop.wsl.error.updateVersion":
"OpenCode 업데이트가 완료되었지만 {{distro}}에서 여전히 {{installed}} 버전으로 표시됩니다. 예상 버전: {{expected}}",
"desktop.wsl.error.noVersion": "버전 없음",
"desktop.wsl.error.serverExited": "WSL 서버가 시작 후 종료되었습니다(코드={{code}} 신호={{signal}})",
"desktop.wsl.error.serverExitedBeforeHealthy":
"WSL 서버가 정상 상태가 되기 전에 종료되었습니다(코드={{code}} 신호={{signal}}){{output}}",
"desktop.wsl.error.healthTimeout": "{{distro}} 사이드카의 상태 확인이 {{timeout}}ms 후 시간 초과되었습니다",
"desktop.wsl.error.commandTimeout": "{{command}} {{args}} 명령이 {{timeout}}ms 후 시간 초과되었습니다",
"desktop.wsl.error.failedPort": "포트를 가져오지 못했습니다",
"desktop.picker.error.notSelected": "선택기에서 파일을 선택하지 않았습니다",
"desktop.picker.error.sizeLimit": "선택한 첨부 파일이 {{limit}} MB 제한을 초과합니다",
}
+1150
View File
@@ -0,0 +1,1150 @@
export const dict = {
"desktop.menu.app": "OpenCode",
"desktop.menu.file": "Bestand",
"desktop.menu.edit": "Bewerken",
"desktop.menu.view": "Weergave",
"desktop.menu.go": "Ga",
"desktop.menu.window": "Venster",
"desktop.menu.help": "Help",
"desktop.menu.checkForUpdates": "Controleren op updates...",
"desktop.menu.settings": "Instellingen",
"desktop.menu.reloadWebview": "Webweergave opnieuw laden",
"desktop.menu.restart": "Opnieuw opstarten",
"desktop.menu.exportLogs": "Logboeken exporteren...",
"desktop.menu.newSession": "Nieuwe sessie",
"desktop.menu.openProject": "Project openen...",
"desktop.menu.newWindow": "Nieuw venster",
"desktop.menu.closeWindow": "Venster sluiten",
"desktop.menu.undo": "Ongedaan maken",
"desktop.menu.redo": "Opnieuw uitvoeren",
"desktop.menu.cut": "Knippen",
"desktop.menu.copy": "Kopiëren",
"desktop.menu.paste": "Plakken",
"desktop.menu.delete": "Verwijderen",
"desktop.menu.selectAll": "Alles selecteren",
"desktop.menu.toggleSidebar": "Zijbalk tonen of verbergen",
"desktop.menu.toggleTerminal": "Terminal tonen of verbergen",
"desktop.menu.toggleFileTree": "Bestandsstructuur tonen of verbergen",
"desktop.menu.reload": "Opnieuw laden",
"desktop.menu.toggleDeveloperTools": "Ontwikkelaarstools tonen of verbergen",
"desktop.menu.actualSize": "Werkelijke grootte",
"desktop.menu.zoomIn": "Inzoomen",
"desktop.menu.zoomOut": "Uitzoomen",
"desktop.menu.toggleFullScreen": "Schermvullende weergave in- of uitschakelen",
"desktop.menu.back": "Terug",
"desktop.menu.forward": "Vooruit",
"desktop.menu.previousSession": "Vorige sessie",
"desktop.menu.nextSession": "Volgende sessie",
"desktop.menu.previousProject": "Vorig project",
"desktop.menu.nextProject": "Volgend project",
"desktop.menu.minimize": "Minimaliseren",
"desktop.menu.maximize": "Maximaliseren",
"desktop.menu.documentation": "OpenCode-documentatie",
"desktop.menu.supportForum": "Supportforum",
"desktop.menu.shareFeedback": "Feedback delen",
"desktop.menu.reportBug": "Een bug melden",
"desktop.menu.ariaLabel": "OpenCode-menu",
"desktop.updater.dialog.checkFailed.message": "Controleren op updates is mislukt.",
"desktop.updater.dialog.checkFailed.title": "Updatefout",
"desktop.updater.dialog.upToDate.message": "Je bent helemaal bijgewerkt.",
"desktop.updater.dialog.upToDate.title": "Geen updates",
"desktop.updater.dialog.ready.message": "Update {{version}} is gedownload. Nu opnieuw opstarten?",
"desktop.updater.dialog.ready.title": "Update gereed",
"desktop.updater.dialog.restart": "Opnieuw opstarten",
"desktop.updater.dialog.later": "Later",
"desktop.recovery.action.relaunch": "Opnieuw openen",
"desktop.recovery.action.exportLogs": "Logboeken exporteren",
"desktop.recovery.action.keepWaiting": "Blijven wachten",
"desktop.recovery.action.quit": "Stoppen",
"desktop.recovery.loadFailed": "OpenCode kan niet worden geladen",
"desktop.recovery.terminated": "Het OpenCode-venster is onverwacht beëindigd",
"desktop.recovery.unresponsive": "OpenCode reageert niet",
"desktop.recovery.unresponsive.detail": "Je kunt de app opnieuw openen, de logboeken openen of blijven wachten.",
"desktop.recovery.loadFailed.detail": "Venster: {{window}}\nURL: {{url}}\nFout: {{code}} {{description}}",
"desktop.recovery.terminated.detail": "Venster: {{window}}\nReden: {{reason}}\nCode: {{code}}",
"desktop.recovery.unknown": "<onbekend>",
"desktop.dialog.chooseFolder": "Kies een map",
"desktop.dialog.chooseFile": "Kies een bestand",
"desktop.dialog.saveFile": "Bestand opslaan",
"desktop.dialog.files": "Bestanden",
"desktop.server.local": "Lokale server",
"desktop.wsl.error.windowsOnly": "WSL is alleen beschikbaar op Windows",
"desktop.wsl.error.unavailable": "WSL is niet beschikbaar",
"desktop.wsl.error.listInstalled": "Kan geïnstalleerde WSL-distributies niet weergeven",
"desktop.wsl.error.listOnline": "Kan online WSL-distributies niet weergeven",
"desktop.wsl.error.executeDistro": "Kan geen opdrachten uitvoeren in de distributie",
"desktop.wsl.error.installWsl": "Installatie van WSL is mislukt",
"desktop.wsl.error.installDistro": "Kan distributie niet installeren: {{distro}}",
"desktop.wsl.error.installOpencode": "Installatie van OpenCode is mislukt",
"desktop.wsl.error.alreadyAdded": "{{distro}} is al toegevoegd",
"desktop.wsl.error.opencodeMissing": "opencode is niet geïnstalleerd in deze distributie",
"desktop.wsl.error.opencodeCannotRun": "opencode is geïnstalleerd, maar kan niet worden uitgevoerd",
"desktop.wsl.error.opencodeNotInstalled": "OpenCode is niet geïnstalleerd in {{distro}}",
"desktop.wsl.error.updateVersion":
"De OpenCode-update is voltooid, maar {{distro}} meldt nog steeds {{installed}}; verwacht: {{expected}}",
"desktop.wsl.error.noVersion": "geen versie",
"desktop.wsl.error.serverExited": "WSL-server is na het opstarten afgesloten (code={{code}} signaal={{signal}})",
"desktop.wsl.error.serverExitedBeforeHealthy":
"WSL-server is afgesloten voordat deze gereed was (code={{code}} signaal={{signal}}){{output}}",
"desktop.wsl.error.healthTimeout": "Time-out bij statuscontrole van sidecar voor {{distro}} na {{timeout}} ms",
"desktop.wsl.error.commandTimeout": "Time-out voor {{command}} {{args}} na {{timeout}} ms",
"desktop.wsl.error.failedPort": "Kan poort niet ophalen",
"desktop.picker.error.notSelected": "Er is geen bestand geselecteerd in de bestandskiezer",
"desktop.picker.error.sizeLimit": "De geselecteerde bijlagen overschrijden de limiet van {{limit}} MB",
"command.category.suggested": "Voorgesteld",
"command.category.view": "Weergave",
"command.category.project": "Project",
"command.category.provider": "Aanbieder",
"command.category.server": "Server",
"command.category.session": "Sessie",
"command.category.theme": "Thema",
"command.category.language": "Taal",
"command.category.file": "Bestand",
"command.category.context": "Context",
"command.category.terminal": "Terminal",
"command.category.model": "Model",
"command.category.mcp": "MCP",
"command.category.agent": "Agent",
"command.category.permissions": "Machtigingen",
"command.category.workspace": "Werkruimte",
"command.category.settings": "Instellingen",
"command.logs.export": "Logboeken exporteren",
"theme.scheme.system": "Systeem",
"theme.scheme.light": "Licht",
"theme.scheme.dark": "Donker",
"command.sidebar.toggle": "Zijbalk tonen of verbergen",
"command.project.open": "Project openen",
"command.project.previous": "Vorig project",
"command.project.next": "Volgende project",
"command.project.index": "Ga naar project {{index}}",
"command.provider.connect": "Verbinding maken met aanbieder",
"command.server.switch": "Van server wisselen",
"command.settings.open": "Instellingen openen",
"command.session.previous": "Vorige sessie",
"command.session.next": "Volgende sessie",
"command.session.previous.unseen": "Vorige ongelezen sessie",
"command.session.next.unseen": "Volgende ongelezen sessie",
"command.session.archive": "Sessie archiveren",
"command.palette": "Commandopalet",
"command.theme.cycle": "Volgend thema",
"command.theme.set": "Gebruik thema: {{theme}}",
"command.theme.scheme.cycle": "Volgend kleurenschema",
"command.theme.scheme.set": "Gebruik kleurenschema: {{scheme}}",
"command.language.cycle": "Volgende taal",
"command.language.set": "Gebruik taal: {{language}}",
"command.session.new": "Nieuwe sessie",
"command.file.open": "Bestand openen",
"command.tab.close": "Tabblad sluiten",
"command.tab.reopenClosed": "Gesloten tabblad opnieuw openen",
"command.context.addSelection": "Voeg selectie toe aan context",
"command.context.addSelection.description": "Voeg geselecteerde regels uit het huidige bestand toe",
"command.input.focus": "Invoerveld activeren",
"command.terminal.toggle": "Terminal tonen of verbergen",
"command.fileTree.toggle": "Bestandsstructuur tonen of verbergen",
"command.review.toggle": "Beoordeling tonen of verbergen",
"command.terminal.new": "Nieuwe terminal",
"command.terminal.new.description": "Maak een nieuw terminaltabblad",
"command.steps.toggle": "Stappen tonen of verbergen",
"command.steps.toggle.description": "Toon of verberg stappen voor het huidige bericht",
"command.message.previous": "Vorig bericht",
"command.message.previous.description": "Ga naar het vorige gebruikersbericht",
"command.message.next": "Volgend bericht",
"command.message.next.description": "Ga naar het volgende gebruikersbericht",
"command.model.choose": "Kies model",
"command.model.choose.description": "Selecteer een ander model",
"command.mcp.toggle": "MCP's in- of uitschakelen",
"command.mcp.toggle.description": "MCP's in- of uitschakelen",
"command.agent.cycle": "Volgende agent",
"command.agent.cycle.description": "Schakel over naar de volgende agent",
"command.agent.cycle.reverse": "Vorige agent",
"command.agent.cycle.reverse.description": "Schakel over naar de vorige agent",
"command.model.variant.cycle": "Volgend denkniveau",
"command.model.variant.cycle.description": "Ga naar het volgende inspanningsniveau",
"command.prompt.mode.shell": "Shell",
"command.prompt.mode.normal": "Prompt",
"command.permissions.autoaccept.enable": "Machtigingen automatisch accepteren",
"command.permissions.autoaccept.disable": "Stop met het automatisch accepteren van machtigingen",
"command.workspace.toggle": "Werkruimten in- of uitschakelen",
"command.workspace.toggle.description": "Schakel meerdere werkruimten in de zijbalk in of uit",
"command.session.undo": "Ongedaan maken",
"command.session.undo.description": "Maak het laatste bericht ongedaan",
"command.session.redo": "Opnieuw uitvoeren",
"command.session.redo.description": "Voer het laatste ongedaan gemaakte bericht opnieuw uit",
"command.session.compact": "Sessie comprimeren",
"command.session.compact.description": "Vat de sessie samen om de contextgrootte te verkleinen",
"command.session.fork": "Afsplitsen vanaf bericht",
"command.session.fork.description": "Maak een nieuwe sessie op basis van een eerder bericht",
"command.session.share": "Sessie delen",
"command.session.share.description": "Deel deze sessie en kopieer de URL naar het klembord",
"command.session.unshare": "Sessie niet meer delen",
"command.session.unshare.description": "Stop met het delen van deze sessie",
"palette.search.placeholder": "Zoek naar bestanden, opdrachten en sessies",
"palette.search.placeholder.home": "Opdrachten en sessies zoeken",
"palette.empty": "Geen resultaten gevonden",
"palette.group.commands": "Commando's",
"palette.group.files": "Bestanden",
"dialog.provider.search.placeholder": "Aanbieders zoeken",
"dialog.provider.empty": "Geen aanbieders gevonden",
"dialog.provider.group.popular": "Populair",
"dialog.provider.group.other": "Anders",
"dialog.provider.custom.label": "Aangepaste OpenAI-compatibele aanbieder",
"dialog.provider.tag.recommended": "Aanbevolen",
"dialog.provider.opencode.note": "Samengestelde modellen, waaronder Claude, GPT, Gemini en meer",
"dialog.provider.opencode.tagline": "Betrouwbare geoptimaliseerde modellen",
"dialog.provider.opencodeGo.tagline": "Goedkoop abonnement voor iedereen",
"dialog.provider.anthropic.note": "Directe toegang tot Claude-modellen, inclusief Pro en Max",
"dialog.provider.copilot.note": "AI-modellen voor codeerondersteuning via GitHub Copilot",
"dialog.provider.openai.note": "GPT-modellen voor snelle, capabele algemene AI-taken",
"dialog.provider.google.note": "Gemini-modellen voor snelle, gestructureerde reacties",
"dialog.provider.openrouter.note": "Toegang tot alle ondersteunde modellen via één aanbieder",
"dialog.provider.vercel.note": "Uniforme toegang tot AI-modellen met slimme routering",
"dialog.model.select.title": "Selecteer model",
"dialog.model.search.placeholder": "Zoek modellen",
"dialog.model.empty": "Geen modelresultaten",
"dialog.model.manage": "Beheer modellen",
"dialog.model.manage.description": "Pas aan welke modellen in de modelkiezer verschijnen.",
"dialog.model.manage.provider.toggle": "Alle {{provider}}-modellen in- of uitschakelen",
"dialog.model.unpaid.freeModels.title": "Gratis modellen geleverd door OpenCode",
"dialog.model.unpaid.addMore.title": "Voeg meer modellen toe van populaire aanbieders",
"dialog.model.unpaid.viewMoreProviders": "Bekijk nog 70+ aanbieders",
"dialog.provider.viewAll": "Toon meer aanbieders",
"provider.connect.title": "Verbinding maken met {{provider}}",
"provider.connect.title.anthropicProMax": "Inloggen met Claude Pro/Max",
"provider.connect.selectMethod": "Selecteer de aanmeldingsmethode voor {{provider}}.",
"provider.connect.method.apiKey": "API-sleutel",
"provider.connect.method.browser": "Browser",
"provider.connect.method.headless": "Headless",
"provider.connect.status.inProgress": "Autorisatie in behandeling...",
"provider.connect.status.waiting": "Wachten op autorisatie...",
"provider.connect.status.failed": "Autorisatie mislukt: {{error}}",
"provider.connect.apiKey.description":
"Voer je {{provider}}-API-sleutel in om je account te koppelen en {{provider}}-modellen in OpenCode te gebruiken.",
"provider.connect.apiKey.label": "{{provider}}-API-sleutel",
"provider.connect.apiKey.placeholder": "API-sleutel",
"provider.connect.apiKey.required": "API-sleutel is vereist",
"provider.connect.opencodeZen.line1":
"OpenCode Zen geeft je toegang tot een samengestelde set betrouwbare, geoptimaliseerde modellen voor codeeragenten.",
"provider.connect.opencodeZen.line2":
"Met één API-sleutel krijg je toegang tot modellen zoals Claude, GPT, Gemini, GLM en meer.",
"provider.connect.opencodeZen.visit.prefix": "Ga naar ",
"provider.connect.opencodeZen.visit.link": "opencode.ai/zen",
"provider.connect.opencodeZen.visit.suffix": " om je API-sleutel op te halen.",
"provider.connect.oauth.code.visit.prefix": "Ga naar ",
"provider.connect.oauth.code.visit.link": "deze link",
"provider.connect.oauth.code.visit.suffix":
" om je autorisatiecode op te halen, je account te koppelen en {{provider}}-modellen in OpenCode te gebruiken.",
"provider.connect.oauth.code.label": "{{method}}-autorisatiecode",
"provider.connect.oauth.code.placeholder": "Autorisatiecode",
"provider.connect.oauth.code.required": "Autorisatiecode is vereist",
"provider.connect.oauth.code.invalid": "Ongeldige autorisatiecode",
"provider.connect.oauth.auto.visit.prefix": "Ga naar ",
"provider.connect.oauth.auto.visit.link": "deze link",
"provider.connect.oauth.auto.visit.suffix":
" en voer de onderstaande code in om je account te koppelen en {{provider}}-modellen in OpenCode te gebruiken.",
"provider.connect.oauth.auto.confirmationCode": "Bevestigingscode",
"provider.connect.toast.connected.title": "Verbonden met {{provider}}",
"provider.connect.toast.connected.description": "{{provider}}-modellen zijn nu beschikbaar voor gebruik.",
"provider.custom.title": "Aangepaste aanbieder",
"provider.custom.unavailable": "Aangepaste aanbieders zijn niet beschikbaar op deze server",
"provider.custom.description.prefix": "Configureer een OpenAI-compatibele aanbieder. Bekijk de ",
"provider.custom.description.link": "documentatie over aanbiedersconfiguratie",
"provider.custom.description.suffix": ".",
"provider.custom.field.providerID.label": "Aanbieder-ID",
"provider.custom.field.providerID.placeholder": "myprovider",
"provider.custom.field.providerID.description": "Kleine letters, cijfers, koppeltekens of onderstrepingstekens",
"provider.custom.field.name.label": "Weergavenaam",
"provider.custom.field.name.placeholder": "Mijn AI-aanbieder",
"provider.custom.field.baseURL.label": "Basis-URL",
"provider.custom.field.baseURL.placeholder": "https://api.myprovider.com/v1",
"provider.custom.field.apiKey.label": "API-sleutel",
"provider.custom.field.apiKey.placeholder": "API-sleutel",
"provider.custom.field.apiKey.description": "Optioneel. Laat leeg als je de authenticatie via headers beheert.",
"provider.custom.models.label": "Modellen",
"provider.custom.models.id.label": "ID",
"provider.custom.models.id.placeholder": "model-id",
"provider.custom.models.name.label": "Naam",
"provider.custom.models.name.placeholder": "Weergavenaam",
"provider.custom.models.remove": "Model verwijderen",
"provider.custom.models.add": "Voeg model toe",
"provider.custom.headers.label": "Headers (optioneel)",
"provider.custom.headers.key.label": "Header",
"provider.custom.headers.key.placeholder": "Header-Naam",
"provider.custom.headers.value.label": "Waarde",
"provider.custom.headers.value.placeholder": "waarde",
"provider.custom.headers.remove": "Header verwijderen",
"provider.custom.headers.add": "Header toevoegen",
"provider.custom.error.providerID.required": "Aanbieder-ID is vereist",
"provider.custom.error.providerID.format": "Gebruik kleine letters, cijfers, koppeltekens of onderstrepingstekens",
"provider.custom.error.providerID.exists": "Die aanbieder-ID bestaat al",
"provider.custom.error.name.required": "Weergavenaam is vereist",
"provider.custom.error.baseURL.required": "Basis-URL is vereist",
"provider.custom.error.baseURL.format": "Moet beginnen met http:// of https://",
"provider.custom.error.required": "Vereist",
"provider.custom.error.duplicate": "Duplicaat",
"provider.disconnect.toast.disconnected.title": "Verbinding met {{provider}} verbroken",
"provider.disconnect.toast.disconnected.description": "{{provider}}-modellen zijn niet langer beschikbaar.",
"model.tag.free": "Gratis",
"model.tag.latest": "Nieuwste",
"model.provider.anthropic": "Anthropic",
"model.provider.openai": "OpenAI",
"model.provider.google": "Google",
"model.provider.xai": "xAI",
"model.provider.meta": "Meta",
"model.input.text": "tekst",
"model.input.image": "afbeelding",
"model.input.audio": "audio",
"model.input.video": "video",
"model.input.pdf": "pdf",
"model.tooltip.allows": "Staat toe: {{inputs}}",
"model.tooltip.context.label": "Context",
"model.tooltip.inputs": "Invoer",
"model.tooltip.model": "Model",
"model.tooltip.provider": "Aanbieder",
"model.tooltip.reasoning": "Redenering",
"model.tooltip.reasoning.allowed": "Maakt redeneren mogelijk",
"model.tooltip.reasoning.none": "Geen redenering",
"model.tooltip.context": "Contextlimiet {{limit}}",
"common.search.placeholder": "Zoeken",
"common.goBack": "Terug navigeren",
"common.goForward": "Vooruit navigeren",
"common.loading": "Laden",
"common.loading.ellipsis": "...",
"common.cancel": "Annuleer",
"common.clear": "Wissen",
"common.open": "Openen",
"common.connect": "Verbinden",
"common.disconnect": "Verbinding verbreken",
"common.continue": "Doorgaan",
"common.submit": "Verzenden",
"common.save": "Opslaan",
"common.saving": "Opslaan...",
"common.default": "Standaard",
"common.attachment": "bijlage",
"prompt.placeholder.shell": "Voer de shell-opdracht in... {{example}}",
"prompt.placeholder.normal": 'Vraag wat je wilt... "{{example}}"',
"prompt.placeholder.simple": "Vraag wat je wilt...",
"prompt.placeholder.summarizeComments": "Opmerkingen samenvatten…",
"prompt.placeholder.summarizeComment": "Opmerking samenvatten…",
"prompt.mode.shell": "Shell",
"prompt.mode.normal": "Prompt",
"prompt.mode.shell.exit": "esc om af te sluiten",
"session.child.promptDisabled": "Je kunt geen prompts naar subagentsessies sturen.",
"session.child.backToParent": "Terug naar de hoofdsessie.",
"prompt.example.1": "Repareer een TODO in de codebase",
"prompt.example.2": "Wat is de tech-stack van dit project?",
"prompt.example.3": "Herstel kapotte tests",
"prompt.example.4": "Leg uit hoe authenticatie werkt",
"prompt.example.5": "Vind en repareer beveiligingsproblemen",
"prompt.example.6": "Voeg eenheidstests toe voor de gebruikersservice",
"prompt.example.7": "Refactoreer deze functie om beter leesbaar te zijn",
"prompt.example.8": "Wat betekent deze fout?",
"prompt.example.9": "Help me dit probleem te debuggen",
"prompt.example.10": "Genereer API-documentatie",
"prompt.example.11": "Optimaliseer databasequery's",
"prompt.example.12": "Voeg invoervalidatie toe",
"prompt.example.13": "Maak een nieuwe component voor...",
"prompt.example.14": "Hoe deploy ik dit project?",
"prompt.example.15": "Controleer mijn code op best practices",
"prompt.example.16": "Voeg foutafhandeling toe aan deze functie",
"prompt.example.17": "Leg dit regex-patroon uit",
"prompt.example.18": "Converteer dit naar TypeScript",
"prompt.example.19": "Voeg logboekregistratie toe aan de hele codebase",
"prompt.example.20": "Welke afhankelijkheden zijn verouderd?",
"prompt.example.21": "Help me een migratiescript te schrijven",
"prompt.example.22": "Implementeer caching voor dit eindpunt",
"prompt.example.23": "Voeg paginering toe aan deze lijst",
"prompt.example.24": "Maak een CLI-opdracht voor...",
"prompt.example.25": "Hoe werken omgevingsvariabelen hier?",
"prompt.popover.emptyResults": "Geen overeenkomende resultaten",
"prompt.popover.emptyCommands": "Geen overeenkomende opdrachten",
"prompt.dropzone.label": "Zet hier afbeeldingen, pdf's of tekstbestanden neer",
"prompt.dropzone.file.label": "Zet neer om het bestand met @ te vermelden",
"prompt.slash.badge.custom": "aangepast",
"prompt.slash.badge.skill": "vaardigheid",
"prompt.slash.badge.mcp": "mcp",
"prompt.context.active": "actief",
"prompt.context.includeActiveFile": "Actief bestand opnemen",
"prompt.context.removeActiveFile": "Verwijder actief bestand uit context",
"prompt.context.removeFile": "Bestand uit context verwijderen",
"prompt.action.attachFile": "Bestanden toevoegen",
"prompt.menu.addImagesAndFiles": "Voeg bestanden toe en meer",
"prompt.menu.imagesAndFiles": "Afbeeldingen en bestanden",
"prompt.menu.commands": "Commando's",
"prompt.menu.context": "Context",
"prompt.menu.shellCommand": "Shell-commando",
"prompt.attachment.remove": "Bijlage verwijderen",
"prompt.action.send": "Verzenden",
"prompt.action.stop": "Stop",
"prompt.toast.pasteUnsupported.title": "Niet-ondersteunde bijlage",
"prompt.toast.pasteUnsupported.description":
"Hier kunnen alleen afbeeldingen, pdf's of tekstbestanden worden bijgevoegd.",
"prompt.toast.attachmentDuplicate.title": "Dit bestand is al geüpload",
"prompt.toast.modelAgentRequired.title": "Selecteer een agent en model",
"prompt.toast.modelAgentRequired.description": "Kies een agent en model voordat je een prompt verzendt.",
"prompt.toast.worktreeCreateFailed.title": "Kan worktree niet maken",
"prompt.toast.sessionCreateFailed.title": "Kan sessie niet maken",
"prompt.toast.shellSendFailed.title": "Kan shell-opdracht niet verzenden",
"prompt.toast.commandSendFailed.title": "Kan opdracht niet verzenden",
"prompt.toast.promptSendFailed.title": "Kan de prompt niet verzenden",
"prompt.toast.promptSendFailed.description": "Kan sessie niet ophalen",
"dialog.mcp.title": "MCP's",
"dialog.mcp.description": "{{enabled}} of {{total}} ingeschakeld",
"dialog.mcp.empty": "Geen MCP's geconfigureerd",
"dialog.lsp.empty": "LSP's worden automatisch gedetecteerd uit bestandstypen",
"dialog.plugins.empty": "Plug-ins geconfigureerd in opencode.json",
"mcp.status.connected": "verbonden",
"mcp.status.failed": "mislukt",
"mcp.status.needs_auth": "heeft autorisatie nodig",
"mcp.status.disabled": "uitgeschakeld",
"mcp.auth.clickToAuthenticate": "Klik om te authenticeren",
"dialog.fork.empty": "Geen berichten om van af te splitsen",
"dialog.directory.search.placeholder": "Zoek in mappen",
"dialog.directory.empty": "Geen mappen gevonden",
"dialog.directory.action.selectFile": "Selecteer bestand",
"dialog.directory.action.selectFolder": "Selecteer map",
"dialog.directory.root": "Hoofdmap",
"dialog.directory.parent": "Bovenliggende map",
"dialog.directory.readError": "Kan deze map niet lezen",
"app.server.unreachable": "Kan {{server}} niet bereiken",
"app.server.retrying": "Automatisch opnieuw proberen...",
"app.server.otherServers": "Andere servers",
"dialog.server.title": "Servers",
"dialog.server.description": "Wijzig met welke OpenCode-server deze app verbinding maakt.",
"dialog.server.search.placeholder": "Servers zoeken",
"dialog.server.empty": "Nog geen servers",
"dialog.server.add.title": "Server toevoegen",
"dialog.server.add.url": "Serveradres",
"dialog.server.add.placeholder": "http://localhost:4096",
"dialog.server.add.error": "Kan geen verbinding maken met de server",
"dialog.server.add.checking": "Controleren...",
"dialog.server.add.button": "Server toevoegen",
"dialog.server.add.name": "Servernaam (optioneel)",
"dialog.server.add.namePlaceholder": "Lokale host",
"dialog.server.add.username": "Gebruikersnaam (optioneel)",
"dialog.server.add.usernamePlaceholder": "gebruikersnaam",
"dialog.server.add.password": "Wachtwoord (optioneel)",
"dialog.server.add.passwordPlaceholder": "wachtwoord",
"dialog.server.edit.title": "Server bewerken",
"dialog.server.default.title": "Standaardserver",
"dialog.server.default.description":
"Maak verbinding met deze server bij het starten van de app in plaats van een lokale server te starten. Vereist opnieuw opstarten.",
"dialog.server.default.none": "Geen server geselecteerd",
"dialog.server.default.set": "Stel de huidige server in als standaard",
"dialog.server.default.clear": "Wissen",
"dialog.server.action.remove": "Server verwijderen",
"dialog.server.menu.edit": "Bewerken",
"dialog.server.menu.default": "Als standaard instellen",
"dialog.server.menu.defaultRemove": "Standaard verwijderen",
"dialog.server.menu.delete": "Verwijderen",
"dialog.server.current": "Huidige server",
"dialog.server.status.default": "Standaard",
"wsl.server.add": "WSL-server toevoegen",
"wsl.server.addShort": "WSL toevoegen",
"wsl.server.label": "WSL",
"wsl.server.menu.label": "WSL-server",
"wsl.server.retryStart": "Opnieuw proberen te starten",
"wsl.server.updating": "Updaten...",
"wsl.onboarding.step.distro": "Kies distro",
"wsl.onboarding.step.opencode": "OpenCode",
"wsl.onboarding.checkingRuntime": "WSL controleren...",
"wsl.onboarding.restartRequired": "Windows moet opnieuw worden opgestart om de installatie van WSL te voltooien.",
"wsl.onboarding.ready": "WSL is klaar.",
"wsl.onboarding.required": "WSL is vereist om door te gaan.",
"wsl.onboarding.checkingDistros": "Distributies controleren...",
"wsl.onboarding.installingDistro": "{{distro}} installeren...",
"wsl.onboarding.checkingDistro": "{{distro}} controleren...",
"wsl.onboarding.listingDistros": "Lijst met distributies ophalen...",
"wsl.onboarding.distroReady": "{{distro}} is klaar.",
"wsl.onboarding.distroNotInstalled": "{{distro}} is nog niet geïnstalleerd.",
"wsl.onboarding.openDistroOnce": "Open {{distro}} één keer om de installatie te voltooien.",
"wsl.onboarding.finishingDistro": "Installatie van {{distro}} voltooien.",
"wsl.onboarding.pickDistro": "Kies een distributie of installeer er hieronder een.",
"wsl.onboarding.checkingOpencode": "OpenCode controleren...",
"wsl.onboarding.checkingOpencodeIn": "OpenCode controleren in {{distro}}...",
"wsl.onboarding.updatingOpencode": "OpenCode bijwerken...",
"wsl.onboarding.updatingOpencodeIn": "OpenCode bijwerken in {{distro}}...",
"wsl.onboarding.updateOpencodeIn": "Werk OpenCode bij in {{distro}}.",
"wsl.onboarding.updateOpencode": "OpenCode bijwerken",
"wsl.onboarding.opencodeReadyIn": "OpenCode is gereed in {{distro}}.",
"wsl.onboarding.opencodeReady": "OpenCode is klaar.",
"wsl.onboarding.installOpencodeIn": "Installeer OpenCode in {{distro}}.",
"wsl.onboarding.installOpencode": "Installeer OpenCode",
"wsl.onboarding.chooseDistroFirst": "Kies eerst een distributie.",
"wsl.onboarding.loadFailed": "Kan de WSL-status niet laden.",
"wsl.onboarding.loading": "Laden...",
"wsl.onboarding.installedDistros": "Geïnstalleerde distributies",
"wsl.onboarding.checkAgain": "Controleer opnieuw",
"wsl.onboarding.distroStatus.ready": "Klaar",
"wsl.onboarding.distroStatus.checking": "Controleren...",
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode niet geïnstalleerd",
"wsl.onboarding.distroStatus.missingTools": "bash en curl ontbreken",
"wsl.onboarding.distroStatus.unsupported": "Niet ondersteund · Gebruik WSL 2",
"wsl.onboarding.needAnotherDistro": "Nog een distro nodig?",
"wsl.onboarding.needAnotherDistroHint": "Installeer een Linux-distributie uit de WSL-catalogus",
"wsl.onboarding.wslNotInstalled.title": "WSL niet geïnstalleerd",
"wsl.onboarding.wslNotInstalled.description":
"WSL (Windows-subsysteem voor Linux) is vereist voordat OpenCode een WSL-server kan toevoegen",
"wsl.onboarding.wslUnavailable.title": "WSL niet beschikbaar",
"wsl.onboarding.wslUnavailable.description": "OpenCode kan WSL niet verifiëren op deze machine.",
"wsl.onboarding.installWsl": "Installeer WSL",
"wsl.onboarding.windowsRestartRequired":
"Start Windows opnieuw om de installatie van WSL te voltooien en open vervolgens OpenCode opnieuw.",
"wsl.onboarding.next": "Volgende",
"wsl.onboarding.refresh": "Vernieuwen",
"wsl.onboarding.allDistrosAdded": "Alle geïnstalleerde distributies zijn al toegevoegd.",
"wsl.onboarding.noDistros": "Nog geen distributies gedetecteerd.",
"wsl.onboarding.install": "Installeren",
"wsl.onboarding.installing": "Installeren...",
"wsl.onboarding.installDistro": "Distro installeren",
"wsl.onboarding.searchDistros": "Zoek distributies",
"wsl.onboarding.wsl2Required": "WSL 2 is vereist.",
"wsl.onboarding.toolsRequired": "Deze distro heeft bash en curl nodig.",
"wsl.onboarding.openTerminal": "Terminal openen",
"wsl.onboarding.path": "Pad: {{path}}",
"wsl.onboarding.notFound": "niet gevonden",
"wsl.onboarding.version": "Versie: {{version}}",
"wsl.onboarding.unknown": "onbekend",
"wsl.onboarding.desktopVersion": "desktop {{version}}",
"wsl.onboarding.versionMismatch": "De geïnstalleerde versie komt niet overeen met de versie van de desktop-app.",
"wsl.onboarding.adding": "Toevoegen...",
"help.tabs.toast.ariaLabel": "Introductie van tabbladen. Organiseer je werk en actieve sessies met tabbladen",
"help.tabs.toast.dismiss": "Informatie over tabbladen sluiten",
"help.tabs.title": "Introductie van tabbladen",
"help.tabs.description": "Organiseer je werk en actieve sessies met tabbladen",
"help.tabs.date": "14 juli",
"help.tabs.introduction": "OpenCode Desktop is nu opgebouwd rond tabbladen.",
"help.tabs.sessions":
"Start een nieuwe sessie in een tabblad of open een bestaande sessie vanuit een van je projecten. Open een nieuw tabblad wanneer je aan iets nieuws begint en sluit het wanneer je klaar bent.",
"help.tabs.organize":
"Met enkele geopende tabbladen kun je je actieve sessies gemakkelijker organiseren. Geef tabbladen een herkenbare naam als je ze geopend wilt houden.",
"help.tabs.home":
"Je vindt al je sessies en projecten op het nieuwe startscherm. Wanneer je een sessie selecteert, wordt deze in een tabblad geopend.",
"help.tabs.persistence": "Wanneer je de app opnieuw opent, zijn je tabbladen nog steeds geopend.",
"help.tabs.worktrees":
"Het nieuwe ontwerp ondersteunt Git-worktrees nog niet, maar die ondersteuning komt binnenkort. Als je liever de vorige lay-out blijft gebruiken, kun je in Instellingen tussen de lay-outs schakelen. Houd er rekening mee dat de nieuwe lay-out over enkele weken permanent wordt.",
"server.row.noUsername": "geen gebruikersnaam",
"dialog.project.edit.title": "Project bewerken",
"dialog.project.edit.name": "Naam",
"dialog.project.edit.icon": "Pictogram",
"dialog.project.edit.icon.alt": "Projectpictogram",
"dialog.project.edit.icon.hint": "Klik of sleep een afbeelding",
"dialog.project.edit.icon.recommended": "Aanbevolen: 128x128px",
"dialog.project.edit.color": "Kleur",
"dialog.project.edit.color.select": "Kleur {{color}} selecteren",
"dialog.project.edit.worktree.startup": "Opstartscript voor werkruimte",
"dialog.project.edit.worktree.startup.description":
"Wordt uitgevoerd nadat een nieuwe werkruimte (worktree) is aangemaakt.",
"dialog.project.edit.worktree.startup.placeholder": "bijv. bun install",
"dialog.releaseNotes.action.getStarted": "Ga aan de slag",
"dialog.releaseNotes.action.next": "Volgende",
"dialog.releaseNotes.action.hideFuture": "Laat deze in de toekomst niet zien",
"dialog.releaseNotes.media.alt": "Releasevoorbeeld",
"context.breakdown.title": "Contextanalyse",
"context.breakdown.note":
'Geschatte uitsplitsing van invoertokens. "Overig" omvat gereedschapsdefinities en overhead.',
"context.breakdown.system": "Systeem",
"context.breakdown.user": "Gebruiker",
"context.breakdown.assistant": "Assistent",
"context.breakdown.tool": "Toolaanroepen",
"context.breakdown.other": "Overig",
"context.systemPrompt.title": "Systeemprompt",
"context.rawMessages.title": "Ruwe berichten",
"context.stats.session": "Sessie",
"context.stats.messages": "Berichten",
"context.stats.provider": "Aanbieder",
"context.stats.model": "Model",
"context.stats.limit": "Contextlimiet",
"context.stats.totalTokens": "Totaal tokens",
"context.stats.usage": "Gebruik",
"context.stats.inputTokens": "Invoertokens",
"context.stats.outputTokens": "Uitvoertokens",
"context.stats.reasoningTokens": "Redeneringstokens",
"context.stats.cacheTokens": "Cachetokens (lezen/schrijven)",
"context.stats.userMessages": "Gebruikersberichten",
"context.stats.assistantMessages": "Assistentberichten",
"context.stats.totalCost": "Totale kosten",
"context.stats.sessionCreated": "Sessie gemaakt",
"context.stats.lastActivity": "Laatste activiteit",
"context.usage.tokens": "Tokens",
"context.usage.usage": "Gebruik",
"context.usage.cost": "Kosten",
"context.usage.clickToView": "Klik om de context te bekijken",
"context.usage.view": "Bekijk contextgebruik",
"language.en": "Engels",
"language.zh": "简体中文",
"language.zht": "繁體中文",
"language.ko": "한국어",
"language.de": "Duits",
"language.es": "Spaans",
"language.fr": "Frans",
"language.da": "Dansk",
"language.ja": "日本語",
"language.pl": "Polski",
"language.ru": "Русский",
"language.ar": "العربية",
"language.no": "Norsk",
"language.br": "Portugees (Brazilië)",
"language.bs": "Bosanski",
"language.uk": "Українська",
"language.th": "ไทย",
"language.tr": "Türkçe",
"toast.language.title": "Taal",
"toast.language.description": "Overgeschakeld naar {{language}}",
"toast.theme.title": "Thema gewijzigd",
"toast.scheme.title": "Kleurenschema",
"toast.workspace.enabled.title": "Werkruimten ingeschakeld",
"toast.workspace.enabled.description": "Er worden nu meerdere worktrees weergegeven in de zijbalk",
"toast.workspace.disabled.title": "Werkruimten uitgeschakeld",
"toast.workspace.disabled.description": "Alleen de hoofdworktree wordt weergegeven in de zijbalk",
"toast.permissions.autoaccept.on.title": "Machtigingen automatisch accepteren",
"toast.permissions.autoaccept.on.description": "Toestemmingsverzoeken worden automatisch goedgekeurd",
"toast.permissions.autoaccept.off.title": "Machtigingen niet meer automatisch accepteren",
"toast.permissions.autoaccept.off.description": "Machtigingsverzoeken moeten worden goedgekeurd",
"toast.model.none.title": "Geen model geselecteerd",
"toast.model.none.description": "Maak verbinding met een aanbieder om deze sessie samen te vatten",
"toast.file.loadFailed.title": "Kan bestand niet laden",
"toast.file.listFailed.title": "Kan bestanden niet weergeven",
"toast.context.noLineSelection.title": "Geen regels geselecteerd",
"toast.context.noLineSelection.description": "Selecteer eerst een reeks regels in een bestandstabblad.",
"toast.session.share.copyFailed.title": "Kan de URL niet naar het klembord kopiëren",
"toast.session.share.success.title": "Sessie gedeeld",
"toast.session.share.success.description": "Deel-URL gekopieerd naar klembord!",
"toast.session.share.failed.title": "Kan sessie niet delen",
"toast.session.share.failed.description": "Er is een fout opgetreden tijdens het delen van de sessie",
"toast.session.unshare.success.title": "Sessie niet gedeeld",
"toast.session.unshare.success.description": "Sessie is niet meer gedeeld!",
"toast.session.unshare.failed.title": "Kan het delen van de sessie niet ongedaan maken",
"toast.session.unshare.failed.description":
"Er is een fout opgetreden bij het ongedaan maken van het delen van de sessie",
"toast.session.listFailed.title": "Kan sessies voor {{project}} niet laden",
"toast.project.reloadFailed.title": "Kan {{project}} niet opnieuw laden",
"toast.update.title": "Update beschikbaar",
"toast.update.description": "Er is nu een nieuwe versie van OpenCode ({{version}}) beschikbaar om te installeren.",
"toast.update.action.installRestart": "Installeren en opnieuw opstarten",
"toast.update.action.notYet": "Nog niet",
"error.page.title": "Er is iets misgegaan",
"error.page.description": "Er is een fout opgetreden tijdens het laden van de applicatie.",
"error.page.description.localServerStartup": "Er is een fout opgetreden bij het starten van de lokale server.",
"error.page.details.label": "Foutdetails",
"error.page.action.restart": "Opnieuw opstarten",
"error.page.action.report": "Rapporteer fout",
"error.page.action.reported": "Fout gerapporteerd",
"error.page.action.exportLogs": "Logboeken exporteren",
"error.page.action.checking": "Controleren...",
"error.page.action.checkUpdates": "Controleer op updates",
"error.page.action.updateTo": "Update naar {{version}}",
"error.page.circular": "[Circulair]",
"error.page.report.prefix": "Rapporteer deze fout aan het OpenCode-team",
"error.page.report.discord": "op Discord",
"error.page.version": "Versie: {{version}}",
"error.dev.rootNotFound":
"Root-element niet gevonden. Ben je vergeten het toe te voegen aan je index.html? Of is het id-attribuut misschien verkeerd gespeld?",
"error.serverSync.connectFailed": "Kan geen verbinding maken met de server. Draait er een server op `{{url}}`?",
"error.serverSDK.noServerAvailable": "Geen server beschikbaar",
"error.serverSDK.serverNotAvailable": "Server niet beschikbaar",
"error.childStore.persistedCacheCreateFailed": "Kan persistente cache niet maken",
"error.childStore.persistedProjectMetadataCreateFailed": "Kan de persistente projectmetagegevens niet maken",
"error.childStore.persistedProjectIconCreateFailed": "Kan het opgeslagen projectpictogram niet maken",
"error.childStore.storeCreateFailed": "Kan opslag niet maken",
"directory.error.invalidUrl": "Ongeldige map in URL.",
"error.chain.unknown": "Onbekende fout",
"error.server.invalidConfiguration": "Ongeldige configuratie",
"error.chain.causedBy": "Veroorzaakt door:",
"error.chain.apiError": "API-fout",
"error.chain.status": "Status: {{status}}",
"error.chain.retryable": "Opnieuw proberen mogelijk: {{retryable}}",
"error.chain.responseBody": "Antwoordtekst:\n{{body}}",
"error.chain.didYouMean": "Bedoelde je: {{suggestions}}",
"error.chain.modelNotFound": "Model niet gevonden: {{provider}}/{{model}}",
"error.chain.checkConfig": "Controleer de provider- en modelnamen in je configuratie (opencode.json)",
"error.chain.mcpFailed": 'MCP-server "{{name}}" is mislukt. Let op: OpenCode ondersteunt nog geen MCP-authenticatie.',
"error.chain.providerAuthFailed": "Authenticatie bij aanbieder mislukt ({{provider}}): {{message}}",
"error.chain.providerInitFailed":
'Kan provider "{{provider}}" niet initialiseren. Controleer de inloggegevens en configuratie.',
"error.chain.configJsonInvalid": "Configuratiebestand op {{path}} is niet geldig JSON(C)",
"error.chain.configJsonInvalidWithMessage": "Configuratiebestand op {{path}} is niet geldig JSON(C): {{message}}",
"error.chain.configDirectoryTypo":
'De map "{{dir}}" in {{path}} is ongeldig. Hernoem de map naar "{{suggestion}}" of verwijder deze. Dit is een veelvoorkomende typefout.',
"error.chain.configFrontmatterError": "Kan frontmatter in {{path}} niet parseren:\n{{message}}",
"error.chain.configInvalid": "Configuratiebestand op {{path}} is ongeldig",
"error.chain.configInvalidWithMessage": "Configuratiebestand op {{path}} is ongeldig: {{message}}",
"notification.permission.title": "Toestemming vereist",
"notification.permission.description": "{{sessionTitle}} in {{projectName}} heeft toestemming nodig",
"notification.question.title": "Vraag",
"notification.question.description": "{{sessionTitle}} in {{projectName}} heeft een vraag",
"notification.action.goToSession": "Ga naar sessie",
"notification.session.responseReady.title": "Reactie klaar",
"notification.session.error.title": "Sessiefout",
"notification.session.error.fallbackDescription": "Er is een fout opgetreden",
"home.recentProjects": "Recente projecten",
"home.empty.title": "Geen recente projecten",
"home.empty.description": "Ga aan de slag door een lokaal project te openen",
"home.title": "Start",
"home.projects": "Projecten",
"home.project.add": "Project toevoegen",
"home.recentlyClosed": "Onlangs gesloten",
"home.server.collapse": "Serverprojecten samenvouwen",
"home.server.expand": "Serverprojecten uitvouwen",
"home.sessions.search.placeholder": "Zoek sessies",
"home.sessions.search.placeholder.scoped": "Sessies zoeken in {{scope}}",
"home.sessions.search.sessions": "Sessies",
"home.sessions.search.noResults": "Geen sessies gevonden voor {{query}}",
"home.sessions.empty": "Hier nog niets",
"home.sessions.empty.description": "Maak een sessie aan om aan de slag te gaan",
"home.sessions.group.today": "Vandaag",
"home.sessions.group.yesterday": "Gisteren",
"home.sessions.group.older": "Ouder",
"home.providerTip":
"Maak verbinding met meer dan 75 providers om andere modellen te gebruiken, waaronder Claude, GPT, Gemini, enz.",
"session.tab.session": "Sessie",
"session.tab.review": "Beoordeling",
"session.tab.context": "Context",
"session.tab.unknown": "Onbekende sessie",
"session.panel.reviewAndFiles": "Beoordeling en bestanden",
"session.error.notFound": "Deze sessie kan niet worden gevonden",
"session.error.notFound.description": "Dit tabblad verwijst naar een sessie die niet meer bestaat op deze server.",
"session.error.notFound.closeTab": "Tabblad sluiten",
"session.error.serverConnection": "Kan geen verbinding maken met deze server",
"session.review.filesChanged": "Gewijzigde bestanden: {{count}}",
"session.review.change.one": "Wijziging",
"session.review.change.other": "Wijzigingen",
"session.review.loadingChanges": "Wijzigingen laden...",
"session.review.empty": "Er zijn nog geen wijzigingen in deze sessie",
"session.review.noVcs": "Geen Git-versiecontrolesysteem gedetecteerd, wijzigingen niet weergegeven",
"session.review.noVcs.createGit.title": "Maak een Git-repository",
"session.review.noVcs.createGit.description": "Wijzigingen in dit project bijhouden, beoordelen en ongedaan maken",
"session.review.noVcs.createGit.actionLoading": "Git-repository maken...",
"session.review.noVcs.createGit.action": "Maak een Git-repository",
"session.review.noSnapshot":
"Het bijhouden van momentopnamen is uitgeschakeld in de configuratie, dus sessiewijzigingen zijn niet beschikbaar",
"session.review.noChanges": "Geen wijzigingen",
"session.review.noUncommittedChanges": "Er zijn nog geen niet-gecommitteerde wijzigingen",
"session.review.noBranchChanges": "Er zijn nog geen branchwijzigingen",
"session.files.selectToOpen": "Selecteer een bestand om te openen",
"session.files.all": "Alle bestanden",
"session.files.empty": "Geen bestanden",
"session.files.binaryContent": "Binair bestand (inhoud kan niet worden weergegeven)",
"session.messages.renderEarlier": "Geef eerdere berichten weer",
"session.messages.loadingEarlier": "Eerdere berichten laden...",
"session.messages.loadEarlier": "Laad eerdere berichten",
"session.messages.loading": "Berichten laden...",
"session.messages.jumpToLatest": "Ga naar de laatste",
"session.context.addToContext": "Voeg {{selection}} toe aan de context",
"session.todo.title": "Taken",
"session.todo.collapse": "Samenvouwen",
"session.todo.expand": "Uitvouwen",
"session.todo.progress": "{{done}} van {{total}} taken voltooid",
"session.question.progress": "{{current}} van {{total}} vragen",
"session.question.minimize": "Minimaliseer de vraag",
"session.question.restore": "Vraag herstellen",
"session.question.pending.one": "{{count}} openstaande vraag",
"session.question.pending.other": "{{count}} openstaande vragen",
"session.followupDock.summary.one": "{{count}} bericht in de wachtrij",
"session.followupDock.summary.other": "{{count}} berichten in de wachtrij",
"session.followupDock.sendNow": "Verstuur nu",
"session.followupDock.edit": "Bewerken",
"session.followupDock.collapse": "In de wachtrij geplaatste berichten samenvouwen",
"session.followupDock.expand": "Berichten in de wachtrij uitvouwen",
"session.revertDock.summary.one": "{{count}} teruggedraaid bericht",
"session.revertDock.summary.other": "{{count}} teruggedraaide berichten",
"session.revertDock.collapse": "Teruggedraaide berichten samenvouwen",
"session.revertDock.expand": "Teruggedraaide berichten uitvouwen",
"session.revertDock.restore": "Bericht herstellen",
"session.new.title": "Bouw wat je wilt",
"session.new.project.new": "Nieuw project",
"session.new.project.search": "Zoek projecten",
"session.new.project.add": "Project toevoegen",
"session.new.worktree.main": "Hoofdbranch",
"session.new.worktree.mainWithBranch": "Hoofdbranch ({{branch}})",
"session.new.worktree.create": "Nieuwe worktree maken",
"session.new.workspace.runIn": "Sessie uitvoeren in",
"session.new.workspace.triggerLocal": "Lokaal",
"session.new.workspace.local": "Lokale repository",
"session.new.workspace.existing": "Werkruimte…",
"session.new.git.none": "Geen Git",
"session.new.lastModified": "Laatst gewijzigd",
"session.header.search.placeholder": "Zoek {{project}}",
"session.header.searchFiles": "Zoek bestanden",
"session.header.openIn": "Openen in",
"session.header.open.action": "Open {{app}}",
"session.header.open.ariaLabel": "Openen in {{app}}",
"session.header.open.menu": "Opties openen",
"session.header.open.copyPath": "Kopieer pad",
"session.header.open.finder": "Finder",
"session.header.open.fileExplorer": "Bestandsverkenner",
"session.header.open.fileManager": "Bestandsbeheer",
"session.header.reveal.finder": "Tonen in Finder",
"session.header.reveal.fileExplorer": "Weergeven in Verkenner",
"session.header.reveal.containingFolder": "Bijbehorende map openen",
"session.header.open.app.vscode": "VS Code",
"session.header.open.app.cursor": "Cursor",
"session.header.open.app.zed": "Zed",
"session.header.open.app.textmate": "TextMate",
"session.header.open.app.antigravity": "Antigravity",
"session.header.open.app.terminal": "Terminal",
"session.header.open.app.iterm2": "iTerm2",
"session.header.open.app.ghostty": "Ghostty",
"session.header.open.app.warp": "Warp",
"session.header.open.app.xcode": "Xcode",
"session.header.open.app.androidStudio": "Android Studio",
"session.header.open.app.powershell": "PowerShell",
"session.header.open.app.sublimeText": "Sublime Text",
"status.popover.trigger": "Status",
"status.popover.ariaLabel": "Serverconfiguraties",
"status.popover.tab.servers": "Servers",
"status.popover.tab.mcp": "MCP",
"status.popover.tab.lsp": "LSP",
"status.popover.tab.plugins": "Plug-ins",
"status.popover.action.manageServers": "Beheer servers",
"session.share.popover.title": "Publiceer op internet",
"session.share.popover.description.shared":
"Deze sessie is openbaar op internet. Iedereen met de link heeft toegang.",
"session.share.popover.description.unshared":
"Deel de sessie openbaar op internet. Iedereen met de link krijgt toegang.",
"session.share.action.share": "Deel",
"session.share.action.publish": "Publiceren",
"session.share.action.publishing": "Publiceren...",
"session.share.action.unpublish": "Publicatie ongedaan maken",
"session.share.action.unpublishing": "Publicatie ongedaan maken...",
"session.share.action.view": "Bekijk",
"session.share.copy.copied": "Gekopieerd",
"session.share.copy.copyLink": "Kopieer link",
"lsp.tooltip.none": "Geen LSP-servers",
"lsp.label.connected": "{{count}} LSP",
"prompt.loading": "Prompt laden...",
"terminal.loading": "Terminal laden...",
"terminal.title": "Terminal",
"terminal.title.numbered": "Terminal {{number}}",
"terminal.close": "Terminal sluiten",
"terminal.connectionLost.title": "Verbinding verloren",
"terminal.connectionLost.abnormalClose": "WebSocket abnormaal gesloten: {{code}}",
"terminal.connectionLost.description":
"De terminalverbinding is onderbroken. Dit kan gebeuren wanneer de server opnieuw wordt opgestart.",
"terminal.connectTicket.csrfError":
"PTY-verbindingsticket geweigerd door oorsprongs- of CSRF-controles. Controleer de CORS-configuratie van de server.",
"terminal.connectTicket.statusError": "PTY-verbindingsticket mislukt met status {{status}}",
"titlebar.update": "Bijwerken",
"titlebar.updateVersion": "Bijwerken {{version}}",
"common.closeTab": "Tabblad sluiten",
"common.dismiss": "Negeren",
"common.moreCountSuffix": " (+{{count}} meer)",
"common.requestFailed": "Verzoek mislukt",
"common.moreOptions": "Meer opties",
"common.learnMore": "Meer informatie",
"common.rename": "Hernoemen",
"common.reset": "Opnieuw instellen",
"common.archive": "Archiveren",
"common.delete": "Verwijderen",
"common.close": "Sluiten",
"common.edit": "Bewerken",
"common.loadMore": "Meer laden",
"common.key.esc": "ESC",
"common.key.ctrl": "Ctrl",
"common.key.alt": "Alt",
"common.key.shift": "Shift",
"common.key.meta": "Meta",
"common.key.space": "Spatie",
"common.key.backspace": "Backspace",
"common.key.enter": "Enter",
"common.key.tab": "Tab",
"common.key.delete": "Verwijderen",
"common.key.home": "Home",
"common.key.end": "Einde",
"common.key.pageUp": "Pagina omhoog",
"common.key.pageDown": "Pagina omlaag",
"common.key.insert": "Invoegen",
"common.unknown": "onbekend",
"common.time.justNow": "Zojuist",
"common.time.minutesAgo.short": "{{count}}m geleden",
"common.time.hoursAgo.short": "{{count}}h geleden",
"common.time.daysAgo.short": "{{count}}d geleden",
"sidebar.menu.toggle": "Menu tonen of verbergen",
"sidebar.nav.projectsAndSessions": "Projecten en sessies",
"sidebar.settings": "Instellingen",
"sidebar.help": "Hulp",
"sidebar.workspaces.enable": "Schakel werkruimten in",
"sidebar.workspaces.disable": "Schakel werkruimten uit",
"sidebar.gettingStarted.title": "Aan de slag",
"sidebar.gettingStarted.line1": "OpenCode bevat gratis modellen, zodat je direct aan de slag kunt.",
"sidebar.gettingStarted.line2":
"Maak verbinding met een aanbieder om modellen te gebruiken, waaronder Claude, GPT en Gemini.",
"sidebar.project.recentSessions": "Recente sessies",
"sidebar.project.viewAllSessions": "Bekijk alle sessies",
"sidebar.project.clearNotifications": "Meldingen wissen",
"sidebar.empty.title": "Geen projecten geopend",
"sidebar.empty.description": "Open een project om aan de slag te gaan",
"debugBar.ariaLabel": "Diagnostiek voor ontwikkelprestaties",
"debugBar.na": "n.v.t.",
"debugBar.nav.label": "NAV",
"debugBar.nav.tip":
"Laatst voltooide routenavigatie naar of binnen een sessiepagina, gemeten vanaf het starten van de router tot de eerste render nadat de navigatie is voltooid.",
"debugBar.fps.label": "FPS",
"debugBar.fps.tip": "Voortschrijdend aantal frames per seconde over de afgelopen 5 seconden.",
"debugBar.frame.label": "FRAME",
"debugBar.frame.tip": "Slechtste frametijd van de afgelopen 5 seconden.",
"debugBar.jank.label": "JANK",
"debugBar.jank.tip": "Frames van meer dan 32 ms in de afgelopen 5 seconden.",
"debugBar.long.label": "LONG",
"debugBar.long.tip": "Geblokkeerde tijd en aantal lange taken in de afgelopen 5 seconden. Maximale taak: {{max}}.",
"debugBar.delay.label": "VERTRAGING",
"debugBar.delay.tip": "Slechtst waargenomen invoervertraging in de afgelopen 5 seconden.",
"debugBar.inp.label": "INP",
"debugBar.inp.tip":
"Geschatte interactieduur gedurende de afgelopen 5 seconden. Dit is INP-achtig, niet de officiële Web Vitals INP.",
"debugBar.cls.label": "CLS",
"debugBar.cls.tip": "Cumulatieve lay-outverschuiving sinds de app is gestart.",
"debugBar.mem.label": "MEM",
"debugBar.mem.tipUnavailable": "Gebruikte JS-heap versus heap-limiet. Alleen Chromium.",
"debugBar.mem.tip": "Gebruikte JS-heap versus heaplimiet. {{used}} van {{limit}}.",
"app.name.desktop": "OpenCode Desktop",
"settings.section.desktop": "Desktop",
"settings.section.server": "Server",
"settings.tab.general": "Algemeen",
"settings.tab.shortcuts": "Snelkoppelingen",
"settings.desktop.section.wsl": "WSL",
"settings.desktop.wsl.title": "WSL-integratie",
"settings.desktop.wsl.description": "Voer de OpenCode-server uit in WSL op Windows.",
"settings.general.section.appearance": "Uiterlijk",
"settings.general.section.advanced": "Geavanceerd",
"settings.general.section.notifications": "Systeemmeldingen",
"settings.general.section.updates": "Updates",
"settings.general.section.sounds": "Geluidseffecten",
"settings.general.section.feed": "Feed",
"settings.general.section.display": "Weergave",
"settings.general.row.language.title": "Taal",
"settings.general.row.language.description": "Wijzig de weergavetaal voor OpenCode",
"settings.general.row.shell.title": "Terminalshell",
"settings.general.row.shell.description": "Shell gebruikt door de terminal- en agenttools",
"settings.general.row.shell.autoDefault": "Automatisch (standaard)",
"settings.general.row.shell.terminalOnly": "alleen terminal",
"settings.general.row.appearance.title": "Uiterlijk",
"settings.general.row.appearance.description": "Pas aan hoe OpenCode eruitziet op je apparaat",
"settings.general.row.colorScheme.title": "Kleurenschema",
"settings.general.row.colorScheme.description":
"Kies of OpenCode het systeemthema, het lichte thema of het donkere thema gebruikt",
"settings.general.row.theme.title": "Thema",
"settings.general.row.theme.description": "Pas het thema van OpenCode aan.",
"settings.general.row.font.title": "Codelettertype",
"settings.general.row.font.description": "Pas het lettertype aan dat in codeblokken wordt gebruikt",
"settings.general.row.terminalFont.title": "Terminal-lettertype",
"settings.general.row.terminalFont.description": "Pas het lettertype aan dat in de terminal wordt gebruikt",
"settings.general.row.uiFont.title": "UI-lettertype",
"settings.general.row.uiFont.description": "Pas het lettertype aan dat in de hele interface wordt gebruikt",
"settings.general.row.followup.title": "Vervolggedrag",
"settings.general.row.followup.description":
"Kies of vervolgprompts de sessie direct bijsturen of in een wachtrij wachten",
"settings.general.row.followup.option.queue": "Wachtrij",
"settings.general.row.followup.option.steer": "Sturen",
"settings.general.row.showFileTree.title": "Bestandsstructuur",
"settings.general.row.showFileTree.description": "Toon het paneel met de bestandsstructuur in sessies",
"settings.general.row.showNavigation.title": "Navigatiebediening",
"settings.general.row.showNavigation.description":
"Toon de knoppen Vorige en Volgende in de titelbalk van de desktop-app",
"settings.general.row.showSearch.title": "Commandopalet",
"settings.general.row.showSearch.description": "Toon de knop voor zoeken en het commandopalet in de titelbalk",
"settings.general.row.showTerminal.title": "Terminal",
"settings.general.row.showTerminal.description": "Toon de terminalknop in de titelbalk van de desktop-app",
"settings.general.row.showStatus.title": "Serverstatus",
"settings.general.row.showStatus.description": "Toon de serverstatusknop in de titelbalk",
"settings.general.row.mobileTitlebarBottom.title": "Navigatie onderaan",
"settings.general.row.mobileTitlebarBottom.description":
"Plaats de titelbalk en sessietabbladen onderaan het scherm op mobiel",
"settings.general.row.showCustomAgents.title": "Toon agent",
"settings.general.row.showCustomAgents.description":
"Schakel tussen agenten in het invoerveld. Indien verborgen wordt standaard de Build-agent gebruikt.",
"settings.general.row.reasoningSummaries.title": "Toon redeneeroverzichten",
"settings.general.row.reasoningSummaries.description":
"Geef samenvattingen van modelredeneringen weer in de tijdlijn",
"settings.general.row.shellToolPartsExpanded.title": "Shelltoolonderdelen uitvouwen",
"settings.general.row.shellToolPartsExpanded.description":
"Toon shelltoolonderdelen standaard uitgevouwen in de tijdlijn",
"settings.general.row.editToolPartsExpanded.title": "Bewerkingstoolonderdelen uitvouwen",
"settings.general.row.editToolPartsExpanded.description":
"Toon bewerkings-, schrijf- en patchtoolonderdelen standaard uitgevouwen in de tijdlijn",
"settings.general.row.newInterface.title": "Nieuwe lay-out",
"settings.general.row.newInterface.badge": "Nieuw",
"settings.general.row.newInterface.description":
"Gebruik de nieuwe tabbladen en home-indeling. Wissel gedurende een beperkte tijd tussen lay-outs.",
"settings.general.row.newInterfaceNotice.title": "Je gebruikt nu de nieuwe lay-out",
"settings.general.row.newInterfaceNotice.description": "De vorige lay-out is niet meer beschikbaar",
"settings.general.row.newInterfaceNotice.dismiss": "Negeren",
"settings.general.row.pinchZoom.title": "Knijp om te zoomen",
"settings.general.row.pinchZoom.description":
"Sta knijp- en Ctrl-scroll-bewegingen op het trackpad toe om in te zoomen",
"settings.general.row.wayland.title": "Native Wayland gebruiken",
"settings.general.row.wayland.description": "Schakel X11-fallback uit op Wayland. Vereist opnieuw opstarten.",
"settings.general.row.wayland.tooltip":
"Op Linux met monitoren met verschillende vernieuwingsfrequenties kan native Wayland stabieler zijn.",
"settings.general.row.releaseNotes.title": "Versienotities",
"settings.general.row.releaseNotes.description": "Pop-ups met nieuwe functies na updates tonen",
"settings.updates.row.startup.title": "Controleer op updates bij het opstarten",
"settings.updates.row.startup.description": "Controleer automatisch op updates wanneer OpenCode wordt gestart",
"settings.updates.row.check.title": "Controleer op updates",
"settings.updates.row.check.description": "Controleer handmatig op updates en installeer deze indien beschikbaar",
"settings.updates.action.checkNow": "Controleer nu",
"settings.updates.action.checking": "Controleren...",
"settings.updates.action.downloading": "Downloaden...",
"settings.updates.action.installing": "Installeren...",
"settings.updates.toast.latest.title": "OpenCode is bijgewerkt",
"settings.updates.toast.latest.description": "Je gebruikt de nieuwste versie van OpenCode.",
"sound.option.none": "Geen",
"sound.option.alert01": "Waarschuwing 01",
"sound.option.alert02": "Waarschuwing 02",
"sound.option.alert03": "Waarschuwing 03",
"sound.option.alert04": "Waarschuwing 04",
"sound.option.alert05": "Waarschuwing 05",
"sound.option.alert06": "Waarschuwing 06",
"sound.option.alert07": "Waarschuwing 07",
"sound.option.alert08": "Waarschuwing 08",
"sound.option.alert09": "Waarschuwing 09",
"sound.option.alert10": "Waarschuwing 10",
"sound.option.bipbop01": "Bip-bop 01",
"sound.option.bipbop02": "Bip-bop 02",
"sound.option.bipbop03": "Bip-bop 03",
"sound.option.bipbop04": "Bip-bop 04",
"sound.option.bipbop05": "Bip-bop 05",
"sound.option.bipbop06": "Bip-bop 06",
"sound.option.bipbop07": "Bip-bop 07",
"sound.option.bipbop08": "Bip-bop 08",
"sound.option.bipbop09": "Bip-bop 09",
"sound.option.bipbop10": "Bip-bop 10",
"sound.option.staplebops01": "Staplebops 01",
"sound.option.staplebops02": "Staplebops 02",
"sound.option.staplebops03": "Staplebops 03",
"sound.option.staplebops04": "Staplebops 04",
"sound.option.staplebops05": "Staplebops 05",
"sound.option.staplebops06": "Staplebops 06",
"sound.option.staplebops07": "Staplebops 07",
"sound.option.nope01": "Nee 01",
"sound.option.nope02": "Nee 02",
"sound.option.nope03": "Nee 03",
"sound.option.nope04": "Nee 04",
"sound.option.nope05": "Nee 05",
"sound.option.nope06": "Nee 06",
"sound.option.nope07": "Nee 07",
"sound.option.nope08": "Nee 08",
"sound.option.nope09": "Nee 09",
"sound.option.nope10": "Nee 10",
"sound.option.nope11": "Nee 11",
"sound.option.nope12": "Nee 12",
"sound.option.yup01": "Ja 01",
"sound.option.yup02": "Ja 02",
"sound.option.yup03": "Ja 03",
"sound.option.yup04": "Ja 04",
"sound.option.yup05": "Ja 05",
"sound.option.yup06": "Ja 06",
"settings.general.notifications.agent.title": "Agent",
"settings.general.notifications.agent.description":
"Toon systeemmelding wanneer de agent klaar is of aandacht nodig heeft",
"settings.general.notifications.permissions.title": "Machtigingen",
"settings.general.notifications.permissions.description": "Systeemmelding weergeven wanneer toestemming vereist is",
"settings.general.notifications.errors.title": "Fouten",
"settings.general.notifications.errors.description": "Systeemmelding weergeven wanneer er een fout optreedt",
"settings.general.sounds.agent.title": "Agent",
"settings.general.sounds.agent.description": "Speel geluid af wanneer de agent klaar is of aandacht nodig heeft",
"settings.general.sounds.permissions.title": "Machtigingen",
"settings.general.sounds.permissions.description": "Speel geluid af wanneer toestemming vereist is",
"settings.general.sounds.errors.title": "Fouten",
"settings.general.sounds.errors.description": "Speel geluid af wanneer er een fout optreedt",
"settings.shortcuts.title": "Sneltoetsen",
"settings.shortcuts.reset.button": "Resetten naar standaardwaarden",
"settings.shortcuts.reset.toast.title": "Snelkoppelingen opnieuw ingesteld",
"settings.shortcuts.reset.toast.description": "Sneltoetsen zijn teruggezet naar de standaardwaarden.",
"settings.shortcuts.conflict.title": "Snelkoppeling al in gebruik",
"settings.shortcuts.conflict.description": "{{keybind}} is al toegewezen aan {{titles}}.",
"settings.shortcuts.unassigned": "Niet toegewezen",
"settings.shortcuts.pressKeys": "Druk op toetsen",
"settings.shortcuts.search.placeholder": "Zoek snelkoppelingen",
"settings.shortcuts.search.empty": "Geen snelkoppelingen gevonden",
"settings.shortcuts.group.general": "Algemeen",
"settings.shortcuts.group.session": "Sessie",
"settings.shortcuts.group.navigation": "Navigatie",
"settings.shortcuts.group.modelAndAgent": "Model en agent",
"settings.shortcuts.group.terminal": "Terminal",
"settings.shortcuts.group.prompt": "Prompt",
"settings.providers.title": "Aanbieders",
"settings.providers.description": "Aanbiederinstellingen kunnen hier worden geconfigureerd.",
"settings.providers.section.connected": "Verbonden aanbieders",
"settings.providers.connected.empty": "Geen verbonden aanbieders",
"settings.providers.connected.environmentDescription": "Verbonden via je omgevingsvariabelen",
"settings.providers.section.popular": "Populaire aanbieders",
"settings.providers.custom.description": "Voeg een OpenAI-compatibele aanbieder toe via de basis-URL.",
"settings.providers.tag.environment": "Omgeving",
"settings.providers.tag.config": "Configuratie",
"settings.providers.tag.custom": "Aangepast",
"settings.providers.tag.other": "Anders",
"settings.models.title": "Modellen",
"settings.models.description": "Modelinstellingen kunnen hier worden geconfigureerd.",
"settings.agents.title": "Agenten",
"settings.agents.description": "Agentinstellingen kunnen hier worden geconfigureerd.",
"settings.commands.title": "Commando's",
"settings.commands.description": "Commando-instellingen kunnen hier worden geconfigureerd.",
"settings.mcp.title": "MCP",
"settings.mcp.description": "MCP-instellingen kunnen hier worden geconfigureerd.",
"settings.permissions.title": "Machtigingen",
"settings.permissions.description": "Bepaal welke tools de server standaard kan gebruiken.",
"settings.permissions.section.tools": "Tools",
"settings.permissions.toast.updateFailed.title": "Kan machtigingen niet bijwerken",
"settings.permissions.action.allow": "Toestaan",
"settings.permissions.action.ask": "Vragen",
"settings.permissions.action.deny": "Weigeren",
"settings.permissions.tool.read.title": "Lees",
"settings.permissions.tool.read.description": "Een bestand lezen (komt overeen met het bestandspad)",
"settings.permissions.tool.edit.title": "Bewerken",
"settings.permissions.tool.edit.description":
"Wijzig bestanden, inclusief bewerkingen, schrijfbewerkingen en patches",
"settings.permissions.tool.glob.title": "Glob",
"settings.permissions.tool.glob.description": "Bestanden zoeken met globpatronen",
"settings.permissions.tool.grep.title": "Grep",
"settings.permissions.tool.grep.description": "Zoek bestandsinhoud met behulp van reguliere expressies",
"settings.permissions.tool.list.title": "Lijst",
"settings.permissions.tool.list.description": "Geef bestanden in een map weer",
"settings.permissions.tool.bash.title": "Bash",
"settings.permissions.tool.bash.description": "Voer shell-opdrachten uit",
"settings.permissions.tool.task.title": "Taak",
"settings.permissions.tool.task.description": "Start subagenten",
"settings.permissions.tool.skill.title": "Vaardigheid",
"settings.permissions.tool.skill.description": "Laad een vaardigheid op naam",
"settings.permissions.tool.lsp.title": "LSP",
"settings.permissions.tool.lsp.description": "Voer taalserverquery's uit",
"settings.permissions.tool.todowrite.title": "Taken schrijven",
"settings.permissions.tool.todowrite.description": "Werk de takenlijst bij",
"settings.permissions.tool.webfetch.title": "Web ophalen",
"settings.permissions.tool.webfetch.description": "Haal inhoud op van een URL",
"settings.permissions.tool.websearch.title": "Zoeken op internet",
"settings.permissions.tool.websearch.description": "Zoek op internet",
"settings.permissions.tool.external_directory.title": "Externe map",
"settings.permissions.tool.external_directory.description": "Toegang tot bestanden buiten de projectmap",
"settings.permissions.tool.doom_loop.title": "Doom-lus",
"settings.permissions.tool.doom_loop.description": "Herhaalde toolaanroepen met identieke invoer detecteren",
"session.delete.failed.title": "Kan sessie niet verwijderen",
"session.delete.title": "Sessie verwijderen",
"session.delete.confirm": 'Sessie "{{name}}" verwijderen?',
"session.delete.button": "Sessie verwijderen",
"workspace.new": "Nieuwe werkruimte",
"workspace.type.local": "lokaal",
"workspace.type.sandbox": "sandbox",
"workspace.create.failed.title": "Kan werkruimte niet maken",
"workspace.delete.failed.title": "Kan werkruimte niet verwijderen",
"workspace.resetting.title": "Werkruimte opnieuw instellen",
"workspace.resetting.description": "Dit kan een minuut duren.",
"workspace.reset.failed.title": "Kan de werkruimte niet opnieuw instellen",
"workspace.reset.success.title": "Werkruimte opnieuw ingesteld",
"workspace.reset.success.description": "De werkruimte komt nu overeen met de standaardbranch.",
"workspace.error.stillPreparing": "Werkruimte is nog in voorbereiding",
"workspace.status.checking": "Controleren op niet-samengevoegde wijzigingen...",
"workspace.status.error": "Kan de git-status niet verifiëren.",
"workspace.status.clean": "Er zijn geen niet-samengevoegde wijzigingen gedetecteerd.",
"workspace.status.dirty": "Niet-samengevoegde wijzigingen gedetecteerd in deze werkruimte.",
"workspace.delete.title": "Werkruimte verwijderen",
"workspace.delete.confirm": 'Werkruimte "{{name}}" verwijderen?',
"workspace.delete.button": "Werkruimte verwijderen",
"workspace.reset.title": "Werkruimte opnieuw instellen",
"workspace.reset.confirm": 'Werkruimte "{{name}}" opnieuw instellen?',
"workspace.reset.button": "Werkruimte opnieuw instellen",
"workspace.reset.archived.none": "Er worden geen actieve sessies gearchiveerd.",
"workspace.reset.archived.one": "Er wordt 1 sessie gearchiveerd.",
"workspace.reset.archived.many": "{{count}} sessies worden gearchiveerd.",
"workspace.reset.note":
"Hierdoor wordt de werkruimte opnieuw ingesteld zodat deze overeenkomt met de standaardbranch.",
}
+189 -55
View File
@@ -2,6 +2,105 @@ import { dict as en } from "./en"
type Keys = keyof typeof en
export const dict = {
"desktop.menu.app": "OpenCode",
"desktop.menu.file": "Arkiv",
"desktop.menu.edit": "Rediger",
"desktop.menu.view": "Vis",
"desktop.menu.go": "Gå",
"desktop.menu.window": "Vindu",
"desktop.menu.help": "Hjelp",
"desktop.menu.checkForUpdates": "Søk etter oppdateringer...",
"desktop.menu.settings": "Innstillinger",
"desktop.menu.reloadWebview": "Last inn WebView på nytt",
"desktop.menu.restart": "Start på nytt",
"desktop.menu.exportLogs": "Eksporter logger...",
"desktop.menu.newSession": "Ny sesjon",
"desktop.menu.openProject": "Åpne prosjekt...",
"desktop.menu.newWindow": "Nytt vindu",
"desktop.menu.closeWindow": "Lukk vindu",
"desktop.menu.undo": "Angre",
"desktop.menu.redo": "Gjør om",
"desktop.menu.cut": "Klipp ut",
"desktop.menu.copy": "Kopier",
"desktop.menu.paste": "Lim inn",
"desktop.menu.delete": "Slett",
"desktop.menu.selectAll": "Merk alt",
"desktop.menu.toggleSidebar": "Vis eller skjul sidepanel",
"desktop.menu.toggleTerminal": "Vis eller skjul terminal",
"desktop.menu.toggleFileTree": "Vis eller skjul filtreet",
"desktop.menu.reload": "Last inn på nytt",
"desktop.menu.toggleDeveloperTools": "Vis eller skjul utviklerverktøy",
"desktop.menu.actualSize": "Faktisk størrelse",
"desktop.menu.zoomIn": "Zoom inn",
"desktop.menu.zoomOut": "Zoom ut",
"desktop.menu.toggleFullScreen": "Slå fullskjerm av eller på",
"desktop.menu.back": "Tilbake",
"desktop.menu.forward": "Frem",
"desktop.menu.previousSession": "Forrige sesjon",
"desktop.menu.nextSession": "Neste sesjon",
"desktop.menu.previousProject": "Forrige prosjekt",
"desktop.menu.nextProject": "Neste prosjekt",
"desktop.menu.minimize": "Minimer",
"desktop.menu.maximize": "Maksimer",
"desktop.menu.documentation": "OpenCode-dokumentasjon",
"desktop.menu.supportForum": "Brukerstøtteforum",
"desktop.menu.shareFeedback": "Del tilbakemelding",
"desktop.menu.reportBug": "Rapporter en feil",
"desktop.menu.ariaLabel": "OpenCode-meny",
"desktop.updater.dialog.checkFailed.message": "Søket etter oppdateringer mislyktes.",
"desktop.updater.dialog.checkFailed.title": "Oppdateringsfeil",
"desktop.updater.dialog.upToDate.message": "Du har den nyeste versjonen.",
"desktop.updater.dialog.upToDate.title": "Ingen oppdateringer",
"desktop.updater.dialog.ready.message": "Oppdateringen {{version}} er lastet ned. Vil du starte på nytt nå?",
"desktop.updater.dialog.ready.title": "Oppdateringen er klar",
"desktop.updater.dialog.restart": "Start på nytt",
"desktop.updater.dialog.later": "Senere",
"desktop.recovery.action.relaunch": "Start appen på nytt",
"desktop.recovery.action.exportLogs": "Eksporter logger",
"desktop.recovery.action.keepWaiting": "Fortsett å vente",
"desktop.recovery.action.quit": "Avslutt",
"desktop.recovery.loadFailed": "OpenCode kunne ikke lastes inn",
"desktop.recovery.terminated": "OpenCode-vinduet ble uventet avsluttet",
"desktop.recovery.unresponsive": "OpenCode svarer ikke",
"desktop.recovery.unresponsive.detail": "Du kan starte appen på nytt, åpne loggene eller fortsette å vente.",
"desktop.recovery.loadFailed.detail": "Vindu: {{window}}\nURL: {{url}}\nFeil: {{code}} {{description}}",
"desktop.recovery.terminated.detail": "Vindu: {{window}}\nÅrsak: {{reason}}\nKode: {{code}}",
"desktop.recovery.unknown": "<ukjent>",
"desktop.dialog.chooseFolder": "Velg en mappe",
"desktop.dialog.chooseFile": "Velg en fil",
"desktop.dialog.saveFile": "Lagre fil",
"desktop.dialog.files": "Filer",
"desktop.server.local": "Lokal server",
"desktop.wsl.error.windowsOnly": "WSL er bare tilgjengelig på Windows",
"desktop.wsl.error.unavailable": "WSL er utilgjengelig",
"desktop.wsl.error.listInstalled": "Kunne ikke vise installerte WSL-distribusjoner",
"desktop.wsl.error.listOnline": "Kunne ikke vise tilgjengelige WSL-distribusjoner",
"desktop.wsl.error.executeDistro": "Kan ikke kjøre kommandoer i distribusjonen",
"desktop.wsl.error.installWsl": "Installasjonen av WSL mislyktes",
"desktop.wsl.error.installDistro": "Kunne ikke installere distribusjonen: {{distro}}",
"desktop.wsl.error.installOpencode": "Installasjonen av OpenCode mislyktes",
"desktop.wsl.error.alreadyAdded": "{{distro}} er allerede lagt til",
"desktop.wsl.error.opencodeMissing": "opencode er ikke installert i denne distribusjonen",
"desktop.wsl.error.opencodeCannotRun": "opencode er installert, men kunne ikke kjøres",
"desktop.wsl.error.opencodeNotInstalled": "OpenCode er ikke installert i {{distro}}",
"desktop.wsl.error.updateVersion":
"Oppdateringen av OpenCode er fullført, men {{distro}} rapporterer fortsatt {{installed}}; forventet {{expected}}",
"desktop.wsl.error.noVersion": "ingen versjon",
"desktop.wsl.error.serverExited": "WSL-serveren ble avsluttet etter oppstart (code={{code}} signal={{signal}})",
"desktop.wsl.error.serverExitedBeforeHealthy":
"WSL-serveren ble avsluttet før den var klar (code={{code}} signal={{signal}}){{output}}",
"desktop.wsl.error.healthTimeout":
"Tidsavbrudd for tilstandskontrollen av sidecar for {{distro}} etter {{timeout}} ms",
"desktop.wsl.error.commandTimeout": "Tidsavbrudd for {{command}} {{args}} etter {{timeout}} ms",
"desktop.wsl.error.failedPort": "Kunne ikke hente port",
"desktop.picker.error.notSelected": "Ingen fil ble valgt i filvelgeren",
"desktop.picker.error.sizeLimit": "De valgte vedleggene overskrider grensen på {{limit}} MB",
"command.category.suggested": "Foreslått",
"command.category.view": "Visning",
"command.category.project": "Prosjekt",
@@ -19,6 +118,7 @@ export const dict = {
"command.category.permissions": "Tillatelser",
"command.category.workspace": "Arbeidsområde",
"command.category.settings": "Innstillinger",
"command.logs.export": "Eksporter logger",
"theme.scheme.system": "System",
"theme.scheme.light": "Lys",
@@ -31,8 +131,8 @@ export const dict = {
"command.settings.open": "Åpne innstillinger",
"command.session.previous": "Forrige sesjon",
"command.session.next": "Neste sesjon",
"command.session.previous.unseen": "Forrige uleste økt",
"command.session.next.unseen": "Neste uleste økt",
"command.session.previous.unseen": "Forrige uleste sesjon",
"command.session.next.unseen": "Neste uleste sesjon",
"command.session.archive": "Arkiver sesjon",
"command.palette": "Kommandopalett",
@@ -101,6 +201,7 @@ export const dict = {
"dialog.provider.empty": "Ingen leverandører funnet",
"dialog.provider.group.popular": "Populære",
"dialog.provider.group.other": "Andre",
"dialog.provider.custom.label": "Egendefinert OpenAI-kompatibel leverandør",
"dialog.provider.tag.recommended": "Anbefalt",
"dialog.provider.opencode.note": "Utvalgte modeller inkludert Claude, GPT, Gemini og mer",
"dialog.provider.opencode.tagline": "Pålitelige, optimaliserte modeller",
@@ -121,6 +222,7 @@ export const dict = {
"dialog.model.unpaid.freeModels.title": "Gratis modeller levert av OpenCode",
"dialog.model.unpaid.addMore.title": "Legg til flere modeller fra populære leverandører",
"dialog.model.unpaid.viewMoreProviders": "Se over 70 flere leverandører",
"dialog.provider.viewAll": "Vis flere leverandører",
@@ -128,12 +230,14 @@ export const dict = {
"provider.connect.title.anthropicProMax": "Logg inn med Claude Pro/Max",
"provider.connect.selectMethod": "Velg innloggingsmetode for {{provider}}.",
"provider.connect.method.apiKey": "API-nøkkel",
"provider.connect.method.browser": "Nettleser",
"provider.connect.method.headless": "Uten nettleser",
"provider.connect.status.inProgress": "Autorisering pågår...",
"provider.connect.status.waiting": "Venter på autorisering...",
"provider.connect.status.failed": "Autorisering mislyktes: {{error}}",
"provider.connect.apiKey.description":
"Skriv inn din {{provider}} API-nøkkel for å koble til kontoen din og bruke {{provider}}-modeller i OpenCode.",
"provider.connect.apiKey.label": "{{provider}} API-nøkkel",
"Skriv inn API-nøkkelen din for {{provider}} for å koble til kontoen din og bruke {{provider}}-modeller i OpenCode.",
"provider.connect.apiKey.label": "{{provider}}-API-nøkkel",
"provider.connect.apiKey.placeholder": "API-nøkkel",
"provider.connect.apiKey.required": "API-nøkkel er påkrevd",
"provider.connect.opencodeZen.line1":
@@ -147,7 +251,7 @@ export const dict = {
"provider.connect.oauth.code.visit.link": "denne lenken",
"provider.connect.oauth.code.visit.suffix":
" for å hente autorisasjonskoden din for å koble til kontoen din og bruke {{provider}}-modeller i OpenCode.",
"provider.connect.oauth.code.label": "{{method}} autorisasjonskode",
"provider.connect.oauth.code.label": "{{method}}-autorisasjonskode",
"provider.connect.oauth.code.placeholder": "Autorisasjonskode",
"provider.connect.oauth.code.required": "Autorisasjonskode er påkrevd",
"provider.connect.oauth.code.invalid": "Ugyldig autorisasjonskode",
@@ -160,6 +264,7 @@ export const dict = {
"provider.connect.toast.connected.description": "{{provider}}-modeller er nå tilgjengelige.",
"provider.custom.title": "Egendefinert leverandør",
"provider.custom.unavailable": "Egendefinerte leverandører er ikke tilgjengelige på denne serveren",
"provider.custom.description.prefix": "Konfigurer en OpenAI-kompatibel leverandør. Se ",
"provider.custom.description.link": "dokumentasjon for leverandørkonfigurasjon",
"provider.custom.description.suffix": ".",
@@ -168,11 +273,12 @@ export const dict = {
"provider.custom.field.providerID.description": "Små bokstaver, tall, bindestreker eller understreker",
"provider.custom.field.name.label": "Visningsnavn",
"provider.custom.field.name.placeholder": "Min AI-leverandør",
"provider.custom.field.baseURL.label": "Base-URL",
"provider.custom.field.baseURL.label": "Basis-URL",
"provider.custom.field.baseURL.placeholder": "https://api.myprovider.com/v1",
"provider.custom.field.apiKey.label": "API-nøkkel",
"provider.custom.field.apiKey.placeholder": "API-nøkkel",
"provider.custom.field.apiKey.description": "Valgfritt. La stå tomt hvis du administrerer autentisering via headers.",
"provider.custom.field.apiKey.description":
"Valgfritt. La stå tomt hvis du administrerer autentisering via HTTP-hoder.",
"provider.custom.models.label": "Modeller",
"provider.custom.models.id.label": "ID",
"provider.custom.models.id.placeholder": "modell-id",
@@ -180,18 +286,18 @@ export const dict = {
"provider.custom.models.name.placeholder": "Visningsnavn",
"provider.custom.models.remove": "Fjern modell",
"provider.custom.models.add": "Legg til modell",
"provider.custom.headers.label": "Headers (valgfritt)",
"provider.custom.headers.key.label": "Header",
"provider.custom.headers.key.placeholder": "Header-Navn",
"provider.custom.headers.label": "HTTP-hoder (valgfritt)",
"provider.custom.headers.key.label": "HTTP-hode",
"provider.custom.headers.key.placeholder": "Navn på HTTP-hode",
"provider.custom.headers.value.label": "Verdi",
"provider.custom.headers.value.placeholder": "verdi",
"provider.custom.headers.remove": "Fjern header",
"provider.custom.headers.add": "Legg til header",
"provider.custom.headers.remove": "Fjern HTTP-hode",
"provider.custom.headers.add": "Legg til HTTP-hode",
"provider.custom.error.providerID.required": "Leverandør-ID er påkrevd",
"provider.custom.error.providerID.format": "Bruk små bokstaver, tall, bindestreker eller understreker",
"provider.custom.error.providerID.exists": "Den leverandør-IDen finnes allerede",
"provider.custom.error.providerID.exists": "Denne leverandør-ID-en finnes allerede",
"provider.custom.error.name.required": "Visningsnavn er påkrevd",
"provider.custom.error.baseURL.required": "Base-URL er påkrevd",
"provider.custom.error.baseURL.required": "Basis-URL er påkrevd",
"provider.custom.error.baseURL.format": "Må starte med http:// eller https://",
"provider.custom.error.required": "Påkrevd",
"provider.custom.error.duplicate": "Duplikat",
@@ -224,7 +330,7 @@ export const dict = {
"common.cancel": "Avbryt",
"common.connect": "Koble til",
"common.disconnect": "Koble fra",
"common.continue": "Send inn",
"common.continue": "Fortsett",
"common.submit": "Send inn",
"common.save": "Lagre",
"common.saving": "Lagrer...",
@@ -245,13 +351,13 @@ export const dict = {
"prompt.example.3": "Fiks ødelagte tester",
"prompt.example.4": "Forklar hvordan autentisering fungerer",
"prompt.example.5": "Finn og fiks sikkerhetssårbarheter",
"prompt.example.6": "Legg til enhetstester for brukerservicen",
"prompt.example.6": "Legg til enhetstester for brukertjenesten",
"prompt.example.7": "Refaktorer denne funksjonen for bedre lesbarhet",
"prompt.example.8": "Hva betyr denne feilen?",
"prompt.example.9": "Hjelp meg med å feilsøke dette problemet",
"prompt.example.10": "Generer API-dokumentasjon",
"prompt.example.11": "Optimaliser databasespørringer",
"prompt.example.12": "Legg til inputvalidering",
"prompt.example.12": "Legg til inndatavalidering",
"prompt.example.13": "Lag en ny komponent for...",
"prompt.example.14": "Hvordan deployer jeg dette prosjektet?",
"prompt.example.15": "Gjennomgå koden min for beste praksis",
@@ -261,7 +367,7 @@ export const dict = {
"prompt.example.19": "Legg til logging i hele kodebasen",
"prompt.example.20": "Hvilke avhengigheter er utdaterte?",
"prompt.example.21": "Hjelp meg med å skrive et migreringsskript",
"prompt.example.22": "Implementer caching for dette endepunktet",
"prompt.example.22": "Implementer hurtigbufring for dette endepunktet",
"prompt.example.23": "Legg til paginering i denne listen",
"prompt.example.24": "Lag en CLI-kommando for...",
"prompt.example.25": "Hvordan fungerer miljøvariabler her?",
@@ -271,7 +377,7 @@ export const dict = {
"prompt.dropzone.label": "Slipp bilder, PDF-er eller tekstfiler her",
"prompt.dropzone.file.label": "Slipp for å @nevne fil",
"prompt.slash.badge.custom": "egendefinert",
"prompt.slash.badge.skill": "skill",
"prompt.slash.badge.skill": "ferdighet",
"prompt.slash.badge.mcp": "mcp",
"prompt.context.active": "aktiv",
"prompt.context.includeActiveFile": "Inkluder aktiv fil",
@@ -297,14 +403,14 @@ export const dict = {
"prompt.toast.shellSendFailed.title": "Kunne ikke sende shell-kommando",
"prompt.toast.commandSendFailed.title": "Kunne ikke sende kommando",
"prompt.toast.promptSendFailed.title": "Kunne ikke sende forespørsel",
"prompt.toast.promptSendFailed.description": "Kunne ikke hente økt",
"prompt.toast.promptSendFailed.description": "Kunne ikke hente sesjon",
"dialog.mcp.title": "MCP-er",
"dialog.mcp.description": "{{enabled}} av {{total}} aktivert",
"dialog.mcp.empty": "Ingen MCP-er konfigurert",
"dialog.lsp.empty": "LSP-er automatisk oppdaget fra filtyper",
"dialog.plugins.empty": "Plugins konfigurert i opencode.json",
"dialog.plugins.empty": "Programtillegg konfigurert i opencode.json",
"mcp.status.connected": "tilkoblet",
"mcp.status.failed": "mislyktes",
@@ -365,7 +471,8 @@ export const dict = {
"dialog.project.edit.worktree.startup.placeholder": "f.eks. bun install",
"context.breakdown.title": "Kontekstfordeling",
"context.breakdown.note": 'Omtrentlig fordeling av input-tokens. "Annet" inkluderer verktøydefinisjoner og overhead.',
"context.breakdown.note":
'Omtrentlig fordeling av inndatatokener. "Annet" inkluderer verktøydefinisjoner og overhead.',
"context.breakdown.system": "System",
"context.breakdown.user": "Bruker",
"context.breakdown.assistant": "Assistent",
@@ -380,19 +487,19 @@ export const dict = {
"context.stats.provider": "Leverandør",
"context.stats.model": "Modell",
"context.stats.limit": "Kontekstgrense",
"context.stats.totalTokens": "Totalt antall tokens",
"context.stats.totalTokens": "Totalt antall tokener",
"context.stats.usage": "Forbruk",
"context.stats.inputTokens": "Input-tokens",
"context.stats.outputTokens": "Output-tokens",
"context.stats.reasoningTokens": "Resonnerings-tokens",
"context.stats.cacheTokens": "Cache-tokens (les/skriv)",
"context.stats.inputTokens": "Inndatatokener",
"context.stats.outputTokens": "Utdatatokener",
"context.stats.reasoningTokens": "Resonneringstokener",
"context.stats.cacheTokens": "Hurtigbuffertokener (les/skriv)",
"context.stats.userMessages": "Brukermeldinger",
"context.stats.assistantMessages": "Assistentmeldinger",
"context.stats.totalCost": "Total kostnad",
"context.stats.sessionCreated": "Sesjon opprettet",
"context.stats.lastActivity": "Siste aktivitet",
"context.usage.tokens": "Tokens",
"context.usage.tokens": "Tokener",
"context.usage.usage": "Forbruk",
"context.usage.cost": "Kostnad",
"context.usage.clickToView": "Klikk for å se kontekst",
@@ -423,9 +530,9 @@ export const dict = {
"toast.scheme.title": "Fargevalg",
"toast.workspace.enabled.title": "Arbeidsområder aktivert",
"toast.workspace.enabled.description": "Flere worktrees vises nå i sidefeltet",
"toast.workspace.enabled.description": "Flere arbeidsområder vises nå i sidefeltet",
"toast.workspace.disabled.title": "Arbeidsområder deaktivert",
"toast.workspace.disabled.description": "Kun hoved-worktree vises i sidefeltet",
"toast.workspace.disabled.description": "Kun hovedarbeidsområdet vises i sidefeltet",
"toast.permissions.autoaccept.on.title": "Aksepterer tillatelser automatisk",
"toast.permissions.autoaccept.on.description": "Forespørsler om tillatelse vil bli godkjent automatisk",
@@ -473,7 +580,7 @@ export const dict = {
"error.page.version": "Versjon: {{version}}",
"error.dev.rootNotFound":
"Rotelement ikke funnet. Glemte du å legge det til i index.html? Eller kanskje id-attributten er feilstavet?",
"Rotelement ikke funnet. Glemte du å legge det til i index.html? Eller kanskje id-attributtet er feilstavet?",
"error.serverSync.connectFailed": "Kunne ikke koble til server. Kjører det en server på `{{url}}`?",
"directory.error.invalidUrl": "Ugyldig mappe i URL-en.",
@@ -573,7 +680,7 @@ export const dict = {
"status.popover.tab.servers": "Servere",
"status.popover.tab.mcp": "MCP",
"status.popover.tab.lsp": "LSP",
"status.popover.tab.plugins": "Plugins",
"status.popover.tab.plugins": "Programtillegg",
"status.popover.action.manageServers": "Administrer servere",
"session.share.popover.title": "Publiser på nett",
@@ -601,6 +708,12 @@ export const dict = {
"terminal.connectionLost.title": "Tilkobling mistet",
"terminal.connectionLost.description":
"Terminalforbindelsen ble avbrutt. Dette kan skje når serveren starter på nytt.",
"terminal.connectTicket.csrfError":
"Tilkoblingsbilletten for PTY ble avvist av opprinnelses- eller CSRF-kontroller. Kontroller serverens CORS-konfigurasjon.",
"terminal.connectTicket.statusError": "Tilkoblingsbilletten for PTY mislyktes med {{status}}",
"titlebar.update": "Oppdater",
"titlebar.updateVersion": "Oppdater {{version}}",
"common.closeTab": "Lukk fane",
"common.dismiss": "Avvis",
@@ -613,7 +726,7 @@ export const dict = {
"common.delete": "Slett",
"common.close": "Lukk",
"common.edit": "Rediger",
"common.loadMore": "Last flere",
"common.loadMore": "Last inn flere",
"common.key.esc": "ESC",
"sidebar.menu.toggle": "Veksle meny",
@@ -651,16 +764,17 @@ export const dict = {
"settings.general.row.appearance.title": "Utseende",
"settings.general.row.appearance.description": "Tilpass hvordan OpenCode ser ut på enheten din",
"settings.general.row.colorScheme.title": "Fargevalg",
"settings.general.row.colorScheme.description": "Velg om OpenCode skal følge systemets, lyst eller mørkt tema",
"settings.general.row.colorScheme.description":
"Velg om OpenCode skal følge systeminnstillingen eller bruke lyst eller mørkt tema",
"settings.general.row.theme.title": "Tema",
"settings.general.row.theme.description": "Tilpass hvordan OpenCode er tematisert.",
"settings.general.row.theme.description": "Tilpass temaet i OpenCode.",
"settings.general.row.font.title": "Kodefont",
"settings.general.row.font.description": "Tilpass skrifttypen som brukes i kodeblokker",
"settings.general.row.terminalFont.title": "Terminalskrift",
"settings.general.row.terminalFont.description": "Tilpass skrifttypen som brukes i terminalen",
"settings.general.row.uiFont.title": "UI-skrift",
"settings.general.row.uiFont.description": "Tilpass skrifttypen som brukes i hele grensesnittet",
"settings.general.row.followup.title": "Oppfølgingsadferd",
"settings.general.row.followup.title": "Oppfølgingsatferd",
"settings.general.row.followup.description": "Velg om oppfølgingsspørsmål skal kjøres umiddelbart eller vente i kø",
"settings.general.row.followup.option.queue": "Kø",
"settings.general.row.followup.option.steer": "Styr",
@@ -671,10 +785,10 @@ export const dict = {
"settings.general.row.editToolPartsExpanded.title": "Utvid edit-verktøydeler",
"settings.general.row.editToolPartsExpanded.description":
"Vis edit-, write- og patch-verktøydeler utvidet som standard i tidslinjen",
"settings.general.row.wayland.title": "Bruk innebygd Wayland",
"settings.general.row.wayland.description": "Deaktiver X11-fallback på Wayland. Krever omstart.",
"settings.general.row.wayland.title": "Bruk Wayland direkte",
"settings.general.row.wayland.description": "Deaktiver X11-reserveløsningen på Wayland. Krever omstart.",
"settings.general.row.wayland.tooltip":
"På Linux med skjermer med blandet oppdateringsfrekvens kan innebygd Wayland være mer stabilt.",
"På Linux med skjermer med blandet oppdateringsfrekvens kan direkte Wayland-støtte være mer stabilt.",
"settings.general.row.releaseNotes.title": "Utgivelsesnotater",
"settings.general.row.releaseNotes.description": 'Vis "Hva er nytt"-vinduer etter oppdateringer',
@@ -685,7 +799,7 @@ export const dict = {
"settings.updates.row.check.description": "Se etter oppdateringer manuelt og installer hvis tilgjengelig",
"settings.updates.action.checkNow": "Sjekk nå",
"settings.updates.action.checking": "Sjekker...",
"settings.updates.toast.latest.title": "Du er oppdatert",
"settings.updates.toast.latest.title": "OpenCode er oppdatert",
"settings.updates.toast.latest.description": "Du bruker den nyeste versjonen av OpenCode.",
"sound.option.none": "Ingen",
"sound.option.alert01": "Varsel 01",
@@ -754,7 +868,7 @@ export const dict = {
"settings.shortcuts.reset.toast.title": "Snarveier tilbakestilt",
"settings.shortcuts.reset.toast.description": "Tastatursnarveier er tilbakestilt til standard.",
"settings.shortcuts.conflict.title": "Snarvei allerede i bruk",
"settings.shortcuts.conflict.description": "{{keybind}} er allerede tilordnet til {{titles}}.",
"settings.shortcuts.conflict.description": "{{keybind}} er allerede tilordnet {{titles}}.",
"settings.shortcuts.unassigned": "Ikke tilordnet",
"settings.shortcuts.pressKeys": "Trykk taster",
"settings.shortcuts.search.placeholder": "Søk etter snarveier",
@@ -804,7 +918,7 @@ export const dict = {
"settings.permissions.tool.grep.title": "Grep",
"settings.permissions.tool.grep.description": "Søk i filinnhold ved hjelp av regulære uttrykk",
"settings.permissions.tool.list.title": "Liste",
"settings.permissions.tool.list.description": "List filer i en mappe",
"settings.permissions.tool.list.description": "List opp filer i en mappe",
"settings.permissions.tool.bash.title": "Bash",
"settings.permissions.tool.bash.description": "Kjør shell-kommandoer",
"settings.permissions.tool.task.title": "Oppgave",
@@ -822,7 +936,7 @@ export const dict = {
"settings.permissions.tool.external_directory.title": "Ekstern mappe",
"settings.permissions.tool.external_directory.description": "Få tilgang til filer utenfor prosjektmappen",
"settings.permissions.tool.doom_loop.title": "Doom Loop",
"settings.permissions.tool.doom_loop.description": "Oppdager gjentatte verktøykall med identisk input",
"settings.permissions.tool.doom_loop.description": "Oppdager gjentatte verktøykall med identiske inndata",
"session.delete.failed.title": "Kunne ikke slette sesjon",
"session.delete.title": "Slett sesjon",
@@ -867,14 +981,14 @@ export const dict = {
"common.time.hoursAgo.short": "{{count}} t siden",
"common.time.daysAgo.short": "{{count}} d siden",
"settings.providers.connected.environmentDescription": "Koblet til fra miljøvariablene dine",
"settings.providers.custom.description": "Legg til en OpenAI-kompatibel leverandør via basis-URL.",
"settings.providers.custom.description": "Legg til en OpenAI-kompatibel leverandør via en basis-URL.",
"app.server.unreachable": "Kunne ikke nå {{server}}",
"app.server.retrying": "Prøver på nytt automatisk...",
"app.server.otherServers": "Andre servere",
"dialog.server.add.usernamePlaceholder": "brukernavn",
"dialog.server.add.passwordPlaceholder": "passord",
"server.row.noUsername": "inget brukernavn",
"server.row.noUsername": "ikke noe brukernavn",
"session.review.noVcs.createGit.title": "Opprett et Git-depot",
"session.review.noVcs.createGit.description": "Spor, gjennomgå og angre endringer i dette prosjektet",
"session.review.noVcs.createGit.actionLoading": "Oppretter Git-depot...",
@@ -883,6 +997,9 @@ export const dict = {
"session.question.progress": "{{current}} av {{total}} spørsmål",
"session.header.open.finder": "Finder",
"session.header.open.fileExplorer": "Filutforsker",
"session.header.reveal.finder": "Vis i Finder",
"session.header.reveal.fileExplorer": "Vis i Filutforsker",
"session.header.reveal.containingFolder": "Åpne mappen som inneholder dette elementet",
"session.header.open.fileManager": "Filbehandler",
"session.header.open.app.vscode": "VS Code",
"session.header.open.app.cursor": "Cursor",
@@ -901,25 +1018,25 @@ export const dict = {
"debugBar.na": "i/t",
"debugBar.nav.label": "NAV",
"debugBar.nav.tip":
"Siste fullførte ruteovergang som berører en sesjonsside, målt fra ruterstart til første opptegning etter at den har roet seg.",
"Siste fullførte ruteovergang som berører en sesjonsside, målt fra ruterstart til første gjengivelse etter at den har roet seg.",
"debugBar.fps.label": "FPS",
"debugBar.fps.tip": "Rullende bilder per sekund over de siste 5 sekundene.",
"debugBar.frame.label": "FRAME",
"debugBar.frame.tip": "Verste bildetid over de siste 5 sekundene.",
"debugBar.frame.tip": "Lengste bildetid over de siste 5 sekundene.",
"debugBar.jank.label": "JANK",
"debugBar.jank.tip": "Bilder over 32ms i de siste 5 sekundene.",
"debugBar.jank.tip": "Bilder som tar over 32 ms i de siste 5 sekundene.",
"debugBar.long.label": "LONG",
"debugBar.long.tip": "Blokkert tid og antall lange oppgaver i de siste 5 sekundene. Maks oppgave: {{max}}.",
"debugBar.long.tip": "Blokkert tid og antall lange oppgaver i de siste 5 sekundene. Lengste oppgave: {{max}}.",
"debugBar.delay.label": "DELAY",
"debugBar.delay.tip": "Verste observerte inndataforsinkelse i de siste 5 sekundene.",
"debugBar.delay.tip": "Lengste observerte inndataforsinkelse i de siste 5 sekundene.",
"debugBar.inp.label": "INP",
"debugBar.inp.tip":
"Omtrentlig interaksjonsvarighet over de siste 5 sekundene. Dette er INP-lignende, ikke den offisielle Web Vitals INP.",
"debugBar.cls.label": "CLS",
"debugBar.cls.tip": "Kumulativ layoutforskyvning for gjeldende app-levetid.",
"debugBar.mem.label": "MEM",
"debugBar.mem.tipUnavailable": "Brukt JS-heap vs heap-grense. Kun Chromium.",
"debugBar.mem.tip": "Brukt JS-heap vs heap-grense. {{used}} av {{limit}}.",
"debugBar.mem.tipUnavailable": "Brukt JS-heap kontra heap-grense. Kun Chromium.",
"debugBar.mem.tip": "Brukt JS-heap kontra heap-grense. {{used}} av {{limit}}.",
"common.key.ctrl": "Ctrl",
"common.key.alt": "Alt",
"common.key.shift": "Shift",
@@ -1030,6 +1147,22 @@ export const dict = {
"wsl.onboarding.versionMismatch": "Den installerte versjonen samsvarer ikke med versjonen av skrivebordsappen.",
"wsl.onboarding.adding": "Legger til...",
"help.tabs.toast.ariaLabel": "Vi introduserer faner. Organiser arbeidet og de aktive sesjonene dine med faner",
"help.tabs.toast.dismiss": "Avvis informasjon om faner",
"help.tabs.title": "Vi introduserer faner",
"help.tabs.description": "Organiser arbeidet og de aktive sesjonene dine med faner",
"help.tabs.date": "14. juli",
"help.tabs.introduction": "OpenCode Desktop er nå bygget rundt faner.",
"help.tabs.sessions":
"Start en ny sesjon i en fane, eller åpne en eksisterende sesjon fra et av prosjektene dine. Åpne en ny fane når du skal begynne på noe nytt, og lukk den når du er ferdig.",
"help.tabs.organize":
"Når du har noen få faner åpne, blir det enklere å organisere de aktive sesjonene. Gi fanene navn som er lette å huske, hvis du planlegger å beholde dem.",
"help.tabs.home":
"Du finner alle sesjonene og prosjektene dine på den nye Hjem-skjermen. Når du velger en sesjon, åpnes den i en fane.",
"help.tabs.persistence": "Fanene er fortsatt åpne når du åpner appen på nytt.",
"help.tabs.worktrees":
"Det nye oppsettet støtter ikke Git Worktrees ennå, men støtte kommer snart. Hvis du foretrekker å fortsette med det forrige oppsettet, kan du bytte mellom oppsettene i Innstillinger. Vær oppmerksom på at det nye oppsettet blir permanent om noen uker.",
"language.uk": "Українська",
"error.page.description.localServerStartup": "Det oppstod en feil under oppstart av den lokale serveren.",
@@ -1058,7 +1191,7 @@ export const dict = {
"session.error.notFound.description": "Denne fanen peker til en sesjon som ikke lenger finnes på denne serveren.",
"session.error.notFound.closeTab": "Lukk fane",
"session.error.serverConnection": "Kan ikke koble til denne serveren",
"session.review.noUncommittedChanges": "Ingen ucommittede endringer ennå",
"session.review.noUncommittedChanges": "Ingen endringer som ikke er sjekket inn ennå",
"session.review.noBranchChanges": "Ingen grenendringer ennå",
"session.question.minimize": "Minimer spørsmål",
"session.question.restore": "Gjenopprett spørsmål",
@@ -1096,8 +1229,9 @@ export const dict = {
"settings.general.row.mobileTitlebarBottom.title": "Navigasjon nederst",
"settings.general.row.mobileTitlebarBottom.description":
"Plasser tittellinjen og sesjonsfanene nederst på mobilskjermen",
"settings.general.row.showCustomAgents.title": "Egendefinerte agenter",
"settings.general.row.showCustomAgents.description": "Vis agentvelgeren i skrivefeltet",
"settings.general.row.showCustomAgents.title": "Vis agent",
"settings.general.row.showCustomAgents.description":
"Bytt mellom agenter i skrivefeltet. Når velgeren er skjult, brukes Build-agenten som standard.",
"settings.general.row.newInterface.title": "Nytt oppsett",
"settings.general.row.newInterface.badge": "Ny",
"settings.general.row.newInterface.description":
+1140
View File
@@ -0,0 +1,1140 @@
export const dict = {
"desktop.menu.app": "OpenCode",
"desktop.menu.file": "فائل",
"desktop.menu.edit": "ترمیم",
"desktop.menu.view": "نظارہ",
"desktop.menu.go": "جاؤ",
"desktop.menu.window": "ونڈو",
"desktop.menu.help": "مدد",
"desktop.menu.checkForUpdates": "اپ ڈیٹاں دی پڑتال کرو...",
"desktop.menu.settings": "ترتیبات",
"desktop.menu.reloadWebview": "Webview دوبارہ لوڈ کرو",
"desktop.menu.restart": "دوبارہ شروع کرو",
"desktop.menu.exportLogs": "لاگ برآمد کرو...",
"desktop.menu.newSession": "نواں سیشن",
"desktop.menu.openProject": "پروجیکٹ کھولو...",
"desktop.menu.newWindow": "نویں ونڈو",
"desktop.menu.closeWindow": "ونڈو بند کرو",
"desktop.menu.undo": "کالعدم کرو",
"desktop.menu.redo": "دوبارہ کرو",
"desktop.menu.cut": "کٹ کرو",
"desktop.menu.copy": "کاپی کرو",
"desktop.menu.paste": "چپکاؤ",
"desktop.menu.delete": "مٹاؤ",
"desktop.menu.selectAll": "سارا کجھ چنو",
"desktop.menu.toggleSidebar": "سائڈبار ٹوگل کرو",
"desktop.menu.toggleTerminal": "ٹرمینل ٹوگل کرو",
"desktop.menu.toggleFileTree": "فائل ٹری ٹوگل کرو",
"desktop.menu.reload": "دوبارہ لوڈ کرو",
"desktop.menu.toggleDeveloperTools": "ڈیویلپر ٹولز ٹوگل کرو",
"desktop.menu.actualSize": "اصل سائز",
"desktop.menu.zoomIn": "وڈا کرو",
"desktop.menu.zoomOut": "چھوٹا کرو",
"desktop.menu.toggleFullScreen": "پوری سکرین ٹوگل کرو",
"desktop.menu.back": "پچھے",
"desktop.menu.forward": "اگے",
"desktop.menu.previousSession": "پچھلا سیشن",
"desktop.menu.nextSession": "اگلا سیشن",
"desktop.menu.previousProject": "پچھلا پروجیکٹ",
"desktop.menu.nextProject": "اگلا پروجیکٹ",
"desktop.menu.minimize": "چھوٹا کرو",
"desktop.menu.maximize": "وڈا کرو",
"desktop.menu.documentation": "OpenCode دیاں دستاویزاں",
"desktop.menu.supportForum": "مدد دا فورم",
"desktop.menu.shareFeedback": "اپنی رائے سانجھی کرو",
"desktop.menu.reportBug": "خرابی دی رپورٹ کرو",
"desktop.menu.ariaLabel": "OpenCode مینو",
"desktop.updater.dialog.checkFailed.message": "اپ ڈیٹ دی پڑتال ناکام ہو گئی۔",
"desktop.updater.dialog.checkFailed.title": "اپ ڈیٹ دی غلطی",
"desktop.updater.dialog.upToDate.message": "تہاڈے کول تازہ ترین ورژن اے۔",
"desktop.updater.dialog.upToDate.title": "کوئی اپ ڈیٹ نئیں",
"desktop.updater.dialog.ready.message": "اپ ڈیٹ {{version}} ڈاؤن لوڈ ہو گئی اے۔ ہن دوبارہ شروع کرنا اے؟",
"desktop.updater.dialog.ready.title": "اپ ڈیٹ تیار اے",
"desktop.updater.dialog.restart": "دوبارہ شروع کرو",
"desktop.updater.dialog.later": "پچھوں",
"desktop.recovery.action.relaunch": "دوبارہ چلاؤ",
"desktop.recovery.action.exportLogs": "لاگ برآمد کرو",
"desktop.recovery.action.keepWaiting": "اڈیک جاری رکھو",
"desktop.recovery.action.quit": "بند کرو",
"desktop.recovery.loadFailed": "OpenCode لوڈ نئیں ہو سکیا",
"desktop.recovery.terminated": "OpenCode دی ونڈو اچانک بند ہو گئی",
"desktop.recovery.unresponsive": "OpenCode جواب نئیں دے رہیا",
"desktop.recovery.unresponsive.detail": "تسی ایپ دوبارہ چلا سکدے او، لاگ کھول سکدے او یا اڈیک جاری رکھ سکدے او۔",
"desktop.recovery.loadFailed.detail": "ونڈو: {{window}}\nURL: {{url}}\nغلطی: {{code}} {{description}}",
"desktop.recovery.terminated.detail": "ونڈو: {{window}}\nکارن: {{reason}}\nکوڈ: {{code}}",
"desktop.recovery.unknown": "<نامعلوم>",
"desktop.dialog.chooseFolder": "فولڈر چنو",
"desktop.dialog.chooseFile": "فائل چنو",
"desktop.dialog.saveFile": "فائل محفوظ کرو",
"desktop.dialog.files": "فائلاں",
"desktop.server.local": "مقامی سرور",
"desktop.wsl.error.windowsOnly": "WSL صرف Windows تے دستیاب اے",
"desktop.wsl.error.unavailable": "WSL دستیاب نئیں",
"desktop.wsl.error.listInstalled": "انسٹال کیتے WSL ڈسٹرو دی فہرست نئیں بن سکی",
"desktop.wsl.error.listOnline": "آن لائن WSL ڈسٹرو دی فہرست نئیں بن سکی",
"desktop.wsl.error.executeDistro": "ڈسٹرو وچ کمانڈاں نئیں چل سکدیاں",
"desktop.wsl.error.installWsl": "WSL دی تنصیب ناکام ہو گئی",
"desktop.wsl.error.installDistro": "ڈسٹرو انسٹال نئیں ہو سکیا: {{distro}}",
"desktop.wsl.error.installOpencode": "OpenCode دی تنصیب ناکام ہو گئی",
"desktop.wsl.error.alreadyAdded": "{{distro}} پہلے ای شامل اے",
"desktop.wsl.error.opencodeMissing": "اس ڈسٹرو وچ opencode انسٹال نئیں اے",
"desktop.wsl.error.opencodeCannotRun": "opencode انسٹال اے پر چل نئیں سکیا",
"desktop.wsl.error.opencodeNotInstalled": "{{distro}} وچ OpenCode انسٹال نئیں اے",
"desktop.wsl.error.updateVersion":
"OpenCode دی اپ ڈیٹ پوری ہو گئی پر {{distro}} ہلے وی {{installed}} دس رہیا اے؛ {{expected}} چاہیدا سی",
"desktop.wsl.error.noVersion": "کوئی ورژن نئیں",
"desktop.wsl.error.serverExited": "WSL سرور شروع ہون پچھوں بند ہو گیا (code={{code}} signal={{signal}})",
"desktop.wsl.error.serverExitedBeforeHealthy":
"WSL سرور ٹھیک حالت وچ آون توں پہلاں بند ہو گیا (code={{code}} signal={{signal}}){{output}}",
"desktop.wsl.error.healthTimeout": "{{distro}} دے sidecar دی صحت پڑتال لئی مقرر ویلا {{timeout}}ms پچھوں مُک گیا",
"desktop.wsl.error.commandTimeout": "{{command}} {{args}} لئی مقرر ویلا {{timeout}}ms پچھوں مُک گیا",
"desktop.wsl.error.failedPort": "پورٹ نئیں مل سکی",
"desktop.picker.error.notSelected": "چونکار ولوں فائل نئیں چنی گئی",
"desktop.picker.error.sizeLimit": "چنیاں منسلک فائلاں {{limit}} MB دی حد توں ودھ نیں",
"command.category.suggested": "تجویز کیتا گیا",
"command.category.view": "نظارہ",
"command.category.project": "پروجیکٹ",
"command.category.provider": "پرووائیڈر",
"command.category.server": "سرور",
"command.category.session": "سیشن",
"command.category.theme": "تھیم",
"command.category.language": "بولی",
"command.category.file": "فائل",
"command.category.context": "تناظر",
"command.category.terminal": "Terminal",
"command.category.model": "ماڈل",
"command.category.mcp": "MCP",
"command.category.agent": "Agent",
"command.category.permissions": "اجازتاں",
"command.category.workspace": "ورک سپیس",
"command.category.settings": "ترتیبات",
"command.logs.export": "لاگ برآمد کرو",
"theme.scheme.system": "نظام",
"theme.scheme.light": "ہلکا",
"theme.scheme.dark": "گہرا",
"command.sidebar.toggle": "سائڈبار نوں ٹوگل کرو",
"command.project.open": "پروجیکٹ کھولو",
"command.project.previous": "پچھلا پروجیکٹ",
"command.project.next": "اگلا پروجیکٹ",
"command.project.index": "پروجیکٹ {{index}} تے سوئچ کرو",
"command.provider.connect": "پرووائیڈر نال جڑو",
"command.server.switch": "سرور سوئچ کرو",
"command.settings.open": "ترتیبات کھولو",
"command.session.previous": "پچھلا سیشن",
"command.session.next": "اگلا سیشن",
"command.session.previous.unseen": "پچھلا ان پڑھیا سیشن",
"command.session.next.unseen": "اگلا ان پڑھیا سیشن",
"command.session.archive": "آرکائیو سیشن",
"command.palette": "کمانڈ پیلیٹ",
"command.theme.cycle": "اگلا تھیم ورتو",
"command.theme.set": "تھیم ورتو: {{theme}}",
"command.theme.scheme.cycle": "اگلی رنگ سکیم ورتو",
"command.theme.scheme.set": "رنگ سکیم ورتو: {{scheme}}",
"command.language.cycle": "اگلی بولی ورتو",
"command.language.set": "بولی ورتو: {{language}}",
"command.session.new": "نواں سیشن",
"command.file.open": "فائل کھولو",
"command.tab.close": "ٹیب بند کرو",
"command.tab.reopenClosed": "بند ٹیب دوبارہ کھولو",
"command.context.addSelection": "سیاق و سباق وچ انتخاب شامل کرو",
"command.context.addSelection.description": "موجودہ فائل چوں منتخب کردہ لائناں شامل کرو",
"command.input.focus": "ان پٹ تے فوکس کرو",
"command.terminal.toggle": "ٹرمینل نوں ٹوگل کرو",
"command.fileTree.toggle": "فائل ٹری نوں ٹوگل کرو",
"command.review.toggle": "جائزہ ٹوگل کرو",
"command.terminal.new": "نواں ٹرمینل",
"command.terminal.new.description": "اک نواں ٹرمینل ٹیب بناؤ",
"command.steps.toggle": "قدم ٹوگل کرو",
"command.steps.toggle.description": "موجودہ پیغام لئی اقدامات وکھاؤ یا لُکا دیو",
"command.message.previous": "پچھلا سنیہا",
"command.message.previous.description": "پچھلے صارف دے سنیہے تے جاؤ",
"command.message.next": "اگلا سنیہا",
"command.message.next.description": "اگلے ورتن آلے دے سنیہے تے جاؤ",
"command.model.choose": "ماڈل دا انتخاب کرو",
"command.model.choose.description": "اک وکھرا ماڈل چنو",
"command.mcp.toggle": "MCPs نوں ٹوگل کرو",
"command.mcp.toggle.description": "MCPs نوں ٹوگل کرو",
"command.agent.cycle": "اگلا ایجنٹ ورتو",
"command.agent.cycle.description": "اگلے ایجنٹ تے سوئچ کرو",
"command.agent.cycle.reverse": "پچھلا ایجنٹ ورتو",
"command.agent.cycle.reverse.description": "پچھلے ایجنٹ تے سوئچ کرو",
"command.model.variant.cycle": "سوچن دی محنت بدلو",
"command.model.variant.cycle.description": "محنت دی اگلی سطح تے جاؤ",
"command.prompt.mode.shell": "Shell",
"command.prompt.mode.normal": "پرامپٹ",
"command.permissions.autoaccept.enable": "خودکار اجازتاں قبول کرو",
"command.permissions.autoaccept.disable": "خودکار اجازتاں قبول کرنا بند کرو",
"command.workspace.toggle": "ورک سپیس ٹوگل کرو",
"command.workspace.toggle.description": "سائڈبار وچ متعدد ورک اسپیسز نو فعال یا غیر فعال کرو",
"command.session.undo": "کالعدم کرو",
"command.session.undo.description": "آخری سنیہا کالعدم کرو",
"command.session.redo": "دوبارہ کرو",
"command.session.redo.description": "آخری انڈون سنیہا دوبارہ کرو",
"command.session.compact": "سیشن مختصر کرو",
"command.session.compact.description": "سیاق و سباق دا سائز گھٹ کرن لئی سیشن دا خلاصہ کرو",
"command.session.fork": "سنیہا توں فورک",
"command.session.fork.description": "پچھلے سنیہے توں اک نواں سیشن بناؤ",
"command.session.share": "سیشن شیئر کرو",
"command.session.share.description": "اس سیشن نو شیئر کرو تے URL نو کلپ بورڈ تے کاپی کرو",
"command.session.unshare": "سیشن شیئر کرنا بند کرو",
"command.session.unshare.description": "اس سیشن نو شیئر کرنا بند کرو",
"palette.search.placeholder": "فائلاں، کمانڈز، تے سیشنز تلاش کرو",
"palette.search.placeholder.home": "سرچ کمانڈز تے سیشنز",
"palette.empty": "کوئی نتیجہ نئیں ملیا",
"palette.group.commands": "کمانڈز",
"palette.group.files": "فائلاں",
"dialog.provider.search.placeholder": "پرووائیڈراں نوں لبھو",
"dialog.provider.empty": "کوئی پرووائیڈر نئیں لبھیا",
"dialog.provider.group.popular": "مشہور",
"dialog.provider.group.other": "ہور",
"dialog.provider.custom.label": "من پسند OpenAI نال رلدا پرووائیڈر",
"dialog.provider.tag.recommended": "سفارش کیتی",
"dialog.provider.opencode.note": "Claude، GPT، Gemini تے ہور سمیت کیوریٹڈ ماڈل",
"dialog.provider.opencode.tagline": "قابل اعتماد اصلاح شدہ ماڈل",
"dialog.provider.opencodeGo.tagline": "ہر اک لئی گھٹ قیمت دی رکنیت",
"dialog.provider.anthropic.note": "پرو تے میکس سمیت Claude ماڈل تک براہ راست رسائی",
"dialog.provider.copilot.note": "GitHub Copilot دے ذریعے کوڈنگ دی مدد لئی اے آئی ماڈل",
"dialog.provider.openai.note": "تیز تے صلاحیت والے عام AI کماں لئی GPT ماڈل",
"dialog.provider.google.note": "تیز تے منظم جواباں لئی Gemini ماڈل",
"dialog.provider.openrouter.note": "اک پرووائیڈر توں سارے سپورٹڈ ماڈلاں تک رسائی لوو",
"dialog.provider.vercel.note": "سمارٹ روٹنگ دے نال اے آئی ماڈل تک متحدہ رسائی",
"dialog.model.select.title": "ماڈل چنو",
"dialog.model.search.placeholder": "ماڈل لبھو",
"dialog.model.empty": "کوئی ماڈل نئیں لبھیا",
"dialog.model.manage": "ماڈل دا انتظام کرو",
"dialog.model.manage.description": "ماڈل سلیکٹر وچ کیہڑے ماڈل دکھائی دیندے نیں، اپنی مرضی دے مطابق بناؤ۔",
"dialog.model.manage.provider.toggle": "{{provider}} دے سارے ماڈل ٹوگل کرو",
"dialog.model.unpaid.freeModels.title": "OpenCode دے ذریعہ فراہم کردہ مفت ماڈل",
"dialog.model.unpaid.addMore.title": "مقبول پرووائیڈراں توں ہور ماڈل شامل کرو",
"dialog.model.unpaid.viewMoreProviders": "70+ ہور پرووائیڈر ویکھو",
"dialog.provider.viewAll": "ہور پرووائیڈر وکھاؤ",
"provider.connect.title": "{{provider}} نال جڑو",
"provider.connect.title.anthropicProMax": "Claude پرو/میکس دے نال لاگ ان کرو",
"provider.connect.selectMethod": "{{provider}} لئی لاگ ان دا طریقہ منتخب کرو۔",
"provider.connect.method.apiKey": "API کلید",
"provider.connect.method.browser": "براؤزر",
"provider.connect.method.headless": "ہیڈلیس",
"provider.connect.status.inProgress": "اختیار دیندے پئے آں...",
"provider.connect.status.waiting": "اختیار ملن دی اڈیک اے...",
"provider.connect.status.failed": "اختیار نئیں مل سکیا: {{error}}",
"provider.connect.apiKey.description":
"اپنے اکاؤنٹ نوں جوڑن لئی اپنی {{provider}} API کلید درج کرو تے OpenCode وچ {{provider}} ماڈل ورتو۔",
"provider.connect.apiKey.label": "{{provider}} API کلید",
"provider.connect.apiKey.placeholder": "API کلید",
"provider.connect.apiKey.required": "API کلید دی لوڑ اے",
"provider.connect.opencodeZen.line1":
"زین تہانوں کوڈنگ ایجنٹاں لئی قابل اعتماد مرضی دے ماڈلاں دے اک کیوریٹڈ سیٹ تک رسائی فراہم کردا اے۔",
"provider.connect.opencodeZen.line2":
"اک API کلید دے نال تہانوں Claude، GPT، Gemini، GLM تے ہور ماڈلاں تک رسائی ملے گی۔",
"provider.connect.opencodeZen.visit.prefix": "ویکھو ",
"provider.connect.opencodeZen.visit.link": "opencode.ai/zen",
"provider.connect.opencodeZen.visit.suffix": " اپنی API کلید حاصل کرن لئی۔",
"provider.connect.oauth.code.visit.prefix": "ویکھو ",
"provider.connect.oauth.code.visit.link": "ایہہ لنک",
"provider.connect.oauth.code.visit.suffix":
" اپنے اکاؤنٹ نوں جوڑن تے OpenCode وچ {{provider}} ماڈل ورتن لئی اپنا اجازت کوڈ حاصل کرن لئی۔",
"provider.connect.oauth.code.label": "{{method}} اجازت دا کوڈ",
"provider.connect.oauth.code.placeholder": "اجازتی کوڈ",
"provider.connect.oauth.code.required": "اجازتی کوڈ دی لوڑ اے",
"provider.connect.oauth.code.invalid": "غلط اجازتی کوڈ",
"provider.connect.oauth.auto.visit.prefix": "ویکھو ",
"provider.connect.oauth.auto.visit.link": "ایہہ لنک",
"provider.connect.oauth.auto.visit.suffix":
" تے اپنے اکاؤنٹ نوں جوڑن تے OpenCode وچ {{provider}} ماڈل ورتن لئی تھلے دتا کوڈ درج کرو۔",
"provider.connect.oauth.auto.confirmationCode": "تصدیقی کوڈ",
"provider.connect.toast.connected.title": "{{provider}} جڑیا ہویا",
"provider.connect.toast.connected.description": "{{provider}} ماڈل ہن ورتن لئی دستیاب ہن۔",
"provider.custom.title": "من پسند پرووائیڈر",
"provider.custom.description.prefix": "OpenAI نال رلدا پرووائیڈر سیٹ کرو۔ ویکھو ",
"provider.custom.description.link": "پرووائیڈر کنفگ دے دستاویز",
"provider.custom.description.suffix": ".",
"provider.custom.field.providerID.label": "پرووائیڈر ID",
"provider.custom.field.providerID.placeholder": "میرا پرووائیڈر",
"provider.custom.field.providerID.description": "نکے اکھر، نمبر، ہائفن، یا انڈر سکور",
"provider.custom.field.name.label": "ڈسپلے دا ناں",
"provider.custom.field.name.placeholder": "میرا اے آئی فراہم کرن آلا",
"provider.custom.field.baseURL.label": "بیس URL",
"provider.custom.field.baseURL.placeholder": "https://api.myprovider.com/v1",
"provider.custom.field.apiKey.label": "API کلید",
"provider.custom.field.apiKey.placeholder": "API کلید",
"provider.custom.field.apiKey.description": "اختیاری۔ جے تسی ہیڈرز دے ذریعے تصدیق دا انتظام کردے او تے خالی چھڈ دیو۔",
"provider.custom.models.label": "ماڈل",
"provider.custom.models.id.label": "آئی ڈی",
"provider.custom.models.id.placeholder": "ماڈل آئی ڈی",
"provider.custom.models.name.label": "ناں",
"provider.custom.models.name.placeholder": "ڈسپلے دا ناں",
"provider.custom.models.remove": "ماڈل ہٹا دیو",
"provider.custom.models.add": "ماڈل شامل کرو",
"provider.custom.headers.label": "ہیڈرز (اختیاری)",
"provider.custom.headers.key.label": "ہیڈر",
"provider.custom.headers.key.placeholder": "ہیڈر دا ناں",
"provider.custom.headers.value.label": "قدر",
"provider.custom.headers.value.placeholder": "قدر",
"provider.custom.headers.remove": "ہیڈر ہٹا دیو",
"provider.custom.headers.add": "ہیڈر شامل کرو",
"provider.custom.error.providerID.required": "پروائیڈر آئی ڈی دی لوڑ اے",
"provider.custom.error.providerID.format": "نکے اکھر، نمبر، ہائفن، یا انڈر سکور ورتو",
"provider.custom.error.providerID.exists": "اوہ پرووائیڈر ID پہلے توں موجود اے",
"provider.custom.error.name.required": "ڈسپلے ناں دی لوڑ اے",
"provider.custom.error.baseURL.required": "بیس URL دی لوڑ اے",
"provider.custom.error.baseURL.format": "http:// یا https:// توں شروع کرنا ضروری اے۔",
"provider.custom.error.required": "لازمی اے",
"provider.custom.error.duplicate": "دُہرا",
"provider.custom.unavailable": "ایس سرور تے من پسند پرووائیڈر دستیاب نئیں نیں",
"provider.disconnect.toast.disconnected.title": "{{provider}} منقطع",
"provider.disconnect.toast.disconnected.description": "{{provider}} ماڈل ہن دستیاب نئیں ہن۔",
"model.tag.free": "مفت",
"model.tag.latest": "تازہ ترین",
"model.provider.anthropic": "Anthropic",
"model.provider.openai": "OpenAI",
"model.provider.google": "Google",
"model.provider.xai": "xAI",
"model.provider.meta": "Meta",
"model.input.text": "متن",
"model.input.image": "تصویر",
"model.input.audio": "آڈیو",
"model.input.video": "ویڈيو",
"model.input.pdf": "پی ڈی ایف",
"model.tooltip.allows": "اجازت دیندا اے: {{inputs}}",
"model.tooltip.context.label": "تناظر",
"model.tooltip.inputs": "ان پٹ",
"model.tooltip.model": "ماڈل",
"model.tooltip.provider": "پرووائیڈر",
"model.tooltip.reasoning": "استدلال",
"model.tooltip.reasoning.allowed": "استدلال دی اجازت دیندا اے",
"model.tooltip.reasoning.none": "سوچن دی سہولت نئیں",
"model.tooltip.context": "سیاق و سباق دی حد {{limit}}",
"common.search.placeholder": "لبھنا",
"common.goBack": "واپس جاؤ",
"common.goForward": "اگے ودھو",
"common.loading": "لوڈ ہو رہیا اے",
"common.loading.ellipsis": "...",
"common.cancel": "منسوخ کرو",
"common.clear": "صاف",
"common.open": "کھولو",
"common.connect": "منسلک کرو",
"common.disconnect": "منقطع کرو",
"common.continue": "جاری رکھو",
"common.submit": "جمع کراؤ",
"common.save": "محفوظ کرو",
"common.saving": "محفوظ ہو رہیا اے...",
"common.default": "طے شدہ",
"common.attachment": "منسلکہ",
"prompt.placeholder.shell": "شیل کمانڈ درج کرو... {{example}}",
"prompt.placeholder.normal": 'کجھ وی پچھ... "{{example}}"',
"prompt.placeholder.simple": "کجھ وی پچھ...",
"prompt.placeholder.summarizeComments": "تبصریاں دا خلاصہ کرو...",
"prompt.placeholder.summarizeComment": "تبصرے دا خلاصہ...",
"prompt.mode.shell": "Shell",
"prompt.mode.normal": "پرامپٹ",
"prompt.mode.shell.exit": "باہر نکلن لئی ایس سی",
"session.child.promptDisabled": "ذیلی ایجنٹ سیشناں نو اشارہ نئیں کیتا جا سکدا۔",
"session.child.backToParent": "مین سیشن تے واپس جاؤ۔",
"prompt.example.1": "کوڈ بیس چ اک TODO ٹھیک کرو",
"prompt.example.2": "اس پروجیکٹ دا ٹیک سٹیک کی اے؟",
"prompt.example.3": "ٹٹے ہوئے ٹیسٹ ٹھیک کرو",
"prompt.example.4": "وضاحت کرو کہ تصدیق کس طرح کم کردی اے",
"prompt.example.5": "حفاظتی کمزوریاں نوں لبھو تے ٹھیک کرو",
"prompt.example.6": "صارف دی خدمت لئی یونٹ ٹیسٹ شامل کرو",
"prompt.example.7": "اس فنکشن نو زیادہ پڑھن دے قابل بنان دے لی ریفیکٹر کرو",
"prompt.example.8": "ایس غلطی دا کیہ مطلب اے؟",
"prompt.example.9": "اس مسئلے نو ٹھیک کرن چ میری مدد کرو",
"prompt.example.10": "API دستاویزات تیار کرو",
"prompt.example.11": "ڈیٹا بیس دے سوالاں نو بہتر بناؤ",
"prompt.example.12": "ان پٹ دی توثیق شامل کرو",
"prompt.example.13": "...لئی اک نواں کمپونینٹ بناؤ",
"prompt.example.14": "میں اس پروجیکٹ نوں کیویں ڈیپلائے کراں؟",
"prompt.example.15": "بہترین طریقاں لئی میرے کوڈ دا جائزہ لوو",
"prompt.example.16": "اس فنکشن وچ ایرر ہینڈلنگ شامل کرو",
"prompt.example.17": "اس ریجیکس پیٹرن دی وضاحت کرو",
"prompt.example.18": "اس نوں TypeScript وچ بدلو",
"prompt.example.19": "پورے کوڈ بیس چ لاگنگ شامل کرو",
"prompt.example.20": "کیہڑے انحصار پرانے ہو چکے نیں؟",
"prompt.example.21": "ہجرت دی سکرپٹ لکھن چ میری مدد کرو",
"prompt.example.22": "اس اینڈ پوائنٹ لئی کیشنگ لاگو کرو",
"prompt.example.23": "اس فہرست چ صفحات شامل کرو",
"prompt.example.24": "...لئی اک CLI کمانڈ بناؤ",
"prompt.example.25": "ماحولیاتی متغیر ایتھے کیویں کم کردے نیں؟",
"prompt.popover.emptyResults": "کوئی ملاپ دا نتیجہ نئیں نکلیا",
"prompt.popover.emptyCommands": "کوئی مماثل کمانڈ نئیں",
"prompt.dropzone.label": "تصویراں، پی ڈی ایف، یا ٹیکسٹ فائلاں ایتھے چھڈو",
"prompt.dropzone.file.label": "@mention فائل تے ڈراپ کرو",
"prompt.slash.badge.custom": "مخصوص",
"prompt.slash.badge.skill": "مہارت",
"prompt.slash.badge.mcp": "ایم سی پی",
"prompt.context.active": "چالو",
"prompt.context.includeActiveFile": "فعال فائل شامل کرو",
"prompt.context.removeActiveFile": "فعال فائل نو سیاق و سباق توں ہٹا دیو",
"prompt.context.removeFile": "سیاق و سباق توں فائل ہٹا دیو",
"prompt.action.attachFile": "فائلاں شامل کرو",
"prompt.menu.addImagesAndFiles": "فائلاں تے ہور شامل کرو",
"prompt.menu.imagesAndFiles": "تصویراں تے فائلاں",
"prompt.menu.commands": "کمانڈز",
"prompt.menu.context": "تناظر",
"prompt.menu.shellCommand": "Shell کمانڈ",
"prompt.attachment.remove": "منسلکہ ہٹا دیو",
"prompt.action.send": "گھلو",
"prompt.action.stop": "روکو",
"prompt.toast.pasteUnsupported.title": "غیر تعاون یافتہ منسلکہ",
"prompt.toast.pasteUnsupported.description":
"ایتھے صرف تصویراں، پی ڈی ایف، یا ٹیکسٹ فائلاں منسلک کیتیاں جا سکدیاں نیں۔",
"prompt.toast.attachmentDuplicate.title": "ایہہ فائل پہلے ای اپ لوڈ ہو چکی اے",
"prompt.toast.modelAgentRequired.title": "اک ایجنٹ تے ماڈل چنو",
"prompt.toast.modelAgentRequired.description": "پرامپٹ بھیجن توں پہلاں اک ایجنٹ تے ماڈل دا انتخاب کرو۔",
"prompt.toast.worktreeCreateFailed.title": "ورک ٹری بنان چ ناکامی ہوئی",
"prompt.toast.sessionCreateFailed.title": "سیشن بنان چ ناکامی ہوئی",
"prompt.toast.shellSendFailed.title": "شیل کمانڈ بھیجن چ ناکام رہیا",
"prompt.toast.commandSendFailed.title": "کمانڈ بھیجن چ ناکام رہیا",
"prompt.toast.promptSendFailed.title": "پرامپٹ بھیجن چ ناکام رہیا",
"prompt.toast.promptSendFailed.description": "سیشن بازیافت کرن توں قاصر",
"dialog.mcp.title": "MCPs",
"dialog.mcp.description": "{{total}} وچوں {{enabled}} چالو",
"dialog.mcp.empty": "کوئی MCP سیٹ نئیں کیتا گیا",
"dialog.lsp.empty": "LSPs فائل دی اقسام توں خودکار طور تے پتہ چلدا اے",
"dialog.plugins.empty": "opencode.json وچ سیٹ کیتے پلگ اِن",
"mcp.status.connected": "جڑیا ہویا",
"mcp.status.failed": "ناکام ہویا",
"mcp.status.needs_auth": "تصدیق دی لوڑ اے",
"mcp.status.disabled": "بند",
"mcp.auth.clickToAuthenticate": "تصدیق کرن لئی کلک کرو",
"dialog.fork.empty": "فورک کرن لئی کوئی پیغام نئیں",
"dialog.directory.search.placeholder": "فولڈراں نوں لبھو",
"dialog.directory.empty": "کوئی فولڈر نئیں لبیا",
"dialog.directory.action.selectFile": "فائل چنو",
"dialog.directory.action.selectFolder": "فولڈر چنو",
"dialog.directory.root": "Root",
"dialog.directory.parent": "اُتلا فولڈر",
"dialog.directory.readError": "اس فولڈر نوں پڑھن توں قاصر",
"app.server.unreachable": "{{server}} تک نئیں اپڑ سکیا",
"app.server.retrying": "خود بخود دوبارہ کوشش کر رئے آں...",
"app.server.otherServers": "ہور سرور",
"dialog.server.title": "سرورز",
"dialog.server.description": "ایہہ ایپ کس OpenCode سرور نال جڑدی اے، اس نوں سوئچ کرو۔",
"dialog.server.search.placeholder": "سرچ سرورز",
"dialog.server.empty": "ہلے تک کوئی سرور نئیں",
"dialog.server.add.title": "سرور شامل کرو",
"dialog.server.add.url": "سرور دا پتہ",
"dialog.server.add.placeholder": "http://localhost:4096",
"dialog.server.add.error": "سرور نال جڑیا نئیں جا سکیا",
"dialog.server.add.checking": "چیک کر رہیا واں...",
"dialog.server.add.button": "سرور شامل کرو",
"dialog.server.add.name": "سرور دا ناں (اختیاری)",
"dialog.server.add.namePlaceholder": "Localhost",
"dialog.server.add.username": "ورتن آلا ناں (اختیاری)",
"dialog.server.add.usernamePlaceholder": "ورتن آلا ناں",
"dialog.server.add.password": "پاس ورڈ (اختیاری)",
"dialog.server.add.passwordPlaceholder": "پاس ورڈ",
"dialog.server.edit.title": "سرور وچ ترمیم کرو",
"dialog.server.default.title": "ڈیفالٹ سرور",
"dialog.server.default.description":
"مقامی سرور شروع کرن دی بجائے ایپ لانچ تے اس سرور نال جڑو۔ دوبارہ شروع کرن دی لوڑ اے۔",
"dialog.server.default.none": "کوئی سرور نئیں چنیا گیا",
"dialog.server.default.set": "موجودہ سرور نو ڈیفالٹ دے طور تے سیٹ کرو",
"dialog.server.default.clear": "صاف",
"dialog.server.action.remove": "سرور ہٹا دیو",
"dialog.server.menu.edit": "ترمیم کرو",
"dialog.server.menu.default": "ڈیفالٹ دے طور تے سیٹ کرو",
"dialog.server.menu.defaultRemove": "ڈیفالٹ ہٹاؤ",
"dialog.server.menu.delete": "مکاؤ",
"dialog.server.current": "موجودہ سرور",
"dialog.server.status.default": "طے شدہ",
"wsl.server.add": "WSL سرور شامل کرو",
"wsl.server.addShort": "WSL شامل کرو",
"wsl.server.label": "WSL",
"wsl.server.menu.label": "WSL سرور",
"wsl.server.retryStart": "دوبارہ شروع کرن دی کوشش کرو",
"wsl.server.updating": "اپ ڈیٹ...",
"wsl.onboarding.step.distro": "ڈسٹرو دا انتخاب کرو",
"wsl.onboarding.step.opencode": "OpenCode",
"wsl.onboarding.checkingRuntime": "WSL چیک کر رئے آں...",
"wsl.onboarding.restartRequired": "WSL دی تنصیب پوری کرن لئی Windows نوں دوبارہ شروع کرنا پئے گا۔",
"wsl.onboarding.ready": "WSL تیار اے۔",
"wsl.onboarding.required": "جاری رکھن لئی WSL دی لوڑ اے۔",
"wsl.onboarding.checkingDistros": "ڈسٹرو چیک کر ریا واں...",
"wsl.onboarding.installingDistro": "{{distro}} انسٹال کر رئے آں...",
"wsl.onboarding.checkingDistro": "{{distro}} چیک کر رئے آں...",
"wsl.onboarding.listingDistros": "ڈسٹرو دی فہرست...",
"wsl.onboarding.distroReady": "{{distro}} تیار اے۔",
"wsl.onboarding.distroNotInstalled": "{{distro}} اجے تک انسٹال نئیں ہویا۔",
"wsl.onboarding.openDistroOnce": "سیٹ اپ ختم کرن لئی {{distro}} نوں اک واری کھولو۔",
"wsl.onboarding.finishingDistro": "{{distro}} دا سیٹ اپ پورا ہو رہیا اے۔",
"wsl.onboarding.pickDistro": "اک ڈسٹرو چنو یا تھلے دتی گئی اک انسٹال کرو۔",
"wsl.onboarding.checkingOpencode": "OpenCode چیک کر رئے آں...",
"wsl.onboarding.checkingOpencodeIn": "{{distro}} چ OpenCode دی جانچ پڑتال...",
"wsl.onboarding.updatingOpencode": "OpenCode نو اپ ڈیٹ کر رئے آں...",
"wsl.onboarding.updatingOpencodeIn": "{{distro}} وچ OpenCode نو اپ ڈیٹ کر رئے آں...",
"wsl.onboarding.updateOpencodeIn": "{{distro}} وچ OpenCode نو اپ ڈیٹ کرو۔",
"wsl.onboarding.updateOpencode": "OpenCode اپ ڈیٹ کرو",
"wsl.onboarding.opencodeReadyIn": "OpenCode {{distro}} چ تیار اے۔",
"wsl.onboarding.opencodeReady": "OpenCode تیار اے۔",
"wsl.onboarding.installOpencodeIn": "{{distro}} وچ OpenCode انسٹال کرو۔",
"wsl.onboarding.installOpencode": "OpenCode انسٹال کرو",
"wsl.onboarding.chooseDistroFirst": "پہلے اک ڈسٹرو دا انتخاب کرو۔",
"wsl.onboarding.loadFailed": "WSL حالت لوڈ کرن چ ناکام رہیا۔",
"wsl.onboarding.loading": "لوڈ ہو رہیا اے...",
"wsl.onboarding.installedDistros": "ڈسٹرو انسٹال کیتے گئے",
"wsl.onboarding.checkAgain": "دوبارہ چیک کرو",
"wsl.onboarding.distroStatus.ready": "تیار",
"wsl.onboarding.distroStatus.checking": "چیک کر رہیا واں...",
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode انسٹال نئیں کیتا گیا",
"wsl.onboarding.distroStatus.missingTools": "bash تے curl نئیں ملے",
"wsl.onboarding.distroStatus.unsupported": "غیر تعاون یافتہ · WSL 2 استعمال کرو",
"wsl.onboarding.needAnotherDistro": "تہانوں اک ہور ڈسٹرو دی لوڑ اے؟",
"wsl.onboarding.needAnotherDistroHint": "WSL کیٹلاگ توں Linux ڈسٹری بیوشن انسٹال کرو",
"wsl.onboarding.wslNotInstalled.title": "WSL انسٹال نئیں کیتا گیا",
"wsl.onboarding.wslNotInstalled.description":
"OpenCode دے WSL سرور شامل کرن توں پہلاں WSL (Windows Subsystem for Linux) دی لوڑ اے",
"wsl.onboarding.wslUnavailable.title": "WSL دستیاب نئیں",
"wsl.onboarding.wslUnavailable.description": "OpenCode ایس مشین تے WSL دی تصدیق نئیں کر سکیا۔",
"wsl.onboarding.installWsl": "WSL انسٹال کرو",
"wsl.onboarding.windowsRestartRequired":
"WSL دی تنصیب پوری کرن لئی Windows نوں دوبارہ شروع کرو، فیر OpenCode دوبارہ کھولو۔",
"wsl.onboarding.next": "اگلا",
"wsl.onboarding.refresh": "تازہ کرو",
"wsl.onboarding.allDistrosAdded": "سارے انسٹال شدہ ڈسٹرو پہلے ای شامل کر دتے گئے ہن۔",
"wsl.onboarding.noDistros": "ہلے تیکر کوئی ڈسٹرو نئیں لبھیا۔",
"wsl.onboarding.install": "انسٹال کرو",
"wsl.onboarding.installing": "انسٹال کر رہیا اے...",
"wsl.onboarding.installDistro": "ڈسٹرو انسٹال کرو",
"wsl.onboarding.searchDistros": "ڈسٹرو تلاش کرو",
"wsl.onboarding.wsl2Required": "WSL 2 دی لوڑ اے۔",
"wsl.onboarding.toolsRequired": "اس ڈسٹرو نوں bash تے curl دی لوڑ اے۔",
"wsl.onboarding.openTerminal": "ٹرمینل کھولو",
"wsl.onboarding.path": "راہ: {{path}}",
"wsl.onboarding.notFound": "نئیں لبھا",
"wsl.onboarding.version": "ورژن: {{version}}",
"wsl.onboarding.unknown": "نامعلوم",
"wsl.onboarding.desktopVersion": "ڈیسک ٹاپ {{version}}",
"wsl.onboarding.versionMismatch": "انسٹال کیتا گیا ورژن ڈیسک ٹاپ ایپ ورژن نال میل نئیں کھاندا۔",
"wsl.onboarding.adding": "شامل کر رہیا واں...",
"help.tabs.toast.ariaLabel": "ٹیباں دی جان پچھان۔ اپنے کم تے چالو سیشناں نوں ٹیباں نال ترتیب دیو",
"help.tabs.toast.dismiss": "ٹیباں دی جانکاری ہٹاؤ",
"help.tabs.title": "ٹیباں دی جان پچھان",
"help.tabs.description": "اپنے کم تے چالو سیشناں نوں ٹیباں نال ترتیب دیو",
"help.tabs.date": "14 جولائی",
"help.tabs.introduction": "OpenCode Desktop ہن ٹیباں دے گرد بنایا گیا اے۔",
"help.tabs.sessions":
"اک ٹیب وچ نواں سیشن شروع کرو یا اپنے کسے وی پروجیکٹ توں موجودہ سیشن کھولو۔ جدوں کجھ نواں شروع کرو تے نواں ٹیب کھولو تے کم پورا ہون تے اینوں بند کر دیو۔",
"help.tabs.organize":
"کجھ ٹیب کھلے رکھن نال چالو سیشناں نوں ترتیب نال رکھنا سوکھا ہوندا اے۔ جے تسی ٹیب سنبھال کے رکھنا اے تے اینوں کوئی چیتے رہن آلا ناں دیو۔",
"help.tabs.home":
"نویں ہوم سکرین تے تہانوں اپنے سارے سیشن تے پروجیکٹ لبھن گے۔ سیشن چنن نال اوہ اک ٹیب وچ کھل جاندا اے۔",
"help.tabs.persistence": "ایپ دوبارہ کھولن تے تہاڈے ٹیب کھلے رہندے نیں۔",
"help.tabs.worktrees":
"نواں ڈیزائن ہلے Git Worktrees نوں سہارا نئیں دیندا، ایہ سہولت چھیتی آ رہی اے۔ جے تسی پچھلا لے آؤٹ ورتدے رہنا چاہندے او تے ترتیبات وچ لے آؤٹ بدل سکدے او۔ بس چیتے رکھو کہ کجھ ہفتیاں پچھوں نواں لے آؤٹ پکا ہو جائے گا۔",
"server.row.noUsername": "کوئی ورتن آلا ناں نئیں",
"dialog.project.edit.title": "پروجیکٹ وچ ترمیم کرو",
"dialog.project.edit.name": "ناں",
"dialog.project.edit.icon": "آئکن",
"dialog.project.edit.icon.alt": "پروجیکٹ آئیکن",
"dialog.project.edit.icon.hint": "تصویر تے کلک کرو یا گھسیٹو",
"dialog.project.edit.icon.recommended": "تجویز کردہ: 128x128px",
"dialog.project.edit.color": "رنگ",
"dialog.project.edit.color.select": "{{color}} رنگ چنو",
"dialog.project.edit.worktree.startup": "ورک اسپیس اسٹارٹ اپ سکرپٹ",
"dialog.project.edit.worktree.startup.description": "اک نویں ورک سپیس (ورک ٹری) بنان دے بعد چلدا اے۔",
"dialog.project.edit.worktree.startup.placeholder": "مثلاً بن انسٹال کرو",
"dialog.releaseNotes.action.getStarted": "شروع کرو",
"dialog.releaseNotes.action.next": "اگلا",
"dialog.releaseNotes.action.hideFuture": "ایہہ اگوں نہ وکھاؤ",
"dialog.releaseNotes.media.alt": "ریلیز پیش نظارہ",
"context.breakdown.title": "کانٹیکسٹ دی ونڈ",
"context.breakdown.note": 'ان پٹ ٹوکناں دی لگ بھگ ونڈ۔ "ہور" وچ ٹول دیاں تعریفاں تے وادھو خرچ شامل نیں۔',
"context.breakdown.system": "نظام",
"context.breakdown.user": "ورتن آلا",
"context.breakdown.assistant": "اسسٹنٹ",
"context.breakdown.tool": "ٹول کالز",
"context.breakdown.other": "ہور",
"context.systemPrompt.title": "سسٹم پرامپٹ",
"context.rawMessages.title": "خام سنیہے",
"context.stats.session": "سیشن",
"context.stats.messages": "سنیہے",
"context.stats.provider": "پرووائیڈر",
"context.stats.model": "ماڈل",
"context.stats.limit": "سیاق و سباق دی حد",
"context.stats.totalTokens": "کل ٹوکن",
"context.stats.usage": "ورتن",
"context.stats.inputTokens": "ان پٹ ٹوکن",
"context.stats.outputTokens": "آؤٹ پٹ ٹوکن",
"context.stats.reasoningTokens": "استدلال ٹوکن",
"context.stats.cacheTokens": "کیش ٹوکن (پڑھنا/لکھنا)",
"context.stats.userMessages": "ورتن آلے دے سنیہے",
"context.stats.assistantMessages": "اسسٹنٹ میسجز",
"context.stats.totalCost": "کل لاگت",
"context.stats.sessionCreated": "سیشن بنن دا ویلا",
"context.stats.lastActivity": "آخری سرگرمی",
"context.usage.tokens": "ٹوکن",
"context.usage.usage": "ورتن",
"context.usage.cost": "لاگت",
"context.usage.clickToView": "سیاق و سباق ویکھن لئی کلک کرو",
"context.usage.view": "سیاق و سباق دا استعمال ویکھو",
"language.en": "انگریجی",
"language.zh": "简体中文",
"language.zht": "繁體中文",
"language.ko": "한국어",
"language.de": "Deutsch",
"language.es": "Español",
"language.fr": "Français",
"language.da": "Dansk",
"language.ja": "日本語",
"language.pl": "Polski",
"language.ru": "Русский",
"language.ar": "العربية",
"language.no": "Norsk",
"language.br": "Português (Brasil)",
"language.bs": "Bosanski",
"language.uk": "Українська",
"language.th": "ไทย",
"language.tr": "Türkçe",
"toast.language.title": "بولی",
"toast.language.description": "{{language}} تے سوئچ کیتا گیا",
"toast.theme.title": "تھیم سوئچ ہو گیا",
"toast.scheme.title": "رنگ سکیم",
"toast.workspace.enabled.title": "ورک اسپیسز اینبلڈ نیں",
"toast.workspace.enabled.description": "اک توں ودھ ورک ٹری ہن سائڈبار وچ دکھائے گئے نیں",
"toast.workspace.disabled.title": "ورک سپیس بند نیں",
"toast.workspace.disabled.description": "سائڈبار چ صرف مین ورک ٹری وکھایا گیا اے۔",
"toast.permissions.autoaccept.on.title": "اجازتاں نوں خودکار قبول کرنا",
"toast.permissions.autoaccept.on.description": "اجازت دی درخواستاں خود بخود منظور ہو جان گیاں",
"toast.permissions.autoaccept.off.title": "اجازتاں نوں خودکار قبول کرنا بند کر دتا گیا",
"toast.permissions.autoaccept.off.description": "اجازت دی درخواستاں لئی منظوری دی لوڑ ہووے گی",
"toast.model.none.title": "کوئی ماڈل نئیں چنیا گیا",
"toast.model.none.description": "اس سیشن دا خلاصہ کرن لئی کسے پرووائیڈر نال جڑو",
"toast.file.loadFailed.title": "فائل لوڈ کرن چ ناکامی ہوئی",
"toast.file.listFailed.title": "فائلاں دی فہرست بنان چ ناکام رہیا",
"toast.context.noLineSelection.title": "کوئی لائن سلیکشن نئیں",
"toast.context.noLineSelection.description": "پہلے فائل ٹیب چ اک لائن رینج منتخب کرو۔",
"toast.session.share.copyFailed.title": "کلپ بورڈ تے URL کاپی کرن چ ناکام رہیا",
"toast.session.share.success.title": "سیشن سانجھا کیتا گیا",
"toast.session.share.success.description": "شیئر URL کلپ بورڈ تے کاپی ہو گیا!",
"toast.session.share.failed.title": "سیشن شیئر کرن چ ناکام رہیا",
"toast.session.share.failed.description": "سیشن شیئر کردے ویلے کوئی غلطی ہو گئی",
"toast.session.unshare.success.title": "سیشن شیئر کرنا بند ہو گیا",
"toast.session.unshare.success.description": "سیشن دا شیئر کامیابی نال بند ہو گیا!",
"toast.session.unshare.failed.title": "سیشن ان شیئر کرن چ ناکام رہیا",
"toast.session.unshare.failed.description": "سیشن ان شیئر کردے ویلے کوئی غلطی ہو گئی",
"toast.session.listFailed.title": "{{project}} لئی سیشن لوڈ کرن چ ناکام رہیا",
"toast.project.reloadFailed.title": "{{project}} دوبارہ لوڈ نئیں ہو سکیا",
"toast.update.title": "اپ ڈیٹ دستیاب اے",
"toast.update.description": "OpenCode ({{version}}) دا اک نواں ورژن ہن انسٹال کرن لئی دستیاب اے۔",
"toast.update.action.installRestart": "انسٹال کرو تے دوبارہ شروع کرو",
"toast.update.action.notYet": "اجے نئیں",
"error.page.title": "کجھ غلط ہو گیا",
"error.page.description": "ایپلیکیشن لوڈ کردے ویلے غلطی ہوئی۔",
"error.page.description.localServerStartup": "لوکل سرور شروع کردے ویلے غلطی ہوئی۔",
"error.page.details.label": "غلطی دی تفصیلات",
"error.page.action.restart": "دوبارہ شروع کرو",
"error.page.action.report": "غلطی دی رپورٹ کرو",
"error.page.action.reported": "غلطی رپورٹ ہو گئی",
"error.page.action.exportLogs": "لاگ برآمد کرو",
"error.page.action.checking": "چیک کر رہیا واں...",
"error.page.action.checkUpdates": "اپ ڈیٹس لئی چیک کرو",
"error.page.action.updateTo": "{{version}} تے اپ ڈیٹ کرو",
"error.page.circular": "[چکری]",
"error.page.report.prefix": "مہربانی کر کے اس غلطی دی اطلاع OpenCode ٹیم نوں دیو",
"error.page.report.discord": "Discord تے",
"error.page.version": "ورژن: {{version}}",
"error.dev.rootNotFound":
"عنصر نئیں لبیا۔ کی تسی ایہنوں اپنے index.html چ شامل کرنا بھل گئے او؟ یا شاید id وصف غلط ہجے ہو گیا اے؟",
"error.serverSync.connectFailed": "سرور نال نئیں جڑ سکیا۔ کی `{{url}}` تے کوئی سرور چل رہیا اے؟",
"error.serverSDK.noServerAvailable": "کوئی سرور دستیاب نئیں",
"error.serverSDK.serverNotAvailable": "سرور دستیاب نئیں",
"error.childStore.persistedCacheCreateFailed": "پکا کیش نئیں بن سکیا",
"error.childStore.persistedProjectMetadataCreateFailed": "مستقل پروجیکٹ میٹا ڈیٹا بنان چ ناکام رہیا",
"error.childStore.persistedProjectIconCreateFailed": "پرسٹڈ پروجیکٹ آئیکن بنان چ ناکام رہیا",
"error.childStore.storeCreateFailed": "سٹور بنان چ ناکامی ہوئی",
"directory.error.invalidUrl": "URL وچ غلط ڈائریکٹری اے۔",
"error.chain.unknown": "نامعلوم غلطی",
"error.server.invalidConfiguration": "غلط ترتیب",
"error.chain.causedBy": "ایس دی وجہ توں:",
"error.chain.apiError": "API غلطی",
"error.chain.status": "حیثیت: {{status}}",
"error.chain.retryable": "دوبارہ آزمان دے قابل: {{retryable}}",
"error.chain.responseBody": "جواب دا متن:\n{{body}}",
"error.chain.didYouMean": "کی تہاڈا مطلب سی: {{suggestions}}",
"error.chain.modelNotFound": "ماڈل نئیں لبیا: {{provider}}/{{model}}",
"error.chain.checkConfig": "اپنی کنفگ (opencode.json) وچ پرووائیڈر/ماڈل دے ناں چیک کرو",
"error.chain.mcpFailed": 'MCP سرور "{{name}}" ناکام ہو گیا۔ نوٹ، OpenCode ہلے تک MCP تصدیق دی حمایت نئیں کردا۔',
"error.chain.providerAuthFailed": "فراہم کرن آلے دی تصدیق ناکام ہو گئی ({{provider}}): {{message}}",
"error.chain.providerInitFailed": 'پرووائیڈر "{{provider}}" شروع نئیں ہو سکیا۔ اسناد تے کنفگ چیک کرو۔',
"error.chain.configJsonInvalid": "{{path}} تے کنفیگ فائل درست نئیں اے JSON(C)",
"error.chain.configJsonInvalidWithMessage": "{{path}} تے کنفیگ فائل درست نئیں اے JSON(C): {{message}}",
"error.chain.configDirectoryTypo":
'{{path}} وچ "{{dir}}" ڈائریکٹری درست نئیں اے۔ ڈائریکٹری دا ناں "{{suggestion}}" رکھو یا اینوں ہٹا دیو۔ ایہہ اک عام ٹائپنگ دی غلطی اے۔',
"error.chain.configFrontmatterError": "{{path}} وچ فرنٹ میٹر دی تجزیہ کرن وچ ناکام رہیا:\n{{message}}",
"error.chain.configInvalid": "{{path}} تے کنفیگ فائل غلط اے",
"error.chain.configInvalidWithMessage": "{{path}} تے کنفیگ فائل غلط اے: {{message}}",
"notification.permission.title": "اجازت دی لوڑ اے",
"notification.permission.description": "{{sessionTitle}} {{projectName}} وچ اجازت دی لوڑ اے",
"notification.question.title": "سوال",
"notification.question.description": "{{sessionTitle}} {{projectName}} وچ اک سوال اے",
"notification.action.goToSession": "سیشن تے جاؤ",
"notification.session.responseReady.title": "جواب تیار اے",
"notification.session.error.title": "سیشن دی غلطی",
"notification.session.error.fallbackDescription": "اک غلطی ہو گئی",
"home.recentProjects": "حال دے پروجیکٹ",
"home.empty.title": "حال دا کوئی پروجیکٹ نئیں",
"home.empty.description": "اک مقامی پروجیکٹ کھول کے شروع کرو",
"home.title": "گھر",
"home.projects": "پروجیکٹ",
"home.project.add": "پروجیکٹ شامل کرو",
"home.recentlyClosed": "حال ای چ بند کیتا گیا",
"home.server.collapse": "سرور دے پروجیکٹ سمیٹو",
"home.server.expand": "سرور دے پروجیکٹ کھولو",
"home.sessions.search.placeholder": "سرچ سیشن",
"home.sessions.search.placeholder.scoped": "{{scope}} وچ سیشناں دی تلاش کرو",
"home.sessions.search.sessions": "سیشن",
"home.sessions.search.noResults": "{{query}} لئی کوئی سیشن نئیں لبھیا",
"home.sessions.empty": "ایتھے ہلے کجھ نئیں",
"home.sessions.empty.description": "شروع کرن لئی اک سیشن بناؤ",
"home.sessions.group.today": "آج",
"home.sessions.group.yesterday": "کل",
"home.sessions.group.older": "پرانا",
"home.providerTip":
"دوجے ماڈل استعمال کرن لئی 75+ فراہم کرن آلیاں نال جڑو، جنہاں چ Claude، GPT، Gemini، وغیرہ شامل نیں",
"session.tab.session": "سیشن",
"session.tab.review": "جائزہ",
"session.tab.context": "تناظر",
"session.tab.unknown": "نامعلوم سیشن",
"session.panel.reviewAndFiles": "جائزہ تے فائلاں",
"session.error.notFound": "ایہہ سیشن نئیں لبیا جا سکدا",
"session.error.notFound.description": "ایہ ٹیب اک سیشن ول اشارہ کردا اے جہڑا ہن اس سرور تے موجود نئیں اے۔",
"session.error.notFound.closeTab": "ٹیب بند کرو",
"session.error.serverConnection": "اس سرور نال جڑ نئیں سکدے",
"session.review.filesChanged": "بدلیاں فائلاں {{count}}",
"session.review.change.one": "تبدیلی",
"session.review.change.other": "تبدیلیاں",
"session.review.loadingChanges": "تبدیلیاں لوڈ ہو رہیاں نیں...",
"session.review.empty": "اس سیشن وچ حالے تک کوئی تبدیلی نئیں",
"session.review.noVcs": "کوئی Git ورژن کنٹرول سسٹم نئیں لبھیا، تبدیلیاں نئیں وکھائیاں گئیاں",
"session.review.noVcs.createGit.title": "اک Git ریپازٹری بناؤ",
"session.review.noVcs.createGit.description": "اس منصوبے چ تبدیلیاں نو ٹریک کرو، جائزہ لوو تے کالعدم کرو",
"session.review.noVcs.createGit.actionLoading": "Git ریپازٹری بنانا...",
"session.review.noVcs.createGit.action": "Git ریپازٹری بناؤ",
"session.review.noSnapshot": "ترتیب وچ سنیپ شاٹ ٹریکنگ غیر فعال اے، اس لیی سیشن تبدیلیاں دستیاب نئیں نیں",
"session.review.noChanges": "کوئی تبدیلی نئیں",
"session.review.noUncommittedChanges": "ہلے کوئی ان کمٹڈ تبدیلی نئیں",
"session.review.noBranchChanges": "ہلے تیکر کوئی برانچ نئیں بدلی",
"session.files.selectToOpen": "کھولن لئی کوئی فائل چنو",
"session.files.all": "ساریاں فائلاں",
"session.files.empty": "کوئی فائل نئیں",
"session.files.binaryContent": "بائنری فائل (مواد وکھایا نئیں جا سکدا)",
"session.messages.renderEarlier": "پہلے سنیہے رینڈر کرو",
"session.messages.loadingEarlier": "پہلے دے سنیہے لوڈ کر رئے آں...",
"session.messages.loadEarlier": "پہلے سنیہے لوڈ کرو",
"session.messages.loading": "سنیہے لوڈ ہو رۓ...",
"session.messages.jumpToLatest": "تازہ ترین تے جاؤ",
"session.context.addToContext": "سیاق و سباق چ {{selection}} شامل کرو",
"session.todo.title": "ٹوڈوس",
"session.todo.collapse": "سمیٹو",
"session.todo.expand": "کھولو",
"session.todo.progress": "{{done}} دے {{total}} کم مکمل ہو گئے",
"session.question.progress": "{{total}} سوالاں وچوں {{current}}",
"session.question.minimize": "سوال نوں چھوٹا کرو",
"session.question.restore": "سوال بحال کرو",
"session.question.pending.one": "{{count}} زیر التوا سوال",
"session.question.pending.other": "{{count}} زیر التوا سوال",
"session.followupDock.summary.one": "{{count}} قطار چ لگیا ہویا پیغام",
"session.followupDock.summary.other": "{{count}} قطار وچ لگے سنیہے",
"session.followupDock.sendNow": "ہن بھیجو",
"session.followupDock.edit": "ترمیم کرو",
"session.followupDock.collapse": "قطار والے سنیہے سمیٹو",
"session.followupDock.expand": "قطار وچ لگے سنیہے ودھاؤ",
"session.revertDock.summary.one": "{{count}} رول بیک میسج",
"session.revertDock.summary.other": "{{count}} رول بیک پیغامات",
"session.revertDock.collapse": "واپس موڑے سنیہے سمیٹو",
"session.revertDock.expand": "رول بیک پیغامات نو ودھاؤ",
"session.revertDock.restore": "سنیہا بحال کرو",
"session.new.title": "کجھ وی بناؤ",
"session.new.project.new": "نواں منصوبہ",
"session.new.project.search": "منصوبیاں دی تلاش کرو",
"session.new.project.add": "پروجیکٹ شامل کرو",
"session.new.worktree.main": "مین برانچ",
"session.new.worktree.mainWithBranch": "مین برانچ ({{branch}})",
"session.new.worktree.create": "نواں ورک ٹری بناؤ",
"session.new.workspace.runIn": "وچ سیشن چلاؤ",
"session.new.workspace.triggerLocal": "مقامی",
"session.new.workspace.local": "مقامی مخزن",
"session.new.workspace.existing": "کم دی تھاں...",
"session.new.git.none": "Git نئیں",
"session.new.lastModified": "آخری ترمیم",
"session.header.search.placeholder": "{{project}} لبھو",
"session.header.searchFiles": "فائلاں لبھو",
"session.header.openIn": "وچ کھولو",
"session.header.open.action": "کھولو {{app}}",
"session.header.open.ariaLabel": "{{app}} وچ کھولو",
"session.header.open.menu": "اختیارات کھولو",
"session.header.open.copyPath": "راہ کاپی کرو",
"session.header.open.finder": "Finder",
"session.header.open.fileExplorer": "File Explorer",
"session.header.open.fileManager": "File Manager",
"session.header.reveal.finder": "Finder وچ ظاہر کرو",
"session.header.reveal.fileExplorer": "File Explorer وچ ظاہر کرو",
"session.header.reveal.containingFolder": "فائل والا فولڈر کھولو",
"session.header.open.app.vscode": "VS Code",
"session.header.open.app.cursor": "Cursor",
"session.header.open.app.zed": "Zed",
"session.header.open.app.textmate": "TextMate",
"session.header.open.app.antigravity": "Antigravity",
"session.header.open.app.terminal": "Terminal",
"session.header.open.app.iterm2": "iTerm2",
"session.header.open.app.ghostty": "Ghostty",
"session.header.open.app.warp": "Warp",
"session.header.open.app.xcode": "Xcode",
"session.header.open.app.androidStudio": "Android Studio",
"session.header.open.app.powershell": "PowerShell",
"session.header.open.app.sublimeText": "Sublime Text",
"status.popover.trigger": "حالت",
"status.popover.ariaLabel": "سرور ترتیبات",
"status.popover.tab.servers": "سرورز",
"status.popover.tab.mcp": "MCP",
"status.popover.tab.lsp": "LSP",
"status.popover.tab.plugins": "پلگ انز",
"status.popover.action.manageServers": "سرورز دا انتظام کرو",
"session.share.popover.title": "ویب تے شائع کرو",
"session.share.popover.description.shared": "ایہ سیشن ویب تے عوامی اے۔ ایہ لنک آلے ہر بندے لئی رسائی حاصل اے۔",
"session.share.popover.description.unshared":
"ویب تے عوامی طور تے سیشن شیئر کرو۔ ایہ لنک آلے ہر بندے لئی رسائی حاصل ہووے گی۔",
"session.share.action.share": "شیئر کرو",
"session.share.action.publish": "شائع کرو",
"session.share.action.publishing": "شائع ہو رہیا اے...",
"session.share.action.unpublish": "شائع نہ کرو",
"session.share.action.unpublishing": "اشاعت ہٹ رہی اے...",
"session.share.action.view": "ویکھو",
"session.share.copy.copied": "کاپی کیتا گیا",
"session.share.copy.copyLink": "لنک کاپی کرو",
"lsp.tooltip.none": "کوئی LSP سرور نئیں",
"lsp.label.connected": "{{count}} LSP",
"prompt.loading": "لوڈنگ پرامپٹ...",
"terminal.loading": "ٹرمینل لوڈ ہو رہیا اے...",
"terminal.title": "Terminal",
"terminal.title.numbered": "Terminal {{number}}",
"terminal.close": "ٹرمینل بند کرو",
"terminal.connectionLost.title": "کنکشن گواچ گیا",
"terminal.connectionLost.abnormalClose": "WebSocket غیر معمولی طور تے بند کیتا گیا: {{code}}",
"terminal.connectionLost.description":
"ٹرمینل کنکشن وچ رکاوٹ پے گئی۔ ایہ اودوں ہو سکدا اے جدوں سرور دوبارہ شروع ہوندا اے۔",
"terminal.connectTicket.csrfError": "PTY کنکشن ٹکٹ نوں ماخذ یا CSRF جانچاں نے رد کر دتا۔ سرور دی CORS کنفگ چیک کرو۔",
"terminal.connectTicket.statusError": "PTY کنکشن ٹکٹ {{status}} سٹیٹس نال ناکام ہو گیا",
"titlebar.update": "اپ ڈیٹ کرو",
"titlebar.updateVersion": "اپ ڈیٹ کرو {{version}}",
"common.closeTab": "ٹیب بند کرو",
"common.dismiss": "برخاست کرو",
"common.moreCountSuffix": " (+{{count}} ہور)",
"common.requestFailed": "درخواست ناکام ہو گئی",
"common.moreOptions": "ہور اختیارات",
"common.learnMore": "ہور جانو",
"common.rename": "ناں بدلو",
"common.reset": "ری سیٹ کرو",
"common.archive": "آرکائیو کرو",
"common.delete": "مکاؤ",
"common.close": "بند کرو",
"common.edit": "ترمیم کرو",
"common.loadMore": "ہور لوڈ کرو",
"common.key.esc": "ESC",
"common.key.ctrl": "Ctrl",
"common.key.alt": "Alt",
"common.key.shift": "Shift",
"common.key.meta": "Meta",
"common.key.space": "Space",
"common.key.backspace": "Backspace",
"common.key.enter": "Enter",
"common.key.tab": "Tab",
"common.key.delete": "Delete",
"common.key.home": "Home",
"common.key.end": "End",
"common.key.pageUp": "Page Up",
"common.key.pageDown": "Page Down",
"common.key.insert": "Insert",
"common.unknown": "نامعلوم",
"common.time.justNow": "ہنے ہنے",
"common.time.minutesAgo.short": "{{count}}m پہلاں",
"common.time.hoursAgo.short": "{{count}}h پہلاں",
"common.time.daysAgo.short": "{{count}}d پہلاں",
"sidebar.menu.toggle": "مینو ٹوگل کرو",
"sidebar.nav.projectsAndSessions": "پروجیکٹ تے سیشن",
"sidebar.settings": "ترتیبات",
"sidebar.help": "مدد",
"sidebar.workspaces.enable": "ورک سپیس چالو کرو",
"sidebar.workspaces.disable": "ورک اسپیسز نو غیر فعال کرو",
"sidebar.gettingStarted.title": "شروع کرنا",
"sidebar.gettingStarted.line1": "OpenCode چ مفت ماڈل شامل نیں تاکہ تسی فوری طور تے شروع کر سکو۔",
"sidebar.gettingStarted.line2": "Claude، GPT، Gemini وغیرہ ماڈل ورتن لئی کوئی وی پرووائیڈر جوڑو۔",
"sidebar.project.recentSessions": "حالیہ سیشن",
"sidebar.project.viewAllSessions": "سارے سیشن ویکھو",
"sidebar.project.clearNotifications": "نوٹیفکیشن صاف کرو",
"sidebar.empty.title": "کوئی پروجیکٹ نئیں کھلیا",
"sidebar.empty.description": "شروع کرن لئی کوئی پروجیکٹ کھولو",
"debugBar.ariaLabel": "ترقی دی کارکردگی دی تشخیص",
"debugBar.na": "لاگو نئیں",
"debugBar.nav.label": "NAV",
"debugBar.nav.tip":
"سیشن دے صفحے نو چھون آلے آخری مکمل روٹ ٹرانزیشن، روٹر دے آغاز توں لے کے اس دے ٹک جان دے بعد پہلے پینٹ تک ماپیا جاندا اے۔",
"debugBar.fps.label": "FPS",
"debugBar.fps.tip": "پچھلے 5 سیکنڈاں چ فی سیکنڈ فریم رولنگ۔",
"debugBar.frame.label": "FRAME",
"debugBar.frame.tip": "پچھلے 5 سیکنڈاں چ بدترین فریم ٹائم۔",
"debugBar.jank.label": "JANK",
"debugBar.jank.tip": "پچھلے 5 سیکنڈ چ 32 ایم ایس توں ودھ فریم۔",
"debugBar.long.label": "LONG",
"debugBar.long.tip": "پچھلے 5 سیکنڈاں چ بلاک کیتا گیا ویلہ تے لمے کماں دی گنتی۔ زیادہ توں زیادہ کم: {{max}}۔",
"debugBar.delay.label": "DELAY",
"debugBar.delay.tip": "پچھلے 5 سیکنڈاں چ بدترین ان پٹ دی تاخیر ویکھی گئی۔",
"debugBar.inp.label": "INP",
"debugBar.inp.tip": "پچھلے 5 سیکنڈاں چ تقریباً تعامل دی مدت۔ ایہ INP ورگا اے، سرکاری Web Vitals INP نئیں۔",
"debugBar.cls.label": "CLS",
"debugBar.cls.tip": "موجودہ ایپ دی زندگی لئی مجموعی ترتیب دی تبدیلی۔",
"debugBar.mem.label": "MEM",
"debugBar.mem.tipUnavailable": "جے ایس ہیپ بمقابلہ ہیپ لیمٹ استعمال کیتا گیا۔ صرف Chromium۔",
"debugBar.mem.tip": "ورتیا JS ہیپ تے ہیپ دی حد۔ {{limit}} وچوں {{used}}۔",
"app.name.desktop": "OpenCode ڈیسک ٹاپ",
"settings.section.desktop": "ڈیسک ٹاپ",
"settings.section.server": "سرور",
"settings.tab.general": "عمومی",
"settings.tab.shortcuts": "شارٹ کٹ",
"settings.desktop.section.wsl": "WSL",
"settings.desktop.wsl.title": "WSL نال جوڑ",
"settings.desktop.wsl.description": "Windows تے WSL دے اندر OpenCode سرور چلاؤ۔",
"settings.general.section.appearance": "دِکھ",
"settings.general.section.advanced": "اَڈوانسڈ",
"settings.general.section.notifications": "سسٹم نوٹیفکیشنز",
"settings.general.section.updates": "اپ ڈیٹس",
"settings.general.section.sounds": "آواز دے اثرات",
"settings.general.section.feed": "فیڈ",
"settings.general.section.display": "ڈسپلے",
"settings.general.row.language.title": "بولی",
"settings.general.row.language.description": "OpenCode لئی ڈسپلے دی بولی بدلو",
"settings.general.row.shell.title": "شیل",
"settings.general.row.shell.description": "Shell ٹرمینل تے ایجنٹ ٹولز دے ذریعہ استعمال کیتا جاندا اے",
"settings.general.row.shell.autoDefault": "آٹو (پہلے توں طے شدہ)",
"settings.general.row.shell.terminalOnly": "صرف ٹرمینل",
"settings.general.row.appearance.title": "دِکھ",
"settings.general.row.appearance.description": "اپنے آلے تے OpenCode کیویں لگدا اے، اپنی مرضی دے مطابق بناؤ",
"settings.general.row.colorScheme.title": "رنگ سکیم",
"settings.general.row.colorScheme.description": "چنو کہ آیا OpenCode سسٹم، لائٹ، یا ڈارک تھیم دی پیروی کردا اے",
"settings.general.row.theme.title": "تھیم",
"settings.general.row.theme.description": "OpenCode نوں کس طرح تھیم کیتا گیا اے، اپنی مرضی دے مطابق بناؤ۔",
"settings.general.row.font.title": "کوڈ فونٹ",
"settings.general.row.font.description": "کوڈ بلاکس وچ استعمال ہون آلے فونٹ نو اپنی مرضی دے مطابق بناؤ",
"settings.general.row.terminalFont.title": "Terminal فونٹ",
"settings.general.row.terminalFont.description": "ٹرمینل وچ استعمال ہون آلے فونٹ نو اپنی مرضی دے مطابق بناؤ",
"settings.general.row.uiFont.title": "یو آئی فونٹ",
"settings.general.row.uiFont.description": "پورے انٹرفیس تے استعمال ہون آلے فونٹ نو اپنی مرضی دے مطابق بناؤ",
"settings.general.row.followup.title": "فالو اپ رویہ",
"settings.general.row.followup.description": "چنو کہ فالو اپ اشارے فوری طور تے چلدے نیں یا قطار چ انتظار کردے نیں",
"settings.general.row.followup.option.queue": "قطار",
"settings.general.row.followup.option.steer": "سٹیئر",
"settings.general.row.showFileTree.title": "فائل ٹری",
"settings.general.row.showFileTree.description": "سیشنز چ فائل ٹری پینل وکھاؤ",
"settings.general.row.showNavigation.title": "نیوی گیشن کنٹرولز",
"settings.general.row.showNavigation.description": "ڈیسک ٹاپ ٹائٹل بار وچ پچھے تے اگے دے بٹن وکھاؤ",
"settings.general.row.showSearch.title": "کمانڈ پیلیٹ",
"settings.general.row.showSearch.description": "ٹائٹل بار وچ سرچ تے کمانڈ پیلیٹ بٹن وکھاؤ",
"settings.general.row.showTerminal.title": "Terminal",
"settings.general.row.showTerminal.description": "ڈیسک ٹاپ ٹائٹل بار وچ ٹرمینل بٹن وکھاؤ",
"settings.general.row.showStatus.title": "سرور دی حیثیت",
"settings.general.row.showStatus.description": "ٹائٹل بار وچ سرور دی حیثیت دا بٹن وکھاؤ",
"settings.general.row.mobileTitlebarBottom.title": "تھلویں نیوی گیشن",
"settings.general.row.mobileTitlebarBottom.description": "موبائل تے سکرین دے تھلے ٹائٹل بار تے سیشن ٹیب رکھو",
"settings.general.row.showCustomAgents.title": "ایجنٹ وکھاؤ",
"settings.general.row.showCustomAgents.description":
"کمپوزر چ ایجنٹاں دے وچکار سوئچ کرو۔ جدوں لُکیا ہوندا اے، تے بلڈ ایجنٹ تے ڈیفالٹ ہوندا اے۔",
"settings.general.row.reasoningSummaries.title": "استدلال دے خلاصے وکھاؤ",
"settings.general.row.reasoningSummaries.description": "ٹائم لائن وچ ماڈل دی استدلال دے خلاصے وکھاؤ",
"settings.general.row.shellToolPartsExpanded.title": "شیل ٹول دے حصیاں نو ودھاؤ",
"settings.general.row.shellToolPartsExpanded.description":
"ٹائم لائن وچ ڈیفالٹ دے طور تے ودھائے گئے شیل ٹول دے حصے وکھاؤ",
"settings.general.row.editToolPartsExpanded.title": "ترمیم دے آلے دے حصیاں نو ودھاؤ",
"settings.general.row.editToolPartsExpanded.description":
"ٹائم لائن وچ ڈیفالٹ دے طور تے ودھائے گئے ترمیم، لکھن تے پیچ ٹول دے حصے وکھاؤ",
"settings.general.row.newInterface.title": "نواں لے آؤٹ",
"settings.general.row.newInterface.badge": "نواں",
"settings.general.row.newInterface.description":
"نویں ٹیبز تے ہوم لے آؤٹ ورتو۔ اک محدود ویلے لئی ترتیب دے وچکار سوئچ کرو۔",
"settings.general.row.newInterfaceNotice.title": "تسی ہن نواں لے آؤٹ ورت رہے او",
"settings.general.row.newInterfaceNotice.description": "پچھلا لے آؤٹ ہن دستیاب نئیں",
"settings.general.row.newInterfaceNotice.dismiss": "برخاست کرو",
"settings.general.row.pinchZoom.title": "زوم کرن لئی چٹکی مارو",
"settings.general.row.pinchZoom.description": "ٹریک پیڈ پنچ تے کنٹرول سکرول اشارے نو زوم کرن دی اجازت دیو",
"settings.general.row.wayland.title": "مقامی Wayland ورتو",
"settings.general.row.wayland.description": "Wayland تے X11 فال بیک نو غیر فعال کرو۔ دوبارہ شروع کرن دی لوڑ اے۔",
"settings.general.row.wayland.tooltip":
"مخلوط ریفریش ریٹ مانیٹراں دے نال Linux تے، مقامی Wayland زیادہ مستحکم ہو سکدا اے۔",
"settings.general.row.releaseNotes.title": "ریلیز نوٹ",
"settings.general.row.releaseNotes.description": "اپ ڈیٹ پچھوں 'نواں کی اے' پاپ اپ وکھاؤ",
"settings.updates.row.startup.title": "شروع ہون تے اپ ڈیٹاں دی پڑتال کرو",
"settings.updates.row.startup.description": "جدوں OpenCode لانچ ہوندا اے تے خودبخود اپ ڈیٹس چیک کرو",
"settings.updates.row.check.title": "اپ ڈیٹس لئی چیک کرو",
"settings.updates.row.check.description": "اپ ڈیٹس لئی دستی طور تے چیک کرو تے جے دستیاب ہووے تے انسٹال کرو",
"settings.updates.action.checkNow": "ہن چیک کرو",
"settings.updates.action.checking": "چیک کر رہیا واں...",
"settings.updates.action.downloading": "ڈاؤن لوڈ کر رہیا اے...",
"settings.updates.action.installing": "انسٹال کر رہیا اے...",
"settings.updates.toast.latest.title": "تسی تازہ ترین او",
"settings.updates.toast.latest.description": "تسی OpenCode دا تازہ ترین ورژن چلا رئے او۔",
"sound.option.none": "کوئی نئیں",
"sound.option.alert01": "Alert 01",
"sound.option.alert02": "Alert 02",
"sound.option.alert03": "Alert 03",
"sound.option.alert04": "Alert 04",
"sound.option.alert05": "Alert 05",
"sound.option.alert06": "Alert 06",
"sound.option.alert07": "Alert 07",
"sound.option.alert08": "Alert 08",
"sound.option.alert09": "Alert 09",
"sound.option.alert10": "Alert 10",
"sound.option.bipbop01": "Bip-bop 01",
"sound.option.bipbop02": "Bip-bop 02",
"sound.option.bipbop03": "Bip-bop 03",
"sound.option.bipbop04": "Bip-bop 04",
"sound.option.bipbop05": "Bip-bop 05",
"sound.option.bipbop06": "Bip-bop 06",
"sound.option.bipbop07": "Bip-bop 07",
"sound.option.bipbop08": "Bip-bop 08",
"sound.option.bipbop09": "Bip-bop 09",
"sound.option.bipbop10": "Bip-bop 10",
"sound.option.staplebops01": "Staplebops 01",
"sound.option.staplebops02": "Staplebops 02",
"sound.option.staplebops03": "Staplebops 03",
"sound.option.staplebops04": "Staplebops 04",
"sound.option.staplebops05": "Staplebops 05",
"sound.option.staplebops06": "Staplebops 06",
"sound.option.staplebops07": "Staplebops 07",
"sound.option.nope01": "Nope 01",
"sound.option.nope02": "Nope 02",
"sound.option.nope03": "Nope 03",
"sound.option.nope04": "Nope 04",
"sound.option.nope05": "Nope 05",
"sound.option.nope06": "Nope 06",
"sound.option.nope07": "Nope 07",
"sound.option.nope08": "Nope 08",
"sound.option.nope09": "Nope 09",
"sound.option.nope10": "Nope 10",
"sound.option.nope11": "Nope 11",
"sound.option.nope12": "Nope 12",
"sound.option.yup01": "Yup 01",
"sound.option.yup02": "Yup 02",
"sound.option.yup03": "Yup 03",
"sound.option.yup04": "Yup 04",
"sound.option.yup05": "Yup 05",
"sound.option.yup06": "Yup 06",
"settings.general.notifications.agent.title": "Agent",
"settings.general.notifications.agent.description":
"جدوں ایجنٹ مکمل ہو جائے یا توجہ دی لوڑ ہووے تے سسٹم نوٹیفکیشن وکھاؤ",
"settings.general.notifications.permissions.title": "اجازتاں",
"settings.general.notifications.permissions.description": "جدوں اجازت دی لوڑ ہووے تے سسٹم نوٹیفکیشن وکھاؤ",
"settings.general.notifications.errors.title": "غلطیاں",
"settings.general.notifications.errors.description": "جدوں کوئی غلطی ہوندی اے تے سسٹم نوٹیفکیشن وکھاؤ",
"settings.general.sounds.agent.title": "Agent",
"settings.general.sounds.agent.description": "جدوں ایجنٹ مکمل ہو جائے یا توجہ دی لوڑ ہووے تے آواز چلاؤ",
"settings.general.sounds.permissions.title": "اجازتاں",
"settings.general.sounds.permissions.description": "جدوں اجازت دی لوڑ ہووے تے آواز چلاؤ",
"settings.general.sounds.errors.title": "غلطیاں",
"settings.general.sounds.errors.description": "جدوں کوئی غلطی ہوندی اے تے آواز چلاؤ",
"settings.shortcuts.title": "کی بورڈ شارٹ کٹ",
"settings.shortcuts.reset.button": "ڈیفالٹ تے ری سیٹ کرو",
"settings.shortcuts.reset.toast.title": "شارٹ کٹس ری سیٹ ہو گئے",
"settings.shortcuts.reset.toast.description": "کی بورڈ دے شارٹ کٹس نو ڈیفالٹ تے ری سیٹ کر دتا گیا اے۔",
"settings.shortcuts.conflict.title": "شارٹ کٹ پہلے ای استعمال چ اے",
"settings.shortcuts.conflict.description": "{{keybind}} پہلے ای {{titles}} نوں تفویض کیتا گیا اے۔",
"settings.shortcuts.unassigned": "غیر تفویض شدہ",
"settings.shortcuts.pressKeys": "کنجیاں دباؤ",
"settings.shortcuts.search.placeholder": "شارٹ کٹ لبھو",
"settings.shortcuts.search.empty": "کوئی شارٹ کٹ نئیں ملیا",
"settings.shortcuts.group.general": "عمومی",
"settings.shortcuts.group.session": "سیشن",
"settings.shortcuts.group.navigation": "نیوی گیشن",
"settings.shortcuts.group.modelAndAgent": "ماڈل تے ایجنٹ",
"settings.shortcuts.group.terminal": "Terminal",
"settings.shortcuts.group.prompt": "پرامپٹ",
"settings.providers.title": "پرووائیڈر",
"settings.providers.description": "پرووائیڈر دیاں سیٹنگاں ایتھے بدلیاں جا سکدیاں نیں۔",
"settings.providers.section.connected": "جڑے ہوئے پرووائیڈر",
"settings.providers.connected.empty": "کوئی پرووائیڈر نئیں جڑیا",
"settings.providers.connected.environmentDescription": "تہاڈے ماحول دے متغیراں توں جڑیا ہویا اے",
"settings.providers.section.popular": "مقبول پرووائیڈر",
"settings.providers.custom.description": "بیس URL نال OpenAI دے نال رلدا پرووائیڈر شامل کرو۔",
"settings.providers.tag.environment": "ماحول",
"settings.providers.tag.config": "ترتیب",
"settings.providers.tag.custom": "مخصوص",
"settings.providers.tag.other": "ہور",
"settings.models.title": "ماڈل",
"settings.models.description": "ماڈل دی ترتیبات ایتھے ترتیب دے قابل ہون گیاں۔",
"settings.agents.title": "ایجنٹاں",
"settings.agents.description": "Agent ترتیبات ایتھے ترتیب دے قابل ہون گیاں۔",
"settings.commands.title": "کمانڈز",
"settings.commands.description": "کمانڈ دی ترتیبات ایتھے ترتیب دے قابل ہون گیاں۔",
"settings.mcp.title": "MCP",
"settings.mcp.description": "MCP ترتیبات ایتھے ترتیب دے قابل ہون گیاں۔",
"settings.permissions.title": "اجازتاں",
"settings.permissions.description": "کنٹرول کرو کہ سرور پہلے توں طے شدہ طور تے کیہڑے اوزار استعمال کر سکدا اے۔",
"settings.permissions.section.tools": "ٹول",
"settings.permissions.toast.updateFailed.title": "اجازتاں نو اپ ڈیٹ کرن اچ ناکام رہیا",
"settings.permissions.action.allow": "اجازت دیو",
"settings.permissions.action.ask": "پُچھو",
"settings.permissions.action.deny": "منع کرو",
"settings.permissions.tool.read.title": "پڑھو",
"settings.permissions.tool.read.description": "فائل پڑھنا (فائل دے راہ نال میل کھاندا اے)",
"settings.permissions.tool.edit.title": "ترمیم",
"settings.permissions.tool.edit.description": "فائلاں وچ ترمیم کرو، بشمول ترمیماں، لکھتاں تے پیچاں",
"settings.permissions.tool.glob.title": "Glob",
"settings.permissions.tool.glob.description": "glob پیٹرناں نال فائلاں دا میل کرو",
"settings.permissions.tool.grep.title": "Grep",
"settings.permissions.tool.grep.description": "ریگولر ایکسپریشنز دا استعمال کردے ہوئے فائل دے مواد نو تلاش کرو",
"settings.permissions.tool.list.title": "فہرست",
"settings.permissions.tool.list.description": "ڈائریکٹری دے اندر فائلاں دی فہرست بناؤ",
"settings.permissions.tool.bash.title": "Bash",
"settings.permissions.tool.bash.description": "شیل کمانڈز چلاؤ",
"settings.permissions.tool.task.title": "کم",
"settings.permissions.tool.task.description": "ذیلی ایجنٹ شروع کرو",
"settings.permissions.tool.skill.title": "Skill",
"settings.permissions.tool.skill.description": "ناں نال اک مہارت لوڈ کرو",
"settings.permissions.tool.lsp.title": "LSP",
"settings.permissions.tool.lsp.description": "بولی دے سرور دے سوالاں نوں چلاؤ",
"settings.permissions.tool.todowrite.title": "ٹوڈو لکھنا",
"settings.permissions.tool.todowrite.description": "ٹوڈو لسٹ نوں اپ ڈیٹ کرو",
"settings.permissions.tool.webfetch.title": "ویب فیچ",
"settings.permissions.tool.webfetch.description": "URL توں مواد لیاو",
"settings.permissions.tool.websearch.title": "Web Search",
"settings.permissions.tool.websearch.description": "ویب تے سرچ کرو",
"settings.permissions.tool.external_directory.title": "باہرلی ڈائریکٹری",
"settings.permissions.tool.external_directory.description":
"پروجیکٹ ڈائریکٹری توں باہر دیاں فائلاں تک رسائی حاصل کرو",
"settings.permissions.tool.doom_loop.title": "ڈوم لوپ",
"settings.permissions.tool.doom_loop.description": "اکو جئے ان پٹ دے نال بار بار ٹول کالاں دا پتہ لاو",
"session.delete.failed.title": "سیشن نو مٹان اچ ناکام رہیا",
"session.delete.title": "سیشن مٹاؤ",
"session.delete.confirm": 'سیشن "{{name}}" نوں مٹا دیو؟',
"session.delete.button": "سیشن مٹاؤ",
"workspace.new": "نویں ورک سپیس",
"workspace.type.local": "مقامی",
"workspace.type.sandbox": "سینڈ باکس",
"workspace.create.failed.title": "ورک سپیس بنان چ ناکامی ہوئی",
"workspace.delete.failed.title": "ورک اسپیس نو مٹان اچ ناکام رہیا",
"workspace.resetting.title": "ورک اسپیس نوں ری سیٹ کرنا",
"workspace.resetting.description": "اس چ اک منٹ لگ سکدا اے۔",
"workspace.reset.failed.title": "ورک سپیس نوں ری سیٹ کرن چ ناکامی ہوئی",
"workspace.reset.success.title": "ورک اسپیس ری سیٹ",
"workspace.reset.success.description": "ورک سپیس ہن ڈیفالٹ برانچ نال میل کھاندا اے۔",
"workspace.error.stillPreparing": "ورک اسپیس ہلے وی تیاری کر رئی اے",
"workspace.status.checking": "غیر ضم شدہ تبدیلیاں دی جانچ پڑتال...",
"workspace.status.error": "Git دی حالت دی پڑتال نئیں ہو سکی۔",
"workspace.status.clean": "کوئی غیر ضم شدہ تبدیلی نئیں لبھی۔",
"workspace.status.dirty": "اس ورک اسپیس وچ غیر ضم شدہ تبدیلیاں دا پتہ چلیا اے۔",
"workspace.delete.title": "ورک اسپیس نو مٹا دیو",
"workspace.delete.confirm": 'ورک اسپیس "{{name}}" نو مٹا دیو؟',
"workspace.delete.button": "ورک اسپیس نو مٹا دیو",
"workspace.reset.title": "ورک اسپیس ری سیٹ کرو",
"workspace.reset.confirm": 'ورک اسپیس "{{name}}" نوں ری سیٹ کرو؟',
"workspace.reset.button": "ورک اسپیس ری سیٹ کرو",
"workspace.reset.archived.none": "کوئی فعال سیشن آرکائیو نئیں کیتا جائے گا۔",
"workspace.reset.archived.one": "1 سیشن آرکائیو کیتا جائے گا۔",
"workspace.reset.archived.many": "{{count}} سیشن آرکائیو کیتے جان گے۔",
"workspace.reset.note": "ایہ ورک اسپیس نو ڈیفالٹ برانچ نال ملاون لئی ری سیٹ کرے گا۔",
}
+84 -5
View File
@@ -18,8 +18,29 @@ const appLocales = [
"tr",
"zh",
"zht",
"hi",
"nl",
"id",
"vi",
"it",
"ur",
"pa",
"az",
"fi",
"sv",
] as const
const desktopLocales = appLocales.filter((locale) => locale !== "th" && locale !== "tr")
const desktopLocales = appLocales
const pluralCategories: Partial<Record<(typeof appLocales)[number], readonly string[]>> = {
ar: ["zero", "two", "few", "many"],
br: ["many"],
bs: ["few"],
es: ["many"],
fr: ["many"],
it: ["many"],
pl: ["few", "many"],
ru: ["few", "many"],
uk: ["few", "many"],
}
const domains = [
{
@@ -43,18 +64,23 @@ const domains = [
] as const
describe.skipIf(!!process.env.CI)("i18n parity", () => {
test("non-English locales have every English key", async () => {
test("non-English locales have every English key and required plural variants", async () => {
for (const domain of domains) {
const source = await dictionary(domain.source)
for (const locale of domain.locales) {
const target = await dictionary(domain.target(locale))
const missing = Object.keys(source).filter((key) => !Object.hasOwn(target, key))
const extra = Object.keys(target).filter((key) => !Object.hasOwn(source, key))
const extra = Object.keys(target)
.filter((key) => !Object.hasOwn(source, key))
.sort()
const expected = pluralFamilies(source)
.flatMap((key) => (pluralCategories[locale] ?? []).map((category) => `${key}.${category}`))
.sort()
expect({ domain: domain.name, locale, missing, extra }).toEqual({
domain: domain.name,
locale,
missing: [],
extra: [],
extra: expected,
})
}
}
@@ -68,7 +94,17 @@ describe.skipIf(!!process.env.CI)("i18n parity", () => {
const mismatched = Object.keys(source).filter(
(key) => Object.hasOwn(target, key) && placeholders(source[key]).join() !== placeholders(target[key]).join(),
)
expect({ domain: domain.name, locale, mismatched }).toEqual({ domain: domain.name, locale, mismatched: [] })
const pluralMismatched = pluralFamilies(source).flatMap((key) =>
(pluralCategories[locale] ?? [])
.map((category) => `${key}.${category}`)
.filter((variant) => placeholders(source[`${key}.other`]).join() !== placeholders(target[variant]).join()),
)
expect({ domain: domain.name, locale, mismatched, pluralMismatched }).toEqual({
domain: domain.name,
locale,
mismatched: [],
pluralMismatched: [],
})
}
}
})
@@ -100,6 +136,38 @@ describe.skipIf(!!process.env.CI)("i18n parity", () => {
})
})
describe("i18n plural parity", () => {
test("locale-specific categories exist and preserve count placeholders", async () => {
for (const domain of domains.slice(0, 2)) {
const source = await dictionary(domain.source)
const families = pluralFamilies(source)
for (const locale of domain.locales) {
const target = await dictionary(domain.target(locale))
const missing = families.flatMap((key) =>
(pluralCategories[locale] ?? [])
.map((category) => `${key}.${category}`)
.filter((variant) => !Object.hasOwn(target, variant)),
)
const mismatched = families.flatMap((key) =>
(pluralCategories[locale] ?? [])
.map((category) => `${key}.${category}`)
.filter(
(variant) =>
Object.hasOwn(target, variant) &&
placeholders(source[`${key}.other`]).join() !== placeholders(target[variant]).join(),
),
)
expect({ domain: domain.name, locale, missing, mismatched }).toEqual({
domain: domain.name,
locale,
missing: [],
mismatched: [],
})
}
}
})
})
async function dictionary(file: string) {
const module: unknown = await import(file)
if (typeof module !== "object" || module === null || !("dict" in module) || !isDictionary(module.dict)) {
@@ -116,3 +184,14 @@ function isDictionary(value: unknown): value is Record<string, string> {
function placeholders(value: string) {
return Array.from(value.matchAll(/{{\s*([^}]+?)\s*}}/g), (match) => match[1]).sort()
}
function pluralFamilies(dictionary: Record<string, string>) {
return Object.keys(dictionary)
.filter(
(key) =>
key.endsWith(".one") &&
dictionary[key].includes("{{count}}") &&
dictionary[`${key.slice(0, -4)}.other`]?.includes("{{count}}"),
)
.map((key) => key.slice(0, -4))
}
+198 -60
View File
@@ -1,4 +1,103 @@
export const dict = {
"desktop.menu.app": "OpenCode",
"desktop.menu.file": "Plik",
"desktop.menu.edit": "Edycja",
"desktop.menu.view": "Widok",
"desktop.menu.go": "Przejdź",
"desktop.menu.window": "Okno",
"desktop.menu.help": "Pomoc",
"desktop.menu.checkForUpdates": "Sprawdź aktualizacje...",
"desktop.menu.settings": "Ustawienia",
"desktop.menu.reloadWebview": "Wczytaj ponownie widok internetowy",
"desktop.menu.restart": "Uruchom ponownie",
"desktop.menu.exportLogs": "Eksportuj dzienniki...",
"desktop.menu.newSession": "Nowa sesja",
"desktop.menu.openProject": "Otwórz projekt...",
"desktop.menu.newWindow": "Nowe okno",
"desktop.menu.closeWindow": "Zamknij okno",
"desktop.menu.undo": "Cofnij",
"desktop.menu.redo": "Ponów",
"desktop.menu.cut": "Wytnij",
"desktop.menu.copy": "Kopiuj",
"desktop.menu.paste": "Wklej",
"desktop.menu.delete": "Usuń",
"desktop.menu.selectAll": "Zaznacz wszystko",
"desktop.menu.toggleSidebar": "Przełącz pasek boczny",
"desktop.menu.toggleTerminal": "Przełącz terminal",
"desktop.menu.toggleFileTree": "Przełącz drzewo plików",
"desktop.menu.reload": "Wczytaj ponownie",
"desktop.menu.toggleDeveloperTools": "Przełącz narzędzia deweloperskie",
"desktop.menu.actualSize": "Rozmiar rzeczywisty",
"desktop.menu.zoomIn": "Powiększ",
"desktop.menu.zoomOut": "Pomniejsz",
"desktop.menu.toggleFullScreen": "Przełącz tryb pełnoekranowy",
"desktop.menu.back": "Wstecz",
"desktop.menu.forward": "Dalej",
"desktop.menu.previousSession": "Poprzednia sesja",
"desktop.menu.nextSession": "Następna sesja",
"desktop.menu.previousProject": "Poprzedni projekt",
"desktop.menu.nextProject": "Następny projekt",
"desktop.menu.minimize": "Minimalizuj",
"desktop.menu.maximize": "Maksymalizuj",
"desktop.menu.documentation": "Dokumentacja OpenCode",
"desktop.menu.supportForum": "Forum pomocy technicznej",
"desktop.menu.shareFeedback": "Prześlij opinię",
"desktop.menu.reportBug": "Zgłoś błąd",
"desktop.menu.ariaLabel": "Menu OpenCode",
"desktop.updater.dialog.checkFailed.message": "Nie udało się sprawdzić dostępności aktualizacji.",
"desktop.updater.dialog.checkFailed.title": "Błąd aktualizacji",
"desktop.updater.dialog.upToDate.message": "Masz najnowszą wersję.",
"desktop.updater.dialog.upToDate.title": "Brak aktualizacji",
"desktop.updater.dialog.ready.message": "Pobrano aktualizację {{version}}. Uruchomić ponownie teraz?",
"desktop.updater.dialog.ready.title": "Aktualizacja jest gotowa",
"desktop.updater.dialog.restart": "Uruchom ponownie",
"desktop.updater.dialog.later": "Później",
"desktop.recovery.action.relaunch": "Uruchom ponownie",
"desktop.recovery.action.exportLogs": "Eksportuj dzienniki",
"desktop.recovery.action.keepWaiting": "Czekaj dalej",
"desktop.recovery.action.quit": "Zakończ",
"desktop.recovery.loadFailed": "Nie udało się wczytać OpenCode",
"desktop.recovery.terminated": "Okno OpenCode zostało nieoczekiwanie zamknięte",
"desktop.recovery.unresponsive": "OpenCode nie odpowiada",
"desktop.recovery.unresponsive.detail": "Możesz ponownie uruchomić aplikację, otworzyć dzienniki lub nadal czekać.",
"desktop.recovery.loadFailed.detail": "Okno: {{window}}\nURL: {{url}}\nBłąd: {{code}} {{description}}",
"desktop.recovery.terminated.detail": "Okno: {{window}}\nPrzyczyna: {{reason}}\nKod: {{code}}",
"desktop.recovery.unknown": "<nieznane>",
"desktop.dialog.chooseFolder": "Wybierz folder",
"desktop.dialog.chooseFile": "Wybierz plik",
"desktop.dialog.saveFile": "Zapisz plik",
"desktop.dialog.files": "Pliki",
"desktop.server.local": "Serwer lokalny",
"desktop.wsl.error.windowsOnly": "WSL jest dostępny tylko w systemie Windows",
"desktop.wsl.error.unavailable": "WSL jest niedostępny",
"desktop.wsl.error.listInstalled": "Nie udało się wyświetlić listy zainstalowanych dystrybucji WSL",
"desktop.wsl.error.listOnline": "Nie udało się wyświetlić listy dystrybucji WSL dostępnych online",
"desktop.wsl.error.executeDistro": "Nie można wykonywać poleceń w dystrybucji",
"desktop.wsl.error.installWsl": "Nie udało się zainstalować WSL",
"desktop.wsl.error.installDistro": "Nie udało się zainstalować dystrybucji: {{distro}}",
"desktop.wsl.error.installOpencode": "Nie udało się zainstalować OpenCode",
"desktop.wsl.error.alreadyAdded": "Dystrybucja {{distro}} została już dodana",
"desktop.wsl.error.opencodeMissing": "Program opencode nie jest zainstalowany w tej dystrybucji",
"desktop.wsl.error.opencodeCannotRun": "Program opencode jest zainstalowany, ale nie można go uruchomić",
"desktop.wsl.error.opencodeNotInstalled": "OpenCode nie jest zainstalowany w dystrybucji {{distro}}",
"desktop.wsl.error.updateVersion":
"Aktualizacja OpenCode została ukończona, ale dystrybucja {{distro}} nadal zgłasza wersję {{installed}}; oczekiwano {{expected}}",
"desktop.wsl.error.noVersion": "brak wersji",
"desktop.wsl.error.serverExited": "Serwer WSL zakończył działanie po uruchomieniu (code={{code}} signal={{signal}})",
"desktop.wsl.error.serverExitedBeforeHealthy":
"Serwer WSL zakończył działanie przed osiągnięciem gotowości (code={{code}} signal={{signal}}){{output}}",
"desktop.wsl.error.healthTimeout":
"Przekroczono limit czasu {{timeout}}ms podczas sprawdzania kondycji procesu sidecar dla dystrybucji {{distro}}",
"desktop.wsl.error.commandTimeout": "Polecenie {{command}} {{args}} przekroczyło limit czasu {{timeout}}ms",
"desktop.wsl.error.failedPort": "Nie udało się uzyskać portu",
"desktop.picker.error.notSelected": "Nie wybrano pliku w oknie wyboru",
"desktop.picker.error.sizeLimit": "Wybrane załączniki przekraczają limit {{limit}} MB",
"command.category.suggested": "Sugerowane",
"command.category.view": "Widok",
"command.category.project": "Projekt",
@@ -16,6 +115,7 @@ export const dict = {
"command.category.permissions": "Uprawnienia",
"command.category.workspace": "Przestrzeń robocza",
"command.category.settings": "Ustawienia",
"command.logs.export": "Eksportuj dzienniki",
"theme.scheme.system": "Systemowy",
"theme.scheme.light": "Jasny",
"theme.scheme.dark": "Ciemny",
@@ -45,7 +145,7 @@ export const dict = {
"command.tab.reopenClosed": "Otwórz ponownie zamkniętą kartę",
"command.context.addSelection": "Dodaj zaznaczenie do kontekstu",
"command.context.addSelection.description": "Dodaj zaznaczone linie z bieżącego pliku",
"command.input.focus": "Fokus na pole wejściowe",
"command.input.focus": "Przejdź do pola wprowadzania",
"command.terminal.toggle": "Przełącz terminal",
"command.fileTree.toggle": "Przełącz drzewo plików",
"command.review.toggle": "Przełącz przegląd",
@@ -82,7 +182,7 @@ export const dict = {
"command.session.fork": "Rozwidlij od wiadomości",
"command.session.fork.description": "Utwórz nową sesję od poprzedniej wiadomości",
"command.session.share": "Udostępnij sesję",
"command.session.share.description": "Udostępnij tę sesję i skopiuj URL do schowka",
"command.session.share.description": "Udostępnij tę sesję i skopiuj adres URL do schowka",
"command.session.unshare": "Przestań udostępniać sesję",
"command.session.unshare.description": "Zatrzymaj udostępnianie tej sesji",
"palette.search.placeholder": "Szukaj plików, poleceń i sesji",
@@ -94,10 +194,11 @@ export const dict = {
"dialog.provider.empty": "Nie znaleziono dostawców",
"dialog.provider.group.popular": "Popularne",
"dialog.provider.group.other": "Inne",
"dialog.provider.custom.label": "Niestandardowy dostawca zgodny z OpenAI",
"dialog.provider.tag.recommended": "Zalecane",
"dialog.provider.opencode.note": "Wyselekcjonowane modele, w tym Claude, GPT, Gemini i inne",
"dialog.provider.opencode.note": "Starannie dobrane modele, w tym Claude, GPT, Gemini i inne",
"dialog.provider.opencode.tagline": "Niezawodne, zoptymalizowane modele",
"dialog.provider.opencodeGo.tagline": "Tania subskrypcja dla każdego",
"dialog.provider.opencodeGo.tagline": "Niedroga subskrypcja dla każdego",
"dialog.provider.anthropic.note": "Bezpośredni dostęp do modeli Claude, w tym Pro i Max",
"dialog.provider.copilot.note": "Modele AI do pomocy w kodowaniu przez GitHub Copilot",
"dialog.provider.openai.note": "Modele GPT do szybkich i wszechstronnych zadań AI",
@@ -106,17 +207,20 @@ export const dict = {
"dialog.provider.vercel.note": "Ujednolicony dostęp do modeli AI z inteligentnym routingiem",
"dialog.model.select.title": "Wybierz model",
"dialog.model.search.placeholder": "Szukaj modeli",
"dialog.model.empty": "Brak wyników modelu",
"dialog.model.empty": "Nie znaleziono modeli",
"dialog.model.manage": "Zarządzaj modelami",
"dialog.model.manage.description": "Dostosuj, które modele pojawiają się w wyborze modelu.",
"dialog.model.manage.provider.toggle": "Przełącz wszystkie modele {{provider}}",
"dialog.model.unpaid.freeModels.title": "Darmowe modele dostarczane przez OpenCode",
"dialog.model.unpaid.addMore.title": "Dodaj więcej modeli od popularnych dostawców",
"dialog.model.unpaid.viewMoreProviders": "Zobacz ponad 70 innych dostawców",
"dialog.provider.viewAll": "Zobacz więcej dostawców",
"provider.connect.title": "Połącz {{provider}}",
"provider.connect.title.anthropicProMax": "Zaloguj się z Claude Pro/Max",
"provider.connect.title.anthropicProMax": "Zaloguj się za pomocą konta Claude Pro/Max",
"provider.connect.selectMethod": "Wybierz metodę logowania dla {{provider}}.",
"provider.connect.method.apiKey": "Klucz API",
"provider.connect.method.browser": "Przeglądarka",
"provider.connect.method.headless": "Bez przeglądarki",
"provider.connect.status.inProgress": "Autoryzacja w toku...",
"provider.connect.status.waiting": "Oczekiwanie na autoryzację...",
"provider.connect.status.failed": "Autoryzacja nie powiodła się: {{error}}",
@@ -126,9 +230,9 @@ export const dict = {
"provider.connect.apiKey.placeholder": "Klucz API",
"provider.connect.apiKey.required": "Klucz API jest wymagany",
"provider.connect.opencodeZen.line1":
"OpenCode Zen daje dostęp do wybranego zestawu niezawodnych, zoptymalizowanych modeli dla agentów kodujących.",
"OpenCode Zen daje dostęp do wybranego zestawu niezawodnych, zoptymalizowanych modeli dla agentów programistycznych.",
"provider.connect.opencodeZen.line2":
"Z jednym kluczem API uzyskasz dostęp do modeli takich jak Claude, GPT, Gemini, GLM i więcej.",
"Za pomocą jednego klucza API uzyskasz dostęp do modeli takich jak Claude, GPT, Gemini i GLM, a także wielu innych.",
"provider.connect.opencodeZen.visit.prefix": "Odwiedź ",
"provider.connect.opencodeZen.visit.link": "opencode.ai/zen",
"provider.connect.opencodeZen.visit.suffix": ", aby odebrać swój klucz API.",
@@ -148,6 +252,7 @@ export const dict = {
"provider.connect.toast.connected.title": "Połączono {{provider}}",
"provider.connect.toast.connected.description": "Modele {{provider}} są teraz dostępne do użycia.",
"provider.custom.title": "Dostawca niestandardowy",
"provider.custom.unavailable": "Niestandardowi dostawcy są niedostępni na tym serwerze",
"provider.custom.description.prefix": "Skonfiguruj dostawcę zgodnego z OpenAI. Zobacz ",
"provider.custom.description.link": "dokumentację konfiguracji dostawcy",
"provider.custom.description.suffix": ".",
@@ -156,7 +261,7 @@ export const dict = {
"provider.custom.field.providerID.description": "Małe litery, cyfry, łączniki lub podkreślenia",
"provider.custom.field.name.label": "Nazwa wyświetlana",
"provider.custom.field.name.placeholder": "Mój Dostawca AI",
"provider.custom.field.baseURL.label": "Bazowy URL",
"provider.custom.field.baseURL.label": "Bazowy adres URL",
"provider.custom.field.baseURL.placeholder": "https://api.mojdostawca.com/v1",
"provider.custom.field.apiKey.label": "Klucz API",
"provider.custom.field.apiKey.placeholder": "Klucz API",
@@ -180,7 +285,7 @@ export const dict = {
"provider.custom.error.providerID.format": "Używaj małych liter, cyfr, łączników lub podkreśleń",
"provider.custom.error.providerID.exists": "To ID dostawcy już istnieje",
"provider.custom.error.name.required": "Nazwa wyświetlana jest wymagana",
"provider.custom.error.baseURL.required": "Bazowy URL jest wymagany",
"provider.custom.error.baseURL.required": "Bazowy adres URL jest wymagany",
"provider.custom.error.baseURL.format": "Musi zaczynać się od http:// lub https://",
"provider.custom.error.required": "Wymagane",
"provider.custom.error.duplicate": "Duplikat",
@@ -216,7 +321,7 @@ export const dict = {
"common.clear": "Wyczyść",
"common.connect": "Połącz",
"common.disconnect": "Rozłącz",
"common.continue": "Prześlij",
"common.continue": "Kontynuuj",
"common.submit": "Prześlij",
"common.save": "Zapisz",
"common.saving": "Zapisywanie...",
@@ -229,46 +334,46 @@ export const dict = {
"prompt.placeholder.summarizeComment": "Podsumuj komentarz…",
"prompt.mode.shell": "Terminal",
"prompt.mode.normal": "Prompt",
"prompt.mode.shell.exit": "esc aby wyjść",
"prompt.mode.shell.exit": "Naciśnij Esc, aby wyjść",
"session.child.promptDisabled": "Nie można wysyłać promptów w sesjach podagentów.",
"session.child.backToParent": "Wróć do głównej sesji.",
"prompt.example.1": "Napraw TODO w bazie kodu",
"prompt.example.2": "Jaki jest stos technologiczny tego projektu?",
"prompt.example.3": "Napraw zepsute testy",
"prompt.example.4": "Wyjaśnij jak działa uwierzytelnianie",
"prompt.example.4": "Wyjaśnij, jak działa uwierzytelnianie",
"prompt.example.5": "Znajdź i napraw luki w zabezpieczeniach",
"prompt.example.6": "Dodaj testy jednostkowe dla serwisu użytkownika",
"prompt.example.7": "Zrefaktoryzuj tę funkcję, aby była bardziej czytelna",
"prompt.example.8": "Co oznacza ten błąd?",
"prompt.example.9": "Pomóż mi zdebugować ten problem",
"prompt.example.9": "Pomóż mi zdiagnozować ten problem",
"prompt.example.10": "Wygeneruj dokumentację API",
"prompt.example.11": "Zoptymalizuj zapytania do bazy danych",
"prompt.example.12": "Dodaj walidację danych wejściowych",
"prompt.example.13": "Utwórz nowy komponent dla...",
"prompt.example.14": "Jak wdrożyć ten projekt?",
"prompt.example.15": "Sprawdź mój kod pod kątem najlepszych praktyk",
"prompt.example.16": "Dodaj obsługę błędów do tej funkcję",
"prompt.example.16": "Dodaj obsługę błędów do tej funkcji",
"prompt.example.17": "Wyjaśnij ten wzorzec regex",
"prompt.example.18": "Przekonwertuj to na TypeScript",
"prompt.example.19": "Dodaj logowanie w całej bazie kodu",
"prompt.example.20": "Które zależności są przestarzałe?",
"prompt.example.21": "Pomóż mi napisać skrypt migracyjny",
"prompt.example.22": "Zaimplementuj cachowanie dla tego punktu końcowego",
"prompt.example.22": "Zaimplementuj buforowanie dla tego punktu końcowego",
"prompt.example.23": "Dodaj stronicowanie do tej listy",
"prompt.example.24": "Utwórz polecenie CLI dla...",
"prompt.example.25": "Jak działają tutaj zmienne środowiskowe?",
"prompt.popover.emptyResults": "Brak pasujących wyników",
"prompt.popover.emptyCommands": "Brak pasujących poleceń",
"prompt.dropzone.label": "Upuść tutaj obrazy, pliki PDF lub pliki tekstowe",
"prompt.dropzone.file.label": "Upuść, aby @wspomnieć plik",
"prompt.dropzone.file.label": "Upuść, aby oznaczyć plik za pomocą @",
"prompt.slash.badge.custom": "własne",
"prompt.slash.badge.skill": "skill",
"prompt.slash.badge.skill": "umiejętność",
"prompt.slash.badge.mcp": "mcp",
"prompt.context.active": "aktywny",
"prompt.context.includeActiveFile": "Dołącz aktywny plik",
"prompt.context.removeActiveFile": "Usuń aktywny plik z kontekstu",
"prompt.context.removeFile": "Usuń plik z kontekstu",
"prompt.action.attachFile": "Załącz plik",
"prompt.action.attachFile": "Dodaj pliki",
"prompt.menu.addImagesAndFiles": "Dodaj pliki i inne elementy",
"prompt.menu.imagesAndFiles": "Obrazy i pliki",
"prompt.menu.commands": "Polecenia",
@@ -289,12 +394,12 @@ export const dict = {
"prompt.toast.promptSendFailed.title": "Nie udało się wysłać zapytania",
"prompt.toast.promptSendFailed.description": "Nie udało się pobrać sesji",
"dialog.mcp.title": "MCP",
"dialog.mcp.description": "{{enabled}} z {{total}} włączone",
"dialog.mcp.description": "Włączone: {{enabled}} z {{total}}",
"dialog.mcp.empty": "Brak skonfigurowanych MCP",
"dialog.lsp.empty": "LSP wykryte automatycznie na podstawie typów plików",
"dialog.plugins.empty": "Wtyczki skonfigurowane w opencode.json",
"dialog.lsp.empty": "Serwery LSP wykrywane automatycznie na podstawie typów plików",
"dialog.plugins.empty": "Wtyczki skonfigurowane w pliku opencode.json",
"mcp.status.connected": "połączono",
"mcp.status.failed": "niepowodzenie",
"mcp.status.failed": "błąd",
"mcp.status.needs_auth": "wymaga autoryzacji",
"mcp.auth.clickToAuthenticate": "Kliknij, aby się uwierzytelnić",
"mcp.status.disabled": "wyłączone",
@@ -304,14 +409,14 @@ export const dict = {
"dialog.directory.action.selectFile": "Wybierz plik",
"dialog.directory.action.selectFolder": "Wybierz folder",
"dialog.directory.root": "Katalog główny",
"dialog.directory.parent": "Nadrzędny",
"dialog.directory.parent": "Folder nadrzędny",
"dialog.directory.readError": "Nie można odczytać tego folderu",
"dialog.server.title": "Serwery",
"dialog.server.description": "Przełącz serwer OpenCode, z którym łączy się ta aplikacja.",
"dialog.server.search.placeholder": "Szukaj serwerów",
"dialog.server.empty": "Brak serwerów",
"dialog.server.add.title": "Dodaj serwer",
"dialog.server.add.url": "URL serwera",
"dialog.server.add.url": "Adres URL serwera",
"dialog.server.add.placeholder": "http://localhost:4096",
"dialog.server.add.error": "Nie można połączyć się z serwerem",
"dialog.server.add.checking": "Sprawdzanie...",
@@ -323,7 +428,7 @@ export const dict = {
"dialog.server.edit.title": "Edytuj serwer",
"dialog.server.default.title": "Domyślny serwer",
"dialog.server.default.description":
"Połącz z tym serwerem przy uruchomieniu aplikacji zamiast uruchamiać lokalny serwer. Wymaga restartu.",
"Łącz się z tym serwerem przy uruchamianiu aplikacji zamiast uruchamiać serwer lokalny. Wymaga ponownego uruchomienia.",
"dialog.server.default.none": "Nie wybrano serwera",
"dialog.server.default.set": "Ustaw bieżący serwer jako domyślny",
"dialog.server.default.clear": "Wyczyść",
@@ -332,7 +437,7 @@ export const dict = {
"dialog.server.menu.default": "Ustaw jako domyślny",
"dialog.server.menu.defaultRemove": "Usuń domyślny",
"dialog.server.menu.delete": "Usuń",
"dialog.server.current": "Obecny serwer",
"dialog.server.current": "Bieżący serwer",
"dialog.server.status.default": "Domyślny",
"wsl.server.add": "Dodaj serwer WSL",
"wsl.server.addShort": "Dodaj WSL",
@@ -373,7 +478,7 @@ export const dict = {
"wsl.onboarding.distroStatus.ready": "Gotowa",
"wsl.onboarding.distroStatus.checking": "Sprawdzanie...",
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode nie jest zainstalowany",
"wsl.onboarding.distroStatus.missingTools": "Brak bash i curl",
"wsl.onboarding.distroStatus.missingTools": "Brak narzędzi bash i curl",
"wsl.onboarding.distroStatus.unsupported": "Nieobsługiwana · Użyj WSL 2",
"wsl.onboarding.needAnotherDistro": "Potrzebujesz innej dystrybucji?",
"wsl.onboarding.needAnotherDistroHint": "Zainstaluj dystrybucję systemu Linux z katalogu WSL",
@@ -394,7 +499,7 @@ export const dict = {
"wsl.onboarding.installDistro": "Zainstaluj dystrybucję",
"wsl.onboarding.searchDistros": "Szukaj dystrybucji",
"wsl.onboarding.wsl2Required": "Wymagany jest WSL 2.",
"wsl.onboarding.toolsRequired": "Ta dystrybucja wymaga bash i curl.",
"wsl.onboarding.toolsRequired": "Ta dystrybucja wymaga narzędzi bash i curl.",
"wsl.onboarding.openTerminal": "Otwórz terminal",
"wsl.onboarding.path": "Ścieżka: {{path}}",
"wsl.onboarding.notFound": "nie znaleziono",
@@ -403,12 +508,27 @@ export const dict = {
"wsl.onboarding.desktopVersion": "aplikacja komputerowa {{version}}",
"wsl.onboarding.versionMismatch": "Zainstalowana wersja nie jest zgodna z wersją aplikacji komputerowej.",
"wsl.onboarding.adding": "Dodawanie...",
"help.tabs.toast.ariaLabel": "Przedstawiamy karty. Organizuj pracę i aktywne sesje za pomocą kart",
"help.tabs.toast.dismiss": "Odrzuć informacje o kartach",
"help.tabs.title": "Przedstawiamy karty",
"help.tabs.description": "Organizuj pracę i aktywne sesje za pomocą kart",
"help.tabs.date": "14 lipca",
"help.tabs.introduction": "OpenCode Desktop korzysta teraz z układu opartego na kartach.",
"help.tabs.sessions":
"Rozpocznij nową sesję na karcie lub otwórz istniejącą sesję z dowolnego projektu. Otwórz nową kartę, gdy zaczynasz coś nowego, i zamknij ją po zakończeniu.",
"help.tabs.organize":
"Kilka otwartych kart ułatwia organizowanie aktywnych sesji. Jeśli chcesz zachować karty na dłużej, nadaj im łatwe do zapamiętania nazwy.",
"help.tabs.home":
"Wszystkie sesje i projekty znajdziesz na nowym ekranie głównym. Wybranie sesji powoduje otwarcie jej na karcie.",
"help.tabs.persistence": "Po ponownym otwarciu aplikacji karty pozostają otwarte.",
"help.tabs.worktrees":
"Nowy układ nie obsługuje jeszcze drzew roboczych Git, ale ta funkcja pojawi się wkrótce. Jeśli wolisz nadal korzystać z poprzedniego układu, możesz przełączać układy w Ustawieniach. Pamiętaj jednak, że za kilka tygodni nowy układ stanie się jedynym dostępnym.",
"dialog.project.edit.title": "Edytuj projekt",
"dialog.project.edit.name": "Nazwa",
"dialog.project.edit.icon": "Ikona",
"dialog.project.edit.icon.alt": "Ikona projektu",
"dialog.project.edit.icon.hint": "Kliknij lub przeciągnij obraz",
"dialog.project.edit.icon.recommended": "Zalecane: 128x128px",
"dialog.project.edit.icon.hint": "Kliknij, aby wybrać obraz, lub przeciągnij go tutaj",
"dialog.project.edit.icon.recommended": "Zalecane: 128 × 128 px",
"dialog.project.edit.color": "Kolor",
"dialog.project.edit.color.select": "Wybierz kolor {{color}}",
"dialog.project.edit.worktree.startup": "Skrypt uruchamiania przestrzeni roboczej",
@@ -468,9 +588,9 @@ export const dict = {
"toast.theme.title": "Przełączono motyw",
"toast.scheme.title": "Schemat kolorów",
"toast.workspace.enabled.title": "Przestrzenie robocze włączone",
"toast.workspace.enabled.description": "Kilka worktree jest teraz wyświetlanych na pasku bocznym",
"toast.workspace.enabled.description": "Kilka drzew roboczych jest teraz wyświetlanych na pasku bocznym",
"toast.workspace.disabled.title": "Przestrzenie robocze wyłączone",
"toast.workspace.disabled.description": "Tylko główny worktree jest wyświetlany na pasku bocznym",
"toast.workspace.disabled.description": "Tylko główne drzewo robocze jest wyświetlane na pasku bocznym",
"toast.permissions.autoaccept.on.title": "Automatyczne akceptowanie uprawnień",
"toast.permissions.autoaccept.on.description": "Żądania uprawnień będą automatycznie zatwierdzane",
"toast.permissions.autoaccept.off.title": "Zatrzymano automatyczne akceptowanie uprawnień",
@@ -481,9 +601,9 @@ export const dict = {
"toast.file.listFailed.title": "Nie udało się wyświetlić listy plików",
"toast.context.noLineSelection.title": "Brak zaznaczenia linii",
"toast.context.noLineSelection.description": "Najpierw wybierz zakres linii w zakładce pliku.",
"toast.session.share.copyFailed.title": "Nie udało się skopiować URL do schowka",
"toast.session.share.copyFailed.title": "Nie udało się skopiować adresu URL do schowka",
"toast.session.share.success.title": "Sesja udostępniona",
"toast.session.share.success.description": "Link udostępniania skopiowany do schowka!",
"toast.session.share.success.description": "Adres URL udostępnionej sesji skopiowano do schowka!",
"toast.session.share.failed.title": "Nie udało się udostępnić sesji",
"toast.session.share.failed.description": "Wystąpił błąd podczas udostępniania sesji",
"toast.session.unshare.success.title": "Zatrzymano udostępnianie sesji",
@@ -493,13 +613,13 @@ export const dict = {
"toast.session.listFailed.title": "Nie udało się załadować sesji dla {{project}}",
"toast.update.title": "Dostępna aktualizacja",
"toast.update.description": "Nowa wersja OpenCode ({{version}}) jest teraz dostępna do instalacji.",
"toast.update.action.installRestart": "Zainstaluj i zrestartuj",
"toast.update.action.installRestart": "Zainstaluj i uruchom ponownie",
"toast.update.action.notYet": "Jeszcze nie",
"error.page.title": "Coś poszło nie tak",
"error.page.description": "Wystąpił błąd podczas ładowania aplikacji.",
"error.page.description.localServerStartup": "Wystąpił błąd podczas uruchamiania serwera lokalnego.",
"error.page.details.label": "Szczegóły błędu",
"error.page.action.restart": "Restartuj",
"error.page.action.restart": "Uruchom ponownie",
"error.page.action.report": "Zgłoś błąd",
"error.page.action.reported": "Błąd zgłoszony",
"error.page.action.exportLogs": "Eksportuj dzienniki",
@@ -512,7 +632,7 @@ export const dict = {
"error.dev.rootNotFound":
"Nie znaleziono elementu głównego. Czy zapomniałeś dodać go do swojego index.html? A może atrybut id został błędnie wpisany?",
"error.serverSync.connectFailed": "Nie można połączyć się z serwerem. Czy serwer działa pod adresem `{{url}}`?",
"directory.error.invalidUrl": "Nieprawidłowy katalog w URL.",
"directory.error.invalidUrl": "Nieprawidłowy katalog w adresie URL.",
"error.chain.unknown": "Nieznany błąd",
"error.chain.causedBy": "Spowodowany przez:",
"error.chain.apiError": "Błąd API",
@@ -521,7 +641,7 @@ export const dict = {
"error.chain.responseBody": "Treść odpowiedzi:\n{{body}}",
"error.chain.didYouMean": "Czy miałeś na myśli: {{suggestions}}",
"error.chain.modelNotFound": "Model nie znaleziony: {{provider}}/{{model}}",
"error.chain.checkConfig": "Sprawdź swoją konfigurację (opencode.json) nazwy dostawców/modeli",
"error.chain.checkConfig": "Sprawdź nazwy dostawców i modeli w konfiguracji (opencode.json)",
"error.chain.mcpFailed":
"Serwer MCP „{{name}}” nie uruchomił się. Uwaga: OpenCode nie obsługuje jeszcze uwierzytelniania MCP.",
"error.chain.providerAuthFailed": "Uwierzytelnianie dostawcy nie powiodło się ({{provider}}): {{message}}",
@@ -576,7 +696,7 @@ export const dict = {
"session.review.change.other": "Zmiany",
"session.review.loadingChanges": "Ładowanie zmian...",
"session.review.empty": "Brak zmian w tej sesji",
"session.review.noVcs": "Nie wykryto systemu kontroli wersji Git, zmiany nie są wyświetlane",
"session.review.noVcs": "Nie wykryto systemu kontroli wersji Git, dlatego zmiany nie są wyświetlane",
"session.review.noSnapshot": "Śledzenie migawek jest wyłączone w konfiguracji, więc zmiany w sesji są niedostępne",
"session.review.noChanges": "Brak zmian",
"session.review.noUncommittedChanges": "Brak jeszcze niezatwierdzonych zmian",
@@ -597,14 +717,20 @@ export const dict = {
"session.question.minimize": "Zminimalizuj pytanie",
"session.question.restore": "Przywróć pytanie",
"session.question.pending.one": "{{count}} oczekujące pytanie",
"session.question.pending.few": "{{count}} oczekujące pytania",
"session.question.pending.many": "{{count}} oczekujących pytań",
"session.question.pending.other": "Pytania oczekujące: {{count}}",
"session.followupDock.summary.one": "{{count}} wiadomość w kolejce",
"session.followupDock.summary.few": "{{count}} wiadomości w kolejce",
"session.followupDock.summary.many": "{{count}} wiadomości w kolejce",
"session.followupDock.summary.other": "{{count}} wiadomości w kolejce",
"session.followupDock.sendNow": "Wyślij teraz",
"session.followupDock.edit": "Edytuj",
"session.followupDock.collapse": "Zwiń wiadomości w kolejce",
"session.followupDock.expand": "Rozwiń wiadomości w kolejce",
"session.revertDock.summary.one": "{{count}} cofnięta wiadomość",
"session.revertDock.summary.few": "{{count}} cofnięte wiadomości",
"session.revertDock.summary.many": "{{count}} cofniętych wiadomości",
"session.revertDock.summary.other": "{{count}} cofnięte wiadomości",
"session.revertDock.collapse": "Zwiń cofnięte wiadomości",
"session.revertDock.expand": "Rozwiń cofnięte wiadomości",
@@ -646,7 +772,7 @@ export const dict = {
"session.share.action.publishing": "Publikowanie...",
"session.share.action.unpublish": "Cofnij publikację",
"session.share.action.unpublishing": "Cofanie publikacji...",
"session.share.action.view": "Widok",
"session.share.action.view": "Wyświetl",
"session.share.copy.copied": "Skopiowano",
"session.share.copy.copyLink": "Kopiuj link",
"lsp.tooltip.none": "Brak serwerów LSP",
@@ -658,7 +784,13 @@ export const dict = {
"terminal.close": "Zamknij terminal",
"terminal.connectionLost.title": "Utracono połączenie",
"terminal.connectionLost.description":
"Połączenie z terminalem zostało przerwane. Może się to zdarzyć przy restarcie serwera.",
"Połączenie z terminalem zostało przerwane. Może się to zdarzyć podczas ponownego uruchamiania serwera.",
"terminal.connectTicket.csrfError":
"Bilet połączenia PTY został odrzucony podczas kontroli źródła lub CSRF. Sprawdź konfigurację CORS serwera.",
"terminal.connectTicket.statusError": "Bilet połączenia PTY zakończył się niepowodzeniem ze statusem {{status}}",
"titlebar.update": "Aktualizuj",
"titlebar.updateVersion": "Aktualizuj {{version}}",
"common.closeTab": "Zamknij kartę",
"common.dismiss": "Odrzuć",
"common.requestFailed": "Żądanie nie powiodło się",
@@ -687,7 +819,7 @@ export const dict = {
"sidebar.empty.title": "Brak otwartych projektów",
"sidebar.empty.description": "Otwórz projekt, aby rozpocząć",
"app.name.desktop": "OpenCode Desktop",
"settings.section.desktop": "Pulpit",
"settings.section.desktop": "Aplikacja komputerowa",
"settings.section.server": "Serwer",
"settings.tab.general": "Ogólne",
"settings.tab.shortcuts": "Skróty",
@@ -739,8 +871,9 @@ export const dict = {
"settings.general.row.mobileTitlebarBottom.title": "Dolna nawigacja",
"settings.general.row.mobileTitlebarBottom.description":
"Umieść pasek tytułu i karty sesji u dołu ekranu na urządzeniach mobilnych",
"settings.general.row.showCustomAgents.title": "Agenci niestandardowi",
"settings.general.row.showCustomAgents.description": "Pokaż wybór agenta w edytorze wiadomości",
"settings.general.row.showCustomAgents.title": "Wybór agenta",
"settings.general.row.showCustomAgents.description":
"Umożliwiaj przełączanie agentów w edytorze wiadomości. Po ukryciu domyślnie używany jest agent Build.",
"settings.general.row.reasoningSummaries.title": "Pokaż podsumowania wnioskowania",
"settings.general.row.reasoningSummaries.description": "Wyświetlaj podsumowania wnioskowania modelu na osi czasu",
"settings.general.row.shellToolPartsExpanded.title": "Rozwijaj elementy narzędzia shell",
@@ -758,13 +891,14 @@ export const dict = {
"settings.general.row.newInterfaceNotice.dismiss": "Odrzuć",
"settings.general.row.pinchZoom.title": "Powiększanie gestem szczypania",
"settings.general.row.pinchZoom.description":
"Zezwalaj na powiększanie gestem szczypania na gładziku i przewijaniem z klawiszem Ctrl",
"settings.general.row.wayland.title": "Użyj natywnego Wayland",
"settings.general.row.wayland.description": "Wyłącz fallback X11 na Wayland. Wymaga restartu.",
"Zezwalaj na powiększanie gestem szczypania na gładziku lub przez przewijanie z wciśniętym klawiszem Ctrl",
"settings.general.row.wayland.title": "Użyj natywnego protokołu Wayland",
"settings.general.row.wayland.description":
"Wyłącz awaryjne korzystanie z X11 w środowisku Wayland. Wymaga ponownego uruchomienia.",
"settings.general.row.wayland.tooltip":
"Na Linuxie z monitorami o różnym odświeżaniu, natywny Wayland może być bardziej stabilny.",
"W systemie Linux z monitorami o różnej częstotliwości odświeżania natywny protokół Wayland może być stabilniejszy.",
"settings.general.row.releaseNotes.title": "Informacje o wydaniu",
"settings.general.row.releaseNotes.description": 'Pokazuj wyskakujące okna "Co nowego" po aktualizacjach',
"settings.general.row.releaseNotes.description": "Pokazuj wyskakujące okna Co nowego po aktualizacjach",
"settings.updates.row.startup.title": "Sprawdzaj aktualizacje przy uruchomieniu",
"settings.updates.row.startup.description": "Automatycznie sprawdzaj aktualizacje podczas uruchamiania OpenCode",
"settings.updates.row.check.title": "Sprawdź aktualizacje",
@@ -878,7 +1012,8 @@ export const dict = {
"settings.permissions.tool.read.title": "Odczyt",
"settings.permissions.tool.read.description": "Odczyt pliku (pasuje do ścieżki pliku)",
"settings.permissions.tool.edit.title": "Edycja",
"settings.permissions.tool.edit.description": "Modyfikacja plików, w tym edycje, zapisy, łatki i multi-edycje",
"settings.permissions.tool.edit.description":
"Modyfikowanie plików, w tym edytowanie, zapisywanie, stosowanie łatek i edytowanie wielu plików",
"settings.permissions.tool.glob.title": "Glob",
"settings.permissions.tool.glob.description": "Dopasowywanie plików za pomocą wzorców glob",
"settings.permissions.tool.grep.title": "Grep",
@@ -888,7 +1023,7 @@ export const dict = {
"settings.permissions.tool.bash.title": "Bash",
"settings.permissions.tool.bash.description": "Uruchamianie poleceń powłoki",
"settings.permissions.tool.task.title": "Zadanie",
"settings.permissions.tool.task.description": "Uruchamianie pod-agentów",
"settings.permissions.tool.task.description": "Uruchamianie podagentów",
"settings.permissions.tool.skill.title": "Umiejętność",
"settings.permissions.tool.skill.description": "Ładowanie umiejętności według nazwy",
"settings.permissions.tool.lsp.title": "LSP",
@@ -919,7 +1054,7 @@ export const dict = {
"workspace.reset.success.description": "Przestrzeń robocza odpowiada teraz domyślnej gałęzi.",
"workspace.error.stillPreparing": "Przestrzeń robocza jest wciąż przygotowywana",
"workspace.status.checking": "Sprawdzanie niezscalonych zmian...",
"workspace.status.error": "Nie można zweryfikować statusu git.",
"workspace.status.error": "Nie można zweryfikować statusu Git.",
"workspace.status.clean": "Nie wykryto niezscalonych zmian.",
"workspace.status.dirty": "Wykryto niezscalone zmiany w tej przestrzeni roboczej.",
"workspace.delete.title": "Usuń przestrzeń roboczą",
@@ -945,7 +1080,7 @@ export const dict = {
"common.time.hoursAgo.short": "{{count}} godz. temu",
"common.time.daysAgo.short": "{{count}} dni temu",
"settings.providers.connected.environmentDescription": "Połączono ze zmiennymi środowiskowymi",
"settings.providers.custom.description": "Dodaj dostawcę zgodnego z OpenAI poprzez podstawowy URL.",
"settings.providers.custom.description": "Dodaj dostawcę zgodnego z OpenAI za pomocą bazowego adresu URL.",
"app.server.unreachable": "Nie można połączyć z {{server}}",
"app.server.retrying": "Ponawianie automatycznie...",
@@ -961,6 +1096,9 @@ export const dict = {
"session.question.progress": "{{current}} z {{total}} pytań",
"session.header.open.finder": "Finder",
"session.header.open.fileExplorer": "Eksplorator plików",
"session.header.reveal.finder": "Pokaż w Finderze",
"session.header.reveal.fileExplorer": "Pokaż w Eksploratorze plików",
"session.header.reveal.containingFolder": "Otwórz folder zawierający",
"session.header.open.fileManager": "Menedżer plików",
"session.header.open.app.vscode": "VS Code",
"session.header.open.app.cursor": "Cursor",
@@ -975,17 +1113,17 @@ export const dict = {
"session.header.open.app.androidStudio": "Android Studio",
"session.header.open.app.powershell": "PowerShell",
"session.header.open.app.sublimeText": "Sublime Text",
"debugBar.ariaLabel": "Diagnostyka wydajności deweloperskiej",
"debugBar.ariaLabel": "Diagnostyka wydajności w środowisku deweloperskim",
"debugBar.na": "n.d.",
"debugBar.nav.label": "NAV",
"debugBar.nav.tip":
"Ostatnie zakończone przejście trasy dotykające strony sesji, mierzone od startu routera do pierwszego odrysowania po ustaleniu.",
"Ostatnie zakończone przejście między trasami obejmujące stronę sesji, mierzone od uruchomienia routera do pierwszego odrysowania po ustabilizowaniu widoku.",
"debugBar.fps.label": "FPS",
"debugBar.fps.tip": "Średnia liczba klatek na sekundę w ciągu ostatnich 5 sekund.",
"debugBar.frame.label": "FRAME",
"debugBar.frame.tip": "Najgorszy czas klatki w ciągu ostatnich 5 sekund.",
"debugBar.jank.label": "JANK",
"debugBar.jank.tip": "Klatki powyżej 32ms w ciągu ostatnich 5 sekund.",
"debugBar.jank.tip": "Klatki powyżej 32 ms w ciągu ostatnich 5 sekund.",
"debugBar.long.label": "LONG",
"debugBar.long.tip":
"Zablokowany czas i liczba długich zadań w ciągu ostatnich 5 sekund. Maksymalne zadanie: {{max}}.",
@@ -995,10 +1133,10 @@ export const dict = {
"debugBar.inp.tip":
"Przybliżony czas trwania interakcji w ciągu ostatnich 5 sekund. Jest to podobne do INP, a nie oficjalne Web Vitals INP.",
"debugBar.cls.label": "CLS",
"debugBar.cls.tip": "Skumulowane przesunięcie układu dla bieżącego czasu życia aplikacji.",
"debugBar.cls.tip": "Skumulowane przesunięcie układu od bieżącego uruchomienia aplikacji.",
"debugBar.mem.label": "MEM",
"debugBar.mem.tipUnavailable": "Użyta sterta JS vs limit sterty. Tylko Chromium.",
"debugBar.mem.tip": "Użyta sterta JS vs limit sterty. {{used}} z {{limit}}.",
"debugBar.mem.tipUnavailable": "Wykorzystana pamięć sterty JS względem jej limitu. Tylko Chromium.",
"debugBar.mem.tip": "Wykorzystana pamięć sterty JS względem jej limitu: {{used}} z {{limit}}.",
"common.key.ctrl": "Ctrl",
"common.key.alt": "Alt",
"common.key.shift": "Shift",
+218 -81
View File
@@ -1,4 +1,103 @@
export const dict = {
"desktop.menu.app": "OpenCode",
"desktop.menu.file": "Файл",
"desktop.menu.edit": "Правка",
"desktop.menu.view": "Вид",
"desktop.menu.go": "Переход",
"desktop.menu.window": "Окно",
"desktop.menu.help": "Справка",
"desktop.menu.checkForUpdates": "Проверить наличие обновлений...",
"desktop.menu.settings": "Настройки",
"desktop.menu.reloadWebview": "Перезагрузить веб-представление",
"desktop.menu.restart": "Перезапустить",
"desktop.menu.exportLogs": "Экспортировать журналы...",
"desktop.menu.newSession": "Новая сессия",
"desktop.menu.openProject": "Открыть проект...",
"desktop.menu.newWindow": "Новое окно",
"desktop.menu.closeWindow": "Закрыть окно",
"desktop.menu.undo": "Отменить",
"desktop.menu.redo": "Повторить",
"desktop.menu.cut": "Вырезать",
"desktop.menu.copy": "Копировать",
"desktop.menu.paste": "Вставить",
"desktop.menu.delete": "Удалить",
"desktop.menu.selectAll": "Выбрать всё",
"desktop.menu.toggleSidebar": "Переключить боковую панель",
"desktop.menu.toggleTerminal": "Переключить терминал",
"desktop.menu.toggleFileTree": "Переключить дерево файлов",
"desktop.menu.reload": "Перезагрузить",
"desktop.menu.toggleDeveloperTools": "Переключить инструменты разработчика",
"desktop.menu.actualSize": "Фактический размер",
"desktop.menu.zoomIn": "Увеличить",
"desktop.menu.zoomOut": "Уменьшить",
"desktop.menu.toggleFullScreen": "Переключить полноэкранный режим",
"desktop.menu.back": "Назад",
"desktop.menu.forward": "Вперёд",
"desktop.menu.previousSession": "Предыдущая сессия",
"desktop.menu.nextSession": "Следующая сессия",
"desktop.menu.previousProject": "Предыдущий проект",
"desktop.menu.nextProject": "Следующий проект",
"desktop.menu.minimize": "Свернуть",
"desktop.menu.maximize": "Развернуть",
"desktop.menu.documentation": "Документация OpenCode",
"desktop.menu.supportForum": "Форум поддержки",
"desktop.menu.shareFeedback": "Отправить отзыв",
"desktop.menu.reportBug": "Сообщить об ошибке",
"desktop.menu.ariaLabel": "Меню OpenCode",
"desktop.updater.dialog.checkFailed.message": "Не удалось проверить наличие обновлений.",
"desktop.updater.dialog.checkFailed.title": "Ошибка обновления",
"desktop.updater.dialog.upToDate.message": "У вас установлена последняя версия.",
"desktop.updater.dialog.upToDate.title": "Обновлений нет",
"desktop.updater.dialog.ready.message": "Обновление {{version}} загружено. Перезапустить сейчас?",
"desktop.updater.dialog.ready.title": "Обновление готово",
"desktop.updater.dialog.restart": "Перезапустить",
"desktop.updater.dialog.later": "Позже",
"desktop.recovery.action.relaunch": "Запустить снова",
"desktop.recovery.action.exportLogs": "Экспортировать журналы",
"desktop.recovery.action.keepWaiting": "Продолжить ожидание",
"desktop.recovery.action.quit": "Выйти",
"desktop.recovery.loadFailed": "Не удалось загрузить OpenCode",
"desktop.recovery.terminated": "Окно OpenCode неожиданно завершило работу",
"desktop.recovery.unresponsive": "OpenCode не отвечает",
"desktop.recovery.unresponsive.detail": "Можно снова запустить приложение, открыть журналы или продолжить ожидание.",
"desktop.recovery.loadFailed.detail": "Окно: {{window}}\nURL: {{url}}\nОшибка: {{code}} {{description}}",
"desktop.recovery.terminated.detail": "Окно: {{window}}\nПричина: {{reason}}\nКод: {{code}}",
"desktop.recovery.unknown": "<неизвестно>",
"desktop.dialog.chooseFolder": "Выберите папку",
"desktop.dialog.chooseFile": "Выберите файл",
"desktop.dialog.saveFile": "Сохранить файл",
"desktop.dialog.files": "Файлы",
"desktop.server.local": "Локальный сервер",
"desktop.wsl.error.windowsOnly": "WSL доступна только в Windows",
"desktop.wsl.error.unavailable": "WSL недоступна",
"desktop.wsl.error.listInstalled": "Не удалось получить список установленных дистрибутивов WSL",
"desktop.wsl.error.listOnline": "Не удалось получить список доступных дистрибутивов WSL",
"desktop.wsl.error.executeDistro": "Не удаётся выполнять команды в дистрибутиве",
"desktop.wsl.error.installWsl": "Не удалось установить WSL",
"desktop.wsl.error.installDistro": "Не удалось установить дистрибутив: {{distro}}",
"desktop.wsl.error.installOpencode": "Не удалось установить OpenCode",
"desktop.wsl.error.alreadyAdded": "Дистрибутив {{distro}} уже добавлен",
"desktop.wsl.error.opencodeMissing": "opencode не установлен в этом дистрибутиве",
"desktop.wsl.error.opencodeCannotRun": "opencode установлен, но его не удалось запустить",
"desktop.wsl.error.opencodeNotInstalled": "OpenCode не установлен в {{distro}}",
"desktop.wsl.error.updateVersion":
"Обновление OpenCode завершено, но {{distro}} по-прежнему сообщает версию {{installed}}; ожидалась {{expected}}",
"desktop.wsl.error.noVersion": "нет версии",
"desktop.wsl.error.serverExited": "Сервер WSL завершил работу после запуска (код={{code}}, сигнал={{signal}})",
"desktop.wsl.error.serverExitedBeforeHealthy":
"Сервер WSL завершил работу до перехода в рабочее состояние (код={{code}}, сигнал={{signal}}){{output}}",
"desktop.wsl.error.healthTimeout":
"Истекло время ожидания проверки работоспособности Sidecar для {{distro}} ({{timeout}} мс)",
"desktop.wsl.error.commandTimeout": "Истекло время ожидания выполнения {{command}} {{args}} ({{timeout}} мс)",
"desktop.wsl.error.failedPort": "Не удалось получить порт",
"desktop.picker.error.notSelected": "В средстве выбора не выбран файл",
"desktop.picker.error.sizeLimit": "Размер выбранных вложений превышает лимит {{limit}} МБ",
"command.category.suggested": "Предложено",
"command.category.view": "Просмотр",
"command.category.project": "Проект",
@@ -16,6 +115,7 @@ export const dict = {
"command.category.permissions": "Разрешения",
"command.category.workspace": "Рабочее пространство",
"command.category.settings": "Настройки",
"command.logs.export": "Экспортировать журналы",
"theme.scheme.system": "Системная",
"theme.scheme.light": "Светлая",
@@ -37,12 +137,12 @@ export const dict = {
"command.palette": "Палитра команд",
"command.theme.cycle": "Цикл тем",
"command.theme.cycle": "Переключить тему",
"command.theme.set": "Использовать тему: {{theme}}",
"command.theme.scheme.cycle": "Цикл цветовой схемы",
"command.theme.scheme.cycle": "Переключить цветовую схему",
"command.theme.scheme.set": "Использовать цветовую схему: {{scheme}}",
"command.language.cycle": "Цикл языков",
"command.language.cycle": "Переключить язык",
"command.language.set": "Использовать язык: {{language}}",
"command.session.new": "Новая сессия",
@@ -51,7 +151,7 @@ export const dict = {
"command.tab.reopenClosed": "Повторно открыть закрытую вкладку",
"command.context.addSelection": "Добавить выделение в контекст",
"command.context.addSelection.description": "Добавить выбранные строки из текущего файла",
"command.input.focus": "Фокус на поле ввода",
"command.input.focus": "Перейти к полю ввода",
"command.terminal.toggle": "Переключить терминал",
"command.fileTree.toggle": "Переключить дерево файлов",
"command.review.toggle": "Переключить обзор",
@@ -67,11 +167,11 @@ export const dict = {
"command.model.choose.description": "Выбрать другую модель",
"command.mcp.toggle": "Переключить MCP",
"command.mcp.toggle.description": "Переключить MCP",
"command.agent.cycle": "Цикл агентов",
"command.agent.cycle": "Следующий агент",
"command.agent.cycle.description": "Переключиться к следующему агенту",
"command.agent.cycle.reverse": "Цикл агентов назад",
"command.agent.cycle.reverse": "Предыдущий агент",
"command.agent.cycle.reverse.description": "Переключиться к предыдущему агенту",
"command.model.variant.cycle": "Цикл режимов мышления",
"command.model.variant.cycle": "Переключить уровень усилий",
"command.model.variant.cycle.description": "Переключиться к следующему уровню усилий",
"command.prompt.mode.shell": "Оболочка",
"command.prompt.mode.normal": "Промпт",
@@ -102,9 +202,10 @@ export const dict = {
"dialog.provider.empty": "Провайдеры не найдены",
"dialog.provider.group.popular": "Популярные",
"dialog.provider.group.other": "Другие",
"dialog.provider.custom.label": "Пользовательский провайдер, совместимый с OpenAI",
"dialog.provider.tag.recommended": "Рекомендуемые",
"dialog.provider.opencode.note": "Отобранные модели, включая Claude, GPT, Gemini и другие",
"dialog.provider.opencode.tagline": "Надежные оптимизированные модели",
"dialog.provider.opencode.tagline": "Надёжные оптимизированные модели",
"dialog.provider.opencodeGo.tagline": "Доступная подписка для всех",
"dialog.provider.anthropic.note": "Прямой доступ к моделям Claude, включая Pro и Max",
"dialog.provider.copilot.note": "ИИ-модели для помощи в кодировании через GitHub Copilot",
@@ -117,33 +218,36 @@ export const dict = {
"dialog.model.search.placeholder": "Поиск моделей",
"dialog.model.empty": "Модели не найдены",
"dialog.model.manage": "Управление моделями",
"dialog.model.manage.description": "Настройте какие модели появляются в выборе модели",
"dialog.model.manage.description": "Настройте, какие модели отображаются при выборе модели",
"dialog.model.manage.provider.toggle": "Переключить все модели {{provider}}",
"dialog.model.unpaid.freeModels.title": "Бесплатные модели от OpenCode",
"dialog.model.unpaid.addMore.title": "Добавьте больше моделей от популярных провайдеров",
"dialog.model.unpaid.viewMoreProviders": "Посмотреть ещё более 70 провайдеров",
"dialog.provider.viewAll": "Показать больше провайдеров",
"provider.connect.title": "Подключить {{provider}}",
"provider.connect.title.anthropicProMax": "Войти с помощью Claude Pro/Max",
"provider.connect.selectMethod": "Выберите способ входа для {{provider}}.",
"provider.connect.method.apiKey": "API ключ",
"provider.connect.method.apiKey": "Ключ API",
"provider.connect.method.browser": "Браузер",
"provider.connect.method.headless": "Без браузера",
"provider.connect.status.inProgress": "Авторизация...",
"provider.connect.status.waiting": "Ожидание авторизации...",
"provider.connect.status.failed": "Ошибка авторизации: {{error}}",
"provider.connect.apiKey.description":
"Введите ваш API ключ {{provider}} для подключения аккаунта и использования моделей {{provider}} в OpenCode.",
"provider.connect.apiKey.label": "{{provider}} API ключ",
"provider.connect.apiKey.placeholder": "API ключ",
"provider.connect.apiKey.required": "API ключ обязателен",
"Введите ключ API {{provider}}, чтобы подключить аккаунт и использовать модели {{provider}} в OpenCode.",
"provider.connect.apiKey.label": "Ключ API {{provider}}",
"provider.connect.apiKey.placeholder": "Ключ API",
"provider.connect.apiKey.required": "Требуется ключ API",
"provider.connect.opencodeZen.line1":
"OpenCode Zen даёт вам доступ к отобранным надёжным оптимизированным моделям для агентов программирования.",
"provider.connect.opencodeZen.line2":
"С одним API ключом вы получите доступ к таким моделям как Claude, GPT, Gemini, GLM и другим.",
"С одним ключом API вы получите доступ к таким моделям, как Claude, GPT, Gemini, GLM и другие.",
"provider.connect.opencodeZen.visit.prefix": "Посетите ",
"provider.connect.opencodeZen.visit.link": "opencode.ai/zen",
"provider.connect.opencodeZen.visit.suffix": " чтобы получить ваш API ключ.",
"provider.connect.opencodeZen.visit.suffix": ", чтобы получить ключ API.",
"provider.connect.oauth.code.visit.prefix": "Посетите ",
"provider.connect.oauth.code.visit.link": "эту ссылку",
"provider.connect.oauth.code.visit.suffix":
@@ -161,18 +265,19 @@ export const dict = {
"provider.connect.toast.connected.description": "Модели {{provider}} теперь доступны.",
"provider.custom.title": "Пользовательский провайдер",
"provider.custom.description.prefix": "Настройте OpenAI-совместимого провайдера. См. ",
"provider.custom.unavailable": "Пользовательские провайдеры недоступны на этом сервере",
"provider.custom.description.prefix": "Настройте провайдера, совместимого с OpenAI. См. ",
"provider.custom.description.link": "документацию по настройке провайдера",
"provider.custom.description.suffix": ".",
"provider.custom.field.providerID.label": "ID провайдера",
"provider.custom.field.providerID.placeholder": "myprovider",
"provider.custom.field.providerID.description": "Строчные буквы, цифры, дефисы или подчёркивания",
"provider.custom.field.name.label": "Отображаемое имя",
"provider.custom.field.name.placeholder": "Мой AI провайдер",
"provider.custom.field.name.placeholder": "Мой ИИ-провайдер",
"provider.custom.field.baseURL.label": "Базовый URL",
"provider.custom.field.baseURL.placeholder": "https://api.myprovider.com/v1",
"provider.custom.field.apiKey.label": "API ключ",
"provider.custom.field.apiKey.placeholder": "API ключ",
"provider.custom.field.apiKey.label": "Ключ API",
"provider.custom.field.apiKey.placeholder": "Ключ API",
"provider.custom.field.apiKey.description":
"Необязательно. Оставьте пустым, если управляете авторизацией через заголовки.",
"provider.custom.models.label": "Модели",
@@ -211,15 +316,15 @@ export const dict = {
"model.input.image": "изображение",
"model.input.audio": "аудио",
"model.input.video": "видео",
"model.input.pdf": "pdf",
"model.tooltip.allows": "Разрешено: {{inputs}}",
"model.input.pdf": "PDF",
"model.tooltip.allows": "Поддерживает: {{inputs}}",
"model.tooltip.context.label": "Контекст",
"model.tooltip.inputs": "Входные данные",
"model.tooltip.model": "Модель",
"model.tooltip.provider": "Провайдер",
"model.tooltip.reasoning": "Рассуждение",
"model.tooltip.reasoning.allowed": "Разрешает рассуждение",
"model.tooltip.reasoning.none": "Без рассуждения",
"model.tooltip.reasoning.allowed": "Поддерживает рассуждения",
"model.tooltip.reasoning.none": "Без рассуждений",
"model.tooltip.context": "Лимит контекста {{limit}}",
"common.search.placeholder": "Поиск",
@@ -231,7 +336,7 @@ export const dict = {
"common.clear": "Очистить",
"common.connect": "Подключить",
"common.disconnect": "Отключить",
"common.continue": "Отправить",
"common.continue": "Продолжить",
"common.submit": "Отправить",
"common.save": "Сохранить",
"common.saving": "Сохранение...",
@@ -241,8 +346,8 @@ export const dict = {
"prompt.placeholder.shell": "Введите команду оболочки... {{example}}",
"prompt.placeholder.normal": 'Спросите что угодно... "{{example}}"',
"prompt.placeholder.simple": "Спросите что угодно...",
"prompt.placeholder.summarizeComments": "Суммировать комментарии…",
"prompt.placeholder.summarizeComment": "Суммировать комментарий…",
"prompt.placeholder.summarizeComments": "Обобщить комментарии…",
"prompt.placeholder.summarizeComment": "Обобщить комментарий…",
"prompt.mode.shell": "Оболочка",
"prompt.mode.normal": "Промпт",
"prompt.mode.shell.exit": "esc для выхода",
@@ -252,33 +357,33 @@ export const dict = {
"prompt.example.1": "Исправить TODO в коде",
"prompt.example.2": "Какой технологический стек этого проекта?",
"prompt.example.3": "Исправить сломанные тесты",
"prompt.example.4": "Объясни как работает аутентификация",
"prompt.example.4": "Объясни, как работает аутентификация",
"prompt.example.5": "Найти и исправить уязвимости безопасности",
"prompt.example.6": "Добавить юнит-тесты для сервиса пользователя",
"prompt.example.6": "Добавить модульные тесты для службы пользователей",
"prompt.example.7": "Рефакторить эту функцию для лучшей читаемости",
"prompt.example.8": "Что означает эта ошибка?",
"prompt.example.9": "Помоги мне отладить эту проблему",
"prompt.example.10": "Сгенерировать документацию API",
"prompt.example.11": "Оптимизировать запросы к базе данных",
"prompt.example.12": "Добавить валидацию ввода",
"prompt.example.12": "Добавить проверку входных данных",
"prompt.example.13": "Создать новый компонент для...",
"prompt.example.14": "Как развернуть этот проект?",
"prompt.example.15": "Проверь мой код на лучшие практики",
"prompt.example.15": "Проверь, соответствует ли мой код рекомендациям",
"prompt.example.16": "Добавить обработку ошибок в эту функцию",
"prompt.example.17": "Объясни этот паттерн regex",
"prompt.example.18": "Конвертировать это в TypeScript",
"prompt.example.17": "Объясни это регулярное выражение",
"prompt.example.18": "Преобразовать это в TypeScript",
"prompt.example.19": "Добавить логирование по всему проекту",
"prompt.example.20": "Какие зависимости устарели?",
"prompt.example.21": "Помоги написать скрипт миграции",
"prompt.example.22": "Реализовать кэширование для этой конечной точки",
"prompt.example.22": "Реализовать кеширование для этой конечной точки",
"prompt.example.23": "Добавить пагинацию в этот список",
"prompt.example.24": "Создать CLI команду для...",
"prompt.example.25": "Как работают переменные окружения здесь?",
"prompt.example.24": "Создать CLI-команду для...",
"prompt.example.25": "Как здесь работают переменные окружения?",
"prompt.popover.emptyResults": "Нет совпадений",
"prompt.popover.emptyCommands": "Нет совпадающих команд",
"prompt.dropzone.label": "Перетащите сюда изображения, PDF или текстовые файлы",
"prompt.dropzone.file.label": "Отпустите для @упоминания файла",
"prompt.dropzone.file.label": "Отпустите, чтобы упомянуть файл через @",
"prompt.slash.badge.custom": "своё",
"prompt.slash.badge.skill": "навык",
"prompt.slash.badge.mcp": "mcp",
@@ -332,7 +437,7 @@ export const dict = {
"dialog.directory.readError": "Не удалось прочитать эту папку",
"dialog.server.title": "Серверы",
"dialog.server.description": "Переключите сервер OpenCode к которому подключается приложение.",
"dialog.server.description": "Выберите сервер OpenCode, к которому подключается приложение.",
"dialog.server.search.placeholder": "Поиск серверов",
"dialog.server.empty": "Серверов пока нет",
"dialog.server.add.title": "Добавить сервер",
@@ -356,7 +461,7 @@ export const dict = {
"dialog.server.menu.edit": "Редактировать",
"dialog.server.menu.default": "Сделать по умолчанию",
"dialog.server.menu.defaultRemove": "Удалить по умолчанию",
"dialog.server.menu.defaultRemove": "Отменить выбор по умолчанию",
"dialog.server.menu.delete": "Удалить",
"dialog.server.current": "Текущий сервер",
"dialog.server.status.default": "По умолч.",
@@ -405,7 +510,7 @@ export const dict = {
"wsl.onboarding.needAnotherDistroHint": "Установите дистрибутив Linux из каталога WSL",
"wsl.onboarding.wslNotInstalled.title": "WSL не установлена",
"wsl.onboarding.wslNotInstalled.description":
"Для добавления сервера WSL в OpenCode требуется WSL (Windows Subsystem for Linux)",
"Для добавления сервера WSL в OpenCode требуется WSL (Подсистема Windows для Linux)",
"wsl.onboarding.wslUnavailable.title": "WSL недоступна",
"wsl.onboarding.wslUnavailable.description": "OpenCode не смог проверить WSL на этом компьютере.",
"wsl.onboarding.installWsl": "Установить WSL",
@@ -430,12 +535,28 @@ export const dict = {
"wsl.onboarding.versionMismatch": "Установленная версия не соответствует версии приложения.",
"wsl.onboarding.adding": "Добавление...",
"help.tabs.toast.ariaLabel": "Представляем вкладки. Организуйте работу и активные сессии с помощью вкладок",
"help.tabs.toast.dismiss": "Закрыть сведения о вкладках",
"help.tabs.title": "Представляем вкладки",
"help.tabs.description": "Организуйте работу и активные сессии с помощью вкладок",
"help.tabs.date": "14 июля",
"help.tabs.introduction": "Теперь работа в OpenCode Desktop организована с помощью вкладок.",
"help.tabs.sessions":
"Начните новую сессию во вкладке или откройте существующую сессию из любого проекта. Открывайте новую вкладку, когда начинаете новую задачу, и закрывайте её по завершении.",
"help.tabs.organize":
"Несколько открытых вкладок упрощают организацию активных сессий. Если вы планируете оставить вкладки открытыми, присвойте им запоминающиеся названия.",
"help.tabs.home":
"Все сессии и проекты находятся на новом экране «Главная». При выборе сессии она открывается во вкладке.",
"help.tabs.persistence": "После повторного открытия приложения вкладки останутся открытыми.",
"help.tabs.worktrees":
"Новый дизайн пока не поддерживает Git Worktrees, но эта возможность скоро появится. Если вы предпочитаете прежний макет, переключиться между макетами можно в разделе «Настройки». Учтите, что через несколько недель новый макет станет постоянным.",
"dialog.project.edit.title": "Редактировать проект",
"dialog.project.edit.name": "Название",
"dialog.project.edit.icon": "Иконка",
"dialog.project.edit.icon.alt": "Иконка проекта",
"dialog.project.edit.icon": "Значок",
"dialog.project.edit.icon.alt": "Значок проекта",
"dialog.project.edit.icon.hint": "Нажмите или перетащите изображение",
"dialog.project.edit.icon.recommended": "Рекомендуется: 128x128px",
"dialog.project.edit.icon.recommended": "Рекомендуется: 128 x 128 пикселей",
"dialog.project.edit.color": "Цвет",
"dialog.project.edit.color.select": "Выбрать цвет {{color}}",
@@ -465,7 +586,7 @@ export const dict = {
"context.stats.inputTokens": "Входные токены",
"context.stats.outputTokens": "Выходные токены",
"context.stats.reasoningTokens": "Токены рассуждения",
"context.stats.cacheTokens": "Токены кэша (чтение/запись)",
"context.stats.cacheTokens": "Токены кеша (чтение/запись)",
"context.stats.userMessages": "Сообщения пользователя",
"context.stats.assistantMessages": "Сообщения ассистента",
"context.stats.totalCost": "Общая стоимость",
@@ -564,27 +685,27 @@ export const dict = {
"error.chain.causedBy": "Причина:",
"error.chain.apiError": "Ошибка API",
"error.chain.status": "Статус: {{status}}",
"error.chain.retryable": "Повторная попытка: {{retryable}}",
"error.chain.retryable": "Можно повторить: {{retryable}}",
"error.chain.responseBody": "Тело ответа:\n{{body}}",
"error.chain.didYouMean": "Возможно, вы имели в виду: {{suggestions}}",
"error.chain.modelNotFound": "Модель не найдена: {{provider}}/{{model}}",
"error.chain.checkConfig": "Проверьте названия провайдера/модели в конфиге (opencode.json)",
"error.chain.checkConfig": "Проверьте названия провайдера и модели в конфигурации (opencode.json)",
"error.chain.mcpFailed":
'MCP сервер "{{name}}" завершился с ошибкой. Обратите внимание, что OpenCode пока не поддерживает MCP авторизацию.',
'MCP-сервер "{{name}}" завершился с ошибкой. Обратите внимание: OpenCode пока не поддерживает MCP-авторизацию.',
"error.chain.providerAuthFailed": "Ошибка аутентификации провайдера ({{provider}}): {{message}}",
"error.chain.providerInitFailed":
'Не удалось инициализировать провайдера "{{provider}}". Проверьте учётные данные и конфигурацию.',
"error.chain.configJsonInvalid": "Конфигурационный файл по адресу {{path}} не является валидным JSON(C)",
"error.chain.configJsonInvalid": "Конфигурационный файл по адресу {{path}} содержит некорректный JSON(C)",
"error.chain.configJsonInvalidWithMessage":
"Конфигурационный файл по адресу {{path}} не является валидным JSON(C): {{message}}",
"Конфигурационный файл по адресу {{path}} содержит некорректный JSON(C): {{message}}",
"error.chain.configDirectoryTypo":
'Папка "{{dir}}" в {{path}} невалидна. Переименуйте папку в "{{suggestion}}" или удалите её. Это распространённая опечатка.',
'Папка "{{dir}}" в {{path}} недопустима. Переименуйте папку в "{{suggestion}}" или удалите её. Это распространённая опечатка.',
"error.chain.configFrontmatterError": "Не удалось разобрать frontmatter в {{path}}:\n{{message}}",
"error.chain.configInvalid": "Конфигурационный файл по адресу {{path}} невалиден",
"error.chain.configInvalidWithMessage": "Конфигурационный файл по адресу {{path}} невалиден: {{message}}",
"error.chain.configInvalid": "Недопустимый конфигурационный файл по адресу {{path}}",
"error.chain.configInvalidWithMessage": "Недопустимый конфигурационный файл по адресу {{path}}: {{message}}",
"notification.permission.title": "Требуется разрешение",
"notification.permission.description": "{{sessionTitle}} в {{projectName}} требуется разрешение",
"notification.permission.description": "Для {{sessionTitle}} в {{projectName}} требуется разрешение",
"notification.question.title": "Вопрос",
"notification.question.description": "У {{sessionTitle}} в {{projectName}} есть вопрос",
"notification.action.goToSession": "Перейти к сессии",
@@ -623,7 +744,7 @@ export const dict = {
"session.error.notFound.description": "Эта вкладка указывает на сессию, которой больше нет на этом сервере.",
"session.error.notFound.closeTab": "Закрыть вкладку",
"session.error.serverConnection": "Не удаётся подключиться к этому серверу",
"session.review.filesChanged": "{{count}} файлов изменено",
"session.review.filesChanged": "Изменено файлов: {{count}}",
"session.review.change.one": "Изменение",
"session.review.change.other": "Изменения",
"session.review.loadingChanges": "Загрузка изменений...",
@@ -650,15 +771,21 @@ export const dict = {
"session.question.minimize": "Свернуть вопрос",
"session.question.restore": "Восстановить вопрос",
"session.question.pending.one": "{{count}} вопрос без ответа",
"session.question.pending.few": "{{count}} вопроса без ответа",
"session.question.pending.many": "{{count}} вопросов без ответа",
"session.question.pending.other": "Вопросы без ответа: {{count}}",
"session.followupDock.summary.one": "{{count}} сообщение в очереди",
"session.followupDock.summary.other": "{{count}} сообщений в очереди",
"session.followupDock.summary.few": "{{count}} сообщения в очереди",
"session.followupDock.summary.many": "{{count}} сообщений в очереди",
"session.followupDock.summary.other": "Сообщений в очереди: {{count}}",
"session.followupDock.sendNow": "Отправить сейчас",
"session.followupDock.edit": "Редактировать",
"session.followupDock.collapse": "Свернуть сообщения в очереди",
"session.followupDock.expand": "Развернуть сообщения в очереди",
"session.revertDock.summary.one": "{{count}} сообщение возвращено",
"session.revertDock.summary.other": "{{count}} сообщений возвращено",
"session.revertDock.summary.few": "{{count}} сообщения возвращены",
"session.revertDock.summary.many": "{{count}} сообщений возвращено",
"session.revertDock.summary.other": "Возвращено сообщений: {{count}}",
"session.revertDock.collapse": "Свернуть возвращённые сообщения",
"session.revertDock.expand": "Развернуть возвращённые сообщения",
"session.revertDock.restore": "Восстановить сообщение",
@@ -707,7 +834,7 @@ export const dict = {
"session.share.copy.copied": "Скопировано",
"session.share.copy.copyLink": "Копировать ссылку",
"lsp.tooltip.none": "Нет LSP серверов",
"lsp.tooltip.none": "Нет LSP-серверов",
"lsp.label.connected": "{{count}} LSP",
"prompt.loading": "Загрузка запроса...",
@@ -718,6 +845,12 @@ export const dict = {
"terminal.connectionLost.title": "Соединение потеряно",
"terminal.connectionLost.description":
"Соединение с терминалом прервано. Это может произойти при перезапуске сервера.",
"terminal.connectTicket.csrfError":
"Билет подключения PTY отклонён при проверке источника или CSRF. Проверьте конфигурацию CORS сервера.",
"terminal.connectTicket.statusError": "Не удалось получить билет подключения PTY, статус: {{status}}",
"titlebar.update": "Обновить",
"titlebar.updateVersion": "Обновить {{version}}",
"common.closeTab": "Закрыть вкладку",
"common.dismiss": "Закрыть",
@@ -764,7 +897,7 @@ export const dict = {
"settings.general.section.updates": "Обновления",
"settings.general.section.sounds": "Звуковые эффекты",
"settings.general.section.feed": "Лента",
"settings.general.section.display": "Дисплей",
"settings.general.section.display": "Экран",
"settings.general.row.language.title": "Язык",
"settings.general.row.language.description": "Изменить язык отображения OpenCode",
@@ -774,7 +907,7 @@ export const dict = {
"settings.general.row.shell.autoDefault": "Авто (по умолчанию)",
"settings.general.row.shell.terminalOnly": "только терминал",
"settings.general.row.appearance.title": "Внешний вид",
"settings.general.row.appearance.description": "Настройте как OpenCode выглядит на вашем устройстве",
"settings.general.row.appearance.description": "Настройте внешний вид OpenCode на вашем устройстве",
"settings.general.row.colorScheme.title": "Цветовая схема",
"settings.general.row.colorScheme.description": "Выберите, следует ли OpenCode системной, светлой или тёмной теме",
"settings.general.row.theme.title": "Тема",
@@ -784,7 +917,7 @@ export const dict = {
"settings.general.row.terminalFont.title": "Шрифт терминала",
"settings.general.row.terminalFont.description": "Настройте шрифт, используемый в терминале",
"settings.general.row.uiFont.title": "Шрифт интерфейса",
"settings.general.row.uiFont.description": "Настройте шрифт, используемый во всем интерфейсе",
"settings.general.row.uiFont.description": "Настройте шрифт, используемый во всём интерфейсе",
"settings.general.row.followup.title": "Поведение уточняющих вопросов",
"settings.general.row.followup.description":
"Выберите, отправлять ли уточняющие вопросы сразу или помещать их в очередь",
@@ -804,8 +937,9 @@ export const dict = {
"settings.general.row.mobileTitlebarBottom.title": "Нижняя навигация",
"settings.general.row.mobileTitlebarBottom.description":
"На мобильных устройствах размещать строку заголовка и вкладки сессии внизу экрана",
"settings.general.row.showCustomAgents.title": "Пользовательские агенты",
"settings.general.row.showCustomAgents.description": "Показывать выбор агента в редакторе запросов",
"settings.general.row.showCustomAgents.title": "Выбор агента",
"settings.general.row.showCustomAgents.description":
"Показывать переключатель агентов в редакторе запросов. Если он скрыт, по умолчанию используется агент Build.",
"settings.general.row.reasoningSummaries.title": "Показывать сводки рассуждений",
"settings.general.row.reasoningSummaries.description": "Отображать сводки рассуждений модели в ленте",
@@ -822,11 +956,11 @@ export const dict = {
"settings.general.row.newInterfaceNotice.title": "Теперь вы используете новую компоновку",
"settings.general.row.newInterfaceNotice.description": "Прежняя компоновка больше недоступна",
"settings.general.row.newInterfaceNotice.dismiss": "Закрыть",
"settings.general.row.pinchZoom.title": "Масштабирование щипком",
"settings.general.row.pinchZoom.title": "Масштабирование сведением пальцев",
"settings.general.row.pinchZoom.description":
"Разрешить масштабирование жестом щипка на трекпаде и прокруткой с Ctrl",
"Разрешить масштабирование сведением пальцев на трекпаде и прокруткой с нажатой клавишей Ctrl",
"settings.general.row.wayland.title": "Использовать нативный Wayland",
"settings.general.row.wayland.description": "Отключить X11 fallback на Wayland. Требуется перезапуск.",
"settings.general.row.wayland.description": "Отключить резервный режим X11 в Wayland. Требуется перезапуск.",
"settings.general.row.wayland.tooltip":
"На Linux с мониторами разной частоты обновления нативный Wayland может быть стабильнее.",
@@ -892,22 +1026,22 @@ export const dict = {
"settings.general.notifications.agent.title": "Агент",
"settings.general.notifications.agent.description":
"Показывать системное уведомление когда агент завершён или требует внимания",
"Показывать системное уведомление, когда агент завершил работу или требует внимания",
"settings.general.notifications.permissions.title": "Разрешения",
"settings.general.notifications.permissions.description":
"Показывать системное уведомление когда требуется разрешение",
"Показывать системное уведомление, когда требуется разрешение",
"settings.general.notifications.errors.title": "Ошибки",
"settings.general.notifications.errors.description": "Показывать системное уведомление когда происходит ошибка",
"settings.general.notifications.errors.description": "Показывать системное уведомление, когда происходит ошибка",
"settings.general.sounds.agent.title": "Агент",
"settings.general.sounds.agent.description": "Воспроизводить звук когда агент завершён или требует внимания",
"settings.general.sounds.agent.description": "Воспроизводить звук, когда агент завершил работу или требует внимания",
"settings.general.sounds.permissions.title": "Разрешения",
"settings.general.sounds.permissions.description": "Воспроизводить звук когда требуется разрешение",
"settings.general.sounds.permissions.description": "Воспроизводить звук, когда требуется разрешение",
"settings.general.sounds.errors.title": "Ошибки",
"settings.general.sounds.errors.description": "Воспроизводить звук когда происходит ошибка",
"settings.general.sounds.errors.description": "Воспроизводить звук, когда происходит ошибка",
"settings.shortcuts.title": "Горячие клавиши",
"settings.shortcuts.reset.button": "Сбросить к умолчаниям",
"settings.shortcuts.reset.button": "Восстановить настройки по умолчанию",
"settings.shortcuts.reset.toast.title": "Горячие клавиши сброшены",
"settings.shortcuts.reset.toast.description": "Горячие клавиши были сброшены к значениям по умолчанию.",
"settings.shortcuts.conflict.title": "Сочетание уже используется",
@@ -943,7 +1077,7 @@ export const dict = {
"settings.mcp.description": "Настройки MCP будут доступны здесь.",
"settings.permissions.title": "Разрешения",
"settings.permissions.description": "Контролируйте какие инструменты сервер может использовать по умолчанию.",
"settings.permissions.description": "Укажите, какие инструменты сервер может использовать по умолчанию.",
"settings.permissions.section.tools": "Инструменты",
"settings.permissions.toast.updateFailed.title": "Не удалось обновить разрешения",
@@ -955,7 +1089,7 @@ export const dict = {
"settings.permissions.tool.read.description": "Чтение файла (по совпадению пути)",
"settings.permissions.tool.edit.title": "Редактирование",
"settings.permissions.tool.edit.description":
"Изменение файлов, включая редактирование, запись, патчи и мульти-редактирование",
"Изменение файлов, включая редактирование, запись, патчи и множественное редактирование",
"settings.permissions.tool.glob.title": "Glob",
"settings.permissions.tool.glob.description": "Сопоставление файлов по паттернам glob",
"settings.permissions.tool.grep.title": "Grep",
@@ -965,7 +1099,7 @@ export const dict = {
"settings.permissions.tool.bash.title": "Bash",
"settings.permissions.tool.bash.description": "Запуск команд оболочки",
"settings.permissions.tool.task.title": "Task",
"settings.permissions.tool.task.description": "Запуск подагентов",
"settings.permissions.tool.task.description": "Запуск субагентов",
"settings.permissions.tool.skill.title": "Skill",
"settings.permissions.tool.skill.description": "Загрузка навыка по имени",
"settings.permissions.tool.lsp.title": "LSP",
@@ -999,7 +1133,7 @@ export const dict = {
"workspace.reset.success.description": "Рабочее пространство теперь соответствует ветке по умолчанию.",
"workspace.error.stillPreparing": "Рабочее пространство всё ещё подготавливается",
"workspace.status.checking": "Проверка незафиксированных изменений...",
"workspace.status.error": "Не удалось проверить статус git.",
"workspace.status.error": "Не удалось проверить состояние Git.",
"workspace.status.clean": "Незафиксированных изменений не обнаружено.",
"workspace.status.dirty": "В этом рабочем пространстве обнаружены незафиксированные изменения.",
"workspace.delete.title": "Удалить рабочее пространство",
@@ -1010,13 +1144,13 @@ export const dict = {
"workspace.reset.button": "Сбросить рабочее пространство",
"workspace.reset.archived.none": "Активные сессии не будут архивированы.",
"workspace.reset.archived.one": "1 сессия будет архивирована.",
"workspace.reset.archived.many": "{{count}} сессий будет архивировано.",
"workspace.reset.archived.many": "Будут архивированы сессии: {{count}}.",
"workspace.reset.note": "Это сбросит рабочее пространство до соответствия ветке по умолчанию.",
"common.open": "Открыть",
"dialog.releaseNotes.action.getStarted": "Начать",
"dialog.releaseNotes.action.next": "Далее",
"dialog.releaseNotes.action.hideFuture": "Больше не показывать",
"dialog.releaseNotes.media.alt": "Превью релиза",
"dialog.releaseNotes.media.alt": "Предварительный просмотр выпуска",
"toast.project.reloadFailed.title": "Не удалось перезагрузить {{project}}",
"error.server.invalidConfiguration": "Недопустимая конфигурация",
"common.moreCountSuffix": " (ещё {{count}})",
@@ -1041,6 +1175,9 @@ export const dict = {
"session.question.progress": "{{current}} из {{total}} вопросов",
"session.header.open.finder": "Finder",
"session.header.open.fileExplorer": "Проводник",
"session.header.reveal.finder": "Показать в Finder",
"session.header.reveal.fileExplorer": "Показать в Проводнике",
"session.header.reveal.containingFolder": "Открыть папку расположения",
"session.header.open.fileManager": "Файловый менеджер",
"session.header.open.app.vscode": "VS Code",
"session.header.open.app.cursor": "Cursor",
@@ -1059,7 +1196,7 @@ export const dict = {
"debugBar.na": "н/д",
"debugBar.nav.label": "NAV",
"debugBar.nav.tip":
"Последний завершенный переход маршрута, затрагивающий страницу сеанса, измеренный от запуска маршрутизатора до первой отрисовки после стабилизации.",
"Последний завершённый переход по маршруту, затрагивающий страницу сессии: от запуска маршрутизатора до первой отрисовки после стабилизации.",
"debugBar.fps.label": "FPS",
"debugBar.fps.tip": "Скользящая частота кадров в секунду за последние 5 секунд.",
"debugBar.frame.label": "FRAME",
@@ -1074,7 +1211,7 @@ export const dict = {
"debugBar.inp.tip":
"Приблизительная продолжительность взаимодействия за последние 5 секунд. Это похоже на INP, а не официальный Web Vitals INP.",
"debugBar.cls.label": "CLS",
"debugBar.cls.tip": "Кумулятивный сдвиг макета за текущее время жизни приложения.",
"debugBar.cls.tip": "Совокупное смещение макета за время работы приложения.",
"debugBar.mem.label": "MEM",
"debugBar.mem.tipUnavailable": "Используемая куча JS по сравнению с лимитом кучи. Только Chromium.",
"debugBar.mem.tip": "Используемая куча JS по сравнению с лимитом кучи. {{used}} из {{limit}}.",
@@ -1096,7 +1233,7 @@ export const dict = {
"error.page.circular": "[Циклично]",
"error.serverSDK.noServerAvailable": "Нет доступного сервера",
"error.serverSDK.serverNotAvailable": "Сервер недоступен",
"error.childStore.persistedCacheCreateFailed": "Не удалось создать постоянный кэш",
"error.childStore.persistedCacheCreateFailed": "Не удалось создать постоянный кеш",
"error.childStore.persistedProjectMetadataCreateFailed": "Не удалось создать постоянные метаданные проекта",
"error.childStore.persistedProjectIconCreateFailed": "Не удалось создать постоянный значок проекта",
"error.childStore.storeCreateFailed": "Не удалось создать хранилище",
+1139
View File
@@ -0,0 +1,1139 @@
export const dict = {
"desktop.menu.app": "OpenCode",
"desktop.menu.file": "Arkiv",
"desktop.menu.edit": "Redigera",
"desktop.menu.view": "Visa",
"desktop.menu.go": "Gå",
"desktop.menu.window": "Fönster",
"desktop.menu.help": "Hjälp",
"desktop.menu.checkForUpdates": "Sök efter uppdateringar...",
"desktop.menu.settings": "Inställningar",
"desktop.menu.reloadWebview": "Läs in webbvyn igen",
"desktop.menu.restart": "Starta om",
"desktop.menu.exportLogs": "Exportera loggar...",
"desktop.menu.newSession": "Ny session",
"desktop.menu.openProject": "Öppna projekt...",
"desktop.menu.newWindow": "Nytt fönster",
"desktop.menu.closeWindow": "Stäng fönster",
"desktop.menu.undo": "Ångra",
"desktop.menu.redo": "Gör om",
"desktop.menu.cut": "Klipp ut",
"desktop.menu.copy": "Kopiera",
"desktop.menu.paste": "Klistra in",
"desktop.menu.delete": "Radera",
"desktop.menu.selectAll": "Markera allt",
"desktop.menu.toggleSidebar": "Växla sidofältet",
"desktop.menu.toggleTerminal": "Växla terminal",
"desktop.menu.toggleFileTree": "Växla filträdet",
"desktop.menu.reload": "Läs in igen",
"desktop.menu.toggleDeveloperTools": "Växla utvecklarverktyg",
"desktop.menu.actualSize": "Verklig storlek",
"desktop.menu.zoomIn": "Zooma in",
"desktop.menu.zoomOut": "Zooma ut",
"desktop.menu.toggleFullScreen": "Växla helskärmsläge",
"desktop.menu.back": "Bakåt",
"desktop.menu.forward": "Framåt",
"desktop.menu.previousSession": "Föregående session",
"desktop.menu.nextSession": "Nästa session",
"desktop.menu.previousProject": "Föregående projekt",
"desktop.menu.nextProject": "Nästa projekt",
"desktop.menu.minimize": "Minimera",
"desktop.menu.maximize": "Maximera",
"desktop.menu.documentation": "OpenCode-dokumentation",
"desktop.menu.supportForum": "Supportforum",
"desktop.menu.shareFeedback": "Skicka feedback",
"desktop.menu.reportBug": "Rapportera ett fel",
"desktop.menu.ariaLabel": "OpenCode-meny",
"desktop.updater.dialog.checkFailed.message": "Det gick inte att söka efter uppdateringar.",
"desktop.updater.dialog.checkFailed.title": "Uppdateringsfel",
"desktop.updater.dialog.upToDate.message": "Du har den senaste versionen.",
"desktop.updater.dialog.upToDate.title": "Inga uppdateringar",
"desktop.updater.dialog.ready.message": "Uppdateringen {{version}} har hämtats. Vill du starta om nu?",
"desktop.updater.dialog.ready.title": "Uppdateringen är klar",
"desktop.updater.dialog.restart": "Starta om",
"desktop.updater.dialog.later": "Senare",
"desktop.recovery.action.relaunch": "Starta om appen",
"desktop.recovery.action.exportLogs": "Exportera loggar",
"desktop.recovery.action.keepWaiting": "Fortsätt vänta",
"desktop.recovery.action.quit": "Avsluta",
"desktop.recovery.loadFailed": "OpenCode kunde inte läsas in",
"desktop.recovery.terminated": "OpenCode-fönstret avslutades oväntat",
"desktop.recovery.unresponsive": "OpenCode svarar inte",
"desktop.recovery.unresponsive.detail": "Du kan starta om appen, öppna loggarna eller fortsätta vänta.",
"desktop.recovery.loadFailed.detail": "Fönster: {{window}}\nURL: {{url}}\nFel: {{code}} {{description}}",
"desktop.recovery.terminated.detail": "Fönster: {{window}}\nOrsak: {{reason}}\nKod: {{code}}",
"desktop.recovery.unknown": "<okänd>",
"desktop.dialog.chooseFolder": "Välj en mapp",
"desktop.dialog.chooseFile": "Välj en fil",
"desktop.dialog.saveFile": "Spara fil",
"desktop.dialog.files": "Filer",
"desktop.server.local": "Lokal server",
"desktop.wsl.error.windowsOnly": "WSL är endast tillgängligt i Windows",
"desktop.wsl.error.unavailable": "WSL är inte tillgängligt",
"desktop.wsl.error.listInstalled": "Det gick inte att lista installerade WSL-distributioner",
"desktop.wsl.error.listOnline": "Det gick inte att lista tillgängliga WSL-distributioner",
"desktop.wsl.error.executeDistro": "Det går inte att köra kommandon i distributionen",
"desktop.wsl.error.installWsl": "Installationen av WSL misslyckades",
"desktop.wsl.error.installDistro": "Det gick inte att installera distributionen: {{distro}}",
"desktop.wsl.error.installOpencode": "Installationen av OpenCode misslyckades",
"desktop.wsl.error.alreadyAdded": "{{distro}} har redan lagts till",
"desktop.wsl.error.opencodeMissing": "opencode är inte installerat i den här distributionen",
"desktop.wsl.error.opencodeCannotRun": "opencode är installerat men kunde inte köras",
"desktop.wsl.error.opencodeNotInstalled": "OpenCode är inte installerat i {{distro}}",
"desktop.wsl.error.updateVersion":
"OpenCode-uppdateringen slutfördes, men {{distro}} rapporterar fortfarande {{installed}}. {{expected}} förväntades",
"desktop.wsl.error.noVersion": "ingen version",
"desktop.wsl.error.serverExited": "WSL-servern avslutades efter start (kod={{code}} signal={{signal}})",
"desktop.wsl.error.serverExitedBeforeHealthy":
"WSL-servern avslutades innan den blev felfri (kod={{code}} signal={{signal}}){{output}}",
"desktop.wsl.error.healthTimeout":
"Tidsgränsen för hälsokontrollen av sidoprocessen för {{distro}} överskreds efter {{timeout}} ms",
"desktop.wsl.error.commandTimeout": "Tidsgränsen för {{command}} {{args}} överskreds efter {{timeout}} ms",
"desktop.wsl.error.failedPort": "Det gick inte att hämta porten",
"desktop.picker.error.notSelected": "Ingen fil valdes i filväljaren",
"desktop.picker.error.sizeLimit": "De valda bilagorna överskrider gränsen på {{limit}} MB",
"command.category.suggested": "Föreslagna",
"command.category.view": "Visa",
"command.category.project": "Projekt",
"command.category.provider": "Leverantör",
"command.category.server": "Server",
"command.category.session": "Session",
"command.category.theme": "Tema",
"command.category.language": "Språk",
"command.category.file": "Fil",
"command.category.context": "Kontext",
"command.category.terminal": "Terminal",
"command.category.model": "Modell",
"command.category.mcp": "MCP",
"command.category.agent": "Agent",
"command.category.permissions": "Behörigheter",
"command.category.workspace": "Arbetsyta",
"command.category.settings": "Inställningar",
"command.logs.export": "Exportera loggar",
"theme.scheme.system": "System",
"theme.scheme.light": "Ljus",
"theme.scheme.dark": "Mörk",
"command.sidebar.toggle": "Växla sidofältet",
"command.project.open": "Öppna projekt",
"command.project.previous": "Föregående projekt",
"command.project.next": "Nästa projekt",
"command.project.index": "Byt till projekt {{index}}",
"command.provider.connect": "Anslut leverantör",
"command.server.switch": "Byt server",
"command.settings.open": "Öppna inställningar",
"command.session.previous": "Föregående session",
"command.session.next": "Nästa session",
"command.session.previous.unseen": "Föregående oläst session",
"command.session.next.unseen": "Nästa olästa session",
"command.session.archive": "Arkivera session",
"command.palette": "Kommandopalett",
"command.theme.cycle": "Växla tema",
"command.theme.set": "Använd tema: {{theme}}",
"command.theme.scheme.cycle": "Växla färgschema",
"command.theme.scheme.set": "Använd färgschema: {{scheme}}",
"command.language.cycle": "Växla språk",
"command.language.set": "Använd språk: {{language}}",
"command.session.new": "Ny session",
"command.file.open": "Öppna filen",
"command.tab.close": "Stäng fliken",
"command.tab.reopenClosed": "Öppna stängd flik igen",
"command.context.addSelection": "Lägg till markering i kontexten",
"command.context.addSelection.description": "Lägg till markerade rader från den aktuella filen",
"command.input.focus": "Fokusera inmatningsfältet",
"command.terminal.toggle": "Växla terminal",
"command.fileTree.toggle": "Växla filträdet",
"command.review.toggle": "Växla granskning",
"command.terminal.new": "Ny terminal",
"command.terminal.new.description": "Skapa en ny terminalflik",
"command.steps.toggle": "Växla steg",
"command.steps.toggle.description": "Visa eller dölj steg för det aktuella meddelandet",
"command.message.previous": "Föregående meddelande",
"command.message.previous.description": "Gå till föregående användarmeddelande",
"command.message.next": "Nästa meddelande",
"command.message.next.description": "Gå till nästa användarmeddelande",
"command.model.choose": "Välj modell",
"command.model.choose.description": "Välj en annan modell",
"command.mcp.toggle": "Växla MCP:er",
"command.mcp.toggle.description": "Växla MCP:er",
"command.agent.cycle": "Växla agent",
"command.agent.cycle.description": "Byt till nästa agent",
"command.agent.cycle.reverse": "Växla agent bakåt",
"command.agent.cycle.reverse.description": "Byt till föregående agent",
"command.model.variant.cycle": "Växla resonemangsnivå",
"command.model.variant.cycle.description": "Växla till nästa resonemangsnivå",
"command.prompt.mode.shell": "Shell",
"command.prompt.mode.normal": "Prompt",
"command.permissions.autoaccept.enable": "Autoacceptera behörigheter",
"command.permissions.autoaccept.disable": "Sluta att automatiskt acceptera behörigheter",
"command.workspace.toggle": "Växla arbetsytor",
"command.workspace.toggle.description": "Aktivera eller inaktivera flera arbetsytor i sidofältet",
"command.session.undo": "Ångra",
"command.session.undo.description": "Ångra det senaste meddelandet",
"command.session.redo": "Gör om",
"command.session.redo.description": "Gör om det senaste ångrade meddelandet",
"command.session.compact": "Komprimera session",
"command.session.compact.description": "Sammanfatta sessionen för att minska kontextstorleken",
"command.session.fork": "Förgrena från meddelande",
"command.session.fork.description": "Skapa en ny session från ett tidigare meddelande",
"command.session.share": "Dela session",
"command.session.share.description": "Dela den här sessionen och kopiera URL:en till urklipp",
"command.session.unshare": "Sluta dela session",
"command.session.unshare.description": "Sluta dela den här sessionen",
"palette.search.placeholder": "Sök efter filer, kommandon och sessioner",
"palette.search.placeholder.home": "Sök bland kommandon och sessioner",
"palette.empty": "Inga resultat hittades",
"palette.group.commands": "Kommandon",
"palette.group.files": "Filer",
"dialog.provider.search.placeholder": "Sök leverantörer",
"dialog.provider.empty": "Inga leverantörer hittades",
"dialog.provider.group.popular": "Populära",
"dialog.provider.group.other": "Andra",
"dialog.provider.custom.label": "Anpassad OpenAI-kompatibel leverantör",
"dialog.provider.tag.recommended": "Rekommenderad",
"dialog.provider.opencode.note": "Kurerade modeller inklusive Claude, GPT, Gemini och mer",
"dialog.provider.opencode.tagline": "Pålitliga optimerade modeller",
"dialog.provider.opencodeGo.tagline": "Lågprisprenumeration för alla",
"dialog.provider.anthropic.note": "Direkt tillgång till Claude-modeller, inklusive Pro och Max",
"dialog.provider.copilot.note": "AI-modeller för kodningshjälp via GitHub Copilot",
"dialog.provider.openai.note": "GPT-modeller för snabba, kapabla allmänna AI-uppgifter",
"dialog.provider.google.note": "Gemini-modeller för snabba, strukturerade svar",
"dialog.provider.openrouter.note": "Få tillgång till alla modeller som stöds från en leverantör",
"dialog.provider.vercel.note": "Enhetlig tillgång till AI-modeller med smart routing",
"dialog.model.select.title": "Välj modell",
"dialog.model.search.placeholder": "Sök efter modeller",
"dialog.model.empty": "Inga modellresultat",
"dialog.model.manage": "Hantera modeller",
"dialog.model.manage.description": "Anpassa vilka modeller som visas i modellväljaren.",
"dialog.model.manage.provider.toggle": "Växla alla {{provider}}-modeller",
"dialog.model.unpaid.freeModels.title": "Gratis modeller tillhandahålls av OpenCode",
"dialog.model.unpaid.addMore.title": "Lägg till fler modeller från populära leverantörer",
"dialog.model.unpaid.viewMoreProviders": "Se fler än 70 leverantörer",
"dialog.provider.viewAll": "Visa fler leverantörer",
"provider.connect.title": "Anslut {{provider}}",
"provider.connect.title.anthropicProMax": "Logga in med Claude Pro/Max",
"provider.connect.selectMethod": "Välj inloggningsmetod för {{provider}}.",
"provider.connect.method.apiKey": "API-nyckel",
"provider.connect.method.browser": "Webbläsare",
"provider.connect.method.headless": "Huvudlös",
"provider.connect.status.inProgress": "Auktorisering pågår...",
"provider.connect.status.waiting": "Väntar på auktorisering...",
"provider.connect.status.failed": "Auktorisering misslyckades: {{error}}",
"provider.connect.apiKey.description":
"Ange din {{provider}}-API-nyckel för att ansluta ditt konto och använda {{provider}}-modeller i OpenCode.",
"provider.connect.apiKey.label": "{{provider}}-API-nyckel",
"provider.connect.apiKey.placeholder": "API-nyckel",
"provider.connect.apiKey.required": "API-nyckel krävs",
"provider.connect.opencodeZen.line1":
"OpenCode Zen ger dig tillgång till en utvald uppsättning pålitliga optimerade modeller för kodningsagenter.",
"provider.connect.opencodeZen.line2":
"Med en enda API-nyckel får du tillgång till modeller som Claude, GPT, Gemini, GLM och mer.",
"provider.connect.opencodeZen.visit.prefix": "Besök ",
"provider.connect.opencodeZen.visit.link": "opencode.ai/zen",
"provider.connect.opencodeZen.visit.suffix": " för att hämta din API-nyckel.",
"provider.connect.oauth.code.visit.prefix": "Besök ",
"provider.connect.oauth.code.visit.link": "denna länk",
"provider.connect.oauth.code.visit.suffix":
" för att hämta auktoriseringskoden som ansluter ditt konto och låter dig använda {{provider}}-modeller i OpenCode.",
"provider.connect.oauth.code.label": "Auktoriseringskod för {{method}}",
"provider.connect.oauth.code.placeholder": "Auktoriseringskod",
"provider.connect.oauth.code.required": "Auktoriseringskod krävs",
"provider.connect.oauth.code.invalid": "Ogiltig auktoriseringskod",
"provider.connect.oauth.auto.visit.prefix": "Besök ",
"provider.connect.oauth.auto.visit.link": "denna länk",
"provider.connect.oauth.auto.visit.suffix":
" och ange koden nedan för att ansluta ditt konto och använda {{provider}}-modeller i OpenCode.",
"provider.connect.oauth.auto.confirmationCode": "Bekräftelsekod",
"provider.connect.toast.connected.title": "{{provider}} ansluten",
"provider.connect.toast.connected.description": "{{provider}}-modeller är nu tillgängliga.",
"provider.custom.title": "Anpassad leverantör",
"provider.custom.unavailable": "Anpassade leverantörer är inte tillgängliga på den här servern",
"provider.custom.description.prefix": "Konfigurera en OpenAI-kompatibel leverantör. Se ",
"provider.custom.description.link": "dokumentationen om leverantörskonfiguration",
"provider.custom.description.suffix": ".",
"provider.custom.field.providerID.label": "Leverantörs-ID",
"provider.custom.field.providerID.placeholder": "minleverantor",
"provider.custom.field.providerID.description": "Små bokstäver, siffror, bindestreck eller understreck",
"provider.custom.field.name.label": "Visningsnamn",
"provider.custom.field.name.placeholder": "Min AI-leverantör",
"provider.custom.field.baseURL.label": "Bas-URL",
"provider.custom.field.baseURL.placeholder": "https://api.myprovider.com/v1",
"provider.custom.field.apiKey.label": "API-nyckel",
"provider.custom.field.apiKey.placeholder": "API-nyckel",
"provider.custom.field.apiKey.description": "Valfritt. Lämna tomt om du hanterar autentisering via HTTP-huvuden.",
"provider.custom.models.label": "Modeller",
"provider.custom.models.id.label": "ID",
"provider.custom.models.id.placeholder": "modell-id",
"provider.custom.models.name.label": "Namn",
"provider.custom.models.name.placeholder": "Visningsnamn",
"provider.custom.models.remove": "Ta bort modellen",
"provider.custom.models.add": "Lägg till modell",
"provider.custom.headers.label": "HTTP-huvuden (valfritt)",
"provider.custom.headers.key.label": "HTTP-huvud",
"provider.custom.headers.key.placeholder": "Namn på HTTP-huvud",
"provider.custom.headers.value.label": "Värde",
"provider.custom.headers.value.placeholder": "värde",
"provider.custom.headers.remove": "Ta bort HTTP-huvud",
"provider.custom.headers.add": "Lägg till HTTP-huvud",
"provider.custom.error.providerID.required": "Leverantörs-ID krävs",
"provider.custom.error.providerID.format": "Använd små bokstäver, siffror, bindestreck eller understreck",
"provider.custom.error.providerID.exists": "Det leverantörs-ID:t finns redan",
"provider.custom.error.name.required": "Visningsnamn krävs",
"provider.custom.error.baseURL.required": "Bas-URL krävs",
"provider.custom.error.baseURL.format": "Måste börja med http:// eller https://",
"provider.custom.error.required": "Obligatoriskt",
"provider.custom.error.duplicate": "Dubblett",
"provider.disconnect.toast.disconnected.title": "{{provider}} frånkopplad",
"provider.disconnect.toast.disconnected.description": "{{provider}}-modeller är inte längre tillgängliga.",
"model.tag.free": "Gratis",
"model.tag.latest": "Senaste",
"model.provider.anthropic": "Anthropic",
"model.provider.openai": "OpenAI",
"model.provider.google": "Google",
"model.provider.xai": "xAI",
"model.provider.meta": "Meta",
"model.input.text": "text",
"model.input.image": "bild",
"model.input.audio": "ljud",
"model.input.video": "video",
"model.input.pdf": "pdf",
"model.tooltip.allows": "Tillåter: {{inputs}}",
"model.tooltip.context.label": "Kontext",
"model.tooltip.inputs": "Indata",
"model.tooltip.model": "Modell",
"model.tooltip.provider": "Leverantör",
"model.tooltip.reasoning": "Resonemang",
"model.tooltip.reasoning.allowed": "Tillåter resonemang",
"model.tooltip.reasoning.none": "Inget resonemang",
"model.tooltip.context": "Kontextgräns {{limit}}",
"common.search.placeholder": "Sök",
"common.goBack": "Navigera tillbaka",
"common.goForward": "Navigera framåt",
"common.loading": "Laddar",
"common.loading.ellipsis": "...",
"common.cancel": "Avbryt",
"common.clear": "Rensa",
"common.open": "Öppna",
"common.connect": "Anslut",
"common.disconnect": "Koppla från",
"common.continue": "Fortsätt",
"common.submit": "Skicka",
"common.save": "Spara",
"common.saving": "Sparar...",
"common.default": "Standard",
"common.attachment": "bilaga",
"prompt.placeholder.shell": "Ange skalkommando... {{example}}",
"prompt.placeholder.normal": 'Fråga vad som helst... "{{example}}"',
"prompt.placeholder.simple": "Fråga vad som helst...",
"prompt.placeholder.summarizeComments": "Sammanfatta kommentarer...",
"prompt.placeholder.summarizeComment": "Sammanfatta kommentar...",
"prompt.mode.shell": "Shell",
"prompt.mode.normal": "Prompt",
"prompt.mode.shell.exit": "esc för att avsluta",
"session.child.promptDisabled": "Det går inte att skicka promptar till underagentsessioner.",
"session.child.backToParent": "Tillbaka till huvudsessionen.",
"prompt.example.1": "Fixa en TODO i kodbasen",
"prompt.example.2": "Vad är den tekniska stacken i det här projektet?",
"prompt.example.3": "Åtgärda trasiga tester",
"prompt.example.4": "Förklara hur autentisering fungerar",
"prompt.example.5": "Hitta och åtgärda säkerhetsbrister",
"prompt.example.6": "Lägg till enhetstester för användartjänsten",
"prompt.example.7": "Refaktorera denna funktion för att bli mer läsbar",
"prompt.example.8": "Vad betyder detta fel?",
"prompt.example.9": "Hjälp mig att felsöka det här problemet",
"prompt.example.10": "Skapa API-dokumentation",
"prompt.example.11": "Optimera databasfrågor",
"prompt.example.12": "Lägg till indatavalidering",
"prompt.example.13": "Skapa en ny komponent för...",
"prompt.example.14": "Hur distribuerar jag det här projektet?",
"prompt.example.15": "Granska min kod för bästa praxis",
"prompt.example.16": "Lägg till felhantering till denna funktion",
"prompt.example.17": "Förklara detta regexmönster",
"prompt.example.18": "Konvertera detta till TypeScript",
"prompt.example.19": "Lägg till loggning i hela kodbasen",
"prompt.example.20": "Vilka beroenden är föråldrade?",
"prompt.example.21": "Hjälp mig att skriva ett migreringsskript",
"prompt.example.22": "Implementera cachning för denna slutpunkt",
"prompt.example.23": "Lägg till paginering till den här listan",
"prompt.example.24": "Skapa ett CLI-kommando för...",
"prompt.example.25": "Hur fungerar miljövariabler här?",
"prompt.popover.emptyResults": "Inga matchande resultat",
"prompt.popover.emptyCommands": "Inga matchande kommandon",
"prompt.dropzone.label": "Släpp bilder, PDF-filer eller textfiler här",
"prompt.dropzone.file.label": "Släpp för att @-omnämna filen",
"prompt.slash.badge.custom": "anpassad",
"prompt.slash.badge.skill": "färdighet",
"prompt.slash.badge.mcp": "mcp",
"prompt.context.active": "aktiv",
"prompt.context.includeActiveFile": "Inkludera aktiv fil",
"prompt.context.removeActiveFile": "Ta bort aktiv fil från kontexten",
"prompt.context.removeFile": "Ta bort filen från kontexten",
"prompt.action.attachFile": "Lägg till filer",
"prompt.menu.addImagesAndFiles": "Lägg till filer och mer",
"prompt.menu.imagesAndFiles": "Bilder och filer",
"prompt.menu.commands": "Kommandon",
"prompt.menu.context": "Kontext",
"prompt.menu.shellCommand": "Skalkommando",
"prompt.attachment.remove": "Ta bort bilagan",
"prompt.action.send": "Skicka",
"prompt.action.stop": "Stoppa",
"prompt.toast.pasteUnsupported.title": "Bilaga som inte stöds",
"prompt.toast.pasteUnsupported.description": "Endast bilder, PDF-filer eller textfiler kan bifogas här.",
"prompt.toast.attachmentDuplicate.title": "Den här filen har redan laddats upp",
"prompt.toast.modelAgentRequired.title": "Välj en agent och modell",
"prompt.toast.modelAgentRequired.description": "Välj en agent och modell innan du skickar en prompt.",
"prompt.toast.worktreeCreateFailed.title": "Det gick inte att skapa worktree",
"prompt.toast.sessionCreateFailed.title": "Det gick inte att skapa session",
"prompt.toast.shellSendFailed.title": "Det gick inte att skicka skalkommandot",
"prompt.toast.commandSendFailed.title": "Det gick inte att skicka kommandot",
"prompt.toast.promptSendFailed.title": "Det gick inte att skicka meddelandet",
"prompt.toast.promptSendFailed.description": "Det gick inte att hämta sessionen",
"dialog.mcp.title": "MCP:er",
"dialog.mcp.description": "{{enabled}} av {{total}} aktiverade",
"dialog.mcp.empty": "Inga MCP:er konfigurerade",
"dialog.lsp.empty": "LSP:er detekteras automatiskt från filtyper",
"dialog.plugins.empty": "Insticksprogram konfigurerade i opencode.json",
"mcp.status.connected": "ansluten",
"mcp.status.failed": "misslyckades",
"mcp.status.needs_auth": "behöver autentisering",
"mcp.status.disabled": "inaktiverad",
"mcp.auth.clickToAuthenticate": "Klicka för att autentisera",
"dialog.fork.empty": "Inga meddelanden att förgrena från",
"dialog.directory.search.placeholder": "Sök i mappar",
"dialog.directory.empty": "Inga mappar hittades",
"dialog.directory.action.selectFile": "Välj fil",
"dialog.directory.action.selectFolder": "Välj mapp",
"dialog.directory.root": "Rotmapp",
"dialog.directory.parent": "Överordnad mapp",
"dialog.directory.readError": "Det går inte att läsa den här mappen",
"app.server.unreachable": "Kunde inte nå {{server}}",
"app.server.retrying": "Försöker igen automatiskt...",
"app.server.otherServers": "Andra servrar",
"dialog.server.title": "Servrar",
"dialog.server.description": "Växla vilken OpenCode-server som denna app ansluter till.",
"dialog.server.search.placeholder": "Sök servrar",
"dialog.server.empty": "Inga servrar ännu",
"dialog.server.add.title": "Lägg till server",
"dialog.server.add.url": "Serveradress",
"dialog.server.add.placeholder": "http://localhost:4096",
"dialog.server.add.error": "Kunde inte ansluta till servern",
"dialog.server.add.checking": "Kontrollerar...",
"dialog.server.add.button": "Lägg till server",
"dialog.server.add.name": "Servernamn (valfritt)",
"dialog.server.add.namePlaceholder": "Localhost",
"dialog.server.add.username": "Användarnamn (valfritt)",
"dialog.server.add.usernamePlaceholder": "användarnamn",
"dialog.server.add.password": "Lösenord (valfritt)",
"dialog.server.add.passwordPlaceholder": "lösenord",
"dialog.server.edit.title": "Redigera server",
"dialog.server.default.title": "Standardserver",
"dialog.server.default.description":
"Anslut till den här servern vid appstart istället för att starta en lokal server. Kräver omstart.",
"dialog.server.default.none": "Ingen server vald",
"dialog.server.default.set": "Ställ in aktuell server som standard",
"dialog.server.default.clear": "Rensa",
"dialog.server.action.remove": "Ta bort servern",
"dialog.server.menu.edit": "Redigera",
"dialog.server.menu.default": "Ställ in som standard",
"dialog.server.menu.defaultRemove": "Ta bort standard",
"dialog.server.menu.delete": "Radera",
"dialog.server.current": "Aktuell server",
"dialog.server.status.default": "Standard",
"wsl.server.add": "Lägg till WSL-server",
"wsl.server.addShort": "Lägg till WSL",
"wsl.server.label": "WSL",
"wsl.server.menu.label": "WSL-server",
"wsl.server.retryStart": "Försök att starta igen",
"wsl.server.updating": "Uppdaterar...",
"wsl.onboarding.step.distro": "Välj distro",
"wsl.onboarding.step.opencode": "OpenCode",
"wsl.onboarding.checkingRuntime": "Kontrollerar WSL...",
"wsl.onboarding.restartRequired": "Windows behöver en omstart för att slutföra installationen av WSL.",
"wsl.onboarding.ready": "WSL är redo.",
"wsl.onboarding.required": "WSL krävs för att fortsätta.",
"wsl.onboarding.checkingDistros": "Kontrollerar distributioner...",
"wsl.onboarding.installingDistro": "Installerar {{distro}}...",
"wsl.onboarding.checkingDistro": "Kontrollerar {{distro}}...",
"wsl.onboarding.listingDistros": "Listar distributioner...",
"wsl.onboarding.distroReady": "{{distro}} är klar.",
"wsl.onboarding.distroNotInstalled": "{{distro}} är inte installerad än.",
"wsl.onboarding.openDistroOnce": "Öppna {{distro}} en gång för att avsluta installationen.",
"wsl.onboarding.finishingDistro": "Slutför installationen för {{distro}}.",
"wsl.onboarding.pickDistro": "Välj en distro eller installera en nedan.",
"wsl.onboarding.checkingOpencode": "Kontrollerar OpenCode...",
"wsl.onboarding.checkingOpencodeIn": "Kontrollerar OpenCode i {{distro}}...",
"wsl.onboarding.updatingOpencode": "Uppdaterar OpenCode...",
"wsl.onboarding.updatingOpencodeIn": "Uppdaterar OpenCode i {{distro}}...",
"wsl.onboarding.updateOpencodeIn": "Uppdatera OpenCode i {{distro}}.",
"wsl.onboarding.updateOpencode": "Uppdatera OpenCode",
"wsl.onboarding.opencodeReadyIn": "OpenCode är redo i {{distro}}.",
"wsl.onboarding.opencodeReady": "OpenCode är redo.",
"wsl.onboarding.installOpencodeIn": "Installera OpenCode i {{distro}}.",
"wsl.onboarding.installOpencode": "Installera OpenCode",
"wsl.onboarding.chooseDistroFirst": "Välj en distro först.",
"wsl.onboarding.loadFailed": "Det gick inte att ladda WSL-tillståndet.",
"wsl.onboarding.loading": "Laddar...",
"wsl.onboarding.installedDistros": "Installerade distros",
"wsl.onboarding.checkAgain": "Kontrollera igen",
"wsl.onboarding.distroStatus.ready": "Redo",
"wsl.onboarding.distroStatus.checking": "Kontrollerar...",
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode är inte installerat",
"wsl.onboarding.distroStatus.missingTools": "Saknar bash, curl",
"wsl.onboarding.distroStatus.unsupported": "Stöds inte · Använd WSL 2",
"wsl.onboarding.needAnotherDistro": "Behöver du en annan distro?",
"wsl.onboarding.needAnotherDistroHint": "Installera en Linux-distribution från WSL-katalogen",
"wsl.onboarding.wslNotInstalled.title": "WSL är inte installerat",
"wsl.onboarding.wslNotInstalled.description":
"WSL (Windows Subsystem for Linux) krävs innan OpenCode kan lägga till en WSL-server",
"wsl.onboarding.wslUnavailable.title": "WSL är inte tillgängligt",
"wsl.onboarding.wslUnavailable.description": "OpenCode kunde inte verifiera WSL på den här maskinen.",
"wsl.onboarding.installWsl": "Installera WSL",
"wsl.onboarding.windowsRestartRequired":
"Starta om Windows för att slutföra installationen av WSL och öppna sedan OpenCode igen.",
"wsl.onboarding.next": "Nästa",
"wsl.onboarding.refresh": "Uppdatera",
"wsl.onboarding.allDistrosAdded": "Alla installerade distros har redan lagts till.",
"wsl.onboarding.noDistros": "Inga distros har upptäckts ännu.",
"wsl.onboarding.install": "Installera",
"wsl.onboarding.installing": "Installerar...",
"wsl.onboarding.installDistro": "Installera distro",
"wsl.onboarding.searchDistros": "Sök efter distributioner",
"wsl.onboarding.wsl2Required": "WSL 2 krävs.",
"wsl.onboarding.toolsRequired": "Denna distro behöver bash och curl.",
"wsl.onboarding.openTerminal": "Öppna terminalen",
"wsl.onboarding.path": "Sökväg: {{path}}",
"wsl.onboarding.notFound": "hittades inte",
"wsl.onboarding.version": "Version: {{version}}",
"wsl.onboarding.unknown": "okänd",
"wsl.onboarding.desktopVersion": "desktop {{version}}",
"wsl.onboarding.versionMismatch": "Den installerade versionen matchar inte versionen av skrivbordsappen.",
"wsl.onboarding.adding": "Lägger till...",
"help.tabs.toast.ariaLabel": "Vi presenterar flikar. Ordna ditt arbete och dina aktiva sessioner med flikar",
"help.tabs.toast.dismiss": "Stäng informationen om flikar",
"help.tabs.title": "Vi presenterar flikar",
"help.tabs.description": "Ordna ditt arbete och dina aktiva sessioner med flikar",
"help.tabs.date": "14 juli",
"help.tabs.introduction": "OpenCode Desktop är nu uppbyggt kring flikar.",
"help.tabs.sessions":
"Starta en ny session på en flik eller öppna en befintlig session från något av dina projekt. Öppna en ny flik när du påbörjar något nytt och stäng den när du är klar.",
"help.tabs.organize":
"Genom att hålla några flikar öppna blir det enklare att ordna dina aktiva sessioner. Byt namn på flikarna till något du kommer ihåg om du tänker behålla dem.",
"help.tabs.home":
"Du hittar alla dina sessioner och projekt på den nya hemskärmen. När du väljer en session öppnas den på en flik.",
"help.tabs.persistence": "När du öppnar appen igen är dina flikar fortfarande öppna.",
"help.tabs.worktrees":
"Den nya designen stöder inte Git Worktrees ännu, men stöd kommer snart. Om du föredrar att fortsätta använda den tidigare layouten kan du därför växla mellan layouterna i Inställningar. Tänk bara på att den nya layouten blir permanent om några veckor.",
"server.row.noUsername": "inget användarnamn",
"dialog.project.edit.title": "Redigera projekt",
"dialog.project.edit.name": "Namn",
"dialog.project.edit.icon": "Ikon",
"dialog.project.edit.icon.alt": "Projektikonen",
"dialog.project.edit.icon.hint": "Klicka eller dra en bild",
"dialog.project.edit.icon.recommended": "Rekommenderat: 128x128px",
"dialog.project.edit.color": "Färg",
"dialog.project.edit.color.select": "Välj färgen {{color}}",
"dialog.project.edit.worktree.startup": "Startskript för arbetsyta",
"dialog.project.edit.worktree.startup.description": "Körs efter att en ny arbetsyta (worktree) har skapats.",
"dialog.project.edit.worktree.startup.placeholder": "t.ex. bun install",
"dialog.releaseNotes.action.getStarted": "Kom igång",
"dialog.releaseNotes.action.next": "Nästa",
"dialog.releaseNotes.action.hideFuture": "Visa inte dessa i framtiden",
"dialog.releaseNotes.media.alt": "Förhandsvisning av version",
"context.breakdown.title": "Kontextfördelning",
"context.breakdown.note":
'Ungefärlig uppdelning av inmatningstokens. "Övrigt" inkluderar verktygsdefinitioner och overhead.',
"context.breakdown.system": "System",
"context.breakdown.user": "Användare",
"context.breakdown.assistant": "Assistent",
"context.breakdown.tool": "Verktygsanrop",
"context.breakdown.other": "Övrigt",
"context.systemPrompt.title": "Systemprompt",
"context.rawMessages.title": "Råmeddelanden",
"context.stats.session": "Session",
"context.stats.messages": "Meddelanden",
"context.stats.provider": "Leverantör",
"context.stats.model": "Modell",
"context.stats.limit": "Kontextgräns",
"context.stats.totalTokens": "Totala tokens",
"context.stats.usage": "Användning",
"context.stats.inputTokens": "Indatatokens",
"context.stats.outputTokens": "Utdatatokens",
"context.stats.reasoningTokens": "Resonemangstokens",
"context.stats.cacheTokens": "Cache-tokens (läs/skriv)",
"context.stats.userMessages": "Användarmeddelanden",
"context.stats.assistantMessages": "Assistentmeddelanden",
"context.stats.totalCost": "Total kostnad",
"context.stats.sessionCreated": "Session skapades",
"context.stats.lastActivity": "Senaste aktivitet",
"context.usage.tokens": "Tokens",
"context.usage.usage": "Användning",
"context.usage.cost": "Kostnad",
"context.usage.clickToView": "Klicka för att visa kontexten",
"context.usage.view": "Visa kontextanvändning",
"language.en": "English",
"language.zh": "简体中文",
"language.zht": "繁體中文",
"language.ko": "한국어",
"language.de": "Deutsch",
"language.es": "Español",
"language.fr": "Français",
"language.da": "Dansk",
"language.ja": "日本語",
"language.pl": "Polski",
"language.ru": "Русский",
"language.ar": "العربية",
"language.no": "Norsk",
"language.br": "Português (Brasil)",
"language.bs": "Bosanski",
"language.uk": "Українська",
"language.th": "ไทย",
"language.tr": "Türkçe",
"toast.language.title": "Språk",
"toast.language.description": "Bytte språk till {{language}}",
"toast.theme.title": "Tema har bytts",
"toast.scheme.title": "Färgschema",
"toast.workspace.enabled.title": "Arbetsytor aktiverade",
"toast.workspace.enabled.description": "Flera worktrees visas nu i sidofältet",
"toast.workspace.disabled.title": "Arbetsytor inaktiverade",
"toast.workspace.disabled.description": "Endast huvudworktreen visas i sidofältet",
"toast.permissions.autoaccept.on.title": "Autoaccepterar behörigheter",
"toast.permissions.autoaccept.on.description": "Behörighetsförfrågningar kommer att godkännas automatiskt",
"toast.permissions.autoaccept.off.title": "Slutade att automatiskt acceptera behörigheter",
"toast.permissions.autoaccept.off.description": "Behörighetsförfrågningar kommer att kräva godkännande",
"toast.model.none.title": "Ingen modell har valts",
"toast.model.none.description": "Anslut en leverantör för att sammanfatta denna session",
"toast.file.loadFailed.title": "Det gick inte att ladda filen",
"toast.file.listFailed.title": "Det gick inte att lista filer",
"toast.context.noLineSelection.title": "Inget radval",
"toast.context.noLineSelection.description": "Välj ett radintervall på en filflik först.",
"toast.session.share.copyFailed.title": "Det gick inte att kopiera URL till urklipp",
"toast.session.share.success.title": "Sessionen har delats",
"toast.session.share.success.description": "Delningsadressen har kopierats till urklipp!",
"toast.session.share.failed.title": "Det gick inte att dela sessionen",
"toast.session.share.failed.description": "Ett fel uppstod när sessionen delades",
"toast.session.unshare.success.title": "Sessionen delas inte längre",
"toast.session.unshare.success.description": "Delningen av sessionen har avslutats!",
"toast.session.unshare.failed.title": "Det gick inte att avsluta delningen",
"toast.session.unshare.failed.description": "Ett fel uppstod när delningen skulle avslutas",
"toast.session.listFailed.title": "Det gick inte att läsa in sessioner för {{project}}",
"toast.project.reloadFailed.title": "Det gick inte att ladda om {{project}}",
"toast.update.title": "Uppdatering tillgänglig",
"toast.update.description": "En ny version av OpenCode ({{version}}) är nu tillgänglig att installera.",
"toast.update.action.installRestart": "Installera och starta om",
"toast.update.action.notYet": "Inte än",
"error.page.title": "Något gick fel",
"error.page.description": "Ett fel uppstod när programmet laddades.",
"error.page.description.localServerStartup": "Ett fel uppstod vid start av den lokala servern.",
"error.page.details.label": "Feldetaljer",
"error.page.action.restart": "Starta om",
"error.page.action.report": "Rapportera fel",
"error.page.action.reported": "Fel rapporterat",
"error.page.action.exportLogs": "Exportera loggar",
"error.page.action.checking": "Kontrollerar...",
"error.page.action.checkUpdates": "Sök efter uppdateringar",
"error.page.action.updateTo": "Uppdatera till {{version}}",
"error.page.circular": "[Circular]",
"error.page.report.prefix": "Rapportera det här felet till OpenCode-teamet",
"error.page.report.discord": "på Discord",
"error.page.version": "Version: {{version}}",
"error.dev.rootNotFound":
"Rotelementet hittades inte. Har du glömt att lägga till det i din index.html? Eller kanske id-attributet är felstavat?",
"error.serverSync.connectFailed": "Kunde inte ansluta till servern. Körs det en server på `{{url}}`?",
"error.serverSDK.noServerAvailable": "Ingen server tillgänglig",
"error.serverSDK.serverNotAvailable": "Servern är inte tillgänglig",
"error.childStore.persistedCacheCreateFailed": "Det gick inte att skapa beständig cache",
"error.childStore.persistedProjectMetadataCreateFailed": "Det gick inte att skapa beständig projektmetadata",
"error.childStore.persistedProjectIconCreateFailed": "Det gick inte att skapa en beständig projektikon",
"error.childStore.storeCreateFailed": "Det gick inte att skapa lagring",
"directory.error.invalidUrl": "Ogiltig katalog i URL.",
"error.chain.unknown": "Okänt fel",
"error.server.invalidConfiguration": "Ogiltig konfiguration",
"error.chain.causedBy": "Orsakas av:",
"error.chain.apiError": "API-fel",
"error.chain.status": "Status: {{status}}",
"error.chain.retryable": "Kan försökas igen: {{retryable}}",
"error.chain.responseBody": "Svarstext:\n{{body}}",
"error.chain.didYouMean": "Menade du: {{suggestions}}",
"error.chain.modelNotFound": "Modellen hittades inte: {{provider}}/{{model}}",
"error.chain.checkConfig": "Kontrollera leverantörs- och modellnamnen i konfigurationen (opencode.json)",
"error.chain.mcpFailed": 'MCP-servern "{{name}}" misslyckades. Obs, OpenCode stöder inte MCP-autentisering ännu.',
"error.chain.providerAuthFailed": "Leverantörsautentisering misslyckades ({{provider}}): {{message}}",
"error.chain.providerInitFailed":
'Det gick inte att initiera leverantören "{{provider}}". Kontrollera autentiseringsuppgifter och konfiguration.',
"error.chain.configJsonInvalid": "Konfigurationsfilen på {{path}} är inte giltig JSON(C)",
"error.chain.configJsonInvalidWithMessage": "Konfigurationsfilen på {{path}} är inte giltig JSON(C): {{message}}",
"error.chain.configDirectoryTypo":
'Katalogen "{{dir}}" i {{path}} är inte giltig. Byt namn på katalogen till "{{suggestion}}" eller ta bort den. Detta är ett vanligt stavfel.',
"error.chain.configFrontmatterError": "Det gick inte att analysera frontmatter i {{path}}:\n{{message}}",
"error.chain.configInvalid": "Konfigurationsfilen på {{path}} är ogiltig",
"error.chain.configInvalidWithMessage": "Konfigurationsfilen på {{path}} är ogiltig: {{message}}",
"notification.permission.title": "Behörighet krävs",
"notification.permission.description": "{{sessionTitle}} i {{projectName}} behöver behörighet",
"notification.question.title": "Fråga",
"notification.question.description": "{{sessionTitle}} i {{projectName}} har en fråga",
"notification.action.goToSession": "Gå till session",
"notification.session.responseReady.title": "Svar redo",
"notification.session.error.title": "Sessionsfel",
"notification.session.error.fallbackDescription": "Ett fel uppstod",
"home.recentProjects": "Senaste projekten",
"home.empty.title": "Inga senaste projekt",
"home.empty.description": "Kom igång genom att öppna ett lokalt projekt",
"home.title": "Hem",
"home.projects": "Projekt",
"home.project.add": "Lägg till projekt",
"home.recentlyClosed": "Nyligen stängda",
"home.server.collapse": "Fäll ihop serverprojekt",
"home.server.expand": "Fäll ut serverprojekt",
"home.sessions.search.placeholder": "Sök sessioner",
"home.sessions.search.placeholder.scoped": "Sök sessioner i {{scope}}",
"home.sessions.search.sessions": "Sessioner",
"home.sessions.search.noResults": "Inga sessioner hittades för {{query}}",
"home.sessions.empty": "Inget här ännu",
"home.sessions.empty.description": "Skapa en session för att komma igång",
"home.sessions.group.today": "I dag",
"home.sessions.group.yesterday": "I går",
"home.sessions.group.older": "Äldre",
"home.providerTip": "Anslut till 75+ leverantörer för att använda andra modeller, inklusive Claude, GPT, Gemini, etc",
"session.tab.session": "Session",
"session.tab.review": "Granskning",
"session.tab.context": "Kontext",
"session.tab.unknown": "Okänd session",
"session.panel.reviewAndFiles": "Granskning och filer",
"session.error.notFound": "Denna session kan inte hittas",
"session.error.notFound.description": "Den här fliken pekar på en session som inte längre finns på den här servern.",
"session.error.notFound.closeTab": "Stäng flik",
"session.error.serverConnection": "Det går inte att ansluta till den här servern",
"session.review.filesChanged": "Ändrade filer: {{count}}",
"session.review.change.one": "Ändring",
"session.review.change.other": "Ändringar",
"session.review.loadingChanges": "Läser in ändringar...",
"session.review.empty": "Inga ändringar i denna session ännu",
"session.review.noVcs": "Inget Git-versionskontrollsystem upptäcktes, ändringar visas inte",
"session.review.noVcs.createGit.title": "Skapa ett Git-arkiv",
"session.review.noVcs.createGit.description": "Spåra, granska och ångra ändringar i det här projektet",
"session.review.noVcs.createGit.actionLoading": "Skapar Git-arkiv...",
"session.review.noVcs.createGit.action": "Skapa Git-arkiv",
"session.review.noSnapshot":
"Spårning av ögonblicksbilder är inaktiverad i konfigurationen, så sessionsändringar är inte tillgängliga",
"session.review.noChanges": "Inga ändringar",
"session.review.noUncommittedChanges": "Inga ändringar som inte har checkats in ännu",
"session.review.noBranchChanges": "Inga grenändringar ännu",
"session.files.selectToOpen": "Välj en fil att öppna",
"session.files.all": "Alla filer",
"session.files.empty": "Inga filer",
"session.files.binaryContent": "Binär fil (innehåll kan inte visas)",
"session.messages.renderEarlier": "Återge tidigare meddelanden",
"session.messages.loadingEarlier": "Läser in tidigare meddelanden...",
"session.messages.loadEarlier": "Ladda tidigare meddelanden",
"session.messages.loading": "Läser in meddelanden...",
"session.messages.jumpToLatest": "Hoppa till senaste",
"session.context.addToContext": "Lägg till {{selection}} i kontexten",
"session.todo.title": "Att göra",
"session.todo.collapse": "Fäll ihop",
"session.todo.expand": "Fäll ut",
"session.todo.progress": "{{done}} av {{total}} uppgifter slutförda",
"session.question.progress": "{{current}} av {{total}} frågor",
"session.question.minimize": "Minimera frågan",
"session.question.restore": "Återställ fråga",
"session.question.pending.one": "{{count}} väntande fråga",
"session.question.pending.other": "{{count}} väntande frågor",
"session.followupDock.summary.one": "{{count}} meddelande i kö",
"session.followupDock.summary.other": "{{count}} meddelanden i kö",
"session.followupDock.sendNow": "Skicka nu",
"session.followupDock.edit": "Redigera",
"session.followupDock.collapse": "Fäll ihop köade meddelanden",
"session.followupDock.expand": "Fäll ut köade meddelanden",
"session.revertDock.summary.one": "{{count}} återställt meddelande",
"session.revertDock.summary.other": "{{count}} återställda meddelanden",
"session.revertDock.collapse": "Fäll ihop återställda meddelanden",
"session.revertDock.expand": "Fäll ut återställda meddelanden",
"session.revertDock.restore": "Återställ meddelande",
"session.new.title": "Bygg vad som helst",
"session.new.project.new": "Nytt projekt",
"session.new.project.search": "Sök efter projekt",
"session.new.project.add": "Lägg till projekt",
"session.new.worktree.main": "Huvudgren",
"session.new.worktree.mainWithBranch": "Huvudgren ({{branch}})",
"session.new.worktree.create": "Skapa ny worktree",
"session.new.workspace.runIn": "Kör sessionen i",
"session.new.workspace.triggerLocal": "Lokal",
"session.new.workspace.local": "Lokalt arkiv",
"session.new.workspace.existing": "Arbetsyta...",
"session.new.git.none": "Ingen Git",
"session.new.lastModified": "Senast ändrad",
"session.header.search.placeholder": "Sök {{project}}",
"session.header.searchFiles": "Sök filer",
"session.header.openIn": "Öppna i",
"session.header.open.action": "Öppna {{app}}",
"session.header.open.ariaLabel": "Öppna i {{app}}",
"session.header.open.menu": "Öppna alternativ",
"session.header.open.copyPath": "Kopiera sökväg",
"session.header.open.finder": "Finder",
"session.header.open.fileExplorer": "Filutforskaren",
"session.header.open.fileManager": "Filhanteraren",
"session.header.reveal.finder": "Visa i Finder",
"session.header.reveal.fileExplorer": "Visa i Utforskaren",
"session.header.reveal.containingFolder": "Öppna överordnad mapp",
"session.header.open.app.vscode": "VS Code",
"session.header.open.app.cursor": "Cursor",
"session.header.open.app.zed": "Zed",
"session.header.open.app.textmate": "TextMate",
"session.header.open.app.antigravity": "Antigravity",
"session.header.open.app.terminal": "Terminal",
"session.header.open.app.iterm2": "iTerm2",
"session.header.open.app.ghostty": "Ghostty",
"session.header.open.app.warp": "Warp",
"session.header.open.app.xcode": "Xcode",
"session.header.open.app.androidStudio": "Android Studio",
"session.header.open.app.powershell": "PowerShell",
"session.header.open.app.sublimeText": "Sublime Text",
"status.popover.trigger": "Status",
"status.popover.ariaLabel": "Serverkonfigurationer",
"status.popover.tab.servers": "Servrar",
"status.popover.tab.mcp": "MCP",
"status.popover.tab.lsp": "LSP",
"status.popover.tab.plugins": "Insticksprogram",
"status.popover.action.manageServers": "Hantera servrar",
"session.share.popover.title": "Publicera på webben",
"session.share.popover.description.shared":
"Denna session är offentlig på webben. Den är tillgänglig för alla med länken.",
"session.share.popover.description.unshared":
"Dela sessionen offentligt på webben. Den kommer att vara tillgänglig för alla med länken.",
"session.share.action.share": "Dela",
"session.share.action.publish": "Publicera",
"session.share.action.publishing": "Publicerar...",
"session.share.action.unpublish": "Avpublicera",
"session.share.action.unpublishing": "Avpublicerar...",
"session.share.action.view": "Visa",
"session.share.copy.copied": "Kopierad",
"session.share.copy.copyLink": "Kopiera länk",
"lsp.tooltip.none": "Inga LSP-servrar",
"lsp.label.connected": "{{count}} LSP",
"prompt.loading": "Laddar prompt...",
"terminal.loading": "Laddar terminal...",
"terminal.title": "Terminal",
"terminal.title.numbered": "Terminal {{number}}",
"terminal.close": "Stäng terminalen",
"terminal.connectionLost.title": "Anslutning förlorad",
"terminal.connectionLost.abnormalClose": "WebSocket stängdes onormalt: {{code}}",
"terminal.connectionLost.description": "Terminalanslutningen avbröts. Detta kan hända när servern startar om.",
"terminal.connectTicket.csrfError":
"PTY-anslutningsbiljetten avvisades vid ursprungs- eller CSRF-kontrollen. Kontrollera serverns CORS-konfiguration.",
"terminal.connectTicket.statusError": "PTY-anslutningsbiljetten misslyckades med status {{status}}",
"titlebar.update": "Uppdatera",
"titlebar.updateVersion": "Uppdatera {{version}}",
"common.closeTab": "Stäng fliken",
"common.dismiss": "Avfärda",
"common.moreCountSuffix": " (+{{count}} till)",
"common.requestFailed": "Begäran misslyckades",
"common.moreOptions": "Fler alternativ",
"common.learnMore": "Läs mer",
"common.rename": "Byt namn",
"common.reset": "Återställ",
"common.archive": "Arkivera",
"common.delete": "Radera",
"common.close": "Stäng",
"common.edit": "Redigera",
"common.loadMore": "Ladda mer",
"common.key.esc": "ESC",
"common.key.ctrl": "Ctrl",
"common.key.alt": "Alt",
"common.key.shift": "Shift",
"common.key.meta": "Meta",
"common.key.space": "Mellanslag",
"common.key.backspace": "Backsteg",
"common.key.enter": "Enter",
"common.key.tab": "Tab",
"common.key.delete": "Delete",
"common.key.home": "Home",
"common.key.end": "End",
"common.key.pageUp": "Page Up",
"common.key.pageDown": "Page Down",
"common.key.insert": "Insert",
"common.unknown": "okänd",
"common.time.justNow": "Just nu",
"common.time.minutesAgo.short": "{{count}}m sedan",
"common.time.hoursAgo.short": "{{count}}h sedan",
"common.time.daysAgo.short": "{{count}}d sedan",
"sidebar.menu.toggle": "Växla meny",
"sidebar.nav.projectsAndSessions": "Projekt och sessioner",
"sidebar.settings": "Inställningar",
"sidebar.help": "Hjälp",
"sidebar.workspaces.enable": "Aktivera arbetsytor",
"sidebar.workspaces.disable": "Inaktivera arbetsytor",
"sidebar.gettingStarted.title": "Kom igång",
"sidebar.gettingStarted.line1": "OpenCode innehåller gratis modeller så att du kan börja direkt.",
"sidebar.gettingStarted.line2": "Anslut valfri leverantör för att använda modeller, inkl. Claude, GPT, Gemini etc.",
"sidebar.project.recentSessions": "Senaste sessioner",
"sidebar.project.viewAllSessions": "Se alla sessioner",
"sidebar.project.clearNotifications": "Rensa aviseringar",
"sidebar.empty.title": "Inga projekt öppna",
"sidebar.empty.description": "Öppna ett projekt för att komma igång",
"debugBar.ariaLabel": "Utvecklingsprestandadiagnostik",
"debugBar.na": "n/a",
"debugBar.nav.label": "NAV",
"debugBar.nav.tip":
"Senast slutförda ruttövergång som berör en sessionssida, mätt från routerns start till första bildrutans rendering efter att övergången har slutförts.",
"debugBar.fps.label": "FPS",
"debugBar.fps.tip": "Rullande bilder per sekund under de senaste 5 sekunderna.",
"debugBar.frame.label": "FRAME",
"debugBar.frame.tip": "Sämsta bildtid under de senaste 5 sekunderna.",
"debugBar.jank.label": "JANK",
"debugBar.jank.tip": "Bildrutor över 32 ms under de senaste 5 sekunderna.",
"debugBar.long.label": "LONG",
"debugBar.long.tip":
"Blockerad tid och antal långa uppgifter under de senaste 5 sekunderna. Längsta uppgift: {{max}}.",
"debugBar.delay.label": "DELAY",
"debugBar.delay.tip": "Längsta observerade inmatningsfördröjning under de senaste 5 sekunderna.",
"debugBar.inp.label": "INP",
"debugBar.inp.tip":
"Ungefärlig interaktionslängd under de senaste 5 sekunderna. Detta är INP-liknande, inte den officiella Web Vitals INP.",
"debugBar.cls.label": "CLS",
"debugBar.cls.tip": "Kumulativ layoutförskjutning för den aktuella appens livslängd.",
"debugBar.mem.label": "MEM",
"debugBar.mem.tipUnavailable": "Använd JS-heap jämfört med heapgränsen. Endast Chromium.",
"debugBar.mem.tip": "Använd JS-heap jämfört med heapgränsen. {{used}} av {{limit}}.",
"app.name.desktop": "OpenCode Desktop",
"settings.section.desktop": "Skrivbord",
"settings.section.server": "Server",
"settings.tab.general": "Allmänt",
"settings.tab.shortcuts": "Kortkommandon",
"settings.desktop.section.wsl": "WSL",
"settings.desktop.wsl.title": "WSL-integration",
"settings.desktop.wsl.description": "Kör OpenCode-servern inuti WSL på Windows.",
"settings.general.section.appearance": "Utseende",
"settings.general.section.advanced": "Avancerat",
"settings.general.section.notifications": "Systemaviseringar",
"settings.general.section.updates": "Uppdateringar",
"settings.general.section.sounds": "Ljudeffekter",
"settings.general.section.feed": "Flöde",
"settings.general.section.display": "Visning",
"settings.general.row.language.title": "Språk",
"settings.general.row.language.description": "Ändra visningsspråket för OpenCode",
"settings.general.row.shell.title": "Terminalskal",
"settings.general.row.shell.description": "Skal som används av terminalen och agentverktygen",
"settings.general.row.shell.autoDefault": "Auto (standard)",
"settings.general.row.shell.terminalOnly": "endast terminal",
"settings.general.row.appearance.title": "Utseende",
"settings.general.row.appearance.description": "Anpassa hur OpenCode ser ut på din enhet",
"settings.general.row.colorScheme.title": "Färgschema",
"settings.general.row.colorScheme.description": "Välj om OpenCode följer system-, ljus- eller mörktemat",
"settings.general.row.theme.title": "Tema",
"settings.general.row.theme.description": "Anpassa OpenCodes tema.",
"settings.general.row.font.title": "Kodtypsnitt",
"settings.general.row.font.description": "Anpassa teckensnittet som används i kodblock",
"settings.general.row.terminalFont.title": "Terminaltypsnitt",
"settings.general.row.terminalFont.description": "Anpassa teckensnittet som används i terminalen",
"settings.general.row.uiFont.title": "UI-teckensnitt",
"settings.general.row.uiFont.description": "Anpassa typsnittet som används i hela gränssnittet",
"settings.general.row.followup.title": "Uppföljningsbeteende",
"settings.general.row.followup.description": "Välj om uppföljningsmeddelanden ska styra direkt eller vänta i kö",
"settings.general.row.followup.option.queue": "Kö",
"settings.general.row.followup.option.steer": "Styr",
"settings.general.row.showFileTree.title": "Filträd",
"settings.general.row.showFileTree.description": "Visa filträdspanelen i sessioner",
"settings.general.row.showNavigation.title": "Navigationskontroller",
"settings.general.row.showNavigation.description": "Visa bakåt- och framåtknapparna i skrivbordets namnlist",
"settings.general.row.showSearch.title": "Kommandopalett",
"settings.general.row.showSearch.description": "Visa sök- och kommandopalettens knapp i namnlisten",
"settings.general.row.showTerminal.title": "Terminal",
"settings.general.row.showTerminal.description": "Visa terminalknappen i skrivbordets namnlist",
"settings.general.row.showStatus.title": "Serverstatus",
"settings.general.row.showStatus.description": "Visa serverstatusknappen i namnlisten",
"settings.general.row.mobileTitlebarBottom.title": "Bottennavigering",
"settings.general.row.mobileTitlebarBottom.description":
"Placera titelfältet och sessionsflikarna längst ned på skärmen på mobilen",
"settings.general.row.showCustomAgents.title": "Visa agent",
"settings.general.row.showCustomAgents.description":
"Växla mellan agenter i inmatningsfältet. När alternativet är dolt används agenten Bygg som standard.",
"settings.general.row.reasoningSummaries.title": "Visa resonemangssammanfattningar",
"settings.general.row.reasoningSummaries.description": "Visa modellresonemangssammanfattningar i tidslinjen",
"settings.general.row.shellToolPartsExpanded.title": "Expandera skalverktygsdelar",
"settings.general.row.shellToolPartsExpanded.description":
"Visa skalverktygsdelar expanderade som standard på tidslinjen",
"settings.general.row.editToolPartsExpanded.title": "Fäll ut delar för redigeringsverktyg",
"settings.general.row.editToolPartsExpanded.description":
"Visa delar för redigerings-, skriv- och patchverktyg utfällda som standard i tidslinjen",
"settings.general.row.newInterface.title": "Ny layout",
"settings.general.row.newInterface.badge": "Ny",
"settings.general.row.newInterface.description":
"Använd de nya flikarna och hemlayouten. Växla mellan layouter under en begränsad tid.",
"settings.general.row.newInterfaceNotice.title": "Du använder nu ny layout",
"settings.general.row.newInterfaceNotice.description": "Den tidigare layouten är inte längre tillgänglig",
"settings.general.row.newInterfaceNotice.dismiss": "Avfärda",
"settings.general.row.pinchZoom.title": "Nyp för att zooma",
"settings.general.row.pinchZoom.description": "Tillåt nypgester på styrplattan och Ctrl-rullning för att zooma",
"settings.general.row.wayland.title": "Använd inbyggt Wayland-stöd",
"settings.general.row.wayland.description": "Inaktivera X11-reservläget på Wayland. Kräver omstart.",
"settings.general.row.wayland.tooltip":
"På Linux med skärmar som har olika uppdateringsfrekvens kan inbyggt Wayland-stöd vara stabilare.",
"settings.general.row.releaseNotes.title": "Versionsinformation",
"settings.general.row.releaseNotes.description": "Visa popup-fönster för vad som är nytt efter uppdateringar",
"settings.updates.row.startup.title": "Sök efter uppdateringar vid start",
"settings.updates.row.startup.description": "Sök automatiskt efter uppdateringar när OpenCode startas",
"settings.updates.row.check.title": "Sök efter uppdateringar",
"settings.updates.row.check.description": "Sök manuellt efter uppdateringar och installera dem om de är tillgängliga",
"settings.updates.action.checkNow": "Kontrollera nu",
"settings.updates.action.checking": "Kontrollerar...",
"settings.updates.action.downloading": "Laddar ned...",
"settings.updates.action.installing": "Installerar...",
"settings.updates.toast.latest.title": "Du är uppdaterad",
"settings.updates.toast.latest.description": "Du kör den senaste versionen av OpenCode.",
"sound.option.none": "Inget",
"sound.option.alert01": "Varning 01",
"sound.option.alert02": "Varning 02",
"sound.option.alert03": "Varning 03",
"sound.option.alert04": "Varning 04",
"sound.option.alert05": "Varning 05",
"sound.option.alert06": "Varning 06",
"sound.option.alert07": "Alarm 07",
"sound.option.alert08": "Alarm 08",
"sound.option.alert09": "Alarm 09",
"sound.option.alert10": "Varning 10",
"sound.option.bipbop01": "Bip-bop 01",
"sound.option.bipbop02": "Bip-bop 02",
"sound.option.bipbop03": "Bip-bop 03",
"sound.option.bipbop04": "Bip-bop 04",
"sound.option.bipbop05": "Bip-bop 05",
"sound.option.bipbop06": "Bip-bop 06",
"sound.option.bipbop07": "Bip-bop 07",
"sound.option.bipbop08": "Bip-bop 08",
"sound.option.bipbop09": "Bip-bop 09",
"sound.option.bipbop10": "Bip-bop 10",
"sound.option.staplebops01": "Staplebops 01",
"sound.option.staplebops02": "Staplebops 02",
"sound.option.staplebops03": "Staplebops 03",
"sound.option.staplebops04": "Staplebops 04",
"sound.option.staplebops05": "Staplebops 05",
"sound.option.staplebops06": "Staplebops 06",
"sound.option.staplebops07": "Staplebops 07",
"sound.option.nope01": "Nej 01",
"sound.option.nope02": "Nej 02",
"sound.option.nope03": "Nej 03",
"sound.option.nope04": "Nej 04",
"sound.option.nope05": "Nej 05",
"sound.option.nope06": "Nej 06",
"sound.option.nope07": "Nej 07",
"sound.option.nope08": "Nej 08",
"sound.option.nope09": "Nej 09",
"sound.option.nope10": "Nej 10",
"sound.option.nope11": "Nej 11",
"sound.option.nope12": "Nej 12",
"sound.option.yup01": "Japp 01",
"sound.option.yup02": "Japp 02",
"sound.option.yup03": "Japp 03",
"sound.option.yup04": "Japp 04",
"sound.option.yup05": "Japp 05",
"sound.option.yup06": "Japp 06",
"settings.general.notifications.agent.title": "Agent",
"settings.general.notifications.agent.description":
"Visa en systemavisering när agenten är klar eller behöver uppmärksamhet",
"settings.general.notifications.permissions.title": "Behörigheter",
"settings.general.notifications.permissions.description": "Visa systemavisering när en behörighet krävs",
"settings.general.notifications.errors.title": "Fel",
"settings.general.notifications.errors.description": "Visa systemavisering när ett fel uppstår",
"settings.general.sounds.agent.title": "Agent",
"settings.general.sounds.agent.description": "Spela upp ett ljud när agenten är klar eller behöver uppmärksamhet",
"settings.general.sounds.permissions.title": "Behörigheter",
"settings.general.sounds.permissions.description": "Spela upp ett ljud när en behörighet krävs",
"settings.general.sounds.errors.title": "Fel",
"settings.general.sounds.errors.description": "Spela upp ljud när ett fel uppstår",
"settings.shortcuts.title": "Kortkommandon",
"settings.shortcuts.reset.button": "Återställ till standardinställningar",
"settings.shortcuts.reset.toast.title": "Kortkommandon återställda",
"settings.shortcuts.reset.toast.description": "Kortkommandon har återställts till standardinställningarna.",
"settings.shortcuts.conflict.title": "Kortkommandot används redan",
"settings.shortcuts.conflict.description": "{{keybind}} är redan tilldelat till {{titles}}.",
"settings.shortcuts.unassigned": "Otilldelad",
"settings.shortcuts.pressKeys": "Tryck på tangenter",
"settings.shortcuts.search.placeholder": "Sök kortkommandon",
"settings.shortcuts.search.empty": "Inga kortkommandon hittades",
"settings.shortcuts.group.general": "Allmänt",
"settings.shortcuts.group.session": "Session",
"settings.shortcuts.group.navigation": "Navigering",
"settings.shortcuts.group.modelAndAgent": "Modell och agent",
"settings.shortcuts.group.terminal": "Terminal",
"settings.shortcuts.group.prompt": "Prompt",
"settings.providers.title": "Leverantörer",
"settings.providers.description": "Leverantörsinställningar kommer att kunna konfigureras här.",
"settings.providers.section.connected": "Anslutna leverantörer",
"settings.providers.connected.empty": "Inga anslutna leverantörer",
"settings.providers.connected.environmentDescription": "Anslutna via dina miljövariabler",
"settings.providers.section.popular": "Populära leverantörer",
"settings.providers.custom.description": "Lägg till en OpenAI-kompatibel leverantör genom bas-URL.",
"settings.providers.tag.environment": "Miljö",
"settings.providers.tag.config": "Konfiguration",
"settings.providers.tag.custom": "Anpassad",
"settings.providers.tag.other": "Övrigt",
"settings.models.title": "Modeller",
"settings.models.description": "Modellinställningar kommer att kunna konfigureras här.",
"settings.agents.title": "Agenter",
"settings.agents.description": "Agentinställningar kommer att kunna konfigureras här.",
"settings.commands.title": "Kommandon",
"settings.commands.description": "Kommandoinställningarna kommer att kunna konfigureras här.",
"settings.mcp.title": "MCP",
"settings.mcp.description": "MCP-inställningar kommer att kunna konfigureras här.",
"settings.permissions.title": "Behörigheter",
"settings.permissions.description": "Kontrollera vilka verktyg servern kan använda som standard.",
"settings.permissions.section.tools": "Verktyg",
"settings.permissions.toast.updateFailed.title": "Det gick inte att uppdatera behörigheter",
"settings.permissions.action.allow": "Tillåt",
"settings.permissions.action.ask": "Fråga",
"settings.permissions.action.deny": "Neka",
"settings.permissions.tool.read.title": "Läs",
"settings.permissions.tool.read.description": "Läsa en fil (matchar filsökvägen)",
"settings.permissions.tool.edit.title": "Redigera",
"settings.permissions.tool.edit.description": "Ändra filer, inklusive redigeringar, skrivningar och patchar",
"settings.permissions.tool.glob.title": "Glob",
"settings.permissions.tool.glob.description": "Matcha filer med globmönster",
"settings.permissions.tool.grep.title": "Grep",
"settings.permissions.tool.grep.description": "Sök filinnehåll med hjälp av reguljära uttryck",
"settings.permissions.tool.list.title": "Lista",
"settings.permissions.tool.list.description": "Lista filer i en katalog",
"settings.permissions.tool.bash.title": "Bash",
"settings.permissions.tool.bash.description": "Kör skalkommandon",
"settings.permissions.tool.task.title": "Uppgift",
"settings.permissions.tool.task.description": "Starta underagenter",
"settings.permissions.tool.skill.title": "Färdighet",
"settings.permissions.tool.skill.description": "Ladda en färdighet efter namn",
"settings.permissions.tool.lsp.title": "LSP",
"settings.permissions.tool.lsp.description": "Kör språkserverfrågor",
"settings.permissions.tool.todowrite.title": "Skriv att göra-lista",
"settings.permissions.tool.todowrite.description": "Uppdatera att göra-listan",
"settings.permissions.tool.webfetch.title": "Webbhämtning",
"settings.permissions.tool.webfetch.description": "Hämta innehåll från en URL",
"settings.permissions.tool.websearch.title": "Webbsökning",
"settings.permissions.tool.websearch.description": "Sök på webben",
"settings.permissions.tool.external_directory.title": "Extern katalog",
"settings.permissions.tool.external_directory.description": "Få åtkomst till filer utanför projektkatalogen",
"settings.permissions.tool.doom_loop.title": "Doom Loop",
"settings.permissions.tool.doom_loop.description": "Upptäck upprepade verktygsanrop med identiska indata",
"session.delete.failed.title": "Det gick inte att ta bort sessionen",
"session.delete.title": "Ta bort session",
"session.delete.confirm": 'Ta bort session "{{name}}"?',
"session.delete.button": "Ta bort session",
"workspace.new": "Ny arbetsyta",
"workspace.type.local": "lokal",
"workspace.type.sandbox": "sandlåda",
"workspace.create.failed.title": "Det gick inte att skapa arbetsyta",
"workspace.delete.failed.title": "Det gick inte att ta bort arbetsytan",
"workspace.resetting.title": "Återställer arbetsytan",
"workspace.resetting.description": "Detta kan ta en minut.",
"workspace.reset.failed.title": "Det gick inte att återställa arbetsytan",
"workspace.reset.success.title": "Arbetsytan har återställts",
"workspace.reset.success.description": "Arbetsytan matchar nu standardgrenen.",
"workspace.error.stillPreparing": "Arbetsytan förbereds fortfarande",
"workspace.status.checking": "Söker efter osammanslagna ändringar...",
"workspace.status.error": "Det gick inte att verifiera git-status.",
"workspace.status.clean": "Inga osammanslagna ändringar upptäcktes.",
"workspace.status.dirty": "Osammanslagna ändringar upptäcktes i den här arbetsytan.",
"workspace.delete.title": "Ta bort arbetsyta",
"workspace.delete.confirm": 'Ta bort arbetsytan "{{name}}"?',
"workspace.delete.button": "Ta bort arbetsyta",
"workspace.reset.title": "Återställ arbetsytan",
"workspace.reset.confirm": 'Återställa arbetsytan "{{name}}"?',
"workspace.reset.button": "Återställ arbetsytan",
"workspace.reset.archived.none": "Inga aktiva sessioner kommer att arkiveras.",
"workspace.reset.archived.one": "1 session kommer att arkiveras.",
"workspace.reset.archived.many": "{{count}} sessioner kommer att arkiveras.",
"workspace.reset.note": "Detta kommer att återställa arbetsytan så att den matchar standardgrenen.",
}
+194 -65
View File
@@ -1,4 +1,102 @@
export const dict = {
"desktop.menu.app": "OpenCode",
"desktop.menu.file": "ไฟล์",
"desktop.menu.edit": "แก้ไข",
"desktop.menu.view": "มุมมอง",
"desktop.menu.go": "ไป",
"desktop.menu.window": "หน้าต่าง",
"desktop.menu.help": "วิธีใช้",
"desktop.menu.checkForUpdates": "ตรวจหาการอัปเดต...",
"desktop.menu.settings": "การตั้งค่า",
"desktop.menu.reloadWebview": "โหลด Webview ใหม่",
"desktop.menu.restart": "เริ่มการทำงานใหม่",
"desktop.menu.exportLogs": "ส่งออกบันทึก...",
"desktop.menu.newSession": "เซสชันใหม่",
"desktop.menu.openProject": "เปิดโปรเจกต์...",
"desktop.menu.newWindow": "หน้าต่างใหม่",
"desktop.menu.closeWindow": "ปิดหน้าต่าง",
"desktop.menu.undo": "เลิกทำ",
"desktop.menu.redo": "ทำซ้ำ",
"desktop.menu.cut": "ตัด",
"desktop.menu.copy": "คัดลอก",
"desktop.menu.paste": "วาง",
"desktop.menu.delete": "ลบ",
"desktop.menu.selectAll": "เลือกทั้งหมด",
"desktop.menu.toggleSidebar": "สลับแถบด้านข้าง",
"desktop.menu.toggleTerminal": "สลับเทอร์มินัล",
"desktop.menu.toggleFileTree": "สลับแผนผังไฟล์",
"desktop.menu.reload": "โหลดใหม่",
"desktop.menu.toggleDeveloperTools": "สลับเครื่องมือสำหรับนักพัฒนา",
"desktop.menu.actualSize": "ขนาดจริง",
"desktop.menu.zoomIn": "ขยาย",
"desktop.menu.zoomOut": "ย่อ",
"desktop.menu.toggleFullScreen": "สลับโหมดเต็มหน้าจอ",
"desktop.menu.back": "ย้อนกลับ",
"desktop.menu.forward": "ไปข้างหน้า",
"desktop.menu.previousSession": "เซสชันก่อนหน้า",
"desktop.menu.nextSession": "เซสชันถัดไป",
"desktop.menu.previousProject": "โปรเจกต์ก่อนหน้า",
"desktop.menu.nextProject": "โปรเจกต์ถัดไป",
"desktop.menu.minimize": "ย่อหน้าต่าง",
"desktop.menu.maximize": "ขยายหน้าต่าง",
"desktop.menu.documentation": "เอกสาร OpenCode",
"desktop.menu.supportForum": "ฟอรัมสนับสนุน",
"desktop.menu.shareFeedback": "ส่งข้อคิดเห็น",
"desktop.menu.reportBug": "รายงานข้อบกพร่อง",
"desktop.menu.ariaLabel": "เมนู OpenCode",
"desktop.updater.dialog.checkFailed.message": "การตรวจหาการอัปเดตล้มเหลว",
"desktop.updater.dialog.checkFailed.title": "ข้อผิดพลาดในการอัปเดต",
"desktop.updater.dialog.upToDate.message": "คุณกำลังใช้เวอร์ชันล่าสุด",
"desktop.updater.dialog.upToDate.title": "ไม่มีการอัปเดต",
"desktop.updater.dialog.ready.message": "ดาวน์โหลดการอัปเดต {{version}} แล้ว เริ่มการทำงานใหม่ตอนนี้หรือไม่",
"desktop.updater.dialog.ready.title": "พร้อมอัปเดต",
"desktop.updater.dialog.restart": "เริ่มการทำงานใหม่",
"desktop.updater.dialog.later": "ภายหลัง",
"desktop.recovery.action.relaunch": "เปิดอีกครั้ง",
"desktop.recovery.action.exportLogs": "ส่งออกบันทึก",
"desktop.recovery.action.keepWaiting": "รอต่อไป",
"desktop.recovery.action.quit": "ออก",
"desktop.recovery.loadFailed": "โหลด OpenCode ไม่สำเร็จ",
"desktop.recovery.terminated": "หน้าต่าง OpenCode หยุดทำงานโดยไม่คาดคิด",
"desktop.recovery.unresponsive": "OpenCode ไม่ตอบสนอง",
"desktop.recovery.unresponsive.detail": "คุณสามารถเปิดแอปอีกครั้ง เปิดบันทึก หรือรอต่อไป",
"desktop.recovery.loadFailed.detail": "หน้าต่าง: {{window}}\nURL: {{url}}\nข้อผิดพลาด: {{code}} {{description}}",
"desktop.recovery.terminated.detail": "หน้าต่าง: {{window}}\nสาเหตุ: {{reason}}\nรหัส: {{code}}",
"desktop.recovery.unknown": "<ไม่ทราบ>",
"desktop.dialog.chooseFolder": "เลือกโฟลเดอร์",
"desktop.dialog.chooseFile": "เลือกไฟล์",
"desktop.dialog.saveFile": "บันทึกไฟล์",
"desktop.dialog.files": "ไฟล์",
"desktop.server.local": "เซิร์ฟเวอร์ภายในเครื่อง",
"desktop.wsl.error.windowsOnly": "WSL ใช้งานได้เฉพาะบน Windows เท่านั้น",
"desktop.wsl.error.unavailable": "WSL ไม่พร้อมใช้งาน",
"desktop.wsl.error.listInstalled": "ไม่สามารถแสดงรายการดิสโทร WSL ที่ติดตั้งแล้วได้",
"desktop.wsl.error.listOnline": "ไม่สามารถแสดงรายการดิสโทร WSL แบบออนไลน์ได้",
"desktop.wsl.error.executeDistro": "ไม่สามารถเรียกใช้คำสั่งในดิสโทรได้",
"desktop.wsl.error.installWsl": "การติดตั้ง WSL ล้มเหลว",
"desktop.wsl.error.installDistro": "ไม่สามารถติดตั้งดิสโทรได้: {{distro}}",
"desktop.wsl.error.installOpencode": "การติดตั้ง OpenCode ล้มเหลว",
"desktop.wsl.error.alreadyAdded": "เพิ่ม {{distro}} แล้ว",
"desktop.wsl.error.opencodeMissing": "ไม่ได้ติดตั้ง opencode ในดิสโทรนี้",
"desktop.wsl.error.opencodeCannotRun": "ติดตั้ง opencode แล้ว แต่ไม่สามารถเรียกใช้ได้",
"desktop.wsl.error.opencodeNotInstalled": "ไม่ได้ติดตั้ง OpenCode ใน {{distro}}",
"desktop.wsl.error.updateVersion":
"อัปเดต OpenCode เสร็จแล้ว แต่ {{distro}} ยังคงรายงานเวอร์ชัน {{installed}} ทั้งที่ควรเป็น {{expected}}",
"desktop.wsl.error.noVersion": "ไม่มีเวอร์ชัน",
"desktop.wsl.error.serverExited": "เซิร์ฟเวอร์ WSL หยุดทำงานหลังเริ่มต้น (code={{code}} signal={{signal}})",
"desktop.wsl.error.serverExitedBeforeHealthy":
"เซิร์ฟเวอร์ WSL หยุดทำงานก่อนพร้อมใช้งาน (code={{code}} signal={{signal}}){{output}}",
"desktop.wsl.error.healthTimeout": "การตรวจสอบสถานะ Sidecar สำหรับ {{distro}} หมดเวลาหลังจาก {{timeout}}ms",
"desktop.wsl.error.commandTimeout": "{{command}} {{args}} หมดเวลาหลังจาก {{timeout}}ms",
"desktop.wsl.error.failedPort": "ไม่สามารถรับพอร์ตได้",
"desktop.picker.error.notSelected": "ไม่ได้เลือกไฟล์จากตัวเลือกไฟล์",
"desktop.picker.error.sizeLimit": "ไฟล์แนบที่เลือกมีขนาดเกินขีดจำกัด {{limit}} MB",
"command.category.suggested": "แนะนำ",
"command.category.view": "มุมมอง",
"command.category.project": "โปรเจกต์",
@@ -16,6 +114,7 @@ export const dict = {
"command.category.permissions": "สิทธิ์",
"command.category.workspace": "พื้นที่ทำงาน",
"command.category.settings": "การตั้งค่า",
"command.logs.export": "ส่งออกบันทึก",
"theme.scheme.system": "ระบบ",
"theme.scheme.light": "สว่าง",
@@ -53,7 +152,7 @@ export const dict = {
"command.context.addSelection.description": "เพิ่มบรรทัดที่เลือกจากไฟล์ปัจจุบัน",
"command.input.focus": "โฟกัสช่องป้อนข้อมูล",
"command.terminal.toggle": "สลับเทอร์มินัล",
"command.fileTree.toggle": "สลับต้นไม้ไฟล์",
"command.fileTree.toggle": "สลับแผนผังไฟล์",
"command.review.toggle": "สลับการตรวจสอบ",
"command.terminal.new": "เทอร์มินัลใหม่",
"command.terminal.new.description": "สร้างแท็บเทอร์มินัลใหม่",
@@ -79,8 +178,8 @@ export const dict = {
"command.permissions.autoaccept.disable": "หยุดยอมรับสิทธิ์โดยอัตโนมัติ",
"command.workspace.toggle": "สลับพื้นที่ทำงาน",
"command.workspace.toggle.description": "เปิดหรือปิดใช้งานพื้นที่ทำงานหลายรายการในแถบด้านข้าง",
"command.session.undo": "ยกเลิก",
"command.session.undo.description": "ยกเลิกข้อความล่าสุด",
"command.session.undo": "เลิกทำ",
"command.session.undo.description": "เลิกทำข้อความล่าสุด",
"command.session.redo": "ทำซ้ำ",
"command.session.redo.description": "ทำซ้ำข้อความที่ถูกยกเลิกล่าสุด",
"command.session.compact": "บีบอัดเซสชัน",
@@ -102,6 +201,7 @@ export const dict = {
"dialog.provider.empty": "ไม่พบผู้ให้บริการ",
"dialog.provider.group.popular": "ยอดนิยม",
"dialog.provider.group.other": "อื่น ๆ",
"dialog.provider.custom.label": "ผู้ให้บริการแบบกำหนดเองที่เข้ากันได้กับ OpenAI",
"dialog.provider.tag.recommended": "แนะนำ",
"dialog.provider.opencode.note": "โมเดลที่คัดสรร รวมถึง Claude, GPT, Gemini และอื่น ๆ",
"dialog.provider.opencode.tagline": "โมเดลที่เชื่อถือได้และปรับให้เหมาะสม",
@@ -122,6 +222,7 @@ export const dict = {
"dialog.model.unpaid.freeModels.title": "โมเดลฟรีที่จัดหาให้โดย OpenCode",
"dialog.model.unpaid.addMore.title": "เพิ่มโมเดลเพิ่มเติมจากผู้ให้บริการยอดนิยม",
"dialog.model.unpaid.viewMoreProviders": "ดูผู้ให้บริการเพิ่มเติมกว่า 70 ราย",
"dialog.provider.viewAll": "แสดงผู้ให้บริการเพิ่มเติม",
@@ -129,6 +230,8 @@ export const dict = {
"provider.connect.title.anthropicProMax": "เข้าสู่ระบบด้วย Claude Pro/Max",
"provider.connect.selectMethod": "เลือกวิธีการเข้าสู่ระบบสำหรับ {{provider}}",
"provider.connect.method.apiKey": "คีย์ API",
"provider.connect.method.browser": "เบราว์เซอร์",
"provider.connect.method.headless": "ไม่ใช้เบราว์เซอร์",
"provider.connect.status.inProgress": "กำลังอนุญาต...",
"provider.connect.status.waiting": "รอการอนุญาต...",
"provider.connect.status.failed": "การอนุญาตล้มเหลว: {{error}}",
@@ -143,11 +246,11 @@ export const dict = {
"ด้วยคีย์ API เดียวคุณจะได้รับการเข้าถึงโมเดล เช่น Claude, GPT, Gemini, GLM และอื่น ๆ",
"provider.connect.opencodeZen.visit.prefix": "เยี่ยมชม ",
"provider.connect.opencodeZen.visit.link": "opencode.ai/zen",
"provider.connect.opencodeZen.visit.suffix": " เพื่อรวบรวมคีย์ API ของคุณ",
"provider.connect.opencodeZen.visit.suffix": " เพื่อรับคีย์ API ของคุณ",
"provider.connect.oauth.code.visit.prefix": "เยี่ยมชม ",
"provider.connect.oauth.code.visit.link": "ลิงก์นี้",
"provider.connect.oauth.code.visit.suffix":
" เพื่อรวบรวมรหัสการอนุญาตของคุณเพื่อเชื่อมต่อบัญชีและใช้โมเดล {{provider}} ใน OpenCode",
" เพื่อรับรหัสการอนุญาตสำหรับเชื่อมต่อบัญชีและใช้โมเดล {{provider}} ใน OpenCode",
"provider.connect.oauth.code.label": "รหัสการอนุญาต {{method}}",
"provider.connect.oauth.code.placeholder": "รหัสการอนุญาต",
"provider.connect.oauth.code.required": "ต้องใช้รหัสการอนุญาต",
@@ -157,13 +260,14 @@ export const dict = {
"provider.connect.oauth.auto.visit.suffix":
" และป้อนรหัสด้านล่างเพื่อเชื่อมต่อบัญชีและใช้โมเดล {{provider}} ใน OpenCode",
"provider.connect.oauth.auto.confirmationCode": "รหัสยืนยัน",
"provider.connect.toast.connected.title": "{{provider}} ที่เชื่อมต่อแล้ว",
"provider.connect.toast.connected.title": "เชื่อมต่อ {{provider}} แล้ว",
"provider.connect.toast.connected.description": "โมเดล {{provider}} พร้อมใช้งานแล้ว",
"provider.custom.title": "ผู้ให้บริการที่กำหนดเอง",
"provider.custom.unavailable": "ผู้ให้บริการที่กำหนดเองไม่พร้อมใช้งานบนเซิร์ฟเวอร์นี้",
"provider.custom.description.prefix": "กำหนดค่าผู้ให้บริการที่เข้ากันได้กับ OpenAI ดู ",
"provider.custom.description.link": "เอกสารการกำหนดค่าผู้ให้บริการ",
"provider.custom.description.suffix": ".",
"provider.custom.description.suffix": "",
"provider.custom.field.providerID.label": "รหัสผู้ให้บริการ",
"provider.custom.field.providerID.placeholder": "myprovider",
"provider.custom.field.providerID.description": "ตัวอักษรพิมพ์เล็ก ตัวเลข ยัติภังค์ หรือขีดล่าง",
@@ -197,7 +301,7 @@ export const dict = {
"provider.custom.error.required": "จำเป็น",
"provider.custom.error.duplicate": "ซ้ำ",
"provider.disconnect.toast.disconnected.title": "{{provider}} ที่ยกเลิกการเชื่อมต่อแล้ว",
"provider.disconnect.toast.disconnected.title": "ยกเลิกการเชื่อมต่อ {{provider}} แล้ว",
"provider.disconnect.toast.disconnected.description": "โมเดล {{provider}} ไม่พร้อมใช้งานอีกต่อไป",
"model.tag.free": "ฟรี",
@@ -212,7 +316,7 @@ export const dict = {
"model.input.audio": "เสียง",
"model.input.video": "วิดีโอ",
"model.input.pdf": "PDF",
"model.tooltip.allows": "อนุญาต: {{inputs}}",
"model.tooltip.allows": "รองรับ: {{inputs}}",
"model.tooltip.context.label": "บริบท",
"model.tooltip.inputs": "ข้อมูลนำเข้า",
"model.tooltip.model": "โมเดล",
@@ -224,14 +328,14 @@ export const dict = {
"common.search.placeholder": "ค้นหา",
"common.goBack": "ย้อนกลับ",
"common.goForward": "นำทางไปข้างหน้า",
"common.goForward": "ไปข้างหน้า",
"common.loading": "กำลังโหลด",
"common.loading.ellipsis": "...",
"common.cancel": "ยกเลิก",
"common.clear": "ล้าง",
"common.connect": "เชื่อมต่อ",
"common.disconnect": "ยกเลิกการเชื่อมต่อ",
"common.continue": "ส่ง",
"common.continue": "ดำเนินการต่อ",
"common.submit": "ส่ง",
"common.save": "บันทึก",
"common.saving": "กำลังบันทึก...",
@@ -246,8 +350,8 @@ export const dict = {
"prompt.mode.shell": "เชลล์",
"prompt.mode.normal": "พรอมต์",
"prompt.mode.shell.exit": "กด esc เพื่อออก",
"session.child.promptDisabled": "ไม่สามารถส่งพรอมต์ในเซสชันเอเจนต์ย่อยได้.",
"session.child.backToParent": "กลับไปยังเซสชันหลัก.",
"session.child.promptDisabled": "ไม่สามารถส่งพรอมต์ในเซสชันเอเจนต์ย่อยได้",
"session.child.backToParent": "กลับไปยังเซสชันหลัก",
"prompt.example.1": "แก้ไข TODO ในโค้ดเบส",
"prompt.example.2": "เทคโนโลยีของโปรเจกต์นี้คืออะไร?",
@@ -262,7 +366,7 @@ export const dict = {
"prompt.example.11": "ปรับปรุงการสืบค้นฐานข้อมูล",
"prompt.example.12": "เพิ่มการตรวจสอบข้อมูลนำเข้า",
"prompt.example.13": "สร้างคอมโพเนนต์ใหม่สำหรับ...",
"prompt.example.14": "ฉันจะทำให้โปรเจกต์นี้ทำงานได้อย่างไร?",
"prompt.example.14": "ฉันจะนำโปรเจกต์นี้ไปใช้งานได้อย่างไร?",
"prompt.example.15": "ตรวจสอบโค้ดของฉันเพื่อแนวทางปฏิบัติที่ดีที่สุด",
"prompt.example.16": "เพิ่มการจัดการข้อผิดพลาดในฟังก์ชันนี้",
"prompt.example.17": "อธิบายรูปแบบ regex นี้",
@@ -270,15 +374,15 @@ export const dict = {
"prompt.example.19": "เพิ่มการบันทึกทั่วทั้งโค้ดเบส",
"prompt.example.20": "มีการพึ่งพาอะไรที่ล้าสมัยอยู่?",
"prompt.example.21": "ช่วยฉันเขียนสคริปต์การย้ายข้อมูล",
"prompt.example.22": "ใช้งานแคชสำหรับจุดสิ้นสุดนี้",
"prompt.example.22": "ใช้แคชสำหรับเอนด์พอยต์นี้",
"prompt.example.23": "เพิ่มการแบ่งหน้าในรายการนี้",
"prompt.example.24": "สร้างคำสั่ง CLI สำหรับ...",
"prompt.example.25": "ตัวแปรสภาพแวดล้อมทำงานอย่างไรที่นี่?",
"prompt.popover.emptyResults": "ไม่พบผลลัพธ์ที่ตรงกัน",
"prompt.popover.emptyCommands": "ไม่พบคำสั่งที่ตรงกัน",
"prompt.dropzone.label": "ลากรูปภาพ, PDF หรือไฟล์ข้อความมาวางที่นี่",
"prompt.dropzone.file.label": "วางเพื่อ @กล่าวถึงไฟล์",
"prompt.dropzone.label": "ลากรูปภาพ PDF หรือไฟล์ข้อความมาวางที่นี่",
"prompt.dropzone.file.label": "วางเพื่ออ้างถึงไฟล์ด้วย @",
"prompt.slash.badge.custom": "กำหนดเอง",
"prompt.slash.badge.skill": "ทักษะ",
"prompt.slash.badge.mcp": "MCP",
@@ -298,14 +402,14 @@ export const dict = {
"prompt.toast.pasteUnsupported.title": "ไฟล์แนบที่ไม่รองรับ",
"prompt.toast.attachmentDuplicate.title": "ไฟล์นี้ถูกอัปโหลดแล้ว",
"prompt.toast.pasteUnsupported.description": "แนบได้เฉพาะรูปภาพ, PDF หรือไฟล์ข้อความเท่านั้น",
"prompt.toast.pasteUnsupported.description": "แนบได้เฉพาะรูปภาพ PDF หรือไฟล์ข้อความเท่านั้น",
"prompt.toast.modelAgentRequired.title": "เลือกเอเจนต์และโมเดล",
"prompt.toast.modelAgentRequired.description": "เลือกเอเจนต์และโมเดลก่อนส่งพรอม์",
"prompt.toast.modelAgentRequired.description": "เลือกเอเจนต์และโมเดลก่อนส่งพรอม์",
"prompt.toast.worktreeCreateFailed.title": "ไม่สามารถสร้าง worktree",
"prompt.toast.sessionCreateFailed.title": "ไม่สามารถสร้างเซสชัน",
"prompt.toast.shellSendFailed.title": "ไม่สามารถส่งคำสั่งเชลล์",
"prompt.toast.commandSendFailed.title": "ไม่สามารถส่งคำสั่ง",
"prompt.toast.promptSendFailed.title": "ไม่สามารถส่งพรอม์",
"prompt.toast.promptSendFailed.title": "ไม่สามารถส่งพรอม์",
"prompt.toast.promptSendFailed.description": "ไม่สามารถดึงเซสชันได้",
"dialog.mcp.title": "MCPs",
@@ -317,7 +421,7 @@ export const dict = {
"mcp.status.connected": "เชื่อมต่อแล้ว",
"mcp.status.failed": "ล้มเหลว",
"mcp.status.needs_auth": "ต้องการการตรวจสอบสิทธิ์",
"mcp.status.needs_auth": "ต้องยืนยันตัวตน",
"mcp.auth.clickToAuthenticate": "คลิกเพื่อยืนยันตัวตน",
"mcp.status.disabled": "ปิดใช้งาน",
@@ -327,7 +431,7 @@ export const dict = {
"dialog.directory.empty": "ไม่พบโฟลเดอร์",
"dialog.directory.action.selectFile": "เลือกไฟล์",
"dialog.directory.action.selectFolder": "เลือกโฟลเดอร์",
"dialog.directory.root": "ราก",
"dialog.directory.root": "โฟลเดอร์ราก",
"dialog.directory.parent": "โฟลเดอร์หลัก",
"dialog.directory.readError": "ไม่สามารถอ่านโฟลเดอร์นี้ได้",
@@ -369,30 +473,30 @@ export const dict = {
"wsl.onboarding.step.distro": "เลือกดิสโทร",
"wsl.onboarding.step.opencode": "OpenCode",
"wsl.onboarding.checkingRuntime": "กำลังตรวจสอบ WSL...",
"wsl.onboarding.restartRequired": "ต้องรีสตาร์ท Windows เพื่อให้การติดตั้ง WSL เสร็จสมบูรณ์.",
"wsl.onboarding.ready": "WSL พร้อมใช้งานแล้ว.",
"wsl.onboarding.required": "ต้องมี WSL เพื่อดำเนินการต่อ.",
"wsl.onboarding.restartRequired": "ต้องรีสตาร์ท Windows เพื่อให้การติดตั้ง WSL เสร็จสมบูรณ์",
"wsl.onboarding.ready": "WSL พร้อมใช้งานแล้ว",
"wsl.onboarding.required": "ต้องมี WSL เพื่อดำเนินการต่อ",
"wsl.onboarding.checkingDistros": "กำลังตรวจสอบดิสโทร...",
"wsl.onboarding.installingDistro": "กำลังติดตั้ง {{distro}}...",
"wsl.onboarding.checkingDistro": "กำลังตรวจสอบ {{distro}}...",
"wsl.onboarding.listingDistros": "กำลังแสดงรายการดิสโทร...",
"wsl.onboarding.distroReady": "{{distro}} พร้อมใช้งานแล้ว.",
"wsl.onboarding.distroNotInstalled": "ยังไม่ได้ติดตั้ง {{distro}}.",
"wsl.onboarding.openDistroOnce": "เปิด {{distro}} หนึ่งครั้งเพื่อให้การตั้งค่าเสร็จสมบูรณ์.",
"wsl.onboarding.finishingDistro": "กำลังตั้งค่า {{distro}} ให้เสร็จสมบูรณ์.",
"wsl.onboarding.pickDistro": "เลือกดิสโทรหรือติดตั้งจากรายการด้านล่าง.",
"wsl.onboarding.distroReady": "{{distro}} พร้อมใช้งานแล้ว",
"wsl.onboarding.distroNotInstalled": "ยังไม่ได้ติดตั้ง {{distro}}",
"wsl.onboarding.openDistroOnce": "เปิด {{distro}} หนึ่งครั้งเพื่อให้การตั้งค่าเสร็จสมบูรณ์",
"wsl.onboarding.finishingDistro": "กำลังตั้งค่า {{distro}} ให้เสร็จสมบูรณ์",
"wsl.onboarding.pickDistro": "เลือกดิสโทรหรือติดตั้งจากรายการด้านล่าง",
"wsl.onboarding.checkingOpencode": "กำลังตรวจสอบ OpenCode...",
"wsl.onboarding.checkingOpencodeIn": "กำลังตรวจสอบ OpenCode ใน {{distro}}...",
"wsl.onboarding.updatingOpencode": "กำลังอัปเดต OpenCode...",
"wsl.onboarding.updatingOpencodeIn": "กำลังอัปเดต OpenCode ใน {{distro}}...",
"wsl.onboarding.updateOpencodeIn": "อัปเดต OpenCode ใน {{distro}}.",
"wsl.onboarding.updateOpencodeIn": "อัปเดต OpenCode ใน {{distro}}",
"wsl.onboarding.updateOpencode": "อัปเดต OpenCode",
"wsl.onboarding.opencodeReadyIn": "OpenCode พร้อมใช้งานใน {{distro}} แล้ว.",
"wsl.onboarding.opencodeReady": "OpenCode พร้อมใช้งานแล้ว.",
"wsl.onboarding.installOpencodeIn": "ติดตั้ง OpenCode ใน {{distro}}.",
"wsl.onboarding.opencodeReadyIn": "OpenCode พร้อมใช้งานใน {{distro}} แล้ว",
"wsl.onboarding.opencodeReady": "OpenCode พร้อมใช้งานแล้ว",
"wsl.onboarding.installOpencodeIn": "ติดตั้ง OpenCode ใน {{distro}}",
"wsl.onboarding.installOpencode": "ติดตั้ง OpenCode",
"wsl.onboarding.chooseDistroFirst": "เลือกดิสโทรก่อน.",
"wsl.onboarding.loadFailed": "ไม่สามารถโหลดสถานะ WSL ได้.",
"wsl.onboarding.chooseDistroFirst": "เลือกดิสโทรก่อน",
"wsl.onboarding.loadFailed": "ไม่สามารถโหลดสถานะ WSL ได้",
"wsl.onboarding.loading": "กำลังโหลด...",
"wsl.onboarding.installedDistros": "ดิสโทรที่ติดตั้งแล้ว",
"wsl.onboarding.checkAgain": "ตรวจสอบอีกครั้ง",
@@ -407,29 +511,44 @@ export const dict = {
"wsl.onboarding.wslNotInstalled.description":
"ต้องมี WSL (Windows Subsystem for Linux) ก่อนที่ OpenCode จะเพิ่มเซิร์ฟเวอร์ WSL ได้",
"wsl.onboarding.wslUnavailable.title": "WSL ไม่พร้อมใช้งาน",
"wsl.onboarding.wslUnavailable.description": "OpenCode ไม่สามารถตรวจสอบ WSL บนเครื่องนี้ได้.",
"wsl.onboarding.wslUnavailable.description": "OpenCode ไม่สามารถตรวจสอบ WSL บนเครื่องนี้ได้",
"wsl.onboarding.installWsl": "ติดตั้ง WSL",
"wsl.onboarding.windowsRestartRequired":
"รีสตาร์ท Windows เพื่อให้การติดตั้ง WSL เสร็จสมบูรณ์ แล้วเปิด OpenCode อีกครั้ง.",
"รีสตาร์ท Windows เพื่อให้การติดตั้ง WSL เสร็จสมบูรณ์ แล้วเปิด OpenCode อีกครั้ง",
"wsl.onboarding.next": "ถัดไป",
"wsl.onboarding.refresh": "รีเฟรช",
"wsl.onboarding.allDistrosAdded": "เพิ่มดิสโทรที่ติดตั้งไว้ทั้งหมดแล้ว.",
"wsl.onboarding.noDistros": "ยังไม่พบดิสโทร.",
"wsl.onboarding.allDistrosAdded": "เพิ่มดิสโทรที่ติดตั้งไว้ทั้งหมดแล้ว",
"wsl.onboarding.noDistros": "ยังไม่พบดิสโทร",
"wsl.onboarding.install": "ติดตั้ง",
"wsl.onboarding.installing": "กำลังติดตั้ง...",
"wsl.onboarding.installDistro": "ติดตั้งดิสโทร",
"wsl.onboarding.searchDistros": "ค้นหาดิสโทร",
"wsl.onboarding.wsl2Required": "ต้องใช้ WSL 2.",
"wsl.onboarding.toolsRequired": "ดิสโทรนี้ต้องมี bash และ curl.",
"wsl.onboarding.wsl2Required": "ต้องใช้ WSL 2",
"wsl.onboarding.toolsRequired": "ดิสโทรนี้ต้องมี bash และ curl",
"wsl.onboarding.openTerminal": "เปิดเทอร์มินัล",
"wsl.onboarding.path": "เส้นทาง: {{path}}",
"wsl.onboarding.notFound": "ไม่พบ",
"wsl.onboarding.version": "เวอร์ชัน: {{version}}",
"wsl.onboarding.unknown": "ไม่ทราบ",
"wsl.onboarding.desktopVersion": "เดสก์ท็อป {{version}}",
"wsl.onboarding.versionMismatch": "เวอร์ชันที่ติดตั้งไม่ตรงกับเวอร์ชันของแอปเดสก์ท็อป.",
"wsl.onboarding.versionMismatch": "เวอร์ชันที่ติดตั้งไม่ตรงกับเวอร์ชันของแอปเดสก์ท็อป",
"wsl.onboarding.adding": "กำลังเพิ่ม...",
"help.tabs.toast.ariaLabel": "ขอแนะนำแท็บ จัดระเบียบงานและเซสชันที่ใช้งานอยู่ด้วยแท็บ",
"help.tabs.toast.dismiss": "ปิดข้อมูลเกี่ยวกับแท็บ",
"help.tabs.title": "ขอแนะนำแท็บ",
"help.tabs.description": "จัดระเบียบงานและเซสชันที่ใช้งานอยู่ด้วยแท็บ",
"help.tabs.date": "14 กรกฎาคม",
"help.tabs.introduction": "ตอนนี้ OpenCode Desktop สร้างขึ้นโดยใช้แท็บเป็นหลัก",
"help.tabs.sessions":
"เริ่มเซสชันใหม่ในแท็บ หรือเปิดเซสชันที่มีอยู่จากโปรเจกต์ใดก็ได้ เปิดแท็บใหม่เมื่อเริ่มงานใหม่ และปิดเมื่อทำงานเสร็จ",
"help.tabs.organize":
"การเปิดแท็บไว้สองสามแท็บช่วยให้จัดระเบียบเซสชันที่ใช้งานอยู่ได้ง่ายขึ้น เปลี่ยนชื่อแท็บให้จดจำได้ง่ายหากต้องการเก็บแท็บไว้",
"help.tabs.home": "คุณจะพบเซสชันและโปรเจกต์ทั้งหมดในหน้าจอหน้าหลักแบบใหม่ เมื่อเลือกเซสชัน เซสชันนั้นจะเปิดในแท็บ",
"help.tabs.persistence": "เมื่อเปิดแอปอีกครั้ง แท็บของคุณจะยังคงเปิดอยู่",
"help.tabs.worktrees":
"การออกแบบใหม่ยังไม่รองรับ Git Worktrees แต่จะรองรับเร็ว ๆ นี้ ดังนั้น หากต้องการใช้เค้าโครงก่อนหน้าต่อ คุณสามารถสลับเค้าโครงได้ในการตั้งค่า โปรดทราบว่าเค้าโครงใหม่จะกลายเป็นเค้าโครงถาวรภายในอีกไม่กี่สัปดาห์",
"dialog.project.edit.title": "แก้ไขโปรเจกต์",
"dialog.project.edit.name": "ชื่อ",
"dialog.project.edit.icon": "ไอคอน",
@@ -450,7 +569,7 @@ export const dict = {
"context.breakdown.tool": "การเรียกเครื่องมือ",
"context.breakdown.other": "อื่น ๆ",
"context.systemPrompt.title": "พรอม์ระบบ",
"context.systemPrompt.title": "พรอม์ระบบ",
"context.rawMessages.title": "ข้อความดิบ",
"context.stats.session": "เซสชัน",
@@ -540,7 +659,7 @@ export const dict = {
"error.page.title": "เกิดข้อผิดพลาด",
"error.page.description": "เกิดข้อผิดพลาดระหว่างการโหลดแอปพลิเคชัน",
"error.page.description.localServerStartup": "เกิดข้อผิดพลาดขณะเริ่มเซิร์ฟเวอร์ในเครื่อง.",
"error.page.description.localServerStartup": "เกิดข้อผิดพลาดขณะเริ่มเซิร์ฟเวอร์ในเครื่อง",
"error.page.details.label": "รายละเอียดข้อผิดพลาด",
"error.page.action.restart": "รีสตาร์ท",
"error.page.action.report": "รายงานข้อผิดพลาด",
@@ -584,7 +703,7 @@ export const dict = {
"notification.question.description": "{{sessionTitle}} ใน {{projectName}} มีคำถาม",
"notification.action.goToSession": "ไปที่เซสชัน",
"notification.session.responseReady.title": "การตอบสนองพร้อม",
"notification.session.responseReady.title": "คำตอบพร้อมแล้ว",
"notification.session.error.title": "ข้อผิดพลาดเซสชัน",
"notification.session.error.fallbackDescription": "เกิดข้อผิดพลาด",
@@ -606,7 +725,7 @@ export const dict = {
"home.sessions.group.today": "วันนี้",
"home.sessions.group.yesterday": "เมื่อวาน",
"home.sessions.group.older": "ก่อนหน้านี้",
"home.providerTip": "เชื่อมต่อกับผู้ให้บริการกว่า 75 รายเพื่อใช้โมเดลอื่นๆ รวมถึง Claude, GPT, Gemini และอีกมากมาย",
"home.providerTip": "เชื่อมต่อกับผู้ให้บริการกว่า 75 รายเพื่อใช้โมเดลอื่น ๆ รวมถึง Claude, GPT, Gemini และอีกมากมาย",
"session.tab.session": "เซสชัน",
"session.tab.review": "ตรวจสอบ",
@@ -614,7 +733,7 @@ export const dict = {
"session.tab.unknown": "เซสชันที่ไม่รู้จัก",
"session.panel.reviewAndFiles": "ตรวจสอบและไฟล์",
"session.error.notFound": "ไม่พบเซสชันนี้",
"session.error.notFound.description": "แท็บนี้อ้างถึงเซสชันที่ไม่มีอยู่บนเซิร์ฟเวอร์นี้แล้ว.",
"session.error.notFound.description": "แท็บนี้อ้างถึงเซสชันที่ไม่มีอยู่บนเซิร์ฟเวอร์นี้แล้ว",
"session.error.notFound.closeTab": "ปิดแท็บ",
"session.error.serverConnection": "ไม่สามารถเชื่อมต่อกับเซิร์ฟเวอร์นี้",
"session.review.filesChanged": "{{count}} ไฟล์ที่เปลี่ยนแปลง",
@@ -704,13 +823,19 @@ export const dict = {
"lsp.tooltip.none": "ไม่มีเซิร์ฟเวอร์ LSP",
"lsp.label.connected": "{{count}} LSP",
"prompt.loading": "กำลังโหลดพรอม์...",
"prompt.loading": "กำลังโหลดพรอม์...",
"terminal.loading": "กำลังโหลดเทอร์มินัล...",
"terminal.title": "เทอร์มินัล",
"terminal.title.numbered": "เทอร์มินัล {{number}}",
"terminal.close": "ปิดเทอร์มินัล",
"terminal.connectionLost.title": "การเชื่อมต่อขาดหาย",
"terminal.connectionLost.description": "การเชื่อมต่อเทอร์มินัลถูกขัดจังหวะ อาจเกิดขึ้นเมื่อเซิร์ฟเวอร์รีสตาร์ท",
"terminal.connectTicket.csrfError":
"ตั๋วเชื่อมต่อ PTY ถูกปฏิเสธโดยการตรวจสอบต้นทางหรือ CSRF โปรดตรวจสอบการกำหนดค่า CORS ของเซิร์ฟเวอร์",
"terminal.connectTicket.statusError": "ตั๋วเชื่อมต่อ PTY ล้มเหลวโดยมีสถานะ {{status}}",
"titlebar.update": "อัปเดต",
"titlebar.updateVersion": "อัปเดต {{version}}",
"common.closeTab": "ปิดแท็บ",
"common.dismiss": "ปิด",
@@ -767,23 +892,23 @@ export const dict = {
"settings.general.row.shell.autoDefault": "อัตโนมัติ (ค่าเริ่มต้น)",
"settings.general.row.shell.terminalOnly": "เทอร์มินัลเท่านั้น",
"settings.general.row.appearance.title": "รูปลักษณ์",
"settings.general.row.appearance.description": "ปรับแต่งวิธีการที่ OpenCode มีลักษณะบนอุปกรณ์ของคุณ",
"settings.general.row.appearance.description": "ปรับแต่งรูปลักษณ์ของ OpenCode บนอุปกรณ์ของคุณ",
"settings.general.row.colorScheme.title": "โทนสี",
"settings.general.row.colorScheme.description": "เลือกว่าจะให้ OpenCode ใช้ธีมตามระบบ สว่าง หรือมืด",
"settings.general.row.theme.title": "ธีม",
"settings.general.row.theme.description": "ปรับแต่งวิธีการที่ OpenCode มีธีม",
"settings.general.row.font.title": "ฟอนต์โค้ด",
"settings.general.row.font.description": "ปรับแต่งฟอนต์ที่ใช้ในบล็อกโค้ด",
"settings.general.row.terminalFont.title": "ฟอนต์เทอร์มินัล",
"settings.general.row.terminalFont.description": "ปรับแต่งฟอนต์ที่ใช้ในเทอร์มินัล",
"settings.general.row.uiFont.title": "ฟอนต์ UI",
"settings.general.row.uiFont.description": "ปรับแต่งฟอนต์ที่ใช้ทั่วทั้งอินเทอร์เฟซ",
"settings.general.row.theme.description": "ปรับแต่งธีมของ OpenCode",
"settings.general.row.font.title": "แบบอักษรโค้ด",
"settings.general.row.font.description": "ปรับแต่งแบบอักษรที่ใช้ในบล็อกโค้ด",
"settings.general.row.terminalFont.title": "แบบอักษรเทอร์มินัล",
"settings.general.row.terminalFont.description": "ปรับแต่งแบบอักษรที่ใช้ในเทอร์มินัล",
"settings.general.row.uiFont.title": "แบบอักษร UI",
"settings.general.row.uiFont.description": "ปรับแต่งแบบอักษรที่ใช้ทั่วทั้งอินเทอร์เฟซ",
"settings.general.row.followup.title": "พฤติกรรมการติดตามผล",
"settings.general.row.followup.description": "เลือกว่าจะให้พรอม์ติดตามผลทำงานทันทีหรือรอในคิว",
"settings.general.row.followup.description": "เลือกว่าจะให้พรอม์ติดตามผลทำงานทันทีหรือรอในคิว",
"settings.general.row.followup.option.queue": "คิว",
"settings.general.row.followup.option.steer": "นำทาง",
"settings.general.row.showFileTree.title": "ต้นไม้ไฟล์",
"settings.general.row.showFileTree.description": "แสดงแผงต้นไม้ไฟล์ในเซสชัน",
"settings.general.row.showFileTree.title": "แผนผังไฟล์",
"settings.general.row.showFileTree.description": "แสดงแผงแผนผังไฟล์ในเซสชัน",
"settings.general.row.showNavigation.title": "ตัวควบคุมการนำทาง",
"settings.general.row.showNavigation.description": "แสดงปุ่มย้อนกลับและไปข้างหน้าในแถบชื่อเรื่องเดสก์ท็อป",
"settings.general.row.showSearch.title": "ชุดคำสั่ง",
@@ -795,8 +920,9 @@ export const dict = {
"settings.general.row.mobileTitlebarBottom.title": "การนำทางด้านล่าง",
"settings.general.row.mobileTitlebarBottom.description":
"วางแถบชื่อเรื่องและแท็บเซสชันไว้ด้านล่างของหน้าจอบนอุปกรณ์เคลื่อนที่",
"settings.general.row.showCustomAgents.title": "เอเจนต์ที่กำหนดเอง",
"settings.general.row.showCustomAgents.description": "แสดงตัวเลือกเอเจนต์ในช่องเขียนข้อความ",
"settings.general.row.showCustomAgents.title": "แสดงเอเจนต์",
"settings.general.row.showCustomAgents.description":
"สลับระหว่างเอเจนต์ในช่องเขียนข้อความ เมื่อซ่อน ระบบจะใช้เอเจนต์ Build เป็นค่าเริ่มต้น",
"settings.general.row.reasoningSummaries.title": "แสดงสรุปการใช้เหตุผล",
"settings.general.row.reasoningSummaries.description": "แสดงสรุปการใช้เหตุผลของโมเดลในไทม์ไลน์",
"settings.general.row.shellToolPartsExpanded.title": "ขยายส่วนเครื่องมือ shell",
@@ -908,7 +1034,7 @@ export const dict = {
"settings.shortcuts.group.navigation": "การนำทาง",
"settings.shortcuts.group.modelAndAgent": "โมเดลและเอเจนต์",
"settings.shortcuts.group.terminal": "เทอร์มินัล",
"settings.shortcuts.group.prompt": "พรอม์",
"settings.shortcuts.group.prompt": "พรอม์",
"settings.providers.title": "ผู้ให้บริการ",
"settings.providers.description": "การตั้งค่าผู้ให้บริการจะสามารถกำหนดค่าได้ที่นี่",
@@ -945,7 +1071,7 @@ export const dict = {
"settings.permissions.tool.glob.description": "จับคู่ไฟล์โดยใช้รูปแบบ glob",
"settings.permissions.tool.grep.title": "Grep",
"settings.permissions.tool.grep.description": "ค้นหาเนื้อหาไฟล์โดยใช้นิพจน์ทั่วไป",
"settings.permissions.tool.list.title": "รายการ",
"settings.permissions.tool.list.title": "แสดงรายการ",
"settings.permissions.tool.list.description": "แสดงรายการไฟล์ภายในไดเรกทอรี",
"settings.permissions.tool.bash.title": "Bash",
"settings.permissions.tool.bash.description": "เรียกใช้คำสั่งเชลล์",
@@ -1018,13 +1144,16 @@ export const dict = {
"dialog.server.add.passwordPlaceholder": "รหัสผ่าน",
"server.row.noUsername": "ไม่มีชื่อผู้ใช้",
"session.review.noVcs.createGit.title": "สร้าง Git รีโพซิทอรี",
"session.review.noVcs.createGit.description": "ติดตาม ตรวจสอบ และเลิกทำสิ่งเปลี่ยนแปลงในโปรเจกต์นี้",
"session.review.noVcs.createGit.description": "ติดตาม ตรวจสอบ และเลิกทำการเปลี่ยนแปลงในโปรเจกต์นี้",
"session.review.noVcs.createGit.actionLoading": "กำลังสร้าง Git รีโพซิทอรี...",
"session.review.noVcs.createGit.action": "สร้าง Git รีโพซิทอรี",
"session.todo.progress": "เสร็จสิ้น {{done}} จาก {{total}} รายการ",
"session.question.progress": "{{current}} จาก {{total}} คำถาม",
"session.header.open.finder": "Finder",
"session.header.open.fileExplorer": "File Explorer",
"session.header.reveal.finder": "แสดงใน Finder",
"session.header.reveal.fileExplorer": "แสดงใน File Explorer",
"session.header.reveal.containingFolder": "เปิดโฟลเดอร์ที่มีรายการนี้",
"session.header.open.fileManager": "File Manager",
"session.header.open.app.vscode": "VS Code",
"session.header.open.app.cursor": "Cursor",
+193 -61
View File
@@ -3,6 +3,106 @@ import { dict as en } from "./en"
type Keys = keyof typeof en
export const dict = {
"desktop.menu.app": "OpenCode",
"desktop.menu.file": "Dosya",
"desktop.menu.edit": "Düzen",
"desktop.menu.view": "Görünüm",
"desktop.menu.go": "Git",
"desktop.menu.window": "Pencere",
"desktop.menu.help": "Yardım",
"desktop.menu.checkForUpdates": "Güncellemeleri kontrol et...",
"desktop.menu.settings": "Ayarlar",
"desktop.menu.reloadWebview": "Web görünümünü yeniden yükle",
"desktop.menu.restart": "Yeniden başlat",
"desktop.menu.exportLogs": "Günlükleri dışa aktar...",
"desktop.menu.newSession": "Yeni oturum",
"desktop.menu.openProject": "Proje aç...",
"desktop.menu.newWindow": "Yeni pencere",
"desktop.menu.closeWindow": "Pencereyi kapat",
"desktop.menu.undo": "Geri al",
"desktop.menu.redo": "Yinele",
"desktop.menu.cut": "Kes",
"desktop.menu.copy": "Kopyala",
"desktop.menu.paste": "Yapıştır",
"desktop.menu.delete": "Sil",
"desktop.menu.selectAll": "Tümünü seç",
"desktop.menu.toggleSidebar": "Kenar çubuğunu aç/kapat",
"desktop.menu.toggleTerminal": "Terminali aç/kapat",
"desktop.menu.toggleFileTree": "Dosya ağacını aç/kapat",
"desktop.menu.reload": "Yeniden yükle",
"desktop.menu.toggleDeveloperTools": "Geliştirici araçlarını aç/kapat",
"desktop.menu.actualSize": "Gerçek boyut",
"desktop.menu.zoomIn": "Yakınlaştır",
"desktop.menu.zoomOut": "Uzaklaştır",
"desktop.menu.toggleFullScreen": "Tam ekranı aç/kapat",
"desktop.menu.back": "Geri",
"desktop.menu.forward": "İleri",
"desktop.menu.previousSession": "Önceki oturum",
"desktop.menu.nextSession": "Sonraki oturum",
"desktop.menu.previousProject": "Önceki proje",
"desktop.menu.nextProject": "Sonraki proje",
"desktop.menu.minimize": "Simge durumuna küçült",
"desktop.menu.maximize": "Ekranı kapla",
"desktop.menu.documentation": "OpenCode belgeleri",
"desktop.menu.supportForum": "Destek forumu",
"desktop.menu.shareFeedback": "Geri bildirim paylaş",
"desktop.menu.reportBug": "Hata bildir",
"desktop.menu.ariaLabel": "OpenCode menüsü",
"desktop.updater.dialog.checkFailed.message": "Güncellemeler kontrol edilemedi.",
"desktop.updater.dialog.checkFailed.title": "Güncelleme hatası",
"desktop.updater.dialog.upToDate.message": "En son sürümü kullanıyorsunuz.",
"desktop.updater.dialog.upToDate.title": "Güncelleme yok",
"desktop.updater.dialog.ready.message": "{{version}} güncellemesi indirildi. Şimdi yeniden başlatılsın mı?",
"desktop.updater.dialog.ready.title": "Güncelleme hazır",
"desktop.updater.dialog.restart": "Yeniden başlat",
"desktop.updater.dialog.later": "Daha sonra",
"desktop.recovery.action.relaunch": "Uygulamayı yeniden başlat",
"desktop.recovery.action.exportLogs": "Günlükleri dışa aktar",
"desktop.recovery.action.keepWaiting": "Beklemeye devam et",
"desktop.recovery.action.quit": "Çık",
"desktop.recovery.loadFailed": "OpenCode yüklenemedi",
"desktop.recovery.terminated": "OpenCode penceresi beklenmedik şekilde sonlandırıldı",
"desktop.recovery.unresponsive": "OpenCode yanıt vermiyor",
"desktop.recovery.unresponsive.detail":
"Uygulamayı yeniden başlatabilir, günlükleri açabilir veya beklemeye devam edebilirsiniz.",
"desktop.recovery.loadFailed.detail": "Pencere: {{window}}\nURL: {{url}}\nHata: {{code}} {{description}}",
"desktop.recovery.terminated.detail": "Pencere: {{window}}\nNeden: {{reason}}\nKod: {{code}}",
"desktop.recovery.unknown": "<bilinmiyor>",
"desktop.dialog.chooseFolder": "Bir klasör seçin",
"desktop.dialog.chooseFile": "Bir dosya seçin",
"desktop.dialog.saveFile": "Dosyayı kaydedin",
"desktop.dialog.files": "Dosyalar",
"desktop.server.local": "Yerel sunucu",
"desktop.wsl.error.windowsOnly": "WSL yalnızca Windows'ta kullanılabilir",
"desktop.wsl.error.unavailable": "WSL kullanılamıyor",
"desktop.wsl.error.listInstalled": "Kurulu WSL dağıtımları listelenemedi",
"desktop.wsl.error.listOnline": "Çevrimiçi WSL dağıtımları listelenemedi",
"desktop.wsl.error.executeDistro": "Dağıtımda komutlar çalıştırılamıyor",
"desktop.wsl.error.installWsl": "WSL kurulamadı",
"desktop.wsl.error.installDistro": "Dağıtım kurulamadı: {{distro}}",
"desktop.wsl.error.installOpencode": "OpenCode kurulamadı",
"desktop.wsl.error.alreadyAdded": "{{distro}} zaten eklendi",
"desktop.wsl.error.opencodeMissing": "opencode bu dağıtımda kurulu değil",
"desktop.wsl.error.opencodeCannotRun": "opencode kurulu ancak çalıştırılamadı",
"desktop.wsl.error.opencodeNotInstalled": "OpenCode, {{distro}} içinde kurulu değil",
"desktop.wsl.error.updateVersion":
"OpenCode güncellemesi tamamlandı ancak {{distro}} hâlâ {{installed}} sürümünü bildiriyor; beklenen sürüm: {{expected}}",
"desktop.wsl.error.noVersion": "sürüm yok",
"desktop.wsl.error.serverExited": "WSL sunucusu başlatıldıktan sonra kapandı (code={{code}} signal={{signal}})",
"desktop.wsl.error.serverExitedBeforeHealthy":
"WSL sunucusu kullanıma hazır duruma gelmeden kapandı (code={{code}} signal={{signal}}){{output}}",
"desktop.wsl.error.healthTimeout":
"{{distro}} Sidecar sistem durumu denetimi {{timeout}} ms sonra zaman aşımına uğradı",
"desktop.wsl.error.commandTimeout": "{{command}} {{args}} komutu {{timeout}} ms sonra zaman aşımına uğradı",
"desktop.wsl.error.failedPort": "Bağlantı noktası alınamadı",
"desktop.picker.error.notSelected": "Dosya seçici tarafından dosya seçilmedi",
"desktop.picker.error.sizeLimit": "Seçilen ekler {{limit}} MB sınırını aşıyor",
"command.category.suggested": "Önerilen",
"command.category.view": "Görünüm",
"command.category.project": "Proje",
@@ -20,6 +120,7 @@ export const dict = {
"command.category.permissions": "İzinler",
"command.category.workspace": "Çalışma Alanı",
"command.category.settings": "Ayarlar",
"command.logs.export": "Günlükleri dışa aktar",
"theme.scheme.system": "Sistem",
"theme.scheme.light": "Açık",
@@ -78,9 +179,9 @@ export const dict = {
"command.model.variant.cycle": "Düşünme eforu değiştir",
"command.model.variant.cycle.description": "Sonraki efor seviyesine geç",
"command.prompt.mode.shell": "Kabuk",
"command.prompt.mode.normal": "Komut",
"command.permissions.autoaccept.enable": "Düzenlemeleri otomatik kabul et",
"command.permissions.autoaccept.disable": "Otomatik kabulü durdur",
"command.prompt.mode.normal": "İstem",
"command.permissions.autoaccept.enable": "İzinleri otomatik kabul et",
"command.permissions.autoaccept.disable": "İzinleri otomatik kabul etmeyi durdur",
"command.workspace.toggle": "Çalışma alanlarını aç/kapat",
"command.workspace.toggle.description": "Kenar çubuğunda birden fazla çalışma alanını göster veya gizle",
"command.session.undo": "Geri al",
@@ -106,9 +207,10 @@ export const dict = {
"dialog.provider.empty": "Sağlayıcı bulunamadı",
"dialog.provider.group.popular": "Popüler",
"dialog.provider.group.other": "Diğer",
"dialog.provider.custom.label": "Özel OpenAI uyumlu sağlayıcı",
"dialog.provider.tag.recommended": "Önerilen",
"dialog.provider.opencode.note": "Claude, GPT, Gemini ve daha fazlasını içeren seçilmiş modeller",
"dialog.provider.opencode.tagline": "Güvenilir optimize edilmiş modeller",
"dialog.provider.opencode.tagline": "Güvenilir, optimize edilmiş modeller",
"dialog.provider.opencodeGo.tagline": "Herkes için düşük maliyetli abonelik",
"dialog.provider.anthropic.note": "Pro ve Max dahil Claude modellerine doğrudan erişim",
"dialog.provider.copilot.note": "GitHub Copilot üzerinden kodlama yardımı için yapay zekâ modelleri",
@@ -126,6 +228,7 @@ export const dict = {
"dialog.model.unpaid.freeModels.title": "OpenCode tarafından sunulan ücretsiz modeller",
"dialog.model.unpaid.addMore.title": "Popüler sağlayıcılardan daha fazla model ekleyin",
"dialog.model.unpaid.viewMoreProviders": "70'ten fazla sağlayıcı daha görüntüle",
"dialog.provider.viewAll": "Daha fazla sağlayıcı göster",
@@ -133,6 +236,8 @@ export const dict = {
"provider.connect.title.anthropicProMax": "Claude Pro/Max ile giriş yap",
"provider.connect.selectMethod": "{{provider}} için giriş yöntemini seçin.",
"provider.connect.method.apiKey": "API anahtarı",
"provider.connect.method.browser": "Tarayıcı",
"provider.connect.method.headless": "Tarayıcısız",
"provider.connect.status.inProgress": "Yetkilendirme devam ediyor...",
"provider.connect.status.waiting": "Yetkilendirme bekleniyor...",
"provider.connect.status.failed": "Yetkilendirme başarısız: {{error}}",
@@ -165,10 +270,11 @@ export const dict = {
"provider.connect.toast.connected.description": "{{provider}} modelleri artık kullanımda.",
"provider.custom.title": "Özel sağlayıcı",
"provider.custom.unavailable": "Özel sağlayıcılar bu sunucuda kullanılamıyor",
"provider.custom.description.prefix": "OpenAI uyumlu bir sağlayıcı yapılandırın. ",
"provider.custom.description.link": "Sağlayıcı yapılandırma dökümanları",
"provider.custom.description.link": "sağlayıcı yapılandırma dokümanları",
"provider.custom.description.suffix": " sayfasına bakın.",
"provider.custom.field.providerID.label": "Sağlayıcı kimlik",
"provider.custom.field.providerID.label": "Sağlayıcı kimliği",
"provider.custom.field.providerID.placeholder": "saglayicim",
"provider.custom.field.providerID.description": "Küçük harfler, rakamlar, tire veya alt çizgi",
"provider.custom.field.name.label": "Görünen ad",
@@ -178,7 +284,7 @@ export const dict = {
"provider.custom.field.apiKey.label": "API anahtarı",
"provider.custom.field.apiKey.placeholder": "API anahtarı",
"provider.custom.field.apiKey.description":
"İsteğe bağlı. Kimlik doğrulamayı başlıklar ile yönetiyorsanız boş bırakın.",
"İsteğe bağlı. Kimlik doğrulamayı başlıklarla yönetiyorsanız boş bırakın.",
"provider.custom.models.label": "Modeller",
"provider.custom.models.id.label": "Kimlik",
"provider.custom.models.id.placeholder": "model-kimlik",
@@ -193,9 +299,9 @@ export const dict = {
"provider.custom.headers.value.placeholder": "değer",
"provider.custom.headers.remove": "Başlığı kaldır",
"provider.custom.headers.add": "Başlık ekle",
"provider.custom.error.providerID.required": "Sağlayıcı kimlik gerekli",
"provider.custom.error.providerID.required": "Sağlayıcı kimliği gerekli",
"provider.custom.error.providerID.format": "Küçük harf, rakam, tire veya alt çizgi kullanın",
"provider.custom.error.providerID.exists": "Bu sağlayıcı kimlik zaten mevcut",
"provider.custom.error.providerID.exists": "Bu sağlayıcı kimliği zaten mevcut",
"provider.custom.error.name.required": "Görünen ad gerekli",
"provider.custom.error.baseURL.required": "Temel URL gerekli",
"provider.custom.error.baseURL.format": "http:// veya https:// ile başlamalı",
@@ -203,7 +309,7 @@ export const dict = {
"provider.custom.error.duplicate": "Tekrar",
"provider.disconnect.toast.disconnected.title": "{{provider}} bağlantısı kesildi",
"provider.disconnect.toast.disconnected.description": "{{provider}} modelleri artık kullanılabilir değil.",
"provider.disconnect.toast.disconnected.description": "{{provider}} modelleri artık kullanılamıyor.",
"model.tag.free": "Ücretsiz",
"model.tag.latest": "En yeni",
@@ -223,9 +329,9 @@ export const dict = {
"model.tooltip.model": "Model",
"model.tooltip.provider": "Sağlayıcı",
"model.tooltip.reasoning": "Akıl yürütme",
"model.tooltip.reasoning.allowed": "Akıl yürütme destekler",
"model.tooltip.reasoning.allowed": "Akıl yürütmeyi destekler",
"model.tooltip.reasoning.none": "Akıl yürütme yok",
"model.tooltip.context": "Bağlam limiti {{limit}}",
"model.tooltip.context": "Bağlam sınırı {{limit}}",
"common.search.placeholder": "Ara",
"common.goBack": "Geri git",
@@ -235,8 +341,8 @@ export const dict = {
"common.cancel": "İptal",
"common.clear": "Temizle",
"common.connect": "Bağlan",
"common.disconnect": "Bağlantı Kes",
"common.continue": "Gönder",
"common.disconnect": "Bağlantıyı kes",
"common.continue": "Devam et",
"common.submit": "Gönder",
"common.save": "Kaydet",
"common.saving": "Kaydediliyor...",
@@ -249,7 +355,7 @@ export const dict = {
"prompt.placeholder.summarizeComments": "Yorumları özetle…",
"prompt.placeholder.summarizeComment": "Yorumu özetle…",
"prompt.mode.shell": "Kabuk",
"prompt.mode.normal": "Komut",
"prompt.mode.normal": "İstem",
"prompt.mode.shell.exit": "çıkmak için esc",
"session.child.promptDisabled": "Alt ajan oturumlarına istem gönderilemez.",
"session.child.backToParent": "Ana oturuma dön.",
@@ -266,30 +372,30 @@ export const dict = {
"prompt.example.10": "API dokümantasyonu oluştur",
"prompt.example.11": "Veritabanı sorgularını optimize et",
"prompt.example.12": "Girdi doğrulama ekle",
"prompt.example.13": "İçin yeni bir bileşen oluştur...",
"prompt.example.13": "... için yeni bir bileşen oluştur",
"prompt.example.14": "Bu projeyi nasıl dağıtabilirim?",
"prompt.example.15": "Kodumu en iyi uygulamalar için incele",
"prompt.example.16": "Bu fonksiyona hata yönetimi ekle",
"prompt.example.17": "Bu regex kalıbını açıkla",
"prompt.example.18": "Bunu TypeScript'e dönüştür",
"prompt.example.19": "Kod tabanı boyunca loglama ekle",
"prompt.example.19": "Kod tabanının tamamına günlük kaydı ekle",
"prompt.example.20": "Hangi bağımlılıklar güncellenmemiş?",
"prompt.example.21": "Bir göç betiği yazmama yardım et",
"prompt.example.21": "Bir geçiş betiği yazmama yardım et",
"prompt.example.22": "Bu uç nokta için önbellekleme uygula",
"prompt.example.23": "Bu listeye sayfalama ekle",
"prompt.example.24": "İçin bir CLI komutu oluştur...",
"prompt.example.24": "... için bir CLI komutu oluştur",
"prompt.example.25": "Ortam değişkenleri burada nasıl çalışıyor?",
"prompt.popover.emptyResults": "Eşleşen sonuç yok",
"prompt.popover.emptyCommands": "Eşleşen komut yok",
"prompt.dropzone.label": "Resimleri, PDF'leri veya metin dosyalarını buraya bırakın",
"prompt.dropzone.file.label": "@bahsetmek için dosyayı bırakın",
"prompt.dropzone.file.label": "Dosyayı @ ile belirtmek için buraya bırakın",
"prompt.slash.badge.custom": "özel",
"prompt.slash.badge.skill": "beceri",
"prompt.slash.badge.mcp": "mcp",
"prompt.context.active": "aktif",
"prompt.context.includeActiveFile": "Aktif dosyayı dahil et",
"prompt.context.removeActiveFile": "Aktif dosyayı bağlamdan çıkar",
"prompt.context.active": "etkin",
"prompt.context.includeActiveFile": "Etkin dosyayı dahil et",
"prompt.context.removeActiveFile": "Etkin dosyayı bağlamdan çıkar",
"prompt.context.removeFile": "Dosyayı bağlamdan çıkar",
"prompt.action.attachFile": "Dosya ekle",
"prompt.menu.addImagesAndFiles": "Dosya ve daha fazlasını ekle",
@@ -305,16 +411,16 @@ export const dict = {
"prompt.toast.attachmentDuplicate.title": "Bu dosya zaten yüklendi",
"prompt.toast.pasteUnsupported.description": "Buraya yalnızca resimler, PDF'ler veya metin dosyaları eklenebilir.",
"prompt.toast.modelAgentRequired.title": "Bir ajan ve model seçin",
"prompt.toast.modelAgentRequired.description": "Komut göndermeden önce bir ajan ve model seçin.",
"prompt.toast.modelAgentRequired.description": "İstem göndermeden önce bir ajan ve model seçin.",
"prompt.toast.worktreeCreateFailed.title": "Çalışma ağacı oluşturulamadı",
"prompt.toast.sessionCreateFailed.title": "Oturum oluşturulamadı",
"prompt.toast.shellSendFailed.title": "Kabuk komutu gönderilemedi",
"prompt.toast.commandSendFailed.title": "Komut gönderilemedi",
"prompt.toast.promptSendFailed.title": "Komut gönderilemedi",
"prompt.toast.promptSendFailed.title": "İstem gönderilemedi",
"prompt.toast.promptSendFailed.description": "Oturum alınamadı",
"dialog.mcp.title": "MCP'ler",
"dialog.mcp.description": "{{total}} içerisinden {{enabled}} etkin",
"dialog.mcp.description": "Toplam {{total}} öğeden {{enabled}} tanesi etkin",
"dialog.mcp.empty": "Yapılandırılmış MCP yok",
"dialog.lsp.empty": "LSP'ler dosya türlerinden otomatik algılanır",
@@ -349,7 +455,7 @@ export const dict = {
"dialog.server.add.name": "Sunucu adı (isteğe bağlı)",
"dialog.server.add.namePlaceholder": "Localhost",
"dialog.server.add.username": "Kullanıcı adı (isteğe bağlı)",
"dialog.server.add.password": "Şifre (isteğe bağlı)",
"dialog.server.add.password": "Parola (isteğe bağlı)",
"dialog.server.edit.title": "Sunucuyu düzenle",
"dialog.server.default.title": "Varsayılan sunucu",
"dialog.server.default.description":
@@ -435,6 +541,22 @@ export const dict = {
"wsl.onboarding.versionMismatch": "Kurulu sürüm masaüstü uygulamasının sürümüyle eşleşmiyor.",
"wsl.onboarding.adding": "Ekleniyor...",
"help.tabs.toast.ariaLabel": "Sekmelerle tanışın. Çalışmalarınızı ve etkin oturumlarınızı sekmelerle düzenleyin",
"help.tabs.toast.dismiss": "Sekmeler bilgilerini kapat",
"help.tabs.title": "Sekmelerle tanışın",
"help.tabs.description": "Çalışmalarınızı ve etkin oturumlarınızı sekmelerle düzenleyin",
"help.tabs.date": "14 Temmuz",
"help.tabs.introduction": "OpenCode Desktop artık sekmeler üzerine kurulu.",
"help.tabs.sessions":
"Bir sekmede yeni oturum başlatın veya projelerinizden mevcut bir oturumu açın. Yeni bir işe başlarken yeni sekme açın, işiniz bittiğinde sekmeyi kapatın.",
"help.tabs.organize":
"Birkaç sekmeyi açık tutmak, etkin oturumlarınızı düzenlemenizi kolaylaştırır. Sekmeleri açık tutmayı planlıyorsanız onlara akılda kalıcı adlar verin.",
"help.tabs.home":
"Tüm oturumlarınızı ve projelerinizi yeni Ana Sayfa ekranında bulabilirsiniz. Bir oturum seçtiğinizde oturum bir sekmede açılır.",
"help.tabs.persistence": "Uygulamayı yeniden açtığınızda sekmeleriniz açık kalır.",
"help.tabs.worktrees":
"Yeni tasarım henüz Git Worktrees'i desteklemiyor; bu özellik yakında kullanıma sunulacak. Önceki düzeni kullanmaya devam etmek isterseniz Ayarlar'da düzenler arasında geçiş yapabilirsiniz. Yeni düzenin birkaç hafta içinde kalıcı olacağını unutmayın.",
"dialog.project.edit.title": "Projeyi düzenle",
"dialog.project.edit.name": "Ad",
"dialog.project.edit.icon": "Simge",
@@ -455,14 +577,14 @@ export const dict = {
"context.breakdown.tool": "Araç Çağrıları",
"context.breakdown.other": "Diğer",
"context.systemPrompt.title": "Sistem Komutu",
"context.systemPrompt.title": "Sistem İstemi",
"context.rawMessages.title": "Ham mesajlar",
"context.stats.session": "Oturum",
"context.stats.messages": "Mesajlar",
"context.stats.provider": "Sağlayıcı",
"context.stats.model": "Model",
"context.stats.limit": "Bağlam Limiti",
"context.stats.limit": "Bağlam Sınırı",
"context.stats.totalTokens": "Toplam Token",
"context.stats.usage": "Kullanım",
"context.stats.inputTokens": "Girdi Tokenleri",
@@ -472,7 +594,7 @@ export const dict = {
"context.stats.userMessages": "Kullanıcı Mesajları",
"context.stats.assistantMessages": "Asistan Mesajları",
"context.stats.totalCost": "Toplam Maliyet",
"context.stats.sessionCreated": "Oturum Oluşturulma",
"context.stats.sessionCreated": "Oturum Oluşturma",
"context.stats.lastActivity": "Son Etkinlik",
"context.usage.tokens": "Tokenler",
@@ -511,10 +633,10 @@ export const dict = {
"toast.workspace.disabled.title": "Çalışma alanları devre dışı bırakıldı",
"toast.workspace.disabled.description": "Kenar çubuğunda yalnızca ana çalışma ağacı gösterilecek",
"toast.permissions.autoaccept.on.title": "Düzenlemeler otomatik kabul ediliyor",
"toast.permissions.autoaccept.on.description": "Düzenleme ve yazma izinleri otomatik olarak onaylanacak",
"toast.permissions.autoaccept.off.title": "Otomatik kabul durduruldu",
"toast.permissions.autoaccept.off.description": "Düzenleme ve yazma izinleri onay gerektirecek",
"toast.permissions.autoaccept.on.title": "İzinler otomatik kabul ediliyor",
"toast.permissions.autoaccept.on.description": "İzin istekleri otomatik olarak onaylanacak",
"toast.permissions.autoaccept.off.title": "İzinleri otomatik kabul etme durduruldu",
"toast.permissions.autoaccept.off.description": "İzin istekleri onay gerektirecek",
"toast.model.none.title": "Model seçilmedi",
"toast.model.none.description": "Bu oturumu özetlemek için bir sağlayıcı bağlayın",
@@ -554,8 +676,8 @@ export const dict = {
"error.page.action.checking": "Kontrol ediliyor...",
"error.page.action.checkUpdates": "Güncellemeleri kontrol et",
"error.page.action.updateTo": "{{version}} sürümüne güncelle",
"error.page.report.prefix": "Lütfen bu hatayı OpenCode ekibine bildirin",
"error.page.report.discord": "Discord üzerinden",
"error.page.report.prefix": "Lütfen bu hatayı OpenCode ekibine",
"error.page.report.discord": "Discord üzerinden bildirin",
"error.page.version": "Sürüm: {{version}}",
"error.dev.rootNotFound":
@@ -572,9 +694,9 @@ export const dict = {
"error.chain.responseBody": "Yanıt gövdesi:\n{{body}}",
"error.chain.didYouMean": "Bunu mu demek istediniz: {{suggestions}}",
"error.chain.modelNotFound": "Model bulunamadı: {{provider}}/{{model}}",
"error.chain.checkConfig": "Yapılandırma dosyanızı (opencode.json) sağlayıcı/model adlarını kontrol edin",
"error.chain.checkConfig": "Yapılandırma dosyanızdaki (opencode.json) sağlayıcı/model adlarını kontrol edin",
"error.chain.mcpFailed":
'MCP sunucusu "{{name}}" başarısız oldu. Not: OpenCode henüz MCP kimlik doğrulamasını desteklemiyor.',
'MCP sunucusu "{{name}}" çalıştırılamadı. Not: OpenCode henüz MCP kimlik doğrulamasını desteklemiyor.',
"error.chain.providerAuthFailed": "Sağlayıcı kimlik doğrulaması başarısız ({{provider}}): {{message}}",
"error.chain.providerInitFailed":
'"{{provider}}" sağlayıcısı başlatılamadı. Kimlik bilgilerini ve yapılandırmayı kontrol edin.',
@@ -624,9 +746,9 @@ export const dict = {
"session.panel.reviewAndFiles": "İnceleme ve dosyalar",
"session.error.notFound": "Bu oturum bulunamıyor",
"session.error.notFound.description": "Bu sekme, artık bu sunucuda bulunmayan bir oturuma yönlendiriyor.",
"session.error.notFound.closeTab": "Sekmeyi Kapat",
"session.error.notFound.closeTab": "Sekmeyi kapat",
"session.error.serverConnection": "Bu sunucuya bağlanılamıyor",
"session.review.filesChanged": "{{count}} Dosya Değişti",
"session.review.filesChanged": "{{count}} dosya değişti",
"session.review.change.one": "Değişiklik",
"session.review.change.other": "Değişiklik",
"session.review.loadingChanges": "Değişiklikler yükleniyor...",
@@ -635,7 +757,7 @@ export const dict = {
"session.review.noSnapshot":
"Yapılandırmada anlık görüntü takibi devre dışı bırakıldı, bu nedenle oturum değişiklikleri kullanılamıyor",
"session.review.noChanges": "Değişiklik yok",
"session.review.noUncommittedChanges": "Henüz commit edilmemiş değişiklik yok",
"session.review.noUncommittedChanges": "Henüz işlenmemiş değişiklik yok",
"session.review.noBranchChanges": "Henüz dal değişikliği yok",
"session.files.selectToOpen": "Açmak için bir dosya seçin",
@@ -669,7 +791,7 @@ export const dict = {
"session.revertDock.expand": "Geri alınan mesajları genişlet",
"session.revertDock.restore": "Mesajı geri yükle",
"session.new.title": "İstediğini yap",
"session.new.title": "Her şeyi geliştirin",
"session.new.project.new": "Yeni proje",
"session.new.project.search": "Proje ara",
"session.new.project.add": "Proje ekle",
@@ -690,6 +812,9 @@ export const dict = {
"session.header.open.ariaLabel": "{{app}} ile aç",
"session.header.open.menu": "Açma seçenekleri",
"session.header.open.copyPath": "Yolu kopyala",
"session.header.reveal.finder": "Finder'da göster",
"session.header.reveal.fileExplorer": "Dosya Gezgini'nde göster",
"session.header.reveal.containingFolder": "İçeren klasörü aç",
"status.popover.trigger": "Durum",
"status.popover.ariaLabel": "Sunucu yapılandırmaları",
@@ -710,19 +835,25 @@ export const dict = {
"session.share.action.unpublishing": "Yayından kaldırılıyor...",
"session.share.action.view": "Görüntüle",
"session.share.copy.copied": "Kopyalandı",
"session.share.copy.copyLink": "Bağlantı kopyala",
"session.share.copy.copyLink": "Bağlantıyı kopyala",
"lsp.tooltip.none": "LSP sunucusu yok",
"lsp.label.connected": "{{count}} LSP",
"prompt.loading": "Komut yükleniyor...",
"prompt.loading": "İstem yükleniyor...",
"terminal.loading": "Terminal yükleniyor...",
"terminal.title": "Terminal",
"terminal.title.numbered": "Terminal {{number}}",
"terminal.close": "Terminali kapat",
"terminal.connectionLost.title": "Bağlantı Kesildi",
"terminal.connectionLost.title": "Bağlantı kesildi",
"terminal.connectionLost.description":
"Terminal bağlantısı kesildi. Bu durum sunucu yeniden başladığında oluşabilir.",
"terminal.connectTicket.csrfError":
"PTY bağlantı bileti, kaynak veya CSRF denetimleri tarafından reddedildi. Sunucunun CORS yapılandırmasını kontrol edin.",
"terminal.connectTicket.statusError": "PTY bağlantı bileti {{status}} durumuyla başarısız oldu",
"titlebar.update": "Güncelle",
"titlebar.updateVersion": "Güncelle {{version}}",
"common.closeTab": "Sekmeyi kapat",
"common.dismiss": "Kapat",
@@ -785,15 +916,15 @@ export const dict = {
"OpenCode'un sistem, açık veya koyu temayı takip etip etmeyeceğini seçin",
"settings.general.row.theme.title": "Tema",
"settings.general.row.theme.description": "OpenCode'un temasını özelleştirin.",
"settings.general.row.font.title": "Kod Yazı Tipi",
"settings.general.row.font.title": "Kod yazı tipi",
"settings.general.row.font.description": "Kod bloklarında kullanılan yazı tipini özelleştirin",
"settings.general.row.terminalFont.title": "Terminal yazı tipi",
"settings.general.row.terminalFont.description": "Terminalde kullanılan yazı tipini özelleştirin",
"settings.general.row.uiFont.title": "Arayüz Yazı Tipi",
"settings.general.row.uiFont.title": "Arayüz yazı tipi",
"settings.general.row.uiFont.description": "Arayüz genelinde kullanılan yazı tipini özelleştirin",
"settings.general.row.followup.title": "Takip davranışı",
"settings.general.row.followup.description":
"Takip komutlarının hemen yönlendirilmesini mi yoksa sırada beklemesini mi istediğinizi seçin",
"Takip istemlerinin hemen yönlendirilmesini mi yoksa sırada beklemesini mi istediğinizi seçin",
"settings.general.row.followup.option.queue": "Sıra",
"settings.general.row.followup.option.steer": "Yönlendir",
"settings.general.row.showFileTree.title": "Dosya ağacı",
@@ -809,8 +940,9 @@ export const dict = {
"settings.general.row.mobileTitlebarBottom.title": "Alt gezinme",
"settings.general.row.mobileTitlebarBottom.description":
"Mobil cihazlarda başlık çubuğunu ve oturum sekmelerini ekranın altına yerleştir",
"settings.general.row.showCustomAgents.title": "Özel ajanlar",
"settings.general.row.showCustomAgents.description": "Yazma alanında ajan seçiciyi göster",
"settings.general.row.showCustomAgents.title": "Ajanı göster",
"settings.general.row.showCustomAgents.description":
"Düzenleyicide ajanlar arasında geçiş yapın. Gizlendiğinde varsayılan olarak Build ajanı kullanılır.",
"settings.general.row.reasoningSummaries.title": "Akıl yürütme özetlerini göster",
"settings.general.row.reasoningSummaries.description": "Zaman çizelgesinde model akıl yürütme özetlerini görüntüle",
"settings.general.row.shellToolPartsExpanded.title": "Kabuk araç bileşenlerini genişlet",
@@ -834,7 +966,7 @@ export const dict = {
"settings.general.row.wayland.description":
"Wayland'da X11 geri dönüşünü devre dışı bırak. Yeniden başlatma gerektirir.",
"settings.general.row.wayland.tooltip":
"Karışık yenileme hızlı monitörlere sahip Linux'ta yerel Wayland daha kararlı olabilir.",
"Farklı yenileme hızlarına sahip monitörlerin kullanıldığı Linux sistemlerinde yerel Wayland daha kararlı olabilir.",
"settings.general.row.releaseNotes.title": "Sürüm notları",
"settings.general.row.releaseNotes.description": "Güncellemelerden sonra Yenilikler bildirimlerini göster",
@@ -928,7 +1060,7 @@ export const dict = {
"settings.shortcuts.group.navigation": "Gezinme",
"settings.shortcuts.group.modelAndAgent": "Model ve ajan",
"settings.shortcuts.group.terminal": "Terminal",
"settings.shortcuts.group.prompt": "Komut",
"settings.shortcuts.group.prompt": "İstem",
"settings.providers.title": "Sağlayıcılar",
"settings.providers.description": "Sağlayıcı ayarları burada yapılandırılabilecek.",
@@ -953,7 +1085,7 @@ export const dict = {
"settings.permissions.section.tools": "Araçlar",
"settings.permissions.toast.updateFailed.title": "İzinler güncellenemedi",
"settings.permissions.action.allow": "İzin Ver",
"settings.permissions.action.allow": "İzin ver",
"settings.permissions.action.ask": "Sor",
"settings.permissions.action.deny": "Reddet",
@@ -993,7 +1125,7 @@ export const dict = {
"workspace.new": "Yeni çalışma alanı",
"workspace.type.local": "yerel",
"workspace.type.sandbox": "sandbox",
"workspace.type.sandbox": "korumalı alan",
"workspace.create.failed.title": "Çalışma alanı oluşturulamadı",
"workspace.delete.failed.title": "Çalışma alanı silinemedi",
"workspace.resetting.title": "Çalışma alanı sıfırlanıyor",
@@ -1025,9 +1157,9 @@ export const dict = {
"error.server.invalidConfiguration": "Geçersiz yapılandırma",
"common.moreCountSuffix": " (+{{count}} daha)",
"common.time.justNow": "Şimdi",
"common.time.minutesAgo.short": "{{count}}dk önce",
"common.time.hoursAgo.short": "{{count}}sa önce",
"common.time.daysAgo.short": "{{count}}g önce",
"common.time.minutesAgo.short": "{{count}} dk önce",
"common.time.hoursAgo.short": "{{count}} sa önce",
"common.time.daysAgo.short": "{{count}} gün önce",
"settings.providers.connected.environmentDescription": "Ortam değişkenlerinizden bağlandı",
"settings.providers.custom.description": "Temel URL üzerinden OpenAI uyumlu bir sağlayıcı ekleyin.",
@@ -1065,7 +1197,7 @@ export const dict = {
"debugBar.nav.tip":
"Yönlendirici başlangıcından yerleşme sonrası ilk boyamaya kadar ölçülen, bir oturum sayfasına dokunan son tamamlanmış rota geçişi.",
"debugBar.fps.label": "FPS",
"debugBar.fps.tip": "Son 5 saniyedeki kayan saniye başına kare sayısı.",
"debugBar.fps.tip": "Son 5 saniyedeki hareketli saniye başına kare ortalaması.",
"debugBar.frame.label": "FRAME",
"debugBar.frame.tip": "Son 5 saniyedeki en kötü kare süresi.",
"debugBar.jank.label": "JANK",
@@ -1079,14 +1211,14 @@ export const dict = {
"debugBar.cls.label": "CLS",
"debugBar.cls.tip": "Mevcut uygulama ömrü için kümülatif düzen kayması.",
"debugBar.mem.label": "MEM",
"debugBar.mem.tipUnavailable": "Kullanılan JS yığını vs yığın sınırı. Yalnızca Chromium.",
"debugBar.mem.tip": "Kullanılan JS yığını vs yığın sınırı. {{limit}} içinde {{used}}.",
"debugBar.mem.tipUnavailable": "Kullanılan JS yığınının yığın sınırına oranı. Yalnızca Chromium.",
"debugBar.mem.tip": "Kullanılan JS yığınının yığın sınırına oranı: {{used}} / {{limit}}.",
"common.key.ctrl": "Ctrl",
"common.key.alt": "Alt",
"common.key.shift": "Shift",
"common.key.meta": "Meta",
"common.key.space": "Boşluk",
"common.key.backspace": "Geri",
"common.key.backspace": "Geri Al",
"common.key.enter": "Enter",
"common.key.tab": "Tab",
"common.key.delete": "Delete",
+174 -34
View File
@@ -1,4 +1,104 @@
export const dict = {
"desktop.menu.app": "OpenCode",
"desktop.menu.file": "Файл",
"desktop.menu.edit": "Редагування",
"desktop.menu.view": "Вигляд",
"desktop.menu.go": "Перехід",
"desktop.menu.window": "Вікно",
"desktop.menu.help": "Довідка",
"desktop.menu.checkForUpdates": "Перевірити наявність оновлень...",
"desktop.menu.settings": "Налаштування",
"desktop.menu.reloadWebview": "Перезавантажити вебподання",
"desktop.menu.restart": "Перезапустити",
"desktop.menu.exportLogs": "Експортувати журнали...",
"desktop.menu.newSession": "Нова сесія",
"desktop.menu.openProject": "Відкрити проєкт...",
"desktop.menu.newWindow": "Нове вікно",
"desktop.menu.closeWindow": "Закрити вікно",
"desktop.menu.undo": "Скасувати",
"desktop.menu.redo": "Повторити",
"desktop.menu.cut": "Вирізати",
"desktop.menu.copy": "Копіювати",
"desktop.menu.paste": "Вставити",
"desktop.menu.delete": "Видалити",
"desktop.menu.selectAll": "Вибрати все",
"desktop.menu.toggleSidebar": "Перемкнути бічну панель",
"desktop.menu.toggleTerminal": "Перемкнути термінал",
"desktop.menu.toggleFileTree": "Перемкнути дерево файлів",
"desktop.menu.reload": "Перезавантажити",
"desktop.menu.toggleDeveloperTools": "Перемкнути інструменти розробника",
"desktop.menu.actualSize": "Фактичний розмір",
"desktop.menu.zoomIn": "Збільшити",
"desktop.menu.zoomOut": "Зменшити",
"desktop.menu.toggleFullScreen": "Перемкнути повноекранний режим",
"desktop.menu.back": "Назад",
"desktop.menu.forward": "Вперед",
"desktop.menu.previousSession": "Попередня сесія",
"desktop.menu.nextSession": "Наступна сесія",
"desktop.menu.previousProject": "Попередній проєкт",
"desktop.menu.nextProject": "Наступний проєкт",
"desktop.menu.minimize": "Згорнути",
"desktop.menu.maximize": "Розгорнути",
"desktop.menu.documentation": "Документація OpenCode",
"desktop.menu.supportForum": "Форум підтримки",
"desktop.menu.shareFeedback": "Надіслати відгук",
"desktop.menu.reportBug": "Повідомити про помилку",
"desktop.menu.ariaLabel": "Меню OpenCode",
"desktop.updater.dialog.checkFailed.message": "Не вдалося перевірити наявність оновлень.",
"desktop.updater.dialog.checkFailed.title": "Помилка оновлення",
"desktop.updater.dialog.upToDate.message": "У вас найновіша версія.",
"desktop.updater.dialog.upToDate.title": "Оновлень немає",
"desktop.updater.dialog.ready.message": "Оновлення {{version}} завантажено. Перезапустити зараз?",
"desktop.updater.dialog.ready.title": "Оновлення готове",
"desktop.updater.dialog.restart": "Перезапустити",
"desktop.updater.dialog.later": "Пізніше",
"desktop.recovery.action.relaunch": "Запустити повторно",
"desktop.recovery.action.exportLogs": "Експортувати журнали",
"desktop.recovery.action.keepWaiting": "Продовжити очікування",
"desktop.recovery.action.quit": "Завершити роботу",
"desktop.recovery.loadFailed": "Не вдалося завантажити OpenCode",
"desktop.recovery.terminated": "Роботу вікна OpenCode несподівано завершено",
"desktop.recovery.unresponsive": "OpenCode не відповідає",
"desktop.recovery.unresponsive.detail":
"Ви можете повторно запустити програму, відкрити журнали або продовжити очікування.",
"desktop.recovery.loadFailed.detail": "Вікно: {{window}}\nURL: {{url}}\nПомилка: {{code}} {{description}}",
"desktop.recovery.terminated.detail": "Вікно: {{window}}\nПричина: {{reason}}\nКод: {{code}}",
"desktop.recovery.unknown": "<невідомо>",
"desktop.dialog.chooseFolder": "Виберіть папку",
"desktop.dialog.chooseFile": "Виберіть файл",
"desktop.dialog.saveFile": "Зберегти файл",
"desktop.dialog.files": "Файли",
"desktop.server.local": "Локальний сервер",
"desktop.wsl.error.windowsOnly": "WSL доступна лише у Windows",
"desktop.wsl.error.unavailable": "WSL недоступна",
"desktop.wsl.error.listInstalled": "Не вдалося отримати список встановлених дистрибутивів WSL",
"desktop.wsl.error.listOnline": "Не вдалося отримати список доступних онлайн дистрибутивів WSL",
"desktop.wsl.error.executeDistro": "Не вдалося виконати команди в дистрибутиві",
"desktop.wsl.error.installWsl": "Не вдалося встановити WSL",
"desktop.wsl.error.installDistro": "Не вдалося встановити дистрибутив: {{distro}}",
"desktop.wsl.error.installOpencode": "Не вдалося встановити OpenCode",
"desktop.wsl.error.alreadyAdded": "{{distro}} уже додано",
"desktop.wsl.error.opencodeMissing": "opencode не встановлено в цьому дистрибутиві",
"desktop.wsl.error.opencodeCannotRun": "opencode встановлено, але його не вдалося запустити",
"desktop.wsl.error.opencodeNotInstalled": "OpenCode не встановлено в {{distro}}",
"desktop.wsl.error.updateVersion":
"Оновлення OpenCode завершено, але {{distro}} усе ще повідомляє про версію {{installed}}; очікувалася {{expected}}",
"desktop.wsl.error.noVersion": "версію не вказано",
"desktop.wsl.error.serverExited": "Сервер WSL завершив роботу після запуску (code={{code}} signal={{signal}})",
"desktop.wsl.error.serverExitedBeforeHealthy":
"Сервер WSL завершив роботу, не досягнувши працездатного стану (code={{code}} signal={{signal}}){{output}}",
"desktop.wsl.error.healthTimeout":
"Час очікування перевірки працездатності sidecar для {{distro}} минув через {{timeout}}мс",
"desktop.wsl.error.commandTimeout": "Час очікування {{command}} {{args}} минув через {{timeout}}мс",
"desktop.wsl.error.failedPort": "Не вдалося отримати порт",
"desktop.picker.error.notSelected": "Засіб вибору не повернув вибраний файл",
"desktop.picker.error.sizeLimit": "Вибрані вкладення перевищують обмеження в {{limit}} МБ",
"command.category.suggested": "Рекомендовані",
"command.category.view": "Вигляд",
"command.category.project": "Проєкт",
@@ -16,6 +116,7 @@ export const dict = {
"command.category.permissions": "Дозволи",
"command.category.workspace": "Робоча область",
"command.category.settings": "Налаштування",
"command.logs.export": "Експортувати журнали",
"theme.scheme.system": "Системна",
"theme.scheme.light": "Світла",
@@ -102,26 +203,28 @@ export const dict = {
"dialog.provider.empty": "Провайдерів не знайдено",
"dialog.provider.group.popular": "Популярні",
"dialog.provider.group.other": "Інші",
"dialog.provider.custom.label": "Користувацький провайдер, сумісний з OpenAI",
"dialog.provider.tag.recommended": "Рекомендовані",
"dialog.provider.opencode.note": "Відібрані моделі, включаючи Claude, GPT, Gemini та інші",
"dialog.provider.opencode.tagline": "Надійні оптимізовані моделі",
"dialog.provider.opencodeGo.tagline": "Недорога підписка для всіх",
"dialog.provider.anthropic.note": "Прямий доступ до моделей Claude, включаючи Pro та Max",
"dialog.provider.copilot.note": "Моделі AI для допомоги в кодуванні через GitHub Copilot",
"dialog.provider.openai.note": "Моделі GPT для швидких і універсальних завдань AI",
"dialog.provider.copilot.note": "Моделі ШІ для допомоги в кодуванні через GitHub Copilot",
"dialog.provider.openai.note": "Моделі GPT для швидких і універсальних завдань ШІ",
"dialog.provider.google.note": "Моделі Gemini для швидких структурованих відповідей",
"dialog.provider.openrouter.note": "Доступ до всіх підтримуваних моделей від одного провайдера",
"dialog.provider.vercel.note": "Уніфікований доступ до моделей AI з інтелектуальною маршрутизацією",
"dialog.provider.vercel.note": "Уніфікований доступ до моделей ШІ з інтелектуальною маршрутизацією",
"dialog.model.select.title": "Вибрати модель",
"dialog.model.search.placeholder": "Пошук моделей",
"dialog.model.empty": "Немає результатів моделей",
"dialog.model.empty": "Моделей не знайдено",
"dialog.model.manage": "Керувати моделями",
"dialog.model.manage.description": "Налаштуйте, які моделі відображатимуться у виборі моделей.",
"dialog.model.manage.provider.toggle": "Перемкнути всі моделі {{provider}}",
"dialog.model.unpaid.freeModels.title": "Безкоштовні моделі від OpenCode",
"dialog.model.unpaid.addMore.title": "Додати більше моделей від популярних провайдерів",
"dialog.model.unpaid.viewMoreProviders": "Переглянути ще понад 70 провайдерів",
"dialog.provider.viewAll": "Показати більше провайдерів",
@@ -129,6 +232,8 @@ export const dict = {
"provider.connect.title.anthropicProMax": "Увійти з Claude Pro/Max",
"provider.connect.selectMethod": "Виберіть спосіб входу для {{provider}}.",
"provider.connect.method.apiKey": "Ключ API",
"provider.connect.method.browser": "Браузер",
"provider.connect.method.headless": "Без графічного інтерфейсу",
"provider.connect.status.inProgress": "Авторизація виконується...",
"provider.connect.status.waiting": "Очікування авторизації...",
"provider.connect.status.failed": "Авторизація не вдалася: {{error}}",
@@ -161,6 +266,7 @@ export const dict = {
"provider.connect.toast.connected.description": "Моделі {{provider}} тепер доступні для використання.",
"provider.custom.title": "Користувацький провайдер",
"provider.custom.unavailable": "Користувацькі провайдери недоступні на цьому сервері",
"provider.custom.description.prefix": "Налаштуйте провайдера, сумісного з OpenAI. Перегляньте ",
"provider.custom.description.link": "документацію з налаштування провайдера",
"provider.custom.description.suffix": ".",
@@ -168,7 +274,7 @@ export const dict = {
"provider.custom.field.providerID.placeholder": "myprovider",
"provider.custom.field.providerID.description": "Малі літери, цифри, дефіси або підкреслення",
"provider.custom.field.name.label": "Відображувана назва",
"provider.custom.field.name.placeholder": "Мій AI Провайдер",
"provider.custom.field.name.placeholder": "Мій провайдер ШІ",
"provider.custom.field.baseURL.label": "Базовий URL",
"provider.custom.field.baseURL.placeholder": "https://api.myprovider.com/v1",
"provider.custom.field.apiKey.label": "Ключ API",
@@ -189,7 +295,7 @@ export const dict = {
"provider.custom.headers.value.placeholder": "значення",
"provider.custom.headers.remove": "Видалити заголовок",
"provider.custom.headers.add": "Додати заголовок",
"provider.custom.error.providerID.required": "ID провайдера обов'язкове",
"provider.custom.error.providerID.required": "ID провайдера обов'язковий",
"provider.custom.error.providerID.format": "Використовуйте малі літери, цифри, дефіси або підкреслення",
"provider.custom.error.providerID.exists": "ID провайдера вже існує",
"provider.custom.error.name.required": "Відображувана назва обов'язкова",
@@ -314,7 +420,7 @@ export const dict = {
"dialog.mcp.description": "{{enabled}} з {{total}} увімкнено",
"dialog.mcp.empty": "MCP не налаштовано",
"dialog.lsp.empty": "LSP автоматично виявлені за типами файлів",
"dialog.lsp.empty": "Сервери LSP автоматично виявляються за типами файлів",
"dialog.plugins.empty": "Плагіни налаштовані в opencode.json",
"mcp.status.connected": "підключено",
@@ -333,8 +439,8 @@ export const dict = {
"dialog.directory.parent": "Батьківська папка",
"dialog.directory.readError": "Не вдалося прочитати цю папку",
"app.server.unreachable": "Не вдалося досягти {{server}}",
"app.server.retrying": "Автоматичне повторення...",
"app.server.unreachable": "Не вдалося зв'язатися із {{server}}",
"app.server.retrying": "Автоматична повторна спроба...",
"app.server.otherServers": "Інші сервери",
"dialog.server.title": "Сервери",
@@ -364,7 +470,7 @@ export const dict = {
"dialog.server.menu.edit": "Редагувати",
"dialog.server.menu.default": "Встановити за замовчуванням",
"dialog.server.menu.defaultRemove": "Видалити за замовчуванням",
"dialog.server.menu.defaultRemove": "Скасувати використання за замовчуванням",
"dialog.server.menu.delete": "Видалити",
"dialog.server.current": "Поточний сервер",
"dialog.server.status.default": "За замовчуванням",
@@ -437,6 +543,22 @@ export const dict = {
"wsl.onboarding.desktopVersion": "десктопний застосунок {{version}}",
"wsl.onboarding.versionMismatch": "Встановлена версія не відповідає версії десктопного застосунку.",
"wsl.onboarding.adding": "Додавання...",
"help.tabs.toast.ariaLabel": "Представляємо вкладки. Упорядковуйте роботу й активні сесії за допомогою вкладок",
"help.tabs.toast.dismiss": "Закрити інформацію про вкладки",
"help.tabs.title": "Представляємо вкладки",
"help.tabs.description": "Упорядковуйте роботу й активні сесії за допомогою вкладок",
"help.tabs.date": "14 липня",
"help.tabs.introduction": "OpenCode Desktop тепер побудовано навколо вкладок.",
"help.tabs.sessions":
"Почніть нову сесію у вкладці або відкрийте наявну сесію з будь-якого свого проєкту. Відкривайте нову вкладку, коли починаєте щось нове, і закривайте її після завершення.",
"help.tabs.organize":
"Кілька відкритих вкладок полегшують упорядкування активних сесій. Якщо плануєте залишити вкладки відкритими, перейменуйте їх на щось пам'ятне.",
"help.tabs.home":
"Усі свої сесії та проєкти ви знайдете на новому екрані «Головна». Вибрана сесія відкриється у вкладці.",
"help.tabs.persistence": "Після повторного відкриття програми ваші вкладки залишаться відкритими.",
"help.tabs.worktrees":
"Новий дизайн поки не підтримує робочі дерева Git, але ця можливість незабаром з'явиться. Тож якщо ви бажаєте й надалі користуватися попереднім макетом, перемикатися між макетами можна в налаштуваннях. Зауважте, що за кілька тижнів новий макет стане постійним.",
"server.row.noUsername": "без імені користувача",
"dialog.project.edit.title": "Редагувати проєкт",
@@ -466,7 +588,7 @@ export const dict = {
"context.breakdown.other": "Інше",
"context.systemPrompt.title": "Системний запит",
"context.rawMessages.title": "Сировинні повідомлення",
"context.rawMessages.title": "Необроблені повідомлення",
"context.stats.session": "Сесія",
"context.stats.messages": "Повідомлення",
@@ -560,14 +682,14 @@ export const dict = {
"error.page.details.label": "Деталі помилки",
"error.page.action.restart": "Перезапустити",
"error.page.action.report": "Повідомити про помилку",
"error.page.action.reported": "Помилку повідомлено",
"error.page.action.reported": ро помилку повідомлено",
"error.page.action.exportLogs": "Експортувати журнали",
"error.page.action.checking": "Перевірка...",
"error.page.action.checkUpdates": "Перевірити оновлення",
"error.page.action.updateTo": "Оновити до {{version}}",
"error.page.circular": "[Циклічне]",
"error.page.report.prefix": "Будь ласка, повідомте про цю помилку команді OpenCode",
"error.page.report.discord": "на Discord",
"error.page.report.discord": "у Discord",
"error.page.version": "Версія: {{version}}",
"error.dev.rootNotFound":
@@ -587,7 +709,7 @@ export const dict = {
"error.chain.causedBy": "Причина:",
"error.chain.apiError": "Помилка API",
"error.chain.status": "Статус: {{status}}",
"error.chain.retryable": "Повторювано: {{retryable}}",
"error.chain.retryable": "Можна повторити: {{retryable}}",
"error.chain.responseBody": "Тіло відповіді:\n{{body}}",
"error.chain.didYouMean": "Можливо, ви мали на увазі: {{suggestions}}",
"error.chain.modelNotFound": "Модель не знайдено: {{provider}}/{{model}}",
@@ -663,7 +785,7 @@ export const dict = {
"session.files.selectToOpen": "Виберіть файл для відкриття",
"session.files.all": "Усі файли",
"session.files.empty": "Немає файлів",
"session.files.binaryContent": "Бінарний файл (вміст не може бути відображено)",
"session.files.binaryContent": "Двійковий файл (вміст неможливо відобразити)",
"session.messages.renderEarlier": "Відобразити раніші повідомлення",
"session.messages.loadingEarlier": "Завантаження раніших повідомлень...",
@@ -680,14 +802,20 @@ export const dict = {
"session.question.minimize": "Згорнути запитання",
"session.question.restore": "Відновити запитання",
"session.question.pending.one": "{{count}} запитання очікує відповіді",
"session.question.pending.few": "{{count}} запитання очікують відповіді",
"session.question.pending.many": "{{count}} запитань очікують відповіді",
"session.question.pending.other": "Запитання, що очікують відповіді: {{count}}",
"session.followupDock.summary.one": "{{count}} повідомлення в черзі",
"session.followupDock.summary.few": "{{count}} повідомлення в черзі",
"session.followupDock.summary.many": "{{count}} повідомлень у черзі",
"session.followupDock.summary.other": "{{count}} повідомлень у черзі",
"session.followupDock.sendNow": "Надіслати зараз",
"session.followupDock.edit": "Редагувати",
"session.followupDock.collapse": "Згорнути повідомлення в черзі",
"session.followupDock.expand": "Розгорнути повідомлення в черзі",
"session.revertDock.summary.one": "{{count}} скасоване повідомлення",
"session.revertDock.summary.few": "{{count}} скасовані повідомлення",
"session.revertDock.summary.many": "{{count}} скасованих повідомлень",
"session.revertDock.summary.other": "{{count}} скасованих повідомлень",
"session.revertDock.collapse": "Згорнути скасовані повідомлення",
"session.revertDock.expand": "Розгорнути скасовані повідомлення",
@@ -715,7 +843,10 @@ export const dict = {
"session.header.open.menu": "Параметри відкриття",
"session.header.open.copyPath": "Копіювати шлях",
"session.header.open.finder": "Finder",
"session.header.open.fileExplorer": "Провідник файлів",
"session.header.open.fileExplorer": "Файловий провідник",
"session.header.reveal.finder": "Показати у Finder",
"session.header.reveal.fileExplorer": "Показати у Файловому провіднику",
"session.header.reveal.containingFolder": "Відкрити папку розташування",
"session.header.open.fileManager": "Файловий менеджер",
"session.header.open.app.vscode": "VS Code",
"session.header.open.app.cursor": "Cursor",
@@ -765,12 +896,18 @@ export const dict = {
"terminal.connectionLost.abnormalClose": "WebSocket закрито аномально: {{code}}",
"terminal.connectionLost.description":
"З'єднання з терміналом було перервано. Це може статися під час перезапуску сервера.",
"terminal.connectTicket.csrfError":
"Квиток підключення PTY відхилено через перевірку джерела або CSRF. Перевірте конфігурацію CORS сервера.",
"terminal.connectTicket.statusError": "Помилка квитка підключення PTY зі статусом {{status}}",
"titlebar.update": "Оновити",
"titlebar.updateVersion": "Оновити {{version}}",
"common.closeTab": "Закрити вкладку",
"common.dismiss": "Відхилити",
"common.moreCountSuffix": " (ще {{count}})",
"common.requestFailed": "Запит не виконано",
"common.moreOptions": "Більше опцій",
"common.moreOptions": "Більше параметрів",
"common.learnMore": "Дізнатися більше",
"common.rename": "Перейменувати",
"common.reset": "Скинути",
@@ -843,10 +980,10 @@ export const dict = {
"app.name.desktop": "OpenCode Desktop",
"settings.section.desktop": "Робочий стіл",
"settings.section.desktop": "Десктопний застосунок",
"settings.section.server": "Сервер",
"settings.tab.general": "Загальні",
"settings.tab.shortcuts": "Скорочення",
"settings.tab.shortcuts": "Клавіатурні скорочення",
"settings.desktop.section.wsl": "WSL",
"settings.desktop.wsl.title": "Інтеграція WSL",
"settings.desktop.wsl.description": "Запускати сервер OpenCode всередині WSL на Windows.",
@@ -864,7 +1001,7 @@ export const dict = {
"settings.general.row.shell.title": "Командна оболонка термінала",
"settings.general.row.shell.description":
"Виберіть оболонку для термінала. Сумісні оболонки також використовуються для викликів інструментів агента.",
"settings.general.row.shell.autoDefault": "Авто (за замовчуванням)",
"settings.general.row.shell.autoDefault": "Автоматично (за замовчуванням)",
"settings.general.row.shell.terminalOnly": "тільки термінал",
"settings.general.row.appearance.title": "Зовнішній вигляд",
"settings.general.row.appearance.description": "Налаштуйте вигляд OpenCode на вашому пристрої",
@@ -885,18 +1022,21 @@ export const dict = {
"settings.general.row.showFileTree.title": "Дерево файлів",
"settings.general.row.showFileTree.description": "Показувати панель дерева файлів у сесіях",
"settings.general.row.showNavigation.title": "Елементи навігації",
"settings.general.row.showNavigation.description": "Показувати кнопки назад і вперед у заголовку робочого столу",
"settings.general.row.showNavigation.description":
"Показувати кнопки назад і вперед на панелі заголовка десктопного застосунку",
"settings.general.row.showSearch.title": "Палітра команд",
"settings.general.row.showSearch.description": "Показувати кнопку пошуку та палітри команд у заголовку",
"settings.general.row.showSearch.description": "Показувати кнопку пошуку та палітри команд на панелі заголовка",
"settings.general.row.showTerminal.title": "Термінал",
"settings.general.row.showTerminal.description": "Показувати кнопку термінала в заголовку робочого столу",
"settings.general.row.showTerminal.description":
"Показувати кнопку термінала на панелі заголовка десктопного застосунку",
"settings.general.row.showStatus.title": "Статус сервера",
"settings.general.row.showStatus.description": "Показувати кнопку статусу сервера в заголовку",
"settings.general.row.showStatus.description": "Показувати кнопку стану сервера на панелі заголовка",
"settings.general.row.mobileTitlebarBottom.title": "Нижня навігація",
"settings.general.row.mobileTitlebarBottom.description":
"Розмістити заголовок і вкладки сесії внизу екрана на мобільних пристроях",
"settings.general.row.showCustomAgents.title": "Користувацькі агенти",
"settings.general.row.showCustomAgents.description": "Показувати вибір агента в редакторі запиту",
"Розмістити панель заголовка та вкладки сесії внизу екрана на мобільних пристроях",
"settings.general.row.showCustomAgents.title": "Показувати агента",
"settings.general.row.showCustomAgents.description":
"Перемикатися між агентами в редакторі запиту. Якщо приховано, типовим є агент Build.",
"settings.general.row.reasoningSummaries.title": "Показувати підсумки мислення",
"settings.general.row.reasoningSummaries.description": "Відображати підсумки мислення моделі на часовій шкалі",
"settings.general.row.shellToolPartsExpanded.title": "Розгортати частини інструменту оболонки",
@@ -996,16 +1136,16 @@ export const dict = {
"settings.general.sounds.errors.title": "Помилки",
"settings.general.sounds.errors.description": "Відтворювати звук, коли виникає помилка",
"settings.shortcuts.title": "Скорочення клавіш",
"settings.shortcuts.reset.button": "Скинути до стандартних",
"settings.shortcuts.reset.toast.title": "Скорочення скинуто",
"settings.shortcuts.reset.toast.description": "Скорочення клавіш були скинуті до стандартних.",
"settings.shortcuts.conflict.title": "Скорочення вже використовується",
"settings.shortcuts.title": "Клавіатурні скорочення",
"settings.shortcuts.reset.button": "Відновити стандартні",
"settings.shortcuts.reset.toast.title": "Клавіатурні скорочення відновлено",
"settings.shortcuts.reset.toast.description": "Стандартні клавіатурні скорочення відновлено.",
"settings.shortcuts.conflict.title": "Клавіатурне скорочення вже використовується",
"settings.shortcuts.conflict.description": "{{keybind}} вже призначено для {{titles}}.",
"settings.shortcuts.unassigned": "Не призначено",
"settings.shortcuts.pressKeys": "Натисніть клавіші",
"settings.shortcuts.search.placeholder": "Пошук скорочень",
"settings.shortcuts.search.empty": "Скорочень не знайдено",
"settings.shortcuts.search.placeholder": "Пошук клавіатурних скорочень",
"settings.shortcuts.search.empty": "Клавіатурних скорочень не знайдено",
"settings.shortcuts.group.general": "Загальні",
"settings.shortcuts.group.session": "Сесія",
+1143
View File
@@ -0,0 +1,1143 @@
export const dict = {
"desktop.menu.app": "OpenCode",
"desktop.menu.file": "فائل",
"desktop.menu.edit": "ترمیم",
"desktop.menu.view": "دیکھیں",
"desktop.menu.go": "جائیں",
"desktop.menu.window": "ونڈو",
"desktop.menu.help": "مدد",
"desktop.menu.checkForUpdates": "اپ ڈیٹس کی جانچ کریں...",
"desktop.menu.settings": "ترتیبات",
"desktop.menu.reloadWebview": "ویب ویو دوبارہ لوڈ کریں",
"desktop.menu.restart": "دوبارہ شروع کریں",
"desktop.menu.exportLogs": "لاگز برآمد کریں...",
"desktop.menu.newSession": "نیا سیشن",
"desktop.menu.openProject": "پروجیکٹ کھولیں...",
"desktop.menu.newWindow": "نئی ونڈو",
"desktop.menu.closeWindow": "ونڈو بند کریں",
"desktop.menu.undo": "کالعدم کریں",
"desktop.menu.redo": "دوبارہ کریں",
"desktop.menu.cut": "کاٹیں",
"desktop.menu.copy": "کاپی کریں",
"desktop.menu.paste": "چسپاں کریں",
"desktop.menu.delete": "حذف کریں",
"desktop.menu.selectAll": "سبھی منتخب کریں",
"desktop.menu.toggleSidebar": "سائیڈ بار دکھائیں یا چھپائیں",
"desktop.menu.toggleTerminal": "ٹرمینل دکھائیں یا چھپائیں",
"desktop.menu.toggleFileTree": "فائل ٹری دکھائیں یا چھپائیں",
"desktop.menu.reload": "دوبارہ لوڈ کریں",
"desktop.menu.toggleDeveloperTools": "ڈویلپر ٹولز دکھائیں یا چھپائیں",
"desktop.menu.actualSize": "اصل سائز",
"desktop.menu.zoomIn": "بڑا کریں",
"desktop.menu.zoomOut": "چھوٹا کریں",
"desktop.menu.toggleFullScreen": "پوری اسکرین دکھائیں یا چھپائیں",
"desktop.menu.back": "پیچھے",
"desktop.menu.forward": "آگے",
"desktop.menu.previousSession": "پچھلا سیشن",
"desktop.menu.nextSession": "اگلا سیشن",
"desktop.menu.previousProject": "پچھلا پروجیکٹ",
"desktop.menu.nextProject": "اگلا پروجیکٹ",
"desktop.menu.minimize": "چھوٹا کریں",
"desktop.menu.maximize": "بڑا کریں",
"desktop.menu.documentation": "OpenCode دستاویزات",
"desktop.menu.supportForum": "معاونتی فورم",
"desktop.menu.shareFeedback": "رائے کا اشتراک کریں",
"desktop.menu.reportBug": "خرابی کی اطلاع دیں",
"desktop.menu.ariaLabel": "OpenCode مینو",
"desktop.updater.dialog.checkFailed.message": "اپ ڈیٹ کی جانچ ناکام ہو گئی۔",
"desktop.updater.dialog.checkFailed.title": "اپ ڈیٹ کی خرابی",
"desktop.updater.dialog.upToDate.message": "آپ کا سافٹ ویئر تازہ ترین ہے۔",
"desktop.updater.dialog.upToDate.title": "کوئی اپ ڈیٹ نہیں",
"desktop.updater.dialog.ready.message": "اپ ڈیٹ {{version}} ڈاؤن لوڈ ہو گئی ہے۔ ابھی دوبارہ شروع کریں؟",
"desktop.updater.dialog.ready.title": "اپ ڈیٹ تیار ہے",
"desktop.updater.dialog.restart": "دوبارہ شروع کریں",
"desktop.updater.dialog.later": "بعد میں",
"desktop.recovery.action.relaunch": "دوبارہ چلائیں",
"desktop.recovery.action.exportLogs": "لاگز برآمد کریں",
"desktop.recovery.action.keepWaiting": "انتظار جاری رکھیں",
"desktop.recovery.action.quit": "بند کریں",
"desktop.recovery.loadFailed": "OpenCode لوڈ نہیں ہو سکا",
"desktop.recovery.terminated": "OpenCode ونڈو غیر متوقع طور پر بند ہو گئی",
"desktop.recovery.unresponsive": "OpenCode جواب نہیں دے رہا",
"desktop.recovery.unresponsive.detail":
"آپ ایپ کو دوبارہ چلا سکتے ہیں، لاگز کھول سکتے ہیں یا انتظار جاری رکھ سکتے ہیں۔",
"desktop.recovery.loadFailed.detail": "ونڈو: {{window}}\nURL: {{url}}\nخرابی: {{code}} {{description}}",
"desktop.recovery.terminated.detail": "ونڈو: {{window}}\nوجہ: {{reason}}\nکوڈ: {{code}}",
"desktop.recovery.unknown": "<نامعلوم>",
"desktop.dialog.chooseFolder": "فولڈر منتخب کریں",
"desktop.dialog.chooseFile": "فائل منتخب کریں",
"desktop.dialog.saveFile": "فائل محفوظ کریں",
"desktop.dialog.files": "فائلیں",
"desktop.server.local": "مقامی سرور",
"desktop.wsl.error.windowsOnly": "WSL صرف Windows پر دستیاب ہے",
"desktop.wsl.error.unavailable": "WSL دستیاب نہیں ہے",
"desktop.wsl.error.listInstalled": "انسٹال شدہ WSL ڈسٹری بیوشنز کی فہرست حاصل نہیں ہو سکی",
"desktop.wsl.error.listOnline": "آن لائن WSL ڈسٹری بیوشنز کی فہرست حاصل نہیں ہو سکی",
"desktop.wsl.error.executeDistro": "ڈسٹری بیوشن میں کمانڈز نہیں چلائی جا سکتیں",
"desktop.wsl.error.installWsl": "WSL کی تنصیب ناکام ہو گئی",
"desktop.wsl.error.installDistro": "ڈسٹری بیوشن انسٹال نہیں ہو سکی: {{distro}}",
"desktop.wsl.error.installOpencode": "OpenCode کی تنصیب ناکام ہو گئی",
"desktop.wsl.error.alreadyAdded": "{{distro}} پہلے ہی شامل ہے",
"desktop.wsl.error.opencodeMissing": "اس ڈسٹری بیوشن میں opencode انسٹال نہیں ہے",
"desktop.wsl.error.opencodeCannotRun": "opencode انسٹال ہے لیکن چل نہیں سکا",
"desktop.wsl.error.opencodeNotInstalled": "{{distro}} میں OpenCode انسٹال نہیں ہے",
"desktop.wsl.error.updateVersion":
"OpenCode کی اپ ڈیٹ مکمل ہو گئی لیکن {{distro}} اب بھی {{installed}} کی اطلاع دے رہا ہے؛ متوقع ورژن {{expected}} ہے",
"desktop.wsl.error.noVersion": "کوئی ورژن نہیں",
"desktop.wsl.error.serverExited": "WSL سرور شروع ہونے کے بعد بند ہو گیا (code={{code}} signal={{signal}})",
"desktop.wsl.error.serverExitedBeforeHealthy":
"WSL سرور فعال ہونے سے پہلے بند ہو گیا (code={{code}} signal={{signal}}){{output}}",
"desktop.wsl.error.healthTimeout":
"{{distro}} کے سائیڈ کار کی صحت کی جانچ {{timeout}}ms کے بعد مقررہ وقت سے تجاوز کر گئی",
"desktop.wsl.error.commandTimeout": "{{command}} {{args}} نے {{timeout}}ms کے بعد مقررہ وقت سے تجاوز کر دیا",
"desktop.wsl.error.failedPort": "پورٹ حاصل نہیں ہو سکی",
"desktop.picker.error.notSelected": "فائل چنندہ میں کوئی فائل منتخب نہیں کی گئی",
"desktop.picker.error.sizeLimit": "منتخب منسلکات {{limit}} MB کی حد سے زیادہ ہیں",
"command.category.suggested": "تجویز کردہ",
"command.category.view": "دیکھیں",
"command.category.project": "پروجیکٹ",
"command.category.provider": "فراہم کنندہ",
"command.category.server": "سرور",
"command.category.session": "سیشن",
"command.category.theme": "تھیم",
"command.category.language": "زبان",
"command.category.file": "فائل",
"command.category.context": "سیاق و سباق",
"command.category.terminal": "ٹرمینل",
"command.category.model": "ماڈل",
"command.category.mcp": "MCP",
"command.category.agent": "ایجنٹ",
"command.category.permissions": "اجازتیں",
"command.category.workspace": "کام کی جگہ",
"command.category.settings": "ترتیبات",
"command.logs.export": "لاگز برآمد کریں",
"theme.scheme.system": "سسٹم",
"theme.scheme.light": "روشن",
"theme.scheme.dark": "تاریک",
"command.sidebar.toggle": "سائیڈ بار دکھائیں یا چھپائیں",
"command.project.open": "پروجیکٹ کھولیں۔",
"command.project.previous": "پچھلا پروجیکٹ",
"command.project.next": "اگلا پروجیکٹ",
"command.project.index": "پروجیکٹ {{index}} پر سوئچ کریں۔",
"command.provider.connect": "فراہم کنندہ منسلک کریں",
"command.server.switch": "سرور تبدیل کریں",
"command.settings.open": "ترتیبات کھولیں۔",
"command.session.previous": "پچھلا سیشن",
"command.session.next": "اگلا سیشن",
"command.session.previous.unseen": "پچھلا بغیر پڑھا ہوا سیشن",
"command.session.next.unseen": "اگلا بغیر پڑھا ہوا سیشن",
"command.session.archive": "سیشن آرکائیو کریں",
"command.palette": "کمانڈ پیلیٹ",
"command.theme.cycle": "اگلی تھیم منتخب کریں",
"command.theme.set": "تھیم استعمال کریں: {{theme}}",
"command.theme.scheme.cycle": "اگلی رنگ سکیم منتخب کریں",
"command.theme.scheme.set": "رنگ سکیم استعمال کریں: {{scheme}}",
"command.language.cycle": "اگلی زبان منتخب کریں",
"command.language.set": "زبان استعمال کریں: {{language}}",
"command.session.new": "نیا سیشن",
"command.file.open": "فائل کھولیں۔",
"command.tab.close": "ٹیب بند کریں۔",
"command.tab.reopenClosed": "بند ٹیب کو دوبارہ کھولیں۔",
"command.context.addSelection": "سیاق و سباق میں انتخاب شامل کریں۔",
"command.context.addSelection.description": "موجودہ فائل سے منتخب لائنیں شامل کریں۔",
"command.input.focus": "ان پٹ پر توجہ دیں",
"command.terminal.toggle": "ٹرمینل دکھائیں یا چھپائیں",
"command.fileTree.toggle": "فائل ٹری دکھائیں یا چھپائیں",
"command.review.toggle": "جائزہ دکھائیں یا چھپائیں",
"command.terminal.new": "نیا ٹرمینل",
"command.terminal.new.description": "ایک نیا ٹرمینل ٹیب بنائیں",
"command.steps.toggle": "اقدامات دکھائیں یا چھپائیں",
"command.steps.toggle.description": "موجودہ پیغام کے لیے اقدامات دکھائیں یا چھپائیں۔",
"command.message.previous": "پچھلا پیغام",
"command.message.previous.description": "صارف کے پچھلے پیغام پر جائیں",
"command.message.next": "اگلا پیغام",
"command.message.next.description": "صارف کے اگلے پیغام پر جائیں",
"command.model.choose": "ماڈل منتخب کریں۔",
"command.model.choose.description": "ایک مختلف ماڈل منتخب کریں۔",
"command.mcp.toggle": "MCPs فعال یا غیر فعال کریں",
"command.mcp.toggle.description": "MCPs فعال یا غیر فعال کریں",
"command.agent.cycle": "اگلا ایجنٹ منتخب کریں",
"command.agent.cycle.description": "اگلے ایجنٹ پر جائیں۔",
"command.agent.cycle.reverse": "پچھلا ایجنٹ منتخب کریں",
"command.agent.cycle.reverse.description": "پچھلے ایجنٹ پر جائیں۔",
"command.model.variant.cycle": "سوچنے کی محنت کی سطح تبدیل کریں",
"command.model.variant.cycle.description": "محنت کی اگلی سطح پر جائیں۔",
"command.prompt.mode.shell": "شیل",
"command.prompt.mode.normal": "پرامپٹ",
"command.permissions.autoaccept.enable": "اجازتیں خود بخود قبول کریں۔",
"command.permissions.autoaccept.disable": "اجازتوں کو خودکار طور پر قبول کرنا بند کریں۔",
"command.workspace.toggle": "ورک اسپیسز فعال یا غیر فعال کریں",
"command.workspace.toggle.description": "سائڈبار میں متعدد ورک اسپیس کو فعال یا غیر فعال کریں۔",
"command.session.undo": "کالعدم",
"command.session.undo.description": "آخری پیغام کو کالعدم کریں۔",
"command.session.redo": "دوبارہ کریں۔",
"command.session.redo.description": "آخری کالعدم پیغام کو دوبارہ کریں۔",
"command.session.compact": "سیشن مختصر کریں",
"command.session.compact.description": "سیاق و سباق کے سائز کو کم کرنے کے لیے سیشن کا خلاصہ کریں۔",
"command.session.fork": "پیغام سے نئی شاخ بنائیں",
"command.session.fork.description": "پچھلے پیغام سے ایک نیا سیشن بنائیں",
"command.session.share": "سیشن شیئر کریں۔",
"command.session.share.description": "اس سیشن کا اشتراک کریں اور URL کو کلپ بورڈ میں کاپی کریں۔",
"command.session.unshare": "سیشن کا اشتراک ختم کریں۔",
"command.session.unshare.description": "اس سیشن کا اشتراک کرنا بند کریں۔",
"palette.search.placeholder": "فائلیں، کمانڈز اور سیشنز تلاش کریں۔",
"palette.search.placeholder.home": "کمانڈز اور سیشن تلاش کریں۔",
"palette.empty": "کوئی نتیجہ نہیں ملا",
"palette.group.commands": "کمانڈز",
"palette.group.files": "فائلیں",
"dialog.provider.search.placeholder": "فراہم کنندگان کو تلاش کریں۔",
"dialog.provider.empty": "کوئی فراہم کنندہ نہیں ملا",
"dialog.provider.group.popular": "مقبول",
"dialog.provider.group.other": "دیگر",
"dialog.provider.custom.label": "حسب ضرورت OpenAI سے ہم آہنگ فراہم کنندہ",
"dialog.provider.tag.recommended": "تجویز کردہ",
"dialog.provider.opencode.note": "کیوریٹ شدہ ماڈلز بشمول Claude، GPT، Gemini اور مزید",
"dialog.provider.opencode.tagline": "قابل اعتماد آپٹمائزڈ ماڈلز",
"dialog.provider.opencodeGo.tagline": "سب کے لیے کم لاگت کی رکنیت",
"dialog.provider.anthropic.note": "پرو اور میکس سمیت Claude ماڈلز تک براہ راست رسائی",
"dialog.provider.copilot.note": "GitHub Copilot کے ذریعے کوڈنگ امداد کے لیے AI ماڈلز",
"dialog.provider.openai.note": "تیز رفتار اور مؤثر عمومی AI کاموں کے لیے GPT ماڈلز",
"dialog.provider.google.note": "تیز، منظم جوابات کے لیے Gemini ماڈل",
"dialog.provider.openrouter.note": "ایک فراہم کنندہ سے تمام تعاون یافتہ ماڈلز تک رسائی حاصل کریں۔",
"dialog.provider.vercel.note": "سمارٹ روٹنگ کے ساتھ AI ماڈلز تک متحد رسائی",
"dialog.model.select.title": "ماڈل منتخب کریں۔",
"dialog.model.search.placeholder": "ماڈلز تلاش کریں۔",
"dialog.model.empty": "کوئی ماڈل نہیں ملا",
"dialog.model.manage": "ماڈلز کا نظم کریں۔",
"dialog.model.manage.description": "اپنی مرضی کے مطابق بنائیں کہ کون سے ماڈل ماڈل سلیکٹر میں نظر آتے ہیں۔",
"dialog.model.manage.provider.toggle": "تمام {{provider}} ماڈلز کو ٹوگل کریں۔",
"dialog.model.unpaid.freeModels.title": "OpenCode کے ذریعہ فراہم کردہ مفت ماڈلز",
"dialog.model.unpaid.addMore.title": "مشہور فراہم کنندگان سے مزید ماڈلز شامل کریں۔",
"dialog.model.unpaid.viewMoreProviders": "مزید 70 فراہم کنندگان دیکھیں",
"dialog.provider.viewAll": "مزید فراہم کنندگان دکھائیں۔",
"provider.connect.title": "{{provider}} سے منسلک ہوں",
"provider.connect.title.anthropicProMax": "Claude Pro/Max کے ساتھ لاگ ان کریں۔",
"provider.connect.selectMethod": "{{provider}} کے لیے لاگ ان کا طریقہ منتخب کریں۔",
"provider.connect.method.apiKey": "API کلید",
"provider.connect.method.browser": "براؤزر",
"provider.connect.method.headless": "ہیڈ لیس",
"provider.connect.status.inProgress": "اجازت حاصل کی جا رہی ہے...",
"provider.connect.status.waiting": "اجازت کا انتظار ہے...",
"provider.connect.status.failed": "اجازت حاصل نہیں ہو سکی: {{error}}",
"provider.connect.apiKey.description":
"اپنا اکاؤنٹ منسلک کرنے اور OpenCode میں {{provider}} ماڈلز استعمال کرنے کے لیے اپنی {{provider}} API کلید درج کریں۔",
"provider.connect.apiKey.label": "{{provider}} API کلید",
"provider.connect.apiKey.placeholder": "API کلید",
"provider.connect.apiKey.required": "API کلید درکار ہے۔",
"provider.connect.opencodeZen.line1":
"OpenCode Zen آپ کو کوڈنگ ایجنٹوں کے لیے قابل اعتماد اصلاح شدہ ماڈلز کے کیوریٹڈ سیٹ تک رسائی فراہم کرتا ہے۔",
"provider.connect.opencodeZen.line2":
"ایک واحد API کلید کے ساتھ آپ Claude، GPT، Gemini، GLM اور مزید ماڈلز تک رسائی حاصل کریں گے۔",
"provider.connect.opencodeZen.visit.prefix": "ملاحظہ کریں ",
"provider.connect.opencodeZen.visit.link": "opencode.ai/zen",
"provider.connect.opencodeZen.visit.suffix": " اور اپنی API کلید حاصل کریں۔",
"provider.connect.oauth.code.visit.prefix": "ملاحظہ کریں ",
"provider.connect.oauth.code.visit.link": "یہ لنک",
"provider.connect.oauth.code.visit.suffix":
"، اپنا اجازت نامہ حاصل کریں، اکاؤنٹ منسلک کریں اور OpenCode میں {{provider}} ماڈلز استعمال کریں۔",
"provider.connect.oauth.code.label": "{{method}} اجازت کا کوڈ",
"provider.connect.oauth.code.placeholder": "اجازت کا کوڈ",
"provider.connect.oauth.code.required": "اجازت کا کوڈ درکار ہے۔",
"provider.connect.oauth.code.invalid": "غلط اجازت کا کوڈ",
"provider.connect.oauth.auto.visit.prefix": "ملاحظہ کریں ",
"provider.connect.oauth.auto.visit.link": "یہ لنک",
"provider.connect.oauth.auto.visit.suffix":
" اور نیچے دیا گیا کوڈ درج کرکے اپنا اکاؤنٹ منسلک کریں اور OpenCode میں {{provider}} ماڈلز استعمال کریں۔",
"provider.connect.oauth.auto.confirmationCode": "تصدیقی کوڈ",
"provider.connect.toast.connected.title": "{{provider}} منسلک ہے۔",
"provider.connect.toast.connected.description": "{{provider}} ماڈل اب استعمال کے لیے دستیاب ہیں۔",
"provider.custom.title": "اپنی مرضی کے مطابق فراہم کنندہ",
"provider.custom.description.prefix": "OpenAI سے ہم آہنگ فراہم کنندہ ترتیب دیں۔ دیکھیے ",
"provider.custom.description.link": "فراہم کنندہ کی تشکیل کی دستاویزات",
"provider.custom.description.suffix": ".",
"provider.custom.field.providerID.label": "فراہم کنندہ کی شناخت",
"provider.custom.field.providerID.placeholder": "myprovider",
"provider.custom.field.providerID.description": "چھوٹے حروف، نمبر، ہائفن، یا انڈر سکور",
"provider.custom.field.name.label": "ڈسپلے کا نام",
"provider.custom.field.name.placeholder": "میرا AI فراہم کنندہ",
"provider.custom.field.baseURL.label": "بیس URL",
"provider.custom.field.baseURL.placeholder": "https://api.myprovider.com/v1",
"provider.custom.field.apiKey.label": "API کلید",
"provider.custom.field.apiKey.placeholder": "API کلید",
"provider.custom.field.apiKey.description":
"اختیاری۔ اگر آپ ہیڈرز کے ذریعے توثیق کا انتظام کرتے ہیں تو اسے خالی چھوڑ دیں۔",
"provider.custom.models.label": "ماڈلز",
"provider.custom.models.id.label": "ID",
"provider.custom.models.id.placeholder": "model-id",
"provider.custom.models.name.label": "نام",
"provider.custom.models.name.placeholder": "ڈسپلے کا نام",
"provider.custom.models.remove": "ماڈل کو ہٹا دیں۔",
"provider.custom.models.add": "ماڈل شامل کریں۔",
"provider.custom.headers.label": "ہیڈرز (اختیاری)",
"provider.custom.headers.key.label": "ہیڈر",
"provider.custom.headers.key.placeholder": "Header-Name",
"provider.custom.headers.value.label": "قدر",
"provider.custom.headers.value.placeholder": "قدر",
"provider.custom.headers.remove": "ہیڈر کو ہٹا دیں۔",
"provider.custom.headers.add": "ہیڈر شامل کریں۔",
"provider.custom.error.providerID.required": "فراہم کنندہ کی شناخت درکار ہے۔",
"provider.custom.error.providerID.format": "چھوٹے حروف، اعداد، ہائفنز، یا انڈر سکور استعمال کریں۔",
"provider.custom.error.providerID.exists": "وہ فراہم کنندہ ID پہلے سے موجود ہے۔",
"provider.custom.error.name.required": "ڈسپلے نام درکار ہے۔",
"provider.custom.error.baseURL.required": "بیس URL درکار ہے۔",
"provider.custom.error.baseURL.format": "http:// یا https:// سے شروع ہونا چاہیے",
"provider.custom.error.required": "درکار ہے۔",
"provider.custom.error.duplicate": "مکرر",
"provider.custom.unavailable": "اس سرور پر اپنی مرضی کے مطابق فراہم کنندگان دستیاب نہیں ہیں۔",
"provider.disconnect.toast.disconnected.title": "{{provider}} منقطع ہو گیا۔",
"provider.disconnect.toast.disconnected.description": "{{provider}} ماڈلز اب دستیاب نہیں ہیں۔",
"model.tag.free": "مفت",
"model.tag.latest": "تازہ ترین",
"model.provider.anthropic": "Anthropic",
"model.provider.openai": "OpenAI",
"model.provider.google": "Google",
"model.provider.xai": "xAI",
"model.provider.meta": "Meta",
"model.input.text": "متن",
"model.input.image": "تصویر",
"model.input.audio": "آڈیو",
"model.input.video": "ویڈیو",
"model.input.pdf": "پی ڈی ایف",
"model.tooltip.allows": "اجازت دیتا ہے: {{inputs}}",
"model.tooltip.context.label": "سیاق و سباق",
"model.tooltip.inputs": "ان پٹ",
"model.tooltip.model": "ماڈل",
"model.tooltip.provider": "فراہم کنندہ",
"model.tooltip.reasoning": "استدلال",
"model.tooltip.reasoning.allowed": "استدلال کی اجازت دیتا ہے۔",
"model.tooltip.reasoning.none": "کوئی استدلال نہیں۔",
"model.tooltip.context": "سیاق و سباق کی حد {{limit}}",
"common.search.placeholder": "تلاش کریں۔",
"common.goBack": "پیچھے جائیں",
"common.goForward": "آگے جائیں",
"common.loading": "لوڈ ہو رہا ہے۔",
"common.loading.ellipsis": "...",
"common.cancel": "منسوخ کریں۔",
"common.clear": "صاف",
"common.open": "کھولیں۔",
"common.connect": "جڑیں۔",
"common.disconnect": "منقطع کریں",
"common.continue": "جاری رکھیں",
"common.submit": "جمع کروائیں۔",
"common.save": "محفوظ کریں۔",
"common.saving": "محفوظ کر رہا ہے...",
"common.default": "طے شدہ",
"common.attachment": "منسلکہ",
"prompt.placeholder.shell": "شیل کمانڈ درج کریں... {{example}}",
"prompt.placeholder.normal": 'کچھ بھی پوچھیں... "{{example}}"',
"prompt.placeholder.simple": "کچھ بھی پوچھیں...",
"prompt.placeholder.summarizeComments": "تبصروں کا خلاصہ کریں…",
"prompt.placeholder.summarizeComment": "تبصرہ کا خلاصہ کریں…",
"prompt.mode.shell": "شیل",
"prompt.mode.normal": "پرامپٹ",
"prompt.mode.shell.exit": "باہر نکلنے کے لیے esc",
"session.child.promptDisabled": "ذیلی ایجنٹ کے سیشنز میں پرامپٹ نہیں دیا جا سکتا۔",
"session.child.backToParent": "مرکزی سیشن پر واپس جائیں۔",
"prompt.example.1": "کوڈ بیس میں TODO کو درست کریں۔",
"prompt.example.2": "اس پروجیکٹ کا ٹیک اسٹیک کیا ہے؟",
"prompt.example.3": "ٹوٹے ہوئے ٹیسٹوں کو درست کریں۔",
"prompt.example.4": "وضاحت کریں کہ تصدیق کیسے کام کرتی ہے۔",
"prompt.example.5": "سیکیورٹی کی کمزوریوں کو تلاش کریں اور ٹھیک کریں۔",
"prompt.example.6": "صارف کی خدمت کے لیے یونٹ ٹیسٹ شامل کریں۔",
"prompt.example.7": "مزید پڑھنے کے قابل ہونے کے لیے اس فنکشن کو ریفیکٹر کریں۔",
"prompt.example.8": "اس غلطی کا کیا مطلب ہے؟",
"prompt.example.9": "اس مسئلے کو ٹھیک کرنے میں میری مدد کریں۔",
"prompt.example.10": "API دستاویزات بنائیں",
"prompt.example.11": "ڈیٹا بیس کے سوالات کو بہتر بنائیں",
"prompt.example.12": "ان پٹ کی توثیق شامل کریں۔",
"prompt.example.13": "اس کے لیے ایک نیا جزو بنائیں...",
"prompt.example.14": "میں اس پروجیکٹ کو کیسے تعینات کروں؟",
"prompt.example.15": "بہترین طریقوں کے لیے میرے کوڈ کا جائزہ لیں۔",
"prompt.example.16": "اس فنکشن میں ایرر ہینڈلنگ شامل کریں۔",
"prompt.example.17": "اس ریجیکس پیٹرن کی وضاحت کریں۔",
"prompt.example.18": "اسے TypeScript میں تبدیل کریں۔",
"prompt.example.19": "پورے کوڈ بیس میں لاگنگ شامل کریں۔",
"prompt.example.20": "کون سے انحصار پرانے ہیں؟",
"prompt.example.21": "مائیگریشن اسکرپٹ لکھنے میں میری مدد کریں۔",
"prompt.example.22": "اس اینڈ پوائنٹ کے لیے کیشنگ نافذ کریں۔",
"prompt.example.23": "اس فہرست میں صفحہ بندی شامل کریں۔",
"prompt.example.24": "اس کے لیے CLI کمانڈ بنائیں...",
"prompt.example.25": "ماحولیاتی متغیرات یہاں کیسے کام کرتے ہیں؟",
"prompt.popover.emptyResults": "کوئی مماثل نتائج نہیں ہیں۔",
"prompt.popover.emptyCommands": "کوئی مماثل حکم نہیں ہے۔",
"prompt.dropzone.label": "تصاویر، PDFs، یا ٹیکسٹ فائلیں یہاں ڈراپ کریں۔",
"prompt.dropzone.file.label": "فائل کو @mention کرنے کے لیے یہاں ڈراپ کریں",
"prompt.slash.badge.custom": "اپنی مرضی کے مطابق",
"prompt.slash.badge.skill": "مہارت",
"prompt.slash.badge.mcp": "ایم سی پی",
"prompt.context.active": "فعال",
"prompt.context.includeActiveFile": "فعال فائل شامل کریں۔",
"prompt.context.removeActiveFile": "سیاق و سباق سے فعال فائل کو ہٹا دیں۔",
"prompt.context.removeFile": "سیاق و سباق سے فائل کو ہٹا دیں۔",
"prompt.action.attachFile": "فائلیں شامل کریں۔",
"prompt.menu.addImagesAndFiles": "فائلیں اور مزید شامل کریں۔",
"prompt.menu.imagesAndFiles": "تصاویر اور فائلیں۔",
"prompt.menu.commands": "کمانڈز",
"prompt.menu.context": "سیاق و سباق",
"prompt.menu.shellCommand": "شیل کمانڈ",
"prompt.attachment.remove": "منسلکہ کو ہٹا دیں۔",
"prompt.action.send": "بھیجیں۔",
"prompt.action.stop": "روکیں",
"prompt.toast.pasteUnsupported.title": "غیر تعاون یافتہ منسلکہ",
"prompt.toast.pasteUnsupported.description": "یہاں صرف تصاویر، PDFs، یا ٹیکسٹ فائلیں منسلک کی جا سکتی ہیں۔",
"prompt.toast.attachmentDuplicate.title": "یہ فائل پہلے ہی اپ لوڈ ہو چکی ہے",
"prompt.toast.modelAgentRequired.title": "ایک ایجنٹ اور ماڈل منتخب کریں۔",
"prompt.toast.modelAgentRequired.description": "پرامپٹ بھیجنے سے پہلے ایک ایجنٹ اور ماڈل کا انتخاب کریں۔",
"prompt.toast.worktreeCreateFailed.title": "ورک ٹری بنانے میں ناکام",
"prompt.toast.sessionCreateFailed.title": "سیشن بنانے میں ناکام",
"prompt.toast.shellSendFailed.title": "شیل کمانڈ بھیجنے میں ناکام",
"prompt.toast.commandSendFailed.title": "کمانڈ بھیجنے میں ناکام",
"prompt.toast.promptSendFailed.title": "پرامپٹ بھیجنے میں ناکام",
"prompt.toast.promptSendFailed.description": "سیشن بازیافت کرنے سے قاصر",
"dialog.mcp.title": "MCPs",
"dialog.mcp.description": "{{total}} میں سے {{enabled}} فعال",
"dialog.mcp.empty": "کوئی MCPs کنفیگر نہیں ہے۔",
"dialog.lsp.empty": "فائل کی اقسام سے خودکار طور پر شناخت کیے گئے LSPs",
"dialog.plugins.empty": "opencode.json میں کنفیگر کردہ پلگ انز",
"mcp.status.connected": "منسلک",
"mcp.status.failed": "ناکام",
"mcp.status.needs_auth": "توثیق درکار ہے",
"mcp.status.disabled": "غیر فعال",
"mcp.auth.clickToAuthenticate": "تصدیق کرنے کے لیے کلک کریں۔",
"dialog.fork.empty": "کوئی پیغامات نہیں ہیں جن سے فورک کیا جائے۔",
"dialog.directory.search.placeholder": "فولڈرز تلاش کریں۔",
"dialog.directory.empty": "کوئی فولڈر نہیں ملا",
"dialog.directory.action.selectFile": "فائل منتخب کریں۔",
"dialog.directory.action.selectFolder": "فولڈر منتخب کریں۔",
"dialog.directory.root": "بنیادی فولڈر",
"dialog.directory.parent": "بالائی فولڈر",
"dialog.directory.readError": "یہ فولڈر پڑھا نہیں جا سکا",
"app.server.unreachable": "{{server}} تک نہیں پہنچ سکا",
"app.server.retrying": "خودکار طور پر دوبارہ کوشش کر رہا ہے...",
"app.server.otherServers": "دوسرے سرورز",
"dialog.server.title": "سرورز",
"dialog.server.description": "سوئچ کریں کہ یہ ایپ کس OpenCode سرور سے منسلک ہے۔",
"dialog.server.search.placeholder": "سرورز تلاش کریں۔",
"dialog.server.empty": "ابھی تک کوئی سرور نہیں ہے۔",
"dialog.server.add.title": "سرور شامل کریں۔",
"dialog.server.add.url": "سرور کا پتہ",
"dialog.server.add.placeholder": "http://localhost:4096",
"dialog.server.add.error": "سرور سے منسلک نہیں ہو سکا",
"dialog.server.add.checking": "چیک کر رہا ہے...",
"dialog.server.add.button": "سرور شامل کریں۔",
"dialog.server.add.name": "سرور کا نام (اختیاری)",
"dialog.server.add.namePlaceholder": "Localhost",
"dialog.server.add.username": "صارف نام (اختیاری)",
"dialog.server.add.usernamePlaceholder": "صارف نام",
"dialog.server.add.password": "پاس ورڈ (اختیاری)",
"dialog.server.add.passwordPlaceholder": "پاس ورڈ",
"dialog.server.edit.title": "سرور میں ترمیم کریں۔",
"dialog.server.default.title": "ڈیفالٹ سرور",
"dialog.server.default.description":
"مقامی سرور شروع کرنے کے بجائے ایپ لانچ پر اس سرور سے جڑیں۔ دوبارہ شروع کرنے کی ضرورت ہے۔",
"dialog.server.default.none": "کوئی سرور منتخب نہیں کیا گیا۔",
"dialog.server.default.set": "موجودہ سرور کو بطور ڈیفالٹ سیٹ کریں۔",
"dialog.server.default.clear": "صاف کریں",
"dialog.server.action.remove": "سرور کو ہٹا دیں۔",
"dialog.server.menu.edit": "ترمیم کریں۔",
"dialog.server.menu.default": "بطور ڈیفالٹ سیٹ کریں۔",
"dialog.server.menu.defaultRemove": "ڈیفالٹ کو ہٹا دیں۔",
"dialog.server.menu.delete": "حذف کریں۔",
"dialog.server.current": "موجودہ سرور",
"dialog.server.status.default": "طے شدہ",
"wsl.server.add": "WSL سرور شامل کریں۔",
"wsl.server.addShort": "WSL شامل کریں۔",
"wsl.server.label": "WSL",
"wsl.server.menu.label": "WSL سرور",
"wsl.server.retryStart": "دوبارہ شروع کرنے کی کوشش کریں۔",
"wsl.server.updating": "اپ ڈیٹ ہو رہا ہے...",
"wsl.onboarding.step.distro": "ڈسٹرو کا انتخاب کریں۔",
"wsl.onboarding.step.opencode": "OpenCode",
"wsl.onboarding.checkingRuntime": "WSL چیک کیا جا رہا ہے...",
"wsl.onboarding.restartRequired": "Windows کو WSL انسٹال کرنا مکمل کرنے کے لیے دوبارہ شروع کرنے کی ضرورت ہے۔",
"wsl.onboarding.ready": "WSL تیار ہے۔",
"wsl.onboarding.required": "جاری رکھنے کے لیے WSL درکار ہے۔",
"wsl.onboarding.checkingDistros": "ڈسٹری بیوشنز کی جانچ ہو رہی ہے...",
"wsl.onboarding.installingDistro": "{{distro}} انسٹال ہو رہا ہے...",
"wsl.onboarding.checkingDistro": "{{distro}} چیک کیا جا رہا ہے...",
"wsl.onboarding.listingDistros": "ڈسٹری بیوشنز کی فہرست بن رہی ہے...",
"wsl.onboarding.distroReady": "{{distro}} تیار ہے۔",
"wsl.onboarding.distroNotInstalled": "{{distro}} ابھی تک انسٹال نہیں ہوا ہے۔",
"wsl.onboarding.openDistroOnce": "سیٹ اپ مکمل کرنے کے لیے ایک بار {{distro}} کھولیں۔",
"wsl.onboarding.finishingDistro": "{{distro}} کے لیے سیٹ اپ مکمل ہو رہا ہے۔",
"wsl.onboarding.pickDistro": "ایک ڈسٹرو چنیں یا نیچے انسٹال کریں۔",
"wsl.onboarding.checkingOpencode": "OpenCode چیک کیا جا رہا ہے...",
"wsl.onboarding.checkingOpencodeIn": "{{distro}} میں OpenCode چیک کیا جا رہا ہے...",
"wsl.onboarding.updatingOpencode": "OpenCode کو اپ ڈیٹ کیا جا رہا ہے...",
"wsl.onboarding.updatingOpencodeIn": "{{distro}} میں OpenCode کو اپ ڈیٹ کیا جا رہا ہے...",
"wsl.onboarding.updateOpencodeIn": "{{distro}} میں OpenCode کو اپ ڈیٹ کریں۔",
"wsl.onboarding.updateOpencode": "OpenCode کو اپ ڈیٹ کریں۔",
"wsl.onboarding.opencodeReadyIn": "OpenCode {{distro}} میں تیار ہے۔",
"wsl.onboarding.opencodeReady": "OpenCode تیار ہے۔",
"wsl.onboarding.installOpencodeIn": "{{distro}} میں OpenCode انسٹال کریں۔",
"wsl.onboarding.installOpencode": "OpenCode انسٹال کریں۔",
"wsl.onboarding.chooseDistroFirst": "پہلے ایک ڈسٹرو کا انتخاب کریں۔",
"wsl.onboarding.loadFailed": "WSL حالت لوڈ کرنے میں ناکام۔",
"wsl.onboarding.loading": "لوڈ ہو رہا ہے...",
"wsl.onboarding.installedDistros": "انسٹال شدہ ڈسٹرو",
"wsl.onboarding.checkAgain": "دوبارہ چیک کریں۔",
"wsl.onboarding.distroStatus.ready": "تیار",
"wsl.onboarding.distroStatus.checking": "چیک کر رہا ہے...",
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode انسٹال نہیں ہے۔",
"wsl.onboarding.distroStatus.missingTools": "غائب bash, curl",
"wsl.onboarding.distroStatus.unsupported": "غیر تعاون یافتہ · WSL 2 استعمال کریں۔",
"wsl.onboarding.needAnotherDistro": "ایک اور ڈسٹرو کی ضرورت ہے؟",
"wsl.onboarding.needAnotherDistroHint": "WSL کیٹلاگ سے Linux ڈسٹری بیوشن انسٹال کریں۔",
"wsl.onboarding.wslNotInstalled.title": "WSL انسٹال نہیں ہے۔",
"wsl.onboarding.wslNotInstalled.description":
"WSL (Windows سب سسٹم برائے Linux) کی ضرورت ہے اس سے پہلے کہ OpenCode WSL سرور شامل کر سکے۔",
"wsl.onboarding.wslUnavailable.title": "WSL دستیاب نہیں ہے۔",
"wsl.onboarding.wslUnavailable.description": "OpenCode اس مشین پر WSL کی تصدیق نہیں کر سکا۔",
"wsl.onboarding.installWsl": "WSL انسٹال کریں۔",
"wsl.onboarding.windowsRestartRequired":
"WSL انسٹال کرنے کے لیے Windows کو دوبارہ شروع کریں، پھر OpenCode کو دوبارہ کھولیں۔",
"wsl.onboarding.next": "اگلا",
"wsl.onboarding.refresh": "ریفریش کریں۔",
"wsl.onboarding.allDistrosAdded": "تمام انسٹال شدہ ڈسٹرو پہلے ہی شامل کر دیے گئے ہیں۔",
"wsl.onboarding.noDistros": "ابھی تک کسی ڈسٹرو کا پتہ نہیں چلا۔",
"wsl.onboarding.install": "انسٹال کریں۔",
"wsl.onboarding.installing": "انسٹال ہو رہا ہے...",
"wsl.onboarding.installDistro": "ڈسٹرو انسٹال کریں۔",
"wsl.onboarding.searchDistros": "ڈسٹری بیوشنز تلاش کریں",
"wsl.onboarding.wsl2Required": "WSL 2 درکار ہے۔",
"wsl.onboarding.toolsRequired": "اس ڈسٹرو کو bash اور curl کی ضرورت ہے۔",
"wsl.onboarding.openTerminal": "ٹرمینل کھولیں۔",
"wsl.onboarding.path": "راستہ: {{path}}",
"wsl.onboarding.notFound": "نہیں ملا",
"wsl.onboarding.version": "ورژن: {{version}}",
"wsl.onboarding.unknown": "نامعلوم",
"wsl.onboarding.desktopVersion": "ڈیسک ٹاپ {{version}}",
"wsl.onboarding.versionMismatch": "انسٹال کردہ ورژن ڈیسک ٹاپ ایپ ورژن سے مماثل نہیں ہے۔",
"wsl.onboarding.adding": "شامل کیا جا رہا ہے...",
"help.tabs.toast.ariaLabel": "ٹیبز کا تعارف۔ اپنے کام اور فعال سیشنز کو ٹیبز کے ذریعے منظم کریں",
"help.tabs.toast.dismiss": "ٹیبز کی معلومات بند کریں",
"help.tabs.title": "ٹیبز کا تعارف",
"help.tabs.description": "اپنے کام اور فعال سیشنز کو ٹیبز کے ذریعے منظم کریں",
"help.tabs.date": "14 جولائی",
"help.tabs.introduction": "OpenCode Desktop اب ٹیبز پر مبنی ہے۔",
"help.tabs.sessions":
"ٹیب میں نیا سیشن شروع کریں یا اپنے کسی بھی پروجیکٹ سے موجودہ سیشن کھولیں۔ کوئی نیا کام شروع کرتے وقت نیا ٹیب کھولیں اور کام مکمل ہونے پر اسے بند کر دیں۔",
"help.tabs.organize":
"چند ٹیبز کھلے رکھنے سے فعال سیشنز کو منظم کرنا آسان ہو جاتا ہے۔ اگر آپ کسی ٹیب کو برقرار رکھنا چاہتے ہیں تو اسے کوئی یاد رہنے والا نام دے دیں۔",
"help.tabs.home":
"نئی ہوم اسکرین پر آپ کو اپنے تمام سیشنز اور پروجیکٹس ملیں گے۔ کسی سیشن کو منتخب کرنے سے وہ ٹیب میں کھل جائے گا۔",
"help.tabs.persistence": "ایپ دوبارہ کھولنے پر آپ کے ٹیبز کھلے رہیں گے۔",
"help.tabs.worktrees":
"نیا ڈیزائن ابھی Git Worktrees کو سپورٹ نہیں کرتا، یہ سہولت جلد آ رہی ہے۔ اگر آپ پچھلا لے آؤٹ استعمال کرنا جاری رکھنا چاہتے ہیں تو ترتیبات میں لے آؤٹس کے درمیان سوئچ کر سکتے ہیں۔ یاد رہے کہ چند ہفتوں میں نیا لے آؤٹ مستقل ہو جائے گا۔",
"server.row.noUsername": "کوئی صارف نام نہیں",
"dialog.project.edit.title": "پروجیکٹ میں ترمیم کریں۔",
"dialog.project.edit.name": "نام",
"dialog.project.edit.icon": "آئیکن",
"dialog.project.edit.icon.alt": "پروجیکٹ کا آئیکن",
"dialog.project.edit.icon.hint": "تصویر پر کلک کریں یا گھسیٹیں۔",
"dialog.project.edit.icon.recommended": "تجویز کردہ: 128x128px",
"dialog.project.edit.color": "رنگ",
"dialog.project.edit.color.select": "{{color}} رنگ منتخب کریں۔",
"dialog.project.edit.worktree.startup": "ورک اسپیس اسٹارٹ اپ اسکرپٹ",
"dialog.project.edit.worktree.startup.description": "ایک نئی ورک اسپیس (ورکٹری) بنانے کے بعد چلتا ہے۔",
"dialog.project.edit.worktree.startup.placeholder": "جیسے bun install",
"dialog.releaseNotes.action.getStarted": "شروع کرو",
"dialog.releaseNotes.action.next": "اگلا",
"dialog.releaseNotes.action.hideFuture": "مستقبل میں یہ نہ دکھائیں۔",
"dialog.releaseNotes.media.alt": "ریلیز کا پیش منظر",
"context.breakdown.title": "سیاق و سباق کی تفصیل",
"context.breakdown.note": 'ان پٹ ٹوکنز کی تخمینی تقسیم۔ "دیگر" میں ٹول کی تعریفیں اور اضافی بوجھ شامل ہیں۔',
"context.breakdown.system": "سسٹم",
"context.breakdown.user": "صارف",
"context.breakdown.assistant": "اسسٹنٹ",
"context.breakdown.tool": "ٹول کالز",
"context.breakdown.other": "دیگر",
"context.systemPrompt.title": "سسٹم پرامپٹ",
"context.rawMessages.title": "خام پیغامات",
"context.stats.session": "سیشن",
"context.stats.messages": "پیغامات",
"context.stats.provider": "فراہم کنندہ",
"context.stats.model": "ماڈل",
"context.stats.limit": "سیاق و سباق کی حد",
"context.stats.totalTokens": "کل ٹوکن",
"context.stats.usage": "استعمال",
"context.stats.inputTokens": "ان پٹ ٹوکنز",
"context.stats.outputTokens": "آؤٹ پٹ ٹوکنز",
"context.stats.reasoningTokens": "ریزننگ ٹوکنز",
"context.stats.cacheTokens": "کیشے ٹوکنز (پڑھنا/لکھنا)",
"context.stats.userMessages": "صارف کے پیغامات",
"context.stats.assistantMessages": "معاون پیغامات",
"context.stats.totalCost": "کل لاگت",
"context.stats.sessionCreated": "سیشن بنایا گیا۔",
"context.stats.lastActivity": "آخری سرگرمی",
"context.usage.tokens": "ٹوکنز",
"context.usage.usage": "استعمال",
"context.usage.cost": "لاگت",
"context.usage.clickToView": "سیاق و سباق دیکھنے کے لیے کلک کریں۔",
"context.usage.view": "سیاق و سباق کا استعمال دیکھیں",
"language.en": "English",
"language.zh": "简体中文",
"language.zht": "繁體中文",
"language.ko": "한국어",
"language.de": "Deutsch",
"language.es": "Español",
"language.fr": "Français",
"language.da": "Dansk",
"language.ja": "日本語",
"language.pl": "Polski",
"language.ru": "Русский",
"language.ar": "العربية",
"language.no": "Norsk",
"language.br": "Português (Brasil)",
"language.bs": "Bosanski",
"language.uk": "Українська",
"language.th": "ไทย",
"language.tr": "Türkçe",
"toast.language.title": "زبان",
"toast.language.description": "{{language}} پر تبدیل ہو گیا۔",
"toast.theme.title": "تھیم تبدیل ہو گئی۔",
"toast.scheme.title": "رنگ سکیم",
"toast.workspace.enabled.title": "ورک اسپیسز فعال ہیں۔",
"toast.workspace.enabled.description": "متعدد ورک ٹری اب سائڈبار میں دکھائے گئے ہیں۔",
"toast.workspace.disabled.title": "کام کی جگہیں غیر فعال ہیں۔",
"toast.workspace.disabled.description": "سائڈبار میں صرف مین ورک ٹری کو دکھایا گیا ہے۔",
"toast.permissions.autoaccept.on.title": "خودکار طور پر قبول کرنے کی اجازتیں۔",
"toast.permissions.autoaccept.on.description": "اجازت کی درخواستیں خود بخود منظور ہو جائیں گی۔",
"toast.permissions.autoaccept.off.title": "اجازتوں کو خودکار طور پر قبول کرنا بند کر دیا گیا۔",
"toast.permissions.autoaccept.off.description": "اجازت کی درخواستوں کو منظوری درکار ہوگی۔",
"toast.model.none.title": "کوئی ماڈل منتخب نہیں کیا گیا۔",
"toast.model.none.description": "اس سیشن کا خلاصہ کرنے کے لیے فراہم کنندہ سے رابطہ کریں۔",
"toast.file.loadFailed.title": "فائل لوڈ کرنے میں ناکام",
"toast.file.listFailed.title": "فائلوں کی فہرست بنانے میں ناکام",
"toast.context.noLineSelection.title": "لائن کا کوئی انتخاب نہیں۔",
"toast.context.noLineSelection.description": "پہلے فائل ٹیب میں لائن رینج منتخب کریں۔",
"toast.session.share.copyFailed.title": "URL کو کلپ بورڈ پر کاپی کرنے میں ناکام",
"toast.session.share.success.title": "سیشن کا اشتراک کیا گیا۔",
"toast.session.share.success.description": "اشتراک کا URL کلپ بورڈ پر کاپی ہو گیا!",
"toast.session.share.failed.title": "سیشن کا اشتراک کرنے میں ناکام",
"toast.session.share.failed.description": "سیشن کا اشتراک کرتے وقت ایک خرابی پیش آگئی",
"toast.session.unshare.success.title": "سیشن کا اشتراک ختم کر دیا گیا۔",
"toast.session.unshare.success.description": "سیشن کا اشتراک کامیابی سے ختم ہو گیا!",
"toast.session.unshare.failed.title": "سیشن کا اشتراک ختم کرنے میں ناکام",
"toast.session.unshare.failed.description": "سیشن کا اشتراک ختم کرتے وقت ایک خرابی پیش آگئی",
"toast.session.listFailed.title": "{{project}} کے لیے سیشن لوڈ کرنے میں ناکام",
"toast.project.reloadFailed.title": "{{project}} کو دوبارہ لوڈ کرنے میں ناکام",
"toast.update.title": "اپ ڈیٹ دستیاب ہے۔",
"toast.update.description": "OpenCode ({{version}}) کا ایک نیا ورژن اب انسٹال کرنے کے لیے دستیاب ہے۔",
"toast.update.action.installRestart": "انسٹال کریں اور دوبارہ شروع کریں۔",
"toast.update.action.notYet": "ابھی تک نہیں۔",
"error.page.title": "کچھ غلط ہو گیا۔",
"error.page.description": "ایپلیکیشن لوڈ کرتے وقت ایک خرابی پیش آگئی۔",
"error.page.description.localServerStartup": "مقامی سرور شروع کرتے وقت ایک خرابی پیش آگئی۔",
"error.page.details.label": "خرابی کی تفصیلات",
"error.page.action.restart": "دوبارہ شروع کریں۔",
"error.page.action.report": "خرابی کی اطلاع دیں",
"error.page.action.reported": "خرابی کی اطلاع دی گئی۔",
"error.page.action.exportLogs": "لاگز برآمد کریں۔",
"error.page.action.checking": "چیک کر رہا ہے...",
"error.page.action.checkUpdates": "اپ ڈیٹس کے لیے چیک کریں۔",
"error.page.action.updateTo": "{{version}} میں اپ ڈیٹ کریں۔",
"error.page.circular": "[سرکلر]",
"error.page.report.prefix": "براہ کرم OpenCode ٹیم کو اس غلطی کی اطلاع دیں۔",
"error.page.report.discord": "Discord پر",
"error.page.version": "ورژن: {{version}}",
"error.dev.rootNotFound":
"روٹ عنصر نہیں ملا۔ کیا آپ اسے اپنے index.html میں شامل کرنا بھول گئے؟ یا ہو سکتا ہے کہ آئی ڈی وصف کی ہجے غلط ہو گئی ہو؟",
"error.serverSync.connectFailed": "سرور سے منسلک نہیں ہو سکا۔ کیا `{{url}}` پر کوئی سرور چل رہا ہے؟",
"error.serverSDK.noServerAvailable": "کوئی سرور دستیاب نہیں ہے۔",
"error.serverSDK.serverNotAvailable": "سرور دستیاب نہیں ہے۔",
"error.childStore.persistedCacheCreateFailed": "مستقل کیشے بنانے میں ناکام",
"error.childStore.persistedProjectMetadataCreateFailed": "مستقل پروجیکٹ میٹا ڈیٹا بنانے میں ناکام",
"error.childStore.persistedProjectIconCreateFailed": "مستقل پروجیکٹ آئیکن بنانے میں ناکام",
"error.childStore.storeCreateFailed": "اسٹور بنانے میں ناکام",
"directory.error.invalidUrl": "URL میں غلط ڈائریکٹری۔",
"error.chain.unknown": "نامعلوم خرابی۔",
"error.server.invalidConfiguration": "غلط کنفیگریشن",
"error.chain.causedBy": "کی وجہ سے:",
"error.chain.apiError": "API غلطی",
"error.chain.status": "حیثیت: {{status}}",
"error.chain.retryable": "دوبارہ کوشش کے قابل: {{retryable}}",
"error.chain.responseBody": "جواب کا متن:\n{{body}}",
"error.chain.didYouMean": "کیا آپ کا مطلب ہے: {{suggestions}}؟",
"error.chain.modelNotFound": "ماڈل نہیں ملا: {{provider}}/{{model}}",
"error.chain.checkConfig": "اپنی تشکیل (opencode.json) فراہم کنندہ/ماڈل کے نام چیک کریں۔",
"error.chain.mcpFailed": 'MCP سرور "{{name}}" ناکام ہو گیا۔ نوٹ، OpenCode ابھی تک MCP تصدیق کو سپورٹ نہیں کرتا ہے۔',
"error.chain.providerAuthFailed": "فراہم کنندہ کی توثیق ناکام ہوگئی ({{provider}}): {{message}}",
"error.chain.providerInitFailed": 'فراہم کنندہ "{{provider}}" کو شروع کرنے میں ناکام۔ اسناد اور کنفیگریشن چیک کریں۔',
"error.chain.configJsonInvalid": "{{path}} پر کنفگ فائل درست نہیں ہے JSON(C)",
"error.chain.configJsonInvalidWithMessage": "{{path}} پر کنفگ فائل درست نہیں ہے JSON(C): {{message}}",
"error.chain.configDirectoryTypo":
'{{path}} میں ڈائریکٹری "{{dir}}" درست نہیں ہے۔ ڈائریکٹری کا نام "{{suggestion}}" رکھیں یا اسے ہٹا دیں۔ یہ املا کی ایک عام غلطی ہے۔',
"error.chain.configFrontmatterError": "{{path}} میں فرنٹ میٹر کو پارس کرنے میں ناکام:\n{{message}}",
"error.chain.configInvalid": "{{path}} پر کنفگ فائل غلط ہے۔",
"error.chain.configInvalidWithMessage": "{{path}} پر کنفگ فائل غلط ہے: {{message}}",
"notification.permission.title": "اجازت درکار ہے۔",
"notification.permission.description": "{{projectName}} میں {{sessionTitle}} کو اجازت درکار ہے۔",
"notification.question.title": "سوال",
"notification.question.description": "{{projectName}} میں {{sessionTitle}} کی جانب سے ایک سوال ہے۔",
"notification.action.goToSession": "سیشن پر جائیں",
"notification.session.responseReady.title": "جواب تیار ہے۔",
"notification.session.error.title": "سیشن کی خرابی",
"notification.session.error.fallbackDescription": "ایک خرابی پیش آ گئی۔",
"home.recentProjects": "حالیہ منصوبے",
"home.empty.title": "کوئی حالیہ پروجیکٹ نہیں۔",
"home.empty.description": "ایک مقامی پروجیکٹ کھول کر شروع کریں۔",
"home.title": "ہوم",
"home.projects": "پروجیکٹس",
"home.project.add": "پروجیکٹ شامل کریں۔",
"home.recentlyClosed": "حال ہی میں بند",
"home.server.collapse": "سرور کے پروجیکٹس سمیٹیں",
"home.server.expand": "سرور پروجیکٹس کو وسعت دیں۔",
"home.sessions.search.placeholder": "سیشن تلاش کریں۔",
"home.sessions.search.placeholder.scoped": "{{scope}} میں سیشن تلاش کریں۔",
"home.sessions.search.sessions": "سیشنز",
"home.sessions.search.noResults": "{{query}} کے لیے کوئی سیشن نہیں ملا",
"home.sessions.empty": "ابھی تک یہاں کچھ نہیں ہے۔",
"home.sessions.empty.description": "شروع کرنے کے لیے ایک سیشن بنائیں",
"home.sessions.group.today": "آج",
"home.sessions.group.yesterday": "کل",
"home.sessions.group.older": "پرانا",
"home.providerTip": "Claude، GPT، Gemini، وغیرہ سمیت دیگر ماڈلز استعمال کرنے کے لیے 75+ فراہم کنندگان سے جڑیں",
"session.tab.session": "سیشن",
"session.tab.review": "جائزہ لیں",
"session.tab.context": "سیاق و سباق",
"session.tab.unknown": "نامعلوم سیشن",
"session.panel.reviewAndFiles": "جائزہ اور فائلیں۔",
"session.error.notFound": "یہ سیشن نہیں مل سکتا",
"session.error.notFound.description": "یہ ٹیب ایک سیشن کی طرف اشارہ کرتا ہے جو اس سرور پر اب موجود نہیں ہے۔",
"session.error.notFound.closeTab": "ٹیب بند کریں",
"session.error.serverConnection": "اس سرور سے منسلک نہیں ہو سکتا",
"session.review.filesChanged": "تبدیل شدہ فائلیں: {{count}}",
"session.review.change.one": "تبدیلی",
"session.review.change.other": "تبدیلیاں",
"session.review.loadingChanges": "تبدیلیاں لوڈ ہو رہی ہیں...",
"session.review.empty": "اس سیشن میں ابھی تک کوئی تبدیلی نہیں آئی",
"session.review.noVcs": "Git ورژن کنٹرول سسٹم کا پتہ نہیں چلا، تبدیلیاں ظاہر نہیں کی گئیں۔",
"session.review.noVcs.createGit.title": "ایک Git ذخیرہ بنائیں",
"session.review.noVcs.createGit.description":
"اس پروجیکٹ میں تبدیلیوں کو ٹریک کریں، ان کا جائزہ لیں اور ان کو کالعدم کریں۔",
"session.review.noVcs.createGit.actionLoading": "Git ذخیرہ تخلیق کیا جا رہا ہے...",
"session.review.noVcs.createGit.action": "Git ذخیرہ تخلیق کریں۔",
"session.review.noSnapshot":
"اسنیپ شاٹ سے باخبر رہنے کی ترتیب کو غیر فعال کر دیا گیا ہے، لہذا سیشن کی تبدیلیاں دستیاب نہیں ہیں۔",
"session.review.noChanges": "کوئی تبدیلی نہیں۔",
"session.review.noUncommittedChanges": "ابھی تک کوئی غیر ارتکاب تبدیلیاں نہیں ہیں۔",
"session.review.noBranchChanges": "ابھی تک برانچ میں کوئی تبدیلی نہیں ہے۔",
"session.files.selectToOpen": "کھولنے کے لیے ایک فائل منتخب کریں۔",
"session.files.all": "تمام فائلیں۔",
"session.files.empty": "کوئی فائل نہیں ہے۔",
"session.files.binaryContent": "بائنری فائل (مواد ظاہر نہیں کیا جا سکتا)",
"session.messages.renderEarlier": "پرانے پیغامات دکھائیں",
"session.messages.loadingEarlier": "پہلے کے پیغامات لوڈ ہو رہے ہیں...",
"session.messages.loadEarlier": "پہلے کے پیغامات لوڈ کریں۔",
"session.messages.loading": "پیغامات لوڈ ہو رہے ہیں...",
"session.messages.jumpToLatest": "تازہ ترین پر جائیں",
"session.context.addToContext": "{{selection}} کو سیاق و سباق میں شامل کریں۔",
"session.todo.title": "زیر التوا کام",
"session.todo.collapse": "سمیٹیں",
"session.todo.expand": "پھیلائیں۔",
"session.todo.progress": "{{total}} میں سے {{done}} کام مکمل ہو گئے",
"session.question.progress": "{{total}} میں سے سوال {{current}}",
"session.question.minimize": "سوال کو کم سے کم کریں۔",
"session.question.restore": "سوال بحال کریں۔",
"session.question.pending.one": "{{count}} زیر التواء سوال",
"session.question.pending.other": "{{count}} زیر التواء سوالات",
"session.followupDock.summary.one": "{{count}} قطار میں شامل پیغام",
"session.followupDock.summary.other": "{{count}} قطار میں لگے پیغامات",
"session.followupDock.sendNow": "ابھی بھیجیں۔",
"session.followupDock.edit": "ترمیم کریں۔",
"session.followupDock.collapse": "قطار میں لگے پیغامات کو سکیڑیں۔",
"session.followupDock.expand": "قطار میں لگے پیغامات کو پھیلائیں۔",
"session.revertDock.summary.one": "{{count}} واپس لیا گیا پیغام",
"session.revertDock.summary.other": "{{count}} واپس لیے گئے پیغامات",
"session.revertDock.collapse": "واپس لیے گئے پیغامات سمیٹیں",
"session.revertDock.expand": "واپس لیے گئے پیغامات پھیلائیں",
"session.revertDock.restore": "پیغام کو بحال کریں۔",
"session.new.title": "کچھ بھی بنائیں",
"session.new.project.new": "نیا پروجیکٹ",
"session.new.project.search": "پروجیکٹس تلاش کریں۔",
"session.new.project.add": "پروجیکٹ شامل کریں۔",
"session.new.worktree.main": "مین برانچ",
"session.new.worktree.mainWithBranch": "مین برانچ ({{branch}})",
"session.new.worktree.create": "نئی ورک ٹری بنائیں",
"session.new.workspace.runIn": "سیشن یہاں چلائیں",
"session.new.workspace.triggerLocal": "مقامی",
"session.new.workspace.local": "مقامی ذخیرہ",
"session.new.workspace.existing": "ورک اسپیس…",
"session.new.git.none": "کوئی Git نہیں۔",
"session.new.lastModified": "آخری بار ترمیم کی گئی۔",
"session.header.search.placeholder": "{{project}} تلاش کریں۔",
"session.header.searchFiles": "فائلیں تلاش کریں۔",
"session.header.openIn": "اس میں کھولیں",
"session.header.open.action": "{{app}} کھولیں۔",
"session.header.open.ariaLabel": "{{app}} میں کھولیں۔",
"session.header.open.menu": "اختیارات کھولیں۔",
"session.header.open.copyPath": "راستہ کاپی کریں۔",
"session.header.open.finder": "Finder",
"session.header.open.fileExplorer": "File Explorer",
"session.header.open.fileManager": "File Manager",
"session.header.reveal.finder": "Finder میں ظاہر کریں۔",
"session.header.reveal.fileExplorer": "File Explorer میں ظاہر کریں۔",
"session.header.reveal.containingFolder": "متعلقہ فولڈر کھولیں",
"session.header.open.app.vscode": "VS Code",
"session.header.open.app.cursor": "Cursor",
"session.header.open.app.zed": "Zed",
"session.header.open.app.textmate": "TextMate",
"session.header.open.app.antigravity": "Antigravity",
"session.header.open.app.terminal": "Terminal",
"session.header.open.app.iterm2": "iTerm2",
"session.header.open.app.ghostty": "Ghostty",
"session.header.open.app.warp": "Warp",
"session.header.open.app.xcode": "Xcode",
"session.header.open.app.androidStudio": "Android Studio",
"session.header.open.app.powershell": "PowerShell",
"session.header.open.app.sublimeText": "Sublime Text",
"status.popover.trigger": "حیثیت",
"status.popover.ariaLabel": "سرور کنفیگریشنز",
"status.popover.tab.servers": "سرورز",
"status.popover.tab.mcp": "MCP",
"status.popover.tab.lsp": "LSP",
"status.popover.tab.plugins": "پلگ انز",
"status.popover.action.manageServers": "سرورز کا نظم کریں۔",
"session.share.popover.title": "ویب پر شائع کریں۔",
"session.share.popover.description.shared": "یہ سیشن ویب پر عوامی ہے۔ یہ لنک کے ساتھ ہر کسی کے لیے قابل رسائی ہے۔",
"session.share.popover.description.unshared":
"ویب پر عوامی طور پر سیشن کا اشتراک کریں۔ یہ لنک کے ساتھ ہر کسی کے لیے قابل رسائی ہو گا۔",
"session.share.action.share": "شیئر کریں۔",
"session.share.action.publish": "شائع کریں۔",
"session.share.action.publishing": "شائع ہو رہا ہے...",
"session.share.action.unpublish": "غیر شائع کریں۔",
"session.share.action.unpublishing": "اشاعت ختم کی جا رہی ہے...",
"session.share.action.view": "دیکھیں",
"session.share.copy.copied": "کاپی",
"session.share.copy.copyLink": "لنک کاپی کریں۔",
"lsp.tooltip.none": "LSP سرورز نہیں ہیں۔",
"lsp.label.connected": "{{count}} LSP",
"prompt.loading": "پرامپٹ لوڈ ہو رہا ہے...",
"terminal.loading": "ٹرمینل لوڈ ہو رہا ہے...",
"terminal.title": "ٹرمینل",
"terminal.title.numbered": "ٹرمینل {{number}}",
"terminal.close": "ٹرمینل بند کریں۔",
"terminal.connectionLost.title": "کنکشن ختم ہو گیا۔",
"terminal.connectionLost.abnormalClose": "WebSocket غیر معمولی طور پر بند ہوا: {{code}}",
"terminal.connectionLost.description": "ٹرمینل کنکشن میں خلل پڑا۔ یہ سرور کے دوبارہ شروع ہونے پر ہوسکتا ہے۔",
"terminal.connectTicket.csrfError":
"PTY کنکشن ٹکٹ کو ماخذ یا CSRF جانچ نے مسترد کر دیا۔ سرور کی CORS تشکیل چیک کریں۔",
"terminal.connectTicket.statusError": "PTY کنکشن ٹکٹ {{status}} اسٹیٹس کے ساتھ ناکام ہو گیا۔",
"titlebar.update": "اپ ڈیٹ کریں",
"titlebar.updateVersion": "اپ ڈیٹ کریں {{version}}",
"common.closeTab": "ٹیب بند کریں۔",
"common.dismiss": "نظر انداز کریں",
"common.moreCountSuffix": " (+{{count}} مزید)",
"common.requestFailed": "درخواست ناکام ہوگئی",
"common.moreOptions": "مزید اختیارات",
"common.learnMore": "مزید جانیں",
"common.rename": "نام تبدیل کریں۔",
"common.reset": "دوبارہ ترتیب دیں۔",
"common.archive": "آرکائیو کریں",
"common.delete": "حذف کریں۔",
"common.close": "بند",
"common.edit": "ترمیم کریں۔",
"common.loadMore": "مزید لوڈ کریں۔",
"common.key.esc": "ESC",
"common.key.ctrl": "Ctrl",
"common.key.alt": "Alt",
"common.key.shift": "Shift",
"common.key.meta": "Meta",
"common.key.space": "Space",
"common.key.backspace": "Backspace",
"common.key.enter": "Enter",
"common.key.tab": "Tab",
"common.key.delete": "Delete",
"common.key.home": "Home",
"common.key.end": "End",
"common.key.pageUp": "Page Up",
"common.key.pageDown": "Page Down",
"common.key.insert": "Insert",
"common.unknown": "نامعلوم",
"common.time.justNow": "ابھی ابھی",
"common.time.minutesAgo.short": "{{count}}m پہلے",
"common.time.hoursAgo.short": "{{count}}h پہلے",
"common.time.daysAgo.short": "{{count}}d پہلے",
"sidebar.menu.toggle": "مینو دکھائیں یا چھپائیں",
"sidebar.nav.projectsAndSessions": "پروجیکٹس اور سیشنز",
"sidebar.settings": "ترتیبات",
"sidebar.help": "مدد",
"sidebar.workspaces.enable": "ورک اسپیسز کو فعال کریں۔",
"sidebar.workspaces.disable": "ورک اسپیس کو غیر فعال کریں۔",
"sidebar.gettingStarted.title": "شروع کرنا",
"sidebar.gettingStarted.line1": "OpenCode میں مفت ماڈل شامل ہیں لہذا آپ فوری طور پر شروع کر سکتے ہیں۔",
"sidebar.gettingStarted.line2": "ماڈلز استعمال کرنے کے لیے کسی بھی فراہم کنندہ کو جوڑیں۔ Claude، GPT، Gemini وغیرہ",
"sidebar.project.recentSessions": "حالیہ سیشنز",
"sidebar.project.viewAllSessions": "تمام سیشنز دیکھیں",
"sidebar.project.clearNotifications": "اطلاعات کو صاف کریں۔",
"sidebar.empty.title": "کوئی پروجیکٹ نہیں کھلا۔",
"sidebar.empty.description": "شروع کرنے کے لیے ایک پروجیکٹ کھولیں۔",
"debugBar.ariaLabel": "ترقیاتی کارکردگی کی تشخیص",
"debugBar.na": "n/a",
"debugBar.nav.label": "NAV",
"debugBar.nav.tip":
"سیشن صفحے سے متعلق آخری مکمل روٹ منتقلی، جسے روٹر کے آغاز سے منتقلی مکمل ہونے کے بعد پہلی بار اسکرین بننے تک ناپا گیا ہے۔",
"debugBar.fps.label": "FPS",
"debugBar.fps.tip": "آخری 5 سیکنڈز میں فریم فی سیکنڈ رولنگ۔",
"debugBar.frame.label": "FRAME",
"debugBar.frame.tip": "آخری 5 سیکنڈز میں سب سے خراب فریم ٹائم۔",
"debugBar.jank.label": "JANK",
"debugBar.jank.tip": "آخری 5 سیکنڈ میں 32ms سے زیادہ کے فریم۔",
"debugBar.long.label": "LONG",
"debugBar.long.tip": "آخری 5 سیکنڈ میں مسدود وقت اور طویل کام کی گنتی۔ زیادہ سے زیادہ کام: {{max}}۔",
"debugBar.delay.label": "DELAY",
"debugBar.delay.tip": "آخری 5 سیکنڈ میں سب سے زیادہ مشاہدہ کردہ ان پٹ تاخیر۔",
"debugBar.inp.label": "INP",
"debugBar.inp.tip": "آخری 5 سیکنڈ میں تعامل کا تخمینی دورانیہ۔ یہ INP جیسا ہے، سرکاری Web Vitals INP نہیں۔",
"debugBar.cls.label": "CLS",
"debugBar.cls.tip": "موجودہ ایپ کی زندگی بھر کے لیے مجموعی لے آؤٹ شفٹ۔",
"debugBar.mem.label": "MEM",
"debugBar.mem.tipUnavailable": "استعمال شدہ JS ہیپ بمقابلہ ہیپ کی حد۔ صرف Chromium۔",
"debugBar.mem.tip": "استعمال شدہ JS ہیپ بمقابلہ ہیپ کی حد۔ {{limit}} میں سے {{used}}۔",
"app.name.desktop": "OpenCode ڈیسک ٹاپ",
"settings.section.desktop": "ڈیسک ٹاپ",
"settings.section.server": "سرور",
"settings.tab.general": "عمومی",
"settings.tab.shortcuts": "شارٹ کٹس",
"settings.desktop.section.wsl": "WSL",
"settings.desktop.wsl.title": "WSL انضمام",
"settings.desktop.wsl.description": "Windows پر WSL کے اندر OpenCode سرور چلائیں۔",
"settings.general.section.appearance": "ظاہری شکل",
"settings.general.section.advanced": "اعلیٰ ترتیبات",
"settings.general.section.notifications": "سسٹم کی اطلاعات",
"settings.general.section.updates": "اپڈیٹس",
"settings.general.section.sounds": "صوتی اثرات",
"settings.general.section.feed": "فیڈ",
"settings.general.section.display": "ڈسپلے",
"settings.general.row.language.title": "زبان",
"settings.general.row.language.description": "OpenCode کے لیے ڈسپلے کی زبان تبدیل کریں۔",
"settings.general.row.shell.title": "ٹرمینل شیل",
"settings.general.row.shell.description": "ٹرمینل اور ایجنٹ ٹولز کے ذریعے استعمال ہونے والا شیل",
"settings.general.row.shell.autoDefault": "خودکار (پہلے سے طے شدہ)",
"settings.general.row.shell.terminalOnly": "صرف ٹرمینل",
"settings.general.row.appearance.title": "ظاہری شکل",
"settings.general.row.appearance.description": "اپنی مرضی کے مطابق بنائیں کہ آپ کے آلے پر OpenCode کیسا لگتا ہے۔",
"settings.general.row.colorScheme.title": "رنگ سکیم",
"settings.general.row.colorScheme.description":
"منتخب کریں کہ آیا OpenCode سسٹم، لائٹ یا ڈارک تھیم کی پیروی کرتا ہے۔",
"settings.general.row.theme.title": "تھیم",
"settings.general.row.theme.description": "OpenCode کی تھیم حسب ضرورت بنائیں۔",
"settings.general.row.font.title": "کوڈ فونٹ",
"settings.general.row.font.description": "کوڈ بلاکس میں استعمال ہونے والے فونٹ کو حسب ضرورت بنائیں",
"settings.general.row.terminalFont.title": "ٹرمینل فونٹ",
"settings.general.row.terminalFont.description": "ٹرمینل میں استعمال ہونے والے فونٹ کو حسب ضرورت بنائیں",
"settings.general.row.uiFont.title": "UI فونٹ",
"settings.general.row.uiFont.description": "پورے انٹرفیس میں استعمال ہونے والے فونٹ کو حسب ضرورت بنائیں",
"settings.general.row.followup.title": "فالو اپ کا طرز عمل",
"settings.general.row.followup.description":
"منتخب کریں کہ آیا فالو اپ فوری طور پر آگے بڑھتا ہے یا قطار میں انتظار کرتا ہے۔",
"settings.general.row.followup.option.queue": "قطار",
"settings.general.row.followup.option.steer": "فوری رہنمائی",
"settings.general.row.showFileTree.title": "فائل ٹری",
"settings.general.row.showFileTree.description": "سیشن میں فائل ٹری پینل دکھائیں۔",
"settings.general.row.showNavigation.title": "نیویگیشن کنٹرولز",
"settings.general.row.showNavigation.description": "ڈیسک ٹاپ ٹائٹل بار میں پیچھے اور آگے کے بٹن دکھائیں۔",
"settings.general.row.showSearch.title": "کمانڈ پیلیٹ",
"settings.general.row.showSearch.description": "ٹائٹل بار میں سرچ اور کمانڈ پیلیٹ بٹن دکھائیں۔",
"settings.general.row.showTerminal.title": "ٹرمینل",
"settings.general.row.showTerminal.description": "ڈیسک ٹاپ ٹائٹل بار میں ٹرمینل بٹن دکھائیں۔",
"settings.general.row.showStatus.title": "سرور کی حیثیت",
"settings.general.row.showStatus.description": "ٹائٹل بار میں سرور اسٹیٹس بٹن دکھائیں۔",
"settings.general.row.mobileTitlebarBottom.title": "نیچے نیویگیشن",
"settings.general.row.mobileTitlebarBottom.description": "موبائل پر اسکرین کے نیچے ٹائٹل بار اور سیشن ٹیبز رکھیں",
"settings.general.row.showCustomAgents.title": "ایجنٹ دکھائیں۔",
"settings.general.row.showCustomAgents.description":
"کمپوزر میں ایجنٹس تبدیل کریں۔ چھپانے پر Build ایجنٹ بطور طے شدہ استعمال ہوگا۔",
"settings.general.row.reasoningSummaries.title": "استدلال کے خلاصے دکھائیں۔",
"settings.general.row.reasoningSummaries.description": "ٹائم لائن میں ماڈل استدلال کے خلاصے ڈسپلے کریں۔",
"settings.general.row.shellToolPartsExpanded.title": "شیل ٹول کے حصے پھیلائیں",
"settings.general.row.shellToolPartsExpanded.description":
"ٹائم لائن میں شیل ٹول کے حصے بطور طے شدہ پھیلے ہوئے دکھائیں۔",
"settings.general.row.editToolPartsExpanded.title": "ترمیمی ٹول کے حصے پھیلائیں",
"settings.general.row.editToolPartsExpanded.description":
"ٹائم لائن میں ترمیم، تحریر اور پیچ ٹول کے حصے بطور طے شدہ پھیلے ہوئے دکھائیں۔",
"settings.general.row.newInterface.title": "نیا لے آؤٹ",
"settings.general.row.newInterface.badge": "نیا",
"settings.general.row.newInterface.description":
"نئے ٹیبز اور ہوم لے آؤٹ استعمال کریں۔ ایک محدود وقت کے لیے لے آؤٹ کے درمیان سوئچ کریں۔",
"settings.general.row.newInterfaceNotice.title": "اب آپ نیا لے آؤٹ استعمال کر رہے ہیں۔",
"settings.general.row.newInterfaceNotice.description": "پچھلا لے آؤٹ اب دستیاب نہیں ہے۔",
"settings.general.row.newInterfaceNotice.dismiss": "نظر انداز کریں",
"settings.general.row.pinchZoom.title": "زوم کرنے کے لیے چوٹکی لگائیں۔",
"settings.general.row.pinchZoom.description": "ٹریک پیڈ پنچ اور Ctrl-اسکرول اشاروں کو زوم کرنے دیں۔",
"settings.general.row.wayland.title": "مقامی Wayland استعمال کریں۔",
"settings.general.row.wayland.description": "Wayland پر X11 فال بیک کو غیر فعال کریں۔ دوبارہ شروع کرنے کی ضرورت ہے۔",
"settings.general.row.wayland.tooltip":
"مخلوط ریفریش ریٹ مانیٹر کے ساتھ Linux پر، مقامی Wayland زیادہ مستحکم ہو سکتا ہے۔",
"settings.general.row.releaseNotes.title": "ریلیز نوٹس",
"settings.general.row.releaseNotes.description": "اپ ڈیٹس کے بعد نیا کیا ہے پاپ اپ دکھائیں۔",
"settings.updates.row.startup.title": "سٹارٹ اپ پر اپ ڈیٹس چیک کریں۔",
"settings.updates.row.startup.description": "OpenCode لانچ ہونے پر اپ ڈیٹس کے لیے خودکار طور پر چیک کریں۔",
"settings.updates.row.check.title": "اپ ڈیٹس کے لیے چیک کریں۔",
"settings.updates.row.check.description": "اپ ڈیٹس کے لیے دستی طور پر چیک کریں اور اگر دستیاب ہو تو انسٹال کریں۔",
"settings.updates.action.checkNow": "ابھی چیک کریں۔",
"settings.updates.action.checking": "چیک کر رہا ہے...",
"settings.updates.action.downloading": "ڈاؤن لوڈ ہو رہا ہے...",
"settings.updates.action.installing": "انسٹال ہو رہا ہے...",
"settings.updates.toast.latest.title": "آپ اپ ٹو ڈیٹ ہیں۔",
"settings.updates.toast.latest.description": "آپ OpenCode کا تازہ ترین ورژن چلا رہے ہیں۔",
"sound.option.none": "کوئی نہیں۔",
"sound.option.alert01": "Alert 01",
"sound.option.alert02": "Alert 02",
"sound.option.alert03": "Alert 03",
"sound.option.alert04": "Alert 04",
"sound.option.alert05": "Alert 05",
"sound.option.alert06": "Alert 06",
"sound.option.alert07": "Alert 07",
"sound.option.alert08": "Alert 08",
"sound.option.alert09": "Alert 09",
"sound.option.alert10": "Alert 10",
"sound.option.bipbop01": "Bip-bop 01",
"sound.option.bipbop02": "Bip-bop 02",
"sound.option.bipbop03": "Bip-bop 03",
"sound.option.bipbop04": "Bip-bop 04",
"sound.option.bipbop05": "Bip-bop 05",
"sound.option.bipbop06": "Bip-bop 06",
"sound.option.bipbop07": "Bip-bop 07",
"sound.option.bipbop08": "Bip-bop 08",
"sound.option.bipbop09": "Bip-bop 09",
"sound.option.bipbop10": "Bip-bop 10",
"sound.option.staplebops01": "Staplebops 01",
"sound.option.staplebops02": "Staplebops 02",
"sound.option.staplebops03": "Staplebops 03",
"sound.option.staplebops04": "Staplebops 04",
"sound.option.staplebops05": "Staplebops 05",
"sound.option.staplebops06": "Staplebops 06",
"sound.option.staplebops07": "Staplebops 07",
"sound.option.nope01": "Nope 01",
"sound.option.nope02": "Nope 02",
"sound.option.nope03": "Nope 03",
"sound.option.nope04": "Nope 04",
"sound.option.nope05": "Nope 05",
"sound.option.nope06": "Nope 06",
"sound.option.nope07": "Nope 07",
"sound.option.nope08": "Nope 08",
"sound.option.nope09": "Nope 09",
"sound.option.nope10": "Nope 10",
"sound.option.nope11": "Nope 11",
"sound.option.nope12": "Nope 12",
"sound.option.yup01": "Yup 01",
"sound.option.yup02": "Yup 02",
"sound.option.yup03": "Yup 03",
"sound.option.yup04": "Yup 04",
"sound.option.yup05": "Yup 05",
"sound.option.yup06": "Yup 06",
"settings.general.notifications.agent.title": "ایجنٹ",
"settings.general.notifications.agent.description": "جب ایجنٹ مکمل ہو یا توجہ کی ضرورت ہو تو سسٹم کی اطلاع دکھائیں۔",
"settings.general.notifications.permissions.title": "اجازتیں",
"settings.general.notifications.permissions.description": "جب اجازت درکار ہو تو سسٹم کی اطلاع دکھائیں۔",
"settings.general.notifications.errors.title": "غلطیاں",
"settings.general.notifications.errors.description": "جب کوئی خرابی ہوتی ہے تو سسٹم کی اطلاع دکھائیں۔",
"settings.general.sounds.agent.title": "ایجنٹ",
"settings.general.sounds.agent.description": "جب ایجنٹ مکمل ہو جائے یا توجہ کی ضرورت ہو تو آواز چلائیں۔",
"settings.general.sounds.permissions.title": "اجازتیں",
"settings.general.sounds.permissions.description": "جب اجازت درکار ہو تو آواز چلائیں۔",
"settings.general.sounds.errors.title": "غلطیاں",
"settings.general.sounds.errors.description": "غلطی ہونے پر آواز چلائیں۔",
"settings.shortcuts.title": "کی بورڈ شارٹ کٹس",
"settings.shortcuts.reset.button": "ڈیفالٹس پر ری سیٹ کریں۔",
"settings.shortcuts.reset.toast.title": "شارٹ کٹس ری سیٹ",
"settings.shortcuts.reset.toast.description": "کی بورڈ شارٹ کٹس کو ڈیفالٹس پر ری سیٹ کر دیا گیا ہے۔",
"settings.shortcuts.conflict.title": "شارٹ کٹ پہلے سے استعمال میں ہے۔",
"settings.shortcuts.conflict.description": "{{keybind}} پہلے ہی {{titles}} کو تفویض کیا گیا ہے۔",
"settings.shortcuts.unassigned": "غیر تفویض کردہ",
"settings.shortcuts.pressKeys": "چابیاں دبائیں",
"settings.shortcuts.search.placeholder": "شارٹ کٹ تلاش کریں۔",
"settings.shortcuts.search.empty": "کوئی شارٹ کٹ نہیں ملا",
"settings.shortcuts.group.general": "عمومی",
"settings.shortcuts.group.session": "سیشن",
"settings.shortcuts.group.navigation": "نیویگیشن",
"settings.shortcuts.group.modelAndAgent": "ماڈل اور ایجنٹ",
"settings.shortcuts.group.terminal": "ٹرمینل",
"settings.shortcuts.group.prompt": "پرامپٹ",
"settings.providers.title": "فراہم کرنے والے",
"settings.providers.description": "فراہم کنندہ کی ترتیبات یہاں قابل ترتیب ہوں گی۔",
"settings.providers.section.connected": "منسلک فراہم کنندگان",
"settings.providers.connected.empty": "کوئی منسلک فراہم کنندہ نہیں۔",
"settings.providers.connected.environmentDescription": "آپ کے ماحول کے متغیرات سے جڑا ہوا ہے۔",
"settings.providers.section.popular": "مقبول فراہم کنندگان",
"settings.providers.custom.description": "بیس URL کے ذریعے ایک OpenAI-مطابق فراہم کنندہ شامل کریں۔",
"settings.providers.tag.environment": "ماحول",
"settings.providers.tag.config": "ترتیب",
"settings.providers.tag.custom": "حسب ضرورت",
"settings.providers.tag.other": "دیگر",
"settings.models.title": "ماڈلز",
"settings.models.description": "ماڈل کی ترتیبات یہاں قابل ترتیب ہوں گی۔",
"settings.agents.title": "ایجنٹس",
"settings.agents.description": "ایجنٹ کی ترتیبات یہاں قابل ترتیب ہوں گی۔",
"settings.commands.title": "کمانڈز",
"settings.commands.description": "کمانڈ کی ترتیبات یہاں قابل ترتیب ہوں گی۔",
"settings.mcp.title": "MCP",
"settings.mcp.description": "MCP ترتیبات یہاں قابل ترتیب ہوں گی۔",
"settings.permissions.title": "اجازتیں",
"settings.permissions.description": "کنٹرول کریں کہ سرور کن ٹولز کو بطور ڈیفالٹ استعمال کر سکتا ہے۔",
"settings.permissions.section.tools": "اوزار",
"settings.permissions.toast.updateFailed.title": "اجازتوں کو اپ ڈیٹ کرنے میں ناکام",
"settings.permissions.action.allow": "اجازت دیں۔",
"settings.permissions.action.ask": "پوچھیں",
"settings.permissions.action.deny": "انکار کریں",
"settings.permissions.tool.read.title": "پڑھیں",
"settings.permissions.tool.read.description": "فائل پڑھنا (فائل کے راستے سے میل کھاتا ہے)",
"settings.permissions.tool.edit.title": "ترمیم کریں۔",
"settings.permissions.tool.edit.description": "فائلوں میں ترمیم کریں، بشمول ترامیم، تحریریں اور پیچ",
"settings.permissions.tool.glob.title": "گلوب",
"settings.permissions.tool.glob.description": "گلوب پیٹرن کا استعمال کرتے ہوئے فائلوں کو میچ کریں۔",
"settings.permissions.tool.grep.title": "گریپ",
"settings.permissions.tool.grep.description": "ریگولر ایکسپریشنز کا استعمال کرتے ہوئے فائل کا مواد تلاش کریں۔",
"settings.permissions.tool.list.title": "فہرست",
"settings.permissions.tool.list.description": "ڈائریکٹری میں فائلوں کی فہرست بنائیں",
"settings.permissions.tool.bash.title": "باش",
"settings.permissions.tool.bash.description": "شیل کمانڈز چلائیں۔",
"settings.permissions.tool.task.title": "کام",
"settings.permissions.tool.task.description": "ذیلی ایجنٹس چلائیں۔",
"settings.permissions.tool.skill.title": "ہنر",
"settings.permissions.tool.skill.description": "نام سے ایک مہارت لوڈ کریں۔",
"settings.permissions.tool.lsp.title": "LSP",
"settings.permissions.tool.lsp.description": "زبان کے سرور کے سوالات چلائیں۔",
"settings.permissions.tool.todowrite.title": "ٹوڈو لکھیں۔",
"settings.permissions.tool.todowrite.description": "ٹوڈو لسٹ کو اپ ڈیٹ کریں۔",
"settings.permissions.tool.webfetch.title": "ویب بازیافت",
"settings.permissions.tool.webfetch.description": "URL سے مواد حاصل کریں۔",
"settings.permissions.tool.websearch.title": "ویب تلاش",
"settings.permissions.tool.websearch.description": "ویب پر تلاش کریں۔",
"settings.permissions.tool.external_directory.title": "بیرونی ڈائریکٹری",
"settings.permissions.tool.external_directory.description": "پروجیکٹ ڈائرکٹری سے باہر فائلوں تک رسائی حاصل کریں۔",
"settings.permissions.tool.doom_loop.title": "ڈوم لوپ",
"settings.permissions.tool.doom_loop.description": "ایک جیسی ان پٹ کے ساتھ بار بار ٹول کالز کا پتہ لگائیں۔",
"session.delete.failed.title": "سیشن کو حذف کرنے میں ناکام",
"session.delete.title": "سیشن کو حذف کریں۔",
"session.delete.confirm": 'سیشن "{{name}}" کو حذف کریں؟',
"session.delete.button": "سیشن کو حذف کریں۔",
"workspace.new": "نئی ورک اسپیس",
"workspace.type.local": "مقامی",
"workspace.type.sandbox": "سینڈ باکس",
"workspace.create.failed.title": "ورک اسپیس بنانے میں ناکام",
"workspace.delete.failed.title": "ورک اسپیس کو حذف کرنے میں ناکام",
"workspace.resetting.title": "ورک اسپیس ری سیٹ کی جا رہی ہے",
"workspace.resetting.description": "اس میں ایک منٹ لگ سکتا ہے۔",
"workspace.reset.failed.title": "ورک اسپیس کو ری سیٹ کرنے میں ناکام",
"workspace.reset.success.title": "ورک اسپیس ری سیٹ",
"workspace.reset.success.description": "ورک اسپیس اب ڈیفالٹ برانچ سے میل کھاتا ہے۔",
"workspace.error.stillPreparing": "ورک اسپیس ابھی بھی تیار ہو رہی ہے۔",
"workspace.status.checking": "غیر ضم شدہ تبدیلیوں کی جانچ ہو رہی ہے...",
"workspace.status.error": "گٹ کی حیثیت کی تصدیق کرنے سے قاصر۔",
"workspace.status.clean": "کوئی غیر ضم شدہ تبدیلی نہیں ملی۔",
"workspace.status.dirty": "اس ورک اسپیس میں غیر ضم شدہ تبدیلیاں ملی ہیں۔",
"workspace.delete.title": "ورک اسپیس کو حذف کریں۔",
"workspace.delete.confirm": 'ورک اسپیس "{{name}}" کو حذف کریں؟',
"workspace.delete.button": "ورک اسپیس کو حذف کریں۔",
"workspace.reset.title": "ورک اسپیس کو ری سیٹ کریں۔",
"workspace.reset.confirm": 'ورک اسپیس "{{name}}" کو ری سیٹ کریں؟',
"workspace.reset.button": "ورک اسپیس کو ری سیٹ کریں۔",
"workspace.reset.archived.none": "کوئی فعال سیشن آرکائیو نہیں کیا جائے گا۔",
"workspace.reset.archived.one": "1 سیشن آرکائیو کیا جائے گا۔",
"workspace.reset.archived.many": "{{count}} سیشنز آرکائیو کیے جائیں گے۔",
"workspace.reset.note": "یہ ڈیفالٹ برانچ سے ملنے کے لیے ورک اسپیس کو دوبارہ ترتیب دے گا۔",
}
+1148
View File
@@ -0,0 +1,1148 @@
export const dict = {
"desktop.menu.app": "OpenCode",
"desktop.menu.file": "Tệp",
"desktop.menu.edit": "Chỉnh sửa",
"desktop.menu.view": "Xem",
"desktop.menu.go": "Đi",
"desktop.menu.window": "Cửa sổ",
"desktop.menu.help": "Trợ giúp",
"desktop.menu.checkForUpdates": "Kiểm tra bản cập nhật...",
"desktop.menu.settings": "Cài đặt",
"desktop.menu.reloadWebview": "Tải lại Webview",
"desktop.menu.restart": "Khởi động lại",
"desktop.menu.exportLogs": "Xuất nhật ký...",
"desktop.menu.newSession": "Phiên mới",
"desktop.menu.openProject": "Mở dự án...",
"desktop.menu.newWindow": "Cửa sổ mới",
"desktop.menu.closeWindow": "Đóng cửa sổ",
"desktop.menu.undo": "Hoàn tác",
"desktop.menu.redo": "Làm lại",
"desktop.menu.cut": "Cắt",
"desktop.menu.copy": "Sao chép",
"desktop.menu.paste": "Dán",
"desktop.menu.delete": "Xóa",
"desktop.menu.selectAll": "Chọn tất cả",
"desktop.menu.toggleSidebar": "Bật/tắt thanh bên",
"desktop.menu.toggleTerminal": "Bật/tắt terminal",
"desktop.menu.toggleFileTree": "Bật/tắt cây tệp",
"desktop.menu.reload": "Tải lại",
"desktop.menu.toggleDeveloperTools": "Bật/tắt công cụ dành cho nhà phát triển",
"desktop.menu.actualSize": "Kích thước thực",
"desktop.menu.zoomIn": "Phóng to",
"desktop.menu.zoomOut": "Thu nhỏ",
"desktop.menu.toggleFullScreen": "Bật/tắt toàn màn hình",
"desktop.menu.back": "Quay lại",
"desktop.menu.forward": "Tiến tới",
"desktop.menu.previousSession": "Phiên trước",
"desktop.menu.nextSession": "Phiên tiếp theo",
"desktop.menu.previousProject": "Dự án trước",
"desktop.menu.nextProject": "Dự án tiếp theo",
"desktop.menu.minimize": "Thu nhỏ",
"desktop.menu.maximize": "Phóng to",
"desktop.menu.documentation": "Tài liệu OpenCode",
"desktop.menu.supportForum": "Diễn đàn hỗ trợ",
"desktop.menu.shareFeedback": "Chia sẻ phản hồi",
"desktop.menu.reportBug": "Báo cáo lỗi",
"desktop.menu.ariaLabel": "Menu OpenCode",
"desktop.updater.dialog.checkFailed.message": "Không kiểm tra được bản cập nhật.",
"desktop.updater.dialog.checkFailed.title": "Lỗi cập nhật",
"desktop.updater.dialog.upToDate.message": "Bạn đang dùng phiên bản mới nhất.",
"desktop.updater.dialog.upToDate.title": "Không có bản cập nhật",
"desktop.updater.dialog.ready.message": "Đã tải xuống bản cập nhật {{version}}. Khởi động lại ngay?",
"desktop.updater.dialog.ready.title": "Bản cập nhật đã sẵn sàng",
"desktop.updater.dialog.restart": "Khởi động lại",
"desktop.updater.dialog.later": "Để sau",
"desktop.recovery.action.relaunch": "Khởi chạy lại",
"desktop.recovery.action.exportLogs": "Xuất nhật ký",
"desktop.recovery.action.keepWaiting": "Tiếp tục chờ",
"desktop.recovery.action.quit": "Thoát",
"desktop.recovery.loadFailed": "Không tải được OpenCode",
"desktop.recovery.terminated": "Cửa sổ OpenCode đã bị đóng đột ngột",
"desktop.recovery.unresponsive": "OpenCode không phản hồi",
"desktop.recovery.unresponsive.detail": "Bạn có thể khởi chạy lại ứng dụng, mở nhật ký hoặc tiếp tục chờ.",
"desktop.recovery.loadFailed.detail": "Cửa sổ: {{window}}\nURL: {{url}}\nLỗi: {{code}} {{description}}",
"desktop.recovery.terminated.detail": "Cửa sổ: {{window}}\nLý do: {{reason}}\nMã: {{code}}",
"desktop.recovery.unknown": "<không xác định>",
"desktop.dialog.chooseFolder": "Chọn thư mục",
"desktop.dialog.chooseFile": "Chọn tệp",
"desktop.dialog.saveFile": "Lưu tệp",
"desktop.dialog.files": "Tệp",
"desktop.server.local": "Máy chủ cục bộ",
"desktop.wsl.error.windowsOnly": "WSL chỉ khả dụng trên Windows",
"desktop.wsl.error.unavailable": "WSL không khả dụng",
"desktop.wsl.error.listInstalled": "Không liệt kê được các bản phân phối WSL đã cài đặt",
"desktop.wsl.error.listOnline": "Không liệt kê được các bản phân phối WSL trực tuyến",
"desktop.wsl.error.executeDistro": "Không thể thực thi lệnh trong bản phân phối",
"desktop.wsl.error.installWsl": "Không cài đặt được WSL",
"desktop.wsl.error.installDistro": "Không cài đặt được bản phân phối: {{distro}}",
"desktop.wsl.error.installOpencode": "Không cài đặt được OpenCode",
"desktop.wsl.error.alreadyAdded": "{{distro}} đã được thêm",
"desktop.wsl.error.opencodeMissing": "opencode chưa được cài đặt trong bản phân phối này",
"desktop.wsl.error.opencodeCannotRun": "opencode đã được cài đặt nhưng không thể chạy",
"desktop.wsl.error.opencodeNotInstalled": "OpenCode chưa được cài đặt trong {{distro}}",
"desktop.wsl.error.updateVersion":
"Đã cập nhật OpenCode nhưng {{distro}} vẫn báo phiên bản {{installed}}; phiên bản dự kiến là {{expected}}",
"desktop.wsl.error.noVersion": "không có phiên bản",
"desktop.wsl.error.serverExited": "Máy chủ WSL đã thoát sau khi khởi động (mã={{code}} tín hiệu={{signal}})",
"desktop.wsl.error.serverExitedBeforeHealthy":
"Máy chủ WSL đã thoát trước khi sẵn sàng (mã={{code}} tín hiệu={{signal}}){{output}}",
"desktop.wsl.error.healthTimeout":
"Sidecar kiểm tra tình trạng của {{distro}} đã hết thời gian chờ sau {{timeout}}ms",
"desktop.wsl.error.commandTimeout": "{{command}} {{args}} đã hết thời gian chờ sau {{timeout}}ms",
"desktop.wsl.error.failedPort": "Không lấy được cổng",
"desktop.picker.error.notSelected": "Không có tệp nào được chọn trong bộ chọn tệp",
"desktop.picker.error.sizeLimit": "Các tệp đính kèm đã chọn vượt quá giới hạn {{limit}} MB",
"command.category.suggested": "Đề xuất",
"command.category.view": "Xem",
"command.category.project": "Dự án",
"command.category.provider": "Nhà cung cấp",
"command.category.server": "Máy chủ",
"command.category.session": "Phiên",
"command.category.theme": "Chủ đề",
"command.category.language": "Ngôn ngữ",
"command.category.file": "Tệp",
"command.category.context": "Ngữ cảnh",
"command.category.terminal": "Terminal",
"command.category.model": "Mô hình",
"command.category.mcp": "MCP",
"command.category.agent": "Tác nhân",
"command.category.permissions": "Quyền",
"command.category.workspace": "Không gian làm việc",
"command.category.settings": "Cài đặt",
"command.logs.export": "Xuất nhật ký",
"theme.scheme.system": "Hệ thống",
"theme.scheme.light": "Sáng",
"theme.scheme.dark": "Tối",
"command.sidebar.toggle": "Bật/tắt thanh bên",
"command.project.open": "Mở dự án",
"command.project.previous": "Dự án trước đó",
"command.project.next": "Dự án tiếp theo",
"command.project.index": "Chuyển sang dự án {{index}}",
"command.provider.connect": "Kết nối nhà cung cấp",
"command.server.switch": "Chuyển máy chủ",
"command.settings.open": "Mở cài đặt",
"command.session.previous": "Phiên trước",
"command.session.next": "Phiên tiếp theo",
"command.session.previous.unseen": "Phiên chưa đọc trước đó",
"command.session.next.unseen": "Phiên chưa đọc tiếp theo",
"command.session.archive": "Lưu trữ phiên",
"command.palette": "Bảng lệnh",
"command.theme.cycle": "Chuyển chủ đề",
"command.theme.set": "Sử dụng chủ đề: {{theme}}",
"command.theme.scheme.cycle": "Chuyển chế độ màu",
"command.theme.scheme.set": "Sử dụng bảng màu: {{scheme}}",
"command.language.cycle": "Chuyển ngôn ngữ",
"command.language.set": "Sử dụng ngôn ngữ: {{language}}",
"command.session.new": "Phiên mới",
"command.file.open": "Mở tệp",
"command.tab.close": "Đóng tab",
"command.tab.reopenClosed": "Mở lại tab đã đóng",
"command.context.addSelection": "Thêm lựa chọn vào ngữ cảnh",
"command.context.addSelection.description": "Thêm các dòng đã chọn từ tệp hiện tại",
"command.input.focus": "Tập trung vào ô nhập",
"command.terminal.toggle": "Bật/tắt terminal",
"command.fileTree.toggle": "Bật/tắt cây tệp",
"command.review.toggle": "Bật/tắt phần xem lại",
"command.terminal.new": "Terminal mới",
"command.terminal.new.description": "Tạo một tab terminal mới",
"command.steps.toggle": "Bật/tắt các bước",
"command.steps.toggle.description": "Hiển thị hoặc ẩn các bước cho tin nhắn hiện tại",
"command.message.previous": "Tin nhắn trước đó",
"command.message.previous.description": "Đi tới tin nhắn người dùng trước đó",
"command.message.next": "Tin nhắn tiếp theo",
"command.message.next.description": "Chuyển tới tin nhắn người dùng tiếp theo",
"command.model.choose": "Chọn mô hình",
"command.model.choose.description": "Chọn một mô hình khác",
"command.mcp.toggle": "Bật/tắt MCP",
"command.mcp.toggle.description": "Bật hoặc tắt MCP",
"command.agent.cycle": "Chuyển tác nhân",
"command.agent.cycle.description": "Chuyển sang tác nhân tiếp theo",
"command.agent.cycle.reverse": "Chuyển tác nhân theo chiều ngược",
"command.agent.cycle.reverse.description": "Chuyển sang tác nhân trước đó",
"command.model.variant.cycle": "Chuyển mức độ suy luận",
"command.model.variant.cycle.description": "Chuyển sang mức nỗ lực tiếp theo",
"command.prompt.mode.shell": "Shell",
"command.prompt.mode.normal": "Lời nhắc",
"command.permissions.autoaccept.enable": "Tự động chấp nhận quyền",
"command.permissions.autoaccept.disable": "Dừng tự động chấp nhận quyền",
"command.workspace.toggle": "Bật/tắt không gian làm việc",
"command.workspace.toggle.description": "Bật hoặc tắt nhiều không gian làm việc trong thanh bên",
"command.session.undo": "Hoàn tác",
"command.session.undo.description": "Hoàn tác tin nhắn cuối cùng",
"command.session.redo": "Làm lại",
"command.session.redo.description": "Làm lại tin nhắn đã hoàn tác gần đây nhất",
"command.session.compact": "Nén phiên",
"command.session.compact.description": "Tóm tắt phiên để giảm kích thước ngữ cảnh",
"command.session.fork": "Tách nhánh từ tin nhắn",
"command.session.fork.description": "Tạo phiên mới từ tin nhắn trước đó",
"command.session.share": "Chia sẻ phiên",
"command.session.share.description": "Chia sẻ phiên này và sao chép URL vào bảng tạm",
"command.session.unshare": "Ngừng chia sẻ phiên",
"command.session.unshare.description": "Dừng chia sẻ phiên này",
"palette.search.placeholder": "Tìm kiếm tệp, lệnh và phiên",
"palette.search.placeholder.home": "Tìm kiếm lệnh và phiên",
"palette.empty": "Không tìm thấy kết quả nào",
"palette.group.commands": "Lệnh",
"palette.group.files": "Tệp",
"dialog.provider.search.placeholder": "Tìm kiếm nhà cung cấp",
"dialog.provider.empty": "Không tìm thấy nhà cung cấp nào",
"dialog.provider.group.popular": "Phổ biến",
"dialog.provider.group.other": "Khác",
"dialog.provider.custom.label": "Nhà cung cấp tương thích OpenAI tùy chỉnh",
"dialog.provider.tag.recommended": "Đề xuất",
"dialog.provider.opencode.note": "Các mô hình được tuyển chọn, gồm Claude, GPT, Gemini và nhiều mô hình khác",
"dialog.provider.opencode.tagline": "Các mô hình tối ưu hóa đáng tin cậy",
"dialog.provider.opencodeGo.tagline": "Đăng ký chi phí thấp cho mọi người",
"dialog.provider.anthropic.note": "Truy cập trực tiếp các mô hình Claude, bao gồm Pro và Max",
"dialog.provider.copilot.note": "Các mô hình AI hỗ trợ lập trình qua GitHub Copilot",
"dialog.provider.openai.note": "Các mô hình GPT nhanh và mạnh mẽ cho tác vụ AI đa dụng",
"dialog.provider.google.note": "Các mô hình Gemini cho phản hồi nhanh, có cấu trúc",
"dialog.provider.openrouter.note": "Truy cập tất cả các mô hình được hỗ trợ từ một nhà cung cấp",
"dialog.provider.vercel.note": "Truy cập thống nhất vào các mô hình AI với tính năng định tuyến thông minh",
"dialog.model.select.title": "Chọn mô hình",
"dialog.model.search.placeholder": "Tìm kiếm mô hình",
"dialog.model.empty": "Không có kết quả mô hình",
"dialog.model.manage": "Quản lý mô hình",
"dialog.model.manage.description": "Tùy chỉnh mô hình nào xuất hiện trong bộ chọn mô hình.",
"dialog.model.manage.provider.toggle": "Bật/tắt tất cả mô hình {{provider}}",
"dialog.model.unpaid.freeModels.title": "Các mô hình miễn phí do OpenCode cung cấp",
"dialog.model.unpaid.addMore.title": "Thêm nhiều mô hình từ các nhà cung cấp phổ biến",
"dialog.model.unpaid.viewMoreProviders": "Xem hơn 70 nhà cung cấp khác",
"dialog.provider.viewAll": "Hiển thị thêm nhà cung cấp",
"provider.connect.title": "Kết nối {{provider}}",
"provider.connect.title.anthropicProMax": "Đăng nhập bằng Claude Pro/Max",
"provider.connect.selectMethod": "Chọn phương thức đăng nhập cho {{provider}}.",
"provider.connect.method.apiKey": "Khóa API",
"provider.connect.method.browser": "Trình duyệt",
"provider.connect.method.headless": "Không có giao diện người dùng",
"provider.connect.status.inProgress": "Đang ủy quyền...",
"provider.connect.status.waiting": "Đang chờ ủy quyền...",
"provider.connect.status.failed": "Ủy quyền thất bại: {{error}}",
"provider.connect.apiKey.description":
"Nhập khóa API {{provider}} để kết nối tài khoản và sử dụng các mô hình {{provider}} trong OpenCode.",
"provider.connect.apiKey.label": "Khóa API {{provider}}",
"provider.connect.apiKey.placeholder": "khóa API",
"provider.connect.apiKey.required": "Cần có khóa API",
"provider.connect.opencodeZen.line1":
"OpenCode Zen cho phép bạn truy cập một bộ mô hình được tuyển chọn, tối ưu hóa và đáng tin cậy dành cho tác nhân lập trình.",
"provider.connect.opencodeZen.line2":
"Chỉ với một khóa API, bạn sẽ có quyền truy cập vào các mô hình như Claude, GPT, Gemini, GLM và hơn thế nữa.",
"provider.connect.opencodeZen.visit.prefix": "Truy cập ",
"provider.connect.opencodeZen.visit.link": "opencode.ai/zen",
"provider.connect.opencodeZen.visit.suffix": " để lấy khóa API của bạn.",
"provider.connect.oauth.code.visit.prefix": "Truy cập ",
"provider.connect.oauth.code.visit.link": "liên kết này",
"provider.connect.oauth.code.visit.suffix":
" để lấy mã ủy quyền, kết nối tài khoản và sử dụng các mô hình {{provider}} trong OpenCode.",
"provider.connect.oauth.code.label": "Mã ủy quyền {{method}}",
"provider.connect.oauth.code.placeholder": "Mã ủy quyền",
"provider.connect.oauth.code.required": "Cần có mã ủy quyền",
"provider.connect.oauth.code.invalid": "Mã ủy quyền không hợp lệ",
"provider.connect.oauth.auto.visit.prefix": "Truy cập ",
"provider.connect.oauth.auto.visit.link": "liên kết này",
"provider.connect.oauth.auto.visit.suffix":
" và nhập mã bên dưới để kết nối tài khoản của bạn và sử dụng các mô hình {{provider}} trong OpenCode.",
"provider.connect.oauth.auto.confirmationCode": "Mã xác nhận",
"provider.connect.toast.connected.title": "{{provider}} đã kết nối",
"provider.connect.toast.connected.description": "Các mô hình {{provider}} hiện đã sẵn sàng để sử dụng.",
"provider.custom.title": "Nhà cung cấp tùy chỉnh",
"provider.custom.unavailable": "Nhà cung cấp tùy chỉnh không khả dụng trên máy chủ này",
"provider.custom.description.prefix": "Định cấu hình nhà cung cấp tương thích OpenAI. Xem ",
"provider.custom.description.link": "tài liệu cấu hình nhà cung cấp",
"provider.custom.description.suffix": ".",
"provider.custom.field.providerID.label": "ID nhà cung cấp",
"provider.custom.field.providerID.placeholder": "myprovider",
"provider.custom.field.providerID.description": "Chữ thường, số, dấu gạch nối hoặc dấu gạch dưới",
"provider.custom.field.name.label": "Tên hiển thị",
"provider.custom.field.name.placeholder": "Nhà cung cấp AI của tôi",
"provider.custom.field.baseURL.label": "URL cơ sở",
"provider.custom.field.baseURL.placeholder": "https://api.myprovider.com/v1",
"provider.custom.field.apiKey.label": "Khóa API",
"provider.custom.field.apiKey.placeholder": "khóa API",
"provider.custom.field.apiKey.description": "Không bắt buộc. Để trống nếu bạn quản lý xác thực thông qua tiêu đề.",
"provider.custom.models.label": "Mô hình",
"provider.custom.models.id.label": "ID",
"provider.custom.models.id.placeholder": "model-id",
"provider.custom.models.name.label": "Tên",
"provider.custom.models.name.placeholder": "Tên hiển thị",
"provider.custom.models.remove": "Xóa mô hình",
"provider.custom.models.add": "Thêm mô hình",
"provider.custom.headers.label": "Header (tùy chọn)",
"provider.custom.headers.key.label": "Header",
"provider.custom.headers.key.placeholder": "Header-Name",
"provider.custom.headers.value.label": "Giá trị",
"provider.custom.headers.value.placeholder": "giá trị",
"provider.custom.headers.remove": "Xóa header",
"provider.custom.headers.add": "Thêm header",
"provider.custom.error.providerID.required": "Bắt buộc phải có ID nhà cung cấp",
"provider.custom.error.providerID.format": "Sử dụng chữ cái viết thường, số, dấu gạch nối hoặc dấu gạch dưới",
"provider.custom.error.providerID.exists": "ID nhà cung cấp này đã tồn tại",
"provider.custom.error.name.required": "Tên hiển thị là bắt buộc",
"provider.custom.error.baseURL.required": "Bắt buộc phải có URL cơ sở",
"provider.custom.error.baseURL.format": "Phải bắt đầu bằng http:// hoặc https://",
"provider.custom.error.required": "Bắt buộc",
"provider.custom.error.duplicate": "Trùng lặp",
"provider.disconnect.toast.disconnected.title": "{{provider}} bị ngắt kết nối",
"provider.disconnect.toast.disconnected.description": "Các mô hình {{provider}} không còn khả dụng.",
"model.tag.free": "Miễn phí",
"model.tag.latest": "Mới nhất",
"model.provider.anthropic": "Anthropic",
"model.provider.openai": "OpenAI",
"model.provider.google": "Google",
"model.provider.xai": "xAI",
"model.provider.meta": "Meta",
"model.input.text": "văn bản",
"model.input.image": "hình ảnh",
"model.input.audio": "âm thanh",
"model.input.video": "video",
"model.input.pdf": "pdf",
"model.tooltip.allows": "Cho phép: {{inputs}}",
"model.tooltip.context.label": "Ngữ cảnh",
"model.tooltip.inputs": "Đầu vào",
"model.tooltip.model": "Mô hình",
"model.tooltip.provider": "Nhà cung cấp",
"model.tooltip.reasoning": "Lý luận",
"model.tooltip.reasoning.allowed": "Cho phép suy luận",
"model.tooltip.reasoning.none": "Không hỗ trợ suy luận",
"model.tooltip.context": "Giới hạn ngữ cảnh {{limit}}",
"common.search.placeholder": "Tìm kiếm",
"common.goBack": "Quay lại",
"common.goForward": "Tiến tới",
"common.loading": "Đang tải",
"common.loading.ellipsis": "...",
"common.cancel": "Hủy",
"common.clear": "Xóa",
"common.open": "Mở",
"common.connect": "Kết nối",
"common.disconnect": "Ngắt kết nối",
"common.continue": "Tiếp tục",
"common.submit": "Gửi",
"common.save": "Lưu",
"common.saving": "Đang lưu...",
"common.default": "Mặc định",
"common.attachment": "tệp đính kèm",
"prompt.placeholder.shell": "Nhập lệnh shell... {{example}}",
"prompt.placeholder.normal": 'Hỏi bất cứ điều gì... "{{example}}"',
"prompt.placeholder.simple": "Hỏi bất cứ điều gì...",
"prompt.placeholder.summarizeComments": "Tóm tắt các bình luận…",
"prompt.placeholder.summarizeComment": "Tóm tắt bình luận…",
"prompt.mode.shell": "Shell",
"prompt.mode.normal": "Lời nhắc",
"prompt.mode.shell.exit": "esc để thoát",
"session.child.promptDisabled": "Không thể gửi lời nhắc trong phiên tác nhân phụ.",
"session.child.backToParent": "Quay lại phiên chính.",
"prompt.example.1": "Sửa TODO trong cơ sở mã",
"prompt.example.2": "Ngăn xếp công nghệ của dự án này là gì?",
"prompt.example.3": "Sửa các bài kiểm tra bị hỏng",
"prompt.example.4": "Giải thích cách xác thực hoạt động",
"prompt.example.5": "Tìm và sửa các lỗ hổng bảo mật",
"prompt.example.6": "Thêm bài kiểm tra đơn vị cho dịch vụ người dùng",
"prompt.example.7": "Tái cấu trúc hàm này để dễ đọc hơn",
"prompt.example.8": "Lỗi này có nghĩa là gì?",
"prompt.example.9": "Giúp tôi gỡ lỗi vấn đề này",
"prompt.example.10": "Tạo tài liệu API",
"prompt.example.11": "Tối ưu hóa truy vấn cơ sở dữ liệu",
"prompt.example.12": "Thêm xác thực đầu vào",
"prompt.example.13": "Tạo một thành phần mới cho...",
"prompt.example.14": "Làm cách nào để triển khai dự án này?",
"prompt.example.15": "Xem lại mã của tôi để biết các phương pháp hay nhất",
"prompt.example.16": "Thêm xử lý lỗi vào hàm này",
"prompt.example.17": "Giải thích mẫu biểu thức chính quy này",
"prompt.example.18": "Chuyển đổi cái này thành TypeScript",
"prompt.example.19": "Thêm ghi nhật ký trong toàn bộ cơ sở mã",
"prompt.example.20": "Những phụ thuộc nào đã lỗi thời?",
"prompt.example.21": "Giúp tôi viết kịch bản di chuyển",
"prompt.example.22": "Triển khai bộ nhớ đệm cho điểm cuối này",
"prompt.example.23": "Thêm phân trang vào danh sách này",
"prompt.example.24": "Tạo lệnh CLI cho...",
"prompt.example.25": "Các biến môi trường hoạt động như thế nào ở đây?",
"prompt.popover.emptyResults": "Không có kết quả phù hợp",
"prompt.popover.emptyCommands": "Không có lệnh phù hợp",
"prompt.dropzone.label": "Thả hình ảnh, tệp PDF hoặc tệp văn bản vào đây",
"prompt.dropzone.file.label": "Thả để @mention tệp",
"prompt.slash.badge.custom": "tùy chỉnh",
"prompt.slash.badge.skill": "kỹ năng",
"prompt.slash.badge.mcp": "mcp",
"prompt.context.active": "hiện hoạt",
"prompt.context.includeActiveFile": "Bao gồm tệp hiện hoạt",
"prompt.context.removeActiveFile": "Xóa tệp hiện hoạt khỏi ngữ cảnh",
"prompt.context.removeFile": "Xóa tệp khỏi ngữ cảnh",
"prompt.action.attachFile": "Thêm tệp",
"prompt.menu.addImagesAndFiles": "Thêm tệp và nội dung khác",
"prompt.menu.imagesAndFiles": "Hình ảnh và tệp",
"prompt.menu.commands": "Lệnh",
"prompt.menu.context": "Ngữ cảnh",
"prompt.menu.shellCommand": "Lệnh shell",
"prompt.attachment.remove": "Xóa tệp đính kèm",
"prompt.action.send": "Gửi",
"prompt.action.stop": "Dừng",
"prompt.toast.pasteUnsupported.title": "Tệp đính kèm không được hỗ trợ",
"prompt.toast.pasteUnsupported.description": "Chỉ có thể đính kèm hình ảnh, tệp PDF hoặc tệp văn bản ở đây.",
"prompt.toast.attachmentDuplicate.title": "Tệp này đã được tải lên",
"prompt.toast.modelAgentRequired.title": "Chọn tác nhân và mô hình",
"prompt.toast.modelAgentRequired.description": "Chọn một tác nhân và mô hình trước khi gửi lời nhắc.",
"prompt.toast.worktreeCreateFailed.title": "Không tạo được worktree",
"prompt.toast.sessionCreateFailed.title": "Không tạo được phiên",
"prompt.toast.shellSendFailed.title": "Không gửi được lệnh shell",
"prompt.toast.commandSendFailed.title": "Không gửi được lệnh",
"prompt.toast.promptSendFailed.title": "Không gửi được lời nhắc",
"prompt.toast.promptSendFailed.description": "Không thể truy xuất phiên",
"dialog.mcp.title": "MCP",
"dialog.mcp.description": "{{enabled}} trong số {{total}} đã bật",
"dialog.mcp.empty": "Không có MCP nào được định cấu hình",
"dialog.lsp.empty": "LSP được tự động phát hiện từ các loại tệp",
"dialog.plugins.empty": "Các plugin được định cấu hình trong opencode.json",
"mcp.status.connected": "đã kết nối",
"mcp.status.failed": "thất bại",
"mcp.status.needs_auth": "cần xác thực",
"mcp.status.disabled": "đã tắt",
"mcp.auth.clickToAuthenticate": "Bấm để xác thực",
"dialog.fork.empty": "Không có tin nhắn nào để phân nhánh",
"dialog.directory.search.placeholder": "Tìm kiếm thư mục",
"dialog.directory.empty": "Không tìm thấy thư mục nào",
"dialog.directory.action.selectFile": "Chọn tệp",
"dialog.directory.action.selectFolder": "Chọn thư mục",
"dialog.directory.root": "Gốc",
"dialog.directory.parent": "Thư mục mẹ",
"dialog.directory.readError": "Không thể đọc thư mục này",
"app.server.unreachable": "Không thể đạt tới {{server}}",
"app.server.retrying": "Đang tự động thử lại...",
"app.server.otherServers": "Máy chủ khác",
"dialog.server.title": "Máy chủ",
"dialog.server.description": "Chuyển máy chủ OpenCode mà ứng dụng này kết nối tới.",
"dialog.server.search.placeholder": "Tìm kiếm máy chủ",
"dialog.server.empty": "Chưa có máy chủ",
"dialog.server.add.title": "Thêm máy chủ",
"dialog.server.add.url": "Địa chỉ máy chủ",
"dialog.server.add.placeholder": "http://localhost:4096",
"dialog.server.add.error": "Không thể kết nối với máy chủ",
"dialog.server.add.checking": "Đang kiểm tra...",
"dialog.server.add.button": "Thêm máy chủ",
"dialog.server.add.name": "Tên máy chủ (tùy chọn)",
"dialog.server.add.namePlaceholder": "Máy chủ cục bộ",
"dialog.server.add.username": "Tên người dùng (tùy chọn)",
"dialog.server.add.usernamePlaceholder": "tên người dùng",
"dialog.server.add.password": "Mật khẩu (tùy chọn)",
"dialog.server.add.passwordPlaceholder": "mật khẩu",
"dialog.server.edit.title": "Chỉnh sửa máy chủ",
"dialog.server.default.title": "Máy chủ mặc định",
"dialog.server.default.description":
"Kết nối với máy chủ này khi khởi chạy ứng dụng thay vì khởi động máy chủ cục bộ. Yêu cầu khởi động lại.",
"dialog.server.default.none": "Không có máy chủ nào được chọn",
"dialog.server.default.set": "Đặt máy chủ hiện tại làm mặc định",
"dialog.server.default.clear": "Xóa",
"dialog.server.action.remove": "Xóa máy chủ",
"dialog.server.menu.edit": "Chỉnh sửa",
"dialog.server.menu.default": "Đặt làm mặc định",
"dialog.server.menu.defaultRemove": "Xóa mặc định",
"dialog.server.menu.delete": "Xóa",
"dialog.server.current": "Máy chủ hiện tại",
"dialog.server.status.default": "Mặc định",
"wsl.server.add": "Thêm máy chủ WSL",
"wsl.server.addShort": "Thêm WSL",
"wsl.server.label": "WSL",
"wsl.server.menu.label": "Máy chủ WSL",
"wsl.server.retryStart": "Thử khởi động lại",
"wsl.server.updating": "Đang cập nhật...",
"wsl.onboarding.step.distro": "Chọn bản phân phối",
"wsl.onboarding.step.opencode": "OpenCode",
"wsl.onboarding.checkingRuntime": "Đang kiểm tra WSL...",
"wsl.onboarding.restartRequired": "Windows cần khởi động lại để hoàn tất cài đặt WSL.",
"wsl.onboarding.ready": "WSL đã sẵn sàng.",
"wsl.onboarding.required": "WSL là bắt buộc để tiếp tục.",
"wsl.onboarding.checkingDistros": "Đang kiểm tra các bản phân phối...",
"wsl.onboarding.installingDistro": "Đang cài đặt {{distro}}...",
"wsl.onboarding.checkingDistro": "Đang kiểm tra {{distro}}...",
"wsl.onboarding.listingDistros": "Liệt kê các bản phân phối...",
"wsl.onboarding.distroReady": "{{distro}} đã sẵn sàng.",
"wsl.onboarding.distroNotInstalled": "{{distro}} chưa được cài đặt.",
"wsl.onboarding.openDistroOnce": "Mở {{distro}} một lần để hoàn tất thiết lập.",
"wsl.onboarding.finishingDistro": "Đang hoàn tất thiết lập cho {{distro}}.",
"wsl.onboarding.pickDistro": "Chọn một bản phân phối hoặc cài đặt một bản dưới đây.",
"wsl.onboarding.checkingOpencode": "Đang kiểm tra OpenCode...",
"wsl.onboarding.checkingOpencodeIn": "Đang kiểm tra OpenCode trong {{distro}}...",
"wsl.onboarding.updatingOpencode": "Đang cập nhật OpenCode...",
"wsl.onboarding.updatingOpencodeIn": "Đang cập nhật OpenCode trong {{distro}}...",
"wsl.onboarding.updateOpencodeIn": "Cập nhật OpenCode trong {{distro}}.",
"wsl.onboarding.updateOpencode": "Cập nhật OpenCode",
"wsl.onboarding.opencodeReadyIn": "OpenCode đã sẵn sàng trong {{distro}}.",
"wsl.onboarding.opencodeReady": "OpenCode đã sẵn sàng.",
"wsl.onboarding.installOpencodeIn": "Cài đặt OpenCode trong {{distro}}.",
"wsl.onboarding.installOpencode": "Cài đặt OpenCode",
"wsl.onboarding.chooseDistroFirst": "Chọn một bản phân phối đầu tiên.",
"wsl.onboarding.loadFailed": "Không tải được trạng thái WSL.",
"wsl.onboarding.loading": "Đang tải...",
"wsl.onboarding.installedDistros": "Các bản phân phối đã cài đặt",
"wsl.onboarding.checkAgain": "Kiểm tra lại",
"wsl.onboarding.distroStatus.ready": "Sẵn sàng",
"wsl.onboarding.distroStatus.checking": "Đang kiểm tra...",
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode chưa được cài đặt",
"wsl.onboarding.distroStatus.missingTools": "Thiếu bash, curl",
"wsl.onboarding.distroStatus.unsupported": "Không được hỗ trợ · Sử dụng WSL 2",
"wsl.onboarding.needAnotherDistro": "Cần một bản phân phối khác?",
"wsl.onboarding.needAnotherDistroHint": "Cài đặt bản phân phối Linux từ danh mục WSL",
"wsl.onboarding.wslNotInstalled.title": "WSL chưa được cài đặt",
"wsl.onboarding.wslNotInstalled.description":
"Cần có WSL (Hệ thống con Windows dành cho Linux) trước khi OpenCode có thể thêm máy chủ WSL",
"wsl.onboarding.wslUnavailable.title": "WSL không có sẵn",
"wsl.onboarding.wslUnavailable.description": "OpenCode không thể xác minh WSL trên máy này.",
"wsl.onboarding.installWsl": "Cài đặt WSL",
"wsl.onboarding.windowsRestartRequired": "Khởi động lại Windows để hoàn tất cài đặt WSL, sau đó mở lại OpenCode.",
"wsl.onboarding.next": "Tiếp theo",
"wsl.onboarding.refresh": "Làm mới",
"wsl.onboarding.allDistrosAdded": "Tất cả các bản phân phối đã cài đặt đều đã được thêm vào.",
"wsl.onboarding.noDistros": "Chưa phát hiện thấy bản phân phối nào.",
"wsl.onboarding.install": "Cài đặt",
"wsl.onboarding.installing": "Đang cài đặt...",
"wsl.onboarding.installDistro": "Cài đặt bản phân phối",
"wsl.onboarding.searchDistros": "Tìm kiếm bản phân phối",
"wsl.onboarding.wsl2Required": "WSL 2 là bắt buộc.",
"wsl.onboarding.toolsRequired": "Bản phân phối này cần bash và curl.",
"wsl.onboarding.openTerminal": "Mở terminal",
"wsl.onboarding.path": "Đường dẫn: {{path}}",
"wsl.onboarding.notFound": "không tìm thấy",
"wsl.onboarding.version": "Phiên bản: {{version}}",
"wsl.onboarding.unknown": "không rõ",
"wsl.onboarding.desktopVersion": "Desktop {{version}}",
"wsl.onboarding.versionMismatch": "Phiên bản đã cài đặt không khớp với phiên bản ứng dụng desktop.",
"wsl.onboarding.adding": "Đang thêm...",
"help.tabs.toast.ariaLabel": "Giới thiệu về tab. Sắp xếp công việc và các phiên đang hoạt động bằng tab",
"help.tabs.toast.dismiss": "Bỏ qua thông tin về tab",
"help.tabs.title": "Giới thiệu về tab",
"help.tabs.description": "Sắp xếp công việc và các phiên đang hoạt động bằng tab",
"help.tabs.date": "14 tháng 7",
"help.tabs.introduction": "OpenCode Desktop nay được xây dựng xoay quanh các tab.",
"help.tabs.sessions":
"Bắt đầu phiên mới trong một tab hoặc mở phiên hiện có từ bất kỳ dự án nào của bạn. Hãy mở tab mới khi bắt đầu công việc mới và đóng tab khi hoàn tất.",
"help.tabs.organize":
"Việc mở một vài tab giúp bạn dễ dàng sắp xếp các phiên đang hoạt động. Hãy đổi tên tab thành tên dễ nhớ nếu bạn định giữ tab đó lâu dài.",
"help.tabs.home":
"Bạn sẽ tìm thấy tất cả các phiên và dự án trên màn hình Trang chủ mới. Khi bạn chọn một phiên, phiên đó sẽ mở trong một tab.",
"help.tabs.persistence": "Khi bạn mở lại ứng dụng, các tab vẫn mở.",
"help.tabs.worktrees":
"Thiết kế mới chưa hỗ trợ Git Worktrees, nhưng tính năng này sẽ sớm ra mắt. Vì vậy, nếu muốn tiếp tục sử dụng bố cục trước đó, bạn có thể chuyển đổi giữa các bố cục trong Cài đặt. Xin lưu ý rằng bố cục mới sẽ trở thành cố định sau vài tuần nữa.",
"server.row.noUsername": "không có tên người dùng",
"dialog.project.edit.title": "Chỉnh sửa dự án",
"dialog.project.edit.name": "Tên",
"dialog.project.edit.icon": "Biểu tượng",
"dialog.project.edit.icon.alt": "Biểu tượng dự án",
"dialog.project.edit.icon.hint": "Nhấp hoặc kéo hình ảnh",
"dialog.project.edit.icon.recommended": "Khuyến nghị: 128x128px",
"dialog.project.edit.color": "Màu sắc",
"dialog.project.edit.color.select": "Chọn màu {{color}}",
"dialog.project.edit.worktree.startup": "Tập lệnh khởi động không gian làm việc",
"dialog.project.edit.worktree.startup.description": "Chạy sau khi tạo không gian làm việc mới (worktree).",
"dialog.project.edit.worktree.startup.placeholder": "ví dụ: bun install",
"dialog.releaseNotes.action.getStarted": "Bắt đầu",
"dialog.releaseNotes.action.next": "Tiếp theo",
"dialog.releaseNotes.action.hideFuture": "Không hiển thị lại",
"dialog.releaseNotes.media.alt": "Xem trước bản phát hành",
"context.breakdown.title": "Phân tích ngữ cảnh",
"context.breakdown.note":
'Phân tích gần đúng của token đầu vào. "Khác" bao gồm các định nghĩa công cụ và chi phí chung.',
"context.breakdown.system": "Hệ thống",
"context.breakdown.user": "Người dùng",
"context.breakdown.assistant": "Trợ lý",
"context.breakdown.tool": "Lệnh gọi công cụ",
"context.breakdown.other": "Khác",
"context.systemPrompt.title": "Lời nhắc hệ thống",
"context.rawMessages.title": "Tin nhắn thô",
"context.stats.session": "Phiên",
"context.stats.messages": "Tin nhắn",
"context.stats.provider": "Nhà cung cấp",
"context.stats.model": "Mô hình",
"context.stats.limit": "Giới hạn ngữ cảnh",
"context.stats.totalTokens": "Tổng số token",
"context.stats.usage": "Mức sử dụng",
"context.stats.inputTokens": "Token đầu vào",
"context.stats.outputTokens": "Token đầu ra",
"context.stats.reasoningTokens": "Token lý luận",
"context.stats.cacheTokens": "Token bộ đệm (đọc/ghi)",
"context.stats.userMessages": "Tin nhắn của người dùng",
"context.stats.assistantMessages": "Tin nhắn trợ lý",
"context.stats.totalCost": "Tổng chi phí",
"context.stats.sessionCreated": "Đã tạo phiên",
"context.stats.lastActivity": "Hoạt động cuối cùng",
"context.usage.tokens": "Token",
"context.usage.usage": "Mức sử dụng",
"context.usage.cost": "Chi phí",
"context.usage.clickToView": "Nhấn vào đây để xem ngữ cảnh",
"context.usage.view": "Xem cách sử dụng ngữ cảnh",
"language.en": "English",
"language.zh": "简体中文",
"language.zht": "繁體中文",
"language.ko": "한국어",
"language.de": "Deutsch",
"language.es": "Español",
"language.fr": "Français",
"language.da": "Dansk",
"language.ja": "日本語",
"language.pl": "Polski",
"language.ru": "Русский",
"language.ar": "العربية",
"language.no": "Norsk",
"language.br": "Português (Brasil)",
"language.bs": "Bosanski",
"language.uk": "Українська",
"language.th": "ไทย",
"language.tr": "Türkçe",
"toast.language.title": "Ngôn ngữ",
"toast.language.description": "Đã chuyển sang {{language}}",
"toast.theme.title": "Đã chuyển chủ đề",
"toast.scheme.title": "Cách phối màu",
"toast.workspace.enabled.title": "Đã bật không gian làm việc",
"toast.workspace.enabled.description": "Nhiều worktree hiện được hiển thị trên thanh bên",
"toast.workspace.disabled.title": "Đã tắt không gian làm việc",
"toast.workspace.disabled.description": "Chỉ worktree chính được hiển thị trong thanh bên",
"toast.permissions.autoaccept.on.title": "Tự động chấp nhận quyền",
"toast.permissions.autoaccept.on.description": "Yêu cầu quyền sẽ được tự động phê duyệt",
"toast.permissions.autoaccept.off.title": "Đã dừng quyền tự động chấp nhận",
"toast.permissions.autoaccept.off.description": "Yêu cầu quyền sẽ cần được phê duyệt",
"toast.model.none.title": "Không có mô hình nào được chọn",
"toast.model.none.description": "Kết nối nhà cung cấp để tóm tắt phiên này",
"toast.file.loadFailed.title": "Không tải được tệp",
"toast.file.listFailed.title": "Không thể liệt kê các tệp",
"toast.context.noLineSelection.title": "Không có lựa chọn dòng",
"toast.context.noLineSelection.description": "Trước tiên, hãy chọn một phạm vi dòng trong tab tệp.",
"toast.session.share.copyFailed.title": "Không sao chép được URL vào bảng tạm",
"toast.session.share.success.title": "Đã chia sẻ phiên",
"toast.session.share.success.description": "Đã sao chép URL chia sẻ vào bảng tạm!",
"toast.session.share.failed.title": "Không thể chia sẻ phiên",
"toast.session.share.failed.description": "Đã xảy ra lỗi khi chia sẻ phiên",
"toast.session.unshare.success.title": "Đã ngừng chia sẻ phiên",
"toast.session.unshare.success.description": "Đã hủy chia sẻ phiên thành công!",
"toast.session.unshare.failed.title": "Không hủy chia sẻ được phiên",
"toast.session.unshare.failed.description": "Đã xảy ra lỗi khi hủy chia sẻ phiên",
"toast.session.listFailed.title": "Không thể tải phiên cho {{project}}",
"toast.project.reloadFailed.title": "Không thể tải lại {{project}}",
"toast.update.title": "Đã có bản cập nhật",
"toast.update.description": "Hiện đã có phiên bản mới của OpenCode ({{version}}) để cài đặt.",
"toast.update.action.installRestart": "Cài đặt và khởi động lại",
"toast.update.action.notYet": "Chưa",
"error.page.title": "Đã xảy ra lỗi",
"error.page.description": "Đã xảy ra lỗi khi tải ứng dụng.",
"error.page.description.localServerStartup": "Đã xảy ra lỗi khi khởi động máy chủ cục bộ.",
"error.page.details.label": "Chi tiết lỗi",
"error.page.action.restart": "Khởi động lại",
"error.page.action.report": "Báo cáo lỗi",
"error.page.action.reported": "Đã báo lỗi",
"error.page.action.exportLogs": "Xuất nhật ký",
"error.page.action.checking": "Đang kiểm tra...",
"error.page.action.checkUpdates": "Kiểm tra các bản cập nhật",
"error.page.action.updateTo": "Cập nhật lên {{version}}",
"error.page.circular": "[Vòng lặp]",
"error.page.report.prefix": "Vui lòng báo cáo lỗi này cho nhóm OpenCode",
"error.page.report.discord": "trên Discord",
"error.page.version": "Phiên bản: {{version}}",
"error.dev.rootNotFound":
"Không tìm thấy phần tử gốc. Bạn đã quên thêm nó vào index.html của mình? Hoặc có thể thuộc tính id bị sai chính tả?",
"error.serverSync.connectFailed": "Không thể kết nối với máy chủ. Có máy chủ nào đang chạy ở `{{url}}` không?",
"error.serverSDK.noServerAvailable": "Không có máy chủ nào",
"error.serverSDK.serverNotAvailable": "Máy chủ không có sẵn",
"error.childStore.persistedCacheCreateFailed": "Không tạo được bộ nhớ đệm bền vững",
"error.childStore.persistedProjectMetadataCreateFailed": "Không thể tạo siêu dữ liệu dự án bền vững",
"error.childStore.persistedProjectIconCreateFailed": "Không thể tạo biểu tượng dự án bền vững",
"error.childStore.storeCreateFailed": "Không tạo được kho lưu trữ",
"directory.error.invalidUrl": "Thư mục không hợp lệ trong URL.",
"error.chain.unknown": "Lỗi không xác định",
"error.server.invalidConfiguration": "Cấu hình không hợp lệ",
"error.chain.causedBy": "Gây ra bởi:",
"error.chain.apiError": "Lỗi API",
"error.chain.status": "Trạng thái: {{status}}",
"error.chain.retryable": "Có thể thử lại: {{retryable}}",
"error.chain.responseBody": "Nội dung phản hồi:\n{{body}}",
"error.chain.didYouMean": "Có phải ý bạn là: {{suggestions}}",
"error.chain.modelNotFound": "Không tìm thấy mô hình: {{provider}}/{{model}}",
"error.chain.checkConfig": "Kiểm tra tên nhà cung cấp/mô hình cấu hình (opencode.json) của bạn",
"error.chain.mcpFailed": 'Máy chủ MCP "{{name}}" gặp lỗi. Lưu ý: OpenCode chưa hỗ trợ xác thực MCP.',
"error.chain.providerAuthFailed": "Không xác thực được nhà cung cấp ({{provider}}): {{message}}",
"error.chain.providerInitFailed":
'Không khởi tạo được nhà cung cấp "{{provider}}". Kiểm tra thông tin xác thực và cấu hình.',
"error.chain.configJsonInvalid": "Tệp cấu hình tại {{path}} không phải là JSON(C) hợp lệ",
"error.chain.configJsonInvalidWithMessage": "Tệp cấu hình tại {{path}} không phải là JSON(C) hợp lệ: {{message}}",
"error.chain.configDirectoryTypo":
'Thư mục "{{dir}}" trong {{path}} không hợp lệ. Đổi tên thư mục thành "{{suggestion}}" hoặc xóa nó. Đây là một lỗi đánh máy phổ biến.',
"error.chain.configFrontmatterError": "Không thể phân tích cú pháp frontmatter trong {{path}}:\n{{message}}",
"error.chain.configInvalid": "Tệp cấu hình tại {{path}} không hợp lệ",
"error.chain.configInvalidWithMessage": "Tệp cấu hình tại {{path}} không hợp lệ: {{message}}",
"notification.permission.title": "Cần có sự cho phép",
"notification.permission.description": "{{sessionTitle}} trong {{projectName}} cần có sự cho phép",
"notification.question.title": "Câu hỏi",
"notification.question.description": "{{sessionTitle}} trong {{projectName}} có câu hỏi",
"notification.action.goToSession": "Đi đến phiên",
"notification.session.responseReady.title": "Đã sẵn sàng phản hồi",
"notification.session.error.title": "Lỗi phiên",
"notification.session.error.fallbackDescription": "Đã xảy ra lỗi",
"home.recentProjects": "dự án gần đây",
"home.empty.title": "Không có dự án gần đây",
"home.empty.description": "Bắt đầu bằng cách mở một dự án cục bộ",
"home.title": "Trang chủ",
"home.projects": "Dự án",
"home.project.add": "Thêm dự án",
"home.recentlyClosed": "Đã đóng gần đây",
"home.server.collapse": "Thu gọn các dự án máy chủ",
"home.server.expand": "Mở rộng dự án máy chủ",
"home.sessions.search.placeholder": "Tìm kiếm phiên",
"home.sessions.search.placeholder.scoped": "Tìm kiếm phiên trong {{scope}}",
"home.sessions.search.sessions": "Phiên",
"home.sessions.search.noResults": "Không tìm thấy phiên nào cho {{query}}",
"home.sessions.empty": "Chưa có gì ở đây",
"home.sessions.empty.description": "Tạo một phiên để bắt đầu",
"home.sessions.group.today": "Hôm nay",
"home.sessions.group.yesterday": "Hôm qua",
"home.sessions.group.older": "Cũ hơn",
"home.providerTip": "Kết nối với hơn 75 nhà cung cấp để sử dụng các mô hình khác, bao gồm Claude, GPT, Gemini, v.v.",
"session.tab.session": "Phiên",
"session.tab.review": "Xem lại",
"session.tab.context": "Ngữ cảnh",
"session.tab.unknown": "Phiên không xác định",
"session.panel.reviewAndFiles": "Xem lại và tệp",
"session.error.notFound": "Không thể tìm thấy phiên này",
"session.error.notFound.description": "Tab này trỏ đến một phiên không còn tồn tại trên máy chủ này.",
"session.error.notFound.closeTab": "Đóng tab",
"session.error.serverConnection": "Không thể kết nối với máy chủ này",
"session.review.filesChanged": "Số tệp đã thay đổi: {{count}}",
"session.review.change.one": "Thay đổi",
"session.review.change.other": "Thay đổi",
"session.review.loadingChanges": "Đang tải các thay đổi...",
"session.review.empty": "Chưa có thay đổi nào trong phiên này",
"session.review.noVcs": "Không phát hiện hệ thống quản lý phiên bản Git nên không thể hiển thị thay đổi",
"session.review.noVcs.createGit.title": "Tạo kho lưu trữ Git",
"session.review.noVcs.createGit.description": "Theo dõi, xem xét và hoàn tác các thay đổi trong dự án này",
"session.review.noVcs.createGit.actionLoading": "Đang tạo kho lưu trữ Git...",
"session.review.noVcs.createGit.action": "Tạo kho lưu trữ Git",
"session.review.noSnapshot":
"Theo dõi ảnh chụp nhanh bị tắt trong cấu hình, do đó các thay đổi về phiên không khả dụng",
"session.review.noChanges": "Không có thay đổi",
"session.review.noUncommittedChanges": "Chưa có thay đổi nào chưa commit",
"session.review.noBranchChanges": "Chưa có thay đổi nhánh",
"session.files.selectToOpen": "Chọn một tệp để mở",
"session.files.all": "Tất cả tệp",
"session.files.empty": "Không có tệp",
"session.files.binaryContent": "Tệp nhị phân (không thể hiển thị nội dung)",
"session.messages.renderEarlier": "Hiển thị tin nhắn trước đó",
"session.messages.loadingEarlier": "Đang tải tin nhắn trước đó...",
"session.messages.loadEarlier": "Tải tin nhắn trước đó",
"session.messages.loading": "Đang tải tin nhắn...",
"session.messages.jumpToLatest": "Chuyển đến mới nhất",
"session.context.addToContext": "Thêm {{selection}} vào ngữ cảnh",
"session.todo.title": "việc cần làm",
"session.todo.collapse": "Thu gọn",
"session.todo.expand": "Mở rộng",
"session.todo.progress": "{{done}} trong số {{total}} việc cần làm đã hoàn thành",
"session.question.progress": "{{current}} trong số {{total}} câu hỏi",
"session.question.minimize": "Giảm thiểu câu hỏi",
"session.question.restore": "Khôi phục câu hỏi",
"session.question.pending.one": "{{count}} câu hỏi đang chờ xử lý",
"session.question.pending.other": "{{count}} câu hỏi đang chờ xử lý",
"session.followupDock.summary.one": "{{count}} tin nhắn đang chờ",
"session.followupDock.summary.other": "{{count}} tin nhắn đang chờ",
"session.followupDock.sendNow": "Gửi ngay bây giờ",
"session.followupDock.edit": "Chỉnh sửa",
"session.followupDock.collapse": "Thu gọn tin nhắn đang chờ",
"session.followupDock.expand": "Mở rộng tin nhắn đang chờ",
"session.revertDock.summary.one": "{{count}} tin nhắn đã hoàn tác",
"session.revertDock.summary.other": "{{count}} tin nhắn đã hoàn tác",
"session.revertDock.collapse": "Thu gọn tin nhắn đã hoàn tác",
"session.revertDock.expand": "Mở rộng tin nhắn đã hoàn tác",
"session.revertDock.restore": "Khôi phục tin nhắn",
"session.new.title": "Xây dựng bất cứ thứ gì",
"session.new.project.new": "Dự án mới",
"session.new.project.search": "Tìm kiếm dự án",
"session.new.project.add": "Thêm dự án",
"session.new.worktree.main": "Nhánh chính",
"session.new.worktree.mainWithBranch": "Nhánh chính ({{branch}})",
"session.new.worktree.create": "Tạo mới worktree",
"session.new.workspace.runIn": "Chạy phiên trong",
"session.new.workspace.triggerLocal": "Cục bộ",
"session.new.workspace.local": "Kho lưu trữ cục bộ",
"session.new.workspace.existing": "Không gian làm việc…",
"session.new.git.none": "Không dùng Git",
"session.new.lastModified": "Sửa đổi lần cuối",
"session.header.search.placeholder": "Tìm kiếm {{project}}",
"session.header.searchFiles": "Tìm kiếm tệp",
"session.header.openIn": "Mở trong",
"session.header.open.action": "Mở {{app}}",
"session.header.open.ariaLabel": "Mở trong {{app}}",
"session.header.open.menu": "Tùy chọn mở",
"session.header.open.copyPath": "Sao chép đường dẫn",
"session.header.open.finder": "Finder",
"session.header.open.fileExplorer": "File Explorer",
"session.header.open.fileManager": "Trình quản lý tệp",
"session.header.reveal.finder": "Hiển thị trong Finder",
"session.header.reveal.fileExplorer": "Hiển thị trong File Explorer",
"session.header.reveal.containingFolder": "Mở thư mục chứa",
"session.header.open.app.vscode": "VS Code",
"session.header.open.app.cursor": "Cursor",
"session.header.open.app.zed": "Zed",
"session.header.open.app.textmate": "TextMate",
"session.header.open.app.antigravity": "Antigravity",
"session.header.open.app.terminal": "Terminal",
"session.header.open.app.iterm2": "iTerm2",
"session.header.open.app.ghostty": "Ghostty",
"session.header.open.app.warp": "Warp",
"session.header.open.app.xcode": "Xcode",
"session.header.open.app.androidStudio": "Android Studio",
"session.header.open.app.powershell": "PowerShell",
"session.header.open.app.sublimeText": "Sublime Text",
"status.popover.trigger": "Trạng thái",
"status.popover.ariaLabel": "Cấu hình máy chủ",
"status.popover.tab.servers": "Máy chủ",
"status.popover.tab.mcp": "MCP",
"status.popover.tab.lsp": "LSP",
"status.popover.tab.plugins": "Plugin",
"status.popover.action.manageServers": "Quản lý máy chủ",
"session.share.popover.title": "Xuất bản trên web",
"session.share.popover.description.shared":
"Phiên này được công khai trên web. Nó có thể truy cập được bởi bất kỳ ai có liên kết.",
"session.share.popover.description.unshared":
"Chia sẻ phiên công khai trên web. Nó sẽ có thể truy cập được bởi bất kỳ ai có liên kết.",
"session.share.action.share": "Chia sẻ",
"session.share.action.publish": "Xuất bản",
"session.share.action.publishing": "Đang xuất bản...",
"session.share.action.unpublish": "Hủy xuất bản",
"session.share.action.unpublishing": "Đang hủy xuất bản...",
"session.share.action.view": "Xem",
"session.share.copy.copied": "Đã sao chép",
"session.share.copy.copyLink": "Sao chép liên kết",
"lsp.tooltip.none": "Không có máy chủ LSP",
"lsp.label.connected": "{{count}} LSP",
"prompt.loading": "Đang tải lời nhắc...",
"terminal.loading": "Đang tải terminal...",
"terminal.title": "Terminal",
"terminal.title.numbered": "Terminal {{number}}",
"terminal.close": "Đóng terminal",
"terminal.connectionLost.title": "Mất kết nối",
"terminal.connectionLost.abnormalClose": "WebSocket đóng bất thường: {{code}}",
"terminal.connectionLost.description":
"Kết nối terminal bị gián đoạn. Điều này có thể xảy ra khi máy chủ khởi động lại.",
"terminal.connectTicket.csrfError":
"Vé kết nối PTY bị từ chối do kiểm tra nguồn gốc hoặc CSRF. Hãy kiểm tra cấu hình CORS của máy chủ.",
"terminal.connectTicket.statusError": "Vé kết nối PTY thất bại với trạng thái {{status}}",
"titlebar.update": "Cập nhật",
"titlebar.updateVersion": "Cập nhật {{version}}",
"common.closeTab": "Đóng tab",
"common.dismiss": "Bỏ qua",
"common.moreCountSuffix": " (+{{count}} thêm)",
"common.requestFailed": "Không thực hiện được yêu cầu",
"common.moreOptions": "Nhiều lựa chọn hơn",
"common.learnMore": "Tìm hiểu thêm",
"common.rename": "Đổi tên",
"common.reset": "Đặt lại",
"common.archive": "Lưu trữ",
"common.delete": "Xóa",
"common.close": "Đóng",
"common.edit": "Chỉnh sửa",
"common.loadMore": "Tải thêm",
"common.key.esc": "ESC",
"common.key.ctrl": "Ctrl",
"common.key.alt": "Alt",
"common.key.shift": "Shift",
"common.key.meta": "Meta",
"common.key.space": "Phím cách",
"common.key.backspace": "Backspace",
"common.key.enter": "Enter",
"common.key.tab": "Tab",
"common.key.delete": "Delete",
"common.key.home": "Home",
"common.key.end": "End",
"common.key.pageUp": "Page Up",
"common.key.pageDown": "Page Down",
"common.key.insert": "Insert",
"common.unknown": "không rõ",
"common.time.justNow": "Vừa rồi",
"common.time.minutesAgo.short": "{{count}} phút trước",
"common.time.hoursAgo.short": "{{count}} giờ trước",
"common.time.daysAgo.short": "{{count}} ngày trước",
"sidebar.menu.toggle": "Bật/tắt menu",
"sidebar.nav.projectsAndSessions": "Dự án và phiên",
"sidebar.settings": "Cài đặt",
"sidebar.help": "Trợ giúp",
"sidebar.workspaces.enable": "Bật không gian làm việc",
"sidebar.workspaces.disable": "Tắt không gian làm việc",
"sidebar.gettingStarted.title": "Bắt đầu",
"sidebar.gettingStarted.line1": "OpenCode bao gồm các mô hình miễn phí để bạn có thể bắt đầu ngay lập tức.",
"sidebar.gettingStarted.line2":
"Kết nối với bất kỳ nhà cung cấp nào để sử dụng các mô hình như Claude, GPT, Gemini, v.v.",
"sidebar.project.recentSessions": "Phiên gần đây",
"sidebar.project.viewAllSessions": "Xem tất cả các phiên",
"sidebar.project.clearNotifications": "Xóa thông báo",
"sidebar.empty.title": "Không có dự án nào mở",
"sidebar.empty.description": "Mở một dự án để bắt đầu",
"debugBar.ariaLabel": "Chẩn đoán hiệu suất phát triển",
"debugBar.na": "không có",
"debugBar.nav.label": "NAV",
"debugBar.nav.tip":
"Lần chuyển tuyến hoàn tất gần nhất có truy cập trang phiên, được đo từ lúc bộ định tuyến bắt đầu đến khung hình đầu tiên sau khi ổn định.",
"debugBar.fps.label": "FPS",
"debugBar.fps.tip": "Số khung hình mỗi giây trong 5 giây qua.",
"debugBar.frame.label": "FRAME",
"debugBar.frame.tip": "Thời gian tạo khung hình tệ nhất trong 5 giây vừa qua.",
"debugBar.jank.label": "JANK",
"debugBar.jank.tip": "Số khung hình mất hơn 32ms trong 5 giây qua.",
"debugBar.long.label": "LONG",
"debugBar.long.tip": "Thời gian bị chặn và số lượng nhiệm vụ dài trong 5 giây qua. Nhiệm vụ tối đa: {{max}}.",
"debugBar.delay.label": "DELAY",
"debugBar.delay.tip": "Độ trễ đầu vào được quan sát tồi tệ nhất trong 5 giây qua.",
"debugBar.inp.label": "INP",
"debugBar.inp.tip":
"Thời lượng tương tác gần đúng trong 5 giây qua. Đây giống như INP, không phải là Web Vitals chính thức INP.",
"debugBar.cls.label": "CLS",
"debugBar.cls.tip": "Sự thay đổi bố cục tích lũy cho thời gian tồn tại của ứng dụng hiện tại.",
"debugBar.mem.label": "MEM",
"debugBar.mem.tipUnavailable": "Bộ nhớ heap JS đã dùng so với giới hạn heap. Chỉ hỗ trợ Chromium.",
"debugBar.mem.tip": "Đã sử dụng JS heap so với giới hạn heap. {{used}} của {{limit}}.",
"app.name.desktop": "OpenCode Desktop",
"settings.section.desktop": "Desktop",
"settings.section.server": "Máy chủ",
"settings.tab.general": "Tổng quan",
"settings.tab.shortcuts": "Phím tắt",
"settings.desktop.section.wsl": "WSL",
"settings.desktop.wsl.title": "WSL tích hợp",
"settings.desktop.wsl.description": "Chạy máy chủ OpenCode bên trong WSL trên Windows.",
"settings.general.section.appearance": "Giao diện",
"settings.general.section.advanced": "Nâng cao",
"settings.general.section.notifications": "Thông báo hệ thống",
"settings.general.section.updates": "Cập nhật",
"settings.general.section.sounds": "Hiệu ứng âm thanh",
"settings.general.section.feed": "Nguồn cấp",
"settings.general.section.display": "Hiển thị",
"settings.general.row.language.title": "Ngôn ngữ",
"settings.general.row.language.description": "Thay đổi ngôn ngữ hiển thị cho OpenCode",
"settings.general.row.shell.title": "Shell terminal",
"settings.general.row.shell.description": "Shell được terminal và các công cụ của tác nhân sử dụng",
"settings.general.row.shell.autoDefault": "Tự động (Mặc định)",
"settings.general.row.shell.terminalOnly": "chỉ terminal",
"settings.general.row.appearance.title": "Giao diện",
"settings.general.row.appearance.description": "Tùy chỉnh giao diện của OpenCode trên thiết bị",
"settings.general.row.colorScheme.title": "Cách phối màu",
"settings.general.row.colorScheme.description": "Chọn xem OpenCode tuân theo hệ thống, chủ đề sáng hay tối",
"settings.general.row.theme.title": "Chủ đề",
"settings.general.row.theme.description": "Tùy chỉnh chủ đề của OpenCode.",
"settings.general.row.font.title": "Phông chữ mã",
"settings.general.row.font.description": "Tùy chỉnh phông chữ được sử dụng trong khối mã",
"settings.general.row.terminalFont.title": "Phông chữ terminal",
"settings.general.row.terminalFont.description": "Tùy chỉnh phông chữ được sử dụng trong terminal",
"settings.general.row.uiFont.title": "Phông chữ giao diện",
"settings.general.row.uiFont.description": "Tùy chỉnh phông chữ dùng trong toàn bộ giao diện",
"settings.general.row.followup.title": "Cách xử lý lời nhắc tiếp theo",
"settings.general.row.followup.description":
"Chọn để lời nhắc tiếp theo điều hướng phiên ngay lập tức hoặc chờ trong hàng đợi",
"settings.general.row.followup.option.queue": "Xếp hàng",
"settings.general.row.followup.option.steer": "Điều hướng",
"settings.general.row.showFileTree.title": "Cây tệp",
"settings.general.row.showFileTree.description": "Hiển thị bảng cây tệp trong phiên",
"settings.general.row.showNavigation.title": "Điều khiển điều hướng",
"settings.general.row.showNavigation.description":
"Hiển thị các nút quay lại và tiến lên trên thanh tiêu đề của màn hình",
"settings.general.row.showSearch.title": "Bảng lệnh",
"settings.general.row.showSearch.description": "Hiển thị nút bảng tìm kiếm và lệnh trong thanh tiêu đề",
"settings.general.row.showTerminal.title": "Terminal",
"settings.general.row.showTerminal.description": "Hiển thị nút terminal trên thanh tiêu đề của ứng dụng desktop",
"settings.general.row.showStatus.title": "Trạng thái máy chủ",
"settings.general.row.showStatus.description": "Hiển thị nút trạng thái máy chủ trên thanh tiêu đề",
"settings.general.row.mobileTitlebarBottom.title": "Điều hướng dưới cùng",
"settings.general.row.mobileTitlebarBottom.description":
"Đặt thanh tiêu đề và tab phiên ở cuối màn hình trên thiết bị di động",
"settings.general.row.showCustomAgents.title": "Hiển thị tác nhân",
"settings.general.row.showCustomAgents.description":
"Chuyển đổi giữa các tác nhân trong trình soạn thảo. Khi ẩn, tác nhân mặc định là Build.",
"settings.general.row.reasoningSummaries.title": "Hiển thị tóm tắt lý luận",
"settings.general.row.reasoningSummaries.description": "Hiển thị tóm tắt lý luận mô hình trong dòng thời gian",
"settings.general.row.shellToolPartsExpanded.title": "Mở rộng các phần của công cụ shell",
"settings.general.row.shellToolPartsExpanded.description":
"Hiển thị các phần công cụ shell được mở rộng theo mặc định trong dòng thời gian",
"settings.general.row.editToolPartsExpanded.title": "Mở rộng các phần công cụ chỉnh sửa",
"settings.general.row.editToolPartsExpanded.description":
"Hiển thị các phần công cụ chỉnh sửa, viết và vá lỗi được mở rộng theo mặc định trong dòng thời gian",
"settings.general.row.newInterface.title": "Bố cục mới",
"settings.general.row.newInterface.badge": "Mới",
"settings.general.row.newInterface.description":
"Sử dụng các tab mới và bố cục trang chủ. Chuyển đổi giữa các bố cục trong một thời gian giới hạn.",
"settings.general.row.newInterfaceNotice.title": "Bạn hiện đang sử dụng bố cục mới",
"settings.general.row.newInterfaceNotice.description": "Bố cục trước đó không còn khả dụng",
"settings.general.row.newInterfaceNotice.dismiss": "Bỏ qua",
"settings.general.row.pinchZoom.title": "Chụm để thu phóng",
"settings.general.row.pinchZoom.description": "Cho phép chụm bàn di chuột và cử chỉ cuộn Ctrl để thu phóng",
"settings.general.row.wayland.title": "Sử dụng Wayland gốc",
"settings.general.row.wayland.description": "Tắt tính năng dự phòng X11 trên Wayland. Yêu cầu khởi động lại.",
"settings.general.row.wayland.tooltip":
"Trên Linux với màn hình có tốc độ làm mới hỗn hợp, Wayland gốc có thể ổn định hơn.",
"settings.general.row.releaseNotes.title": "Ghi chú phát hành",
"settings.general.row.releaseNotes.description": "Hiển thị cửa sổ bật lên Có gì mới sau khi cập nhật",
"settings.updates.row.startup.title": "Kiểm tra cập nhật khi khởi động",
"settings.updates.row.startup.description": "Tự động kiểm tra các bản cập nhật khi OpenCode khởi chạy",
"settings.updates.row.check.title": "Kiểm tra các bản cập nhật",
"settings.updates.row.check.description": "Kiểm tra thủ công các bản cập nhật và cài đặt nếu có",
"settings.updates.action.checkNow": "Kiểm tra ngay",
"settings.updates.action.checking": "Đang kiểm tra...",
"settings.updates.action.downloading": "Đang tải xuống...",
"settings.updates.action.installing": "Đang cài đặt...",
"settings.updates.toast.latest.title": "Đã cập nhật",
"settings.updates.toast.latest.description": "Bạn đang chạy phiên bản mới nhất của OpenCode.",
"sound.option.none": "Không có",
"sound.option.alert01": "Alert 01",
"sound.option.alert02": "Alert 02",
"sound.option.alert03": "Alert 03",
"sound.option.alert04": "Alert 04",
"sound.option.alert05": "Alert 05",
"sound.option.alert06": "Alert 06",
"sound.option.alert07": "Alert 07",
"sound.option.alert08": "Alert 08",
"sound.option.alert09": "Alert 09",
"sound.option.alert10": "Alert 10",
"sound.option.bipbop01": "Bip-bop 01",
"sound.option.bipbop02": "Bip-bop 02",
"sound.option.bipbop03": "Bip-bop 03",
"sound.option.bipbop04": "Bip-bop 04",
"sound.option.bipbop05": "Bip-bop 05",
"sound.option.bipbop06": "Bip-bop 06",
"sound.option.bipbop07": "Bip-bop 07",
"sound.option.bipbop08": "Bip-bop 08",
"sound.option.bipbop09": "Bip-bop 09",
"sound.option.bipbop10": "Bip-bop 10",
"sound.option.staplebops01": "Staplebops 01",
"sound.option.staplebops02": "Staplebops 02",
"sound.option.staplebops03": "Staplebops 03",
"sound.option.staplebops04": "Staplebops 04",
"sound.option.staplebops05": "Staplebops 05",
"sound.option.staplebops06": "Staplebops 06",
"sound.option.staplebops07": "Staplebops 07",
"sound.option.nope01": "Nope 01",
"sound.option.nope02": "Nope 02",
"sound.option.nope03": "Nope 03",
"sound.option.nope04": "Nope 04",
"sound.option.nope05": "Nope 05",
"sound.option.nope06": "Nope 06",
"sound.option.nope07": "Nope 07",
"sound.option.nope08": "Nope 08",
"sound.option.nope09": "Nope 09",
"sound.option.nope10": "Nope 10",
"sound.option.nope11": "Nope 11",
"sound.option.nope12": "Nope 12",
"sound.option.yup01": "Yup 01",
"sound.option.yup02": "Yup 02",
"sound.option.yup03": "Yup 03",
"sound.option.yup04": "Yup 04",
"sound.option.yup05": "Yup 05",
"sound.option.yup06": "Yup 06",
"settings.general.notifications.agent.title": "Tác nhân",
"settings.general.notifications.agent.description":
"Hiển thị thông báo hệ thống khi tác nhân hoàn thành hoặc cần chú ý",
"settings.general.notifications.permissions.title": "Quyền",
"settings.general.notifications.permissions.description": "Hiển thị thông báo hệ thống khi cần có sự cho phép",
"settings.general.notifications.errors.title": "Lỗi",
"settings.general.notifications.errors.description": "Hiển thị thông báo hệ thống khi xảy ra lỗi",
"settings.general.sounds.agent.title": "Tác nhân",
"settings.general.sounds.agent.description": "Phát âm thanh khi tác nhân hoàn thành hoặc cần chú ý",
"settings.general.sounds.permissions.title": "Quyền",
"settings.general.sounds.permissions.description": "Phát âm thanh khi cần có sự cho phép",
"settings.general.sounds.errors.title": "Lỗi",
"settings.general.sounds.errors.description": "Phát âm thanh khi xảy ra lỗi",
"settings.shortcuts.title": "Phím tắt",
"settings.shortcuts.reset.button": "Đặt lại về mặc định",
"settings.shortcuts.reset.toast.title": "Đặt lại phím tắt",
"settings.shortcuts.reset.toast.description": "Phím tắt đã được đặt lại về mặc định.",
"settings.shortcuts.conflict.title": "Phím tắt đã được sử dụng",
"settings.shortcuts.conflict.description": "{{keybind}} đã được gán cho {{titles}}.",
"settings.shortcuts.unassigned": "Chưa được chỉ định",
"settings.shortcuts.pressKeys": "Nhấn phím",
"settings.shortcuts.search.placeholder": "Tìm kiếm phím tắt",
"settings.shortcuts.search.empty": "Không tìm thấy phím tắt",
"settings.shortcuts.group.general": "Tổng quan",
"settings.shortcuts.group.session": "Phiên",
"settings.shortcuts.group.navigation": "Điều hướng",
"settings.shortcuts.group.modelAndAgent": "Mô hình và tác nhân",
"settings.shortcuts.group.terminal": "Terminal",
"settings.shortcuts.group.prompt": "Lời nhắc",
"settings.providers.title": "Nhà cung cấp",
"settings.providers.description": "Cài đặt nhà cung cấp sẽ được cấu hình ở đây.",
"settings.providers.section.connected": "Nhà cung cấp được kết nối",
"settings.providers.connected.empty": "Không có nhà cung cấp được kết nối",
"settings.providers.connected.environmentDescription": "Đã kết nối từ các biến môi trường của bạn",
"settings.providers.section.popular": "Nhà cung cấp phổ biến",
"settings.providers.custom.description": "Thêm nhà cung cấp tương thích OpenAI bằng URL cơ sở.",
"settings.providers.tag.environment": "Môi trường",
"settings.providers.tag.config": "Cấu hình",
"settings.providers.tag.custom": "Tùy chỉnh",
"settings.providers.tag.other": "Khác",
"settings.models.title": "Mô hình",
"settings.models.description": "Cài đặt mô hình sẽ được cấu hình ở đây.",
"settings.agents.title": "Tác nhân",
"settings.agents.description": "Cài đặt tác nhân sẽ được cấu hình ở đây.",
"settings.commands.title": "Lệnh",
"settings.commands.description": "Cài đặt lệnh sẽ được cấu hình ở đây.",
"settings.mcp.title": "MCP",
"settings.mcp.description": "Có thể cấu hình cài đặt MCP tại đây.",
"settings.permissions.title": "Quyền",
"settings.permissions.description": "Kiểm soát những công cụ mà máy chủ có thể sử dụng theo mặc định.",
"settings.permissions.section.tools": "Công cụ",
"settings.permissions.toast.updateFailed.title": "Không cập nhật được quyền",
"settings.permissions.action.allow": "Cho phép",
"settings.permissions.action.ask": "Hỏi",
"settings.permissions.action.deny": "Từ chối",
"settings.permissions.tool.read.title": "Đọc",
"settings.permissions.tool.read.description": "Đọc một tệp (khớp với đường dẫn tệp)",
"settings.permissions.tool.edit.title": "Chỉnh sửa",
"settings.permissions.tool.edit.description": "Sửa đổi tệp, bao gồm chỉnh sửa, ghi và vá lỗi",
"settings.permissions.tool.glob.title": "Glob",
"settings.permissions.tool.glob.description": "Khớp tệp bằng mẫu glob",
"settings.permissions.tool.grep.title": "Grep",
"settings.permissions.tool.grep.description": "Tìm kiếm nội dung tệp bằng cách sử dụng biểu thức thông thường",
"settings.permissions.tool.list.title": "Danh sách",
"settings.permissions.tool.list.description": "Liệt kê các tệp trong một thư mục",
"settings.permissions.tool.bash.title": "Bash",
"settings.permissions.tool.bash.description": "Chạy lệnh shell",
"settings.permissions.tool.task.title": "Nhiệm vụ",
"settings.permissions.tool.task.description": "Khởi chạy tác nhân phụ",
"settings.permissions.tool.skill.title": "Kỹ năng",
"settings.permissions.tool.skill.description": "Tải một kỹ năng theo tên",
"settings.permissions.tool.lsp.title": "LSP",
"settings.permissions.tool.lsp.description": "Chạy truy vấn máy chủ ngôn ngữ",
"settings.permissions.tool.todowrite.title": "Ghi việc cần làm",
"settings.permissions.tool.todowrite.description": "Cập nhật danh sách việc cần làm",
"settings.permissions.tool.webfetch.title": "Tìm nạp web",
"settings.permissions.tool.webfetch.description": "Tìm nạp nội dung từ URL",
"settings.permissions.tool.websearch.title": "Tìm kiếm trên web",
"settings.permissions.tool.websearch.description": "Tìm kiếm trên web",
"settings.permissions.tool.external_directory.title": "Thư mục bên ngoài",
"settings.permissions.tool.external_directory.description": "Truy cập các tệp bên ngoài thư mục dự án",
"settings.permissions.tool.doom_loop.title": "Vòng lặp vô hạn",
"settings.permissions.tool.doom_loop.description":
"Phát hiện các lệnh gọi công cụ lặp lại với đầu vào giống hệt nhau",
"session.delete.failed.title": "Không thể xóa phiên",
"session.delete.title": "Xóa phiên",
"session.delete.confirm": 'Xóa phiên "{{name}}"?',
"session.delete.button": "Xóa phiên",
"workspace.new": "Không gian làm việc mới",
"workspace.type.local": "cục bộ",
"workspace.type.sandbox": "sandbox",
"workspace.create.failed.title": "Không tạo được không gian làm việc",
"workspace.delete.failed.title": "Không xóa được không gian làm việc",
"workspace.resetting.title": "Đặt lại không gian làm việc",
"workspace.resetting.description": "Việc này có thể mất một phút.",
"workspace.reset.failed.title": "Không thể đặt lại không gian làm việc",
"workspace.reset.success.title": "Đặt lại không gian làm việc",
"workspace.reset.success.description": "Không gian làm việc bây giờ khớp với nhánh mặc định.",
"workspace.error.stillPreparing": "Không gian làm việc vẫn đang chuẩn bị",
"workspace.status.checking": "Đang kiểm tra các thay đổi chưa được hợp nhất...",
"workspace.status.error": "Không thể xác minh trạng thái git.",
"workspace.status.clean": "Không phát hiện thấy thay đổi chưa hợp nhất nào.",
"workspace.status.dirty": "Đã phát hiện thấy các thay đổi chưa được hợp nhất trong không gian làm việc này.",
"workspace.delete.title": "Xóa không gian làm việc",
"workspace.delete.confirm": 'Xóa không gian làm việc "{{name}}"?',
"workspace.delete.button": "Xóa không gian làm việc",
"workspace.reset.title": "Đặt lại không gian làm việc",
"workspace.reset.confirm": 'Đặt lại không gian làm việc "{{name}}"?',
"workspace.reset.button": "Đặt lại không gian làm việc",
"workspace.reset.archived.none": "Không có phiên hoạt động nào sẽ được lưu trữ.",
"workspace.reset.archived.one": "1 phiên sẽ được lưu trữ.",
"workspace.reset.archived.many": "{{count}} phiên sẽ được lưu trữ.",
"workspace.reset.note": "Điều này sẽ thiết lập lại không gian làm việc để phù hợp với nhánh mặc định.",
}
+221 -94
View File
@@ -3,6 +3,104 @@ import { dict as en } from "./en"
type Keys = keyof typeof en
export const dict = {
"desktop.menu.app": "OpenCode",
"desktop.menu.file": "文件",
"desktop.menu.edit": "编辑",
"desktop.menu.view": "视图",
"desktop.menu.go": "转到",
"desktop.menu.window": "窗口",
"desktop.menu.help": "帮助",
"desktop.menu.checkForUpdates": "检查更新...",
"desktop.menu.settings": "设置",
"desktop.menu.reloadWebview": "重新加载 Webview",
"desktop.menu.restart": "重启",
"desktop.menu.exportLogs": "导出日志...",
"desktop.menu.newSession": "新建会话",
"desktop.menu.openProject": "打开项目...",
"desktop.menu.newWindow": "新建窗口",
"desktop.menu.closeWindow": "关闭窗口",
"desktop.menu.undo": "撤销",
"desktop.menu.redo": "重做",
"desktop.menu.cut": "剪切",
"desktop.menu.copy": "复制",
"desktop.menu.paste": "粘贴",
"desktop.menu.delete": "删除",
"desktop.menu.selectAll": "全选",
"desktop.menu.toggleSidebar": "切换侧边栏",
"desktop.menu.toggleTerminal": "切换终端",
"desktop.menu.toggleFileTree": "切换文件树",
"desktop.menu.reload": "重新加载",
"desktop.menu.toggleDeveloperTools": "切换开发人员工具",
"desktop.menu.actualSize": "实际大小",
"desktop.menu.zoomIn": "放大",
"desktop.menu.zoomOut": "缩小",
"desktop.menu.toggleFullScreen": "切换全屏显示",
"desktop.menu.back": "后退",
"desktop.menu.forward": "前进",
"desktop.menu.previousSession": "上一个会话",
"desktop.menu.nextSession": "下一个会话",
"desktop.menu.previousProject": "上一个项目",
"desktop.menu.nextProject": "下一个项目",
"desktop.menu.minimize": "最小化",
"desktop.menu.maximize": "最大化",
"desktop.menu.documentation": "OpenCode 文档",
"desktop.menu.supportForum": "支持论坛",
"desktop.menu.shareFeedback": "提供反馈",
"desktop.menu.reportBug": "报告错误",
"desktop.menu.ariaLabel": "OpenCode 菜单",
"desktop.updater.dialog.checkFailed.message": "检查更新失败。",
"desktop.updater.dialog.checkFailed.title": "更新错误",
"desktop.updater.dialog.upToDate.message": "你使用的是最新版本。",
"desktop.updater.dialog.upToDate.title": "无可用更新",
"desktop.updater.dialog.ready.message": "已下载更新 {{version}}。是否立即重启?",
"desktop.updater.dialog.ready.title": "更新已就绪",
"desktop.updater.dialog.restart": "重启",
"desktop.updater.dialog.later": "稍后",
"desktop.recovery.action.relaunch": "重新启动",
"desktop.recovery.action.exportLogs": "导出日志",
"desktop.recovery.action.keepWaiting": "继续等待",
"desktop.recovery.action.quit": "退出",
"desktop.recovery.loadFailed": "OpenCode 加载失败",
"desktop.recovery.terminated": "OpenCode 窗口意外终止",
"desktop.recovery.unresponsive": "OpenCode 未响应",
"desktop.recovery.unresponsive.detail": "你可以重新启动应用、打开日志或继续等待。",
"desktop.recovery.loadFailed.detail": "窗口:{{window}}\nURL{{url}}\n错误:{{code}} {{description}}",
"desktop.recovery.terminated.detail": "窗口:{{window}}\n原因:{{reason}}\n代码:{{code}}",
"desktop.recovery.unknown": "<未知>",
"desktop.dialog.chooseFolder": "选择文件夹",
"desktop.dialog.chooseFile": "选择文件",
"desktop.dialog.saveFile": "保存文件",
"desktop.dialog.files": "文件",
"desktop.server.local": "本地服务器",
"desktop.wsl.error.windowsOnly": "WSL 仅在 Windows 上可用",
"desktop.wsl.error.unavailable": "WSL 不可用",
"desktop.wsl.error.listInstalled": "无法列出已安装的 WSL 发行版",
"desktop.wsl.error.listOnline": "无法列出在线 WSL 发行版",
"desktop.wsl.error.executeDistro": "无法在发行版中执行命令",
"desktop.wsl.error.installWsl": "WSL 安装失败",
"desktop.wsl.error.installDistro": "无法安装发行版:{{distro}}",
"desktop.wsl.error.installOpencode": "OpenCode 安装失败",
"desktop.wsl.error.alreadyAdded": "已添加 {{distro}}",
"desktop.wsl.error.opencodeMissing": "此发行版中未安装 opencode",
"desktop.wsl.error.opencodeCannotRun": "已安装 opencode,但无法运行",
"desktop.wsl.error.opencodeNotInstalled": "{{distro}} 中未安装 OpenCode",
"desktop.wsl.error.updateVersion":
"OpenCode 更新已完成,但 {{distro}} 仍报告版本 {{installed}};预期版本为 {{expected}}",
"desktop.wsl.error.noVersion": "无版本信息",
"desktop.wsl.error.serverExited": "WSL 服务器启动后退出(code={{code}} signal={{signal}}",
"desktop.wsl.error.serverExitedBeforeHealthy":
"WSL 服务器在进入正常状态前退出(code={{code}} signal={{signal}}{{output}}",
"desktop.wsl.error.healthTimeout": "{{distro}} 的 Sidecar 运行状况检查在 {{timeout}}ms 后超时",
"desktop.wsl.error.commandTimeout": "{{command}} {{args}} 在 {{timeout}}ms 后超时",
"desktop.wsl.error.failedPort": "无法获取端口",
"desktop.picker.error.notSelected": "文件选择器未选择文件",
"desktop.picker.error.sizeLimit": "所选附件超过 {{limit}} MB 的限制",
"command.category.suggested": "建议",
"command.category.view": "视图",
"command.category.project": "项目",
@@ -20,6 +118,7 @@ export const dict = {
"command.category.permissions": "权限",
"command.category.workspace": "工作区",
"command.category.settings": "设置",
"command.logs.export": "导出日志",
"theme.scheme.system": "系统",
"theme.scheme.light": "浅色",
@@ -86,8 +185,8 @@ export const dict = {
"command.model.choose": "选择模型",
"command.model.choose.description": "选择不同的模型",
"command.mcp.toggle": "切换 MCPs",
"command.mcp.toggle.description": "切换 MCPs",
"command.mcp.toggle": "启用或禁用 MCP 服务器",
"command.mcp.toggle.description": "启用或禁用 MCP 服务器",
"command.agent.cycle": "切换智能体",
"command.agent.cycle.description": "切换到下一个智能体",
@@ -110,9 +209,9 @@ export const dict = {
"command.session.undo.description": "撤销上一条消息",
"command.session.redo": "重做",
"command.session.redo.description": "重做上一条撤销的消息",
"command.session.compact": "精简会话",
"command.session.compact": "压缩会话",
"command.session.compact.description": "总结会话以减少上下文大小",
"command.session.fork": "从消息分叉",
"command.session.fork": "从消息创建新会话",
"command.session.fork.description": "从之前的消息创建新会话",
"command.session.share": "分享会话",
"command.session.share.description": "分享此会话并将链接复制到剪贴板",
@@ -129,16 +228,17 @@ export const dict = {
"dialog.provider.empty": "未找到提供商",
"dialog.provider.group.popular": "热门",
"dialog.provider.group.other": "其他",
"dialog.provider.custom.label": "自定义 OpenAI 兼容提供商",
"dialog.provider.tag.recommended": "推荐",
"dialog.provider.opencode.note": "使用 OpenCode Zen 或 API 密钥连接",
"dialog.provider.opencode.note": "精选模型,包括 Claude、GPT、Gemini 等",
"dialog.provider.opencode.tagline": "可靠的优化模型",
"dialog.provider.opencodeGo.tagline": "适合所有人的低成本订阅",
"dialog.provider.anthropic.note": "使用 Claude Pro/Max 或 API 密钥连接",
"dialog.provider.copilot.note": "使用 Copilot API 密钥连接",
"dialog.provider.openai.note": "使用 ChatGPT Pro/Plus 或 API 密钥连接",
"dialog.provider.google.note": "使用 Google 账号或 API 密钥连接",
"dialog.provider.openrouter.note": "使用 OpenRouter 账号或 API 密钥连接",
"dialog.provider.vercel.note": "使用 Vercel 账号或 API 密钥连接",
"dialog.provider.anthropic.note": "直接使用 Claude 模型,包括 Pro 和 Max",
"dialog.provider.copilot.note": "通过 GitHub Copilot 使用辅助编程 AI 模型",
"dialog.provider.openai.note": "适合快速处理各类 AI 任务的 GPT 模型",
"dialog.provider.google.note": "可快速生成结构化回复的 Gemini 模型",
"dialog.provider.openrouter.note": "通过一个提供商使用所有受支持的模型",
"dialog.provider.vercel.note": "通过智能路由统一使用 AI 模型",
"dialog.model.select.title": "选择模型",
"dialog.model.search.placeholder": "搜索模型",
@@ -148,6 +248,7 @@ export const dict = {
"dialog.model.manage.provider.toggle": "切换所有 {{provider}} 模型",
"dialog.model.unpaid.freeModels.title": "OpenCode 提供的免费模型",
"dialog.model.unpaid.addMore.title": "从热门提供商添加更多模型",
"dialog.model.unpaid.viewMoreProviders": "查看另外 70 多个提供商",
"dialog.provider.viewAll": "查看更多提供商",
@@ -155,11 +256,13 @@ export const dict = {
"provider.connect.title.anthropicProMax": "使用 Claude Pro/Max 登录",
"provider.connect.selectMethod": "选择 {{provider}} 的登录方式。",
"provider.connect.method.apiKey": "API 密钥",
"provider.connect.method.browser": "浏览器",
"provider.connect.method.headless": "无头模式",
"provider.connect.status.inProgress": "正在授权...",
"provider.connect.status.waiting": "等待授权...",
"provider.connect.status.failed": "授权失败:{{error}}",
"provider.connect.apiKey.description":
"输入你的 {{provider}} API 密钥以连接户,并在 OpenCode 中使用 {{provider}} 模型。",
"输入你的 {{provider}} API 密钥以连接户,并在 OpenCode 中使用 {{provider}} 模型。",
"provider.connect.apiKey.label": "{{provider}} API 密钥",
"provider.connect.apiKey.placeholder": "API 密钥",
"provider.connect.apiKey.required": "API 密钥为必填项",
@@ -170,19 +273,20 @@ export const dict = {
"provider.connect.opencodeZen.visit.suffix": " 获取你的 API 密钥。",
"provider.connect.oauth.code.visit.prefix": "访问 ",
"provider.connect.oauth.code.visit.link": "此链接",
"provider.connect.oauth.code.visit.suffix": " 获取授权码,以连接你的户并在 OpenCode 中使用 {{provider}} 模型。",
"provider.connect.oauth.code.visit.suffix": " 获取授权码,以连接你的户并在 OpenCode 中使用 {{provider}} 模型。",
"provider.connect.oauth.code.label": "{{method}} 授权码",
"provider.connect.oauth.code.placeholder": "授权码",
"provider.connect.oauth.code.required": "授权码为必填项",
"provider.connect.oauth.code.invalid": "授权码无效",
"provider.connect.oauth.auto.visit.prefix": "访问 ",
"provider.connect.oauth.auto.visit.link": "此链接",
"provider.connect.oauth.auto.visit.suffix": " 并输入以下代码,以连接你的户并在 OpenCode 中使用 {{provider}} 模型。",
"provider.connect.oauth.auto.visit.suffix": " 并输入以下代码,以连接你的户并在 OpenCode 中使用 {{provider}} 模型。",
"provider.connect.oauth.auto.confirmationCode": "确认码",
"provider.connect.toast.connected.title": "{{provider}} 已连接",
"provider.connect.toast.connected.description": "现在可以使用 {{provider}} 模型了。",
"provider.custom.title": "自定义提供商",
"provider.custom.unavailable": "此服务器上无法使用自定义提供商",
"provider.custom.description.prefix": "配置与 OpenAI 兼容的提供商。请查看",
"provider.custom.description.link": "提供商配置文档",
"provider.custom.description.suffix": "。",
@@ -233,7 +337,7 @@ export const dict = {
"model.input.image": "图像",
"model.input.audio": "音频",
"model.input.video": "视频",
"model.input.pdf": "pdf",
"model.input.pdf": "PDF",
"model.tooltip.allows": "支持:{{inputs}}",
"model.tooltip.context.label": "上下文",
"model.tooltip.inputs": "输入",
@@ -253,7 +357,7 @@ export const dict = {
"common.clear": "清除",
"common.connect": "连接",
"common.disconnect": "断开连接",
"common.continue": "提交",
"common.continue": "继续",
"common.submit": "提交",
"common.save": "保存",
"common.saving": "保存中...",
@@ -320,18 +424,18 @@ export const dict = {
"prompt.toast.pasteUnsupported.description": "此处仅能附加图片、PDF 或文本文件。",
"prompt.toast.modelAgentRequired.title": "请选择智能体和模型",
"prompt.toast.modelAgentRequired.description": "发送提示前请先选择智能体和模型。",
"prompt.toast.worktreeCreateFailed.title": "创建工作失败",
"prompt.toast.worktreeCreateFailed.title": "创建工作失败",
"prompt.toast.sessionCreateFailed.title": "创建会话失败",
"prompt.toast.shellSendFailed.title": "发送 shell 命令失败",
"prompt.toast.commandSendFailed.title": "发送命令失败",
"prompt.toast.promptSendFailed.title": "发送提示失败",
"prompt.toast.promptSendFailed.description": "无法获取会话",
"dialog.mcp.title": "MCPs",
"dialog.mcp.title": "MCP 服务器",
"dialog.mcp.description": "已启用 {{enabled}} / {{total}}",
"dialog.mcp.empty": "未配置 MCPs",
"dialog.mcp.empty": "未配置 MCP 服务器",
"dialog.lsp.empty": "已文件类型自动检测 LSPs",
"dialog.lsp.empty": "已根据文件类型自动检测 LSP",
"dialog.plugins.empty": "在 opencode.json 中配置的插件",
@@ -341,7 +445,7 @@ export const dict = {
"mcp.auth.clickToAuthenticate": "点击进行授权",
"mcp.status.disabled": "已禁用",
"dialog.fork.empty": "没有可用于分叉的消息",
"dialog.fork.empty": "没有可用于创建新会话的消息",
"dialog.directory.search.placeholder": "搜索文件夹",
"dialog.directory.empty": "未找到文件夹",
@@ -446,6 +550,21 @@ export const dict = {
"wsl.onboarding.versionMismatch": "已安装版本与桌面应用版本不一致。",
"wsl.onboarding.adding": "正在添加...",
"help.tabs.toast.ariaLabel": "标签页功能介绍。使用标签页整理工作和进行中的会话",
"help.tabs.toast.dismiss": "关闭标签页功能介绍",
"help.tabs.title": "标签页功能介绍",
"help.tabs.description": "使用标签页整理工作和进行中的会话",
"help.tabs.date": "7 月 14 日",
"help.tabs.introduction": "OpenCode Desktop 现已采用以标签页为核心的设计。",
"help.tabs.sessions":
"在标签页中开始新会话,或从任意项目打开现有会话。开始处理新任务时打开新标签页,完成后将其关闭。",
"help.tabs.organize":
"保持打开几个标签页,可更轻松地整理进行中的会话。如果打算保留某个标签页,请为其指定一个便于记忆的名称。",
"help.tabs.home": "你可以在新的主页中找到所有会话和项目。选择会话即可在标签页中将其打开。",
"help.tabs.persistence": "重新打开应用时,标签页仍会保持打开。",
"help.tabs.worktrees":
"新设计暂不支持 Git Worktrees,此功能即将推出。如果希望继续使用之前的布局,可在“设置”中切换布局。请注意,新布局将在几周后永久启用。",
"dialog.project.edit.title": "编辑项目",
"dialog.project.edit.name": "名称",
"dialog.project.edit.icon": "图标",
@@ -453,13 +572,13 @@ export const dict = {
"dialog.project.edit.icon.hint": "点击或拖拽图片",
"dialog.project.edit.icon.recommended": "建议:128x128px",
"dialog.project.edit.color": "颜色",
"dialog.project.edit.color.select": "选择{{color}}颜色",
"dialog.project.edit.color.select": "选择颜色:{{color}}",
"dialog.project.edit.worktree.startup": "工作区启动脚本",
"dialog.project.edit.worktree.startup.description": "创建新工作区 (worktree) 后运行。",
"dialog.project.edit.worktree.startup.description": "创建新工作区 (worktree) 后运行。",
"dialog.project.edit.worktree.startup.placeholder": "例如 bun install",
"context.breakdown.title": "上下文分",
"context.breakdown.note": "输入 token 的大致分。“其他”包含工具定义和开销。",
"context.breakdown.title": "上下文分",
"context.breakdown.note": "输入令牌的大致分。“其他”包含工具定义和开销。",
"context.breakdown.system": "系统",
"context.breakdown.user": "用户",
"context.breakdown.assistant": "助手",
@@ -472,18 +591,18 @@ export const dict = {
"context.stats.provider": "提供商",
"context.stats.model": "模型",
"context.stats.limit": "上下文限制",
"context.stats.totalTokens": "总 token",
"context.stats.totalTokens": "令牌总数",
"context.stats.usage": "使用率",
"context.stats.inputTokens": "输入 token",
"context.stats.outputTokens": "输出 token",
"context.stats.reasoningTokens": "推理 token",
"context.stats.cacheTokens": "缓存 token(读/写)",
"context.stats.inputTokens": "输入令牌",
"context.stats.outputTokens": "输出令牌",
"context.stats.reasoningTokens": "推理令牌",
"context.stats.cacheTokens": "缓存令牌(读/写)",
"context.stats.userMessages": "用户消息",
"context.stats.assistantMessages": "助手消息",
"context.stats.totalCost": "总成本",
"context.stats.sessionCreated": "创建时间",
"context.stats.lastActivity": "最后活动",
"context.usage.tokens": "Token",
"context.usage.tokens": "令牌数",
"context.usage.usage": "使用率",
"context.usage.cost": "成本",
"context.usage.clickToView": "点击查看上下文",
@@ -511,7 +630,7 @@ export const dict = {
"toast.language.title": "语言",
"toast.language.description": "已切换到{{language}}",
"toast.theme.title": "主题已切换",
"toast.scheme.title": "色方案",
"toast.scheme.title": "色方案",
"toast.workspace.enabled.title": "工作区已启用",
"toast.workspace.enabled.description": "侧边栏现在显示多个工作树",
"toast.workspace.disabled.title": "工作区已禁用",
@@ -569,7 +688,7 @@ export const dict = {
"error.chain.didYouMean": "你是不是想输入:{{suggestions}}",
"error.chain.modelNotFound": "未找到模型:{{provider}}/{{model}}",
"error.chain.checkConfig": "请检查你的配置 (opencode.json) 中的 provider/model 名称",
"error.chain.mcpFailed": 'MCP 服务器 "{{name}}" 启动失败。注意: OpenCode 暂不支持 MCP 认证。',
"error.chain.mcpFailed": 'MCP 服务器 "{{name}}" 启动失败。注意OpenCode 暂不支持 MCP 认证。',
"error.chain.providerAuthFailed": "提供商认证失败({{provider}}):{{message}}",
"error.chain.providerInitFailed": '无法初始化提供商 "{{provider}}"。请检查凭据和配置。',
"error.chain.configJsonInvalid": "配置文件 {{path}} 不是有效的 JSON(C)",
@@ -607,7 +726,7 @@ export const dict = {
"home.sessions.group.today": "今天",
"home.sessions.group.yesterday": "昨天",
"home.sessions.group.older": "更早",
"home.providerTip": "连接 75 个以上的提供商,使用 Claude、GPT、Gemini 等其他模型",
"home.providerTip": "连接 75 个以上的提供商,使用包括 Claude、GPT、Gemini 在内的更多模型",
"session.tab.session": "会话",
"session.tab.review": "审查",
@@ -618,12 +737,12 @@ export const dict = {
"session.error.notFound.description": "此标签页指向的会话已不存在于此服务器上。",
"session.error.notFound.closeTab": "关闭标签页",
"session.error.serverConnection": "无法连接到此服务器",
"session.review.filesChanged": "{{count}} 个文件变更",
"session.review.filesChanged": "{{count}} 个文件已更改",
"session.review.change.one": "更改",
"session.review.change.other": "更改",
"session.review.loadingChanges": "正在加载更改...",
"session.review.empty": "此会话暂无更改",
"session.review.noVcs": "未检测到 Git 版本控制系统,无法显示更改",
"session.review.noVcs": "未检测到 Git,无法显示更改",
"session.review.noSnapshot": "配置中已禁用快照跟踪,因此会话更改不可用",
"session.review.noChanges": "无更改",
"session.review.noUncommittedChanges": "尚无未提交的更改",
@@ -641,8 +760,8 @@ export const dict = {
"session.todo.title": "待办事项",
"session.todo.collapse": "折叠",
"session.todo.expand": "展开",
"session.question.minimize": "最小化问题",
"session.question.restore": "恢复问题",
"session.question.minimize": "收起问题",
"session.question.restore": "展开问题",
"session.question.pending.one": "{{count}} 个待处理问题",
"session.question.pending.other": "{{count}} 个待处理问题",
"session.followupDock.summary.one": "{{count}} 条排队消息",
@@ -656,7 +775,7 @@ export const dict = {
"session.revertDock.collapse": "折叠已回滚消息",
"session.revertDock.expand": "展开已回滚消息",
"session.revertDock.restore": "恢复消息",
"session.new.title": "构建任何东西",
"session.new.title": "构建任何内容",
"session.new.project.new": "新建项目",
"session.new.project.search": "搜索项目",
"session.new.project.add": "添加项目",
@@ -708,6 +827,11 @@ export const dict = {
"terminal.close": "关闭终端",
"terminal.connectionLost.title": "连接已丢失",
"terminal.connectionLost.description": "终端连接已中断。这可能发生在服务器重启时。",
"terminal.connectTicket.csrfError": "PTY 连接票证因来源或 CSRF 检查被拒绝。请检查服务器 CORS 配置。",
"terminal.connectTicket.statusError": "PTY 连接票证失败,状态为 {{status}}",
"titlebar.update": "更新",
"titlebar.updateVersion": "更新 {{version}}",
"common.closeTab": "关闭标签页",
"common.dismiss": "忽略",
@@ -775,8 +899,8 @@ export const dict = {
"settings.general.row.terminalFont.description": "自定义终端使用的字体",
"settings.general.row.uiFont.title": "界面字体",
"settings.general.row.uiFont.description": "自定义整个界面使用的字体",
"settings.general.row.followup.title": "跟进消息行为",
"settings.general.row.followup.description": "选择跟进提示是立即引导还是在队列中等待",
"settings.general.row.followup.title": "后续消息行为",
"settings.general.row.followup.description": "选择后续提示是立即引导当前会话还是排队等待",
"settings.general.row.followup.option.queue": "排队",
"settings.general.row.followup.option.steer": "引导",
"settings.general.row.showFileTree.title": "文件树",
@@ -791,14 +915,14 @@ export const dict = {
"settings.general.row.showStatus.description": "在标题栏中显示服务器状态按钮",
"settings.general.row.mobileTitlebarBottom.title": "底部导航",
"settings.general.row.mobileTitlebarBottom.description": "在移动设备上将标题栏和会话标签页置于屏幕底部",
"settings.general.row.showCustomAgents.title": "自定义智能体",
"settings.general.row.showCustomAgents.description": "在输入框中显示智能体选择器",
"settings.general.row.showCustomAgents.title": "显示智能体",
"settings.general.row.showCustomAgents.description": "在输入框中切换智能体。隐藏时默认使用 Build 智能体。",
"settings.general.row.reasoningSummaries.title": "显示推理摘要",
"settings.general.row.reasoningSummaries.description": "在时间线中显示模型推理摘要",
"settings.general.row.shellToolPartsExpanded.title": "展开 shell 工具部分",
"settings.general.row.shellToolPartsExpanded.description": "默认在时间线中展开 shell 工具部分",
"settings.general.row.editToolPartsExpanded.title": "展开编辑工具部分",
"settings.general.row.editToolPartsExpanded.description": "默认在时间线中展开 edit、write 和 patch 工具部分",
"settings.general.row.shellToolPartsExpanded.title": "展开 Shell 工具调用",
"settings.general.row.shellToolPartsExpanded.description": "默认在时间线中展开 Shell 工具调用详情",
"settings.general.row.editToolPartsExpanded.title": "展开编辑工具调用",
"settings.general.row.editToolPartsExpanded.description": "默认在时间线中展开 edit、write 和 patch 工具调用详情",
"settings.general.row.newInterface.title": "新布局",
"settings.general.row.newInterface.badge": "新",
"settings.general.row.newInterface.description": "使用新的标签页和主页布局。在有限时间内可在不同布局之间切换。",
@@ -806,7 +930,7 @@ export const dict = {
"settings.general.row.newInterfaceNotice.description": "之前的布局不再可用",
"settings.general.row.newInterfaceNotice.dismiss": "忽略",
"settings.general.row.pinchZoom.title": "双指缩放",
"settings.general.row.pinchZoom.description": "允许使用触控板双指捏合和 Ctrl-scroll 手势缩放",
"settings.general.row.pinchZoom.description": "允许使用触控板双指捏合和 Ctrl+滚轮手势缩放",
"settings.general.row.wayland.title": "使用原生 Wayland",
"settings.general.row.wayland.description": "在 Wayland 上禁用 X11 回退。需要重启。",
"settings.general.row.wayland.tooltip": "在混合刷新率显示器的 Linux 系统上,原生 Wayland 可能更稳定。",
@@ -835,41 +959,41 @@ export const dict = {
"sound.option.alert08": "警报 08",
"sound.option.alert09": "警报 09",
"sound.option.alert10": "警报 10",
"sound.option.bipbop01": "哔啵 01",
"sound.option.bipbop02": "哔啵 02",
"sound.option.bipbop03": "哔啵 03",
"sound.option.bipbop04": "哔啵 04",
"sound.option.bipbop05": "哔啵 05",
"sound.option.bipbop06": "哔啵 06",
"sound.option.bipbop07": "哔啵 07",
"sound.option.bipbop08": "哔啵 08",
"sound.option.bipbop09": "哔啵 09",
"sound.option.bipbop10": "哔啵 10",
"sound.option.staplebops01": "斯泰普博普斯 01",
"sound.option.staplebops02": "斯泰普博普斯 02",
"sound.option.staplebops03": "斯泰普博普斯 03",
"sound.option.staplebops04": "斯泰普博普斯 04",
"sound.option.staplebops05": "斯泰普博普斯 05",
"sound.option.staplebops06": "斯泰普博普斯 06",
"sound.option.staplebops07": "斯泰普博普斯 07",
"sound.option.nope01": " 01",
"sound.option.nope02": " 02",
"sound.option.nope03": " 03",
"sound.option.nope04": " 04",
"sound.option.nope05": " 05",
"sound.option.nope06": " 06",
"sound.option.nope07": " 07",
"sound.option.nope08": " 08",
"sound.option.nope09": " 09",
"sound.option.nope10": " 10",
"sound.option.nope11": " 11",
"sound.option.nope12": " 12",
"sound.option.yup01": " 01",
"sound.option.yup02": " 02",
"sound.option.yup03": " 03",
"sound.option.yup04": " 04",
"sound.option.yup05": " 05",
"sound.option.yup06": " 06",
"sound.option.bipbop01": "Bip-bop 01",
"sound.option.bipbop02": "Bip-bop 02",
"sound.option.bipbop03": "Bip-bop 03",
"sound.option.bipbop04": "Bip-bop 04",
"sound.option.bipbop05": "Bip-bop 05",
"sound.option.bipbop06": "Bip-bop 06",
"sound.option.bipbop07": "Bip-bop 07",
"sound.option.bipbop08": "Bip-bop 08",
"sound.option.bipbop09": "Bip-bop 09",
"sound.option.bipbop10": "Bip-bop 10",
"sound.option.staplebops01": "Staplebops 01",
"sound.option.staplebops02": "Staplebops 02",
"sound.option.staplebops03": "Staplebops 03",
"sound.option.staplebops04": "Staplebops 04",
"sound.option.staplebops05": "Staplebops 05",
"sound.option.staplebops06": "Staplebops 06",
"sound.option.staplebops07": "Staplebops 07",
"sound.option.nope01": "Nope 01",
"sound.option.nope02": "Nope 02",
"sound.option.nope03": "Nope 03",
"sound.option.nope04": "Nope 04",
"sound.option.nope05": "Nope 05",
"sound.option.nope06": "Nope 06",
"sound.option.nope07": "Nope 07",
"sound.option.nope08": "Nope 08",
"sound.option.nope09": "Nope 09",
"sound.option.nope10": "Nope 10",
"sound.option.nope11": "Nope 11",
"sound.option.nope12": "Nope 12",
"sound.option.yup01": "Yup 01",
"sound.option.yup02": "Yup 02",
"sound.option.yup03": "Yup 03",
"sound.option.yup04": "Yup 04",
"sound.option.yup05": "Yup 05",
"sound.option.yup06": "Yup 06",
"settings.general.notifications.agent.title": "智能体",
"settings.general.notifications.agent.description": "当智能体完成或需要注意时显示系统通知",
@@ -902,7 +1026,7 @@ export const dict = {
"settings.shortcuts.group.prompt": "提示",
"settings.providers.title": "提供商",
"settings.providers.description": "提供商设置将在此处可配置。",
"settings.providers.description": "可在此处配置提供商设置。",
"settings.providers.section.connected": "已连接的提供商",
"settings.providers.connected.empty": "没有已连接的提供商",
"settings.providers.section.popular": "热门提供商",
@@ -912,16 +1036,16 @@ export const dict = {
"settings.providers.tag.other": "其他",
"settings.models.title": "模型",
"settings.models.description": "模型设置将在此处可配置。",
"settings.models.description": "可在此处配置模型设置。",
"settings.agents.title": "智能体",
"settings.agents.description": "智能体设置将在此处可配置。",
"settings.agents.description": "可在此处配置智能体设置。",
"settings.commands.title": "命令",
"settings.commands.description": "命令设置将在此处可配置。",
"settings.commands.description": "可在此处配置命令设置。",
"settings.mcp.title": "MCP",
"settings.mcp.description": "MCP 设置将在此处可配置。",
"settings.mcp.description": "可在此处配置 MCP 设置。",
"settings.permissions.title": "权限",
"settings.permissions.description": "控制服务器默认可以使用哪些工具。",
@@ -933,12 +1057,12 @@ export const dict = {
"settings.permissions.tool.read.title": "读取",
"settings.permissions.tool.read.description": "读取文件(匹配文件路径)",
"settings.permissions.tool.edit.title": "编辑",
"settings.permissions.tool.edit.description": "修改文件,包括编辑、写入、补丁和多重编辑",
"settings.permissions.tool.edit.description": "修改文件,包括编辑、写入和应用补丁",
"settings.permissions.tool.glob.title": "Glob",
"settings.permissions.tool.glob.description": "使用 glob 模式匹配文件",
"settings.permissions.tool.grep.title": "Grep",
"settings.permissions.tool.grep.description": "使用正则表达式搜索文件内容",
"settings.permissions.tool.list.title": "列",
"settings.permissions.tool.list.title": "列出文件",
"settings.permissions.tool.list.description": "列出目录中的文件",
"settings.permissions.tool.bash.title": "Bash",
"settings.permissions.tool.bash.description": "运行 shell 命令",
@@ -950,7 +1074,7 @@ export const dict = {
"settings.permissions.tool.lsp.description": "运行语言服务器查询",
"settings.permissions.tool.todowrite.title": "更新待办",
"settings.permissions.tool.todowrite.description": "更新待办列表",
"settings.permissions.tool.webfetch.title": "网页获取",
"settings.permissions.tool.webfetch.title": "获取网页",
"settings.permissions.tool.webfetch.description": "从 URL 获取内容",
"settings.permissions.tool.websearch.title": "网页搜索",
"settings.permissions.tool.websearch.description": "搜索网页",
@@ -973,10 +1097,10 @@ export const dict = {
"workspace.resetting.description": "这可能需要一点时间。",
"workspace.reset.failed.title": "重置工作区失败",
"workspace.reset.success.title": "工作区已重置",
"workspace.reset.success.description": "工作区已与默认分支保持一致。",
"workspace.reset.success.description": "工作区已与默认分支一致。",
"workspace.error.stillPreparing": "工作区仍在准备中",
"workspace.status.checking": "正在检查未合并的更改...",
"workspace.status.error": "无法验证 git 状态。",
"workspace.status.error": "无法验证 Git 状态。",
"workspace.status.clean": "未检测到未合并的更改。",
"workspace.status.dirty": "检测到未合并的更改。",
"workspace.delete.title": "删除工作区",
@@ -993,7 +1117,7 @@ export const dict = {
"dialog.releaseNotes.action.getStarted": "开始",
"dialog.releaseNotes.action.next": "下一步",
"dialog.releaseNotes.action.hideFuture": "不再显示",
"dialog.releaseNotes.media.alt": "发布预览",
"dialog.releaseNotes.media.alt": "版本说明预览",
"toast.project.reloadFailed.title": "无法重新加载 {{project}}",
"error.server.invalidConfiguration": "配置无效",
"common.moreCountSuffix": " (还有 {{count}} 个)",
@@ -1018,6 +1142,9 @@ export const dict = {
"session.question.progress": "{{current}}/{{total}} 个问题",
"session.header.open.finder": "访达",
"session.header.open.fileExplorer": "文件资源管理器",
"session.header.reveal.finder": "在访达中显示",
"session.header.reveal.fileExplorer": "在文件资源管理器中显示",
"session.header.reveal.containingFolder": "打开所在文件夹",
"session.header.open.fileManager": "文件管理器",
"session.header.open.app.vscode": "VS Code",
"session.header.open.app.cursor": "Cursor",
+249 -122
View File
@@ -3,6 +3,104 @@ import { dict as en } from "./en"
type Keys = keyof typeof en
export const dict = {
"desktop.menu.app": "OpenCode",
"desktop.menu.file": "檔案",
"desktop.menu.edit": "編輯",
"desktop.menu.view": "檢視",
"desktop.menu.go": "前往",
"desktop.menu.window": "視窗",
"desktop.menu.help": "說明",
"desktop.menu.checkForUpdates": "檢查更新...",
"desktop.menu.settings": "設定",
"desktop.menu.reloadWebview": "重新載入 Webview",
"desktop.menu.restart": "重新啟動",
"desktop.menu.exportLogs": "匯出記錄檔...",
"desktop.menu.newSession": "新增工作階段",
"desktop.menu.openProject": "開啟專案...",
"desktop.menu.newWindow": "新增視窗",
"desktop.menu.closeWindow": "關閉視窗",
"desktop.menu.undo": "復原",
"desktop.menu.redo": "重做",
"desktop.menu.cut": "剪下",
"desktop.menu.copy": "複製",
"desktop.menu.paste": "貼上",
"desktop.menu.delete": "刪除",
"desktop.menu.selectAll": "全選",
"desktop.menu.toggleSidebar": "切換側邊欄",
"desktop.menu.toggleTerminal": "切換終端機",
"desktop.menu.toggleFileTree": "切換檔案樹",
"desktop.menu.reload": "重新載入",
"desktop.menu.toggleDeveloperTools": "切換開發人員工具",
"desktop.menu.actualSize": "實際大小",
"desktop.menu.zoomIn": "放大",
"desktop.menu.zoomOut": "縮小",
"desktop.menu.toggleFullScreen": "切換全螢幕",
"desktop.menu.back": "上一頁",
"desktop.menu.forward": "下一頁",
"desktop.menu.previousSession": "上一個工作階段",
"desktop.menu.nextSession": "下一個工作階段",
"desktop.menu.previousProject": "上一個專案",
"desktop.menu.nextProject": "下一個專案",
"desktop.menu.minimize": "最小化",
"desktop.menu.maximize": "最大化",
"desktop.menu.documentation": "OpenCode 文件",
"desktop.menu.supportForum": "支援論壇",
"desktop.menu.shareFeedback": "提供意見回饋",
"desktop.menu.reportBug": "回報錯誤",
"desktop.menu.ariaLabel": "OpenCode 選單",
"desktop.updater.dialog.checkFailed.message": "檢查更新失敗。",
"desktop.updater.dialog.checkFailed.title": "更新錯誤",
"desktop.updater.dialog.upToDate.message": "目前已是最新版本。",
"desktop.updater.dialog.upToDate.title": "沒有更新",
"desktop.updater.dialog.ready.message": "已下載更新 {{version}}。要立即重新啟動嗎?",
"desktop.updater.dialog.ready.title": "更新已就緒",
"desktop.updater.dialog.restart": "重新啟動",
"desktop.updater.dialog.later": "稍後",
"desktop.recovery.action.relaunch": "重新啟動應用程式",
"desktop.recovery.action.exportLogs": "匯出記錄檔",
"desktop.recovery.action.keepWaiting": "繼續等待",
"desktop.recovery.action.quit": "結束",
"desktop.recovery.loadFailed": "OpenCode 載入失敗",
"desktop.recovery.terminated": "OpenCode 視窗意外終止",
"desktop.recovery.unresponsive": "OpenCode 沒有回應",
"desktop.recovery.unresponsive.detail": "你可以重新啟動應用程式、開啟記錄檔,或繼續等待。",
"desktop.recovery.loadFailed.detail": "視窗:{{window}}\nURL{{url}}\n錯誤:{{code}} {{description}}",
"desktop.recovery.terminated.detail": "視窗:{{window}}\n原因:{{reason}}\n代碼:{{code}}",
"desktop.recovery.unknown": "<未知>",
"desktop.dialog.chooseFolder": "選擇資料夾",
"desktop.dialog.chooseFile": "選擇檔案",
"desktop.dialog.saveFile": "儲存檔案",
"desktop.dialog.files": "檔案",
"desktop.server.local": "本機伺服器",
"desktop.wsl.error.windowsOnly": "WSL 僅適用於 Windows",
"desktop.wsl.error.unavailable": "WSL 無法使用",
"desktop.wsl.error.listInstalled": "無法列出已安裝的 WSL 發行版",
"desktop.wsl.error.listOnline": "無法列出線上 WSL 發行版",
"desktop.wsl.error.executeDistro": "無法在發行版中執行命令",
"desktop.wsl.error.installWsl": "WSL 安裝失敗",
"desktop.wsl.error.installDistro": "無法安裝發行版:{{distro}}",
"desktop.wsl.error.installOpencode": "OpenCode 安裝失敗",
"desktop.wsl.error.alreadyAdded": "已新增 {{distro}}",
"desktop.wsl.error.opencodeMissing": "此發行版中未安裝 opencode",
"desktop.wsl.error.opencodeCannotRun": "已安裝 opencode,但無法執行",
"desktop.wsl.error.opencodeNotInstalled": "{{distro}} 中未安裝 OpenCode",
"desktop.wsl.error.updateVersion":
"OpenCode 更新完成,但 {{distro}} 回報的版本仍為 {{installed}};預期版本為 {{expected}}",
"desktop.wsl.error.noVersion": "無版本資訊",
"desktop.wsl.error.serverExited": "WSL 伺服器在啟動後結束 (code={{code}} signal={{signal}})",
"desktop.wsl.error.serverExitedBeforeHealthy":
"WSL 伺服器在健全狀態確認前結束 (code={{code}} signal={{signal}}){{output}}",
"desktop.wsl.error.healthTimeout": "{{distro}} 的 Sidecar 健全狀態檢查在 {{timeout}}ms 後逾時",
"desktop.wsl.error.commandTimeout": "{{command}} {{args}} 在 {{timeout}}ms 後逾時",
"desktop.wsl.error.failedPort": "無法取得連接埠",
"desktop.picker.error.notSelected": "檔案選擇器未選取檔案",
"desktop.picker.error.sizeLimit": "所選附件超過 {{limit}} MB 的限制",
"command.category.suggested": "建議",
"command.category.view": "檢視",
"command.category.project": "專案",
@@ -21,6 +119,7 @@ export const dict = {
"command.category.workspace": "工作區",
"command.category.settings": "設定",
"command.logs.export": "匯出記錄檔",
"theme.scheme.system": "系統",
"theme.scheme.light": "淺色",
"theme.scheme.dark": "深色",
@@ -30,23 +129,23 @@ export const dict = {
"command.project.previous": "上一個專案",
"command.project.next": "下一個專案",
"command.project.index": "切換至專案 {{index}}",
"command.provider.connect": "連提供者",
"command.provider.connect": "連提供者",
"command.server.switch": "切換伺服器",
"command.settings.open": "開啟設定",
"command.session.previous": "上一個工作階段",
"command.session.next": "下一個工作階段",
"command.session.previous.unseen": "上一個未讀會話",
"command.session.next.unseen": "下一個未讀會話",
"command.session.previous.unseen": "上一個未讀工作階段",
"command.session.next.unseen": "下一個未讀工作階段",
"command.session.archive": "封存工作階段",
"command.palette": "命令面板",
"command.theme.cycle": "循環主題",
"command.theme.cycle": "依序切換主題",
"command.theme.set": "使用主題: {{theme}}",
"command.theme.scheme.cycle": "循環配色方案",
"command.theme.scheme.cycle": "依序切換配色方案",
"command.theme.scheme.set": "使用配色方案: {{scheme}}",
"command.language.cycle": "循環語言",
"command.language.cycle": "依序切換語言",
"command.language.set": "使用語言: {{language}}",
"command.session.new": "新增工作階段",
@@ -58,9 +157,9 @@ export const dict = {
"command.input.focus": "聚焦輸入框",
"command.terminal.toggle": "切換終端機",
"command.fileTree.toggle": "切換檔案樹",
"command.review.toggle": "切換審查",
"command.review.toggle": "切換檢閱",
"command.terminal.new": "新增終端機",
"command.terminal.new.description": "建立新的終端機標籤頁",
"command.terminal.new.description": "建立新的終端機頁",
"command.steps.toggle": "切換步驟",
"command.steps.toggle.description": "顯示或隱藏目前訊息的步驟",
"command.message.previous": "上一則訊息",
@@ -71,11 +170,11 @@ export const dict = {
"command.model.choose.description": "選擇不同的模型",
"command.mcp.toggle": "切換 MCP",
"command.mcp.toggle.description": "切換 MCP",
"command.agent.cycle": "循環代理程式",
"command.agent.cycle": "切換下一個代理程式",
"command.agent.cycle.description": "切換到下一個代理程式",
"command.agent.cycle.reverse": "反向循環代理程式",
"command.agent.cycle.reverse": "切換上一個代理程式",
"command.agent.cycle.reverse.description": "切換到上一個代理程式",
"command.model.variant.cycle": "循環思考強度",
"command.model.variant.cycle": "切換思考強度",
"command.model.variant.cycle.description": "切換到下一個強度等級",
"command.prompt.mode.shell": "Shell",
"command.prompt.mode.normal": "Prompt",
@@ -88,7 +187,7 @@ export const dict = {
"command.session.redo": "重做",
"command.session.redo.description": "重做上一則復原的訊息",
"command.session.compact": "精簡工作階段",
"command.session.compact.description": "總結工作階段以減少上下文大小",
"command.session.compact.description": "摘要工作階段以減少上下文大小",
"command.session.fork": "從訊息分支",
"command.session.fork.description": "從先前的訊息建立新工作階段",
"command.session.share": "分享工作階段",
@@ -106,13 +205,14 @@ export const dict = {
"dialog.provider.empty": "找不到提供者",
"dialog.provider.group.popular": "熱門",
"dialog.provider.group.other": "其他",
"dialog.provider.custom.label": "自訂 OpenAI 相容提供者",
"dialog.provider.tag.recommended": "推薦",
"dialog.provider.opencode.note": "精選模型,包含 Claude、GPT、Gemini 等等",
"dialog.provider.opencode.tagline": "可靠的優化模型",
"dialog.provider.opencode.tagline": "經過最佳化的可靠模型",
"dialog.provider.opencodeGo.tagline": "適合所有人的低成本訂閱",
"dialog.provider.anthropic.note": "使用 Claude Pro/Max 或 API 金鑰連線",
"dialog.provider.openai.note": "使用 ChatGPT Pro/Plus 或 API 金鑰連線",
"dialog.provider.copilot.note": "使用 Copilot API 金鑰連線",
"dialog.provider.anthropic.note": "直接存取 Claude 模型,包括 Pro 和 Max",
"dialog.provider.openai.note": "適合快速且功能強大的通用 AI 工作之 GPT 模型",
"dialog.provider.copilot.note": "透過 GitHub Copilot 使用程式設計輔助 AI 模型",
"dialog.provider.google.note": "Gemini 模型,提供快速且結構化的回應",
"dialog.provider.openrouter.note": "從單一提供者存取所有支援的模型",
"dialog.provider.vercel.note": "透過智慧路由統一存取 AI 模型",
@@ -126,6 +226,7 @@ export const dict = {
"dialog.model.unpaid.freeModels.title": "OpenCode 提供的免費模型",
"dialog.model.unpaid.addMore.title": "從熱門提供者新增更多模型",
"dialog.model.unpaid.viewMoreProviders": "查看另外 70 多個提供者",
"dialog.provider.viewAll": "查看更多提供者",
@@ -133,6 +234,8 @@ export const dict = {
"provider.connect.title.anthropicProMax": "使用 Claude Pro/Max 登入",
"provider.connect.selectMethod": "選擇 {{provider}} 的登入方式。",
"provider.connect.method.apiKey": "API 金鑰",
"provider.connect.method.browser": "瀏覽器",
"provider.connect.method.headless": "無頭模式",
"provider.connect.status.inProgress": "正在授權...",
"provider.connect.status.waiting": "等待授權...",
"provider.connect.status.failed": "授權失敗: {{error}}",
@@ -161,16 +264,17 @@ export const dict = {
"provider.connect.toast.connected.title": "{{provider}} 已連線",
"provider.connect.toast.connected.description": "現在可以使用 {{provider}} 模型了。",
"provider.custom.title": "自訂提供",
"provider.custom.description.prefix": "設定與 OpenAI 相容的提供商。請參閱",
"provider.custom.description.link": "提供商設定文件",
"provider.custom.title": "自訂提供",
"provider.custom.unavailable": "此伺服器無法使用自訂提供者",
"provider.custom.description.prefix": "設定與 OpenAI 相容的提供者。請參閱",
"provider.custom.description.link": "提供者設定文件",
"provider.custom.description.suffix": "。",
"provider.custom.field.providerID.label": "提供 ID",
"provider.custom.field.providerID.label": "提供 ID",
"provider.custom.field.providerID.placeholder": "myprovider",
"provider.custom.field.providerID.description": "使用小寫字母、數字、連字號或底線",
"provider.custom.field.name.label": "顯示名稱",
"provider.custom.field.name.placeholder": "我的 AI 提供",
"provider.custom.field.baseURL.label": "基 URL",
"provider.custom.field.name.placeholder": "我的 AI 提供",
"provider.custom.field.baseURL.label": "基 URL",
"provider.custom.field.baseURL.placeholder": "https://api.myprovider.com/v1",
"provider.custom.field.apiKey.label": "API 金鑰",
"provider.custom.field.apiKey.placeholder": "API 金鑰",
@@ -189,11 +293,11 @@ export const dict = {
"provider.custom.headers.value.placeholder": "value",
"provider.custom.headers.remove": "移除標頭",
"provider.custom.headers.add": "新增標頭",
"provider.custom.error.providerID.required": "提供 ID 為必填",
"provider.custom.error.providerID.required": "提供 ID 為必填",
"provider.custom.error.providerID.format": "請使用小寫字母、數字、連字號或底線",
"provider.custom.error.providerID.exists": "該提供 ID 已存在",
"provider.custom.error.providerID.exists": "該提供 ID 已存在",
"provider.custom.error.name.required": "顯示名稱為必填",
"provider.custom.error.baseURL.required": "基 URL 為必填",
"provider.custom.error.baseURL.required": "基 URL 為必填",
"provider.custom.error.baseURL.format": "必須以 http:// 或 https:// 開頭",
"provider.custom.error.required": "必填",
"provider.custom.error.duplicate": "重複",
@@ -212,12 +316,12 @@ export const dict = {
"model.input.image": "圖片",
"model.input.audio": "音訊",
"model.input.video": "影片",
"model.input.pdf": "pdf",
"model.input.pdf": "PDF",
"model.tooltip.allows": "支援: {{inputs}}",
"model.tooltip.context.label": "上下文",
"model.tooltip.inputs": "輸入",
"model.tooltip.model": "模型",
"model.tooltip.provider": "供應商",
"model.tooltip.provider": "提供者",
"model.tooltip.reasoning": "推理",
"model.tooltip.reasoning.allowed": "支援推理",
"model.tooltip.reasoning.none": "不支援推理",
@@ -231,7 +335,7 @@ export const dict = {
"common.clear": "清除",
"common.connect": "連線",
"common.disconnect": "中斷連線",
"common.continue": "提交",
"common.continue": "繼續",
"common.submit": "提交",
"common.save": "儲存",
"common.saving": "儲存中...",
@@ -239,10 +343,10 @@ export const dict = {
"common.attachment": "附件",
"prompt.placeholder.shell": "輸入 shell 命令... {{example}}",
"prompt.placeholder.normal": '隨便問點什麼... "{{example}}"',
"prompt.placeholder.simple": "隨便問點什麼...",
"prompt.placeholder.summarizeComments": "摘要評論…",
"prompt.placeholder.summarizeComment": "摘要這則評論…",
"prompt.placeholder.normal": "想問什麼都可以…「{{example}}」",
"prompt.placeholder.simple": "想問什麼都可以…",
"prompt.placeholder.summarizeComments": "摘要留言…",
"prompt.placeholder.summarizeComment": "摘要這則留言…",
"prompt.mode.shell": "Shell",
"prompt.mode.normal": "Prompt",
"prompt.mode.shell.exit": "按 esc 退出",
@@ -250,30 +354,30 @@ export const dict = {
"session.child.backToParent": "返回主要工作階段。",
"prompt.example.1": "修復程式碼庫中的一個 TODO",
"prompt.example.2": "這個專案的技術堆疊是什麼?",
"prompt.example.2": "這個專案的技術堆疊是什麼",
"prompt.example.3": "修復失敗的測試",
"prompt.example.4": "解釋驗證是如何運作的",
"prompt.example.5": "尋找並修復安全漏洞",
"prompt.example.6": "為使用者服務新增單元測試",
"prompt.example.7": "重構這個函式,讓它更易讀",
"prompt.example.8": "這個錯誤是什麼意思?",
"prompt.example.8": "這個錯誤是什麼意思",
"prompt.example.9": "幫我偵錯這個問題",
"prompt.example.10": "產生 API 文件",
"prompt.example.11": "最佳化資料庫查詢",
"prompt.example.12": "新增輸入驗證",
"prompt.example.13": "建立一個新的元件用於...",
"prompt.example.14": "我該如何部署這個專案?",
"prompt.example.15": "審查我的程式碼並給出最佳實務建議",
"prompt.example.14": "我該如何部署這個專案",
"prompt.example.15": "檢閱我的程式碼並提供最佳實務建議",
"prompt.example.16": "為這個函式新增錯誤處理",
"prompt.example.17": "解釋這個正規表示式",
"prompt.example.18": "把它轉換成 TypeScript",
"prompt.example.19": "在整個程式碼庫中新增日誌",
"prompt.example.20": "哪些相依性已經過期?",
"prompt.example.19": "在整個程式碼庫中加入記錄功能",
"prompt.example.20": "哪些相依性已經過期",
"prompt.example.21": "幫我寫一個遷移腳本",
"prompt.example.22": "為這個端點實作快取",
"prompt.example.23": "給這個清單新增分頁",
"prompt.example.23": "為這份清單加入分頁功能",
"prompt.example.24": "建立一個 CLI 命令用於...",
"prompt.example.25": "這裡的環境變數是怎麼運作的?",
"prompt.example.25": "這裡的環境變數是怎麼運作的",
"prompt.popover.emptyResults": "沒有符合的結果",
"prompt.popover.emptyCommands": "沒有符合的命令",
@@ -312,13 +416,13 @@ export const dict = {
"dialog.mcp.description": "已啟用 {{enabled}} / {{total}}",
"dialog.mcp.empty": "未設定 MCP",
"dialog.lsp.empty": "已從檔案類型自動偵測 LSPs",
"dialog.lsp.empty": "會根據檔案類型自動偵測 LSP",
"dialog.plugins.empty": "在 opencode.json 中設定的外掛程式",
"mcp.status.connected": "已連線",
"mcp.status.failed": "失敗",
"mcp.status.needs_auth": "需要授權",
"mcp.auth.clickToAuthenticate": "點擊以進行授權",
"mcp.auth.clickToAuthenticate": "按一下以進行授權",
"mcp.status.disabled": "已停用",
"dialog.fork.empty": "沒有可用於分支的訊息",
@@ -334,7 +438,7 @@ export const dict = {
"dialog.server.title": "伺服器",
"dialog.server.description": "切換此應用程式連線的 OpenCode 伺服器。",
"dialog.server.search.placeholder": "搜尋伺服器",
"dialog.server.empty": "無伺服器",
"dialog.server.empty": "無伺服器",
"dialog.server.add.title": "新增伺服器",
"dialog.server.add.url": "伺服器 URL",
"dialog.server.add.placeholder": "http://localhost:4096",
@@ -347,7 +451,7 @@ export const dict = {
"dialog.server.add.password": "密碼(選填)",
"dialog.server.edit.title": "編輯伺服器",
"dialog.server.default.title": "預設伺服器",
"dialog.server.default.description": "應用程式啟動時連線此伺服器,而不是啟動本伺服器。需要重新啟動。",
"dialog.server.default.description": "應用程式啟動時連線此伺服器,而不是啟動本伺服器。需要重新啟動。",
"dialog.server.default.none": "未選擇伺服器",
"dialog.server.default.set": "將目前伺服器設為預設",
"dialog.server.default.clear": "清除",
@@ -427,11 +531,26 @@ export const dict = {
"wsl.onboarding.versionMismatch": "已安裝版本與桌面應用程式版本不符。",
"wsl.onboarding.adding": "新增中...",
"help.tabs.toast.ariaLabel": "分頁功能介紹。使用分頁整理工作和進行中的工作階段",
"help.tabs.toast.dismiss": "關閉分頁功能資訊",
"help.tabs.title": "分頁功能介紹",
"help.tabs.description": "使用分頁整理工作和進行中的工作階段",
"help.tabs.date": "7 月 14 日",
"help.tabs.introduction": "OpenCode Desktop 現在以分頁為核心。",
"help.tabs.sessions":
"在分頁中開始新的工作階段,或從任一專案開啟現有的工作階段。開始新工作時請開啟新分頁,完成後再將其關閉。",
"help.tabs.organize":
"同時開啟幾個分頁,可讓進行中的工作階段更容易整理。如果打算保留分頁,請將其重新命名為容易記住的名稱。",
"help.tabs.home": "你可以在新的首頁找到所有工作階段和專案。選取工作階段即可在分頁中開啟。",
"help.tabs.persistence": "重新開啟應用程式時,分頁仍會保持開啟。",
"help.tabs.worktrees":
"新版設計尚未支援 Git Worktrees,此功能即將推出。如果你偏好繼續使用先前的版面,可以在設定中切換版面。請留意,新版面將在幾週後成為永久版面。",
"dialog.project.edit.title": "編輯專案",
"dialog.project.edit.name": "名稱",
"dialog.project.edit.icon": "圖示",
"dialog.project.edit.icon.alt": "專案圖示",
"dialog.project.edit.icon.hint": "點擊或拖曳圖片",
"dialog.project.edit.icon.hint": "按一下或拖曳圖片",
"dialog.project.edit.icon.recommended": "建議:128x128px",
"dialog.project.edit.color": "顏色",
"dialog.project.edit.color.select": "選擇{{color}}顏色",
@@ -439,11 +558,11 @@ export const dict = {
"dialog.project.edit.worktree.startup": "工作區啟動腳本",
"dialog.project.edit.worktree.startup.description": "在建立新的工作區 (worktree) 後執行。",
"dialog.project.edit.worktree.startup.placeholder": "例如 bun install",
"context.breakdown.title": "上下文分",
"context.breakdown.note": "輸入 token 的大致拆分。「其他」包含工具定義和額外開銷。",
"context.breakdown.title": "上下文分",
"context.breakdown.note": "輸入 token 的概略細分。「其他」包含工具定義和額外負擔。",
"context.breakdown.system": "系統",
"context.breakdown.user": "使用者",
"context.breakdown.assistant": "助",
"context.breakdown.assistant": "助",
"context.breakdown.tool": "工具呼叫",
"context.breakdown.other": "其他",
@@ -462,7 +581,7 @@ export const dict = {
"context.stats.reasoningTokens": "推理 token",
"context.stats.cacheTokens": "快取 token(讀/寫)",
"context.stats.userMessages": "使用者訊息",
"context.stats.assistantMessages": "助訊息",
"context.stats.assistantMessages": "助訊息",
"context.stats.totalCost": "總成本",
"context.stats.sessionCreated": "建立時間",
"context.stats.lastActivity": "最後活動",
@@ -470,7 +589,7 @@ export const dict = {
"context.usage.tokens": "Token",
"context.usage.usage": "使用量",
"context.usage.cost": "成本",
"context.usage.clickToView": "點擊查看上下文",
"context.usage.clickToView": "按一下以檢視上下文",
"context.usage.view": "檢視上下文用量",
"language.en": "English",
@@ -496,7 +615,7 @@ export const dict = {
"toast.language.description": "已切換到 {{language}}",
"toast.theme.title": "主題已切換",
"toast.scheme.title": "色方案",
"toast.scheme.title": "色方案",
"toast.workspace.enabled.title": "工作區已啟用",
"toast.workspace.enabled.description": "側邊欄現在顯示多個工作樹",
@@ -504,12 +623,12 @@ export const dict = {
"toast.workspace.disabled.description": "側邊欄只顯示主工作樹",
"toast.permissions.autoaccept.on.title": "正在自動接受權限",
"toast.permissions.autoaccept.on.description": "權限求將自動准",
"toast.permissions.autoaccept.on.description": "權限求將自動准",
"toast.permissions.autoaccept.off.title": "已停止自動接受權限",
"toast.permissions.autoaccept.off.description": "權限求將需要准",
"toast.permissions.autoaccept.off.description": "權限求將需要准",
"toast.model.none.title": "未選擇模型",
"toast.model.none.description": "請先連線提供者以總結此工作階段",
"toast.model.none.description": "請先連線提供者以摘要此工作階段",
"toast.file.loadFailed.title": "載入檔案失敗",
@@ -541,7 +660,7 @@ export const dict = {
"error.page.action.restart": "重新啟動",
"error.page.action.report": "回報錯誤",
"error.page.action.reported": "已回報錯誤",
"error.page.action.exportLogs": "匯出日誌",
"error.page.action.exportLogs": "匯出記錄檔",
"error.page.action.checking": "檢查中...",
"error.page.action.checkUpdates": "檢查更新",
"error.page.action.updateTo": "更新到 {{version}}",
@@ -549,9 +668,9 @@ export const dict = {
"error.page.report.discord": "在 Discord 上",
"error.page.version": "版本: {{version}}",
"error.dev.rootNotFound": "找不到根元素。你是不是忘了把它新增到 index.html? 或者 id 屬性拼錯了?",
"error.dev.rootNotFound": "找不到根元素。你是不是忘了把它新增到 index.html或者 id 屬性拼錯了",
"error.serverSync.connectFailed": "無法連線到伺服器。是否有伺服器正在 `{{url}}` 執行?",
"error.serverSync.connectFailed": "無法連線到伺服器。是否有伺服器正在 `{{url}}` 執行",
"directory.error.invalidUrl": "URL 中的目錄無效。",
"error.chain.unknown": "未知錯誤",
@@ -563,8 +682,8 @@ export const dict = {
"error.chain.didYouMean": "你是不是想輸入: {{suggestions}}",
"error.chain.modelNotFound": "找不到模型: {{provider}}/{{model}}",
"error.chain.checkConfig": "請檢查你的設定 (opencode.json) 中的 provider/model 名稱",
"error.chain.mcpFailed": 'MCP 伺服器 "{{name}}" 啟動失敗。注意: OpenCode 不支援 MCP 證。',
"error.chain.providerAuthFailed": "提供者證失敗 ({{provider}}): {{message}}",
"error.chain.mcpFailed": "MCP 伺服器{{name}}啟動失敗。注意OpenCode 不支援 MCP 證。",
"error.chain.providerAuthFailed": "提供者證失敗{{provider}}):{{message}}",
"error.chain.providerInitFailed": '無法初始化提供者 "{{provider}}"。請檢查憑證和設定。',
"error.chain.configJsonInvalid": "設定檔 {{path}} 不是有效的 JSON(C)",
"error.chain.configJsonInvalidWithMessage": "設定檔 {{path}} 不是有效的 JSON(C): {{message}}",
@@ -586,7 +705,7 @@ export const dict = {
"home.recentProjects": "最近專案",
"home.empty.title": "沒有最近專案",
"home.empty.description": "透過開啟本專案開始使用",
"home.empty.description": "開啟本專案開始使用",
"home.title": "首頁",
"home.projects": "專案",
"home.project.add": "新增專案",
@@ -602,13 +721,13 @@ export const dict = {
"home.sessions.group.today": "今天",
"home.sessions.group.yesterday": "昨天",
"home.sessions.group.older": "更早",
"home.providerTip": "連 75 個以上的供應商,使用 Claude、GPT、Gemini 等其他模型",
"home.providerTip": "連 75 個以上的提供者,使用 Claude、GPT、Gemini 等其他模型",
"session.tab.session": "工作階段",
"session.tab.review": "審查",
"session.tab.review": "檢閱",
"session.tab.context": "上下文",
"session.tab.unknown": "未知的工作階段",
"session.panel.reviewAndFiles": "審查與檔案",
"session.panel.reviewAndFiles": "檢閱與檔案",
"session.error.notFound": "找不到此工作階段",
"session.error.notFound.description": "此分頁指向的工作階段已不存在於此伺服器。",
"session.error.notFound.closeTab": "關閉分頁",
@@ -617,7 +736,7 @@ export const dict = {
"session.review.change.one": "變更",
"session.review.change.other": "變更",
"session.review.loadingChanges": "正在載入變更...",
"session.review.empty": "此工作階段無變更",
"session.review.empty": "此工作階段無變更",
"session.review.noChanges": "沒有變更",
"session.review.noUncommittedChanges": "尚無未提交的變更",
"session.review.noBranchChanges": "尚無分支變更",
@@ -635,7 +754,7 @@ export const dict = {
"session.messages.jumpToLatest": "跳到最新",
"session.context.addToContext": "將 {{selection}} 新增到上下文",
"session.todo.title": "待辦事項",
"session.todo.collapse": "折疊",
"session.todo.collapse": "收合",
"session.todo.expand": "展開",
"session.question.minimize": "最小化問題",
"session.question.restore": "還原問題",
@@ -647,13 +766,13 @@ export const dict = {
"session.followupDock.edit": "編輯",
"session.followupDock.collapse": "收合佇列訊息",
"session.followupDock.expand": "展開佇列訊息",
"session.revertDock.summary.one": "{{count}} 則已回復訊息",
"session.revertDock.summary.other": "{{count}} 則已回復訊息",
"session.revertDock.collapse": "收合已回復訊息",
"session.revertDock.expand": "展開已回復訊息",
"session.revertDock.summary.one": "{{count}} 則已還原的訊息",
"session.revertDock.summary.other": "{{count}} 則已還原的訊息",
"session.revertDock.collapse": "收合已還原的訊息",
"session.revertDock.expand": "展開已還原的訊息",
"session.revertDock.restore": "還原訊息",
"session.new.title": "建構任何東西",
"session.new.title": "實現任何想法",
"session.new.project.new": "新專案",
"session.new.project.search": "搜尋專案",
"session.new.project.add": "新增專案",
@@ -706,7 +825,12 @@ export const dict = {
"terminal.connectionLost.title": "連線中斷",
"terminal.connectionLost.description": "終端機連線已中斷。這可能會在伺服器重新啟動時發生。",
"common.closeTab": "關閉標籤頁",
"terminal.connectTicket.csrfError": "PTY 連線票證因來源或 CSRF 檢查而遭拒。請檢查伺服器 CORS 設定。",
"terminal.connectTicket.statusError": "PTY 連線票證失敗,狀態為 {{status}}",
"titlebar.update": "更新",
"titlebar.updateVersion": "更新 {{version}}",
"common.closeTab": "關閉分頁",
"common.dismiss": "忽略",
"common.requestFailed": "要求失敗",
"common.moreOptions": "更多選項",
@@ -832,41 +956,41 @@ export const dict = {
"sound.option.alert08": "警報 08",
"sound.option.alert09": "警報 09",
"sound.option.alert10": "警報 10",
"sound.option.bipbop01": "嗶啵 01",
"sound.option.bipbop02": "嗶啵 02",
"sound.option.bipbop03": "嗶啵 03",
"sound.option.bipbop04": "嗶啵 04",
"sound.option.bipbop05": "嗶啵 05",
"sound.option.bipbop06": "嗶啵 06",
"sound.option.bipbop07": "嗶啵 07",
"sound.option.bipbop08": "嗶啵 08",
"sound.option.bipbop09": "嗶啵 09",
"sound.option.bipbop10": "嗶啵 10",
"sound.option.staplebops01": "斯泰普博普斯 01",
"sound.option.staplebops02": "斯泰普博普斯 02",
"sound.option.staplebops03": "斯泰普博普斯 03",
"sound.option.staplebops04": "斯泰普博普斯 04",
"sound.option.staplebops05": "斯泰普博普斯 05",
"sound.option.staplebops06": "斯泰普博普斯 06",
"sound.option.staplebops07": "斯泰普博普斯 07",
"sound.option.nope01": " 01",
"sound.option.nope02": " 02",
"sound.option.nope03": " 03",
"sound.option.nope04": " 04",
"sound.option.nope05": " 05",
"sound.option.nope06": " 06",
"sound.option.nope07": " 07",
"sound.option.nope08": " 08",
"sound.option.nope09": " 09",
"sound.option.nope10": " 10",
"sound.option.nope11": " 11",
"sound.option.nope12": " 12",
"sound.option.yup01": " 01",
"sound.option.yup02": " 02",
"sound.option.yup03": " 03",
"sound.option.yup04": " 04",
"sound.option.yup05": " 05",
"sound.option.yup06": " 06",
"sound.option.bipbop01": "Bip-bop 01",
"sound.option.bipbop02": "Bip-bop 02",
"sound.option.bipbop03": "Bip-bop 03",
"sound.option.bipbop04": "Bip-bop 04",
"sound.option.bipbop05": "Bip-bop 05",
"sound.option.bipbop06": "Bip-bop 06",
"sound.option.bipbop07": "Bip-bop 07",
"sound.option.bipbop08": "Bip-bop 08",
"sound.option.bipbop09": "Bip-bop 09",
"sound.option.bipbop10": "Bip-bop 10",
"sound.option.staplebops01": "Staplebops 01",
"sound.option.staplebops02": "Staplebops 02",
"sound.option.staplebops03": "Staplebops 03",
"sound.option.staplebops04": "Staplebops 04",
"sound.option.staplebops05": "Staplebops 05",
"sound.option.staplebops06": "Staplebops 06",
"sound.option.staplebops07": "Staplebops 07",
"sound.option.nope01": "Nope 01",
"sound.option.nope02": "Nope 02",
"sound.option.nope03": "Nope 03",
"sound.option.nope04": "Nope 04",
"sound.option.nope05": "Nope 05",
"sound.option.nope06": "Nope 06",
"sound.option.nope07": "Nope 07",
"sound.option.nope08": "Nope 08",
"sound.option.nope09": "Nope 09",
"sound.option.nope10": "Nope 10",
"sound.option.nope11": "Nope 11",
"sound.option.nope12": "Nope 12",
"sound.option.yup01": "Yup 01",
"sound.option.yup02": "Yup 02",
"sound.option.yup03": "Yup 03",
"sound.option.yup04": "Yup 04",
"sound.option.yup05": "Yup 05",
"sound.option.yup06": "Yup 06",
"settings.general.notifications.agent.title": "代理程式",
"settings.general.notifications.agent.description": "當代理程式完成或需要注意時顯示系統通知",
"settings.general.notifications.permissions.title": "權限",
@@ -901,11 +1025,11 @@ export const dict = {
"settings.providers.title": "提供者",
"settings.providers.description": "提供者設定將在此處可設定。",
"settings.providers.section.connected": "已連線的提供",
"settings.providers.connected.empty": "沒有已連線的提供",
"settings.providers.section.popular": "熱門提供",
"settings.providers.section.connected": "已連線的提供",
"settings.providers.connected.empty": "沒有已連線的提供",
"settings.providers.section.popular": "熱門提供",
"settings.providers.tag.environment": "環境",
"settings.providers.tag.config": "配置",
"settings.providers.tag.config": "設定",
"settings.providers.tag.custom": "自訂",
"settings.providers.tag.other": "其他",
"settings.models.title": "模型",
@@ -957,11 +1081,11 @@ export const dict = {
"session.delete.failed.title": "刪除工作階段失敗",
"session.delete.title": "刪除工作階段",
"session.delete.confirm": '刪除工作階段 "{{name}}"?',
"session.delete.confirm": "要刪除工作階段{{name}}」嗎?",
"session.delete.button": "刪除工作階段",
"workspace.new": "新增工作區",
"workspace.type.local": "本",
"workspace.type.local": "本",
"workspace.type.sandbox": "沙盒",
"workspace.create.failed.title": "建立工作區失敗",
"workspace.delete.failed.title": "刪除工作區失敗",
@@ -969,27 +1093,27 @@ export const dict = {
"workspace.resetting.description": "這可能需要一點時間。",
"workspace.reset.failed.title": "重設工作區失敗",
"workspace.reset.success.title": "工作區已重設",
"workspace.reset.success.description": "工作區與預設分支保持一致。",
"workspace.reset.success.description": "工作區現在與預設分支一致。",
"workspace.error.stillPreparing": "工作區仍在準備中",
"workspace.status.checking": "正在檢查未合併的變更...",
"workspace.status.error": "無法驗證 git 狀態。",
"workspace.status.error": "無法驗證 Git 狀態。",
"workspace.status.clean": "未偵測到未合併的變更。",
"workspace.status.dirty": "偵測到未合併的變更。",
"workspace.delete.title": "刪除工作區",
"workspace.delete.confirm": '刪除工作區 "{{name}}"?',
"workspace.delete.confirm": "要刪除工作區{{name}}」嗎?",
"workspace.delete.button": "刪除工作區",
"workspace.reset.title": "重設工作區",
"workspace.reset.confirm": '重設工作區 "{{name}}"?',
"workspace.reset.confirm": "要重設工作區{{name}}」嗎?",
"workspace.reset.button": "重設工作區",
"workspace.reset.archived.none": "不會封存任何作用中工作階段。",
"workspace.reset.archived.one": "將封存 1 個工作階段。",
"workspace.reset.archived.many": "將封存 {{count}} 個工作階段。",
"workspace.reset.note": "這將把工作區重設為與預設分支一致。",
"common.open": "開",
"common.open": "開",
"dialog.releaseNotes.action.getStarted": "開始",
"dialog.releaseNotes.action.next": "下一步",
"dialog.releaseNotes.action.hideFuture": "不再顯示",
"dialog.releaseNotes.media.alt": "發佈預覽",
"dialog.releaseNotes.media.alt": "版本預覽",
"toast.project.reloadFailed.title": "無法重新載入 {{project}}",
"error.server.invalidConfiguration": "無效的設定",
"common.moreCountSuffix": " (還有 {{count}} 個)",
@@ -998,7 +1122,7 @@ export const dict = {
"common.time.hoursAgo.short": "{{count}}小時前",
"common.time.daysAgo.short": "{{count}}天前",
"settings.providers.connected.environmentDescription": "已從環境變數連線",
"settings.providers.custom.description": "透過基 URL 新增與 OpenAI 相容的提供者。",
"settings.providers.custom.description": "透過基 URL 新增與 OpenAI 相容的提供者。",
"app.server.unreachable": "無法連線至 {{server}}",
"app.server.retrying": "正在自動重試...",
@@ -1014,6 +1138,9 @@ export const dict = {
"session.question.progress": "{{current}}/{{total}} 個問題",
"session.header.open.finder": "Finder",
"session.header.open.fileExplorer": "檔案總管",
"session.header.reveal.finder": "在 Finder 中顯示",
"session.header.reveal.fileExplorer": "在檔案總管中顯示",
"session.header.reveal.containingFolder": "開啟所在的檔案夾",
"session.header.open.fileManager": "檔案管理員",
"session.header.open.app.vscode": "VS Code",
"session.header.open.app.cursor": "Cursor",
@@ -1033,11 +1160,11 @@ export const dict = {
"debugBar.nav.label": "NAV",
"debugBar.nav.tip": "最後一次完成的涉及工作階段頁面的路由轉換,從路由器啟動到穩定後的第一次繪製。",
"debugBar.fps.label": "FPS",
"debugBar.fps.tip": "過去 5 秒內的滾動幀率。",
"debugBar.fps.tip": "過去 5 秒內的移動影格率。",
"debugBar.frame.label": "FRAME",
"debugBar.frame.tip": "過去 5 秒內最差的時間。",
"debugBar.frame.tip": "過去 5 秒內最差的影格時間。",
"debugBar.jank.label": "JANK",
"debugBar.jank.tip": "過去 5 秒內超過 32ms 的。",
"debugBar.jank.tip": "過去 5 秒內超過 32ms 的影格。",
"debugBar.long.label": "LONG",
"debugBar.long.tip": "過去 5 秒內的阻塞時間和長任務計數。最大任務:{{max}}。",
"debugBar.delay.label": "DELAY",
+1 -1
View File
@@ -8,7 +8,7 @@ export { useTabs } from "./context/tabs"
export { useProviders } from "./hooks/use-providers"
export { ACCEPTED_FILE_EXTENSIONS, ACCEPTED_FILE_TYPES, filePickerFilters } from "./constants/file-picker"
export { useCommand } from "./context/command"
export { loadLocaleDict, normalizeLocale, type Locale } from "./context/language"
export { loadLocaleDict, normalizeLocale, type Locale, useLanguage } from "./context/language"
export { useWslServers } from "./wsl/context"
export { type DisplayBackend, type FatalRendererErrorLog, type Platform, PlatformProvider } from "./context/platform"
export { type UpdaterPlatform, type UpdaterState } from "./updater"
@@ -1,7 +1,6 @@
import type { Session } from "@opencode-ai/sdk/v2/client"
import { preloadMarkdown } from "@opencode-ai/session-ui/markdown-cache"
import { useDialog } from "@opencode-ai/ui/context/dialog"
import { useMarked } from "@opencode-ai/ui/context/marked"
import { useQuery } from "@tanstack/solid-query"
import { DateTime } from "luxon"
import { type Accessor, createEffect, createMemo, createRoot, type JSX, startTransition } from "solid-js"
@@ -44,7 +43,6 @@ export function createHomeSessionsController(home: HomeController) {
const command = useCommand()
const dialog = useDialog()
const language = useLanguage()
const marked = useMarked()
const projectDirectories = createMemo(() => {
const project = home.project.selected()
if (!project) return home.project.list().flatMap(directories)
@@ -119,7 +117,7 @@ export function createHomeSessionsController(home: HomeController) {
(ctx.sync.session.data.message[record.session.id] ?? []).flatMap((message) =>
(ctx.sync.session.data.part[message.id] ?? []).flatMap((part) => {
if (part.type !== "text" || !part.text) return []
return preloadMarkdown(part.text, part.id, marked)
return preloadMarkdown(part.text, part.id)
}),
),
),
+15 -14
View File
@@ -2278,7 +2278,7 @@ export default function LegacyLayout(props: ParentProps) {
data-component="sidebar-nav-desktop"
classList={{
"hidden xl:block": true,
"absolute inset-y-0 left-0": true,
"absolute inset-y-0 start-0": true,
"z-10": true,
}}
style={{ width: `${side()}px` }}
@@ -2301,7 +2301,7 @@ export default function LegacyLayout(props: ParentProps) {
<Show when={layout.sidebar.opened()}>
<div
class="hidden xl:block absolute inset-y-0 z-30 w-0 overflow-visible"
style={{ left: `${side()}px` }}
style={{ "inset-inline-start": `${side()}px` }}
onPointerDown={() => setState("sizing", true)}
>
<ResizeHandle
@@ -2320,8 +2320,8 @@ export default function LegacyLayout(props: ParentProps) {
</Show>
<div
class="hidden xl:block pointer-events-none absolute top-0 right-0 z-0 border-t border-border-weaker-base"
style={{ left: "calc(4rem + 12px)" }}
class="hidden xl:block pointer-events-none absolute top-0 end-0 z-0 border-t border-border-weaker-base"
style={{ "inset-inline-start": "calc(4rem + 12px)" }}
/>
<div class="xl:hidden">
@@ -2339,9 +2339,9 @@ export default function LegacyLayout(props: ParentProps) {
aria-label={language.t("sidebar.nav.projectsAndSessions")}
data-component="sidebar-nav-mobile"
classList={{
"@container fixed top-10 bottom-0 left-0 z-50 w-full max-w-[400px] overflow-hidden border-r border-border-weaker-base bg-background-base transition-transform duration-200 ease-out": true,
"@container fixed top-10 bottom-0 start-0 z-50 w-full max-w-[400px] overflow-hidden border-e border-border-weaker-base bg-background-base transition-transform duration-200 ease-out": true,
"translate-x-0": layout.mobileSidebar.opened(),
"-translate-x-full": !layout.mobileSidebar.opened(),
"ltr:-translate-x-full rtl:translate-x-full": !layout.mobileSidebar.opened(),
}}
onClick={(e) => e.stopPropagation()}
>
@@ -2352,9 +2352,9 @@ export default function LegacyLayout(props: ParentProps) {
<div
classList={{
"absolute inset-0": true,
"xl:inset-y-0 xl:right-0 xl:left-[var(--main-left)]": true,
"xl:inset-y-0 xl:end-0 xl:start-[var(--main-left)]": true,
"z-20": true,
"transition-[left] duration-200 ease-[cubic-bezier(0.22,1,0.36,1)] will-change-[left] motion-reduce:transition-none":
"transition-[inset-inline-start] duration-200 ease-[cubic-bezier(0.22,1,0.36,1)] will-change-[inset-inline-start] motion-reduce:transition-none":
!state.sizing,
}}
style={{
@@ -2363,7 +2363,7 @@ export default function LegacyLayout(props: ParentProps) {
>
<main
classList={{
"size-full overflow-x-hidden flex flex-col items-start contain-strict border-t border-border-weak-base bg-background-base xl:border-l xl:rounded-tl-[12px]": true,
"size-full overflow-x-hidden flex flex-col items-start contain-strict border-t border-border-weak-base bg-background-base xl:border-s xl:rounded-ss-[12px]": true,
}}
>
<Show when={!autoselecting.loading} fallback={<div class="size-full" />}>
@@ -2374,9 +2374,10 @@ export default function LegacyLayout(props: ParentProps) {
<div
classList={{
"hidden xl:flex absolute inset-y-0 left-16 z-30": true,
"hidden xl:flex absolute inset-y-0 start-16 z-30": true,
"opacity-100 translate-x-0 pointer-events-auto": state.peeked && !layout.sidebar.opened(),
"opacity-0 -translate-x-2 pointer-events-none": !state.peeked || layout.sidebar.opened(),
"opacity-0 ltr:-translate-x-2 rtl:translate-x-2 pointer-events-none":
!state.peeked || layout.sidebar.opened(),
"transition-[opacity,transform] motion-reduce:transition-none": true,
"duration-180 ease-out": state.peeked && !layout.sidebar.opened(),
"duration-120 ease-in": !state.peeked || layout.sidebar.opened(),
@@ -2398,14 +2399,14 @@ export default function LegacyLayout(props: ParentProps) {
<div
classList={{
"hidden xl:block pointer-events-none absolute inset-y-0 right-0 z-25 overflow-hidden": true,
"hidden xl:block pointer-events-none absolute inset-y-0 end-0 z-25 overflow-hidden": true,
"opacity-100 translate-x-0": state.peeked && !layout.sidebar.opened(),
"opacity-0 -translate-x-2": !state.peeked || layout.sidebar.opened(),
"opacity-0 ltr:-translate-x-2 rtl:translate-x-2": !state.peeked || layout.sidebar.opened(),
"transition-[opacity,transform] motion-reduce:transition-none": true,
"duration-180 ease-out": state.peeked && !layout.sidebar.opened(),
"duration-120 ease-in": !state.peeked || layout.sidebar.opened(),
}}
style={{ left: `calc(4rem + ${panel()}px)` }}
style={{ "inset-inline-start": `calc(4rem + ${panel()}px)` }}
>
<div class="h-full w-px" style={{ "box-shadow": "var(--shadow-sidebar-overlay)" }} />
</div>
+1 -1
View File
@@ -2282,7 +2282,7 @@ export default function Page() {
<div onPointerDown={() => size.start()}>
<ResizeHandle
classList={{
"-right-1": settings.general.newLayoutDesigns(),
"-end-1": settings.general.newLayoutDesigns(),
}}
direction="horizontal"
size={sessionPanelResizedWidth()}
@@ -18,11 +18,7 @@ export function SessionFollowupDock(props: {
const toggle = () => setStore("collapsed", (value) => !value)
const total = createMemo(() => props.items.length)
const label = createMemo(() =>
language.t(total() === 1 ? "session.followupDock.summary.one" : "session.followupDock.summary.other", {
count: total(),
}),
)
const label = createMemo(() => language.plural("session.followupDock.summary", total()))
const preview = createMemo(() => props.items[0]?.text ?? "")
return (
@@ -472,7 +472,7 @@ export const SessionQuestionDock: Component<{ request: QuestionRequest; onSubmit
data-answered={answered(i())}
disabled={sending()}
onClick={() => jump(i())}
aria-label={`${language.t("ui.tool.questions")} ${i() + 1}`}
aria-label={language.t("ui.tool.questions.numbered", { number: i() + 1 })}
/>
)}
</For>
@@ -29,11 +29,7 @@ export function SessionRevertDock(props: {
const toggle = () => setStore("collapsed", (value) => !value)
const total = createMemo(() => props.items.length)
const label = createMemo(() =>
language.t(total() === 1 ? "session.revertDock.summary.one" : "session.revertDock.summary.other", {
count: total(),
}),
)
const label = createMemo(() => language.plural("session.revertDock.summary", total()))
const preview = createMemo(() => props.items[0]?.text ?? "")
const onHeaderKeyDown = (event: KeyboardEvent) => {
@@ -161,10 +161,7 @@ function TimelineDiffSummaryRow(props: { diffs: SummaryDiff[] }) {
>
<div data-slot="session-turn-diffs-header">
<span data-slot="session-turn-diffs-label">
{language.t(
props.diffs.length === 1 ? "ui.sessionTurn.diffs.changed.one" : "ui.sessionTurn.diffs.changed.other",
{ count: String(props.diffs.length) },
)}
{language.plural("ui.sessionTurn.diffs.changed", props.diffs.length)}
</span>
<DiffChanges changes={props.diffs} />
<Show when={overflow() > 0}>
@@ -1106,7 +1103,7 @@ export function MessageTimeline(props: {
return (
<TimelineRowFrame row={commentStripRow}>
<div class="w-full px-4 md:px-5 pb-2">
<div class="ml-auto max-w-[82%] overflow-x-auto no-scrollbar">
<div class="ms-auto max-w-[82%] overflow-x-auto no-scrollbar">
<div class="flex w-max min-w-full justify-end gap-2">
<Index each={comments()}>
{(comment) => (
+2 -1
View File
@@ -568,8 +568,9 @@ export function removePersisted(
export function persisted<T>(
target: string | PersistTarget,
store: [Store<T>, SetStoreFunction<T>],
platformOverride?: Platform,
): PersistedWithReady<T> {
const platform = usePlatform()
const platform = platformOverride ?? usePlatform()
const config = resolveTarget(typeof target === "string" ? { key: target } : target, platform)
const defaults = snapshot(store[0])
+2 -2
View File
@@ -48,7 +48,7 @@ describe("WSL server settings presentation", () => {
matchesDesktop: null,
error: null,
}),
).toBe("Install OpenCode")
).toBe("wsl.onboarding.installOpencode")
expect(
wslOpencodeAction({
distro: "Debian",
@@ -58,7 +58,7 @@ describe("WSL server settings presentation", () => {
matchesDesktop: false,
error: null,
}),
).toBe("Update OpenCode")
).toBe("wsl.onboarding.updateOpencode")
expect(
wslOpencodeAction({
distro: "Debian",
+2 -2
View File
@@ -53,8 +53,8 @@ export const wslRuntimeRetryable = (runtime: WslServerRuntime) =>
export function wslOpencodeAction(check?: WslOpencodeCheck) {
if (!check) return
if (!check.resolvedPath) return "Install OpenCode"
if (check.matchesDesktop === false) return "Update OpenCode"
if (!check.resolvedPath) return "wsl.onboarding.installOpencode"
if (check.matchesDesktop === false) return "wsl.onboarding.updateOpencode"
}
export function wslDistroReady(state: WslServersState | undefined, name: string) {
+1 -1
View File
@@ -124,7 +124,7 @@ export function WslServerSettings(props: {
disabled={busy() || request.isPending}
onClick={() => api && request.mutate(() => api.installOpencode(item.config.distro))}
>
{busy() ? language.t("wsl.server.updating") : label()}
{busy() ? language.t("wsl.server.updating") : language.t(label())}
</ButtonV2>
)}
</Show>
@@ -1,10 +1,11 @@
import { beforeAll, describe, expect, mock, test } from "bun:test"
import { describe, expect, test } from "bun:test"
import type { AsyncStorage } from "@solid-primitives/storage"
import { createEffect, createRoot } from "solid-js"
import type { Platform } from "@/context/platform"
import { createPromptReady, createPromptSession } from "@/context/prompt-state"
import { ServerScope } from "@/utils/server-scope"
import { createDraftStore } from "@/utils/draft-store"
let Prompt: typeof import("@/context/prompt")
let read: ((value: string | null) => void) | undefined
const storage: AsyncStorage = {
@@ -17,32 +18,25 @@ const storage: AsyncStorage = {
length: Promise.resolve(0),
}
beforeAll(async () => {
mock.module("@solidjs/router", () => ({
useParams: () => ({}),
useSearchParams: () => [{}],
useLocation: () => ({ pathname: "", query: {} }),
useNavigate: () => () => undefined,
}))
mock.module("@opencode-ai/ui/context", () => ({
createSimpleContext: () => ({
use: () => undefined,
provider: () => undefined,
}),
}))
mock.module("@/context/platform", () => ({
usePlatform: () => ({ platform: "desktop", storage: () => storage, draftStore: storage }),
}))
Prompt = await import("@/context/prompt")
})
const platform: Platform = {
platform: "web",
openExternal: () => undefined,
restart: async () => undefined,
notify: async () => undefined,
draftStore: {
...storage,
putBlob: async () => {
throw new Error("putBlob is not used by this test")
},
},
}
describe("prompt persistence", () => {
test("waits for an async draft to hydrate before reporting ready", async () => {
await new Promise<void>((resolve, reject) => {
createRoot((dispose) => {
const session = Prompt.createPromptSession(ServerScope.local, { draftID: "draft-async" })
const ready = Prompt.createPromptReady(() => session)
const session = createPromptSession(ServerScope.local, { draftID: "draft-async" }, undefined, platform)
const ready = createPromptReady(() => session)
expect(ready()).toBe(false)
expect(session.current()[0]).toMatchObject({ type: "text", content: "" })
+5
View File
@@ -2,3 +2,8 @@
- Renderer process should only call `window.api` from `src/preload`.
- Main process should register IPC handlers in `src/main/ipc.ts`.
- NEVER hardcode user-visible English strings in production code. ALWAYS use an i18n key for native menus, picker titles, dialogs, buttons, accessible labels, and displayed errors.
- When migrating existing copy to i18n, preserve the English text byte-for-byte unless the task explicitly requests a copy change.
- NEVER change existing English text or English keys to facilitate translation. English is intentional, designer-written source copy; adapt locale-specific translations and i18n mechanics around it.
- Do not translate from model knowledge alone. Verify terminology and grammar with Unicode CLDR locale/plural data, Microsoft Localization Style Guides and terminology, Apple localization/style guidance and localized platform UI, Mozilla localization style guides, Mozilla Pontoon, and the Firefox localization corpus at `github.com/mozilla-l10n/firefox-l10n`.
- Also use the relevant language authority or official dictionary for the locale (for example RAE/Fundéu, FranceTerme, Duden, TDK, Kotus/Kielitoimiston sanakirja, Språkrådet/Bokmålsordboka, Rada Języka Polskiego/PWN, the Russian and Arabic language academies, the Ukrainian Orthography, Taiwan MOE dictionaries, or the Royal Society of Thailand). Treat the English dictionary as the semantic source of truth and preserve placeholders, code identifiers, product names, and keyboard labels.
@@ -1,5 +1,6 @@
import { randomUUID } from "node:crypto"
import { open } from "node:fs/promises"
import { nativeT } from "./native-translations"
export const MAX_ATTACHMENT_BYTES = 20 * 1024 * 1024
@@ -18,7 +19,7 @@ export function createPickedFileAuthorizations(
async read(sender: number, token: string, path: string) {
const selection = selections.get(token)
if (selection?.sender !== sender || !selection.paths.delete(path))
throw new Error("File was not selected by the picker")
throw new Error(nativeT("desktop.picker.error.notSelected"))
const bytes = await read(path, selection.remaining)
selection.remaining -= bytes.byteLength
if (selection.paths.size === 0) selections.delete(token)
@@ -33,7 +34,7 @@ export function createPickedFileAuthorizations(
export function assertAttachmentBudget(files: { size: number }[]) {
const total = files.reduce((sum, file) => sum + file.size, 0)
if (total <= MAX_ATTACHMENT_BYTES) return
throw new Error(`Selected attachments exceed the ${MAX_ATTACHMENT_BYTES / 1024 / 1024} MB limit`)
throw new Error(nativeT("desktop.picker.error.sizeLimit", { limit: MAX_ATTACHMENT_BYTES / 1024 / 1024 }))
}
export async function readAttachment(filePath: string, maxBytes = MAX_ATTACHMENT_BYTES) {
@@ -41,7 +42,7 @@ export async function readAttachment(filePath: string, maxBytes = MAX_ATTACHMENT
try {
const info = await file.stat()
if (info.size > maxBytes)
throw new Error(`Selected attachments exceed the ${MAX_ATTACHMENT_BYTES / 1024 / 1024} MB limit`)
throw new Error(nativeT("desktop.picker.error.sizeLimit", { limit: MAX_ATTACHMENT_BYTES / 1024 / 1024 }))
const bytes = Buffer.allocUnsafe(info.size)
let offset = 0
while (offset < info.size) {
+13 -14
View File
@@ -48,6 +48,7 @@ import { spawnWslSidecar } from "./wsl/sidecar"
import { migrate } from "./migrate"
import { cleanupStoreFiles } from "./store-cleanup"
import { startBackgroundCli } from "./background-cli"
import { setNativeTranslations } from "./native-translations"
const APP_NAMES: Record<string, string> = {
dev: "OpenCode Dev",
@@ -271,6 +272,14 @@ const main = Effect.gen(function* () {
registerRendererProtocol()
setDockIcon()
const updater = setupAutoUpdater(stopSidecars)
const menuDeps = {
trigger: (id: string) => {
const win = getLastFocusedWindow()
if (win) sendMenuCommand(win, id)
},
checkForUpdates: () => void showUpdaterDialog(updater, true),
relaunch,
}
registerIpcHandlers({
killSidecar: () => killSidecar(),
relaunch,
@@ -298,6 +307,9 @@ const main = Effect.gen(function* () {
setBackgroundColor: (color) => setBackgroundColor(color),
exportDebugLogs: () => exportDebugLogs(),
recordFatalRendererError: (error) => writeLog("renderer", "fatal renderer error", { ...error }, "error"),
setNativeTranslations: (bundle) => {
if (setNativeTranslations(bundle)) createMenu(menuDeps)
},
})
registerWslIpcHandlers(wslServers)
void updater.start()
@@ -397,20 +409,7 @@ const main = Effect.gen(function* () {
yield* Fiber.await(loadingTask)
const windows = restoreMainWindows()
if (windows.length) {
createMenu({
trigger: (id) => {
const win = getLastFocusedWindow()
if (win) sendMenuCommand(win, id)
},
checkForUpdates: () => {
void showUpdaterDialog(updater, true)
},
relaunch: () => {
relaunch()
},
})
}
if (windows.length) createMenu(menuDeps)
})
Effect.runFork(main)
+16 -4
View File
@@ -4,6 +4,7 @@ import { basename, join } from "node:path"
import { app, BrowserWindow, clipboard, dialog, ipcMain, shell } from "electron"
import type { IpcMainEvent, IpcMainInvokeEvent } from "electron"
import type { DesktopMenuAction } from "@opencode-ai/app/desktop-menu"
import { parseDesktopNativeBundle, type DesktopNativeBundle } from "@opencode-ai/app/i18n/desktop-native"
import type { FatalRendererError, ServerReadyData, TitlebarTheme } from "../preload/types"
import { runDesktopMenuAction } from "./desktop-menu-actions"
@@ -22,10 +23,11 @@ import {
import type { UpdaterController } from "./updater-controller"
import { createUpdaterSubscriptions } from "./updater-subscriptions"
import { createDesktopDraftStore } from "./draft-store"
import { nativeT } from "./native-translations"
const pickerFilters = (ext?: string[]) => {
if (!ext || ext.length === 0) return undefined
return [{ name: "Files", extensions: ext }]
return [{ name: nativeT("desktop.dialog.files"), extensions: ext }]
}
const pickedFiles = createPickedFileAuthorizations()
@@ -49,6 +51,7 @@ type Deps = {
setBackgroundColor: (color: string) => void
exportDebugLogs: () => Promise<string>
recordFatalRendererError: (error: FatalRendererError) => Promise<void> | void
setNativeTranslations: (bundle: DesktopNativeBundle) => void
}
export function registerIpcHandlers(deps: Deps) {
@@ -99,6 +102,15 @@ export function registerIpcHandlers(deps: Deps) {
ipcMain.handle("record-fatal-renderer-error", (_event: IpcMainInvokeEvent, error: FatalRendererError) =>
deps.recordFatalRendererError(error),
)
ipcMain.handle("set-native-translations", (event: IpcMainInvokeEvent, value: unknown) => {
const win = BrowserWindow.fromWebContents(event.sender)
if (!win || win.isDestroyed() || win.webContents !== event.sender || event.senderFrame !== event.sender.mainFrame) {
throw new Error("Invalid native translation sender")
}
const bundle = parseDesktopNativeBundle(value)
if (!bundle) throw new Error("Invalid native translation bundle")
deps.setNativeTranslations(bundle)
})
ipcMain.handle("store-get", (_event: IpcMainInvokeEvent, name: string, key: string) => {
try {
const store = getStore(name)
@@ -142,7 +154,7 @@ export function registerIpcHandlers(deps: Deps) {
async (_event: IpcMainInvokeEvent, opts?: { multiple?: boolean; title?: string; defaultPath?: string }) => {
const result = await dialog.showOpenDialog({
properties: ["openDirectory", ...(opts?.multiple ? ["multiSelections" as const] : []), "createDirectory"],
title: opts?.title ?? "Choose a folder",
title: opts?.title ?? nativeT("desktop.dialog.chooseFolder"),
defaultPath: opts?.defaultPath,
})
if (result.canceled) return null
@@ -158,7 +170,7 @@ export function registerIpcHandlers(deps: Deps) {
) => {
const result = await dialog.showOpenDialog({
properties: ["openFile", ...(opts?.multiple ? ["multiSelections" as const] : [])],
title: opts?.title ?? "Choose a file",
title: opts?.title ?? nativeT("desktop.dialog.chooseFile"),
defaultPath: opts?.defaultPath,
filters: pickerFilters(opts?.extensions),
})
@@ -188,7 +200,7 @@ export function registerIpcHandlers(deps: Deps) {
"save-file-picker",
async (_event: IpcMainInvokeEvent, opts?: { title?: string; defaultPath?: string }) => {
const result = await dialog.showSaveDialog({
title: opts?.title ?? "Save file",
title: opts?.title ?? nativeT("desktop.dialog.saveFile"),
defaultPath: opts?.defaultPath,
})
if (result.canceled) return null
+5 -4
View File
@@ -10,6 +10,7 @@ import {
import { UPDATER_ENABLED } from "./constants"
import { runDesktopMenuAction } from "./desktop-menu-actions"
import { openExternalURL } from "./windows"
import { nativeT } from "./native-translations"
type Deps = {
trigger: (id: string) => void
@@ -21,9 +22,9 @@ export function createMenu(deps: Deps) {
if (process.platform !== "darwin") return
const template = DESKTOP_MENU.filter((menu) => desktopMenuVisible(menu, "macos")).map((menu) => {
if (menu.role) return { role: nativeRole(menu.role) }
if (menu.role) return { role: nativeRole(menu.role), label: nativeT(menu.labelKey) }
return {
label: menu.label,
label: nativeT(menu.labelKey),
submenu: menu.items
?.filter((entry) => desktopMenuVisible(entry, "macos"))
.map((entry) => nativeItem(entry, deps)),
@@ -35,10 +36,10 @@ export function createMenu(deps: Deps) {
function nativeItem(entry: DesktopMenuEntry, deps: Deps): MenuItemConstructorOptions {
if (entry.type === "separator") return { type: "separator" }
if (entry.role) return { role: nativeRole(entry.role) }
if (entry.role) return { role: nativeRole(entry.role), label: entry.labelKey ? nativeT(entry.labelKey) : undefined }
const item: MenuItemConstructorOptions = {
label: entry.label,
label: entry.labelKey ? nativeT(entry.labelKey) : undefined,
accelerator: entry.accelerator?.macos,
enabled: entry.enabled === "updater" ? UPDATER_ENABLED : undefined,
}
@@ -0,0 +1,24 @@
import {
DESKTOP_NATIVE_ENGLISH,
DESKTOP_NATIVE_KEYS,
formatDesktopNativeMessage,
type DesktopNativeBundle,
type DesktopNativeKey,
} from "@opencode-ai/app/i18n/desktop-native"
let bundle: DesktopNativeBundle = { locale: "en", messages: { ...DESKTOP_NATIVE_ENGLISH } }
export function setNativeTranslations(next: DesktopNativeBundle) {
if (
next.locale === bundle.locale &&
DESKTOP_NATIVE_KEYS.every((key) => next.messages[key] === bundle.messages[key])
) {
return false
}
bundle = next
return true
}
export function nativeT(key: DesktopNativeKey, params?: Record<string, string | number>) {
return formatDesktopNativeMessage(bundle.messages[key], params)
}
+14 -5
View File
@@ -5,6 +5,7 @@ import { createUpdaterController, type UpdaterReadyRecord } from "./updater-cont
import { getLogger } from "./logging"
import { getStore } from "./store"
import { setAppQuitting } from "./windows"
import { nativeT } from "./native-translations"
const { autoUpdater } = pkg
const key = "ready"
@@ -63,21 +64,29 @@ export async function showUpdaterDialog(controller: ReturnType<typeof setupAutoU
const state = await controller.check()
if (state.status === "error") {
if (!alertOnFail) return
await dialog.showMessageBox({ type: "error", message: "Update check failed.", title: "Update Error" })
await dialog.showMessageBox({
type: "error",
message: nativeT("desktop.updater.dialog.checkFailed.message"),
title: nativeT("desktop.updater.dialog.checkFailed.title"),
})
return
}
if (state.status === "up-to-date") {
if (!alertOnFail) return
await dialog.showMessageBox({ type: "info", message: "You're up to date.", title: "No Updates" })
await dialog.showMessageBox({
type: "info",
message: nativeT("desktop.updater.dialog.upToDate.message"),
title: nativeT("desktop.updater.dialog.upToDate.title"),
})
return
}
if (state.status !== "ready") return
const response = await dialog.showMessageBox({
type: "info",
message: `Update ${state.version} downloaded. Restart now?`,
title: "Update Ready",
buttons: ["Restart", "Later"],
message: nativeT("desktop.updater.dialog.ready.message", { version: state.version }),
title: nativeT("desktop.updater.dialog.ready.title"),
buttons: [nativeT("desktop.updater.dialog.restart"), nativeT("desktop.updater.dialog.later")],
defaultId: 0,
cancelId: 1,
})
+33 -12
View File
@@ -12,6 +12,7 @@ import { exportDebugLogs, write as writeLog } from "./logging"
import { getStore, removeStoreFile } from "./store"
import { PINCH_ZOOM_ENABLED_KEY, WINDOW_IDS_KEY } from "./store-keys"
import { createUnresponsiveSampler } from "./unresponsive"
import { nativeT } from "./native-translations"
import { createWindowRegistry } from "./window-registry"
import { safeWindowURL } from "./window-state"
import { resolveExternalURL, resolveLocalFilePath } from "./external-url"
@@ -345,19 +346,20 @@ function wireWindowRecovery(win: BrowserWindow, name: string) {
let showing = false
const sampler = createUnresponsiveSampler(win, name)
const handle = async (button: string | undefined, wait: boolean) => {
if (button === "Export Logs") {
type RecoveryAction = "relaunch" | "export-logs" | "keep-waiting" | "quit"
const handle = async (action: RecoveryAction | undefined, wait: boolean) => {
if (action === "export-logs") {
const sampling = sampler.stopAndFlush()
await exportDebugLogs().catch((error) => writeLog("main", "failed to export debug logs", { error }, "error"))
if (wait && sampling) sampler.start()
return true
}
if (button === "Relaunch") {
if (action === "relaunch") {
sampler.stopAndFlush()
relaunchHandler()
return false
}
if (button === "Quit") {
if (action === "quit") {
sampler.stopAndFlush()
app.quit()
}
@@ -369,16 +371,26 @@ function wireWindowRecovery(win: BrowserWindow, name: string) {
showing = true
try {
while (!win.isDestroyed()) {
const buttons = wait ? ["Relaunch", "Export Logs", "Keep Waiting"] : ["Relaunch", "Export Logs", "Quit"]
const actions: { id: RecoveryAction; label: string }[] = wait
? [
{ id: "relaunch", label: nativeT("desktop.recovery.action.relaunch") },
{ id: "export-logs", label: nativeT("desktop.recovery.action.exportLogs") },
{ id: "keep-waiting", label: nativeT("desktop.recovery.action.keepWaiting") },
]
: [
{ id: "relaunch", label: nativeT("desktop.recovery.action.relaunch") },
{ id: "export-logs", label: nativeT("desktop.recovery.action.exportLogs") },
{ id: "quit", label: nativeT("desktop.recovery.action.quit") },
]
const result = await dialog.showMessageBox(win, {
type: "warning",
buttons,
buttons: actions.map((action) => action.label),
defaultId: 0,
cancelId: 2,
message,
detail,
})
if (await handle(buttons[result.response], wait)) continue
if (await handle(actions[result.response]?.id, wait)) continue
return
}
} finally {
@@ -410,8 +422,13 @@ function wireWindowRecovery(win: BrowserWindow, name: string) {
if (!isMainFrame || errorCode === -3) return
void show(
"OpenCode failed to load",
[`Window: ${name}`, `URL: ${validatedURL}`, `Error: ${errorCode} ${errorDescription}`].join("\n"),
nativeT("desktop.recovery.loadFailed"),
nativeT("desktop.recovery.loadFailed.detail", {
window: name,
url: validatedURL,
code: errorCode,
description: errorDescription,
}),
false,
)
}
@@ -426,15 +443,19 @@ function wireWindowRecovery(win: BrowserWindow, name: string) {
sampler.stopAndFlush()
writeLog("window", "renderer process gone", { window: name, currentURL: safeWindowURL(win), details }, "error")
void show(
"OpenCode window terminated unexpectedly",
[`Window: ${name}`, `Reason: ${details.reason}`, `Code: ${details.exitCode ?? "<unknown>"}`].join("\n"),
nativeT("desktop.recovery.terminated"),
nativeT("desktop.recovery.terminated.detail", {
window: name,
reason: details.reason,
code: details.exitCode ?? nativeT("desktop.recovery.unknown"),
}),
false,
)
})
win.on("unresponsive", () => {
writeLog("window", "renderer unresponsive", { window: name, currentURL: safeWindowURL(win) }, "error")
sampler.start()
void show("OpenCode is not responding", "You can relaunch the app, open the logs, or keep waiting.", true)
void show(nativeT("desktop.recovery.unresponsive"), nativeT("desktop.recovery.unresponsive.detail"), true)
})
win.on("responsive", () => {
writeLog("window", "renderer responsive", { window: name, currentURL: safeWindowURL(win) }, "error")
+3 -2
View File
@@ -3,6 +3,7 @@ import type { IpcMainInvokeEvent } from "electron"
import type { WslServersController } from "./servers"
import { requireWslIpcString, requireWslIpcStrings } from "./policy"
import type { WslServersState } from "../../preload/types"
import { nativeT } from "../native-translations"
export function registerWslIpcHandlers(controller: WslServersController) {
if (process.platform !== "win32") {
@@ -68,13 +69,13 @@ export function registerWslIpcHandlers(controller: WslServersController) {
function registerUnavailableWslIpcHandlers() {
const unavailable = () => {
throw new Error("WSL is only available on Windows")
throw new Error(nativeT("desktop.wsl.error.windowsOnly"))
}
const state = (): WslServersState => ({
runtime: {
available: false,
version: null,
error: "WSL is only available on Windows",
error: nativeT("desktop.wsl.error.windowsOnly"),
},
installed: [],
online: [],
+11 -6
View File
@@ -4,6 +4,7 @@ import { join } from "node:path"
import * as pty from "@lydell/node-pty"
import type { WslDistroProbe, WslInstalledDistro, WslOnlineDistro, WslRuntimeCheck } from "../../preload/types"
import { wslTerminalArgs } from "./policy"
import { nativeT } from "../native-translations"
export type WslCommandLine = {
stream: "stdout" | "stderr"
@@ -68,7 +69,9 @@ function runCommand(command: string, args: string[], opts: RunWslOptions = {}) {
} catch {
/* ignore */
}
reject(new Error(`${command} ${args.join(" ")} timed out after ${timeoutMs}ms`))
reject(
new Error(nativeT("desktop.wsl.error.commandTimeout", { command, args: args.join(" "), timeout: timeoutMs })),
)
}, timeoutMs)
let stdout = ""
@@ -139,7 +142,9 @@ function runInteractiveCommand(command: string, args: string[], opts: RunWslOpti
if (settled) return
settled = true
cleanup()
reject(new Error(`${command} ${args.join(" ")} timed out after ${timeoutMs}ms`))
reject(
new Error(nativeT("desktop.wsl.error.commandTimeout", { command, args: args.join(" "), timeout: timeoutMs })),
)
}, timeoutMs)
const abortHandler = () => {
@@ -214,7 +219,7 @@ export async function probeWslRuntime(opts?: RunWslOptions): Promise<WslRuntimeC
return {
available: false,
version: null,
error: summarize(version.stderr || version.stdout) || "WSL is unavailable",
error: summarize(version.stderr || version.stdout) || nativeT("desktop.wsl.error.unavailable"),
}
}
@@ -228,7 +233,7 @@ export async function probeWslRuntime(opts?: RunWslOptions): Promise<WslRuntimeC
export async function listInstalledWslDistros(opts?: RunWslOptions) {
const result = await runWsl(["--list", "--verbose"], opts)
if (result.code !== 0) {
throw new Error(summarize(result.stderr || result.stdout) || "Failed to list installed WSL distros")
throw new Error(summarize(result.stderr || result.stdout) || nativeT("desktop.wsl.error.listInstalled"))
}
return parseInstalledDistros(result.stdout)
}
@@ -236,7 +241,7 @@ export async function listInstalledWslDistros(opts?: RunWslOptions) {
export async function listOnlineWslDistros(opts?: RunWslOptions) {
const result = await runWsl(["--list", "--online"], opts)
if (result.code !== 0) {
throw new Error(summarize(result.stderr || result.stdout) || "Failed to list online WSL distros")
throw new Error(summarize(result.stderr || result.stdout) || nativeT("desktop.wsl.error.listOnline"))
}
return parseOnlineDistros(result.stdout)
}
@@ -284,7 +289,7 @@ export async function probeWslDistro(name: string, opts?: RunWslOptions): Promis
canExecute: false,
hasBash: false,
hasCurl: false,
error: summarize(executable.stderr || executable.stdout) || "Cannot execute commands in distro",
error: summarize(executable.stderr || executable.stdout) || nativeT("desktop.wsl.error.executeDistro"),
}
}
+9 -7
View File
@@ -15,6 +15,7 @@ import { WSL_SERVERS_KEY } from "../store-keys"
import { getStore } from "../store"
import { expectOpencodeVersion, pendingRestartAfterWslInstall, wslServerIdsToStartOnInitialize } from "./startup"
import { clearWslDistroState, wslServerIdToRestart } from "./policy"
import { nativeT } from "../native-translations"
import {
installWslDistro,
installWslOpencode,
@@ -327,7 +328,7 @@ export function createWslServersController(
await runJob({ kind: "install-wsl", startedAt: Date.now() }, async (abort) => {
const result = await installWslRuntimeElevated({ signal: abort.signal })
if (result.code !== 0) {
const message = summarize(result.stderr || result.stdout) || "WSL installation failed"
const message = summarize(result.stderr || result.stdout) || nativeT("desktop.wsl.error.installWsl")
throw new Error(message)
}
const runtime = await probeWslRuntime({ signal: abort.signal })
@@ -339,7 +340,8 @@ export function createWslServersController(
await runJob({ kind: "install-distro", distro: name, startedAt: Date.now() }, async (abort) => {
const result = await installWslDistro(name, { signal: abort.signal })
if (result.code !== 0) {
const message = summarize(result.stderr || result.stdout) || `Failed to install distro: ${name}`
const message =
summarize(result.stderr || result.stdout) || nativeT("desktop.wsl.error.installDistro", { distro: name })
throw new Error(message)
}
const distros = await refreshDistroLists({ signal: abort.signal })
@@ -362,7 +364,7 @@ export function createWslServersController(
await runJob({ kind: "install-opencode", distro: name, startedAt: Date.now() }, async (abort) => {
const result = await installWslOpencode(appVersion, name, { signal: abort.signal })
if (result.code !== 0) {
throw new Error(summarize(result.stderr || result.stdout) || "OpenCode installation failed")
throw new Error(summarize(result.stderr || result.stdout) || nativeT("desktop.wsl.error.installOpencode"))
}
await refreshOpencodeCheck(name, { signal: abort.signal })
expectOpencodeVersion(state.opencodeChecks[name]?.version ?? null, appVersion, name)
@@ -378,7 +380,7 @@ export function createWslServersController(
async addServer(distro: string): Promise<WslServerConfig> {
const id = wslServerIdForDistro(distro)
if (state.servers.some((item) => item.config.id === id)) {
throw new Error(`${distro} is already added`)
throw new Error(nativeT("desktop.wsl.error.alreadyAdded", { distro }))
}
const config: WslServerConfig = {
id,
@@ -475,7 +477,7 @@ function opencodeCheck(
version: null,
expectedVersion,
matchesDesktop: null,
error: "opencode is not installed in this distro",
error: nativeT("desktop.wsl.error.opencodeMissing"),
}
}
if (!version) {
@@ -485,7 +487,7 @@ function opencodeCheck(
version: null,
expectedVersion,
matchesDesktop: null,
error: "opencode is installed but could not run",
error: nativeT("desktop.wsl.error.opencodeCannotRun"),
}
}
return {
@@ -503,7 +505,7 @@ function distroProbeReady(probe: WslDistroProbe | undefined) {
}
function startupFailure(code: number | null, signal: NodeJS.Signals | null) {
return `WSL server exited after startup (code=${code ?? "null"} signal=${signal ?? "null"})`
return nativeT("desktop.wsl.error.serverExited", { code: code ?? "null", signal: signal ?? "null" })
}
// Re-export types used by callers
+9 -4
View File
@@ -5,6 +5,7 @@ import { app } from "electron"
import { checkHealth } from "../server"
import { type WslCommandLine, resolveWslOpencode, shellEscape, wslArgs } from "./runtime"
import { pollWslHealth } from "./startup"
import { nativeT } from "../native-translations"
export type WslSidecar = {
listener: { stop: () => void; onExit: (cb: (code: number | null, signal: NodeJS.Signals | null) => void) => void }
@@ -18,7 +19,7 @@ export async function spawnWslSidecar(
opts: { onLine?: (line: WslCommandLine) => void; healthTimeoutMs?: number } = {},
): Promise<WslSidecar> {
const opencode = await resolveWslOpencode(distro)
if (!opencode) throw new Error(`OpenCode is not installed in ${distro}`)
if (!opencode) throw new Error(nativeT("desktop.wsl.error.opencodeNotInstalled", { distro }))
const port = await allocatePort()
const password = randomUUID()
@@ -64,7 +65,7 @@ export async function spawnWslSidecar(
const timedOut = new Promise<never>(
(_, reject) =>
(timeout = setTimeout(
() => reject(new Error(`Sidecar for ${distro} health check timed out after ${timeoutMs}ms`)),
() => reject(new Error(nativeT("desktop.wsl.error.healthTimeout", { distro, timeout: timeoutMs }))),
timeoutMs,
)),
)
@@ -97,7 +98,7 @@ function allocatePort() {
const address = server.address()
if (typeof address !== "object" || !address) {
server.close()
reject(new Error("Failed to get port"))
reject(new Error(nativeT("desktop.wsl.error.failedPort")))
return
}
server.close(() => resolve(address.port))
@@ -125,5 +126,9 @@ function forwardLines(
function startupFailure(code: number | null, signal: NodeJS.Signals | null, recentOutput: string[]) {
const suffix = recentOutput.length ? `\n${recentOutput.join("\n")}` : ""
return `WSL server exited before becoming healthy (code=${code ?? "null"} signal=${signal ?? "null"})${suffix}`
return nativeT("desktop.wsl.error.serverExitedBeforeHealthy", {
code: code ?? "null",
signal: signal ?? "null",
output: suffix,
})
}
+7 -1
View File
@@ -1,3 +1,5 @@
import { nativeT } from "../native-translations"
export function wslServerIdsToStartOnInitialize(servers: { id: string }[]) {
return servers.map((server) => server.id)
}
@@ -5,7 +7,11 @@ export function wslServerIdsToStartOnInitialize(servers: { id: string }[]) {
export function expectOpencodeVersion(installed: string | null, expected: string, distro = "Debian") {
if (installed === expected) return
throw new Error(
`OpenCode update finished but ${distro} still reports ${installed ?? "no version"}; expected ${expected}`,
nativeT("desktop.wsl.error.updateVersion", {
distro,
installed: installed ?? nativeT("desktop.wsl.error.noVersion"),
expected,
}),
)
}
+1
View File
@@ -132,6 +132,7 @@ const api: ElectronAPI = {
exportDebugLogs: () => ipcRenderer.invoke("export-debug-logs"),
setForceFocus: (enabled) => ipcRenderer.invoke("set-force-focus", enabled),
recordFatalRendererError: (error) => ipcRenderer.invoke("record-fatal-renderer-error", error),
setNativeTranslations: (bundle) => ipcRenderer.invoke("set-native-translations", bundle),
}
contextBridge.exposeInMainWorld("api", api)
+2
View File
@@ -1,6 +1,7 @@
import type { DesktopMenuAction } from "@opencode-ai/app/desktop-menu"
import type { WslServersPlatform } from "@opencode-ai/app/wsl/types"
import type { UpdaterState } from "@opencode-ai/app/updater"
import type { DesktopNativeBundle } from "@opencode-ai/app/i18n/desktop-native"
export type {
WslDistroProbe,
WslInstalledDistro,
@@ -111,4 +112,5 @@ export type ElectronAPI = {
exportDebugLogs: () => Promise<string>
setForceFocus: (enabled: boolean) => Promise<void>
recordFatalRendererError: (error: FatalRendererError) => Promise<void>
setNativeTranslations: (bundle: DesktopNativeBundle) => Promise<void>
}
+5 -4
View File
@@ -1,11 +1,11 @@
export const dict = {
"desktop.menu.checkForUpdates": "التحقق من وجود تحديثات...",
"desktop.menu.installCli": "تثبيت CLI...",
"desktop.menu.reloadWebview": "إعادة تحميل Webview",
"desktop.menu.reloadWebview": "إعادة تحميل عرض الويب",
"desktop.menu.restart": "إعادة تشغيل",
"desktop.dialog.chooseFolder": "اختر مجلدًا",
"desktop.dialog.chooseFile": "اختر ملفًا",
"desktop.dialog.chooseFolder": "اختيار مجلد",
"desktop.dialog.chooseFile": "اختيار ملف",
"desktop.dialog.saveFile": "حفظ ملف",
"desktop.updater.checkFailed.title": "فشل التحقق من التحديثات",
@@ -15,7 +15,8 @@ export const dict = {
"desktop.updater.downloadFailed.title": "فشل التحديث",
"desktop.updater.downloadFailed.message": "فشل تنزيل التحديث",
"desktop.updater.downloaded.title": "تم تنزيل التحديث",
"desktop.updater.downloaded.prompt": "تم تنزيل إصدار {{version}} من OpenCode، هل ترغب في تثبيته وإعادة تشغيله؟",
"desktop.updater.downloaded.prompt":
"تم تنزيل الإصدار {{version}} من OpenCode. هل ترغب في تثبيته وإعادة تشغيل التطبيق؟",
"desktop.updater.installFailed.title": "فشل التحديث",
"desktop.updater.installFailed.message": "فشل تثبيت التحديث",
+28
View File
@@ -0,0 +1,28 @@
export const dict = {
"desktop.menu.checkForUpdates": "Yeniləmələri yoxla...",
"desktop.menu.installCli": "CLI-ni quraşdır...",
"desktop.menu.reloadWebview": "Webview-u yenidən yüklə",
"desktop.menu.restart": "Yenidən başlat",
"desktop.dialog.chooseFolder": "Qovluq seçin",
"desktop.dialog.chooseFile": "Fayl seçin",
"desktop.dialog.saveFile": "Faylı saxla",
"desktop.updater.checkFailed.title": "Yeniləmə yoxlaması uğursuz oldu",
"desktop.updater.checkFailed.message": "Yeniləmələr yoxlana bilmədi",
"desktop.updater.none.title": "Yeniləmə mövcud deyil",
"desktop.updater.none.message": "Artıq OpenCode-un ən son versiyasından istifadə edirsiniz",
"desktop.updater.downloadFailed.title": "Yeniləmə uğursuz oldu",
"desktop.updater.downloadFailed.message": "Yeniləmə yüklənə bilmədi",
"desktop.updater.downloaded.title": "Yeniləmə yükləndi",
"desktop.updater.downloaded.prompt":
"OpenCode-un {{version}} versiyası yüklənib. Onu quraşdırıb tətbiqi yenidən başlatmaq istəyirsiniz?",
"desktop.updater.installFailed.title": "Yeniləmə uğursuz oldu",
"desktop.updater.installFailed.message": "Yeniləmə quraşdırıla bilmədi",
"desktop.cli.installed.title": "CLI quraşdırıldı",
"desktop.cli.installed.message":
"CLI {{path}} ünvanına quraşdırıldı\n\n'opencode' əmrindən istifadə etmək üçün terminalı yenidən başladın.",
"desktop.cli.failed.title": "Quraşdırma uğursuz oldu",
"desktop.cli.failed.message": "CLI quraşdırıla bilmədi: {{error}}",
}
+4 -4
View File
@@ -1,10 +1,10 @@
export const dict = {
"desktop.menu.checkForUpdates": "Provjeri ažuriranja...",
"desktop.menu.installCli": "Instaliraj CLI...",
"desktop.menu.reloadWebview": "Ponovo učitavanje webview-a",
"desktop.menu.restart": "Restartuj",
"desktop.menu.reloadWebview": "Ponovo učitaj Webview",
"desktop.menu.restart": "Ponovo pokreni",
"desktop.dialog.chooseFolder": "Odaberi folder",
"desktop.dialog.chooseFolder": "Odaberi fasciklu",
"desktop.dialog.chooseFile": "Odaberi datoteku",
"desktop.dialog.saveFile": "Sačuvaj datoteku",
@@ -22,7 +22,7 @@ export const dict = {
"desktop.cli.installed.title": "CLI instaliran",
"desktop.cli.installed.message":
"CLI je instaliran u {{path}}\n\nRestartuj terminal da bi koristio komandu 'opencode'.",
"CLI je instaliran u {{path}}\n\nPonovo pokreni terminal da bi koristio komandu 'opencode'.",
"desktop.cli.failed.title": "Instalacija nije uspjela",
"desktop.cli.failed.message": "Neuspjela instalacija CLI-a: {{error}}",
}
+1 -1
View File
@@ -1,7 +1,7 @@
export const dict = {
"desktop.menu.checkForUpdates": "Tjek for opdateringer...",
"desktop.menu.installCli": "Installer CLI...",
"desktop.menu.reloadWebview": "Genindlæs Webview",
"desktop.menu.reloadWebview": "Genindlæs webvisning",
"desktop.menu.restart": "Genstart",
"desktop.dialog.chooseFolder": "Vælg en mappe",
+2 -2
View File
@@ -1,6 +1,6 @@
export const dict = {
"desktop.menu.checkForUpdates": "Nach Updates suchen...",
"desktop.menu.installCli": "CLI installieren...",
"desktop.menu.checkForUpdates": "Nach Updates suchen",
"desktop.menu.installCli": "CLI installieren",
"desktop.menu.reloadWebview": "Webview neu laden",
"desktop.menu.restart": "Neustart",
+1 -1
View File
@@ -1,7 +1,7 @@
export const dict = {
"desktop.menu.checkForUpdates": "Buscar actualizaciones...",
"desktop.menu.installCli": "Instalar CLI...",
"desktop.menu.reloadWebview": "Recargar Webview",
"desktop.menu.reloadWebview": "Recargar vista web",
"desktop.menu.restart": "Reiniciar",
"desktop.dialog.chooseFolder": "Elegir una carpeta",
+25
View File
@@ -0,0 +1,25 @@
export const dict = {
"desktop.menu.checkForUpdates": "Tarkista päivitykset...",
"desktop.menu.installCli": "Asenna CLI...",
"desktop.menu.reloadWebview": "Lataa verkkonäkymä uudelleen",
"desktop.menu.restart": "Käynnistä uudelleen",
"desktop.dialog.chooseFolder": "Valitse kansio",
"desktop.dialog.chooseFile": "Valitse tiedosto",
"desktop.dialog.saveFile": "Tallenna tiedosto",
"desktop.updater.checkFailed.title": "Päivitystarkistus epäonnistui",
"desktop.updater.checkFailed.message": "Päivitysten tarkistaminen epäonnistui",
"desktop.updater.none.title": "Päivitystä ei ole saatavilla",
"desktop.updater.none.message": "Käytät jo OpenCoden uusinta versiota",
"desktop.updater.downloadFailed.title": "Päivitys epäonnistui",
"desktop.updater.downloadFailed.message": "Päivityksen lataaminen epäonnistui",
"desktop.updater.downloaded.title": "Päivitys ladattu",
"desktop.updater.downloaded.prompt":
"OpenCoden versio {{version}} on ladattu. Haluatko asentaa sen ja käynnistää OpenCoden uudelleen?",
"desktop.updater.installFailed.title": "Päivitys epäonnistui",
"desktop.updater.installFailed.message": "Päivityksen asentaminen epäonnistui",
"desktop.cli.installed.title": "CLI on asennettu",
"desktop.cli.installed.message":
"CLI on asennettu polkuun {{path}}\n\nKäynnistä terminaali uudelleen, jotta voit käyttää 'opencode'-komentoa.",
"desktop.cli.failed.title": "Asennus epäonnistui",
"desktop.cli.failed.message": "CLI:n asennus epäonnistui: {{error}}",
}
+7 -7
View File
@@ -1,7 +1,7 @@
export const dict = {
"desktop.menu.checkForUpdates": "Vérifier les mises à jour...",
"desktop.menu.installCli": "Installer la CLI...",
"desktop.menu.reloadWebview": "Recharger la Webview",
"desktop.menu.checkForUpdates": "Rechercher des mises à jour...",
"desktop.menu.installCli": "Installer l'interface en ligne de commande...",
"desktop.menu.reloadWebview": "Recharger la vue Web",
"desktop.menu.restart": "Redémarrer",
"desktop.dialog.chooseFolder": "Choisir un dossier",
@@ -16,13 +16,13 @@ export const dict = {
"desktop.updater.downloadFailed.message": "Impossible de télécharger la mise à jour",
"desktop.updater.downloaded.title": "Mise à jour téléchargée",
"desktop.updater.downloaded.prompt":
"La version {{version}} d'OpenCode a été téléchargée. Voulez-vous l'installer et redémarrer ?",
"La version {{version}} d'OpenCode a été téléchargée. Voulez-vous l'installer et relancer l'application ?",
"desktop.updater.installFailed.title": "Échec de la mise à jour",
"desktop.updater.installFailed.message": "Impossible d'installer la mise à jour",
"desktop.cli.installed.title": "CLI installée",
"desktop.cli.installed.title": "Interface en ligne de commande installée",
"desktop.cli.installed.message":
"CLI installée dans {{path}}\n\nRedémarrez votre terminal pour utiliser la commande 'opencode'.",
"Interface en ligne de commande installée dans {{path}}\n\nRedémarrez votre terminal pour utiliser la commande 'opencode'.",
"desktop.cli.failed.title": "Échec de l'installation",
"desktop.cli.failed.message": "Impossible d'installer la CLI : {{error}}",
"desktop.cli.failed.message": "Impossible d'installer l'interface en ligne de commande : {{error}}",
}
+25
View File
@@ -0,0 +1,25 @@
export const dict = {
"desktop.menu.checkForUpdates": "अद्यतन के लिए जाँच...",
"desktop.menu.installCli": "CLI स्थापित करें...",
"desktop.menu.reloadWebview": "Webview पुनः लोड करें",
"desktop.menu.restart": "पुनः आरंभ करें",
"desktop.dialog.chooseFolder": "एक फ़ोल्डर चुनें",
"desktop.dialog.chooseFile": "एक फ़ाइल चुनें",
"desktop.dialog.saveFile": "फ़ाइल सहेजें",
"desktop.updater.checkFailed.title": "अद्यतन जांच विफल",
"desktop.updater.checkFailed.message": "अद्यतनों की जाँच करने में विफल",
"desktop.updater.none.title": "कोई अपडेट उपलब्ध नहीं",
"desktop.updater.none.message": "आप पहले से ही OpenCode का नवीनतम संस्करण उपयोग कर रहे हैं",
"desktop.updater.downloadFailed.title": "अपडेट विफल",
"desktop.updater.downloadFailed.message": "अद्यतन डाउनलोड करने में विफल",
"desktop.updater.downloaded.title": "अद्यतन डाउनलोड किया गया",
"desktop.updater.downloaded.prompt":
"OpenCode का संस्करण {{version}} डाउनलोड हो गया है। क्या आप इसे इंस्टॉल करके ऐप को फिर से खोलना चाहेंगे?",
"desktop.updater.installFailed.title": "अपडेट विफल",
"desktop.updater.installFailed.message": "अद्यतन स्थापित करने में विफल",
"desktop.cli.installed.title": "CLI स्थापित",
"desktop.cli.installed.message":
"CLI को {{path}} पर इंस्टॉल किया गया\n\n'opencode' कमांड का उपयोग करने के लिए अपना टर्मिनल पुनः आरंभ करें।",
"desktop.cli.failed.title": "स्थापना विफल",
"desktop.cli.failed.message": "CLI इंस्टॉल करने में विफल: {{error}}",
}
+28
View File
@@ -0,0 +1,28 @@
export const dict = {
"desktop.menu.checkForUpdates": "Periksa pembaruan...",
"desktop.menu.installCli": "Instal CLI...",
"desktop.menu.reloadWebview": "Muat ulang WebView",
"desktop.menu.restart": "Mulai ulang",
"desktop.dialog.chooseFolder": "Pilih folder",
"desktop.dialog.chooseFile": "Pilih berkas",
"desktop.dialog.saveFile": "Simpan berkas",
"desktop.updater.checkFailed.title": "Pemeriksaan pembaruan gagal",
"desktop.updater.checkFailed.message": "Gagal memeriksa pembaruan",
"desktop.updater.none.title": "Tidak ada pembaruan",
"desktop.updater.none.message": "Anda sudah menggunakan versi terbaru OpenCode",
"desktop.updater.downloadFailed.title": "Pembaruan gagal",
"desktop.updater.downloadFailed.message": "Gagal mengunduh pembaruan",
"desktop.updater.downloaded.title": "Pembaruan diunduh",
"desktop.updater.downloaded.prompt":
"OpenCode versi {{version}} telah diunduh. Apakah Anda ingin menginstalnya dan menjalankan ulang aplikasi?",
"desktop.updater.installFailed.title": "Pembaruan gagal",
"desktop.updater.installFailed.message": "Gagal menginstal pembaruan",
"desktop.cli.installed.title": "CLI terinstal",
"desktop.cli.installed.message":
"CLI terinstal di {{path}}\n\nMulai ulang terminal Anda untuk menggunakan perintah 'opencode'.",
"desktop.cli.failed.title": "Instalasi gagal",
"desktop.cli.failed.message": "Gagal menginstal CLI: {{error}}",
}
+89 -2
View File
@@ -16,6 +16,18 @@ import { dict as desktopAr } from "./ar"
import { dict as desktopNo } from "./no"
import { dict as desktopBr } from "./br"
import { dict as desktopBs } from "./bs"
import { dict as desktopTr } from "./tr"
import { dict as desktopHi } from "./hi"
import { dict as desktopNl } from "./nl"
import { dict as desktopId } from "./id"
import { dict as desktopVi } from "./vi"
import { dict as desktopIt } from "./it"
import { dict as desktopUr } from "./ur"
import { dict as desktopPa } from "./pa"
import { dict as desktopAz } from "./az"
import { dict as desktopFi } from "./fi"
import { dict as desktopSv } from "./sv"
import { dict as desktopTh } from "./th"
import { dict as appEn } from "../../../../app/src/i18n/en"
import { dict as appZh } from "../../../../app/src/i18n/zh"
@@ -33,6 +45,18 @@ import { dict as appAr } from "../../../../app/src/i18n/ar"
import { dict as appNo } from "../../../../app/src/i18n/no"
import { dict as appBr } from "../../../../app/src/i18n/br"
import { dict as appBs } from "../../../../app/src/i18n/bs"
import { dict as appTr } from "../../../../app/src/i18n/tr"
import { dict as appHi } from "../../../../app/src/i18n/hi"
import { dict as appNl } from "../../../../app/src/i18n/nl"
import { dict as appId } from "../../../../app/src/i18n/id"
import { dict as appVi } from "../../../../app/src/i18n/vi"
import { dict as appIt } from "../../../../app/src/i18n/it"
import { dict as appUr } from "../../../../app/src/i18n/ur"
import { dict as appPa } from "../../../../app/src/i18n/pa"
import { dict as appAz } from "../../../../app/src/i18n/az"
import { dict as appFi } from "../../../../app/src/i18n/fi"
import { dict as appSv } from "../../../../app/src/i18n/sv"
import { dict as appTh } from "../../../../app/src/i18n/th"
export type Locale =
| "en"
@@ -51,9 +75,21 @@ export type Locale =
| "no"
| "br"
| "bs"
| "tr"
| "hi"
| "nl"
| "id"
| "vi"
| "it"
| "ur"
| "pa"
| "az"
| "fi"
| "sv"
| "th"
type RawDictionary = typeof appEn & typeof desktopEn
type Dictionary = i18n.Flatten<RawDictionary>
type Dictionary = Record<keyof i18n.Flatten<RawDictionary>, string>
const LOCALES: readonly Locale[] = [
"en",
@@ -72,6 +108,18 @@ const LOCALES: readonly Locale[] = [
"ar",
"no",
"br",
"tr",
"hi",
"nl",
"id",
"vi",
"it",
"ur",
"pa",
"az",
"fi",
"sv",
"th",
]
function detectLocale(): Locale {
@@ -82,7 +130,13 @@ function detectLocale(): Locale {
if (!language) continue
if (language.toLowerCase().startsWith("en")) return "en"
if (language.toLowerCase().startsWith("zh")) {
if (language.toLowerCase().includes("hant")) return "zht"
if (
language.toLowerCase().includes("hant") ||
language.toLowerCase().includes("-tw") ||
language.toLowerCase().includes("-hk") ||
language.toLowerCase().includes("-mo")
)
return "zht"
return "zh"
}
if (language.toLowerCase().startsWith("ko")) return "ko"
@@ -103,6 +157,27 @@ function detectLocale(): Locale {
return "no"
if (language.toLowerCase().startsWith("pt")) return "br"
if (language.toLowerCase().startsWith("bs")) return "bs"
if (language.toLowerCase().startsWith("tr")) return "tr"
if (language.toLowerCase().startsWith("hi")) return "hi"
if (language.toLowerCase().startsWith("nl")) return "nl"
if (language.toLowerCase().startsWith("id")) return "id"
if (language.toLowerCase().startsWith("vi")) return "vi"
if (language.toLowerCase().startsWith("it")) return "it"
if (language.toLowerCase().startsWith("ur")) return "ur"
if (
language.toLowerCase().startsWith("pa") &&
(language.toLowerCase().includes("arab") || language.toLowerCase().includes("-pk"))
)
return "pa"
if (
language.toLowerCase().startsWith("az") &&
!language.toLowerCase().includes("arab") &&
!language.toLowerCase().includes("cyrl")
)
return "az"
if (language.toLowerCase().startsWith("fi")) return "fi"
if (language.toLowerCase().startsWith("sv")) return "sv"
if (language.toLowerCase().startsWith("th")) return "th"
}
return "en"
@@ -158,6 +233,18 @@ function build(locale: Locale): Dictionary {
if (locale === "no") return { ...base, ...i18n.flatten(appNo), ...i18n.flatten(desktopNo) }
if (locale === "br") return { ...base, ...i18n.flatten(appBr), ...i18n.flatten(desktopBr) }
if (locale === "bs") return { ...base, ...i18n.flatten(appBs), ...i18n.flatten(desktopBs) }
if (locale === "tr") return { ...base, ...i18n.flatten(appTr), ...i18n.flatten(desktopTr) }
if (locale === "hi") return { ...base, ...i18n.flatten(appHi), ...i18n.flatten(desktopHi) }
if (locale === "nl") return { ...base, ...i18n.flatten(appNl), ...i18n.flatten(desktopNl) }
if (locale === "id") return { ...base, ...i18n.flatten(appId), ...i18n.flatten(desktopId) }
if (locale === "vi") return { ...base, ...i18n.flatten(appVi), ...i18n.flatten(desktopVi) }
if (locale === "it") return { ...base, ...i18n.flatten(appIt), ...i18n.flatten(desktopIt) }
if (locale === "ur") return { ...base, ...i18n.flatten(appUr), ...i18n.flatten(desktopUr) }
if (locale === "pa") return { ...base, ...i18n.flatten(appPa), ...i18n.flatten(desktopPa) }
if (locale === "az") return { ...base, ...i18n.flatten(appAz), ...i18n.flatten(desktopAz) }
if (locale === "fi") return { ...base, ...i18n.flatten(appFi), ...i18n.flatten(desktopFi) }
if (locale === "sv") return { ...base, ...i18n.flatten(appSv), ...i18n.flatten(desktopSv) }
if (locale === "th") return { ...base, ...i18n.flatten(appTh), ...i18n.flatten(desktopTh) }
return { ...base, ...i18n.flatten(appKo), ...i18n.flatten(desktopKo) }
}
+25
View File
@@ -0,0 +1,25 @@
export const dict = {
"desktop.menu.checkForUpdates": "Controlla gli aggiornamenti...",
"desktop.menu.installCli": "Installa CLI...",
"desktop.menu.reloadWebview": "Ricarica la webview",
"desktop.menu.restart": "Riavvia",
"desktop.dialog.chooseFolder": "Scegli una cartella",
"desktop.dialog.chooseFile": "Scegli un file",
"desktop.dialog.saveFile": "Salva file",
"desktop.updater.checkFailed.title": "Controllo degli aggiornamenti non riuscito",
"desktop.updater.checkFailed.message": "Impossibile controllare gli aggiornamenti",
"desktop.updater.none.title": "Nessun aggiornamento disponibile",
"desktop.updater.none.message": "Stai già utilizzando l'ultima versione di OpenCode",
"desktop.updater.downloadFailed.title": "Aggiornamento non riuscito",
"desktop.updater.downloadFailed.message": "Impossibile scaricare l'aggiornamento",
"desktop.updater.downloaded.title": "Aggiornamento scaricato",
"desktop.updater.downloaded.prompt":
"La versione {{version}} di OpenCode è stata scaricata. Vuoi installarla e riavviare l'app?",
"desktop.updater.installFailed.title": "Aggiornamento non riuscito",
"desktop.updater.installFailed.message": "Impossibile installare l'aggiornamento",
"desktop.cli.installed.title": "CLI installata",
"desktop.cli.installed.message":
"CLI installata in {{path}}\n\nRiavvia il terminale per utilizzare il comando 'opencode'.",
"desktop.cli.failed.title": "Installazione non riuscita",
"desktop.cli.failed.message": "Impossibile installare la CLI: {{error}}",
}
+1 -1
View File
@@ -1,7 +1,7 @@
export const dict = {
"desktop.menu.checkForUpdates": "업데이트 확인...",
"desktop.menu.installCli": "CLI 설치...",
"desktop.menu.reloadWebview": "Webview 새로고침",
"desktop.menu.reloadWebview": "WebView 새로 고침",
"desktop.menu.restart": "다시 시작",
"desktop.dialog.chooseFolder": "폴더 선택",
+25
View File
@@ -0,0 +1,25 @@
export const dict = {
"desktop.menu.checkForUpdates": "Controleren op updates...",
"desktop.menu.installCli": "CLI installeren...",
"desktop.menu.reloadWebview": "Webview opnieuw laden",
"desktop.menu.restart": "Opnieuw opstarten",
"desktop.dialog.chooseFolder": "Kies een map",
"desktop.dialog.chooseFile": "Kies een bestand",
"desktop.dialog.saveFile": "Bestand opslaan",
"desktop.updater.checkFailed.title": "Updatecontrole mislukt",
"desktop.updater.checkFailed.message": "Controleren op updates is mislukt",
"desktop.updater.none.title": "Geen update beschikbaar",
"desktop.updater.none.message": "Je gebruikt al de nieuwste versie van OpenCode",
"desktop.updater.downloadFailed.title": "Update mislukt",
"desktop.updater.downloadFailed.message": "Downloaden van update is mislukt",
"desktop.updater.downloaded.title": "Update gedownload",
"desktop.updater.downloaded.prompt":
"Versie {{version}} van OpenCode is gedownload. Wil je deze installeren en OpenCode opnieuw starten?",
"desktop.updater.installFailed.title": "Update mislukt",
"desktop.updater.installFailed.message": "Installeren van update is mislukt",
"desktop.cli.installed.title": "CLI geïnstalleerd",
"desktop.cli.installed.message":
"CLI geïnstalleerd op {{path}}\n\nStart je terminal opnieuw om de opdracht 'opencode' te gebruiken.",
"desktop.cli.failed.title": "Installatie mislukt",
"desktop.cli.failed.message": "Installeren van CLI is mislukt: {{error}}",
}
+1 -1
View File
@@ -22,7 +22,7 @@ export const dict = {
"desktop.cli.installed.title": "CLI installert",
"desktop.cli.installed.message":
"CLI installert til {{path}}\n\nStart terminalen på nytt for å bruke 'opencode'-kommandoen.",
"CLI installert i {{path}}\n\nStart terminalen på nytt for å bruke 'opencode'-kommandoen.",
"desktop.cli.failed.title": "Installasjon mislyktes",
"desktop.cli.failed.message": "Kunne ikke installere CLI: {{error}}",
}
+25
View File
@@ -0,0 +1,25 @@
export const dict = {
"desktop.menu.checkForUpdates": "اپ ڈیٹس لئی چیک کرو...",
"desktop.menu.installCli": "CLI انسٹال کرو...",
"desktop.menu.reloadWebview": "ویب ویو دوبارہ لوڈ کرو",
"desktop.menu.restart": "دوبارہ شروع کرو",
"desktop.dialog.chooseFolder": "اک فولڈر چنو",
"desktop.dialog.chooseFile": "اک فائل چنو",
"desktop.dialog.saveFile": "فائل محفوظ کرو",
"desktop.updater.checkFailed.title": "اپ ڈیٹ دی پڑتال ناکام ہو گئی",
"desktop.updater.checkFailed.message": "اپ ڈیٹاں دی پڑتال نئیں ہو سکی",
"desktop.updater.none.title": "کوئی اپ ڈیٹ دستیاب نئیں",
"desktop.updater.none.message": "تسی پہلے ای OpenCode دا تازہ ترین ورژن استعمال کر رئے او",
"desktop.updater.downloadFailed.title": "اپ ڈیٹ ناکام ہو گئی",
"desktop.updater.downloadFailed.message": "اپ ڈیٹ ڈاؤن لوڈ نئیں ہو سکی",
"desktop.updater.downloaded.title": "اپ ڈیٹ ڈاؤن لوڈ ہو گئی",
"desktop.updater.downloaded.prompt":
"OpenCode دا ورژن {{version}} ڈاؤن لوڈ کر دتا گیا اے، کی تسی اینوں انسٹال کرنا تے دوبارہ لانچ کرنا چاہندے او؟",
"desktop.updater.installFailed.title": "اپ ڈیٹ ناکام ہو گئی",
"desktop.updater.installFailed.message": "اپ ڈیٹ انسٹال نئیں ہو سکی",
"desktop.cli.installed.title": "CLI انسٹال ہو گیا",
"desktop.cli.installed.message":
"CLI {{path}} تے انسٹال کیتا گیا\n\n'opencode' کمانڈ ورتن لئی اپنے ٹرمینل نوں دوبارہ شروع کرو۔",
"desktop.cli.failed.title": "تنصیب ناکام ہو گئی",
"desktop.cli.failed.message": "CLI انسٹال نئیں ہو سکی: {{error}}",
}

Some files were not shown because too many files have changed in this diff Show More