mirror of
https://github.com/anomalyco/opencode.git
synced 2026-09-02 23:16:21 +00:00
Compare commits
22
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6948a3f5f5 | ||
|
|
d57e210f84 | ||
|
|
44a3bf2520 | ||
|
|
998086d6fb | ||
|
|
6ea388a206 | ||
|
|
651cdd257a | ||
|
|
e3c2e635a9 | ||
|
|
91a4c7bc32 | ||
|
|
eead95e712 | ||
|
|
c2a7616beb | ||
|
|
48c8a308b9 | ||
|
|
1bd1f72bcf | ||
|
|
311e32da93 | ||
|
|
90501dd6e3 | ||
|
|
499e22bf52 | ||
|
|
dfe3052bb6 | ||
|
|
fa4f8a66c2 | ||
|
|
9391ee8efc | ||
|
|
6d6e2a9f68 | ||
|
|
fa6fb71a83 | ||
|
|
8068c5e48c | ||
|
|
8525035bbe |
@@ -418,7 +418,7 @@
|
||||
"electron-window-state": "^5.0.3",
|
||||
},
|
||||
"devDependencies": {
|
||||
"@brendonovich/vite-plugin-opencode": "0.1.1",
|
||||
"@brendonovich/vite-plugin-opencode": "0.1.3",
|
||||
"@effect/platform-node": "catalog:",
|
||||
"@lydell/node-pty": "catalog:",
|
||||
"@opencode-ai/app": "workspace:*",
|
||||
@@ -730,6 +730,7 @@
|
||||
"@types/bun": "catalog:",
|
||||
"@typescript/native-preview": "catalog:",
|
||||
"vite": "catalog:",
|
||||
"vite-plugin-solid": "catalog:",
|
||||
},
|
||||
},
|
||||
"packages/simulation": {
|
||||
@@ -1049,6 +1050,7 @@
|
||||
"@npmcli/agent@4.0.2": "patches/@npmcli%2Fagent@4.0.2.patch",
|
||||
"@silvia-odwyer/photon-node@0.3.4": "patches/@silvia-odwyer%2Fphoton-node@0.3.4.patch",
|
||||
"solid-js@1.9.15": "patches/solid-js@1.9.15.patch",
|
||||
"vite@8.2.2": "patches/vite@8.2.2.patch",
|
||||
"@ff-labs/fff-bun@0.10.5": "patches/@ff-labs%2Ffff-bun@0.10.5.patch",
|
||||
"@ai-sdk/google@3.0.73": "patches/@ai-sdk%2Fgoogle@3.0.73.patch",
|
||||
"@dnd-kit/dom@0.5.0": "patches/@dnd-kit%2Fdom@0.5.0.patch",
|
||||
@@ -1595,7 +1597,7 @@
|
||||
|
||||
"@braintree/sanitize-url": ["@braintree/sanitize-url@7.1.2", "", {}, "sha512-jigsZK+sMF/cuiB7sERuo9V7N9jx+dhmHHnQyDSVdpZwVutaBu7WvNYqMDLSgFgfB30n452TP3vjDAvFC973mA=="],
|
||||
|
||||
"@brendonovich/vite-plugin-opencode": ["@brendonovich/vite-plugin-opencode@0.1.1", "", { "dependencies": { "@babel/core": "^7.29.0", "@opencode-ai/client": "0.0.0-beta-18050" }, "peerDependencies": { "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-aPG0ct8ctxAqndbNOx7NW0GhU6QY6sOUfi/DaKqH9c5WdxICSsUop6uSkJwPDHP9WpN9eg0dd2D2qwYpG6UdHw=="],
|
||||
"@brendonovich/vite-plugin-opencode": ["@brendonovich/vite-plugin-opencode@0.1.3", "", { "dependencies": { "@babel/core": "^7.29.0", "@opencode-ai/client": "0.0.0-beta-18050" }, "peerDependencies": { "vite": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, "sha512-iiIwlNoycOMUiaUzL1ZirLapCG3WY8cg9hSj4KgE/JYIWgqauoHikIlfUt7SdMqqGIkb4iZu6I1MxgDDJaRfBA=="],
|
||||
|
||||
"@bruits/satteri-darwin-arm64": ["@bruits/satteri-darwin-arm64@0.9.5", "", { "os": "darwin", "cpu": "arm64" }, "sha512-iw4nZgx9v30lWo/MTngQqi1pI78KI0DnkSm+lVJGYdmPLgAyDNJigVhpG42/Iq55A6c1Ll8q66ljyyRiQUxwow=="],
|
||||
|
||||
@@ -6255,6 +6257,8 @@
|
||||
|
||||
"@opencode-ai/session-ui/vite": ["vite@7.3.6", "", { "dependencies": { "esbuild": "^0.27.0 || ^0.28.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg=="],
|
||||
|
||||
"@opencode-ai/session-ui/vite-plugin-solid": ["vite-plugin-solid@2.11.10", "", { "dependencies": { "@babel/core": "^7.23.3", "@types/babel__core": "^7.20.4", "babel-preset-solid": "^1.8.4", "merge-anything": "^5.1.7", "solid-refresh": "^0.6.3", "vitefu": "^1.0.4" }, "peerDependencies": { "@testing-library/jest-dom": "^5.16.6 || ^5.17.0 || ^6.*", "solid-js": "^1.7.2", "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0" }, "optionalPeers": ["@testing-library/jest-dom"] }, "sha512-Yr1dQybmtDtDAHkii6hXuc1oVH9CPcS/Zb2jN/P36qqcrkNnVPsMTzQ06jyzFPFjj3U1IYKMVt/9ZqcwGCEbjw=="],
|
||||
|
||||
"@opencode-ai/stats-app/vite": ["vite@7.3.6", "", { "dependencies": { "esbuild": "^0.27.0 || ^0.28.0", "fdir": "^6.5.0", "picomatch": "^4.0.3", "postcss": "^8.5.6", "rollup": "^4.43.0", "tinyglobby": "^0.2.15" }, "optionalDependencies": { "fsevents": "~2.3.3" }, "peerDependencies": { "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", "less": "^4.0.0", "lightningcss": "^1.21.0", "sass": "^1.70.0", "sass-embedded": "^1.70.0", "stylus": ">=0.54.8", "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" }, "optionalPeers": ["@types/node", "jiti", "less", "lightningcss", "sass", "sass-embedded", "stylus", "sugarss", "terser", "tsx", "yaml"], "bin": { "vite": "bin/vite.js" } }, "sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg=="],
|
||||
|
||||
"@opencode-ai/storybook/@tailwindcss/vite": ["@tailwindcss/vite@4.1.11", "", { "dependencies": { "@tailwindcss/node": "4.1.11", "@tailwindcss/oxide": "4.1.11", "tailwindcss": "4.1.11" }, "peerDependencies": { "vite": "^5.2.0 || ^6 || ^7" } }, "sha512-RHYhrR3hku0MJFRV+fN2gNbDNEh3dwKvY8XJvTxCSXeMOsCRSr+uKvDWQcbizrHgjML6ZmTE5OwMrl5wKcujCw=="],
|
||||
|
||||
+4
-4
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"nodeModules": {
|
||||
"x86_64-linux": "sha256-PhCLeam/Mx2KL0bu0kg1+TJ46CpEOmnkQQiK3myGqnk=",
|
||||
"aarch64-linux": "sha256-UJ2pj9WQ3hYOJBw0rFwcDx4XrvZf3CIF+hK0A9FjNbc=",
|
||||
"aarch64-darwin": "sha256-WiVvvLEpeWe/LMIgZUBJSkY2jfoxgDmHyddE9kp2Dyg=",
|
||||
"x86_64-darwin": "sha256-67n45FB0BdM30hcipPZqgjPZkfKc1dK56z9kjSLIeFM="
|
||||
"x86_64-linux": "sha256-Vazzj75ji5YbLtX5X0q+IZvygGrfmEi3+PzJsAkaa3s=",
|
||||
"aarch64-linux": "sha256-QFKzH7wlRcvYG4EHQgQ+++9zNQ+Mw5DVKembGiMjiCg=",
|
||||
"aarch64-darwin": "sha256-WAYBBA2jLW95wM8Dgk77KsO3yS5efxQs9oBVAcdx8Gc=",
|
||||
"x86_64-darwin": "sha256-c9P+VQvfdOu5ef6BnKXb3/IUo8pPFaYQv8B+ijofm1s="
|
||||
}
|
||||
}
|
||||
|
||||
+2
-1
@@ -178,6 +178,7 @@
|
||||
"@pierre/trees@1.0.0-beta.4": "patches/@pierre%2Ftrees@1.0.0-beta.4.patch",
|
||||
"@modelcontextprotocol/sdk@1.29.0": "patches/@modelcontextprotocol%2Fsdk@1.29.0.patch",
|
||||
"@tanstack/virtual-core@3.17.8": "patches/@tanstack%2Fvirtual-core@3.17.8.patch",
|
||||
"@ff-labs/fff-bun@0.10.5": "patches/@ff-labs%2Ffff-bun@0.10.5.patch"
|
||||
"@ff-labs/fff-bun@0.10.5": "patches/@ff-labs%2Ffff-bun@0.10.5.patch",
|
||||
"vite@8.2.2": "patches/vite@8.2.2.patch"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -85,14 +85,16 @@ Each tab scenario reports one sample, including its raw observations. Use Playwr
|
||||
|
||||
The tab-switch workload uses two equally long sessions: 200 user/assistant exchanges (400 messages) per tab. Every answer includes headings, emphasis, links, a blockquote, task and nested lists, an eight-row table, and four highlighted code fences (TSX, JSON, SQL, Bash), alongside the stress fixture's reasoning and tools. The mock API deliberately returns all 400 messages in one response so every scenario measures a long loaded history, not a short paginated tail. The viewport is fixed at 1440 x 900. Results include the fixture version, Markdown and serialized-message byte counts, and message-request count. These numbers are not directly comparable to the earlier 12-exchange source / 72-exchange destination fixture.
|
||||
|
||||
Cold means the destination transcript has never rendered in that fresh browser context. Warm means its complex answer was rendered and ready before switching away and back. Both use the app's normal restored-tab data prefetch, which completes before measurement; neither includes app startup, the source session's Markdown engine initialization, or a cold backend fetch. The suite asserts no message fetch during either measured switch. Setup waits for mounted Markdown to finish and for the review-pane width transition to complete. Service workers are blocked to exclude the web build's background asset precache from this renderer benchmark. Screenshots are attached after measurement for the first repetition; Playwright video and trace recording are disabled for this workload, while opt-in Chrome profiling remains available. For a baseline distribution, use `--repeat-each=20 --retries=0`, keep profiling disabled, and report the median and p95 of `firstCorrectObservedMs` separately from the three-observation `stableObservedMs`.
|
||||
Cold means the destination transcript has never loaded or rendered in that fresh browser context. Its measured switch includes one fixture message fetch. Warm means its complex answer was rendered and ready before switching away and back, and asserts no message fetch during the measured switch. Neither includes app startup or the source session's Markdown engine initialization. These cold results are not comparable to older prefetched cold-render results. Setup waits for mounted Markdown to finish and for the review-pane width transition to complete. Service workers are blocked to exclude the web build's background asset precache from this renderer benchmark. Screenshots are attached after measurement for the first repetition; Playwright video and trace recording are disabled for this workload, while opt-in Chrome profiling remains available. For a baseline distribution, use `--repeat-each=20 --retries=0`, keep profiling disabled, and report the median and p95 of `firstCorrectObservedMs` separately from the three-observation `stableObservedMs`.
|
||||
|
||||
```sh
|
||||
bunx playwright test --config e2e/performance/playwright.config.ts \
|
||||
timeline/session-tab-switch-benchmark.spec.ts --repeat-each=20 --retries=0
|
||||
```
|
||||
|
||||
**The tab-switch fixture is not an end-to-end cold-data benchmark.** It prefetches destination messages and returns full history. Measure cold API navigation, Home-row opening, and prefetched-but-unvisited tabs separately with normal pagination. Do not combine these entry paths or compare different transports and machine-load periods as one experiment.
|
||||
**The tab-switch fixture returns full history, not normal pagination.** Measure cold API navigation, Home-row opening, and restored-but-unvisited tabs separately with normal pagination. Do not combine these entry paths or compare different transports and machine-load periods as one experiment.
|
||||
|
||||
`inactive-tab-prefetch-benchmark.spec.ts` restores eight tabs with normal 20-message pages (44 parts and 139,257 response bytes per page). It gates heavy responses independently until every tab's attention callback has run, then measures selection with ready answer Markdown and bottom anchoring. A separate case closes an inactive tab before releasing the responses. The fixture reports speculative transcript/inbox reads, request concurrency, response bytes, and activation latency. Set `OPENCODE_PERFORMANCE_MEMORY=1` only in separate retention runs; those force GC before selection and must not be mixed into clean timing results. The scope is the production browser renderer, not total desktop memory. Live background events and eviction of previously visited transcripts are separate workloads.
|
||||
|
||||
Keep one-off reports, recorded results, and traces outside git, in the ignored `e2e/performance/results/` directory or an external artifact directory. Preserve raw observations locally and publish anonymized summaries and charts in the PR description, not as committed experiment files.
|
||||
|
||||
@@ -104,7 +106,7 @@ bun run bench:tabs
|
||||
|
||||
This runs only the tab-switch benchmark against the production build with 20 serial repetitions and no retries. It prints the median (mean of the two middle values for even sample counts) and nearest-rank p95 for `firstCorrectObservedMs` and `stableObservedMs` per scenario. Only records whose benchmark and Playwright statuses are passed and whose two metrics are finite enter the summary. Test and record statuses, missing records, and excluded samples are reported separately.
|
||||
|
||||
For fresh entry paths, run `bun run bench:entry` from `packages/app`. It uses the same production, serial-repetition, and reporting defaults. The cases open an empty draft from the actual Home button, create a draft with the titlebar plus from an active session, and open a cold paginated session from Home. Draft readiness requires a focused editable composer, the expected model, project control, and new tab; typing and absence of backend mutations are checked afterward. Session readiness requires the latest group, ready answer Markdown, and bottom anchoring. These cases are separate from prefetched tab remounts.
|
||||
For fresh entry paths, run `bun run bench:entry` from `packages/app`. It uses the same production, serial-repetition, and reporting defaults. The cases open an empty draft from the actual Home button, create a draft with the titlebar plus from an active session, and open a cold paginated session from Home. Draft readiness requires a focused editable composer, the expected model, project control, and new tab; typing and absence of backend mutations are checked afterward. Session readiness requires the latest group, ready answer Markdown, and bottom anchoring. These cases are separate from cached tab remounts.
|
||||
|
||||
For milestone charts, rerun frozen builds with one workload and counterbalanced serial order. Do not connect historical medians from different transports, preparation, or machine-load periods. Show samples or ranges, name the checkpoints accurately, and distinguish experimental build snapshots from Git commits.
|
||||
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
# Composer History Hydration
|
||||
|
||||
Manual benchmark for an empty destination composer. Runs the production
|
||||
`ComposerEditor`, `createComposerEditor`, `createComposerHistory`, persistence
|
||||
codec, and browser IndexedDB draft store. It does not run the surrounding app
|
||||
shell or native desktop IPC.
|
||||
|
||||
Workload: 100 normal prompts with realistic review instructions/code and 100
|
||||
shell commands. Separate cases have no images, 50 unique screenshots, or 50
|
||||
references to 5 screenshots. The fixture generates valid 1440 x 900 PNG code
|
||||
screenshots before timing and reports their exact byte sizes. Each isolated
|
||||
browser context measures a cold URL-cache mount followed by a warm remount.
|
||||
The database was just seeded; this does not simulate a cold disk cache.
|
||||
|
||||
`historyReadyMs` measures the mount action until both production history stores
|
||||
are populated. This is history availability, not time to first editable input
|
||||
(input can be usable before history finishes). The benchmark then verifies
|
||||
ArrowUp recall and a decoded screenshot in the real editor. `recallObservedMs`
|
||||
includes Playwright action/assertion overhead and is reported separately.
|
||||
`mountRecallObservedMs` includes the mount, readiness checks, keyboard action,
|
||||
and correct text/image completion; it also includes Playwright overhead.
|
||||
IndexedDB reads and blob sizes are mechanism metrics, not desktop IPC bytes or
|
||||
process memory. No timing threshold is enforced.
|
||||
|
||||
From `packages/app`, set `OPENCODE_HISTORY_BUILD` and
|
||||
`OPENCODE_HISTORY_OUTPUT` to artifact directories outside Git, then run:
|
||||
|
||||
```sh
|
||||
bun x vite build --config e2e/performance/composer-history/vite.config.ts
|
||||
bun x playwright test --config e2e/performance/composer-history/playwright.config.ts --repeat-each=20
|
||||
```
|
||||
|
||||
The preview server owns port 4783 and is stopped by Playwright. Preserve each
|
||||
build and its revision/hash for comparisons. `BENCHMARK` JSON lines contain all
|
||||
raw samples. Optional Chrome traces use the existing
|
||||
`OPENCODE_PERFORMANCE_TRACE_DIR` setting; keep trace runs separate from clean
|
||||
timing. Screenshots are captured after timing on the first repeat only.
|
||||
@@ -0,0 +1,48 @@
|
||||
import { benchmark, expect } from "../benchmark"
|
||||
|
||||
benchmark.use({ traceScope: "page" })
|
||||
for (const shape of ["text", "unique", "repeated"]) {
|
||||
benchmark(`composer global history: ${shape}, cold and warm mounts`, async ({ page, report }, testInfo) => {
|
||||
const errors: string[] = []
|
||||
page.on("pageerror", (error) => errors.push(error.message))
|
||||
await page.goto(`/?shape=${shape}`)
|
||||
const button = page.getByRole("button", { name: "Mount empty composer", exact: true })
|
||||
const input = page.getByRole("textbox", { name: "Prompt", exact: true })
|
||||
const samples = []
|
||||
for (const cache of ["cold", "warm"]) {
|
||||
await expect(button).toBeEnabled()
|
||||
const mountStarted = performance.now()
|
||||
await button.click()
|
||||
await expect(page.getByTestId("history-ready")).toHaveText("ready")
|
||||
await expect(input).toBeEditable()
|
||||
await expect(input).toBeEmpty()
|
||||
const result = JSON.parse((await page.getByTestId("history-result").textContent())!)
|
||||
expect(result.documents).toBe(2)
|
||||
expect(result.historyReadyMs).toBeGreaterThan(0)
|
||||
const start = performance.now()
|
||||
await input.press("ArrowUp")
|
||||
await expect(input).toContainText("Review the retry policy in src/network/request-0.ts.")
|
||||
const images = page.getByRole("img", { name: "request-0.png", exact: true })
|
||||
await expect(images).toHaveCount(shape === "text" ? 0 : 1)
|
||||
if (shape !== "text")
|
||||
await expect
|
||||
.poll(() => images.evaluate((image: HTMLImageElement) => image.complete && image.naturalWidth === 1440))
|
||||
.toBe(true)
|
||||
samples.push({
|
||||
cache,
|
||||
...result,
|
||||
recallObservedMs: performance.now() - start,
|
||||
mountRecallObservedMs: performance.now() - mountStarted,
|
||||
})
|
||||
}
|
||||
expect(errors).toEqual([])
|
||||
report(
|
||||
{ samples },
|
||||
{
|
||||
browser: page.context().browser()!.version(),
|
||||
scope: "production composer editor/history, browser IndexedDB; no native IPC",
|
||||
},
|
||||
)
|
||||
if (testInfo.repeatEachIndex === 0) await page.screenshot({ path: testInfo.outputPath(`${shape}.png`) })
|
||||
})
|
||||
}
|
||||
@@ -0,0 +1,174 @@
|
||||
/// <reference types="vite/client" />
|
||||
import { createEffect, Show } from "solid-js"
|
||||
import { createStore } from "solid-js/store"
|
||||
import { render } from "solid-js/web"
|
||||
import { PlatformProvider, type Platform } from "@/runtime/platform/platform"
|
||||
import { createBrowserDraftStore } from "@/runtime/persistence/drafts"
|
||||
import { createComposerHistory } from "@/composer/history/store"
|
||||
import { ComposerEditor } from "@/composer/editor/editor"
|
||||
import { createComposerEditor } from "@/composer/editor/interaction"
|
||||
import type { ComposerPersistedState } from "@/composer/types"
|
||||
import "@/index.css"
|
||||
|
||||
const shape = new URLSearchParams(location.search).get("shape") ?? "text"
|
||||
const normal = Array.from({ length: 100 }, (_, index) => {
|
||||
const content =
|
||||
`Review the retry policy in src/network/request-${index}.ts. Preserve cancellation and the existing error messages.\n\n` +
|
||||
`The request should stop after three attempts. Add coverage for a 429 response, a connection reset, and a successful retry. Verify that only idempotent requests are retried.\n\n` +
|
||||
`Report ${index}:\n\`\`\`ts\nexport async function request(input: Request) {\n const response = await fetch(input)\n if (!response.ok) throw new Error(response.statusText)\n return response.json()\n}\n\`\`\``
|
||||
return {
|
||||
prompt: [
|
||||
{ type: "text", content, start: 0, end: content.length },
|
||||
...(shape !== "text" && index % 2 === 0
|
||||
? [
|
||||
{
|
||||
type: "image",
|
||||
id: `attachment-${index}`,
|
||||
filename: `request-${index}.png`,
|
||||
mime: "image/png",
|
||||
blob: { id: `screenshot-${shape === "repeated" ? index % 10 : index}` },
|
||||
},
|
||||
]
|
||||
: []),
|
||||
],
|
||||
comments: [],
|
||||
}
|
||||
})
|
||||
const shell = Array.from({ length: 100 }, (_, index) => {
|
||||
const content = `bun test src/network/request-${index}.test.ts --timeout 30000`
|
||||
return { prompt: [{ type: "text", content, start: 0, end: content.length }], comments: [] }
|
||||
})
|
||||
|
||||
// Seed only this Playwright context, before opening the production draft store.
|
||||
const request = indexedDB.open("opencode-drafts", 1)
|
||||
request.onupgradeneeded = () => {
|
||||
request.result.createObjectStore("documents")
|
||||
request.result.createObjectStore("blobs")
|
||||
}
|
||||
const db = await new Promise<IDBDatabase>((resolve, reject) => {
|
||||
request.onsuccess = () => resolve(request.result)
|
||||
request.onerror = () => reject(request.error)
|
||||
})
|
||||
const ids = [...new Set(normal.flatMap((entry) => entry.prompt.flatMap((part) => (part.blob ? [part.blob.id] : []))))]
|
||||
const screenshots: { id: string; blob: Blob }[] = []
|
||||
for (const id of ids) {
|
||||
const canvas = document.createElement("canvas")
|
||||
canvas.width = 1440
|
||||
canvas.height = 900
|
||||
const context = canvas.getContext("2d")!
|
||||
context.fillStyle = "#15191f"
|
||||
context.fillRect(0, 0, canvas.width, canvas.height)
|
||||
context.font = "16px monospace"
|
||||
context.fillStyle = "#b8c8d8"
|
||||
context.fillText(`request.ts - ${id}`, 30, 35)
|
||||
for (let line = 0; line < 38; line++) {
|
||||
context.fillStyle = line % 3 ? "#a8c7ba" : "#d4a882"
|
||||
context.fillText(
|
||||
`${String(line + 1).padStart(3)} const response${line} = await fetch('/api/request/${id}/${line}', { signal, headers });`,
|
||||
30,
|
||||
70 + line * 20,
|
||||
)
|
||||
}
|
||||
const blob = await new Promise<Blob>((resolve) => canvas.toBlob((blob) => resolve(blob!), "image/png"))
|
||||
screenshots.push({ id, blob })
|
||||
}
|
||||
const transaction = db.transaction(["documents", "blobs"], "readwrite")
|
||||
transaction.objectStore("documents").put(JSON.stringify({ entries: normal }), "opencode.global.dat:prompt-history")
|
||||
transaction.objectStore("documents").put(JSON.stringify({ entries: shell }), "opencode.global.dat:prompt-history-shell")
|
||||
screenshots.forEach(({ id, blob }) => transaction.objectStore("blobs").put(blob, id))
|
||||
await new Promise<void>((resolve, reject) => {
|
||||
transaction.oncomplete = () => resolve()
|
||||
transaction.onerror = () => reject(transaction.error)
|
||||
})
|
||||
db.close()
|
||||
|
||||
const metrics = { reads: 0, blobBytes: 0, documents: 0 }
|
||||
const originalGet = IDBObjectStore.prototype.get
|
||||
IDBObjectStore.prototype.get = function (key) {
|
||||
const request = originalGet.call(this, key)
|
||||
if (this.name === "documents") metrics.documents++
|
||||
if (this.name === "blobs") {
|
||||
metrics.reads++
|
||||
request.addEventListener("success", () => {
|
||||
metrics.blobBytes += request.result?.size ?? 0
|
||||
})
|
||||
}
|
||||
return request
|
||||
}
|
||||
const platform: Platform = {
|
||||
platform: "web",
|
||||
draftStore: createBrowserDraftStore(),
|
||||
openExternal() {},
|
||||
restart: async () => {},
|
||||
notify: async () => {},
|
||||
}
|
||||
const [state, setState] = createStore({ mount: 0, ready: false, result: "" })
|
||||
const workload = {
|
||||
shape,
|
||||
normalEntries: normal.length,
|
||||
shellEntries: shell.length,
|
||||
imageReferences: shape === "text" ? 0 : 50,
|
||||
uniqueImages: ids.length,
|
||||
storedImageBytes: screenshots.reduce((sum, item) => sum + item.blob.size, 0),
|
||||
documentBytes: [normal, shell].reduce(
|
||||
(sum, entries) => sum + new TextEncoder().encode(JSON.stringify({ entries })).length,
|
||||
0,
|
||||
),
|
||||
screenshotDimensions: [1440, 900],
|
||||
}
|
||||
let started = 0
|
||||
function mount() {
|
||||
metrics.reads = 0
|
||||
metrics.blobBytes = 0
|
||||
metrics.documents = 0
|
||||
setState({ ready: false, result: "" })
|
||||
started = performance.now()
|
||||
setState("mount", state.mount + 1)
|
||||
}
|
||||
function Destination() {
|
||||
// Same history creation and editor mapping as createComposerModel. Destination draft is empty.
|
||||
const history = createComposerHistory()
|
||||
const store = createStore<ComposerPersistedState>({
|
||||
prompt: [{ type: "text", content: "", start: 0, end: 0 }],
|
||||
cursor: 0,
|
||||
context: { items: [] },
|
||||
})
|
||||
const controller = createComposerEditor({
|
||||
store,
|
||||
commands: () => [],
|
||||
context: () => [],
|
||||
searchContextFiles: () => [],
|
||||
history: {
|
||||
entries: (mode) => history.entries(mode).map((entry) => ({ prompt: entry.prompt, metadata: entry.comments })),
|
||||
add: (prompt, mode) => history.add(prompt, mode, []),
|
||||
},
|
||||
view: {
|
||||
placeholder: () => "Empty destination composer",
|
||||
submit: { stopping: () => false, onSubmit() {}, onStop() {} },
|
||||
},
|
||||
})
|
||||
createEffect(() => {
|
||||
if (history.entries("normal").length !== 100 || history.entries("shell").length !== 100) return
|
||||
setState({
|
||||
ready: true,
|
||||
result: JSON.stringify({ historyReadyMs: performance.now() - started, ...metrics, ...workload }),
|
||||
})
|
||||
})
|
||||
return <ComposerEditor controller={controller} />
|
||||
}
|
||||
render(
|
||||
() => (
|
||||
<PlatformProvider value={platform}>
|
||||
<main style={{ padding: "40px", width: "900px" }}>
|
||||
<h1>Composer global history: {shape}</h1>
|
||||
<button onClick={mount}>Mount empty composer</button>
|
||||
<output data-testid="history-ready">{state.ready ? "ready" : "idle"}</output>
|
||||
<pre data-testid="history-result">{state.result}</pre>
|
||||
<Show when={state.mount} keyed>
|
||||
{(_mount) => <Destination />}
|
||||
</Show>
|
||||
</main>
|
||||
</PlatformProvider>
|
||||
),
|
||||
document.getElementById("root")!,
|
||||
)
|
||||
@@ -0,0 +1,11 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<title>Composer history benchmark</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="root"></div>
|
||||
<script type="module" src="./fixture.tsx"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,20 @@
|
||||
import { defineConfig } from "@playwright/test"
|
||||
import { fileURLToPath } from "node:url"
|
||||
|
||||
export default defineConfig({
|
||||
testDir: ".",
|
||||
testMatch: "composer-history.bench.ts",
|
||||
workers: 1,
|
||||
retries: 0,
|
||||
timeout: 60_000,
|
||||
reporter: "line",
|
||||
outputDir: process.env.OPENCODE_HISTORY_OUTPUT,
|
||||
use: { baseURL: "http://127.0.0.1:4783", viewport: { width: 1440, height: 900 }, trace: "off", video: "off" },
|
||||
webServer: {
|
||||
cwd: fileURLToPath(new URL("../../../", import.meta.url)),
|
||||
command:
|
||||
"bun x vite preview --config e2e/performance/composer-history/vite.config.ts --host 127.0.0.1 --port 4783 --strictPort",
|
||||
url: "http://127.0.0.1:4783",
|
||||
reuseExistingServer: false,
|
||||
},
|
||||
})
|
||||
@@ -0,0 +1,10 @@
|
||||
import { defineConfig } from "vite"
|
||||
import { fileURLToPath } from "node:url"
|
||||
import app from "../../../vite"
|
||||
|
||||
export default defineConfig({
|
||||
root: fileURLToPath(new URL(".", import.meta.url)),
|
||||
publicDir: fileURLToPath(new URL("../../../public", import.meta.url)),
|
||||
plugins: [app],
|
||||
build: { target: "esnext", outDir: process.env.OPENCODE_HISTORY_BUILD, emptyOutDir: true },
|
||||
})
|
||||
@@ -0,0 +1,44 @@
|
||||
# Timeline Preload Lifetime
|
||||
|
||||
This manual benchmark uses the production app, restored session tabs, the real
|
||||
`MessageTimeline` preload, and the real Markdown worker. Only API data and result
|
||||
delivery timing are fixture-owned. It does not connect to a running OpenCode
|
||||
service or send prompts.
|
||||
|
||||
From `packages/app`, set absolute `MARKDOWN_APP_BUILD_DIR` and
|
||||
`MARKDOWN_RESULTS_DIR` artifact paths, then run:
|
||||
|
||||
```sh
|
||||
bun run build
|
||||
# Copy dist into MARKDOWN_APP_BUILD_DIR before editing production source.
|
||||
bun --bun x playwright test --config e2e/performance/markdown/playwright.config.ts --repeat-each 20
|
||||
```
|
||||
|
||||
Each isolated sample restores two sessions with one user message and one completed
|
||||
assistant text part each. The cold target has a realistic recovery review with
|
||||
either two TypeScript fences (typical) or 36 fences (large). The source has a short
|
||||
completed answer. Target data is prefetched before selection, but its Markdown is
|
||||
not parsed until the target is selected.
|
||||
|
||||
The app's service-worker generator reads `dist`, so use the normal build output
|
||||
and freeze a copy, rather than overriding Vite's build output directory.
|
||||
|
||||
The real worker result is held after admission. The test selects the original
|
||||
session again and releases the held result only after the abandoned timeline row
|
||||
detaches and the selected answer reports production Markdown readiness. This
|
||||
exercises both the timeline preload and the nested Markdown consumer, including
|
||||
the case where either one would otherwise keep a shared parse alive.
|
||||
|
||||
Destination readiness and post-disposal result settlement are separate metrics.
|
||||
The latter is a MessageChannel task after the result's promise microtasks drain.
|
||||
The DOMParser probe counts actual DOMPurify input containing the abandoned answer
|
||||
after disposal, in characters. CDP reports renderer task/script time and JS heap.
|
||||
These are not worker CPU, Electron process RAM, or ungated tab-switch measurements.
|
||||
In particular, this gate releases the result after destination readiness and must
|
||||
not be used to claim a destination-readiness gain from skipping sanitization.
|
||||
|
||||
`MARKDOWN_ASSERT_DISPOSAL=1` enables the no-obsolete-sanitization assertion. Use
|
||||
`MARKDOWN_RETAINED=1` only in separate post-GC runs. The repository trace collector
|
||||
is available through `OPENCODE_PERFORMANCE_TRACE_DIR`, and `MARKDOWN_SCREENSHOT`
|
||||
captures final output after timing. Run serially, preserve frozen builds, and keep
|
||||
all results outside Git.
|
||||
@@ -0,0 +1,125 @@
|
||||
import type { SessionMessageInfo } from "@opencode-ai/client/promise"
|
||||
import { benchmark, expect } from "../benchmark"
|
||||
import { mockOpenCodeServer } from "../../utils/mock-server"
|
||||
import { fixture } from "../timeline/session-timeline-stress.fixture"
|
||||
import { installStressSessionTabs, installTimelineSettings, stressSessionHref } from "../timeline/timeline-test-helpers"
|
||||
import { completedAnswer } from "../../../../session-ui/performance/markdown-lifetime/answer"
|
||||
import { installMarkdownGate } from "./probe"
|
||||
|
||||
for (const size of ["typical", "large"]) {
|
||||
benchmark(`timeline preload disposal: ${size}`, async ({ page, report }) => {
|
||||
const answer = completedAnswer(size === "typical" ? 2 : 36)
|
||||
const errors: string[] = []
|
||||
page.on("pageerror", (error) => errors.push(error.message))
|
||||
const messages: Record<string, SessionMessageInfo[]> = Object.fromEntries(
|
||||
[fixture.sourceID, fixture.targetID].map((id) => [
|
||||
id,
|
||||
[
|
||||
{
|
||||
id: `msg_1_${id}_user`,
|
||||
type: "user",
|
||||
time: { created: 1700000000000 },
|
||||
text: "Review the recovery boundary.",
|
||||
},
|
||||
{
|
||||
id: `msg_2_${id}_assistant`,
|
||||
type: "assistant",
|
||||
time: { created: 1700000001000, completed: 1700000008000 },
|
||||
model: { id: "claude-opus-4-6", providerID: "opencode" },
|
||||
agent: "build",
|
||||
cost: 0.01,
|
||||
tokens: { input: 100, output: 200, reasoning: 0, cache: { read: 0, write: 0 } },
|
||||
finish: "stop",
|
||||
content: [
|
||||
{
|
||||
type: "text",
|
||||
text:
|
||||
id === fixture.targetID
|
||||
? answer
|
||||
: "## Current destination\n\nThe selected session is ready.\n\n```typescript\nconst current = { ready: true }\n```",
|
||||
},
|
||||
],
|
||||
},
|
||||
] satisfies SessionMessageInfo[],
|
||||
]),
|
||||
)
|
||||
await mockOpenCodeServer(page, {
|
||||
sessions: fixture.sessions.filter((session) => session.id !== fixture.childID),
|
||||
provider: fixture.provider,
|
||||
directory: fixture.directory,
|
||||
project: fixture.project,
|
||||
pageMessages: (id) => ({ items: messages[id] ?? [] }),
|
||||
})
|
||||
await installTimelineSettings(page)
|
||||
await installStressSessionTabs(page)
|
||||
const targetPart = `msg_2_${fixture.targetID}_assistant:text:0`
|
||||
const sourcePart = `msg_2_${fixture.sourceID}_assistant:text:0`
|
||||
await installMarkdownGate(page, { answer, targetPart, sourcePart, href: stressSessionHref(fixture.sourceID) })
|
||||
const prefetched = page.waitForResponse((response) =>
|
||||
new URL(response.url()).pathname.endsWith(`/session/${fixture.targetID}/message`),
|
||||
)
|
||||
await page.goto(stressSessionHref(fixture.sourceID))
|
||||
await prefetched
|
||||
const source = page.locator(`[data-timeline-part-id="${sourcePart}"] [data-component="markdown"]`)
|
||||
await expect(source).toHaveAttribute("data-markdown-ready", "")
|
||||
await page.locator(`[data-slot="titlebar-tabs"] a[href="${stressSessionHref(fixture.targetID)}"]`).click()
|
||||
await page.waitForFunction(() => Reflect.get(window, "markdownGate").held)
|
||||
await expect(page.locator(`[data-timeline-part-id="${targetPart}"]`)).toBeAttached()
|
||||
const cdp = await page.context().newCDPSession(page)
|
||||
await cdp.send("Performance.enable")
|
||||
const before = await cdp.send("Performance.getMetrics")
|
||||
await page.evaluate(() => Reflect.get(window, "markdownGate").arm())
|
||||
await page.locator(`[data-slot="titlebar-tabs"] a[href="${stressSessionHref(fixture.sourceID)}"]`).click()
|
||||
await expect(source).toHaveAttribute("data-markdown-ready", "")
|
||||
await expect(source.getByRole("heading", { name: "Current destination" })).toBeVisible()
|
||||
await expect(page.locator(`[data-timeline-part-id="${targetPart}"]`)).toHaveCount(0)
|
||||
await page.waitForFunction(() => Reflect.get(window, "markdownGate").settled > 0)
|
||||
const after = await cdp.send("Performance.getMetrics")
|
||||
const stats = await page.evaluate(() => {
|
||||
const value = Reflect.get(window, "markdownGate")
|
||||
return {
|
||||
admitted: value.admitted,
|
||||
responses: value.responses,
|
||||
started: value.started,
|
||||
ready: value.ready,
|
||||
released: value.released,
|
||||
settled: value.settled,
|
||||
sanitizeCalls: value.sanitizeCalls,
|
||||
sanitizeChars: value.sanitizeChars,
|
||||
}
|
||||
})
|
||||
expect(stats.admitted).toBe(1)
|
||||
expect(stats.responses).toBe(1)
|
||||
expect(stats.ready).toBeGreaterThan(stats.started)
|
||||
expect(stats.settled).toBeGreaterThan(stats.released)
|
||||
expect(errors).toEqual([])
|
||||
if (process.env.MARKDOWN_ASSERT_DISPOSAL === "1") expect(stats.sanitizeCalls).toBe(0)
|
||||
const value = (data: typeof after, name: string) => data.metrics.find((item) => item.name === name)!.value
|
||||
const retained = process.env.MARKDOWN_RETAINED === "1"
|
||||
if (retained) await cdp.send("HeapProfiler.collectGarbage")
|
||||
report(
|
||||
{
|
||||
...stats,
|
||||
destinationReadyMs: stats.ready - stats.started,
|
||||
releasedSettledMs: stats.settled - stats.released,
|
||||
taskMs: (value(after, "TaskDuration") - value(before, "TaskDuration")) * 1000,
|
||||
scriptMs: (value(after, "ScriptDuration") - value(before, "ScriptDuration")) * 1000,
|
||||
usedHeapBytes: (await cdp.send("Runtime.getHeapUsage")).usedSize,
|
||||
},
|
||||
{
|
||||
size,
|
||||
retained,
|
||||
answerBytes: Buffer.byteLength(answer),
|
||||
messagesPerSession: 2,
|
||||
partsPerAnswer: 1,
|
||||
fences: size === "typical" ? 2 : 36,
|
||||
browser: page.context().browser()!.version(),
|
||||
transport: "playwright-route",
|
||||
build: process.env.MARKDOWN_APP_BUILD_DIR,
|
||||
},
|
||||
)
|
||||
if (process.env.MARKDOWN_SCREENSHOT)
|
||||
await page.screenshot({ path: `${process.env.MARKDOWN_SCREENSHOT}/timeline-${size}.png` })
|
||||
await cdp.detach()
|
||||
})
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
import { defineConfig } from "@playwright/test"
|
||||
import { fileURLToPath } from "node:url"
|
||||
|
||||
process.env.PLAYWRIGHT_PORT = "6199"
|
||||
process.env.PLAYWRIGHT_SERVER_PORT = "6199"
|
||||
process.env.PLAYWRIGHT_SERVER_HOST = "127.0.0.1"
|
||||
|
||||
export default defineConfig({
|
||||
testDir: ".",
|
||||
testMatch: "*.bench.ts",
|
||||
outputDir: process.env.MARKDOWN_RESULTS_DIR,
|
||||
workers: 1,
|
||||
retries: 0,
|
||||
timeout: 60_000,
|
||||
expect: { timeout: 15_000 },
|
||||
reporter: [["line"]],
|
||||
use: { baseURL: "http://127.0.0.1:6199", viewport: { width: 1280, height: 900 }, serviceWorkers: "block" },
|
||||
webServer: {
|
||||
cwd: fileURLToPath(new URL("../../..", import.meta.url)),
|
||||
command: `bun run serve -- --host 127.0.0.1 --port 6199 --strictPort --outDir "${process.env.MARKDOWN_APP_BUILD_DIR}"`,
|
||||
url: "http://127.0.0.1:6199",
|
||||
reuseExistingServer: false,
|
||||
},
|
||||
})
|
||||
@@ -0,0 +1,93 @@
|
||||
import type { Page } from "@playwright/test"
|
||||
import type {
|
||||
MarkdownWorkerRequest,
|
||||
MarkdownWorkerResponse,
|
||||
} from "../../../../session-ui/src/components/markdown-worker-protocol"
|
||||
|
||||
export async function installMarkdownGate(
|
||||
page: Page,
|
||||
input: { answer: string; sourcePart: string; targetPart: string; href: string },
|
||||
) {
|
||||
await page.addInitScript(({ answer, sourcePart, targetPart, href }) => {
|
||||
const stats = {
|
||||
admitted: 0,
|
||||
responses: 0,
|
||||
held: false,
|
||||
started: 0,
|
||||
ready: 0,
|
||||
released: 0,
|
||||
settled: 0,
|
||||
sanitizeCalls: 0,
|
||||
sanitizeChars: 0,
|
||||
arm: () => {
|
||||
armed = true
|
||||
},
|
||||
}
|
||||
let armed = false
|
||||
let id: number | undefined
|
||||
let release: (() => void) | undefined
|
||||
const descriptor = Object.getOwnPropertyDescriptor(Worker.prototype, "onmessage")!
|
||||
const post = Worker.prototype.postMessage
|
||||
Object.defineProperty(Worker.prototype, "onmessage", {
|
||||
configurable: true,
|
||||
get: descriptor.get,
|
||||
set(callback: (event: MessageEvent<MarkdownWorkerResponse>) => void) {
|
||||
descriptor.set!.call(this, (event: MessageEvent<MarkdownWorkerResponse>) => {
|
||||
if (event.data.type === "parse" && event.data.id === id) {
|
||||
stats.responses++
|
||||
stats.held = true
|
||||
release = () => callback.call(this, event)
|
||||
return
|
||||
}
|
||||
callback.call(this, event)
|
||||
})
|
||||
},
|
||||
})
|
||||
Worker.prototype.postMessage = function (request: MarkdownWorkerRequest) {
|
||||
if (request.type === "parse" && request.text === answer) {
|
||||
id = request.id
|
||||
stats.admitted++
|
||||
}
|
||||
post.call(this, request)
|
||||
}
|
||||
const parse = DOMParser.prototype.parseFromString
|
||||
DOMParser.prototype.parseFromString = function (text, type) {
|
||||
if (stats.released && String(text).includes("Recovery implementation review")) {
|
||||
stats.sanitizeCalls++
|
||||
stats.sanitizeChars += String(text).length
|
||||
}
|
||||
return parse.call(this, text, type)
|
||||
}
|
||||
document.addEventListener(
|
||||
"mousedown",
|
||||
(event) => {
|
||||
if (!armed || stats.started) return
|
||||
const target = event.target instanceof Element ? event.target.closest("a") : undefined
|
||||
if (target?.getAttribute("href") !== href) return
|
||||
stats.started = performance.now()
|
||||
},
|
||||
true,
|
||||
)
|
||||
// The app can retain the outgoing view until the destination is ready. Release
|
||||
// only after its actual row detaches, rather than assuming click means dispose.
|
||||
new MutationObserver(() => {
|
||||
if (!stats.started || stats.released) return
|
||||
const current = document.querySelector(`[data-timeline-part-id="${sourcePart}"] [data-markdown-ready]`)
|
||||
if (!current) return
|
||||
stats.ready ||= performance.now()
|
||||
if (document.querySelector(`[data-timeline-part-id="${targetPart}"]`)) return
|
||||
stats.released = performance.now()
|
||||
performance.mark("markdown-timeline-disposed")
|
||||
release!()
|
||||
release = undefined
|
||||
const channel = new MessageChannel()
|
||||
channel.port1.onmessage = () => {
|
||||
stats.settled = performance.now()
|
||||
channel.port1.close()
|
||||
channel.port2.close()
|
||||
}
|
||||
channel.port2.postMessage(null)
|
||||
}).observe(document, { childList: true, subtree: true, attributes: true })
|
||||
Object.defineProperty(window, "markdownGate", { value: stats })
|
||||
}, input)
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
# Patch Group Benchmark
|
||||
|
||||
This manual benchmark mounts the production `CurrentFileToolGroup` and `File`
|
||||
components with completed edit results. A separate case mounts `ToolDisplay`
|
||||
with a patch result. It uses four real Core tool source files, with deterministic
|
||||
identifier renames, rather than repeated filler. It does not connect to a server.
|
||||
|
||||
From `packages/app`, set `PATCH_BUILD_DIR` and `PATCH_RESULTS_DIR` to external
|
||||
artifact directories, then run:
|
||||
|
||||
```sh
|
||||
bun x vite build --config e2e/performance/patch-groups/vite.config.ts
|
||||
bun x playwright test --config e2e/performance/patch-groups/playwright.config.ts --repeat-each=20
|
||||
```
|
||||
|
||||
Run under the shared exclusive gate when collecting measurements on a shared
|
||||
machine. The Playwright-owned static server uses `PATCH_PORT` (default 4317),
|
||||
refuses to reuse an existing server, and shuts down after the run.
|
||||
|
||||
Each fresh browser context measures a cold collapsed mount, a warm remount,
|
||||
and opening `edit.ts` through its real accordion. Mount timing covers synchronous
|
||||
component construction through layout. Expansion timing starts at the click and
|
||||
ends at the production file renderer's `onRendered` callback. Assertions check
|
||||
the exact file count, collapsed state, and completed file rendering. Results
|
||||
include payload bytes, source bytes, file/tool counts, and supporting warm
|
||||
`patchFileGroups` timings with and without reading views. No timing thresholds
|
||||
are enforced. This is a browser component workload, not a full desktop memory test.
|
||||
|
||||
Freeze the build before changing production code. Use the same fixture, browser,
|
||||
viewport, sample count, and completion checks for both revisions.
|
||||
|
||||
`PATCH_REVISION=<git-sha>` loads the grouping module and tool renderer from that
|
||||
revision at build time without changing the worktree. This is useful when fixing
|
||||
the harness after freezing a baseline. All other production sources must match
|
||||
between revisions; this switch only covers those two measured modules.
|
||||
|
||||
For a separate diagnostic build, set `PATCH_COUNTERS=1`. Its build-only transform
|
||||
counts grouping, normalization, reconstruction, and line-diff calls with User
|
||||
Timing marks. Do not mix instrumented results with clean timings. Set
|
||||
`OPENCODE_PERFORMANCE_TRACE_DIR` for the existing Chrome trace collector, and
|
||||
`PATCH_SCREENSHOTS=1` for collapsed/expanded screenshots after measurement.
|
||||
@@ -0,0 +1,143 @@
|
||||
/// <reference types="vite/client" />
|
||||
|
||||
import { render } from "solid-js/web"
|
||||
import { Show } from "solid-js"
|
||||
import { createStore } from "solid-js/store"
|
||||
import { ThemeProvider } from "@opencode-ai/ui/theme"
|
||||
import { CurrentSessionProviders } from "../../../../session-ui/src/storybook/current-session-story"
|
||||
import { emptySessionDocument } from "../../../../session-ui/src/storybook/current-session-fixtures"
|
||||
import { CurrentFileToolGroup, ToolDisplay } from "../../../../session-ui/src/tools/tool-renderer"
|
||||
import { patchFileGroups } from "../../../../session-ui/src/components/apply-patch-file"
|
||||
import type { SessionMessageAssistantTool } from "@opencode-ai/client/promise"
|
||||
import { createTwoFilesPatch, diffLines } from "diff"
|
||||
import edit from "../../../../core/src/tool/plugin/edit.ts?raw"
|
||||
import patch from "../../../../core/src/tool/plugin/patch.ts?raw"
|
||||
import read from "../../../../core/src/tool/plugin/read.ts?raw"
|
||||
import shell from "../../../../core/src/tool/plugin/shell.ts?raw"
|
||||
import "../../../src/index.css"
|
||||
|
||||
const scenario = new URLSearchParams(location.search).get("scenario") ?? "complete"
|
||||
const sources = [edit, patch, read, shell].map((text) => text.replaceAll("\r\n", "\n"))
|
||||
const names = ["edit", "patch", "read", "shell"]
|
||||
const changed = (text: string) => text.replaceAll(/\bcontext\b/g, "invocation")
|
||||
const entry = (index: number, before: string, after: string) => ({
|
||||
file: `src/tool/plugin/${names[index]}.ts`,
|
||||
patch: createTwoFilesPatch(names[index], names[index], before, after, "", "", {
|
||||
context: scenario === "partial" ? 3 : Infinity,
|
||||
}),
|
||||
...diffLines(before, after).reduce(
|
||||
(counts, item) => ({
|
||||
additions: counts.additions + (item.added ? item.count : 0),
|
||||
deletions: counts.deletions + (item.removed ? item.count : 0),
|
||||
}),
|
||||
{ additions: 0, deletions: 0 },
|
||||
),
|
||||
status: "modified" as const,
|
||||
})
|
||||
const files =
|
||||
scenario === "multi"
|
||||
? sources.map((text, index) => entry(index, text, changed(text)))
|
||||
: [
|
||||
entry(0, sources[0], changed(sources[0])),
|
||||
...(scenario === "chained"
|
||||
? [entry(0, changed(sources[0]), changed(sources[0]).replaceAll(/\binput\b/g, "parameters"))]
|
||||
: []),
|
||||
]
|
||||
const tools: SessionMessageAssistantTool[] = files.map((file, index) => ({
|
||||
id: `fixture-edit-${index}`,
|
||||
type: "tool",
|
||||
name: "edit",
|
||||
state: {
|
||||
status: "completed",
|
||||
input: { path: file.file, oldString: "context", newString: "invocation", replaceAll: true },
|
||||
metadata: { files: [file] },
|
||||
content: [{ type: "text", text: `Edited ${file.file}` }],
|
||||
},
|
||||
time: { created: 1, ran: 2, completed: 3 },
|
||||
}))
|
||||
|
||||
declare global {
|
||||
interface Window {
|
||||
patchBenchmark: {
|
||||
payloadBytes: number
|
||||
sourceBytes: number
|
||||
files: number
|
||||
tools: number
|
||||
grouping: (expanded: boolean) => { ms: number; groups: number; views: number }
|
||||
}
|
||||
}
|
||||
}
|
||||
window.patchBenchmark = {
|
||||
payloadBytes: new TextEncoder().encode(JSON.stringify(tools)).length,
|
||||
sourceBytes: new TextEncoder().encode(sources.slice(0, scenario === "multi" ? 4 : 1).join("")).length,
|
||||
files: new Set(files.map((file) => file.file)).size,
|
||||
tools: tools.length,
|
||||
grouping(expanded) {
|
||||
const start = performance.now()
|
||||
const groups = patchFileGroups(files)
|
||||
const views = expanded ? groups.reduce((count, file) => count + file.views.length, 0) : 0
|
||||
return { ms: performance.now() - start, groups: groups.length, views }
|
||||
},
|
||||
}
|
||||
|
||||
function Fixture() {
|
||||
const [state, setState] = createStore({ mounted: false, duration: 0, rendered: 0 })
|
||||
let start = 0
|
||||
return (
|
||||
<ThemeProvider>
|
||||
<section style={{ margin: "24px auto", "max-width": "960px" }}>
|
||||
<button
|
||||
onClick={() => {
|
||||
start = performance.now()
|
||||
setState("mounted", true)
|
||||
document.querySelector("[data-component=apply-patch-tool]")!.getBoundingClientRect()
|
||||
setState("duration", performance.now() - start)
|
||||
}}
|
||||
>
|
||||
Mount tools
|
||||
</button>
|
||||
<button
|
||||
onClick={() => {
|
||||
setState({ mounted: false, rendered: 0 })
|
||||
}}
|
||||
>
|
||||
Unmount tools
|
||||
</button>
|
||||
<output data-testid="mount-ms">{state.duration}</output>
|
||||
<output data-testid="rendered">{state.rendered}</output>
|
||||
<div
|
||||
on:click={{
|
||||
capture: true,
|
||||
handleEvent() {
|
||||
start = performance.now()
|
||||
},
|
||||
}}
|
||||
>
|
||||
<Show when={state.mounted}>
|
||||
<CurrentSessionProviders document={emptySessionDocument}>
|
||||
<Show
|
||||
when={scenario === "direct"}
|
||||
fallback={
|
||||
<CurrentFileToolGroup
|
||||
tools={tools}
|
||||
onSizeChange={() => setState("rendered", performance.now() - start)}
|
||||
/>
|
||||
}
|
||||
>
|
||||
<ToolDisplay
|
||||
id="fixture-patch"
|
||||
tool="patch"
|
||||
input={{}}
|
||||
metadata={{ files }}
|
||||
status="completed"
|
||||
onContentRendered={() => setState("rendered", performance.now() - start)}
|
||||
/>
|
||||
</Show>
|
||||
</CurrentSessionProviders>
|
||||
</Show>
|
||||
</div>
|
||||
</section>
|
||||
</ThemeProvider>
|
||||
)
|
||||
}
|
||||
render(() => <Fixture />, document.getElementById("root")!)
|
||||
@@ -0,0 +1,11 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<title>Patch groups benchmark</title>
|
||||
</head>
|
||||
<body>
|
||||
<main id="root"></main>
|
||||
<script type="module" src="./fixture.tsx"></script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,66 @@
|
||||
import { benchmark, expect } from "../benchmark"
|
||||
|
||||
for (const scenario of ["complete", "partial", "chained", "multi", "direct"]) {
|
||||
benchmark(`patch groups ${scenario}`, async ({ page, report }, info) => {
|
||||
await page.goto(`/?scenario=${scenario}`)
|
||||
await expect(page.getByRole("button", { name: "Mount tools", exact: true })).toBeEnabled()
|
||||
await page.evaluate(() => document.fonts.ready)
|
||||
expect(await page.evaluate(() => document.fonts.check('13px "Inter"'))).toBe(true)
|
||||
const shape = await page.evaluate(() => {
|
||||
const { grouping, ...shape } = window.patchBenchmark
|
||||
performance.clearMarks()
|
||||
return shape
|
||||
})
|
||||
const mount = async () => {
|
||||
await page.getByRole("button", { name: "Mount tools", exact: true }).click()
|
||||
await expect(page.locator('[data-slot="apply-patch-filename"]')).toHaveCount(shape.files)
|
||||
await expect(page.locator('[data-component="file"]')).toHaveCount(0)
|
||||
return Number(await page.getByTestId("mount-ms").textContent())
|
||||
}
|
||||
const cold = await mount()
|
||||
const counters = await page.evaluate(() =>
|
||||
Object.fromEntries(
|
||||
["patchFileGroups", "normalize", "completePatchContents", "diffLines"].map((name) => [
|
||||
name,
|
||||
performance.getEntriesByName(`patch-counter:${name}`).length,
|
||||
]),
|
||||
),
|
||||
)
|
||||
await page.getByRole("button", { name: "Unmount tools", exact: true }).click()
|
||||
await expect(page.locator('[data-component="apply-patch-tool"]')).toHaveCount(0)
|
||||
await page.evaluate(() => performance.clearMarks())
|
||||
const warm = await mount()
|
||||
const warmCounters = await page.evaluate(() =>
|
||||
Object.fromEntries(
|
||||
["patchFileGroups", "normalize", "completePatchContents", "diffLines"].map((name) => [
|
||||
name,
|
||||
performance.getEntriesByName(`patch-counter:${name}`).length,
|
||||
]),
|
||||
),
|
||||
)
|
||||
const file = page.locator('[data-scope="apply-patch"] button').filter({ hasText: "edit.ts" })
|
||||
await expect(file).toHaveAttribute("aria-expanded", "false")
|
||||
await file.click()
|
||||
await expect(file).toHaveAttribute("aria-expanded", "true")
|
||||
await expect(page.getByTestId("rendered")).not.toHaveText("0")
|
||||
await expect(page.locator('[data-component="file"]')).toBeVisible()
|
||||
const expansion = Number(await page.getByTestId("rendered").textContent())
|
||||
const grouping = await page.evaluate(() => ({
|
||||
collapsed: window.patchBenchmark.grouping(false),
|
||||
expanded: window.patchBenchmark.grouping(true),
|
||||
}))
|
||||
expect(grouping.collapsed.groups).toBe(shape.files)
|
||||
report(
|
||||
{ cold, warm, expansion, grouping, counters, warmCounters },
|
||||
{ scenario, ...shape, scope: "production tool components" },
|
||||
)
|
||||
if (process.env.PATCH_SCREENSHOTS === "1") {
|
||||
await page.screenshot({ path: info.outputPath(`${scenario}-expanded.png`) })
|
||||
await file.click()
|
||||
await expect(file).toHaveAttribute("aria-expanded", "false")
|
||||
await page
|
||||
.locator('[data-component="apply-patch-tool"]')
|
||||
.screenshot({ path: info.outputPath(`${scenario}-collapsed.png`) })
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
import { defineConfig } from "@playwright/test"
|
||||
|
||||
const baseURL = `http://127.0.0.1:${process.env.PATCH_PORT ?? 4317}`
|
||||
export default defineConfig({
|
||||
testDir: ".",
|
||||
testMatch: "*.bench.ts",
|
||||
workers: 1,
|
||||
retries: 0,
|
||||
timeout: 60_000,
|
||||
outputDir: process.env.PATCH_RESULTS_DIR,
|
||||
reporter: "line",
|
||||
use: { baseURL, viewport: { width: 1366, height: 768 }, colorScheme: "light" },
|
||||
webServer: {
|
||||
command: "bun serve.ts",
|
||||
url: baseURL,
|
||||
reuseExistingServer: false,
|
||||
},
|
||||
})
|
||||
@@ -0,0 +1,13 @@
|
||||
import path from "node:path"
|
||||
|
||||
const directory = process.env.PATCH_BUILD_DIR
|
||||
if (!directory) throw new Error("PATCH_BUILD_DIR is required")
|
||||
Bun.serve({
|
||||
hostname: "127.0.0.1",
|
||||
port: Number(process.env.PATCH_PORT ?? 4317),
|
||||
async fetch(request) {
|
||||
const pathname = new URL(request.url).pathname
|
||||
const file = Bun.file(path.join(directory, pathname === "/" ? "index.html" : pathname))
|
||||
return (await file.exists()) ? new Response(file) : new Response("Not found", { status: 404 })
|
||||
},
|
||||
})
|
||||
@@ -0,0 +1,51 @@
|
||||
import { defineConfig } from "vite"
|
||||
import solid from "vite-plugin-solid"
|
||||
import tailwindcss from "@tailwindcss/vite"
|
||||
import { fileURLToPath } from "node:url"
|
||||
import { execFileSync } from "node:child_process"
|
||||
import path from "node:path"
|
||||
|
||||
export default defineConfig({
|
||||
root: fileURLToPath(new URL(".", import.meta.url)),
|
||||
publicDir: fileURLToPath(new URL("../../../public", import.meta.url)),
|
||||
plugins: [
|
||||
solid(),
|
||||
tailwindcss(),
|
||||
{
|
||||
name: "patch-group-counters",
|
||||
enforce: "pre",
|
||||
load(id) {
|
||||
if (!process.env.PATCH_REVISION) return
|
||||
const root = fileURLToPath(new URL("../../../../..", import.meta.url))
|
||||
const file = path.relative(root, id).replaceAll("\\", "/")
|
||||
if (
|
||||
![
|
||||
"packages/session-ui/src/components/apply-patch-file.ts",
|
||||
"packages/session-ui/src/tools/tool-renderer.tsx",
|
||||
].includes(file)
|
||||
)
|
||||
return
|
||||
return execFileSync("git", ["show", `${process.env.PATCH_REVISION}:${file}`], { cwd: root, encoding: "utf8" })
|
||||
},
|
||||
transform(code, id) {
|
||||
if (process.env.PATCH_COUNTERS !== "1") return
|
||||
const functions = id.replaceAll("\\", "/").endsWith("/apply-patch-file.ts")
|
||||
? ["patchFileGroups"]
|
||||
: id.replaceAll("\\", "/").endsWith("/session-diff.ts")
|
||||
? ["normalize", "completePatchContents"]
|
||||
: id.replaceAll("\\", "/").endsWith("/diff/line.js")
|
||||
? ["diffLines"]
|
||||
: []
|
||||
for (const name of functions) {
|
||||
const pattern = new RegExp(`(export function ${name}\\([^)]*\\)[^{]*\\{)`)
|
||||
if (!pattern.test(code)) throw new Error(`Missing instrumented function ${name} in ${id}`)
|
||||
code = code.replace(pattern, `$1 performance.mark("patch-counter:${name}");`)
|
||||
}
|
||||
return functions.length ? { code, map: null } : undefined
|
||||
},
|
||||
},
|
||||
],
|
||||
resolve: { dedupe: ["solid-js", "@solidjs/meta"] },
|
||||
worker: { format: "es" },
|
||||
build: { outDir: process.env.PATCH_BUILD_DIR, emptyOutDir: true, sourcemap: true },
|
||||
})
|
||||
@@ -0,0 +1,44 @@
|
||||
# Native Terminal Benchmark
|
||||
|
||||
Manual Windows benchmark. Run only in an isolated development worktree. It does
|
||||
not connect to an OpenCode service, user profile, or database.
|
||||
|
||||
Build from `packages/app` with
|
||||
`bun x vite build --config e2e/performance/terminals/vite.config.ts`, then freeze
|
||||
`dist` outside the repository. Set `PLAYWRIGHT_BUILD=1`, `PLAYWRIGHT_BASE_URL` to
|
||||
an unused loopback URL, `TERMINAL_BUILD` to the frozen build,
|
||||
`TERMINAL_ARTIFACTS` to an existing external directory, and `TERMINAL_RESULTS`
|
||||
to an external result directory. Run:
|
||||
|
||||
```sh
|
||||
bun x playwright test --config e2e/performance/terminals/playwright.config.ts --repeat-each=20
|
||||
```
|
||||
|
||||
The runner owns its preview server and each test owns a PowerShell ConPTY process.
|
||||
Session metadata is deterministic. Native output is forwarded through Playwright's
|
||||
WebSocket fixture into the real production `Terminal`, writer, Ghostty WASM/canvas,
|
||||
and serializer. No output is dropped, paused, or delayed. This is native terminal
|
||||
plus production renderer evidence, not the production PTY backend or Electron IPC.
|
||||
|
||||
The workload is 12,000 colored build/test log lines with file paths, durations, and
|
||||
result descriptions. Cases separate visible output, the same output while hidden,
|
||||
and closing the session tab after filling the configured scrollback. Ghostty
|
||||
converts the app's 10,000-line setting to bytes at its initial 80-column width;
|
||||
resizing reduces the effective row capacity. The report records actual retained
|
||||
rows and the first retained fixture record rather than assuming 10,000 rows. Completion
|
||||
requires the final marker in Ghostty and completion of its write callbacks, not
|
||||
just WebSocket delivery. Teardown requires Home readiness and the final serialized
|
||||
snapshot. Input, focus, resizing, and native process survival are checked.
|
||||
|
||||
`probe.ts` is included only by this benchmark build. It observes actual writes,
|
||||
renderer calls, and serialization. Chrome `TaskDuration` measures renderer task
|
||||
time, not total process CPU or RAM. For attribution, set
|
||||
`OPENCODE_PERFORMANCE_TRACE_DIR`; keep traced runs separate from clean timing.
|
||||
`TERMINAL_DRAW_PROBE=1` separately counts actual canvas draws to verify hidden
|
||||
rendering; do not mix these instrumented samples with clean timing.
|
||||
Use `TERMINAL_REVISION` and `TERMINAL_BUNDLE` to identify frozen artifacts.
|
||||
`TERMINAL_SCREENSHOTS` captures the visible result after timing.
|
||||
|
||||
The benchmark has no machine-dependent performance thresholds. Keep raw logs,
|
||||
snapshots, traces, and screenshots outside Git. Run heavy work through the
|
||||
coordinator's exclusive gate when participating in a shared performance wave.
|
||||
@@ -0,0 +1,20 @@
|
||||
import { defineConfig } from "@playwright/test"
|
||||
import config from "../../../playwright.config"
|
||||
|
||||
export default defineConfig({
|
||||
...config,
|
||||
testDir: ".",
|
||||
testIgnore: [],
|
||||
testMatch: "terminal-benchmark.spec.ts",
|
||||
workers: 1,
|
||||
retries: 0,
|
||||
timeout: 120_000,
|
||||
outputDir: process.env.TERMINAL_RESULTS,
|
||||
reporter: [["line"]],
|
||||
webServer: {
|
||||
command: `bun x vite preview --host 127.0.0.1 --port ${new URL(process.env.PLAYWRIGHT_BASE_URL!).port} --strictPort --outDir ${process.env.TERMINAL_BUILD}`,
|
||||
url: process.env.PLAYWRIGHT_BASE_URL,
|
||||
reuseExistingServer: false,
|
||||
},
|
||||
use: { ...config.use, viewport: { width: 1440, height: 900 }, trace: "off", video: "off", serviceWorkers: "block" },
|
||||
})
|
||||
@@ -0,0 +1,74 @@
|
||||
import { Terminal } from "ghostty-web"
|
||||
import { SerializeAddon } from "../../../src/session/terminal/serialize"
|
||||
|
||||
export type TerminalProbe = {
|
||||
term?: Terminal
|
||||
writes: number
|
||||
pending: number
|
||||
bytes: number
|
||||
renders: number
|
||||
hiddenRenders: number
|
||||
draws: number
|
||||
hiddenDraws: number
|
||||
serialized: { ms: number; bytes: number; value: string }[]
|
||||
}
|
||||
|
||||
declare global {
|
||||
interface Window {
|
||||
terminalProbe: TerminalProbe
|
||||
}
|
||||
}
|
||||
|
||||
const probe: TerminalProbe = {
|
||||
writes: 0,
|
||||
pending: 0,
|
||||
bytes: 0,
|
||||
renders: 0,
|
||||
hiddenRenders: 0,
|
||||
draws: 0,
|
||||
hiddenDraws: 0,
|
||||
serialized: [],
|
||||
}
|
||||
window.terminalProbe = probe
|
||||
const open = Terminal.prototype.open
|
||||
Terminal.prototype.open = function (element) {
|
||||
probe.term = this
|
||||
open.call(this, element)
|
||||
// Ghostty does not expose render events. This benchmark-only wrapper observes its
|
||||
// actual renderer; it does not alter scheduling, parsing, or drawing.
|
||||
const renderer = (this as unknown as { renderer: { render: (...args: unknown[]) => void } }).renderer
|
||||
const render = renderer.render
|
||||
let hidden = false
|
||||
renderer.render = function (...args) {
|
||||
probe.renders++
|
||||
hidden = !element.checkVisibility()
|
||||
if (hidden) probe.hiddenRenders++
|
||||
return render.apply(this, args)
|
||||
}
|
||||
if (new URL(location.href).searchParams.has("terminalDrawProbe")) {
|
||||
const context = element.querySelector("canvas")!.getContext("2d")!
|
||||
const draw = context.drawImage
|
||||
context.drawImage = function (...args: unknown[]) {
|
||||
probe.draws++
|
||||
if (hidden) probe.hiddenDraws++
|
||||
Reflect.apply(draw, this, args)
|
||||
}
|
||||
}
|
||||
}
|
||||
const write = Terminal.prototype.write
|
||||
Terminal.prototype.write = function (data, done) {
|
||||
probe.writes++
|
||||
probe.pending++
|
||||
probe.bytes += typeof data === "string" ? new TextEncoder().encode(data).byteLength : data.byteLength
|
||||
return write.call(this, data, () => {
|
||||
probe.pending--
|
||||
done?.()
|
||||
})
|
||||
}
|
||||
const serialize = SerializeAddon.prototype.serialize
|
||||
SerializeAddon.prototype.serialize = function (options) {
|
||||
const start = performance.now()
|
||||
const value = serialize.call(this, options)
|
||||
probe.serialized.push({ ms: performance.now() - start, bytes: new TextEncoder().encode(value).byteLength, value })
|
||||
return value
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
param([Parameter(Mandatory = $true)][string]$Fixture)
|
||||
$ErrorActionPreference = 'Stop'
|
||||
[Console]::WriteLine('TERMINAL_FIXTURE_READY')
|
||||
while ($null -ne ($command = [Console]::ReadLine())) {
|
||||
if ($command -eq 'exit') { exit 0 }
|
||||
if ($command -eq 'run') {
|
||||
foreach ($line in [System.IO.File]::ReadLines($Fixture)) {
|
||||
[Console]::WriteLine($line)
|
||||
}
|
||||
[Console]::WriteLine('TERMINAL_WORKLOAD_DONE')
|
||||
}
|
||||
if ($command -eq 'ping') { [Console]::WriteLine('TERMINAL_PROCESS_ALIVE') }
|
||||
}
|
||||
@@ -0,0 +1,352 @@
|
||||
import { createRequire } from "node:module"
|
||||
import { mkdtemp, writeFile, rm } from "node:fs/promises"
|
||||
import { tmpdir } from "node:os"
|
||||
import path from "node:path"
|
||||
import { fileURLToPath } from "node:url"
|
||||
import type { Page } from "@playwright/test"
|
||||
import { benchmark, benchmarkDiagnostics, expect } from "../benchmark"
|
||||
import { mockOpenCodeServer } from "../../utils/mock-server"
|
||||
import { expectSessionTitle } from "../../utils/waits"
|
||||
import type {} from "./probe"
|
||||
|
||||
// Use the same installed native PTY package as Core, with a fixture-owned process.
|
||||
const native = createRequire(new URL("../../../../core/package.json", import.meta.url))("@lydell/node-pty") as {
|
||||
spawn: (
|
||||
file: string,
|
||||
args: string[],
|
||||
options: { cols: number; rows: number; cwd: string },
|
||||
) => {
|
||||
pid: number
|
||||
write: (data: string) => void
|
||||
resize: (cols: number, rows: number) => void
|
||||
kill: () => void
|
||||
onData: (handler: (data: string) => void) => { dispose: () => void }
|
||||
onExit: (handler: () => void) => { dispose: () => void }
|
||||
}
|
||||
}
|
||||
|
||||
const sessionID = "ses_terminal_benchmark"
|
||||
const ptyID = "pty_terminal_benchmark"
|
||||
const title = "Terminal build output"
|
||||
const server = process.env.PLAYWRIGHT_BASE_URL!
|
||||
const href = `/server/${Buffer.from(server).toString("base64url")}/session/${sessionID}`
|
||||
const lines = Array.from({ length: 12_000 }, (_, i) => {
|
||||
const unit = ["session/history", "session/runner", "project/discovery", "tool/shell", "provider/stream"][i % 5]
|
||||
return `\x1b[32mPASS\x1b[0m packages/core/test/${unit}-${String(i).padStart(5, "0")}.test.ts \x1b[2m[${10 + (i % 237)}ms]\x1b[0m validates ordered output and durable recovery`
|
||||
}).join("\r\n")
|
||||
|
||||
benchmark.use({ traceScope: "interaction", viewport: { width: 1440, height: 900 } })
|
||||
|
||||
for (const scenario of ["visible-output", "hidden-output", "full-scrollback-teardown"] as const) {
|
||||
benchmark(scenario, async ({ page, report }, info) => {
|
||||
const dir = await mkdtemp(path.join(process.env.TERMINAL_ARTIFACTS ?? tmpdir(), "terminal-fixture-"))
|
||||
await writeFile(path.join(dir, "build.log"), lines)
|
||||
const pty = native.spawn(
|
||||
"pwsh.exe",
|
||||
[
|
||||
"-NoLogo",
|
||||
"-NoProfile",
|
||||
"-NonInteractive",
|
||||
"-File",
|
||||
fileURLToPath(new URL("./shell.ps1", import.meta.url)),
|
||||
"-Fixture",
|
||||
path.join(dir, "build.log"),
|
||||
],
|
||||
{ cols: 120, rows: 24, cwd: dir },
|
||||
)
|
||||
const exited = new Promise<void>((resolve) => pty.onExit(resolve))
|
||||
let output = ""
|
||||
let connected = 0
|
||||
let closed = 0
|
||||
let send: ((data: string) => void) | undefined
|
||||
const listener = pty.onData((data) => {
|
||||
output += data
|
||||
send?.(data)
|
||||
})
|
||||
const sizes: { cols: number; rows: number }[] = []
|
||||
const removals: string[] = []
|
||||
try {
|
||||
if (process.env.TERMINAL_DRAW_PROBE) {
|
||||
await page.addInitScript(() => {
|
||||
const fill = CanvasRenderingContext2D.prototype.fillText
|
||||
CanvasRenderingContext2D.prototype.fillText = function (...args: Parameters<typeof fill>) {
|
||||
if (this.canvas instanceof HTMLCanvasElement && this.canvas.closest('[data-component="terminal"]')) {
|
||||
window.terminalProbe.draws++
|
||||
if (!this.canvas.checkVisibility()) window.terminalProbe.hiddenDraws++
|
||||
}
|
||||
Reflect.apply(fill, this, args)
|
||||
}
|
||||
})
|
||||
}
|
||||
const location = { directory: dir, project: { id: "proj_terminal_benchmark", directory: dir } }
|
||||
const data = {
|
||||
id: ptyID,
|
||||
title: "Terminal 1",
|
||||
command: "pwsh.exe",
|
||||
args: [],
|
||||
cwd: dir,
|
||||
status: "running",
|
||||
pid: pty.pid,
|
||||
}
|
||||
await mockOpenCodeServer(page, {
|
||||
directory: dir,
|
||||
project: {
|
||||
id: location.project.id,
|
||||
worktree: dir,
|
||||
vcs: "git",
|
||||
name: "terminal-benchmark",
|
||||
time: { created: 1, updated: 1 },
|
||||
sandboxes: [],
|
||||
},
|
||||
provider: {
|
||||
all: [
|
||||
{
|
||||
id: "opencode",
|
||||
name: "OpenCode",
|
||||
models: { test: { id: "test", name: "Test", limit: { context: 200_000 } } },
|
||||
},
|
||||
],
|
||||
connected: ["opencode"],
|
||||
default: { providerID: "opencode", modelID: "test" },
|
||||
},
|
||||
sessions: [
|
||||
{
|
||||
id: sessionID,
|
||||
slug: sessionID,
|
||||
projectID: location.project.id,
|
||||
directory: dir,
|
||||
title,
|
||||
version: "dev",
|
||||
time: { created: 1700000000000, updated: 1700000000000 },
|
||||
},
|
||||
],
|
||||
pageMessages: () => ({ items: [] }),
|
||||
})
|
||||
await page.route("**/api/pty**", async (route) => {
|
||||
if (route.request().method() === "DELETE") removals.push(route.request().url())
|
||||
const body = route.request().postDataJSON()
|
||||
if (body?.size) {
|
||||
sizes.push(body.size)
|
||||
pty.resize(body.size.cols, body.size.rows)
|
||||
}
|
||||
return route.fulfill({
|
||||
status: 200,
|
||||
contentType: "application/json",
|
||||
body: JSON.stringify({
|
||||
location,
|
||||
data: route.request().url().includes("connect-token") ? { ticket: "fixture", expires_in: 60 } : data,
|
||||
}),
|
||||
})
|
||||
})
|
||||
await page.routeWebSocket(new RegExp(`/api/pty/${ptyID}/connect`), (socket) => {
|
||||
connected++
|
||||
send = (data) => socket.send(data)
|
||||
socket.send(output.slice(Number(new URL(socket.url()).searchParams.get("cursor") ?? 0)))
|
||||
socket.onMessage((data) => pty.write(String(data)))
|
||||
socket.onClose(() => {
|
||||
closed++
|
||||
send = undefined
|
||||
})
|
||||
})
|
||||
await page.addInitScript(
|
||||
({ server, sessionID }) => {
|
||||
localStorage.setItem("settings.v3", JSON.stringify({ general: { terminalPlacement: "bottom" } }))
|
||||
localStorage.setItem(
|
||||
"opencode.window.browser.dat:tabs",
|
||||
JSON.stringify([{ type: "session", server, sessionId: sessionID }]),
|
||||
)
|
||||
},
|
||||
{ server, sessionID },
|
||||
)
|
||||
await page.goto(
|
||||
`${href}${process.env.TERMINAL_DRAW_PROBE && scenario !== "full-scrollback-teardown" ? "?terminalDrawProbe" : ""}`,
|
||||
)
|
||||
await expectSessionTitle(page, title)
|
||||
await page.keyboard.press("Control+Backquote")
|
||||
await waitForText(page, "TERMINAL_FIXTURE_READY")
|
||||
const terminal = page.locator('[data-component="terminal"]')
|
||||
await expect(terminal).toBeVisible()
|
||||
await page.evaluate(() => document.fonts.ready.then(() => undefined))
|
||||
await expect
|
||||
.poll(async () => {
|
||||
const size = await page.evaluate(() => ({
|
||||
cols: window.terminalProbe.term!.cols,
|
||||
rows: window.terminalProbe.term!.rows,
|
||||
}))
|
||||
return sizes.at(-1)?.cols === size.cols && sizes.at(-1)?.rows === size.rows
|
||||
})
|
||||
.toBe(true)
|
||||
if (scenario === "hidden-output") {
|
||||
await page.keyboard.press("Control+Backquote")
|
||||
await expect(terminal).toBeHidden()
|
||||
}
|
||||
const cdp = await page.context().newCDPSession(page)
|
||||
await cdp.send("Performance.enable")
|
||||
const before = await cdp.send("Performance.getMetrics")
|
||||
const start = await page.evaluate(() => {
|
||||
window.terminalProbe.renders = 0
|
||||
window.terminalProbe.hiddenRenders = 0
|
||||
window.terminalProbe.draws = 0
|
||||
window.terminalProbe.hiddenDraws = 0
|
||||
return performance.now()
|
||||
})
|
||||
await benchmarkDiagnostics(page).startTrace()
|
||||
// The producer is not throttled. The visible and hidden cases receive the same bytes.
|
||||
pty.write("run\r")
|
||||
await waitForText(page, "TERMINAL_WORKLOAD_DONE")
|
||||
const produced = await page.evaluate(
|
||||
(start) => ({
|
||||
ms: performance.now() - start,
|
||||
renders: window.terminalProbe.renders,
|
||||
hiddenRenders: window.terminalProbe.hiddenRenders,
|
||||
draws: window.terminalProbe.draws,
|
||||
hiddenDraws: window.terminalProbe.hiddenDraws,
|
||||
bytes: window.terminalProbe.bytes,
|
||||
scrollback: window.terminalProbe.term!.getScrollbackLength(),
|
||||
cols: window.terminalProbe.term!.cols,
|
||||
rows: window.terminalProbe.term!.rows,
|
||||
firstRecord: Number(
|
||||
window.terminalProbe
|
||||
.term!.buffer.normal.getLine(0)
|
||||
?.translateToString(true)
|
||||
.match(/-(\d{5})\.test\.ts/)?.[1],
|
||||
),
|
||||
}),
|
||||
start,
|
||||
)
|
||||
const after = await cdp.send("Performance.getMetrics")
|
||||
const cpuMs =
|
||||
(after.metrics.find((x) => x.name === "TaskDuration")!.value -
|
||||
before.metrics.find((x) => x.name === "TaskDuration")!.value) *
|
||||
1000
|
||||
let interaction: Record<string, unknown> = {}
|
||||
if (scenario === "hidden-output") {
|
||||
const start = await page.evaluate(() => performance.now())
|
||||
await page.keyboard.press("Control+Backquote")
|
||||
await expect(terminal).toBeVisible()
|
||||
await waitForText(page, "TERMINAL_WORKLOAD_DONE")
|
||||
interaction = { returnMs: await page.evaluate((start) => performance.now() - start, start) }
|
||||
}
|
||||
if (scenario === "full-scrollback-teardown") {
|
||||
// Ghostty converts the configured line limit to bytes at the initial
|
||||
// 80-column size. Resizing changes the effective retained row count.
|
||||
expect(produced.scrollback).toBeGreaterThan(0)
|
||||
expect(produced.firstRecord).toBeGreaterThan(0)
|
||||
expect(produced.firstRecord).toBeLessThan(11_999)
|
||||
const close = page.locator(`[data-titlebar-tab-slot]:has(a[href="${href}"]) [data-component="icon-button-v2"]`)
|
||||
await expect(close).toBeVisible()
|
||||
const cpuBefore = await cdp.send("Performance.getMetrics")
|
||||
const start = await page.evaluate(() => performance.now())
|
||||
await close.click()
|
||||
await expect(page).toHaveURL("/")
|
||||
await expect(page.locator('[data-component="home-session-search"]')).toBeVisible()
|
||||
await expect(page.locator('[data-component="home-session-search"] input')).toBeEditable()
|
||||
await expect.poll(() => page.evaluate(() => window.terminalProbe.serialized.length)).toBe(1)
|
||||
interaction = await page.evaluate(
|
||||
(start) => ({
|
||||
homeReadyMs: performance.now() - start,
|
||||
serializeMs: window.terminalProbe.serialized[0].ms,
|
||||
serializedBytes: window.terminalProbe.serialized[0].bytes,
|
||||
}),
|
||||
start,
|
||||
)
|
||||
const cpuAfter = await cdp.send("Performance.getMetrics")
|
||||
interaction.teardownCpuMs =
|
||||
(cpuAfter.metrics.find((x) => x.name === "TaskDuration")!.value -
|
||||
cpuBefore.metrics.find((x) => x.name === "TaskDuration")!.value) *
|
||||
1000
|
||||
const snapshot = await page.evaluate(() => window.terminalProbe.serialized[0].value)
|
||||
expect(Array.from(snapshot.matchAll(/-(\d{5})\.test\.ts/g), (match) => Number(match[1]))).toEqual(
|
||||
Array.from({ length: 12_000 - produced.firstRecord }, (_, index) => produced.firstRecord + index),
|
||||
)
|
||||
expect(snapshot).toContain("TERMINAL_WORKLOAD_DONE")
|
||||
await writeFile(
|
||||
path.join(
|
||||
process.env.TERMINAL_ARTIFACTS ?? tmpdir(),
|
||||
`${process.env.TERMINAL_BUNDLE}-${info.repeatEachIndex}.ansi`,
|
||||
),
|
||||
snapshot,
|
||||
)
|
||||
await expect(terminal).toHaveCount(0)
|
||||
expect(closed).toBe(1)
|
||||
// UI teardown must not terminate the native process.
|
||||
pty.write("ping\r")
|
||||
await expect.poll(() => output.includes("TERMINAL_PROCESS_ALIVE")).toBe(true)
|
||||
}
|
||||
await benchmarkDiagnostics(page).stop()
|
||||
expect(connected).toBe(1)
|
||||
expect(removals).toEqual([])
|
||||
expect(sizes.length).toBeGreaterThan(0)
|
||||
report(
|
||||
{ ...produced, cpuMs, ...interaction },
|
||||
{
|
||||
revision: process.env.TERMINAL_REVISION,
|
||||
bundle: process.env.TERMINAL_BUNDLE,
|
||||
fixtureBytes: Buffer.byteLength(lines),
|
||||
fixtureLines: 12_000,
|
||||
transport: "Windows ConPTY -> Playwright WebSocket fixture -> production Terminal/writer/Ghostty",
|
||||
scope: "Chromium renderer; not Electron total RAM or production backend IPC",
|
||||
},
|
||||
)
|
||||
if (scenario !== "full-scrollback-teardown") {
|
||||
// Validate input, focus, and resize after both visible and hidden output.
|
||||
await terminal.click()
|
||||
await expect(terminal.locator("textarea")).toBeFocused()
|
||||
await page.keyboard.type("ping")
|
||||
await page.keyboard.press("Enter")
|
||||
await waitForText(page, "TERMINAL_PROCESS_ALIVE")
|
||||
const columns = await page.evaluate(() => window.terminalProbe.term!.cols)
|
||||
await page.setViewportSize({ width: 1100, height: 800 })
|
||||
await expect.poll(() => page.evaluate(() => window.terminalProbe.term!.cols)).not.toBe(columns)
|
||||
await expect
|
||||
.poll(async () => sizes.at(-1)?.cols === (await page.evaluate(() => window.terminalProbe.term!.cols)))
|
||||
.toBe(true)
|
||||
expect(closed).toBe(0)
|
||||
}
|
||||
if (process.env.TERMINAL_SCREENSHOTS && scenario !== "full-scrollback-teardown") {
|
||||
await page.screenshot({
|
||||
path: path.join(process.env.TERMINAL_SCREENSHOTS, `${scenario}-${info.repeatEachIndex}.png`),
|
||||
})
|
||||
}
|
||||
} finally {
|
||||
listener.dispose()
|
||||
try {
|
||||
await benchmarkDiagnostics(page).stop()
|
||||
// Stop fixture request handlers before killing their native resource. The
|
||||
// app debounces PTY resize requests independently of the canvas resize.
|
||||
await page.unrouteAll({ behavior: "wait" })
|
||||
await page.close()
|
||||
} finally {
|
||||
pty.kill()
|
||||
await exited
|
||||
await writeFile(
|
||||
path.join(
|
||||
process.env.TERMINAL_ARTIFACTS ?? tmpdir(),
|
||||
`${process.env.TERMINAL_BUNDLE}-${scenario}-${info.repeatEachIndex}.native.log`,
|
||||
),
|
||||
output,
|
||||
)
|
||||
await rm(dir, { recursive: true, force: true })
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
async function waitForText(page: Page, text: string) {
|
||||
await expect
|
||||
.poll(() =>
|
||||
page.evaluate((text) => {
|
||||
const probe = window.terminalProbe
|
||||
const term = probe?.term
|
||||
if (!term || probe.pending !== 0) return false
|
||||
const buffer = term.buffer.active
|
||||
return Array.from(
|
||||
{ length: term.rows },
|
||||
(_, i) => buffer.getLine(buffer.length - term.rows + i)?.translateToString(true) ?? "",
|
||||
)
|
||||
.join("\n")
|
||||
.includes(text)
|
||||
}, text),
|
||||
)
|
||||
.toBe(true)
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
import { mergeConfig } from "vite"
|
||||
import config from "../../../vite.config"
|
||||
|
||||
// The probe is included only in this manual benchmark build, never in the app build.
|
||||
export default mergeConfig(config, {
|
||||
plugins: [
|
||||
{
|
||||
name: "terminal-benchmark-probe",
|
||||
transformIndexHtml: {
|
||||
order: "pre",
|
||||
handler: () => [
|
||||
{ tag: "script", attrs: { type: "module", src: "/e2e/performance/terminals/probe.ts" }, injectTo: "head" },
|
||||
],
|
||||
},
|
||||
},
|
||||
],
|
||||
})
|
||||
@@ -0,0 +1,197 @@
|
||||
import { base64Encode } from "@opencode-ai/util/encode"
|
||||
import { benchmark, benchmarkDiagnostics, expect } from "../benchmark"
|
||||
import { mockOpenCodeServer } from "../../utils/mock-server"
|
||||
import { expectSessionTitle } from "../../utils/waits"
|
||||
import { fixture } from "./session-timeline-stress.fixture"
|
||||
|
||||
const sessionID = "ses_composer_write_batch"
|
||||
const title = "Composer persistence workload"
|
||||
const addition = " Keep the existing error handling and add coverage."
|
||||
const text =
|
||||
Array.from(
|
||||
{ length: 180 },
|
||||
(_, index) =>
|
||||
`Review requirement ${index + 1}: preserve request ordering in src/queue/worker-${index % 12}.ts. ` +
|
||||
`A failed request must retain its payload, report its cause, and remain safe to retry.\n` +
|
||||
`Expected: await queue.flush(); expect(await repository.read(id)).toEqual(accepted);\n`,
|
||||
).join("") + "Implementation notes:"
|
||||
const items = Array.from({ length: 8 }, (_, index) => ({
|
||||
type: "file",
|
||||
path: `src/queue/worker-${index}.ts`,
|
||||
selection: { startLine: 10, startChar: 0, endLine: 24, endChar: 0 },
|
||||
commentID: `composer-write-batch-${index}`,
|
||||
comment: `Check retry path ${index}: keep the original request identity and error cause.`,
|
||||
preview: Array.from(
|
||||
{ length: 24 },
|
||||
(_, line) => ` const request${line} = await repository.loadPending("queue-${index}");`,
|
||||
).join("\n"),
|
||||
}))
|
||||
const document = {
|
||||
prompt: [{ type: "text", content: text, start: 0, end: text.length }],
|
||||
cursor: text.length,
|
||||
mode: "normal",
|
||||
context: { items },
|
||||
}
|
||||
type Probe = { active: boolean; encodes: number; bytes: number; inputs: number; keyups: number }
|
||||
type ProbeWindow = typeof window & { composerWriteBatch: Probe }
|
||||
|
||||
benchmark.use({
|
||||
viewport: { width: 1440, height: 900 },
|
||||
video: "off",
|
||||
trace: "off",
|
||||
serviceWorkers: "block",
|
||||
traceScope: "interaction",
|
||||
})
|
||||
|
||||
for (const scenario of ["typing", "cursor-movement", "cursor-noop", "submit-cleanup"] as const) {
|
||||
benchmark(`composer-write-batch: ${scenario}`, async ({ page, report }, testInfo) => {
|
||||
const submitted: Record<string, unknown>[] = []
|
||||
await mockOpenCodeServer(page, {
|
||||
directory: fixture.directory,
|
||||
project: fixture.project,
|
||||
provider: fixture.provider,
|
||||
sessions: [{ ...fixture.sessions[0], id: sessionID, title }],
|
||||
pageMessages: () => ({ items: [] }),
|
||||
onPrompt: (input) => submitted.push(input.body),
|
||||
})
|
||||
await page.addInitScript(
|
||||
({ key, value, counts }) => {
|
||||
localStorage.setItem(key, JSON.stringify(value))
|
||||
const probe: Probe = { active: false, encodes: 0, bytes: 0, inputs: 0, keyups: 0 }
|
||||
;(window as ProbeWindow).composerWriteBatch = probe
|
||||
// The draft adapter parses each schema-encoded composer document once before
|
||||
// its asynchronous blob walk. Count at this boundary, not at the IDB write
|
||||
// (which already discards superseded writes). This fixture is ASCII only.
|
||||
if (counts) {
|
||||
const parse = JSON.parse
|
||||
JSON.parse = (value, reviver) => {
|
||||
if (probe.active && typeof value === "string" && value.startsWith('{"prompt":[')) {
|
||||
probe.encodes++
|
||||
probe.bytes += value.length
|
||||
}
|
||||
return parse(value, reviver)
|
||||
}
|
||||
}
|
||||
window.addEventListener("input", (event) => {
|
||||
if (
|
||||
probe.active &&
|
||||
event.target instanceof Element &&
|
||||
event.target.matches('[data-component="composer-editor"]')
|
||||
)
|
||||
probe.inputs++
|
||||
})
|
||||
window.addEventListener("keyup", (event) => {
|
||||
if (
|
||||
probe.active &&
|
||||
event.target instanceof Element &&
|
||||
event.target.matches('[data-component="composer-editor"]')
|
||||
)
|
||||
probe.keyups++
|
||||
})
|
||||
},
|
||||
{
|
||||
key: `${base64Encode(fixture.directory)}/prompt/${sessionID}.v2`,
|
||||
value: document,
|
||||
counts: process.env.OPENCODE_PERSISTENCE_COUNTS === "1",
|
||||
},
|
||||
)
|
||||
const server = `http://${process.env.PLAYWRIGHT_SERVER_HOST ?? "127.0.0.1"}:${process.env.PLAYWRIGHT_SERVER_PORT ?? "4096"}`
|
||||
await page.goto(`/server/${base64Encode(server)}/session/${sessionID}`)
|
||||
await expectSessionTitle(page, title)
|
||||
const editor = page.getByRole("textbox", { name: "Prompt", exact: true })
|
||||
await expect(editor).toBeEditable()
|
||||
await expect(editor).toHaveText(text)
|
||||
await editor.focus()
|
||||
await editor.press("ControlOrMeta+End")
|
||||
await page.evaluate(() => window.document.fonts.ready)
|
||||
const stored = async () =>
|
||||
page.evaluate(async (sessionID) => {
|
||||
const db = await new Promise<IDBDatabase>((resolve, reject) => {
|
||||
const request = indexedDB.open("opencode-drafts", 1)
|
||||
request.onsuccess = () => resolve(request.result)
|
||||
request.onerror = () => reject(request.error)
|
||||
})
|
||||
try {
|
||||
const transaction = db.transaction("documents")
|
||||
const keys = transaction.objectStore("documents").getAllKeys()
|
||||
const values = transaction.objectStore("documents").getAll()
|
||||
await new Promise<void>((resolve, reject) => {
|
||||
transaction.oncomplete = () => resolve()
|
||||
transaction.onerror = () => reject(transaction.error)
|
||||
})
|
||||
const index = keys.result.findIndex((key) => String(key).endsWith(`session:${sessionID}:prompt`))
|
||||
// Parse after disabling the count so the observation is not part of it.
|
||||
const probe = (window as ProbeWindow).composerWriteBatch
|
||||
const active = probe.active
|
||||
probe.active = false
|
||||
const value = index < 0 ? undefined : JSON.parse(values.result[index])
|
||||
probe.active = active
|
||||
return value as { prompt: { content: string }[]; cursor: number; context: { items: unknown[] } } | undefined
|
||||
} finally {
|
||||
db.close()
|
||||
}
|
||||
}, sessionID)
|
||||
await expect.poll(async () => (await stored())?.cursor).toBe(text.length)
|
||||
expect((await stored())?.context.items).toHaveLength(items.length)
|
||||
const cdp = await page.context().newCDPSession(page)
|
||||
await cdp.send("Performance.enable")
|
||||
await benchmarkDiagnostics(page).startTrace()
|
||||
const before = await cdp.send("Performance.getMetrics")
|
||||
await page.evaluate(() => {
|
||||
;(window as ProbeWindow).composerWriteBatch.active = true
|
||||
performance.mark("composer-write-batch-start")
|
||||
})
|
||||
const start = performance.now()
|
||||
if (scenario === "typing") await editor.pressSequentially(addition)
|
||||
if (scenario === "cursor-movement") await editor.press("ArrowLeft")
|
||||
if (scenario === "cursor-noop") await editor.press("ArrowRight")
|
||||
if (scenario === "submit-cleanup") await editor.press("Enter")
|
||||
const expectedText = scenario === "typing" ? text + addition : scenario === "submit-cleanup" ? "" : text
|
||||
const expectedCursor =
|
||||
scenario === "typing"
|
||||
? text.length + addition.length
|
||||
: scenario === "submit-cleanup"
|
||||
? 0
|
||||
: text.length - Number(scenario === "cursor-movement")
|
||||
await expect(editor).toHaveText(expectedText)
|
||||
await expect.poll(async () => (await stored())?.cursor).toBe(expectedCursor)
|
||||
const elapsedMs = performance.now() - start
|
||||
const after = await cdp.send("Performance.getMetrics")
|
||||
const probe = await page.evaluate(() => {
|
||||
performance.mark("composer-write-batch-end")
|
||||
const probe = (window as ProbeWindow).composerWriteBatch
|
||||
probe.active = false
|
||||
return probe
|
||||
})
|
||||
expect((await stored())?.prompt.map((part) => part.content).join("")).toBe(expectedText)
|
||||
if (scenario === "submit-cleanup") {
|
||||
await expect.poll(() => submitted.length).toBe(1)
|
||||
expect(submitted[0].text).toContain(text)
|
||||
expect((await stored())?.context.items).toHaveLength(0)
|
||||
}
|
||||
expect(probe.keyups).toBe(scenario === "typing" ? addition.length : 1)
|
||||
expect(probe.inputs).toBe(scenario === "typing" ? addition.length : 0)
|
||||
const metric = (name: string) =>
|
||||
1000 *
|
||||
((after.metrics.find((x) => x.name === name)?.value ?? 0) -
|
||||
(before.metrics.find((x) => x.name === name)?.value ?? 0))
|
||||
report(
|
||||
{ elapsedMs, taskMs: metric("TaskDuration"), scriptMs: metric("ScriptDuration"), ...probe },
|
||||
{
|
||||
scenario,
|
||||
promptBytes: Buffer.byteLength(text),
|
||||
contextItems: items.length,
|
||||
persistedBytes: Buffer.byteLength(JSON.stringify(document)),
|
||||
typedCharacters: scenario === "typing" ? addition.length : 0,
|
||||
counts: process.env.OPENCODE_PERSISTENCE_COUNTS === "1",
|
||||
browser: page.context().browser()!.version(),
|
||||
build: process.env.OPENCODE_PERSISTENCE_BUILD,
|
||||
transport: "playwright-route",
|
||||
completion: "editor text and committed IDB cursor",
|
||||
},
|
||||
)
|
||||
await benchmarkDiagnostics(page).stop()
|
||||
await cdp.detach()
|
||||
if (testInfo.repeatEachIndex === 0) await page.screenshot({ path: testInfo.outputPath(`${scenario}.png`) })
|
||||
})
|
||||
}
|
||||
@@ -0,0 +1,315 @@
|
||||
import type { CDPSession, Page } from "@playwright/test"
|
||||
import { benchmark, expect } from "../benchmark"
|
||||
import { mockOpenCodeServer } from "../../utils/mock-server"
|
||||
import { APP_READY_TIMEOUT } from "../../utils/waits"
|
||||
import { fixture as stress } from "./session-timeline-stress.fixture"
|
||||
import { createHomeIndexFixture, type HomeIndexFixture } from "./home-session-index.fixture"
|
||||
|
||||
// Home fetches the root-session index on mount. These cases hold the visible
|
||||
// output constant (newest 64 rows, same order) while the index size grows, so
|
||||
// bytes, main-thread work, time to actionable rows, and retained heap can be
|
||||
// attributed to index handling rather than to what the user sees.
|
||||
const sizes = (process.env.HOME_INDEX_SIZES ?? "500,5000,10000").split(",").map(Number)
|
||||
const churnSize = Number(process.env.HOME_INDEX_CHURN_SIZE ?? 10_000)
|
||||
const updates = Number(process.env.HOME_INDEX_UPDATES ?? 20)
|
||||
// Forced GC changes timing; retention runs stay separate from clean timing runs.
|
||||
const memory = process.env.OPENCODE_PERFORMANCE_MEMORY === "1"
|
||||
|
||||
const rowContainer = '[data-component="home-session-row-container"]'
|
||||
const row = '[data-component="home-session-row"]'
|
||||
|
||||
type Probe = {
|
||||
expected: number
|
||||
rows?: number
|
||||
frame?: number
|
||||
pending: Record<string, string>
|
||||
titles: Record<string, number>
|
||||
}
|
||||
|
||||
type ProbeWindow = Window & {
|
||||
__homeIndexProbe?: Probe
|
||||
__mockServerStream?: { push: (payloads: unknown[]) => void }
|
||||
}
|
||||
|
||||
// Interaction-scoped tracing keeps the page-lifetime Chrome trace off unless a
|
||||
// scenario starts one; service workers stay out of the renderer measurement.
|
||||
benchmark.use({
|
||||
viewport: { width: 1440, height: 900 },
|
||||
video: "off",
|
||||
trace: "off",
|
||||
serviceWorkers: "block",
|
||||
traceScope: "interaction",
|
||||
})
|
||||
|
||||
benchmark.describe("performance: home session index", () => {
|
||||
for (const count of sizes) {
|
||||
benchmark(`loads home with ${count} root sessions`, async ({ page, report }, testInfo) => {
|
||||
benchmark.setTimeout(180_000)
|
||||
const fixture = createHomeIndexFixture({ count, now: Date.now() })
|
||||
const network = await setup(page, fixture)
|
||||
const cdp = await page.context().newCDPSession(page)
|
||||
await cdp.send("Performance.enable")
|
||||
|
||||
await page.goto("/")
|
||||
const rows = page.locator(row)
|
||||
await expect(rows).toHaveCount(fixture.expected.visible, { timeout: APP_READY_TIMEOUT })
|
||||
const first = page.locator(rowContainer).filter({ hasText: fixture.expected.newestTitle })
|
||||
await expect(first).toHaveAttribute("data-session-id", fixture.expected.newestID)
|
||||
await expect(first.locator(row)).toBeEnabled()
|
||||
// Row order is part of the held-constant output: the DOM must list the
|
||||
// newest session first.
|
||||
await expect(page.locator(rowContainer).nth(0)).toHaveAttribute("data-session-id", fixture.expected.newestID)
|
||||
|
||||
const probe = await readProbe(page)
|
||||
const metrics = await performanceMetrics(cdp)
|
||||
const retained = memory ? await retainedHeap(cdp) : undefined
|
||||
await network.settle()
|
||||
if (testInfo.repeatEachIndex === 0) {
|
||||
const path = testInfo.outputPath(`home-${count}.png`)
|
||||
await page.screenshot({ path })
|
||||
await testInfo.attach(`home-${count}`, { path, contentType: "image/png" })
|
||||
}
|
||||
report(
|
||||
{
|
||||
listRequests: network.list.requests,
|
||||
listBytes: network.list.bytes,
|
||||
rowsMs: probe.rows,
|
||||
frameMs: probe.frame,
|
||||
listEndMs: probe.listEnd,
|
||||
processMs: probe.rows - probe.listEnd,
|
||||
// ThreadTime is main-thread CPU time; ScriptDuration only covers
|
||||
// Blink-invoked callbacks, so promise continuations are missing from it.
|
||||
threadMs: metrics.ThreadTime * 1000,
|
||||
scriptMs: metrics.ScriptDuration * 1000,
|
||||
taskMs: metrics.TaskDuration * 1000,
|
||||
layoutMs: metrics.LayoutDuration * 1000,
|
||||
styleMs: metrics.RecalcStyleDuration * 1000,
|
||||
heapUsedMB: metrics.JSHeapUsedSize / 1_048_576,
|
||||
heapTotalMB: metrics.JSHeapTotalSize / 1_048_576,
|
||||
nodes: metrics.Nodes,
|
||||
...(retained ? { retainedHeapMB: retained.usedSize / 1_048_576, retainedNodes: retained.nodes } : {}),
|
||||
},
|
||||
{
|
||||
sessions: count,
|
||||
directories: fixture.directories.length,
|
||||
fixtureVersion: fixture.version,
|
||||
fixtureListBytes: fixture.listBytes,
|
||||
visibleRows: fixture.expected.visible,
|
||||
gc: memory ? "explicit" : "none",
|
||||
scope: "renderer main isolate; not total desktop RAM",
|
||||
},
|
||||
)
|
||||
expect(probe.rows).toBeGreaterThan(0)
|
||||
await cdp.detach()
|
||||
})
|
||||
}
|
||||
|
||||
benchmark(
|
||||
`applies ${updates} background session updates on home with ${churnSize} root sessions`,
|
||||
async ({ page, report }) => {
|
||||
benchmark.setTimeout(180_000)
|
||||
const fixture = createHomeIndexFixture({ count: churnSize, now: Date.now() })
|
||||
const target = fixture.sessions[fixture.sessions.length - 1]
|
||||
const network = await setup(page, fixture)
|
||||
const cdp = await page.context().newCDPSession(page)
|
||||
await cdp.send("Performance.enable")
|
||||
|
||||
// Home prefetches the two newest sessions, which makes them locally known
|
||||
// and therefore part of every later index merge, like an open session.
|
||||
const prefetch = page.waitForResponse(
|
||||
(response) => response.request().method() === "GET" && response.url().includes(`/api/session/${target.id}`),
|
||||
)
|
||||
await page.goto("/")
|
||||
await expect(page.locator(row)).toHaveCount(fixture.expected.visible, { timeout: APP_READY_TIMEOUT })
|
||||
await prefetch
|
||||
const titleLocator = page.locator(
|
||||
`${rowContainer}[data-session-id="${target.id}"] [data-component="home-session-title"]`,
|
||||
)
|
||||
await expect(titleLocator).toHaveText(fixture.expected.newestTitle)
|
||||
|
||||
const before = await performanceMetrics(cdp)
|
||||
const samples: number[] = []
|
||||
for (let index = 1; index <= updates; index++) {
|
||||
const title = `${fixture.expected.newestTitle} · update ${index}`
|
||||
// The completed run bumps the session's updated time and title on the
|
||||
// server; the client re-reads the session and re-merges the index.
|
||||
target.title = title
|
||||
target.time.updated += 1000
|
||||
target.time.idle = target.time.updated
|
||||
const pushed = await page.evaluate(
|
||||
({ id, title, event }) => {
|
||||
const host = window as ProbeWindow
|
||||
if (!host.__homeIndexProbe || !host.__mockServerStream) throw new Error("Missing Home index probe")
|
||||
host.__homeIndexProbe.pending[id] = title
|
||||
host.__mockServerStream.push([event])
|
||||
return performance.now()
|
||||
},
|
||||
{
|
||||
id: target.id,
|
||||
title,
|
||||
event: {
|
||||
id: `evt_home_update_${index}`,
|
||||
created: Date.now(),
|
||||
type: "session.execution.succeeded",
|
||||
data: { sessionID: target.id },
|
||||
},
|
||||
},
|
||||
)
|
||||
await expect(titleLocator).toHaveText(title)
|
||||
const seen = await page.evaluate(({ title }) => (window as ProbeWindow).__homeIndexProbe?.titles[title], {
|
||||
title,
|
||||
})
|
||||
if (seen === undefined) throw new Error(`Probe did not observe title: ${title}`)
|
||||
samples.push(seen - pushed)
|
||||
}
|
||||
const after = await performanceMetrics(cdp)
|
||||
await network.settle()
|
||||
const sorted = samples.toSorted((a, b) => a - b)
|
||||
report(
|
||||
{
|
||||
updates,
|
||||
updateMs: sorted,
|
||||
updateMedianMs: median(sorted),
|
||||
updateP95Ms: sorted[Math.min(sorted.length - 1, Math.ceil(sorted.length * 0.95) - 1)],
|
||||
threadMs: (after.ThreadTime - before.ThreadTime) * 1000,
|
||||
scriptMs: (after.ScriptDuration - before.ScriptDuration) * 1000,
|
||||
taskMs: (after.TaskDuration - before.TaskDuration) * 1000,
|
||||
layoutMs: (after.LayoutDuration - before.LayoutDuration) * 1000,
|
||||
sessionReads: network.get.requests,
|
||||
},
|
||||
{
|
||||
sessions: churnSize,
|
||||
directories: fixture.directories.length,
|
||||
fixtureVersion: fixture.version,
|
||||
event: "session.execution.succeeded",
|
||||
scope: "renderer main isolate; latency from event push to row title update",
|
||||
},
|
||||
)
|
||||
expect(samples).toHaveLength(updates)
|
||||
await cdp.detach()
|
||||
},
|
||||
)
|
||||
})
|
||||
|
||||
async function setup(page: Page, fixture: HomeIndexFixture) {
|
||||
const primary = fixture.directories[0]
|
||||
await mockOpenCodeServer(page, {
|
||||
directory: primary.directory,
|
||||
project: {
|
||||
id: primary.projectID,
|
||||
worktree: primary.directory,
|
||||
vcs: "git",
|
||||
name: primary.name,
|
||||
time: { created: fixture.now - 400 * 86_400_000, updated: fixture.now },
|
||||
sandboxes: [],
|
||||
},
|
||||
sessions: fixture.sessions,
|
||||
pageMessages: () => ({ items: [] }),
|
||||
provider: stress.provider,
|
||||
})
|
||||
await page.addInitScript(
|
||||
({ projects }) => {
|
||||
localStorage.setItem(
|
||||
"opencode.global.dat:server",
|
||||
JSON.stringify({
|
||||
projects: { local: projects.map((worktree, index) => ({ worktree, expanded: index === 0 })) },
|
||||
lastProject: { local: projects[0] },
|
||||
}),
|
||||
)
|
||||
},
|
||||
{ projects: fixture.directories.filter((entry) => entry.project).map((entry) => entry.directory) },
|
||||
)
|
||||
await page.addInitScript(
|
||||
({ expected }) => {
|
||||
const host = window as ProbeWindow
|
||||
const probe: Probe = { expected, pending: {}, titles: {} }
|
||||
host.__homeIndexProbe = probe
|
||||
const observer = new MutationObserver(() => {
|
||||
if (probe.rows === undefined) {
|
||||
const count = document.querySelectorAll('[data-component="home-session-row"]').length
|
||||
if (count >= probe.expected) {
|
||||
probe.rows = performance.now()
|
||||
requestAnimationFrame((time) => {
|
||||
probe.frame = time
|
||||
})
|
||||
}
|
||||
}
|
||||
for (const [id, title] of Object.entries(probe.pending)) {
|
||||
const element = document.querySelector(
|
||||
`[data-component="home-session-row-container"][data-session-id="${id}"] [data-component="home-session-title"]`,
|
||||
)
|
||||
if (element?.textContent !== title) continue
|
||||
probe.titles[title] = performance.now()
|
||||
delete probe.pending[id]
|
||||
}
|
||||
})
|
||||
// Init scripts run before <html> exists; the document node itself is always observable.
|
||||
observer.observe(document, { childList: true, subtree: true, characterData: true })
|
||||
},
|
||||
{ expected: fixture.expected.visible },
|
||||
)
|
||||
const list = { requests: 0, bytes: 0 }
|
||||
const get = { requests: 0, bytes: 0 }
|
||||
const pending: Promise<void>[] = []
|
||||
page.on("response", (response) => {
|
||||
const request = response.request()
|
||||
if (request.method() !== "GET") return
|
||||
const url = new URL(response.url())
|
||||
const isList = url.pathname === "/api/session"
|
||||
const isGet = /^\/api\/session\/[^/]+$/.test(url.pathname)
|
||||
if (!isList && !isGet) return
|
||||
const bucket = isList ? list : get
|
||||
bucket.requests += 1
|
||||
pending.push(
|
||||
response
|
||||
.body()
|
||||
.then((body) => {
|
||||
bucket.bytes += body.byteLength
|
||||
})
|
||||
.catch(() => {}),
|
||||
)
|
||||
})
|
||||
return {
|
||||
list,
|
||||
get,
|
||||
settle: () => Promise.all(pending).then(() => {}),
|
||||
}
|
||||
}
|
||||
|
||||
async function readProbe(page: Page) {
|
||||
const probe = await page.evaluate(() => {
|
||||
const host = window as ProbeWindow
|
||||
if (!host.__homeIndexProbe) throw new Error("Missing Home index probe")
|
||||
// Resource timing marks when the last index page finished arriving, so
|
||||
// rows - listEnd isolates parse, merge, and render from transfer and boot.
|
||||
const listEnd = Math.max(
|
||||
0,
|
||||
...performance
|
||||
.getEntriesByType("resource")
|
||||
.filter((entry) => new URL(entry.name).pathname === "/api/session")
|
||||
.map((entry) => (entry as PerformanceResourceTiming).responseEnd),
|
||||
)
|
||||
return { rows: host.__homeIndexProbe.rows, frame: host.__homeIndexProbe.frame, listEnd }
|
||||
})
|
||||
if (probe.rows === undefined) throw new Error("Probe did not observe the expected Home rows")
|
||||
return { rows: probe.rows, frame: probe.frame, listEnd: probe.listEnd }
|
||||
}
|
||||
|
||||
async function performanceMetrics(cdp: CDPSession) {
|
||||
const result = await cdp.send("Performance.getMetrics")
|
||||
return Object.fromEntries(result.metrics.map((metric) => [metric.name, metric.value])) as Record<string, number>
|
||||
}
|
||||
|
||||
async function retainedHeap(cdp: CDPSession) {
|
||||
// GC is an explicit retained-heap measurement, not an application optimization or readiness wait.
|
||||
await cdp.send("HeapProfiler.collectGarbage")
|
||||
const heap = await cdp.send("Runtime.getHeapUsage")
|
||||
const dom = await cdp.send("Memory.getDOMCounters")
|
||||
return { usedSize: heap.usedSize, nodes: dom.nodes }
|
||||
}
|
||||
|
||||
function median(sorted: number[]) {
|
||||
if (sorted.length === 0) return undefined
|
||||
const middle = Math.floor(sorted.length / 2)
|
||||
return sorted.length % 2 === 0 ? (sorted[middle - 1] + sorted[middle]) / 2 : sorted[middle]
|
||||
}
|
||||
@@ -0,0 +1,234 @@
|
||||
import { currentSession } from "../../utils/mock-server"
|
||||
|
||||
export const HOME_INDEX_FIXTURE_VERSION = 1
|
||||
|
||||
// Home shows the newest 64 root sessions; the fixture asserts that many rows.
|
||||
export const HOME_INDEX_VISIBLE_LIMIT = 64
|
||||
|
||||
export type HomeIndexSession = {
|
||||
id: string
|
||||
projectID: string
|
||||
title?: string
|
||||
agent: string
|
||||
model: { id: string; providerID: string; variant: string }
|
||||
cost: number
|
||||
tokens: { input: number; output: number; reasoning: number; cache: { read: number; write: number } }
|
||||
outcome: "succeeded" | "failed" | "interrupted"
|
||||
time: { created: number; updated: number; idle: number; viewed?: number }
|
||||
location: { directory: string }
|
||||
}
|
||||
|
||||
export type HomeIndexDirectory = {
|
||||
directory: string
|
||||
name: string
|
||||
projectID: string
|
||||
// Local project entries appear in the Home project list; the rest model
|
||||
// sessions whose project was removed from the sidebar.
|
||||
project: boolean
|
||||
}
|
||||
|
||||
const repos = [
|
||||
"opencode",
|
||||
"storefront-api",
|
||||
"billing-worker",
|
||||
"design-system",
|
||||
"mobile-app",
|
||||
"infra-terraform",
|
||||
"docs-site",
|
||||
"analytics-pipeline",
|
||||
"auth-service",
|
||||
"legacy-admin",
|
||||
"notebooks",
|
||||
"dotfiles",
|
||||
]
|
||||
|
||||
const verbs = [
|
||||
"Fix",
|
||||
"Investigate",
|
||||
"Refactor",
|
||||
"Add",
|
||||
"Remove",
|
||||
"Debug",
|
||||
"Migrate",
|
||||
"Implement",
|
||||
"Review",
|
||||
"Optimize",
|
||||
"Document",
|
||||
"Rename",
|
||||
"Extract",
|
||||
"Wire up",
|
||||
"Stabilize",
|
||||
]
|
||||
|
||||
const objects = [
|
||||
"flaky retry in the session runner",
|
||||
"memory growth in the Home index",
|
||||
"i18n keys for the settings dialog",
|
||||
"the review pane remount on tab switch",
|
||||
"SQLite migration for session inbox",
|
||||
"OAuth callback handling",
|
||||
"terminal scrollback serialization",
|
||||
"Playwright visual stability probes",
|
||||
"the composer paste path",
|
||||
"provider catalog normalization",
|
||||
"the worktree preparation flow",
|
||||
"CI cache keys for bun install",
|
||||
"Markdown highlighting for large fences",
|
||||
"the permission auto-approver",
|
||||
"cursor pagination for /api/session",
|
||||
"the desktop titlebar on Windows",
|
||||
"the file tree lazy loading",
|
||||
"event replay ordering",
|
||||
"RTL layout in the sidebar",
|
||||
"unread badges for background sessions",
|
||||
]
|
||||
|
||||
const contexts = [
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
" (#{n})",
|
||||
" in packages/app",
|
||||
" in packages/core",
|
||||
" for v2",
|
||||
" before release",
|
||||
" — follow-up",
|
||||
" · src/{file}.ts",
|
||||
" after the Electron upgrade",
|
||||
" with tests",
|
||||
]
|
||||
|
||||
const files = ["controller", "index", "records", "store", "runtime", "layout", "timeline", "composer", "data", "sync"]
|
||||
|
||||
const agents = ["build", "build", "build", "build", "plan", "general"]
|
||||
|
||||
const models = [
|
||||
{ id: "claude-opus-4-6", providerID: "anthropic", variant: "default" },
|
||||
{ id: "claude-sonnet-4-6", providerID: "anthropic", variant: "default" },
|
||||
{ id: "gpt-5.3-codex", providerID: "openai", variant: "high" },
|
||||
{ id: "gemini-3-pro", providerID: "google", variant: "default" },
|
||||
]
|
||||
|
||||
const DAY = 24 * 60 * 60 * 1000
|
||||
|
||||
export function createHomeIndexFixture(input: { count: number; now: number; directories?: number }) {
|
||||
const random = mulberry32(0x5eed_0000 + input.count)
|
||||
const directoryCount = Math.min(input.directories ?? 12, repos.length)
|
||||
const directories: HomeIndexDirectory[] = repos.slice(0, directoryCount).map((name, index) => ({
|
||||
directory: `/Users/dev/repos/${name}`,
|
||||
name,
|
||||
projectID: `prj_${hex(random, 16)}`,
|
||||
project: index < Math.max(1, Math.round(directoryCount * 0.66)),
|
||||
}))
|
||||
// Zipf-like spread: a few repositories hold most of the history.
|
||||
const weights = directories.map((_, index) => 1 / Math.pow(index + 1, 0.9))
|
||||
const total = weights.reduce((sum, weight) => sum + weight, 0)
|
||||
const cumulative = weights.map((_, index) => weights.slice(0, index + 1).reduce((sum, w) => sum + w, 0) / total)
|
||||
|
||||
// Newest first; adding the index after sorting keeps offsets strictly
|
||||
// increasing so no two sessions share an updated time.
|
||||
const offsets = Array.from({ length: input.count }, () => {
|
||||
const bucket = random()
|
||||
// 5% today, 5% yesterday, the rest skewed toward recent months over 18 months.
|
||||
if (bucket < 0.05) return Math.floor(random() * DAY * 0.9)
|
||||
if (bucket < 0.1) return DAY + Math.floor(random() * DAY * 0.9)
|
||||
return 2 * DAY + Math.floor(Math.pow(random(), 2) * 538 * DAY)
|
||||
})
|
||||
.sort((a, b) => a - b)
|
||||
.map((offset, index) => offset + index)
|
||||
|
||||
const newestFirst: HomeIndexSession[] = offsets.map((offset, index) => {
|
||||
const pick = random()
|
||||
const directory = directories[cumulative.findIndex((edge) => pick <= edge)] ?? directories[0]
|
||||
const updated = input.now - offset
|
||||
const duration = 5 * 60_000 + Math.floor(random() * 6 * 60 * 60_000)
|
||||
const tokens = {
|
||||
input: 5_000 + Math.floor(random() * 400_000),
|
||||
output: 500 + Math.floor(random() * 60_000),
|
||||
reasoning: random() < 0.6 ? Math.floor(random() * 20_000) : 0,
|
||||
cache: { read: Math.floor(random() * 900_000), write: Math.floor(random() * 120_000) },
|
||||
}
|
||||
const outcome = random() < 0.9 ? "succeeded" : random() < 0.6 ? "failed" : "interrupted"
|
||||
return {
|
||||
id: `ses_${base62(random, 26)}`,
|
||||
projectID: directory.projectID,
|
||||
...(random() < 0.97 ? { title: title(random, index) } : {}),
|
||||
agent: agents[Math.floor(random() * agents.length)],
|
||||
model: models[Math.floor(random() * models.length)],
|
||||
// USD at $3/M input, $15/M output, $0.30/M cache read, $3.75/M cache write.
|
||||
cost:
|
||||
Math.round(
|
||||
(tokens.input * 3 + tokens.output * 15 + tokens.cache.read * 0.3 + tokens.cache.write * 3.75) / 100,
|
||||
) / 10_000,
|
||||
tokens,
|
||||
outcome,
|
||||
time: {
|
||||
created: updated - duration,
|
||||
updated,
|
||||
idle: updated - Math.floor(random() * 2_000),
|
||||
...(random() < 0.8 ? { viewed: updated } : {}),
|
||||
},
|
||||
location: { directory: directory.directory },
|
||||
}
|
||||
})
|
||||
// The mock lists sessions in array order and reverses for `desc`, so keep
|
||||
// the fixture ascending by updated time like the server's index order.
|
||||
const sessions = newestFirst.toReversed()
|
||||
const newest = newestFirst[0]
|
||||
const encoded = JSON.stringify({ data: sessions.map((session) => currentSession(session)), cursor: {} })
|
||||
|
||||
return {
|
||||
version: HOME_INDEX_FIXTURE_VERSION,
|
||||
count: input.count,
|
||||
now: input.now,
|
||||
directories,
|
||||
sessions,
|
||||
// Bytes the mock serves for the complete index when it fits one page.
|
||||
listBytes: Buffer.byteLength(encoded),
|
||||
expected: {
|
||||
visible: Math.min(HOME_INDEX_VISIBLE_LIMIT, input.count),
|
||||
newestID: newest.id,
|
||||
// The mock labels untitled sessions with their ID.
|
||||
newestTitle: newest.title ?? newest.id,
|
||||
perDirectory: Object.fromEntries(
|
||||
[...Map.groupBy(sessions, (session) => session.location.directory)].map(([directory, items]) => [
|
||||
directory,
|
||||
items.length,
|
||||
]),
|
||||
),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
export type HomeIndexFixture = ReturnType<typeof createHomeIndexFixture>
|
||||
|
||||
function title(random: () => number, index: number) {
|
||||
const verb = verbs[Math.floor(random() * verbs.length)]
|
||||
const object = objects[Math.floor(random() * objects.length)]
|
||||
const context = contexts[Math.floor(random() * contexts.length)]
|
||||
.replace("{n}", String(1000 + Math.floor(random() * 45_000)))
|
||||
.replace("{file}", files[Math.floor(random() * files.length)])
|
||||
// Keep titles unique so row identity checks cannot match a sibling.
|
||||
return `${verb} ${object}${context} [${index.toString(36)}]`
|
||||
}
|
||||
|
||||
function mulberry32(seed: number) {
|
||||
let state = seed >>> 0
|
||||
return () => {
|
||||
state = (state + 0x6d2b79f5) >>> 0
|
||||
let t = state
|
||||
t = Math.imul(t ^ (t >>> 15), t | 1)
|
||||
t ^= t + Math.imul(t ^ (t >>> 7), t | 61)
|
||||
return ((t ^ (t >>> 14)) >>> 0) / 4294967296
|
||||
}
|
||||
}
|
||||
|
||||
const alphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
|
||||
|
||||
function base62(random: () => number, length: number) {
|
||||
return Array.from({ length }, () => alphabet[Math.floor(random() * alphabet.length)]).join("")
|
||||
}
|
||||
|
||||
function hex(random: () => number, length: number) {
|
||||
return Array.from({ length }, () => Math.floor(random() * 16).toString(16)).join("")
|
||||
}
|
||||
@@ -0,0 +1,166 @@
|
||||
import { benchmark, expect } from "../benchmark"
|
||||
import { mockOpenCodeServer } from "../../utils/mock-server"
|
||||
import { expectSessionTitle } from "../../utils/waits"
|
||||
import { fixture } from "./session-timeline-stress.fixture"
|
||||
import { messages } from "./session-tab-switch.fixture"
|
||||
import { installStressSessionTabs, stressSessionHref } from "./timeline-test-helpers"
|
||||
import { measureSessionSwitch, waitForStableTimeline } from "./session-tab-switch-probe"
|
||||
|
||||
const sessions = Array.from({ length: 8 }, (_, index) => ({
|
||||
...fixture.sessions[0],
|
||||
id: `ses_prefetch_${index}`,
|
||||
title: `Renderer review ${index}`,
|
||||
}))
|
||||
// A normal first page, not the full-history response used by the tab-switch benchmark.
|
||||
const pages = Object.fromEntries(
|
||||
sessions.map((session) => [
|
||||
session.id,
|
||||
messages[fixture.targetID].slice(-20).map((message) => ({ ...message, id: `${message.id}_${session.id}` })),
|
||||
]),
|
||||
)
|
||||
const workload = {
|
||||
sessions: sessions.length,
|
||||
messagesPerPage: 20,
|
||||
payloadBytes: Object.fromEntries(
|
||||
sessions.map((session) => [
|
||||
session.id,
|
||||
Buffer.byteLength(JSON.stringify({ data: pages[session.id].toReversed(), cursor: {} })),
|
||||
]),
|
||||
),
|
||||
partsPerPage: pages[sessions[0].id].reduce(
|
||||
(count, message) => count + (message.type === "assistant" ? message.content.length : 1),
|
||||
0,
|
||||
),
|
||||
events: 0,
|
||||
}
|
||||
type ProbeWindow = Window & { __prefetchBodies?: Record<string, number> }
|
||||
|
||||
benchmark.use({ viewport: { width: 1440, height: 900 }, video: "off", trace: "off", serviceWorkers: "block" })
|
||||
|
||||
for (const close of [false, true]) {
|
||||
benchmark(
|
||||
`inactive tab prefetch: ${close ? "close before response" : "activate after restore"}`,
|
||||
async ({ page, report }, testInfo) => {
|
||||
const gate = Promise.withResolvers<void>()
|
||||
const reads: string[] = []
|
||||
const inboxReads: string[] = []
|
||||
const pending = new Set<string>()
|
||||
const concurrency = { peak: 0 }
|
||||
const mutations: string[] = []
|
||||
const errors: string[] = []
|
||||
page.on("pageerror", (error) => errors.push(error.message))
|
||||
page.on("response", (response) => {
|
||||
if (new URL(response.url()).pathname.startsWith("/api/") && !response.ok())
|
||||
errors.push(`HTTP ${response.status()}: ${response.url()}`)
|
||||
})
|
||||
page.on("request", (request) => {
|
||||
const path = new URL(request.url()).pathname
|
||||
if (request.method() === "DELETE" || /\/(interrupt|prompt)$/.test(path)) mutations.push(request.url())
|
||||
const inbox = path.match(/^\/api\/session\/([^/]+)\/inbox$/)
|
||||
if (request.method() === "GET" && inbox) inboxReads.push(inbox[1])
|
||||
})
|
||||
await page.addInitScript(() => {
|
||||
const host = window as ProbeWindow
|
||||
host.__prefetchBodies = {}
|
||||
const text = Response.prototype.text
|
||||
Response.prototype.text = async function () {
|
||||
const body = await text.call(this)
|
||||
if (this.url) {
|
||||
const path = new URL(this.url).pathname
|
||||
host.__prefetchBodies![path] = (host.__prefetchBodies![path] ?? 0) + 1
|
||||
}
|
||||
return body
|
||||
}
|
||||
})
|
||||
await mockOpenCodeServer(page, {
|
||||
...fixture,
|
||||
sessions,
|
||||
pageMessages: (id) => ({ items: pages[id] ?? [] }),
|
||||
beforeMessagesResponse: ({ sessionID }) => (sessionID === sessions[0].id ? Promise.resolve() : gate.promise),
|
||||
onMessages: ({ sessionID, phase }) => {
|
||||
if (phase === "end") return void pending.delete(sessionID)
|
||||
reads.push(sessionID)
|
||||
pending.add(sessionID)
|
||||
concurrency.peak = Math.max(concurrency.peak, pending.size)
|
||||
},
|
||||
})
|
||||
await installStressSessionTabs(page, { sessionIDs: sessions.map((session) => session.id) })
|
||||
const cdp = await page.context().newCDPSession(page)
|
||||
await cdp.send("Performance.enable")
|
||||
await page.goto(stressSessionHref(sessions[0].id))
|
||||
await expectSessionTitle(page, sessions[0].title)
|
||||
await waitForStableTimeline(page, pages[sessions[0].id].at(-2)!.id)
|
||||
// Every inactive tab's scheduled attention request must finish. This gates on the
|
||||
// same production callback as prefetch, without a sleep or waiting for a removed read.
|
||||
await page.waitForFunction(
|
||||
(ids) => ids.every((id) => (window as ProbeWindow).__prefetchBodies![`/api/session/${id}/form`] > 0),
|
||||
sessions.slice(1).map((session) => session.id),
|
||||
)
|
||||
const speculativeReads = reads.filter((id) => id !== sessions[0].id)
|
||||
const speculativeInboxReads = inboxReads.filter((id) => id !== sessions[0].id).length
|
||||
const closed = sessions.at(-1)!
|
||||
if (close) {
|
||||
const tab = page
|
||||
.locator("[data-titlebar-tab-slot]")
|
||||
.filter({ has: page.locator(`a[href="${stressSessionHref(closed.id)}"]`) })
|
||||
await tab.getByRole("button", { name: "Close tab", exact: true }).click()
|
||||
await expect(tab).toHaveCount(0)
|
||||
}
|
||||
gate.resolve()
|
||||
await page.waitForFunction(
|
||||
(ids) => ids.every((id) => (window as ProbeWindow).__prefetchBodies![`/api/session/${id}/message`] > 0),
|
||||
reads,
|
||||
)
|
||||
await expectSessionTitle(page, sessions[0].title)
|
||||
const heap =
|
||||
process.env.OPENCODE_PERFORMANCE_MEMORY === "1"
|
||||
? await cdp.send("HeapProfiler.collectGarbage").then(() => cdp.send("Runtime.getHeapUsage"))
|
||||
: undefined
|
||||
const task =
|
||||
(await cdp.send("Performance.getMetrics")).metrics.find((metric) => metric.name === "TaskDuration")!.value *
|
||||
1000
|
||||
const before = reads.length
|
||||
const target = sessions[1]
|
||||
const result = await measureSessionSwitch(page, {
|
||||
destinationIDs: pages[target.id].map((message) => message.id),
|
||||
sourceIDs: pages[sessions[0].id].map((message) => message.id),
|
||||
lastID: pages[target.id].at(-2)!.id,
|
||||
requiredPartID: `${pages[target.id].at(-1)!.id}:text:0`,
|
||||
href: stressSessionHref(target.id),
|
||||
switch: async () => {
|
||||
await page.locator(`[data-slot="titlebar-tabs"] a[href="${stressSessionHref(target.id)}"]`).click()
|
||||
await expectSessionTitle(page, target.title)
|
||||
},
|
||||
})
|
||||
await expect(
|
||||
page.locator(`[data-timeline-part-id="${pages[target.id].at(-1)!.id}:text:0"] [data-component="markdown"]`),
|
||||
).toHaveAttribute("data-markdown-ready", "")
|
||||
expect(result.firstCorrectObservedMs).not.toBeNull()
|
||||
expect(mutations).toEqual([])
|
||||
expect(errors).toEqual([])
|
||||
report(
|
||||
{
|
||||
speculativeReads: speculativeReads.length,
|
||||
speculativeInboxReads,
|
||||
speculativePayloadBytes: speculativeReads.reduce((bytes, id) => bytes + workload.payloadBytes[id], 0),
|
||||
peakMessageRequests: concurrency.peak,
|
||||
closedSessionReads: close ? reads.filter((id) => id === closed.id).length : undefined,
|
||||
activationReads: reads.length - before,
|
||||
startupTaskMs: task,
|
||||
retainedHeap: heap,
|
||||
...result,
|
||||
},
|
||||
{
|
||||
...workload,
|
||||
close,
|
||||
gc: heap ? "forced retention; timing diagnostic only" : "natural; clean timing",
|
||||
transport: "playwright-route",
|
||||
browser: page.context().browser()!.version(),
|
||||
scope: "production app renderer; not total desktop RAM",
|
||||
},
|
||||
)
|
||||
if (testInfo.repeatEachIndex === 0) await page.screenshot({ path: testInfo.outputPath("destination.png") })
|
||||
await cdp.detach()
|
||||
},
|
||||
)
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
import config from "../playwright.config"
|
||||
|
||||
export default {
|
||||
...config,
|
||||
testDir: ".",
|
||||
testMatch: "timeline-projection-benchmark.spec.ts",
|
||||
outputDir: process.env.PROJECTION_OUTPUT,
|
||||
webServer: {
|
||||
...config.webServer,
|
||||
command: `bun run serve -- --host 127.0.0.1 --port ${process.env.PLAYWRIGHT_PORT ?? 3000} --strictPort --outDir ${process.env.PROJECTION_BUNDLE ?? "dist"}`,
|
||||
url: `http://127.0.0.1:${process.env.PLAYWRIGHT_PORT ?? 3000}`,
|
||||
reuseExistingServer: false,
|
||||
},
|
||||
use: { ...config.use, video: "off" as const, trace: "off" as const },
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
import { defineConfig, mergeConfig } from "vite"
|
||||
import config from "../../../vite.config"
|
||||
|
||||
// Benchmark-only instrumentation. Normal production builds contain no probes.
|
||||
export default mergeConfig(
|
||||
config,
|
||||
defineConfig({
|
||||
plugins: [
|
||||
{
|
||||
name: "timeline-projection-measurement",
|
||||
enforce: "pre",
|
||||
transform(source, id) {
|
||||
if (!id.replaceAll("\\", "/").endsWith("/session-ui/src/timeline/projection.ts")) return
|
||||
const start = " type Turn = {"
|
||||
const end = "\n export function constructMessageRows("
|
||||
if (!source.includes(start) || !source.includes(end)) throw new Error("Projection probe boundary changed")
|
||||
return source
|
||||
.replace(
|
||||
start,
|
||||
`
|
||||
const probe = globalThis.__timelineProjectionProbe
|
||||
const started = probe ? performance.now() : 0
|
||||
try {
|
||||
${start}`,
|
||||
)
|
||||
.replace(
|
||||
end,
|
||||
`
|
||||
finally {
|
||||
if (probe) {
|
||||
probe.calls += 1
|
||||
probe.entries += messages.length
|
||||
probe.ms += performance.now() - started
|
||||
}
|
||||
}
|
||||
}
|
||||
${end}`,
|
||||
)
|
||||
},
|
||||
},
|
||||
],
|
||||
}),
|
||||
)
|
||||
@@ -48,20 +48,27 @@ benchmark("samples cached session repaint after the click", async ({ page, repor
|
||||
expect(result.samples.length).toBeGreaterThan(0)
|
||||
})
|
||||
|
||||
benchmark("prefetches every open session tab", async ({ page, report }) => {
|
||||
const prefetched = new Set<string>()
|
||||
benchmark("loads only the selected restored tab's transcript", async ({ page, report }) => {
|
||||
const loaded = new Set<string>()
|
||||
await mockStressTimeline(page, {
|
||||
onMessages: (input) => {
|
||||
if (!input.before && input.phase === "start") prefetched.add(input.sessionID)
|
||||
if (!input.before && input.phase === "start") loaded.add(input.sessionID)
|
||||
},
|
||||
})
|
||||
await installStressSessionTabs(page, {
|
||||
sessionIDs: [fixture.sourceID, fixture.targetID, fixture.childID],
|
||||
})
|
||||
await installTimelineSettings(page)
|
||||
const attention = Promise.all(
|
||||
[fixture.targetID, fixture.childID].map((id) =>
|
||||
page.waitForResponse((response) => new URL(response.url()).pathname === `/api/session/${id}/form`),
|
||||
),
|
||||
)
|
||||
await page.goto(stressSessionHref(fixture.sourceID))
|
||||
await expectSessionTitle(page, fixture.expected.sourceTitle)
|
||||
|
||||
await expect.poll(() => prefetched.has(fixture.childID)).toBe(true)
|
||||
report({ prefetched: [...prefetched] })
|
||||
await attention
|
||||
await waitForStableTimeline(page, fixture.expected.sourceMessageIDs.at(-1)!)
|
||||
expect([...loaded]).toEqual([fixture.sourceID])
|
||||
report({ loaded: [...loaded] })
|
||||
})
|
||||
|
||||
@@ -49,7 +49,7 @@ scenarios.forEach((scenario) => {
|
||||
|
||||
expect(result.firstCorrectObservedMs).not.toBeNull()
|
||||
expect(result.stableObservedMs).not.toBeNull()
|
||||
expect(requests).toHaveLength(requestsBefore)
|
||||
expect(requests).toHaveLength(requestsBefore + (scenario.cache === "cold" ? 1 : 0))
|
||||
await expectReadyTimeline(page, fixture.targetID)
|
||||
report(
|
||||
{
|
||||
@@ -65,7 +65,7 @@ scenarios.forEach((scenario) => {
|
||||
browserVersion: page.context().browser()!.version(),
|
||||
serviceWorkers: "blocked",
|
||||
reviewFiles: scenario.review === "closed" ? 0 : reviewDiffs.length,
|
||||
data: "prefetched",
|
||||
data: scenario.cache === "cold" ? "on-demand" : "cached",
|
||||
transport: process.env.OPENCODE_PERFORMANCE_HTTP_FIXTURE === "1" ? "http" : "playwright-route",
|
||||
inputEvent: "mousedown",
|
||||
requireReadyAnswer: true,
|
||||
@@ -97,16 +97,11 @@ async function prepareSessionTabs(page: Page) {
|
||||
})
|
||||
await installTimelineSettings(page)
|
||||
await installStressSessionTabs(page)
|
||||
// Restored tabs prefetch their data even when their transcript has never rendered.
|
||||
const prefetch = page.waitForResponse((response) =>
|
||||
new URL(response.url()).pathname.endsWith(`/session/${fixture.targetID}/message`),
|
||||
)
|
||||
await page.goto(stressSessionHref(fixture.sourceID))
|
||||
expect(await (await prefetch).finished()).toBeNull()
|
||||
await expectSessionTitle(page, fixture.expected.sourceTitle)
|
||||
await expectReadyTimeline(page, fixture.sourceID)
|
||||
await expect(page.locator(`[data-timeline-part-id="${expected[fixture.targetID].answerID}"]`)).toHaveCount(0)
|
||||
expect(requests.toSorted()).toEqual([fixture.sourceID, fixture.targetID].toSorted())
|
||||
expect(requests).toEqual([fixture.sourceID])
|
||||
return requests
|
||||
}
|
||||
|
||||
|
||||
@@ -39,13 +39,7 @@ const editPart: ToolSeed = {
|
||||
content: [{ type: "text", text: "Edited src/regression.ts" }],
|
||||
metadata: {
|
||||
files: [
|
||||
currentFile(
|
||||
"src/regression.ts",
|
||||
"export const value = 'before'\n",
|
||||
"export const value = 'after'\n",
|
||||
1,
|
||||
1,
|
||||
),
|
||||
currentFile("src/regression.ts", "export const value = 'before'\n", "export const value = 'after'\n", 1, 1),
|
||||
],
|
||||
},
|
||||
},
|
||||
@@ -70,6 +64,8 @@ export async function setupTimelineBenchmark(
|
||||
eventBatch: number
|
||||
vcsDiff?: unknown[]
|
||||
turnDiffs?: unknown[]
|
||||
busy?: boolean
|
||||
historyShape?: "mixed" | "tool-heavy"
|
||||
},
|
||||
) {
|
||||
const events: EventPayload[] = []
|
||||
@@ -77,19 +73,47 @@ export async function setupTimelineBenchmark(
|
||||
const currentUserMessage = options.turnDiffs
|
||||
? { ...userMessage, metadata: { diffs: options.turnDiffs as JsonValue } }
|
||||
: userMessage
|
||||
const messages = [
|
||||
...Array.from({ length: options.historyTurns }, (_, index) => performanceTurn(index))
|
||||
.flat()
|
||||
.map((message) => {
|
||||
if (options.historyShape !== "tool-heavy" || message.type !== "assistant") return message
|
||||
return {
|
||||
...message,
|
||||
content: [
|
||||
...Array.from({ length: 6 }, (_, index) =>
|
||||
toolContent({
|
||||
id: `${message.id}:read:${index}`,
|
||||
type: "tool",
|
||||
name: "read",
|
||||
state: {
|
||||
status: "completed",
|
||||
input: { path: `src/session/module-${index}.ts` },
|
||||
content: [{ type: "text", text: historicalSource(index, false) }],
|
||||
metadata: {},
|
||||
},
|
||||
time: {
|
||||
created: message.time.created,
|
||||
ran: message.time.created,
|
||||
completed: message.time.created + 100,
|
||||
},
|
||||
}),
|
||||
),
|
||||
...message.content,
|
||||
],
|
||||
}
|
||||
}),
|
||||
currentUserMessage,
|
||||
assistantMessage,
|
||||
]
|
||||
await mockOpenCodeServer(page, {
|
||||
directory,
|
||||
project: project(),
|
||||
provider: provider(),
|
||||
sessions: [session()],
|
||||
vcsDiff: options.vcsDiff,
|
||||
pageMessages: () => ({
|
||||
items: [
|
||||
...Array.from({ length: options.historyTurns }, (_, index) => performanceTurn(index)).flat(),
|
||||
currentUserMessage,
|
||||
assistantMessage,
|
||||
],
|
||||
}),
|
||||
sessionStatus: options.busy ? { [sessionID]: { type: "busy" } } : undefined,
|
||||
pageMessages: () => ({ items: messages }),
|
||||
events: () => events.splice(0, eventBatch),
|
||||
eventRetry: 16,
|
||||
})
|
||||
@@ -113,6 +137,11 @@ export async function setupTimelineBenchmark(
|
||||
await expectSessionTitle(page, title)
|
||||
await expectAppVisible(scroller)
|
||||
return {
|
||||
workload: {
|
||||
messages: messages.length,
|
||||
parts: messages.reduce((sum, message) => sum + (message.type === "assistant" ? message.content.length : 0), 0),
|
||||
historyBytes: Buffer.byteLength(JSON.stringify(messages)),
|
||||
},
|
||||
scroller,
|
||||
text,
|
||||
transport: {
|
||||
|
||||
@@ -0,0 +1,169 @@
|
||||
import { createServer, type ServerResponse } from "node:http"
|
||||
import type { OpenCodeEvent } from "@opencode-ai/client/promise"
|
||||
import { benchmark, benchmarkDiagnostics, expect } from "../benchmark"
|
||||
import {
|
||||
buildInitialStreamEvent,
|
||||
buildStreamDeltaEvents,
|
||||
setupTimelineBenchmark,
|
||||
textPartID,
|
||||
} from "./session-timeline-benchmark.fixture"
|
||||
|
||||
type Probe = { calls: number; entries: number; ms: number }
|
||||
type Measurement = { frames: number[]; started: number; ready: number; rowReplacements: number; stop: () => void }
|
||||
declare global {
|
||||
interface Window {
|
||||
__timelineProjectionProbe?: Probe
|
||||
__projectionMeasurement: Measurement
|
||||
}
|
||||
}
|
||||
|
||||
benchmark.use({ traceScope: "interaction" })
|
||||
|
||||
for (const scenario of [
|
||||
{ historyTurns: 40, historyShape: "mixed" },
|
||||
{ historyTurns: 320, historyShape: "mixed" },
|
||||
{ historyTurns: 320, historyShape: "tool-heavy" },
|
||||
] as const) {
|
||||
benchmark(`text projection ${scenario.historyTurns} ${scenario.historyShape}`, async ({ page, report }) => {
|
||||
benchmark.setTimeout(120_000)
|
||||
const responses = new Set<ServerResponse>()
|
||||
const source = createServer((request, response) => {
|
||||
response.writeHead(200, {
|
||||
"content-type": "text/event-stream",
|
||||
"access-control-allow-origin": "*",
|
||||
"cache-control": "no-cache",
|
||||
})
|
||||
response.write(
|
||||
`data: ${JSON.stringify({ id: "evt_projection_connected", type: "server.connected", data: {} })}\n\n`,
|
||||
)
|
||||
responses.add(response)
|
||||
request.on("close", () => responses.delete(response))
|
||||
})
|
||||
await new Promise<void>((resolve) => source.listen(0, "127.0.0.1", resolve))
|
||||
const address = source.address()
|
||||
if (!address || typeof address === "string") throw new Error("Missing fixture SSE address")
|
||||
let timer: ReturnType<typeof setInterval> | undefined
|
||||
const send = (events: OpenCodeEvent[]) =>
|
||||
responses.forEach((response) => events.forEach((event) => response.write(`data: ${JSON.stringify(event)}\n\n`)))
|
||||
try {
|
||||
await page.addInitScript(
|
||||
({ url, counters }) => {
|
||||
Object.assign(window, { __testSseTransport: true })
|
||||
if (counters) window.__timelineProjectionProbe = { calls: 0, entries: 0, ms: 0 }
|
||||
const fetch = window.fetch.bind(window)
|
||||
const intercept = (input: RequestInfo | URL, init?: RequestInit) => {
|
||||
const request = new Request(input, init)
|
||||
return fetch(
|
||||
new URL(request.url).pathname === "/api/event" ? new Request(url, { signal: request.signal }) : request,
|
||||
)
|
||||
}
|
||||
Object.defineProperty(window, "fetch", { configurable: true, writable: true, value: intercept })
|
||||
},
|
||||
{ url: `http://127.0.0.1:${address.port}`, counters: process.env.PROJECTION_COUNTERS === "1" },
|
||||
)
|
||||
const initialStarted = performance.now()
|
||||
const fixture = await setupTimelineBenchmark(page, { ...scenario, busy: true, eventBatch: 1 })
|
||||
await expect.poll(() => responses.size).toBe(1)
|
||||
const deltas = buildStreamDeltaEvents(160)
|
||||
send(buildInitialStreamEvent(160))
|
||||
await expect(fixture.text).toContainText("Implementation plan")
|
||||
await expect(fixture.text.locator('[data-component="markdown"]')).toHaveAttribute("data-markdown-ready", "")
|
||||
const initialReadyMs = performance.now() - initialStarted
|
||||
await fixture.scrollToBottom()
|
||||
await expect(page.getByRole("button", { name: "Stop", exact: true })).toBeVisible()
|
||||
await benchmarkDiagnostics(page).startTrace()
|
||||
await page.evaluate(
|
||||
({ partID, counters }) => {
|
||||
const part = document.querySelector(`[data-timeline-part-id="${partID}"]`)
|
||||
const row = part?.closest("[data-timeline-key]")
|
||||
if (!row) throw new Error("Missing active row")
|
||||
if (counters) {
|
||||
if (!window.__timelineProjectionProbe?.calls)
|
||||
throw new Error("Projection instrumentation did not observe initial construction")
|
||||
window.__timelineProjectionProbe = { calls: 0, entries: 0, ms: 0 }
|
||||
}
|
||||
const measurement: Measurement = {
|
||||
frames: [],
|
||||
started: performance.now(),
|
||||
ready: 0,
|
||||
rowReplacements: 0,
|
||||
stop: () => {},
|
||||
}
|
||||
window.__projectionMeasurement = measurement
|
||||
let previous: number | undefined
|
||||
let frame = 0
|
||||
let current = row
|
||||
const sample = (now: number) => {
|
||||
if (previous !== undefined) measurement.frames.push(now - previous)
|
||||
previous = now
|
||||
const next = document.querySelector(`[data-timeline-part-id="${partID}"]`)?.closest("[data-timeline-key]")
|
||||
if (next && next !== current) {
|
||||
measurement.rowReplacements++
|
||||
current = next
|
||||
}
|
||||
const markdown = next?.querySelector('[data-component="markdown"][data-markdown-ready]')
|
||||
if (markdown?.textContent?.includes("benchmark-complete")) {
|
||||
measurement.ready = performance.now() - measurement.started
|
||||
return
|
||||
}
|
||||
frame = requestAnimationFrame(sample)
|
||||
}
|
||||
measurement.stop = () => cancelAnimationFrame(frame)
|
||||
frame = requestAnimationFrame(sample)
|
||||
},
|
||||
{ partID: textPartID, counters: process.env.PROJECTION_COUNTERS === "1" },
|
||||
)
|
||||
const emitted: number[] = []
|
||||
const started = performance.now()
|
||||
// The source clock runs in Node, never waiting for a renderer acknowledgement.
|
||||
await new Promise<void>((resolve) => {
|
||||
timer = setInterval(() => {
|
||||
const event = deltas[emitted.length]
|
||||
if (!event) throw new Error("Unexpected source overrun")
|
||||
send([event])
|
||||
emitted.push(performance.now() - started)
|
||||
if (emitted.length !== deltas.length) return
|
||||
clearInterval(timer)
|
||||
resolve()
|
||||
}, 25)
|
||||
})
|
||||
await expect(fixture.text).toContainText("benchmark-complete")
|
||||
await expect(fixture.text.locator('[data-component="markdown"]')).toHaveAttribute("data-markdown-ready", "")
|
||||
await page.waitForFunction(() => window.__projectionMeasurement.ready > 0)
|
||||
const metrics = await page.evaluate(() => {
|
||||
const data = window.__projectionMeasurement
|
||||
data.stop()
|
||||
return {
|
||||
frames: data.frames,
|
||||
readyMs: data.ready,
|
||||
rowReplacements: data.rowReplacements,
|
||||
projection: window.__timelineProjectionProbe ?? null,
|
||||
}
|
||||
})
|
||||
expect(emitted).toHaveLength(160)
|
||||
expect(metrics.frames.length).toBeGreaterThan(0)
|
||||
await benchmarkDiagnostics(page).stop()
|
||||
report(
|
||||
{ ...metrics, initialReadyMs, emitted },
|
||||
{
|
||||
...scenario,
|
||||
...fixture.workload,
|
||||
deltaBytes: Buffer.byteLength(JSON.stringify(deltas)),
|
||||
counters: process.env.PROJECTION_COUNTERS === "1",
|
||||
intervalMs: 25,
|
||||
deltas: 160,
|
||||
viewport: "1366x768",
|
||||
revision: process.env.PROJECTION_REVISION,
|
||||
},
|
||||
)
|
||||
if (process.env.PROJECTION_SCREENSHOT)
|
||||
await page.screenshot({
|
||||
path: `${process.env.PROJECTION_SCREENSHOT}-${scenario.historyTurns}-${scenario.historyShape}.png`,
|
||||
})
|
||||
} finally {
|
||||
clearInterval(timer)
|
||||
source.closeAllConnections()
|
||||
await new Promise<void>((resolve, reject) => source.close((error) => (error ? reject(error) : resolve())))
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
# Timeline Text Projection Benchmark
|
||||
|
||||
Run from `packages/app`, against a production bundle. No OpenCode server is needed.
|
||||
The fixture owns its HTTP event source and mocks all other API responses.
|
||||
|
||||
```sh
|
||||
bun run build -- --config e2e/performance/timeline/projection.vite.config.ts
|
||||
PLAYWRIGHT_BUILD=1 playwright test --config e2e/performance/timeline/projection.playwright.config.ts --repeat-each=20 --workers=1 --retries=0 --reporter=line
|
||||
```
|
||||
|
||||
Set `PLAYWRIGHT_PORT` to an unused local port. Set `PROJECTION_BUNDLE` to preview a
|
||||
previously frozen bundle, `PROJECTION_OUTPUT` for test artifacts, and
|
||||
`PROJECTION_REVISION` to label results. Keep all three workloads separate:
|
||||
40 historical user/assistant pairs, 320 pairs, and 320 pairs with six additional
|
||||
completed read tools per assistant. The existing mixed fixture includes Markdown,
|
||||
reasoning, and edit/write/patch output. Results include serialized history bytes,
|
||||
message/part counts, and event bytes.
|
||||
|
||||
Each case opens the real application timeline with a busy session, waits for the
|
||||
initial Markdown to be ready, then sends the same 160 text deltas at a 25 ms source
|
||||
cadence. The Node HTTP source does not wait for renderer acknowledgements. Results
|
||||
retain every source emission time and animation-frame interval. Completion means
|
||||
the final marker is in ready Markdown and has reached an animation-frame callback;
|
||||
it does not claim a compositor presentation timestamp. Row replacements count the
|
||||
active streaming row, not normal virtualizer mounts while scrolling.
|
||||
|
||||
Use `PROJECTION_COUNTERS=1` for separate diagnostic runs. The benchmark build
|
||||
instruments the full-history constructor with its call count, input entries visited,
|
||||
and synchronous elapsed time. The probe is absent from normal builds and disabled
|
||||
in clean timing runs. `OPENCODE_PERFORMANCE_TRACE_DIR` enables the existing Chrome
|
||||
trace collector. Set `PROJECTION_SCREENSHOT` to an output path prefix for screenshots
|
||||
after timing. Do not compare diagnostic timing with clean timing.
|
||||
@@ -0,0 +1,32 @@
|
||||
import { expect, test } from "bun:test"
|
||||
import { createHomeIndexFixture, HOME_INDEX_VISIBLE_LIMIT } from "../timeline/home-session-index.fixture"
|
||||
|
||||
const now = 1_800_000_000_000
|
||||
|
||||
test("generates a deterministic index ordered like the server", () => {
|
||||
const fixture = createHomeIndexFixture({ count: 2_000, now })
|
||||
const again = createHomeIndexFixture({ count: 2_000, now })
|
||||
expect(again.sessions).toEqual(fixture.sessions)
|
||||
expect(fixture.sessions).toHaveLength(2_000)
|
||||
expect(new Set(fixture.sessions.map((session) => session.id)).size).toBe(2_000)
|
||||
const updated = fixture.sessions.map((session) => session.time.updated)
|
||||
expect(updated.every((time, index) => index === 0 || time > updated[index - 1])).toBe(true)
|
||||
expect(updated.every((time) => time <= now)).toBe(true)
|
||||
expect(fixture.sessions.every((session) => session.time.created < session.time.updated)).toBe(true)
|
||||
expect(fixture.expected.newestID).toBe(fixture.sessions[fixture.sessions.length - 1].id)
|
||||
expect(fixture.expected.visible).toBe(HOME_INDEX_VISIBLE_LIMIT)
|
||||
})
|
||||
|
||||
test("spreads sessions across several directories with a skewed head", () => {
|
||||
const fixture = createHomeIndexFixture({ count: 5_000, now })
|
||||
const counts = Object.values(fixture.expected.perDirectory)
|
||||
expect(counts.reduce((sum, count) => sum + count, 0)).toBe(5_000)
|
||||
expect(fixture.directories).toHaveLength(12)
|
||||
expect(fixture.directories.filter((entry) => entry.project)).toHaveLength(8)
|
||||
const largest = Math.max(...counts)
|
||||
expect(largest).toBeGreaterThan(5_000 * 0.15)
|
||||
expect(Math.min(...counts)).toBeGreaterThan(0)
|
||||
expect(fixture.sessions.some((session) => session.time.updated > now - 86_400_000)).toBe(true)
|
||||
// Realistic serialized rows: hundreds of bytes each, not one-character stubs.
|
||||
expect(fixture.listBytes / 5_000).toBeGreaterThan(300)
|
||||
})
|
||||
@@ -49,8 +49,8 @@ test("renames, exports, and deletes a home session from its context menu", async
|
||||
await row.click({ button: "right", position: { x: 48, y: 12 } })
|
||||
await expect(page).toHaveURL("/")
|
||||
await expect(page.getByRole("menuitem", { name: "Rename" })).toBeVisible()
|
||||
await expect(page.getByRole("menuitem", { name: "Export..." })).toBeVisible()
|
||||
await expect(page.getByRole("menuitem", { name: "Delete..." })).toBeVisible()
|
||||
await expect(page.getByRole("menuitem", { name: "Export…" })).toBeVisible()
|
||||
await expect(page.getByRole("menuitem", { name: "Delete…" })).toBeVisible()
|
||||
const menuBox = await page.locator('[data-component="menu-v2-content"]').boundingBox()
|
||||
expect(Math.abs((menuBox?.x ?? 0) - (rowBox?.x ?? 0) - 48)).toBeLessThan(4)
|
||||
|
||||
@@ -88,13 +88,13 @@ test("renames, exports, and deletes a home session from its context menu", async
|
||||
|
||||
await renamedRow.click({ button: "right" })
|
||||
const download = page.waitForEvent("download")
|
||||
const exportItem = page.getByRole("menuitem", { name: "Export..." })
|
||||
const exportItem = page.getByRole("menuitem", { name: "Export…" })
|
||||
await exportItem.click()
|
||||
expect((await download).suggestedFilename()).toBe("renamed-from-home.json")
|
||||
await expect(exportItem).toBeHidden()
|
||||
|
||||
await renamedRow.click({ button: "right" })
|
||||
await page.getByRole("menuitem", { name: "Delete..." }).click()
|
||||
await page.getByRole("menuitem", { name: "Delete…" }).click()
|
||||
const dialog = page.getByRole("dialog")
|
||||
await expect(dialog).toContainText('Delete session "Renamed from Home"?')
|
||||
const removed = page.waitForRequest(
|
||||
|
||||
@@ -0,0 +1,75 @@
|
||||
import { expect, test } from "@playwright/test"
|
||||
import { mockOpenCodeServer } from "../utils/mock-server"
|
||||
import { expectSessionTitle } from "../utils/waits"
|
||||
import { fixture } from "../performance/timeline/session-timeline-stress.fixture"
|
||||
import { installStressSessionTabs, stressSessionHref } from "../performance/timeline/timeline-test-helpers"
|
||||
|
||||
test("inactive tabs load attention, but read transcript and inbox only on selection", async ({ page }) => {
|
||||
const reads: string[] = []
|
||||
const mutations: string[] = []
|
||||
const errors: string[] = []
|
||||
page.on("pageerror", (error) => errors.push(error.message))
|
||||
page.on("response", (response) => {
|
||||
if (new URL(response.url()).pathname.startsWith("/api/") && !response.ok())
|
||||
errors.push(`HTTP ${response.status()}: ${response.url()}`)
|
||||
})
|
||||
const state = { text: "Original fixture answer" }
|
||||
page.on("request", (request) => {
|
||||
const path = new URL(request.url()).pathname
|
||||
if (!path.startsWith("/api/")) return
|
||||
if (request.method() === "GET") reads.push(path)
|
||||
if (request.method() === "DELETE" || /\/(interrupt|prompt)$/.test(path)) mutations.push(path)
|
||||
})
|
||||
await mockOpenCodeServer(page, {
|
||||
...fixture,
|
||||
pageMessages: (id) => ({
|
||||
items: [
|
||||
{ id: `msg_${id}_user`, type: "user", text: "Review the renderer change", time: { created: 1 } },
|
||||
{
|
||||
id: `msg_${id}_assistant`,
|
||||
type: "assistant",
|
||||
agent: "build",
|
||||
model: { id: "claude-opus-4-6", providerID: "opencode" },
|
||||
content: [{ type: "text", text: state.text }],
|
||||
time: { created: 2, completed: 3 },
|
||||
},
|
||||
],
|
||||
}),
|
||||
})
|
||||
await installStressSessionTabs(page, { sessionIDs: [fixture.sourceID, fixture.targetID, fixture.childID] })
|
||||
const attention = Promise.all(
|
||||
[fixture.targetID, fixture.childID].flatMap((id) =>
|
||||
["permission", "form"].map((kind) =>
|
||||
page.waitForResponse((response) => new URL(response.url()).pathname === `/api/session/${id}/${kind}`),
|
||||
),
|
||||
),
|
||||
)
|
||||
await page.goto(stressSessionHref(fixture.sourceID))
|
||||
await expectSessionTitle(page, fixture.expected.sourceTitle)
|
||||
await expect(page.locator(`[data-timeline-part-id="msg_${fixture.sourceID}_assistant:text:0"]`)).toContainText(
|
||||
state.text,
|
||||
)
|
||||
await attention
|
||||
const child = page
|
||||
.locator("[data-titlebar-tab-slot]")
|
||||
.filter({ has: page.locator(`a[href="${stressSessionHref(fixture.childID)}"]`) })
|
||||
await child.getByRole("button", { name: "Close tab", exact: true }).click()
|
||||
await expect(child).toHaveCount(0)
|
||||
state.text = "Latest fixture answer after tab restoration"
|
||||
await page.locator(`[data-slot="titlebar-tabs"] a[href="${stressSessionHref(fixture.targetID)}"]`).click()
|
||||
await expectSessionTitle(page, fixture.expected.targetTitle)
|
||||
await expect(page.locator(`[data-timeline-part-id="msg_${fixture.targetID}_assistant:text:0"]`)).toContainText(
|
||||
state.text,
|
||||
)
|
||||
for (const id of [fixture.sourceID, fixture.targetID]) {
|
||||
expect(reads.filter((path) => path === `/api/session/${id}/message`)).toHaveLength(1)
|
||||
expect(reads.filter((path) => path === `/api/session/${id}/inbox`)).toHaveLength(1)
|
||||
}
|
||||
expect(
|
||||
reads.filter(
|
||||
(path) => path === `/api/session/${fixture.childID}/message` || path === `/api/session/${fixture.childID}/inbox`,
|
||||
),
|
||||
).toEqual([])
|
||||
expect(mutations).toEqual([])
|
||||
expect(errors).toEqual([])
|
||||
})
|
||||
@@ -42,7 +42,7 @@ test("mobile project selection and drawer navigation preserve session identity",
|
||||
const drawer = page.locator('[data-slot="mobile-tabs-drawer"]')
|
||||
await trigger.click()
|
||||
await expect(trigger).toHaveAttribute("aria-expanded", "true")
|
||||
await expect(drawer.locator('[data-slot="tab-project"]')).toHaveText([fixture.project.name, fixture.project.name])
|
||||
await expect(drawer.locator('[data-slot="tab-project"]')).toHaveCount(0)
|
||||
const settings = drawer.getByRole("button", { name: "Settings", exact: true })
|
||||
const help = drawer.getByRole("button", { name: "Help", exact: true })
|
||||
await expect(settings).toBeVisible()
|
||||
|
||||
@@ -42,7 +42,7 @@ test("selects a base branch for a new workspace", async ({ page }) => {
|
||||
await page.goto(`/new-session?draftId=${draftID}`)
|
||||
await expectAppVisible(page.locator('[data-component="composer-editor"]'))
|
||||
await page.getByRole("button", { name: "Local", exact: true }).click()
|
||||
await page.getByRole("menuitem", { name: "New workspace", exact: true }).click()
|
||||
await page.getByRole("menuitem", { name: "New worktree", exact: true }).click()
|
||||
await page.getByRole("button", { name: "from main", exact: true }).click()
|
||||
await page.getByRole("menuitemradio", { name: "feature/api", exact: true }).click()
|
||||
|
||||
|
||||
@@ -255,7 +255,7 @@ test("restores the original draft when worktree creation fails", async ({ page }
|
||||
await expect(page.getByText("Failed to create worktree", { exact: true })).toBeVisible()
|
||||
await expect(page.locator('[data-component="composer-editor"]')).toHaveText(text)
|
||||
await expect(page.locator('[data-action="composer-submit"]')).toBeEnabled()
|
||||
await expect(page.getByRole("button", { name: "New workspace", exact: true })).toBeVisible()
|
||||
await expect(page.getByRole("button", { name: "New worktree", exact: true })).toBeVisible()
|
||||
await expect(pending.shimmer).toHaveCount(0)
|
||||
await expect(pending.message).toHaveCount(0)
|
||||
await expect(page.locator(`[data-titlebar-tab-link][href="${sessionPath}${pending.sessionID}"]`)).toHaveCount(0)
|
||||
@@ -325,7 +325,7 @@ test("restores the draft after closing and revisiting a pending session that fai
|
||||
await expect(page.getByText("Failed to create worktree", { exact: true })).toBeVisible()
|
||||
await expect(page.locator('[data-component="composer-editor"]')).toHaveText(`${text}\n\n${followUp}`)
|
||||
await expect(page.locator('[data-action="composer-submit"]')).toBeEnabled()
|
||||
await expect(page.getByRole("button", { name: "New workspace", exact: true })).toBeVisible()
|
||||
await expect(page.getByRole("button", { name: "New worktree", exact: true })).toBeVisible()
|
||||
await expect(page.locator(`[data-titlebar-tab-link][href="${draftPath}"]`)).toHaveCount(1)
|
||||
await expect(tab).toHaveCount(0)
|
||||
await expect(pending.shimmer).toHaveCount(0)
|
||||
@@ -458,8 +458,8 @@ async function openDraft(page: Page, options?: { failSessionCreate?: boolean })
|
||||
await page.goto(draftPath)
|
||||
await expectAppVisible(page.locator('[data-component="composer-editor"]'))
|
||||
await page.getByRole("button", { name: "Local", exact: true }).click()
|
||||
await page.getByRole("menuitem", { name: "New workspace", exact: true }).click()
|
||||
await expect(page.getByRole("button", { name: "New workspace", exact: true })).toBeVisible()
|
||||
await page.getByRole("menuitem", { name: "New worktree", exact: true }).click()
|
||||
await expect(page.getByRole("button", { name: "New worktree", exact: true })).toBeVisible()
|
||||
await expect(page.locator('[data-component="composer-editor"]')).toBeEditable()
|
||||
return { worktree, worktreeRequests, calls, creates, prompts }
|
||||
}
|
||||
|
||||
@@ -6,8 +6,9 @@ const serverA = `http://${process.env.PLAYWRIGHT_SERVER_HOST ?? "127.0.0.1"}:${p
|
||||
const serverB = "http://127.0.0.1:4097"
|
||||
const sessionA = session("ses_server_a", "C:/server-a", "Server A session")
|
||||
const sessionB = session("ses_server_b", "/home/server-b", "Server B session")
|
||||
const childB = { ...session("ses_server_b_child", sessionB.directory, "Server B subagent"), parentID: sessionB.id }
|
||||
|
||||
test("tab busy indicator reflects the tab server's own session status", async ({ page }) => {
|
||||
test("tab busy indicator reflects activity in the tab session family", async ({ page }, info) => {
|
||||
await mockServers(page)
|
||||
await page.addInitScript(
|
||||
({ serverA, serverB, sessionA, sessionB }) => {
|
||||
@@ -25,13 +26,13 @@ test("tab busy indicator reflects the tab server's own session status", async ({
|
||||
|
||||
const hrefA = `/server/${base64Encode(serverA)}/session/${sessionA.id}`
|
||||
const hrefB = `/server/${base64Encode(serverB)}/session/${sessionB.id}`
|
||||
await page.goto(hrefA)
|
||||
await expect(page.getByText(sessionA.title).first()).toBeVisible()
|
||||
await page.goto(hrefB)
|
||||
await expect(page.getByText(sessionB.title).first()).toBeVisible()
|
||||
|
||||
// Session B is busy on server B while server A stays the active server, so the
|
||||
// busy indicator must come from the tab server's status, not the active server's.
|
||||
// The parent is idle, but its tab remains active while the background child runs.
|
||||
const tabB = page.locator(`[data-titlebar-tab-slot]:has(a[href="${hrefB}"])`)
|
||||
await expect(tabB.locator('[data-component="session-progress-indicator-v2"]')).toBeVisible()
|
||||
await tabB.screenshot({ path: info.outputPath("subagent-tab-activity.png") })
|
||||
|
||||
const tabA = page.locator(`[data-titlebar-tab-slot]:has(a[href="${hrefA}"])`)
|
||||
await expect(tabA.locator("[data-titlebar-tab-title]")).toHaveText(sessionA.title)
|
||||
@@ -60,8 +61,12 @@ async function mockServers(page: Page) {
|
||||
if (url.pathname === "/api/event") return sse(route)
|
||||
if (url.pathname === "/api/health") return json(route, { pid: 1 })
|
||||
if (url.pathname === "/api/session/active")
|
||||
return json(route, { data: url.origin === serverB ? { [sessionB.id]: { type: "running" } } : {} })
|
||||
if (url.pathname === "/api/session") return json(route, { data: [currentSession(current)], cursor: {} })
|
||||
return json(route, { data: url.origin === serverB ? { [childB.id]: { type: "running" } } : {} })
|
||||
if (url.pathname === "/api/session")
|
||||
return json(route, {
|
||||
data: url.origin === serverB ? [currentSession(current), currentSession(childB)] : [currentSession(current)],
|
||||
cursor: {},
|
||||
})
|
||||
if (url.pathname === `/api/session/${current.id}`) return json(route, { data: currentSession(current) })
|
||||
if (url.pathname === `/api/session/${current.id}/message`) return json(route, { data: [], cursor: {} })
|
||||
if (["/api/agent", "/api/provider", "/api/model", "/api/command", "/api/reference"].includes(url.pathname))
|
||||
|
||||
@@ -308,8 +308,8 @@ for (const delivery of ["steer", "queue"] as const) {
|
||||
})
|
||||
const tools = page.locator('[data-timeline-part-ids="tool_queue_read,tool_queue_grep"]')
|
||||
await expect(tools).toBeVisible()
|
||||
await expect(tools).toHaveText(/^Used\s*2 Read, Grep$/)
|
||||
await expect(tools.locator('[data-slot="basic-tool-tool-title"]')).toHaveText("2 Read, Grep")
|
||||
await expect(tools).toHaveText(/^Used\s*1 Read, 1 Grep$/)
|
||||
await expect(tools.locator('[data-slot="basic-tool-tool-title"]')).toHaveText("1 Read, 1 Grep")
|
||||
await expect(thinking).toHaveCount(0)
|
||||
await expect(pending).toBeVisible()
|
||||
expect(mock.rows.map((row) => ({ id: row.id, delivery: row.delivery }))).toEqual([
|
||||
@@ -318,7 +318,7 @@ for (const delivery of ["steer", "queue"] as const) {
|
||||
await transcript.screenshot({ path: testInfo.outputPath("pending-steer.png") })
|
||||
|
||||
// Soft assertions let delivery run too, even when the pending ordering regresses.
|
||||
await expect.soft(tools.or(pending)).toHaveText([/^Used\s*2 Read, Grep$/, /U2: Also check the retry path\./])
|
||||
await expect.soft(tools.or(pending)).toHaveText([/^Used\s*1 Read, 1 Grep$/, /U2: Also check the retry path\./])
|
||||
await expect
|
||||
.soft(transcript.locator('[data-timeline-row="AssistantPart"]').filter({ has: tools }))
|
||||
.toHaveAttribute("data-message-id", userID)
|
||||
@@ -350,7 +350,7 @@ for (const delivery of ["steer", "queue"] as const) {
|
||||
await expect(response).toHaveAttribute("data-message-id", inboxID)
|
||||
await expect(thinking).toHaveCount(0)
|
||||
await expect(tools.or(pending).or(response)).toHaveText([
|
||||
/^Used\s*2 Read, Grep$/,
|
||||
/^Used\s*1 Read, 1 Grep$/,
|
||||
/U2: Also check the retry path\./,
|
||||
/A3: Now checking the retry path for U2\./,
|
||||
])
|
||||
|
||||
@@ -55,7 +55,7 @@ test.describe("regression: session timeline context group resize", () => {
|
||||
await devtools.send("Emulation.setCPUThrottlingRate", { rate: 4 })
|
||||
const context = page.locator(`[data-timeline-part-ids="${contextIDs.join(",")}"]`).first()
|
||||
await expectAppVisible(context)
|
||||
await expect(context.getByRole("button")).toHaveAccessibleName("Used 4 Read, Glob, Grep, List")
|
||||
await expect(context.getByRole("button")).toHaveAccessibleName("Used 1 Read, 1 Glob, 1 Grep, 1 List")
|
||||
|
||||
const contextSelector = `[data-timeline-part-ids="${contextIDs.join(",")}"]`
|
||||
const regions = defineVisualRegions({
|
||||
@@ -88,7 +88,7 @@ test.describe("regression: session timeline context group resize", () => {
|
||||
await page.waitForTimeout(delay)
|
||||
}
|
||||
|
||||
await expect(context.getByRole("button")).toHaveAccessibleName("Used 4 Read, Glob, Grep, List")
|
||||
await expect(context.getByRole("button")).toHaveAccessibleName("Used 1 Read, 1 Glob, 1 Grep, 1 List")
|
||||
await page.waitForTimeout(700)
|
||||
const trace = await stopVisualProbe<keyof typeof regions>(page)
|
||||
const labels = trace.samples
|
||||
@@ -107,7 +107,7 @@ test.describe("regression: session timeline context group resize", () => {
|
||||
]),
|
||||
)
|
||||
|
||||
expect(labels).toEqual(["Used 4 Read, Glob, Grep, List"])
|
||||
expect(labels).toEqual(["Used 1 Read, 1 Glob, 1 Grep, 1 List"])
|
||||
expect(issues, JSON.stringify(trace.samples, null, 2)).toEqual([])
|
||||
})
|
||||
})
|
||||
|
||||
@@ -55,7 +55,7 @@ test("transitions a streaming shell from writing through command execution", asy
|
||||
const subtitle = tool.locator('[data-slot="basic-tool-tool-subtitle"]')
|
||||
await expect(titleShimmer).toHaveAttribute("aria-label", "Shell")
|
||||
await expect(titleShimmer).toHaveAttribute("data-active", "true")
|
||||
await expect(subtitle).toHaveText("Writing command...")
|
||||
await expect(subtitle).toHaveText("Writing command…")
|
||||
await expect(subtitle.locator('[data-component="text-shimmer"]')).toHaveCount(0)
|
||||
await expect(tool.locator('[data-component="shell-submessage"]')).toHaveCount(0)
|
||||
await expect(tool.locator('[data-slot="collapsible-trigger"]')).toHaveCSS("height", "28px")
|
||||
@@ -75,7 +75,7 @@ test("transitions a streaming shell from writing through command execution", asy
|
||||
await timeline.send(toolInputEnded({ sessionID, assistantMessageID: assistantID, id, text: input }))
|
||||
await expect(titleShimmer).toHaveAttribute("data-active", "true")
|
||||
await expect(subtitle).toHaveText(command)
|
||||
await expect(tool).not.toContainText("Writing command...")
|
||||
await expect(tool).not.toContainText("Writing command…")
|
||||
|
||||
await timeline.send(
|
||||
toolCalled({
|
||||
@@ -100,7 +100,7 @@ test("shimmers and expands a running shell command", async ({ page }) => {
|
||||
|
||||
const tool = page.locator(`[data-timeline-part-id="${id}"]`)
|
||||
await expect(tool.locator('[data-component="text-shimmer"]')).toHaveAttribute("data-active", "true")
|
||||
await expect(tool).not.toContainText("Writing command...")
|
||||
await expect(tool).not.toContainText("Writing command…")
|
||||
await expect(tool.locator('[data-component="shell-submessage"]')).toHaveText(command)
|
||||
await expect(tool.locator('[data-component="shell-submessage"] [data-component="text-shimmer"]')).toHaveCount(0)
|
||||
await expect(tool.locator('[data-slot="collapsible-trigger"]')).toHaveCSS("height", "28px")
|
||||
|
||||
@@ -16,9 +16,9 @@ for (const locale of ["de", "ar"] as const) {
|
||||
})
|
||||
|
||||
const group = page.locator(`[data-timeline-part-ids="${ids.join(",")}"]`)
|
||||
const names = locale === "de" ? "Lesen, Glob" : "\u0642\u0631\u0627\u0621\u0629, Glob"
|
||||
await expect(group.getByRole("button")).toHaveAccessibleName(`Used 2 ${names}`)
|
||||
await expect(group.locator('[data-slot="basic-tool-tool-title"]')).toHaveText(`2 ${names}`)
|
||||
const names = locale === "de" ? "1 Lesen, 1 Glob" : "1 \u0642\u0631\u0627\u0621\u0629, 1 Glob"
|
||||
await expect(group.getByRole("button")).toHaveAccessibleName(`Used ${names}`)
|
||||
await expect(group.locator('[data-slot="basic-tool-tool-title"]')).toHaveText(names)
|
||||
await expect(page.locator("html")).toHaveAttribute("lang", locale)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -45,10 +45,10 @@ test("expands a mixed collapsed tool stack without expanding its individual call
|
||||
const group = page.locator(
|
||||
'[data-timeline-part-ids="prt_stack_shell_1,prt_stack_explore,prt_stack_patch,prt_stack_shell_2"]',
|
||||
)
|
||||
const summary = group.getByRole("button", { name: "Used 4 Shell, Agent, Patch", exact: true })
|
||||
const summary = group.getByRole("button", { name: "Used 2 Shell, 1 Agent, 1 Patch", exact: true })
|
||||
await expect(summary).toHaveAttribute("aria-expanded", "false")
|
||||
await expect(summary).toHaveCSS("height", "28px")
|
||||
await expect(summary.locator('[data-slot="basic-tool-tool-title"]')).toHaveText("4 Shell, Agent, Patch")
|
||||
await expect(summary.locator('[data-slot="basic-tool-tool-title"]')).toHaveText("2 Shell, 1 Agent, 1 Patch")
|
||||
await expect(summary.locator('[data-component="tag"]')).toHaveCount(0)
|
||||
await summary.click()
|
||||
await expect(summary).toHaveAttribute("aria-expanded", "true")
|
||||
@@ -75,8 +75,8 @@ test("leaves tools expanded by settings outside the collapsed stack", async ({ p
|
||||
|
||||
await expect(page.locator('[data-timeline-part-id="prt_expanded_shell"]')).toBeVisible()
|
||||
const group = page.locator('[data-timeline-part-ids="prt_collapsed_patch,prt_collapsed_read"]')
|
||||
await expect(group.getByRole("button", { name: "Used 2 Patch, Read", exact: true })).toBeVisible()
|
||||
await expect(group.locator('[data-slot="basic-tool-tool-title"]')).toHaveText("2 Patch, Read")
|
||||
await expect(group.getByRole("button", { name: "Used 1 Patch, 1 Read", exact: true })).toBeVisible()
|
||||
await expect(group.locator('[data-slot="basic-tool-tool-title"]')).toHaveText("1 Patch, 1 Read")
|
||||
await expect(page.locator('[data-timeline-spacing="tool"]')).toHaveCSS("padding-top", "8px")
|
||||
})
|
||||
|
||||
@@ -114,7 +114,7 @@ test("combines follow-up patches into one three-file stack inside Used", async (
|
||||
],
|
||||
})
|
||||
const group = page.locator('[data-component="collapsed-tool-group"]')
|
||||
await group.getByRole("button", { name: "Used 2 Shell, Patch", exact: true }).click()
|
||||
await group.getByRole("button", { name: "Used 1 Shell, 1 Patch", exact: true }).click()
|
||||
await expect(group.getByText("2 files", { exact: true })).toBeVisible()
|
||||
await timeline.send(
|
||||
partUpdated(
|
||||
@@ -129,7 +129,7 @@ test("combines follow-up patches into one three-file stack inside Used", async (
|
||||
),
|
||||
),
|
||||
)
|
||||
await expect(group.getByRole("button", { name: "Used 3 Shell, Patch", exact: true })).toHaveAttribute(
|
||||
await expect(group.getByRole("button", { name: "Used 1 Shell, 2 Patch", exact: true })).toHaveAttribute(
|
||||
"aria-expanded",
|
||||
"true",
|
||||
)
|
||||
@@ -162,8 +162,8 @@ test("keeps failed search calls and their error cards inside the collapsed stack
|
||||
await setupTimeline(page, { messages: [userMessage(), assistantMessage(parts)] })
|
||||
|
||||
const group = page.locator('[data-timeline-part-ids="prt_error_glob,prt_error_grep"]')
|
||||
const summary = group.getByRole("button", { name: "Used 2 Glob, Grep", exact: true })
|
||||
await expect(summary.locator('[data-slot="basic-tool-tool-title"]')).toHaveText("2 Glob, Grep")
|
||||
const summary = group.getByRole("button", { name: "Used 1 Glob, 1 Grep", exact: true })
|
||||
await expect(summary.locator('[data-slot="basic-tool-tool-title"]')).toHaveText("1 Glob, 1 Grep")
|
||||
await summary.click()
|
||||
await expect(group.locator('[data-kind="tool-error-card"]')).toHaveCount(2)
|
||||
const glob = group.locator('[data-timeline-part-id="prt_error_glob"]')
|
||||
|
||||
@@ -45,15 +45,15 @@ test("workspaces opens without waiting for inventory or sessions", async ({ page
|
||||
})
|
||||
const settings = page.getByTestId("settings-screen")
|
||||
const requested = page.waitForRequest((request) => new URL(request.url()).pathname.startsWith("/api/worktree/"))
|
||||
await settings.getByRole("tab", { name: "Workspaces", exact: true }).click()
|
||||
await settings.getByRole("tab", { name: "Worktrees", exact: true }).click()
|
||||
await requested
|
||||
await expect(settings.getByRole("heading", { name: "Workspaces", exact: true })).toBeVisible()
|
||||
await expect(settings.getByRole("heading", { name: "Worktrees", exact: true })).toBeVisible()
|
||||
await expect(settings.getByRole("button", { name: "Back to app" })).toBeVisible()
|
||||
await expect(settings.getByText("No workspaces", { exact: true })).toHaveCount(0)
|
||||
await expect(settings.getByText("No worktrees", { exact: true })).toHaveCount(0)
|
||||
|
||||
inventory.resolve()
|
||||
await expect(settings.getByText(sandboxes[0], { exact: true })).toBeVisible()
|
||||
await expect(settings.getByText("12 workspaces", { exact: true })).toBeVisible()
|
||||
await expect(settings.getByText("12 worktrees", { exact: true })).toBeVisible()
|
||||
sessions.resolve()
|
||||
await expect(settings.getByText("Workspace 1 session", { exact: true })).toBeVisible()
|
||||
|
||||
@@ -63,7 +63,7 @@ test("workspaces opens without waiting for inventory or sessions", async ({ page
|
||||
await route.fallback()
|
||||
})
|
||||
await settings.getByRole("tab", { name: "Preferences", exact: true }).click()
|
||||
await settings.getByRole("tab", { name: "Workspaces", exact: true }).click()
|
||||
await settings.getByRole("tab", { name: "Worktrees", exact: true }).click()
|
||||
await expect(settings.getByText("Workspace 1 session", { exact: true })).toBeVisible()
|
||||
refresh.resolve()
|
||||
})
|
||||
@@ -89,7 +89,7 @@ test("extensions opens without waiting for MCPs", async ({ page }) => {
|
||||
|
||||
test("workspace inventory uses the settings panel scroll area", async ({ page }) => {
|
||||
const settings = page.getByTestId("settings-screen")
|
||||
await settings.getByRole("tab", { name: "Workspaces", exact: true }).click()
|
||||
await settings.getByRole("tab", { name: "Worktrees", exact: true }).click()
|
||||
await expect(settings.getByText("Workspace 1 session", { exact: true })).toBeVisible()
|
||||
const list = settings.locator('[data-component="settings-list"]')
|
||||
await expect(list).toHaveCSS("max-height", "none")
|
||||
|
||||
@@ -149,7 +149,7 @@ test("vertical tabs show project details, resize, and navigate", async ({ page }
|
||||
({ server, sessionA, sessionB }) => {
|
||||
localStorage.setItem(
|
||||
"settings.v3",
|
||||
JSON.stringify({ appearance: { tabLayout: "vertical" }, general: { showStatus: true } }),
|
||||
JSON.stringify({ appearance: { tabLayout: "vertical", showProjectName: true }, general: { showStatus: true } }),
|
||||
)
|
||||
localStorage.setItem(
|
||||
"opencode.window.browser.dat:tabs",
|
||||
@@ -219,7 +219,7 @@ test("vertical tabs show project details, resize, and navigate", async ({ page }
|
||||
await expect(tabB).toBeVisible()
|
||||
})
|
||||
|
||||
test("appearance experimental setting switches tab orientation", async ({ page }) => {
|
||||
test("appearance experimental settings control vertical tab details", async ({ page }) => {
|
||||
await mockServer(page)
|
||||
await page.addInitScript(
|
||||
({ server, sessionA }) => {
|
||||
@@ -251,6 +251,12 @@ test("appearance experimental setting switches tab orientation", async ({ page }
|
||||
await expect(layout).toContainText("Vertical")
|
||||
await expect(page.locator('[data-slot="vertical-tabs-sidebar"]')).toBeVisible()
|
||||
await expect(page.locator('[data-slot="titlebar-tabs"]')).toHaveCount(0)
|
||||
const projectNames = page.locator('[data-slot="vertical-tabs-sidebar"] [data-slot="tab-project"]')
|
||||
await expect(projectNames).toHaveCount(0)
|
||||
const projectNameSwitch = settings.getByRole("switch", { name: "Show project names", exact: true })
|
||||
await settings.locator('[data-action="settings-show-project-name"] [data-slot="switch-control"]').click()
|
||||
await expect(projectNameSwitch).toBeChecked()
|
||||
await expect(projectNames).toHaveText(["tab-project"])
|
||||
await expect(settings.getByRole("tablist")).toHaveCSS("width", "240px")
|
||||
|
||||
await page.setViewportSize({ width: 920, height: 720 })
|
||||
@@ -274,6 +280,9 @@ test("appearance experimental setting switches tab orientation", async ({ page }
|
||||
await page.reload()
|
||||
const href = `/server/${base64Encode(server)}/session/${sessionA.id}`
|
||||
await page.getByRole("button", { name: "Tabs", exact: true }).click()
|
||||
await expect(page.locator('[data-slot="mobile-tabs-drawer"] [data-slot="tab-project"]')).toHaveText([
|
||||
"tab-project",
|
||||
])
|
||||
await expect(
|
||||
page
|
||||
.locator('[data-slot="mobile-tabs-drawer"]')
|
||||
|
||||
@@ -134,8 +134,8 @@ for (const theme of ["light", "dark"] as const) {
|
||||
await expect(view.send).toBeDisabled()
|
||||
await expectBackground(view.send, "contrast")
|
||||
await page.getByRole("button", { name: "Local", exact: true }).click()
|
||||
await page.getByRole("menuitem", { name: "New workspace", exact: true }).click()
|
||||
await expect(page.getByRole("button", { name: "New workspace", exact: true })).toBeVisible()
|
||||
await page.getByRole("menuitem", { name: "New worktree", exact: true }).click()
|
||||
await expect(page.getByRole("button", { name: "New worktree", exact: true })).toBeVisible()
|
||||
await view.input.fill("Inspect this fixture workspace.")
|
||||
await expect(view.send).toBeEnabled()
|
||||
await expectBackground(view.send, "contrast")
|
||||
|
||||
@@ -609,9 +609,12 @@ export function currentSession(session: { id: string } & Record<string, unknown>
|
||||
model: session.model ?? { id: "mock-model", providerID: "mock-provider" },
|
||||
cost: session.cost ?? 0,
|
||||
tokens: session.tokens ?? { input: 0, output: 0, reasoning: 0, cache: { read: 0, write: 0 } },
|
||||
...(typeof session.outcome === "string" ? { outcome: session.outcome } : {}),
|
||||
time: {
|
||||
created: "created" in time && typeof time.created === "number" ? time.created : 0,
|
||||
updated: "updated" in time && typeof time.updated === "number" ? time.updated : 0,
|
||||
...("idle" in time && typeof time.idle === "number" ? { idle: time.idle } : {}),
|
||||
...("viewed" in time && typeof time.viewed === "number" ? { viewed: time.viewed } : {}),
|
||||
...(session.time && typeof session.time === "object" && "archived" in session.time
|
||||
? { archived: session.time.archived }
|
||||
: {}),
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { batch, type Accessor } from "solid-js"
|
||||
import { batch, untrack, type Accessor } from "solid-js"
|
||||
import type { SetStoreFunction, Store } from "solid-js/store"
|
||||
import type {
|
||||
ComposerAgentPart,
|
||||
@@ -23,43 +23,47 @@ export function createComposerEditorActions(input: ComposerStateStoreInput) {
|
||||
return typeof value === "function" ? value() : value
|
||||
}
|
||||
const setStore = () => tuple()[1]
|
||||
const clearRetry = () => setStore()("retry", undefined)
|
||||
const clearRetry = () => {
|
||||
if (untrack(() => store().retry) !== undefined) setStore()("retry", undefined)
|
||||
}
|
||||
|
||||
return {
|
||||
get state() {
|
||||
return store()
|
||||
},
|
||||
setPrompt(prompt: ComposerPrompt, cursor?: number) {
|
||||
batch(() => {
|
||||
setStore()("prompt", prompt)
|
||||
if (cursor !== undefined) setStore()("cursor", cursor)
|
||||
clearRetry()
|
||||
})
|
||||
// Persisted setters encode on every call, even inside a reactive batch.
|
||||
batch(() => setStore()({ prompt, ...(cursor !== undefined ? { cursor } : {}), retry: undefined }))
|
||||
},
|
||||
setCursor(cursor: number) {
|
||||
if (untrack(() => store().cursor) === cursor) return
|
||||
setStore()("cursor", cursor)
|
||||
},
|
||||
setMode(mode: "normal" | "shell") {
|
||||
setStore()("mode", mode)
|
||||
clearRetry()
|
||||
if (untrack(() => store().mode === mode && store().retry === undefined)) return
|
||||
setStore()({ mode, retry: undefined })
|
||||
},
|
||||
setText(content: string) {
|
||||
batch(() => {
|
||||
setStore()("prompt", (prompt) => [
|
||||
{ type: "text", content, start: 0, end: content.length },
|
||||
...prompt.filter((part) => part.type === "image"),
|
||||
])
|
||||
setStore()("cursor", content.length)
|
||||
clearRetry()
|
||||
})
|
||||
batch(() =>
|
||||
setStore()((state) => ({
|
||||
prompt: [
|
||||
{ type: "text", content, start: 0, end: content.length },
|
||||
...state.prompt.filter((part) => part.type === "image"),
|
||||
],
|
||||
cursor: content.length,
|
||||
retry: undefined,
|
||||
})),
|
||||
)
|
||||
},
|
||||
addText(content: string) {
|
||||
const cursor = store().cursor ?? promptLength(store().prompt)
|
||||
batch(() => {
|
||||
setStore()("prompt", (prompt) => insertText(prompt, cursor, content))
|
||||
setStore()("cursor", cursor + content.length)
|
||||
clearRetry()
|
||||
})
|
||||
batch(() =>
|
||||
setStore()((state) => ({
|
||||
prompt: insertText(state.prompt, cursor, content),
|
||||
cursor: cursor + content.length,
|
||||
retry: undefined,
|
||||
})),
|
||||
)
|
||||
},
|
||||
removeContext(key: string) {
|
||||
setStore()("context", "items", (items) => items.filter((item) => item.key !== key))
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { batch, type Accessor } from "solid-js"
|
||||
import { batch, untrack, type Accessor } from "solid-js"
|
||||
import { createStore, type SetStoreFunction } from "solid-js/store"
|
||||
import { Persist, persisted } from "@/runtime/persistence/storage"
|
||||
import { ServerScope } from "@/runtime/server/scope"
|
||||
@@ -43,19 +43,16 @@ export function isCommentItem(item: ContextItem | (ContextItem & { key: string }
|
||||
function createComposerActions(setStore: SetStoreFunction<ComposerStore>) {
|
||||
return {
|
||||
set(prompt: Prompt, cursorPosition?: number) {
|
||||
const next = clonePrompt(prompt)
|
||||
batch(() => {
|
||||
setStore("prompt", next)
|
||||
if (cursorPosition !== undefined) setStore("cursor", cursorPosition)
|
||||
setStore("retry", undefined)
|
||||
})
|
||||
batch(() =>
|
||||
setStore({
|
||||
prompt: clonePrompt(prompt),
|
||||
...(cursorPosition !== undefined ? { cursor: cursorPosition } : {}),
|
||||
retry: undefined,
|
||||
}),
|
||||
)
|
||||
},
|
||||
reset() {
|
||||
batch(() => {
|
||||
setStore("prompt", clonePrompt(DEFAULT_PROMPT))
|
||||
setStore("cursor", 0)
|
||||
setStore("retry", undefined)
|
||||
})
|
||||
batch(() => setStore({ prompt: clonePrompt(DEFAULT_PROMPT), cursor: 0, retry: undefined }))
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -86,7 +83,9 @@ function initialComposerStore(initial?: InitialPrompt): ComposerStore {
|
||||
|
||||
function createComposerStateValue(store: ComposerStore, setStore: SetStoreFunction<ComposerStore>) {
|
||||
const actions = createComposerActions(setStore)
|
||||
const clearRetry = () => setStore("retry", undefined)
|
||||
const clearRetry = () => {
|
||||
if (untrack(() => store.retry) !== undefined) setStore("retry", undefined)
|
||||
}
|
||||
const value = {
|
||||
store: [() => store, setStore] as [Accessor<ComposerStore>, SetStoreFunction<ComposerStore>],
|
||||
current: () => store.prompt,
|
||||
@@ -101,8 +100,8 @@ function createComposerStateValue(store: ComposerStore, setStore: SetStoreFuncti
|
||||
mode: {
|
||||
current: () => store.mode ?? "normal",
|
||||
set: (mode: "normal" | "shell") => {
|
||||
setStore("mode", mode)
|
||||
clearRetry()
|
||||
if (untrack(() => store.mode === mode && store.retry === undefined)) return
|
||||
setStore({ mode, retry: undefined })
|
||||
},
|
||||
},
|
||||
retry: {
|
||||
|
||||
@@ -7,7 +7,12 @@ import { DateTime } from "luxon"
|
||||
import { type Accessor, createEffect, createMemo, type JSX, startTransition, untrack } from "solid-js"
|
||||
import { notifySessionTabsRemoved } from "@/shell/titlebar/session-events"
|
||||
import { useCommand } from "@/shell/commands/command"
|
||||
import { loadHomeSessionIndex, mergeHomeSessionIndex, retainHomeSessions } from "@/home/sessions/index"
|
||||
import {
|
||||
HOME_SESSION_LIMIT,
|
||||
loadHomeSessionIndex,
|
||||
mergeHomeSessionIndex,
|
||||
retainHomeSessions,
|
||||
} from "@/home/sessions/index"
|
||||
import type { LocalProject } from "@/shell/state/layout"
|
||||
import { useLanguage } from "@/runtime/i18n/language"
|
||||
import { ServerConnection } from "@/runtime/server/registry"
|
||||
@@ -25,8 +30,7 @@ import { buildHomeSessionRecords, type HomeSessionRecord } from "./records"
|
||||
|
||||
export type { HomeSessionRecord } from "./records"
|
||||
|
||||
const HOME_SESSION_LIMIT = 64
|
||||
// Keep the large immutable result opaque so Solid Query does not recursively unwrap every session on mount.
|
||||
// Keep the immutable result opaque so Solid Query does not recursively unwrap every session on mount.
|
||||
const selectSessions = (sessions: SessionInfo[]) => () => sessions
|
||||
export type HomeSessionGroup = {
|
||||
id: "today" | "yesterday" | "older"
|
||||
|
||||
@@ -1,6 +1,15 @@
|
||||
import { describe, expect, test } from "bun:test"
|
||||
import type { SessionInfo } from "@opencode-ai/client/promise"
|
||||
import { HOME_V2_SESSION_PAGE_LIMIT, loadHomeSessionIndex, parseHomeSessionIndex, retainHomeSessions } from "./index"
|
||||
import { SESSION_RECENT_LIMIT, SESSION_RECENT_WINDOW } from "@/runtime/server/global-sync/types"
|
||||
import {
|
||||
HOME_SESSION_INDEX_LIMIT,
|
||||
HOME_SESSION_LIMIT,
|
||||
HOME_V2_SESSION_PAGE_LIMIT,
|
||||
loadHomeSessionIndex,
|
||||
mergeHomeSessionIndex,
|
||||
parseHomeSessionIndex,
|
||||
retainHomeSessions,
|
||||
} from "./index"
|
||||
|
||||
const session = (id: string, input: Partial<SessionInfo> = {}) =>
|
||||
({
|
||||
@@ -12,19 +21,65 @@ const session = (id: string, input: Partial<SessionInfo> = {}) =>
|
||||
...input,
|
||||
}) as SessionInfo
|
||||
|
||||
// The loader anchors its recent window on the wall clock, so fixtures do too.
|
||||
const now = Date.now()
|
||||
const minute = 60_000
|
||||
|
||||
// One session per minute going back from `now`; index 0 is the newest, which
|
||||
// is the server's list order.
|
||||
const history = (directory: string, count: number) =>
|
||||
Array.from({ length: count }, (_, index) =>
|
||||
session(`${directory}-${String(index).padStart(5, "0")}`, {
|
||||
time: { created: now - (index + 1) * minute - 1000, updated: now - (index + 1) * minute },
|
||||
location: { directory },
|
||||
}),
|
||||
)
|
||||
|
||||
const ids = (sessions: SessionInfo[]) => sessions.map((item) => item.id)
|
||||
|
||||
describe("Home session index", () => {
|
||||
test("loads all pages", async () => {
|
||||
const first = Array.from({ length: HOME_V2_SESSION_PAGE_LIMIT }, (_, index) => session(`session-${index}`))
|
||||
test("follows cursors across pages and bounds the result per directory", async () => {
|
||||
const all = history("/repo", HOME_V2_SESSION_PAGE_LIMIT + 1)
|
||||
const calls: Array<{ cursor?: string; parentID: null }> = []
|
||||
const result = await loadHomeSessionIndex(async (input) => {
|
||||
calls.push(input)
|
||||
if (!input.cursor) return { data: first, cursor: { next: "next" } }
|
||||
return { data: [session("last")], cursor: {} }
|
||||
if (!input.cursor) return { data: all.slice(0, HOME_V2_SESSION_PAGE_LIMIT), cursor: { next: "next" } }
|
||||
return { data: all.slice(HOME_V2_SESSION_PAGE_LIMIT), cursor: {} }
|
||||
})
|
||||
|
||||
expect(result).toHaveLength(HOME_V2_SESSION_PAGE_LIMIT + 1)
|
||||
expect(calls.map((call) => call.cursor)).toEqual([undefined, "next"])
|
||||
expect(calls.every((call) => call.parentID === null)).toBe(true)
|
||||
// Newest rows in server order, plus the recent window beyond the limit.
|
||||
expect(ids(result)).toEqual(ids(all.slice(0, HOME_SESSION_INDEX_LIMIT + SESSION_RECENT_LIMIT)))
|
||||
})
|
||||
|
||||
test("folds pages so every directory keeps its newest sessions", async () => {
|
||||
const busy = history("/busy", HOME_V2_SESSION_PAGE_LIMIT + 300)
|
||||
const quiet = history("/quiet", 3).map((item) => ({
|
||||
...item,
|
||||
time: { created: item.time.created - 6000 * minute, updated: item.time.updated - 6000 * minute },
|
||||
}))
|
||||
// Server order is global by updated time: /quiet is older than all of /busy
|
||||
// and only arrives on the second page.
|
||||
const result = await loadHomeSessionIndex(async (input) => {
|
||||
if (!input.cursor) return { data: busy.slice(0, HOME_V2_SESSION_PAGE_LIMIT), cursor: { next: "next" } }
|
||||
return { data: [...busy.slice(HOME_V2_SESSION_PAGE_LIMIT), ...quiet], cursor: {} }
|
||||
})
|
||||
expect(ids(result.filter((item) => item.location.directory === "/quiet"))).toEqual(ids(quiet))
|
||||
expect(ids(result.filter((item) => item.location.directory === "/busy"))).toEqual(
|
||||
ids(busy.slice(0, HOME_SESSION_INDEX_LIMIT + SESSION_RECENT_LIMIT)),
|
||||
)
|
||||
})
|
||||
|
||||
test("drops archived sessions before they can occupy a retained slot", async () => {
|
||||
const archived = history("/repo", 200).map((item) => ({ ...item, time: { ...item.time, archived: now } }))
|
||||
const live = history("/repo", 10).map((item) => ({
|
||||
...item,
|
||||
id: `live-${item.id}`,
|
||||
time: { created: item.time.created - 300 * minute, updated: item.time.updated - 300 * minute },
|
||||
}))
|
||||
const result = await loadHomeSessionIndex(async () => ({ data: [...archived, ...live], cursor: {} }))
|
||||
expect(ids(result)).toEqual(ids(live))
|
||||
})
|
||||
|
||||
test("keeps only visible roots", () => {
|
||||
@@ -38,7 +93,6 @@ describe("Home session index", () => {
|
||||
})
|
||||
|
||||
test("preserves the per-directory retention limit", () => {
|
||||
const now = Date.now()
|
||||
const result = retainHomeSessions(
|
||||
[session("a", { time: { created: 1, updated: 1 } }), session("b", { time: { created: 2, updated: 2 } })],
|
||||
1,
|
||||
@@ -47,3 +101,58 @@ describe("Home session index", () => {
|
||||
expect(result.map((item) => item.id)).toEqual(["b"])
|
||||
})
|
||||
})
|
||||
|
||||
// Home merges locally known sessions and pending removals into the fetched
|
||||
// index on every store change, then retains per directory for display and
|
||||
// search. The loaded subset must resolve to the same set as the complete index.
|
||||
describe("Home session index parity with the complete index", () => {
|
||||
const complete = [...history("/a", 400), ...history("/b", 90), ...history("/c", 5)]
|
||||
const view = (index: SessionInfo[], known: SessionInfo[], removed = new Set<string>()) =>
|
||||
ids(
|
||||
retainHomeSessions(
|
||||
mergeHomeSessionIndex(index, known).filter((item) => !removed.has(item.id)),
|
||||
HOME_SESSION_LIMIT,
|
||||
now,
|
||||
),
|
||||
).toSorted()
|
||||
const loaded = () => loadHomeSessionIndex(async () => ({ data: complete, cursor: {} }))
|
||||
|
||||
test("without local changes", async () => {
|
||||
const result = view(await loaded(), [])
|
||||
expect(result).toEqual(view(complete, []))
|
||||
expect(result).toHaveLength(HOME_SESSION_LIMIT + SESSION_RECENT_LIMIT + 90 + 5)
|
||||
})
|
||||
|
||||
test("with new, re-timed, and unlisted-directory local sessions", async () => {
|
||||
const known = [
|
||||
session("a-fresh", { time: { created: now, updated: now }, location: { directory: "/a" } }),
|
||||
// A fetched session that fell outside retention but was updated locally.
|
||||
{ ...complete[300], time: { created: now - 1, updated: now } },
|
||||
session("d-new", { time: { created: now, updated: now }, location: { directory: "/d" } }),
|
||||
]
|
||||
const result = view(await loaded(), known)
|
||||
expect(result).toEqual(view(complete, known))
|
||||
expect(result).toContain("a-fresh")
|
||||
expect(result).toContain(complete[300].id)
|
||||
expect(result).toContain("d-new")
|
||||
})
|
||||
|
||||
test("with pending removals up to the recent-window bucket size", async () => {
|
||||
const removed = new Set(ids(complete.slice(0, SESSION_RECENT_LIMIT)))
|
||||
const result = view(await loaded(), [], removed)
|
||||
expect(result).toEqual(view(complete, [], removed))
|
||||
expect(result).toHaveLength(HOME_SESSION_LIMIT + SESSION_RECENT_LIMIT + 90 + 5)
|
||||
expect(result.some((id) => removed.has(id))).toBe(false)
|
||||
})
|
||||
|
||||
test("with a directory entirely inside the recent window", async () => {
|
||||
const hot = history("/hot", 300).map((item, index) => ({
|
||||
...item,
|
||||
time: { created: now - index * 1000 - 500, updated: now - index * 1000 },
|
||||
}))
|
||||
expect(hot.every((item) => item.time.updated > now - SESSION_RECENT_WINDOW)).toBe(true)
|
||||
const index = await loadHomeSessionIndex(async () => ({ data: hot, cursor: {} }))
|
||||
expect(index).toHaveLength(HOME_SESSION_INDEX_LIMIT + SESSION_RECENT_LIMIT)
|
||||
expect(view(index, [])).toEqual(view(hot, []))
|
||||
})
|
||||
})
|
||||
|
||||
@@ -3,6 +3,13 @@ import { pathKey } from "@/workspaces/path-key"
|
||||
import { SESSION_RECENT_LIMIT, SESSION_RECENT_WINDOW } from "@/runtime/server/global-sync/types"
|
||||
|
||||
export const HOME_V2_SESSION_PAGE_LIMIT = 5_000
|
||||
export const HOME_SESSION_LIMIT = 64
|
||||
// Rows kept per directory from the fetched index: the visible limit plus the
|
||||
// recent-window search bucket. Merging locally known sessions and pending
|
||||
// removals into this subset resolves exactly like merging into the complete
|
||||
// index, so Home shows the same rows, order, and search results while the
|
||||
// query cache and every per-update re-merge stay bounded by directory count.
|
||||
export const HOME_SESSION_INDEX_LIMIT = HOME_SESSION_LIMIT + SESSION_RECENT_LIMIT
|
||||
|
||||
export async function loadHomeSessionIndex(
|
||||
list: (
|
||||
@@ -16,7 +23,8 @@ export async function loadHomeSessionIndex(
|
||||
) => Promise<SessionsResponse>,
|
||||
signal?: AbortSignal,
|
||||
) {
|
||||
const data: SessionInfo[] = []
|
||||
const now = Date.now()
|
||||
let retained: SessionInfo[] = []
|
||||
let cursor: string | undefined
|
||||
|
||||
for (;;) {
|
||||
@@ -29,8 +37,11 @@ export async function loadHomeSessionIndex(
|
||||
},
|
||||
{ signal },
|
||||
)
|
||||
data.push(...response.data)
|
||||
if (response.data.length < HOME_V2_SESSION_PAGE_LIMIT || !response.cursor.next) return parseHomeSessionIndex(data)
|
||||
// Fold each page in as it arrives: pages are newest first, so later pages
|
||||
// can only fill directories that still have room. Peak allocation is one
|
||||
// page plus the retained subset, not the whole history.
|
||||
retained = retainHomeSessions([...retained, ...parseHomeSessionIndex(response.data)], HOME_SESSION_INDEX_LIMIT, now)
|
||||
if (response.data.length < HOME_V2_SESSION_PAGE_LIMIT || !response.cursor.next) return retained
|
||||
cursor = response.cursor.next
|
||||
}
|
||||
}
|
||||
|
||||
@@ -702,11 +702,11 @@ function HomeSessionRow(
|
||||
>
|
||||
<Menu.Item onSelect={openEditor}>{props.language.t("common.rename")}</Menu.Item>
|
||||
<Menu.Item onSelect={() => void props.onExportSession(props.server, props.record.session)}>
|
||||
{props.language.t("common.export")}...
|
||||
{props.language.t("common.export")}…
|
||||
</Menu.Item>
|
||||
<Menu.Separator />
|
||||
<Menu.Item onSelect={() => props.onDeleteSession(props.server, props.record.session)}>
|
||||
{props.language.t("common.delete")}...
|
||||
{props.language.t("common.delete")}…
|
||||
</Menu.Item>
|
||||
</Menu.Content>
|
||||
</Menu.Portal>
|
||||
|
||||
@@ -6,13 +6,13 @@ export const dict = {
|
||||
"desktop.menu.go": "ሂድ",
|
||||
"desktop.menu.window": "መስኮት",
|
||||
"desktop.menu.help": "እገዛ",
|
||||
"desktop.menu.checkForUpdates": "ዝማኔዎችን ይመልከቱ...",
|
||||
"desktop.menu.checkForUpdates": "ዝማኔዎችን ይመልከቱ…",
|
||||
"desktop.menu.settings": "ቅንጅቶች",
|
||||
"desktop.menu.reloadWebview": "ዳግም ጫን Webview",
|
||||
"desktop.menu.restart": "ዳግም አስጀምር",
|
||||
"desktop.menu.exportLogs": "የመላክ ምዝግብ ማስታወሻዎች...",
|
||||
"desktop.menu.exportLogs": "የመላክ ምዝግብ ማስታወሻዎች…",
|
||||
"desktop.menu.newSession": "አዲስ ክፍለ ጊዜ",
|
||||
"desktop.menu.openProject": "ክፍት ፕሮጀክት...",
|
||||
"desktop.menu.openProject": "ክፍት ፕሮጀክት…",
|
||||
"desktop.menu.newWindow": "አዲስ መስኮት",
|
||||
"desktop.menu.closeWindow": "መስኮትን ዝጋ",
|
||||
"desktop.menu.undo": "ቀልብስ",
|
||||
@@ -212,8 +212,8 @@ export const dict = {
|
||||
"provider.connect.method.apiKey": "API ቁልፍ",
|
||||
"provider.connect.method.browser": "አሳሽ",
|
||||
"provider.connect.method.headless": "ያለ ግራፊክ በይነገጽ",
|
||||
"provider.connect.status.inProgress": "ፍቃድ በሂደት ላይ...",
|
||||
"provider.connect.status.waiting": "ፈቀዳን በመጠበቅ ላይ...",
|
||||
"provider.connect.status.inProgress": "ፍቃድ በሂደት ላይ…",
|
||||
"provider.connect.status.waiting": "ፈቀዳን በመጠበቅ ላይ…",
|
||||
"provider.connect.status.failed": "ፍቃድ መስጠት አልተሳካም፡ {{error}}",
|
||||
"provider.connect.apiKey.description":
|
||||
"መለያዎን ለማገናኘት የ{{provider}} API ቁልፍዎን ያስገቡ እና {{provider}} ሞዴሎችን በOpenCode ይጠቀሙ።",
|
||||
@@ -303,7 +303,7 @@ export const dict = {
|
||||
"common.goBack": "ወደ ኋላ ዳስስ",
|
||||
"common.goForward": "ወደ ፊት ዳስስ",
|
||||
"common.loading": "በመጫን ላይ",
|
||||
"common.loading.ellipsis": "...",
|
||||
"common.loading.ellipsis": "…",
|
||||
"common.cancel": "ሰርዝ",
|
||||
"common.clear": "ግልጽ",
|
||||
"common.open": "ክፍት",
|
||||
@@ -312,12 +312,12 @@ export const dict = {
|
||||
"common.continue": "ቀጥል",
|
||||
"common.submit": "አስረክብ",
|
||||
"common.save": "አስቀምጥ",
|
||||
"common.saving": "በማስቀመጥ ላይ...",
|
||||
"common.saving": "በማስቀመጥ ላይ…",
|
||||
"common.default": "ነባሪ",
|
||||
"common.attachment": "አባሪ",
|
||||
"prompt.placeholder.shell": "የሼል ትዕዛዝ አስገባ... {{example}}",
|
||||
"prompt.placeholder.normal": 'ማንኛውንም ነገር ይጠይቁ... "{{example}}"',
|
||||
"prompt.placeholder.simple": "ማንኛውንም ነገር ይጠይቁ...",
|
||||
"prompt.placeholder.shell": "የሼል ትዕዛዝ አስገባ… {{example}}",
|
||||
"prompt.placeholder.normal": 'ማንኛውንም ነገር ይጠይቁ… "{{example}}"',
|
||||
"prompt.placeholder.simple": "ማንኛውንም ነገር ይጠይቁ…",
|
||||
"prompt.placeholder.summarizeComments": "አስተያየቶችን ማጠቃለል…",
|
||||
"prompt.placeholder.summarizeComment": "አስተያየቱን ማጠቃለል…",
|
||||
"prompt.mode.shell": "ሼል",
|
||||
@@ -337,7 +337,7 @@ export const dict = {
|
||||
"prompt.example.10": "APIሰነድ ፍጠር",
|
||||
"prompt.example.11": "ዳታቤዝ መጠይቆችን ያመቻቹ",
|
||||
"prompt.example.12": "የግቤት ማረጋገጫን አክል",
|
||||
"prompt.example.13": "አዲስ አካል ለ...",
|
||||
"prompt.example.13": "አዲስ አካል ለ…",
|
||||
"prompt.example.14": "ይህን ፕሮጀክት እንዴት ማሰማራት እችላለሁ?",
|
||||
"prompt.example.15": "ለምርጥ ልምዶች የእኔን ኮድ ይገምግሙ",
|
||||
"prompt.example.16": "የስህተት አያያዝን ወደዚህ ተግባር ያክሉ",
|
||||
@@ -348,7 +348,7 @@ export const dict = {
|
||||
"prompt.example.21": "የስደት ስክሪፕት እንድጽፍ እርዳኝ",
|
||||
"prompt.example.22": "ለዚህ የመጨረሻ ነጥብ መሸጎጫ ተግባራዊ ያድርጉ",
|
||||
"prompt.example.23": "ወደዚህ ዝርዝር ገፅ ጨምር",
|
||||
"prompt.example.24": "CLI ትዕዛዝ ፍጠር ለ...",
|
||||
"prompt.example.24": "CLI ትዕዛዝ ፍጠር ለ…",
|
||||
"prompt.example.25": "አካባቢያዊ ተለዋዋጮች እዚህ እንዴት ይሰራሉ?",
|
||||
"prompt.popover.emptyResults": "ምንም ተዛማጅ ውጤቶች የሉም",
|
||||
"prompt.popover.emptyCommands": "ምንም ተዛማጅ ትዕዛዞች የሉም",
|
||||
@@ -400,7 +400,7 @@ export const dict = {
|
||||
"dialog.directory.parent": "ወላጅ",
|
||||
"dialog.directory.readError": "ይህን አቃፊ ማንበብ አልተቻለም",
|
||||
"app.server.unreachable": "{{server}}ን መድረስ አልተቻለም",
|
||||
"app.server.retrying": "በራስ ሰር እንደገና በመሞከር ላይ...",
|
||||
"app.server.retrying": "በራስ ሰር እንደገና በመሞከር ላይ…",
|
||||
"app.server.otherServers": "ሌሎች አገልጋዮች",
|
||||
"dialog.server.title": "አገልጋዮች",
|
||||
"dialog.server.description": "ይህ መተግበሪያ ከየትኛው OpenCode አገልጋይ ጋር እንደሚገናኝ ይቀይሩ።",
|
||||
@@ -410,7 +410,7 @@ export const dict = {
|
||||
"dialog.server.add.url": "የአገልጋይ አድራሻ",
|
||||
"dialog.server.add.placeholder": "http://localhost:4096",
|
||||
"dialog.server.add.error": "ከአገልጋይ ጋር መገናኘት አልተቻለም",
|
||||
"dialog.server.add.checking": "በማጣራት ላይ...",
|
||||
"dialog.server.add.checking": "በማጣራት ላይ…",
|
||||
"dialog.server.add.button": "አገልጋይ አክል",
|
||||
"dialog.server.add.name": "የአገልጋይ ስም (አማራጭ)",
|
||||
"dialog.server.add.namePlaceholder": "Localhost",
|
||||
@@ -434,26 +434,26 @@ export const dict = {
|
||||
"wsl.server.label": "WSL",
|
||||
"wsl.server.menu.label": "WSL አገልጋይ",
|
||||
"wsl.server.retryStart": "እንደገና ጀምር",
|
||||
"wsl.server.updating": "በማዘመን ላይ...",
|
||||
"wsl.server.updating": "በማዘመን ላይ…",
|
||||
"wsl.onboarding.step.distro": "distro ምረጥ",
|
||||
"wsl.onboarding.step.opencode": "OpenCode",
|
||||
"wsl.onboarding.checkingRuntime": "መፈተሽ WSL...",
|
||||
"wsl.onboarding.checkingRuntime": "መፈተሽ WSL…",
|
||||
"wsl.onboarding.restartRequired": "Windows WSLን መጫኑን ለመጨረስ ዳግም መጀመር ያስፈልገዋል።",
|
||||
"wsl.onboarding.ready": "WSL ዝግጁ ነው።",
|
||||
"wsl.onboarding.required": "WSLለመቀጠል ያስፈልጋል።",
|
||||
"wsl.onboarding.checkingDistros": "Distros በመፈተሽ ላይ...",
|
||||
"wsl.onboarding.installingDistro": "በመጫን ላይ {{distro}}...",
|
||||
"wsl.onboarding.checkingDistro": "መፈተሽ {{distro}}...",
|
||||
"wsl.onboarding.listingDistros": "የዝርዝር ዲስትሮስ...",
|
||||
"wsl.onboarding.checkingDistros": "Distros በመፈተሽ ላይ…",
|
||||
"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": "distro ይምረጡ ወይም ከታች ይጫኑ።",
|
||||
"wsl.onboarding.checkingOpencode": "መፈተሽ OpenCode...",
|
||||
"wsl.onboarding.checkingOpencodeIn": "OpenCodeን በ{{distro}} ውስጥ በመፈተሽ ላይ...",
|
||||
"wsl.onboarding.updatingOpencode": "በማዘመን ላይ OpenCode...",
|
||||
"wsl.onboarding.updatingOpencodeIn": "በማዘመን ላይ OpenCode በ{{distro}}...",
|
||||
"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.updateOpencode": "አዘምን OpenCode",
|
||||
"wsl.onboarding.opencodeReadyIn": "OpenCode በ{{distro}} ውስጥ ዝግጁ ነው።",
|
||||
@@ -462,11 +462,11 @@ export const dict = {
|
||||
"wsl.onboarding.installOpencode": "ጫን OpenCode",
|
||||
"wsl.onboarding.chooseDistroFirst": "መጀመሪያ ዳይስትሮ ይምረጡ።",
|
||||
"wsl.onboarding.loadFailed": "WSL ሁኔታን መጫን አልተሳካም።",
|
||||
"wsl.onboarding.loading": "በመጫን ላይ...",
|
||||
"wsl.onboarding.loading": "በመጫን ላይ…",
|
||||
"wsl.onboarding.installedDistros": "የተጫነው distros",
|
||||
"wsl.onboarding.checkAgain": "እንደገና ያረጋግጡ",
|
||||
"wsl.onboarding.distroStatus.ready": "ዝግጁ",
|
||||
"wsl.onboarding.distroStatus.checking": "በማጣራት ላይ...",
|
||||
"wsl.onboarding.distroStatus.checking": "በማጣራት ላይ…",
|
||||
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCodeአልተጫነም",
|
||||
"wsl.onboarding.distroStatus.missingTools": "የጠፋ bash፣ curl",
|
||||
"wsl.onboarding.distroStatus.unsupported": "የማይደገፍ · WSL 2] ተጠቀም",
|
||||
@@ -483,7 +483,7 @@ export const dict = {
|
||||
"wsl.onboarding.allDistrosAdded": "ሁሉም የተጫኑ ዳይስትሮዎች ቀድሞ ተጨምረዋል።",
|
||||
"wsl.onboarding.noDistros": "ገና ምንም distros አልተገኘም።",
|
||||
"wsl.onboarding.install": "ጫን",
|
||||
"wsl.onboarding.installing": "በመጫን ላይ...",
|
||||
"wsl.onboarding.installing": "በመጫን ላይ…",
|
||||
"wsl.onboarding.installDistro": "distro ጫን",
|
||||
"wsl.onboarding.searchDistros": "የፍለጋ distros",
|
||||
"wsl.onboarding.wsl2Required": "WSL 2 ያስፈልጋል።",
|
||||
@@ -495,7 +495,7 @@ export const dict = {
|
||||
"wsl.onboarding.unknown": "ያልታወቀ",
|
||||
"wsl.onboarding.desktopVersion": "ዴስክቶፕ {{version}}",
|
||||
"wsl.onboarding.versionMismatch": "የተጫነው ሥሪት ከዴስክቶፕ መተግበሪያ ሥሪት ጋር አይዛመድም።",
|
||||
"wsl.onboarding.adding": "በማከል ላይ...",
|
||||
"wsl.onboarding.adding": "በማከል ላይ…",
|
||||
"dialog.project.edit.title": "ፕሮጀክት አርትዕ",
|
||||
"dialog.project.edit.name": "ስም",
|
||||
"dialog.project.edit.icon": "አዶ",
|
||||
@@ -600,7 +600,7 @@ export const dict = {
|
||||
"error.page.action.report": "ስህተት ሪፖርት አድርግ",
|
||||
"error.page.action.reported": "ስህተት ሪፖርት ተደርጓል",
|
||||
"error.page.action.exportLogs": "የመላክ ምዝግብ ማስታወሻዎች",
|
||||
"error.page.action.checking": "በማጣራት ላይ...",
|
||||
"error.page.action.checking": "በማጣራት ላይ…",
|
||||
"error.page.action.checkUpdates": "ዝማኔዎችን ይመልከቱ",
|
||||
"error.page.action.updateTo": "ወደ {{version}} አዘምን",
|
||||
"error.page.circular": "[Circular]",
|
||||
@@ -675,12 +675,12 @@ export const dict = {
|
||||
"session.review.filesChanged": "የተቀየሩ ፋይሎች {{count}}",
|
||||
"session.review.change.one": "ለውጥ",
|
||||
"session.review.change.other": "ለውጦች",
|
||||
"session.review.loadingChanges": "ለውጦችን በመጫን ላይ...",
|
||||
"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.actionLoading": "Git ማከማቻ በመፍጠር ላይ…",
|
||||
"session.review.noVcs.createGit.action": "Git ማከማቻ ፍጠር",
|
||||
"session.review.noSnapshot": "የቅጽበታዊ ገጽ እይታን መከታተል በውቅረት ውስጥ ተሰናክሏል፣ስለዚህ የክፍለ-ጊዜ ለውጦች አይገኙም",
|
||||
"session.review.noChanges": "ምንም ለውጦች የሉም",
|
||||
@@ -691,9 +691,9 @@ export const dict = {
|
||||
"session.files.empty": "ምንም ፋይሎች",
|
||||
"session.files.binaryContent": "ሁለትዮሽ ፋይል (ይዘት ሊታይ አይችልም)",
|
||||
"session.messages.renderEarlier": "ቀደምት መልዕክቶችን ይስሩ",
|
||||
"session.messages.loadingEarlier": "የቀድሞ መልዕክቶችን በመጫን ላይ...",
|
||||
"session.messages.loadingEarlier": "የቀድሞ መልዕክቶችን በመጫን ላይ…",
|
||||
"session.messages.loadEarlier": "የቀድሞ መልዕክቶችን ጫን",
|
||||
"session.messages.loading": "መልእክቶችን በመጫን ላይ...",
|
||||
"session.messages.loading": "መልእክቶችን በመጫን ላይ…",
|
||||
"session.messages.jumpToLatest": "ወደ የቅርብ ጊዜ ዝለል",
|
||||
"session.context.addToContext": "{{selection}}ን ወደ አውድ አክል",
|
||||
"session.todo.title": "የሚደረጉ ሥራዎች",
|
||||
@@ -754,8 +754,8 @@ export const dict = {
|
||||
"common.copied": "የተገለበጠ",
|
||||
"lsp.tooltip.none": "ምንም LSP አገልጋዮች",
|
||||
"lsp.label.connected": "{{count}}LSP",
|
||||
"prompt.loading": "ፕሮምፕትን በመጫን ላይ...",
|
||||
"terminal.loading": "በመጫን ላይ ተርሚናል...",
|
||||
"prompt.loading": "ፕሮምፕትን በመጫን ላይ…",
|
||||
"terminal.loading": "በመጫን ላይ ተርሚናል…",
|
||||
"terminal.title": "ተርሚናል",
|
||||
"terminal.title.numbered": "ተርሚናል {{number}}",
|
||||
"terminal.close": "ተርሚናል ዝጋ",
|
||||
@@ -908,9 +908,9 @@ export const dict = {
|
||||
"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.action.checking": "በማጣራት ላይ…",
|
||||
"settings.updates.action.downloading": "በማውረድ ላይ…",
|
||||
"settings.updates.action.installing": "በመጫን ላይ…",
|
||||
"settings.updates.toast.latest.title": "ዘመኑን ጠብቀዋል",
|
||||
"settings.updates.toast.latest.description": "የቅርብ ጊዜውን የOpenCode እትም እያሄዱ ነው።",
|
||||
"sound.option.none": "ምንም",
|
||||
@@ -1056,7 +1056,7 @@ export const dict = {
|
||||
"workspace.reset.success.title": "Workspace ዳግም ተጀምሯል",
|
||||
"workspace.reset.success.description": "Workspace አሁን ከነባሪው ቅርንጫፍ ጋር ይዛመዳል።",
|
||||
"workspace.error.stillPreparing": "Workspace አሁንም በመዘጋጀት ላይ ነው",
|
||||
"workspace.status.checking": "ያልተጣመሩ ለውጦችን በመፈተሽ ላይ...",
|
||||
"workspace.status.checking": "ያልተጣመሩ ለውጦችን በመፈተሽ ላይ…",
|
||||
"workspace.status.error": "git ሁኔታን ማረጋገጥ አልተቻለም።",
|
||||
"workspace.status.clean": "ምንም ያልተዋሃዱ ለውጦች አልተገኙም።",
|
||||
"workspace.status.dirty": "ያልተቀላቀሉ ለውጦች በዚህ workspace ላይ ተገኝተዋል።",
|
||||
|
||||
@@ -6,13 +6,13 @@ export const dict = {
|
||||
"desktop.menu.go": "انتقال",
|
||||
"desktop.menu.window": "نافذة",
|
||||
"desktop.menu.help": "مساعدة",
|
||||
"desktop.menu.checkForUpdates": "التحقق من وجود تحديثات...",
|
||||
"desktop.menu.checkForUpdates": "التحقق من وجود تحديثات…",
|
||||
"desktop.menu.settings": "الإعدادات",
|
||||
"desktop.menu.reloadWebview": "إعادة تحميل Webview",
|
||||
"desktop.menu.restart": "إعادة التشغيل",
|
||||
"desktop.menu.exportLogs": "تصدير السجلات...",
|
||||
"desktop.menu.exportLogs": "تصدير السجلات…",
|
||||
"desktop.menu.newSession": "جلسة جديدة",
|
||||
"desktop.menu.openProject": "فتح مشروع...",
|
||||
"desktop.menu.openProject": "فتح مشروع…",
|
||||
"desktop.menu.newWindow": "نافذة جديدة",
|
||||
"desktop.menu.closeWindow": "إغلاق النافذة",
|
||||
"desktop.menu.undo": "تراجع",
|
||||
@@ -219,8 +219,8 @@ export const dict = {
|
||||
"provider.connect.method.apiKey": "مفتاح API",
|
||||
"provider.connect.method.browser": "المتصفح",
|
||||
"provider.connect.method.headless": "بدون واجهة رسومية",
|
||||
"provider.connect.status.inProgress": "جارٍ التفويض...",
|
||||
"provider.connect.status.waiting": "في انتظار التفويض...",
|
||||
"provider.connect.status.inProgress": "جارٍ التفويض…",
|
||||
"provider.connect.status.waiting": "في انتظار التفويض…",
|
||||
"provider.connect.status.failed": "فشل التفويض: {{error}}",
|
||||
"provider.connect.apiKey.description":
|
||||
"أدخل مفتاح API الخاص بـ {{provider}} لتوصيل حسابك واستخدام نماذج {{provider}} في OpenCode.",
|
||||
@@ -313,7 +313,7 @@ export const dict = {
|
||||
"common.goBack": "رجوع",
|
||||
"common.goForward": "التقدم",
|
||||
"common.loading": "جارٍ التحميل",
|
||||
"common.loading.ellipsis": "...",
|
||||
"common.loading.ellipsis": "…",
|
||||
"common.cancel": "إلغاء",
|
||||
"common.clear": "مسح",
|
||||
"common.connect": "اتصال",
|
||||
@@ -321,12 +321,12 @@ export const dict = {
|
||||
"common.continue": "متابعة",
|
||||
"common.submit": "إرسال",
|
||||
"common.save": "حفظ",
|
||||
"common.saving": "جارٍ الحفظ...",
|
||||
"common.saving": "جارٍ الحفظ…",
|
||||
"common.default": "افتراضي",
|
||||
"common.attachment": "مرفق",
|
||||
"prompt.placeholder.shell": "أدخل أمر shell... {{example}}",
|
||||
"prompt.placeholder.normal": 'اسأل أي شيء... "{{example}}"',
|
||||
"prompt.placeholder.simple": "اسأل أي شيء...",
|
||||
"prompt.placeholder.shell": "أدخل أمر shell… {{example}}",
|
||||
"prompt.placeholder.normal": 'اسأل أي شيء… "{{example}}"',
|
||||
"prompt.placeholder.simple": "اسأل أي شيء…",
|
||||
"prompt.placeholder.summarizeComments": "لخّص التعليقات…",
|
||||
"prompt.placeholder.summarizeComment": "لخّص التعليق…",
|
||||
"prompt.mode.shell": "Shell",
|
||||
@@ -346,7 +346,7 @@ export const dict = {
|
||||
"prompt.example.10": "توليد وثائق API",
|
||||
"prompt.example.11": "تحسين استعلامات قاعدة البيانات",
|
||||
"prompt.example.12": "إضافة التحقق من صحة الإدخال",
|
||||
"prompt.example.13": "إنشاء مكون جديد لـ...",
|
||||
"prompt.example.13": "إنشاء مكون جديد لـ…",
|
||||
"prompt.example.14": "كيف أقوم بنشر هذا المشروع؟",
|
||||
"prompt.example.15": "مراجعة الكود الخاص بي لأفضل الممارسات",
|
||||
"prompt.example.16": "إضافة معالجة الأخطاء لهذه الدالة",
|
||||
@@ -357,7 +357,7 @@ export const dict = {
|
||||
"prompt.example.21": "ساعدني في كتابة برنامج نصي للترحيل",
|
||||
"prompt.example.22": "تنفيذ التخزين المؤقت لنقطة النهاية هذه",
|
||||
"prompt.example.23": "إضافة ترقيم الصفحات إلى هذه القائمة",
|
||||
"prompt.example.24": "إنشاء أمر CLI لـ...",
|
||||
"prompt.example.24": "إنشاء أمر CLI لـ…",
|
||||
"prompt.example.25": "كيف تعمل متغيرات البيئة هنا؟",
|
||||
"prompt.popover.emptyResults": "لا توجد نتائج مطابقة",
|
||||
"prompt.popover.emptyCommands": "لا توجد أوامر مطابقة",
|
||||
@@ -416,7 +416,7 @@ export const dict = {
|
||||
"dialog.server.add.url": "عنوان URL للخادم",
|
||||
"dialog.server.add.placeholder": "http://localhost:4096",
|
||||
"dialog.server.add.error": "تعذر الاتصال بالخادم",
|
||||
"dialog.server.add.checking": "جارٍ التحقق...",
|
||||
"dialog.server.add.checking": "جارٍ التحقق…",
|
||||
"dialog.server.add.button": "إضافة خادم",
|
||||
"dialog.server.add.name": "اسم الخادم (اختياري)",
|
||||
"dialog.server.add.namePlaceholder": "Localhost",
|
||||
@@ -440,26 +440,26 @@ export const dict = {
|
||||
"wsl.server.label": "WSL",
|
||||
"wsl.server.menu.label": "خادم WSL",
|
||||
"wsl.server.retryStart": "إعادة محاولة التشغيل",
|
||||
"wsl.server.updating": "جارٍ التحديث...",
|
||||
"wsl.server.updating": "جارٍ التحديث…",
|
||||
"wsl.onboarding.step.distro": "اختر توزيعة",
|
||||
"wsl.onboarding.step.opencode": "OpenCode",
|
||||
"wsl.onboarding.checkingRuntime": "جارٍ التحقق من WSL...",
|
||||
"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.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": "جارٍ التحقق من OpenCode في {{distro}}...",
|
||||
"wsl.onboarding.updatingOpencode": "جارٍ تحديث OpenCode...",
|
||||
"wsl.onboarding.updatingOpencodeIn": "جارٍ تحديث OpenCode في {{distro}}...",
|
||||
"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.updateOpencode": "تحديث OpenCode",
|
||||
"wsl.onboarding.opencodeReadyIn": "OpenCode جاهز في {{distro}}.",
|
||||
@@ -468,11 +468,11 @@ export const dict = {
|
||||
"wsl.onboarding.installOpencode": "تثبيت OpenCode",
|
||||
"wsl.onboarding.chooseDistroFirst": "اختر توزيعة أولاً.",
|
||||
"wsl.onboarding.loadFailed": "فشل تحميل حالة WSL.",
|
||||
"wsl.onboarding.loading": "جارٍ التحميل...",
|
||||
"wsl.onboarding.loading": "جارٍ التحميل…",
|
||||
"wsl.onboarding.installedDistros": "التوزيعات المثبتة",
|
||||
"wsl.onboarding.checkAgain": "تحقق مجددًا",
|
||||
"wsl.onboarding.distroStatus.ready": "جاهزة",
|
||||
"wsl.onboarding.distroStatus.checking": "جارٍ التحقق...",
|
||||
"wsl.onboarding.distroStatus.checking": "جارٍ التحقق…",
|
||||
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode غير مثبت",
|
||||
"wsl.onboarding.distroStatus.missingTools": "bash و curl مفقودان",
|
||||
"wsl.onboarding.distroStatus.unsupported": "غير مدعومة · استخدم WSL 2",
|
||||
@@ -490,7 +490,7 @@ export const dict = {
|
||||
"wsl.onboarding.allDistrosAdded": "تمت إضافة جميع التوزيعات المثبتة بالفعل.",
|
||||
"wsl.onboarding.noDistros": "لم يتم اكتشاف أي توزيعات بعد.",
|
||||
"wsl.onboarding.install": "تثبيت",
|
||||
"wsl.onboarding.installing": "جارٍ التثبيت...",
|
||||
"wsl.onboarding.installing": "جارٍ التثبيت…",
|
||||
"wsl.onboarding.installDistro": "تثبيت توزيعة",
|
||||
"wsl.onboarding.searchDistros": "البحث عن توزيعات",
|
||||
"wsl.onboarding.wsl2Required": "يلزم WSL 2.",
|
||||
@@ -502,7 +502,7 @@ export const dict = {
|
||||
"wsl.onboarding.unknown": "غير معروف",
|
||||
"wsl.onboarding.desktopVersion": "سطح المكتب {{version}}",
|
||||
"wsl.onboarding.versionMismatch": "لا يتطابق الإصدار المثبت مع إصدار تطبيق سطح المكتب.",
|
||||
"wsl.onboarding.adding": "جارٍ الإضافة...",
|
||||
"wsl.onboarding.adding": "جارٍ الإضافة…",
|
||||
"dialog.project.edit.title": "تحرير المشروع",
|
||||
"dialog.project.edit.name": "الاسم",
|
||||
"dialog.project.edit.icon": "أيقونة",
|
||||
@@ -606,7 +606,7 @@ export const dict = {
|
||||
"error.page.action.report": "الإبلاغ عن الخطأ",
|
||||
"error.page.action.reported": "تم الإبلاغ عن الخطأ",
|
||||
"error.page.action.exportLogs": "تصدير السجلات",
|
||||
"error.page.action.checking": "جارٍ التحقق...",
|
||||
"error.page.action.checking": "جارٍ التحقق…",
|
||||
"error.page.action.checkUpdates": "التحقق من وجود تحديثات",
|
||||
"error.page.action.updateTo": "تحديث إلى {{version}}",
|
||||
"error.page.report.prefix": "يرجى الإبلاغ عن هذا الخطأ لفريق OpenCode",
|
||||
@@ -674,7 +674,7 @@ export const dict = {
|
||||
"session.review.filesChanged": "الملفات المتغيرة: {{count}}",
|
||||
"session.review.change.one": "تغيير",
|
||||
"session.review.change.other": "تغييرات",
|
||||
"session.review.loadingChanges": "جارٍ تحميل التغييرات...",
|
||||
"session.review.loadingChanges": "جارٍ تحميل التغييرات…",
|
||||
"session.review.empty": "لا توجد تغييرات في هذه الجلسة بعد",
|
||||
"session.review.noChanges": "لا توجد تغييرات",
|
||||
"session.review.noUncommittedChanges": "لا توجد تغييرات غير مُودَعة بعد",
|
||||
@@ -686,9 +686,9 @@ export const dict = {
|
||||
"session.files.empty": "لا توجد ملفات",
|
||||
"session.files.binaryContent": "ملف ثنائي (لا يمكن عرض المحتوى)",
|
||||
"session.messages.renderEarlier": "عرض الرسائل السابقة",
|
||||
"session.messages.loadingEarlier": "جارٍ تحميل الرسائل السابقة...",
|
||||
"session.messages.loadingEarlier": "جارٍ تحميل الرسائل السابقة…",
|
||||
"session.messages.loadEarlier": "تحميل الرسائل السابقة",
|
||||
"session.messages.loading": "جارٍ تحميل الرسائل...",
|
||||
"session.messages.loading": "جارٍ تحميل الرسائل…",
|
||||
"session.messages.jumpToLatest": "الانتقال إلى الأحدث",
|
||||
"session.context.addToContext": "إضافة {{selection}} إلى السياق",
|
||||
"session.todo.title": "المهام",
|
||||
@@ -732,8 +732,8 @@ export const dict = {
|
||||
"common.copied": "تم النسخ",
|
||||
"lsp.tooltip.none": "لا توجد خوادم LSP",
|
||||
"lsp.label.connected": "{{count}} LSP",
|
||||
"prompt.loading": "جارٍ تحميل الموجه...",
|
||||
"terminal.loading": "جارٍ تحميل المحطة الطرفية...",
|
||||
"prompt.loading": "جارٍ تحميل الموجه…",
|
||||
"terminal.loading": "جارٍ تحميل المحطة الطرفية…",
|
||||
"terminal.title": "محطة طرفية",
|
||||
"terminal.title.numbered": "محطة طرفية {{number}}",
|
||||
"terminal.close": "إغلاق المحطة الطرفية",
|
||||
@@ -845,9 +845,9 @@ export const dict = {
|
||||
"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.action.checking": "جارٍ التحقق…",
|
||||
"settings.updates.action.downloading": "جارٍ التنزيل…",
|
||||
"settings.updates.action.installing": "جارٍ التثبيت…",
|
||||
"settings.updates.toast.latest.title": "لديك أحدث إصدار",
|
||||
"settings.updates.toast.latest.description": "أنت تستخدم أحدث إصدار من OpenCode.",
|
||||
"sound.option.none": "بلا",
|
||||
@@ -991,7 +991,7 @@ export const dict = {
|
||||
"workspace.reset.success.title": "تمت إعادة تعيين مساحة العمل",
|
||||
"workspace.reset.success.description": "مساحة العمل تطابق الآن الفرع الافتراضي.",
|
||||
"workspace.error.stillPreparing": "مساحة العمل لا تزال قيد الإعداد",
|
||||
"workspace.status.checking": "التحقق من التغييرات غير المدمجة...",
|
||||
"workspace.status.checking": "التحقق من التغييرات غير المدمجة…",
|
||||
"workspace.status.error": "تعذر التحقق من حالة Git.",
|
||||
"workspace.status.clean": "لم يتم اكتشاف تغييرات غير مدمجة.",
|
||||
"workspace.status.dirty": "تم اكتشاف تغييرات غير مدمجة في مساحة العمل هذه.",
|
||||
@@ -1021,12 +1021,12 @@ export const dict = {
|
||||
"settings.providers.custom.description": "أضف موفرًا متوافقًا مع OpenAI باستخدام عنوان URL الأساسي.",
|
||||
|
||||
"app.server.unreachable": "تعذر الوصول إلى {{server}}",
|
||||
"app.server.retrying": "جارٍ إعادة المحاولة تلقائيًا...",
|
||||
"app.server.retrying": "جارٍ إعادة المحاولة تلقائيًا…",
|
||||
"app.server.otherServers": "خوادم أخرى",
|
||||
"dialog.server.add.passwordPlaceholder": "كلمة المرور",
|
||||
"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}} أسئلة",
|
||||
|
||||
@@ -6,13 +6,13 @@ export const dict = {
|
||||
"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.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.exportLogs": "Jurnalları ixrac et…",
|
||||
"desktop.menu.newSession": "Yeni sessiya",
|
||||
"desktop.menu.openProject": "Layihəni aç...",
|
||||
"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",
|
||||
@@ -215,8 +215,8 @@ export const dict = {
|
||||
"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.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.",
|
||||
@@ -310,7 +310,7 @@ export const dict = {
|
||||
"common.goBack": "Geri keç",
|
||||
"common.goForward": "İrəli keç",
|
||||
"common.loading": "Yüklənir",
|
||||
"common.loading.ellipsis": "...",
|
||||
"common.loading.ellipsis": "…",
|
||||
"common.cancel": "Ləğv et",
|
||||
"common.clear": "Təmizlə",
|
||||
"common.open": "Aç",
|
||||
@@ -319,12 +319,12 @@ export const dict = {
|
||||
"common.continue": "Davam et",
|
||||
"common.submit": "Göndər",
|
||||
"common.save": "Saxla",
|
||||
"common.saving": "Saxlanılır...",
|
||||
"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.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",
|
||||
@@ -344,7 +344,7 @@ export const dict = {
|
||||
"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.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",
|
||||
@@ -355,7 +355,7 @@ export const dict = {
|
||||
"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.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",
|
||||
@@ -407,7 +407,7 @@ export const dict = {
|
||||
"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.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.",
|
||||
@@ -417,7 +417,7 @@ export const dict = {
|
||||
"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.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",
|
||||
@@ -442,27 +442,27 @@ export const dict = {
|
||||
"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.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.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.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.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.",
|
||||
@@ -471,11 +471,11 @@ export const dict = {
|
||||
"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.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.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",
|
||||
@@ -494,7 +494,7 @@ export const dict = {
|
||||
"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.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.",
|
||||
@@ -506,7 +506,7 @@ export const dict = {
|
||||
"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...",
|
||||
"wsl.onboarding.adding": "Əlavə edilir…",
|
||||
"dialog.project.edit.title": "Layihəni redaktə et",
|
||||
"dialog.project.edit.name": "Ad",
|
||||
"dialog.project.edit.icon": "İkon",
|
||||
@@ -615,7 +615,7 @@ export const dict = {
|
||||
"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.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]",
|
||||
@@ -695,12 +695,12 @@ export const dict = {
|
||||
"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.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.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",
|
||||
@@ -712,9 +712,9 @@ export const dict = {
|
||||
"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.loadingEarlier": "Əvvəlki mesajlar yüklənir…",
|
||||
"session.messages.loadEarlier": "Əvvəlki mesajları yüklə",
|
||||
"session.messages.loading": "Mesajlar yüklənir...",
|
||||
"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",
|
||||
@@ -775,8 +775,8 @@ export const dict = {
|
||||
"common.copied": "Kopyalandı",
|
||||
"lsp.tooltip.none": "LSP server yoxdur",
|
||||
"lsp.label.connected": "{{count}} LSP",
|
||||
"prompt.loading": "Prompt yüklənir...",
|
||||
"terminal.loading": "Terminal yüklənir...",
|
||||
"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",
|
||||
@@ -941,9 +941,9 @@ export const dict = {
|
||||
"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.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",
|
||||
@@ -1090,7 +1090,7 @@ export const dict = {
|
||||
"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.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ı.",
|
||||
|
||||
@@ -6,13 +6,13 @@ export const dict = {
|
||||
"desktop.menu.go": "върви",
|
||||
"desktop.menu.window": "прозорец",
|
||||
"desktop.menu.help": "Помощ",
|
||||
"desktop.menu.checkForUpdates": "Проверете за актуализации...",
|
||||
"desktop.menu.checkForUpdates": "Проверете за актуализации…",
|
||||
"desktop.menu.settings": "Настройки",
|
||||
"desktop.menu.reloadWebview": "Презареди Webview",
|
||||
"desktop.menu.restart": "Рестартирайте",
|
||||
"desktop.menu.exportLogs": "Експортиране на регистрационни файлове...",
|
||||
"desktop.menu.exportLogs": "Експортиране на регистрационни файлове…",
|
||||
"desktop.menu.newSession": "Нова сесия",
|
||||
"desktop.menu.openProject": "Отворете проекта...",
|
||||
"desktop.menu.openProject": "Отворете проекта…",
|
||||
"desktop.menu.newWindow": "Нов прозорец",
|
||||
"desktop.menu.closeWindow": "Затваряне на прозореца",
|
||||
"desktop.menu.undo": "Отмяна",
|
||||
@@ -215,8 +215,8 @@ export const dict = {
|
||||
"provider.connect.method.apiKey": "API ключ",
|
||||
"provider.connect.method.browser": "Браузър",
|
||||
"provider.connect.method.headless": "Без глава",
|
||||
"provider.connect.status.inProgress": "В ход е оторизация...",
|
||||
"provider.connect.status.waiting": "Чака се оторизация...",
|
||||
"provider.connect.status.inProgress": "В ход е оторизация…",
|
||||
"provider.connect.status.waiting": "Чака се оторизация…",
|
||||
"provider.connect.status.failed": "Упълномощаването е неуспешно: {{error}}",
|
||||
"provider.connect.apiKey.description":
|
||||
"Въведете своя {{provider}} API ключ, за да свържете акаунта си и да използвате {{provider}} модели в OpenCode.",
|
||||
@@ -310,7 +310,7 @@ export const dict = {
|
||||
"common.goBack": "Навигирайте назад",
|
||||
"common.goForward": "Навигирайте напред",
|
||||
"common.loading": "Зарежда се",
|
||||
"common.loading.ellipsis": "...",
|
||||
"common.loading.ellipsis": "…",
|
||||
"common.cancel": "Отказ",
|
||||
"common.clear": "ясно",
|
||||
"common.open": "Отворете",
|
||||
@@ -319,14 +319,14 @@ export const dict = {
|
||||
"common.continue": "Продължи",
|
||||
"common.submit": "Изпратете",
|
||||
"common.save": "Запазване",
|
||||
"common.saving": "Запазва се...",
|
||||
"common.saving": "Запазва се…",
|
||||
"common.default": "По подразбиране",
|
||||
"common.attachment": "прикачен файл",
|
||||
"prompt.placeholder.shell": "Въведете команда shell... {{example}}",
|
||||
"prompt.placeholder.normal": 'Попитайте каквото и да е... "{{example}}"',
|
||||
"prompt.placeholder.simple": "Питайте нещо...",
|
||||
"prompt.placeholder.summarizeComments": "Обобщете коментарите...",
|
||||
"prompt.placeholder.summarizeComment": "Обобщение на коментара...",
|
||||
"prompt.placeholder.shell": "Въведете команда 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": "esc за изход",
|
||||
@@ -344,7 +344,7 @@ export const dict = {
|
||||
"prompt.example.10": "Генерирайте API документация",
|
||||
"prompt.example.11": "Оптимизирайте заявките към базата данни",
|
||||
"prompt.example.12": "Добавете проверка на входа",
|
||||
"prompt.example.13": "Създайте нов компонент за...",
|
||||
"prompt.example.13": "Създайте нов компонент за…",
|
||||
"prompt.example.14": "Как да разположа този проект?",
|
||||
"prompt.example.15": "Прегледайте моя код за най-добри практики",
|
||||
"prompt.example.16": "Добавете обработка на грешки към тази функция",
|
||||
@@ -355,7 +355,7 @@ export const dict = {
|
||||
"prompt.example.21": "Помогнете ми да напиша скрипт за миграция",
|
||||
"prompt.example.22": "Приложете кеширане за тази крайна точка",
|
||||
"prompt.example.23": "Добавете пагинация към този списък",
|
||||
"prompt.example.24": "Създайте команда CLI за...",
|
||||
"prompt.example.24": "Създайте команда CLI за…",
|
||||
"prompt.example.25": "Как работят променливите на средата тук?",
|
||||
"prompt.popover.emptyResults": "Няма съответстващи резултати",
|
||||
"prompt.popover.emptyCommands": "Няма съответстващи команди",
|
||||
@@ -407,7 +407,7 @@ export const dict = {
|
||||
"dialog.directory.parent": "Родител",
|
||||
"dialog.directory.readError": "Тази папка не може да се прочете",
|
||||
"app.server.unreachable": "Не може да се достигне до {{server}}",
|
||||
"app.server.retrying": "Опитва се автоматично...",
|
||||
"app.server.retrying": "Опитва се автоматично…",
|
||||
"app.server.otherServers": "Други сървъри",
|
||||
"dialog.server.title": "Сървъри",
|
||||
"dialog.server.description": "Превключете към кой OpenCode сървър се свързва това приложение.",
|
||||
@@ -417,7 +417,7 @@ export const dict = {
|
||||
"dialog.server.add.url": "Адрес на сървъра",
|
||||
"dialog.server.add.placeholder": "http://localhost:4096",
|
||||
"dialog.server.add.error": "Не може да се свърже със сървъра",
|
||||
"dialog.server.add.checking": "Проверка...",
|
||||
"dialog.server.add.checking": "Проверка…",
|
||||
"dialog.server.add.button": "Добавете сървър",
|
||||
"dialog.server.add.name": "Име на сървъра (по избор)",
|
||||
"dialog.server.add.namePlaceholder": "Localhost",
|
||||
@@ -442,26 +442,26 @@ export const dict = {
|
||||
"wsl.server.label": "WSL",
|
||||
"wsl.server.menu.label": "WSL сървър",
|
||||
"wsl.server.retryStart": "Повторен старт",
|
||||
"wsl.server.updating": "Актуализиране...",
|
||||
"wsl.server.updating": "Актуализиране…",
|
||||
"wsl.onboarding.step.distro": "Изберете дистрибуция",
|
||||
"wsl.onboarding.step.opencode": "OpenCode",
|
||||
"wsl.onboarding.checkingRuntime": "Проверява се WSL...",
|
||||
"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.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": "Проверява се OpenCode в {{distro}}...",
|
||||
"wsl.onboarding.updatingOpencode": "Актуализиране на OpenCode...",
|
||||
"wsl.onboarding.updatingOpencodeIn": "Актуализиране на OpenCode в {{distro}}...",
|
||||
"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.updateOpencode": "Актуализация OpenCode",
|
||||
"wsl.onboarding.opencodeReadyIn": "OpenCode е готов в {{distro}}.",
|
||||
@@ -470,11 +470,11 @@ export const dict = {
|
||||
"wsl.onboarding.installOpencode": "Инсталирайте OpenCode",
|
||||
"wsl.onboarding.chooseDistroFirst": "Първо изберете дистрибуция.",
|
||||
"wsl.onboarding.loadFailed": "Неуспешно зареждане на състояние WSL.",
|
||||
"wsl.onboarding.loading": "Зареждане...",
|
||||
"wsl.onboarding.loading": "Зареждане…",
|
||||
"wsl.onboarding.installedDistros": "Инсталирани дистрибуции",
|
||||
"wsl.onboarding.checkAgain": "Проверете отново",
|
||||
"wsl.onboarding.distroStatus.ready": "Готови",
|
||||
"wsl.onboarding.distroStatus.checking": "Проверка...",
|
||||
"wsl.onboarding.distroStatus.checking": "Проверка…",
|
||||
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode не е инсталиран",
|
||||
"wsl.onboarding.distroStatus.missingTools": "Липсват bash, curl",
|
||||
"wsl.onboarding.distroStatus.unsupported": "Не се поддържа · Използвайте WSL 2",
|
||||
@@ -493,7 +493,7 @@ export const dict = {
|
||||
"wsl.onboarding.allDistrosAdded": "Всички инсталирани дистрибуции вече са добавени.",
|
||||
"wsl.onboarding.noDistros": "Все още няма открити дистрибуции.",
|
||||
"wsl.onboarding.install": "Инсталирайте",
|
||||
"wsl.onboarding.installing": "Инсталира се...",
|
||||
"wsl.onboarding.installing": "Инсталира се…",
|
||||
"wsl.onboarding.installDistro": "Инсталирайте дистрибуция",
|
||||
"wsl.onboarding.searchDistros": "Търсете дистрибуции",
|
||||
"wsl.onboarding.wsl2Required": "WSL 2 е задължително.",
|
||||
@@ -505,7 +505,7 @@ export const dict = {
|
||||
"wsl.onboarding.unknown": "неизвестен",
|
||||
"wsl.onboarding.desktopVersion": "работен плот {{version}}",
|
||||
"wsl.onboarding.versionMismatch": "Инсталираната версия не съответства на версията на настолното приложение.",
|
||||
"wsl.onboarding.adding": "Добавяне...",
|
||||
"wsl.onboarding.adding": "Добавяне…",
|
||||
"dialog.project.edit.title": "Редактиране на проекта",
|
||||
"dialog.project.edit.name": "Име",
|
||||
"dialog.project.edit.icon": "Икона",
|
||||
@@ -612,7 +612,7 @@ export const dict = {
|
||||
"error.page.action.report": "Докладване за грешка",
|
||||
"error.page.action.reported": "Съобщава се за грешка",
|
||||
"error.page.action.exportLogs": "Експортиране на регистрационни файлове",
|
||||
"error.page.action.checking": "Проверка...",
|
||||
"error.page.action.checking": "Проверка…",
|
||||
"error.page.action.checkUpdates": "Проверете за актуализации",
|
||||
"error.page.action.updateTo": "Актуализиране до {{version}}",
|
||||
"error.page.circular": "[Кръгло]",
|
||||
@@ -691,12 +691,12 @@ export const dict = {
|
||||
"session.review.filesChanged": "Променени файлове {{count}}",
|
||||
"session.review.change.one": "промяна",
|
||||
"session.review.change.other": "Промени",
|
||||
"session.review.loadingChanges": "Промените се зареждат...",
|
||||
"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.actionLoading": "Създаване на Git хранилище…",
|
||||
"session.review.noVcs.createGit.action": "Създайте Git хранилище",
|
||||
"session.review.noSnapshot":
|
||||
"Проследяването на моментна снимка е деактивирано в конфигурацията, така че промените в сесията не са налични",
|
||||
@@ -708,9 +708,9 @@ export const dict = {
|
||||
"session.files.empty": "Няма файлове",
|
||||
"session.files.binaryContent": "Двоичен файл (съдържанието не може да се покаже)",
|
||||
"session.messages.renderEarlier": "Изобразяване на по-ранни съобщения",
|
||||
"session.messages.loadingEarlier": "Зареждат се предишни съобщения...",
|
||||
"session.messages.loadingEarlier": "Зареждат се предишни съобщения…",
|
||||
"session.messages.loadEarlier": "Зареди по-ранни съобщения",
|
||||
"session.messages.loading": "Съобщенията се зареждат...",
|
||||
"session.messages.loading": "Съобщенията се зареждат…",
|
||||
"session.messages.jumpToLatest": "Преминете към най-новото",
|
||||
"session.context.addToContext": "Добавете {{selection}} към контекста",
|
||||
"session.todo.title": "Задачи",
|
||||
@@ -771,8 +771,8 @@ export const dict = {
|
||||
"common.copied": "Копирано",
|
||||
"lsp.tooltip.none": "Няма LSP сървъри",
|
||||
"lsp.label.connected": "{{count}} LSP",
|
||||
"prompt.loading": "Подканата се зарежда...",
|
||||
"terminal.loading": "Терминалът се зарежда...",
|
||||
"prompt.loading": "Подканата се зарежда…",
|
||||
"terminal.loading": "Терминалът се зарежда…",
|
||||
"terminal.title": "Терминал",
|
||||
"terminal.title.numbered": "Терминал {{number}}",
|
||||
"terminal.close": "Затворете терминала",
|
||||
@@ -939,9 +939,9 @@ export const dict = {
|
||||
"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.action.checking": "Проверка…",
|
||||
"settings.updates.action.downloading": "Изтегля се…",
|
||||
"settings.updates.action.installing": "Инсталира се…",
|
||||
"settings.updates.toast.latest.title": "Вие сте в крак с времето",
|
||||
"settings.updates.toast.latest.description": "Вие използвате най-новата версия на OpenCode.",
|
||||
"sound.option.none": "Няма",
|
||||
@@ -1091,7 +1091,7 @@ export const dict = {
|
||||
"workspace.reset.success.title": "Нулиране на работното пространство",
|
||||
"workspace.reset.success.description": "Работното пространство вече съответства на клона по подразбиране.",
|
||||
"workspace.error.stillPreparing": "Работното пространство все още се подготвя",
|
||||
"workspace.status.checking": "Проверка за необединени промени...",
|
||||
"workspace.status.checking": "Проверка за необединени промени…",
|
||||
"workspace.status.error": "Не може да се провери състоянието на git.",
|
||||
"workspace.status.clean": "Не са открити необединени промени.",
|
||||
"workspace.status.dirty": "Открити са необединени промени в това работно пространство.",
|
||||
|
||||
@@ -6,13 +6,13 @@ export const dict: Record<string, string> = {
|
||||
"desktop.menu.go": "যাও",
|
||||
"desktop.menu.window": "জানালা",
|
||||
"desktop.menu.help": "সাহায্য",
|
||||
"desktop.menu.checkForUpdates": "আপডেটের জন্য চেক করুন...",
|
||||
"desktop.menu.checkForUpdates": "আপডেটের জন্য চেক করুন…",
|
||||
"desktop.menu.settings": "সেটিংস",
|
||||
"desktop.menu.reloadWebview": "Webview পুনরায় লোড করুন",
|
||||
"desktop.menu.restart": "রিস্টার্ট করুন",
|
||||
"desktop.menu.exportLogs": "লগ রপ্তানি করুন...",
|
||||
"desktop.menu.exportLogs": "লগ রপ্তানি করুন…",
|
||||
"desktop.menu.newSession": "নতুন সেশন",
|
||||
"desktop.menu.openProject": "প্রকল্প খুলুন...",
|
||||
"desktop.menu.openProject": "প্রকল্প খুলুন…",
|
||||
"desktop.menu.newWindow": "নতুন উইন্ডো",
|
||||
"desktop.menu.closeWindow": "উইন্ডো বন্ধ করুন",
|
||||
"desktop.menu.undo": "পূর্বাবস্থায় ফেরান",
|
||||
@@ -213,8 +213,8 @@ export const dict: Record<string, string> = {
|
||||
"provider.connect.method.apiKey": "API কী",
|
||||
"provider.connect.method.browser": "ব্রাউজার",
|
||||
"provider.connect.method.headless": "মাথাবিহীন",
|
||||
"provider.connect.status.inProgress": "অনুমোদন চলছে...",
|
||||
"provider.connect.status.waiting": "অনুমোদনের জন্য অপেক্ষা করা হচ্ছে...",
|
||||
"provider.connect.status.inProgress": "অনুমোদন চলছে…",
|
||||
"provider.connect.status.waiting": "অনুমোদনের জন্য অপেক্ষা করা হচ্ছে…",
|
||||
"provider.connect.status.failed": "অনুমোদন ব্যর্থ হয়েছে: {{error}}",
|
||||
"provider.connect.apiKey.description":
|
||||
"আপনার অ্যাকাউন্ট সংযোগ করতে আপনার {{provider}} API কী লিখুন এবং OpenCode-এ {{provider}} মডেলগুলি ব্যবহার করুন৷",
|
||||
@@ -307,7 +307,7 @@ export const dict: Record<string, string> = {
|
||||
"common.goBack": "ফিরে নেভিগেট করুন",
|
||||
"common.goForward": "সামনে নেভিগেট করুন",
|
||||
"common.loading": "লোড হচ্ছে",
|
||||
"common.loading.ellipsis": "...",
|
||||
"common.loading.ellipsis": "…",
|
||||
"common.cancel": "বাতিল করুন",
|
||||
"common.clear": "পরিষ্কার",
|
||||
"common.open": "খোলা",
|
||||
@@ -316,14 +316,14 @@ export const dict: Record<string, string> = {
|
||||
"common.continue": "চালিয়ে যান",
|
||||
"common.submit": "জমা দিন",
|
||||
"common.save": "সংরক্ষণ করুন",
|
||||
"common.saving": "সংরক্ষণ করা হচ্ছে...",
|
||||
"common.saving": "সংরক্ষণ করা হচ্ছে…",
|
||||
"common.default": "ডিফল্ট",
|
||||
"common.attachment": "সংযুক্তি",
|
||||
"prompt.placeholder.shell": "শেল কমান্ড লিখুন... {{example}}",
|
||||
"prompt.placeholder.normal": 'কিছু জিজ্ঞাসা করুন... "{{example}}"',
|
||||
"prompt.placeholder.simple": "কিছু জিজ্ঞাসা করুন...",
|
||||
"prompt.placeholder.summarizeComments": "মন্তব্য সংক্ষিপ্ত করুন...",
|
||||
"prompt.placeholder.summarizeComment": "মন্তব্য সংক্ষিপ্ত করুন...",
|
||||
"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",
|
||||
@@ -341,7 +341,7 @@ export const dict: Record<string, string> = {
|
||||
"prompt.example.10": "API ডকুমেন্টেশন তৈরি করুন",
|
||||
"prompt.example.11": "ডাটাবেস কোয়েরি অপ্টিমাইজ করুন",
|
||||
"prompt.example.12": "ইনপুট বৈধতা যোগ করুন",
|
||||
"prompt.example.13": "এর জন্য একটি নতুন উপাদান তৈরি করুন...",
|
||||
"prompt.example.13": "এর জন্য একটি নতুন উপাদান তৈরি করুন…",
|
||||
"prompt.example.14": "আমি কিভাবে এই প্রকল্প স্থাপন করব?",
|
||||
"prompt.example.15": "সেরা অনুশীলনের জন্য আমার কোড পর্যালোচনা করুন",
|
||||
"prompt.example.16": "এই ফাংশনে ত্রুটি হ্যান্ডলিং যোগ করুন",
|
||||
@@ -352,7 +352,7 @@ export const dict: Record<string, string> = {
|
||||
"prompt.example.21": "আমাকে একটি মাইগ্রেশন স্ক্রিপ্ট লিখতে সাহায্য করুন",
|
||||
"prompt.example.22": "এই শেষ পয়েন্টের জন্য ক্যাশিং প্রয়োগ করুন",
|
||||
"prompt.example.23": "এই তালিকায় পৃষ্ঠা সংখ্যা যোগ করুন",
|
||||
"prompt.example.24": "এর জন্য একটি CLI কমান্ড তৈরি করুন...",
|
||||
"prompt.example.24": "এর জন্য একটি CLI কমান্ড তৈরি করুন…",
|
||||
"prompt.example.25": "পরিবেশ ভেরিয়েবল এখানে কিভাবে কাজ করে?",
|
||||
"prompt.popover.emptyResults": "কোন মিল ফলাফল",
|
||||
"prompt.popover.emptyCommands": "কোনো মিলিত কমান্ড নেই",
|
||||
@@ -404,7 +404,7 @@ export const dict: Record<string, string> = {
|
||||
"dialog.directory.parent": "অভিভাবক",
|
||||
"dialog.directory.readError": "এই ফোল্ডারটি পড়তে অক্ষম৷",
|
||||
"app.server.unreachable": "{{server}} এ পৌঁছানো যায়নি",
|
||||
"app.server.retrying": "স্বয়ংক্রিয়ভাবে পুনরায় চেষ্টা করা হচ্ছে...",
|
||||
"app.server.retrying": "স্বয়ংক্রিয়ভাবে পুনরায় চেষ্টা করা হচ্ছে…",
|
||||
"app.server.otherServers": "অন্যান্য সার্ভার",
|
||||
"dialog.server.title": "সার্ভার",
|
||||
"dialog.server.description": "এই অ্যাপটি কোন OpenCode সার্ভারের সাথে সংযোগ করে তা পরিবর্তন করুন।",
|
||||
@@ -414,7 +414,7 @@ export const dict: Record<string, string> = {
|
||||
"dialog.server.add.url": "সার্ভার ঠিকানা",
|
||||
"dialog.server.add.placeholder": "http://localhost:4096",
|
||||
"dialog.server.add.error": "সার্ভারের সাথে সংযোগ করা যায়নি",
|
||||
"dialog.server.add.checking": "পরীক্ষা করা হচ্ছে...",
|
||||
"dialog.server.add.checking": "পরীক্ষা করা হচ্ছে…",
|
||||
"dialog.server.add.button": "সার্ভার যোগ করুন",
|
||||
"dialog.server.add.name": "সার্ভারের নাম (ঐচ্ছিক)",
|
||||
"dialog.server.add.namePlaceholder": "Localhost",
|
||||
@@ -439,26 +439,26 @@ export const dict: Record<string, string> = {
|
||||
"wsl.server.label": "WSL",
|
||||
"wsl.server.menu.label": "WSL সার্ভার",
|
||||
"wsl.server.retryStart": "আবার শুরু করার চেষ্টা করুন",
|
||||
"wsl.server.updating": "আপডেট হচ্ছে...",
|
||||
"wsl.server.updating": "আপডেট হচ্ছে…",
|
||||
"wsl.onboarding.step.distro": "ডিস্ট্রো নির্বাচন করুন",
|
||||
"wsl.onboarding.step.opencode": "OpenCode",
|
||||
"wsl.onboarding.checkingRuntime": "WSL পরীক্ষা করা হচ্ছে...",
|
||||
"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.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.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}}-এ প্রস্তুত।",
|
||||
@@ -467,11 +467,11 @@ export const dict: Record<string, string> = {
|
||||
"wsl.onboarding.installOpencode": "OpenCode ইনস্টল করুন",
|
||||
"wsl.onboarding.chooseDistroFirst": "প্রথমে একটি ডিস্ট্রো চয়ন করুন।",
|
||||
"wsl.onboarding.loadFailed": "WSL অবস্থা লোড করতে ব্যর্থ।",
|
||||
"wsl.onboarding.loading": "লোড হচ্ছে...",
|
||||
"wsl.onboarding.loading": "লোড হচ্ছে…",
|
||||
"wsl.onboarding.installedDistros": "ডিস্ট্রো ইনস্টল করা হয়েছে",
|
||||
"wsl.onboarding.checkAgain": "আবার চেক করুন",
|
||||
"wsl.onboarding.distroStatus.ready": "প্রস্তুত",
|
||||
"wsl.onboarding.distroStatus.checking": "পরীক্ষা করা হচ্ছে...",
|
||||
"wsl.onboarding.distroStatus.checking": "পরীক্ষা করা হচ্ছে…",
|
||||
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode ইনস্টল করা নেই",
|
||||
"wsl.onboarding.distroStatus.missingTools": "অনুপস্থিত বাশ, কার্ল",
|
||||
"wsl.onboarding.distroStatus.unsupported": "অসমর্থিত · WSL 2 ব্যবহার করুন",
|
||||
@@ -490,7 +490,7 @@ export const dict: Record<string, string> = {
|
||||
"wsl.onboarding.allDistrosAdded": "সমস্ত ইনস্টল করা ডিস্ট্রো ইতিমধ্যেই যোগ করা হয়েছে।",
|
||||
"wsl.onboarding.noDistros": "কোন ডিস্ট্রো এখনও সনাক্ত করা হয়নি.",
|
||||
"wsl.onboarding.install": "ইনস্টল করুন",
|
||||
"wsl.onboarding.installing": "ইনস্টল করা হচ্ছে...",
|
||||
"wsl.onboarding.installing": "ইনস্টল করা হচ্ছে…",
|
||||
"wsl.onboarding.installDistro": "ডিস্ট্রো ইনস্টল করুন",
|
||||
"wsl.onboarding.searchDistros": "ডিস্ট্রো অনুসন্ধান করুন",
|
||||
"wsl.onboarding.wsl2Required": "WSL 2 প্রয়োজন।",
|
||||
@@ -502,7 +502,7 @@ export const dict: Record<string, string> = {
|
||||
"wsl.onboarding.unknown": "অজানা",
|
||||
"wsl.onboarding.desktopVersion": "ডেস্কটপ {{version}}",
|
||||
"wsl.onboarding.versionMismatch": "ইনস্টল করা সংস্করণ ডেস্কটপ অ্যাপ সংস্করণের সাথে মেলে না।",
|
||||
"wsl.onboarding.adding": "যোগ করা হচ্ছে...",
|
||||
"wsl.onboarding.adding": "যোগ করা হচ্ছে…",
|
||||
"dialog.project.edit.title": "প্রকল্প সম্পাদনা করুন",
|
||||
"dialog.project.edit.name": "নাম",
|
||||
"dialog.project.edit.icon": "আইকন",
|
||||
@@ -607,7 +607,7 @@ export const dict: Record<string, string> = {
|
||||
"error.page.action.report": "রিপোর্ট ত্রুটি",
|
||||
"error.page.action.reported": "ত্রুটি রিপোর্ট করা হয়েছে",
|
||||
"error.page.action.exportLogs": "রপ্তানি লগ",
|
||||
"error.page.action.checking": "পরীক্ষা করা হচ্ছে...",
|
||||
"error.page.action.checking": "পরীক্ষা করা হচ্ছে…",
|
||||
"error.page.action.checkUpdates": "আপডেটের জন্য চেক করুন",
|
||||
"error.page.action.updateTo": "{{version}}-এ আপডেট করুন",
|
||||
"error.page.circular": "[সার্কুলার]",
|
||||
@@ -685,13 +685,13 @@ export const dict: Record<string, string> = {
|
||||
"session.review.filesChanged": "ফাইলগুলি পরিবর্তন করা হয়েছে {{count}}৷",
|
||||
"session.review.change.one": "পরিবর্তন",
|
||||
"session.review.change.other": "পরিবর্তন",
|
||||
"session.review.loadingChanges": "পরিবর্তনগুলি লোড হচ্ছে...",
|
||||
"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.actionLoading": "Git সংগ্রহস্থল তৈরি করা হচ্ছে…",
|
||||
"session.review.noVcs.createGit.action": "Git সংগ্রহস্থল তৈরি করুন",
|
||||
"session.review.noSnapshot": "কনফিগারেশনে স্ন্যাপশট ট্র্যাকিং অক্ষম করা হয়েছে, তাই সেশন পরিবর্তনগুলি অনুপলব্ধ৷",
|
||||
"session.review.noChanges": "কোনো পরিবর্তন নেই",
|
||||
@@ -702,9 +702,9 @@ export const dict: Record<string, string> = {
|
||||
"session.files.empty": "কোনো ফাইল নেই",
|
||||
"session.files.binaryContent": "বাইনারি ফাইল (সামগ্রী প্রদর্শন করা যাবে না)",
|
||||
"session.messages.renderEarlier": "আগের বার্তা রেন্ডার করুন",
|
||||
"session.messages.loadingEarlier": "আগের বার্তা লোড হচ্ছে...",
|
||||
"session.messages.loadingEarlier": "আগের বার্তা লোড হচ্ছে…",
|
||||
"session.messages.loadEarlier": "আগের বার্তা লোড করুন",
|
||||
"session.messages.loading": "বার্তা লোড হচ্ছে...",
|
||||
"session.messages.loading": "বার্তা লোড হচ্ছে…",
|
||||
"session.messages.jumpToLatest": "সর্বশেষে ঝাঁপ দাও",
|
||||
"session.context.addToContext": "প্রসঙ্গে {{selection}} যোগ করুন",
|
||||
"session.todo.title": "টোডোস",
|
||||
@@ -765,8 +765,8 @@ export const dict: Record<string, string> = {
|
||||
"common.copied": "কপি করা হয়েছে",
|
||||
"lsp.tooltip.none": "কোনো LSP সার্ভার নেই",
|
||||
"lsp.label.connected": "{{count}} LSP",
|
||||
"prompt.loading": "প্রম্পট লোড হচ্ছে...",
|
||||
"terminal.loading": "টার্মিনাল লোড হচ্ছে...",
|
||||
"prompt.loading": "প্রম্পট লোড হচ্ছে…",
|
||||
"terminal.loading": "টার্মিনাল লোড হচ্ছে…",
|
||||
"terminal.title": "টার্মিনাল",
|
||||
"terminal.title.numbered": "টার্মিনাল {{number}}",
|
||||
"terminal.close": "টার্মিনাল বন্ধ করুন",
|
||||
@@ -925,9 +925,9 @@ export const dict: Record<string, string> = {
|
||||
"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.action.checking": "পরীক্ষা করা হচ্ছে…",
|
||||
"settings.updates.action.downloading": "ডাউনলোড হচ্ছে…",
|
||||
"settings.updates.action.installing": "ইনস্টল করা হচ্ছে…",
|
||||
"settings.updates.toast.latest.title": "আপনি আপ টু ডেট",
|
||||
"settings.updates.toast.latest.description": "আপনি OpenCode এর সর্বশেষ সংস্করণ চালাচ্ছেন।",
|
||||
"sound.option.none": "কোনোটিই নয়",
|
||||
@@ -1074,7 +1074,7 @@ export const dict: Record<string, string> = {
|
||||
"workspace.reset.success.title": "ওয়ার্কস্পেস রিসেট",
|
||||
"workspace.reset.success.description": "ওয়ার্কস্পেস এখন ডিফল্ট শাখার সাথে মেলে।",
|
||||
"workspace.error.stillPreparing": "ওয়ার্কস্পেস এখনও প্রস্তুত করা হয়",
|
||||
"workspace.status.checking": "একত্রিত না হওয়া পরিবর্তনগুলি পরীক্ষা করা হচ্ছে...",
|
||||
"workspace.status.checking": "একত্রিত না হওয়া পরিবর্তনগুলি পরীক্ষা করা হচ্ছে…",
|
||||
"workspace.status.error": "গিট স্ট্যাটাস যাচাই করতে অক্ষম।",
|
||||
"workspace.status.clean": "কোনো একীভূত পরিবর্তন সনাক্ত করা যায়নি.",
|
||||
"workspace.status.dirty": "এই ওয়ার্কস্পেসে একত্রিত না হওয়া পরিবর্তন শনাক্ত করা হয়েছে।",
|
||||
|
||||
@@ -6,13 +6,13 @@ export const dict = {
|
||||
"desktop.menu.go": "Ir",
|
||||
"desktop.menu.window": "Janela",
|
||||
"desktop.menu.help": "Ajuda",
|
||||
"desktop.menu.checkForUpdates": "Verificar atualizações...",
|
||||
"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.exportLogs": "Exportar logs…",
|
||||
"desktop.menu.newSession": "Nova sessão",
|
||||
"desktop.menu.openProject": "Abrir projeto...",
|
||||
"desktop.menu.openProject": "Abrir projeto…",
|
||||
"desktop.menu.newWindow": "Nova janela",
|
||||
"desktop.menu.closeWindow": "Fechar janela",
|
||||
"desktop.menu.undo": "Desfazer",
|
||||
@@ -221,8 +221,8 @@ export const dict = {
|
||||
"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.inProgress": "Autorização em andamento…",
|
||||
"provider.connect.status.waiting": "Aguardando autorização…",
|
||||
"provider.connect.status.failed": "Autorização falhou: {{error}}",
|
||||
"provider.connect.apiKey.description":
|
||||
"Digite sua chave de API do {{provider}} para conectar sua conta e usar modelos do {{provider}} no OpenCode.",
|
||||
@@ -315,7 +315,7 @@ export const dict = {
|
||||
"common.goBack": "Voltar",
|
||||
"common.goForward": "Avançar",
|
||||
"common.loading": "Carregando",
|
||||
"common.loading.ellipsis": "...",
|
||||
"common.loading.ellipsis": "…",
|
||||
"common.cancel": "Cancelar",
|
||||
"common.clear": "Limpar",
|
||||
"common.connect": "Conectar",
|
||||
@@ -323,12 +323,12 @@ export const dict = {
|
||||
"common.continue": "Continuar",
|
||||
"common.submit": "Enviar",
|
||||
"common.save": "Salvar",
|
||||
"common.saving": "Salvando...",
|
||||
"common.saving": "Salvando…",
|
||||
"common.default": "Padrão",
|
||||
"common.attachment": "anexo",
|
||||
"prompt.placeholder.shell": "Digite comando do shell... {{example}}",
|
||||
"prompt.placeholder.normal": 'Pergunte qualquer coisa... "{{example}}"',
|
||||
"prompt.placeholder.simple": "Pergunte qualquer coisa...",
|
||||
"prompt.placeholder.shell": "Digite comando do shell… {{example}}",
|
||||
"prompt.placeholder.normal": 'Pergunte qualquer coisa… "{{example}}"',
|
||||
"prompt.placeholder.simple": "Pergunte qualquer coisa…",
|
||||
"prompt.placeholder.summarizeComments": "Resumir comentários…",
|
||||
"prompt.placeholder.summarizeComment": "Resumir comentário…",
|
||||
"prompt.mode.shell": "Shell",
|
||||
@@ -348,7 +348,7 @@ export const dict = {
|
||||
"prompt.example.10": "Gerar documentação da API",
|
||||
"prompt.example.11": "Otimizar consultas ao banco de dados",
|
||||
"prompt.example.12": "Adicionar validação de entrada",
|
||||
"prompt.example.13": "Criar um novo componente para...",
|
||||
"prompt.example.13": "Criar um novo componente para…",
|
||||
"prompt.example.14": "Como faço o deploy deste projeto?",
|
||||
"prompt.example.15": "Revisar meu código para boas práticas",
|
||||
"prompt.example.16": "Adicionar tratamento de erros a esta função",
|
||||
@@ -359,7 +359,7 @@ export const dict = {
|
||||
"prompt.example.21": "Me ajude a escrever um script de migração",
|
||||
"prompt.example.22": "Implementar cache para este endpoint",
|
||||
"prompt.example.23": "Adicionar paginação a esta lista",
|
||||
"prompt.example.24": "Criar um comando CLI para...",
|
||||
"prompt.example.24": "Criar um comando CLI para…",
|
||||
"prompt.example.25": "Como funcionam as variáveis de ambiente aqui?",
|
||||
"prompt.popover.emptyResults": "Nenhum resultado correspondente",
|
||||
"prompt.popover.emptyCommands": "Nenhum comando correspondente",
|
||||
@@ -418,7 +418,7 @@ export const dict = {
|
||||
"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.checking": "Verificando…",
|
||||
"dialog.server.add.button": "Adicionar servidor",
|
||||
"dialog.server.add.name": "Nome do servidor (opcional)",
|
||||
"dialog.server.add.namePlaceholder": "Localhost",
|
||||
@@ -442,26 +442,26 @@ export const dict = {
|
||||
"wsl.server.label": "WSL",
|
||||
"wsl.server.menu.label": "Servidor WSL",
|
||||
"wsl.server.retryStart": "Tentar iniciar novamente",
|
||||
"wsl.server.updating": "Atualizando...",
|
||||
"wsl.server.updating": "Atualizando…",
|
||||
"wsl.onboarding.step.distro": "Escolher distribuição",
|
||||
"wsl.onboarding.step.opencode": "OpenCode",
|
||||
"wsl.onboarding.checkingRuntime": "Verificando o WSL...",
|
||||
"wsl.onboarding.checkingRuntime": "Verificando o WSL…",
|
||||
"wsl.onboarding.restartRequired": "O Windows precisa ser reiniciado para concluir a instalação do WSL.",
|
||||
"wsl.onboarding.ready": "O WSL está pronto.",
|
||||
"wsl.onboarding.required": "O WSL é necessário para continuar.",
|
||||
"wsl.onboarding.checkingDistros": "Verificando distribuições...",
|
||||
"wsl.onboarding.installingDistro": "Instalando {{distro}}...",
|
||||
"wsl.onboarding.checkingDistro": "Verificando {{distro}}...",
|
||||
"wsl.onboarding.listingDistros": "Listando distribuições...",
|
||||
"wsl.onboarding.checkingDistros": "Verificando distribuições…",
|
||||
"wsl.onboarding.installingDistro": "Instalando {{distro}}…",
|
||||
"wsl.onboarding.checkingDistro": "Verificando {{distro}}…",
|
||||
"wsl.onboarding.listingDistros": "Listando distribuições…",
|
||||
"wsl.onboarding.distroReady": "{{distro}} está pronta.",
|
||||
"wsl.onboarding.distroNotInstalled": "{{distro}} ainda não está instalada.",
|
||||
"wsl.onboarding.openDistroOnce": "Abra {{distro}} uma vez para concluir a configuração.",
|
||||
"wsl.onboarding.finishingDistro": "Concluindo a configuração de {{distro}}.",
|
||||
"wsl.onboarding.pickDistro": "Escolha uma distribuição ou instale uma abaixo.",
|
||||
"wsl.onboarding.checkingOpencode": "Verificando o OpenCode...",
|
||||
"wsl.onboarding.checkingOpencodeIn": "Verificando o OpenCode em {{distro}}...",
|
||||
"wsl.onboarding.updatingOpencode": "Atualizando o OpenCode...",
|
||||
"wsl.onboarding.updatingOpencodeIn": "Atualizando o OpenCode em {{distro}}...",
|
||||
"wsl.onboarding.checkingOpencode": "Verificando o OpenCode…",
|
||||
"wsl.onboarding.checkingOpencodeIn": "Verificando o OpenCode em {{distro}}…",
|
||||
"wsl.onboarding.updatingOpencode": "Atualizando o OpenCode…",
|
||||
"wsl.onboarding.updatingOpencodeIn": "Atualizando o OpenCode em {{distro}}…",
|
||||
"wsl.onboarding.updateOpencodeIn": "Atualize o OpenCode em {{distro}}.",
|
||||
"wsl.onboarding.updateOpencode": "Atualizar o OpenCode",
|
||||
"wsl.onboarding.opencodeReadyIn": "O OpenCode está pronto em {{distro}}.",
|
||||
@@ -470,11 +470,11 @@ export const dict = {
|
||||
"wsl.onboarding.installOpencode": "Instalar o OpenCode",
|
||||
"wsl.onboarding.chooseDistroFirst": "Escolha primeiro uma distribuição.",
|
||||
"wsl.onboarding.loadFailed": "Falha ao carregar o estado do WSL.",
|
||||
"wsl.onboarding.loading": "Carregando...",
|
||||
"wsl.onboarding.loading": "Carregando…",
|
||||
"wsl.onboarding.installedDistros": "Distribuições instaladas",
|
||||
"wsl.onboarding.checkAgain": "Verificar novamente",
|
||||
"wsl.onboarding.distroStatus.ready": "Pronta",
|
||||
"wsl.onboarding.distroStatus.checking": "Verificando...",
|
||||
"wsl.onboarding.distroStatus.checking": "Verificando…",
|
||||
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode não instalado",
|
||||
"wsl.onboarding.distroStatus.missingTools": "bash e curl ausentes",
|
||||
"wsl.onboarding.distroStatus.unsupported": "Sem suporte · Use o WSL 2",
|
||||
@@ -493,7 +493,7 @@ export const dict = {
|
||||
"wsl.onboarding.allDistrosAdded": "Todas as distribuições instaladas já foram adicionadas.",
|
||||
"wsl.onboarding.noDistros": "Nenhuma distribuição detectada ainda.",
|
||||
"wsl.onboarding.install": "Instalar",
|
||||
"wsl.onboarding.installing": "Instalando...",
|
||||
"wsl.onboarding.installing": "Instalando…",
|
||||
"wsl.onboarding.installDistro": "Instalar distribuição",
|
||||
"wsl.onboarding.searchDistros": "Buscar distribuições",
|
||||
"wsl.onboarding.wsl2Required": "O WSL 2 é necessário.",
|
||||
@@ -505,7 +505,7 @@ export const dict = {
|
||||
"wsl.onboarding.unknown": "desconhecido",
|
||||
"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...",
|
||||
"wsl.onboarding.adding": "Adicionando…",
|
||||
"dialog.project.edit.title": "Editar projeto",
|
||||
"dialog.project.edit.name": "Nome",
|
||||
"dialog.project.edit.icon": "Ícone",
|
||||
@@ -610,7 +610,7 @@ export const dict = {
|
||||
"error.page.action.report": "Reportar erro",
|
||||
"error.page.action.reported": "Erro reportado",
|
||||
"error.page.action.exportLogs": "Exportar logs",
|
||||
"error.page.action.checking": "Verificando...",
|
||||
"error.page.action.checking": "Verificando…",
|
||||
"error.page.action.checkUpdates": "Verificar atualizações",
|
||||
"error.page.action.updateTo": "Atualizar para {{version}}",
|
||||
"error.page.report.prefix": "Por favor, reporte este erro para a equipe do OpenCode",
|
||||
@@ -681,7 +681,7 @@ export const dict = {
|
||||
"session.review.filesChanged": "{{count}} arquivos alterados",
|
||||
"session.review.change.one": "Alteração",
|
||||
"session.review.change.other": "Alterações",
|
||||
"session.review.loadingChanges": "Carregando alterações...",
|
||||
"session.review.loadingChanges": "Carregando alterações…",
|
||||
"session.review.empty": "Nenhuma alteração nesta sessão ainda",
|
||||
"session.review.noVcs": "Nenhum Sistema de Controle de Versão Git detectado, alterações não exibidas",
|
||||
"session.review.noSnapshot":
|
||||
@@ -694,9 +694,9 @@ export const dict = {
|
||||
"session.files.empty": "Nenhum arquivo",
|
||||
"session.files.binaryContent": "Arquivo binário (conteúdo não pode ser exibido)",
|
||||
"session.messages.renderEarlier": "Renderizar mensagens anteriores",
|
||||
"session.messages.loadingEarlier": "Carregando mensagens anteriores...",
|
||||
"session.messages.loadingEarlier": "Carregando mensagens anteriores…",
|
||||
"session.messages.loadEarlier": "Carregar mensagens anteriores",
|
||||
"session.messages.loading": "Carregando mensagens...",
|
||||
"session.messages.loading": "Carregando mensagens…",
|
||||
"session.messages.jumpToLatest": "Ir para a mais recente",
|
||||
"session.context.addToContext": "Adicionar {{selection}} ao contexto",
|
||||
"session.todo.title": "Tarefas",
|
||||
@@ -737,8 +737,8 @@ export const dict = {
|
||||
"common.copied": "Copiado",
|
||||
"lsp.tooltip.none": "Nenhum servidor LSP",
|
||||
"lsp.label.connected": "{{count}} LSP",
|
||||
"prompt.loading": "Carregando prompt...",
|
||||
"terminal.loading": "Carregando terminal...",
|
||||
"prompt.loading": "Carregando prompt…",
|
||||
"terminal.loading": "Carregando terminal…",
|
||||
"terminal.title": "Terminal",
|
||||
"terminal.title.numbered": "Terminal {{number}}",
|
||||
"terminal.close": "Fechar terminal",
|
||||
@@ -853,9 +853,9 @@ export const dict = {
|
||||
"settings.updates.row.check.title": "Verificar atualizações",
|
||||
"settings.updates.row.check.description": "Verificar atualizações manualmente e instalar se houver",
|
||||
"settings.updates.action.checkNow": "Verificar agora",
|
||||
"settings.updates.action.checking": "Verificando...",
|
||||
"settings.updates.action.downloading": "Baixando...",
|
||||
"settings.updates.action.installing": "Instalando...",
|
||||
"settings.updates.action.checking": "Verificando…",
|
||||
"settings.updates.action.downloading": "Baixando…",
|
||||
"settings.updates.action.installing": "Instalando…",
|
||||
"settings.updates.toast.latest.title": "Você está atualizado",
|
||||
"settings.updates.toast.latest.description": "Você está usando a versão mais recente do OpenCode.",
|
||||
"sound.option.none": "Nenhum",
|
||||
@@ -1002,7 +1002,7 @@ export const dict = {
|
||||
"workspace.reset.success.title": "Espaço de trabalho redefinido",
|
||||
"workspace.reset.success.description": "Espaço de trabalho agora corresponde ao branch padrão.",
|
||||
"workspace.error.stillPreparing": "O espaço de trabalho ainda está sendo preparado",
|
||||
"workspace.status.checking": "Verificando alterações não mescladas...",
|
||||
"workspace.status.checking": "Verificando alterações não mescladas…",
|
||||
"workspace.status.error": "Não foi possível verificar o status do git.",
|
||||
"workspace.status.clean": "Nenhuma alteração não mesclada detectada.",
|
||||
"workspace.status.dirty": "Alterações não mescladas detectadas neste espaço de trabalho.",
|
||||
@@ -1032,12 +1032,12 @@ export const dict = {
|
||||
"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...",
|
||||
"app.server.retrying": "Tentando novamente automaticamente…",
|
||||
"app.server.otherServers": "Outros servidores",
|
||||
"dialog.server.add.passwordPlaceholder": "senha",
|
||||
"session.review.noVcs.createGit.title": "Criar um repositório Git",
|
||||
"session.review.noVcs.createGit.description": "Rastreie, revise e desfaça alterações neste projeto",
|
||||
"session.review.noVcs.createGit.actionLoading": "Criando repositório Git...",
|
||||
"session.review.noVcs.createGit.actionLoading": "Criando repositório Git…",
|
||||
"session.review.noVcs.createGit.action": "Criar repositório Git",
|
||||
"session.todo.progress": "{{done}} de {{total}} tarefas concluídas",
|
||||
"session.question.progress": "{{current}} de {{total}} perguntas",
|
||||
|
||||
@@ -6,13 +6,13 @@ export const dict = {
|
||||
"desktop.menu.go": "Idi",
|
||||
"desktop.menu.window": "Prozor",
|
||||
"desktop.menu.help": "Pomoć",
|
||||
"desktop.menu.checkForUpdates": "Provjeri ima li ažuriranja...",
|
||||
"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.exportLogs": "Izvezi zapisnike…",
|
||||
"desktop.menu.newSession": "Nova sesija",
|
||||
"desktop.menu.openProject": "Otvori projekat...",
|
||||
"desktop.menu.openProject": "Otvori projekat…",
|
||||
"desktop.menu.newWindow": "Novi prozor",
|
||||
"desktop.menu.closeWindow": "Zatvori prozor",
|
||||
"desktop.menu.undo": "Poništi",
|
||||
@@ -233,8 +233,8 @@ export const dict = {
|
||||
"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.inProgress": "Autorizacija je u toku…",
|
||||
"provider.connect.status.waiting": "Čekanje na autorizaciju…",
|
||||
"provider.connect.status.failed": "Autorizacija nije uspjela: {{error}}",
|
||||
"provider.connect.apiKey.description":
|
||||
"Unesi svoj {{provider}} API ključ da povežeš račun i koristiš {{provider}} modele u OpenCode-u.",
|
||||
@@ -332,7 +332,7 @@ export const dict = {
|
||||
"common.goBack": "Nazad",
|
||||
"common.goForward": "Naprijed",
|
||||
"common.loading": "Učitavanje",
|
||||
"common.loading.ellipsis": "...",
|
||||
"common.loading.ellipsis": "…",
|
||||
"common.cancel": "Otkaži",
|
||||
"common.clear": "Očisti",
|
||||
"common.connect": "Poveži",
|
||||
@@ -340,13 +340,13 @@ export const dict = {
|
||||
"common.continue": "Nastavi",
|
||||
"common.submit": "Pošalji",
|
||||
"common.save": "Sačuvaj",
|
||||
"common.saving": "Čuvanje...",
|
||||
"common.saving": "Čuvanje…",
|
||||
"common.default": "Podrazumijevano",
|
||||
"common.attachment": "prilog",
|
||||
|
||||
"prompt.placeholder.shell": "Unesi shell naredbu... {{example}}",
|
||||
"prompt.placeholder.normal": 'Pitaj bilo šta... "{{example}}"',
|
||||
"prompt.placeholder.simple": "Pitaj bilo šta...",
|
||||
"prompt.placeholder.shell": "Unesi shell naredbu… {{example}}",
|
||||
"prompt.placeholder.normal": 'Pitaj bilo šta… "{{example}}"',
|
||||
"prompt.placeholder.simple": "Pitaj bilo šta…",
|
||||
"prompt.placeholder.summarizeComments": "Sažmi komentare…",
|
||||
"prompt.placeholder.summarizeComment": "Sažmi komentar…",
|
||||
"prompt.mode.shell": "Shell",
|
||||
@@ -367,7 +367,7 @@ export const dict = {
|
||||
"prompt.example.10": "Generiši API dokumentaciju",
|
||||
"prompt.example.11": "Optimizuj upite prema bazi podataka",
|
||||
"prompt.example.12": "Dodaj validaciju ulaza",
|
||||
"prompt.example.13": "Napravi novu komponentu za...",
|
||||
"prompt.example.13": "Napravi novu komponentu za…",
|
||||
"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",
|
||||
@@ -378,7 +378,7 @@ export const dict = {
|
||||
"prompt.example.21": "Pomozi mi da napišem migracijsku skriptu",
|
||||
"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.24": "Napravi CLI komandu za…",
|
||||
"prompt.example.25": "Kako ovdje rade varijable okruženja?",
|
||||
|
||||
"prompt.popover.emptyResults": "Nema rezultata",
|
||||
@@ -445,7 +445,7 @@ export const dict = {
|
||||
"dialog.server.add.url": "URL servera",
|
||||
"dialog.server.add.placeholder": "http://localhost:4096",
|
||||
"dialog.server.add.error": "Nije moguće povezati se na server",
|
||||
"dialog.server.add.checking": "Provjera...",
|
||||
"dialog.server.add.checking": "Provjera…",
|
||||
"dialog.server.add.button": "Dodaj server",
|
||||
"dialog.server.add.name": "Ime servera (opcionalno)",
|
||||
"dialog.server.add.namePlaceholder": "Localhost",
|
||||
@@ -470,26 +470,26 @@ export const dict = {
|
||||
"wsl.server.label": "WSL",
|
||||
"wsl.server.menu.label": "WSL server",
|
||||
"wsl.server.retryStart": "Ponovi pokretanje",
|
||||
"wsl.server.updating": "Ažuriranje...",
|
||||
"wsl.server.updating": "Ažuriranje…",
|
||||
"wsl.onboarding.step.distro": "Odaberi distribuciju",
|
||||
"wsl.onboarding.step.opencode": "OpenCode",
|
||||
"wsl.onboarding.checkingRuntime": "Provjera WSL-a...",
|
||||
"wsl.onboarding.checkingRuntime": "Provjera WSL-a…",
|
||||
"wsl.onboarding.restartRequired": "Potrebno je ponovo pokrenuti Windows da bi se završila instalacija WSL-a.",
|
||||
"wsl.onboarding.ready": "WSL je spreman.",
|
||||
"wsl.onboarding.required": "WSL je potreban za nastavak.",
|
||||
"wsl.onboarding.checkingDistros": "Provjera distribucija...",
|
||||
"wsl.onboarding.installingDistro": "Instaliranje {{distro}}...",
|
||||
"wsl.onboarding.checkingDistro": "Provjera {{distro}}...",
|
||||
"wsl.onboarding.listingDistros": "Učitavanje liste distribucija...",
|
||||
"wsl.onboarding.checkingDistros": "Provjera distribucija…",
|
||||
"wsl.onboarding.installingDistro": "Instaliranje {{distro}}…",
|
||||
"wsl.onboarding.checkingDistro": "Provjera {{distro}}…",
|
||||
"wsl.onboarding.listingDistros": "Učitavanje liste distribucija…",
|
||||
"wsl.onboarding.distroReady": "Distribucija {{distro}} je spremna.",
|
||||
"wsl.onboarding.distroNotInstalled": "Distribucija {{distro}} još nije instalirana.",
|
||||
"wsl.onboarding.openDistroOnce": "Otvori {{distro}} jednom da završiš postavljanje.",
|
||||
"wsl.onboarding.finishingDistro": "Završavanje postavljanja za {{distro}}.",
|
||||
"wsl.onboarding.pickDistro": "Odaberi distribuciju ili instaliraj jednu ispod.",
|
||||
"wsl.onboarding.checkingOpencode": "Provjera OpenCode...",
|
||||
"wsl.onboarding.checkingOpencodeIn": "Provjera OpenCode u distribuciji {{distro}}...",
|
||||
"wsl.onboarding.updatingOpencode": "Ažuriranje OpenCode...",
|
||||
"wsl.onboarding.updatingOpencodeIn": "Ažuriranje OpenCode u distribuciji {{distro}}...",
|
||||
"wsl.onboarding.checkingOpencode": "Provjera OpenCode…",
|
||||
"wsl.onboarding.checkingOpencodeIn": "Provjera OpenCode u distribuciji {{distro}}…",
|
||||
"wsl.onboarding.updatingOpencode": "Ažuriranje OpenCode…",
|
||||
"wsl.onboarding.updatingOpencodeIn": "Ažuriranje OpenCode u distribuciji {{distro}}…",
|
||||
"wsl.onboarding.updateOpencodeIn": "Ažuriraj OpenCode u distribuciji {{distro}}.",
|
||||
"wsl.onboarding.updateOpencode": "Ažuriraj OpenCode",
|
||||
"wsl.onboarding.opencodeReadyIn": "OpenCode je spreman u distribuciji {{distro}}.",
|
||||
@@ -498,11 +498,11 @@ export const dict = {
|
||||
"wsl.onboarding.installOpencode": "Instaliraj OpenCode",
|
||||
"wsl.onboarding.chooseDistroFirst": "Prvo odaberi distribuciju.",
|
||||
"wsl.onboarding.loadFailed": "Nije uspjelo učitavanje WSL stanja.",
|
||||
"wsl.onboarding.loading": "Učitavanje...",
|
||||
"wsl.onboarding.loading": "Učitavanje…",
|
||||
"wsl.onboarding.installedDistros": "Instalirane distribucije",
|
||||
"wsl.onboarding.checkAgain": "Provjeri ponovo",
|
||||
"wsl.onboarding.distroStatus.ready": "Spremno",
|
||||
"wsl.onboarding.distroStatus.checking": "Provjera...",
|
||||
"wsl.onboarding.distroStatus.checking": "Provjera…",
|
||||
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode nije instaliran",
|
||||
"wsl.onboarding.distroStatus.missingTools": "Nedostaju bash i curl",
|
||||
"wsl.onboarding.distroStatus.unsupported": "Nije podržano · Koristi WSL 2",
|
||||
@@ -521,7 +521,7 @@ export const dict = {
|
||||
"wsl.onboarding.allDistrosAdded": "Sve instalirane distribucije su već dodane.",
|
||||
"wsl.onboarding.noDistros": "Još nema otkrivenih distribucija.",
|
||||
"wsl.onboarding.install": "Instaliraj",
|
||||
"wsl.onboarding.installing": "Instaliranje...",
|
||||
"wsl.onboarding.installing": "Instaliranje…",
|
||||
"wsl.onboarding.installDistro": "Instaliraj distribuciju",
|
||||
"wsl.onboarding.searchDistros": "Pretraži distribucije",
|
||||
"wsl.onboarding.wsl2Required": "Potreban je WSL 2.",
|
||||
@@ -533,7 +533,7 @@ export const dict = {
|
||||
"wsl.onboarding.unknown": "nepoznato",
|
||||
"wsl.onboarding.desktopVersion": "desktop {{version}}",
|
||||
"wsl.onboarding.versionMismatch": "Instalirana verzija ne odgovara verziji desktop aplikacije.",
|
||||
"wsl.onboarding.adding": "Dodavanje...",
|
||||
"wsl.onboarding.adding": "Dodavanje…",
|
||||
|
||||
"dialog.project.edit.title": "Uredi projekat",
|
||||
"dialog.project.edit.name": "Naziv",
|
||||
@@ -656,7 +656,7 @@ export const dict = {
|
||||
"error.page.action.report": "Prijavi grešku",
|
||||
"error.page.action.reported": "Greška prijavljena",
|
||||
"error.page.action.exportLogs": "Izvezi logove",
|
||||
"error.page.action.checking": "Provjera...",
|
||||
"error.page.action.checking": "Provjera…",
|
||||
"error.page.action.checkUpdates": "Provjeri ažuriranja",
|
||||
"error.page.action.updateTo": "Ažuriraj na {{version}}",
|
||||
"error.page.report.prefix": "Molimo prijavi ovu grešku OpenCode timu",
|
||||
@@ -733,7 +733,7 @@ export const dict = {
|
||||
"session.review.filesChanged": "Izmijenjeno {{count}} datoteka",
|
||||
"session.review.change.one": "Izmjena",
|
||||
"session.review.change.other": "Izmjene",
|
||||
"session.review.loadingChanges": "Učitavanje izmjena...",
|
||||
"session.review.loadingChanges": "Učitavanje izmjena…",
|
||||
"session.review.empty": "Još nema izmjena u ovoj sesiji",
|
||||
"session.review.noVcs": "Nije otkriven Git sistem za kontrolu verzija, pa se promjene ne prikazuju",
|
||||
"session.review.noSnapshot":
|
||||
@@ -748,9 +748,9 @@ export const dict = {
|
||||
"session.files.binaryContent": "Binarna datoteka (sadržaj se ne može prikazati)",
|
||||
|
||||
"session.messages.renderEarlier": "Prikaži ranije poruke",
|
||||
"session.messages.loadingEarlier": "Učitavanje ranijih poruka...",
|
||||
"session.messages.loadingEarlier": "Učitavanje ranijih poruka…",
|
||||
"session.messages.loadEarlier": "Učitaj ranije poruke",
|
||||
"session.messages.loading": "Učitavanje poruka...",
|
||||
"session.messages.loading": "Učitavanje poruka…",
|
||||
"session.messages.jumpToLatest": "Idi na najnovije",
|
||||
|
||||
"session.context.addToContext": "Dodaj {{selection}} u kontekst",
|
||||
@@ -798,8 +798,8 @@ export const dict = {
|
||||
"lsp.tooltip.none": "Nema LSP servera",
|
||||
"lsp.label.connected": "{{count}} LSP",
|
||||
|
||||
"prompt.loading": "Učitavanje upita...",
|
||||
"terminal.loading": "Učitavanje terminala...",
|
||||
"prompt.loading": "Učitavanje upita…",
|
||||
"terminal.loading": "Učitavanje terminala…",
|
||||
"terminal.title": "Terminal",
|
||||
"terminal.title.numbered": "Terminal {{number}}",
|
||||
"terminal.close": "Zatvori terminal",
|
||||
@@ -922,9 +922,9 @@ export const dict = {
|
||||
"settings.updates.row.check.title": "Provjeri ažuriranja",
|
||||
"settings.updates.row.check.description": "Ručno provjeri ažuriranja i instaliraj ako su dostupna",
|
||||
"settings.updates.action.checkNow": "Provjeri sada",
|
||||
"settings.updates.action.checking": "Provjera...",
|
||||
"settings.updates.action.downloading": "Preuzimanje...",
|
||||
"settings.updates.action.installing": "Instaliranje...",
|
||||
"settings.updates.action.checking": "Provjera…",
|
||||
"settings.updates.action.downloading": "Preuzimanje…",
|
||||
"settings.updates.action.installing": "Instaliranje…",
|
||||
"settings.updates.toast.latest.title": "Sve je ažurno",
|
||||
"settings.updates.toast.latest.description": "Koristiš najnoviju verziju OpenCode-a.",
|
||||
"sound.option.none": "Nijedan",
|
||||
@@ -1080,7 +1080,7 @@ export const dict = {
|
||||
"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 promjena koje nisu commitovane...",
|
||||
"workspace.status.checking": "Provjera promjena koje nisu commitovane…",
|
||||
"workspace.status.error": "Nije moguće provjeriti git status.",
|
||||
"workspace.status.clean": "Nisu pronađene promjene koje nisu commitovane.",
|
||||
"workspace.status.dirty": "Pronađene su promjene koje nisu commitovane u ovom radnom prostoru.",
|
||||
@@ -1110,12 +1110,12 @@ export const dict = {
|
||||
"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...",
|
||||
"app.server.retrying": "Automatski ponovni pokušaj…",
|
||||
"app.server.otherServers": "Drugi serveri",
|
||||
"dialog.server.add.passwordPlaceholder": "lozinka",
|
||||
"session.review.noVcs.createGit.title": "Kreiraj Git repozitorij",
|
||||
"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.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",
|
||||
|
||||
@@ -6,13 +6,13 @@ export const dict = {
|
||||
"desktop.menu.go": "Vés",
|
||||
"desktop.menu.window": "Finestra",
|
||||
"desktop.menu.help": "Ajuda",
|
||||
"desktop.menu.checkForUpdates": "Comproveu si hi ha actualitzacions...",
|
||||
"desktop.menu.checkForUpdates": "Comproveu si hi ha actualitzacions…",
|
||||
"desktop.menu.settings": "Configuració",
|
||||
"desktop.menu.reloadWebview": "Torna a carregar Webview",
|
||||
"desktop.menu.restart": "Reinicieu",
|
||||
"desktop.menu.exportLogs": "Exporta registres...",
|
||||
"desktop.menu.exportLogs": "Exporta registres…",
|
||||
"desktop.menu.newSession": "Nova sessió",
|
||||
"desktop.menu.openProject": "Projecte obert...",
|
||||
"desktop.menu.openProject": "Projecte obert…",
|
||||
"desktop.menu.newWindow": "Finestra nova",
|
||||
"desktop.menu.closeWindow": "Tanca la finestra",
|
||||
"desktop.menu.undo": "Desfer",
|
||||
@@ -214,8 +214,8 @@ export const dict = {
|
||||
"provider.connect.method.apiKey": "tecla API.",
|
||||
"provider.connect.method.browser": "Navegador",
|
||||
"provider.connect.method.headless": "Sense cap",
|
||||
"provider.connect.status.inProgress": "Autorització en curs...",
|
||||
"provider.connect.status.waiting": "Esperant l'autorització...",
|
||||
"provider.connect.status.inProgress": "Autorització en curs…",
|
||||
"provider.connect.status.waiting": "Esperant l'autorització…",
|
||||
"provider.connect.status.failed": "L'autorització ha fallat: {{error}}",
|
||||
"provider.connect.apiKey.description":
|
||||
"Introduïu la clau API de {{provider}} per connectar el compte i utilitzar els models de {{provider}} a OpenCode.",
|
||||
@@ -309,7 +309,7 @@ export const dict = {
|
||||
"common.goBack": "Navega enrere",
|
||||
"common.goForward": "Navega cap endavant",
|
||||
"common.loading": "Carregant",
|
||||
"common.loading.ellipsis": "...",
|
||||
"common.loading.ellipsis": "…",
|
||||
"common.cancel": "Cancel·la",
|
||||
"common.clear": "Clar",
|
||||
"common.open": "Obert",
|
||||
@@ -318,14 +318,14 @@ export const dict = {
|
||||
"common.continue": "Continua",
|
||||
"common.submit": "Envia",
|
||||
"common.save": "Desa",
|
||||
"common.saving": "S'està desant...",
|
||||
"common.saving": "S'està desant…",
|
||||
"common.default": "Per defecte",
|
||||
"common.attachment": "adjunt",
|
||||
"prompt.placeholder.shell": "Introduïu una ordre de l'intèrpret d'ordres... {{example}}",
|
||||
"prompt.placeholder.normal": 'Pregunta qualsevol cosa... "{{example}}"',
|
||||
"prompt.placeholder.simple": "Pregunta qualsevol cosa...",
|
||||
"prompt.placeholder.summarizeComments": "Resum dels comentaris...",
|
||||
"prompt.placeholder.summarizeComment": "Resumeix el comentari...",
|
||||
"prompt.placeholder.shell": "Introduïu una ordre de l'intèrpret d'ordres… {{example}}",
|
||||
"prompt.placeholder.normal": 'Pregunta qualsevol cosa… "{{example}}"',
|
||||
"prompt.placeholder.simple": "Pregunta qualsevol cosa…",
|
||||
"prompt.placeholder.summarizeComments": "Resum dels comentaris…",
|
||||
"prompt.placeholder.summarizeComment": "Resumeix el comentari…",
|
||||
"prompt.mode.shell": "Shell",
|
||||
"prompt.mode.normal": "Indicació",
|
||||
"prompt.mode.shell.exit": "esc per sortir",
|
||||
@@ -343,7 +343,7 @@ export const dict = {
|
||||
"prompt.example.10": "Genera API documentació",
|
||||
"prompt.example.11": "Optimitzar les consultes a la base de dades",
|
||||
"prompt.example.12": "Afegiu la validació d'entrada",
|
||||
"prompt.example.13": "Crea un component nou per...",
|
||||
"prompt.example.13": "Crea un component nou per…",
|
||||
"prompt.example.14": "Com implemento aquest projecte?",
|
||||
"prompt.example.15": "Revisa el meu codi per conèixer les pràctiques recomanades",
|
||||
"prompt.example.16": "Afegiu la gestió d'errors a aquesta funció",
|
||||
@@ -354,7 +354,7 @@ export const dict = {
|
||||
"prompt.example.21": "Ajudeu-me a escriure un script de migració",
|
||||
"prompt.example.22": "Implementeu la memòria cau per a aquest punt final",
|
||||
"prompt.example.23": "Afegeix la paginació a aquesta llista",
|
||||
"prompt.example.24": "Creeu una ordre CLI per...",
|
||||
"prompt.example.24": "Creeu una ordre CLI per…",
|
||||
"prompt.example.25": "Com funcionen les variables d'entorn aquí?",
|
||||
"prompt.popover.emptyResults": "No hi ha resultats coincidents",
|
||||
"prompt.popover.emptyCommands": "No hi ha ordres coincidents",
|
||||
@@ -406,7 +406,7 @@ export const dict = {
|
||||
"dialog.directory.parent": "Pare",
|
||||
"dialog.directory.readError": "No es pot llegir aquesta carpeta",
|
||||
"app.server.unreachable": "No s'ha pogut arribar a {{server}}",
|
||||
"app.server.retrying": "S'està tornant a provar automàticament...",
|
||||
"app.server.retrying": "S'està tornant a provar automàticament…",
|
||||
"app.server.otherServers": "Altres servidors",
|
||||
"dialog.server.title": "Servidors",
|
||||
"dialog.server.description": "Canvia a quin OpenCode servidor es connecta aquesta aplicació.",
|
||||
@@ -416,7 +416,7 @@ export const dict = {
|
||||
"dialog.server.add.url": "Adreça del servidor",
|
||||
"dialog.server.add.placeholder": "http://localhost:4096",
|
||||
"dialog.server.add.error": "No s'ha pogut connectar al servidor",
|
||||
"dialog.server.add.checking": "S'està comprovant...",
|
||||
"dialog.server.add.checking": "S'està comprovant…",
|
||||
"dialog.server.add.button": "Afegeix servidor",
|
||||
"dialog.server.add.name": "Nom del servidor (opcional)",
|
||||
"dialog.server.add.namePlaceholder": "Localhost",
|
||||
@@ -441,26 +441,26 @@ export const dict = {
|
||||
"wsl.server.label": "WSL",
|
||||
"wsl.server.menu.label": "WSL servidor",
|
||||
"wsl.server.retryStart": "Torna a intentar començar",
|
||||
"wsl.server.updating": "S'està actualitzant...",
|
||||
"wsl.server.updating": "S'està actualitzant…",
|
||||
"wsl.onboarding.step.distro": "Trieu la distribució",
|
||||
"wsl.onboarding.step.opencode": "OpenCode",
|
||||
"wsl.onboarding.checkingRuntime": "S'està comprovant WSL...",
|
||||
"wsl.onboarding.checkingRuntime": "S'està comprovant WSL…",
|
||||
"wsl.onboarding.restartRequired": "Windows necessita un reinici per acabar la instal·lació WSL.",
|
||||
"wsl.onboarding.ready": "WSL està llest.",
|
||||
"wsl.onboarding.required": "WSL és necessari per continuar.",
|
||||
"wsl.onboarding.checkingDistros": "S'estan comprovant les distribucions...",
|
||||
"wsl.onboarding.installingDistro": "S'està instal·lant {{distro}}...",
|
||||
"wsl.onboarding.checkingDistro": "S'està comprovant {{distro}}...",
|
||||
"wsl.onboarding.listingDistros": "Llistat de distribucions...",
|
||||
"wsl.onboarding.checkingDistros": "S'estan comprovant les distribucions…",
|
||||
"wsl.onboarding.installingDistro": "S'està instal·lant {{distro}}…",
|
||||
"wsl.onboarding.checkingDistro": "S'està comprovant {{distro}}…",
|
||||
"wsl.onboarding.listingDistros": "Llistat de distribucions…",
|
||||
"wsl.onboarding.distroReady": "{{distro}} està llest.",
|
||||
"wsl.onboarding.distroNotInstalled": "{{distro}} encara no està instal·lat.",
|
||||
"wsl.onboarding.openDistroOnce": "Obriu {{distro}} una vegada per acabar la configuració.",
|
||||
"wsl.onboarding.finishingDistro": "S'està acabant la configuració de {{distro}}.",
|
||||
"wsl.onboarding.pickDistro": "Trieu una distribució o instal·leu-ne una a continuació.",
|
||||
"wsl.onboarding.checkingOpencode": "S'està comprovant OpenCode...",
|
||||
"wsl.onboarding.checkingOpencodeIn": "S'està registrant OpenCode a {{distro}}...",
|
||||
"wsl.onboarding.updatingOpencode": "S'està actualitzant OpenCode...",
|
||||
"wsl.onboarding.updatingOpencodeIn": "S'està actualitzant OpenCode a {{distro}}...",
|
||||
"wsl.onboarding.checkingOpencode": "S'està comprovant OpenCode…",
|
||||
"wsl.onboarding.checkingOpencodeIn": "S'està registrant OpenCode a {{distro}}…",
|
||||
"wsl.onboarding.updatingOpencode": "S'està actualitzant OpenCode…",
|
||||
"wsl.onboarding.updatingOpencodeIn": "S'està actualitzant OpenCode a {{distro}}…",
|
||||
"wsl.onboarding.updateOpencodeIn": "Actualitza OpenCode a {{distro}}.",
|
||||
"wsl.onboarding.updateOpencode": "Actualització OpenCode",
|
||||
"wsl.onboarding.opencodeReadyIn": "OpenCode està llest a {{distro}}.",
|
||||
@@ -469,11 +469,11 @@ export const dict = {
|
||||
"wsl.onboarding.installOpencode": "Instal·la OpenCode",
|
||||
"wsl.onboarding.chooseDistroFirst": "Trieu primer una distribució.",
|
||||
"wsl.onboarding.loadFailed": "No s'ha pogut carregar l'estat WSL.",
|
||||
"wsl.onboarding.loading": "Carregant...",
|
||||
"wsl.onboarding.loading": "Carregant…",
|
||||
"wsl.onboarding.installedDistros": "Distribucions instal·lades",
|
||||
"wsl.onboarding.checkAgain": "Comproveu de nou",
|
||||
"wsl.onboarding.distroStatus.ready": "A punt",
|
||||
"wsl.onboarding.distroStatus.checking": "S'està comprovant...",
|
||||
"wsl.onboarding.distroStatus.checking": "S'està comprovant…",
|
||||
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode no instal·lat",
|
||||
"wsl.onboarding.distroStatus.missingTools": "Falta bash, curl",
|
||||
"wsl.onboarding.distroStatus.unsupported": "No s'admet · Utilitzeu WSL 2",
|
||||
@@ -492,7 +492,7 @@ export const dict = {
|
||||
"wsl.onboarding.allDistrosAdded": "Totes les distribucions instal·lades ja s'han afegit.",
|
||||
"wsl.onboarding.noDistros": "Encara no s'ha detectat cap distribució.",
|
||||
"wsl.onboarding.install": "Instal·lar",
|
||||
"wsl.onboarding.installing": "S'està instal·lant...",
|
||||
"wsl.onboarding.installing": "S'està instal·lant…",
|
||||
"wsl.onboarding.installDistro": "Instal·leu la distribució",
|
||||
"wsl.onboarding.searchDistros": "Cerca distribucions",
|
||||
"wsl.onboarding.wsl2Required": "WSL Es requereix 2.",
|
||||
@@ -504,7 +504,7 @@ export const dict = {
|
||||
"wsl.onboarding.unknown": "desconegut",
|
||||
"wsl.onboarding.desktopVersion": "escriptori {{version}}",
|
||||
"wsl.onboarding.versionMismatch": "La versió instal·lada no coincideix amb la versió de l'aplicació d'escriptori.",
|
||||
"wsl.onboarding.adding": "S'està afegint...",
|
||||
"wsl.onboarding.adding": "S'està afegint…",
|
||||
"dialog.project.edit.title": "Edita el projecte",
|
||||
"dialog.project.edit.name": "Nom",
|
||||
"dialog.project.edit.icon": "Icona",
|
||||
@@ -610,7 +610,7 @@ export const dict = {
|
||||
"error.page.action.report": "Informa d'un error",
|
||||
"error.page.action.reported": "S'ha informat d'un error",
|
||||
"error.page.action.exportLogs": "Exporta registres",
|
||||
"error.page.action.checking": "S'està comprovant...",
|
||||
"error.page.action.checking": "S'està comprovant…",
|
||||
"error.page.action.checkUpdates": "Comproveu si hi ha actualitzacions",
|
||||
"error.page.action.updateTo": "Actualitza a {{version}}",
|
||||
"error.page.circular": "[Circular]",
|
||||
@@ -690,12 +690,12 @@ export const dict = {
|
||||
"session.review.filesChanged": "Fitxers canviats {{count}}",
|
||||
"session.review.change.one": "Canviar",
|
||||
"session.review.change.other": "Canvis",
|
||||
"session.review.loadingChanges": "S'estan carregant els canvis...",
|
||||
"session.review.loadingChanges": "S'estan carregant els canvis…",
|
||||
"session.review.empty": "Encara no hi ha canvis en aquesta sessió",
|
||||
"session.review.noVcs": "No Git S'ha detectat el sistema de control de versions, els canvis no es mostren",
|
||||
"session.review.noVcs.createGit.title": "Creeu un repositori Git.",
|
||||
"session.review.noVcs.createGit.description": "Feu un seguiment, reviseu i desfer els canvis en aquest projecte",
|
||||
"session.review.noVcs.createGit.actionLoading": "S'està creant un repositori Git...",
|
||||
"session.review.noVcs.createGit.actionLoading": "S'està creant un repositori Git…",
|
||||
"session.review.noVcs.createGit.action": "Crea un repositori Git",
|
||||
"session.review.noSnapshot":
|
||||
"El seguiment de la instantània està desactivat a la configuració, de manera que els canvis de sessió no estan disponibles",
|
||||
@@ -707,9 +707,9 @@ export const dict = {
|
||||
"session.files.empty": "No hi ha fitxers",
|
||||
"session.files.binaryContent": "Fitxer binari (el contingut no es pot mostrar)",
|
||||
"session.messages.renderEarlier": "Mostra missatges anteriors",
|
||||
"session.messages.loadingEarlier": "S'estan carregant missatges anteriors...",
|
||||
"session.messages.loadingEarlier": "S'estan carregant missatges anteriors…",
|
||||
"session.messages.loadEarlier": "Carregueu missatges anteriors",
|
||||
"session.messages.loading": "S'estan carregant els missatges...",
|
||||
"session.messages.loading": "S'estan carregant els missatges…",
|
||||
"session.messages.jumpToLatest": "Ves a l'últim",
|
||||
"session.context.addToContext": "Afegeix {{selection}} al context",
|
||||
"session.todo.title": "Tots",
|
||||
@@ -771,8 +771,8 @@ export const dict = {
|
||||
"common.copied": "Copiat",
|
||||
"lsp.tooltip.none": "No hi ha LSP servidors",
|
||||
"lsp.label.connected": "{{count}} LSP",
|
||||
"prompt.loading": "S'està carregant el missatge...",
|
||||
"terminal.loading": "S'està carregant el terminal...",
|
||||
"prompt.loading": "S'està carregant el missatge…",
|
||||
"terminal.loading": "S'està carregant el terminal…",
|
||||
"terminal.title": "Terminal",
|
||||
"terminal.title.numbered": "Terminal {{number}}",
|
||||
"terminal.close": "Tanca la terminal",
|
||||
@@ -939,9 +939,9 @@ export const dict = {
|
||||
"settings.updates.row.check.description":
|
||||
"Comproveu manualment si hi ha actualitzacions i instal·leu si està disponible",
|
||||
"settings.updates.action.checkNow": "Comproveu ara",
|
||||
"settings.updates.action.checking": "S'està comprovant...",
|
||||
"settings.updates.action.downloading": "S'està baixant...",
|
||||
"settings.updates.action.installing": "S'està instal·lant...",
|
||||
"settings.updates.action.checking": "S'està comprovant…",
|
||||
"settings.updates.action.downloading": "S'està baixant…",
|
||||
"settings.updates.action.installing": "S'està instal·lant…",
|
||||
"settings.updates.toast.latest.title": "Estàs al dia",
|
||||
"settings.updates.toast.latest.description": "Esteu executant la darrera versió de OpenCode.",
|
||||
"sound.option.none": "Cap",
|
||||
@@ -1090,7 +1090,7 @@ export const dict = {
|
||||
"workspace.reset.success.title": "Restabliment de l'espai de treball",
|
||||
"workspace.reset.success.description": "L'espai de treball ara coincideix amb la branca predeterminada.",
|
||||
"workspace.error.stillPreparing": "L'espai de treball encara s'està preparant",
|
||||
"workspace.status.checking": "S'estan comprovant els canvis no combinats...",
|
||||
"workspace.status.checking": "S'estan comprovant els canvis no combinats…",
|
||||
"workspace.status.error": "No es pot verificar l'estat de git.",
|
||||
"workspace.status.clean": "No s'han detectat canvis no combinats.",
|
||||
"workspace.status.dirty": "S'han detectat canvis no combinats en aquest espai de treball.",
|
||||
|
||||
@@ -6,13 +6,13 @@ export const dict = {
|
||||
"desktop.menu.go": "Jdi",
|
||||
"desktop.menu.window": "okno",
|
||||
"desktop.menu.help": "Pomoc",
|
||||
"desktop.menu.checkForUpdates": "Zkontrolovat aktualizace...",
|
||||
"desktop.menu.checkForUpdates": "Zkontrolovat aktualizace…",
|
||||
"desktop.menu.settings": "Nastavení",
|
||||
"desktop.menu.reloadWebview": "Znovu načíst Webview",
|
||||
"desktop.menu.restart": "Restartujte",
|
||||
"desktop.menu.exportLogs": "Exportovat protokoly...",
|
||||
"desktop.menu.exportLogs": "Exportovat protokoly…",
|
||||
"desktop.menu.newSession": "Nová relace",
|
||||
"desktop.menu.openProject": "Otevřít projekt...",
|
||||
"desktop.menu.openProject": "Otevřít projekt…",
|
||||
"desktop.menu.newWindow": "Nové okno",
|
||||
"desktop.menu.closeWindow": "Zavřít okno",
|
||||
"desktop.menu.undo": "Vrátit zpět",
|
||||
@@ -212,8 +212,8 @@ export const dict = {
|
||||
"provider.connect.method.apiKey": "API klíč",
|
||||
"provider.connect.method.browser": "Prohlížeč",
|
||||
"provider.connect.method.headless": "Bezhlavě",
|
||||
"provider.connect.status.inProgress": "Probíhá autorizace...",
|
||||
"provider.connect.status.waiting": "Čekání na autorizaci...",
|
||||
"provider.connect.status.inProgress": "Probíhá autorizace…",
|
||||
"provider.connect.status.waiting": "Čekání na autorizaci…",
|
||||
"provider.connect.status.failed": "Autorizace se nezdařila: {{error}}",
|
||||
"provider.connect.apiKey.description":
|
||||
"Zadejte klíč API služby {{provider}}, připojte účet a používejte modely {{provider}} v OpenCode.",
|
||||
@@ -307,7 +307,7 @@ export const dict = {
|
||||
"common.goBack": "Přejít zpět",
|
||||
"common.goForward": "Přejděte vpřed",
|
||||
"common.loading": "Načítání",
|
||||
"common.loading.ellipsis": "...",
|
||||
"common.loading.ellipsis": "…",
|
||||
"common.cancel": "Zrušit",
|
||||
"common.clear": "Jasný",
|
||||
"common.open": "Otevřít",
|
||||
@@ -316,12 +316,12 @@ export const dict = {
|
||||
"common.continue": "Pokračujte",
|
||||
"common.submit": "Odeslat",
|
||||
"common.save": "Uložit",
|
||||
"common.saving": "Ukládání...",
|
||||
"common.saving": "Ukládání…",
|
||||
"common.default": "Výchozí",
|
||||
"common.attachment": "příloha",
|
||||
"prompt.placeholder.shell": "Zadejte příkaz shellu... {{example}}",
|
||||
"prompt.placeholder.normal": 'Zeptejte se na cokoliv... "{{example}}"',
|
||||
"prompt.placeholder.simple": "Zeptejte se na cokoliv...",
|
||||
"prompt.placeholder.shell": "Zadejte příkaz shellu… {{example}}",
|
||||
"prompt.placeholder.normal": 'Zeptejte se na cokoliv… "{{example}}"',
|
||||
"prompt.placeholder.simple": "Zeptejte se na cokoliv…",
|
||||
"prompt.placeholder.summarizeComments": "Shrnout komentáře…",
|
||||
"prompt.placeholder.summarizeComment": "Shrnout komentář…",
|
||||
"prompt.mode.shell": "Shell",
|
||||
@@ -341,7 +341,7 @@ export const dict = {
|
||||
"prompt.example.10": "Vygenerujte dokumentaci API",
|
||||
"prompt.example.11": "Optimalizujte databázové dotazy",
|
||||
"prompt.example.12": "Přidejte ověření vstupu",
|
||||
"prompt.example.13": "Vytvořit novou komponentu pro...",
|
||||
"prompt.example.13": "Vytvořit novou komponentu pro…",
|
||||
"prompt.example.14": "Jak nasadím tento projekt?",
|
||||
"prompt.example.15": "Osvědčené postupy naleznete v mém kódu",
|
||||
"prompt.example.16": "Přidejte k této funkci zpracování chyb",
|
||||
@@ -352,7 +352,7 @@ export const dict = {
|
||||
"prompt.example.21": "Pomozte mi napsat migrační skript",
|
||||
"prompt.example.22": "Implementujte ukládání do mezipaměti pro tento koncový bod",
|
||||
"prompt.example.23": "Přidejte stránkování do tohoto seznamu",
|
||||
"prompt.example.24": "Vytvořte příkaz CLI pro...",
|
||||
"prompt.example.24": "Vytvořte příkaz CLI pro…",
|
||||
"prompt.example.25": "Jak zde fungují proměnné prostředí?",
|
||||
"prompt.popover.emptyResults": "Žádné odpovídající výsledky",
|
||||
"prompt.popover.emptyCommands": "Žádné odpovídající příkazy",
|
||||
@@ -404,7 +404,7 @@ export const dict = {
|
||||
"dialog.directory.parent": "Rodič",
|
||||
"dialog.directory.readError": "Tuto složku nelze přečíst",
|
||||
"app.server.unreachable": "Nelze dosáhnout {{server}}",
|
||||
"app.server.retrying": "Automaticky opakování...",
|
||||
"app.server.retrying": "Automaticky opakování…",
|
||||
"app.server.otherServers": "Jiné servery",
|
||||
"dialog.server.title": "servery",
|
||||
"dialog.server.description": "Přepněte, ke kterému OpenCode serveru se tato aplikace připojuje.",
|
||||
@@ -414,7 +414,7 @@ export const dict = {
|
||||
"dialog.server.add.url": "Adresa serveru",
|
||||
"dialog.server.add.placeholder": "http://localhost:4096",
|
||||
"dialog.server.add.error": "Nelze se připojit k serveru",
|
||||
"dialog.server.add.checking": "Kontrola...",
|
||||
"dialog.server.add.checking": "Kontrola…",
|
||||
"dialog.server.add.button": "Přidat server",
|
||||
"dialog.server.add.name": "Název serveru (volitelné)",
|
||||
"dialog.server.add.namePlaceholder": "Localhost",
|
||||
@@ -439,26 +439,26 @@ export const dict = {
|
||||
"wsl.server.label": "WSL",
|
||||
"wsl.server.menu.label": "WSL server",
|
||||
"wsl.server.retryStart": "Zkuste spustit znovu",
|
||||
"wsl.server.updating": "Aktualizace...",
|
||||
"wsl.server.updating": "Aktualizace…",
|
||||
"wsl.onboarding.step.distro": "Vyberte distro",
|
||||
"wsl.onboarding.step.opencode": "OpenCode",
|
||||
"wsl.onboarding.checkingRuntime": "Kontrola WSL...",
|
||||
"wsl.onboarding.checkingRuntime": "Kontrola WSL…",
|
||||
"wsl.onboarding.restartRequired": "Windows vyžaduje restart k dokončení instalace WSL.",
|
||||
"wsl.onboarding.ready": "WSL je připraven.",
|
||||
"wsl.onboarding.required": "Pro pokračování je vyžadováno WSL.",
|
||||
"wsl.onboarding.checkingDistros": "Kontrola distribucí...",
|
||||
"wsl.onboarding.installingDistro": "Instalace {{distro}}...",
|
||||
"wsl.onboarding.checkingDistro": "Kontrola {{distro}}...",
|
||||
"wsl.onboarding.listingDistros": "Výpis distribucí...",
|
||||
"wsl.onboarding.checkingDistros": "Kontrola distribucí…",
|
||||
"wsl.onboarding.installingDistro": "Instalace {{distro}}…",
|
||||
"wsl.onboarding.checkingDistro": "Kontrola {{distro}}…",
|
||||
"wsl.onboarding.listingDistros": "Výpis distribucí…",
|
||||
"wsl.onboarding.distroReady": "{{distro}} je připraven.",
|
||||
"wsl.onboarding.distroNotInstalled": "{{distro}} ještě není nainstalováno.",
|
||||
"wsl.onboarding.openDistroOnce": "Pro dokončení nastavení jednou otevřete {{distro}}.",
|
||||
"wsl.onboarding.finishingDistro": "Dokončování nastavení pro {{distro}}.",
|
||||
"wsl.onboarding.pickDistro": "Vyberte distribuci nebo ji nainstalujte níže.",
|
||||
"wsl.onboarding.checkingOpencode": "Kontrola OpenCode...",
|
||||
"wsl.onboarding.checkingOpencodeIn": "Kontrola OpenCode v {{distro}}...",
|
||||
"wsl.onboarding.updatingOpencode": "Aktualizace OpenCode...",
|
||||
"wsl.onboarding.updatingOpencodeIn": "Aktualizace OpenCode v {{distro}}...",
|
||||
"wsl.onboarding.checkingOpencode": "Kontrola OpenCode…",
|
||||
"wsl.onboarding.checkingOpencodeIn": "Kontrola OpenCode v {{distro}}…",
|
||||
"wsl.onboarding.updatingOpencode": "Aktualizace OpenCode…",
|
||||
"wsl.onboarding.updatingOpencodeIn": "Aktualizace OpenCode v {{distro}}…",
|
||||
"wsl.onboarding.updateOpencodeIn": "Aktualizace OpenCode v {{distro}}.",
|
||||
"wsl.onboarding.updateOpencode": "Aktualizovat OpenCode",
|
||||
"wsl.onboarding.opencodeReadyIn": "OpenCode je připraveno v {{distro}}.",
|
||||
@@ -467,11 +467,11 @@ export const dict = {
|
||||
"wsl.onboarding.installOpencode": "Instalovat OpenCode",
|
||||
"wsl.onboarding.chooseDistroFirst": "Nejprve si vyberte distro.",
|
||||
"wsl.onboarding.loadFailed": "Nepodařilo se načíst stav WSL.",
|
||||
"wsl.onboarding.loading": "Načítání...",
|
||||
"wsl.onboarding.loading": "Načítání…",
|
||||
"wsl.onboarding.installedDistros": "Nainstalované distribuce",
|
||||
"wsl.onboarding.checkAgain": "Zkontrolujte znovu",
|
||||
"wsl.onboarding.distroStatus.ready": "Připraveno",
|
||||
"wsl.onboarding.distroStatus.checking": "Kontrola...",
|
||||
"wsl.onboarding.distroStatus.checking": "Kontrola…",
|
||||
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode není nainstalováno",
|
||||
"wsl.onboarding.distroStatus.missingTools": "Chybí bash, curl",
|
||||
"wsl.onboarding.distroStatus.unsupported": "Nepodporováno · Použijte WSL 2",
|
||||
@@ -490,7 +490,7 @@ export const dict = {
|
||||
"wsl.onboarding.allDistrosAdded": "Všechny nainstalované distribuce jsou již přidány.",
|
||||
"wsl.onboarding.noDistros": "Dosud nebyla zjištěna žádná distribuce.",
|
||||
"wsl.onboarding.install": "Instalovat",
|
||||
"wsl.onboarding.installing": "Instalace...",
|
||||
"wsl.onboarding.installing": "Instalace…",
|
||||
"wsl.onboarding.installDistro": "Nainstalujte distro",
|
||||
"wsl.onboarding.searchDistros": "Hledat distribuce",
|
||||
"wsl.onboarding.wsl2Required": "WSL 2 je vyžadováno.",
|
||||
@@ -502,7 +502,7 @@ export const dict = {
|
||||
"wsl.onboarding.unknown": "neznámý",
|
||||
"wsl.onboarding.desktopVersion": "desktop {{version}}",
|
||||
"wsl.onboarding.versionMismatch": "Nainstalovaná verze neodpovídá verzi aplikace pro stolní počítače.",
|
||||
"wsl.onboarding.adding": "Přidávání...",
|
||||
"wsl.onboarding.adding": "Přidávání…",
|
||||
"dialog.project.edit.title": "Upravit projekt",
|
||||
"dialog.project.edit.name": "Jméno",
|
||||
"dialog.project.edit.icon": "ikona",
|
||||
@@ -608,7 +608,7 @@ export const dict = {
|
||||
"error.page.action.report": "Nahlásit chybu",
|
||||
"error.page.action.reported": "Nahlášena chyba",
|
||||
"error.page.action.exportLogs": "Exportovat protokoly",
|
||||
"error.page.action.checking": "Kontrola...",
|
||||
"error.page.action.checking": "Kontrola…",
|
||||
"error.page.action.checkUpdates": "Zkontrolujte aktualizace",
|
||||
"error.page.action.updateTo": "Aktualizovat na {{version}}",
|
||||
"error.page.circular": "[Kruhový]",
|
||||
@@ -686,12 +686,12 @@ export const dict = {
|
||||
"session.review.filesChanged": "Soubory změněny {{count}}",
|
||||
"session.review.change.one": "Změna",
|
||||
"session.review.change.other": "Změny",
|
||||
"session.review.loadingChanges": "Načítání změn...",
|
||||
"session.review.loadingChanges": "Načítání změn…",
|
||||
"session.review.empty": "V této relaci zatím žádné změny",
|
||||
"session.review.noVcs": "Ne Git Zjištěn systém správy verzí, změny se nezobrazují",
|
||||
"session.review.noVcs.createGit.title": "Vytvořte úložiště Git",
|
||||
"session.review.noVcs.createGit.description": "Sledujte, kontrolujte a vracejte změny v tomto projektu",
|
||||
"session.review.noVcs.createGit.actionLoading": "Vytváření Git úložiště...",
|
||||
"session.review.noVcs.createGit.actionLoading": "Vytváření Git úložiště…",
|
||||
"session.review.noVcs.createGit.action": "Vytvořit Git úložiště",
|
||||
"session.review.noSnapshot": "Sledování snímků je v konfiguraci zakázáno, takže změny relace nejsou dostupné",
|
||||
"session.review.noChanges": "Žádné změny",
|
||||
@@ -702,9 +702,9 @@ export const dict = {
|
||||
"session.files.empty": "Žádné soubory",
|
||||
"session.files.binaryContent": "Binární soubor (obsah nelze zobrazit)",
|
||||
"session.messages.renderEarlier": "Vykreslit dřívější zprávy",
|
||||
"session.messages.loadingEarlier": "Načítání dřívějších zpráv...",
|
||||
"session.messages.loadingEarlier": "Načítání dřívějších zpráv…",
|
||||
"session.messages.loadEarlier": "Načíst dřívější zprávy",
|
||||
"session.messages.loading": "Načítání zpráv...",
|
||||
"session.messages.loading": "Načítání zpráv…",
|
||||
"session.messages.jumpToLatest": "Přejít na nejnovější",
|
||||
"session.context.addToContext": "Přidejte {{selection}} do kontextu",
|
||||
"session.todo.title": "Úkoly",
|
||||
@@ -767,8 +767,8 @@ export const dict = {
|
||||
"common.copied": "Zkopírováno",
|
||||
"lsp.tooltip.none": "Žádné LSP servery",
|
||||
"lsp.label.connected": "{{count}} LSP",
|
||||
"prompt.loading": "Načítání výzvy...",
|
||||
"terminal.loading": "Načítání terminálu...",
|
||||
"prompt.loading": "Načítání výzvy…",
|
||||
"terminal.loading": "Načítání terminálu…",
|
||||
"terminal.title": "Terminál",
|
||||
"terminal.title.numbered": "Terminál {{number}}",
|
||||
"terminal.close": "Zavřete terminál",
|
||||
@@ -932,9 +932,9 @@ export const dict = {
|
||||
"settings.updates.row.check.title": "Zkontrolujte aktualizace",
|
||||
"settings.updates.row.check.description": "Ručně zkontrolujte aktualizace a nainstalujte je, pokud jsou k dispozici",
|
||||
"settings.updates.action.checkNow": "Zkontrolujte nyní",
|
||||
"settings.updates.action.checking": "Kontrola...",
|
||||
"settings.updates.action.downloading": "Stahování...",
|
||||
"settings.updates.action.installing": "Instalace...",
|
||||
"settings.updates.action.checking": "Kontrola…",
|
||||
"settings.updates.action.downloading": "Stahování…",
|
||||
"settings.updates.action.installing": "Instalace…",
|
||||
"settings.updates.toast.latest.title": "Jste aktuální",
|
||||
"settings.updates.toast.latest.description": "Používáte nejnovější verzi OpenCode.",
|
||||
"sound.option.none": "žádný",
|
||||
@@ -1082,7 +1082,7 @@ export const dict = {
|
||||
"workspace.reset.success.title": "Obnovení pracovního prostoru",
|
||||
"workspace.reset.success.description": "Pracovní prostor nyní odpovídá výchozí větvi.",
|
||||
"workspace.error.stillPreparing": "Pracovní plocha se stále připravuje",
|
||||
"workspace.status.checking": "Kontrola nesloučených změn...",
|
||||
"workspace.status.checking": "Kontrola nesloučených změn…",
|
||||
"workspace.status.error": "Nelze ověřit stav git.",
|
||||
"workspace.status.clean": "Nebyly zjištěny žádné nesloučené změny.",
|
||||
"workspace.status.dirty": "V tomto pracovním prostoru byly zjištěny nesloučené změny.",
|
||||
|
||||
@@ -132,8 +132,8 @@ export const dict = {
|
||||
"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.inProgress": "Godkendelse i gang…",
|
||||
"provider.connect.status.waiting": "Venter på godkendelse…",
|
||||
"provider.connect.status.failed": "Godkendelse mislykkedes: {{error}}",
|
||||
"provider.connect.apiKey.description":
|
||||
"Indtast din API-nøgle til {{provider}} for at forbinde din konto og bruge modeller fra {{provider}} i OpenCode.",
|
||||
@@ -229,7 +229,7 @@ export const dict = {
|
||||
"common.goBack": "Gå tilbage",
|
||||
"common.goForward": "Naviger fremad",
|
||||
"common.loading": "Indlæser",
|
||||
"common.loading.ellipsis": "...",
|
||||
"common.loading.ellipsis": "…",
|
||||
"common.cancel": "Annuller",
|
||||
"common.clear": "Ryd",
|
||||
"common.connect": "Forbind",
|
||||
@@ -237,13 +237,13 @@ export const dict = {
|
||||
"common.continue": "Fortsæt",
|
||||
"common.submit": "Indsend",
|
||||
"common.save": "Gem",
|
||||
"common.saving": "Gemmer...",
|
||||
"common.saving": "Gemmer…",
|
||||
"common.default": "Standard",
|
||||
"common.attachment": "vedhæftning",
|
||||
|
||||
"prompt.placeholder.shell": "Indtast shell-kommando... {{example}}",
|
||||
"prompt.placeholder.normal": 'Spørg om hvad som helst... "{{example}}"',
|
||||
"prompt.placeholder.simple": "Spørg om hvad som helst...",
|
||||
"prompt.placeholder.shell": "Indtast shell-kommando… {{example}}",
|
||||
"prompt.placeholder.normal": 'Spørg om hvad som helst… "{{example}}"',
|
||||
"prompt.placeholder.simple": "Spørg om hvad som helst…",
|
||||
"prompt.placeholder.summarizeComments": "Opsummér kommentarer…",
|
||||
"prompt.placeholder.summarizeComment": "Opsummér kommentar…",
|
||||
"prompt.mode.shell": "Shell",
|
||||
@@ -264,7 +264,7 @@ export const dict = {
|
||||
"prompt.example.10": "Generer API-dokumentation",
|
||||
"prompt.example.11": "Optimer databaseforespørgsler",
|
||||
"prompt.example.12": "Tilføj validering af input",
|
||||
"prompt.example.13": "Opret en ny komponent til...",
|
||||
"prompt.example.13": "Opret en ny komponent til…",
|
||||
"prompt.example.14": "Hvordan deployerer jeg dette projekt?",
|
||||
"prompt.example.15": "Gennemgå min kode for bedste praksis",
|
||||
"prompt.example.16": "Tilføj fejlhåndtering til denne funktion",
|
||||
@@ -275,7 +275,7 @@ export const dict = {
|
||||
"prompt.example.21": "Hjælp mig med at skrive et migreringsscript",
|
||||
"prompt.example.22": "Implementer caching for dette endpoint",
|
||||
"prompt.example.23": "Tilføj sideinddeling til denne liste",
|
||||
"prompt.example.24": "Opret en CLI-kommando til...",
|
||||
"prompt.example.24": "Opret en CLI-kommando til…",
|
||||
"prompt.example.25": "Hvordan fungerer miljøvariabler her?",
|
||||
|
||||
"prompt.popover.emptyResults": "Ingen matchende resultater",
|
||||
@@ -342,7 +342,7 @@ export const dict = {
|
||||
"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...",
|
||||
"dialog.server.add.checking": "Tjekker…",
|
||||
"dialog.server.add.button": "Tilføj server",
|
||||
"dialog.server.add.name": "Servernavn (valgfrit)",
|
||||
"dialog.server.add.namePlaceholder": "Localhost",
|
||||
@@ -367,26 +367,26 @@ export const dict = {
|
||||
"wsl.server.label": "WSL",
|
||||
"wsl.server.menu.label": "WSL-server",
|
||||
"wsl.server.retryStart": "Prøv at starte igen",
|
||||
"wsl.server.updating": "Opdaterer...",
|
||||
"wsl.server.updating": "Opdaterer…",
|
||||
"wsl.onboarding.step.distro": "Vælg distribution",
|
||||
"wsl.onboarding.step.opencode": "OpenCode",
|
||||
"wsl.onboarding.checkingRuntime": "Tjekker WSL...",
|
||||
"wsl.onboarding.checkingRuntime": "Tjekker WSL…",
|
||||
"wsl.onboarding.restartRequired": "Windows skal genstartes for at fuldføre installationen af WSL.",
|
||||
"wsl.onboarding.ready": "WSL er klar.",
|
||||
"wsl.onboarding.required": "WSL er påkrævet for at fortsætte.",
|
||||
"wsl.onboarding.checkingDistros": "Tjekker distributioner...",
|
||||
"wsl.onboarding.installingDistro": "Installerer {{distro}}...",
|
||||
"wsl.onboarding.checkingDistro": "Tjekker {{distro}}...",
|
||||
"wsl.onboarding.listingDistros": "Henter liste over distributioner...",
|
||||
"wsl.onboarding.checkingDistros": "Tjekker distributioner…",
|
||||
"wsl.onboarding.installingDistro": "Installerer {{distro}}…",
|
||||
"wsl.onboarding.checkingDistro": "Tjekker {{distro}}…",
|
||||
"wsl.onboarding.listingDistros": "Henter liste over distributioner…",
|
||||
"wsl.onboarding.distroReady": "{{distro}} er klar.",
|
||||
"wsl.onboarding.distroNotInstalled": "{{distro}} er ikke installeret endnu.",
|
||||
"wsl.onboarding.openDistroOnce": "Åbn {{distro}} én gang for at fuldføre opsætningen.",
|
||||
"wsl.onboarding.finishingDistro": "Fuldfører opsætningen af {{distro}}.",
|
||||
"wsl.onboarding.pickDistro": "Vælg en distribution, eller installer en nedenfor.",
|
||||
"wsl.onboarding.checkingOpencode": "Tjekker OpenCode...",
|
||||
"wsl.onboarding.checkingOpencodeIn": "Tjekker OpenCode i {{distro}}...",
|
||||
"wsl.onboarding.updatingOpencode": "Opdaterer OpenCode...",
|
||||
"wsl.onboarding.updatingOpencodeIn": "Opdaterer OpenCode i {{distro}}...",
|
||||
"wsl.onboarding.checkingOpencode": "Tjekker OpenCode…",
|
||||
"wsl.onboarding.checkingOpencodeIn": "Tjekker OpenCode i {{distro}}…",
|
||||
"wsl.onboarding.updatingOpencode": "Opdaterer OpenCode…",
|
||||
"wsl.onboarding.updatingOpencodeIn": "Opdaterer OpenCode i {{distro}}…",
|
||||
"wsl.onboarding.updateOpencodeIn": "Opdater OpenCode i {{distro}}.",
|
||||
"wsl.onboarding.updateOpencode": "Opdater OpenCode",
|
||||
"wsl.onboarding.opencodeReadyIn": "OpenCode er klar i {{distro}}.",
|
||||
@@ -395,11 +395,11 @@ export const dict = {
|
||||
"wsl.onboarding.installOpencode": "Installer OpenCode",
|
||||
"wsl.onboarding.chooseDistroFirst": "Vælg først en distribution.",
|
||||
"wsl.onboarding.loadFailed": "Kunne ikke indlæse WSL-status.",
|
||||
"wsl.onboarding.loading": "Indlæser...",
|
||||
"wsl.onboarding.loading": "Indlæser…",
|
||||
"wsl.onboarding.installedDistros": "Installerede distributioner",
|
||||
"wsl.onboarding.checkAgain": "Tjek igen",
|
||||
"wsl.onboarding.distroStatus.ready": "Klar",
|
||||
"wsl.onboarding.distroStatus.checking": "Tjekker...",
|
||||
"wsl.onboarding.distroStatus.checking": "Tjekker…",
|
||||
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode er ikke installeret",
|
||||
"wsl.onboarding.distroStatus.missingTools": "Mangler bash, curl",
|
||||
"wsl.onboarding.distroStatus.unsupported": "Ikke understøttet · Brug WSL 2",
|
||||
@@ -418,7 +418,7 @@ export const dict = {
|
||||
"wsl.onboarding.allDistrosAdded": "Alle installerede distributioner er allerede tilføjet.",
|
||||
"wsl.onboarding.noDistros": "Ingen distributioner fundet endnu.",
|
||||
"wsl.onboarding.install": "Installer",
|
||||
"wsl.onboarding.installing": "Installerer...",
|
||||
"wsl.onboarding.installing": "Installerer…",
|
||||
"wsl.onboarding.installDistro": "Installer distribution",
|
||||
"wsl.onboarding.searchDistros": "Søg efter distributioner",
|
||||
"wsl.onboarding.wsl2Required": "WSL 2 er påkrævet.",
|
||||
@@ -430,7 +430,7 @@ export const dict = {
|
||||
"wsl.onboarding.unknown": "ukendt",
|
||||
"wsl.onboarding.desktopVersion": "desktop {{version}}",
|
||||
"wsl.onboarding.versionMismatch": "Den installerede version matcher ikke desktopappens version.",
|
||||
"wsl.onboarding.adding": "Tilføjer...",
|
||||
"wsl.onboarding.adding": "Tilføjer…",
|
||||
|
||||
"dialog.project.edit.title": "Rediger projekt",
|
||||
"dialog.project.edit.name": "Navn",
|
||||
@@ -552,7 +552,7 @@ export const dict = {
|
||||
"error.page.action.report": "Rapportér fejl",
|
||||
"error.page.action.reported": "Fejl rapporteret",
|
||||
"error.page.action.exportLogs": "Eksportér logfiler",
|
||||
"error.page.action.checking": "Tjekker...",
|
||||
"error.page.action.checking": "Tjekker…",
|
||||
"error.page.action.checkUpdates": "Tjek for opdateringer",
|
||||
"error.page.action.updateTo": "Opdater til {{version}}",
|
||||
"error.page.report.prefix": "Rapporter venligst denne fejl til OpenCode-teamet",
|
||||
@@ -629,7 +629,7 @@ export const dict = {
|
||||
"session.review.filesChanged": "{{count}} ændrede filer",
|
||||
"session.review.change.one": "Ændring",
|
||||
"session.review.change.other": "Ændringer",
|
||||
"session.review.loadingChanges": "Indlæser ændringer...",
|
||||
"session.review.loadingChanges": "Indlæser ændringer…",
|
||||
"session.review.empty": "Ingen ændringer i denne session endnu",
|
||||
"session.review.noVcs": "Intet Git-versionsstyringssystem fundet, så ændringer vises ikke",
|
||||
"session.review.noSnapshot":
|
||||
@@ -642,9 +642,9 @@ export const dict = {
|
||||
"session.files.empty": "Ingen filer",
|
||||
"session.files.binaryContent": "Binær fil (indhold kan ikke vises)",
|
||||
"session.messages.renderEarlier": "Vis tidligere beskeder",
|
||||
"session.messages.loadingEarlier": "Indlæser tidligere beskeder...",
|
||||
"session.messages.loadingEarlier": "Indlæser tidligere beskeder…",
|
||||
"session.messages.loadEarlier": "Indlæs tidligere beskeder",
|
||||
"session.messages.loading": "Indlæser beskeder...",
|
||||
"session.messages.loading": "Indlæser beskeder…",
|
||||
|
||||
"session.messages.jumpToLatest": "Gå til seneste",
|
||||
"session.context.addToContext": "Tilføj {{selection}} til kontekst",
|
||||
@@ -691,8 +691,8 @@ export const dict = {
|
||||
"lsp.tooltip.none": "Ingen LSP-servere",
|
||||
"lsp.label.connected": "{{count}} LSP",
|
||||
|
||||
"prompt.loading": "Indlæser prompt...",
|
||||
"terminal.loading": "Indlæser terminal...",
|
||||
"prompt.loading": "Indlæser prompt…",
|
||||
"terminal.loading": "Indlæser terminal…",
|
||||
"terminal.title": "Terminal",
|
||||
"terminal.title.numbered": "Terminal {{number}}",
|
||||
"terminal.close": "Luk terminal",
|
||||
@@ -812,9 +812,9 @@ export const dict = {
|
||||
"settings.updates.row.check.title": "Tjek for opdateringer",
|
||||
"settings.updates.row.check.description": "Tjek manuelt for opdateringer og installer, hvis tilgængelig",
|
||||
"settings.updates.action.checkNow": "Tjek nu",
|
||||
"settings.updates.action.checking": "Tjekker...",
|
||||
"settings.updates.action.downloading": "Downloader...",
|
||||
"settings.updates.action.installing": "Installerer...",
|
||||
"settings.updates.action.checking": "Tjekker…",
|
||||
"settings.updates.action.downloading": "Downloader…",
|
||||
"settings.updates.action.installing": "Installerer…",
|
||||
"settings.updates.toast.latest.title": "Du er opdateret",
|
||||
"settings.updates.toast.latest.description": "Du kører den nyeste version af OpenCode.",
|
||||
|
||||
@@ -970,7 +970,7 @@ export const dict = {
|
||||
"workspace.reset.success.title": "Arbejdsområde nulstillet",
|
||||
"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.checking": "Tjekker for uflettede ændringer…",
|
||||
"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.",
|
||||
@@ -1000,12 +1000,12 @@ export const dict = {
|
||||
"settings.providers.custom.description": "Tilføj en OpenAI-kompatibel udbyder via basis-URL.",
|
||||
|
||||
"app.server.unreachable": "Kunne ikke nå {{server}}",
|
||||
"app.server.retrying": "Prøver igen automatisk...",
|
||||
"app.server.retrying": "Prøver igen automatisk…",
|
||||
"app.server.otherServers": "Andre servere",
|
||||
"dialog.server.add.passwordPlaceholder": "adgangskode",
|
||||
"session.review.noVcs.createGit.title": "Opret et Git-repository",
|
||||
"session.review.noVcs.createGit.description": "Spor, gennemgå og fortryd ændringer i dette projekt",
|
||||
"session.review.noVcs.createGit.actionLoading": "Opretter Git-repository...",
|
||||
"session.review.noVcs.createGit.actionLoading": "Opretter Git-repository…",
|
||||
"session.review.noVcs.createGit.action": "Opret Git-repository",
|
||||
"session.todo.progress": "{{done}} af {{total}} opgaver fuldført",
|
||||
"session.question.progress": "{{current}} af {{total}} spørgsmål",
|
||||
@@ -1090,13 +1090,13 @@ export const dict = {
|
||||
"desktop.menu.go": "Gå",
|
||||
"desktop.menu.window": "Vindue",
|
||||
"desktop.menu.help": "Hjælp",
|
||||
"desktop.menu.checkForUpdates": "Søg efter opdateringer...",
|
||||
"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.exportLogs": "Eksportér logfiler…",
|
||||
"desktop.menu.newSession": "Ny session",
|
||||
"desktop.menu.openProject": "Åbn projekt...",
|
||||
"desktop.menu.openProject": "Åbn projekt…",
|
||||
"desktop.menu.newWindow": "Nyt vindue",
|
||||
"desktop.menu.closeWindow": "Luk vindue",
|
||||
"desktop.menu.undo": "Fortryd",
|
||||
|
||||
@@ -235,14 +235,14 @@ export const DESKTOP_NATIVE_ENGLISH = {
|
||||
"desktop.menu.go": "Go",
|
||||
"desktop.menu.window": "Window",
|
||||
"desktop.menu.help": "Help",
|
||||
"desktop.menu.checkForUpdates": "Check for Updates...",
|
||||
"desktop.menu.installCli": "Install CLI...",
|
||||
"desktop.menu.checkForUpdates": "Check for Updates…",
|
||||
"desktop.menu.installCli": "Install CLI…",
|
||||
"desktop.menu.settings": "Settings",
|
||||
"desktop.menu.reloadWebview": "Reload Webview",
|
||||
"desktop.menu.restart": "Restart",
|
||||
"desktop.menu.exportLogs": "Export Logs...",
|
||||
"desktop.menu.exportLogs": "Export Logs…",
|
||||
"desktop.menu.newSession": "New Session",
|
||||
"desktop.menu.openProject": "Open Project...",
|
||||
"desktop.menu.openProject": "Open Project…",
|
||||
"desktop.menu.newWindow": "New Window",
|
||||
"desktop.menu.closeWindow": "Close Window",
|
||||
"desktop.menu.undo": "Undo",
|
||||
|
||||
@@ -6,13 +6,13 @@ export const dict = {
|
||||
"desktop.menu.go": "ދޭ",
|
||||
"desktop.menu.window": "ކުޑަދޮރު",
|
||||
"desktop.menu.help": "އެހީވުން",
|
||||
"desktop.menu.checkForUpdates": "އަޕްޑޭޓްސް އަށް ޗެކް ކޮށްލައްވާ...",
|
||||
"desktop.menu.checkForUpdates": "އަޕްޑޭޓްސް އަށް ޗެކް ކޮށްލައްވާ…",
|
||||
"desktop.menu.settings": "ސެޓިންގސް",
|
||||
"desktop.menu.reloadWebview": "ވެބްވިއު ރީލޯޑް ކުރާށެވެ",
|
||||
"desktop.menu.restart": "އަލުން ފަށާށެވެ",
|
||||
"desktop.menu.exportLogs": "އެކްސްޕޯޓް ލޮގްސް...",
|
||||
"desktop.menu.exportLogs": "އެކްސްޕޯޓް ލޮގްސް…",
|
||||
"desktop.menu.newSession": "އައު ސެޝަން",
|
||||
"desktop.menu.openProject": "އޯޕަން ޕްރޮޖެކްޓް...",
|
||||
"desktop.menu.openProject": "އޯޕަން ޕްރޮޖެކްޓް…",
|
||||
"desktop.menu.newWindow": "ނިއު ވިންޑޯ",
|
||||
"desktop.menu.closeWindow": "ވިންޑޯ ބަންދުކުރުން",
|
||||
"desktop.menu.undo": "އަންޑޯ",
|
||||
@@ -216,8 +216,8 @@ export const dict = {
|
||||
"provider.connect.method.apiKey": "API ކީ އެވެ",
|
||||
"provider.connect.method.browser": "ބްރައުޒާ އެވެ",
|
||||
"provider.connect.method.headless": "އިންޓަފޭސް ނެތި",
|
||||
"provider.connect.status.inProgress": "ހުއްދަ ދިނުމުގެ މަސައްކަތް ކުރިއަށްދާ...",
|
||||
"provider.connect.status.waiting": "ހުއްދައަށް އިންތިޒާރު ކުރަމުން...",
|
||||
"provider.connect.status.inProgress": "ހުއްދަ ދިނުމުގެ މަސައްކަތް ކުރިއަށްދާ…",
|
||||
"provider.connect.status.waiting": "ހުއްދައަށް އިންތިޒާރު ކުރަމުން…",
|
||||
"provider.connect.status.failed": "ހުއްދަ ދިނުން ނާކާމިޔާބު: {{error}}",
|
||||
"provider.connect.apiKey.description":
|
||||
"ތިބާގެ އެކައުންޓް ގުޅުވައި، OpenCode ގައި {{provider}} މޮޑެލްތައް ބޭނުންކުރުމަށް {{provider}} API ކީ ލިޔުއްވާ.",
|
||||
@@ -312,7 +312,7 @@ export const dict = {
|
||||
"common.goBack": "ފަހަތަށް ދަތުރުކޮށްލާށެވެ",
|
||||
"common.goForward": "ކުރިއަށް ދަތުރުކޮށްލާށެވެ",
|
||||
"common.loading": "ލޯޑިންގ",
|
||||
"common.loading.ellipsis": "...",
|
||||
"common.loading.ellipsis": "…",
|
||||
"common.cancel": "ކެންސަލް",
|
||||
"common.clear": "ސާފުކޮށް",
|
||||
"common.open": "ހުޅުވުން",
|
||||
@@ -321,14 +321,14 @@ export const dict = {
|
||||
"common.continue": "ކުރިއަށްގެންދިޔުން",
|
||||
"common.submit": "ހުށަހެޅުން",
|
||||
"common.save": "ރައްކާކުރުން",
|
||||
"common.saving": "ސޭވިންގ...",
|
||||
"common.saving": "ސޭވިންގ…",
|
||||
"common.default": "ޑީފޯލްޓް",
|
||||
"common.attachment": "އެކުލެވުން",
|
||||
"prompt.placeholder.shell": "ޝެލް ކޮމާންޑް ލިޔުއްވާ... {{example}}",
|
||||
"prompt.placeholder.normal": 'ކޮންމެ އެއްޗަކާ އަހާލަން... "{{example}}".',
|
||||
"prompt.placeholder.simple": "ކޮންމެ އެއްޗެއް އަހާލަން...",
|
||||
"prompt.placeholder.summarizeComments": "ކޮމެންޓްތައް ޚުލާޞާކޮށްލައްވާ...",
|
||||
"prompt.placeholder.summarizeComment": "ކޮމެންޓް ޚުލާޞާކޮށްލައްވާ...",
|
||||
"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 އިން ނުކުތުމަށްޓަކައެވެ",
|
||||
@@ -346,7 +346,7 @@ export const dict = {
|
||||
"prompt.example.10": "API ޑޮކިއުމަންޓޭޝަން ޖެނެރޭޓްކުރުން",
|
||||
"prompt.example.11": "ޑޭޓާބޭސް ކިއުއަރީތައް އޮޕްޓިމައިޒް ކުރުން",
|
||||
"prompt.example.12": "އިންޕުޓް ވެލިޑޭޝަން އިތުރުކުރުން",
|
||||
"prompt.example.13": "އަށް އާ ކޮމްޕޮނެންޓެއް އުފެއްދުން...",
|
||||
"prompt.example.13": "އަށް އާ ކޮމްޕޮނެންޓެއް އުފެއްދުން…",
|
||||
"prompt.example.14": "މި ޕްރޮޖެކްޓް ޑިޕްލޮއި ކުރާނީ ކިހިނެއް ހެއްޔެވެ؟",
|
||||
"prompt.example.15": "އެންމެ ރަނގަޅު އުސޫލުތަކަށް އަހަރެންގެ ކޯޑް ރިވިއުކުރުން",
|
||||
"prompt.example.16": "މި ފަންކްޝަނަށް އެރަރ ހެންޑްލިންގ އިތުރުކުރުން",
|
||||
@@ -410,7 +410,7 @@ export const dict = {
|
||||
"dialog.directory.parent": "ބެލެނިވެރިޔާއެވެ",
|
||||
"dialog.directory.readError": "މި ފޯލްޑަރ ކިޔަން ނުކުޅެދިއްޖެއެވެ",
|
||||
"app.server.unreachable": "{{server}} އަށް ވާސިލްވެވޭ ގޮތެއް ނުވިއެވެ",
|
||||
"app.server.retrying": "އޮޓޮމެޓިކުން އަލުން މަސައްކަތް ކުރަނީ...",
|
||||
"app.server.retrying": "އޮޓޮމެޓިކުން އަލުން މަސައްކަތް ކުރަނީ…",
|
||||
"app.server.otherServers": "އެހެން ސަރވަރތަކެވެ",
|
||||
"dialog.server.title": "ސަރވަރސް",
|
||||
"dialog.server.description": "މި އެޕް ގުޅޭނީ ކޮން OpenCode ސަރވަރަކާ ބަދަލުކޮށްލާށެވެ.",
|
||||
@@ -420,7 +420,7 @@ export const dict = {
|
||||
"dialog.server.add.url": "ސަރވަރ އެޑްރެސް",
|
||||
"dialog.server.add.placeholder": "http://localhost:4096 އެވެ",
|
||||
"dialog.server.add.error": "ސަރވަރ އާއި ގުޅެވޭ ގޮތެއް ނުވިއެވެ",
|
||||
"dialog.server.add.checking": "ޗެކް ކުރަމުން...",
|
||||
"dialog.server.add.checking": "ޗެކް ކުރަމުން…",
|
||||
"dialog.server.add.button": "ސަރވަރ އިތުރުކުރުން",
|
||||
"dialog.server.add.name": "ސަރވަރ ނަން (އިޚްތިޔާރީ)",
|
||||
"dialog.server.add.namePlaceholder": "Localhost އެވެ",
|
||||
@@ -445,26 +445,26 @@ export const dict = {
|
||||
"wsl.server.label": "WSL އެވެ",
|
||||
"wsl.server.menu.label": "WSL ސަރވަރ އެވެ",
|
||||
"wsl.server.retryStart": "އަލުން ފަށަން މަސައްކަތް ކުރާށެވެ",
|
||||
"wsl.server.updating": "އަޕްޑޭޓް ކުރަމުން...",
|
||||
"wsl.server.updating": "އަޕްޑޭޓް ކުރަމުން…",
|
||||
"wsl.onboarding.step.distro": "ޑިސްޓްރޯ ހޮވާށެވެ",
|
||||
"wsl.onboarding.step.opencode": "OpenCode އެވެ",
|
||||
"wsl.onboarding.checkingRuntime": "ޗެކް ކުރަމުންދަނީ WSL...",
|
||||
"wsl.onboarding.checkingRuntime": "ޗެކް ކުރަމުންދަނީ WSL…",
|
||||
"wsl.onboarding.restartRequired": "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.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.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}} ގައެވެ.",
|
||||
@@ -473,11 +473,11 @@ export const dict = {
|
||||
"wsl.onboarding.installOpencode": "OpenCode އިންސްޓޯލް ކުރާށެވެ",
|
||||
"wsl.onboarding.chooseDistroFirst": "ފުރަތަމަ ޑިސްޓްރޯއެއް ހޮވާށެވެ.",
|
||||
"wsl.onboarding.loadFailed": "WSL ސްޓޭޓް ލޯޑް ނުކުރެވިއްޖެއެވެ.",
|
||||
"wsl.onboarding.loading": "ލޯޑިންގ...",
|
||||
"wsl.onboarding.loading": "ލޯޑިންގ…",
|
||||
"wsl.onboarding.installedDistros": "އިންސްޓޯލް ކޮށްފައިވާ ޑިސްޓްރޯސް",
|
||||
"wsl.onboarding.checkAgain": "އަނެއްކާވެސް ޗެކް ކުރާށެވެ",
|
||||
"wsl.onboarding.distroStatus.ready": "ތައްޔާރު",
|
||||
"wsl.onboarding.distroStatus.checking": "ޗެކް ކުރަމުން...",
|
||||
"wsl.onboarding.distroStatus.checking": "ޗެކް ކުރަމުން…",
|
||||
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode އިންސްޓޯލްކޮށްފައެއް ނުވެއެވެ",
|
||||
"wsl.onboarding.distroStatus.missingTools": "ގެއްލިފައިވަނީ bash، curl އެވެ",
|
||||
"wsl.onboarding.distroStatus.unsupported": "ސަޕޯޓް ނުކުރެވޭ · WSL ބޭނުންކުރުން 2",
|
||||
@@ -496,7 +496,7 @@ export const dict = {
|
||||
"wsl.onboarding.allDistrosAdded": "އިންސްޓޯލްކޮށްފައިވާ ހުރިހާ ޑިސްޓްރޯތަކެއް މިހާރުވެސް އިތުރުކޮށްފައިވެއެވެ.",
|
||||
"wsl.onboarding.noDistros": "އަދި ޑިސްޓްރޯއެއް ހޯދިފައެއް ނުވެއެވެ.",
|
||||
"wsl.onboarding.install": "އެޅުން",
|
||||
"wsl.onboarding.installing": "އިންސްޓޯލް ކުރަމުން...",
|
||||
"wsl.onboarding.installing": "އިންސްޓޯލް ކުރަމުން…",
|
||||
"wsl.onboarding.installDistro": "ޑިސްޓްރޯ އިންސްޓޯލް ކުރާށެވެ",
|
||||
"wsl.onboarding.searchDistros": "ޑިސްޓްރޯސް ހޯދުން",
|
||||
"wsl.onboarding.wsl2Required": "WSL 2 ބޭނުންވެއެވެ.",
|
||||
@@ -508,7 +508,7 @@ export const dict = {
|
||||
"wsl.onboarding.unknown": "ނޭނގޭ އެއްޗެއް",
|
||||
"wsl.onboarding.desktopVersion": "ޑެސްކްޓޮޕް {{version}} އެވެ",
|
||||
"wsl.onboarding.versionMismatch": "އިންސްޓޯލް ކޮށްފައިވާ ވަރޝަން ޑެސްކްޓޮޕް އެޕް ވަރޝަން އާއި އެއްގޮތެއް ނުވެއެވެ.",
|
||||
"wsl.onboarding.adding": "އިތުރުކުރަނީ...",
|
||||
"wsl.onboarding.adding": "އިތުރުކުރަނީ…",
|
||||
"dialog.project.edit.title": "އެޑިޓް ޕްރޮޖެކްޓް",
|
||||
"dialog.project.edit.name": "ނަން",
|
||||
"dialog.project.edit.icon": "އައިކޮން",
|
||||
@@ -614,7 +614,7 @@ export const dict = {
|
||||
"error.page.action.report": "ރިޕޯޓް އެރަރ",
|
||||
"error.page.action.reported": "އެރަރ ރިޕޯޓް ކުރެވިއްޖެއެވެ",
|
||||
"error.page.action.exportLogs": "އެކްސްޕޯޓް ލޮގްސް",
|
||||
"error.page.action.checking": "ޗެކް ކުރަމުން...",
|
||||
"error.page.action.checking": "ޗެކް ކުރަމުން…",
|
||||
"error.page.action.checkUpdates": "އަޕްޑޭޓްތައް ހުރިތޯ ބަލާށެވެ",
|
||||
"error.page.action.updateTo": "{{version}} އަށް އަޕްޑޭޓް ކުރާށެވެ",
|
||||
"error.page.circular": "[ސާކިއުލާ]",
|
||||
@@ -696,12 +696,12 @@ export const dict = {
|
||||
"session.review.filesChanged": "ފައިލްތައް ބަދަލުވެއްޖެ {{count}}",
|
||||
"session.review.change.one": "ބަދަލު",
|
||||
"session.review.change.other": "ބަދަލުތައް",
|
||||
"session.review.loadingChanges": "ބަދަލުތައް ލޯޑް ކުރަނީ...",
|
||||
"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.actionLoading": "Git ރިޕޮޒިޓަރީ އުފެއްދުމުގެ މަސައްކަތް…",
|
||||
"session.review.noVcs.createGit.action": "Git ރިޕޮޒިޓަރީ އުފެއްދުން",
|
||||
"session.review.noSnapshot":
|
||||
"ކޮންފިގްގައި ސްނެޕްޝޮޓް ޓްރެކިންގ ޑިސެބިލް ކޮށްފައި ހުރުމުން ސެޝަން ބަދަލުތައް ނުލިބެއެވެ",
|
||||
@@ -713,9 +713,9 @@ export const dict = {
|
||||
"session.files.empty": "ފައިލްތަކެއް ނެތެވެ",
|
||||
"session.files.binaryContent": "ބައިނަރީ ފައިލް (ކޮންޓެންޓް ނުދެއްކޭނެ)",
|
||||
"session.messages.renderEarlier": "ކުރީގެ މެސެޖުތައް ރެންޑަރ ކުރާށެވެ",
|
||||
"session.messages.loadingEarlier": "ކުރީގެ މެސެޖުތައް ލޯޑް ކުރަނީ...",
|
||||
"session.messages.loadingEarlier": "ކުރީގެ މެސެޖުތައް ލޯޑް ކުރަނީ…",
|
||||
"session.messages.loadEarlier": "ކުރީގެ މެސެޖުތައް ލޯޑް ކުރާށެވެ",
|
||||
"session.messages.loading": "މެސެޖުތައް ލޯޑް ކުރަނީ...",
|
||||
"session.messages.loading": "މެސެޖުތައް ލޯޑް ކުރަނީ…",
|
||||
"session.messages.jumpToLatest": "އެންމެ ފަހުގެ ވާހަކައަށް ފުންމާލާށެވެ",
|
||||
"session.context.addToContext": "ކޮންޓެކްސްޓަށް {{selection}} އިތުރުކުރުން",
|
||||
"session.todo.title": "ޓޮޑޯސް އެވެ",
|
||||
@@ -737,7 +737,7 @@ export const dict = {
|
||||
"session.new.workspace.runIn": "ރަން ސެޝަން އިން",
|
||||
"session.new.workspace.triggerLocal": "ލޯކަލް",
|
||||
"session.new.workspace.local": "ލޯކަލް ރިޕޮޒިޓަރީ",
|
||||
"session.new.workspace.existing": "ވޯކްސްޕޭސް...",
|
||||
"session.new.workspace.existing": "ވޯކްސްޕޭސް…",
|
||||
"session.new.git.none": "އެއްވެސް Git އެއް ނެތެވެ",
|
||||
"session.new.lastModified": "އެންމެ ފަހުން ބަދަލުކުރީ",
|
||||
"session.header.search.placeholder": "{{project}} ހޯދުން",
|
||||
@@ -776,8 +776,8 @@ export const dict = {
|
||||
"common.copied": "ކޮޕީކޮށްފައި",
|
||||
"lsp.tooltip.none": "LSP ސަރވަރެއް ނެތެވެ",
|
||||
"lsp.label.connected": "{{count}} LSP އެވެ",
|
||||
"prompt.loading": "ލޯޑިންގ ޕްރޮމްޕްޓް...",
|
||||
"terminal.loading": "ލޯޑިންގ ޓާމިނަލް...",
|
||||
"prompt.loading": "ލޯޑިންގ ޕްރޮމްޕްޓް…",
|
||||
"terminal.loading": "ލޯޑިންގ ޓާމިނަލް…",
|
||||
"terminal.title": "ޓާމިނަލް އެވެ",
|
||||
"terminal.title.numbered": "ޓާމިނަލް {{number}} އެވެ",
|
||||
"terminal.close": "ޓާމިނަލް ބަންދުކުރުން",
|
||||
@@ -943,9 +943,9 @@ export const dict = {
|
||||
"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.action.checking": "ޗެކް ކުރަމުން…",
|
||||
"settings.updates.action.downloading": "ޑައުންލޯޑް ކުރަމުން…",
|
||||
"settings.updates.action.installing": "އިންސްޓޯލް ކުރަމުން…",
|
||||
"settings.updates.toast.latest.title": "ޔޫ އާ އަޕް ޓު ޑޭޓް",
|
||||
"settings.updates.toast.latest.description": "ތިޔަ ހިންގަނީ OpenCode ގެ އެންމެ ފަހުގެ ވަރޝަން އެވެ.",
|
||||
"sound.option.none": "އެއްޗެއްނޫން",
|
||||
@@ -1096,7 +1096,7 @@ export const dict = {
|
||||
"workspace.reset.success.title": "ވޯކްސްޕޭސް ރީސެޓް ކުރުން",
|
||||
"workspace.reset.success.description": "ވޯކްސްޕޭސް މިހާރު ޑިފޯލްޓް ބްރާންޗާ ދިމާވެއެވެ.",
|
||||
"workspace.error.stillPreparing": "ވޯކްސްޕޭސް އަދިވެސް ދަނީ ތައްޔާރުވަމުންނެވެ",
|
||||
"workspace.status.checking": "އެއް ނުކުރެވި ހުރި ބަދަލުތައް ޗެކް ކުރަމުން...",
|
||||
"workspace.status.checking": "އެއް ނުކުރެވި ހުރި ބަދަލުތައް ޗެކް ކުރަމުން…",
|
||||
"workspace.status.error": "ގިޓް ސްޓޭޓަސް ޔަގީން ނުކުރެވެއެވެ.",
|
||||
"workspace.status.clean": "އެއްނުވާ ބަދަލެއް ފާހަގަކުރެވިފައެއް ނުވެއެވެ.",
|
||||
"workspace.status.dirty": "މި ވޯކްސްޕޭސްގައި ފާހަގަ ނުކުރެވި ހުރި ބަދަލުތައް.",
|
||||
|
||||
@@ -10,9 +10,9 @@ export const dict: Record<string, string> = {
|
||||
"desktop.menu.settings": "སྒྲིག་སྟངས་ཚུ།",
|
||||
"desktop.menu.reloadWebview": "ཡང་བསྐྱར་མངོན་གསལ་ Webview།",
|
||||
"desktop.menu.restart": "ལོག་འགོ་བཙུགས།",
|
||||
"desktop.menu.exportLogs": "ཕྱིར་འདྲེན་དྲན་ཐོ་...",
|
||||
"desktop.menu.exportLogs": "ཕྱིར་འདྲེན་དྲན་ཐོ་…",
|
||||
"desktop.menu.newSession": "ལཱ་ཡུན་གསརཔ།",
|
||||
"desktop.menu.openProject": "ལས་འགུལ་ཁ་ཕྱེ།...",
|
||||
"desktop.menu.openProject": "ལས་འགུལ་ཁ་ཕྱེ།…",
|
||||
"desktop.menu.newWindow": "སྒོ་སྒྲིག་གསརཔ།",
|
||||
"desktop.menu.closeWindow": "སྒོ་སྒྲིག་ཁ་བསྡམས།",
|
||||
"desktop.menu.undo": "འབད་བཤོལ་འབད།",
|
||||
@@ -311,7 +311,7 @@ export const dict: Record<string, string> = {
|
||||
"common.goBack": "ལོག་འགྲུལ་བསྐྱོད་འབད།",
|
||||
"common.goForward": "གདོང་ཕྱོགས་ལུ་འགྲུལ་བསྐྱོད་འབད།",
|
||||
"common.loading": "མངོན་གསལ་འབད་དོ།",
|
||||
"common.loading.ellipsis": "...",
|
||||
"common.loading.ellipsis": "…",
|
||||
"common.cancel": "ཆ་མེད་བཏང་པ་",
|
||||
"common.clear": "གསལ་ཏོག་ཏོ",
|
||||
"common.open": "ཕྱེ་ཕྱེཝ",
|
||||
@@ -323,11 +323,11 @@ export const dict: Record<string, string> = {
|
||||
"common.saving": "གསོག་འཇོག་འབད་དོ།",
|
||||
"common.default": "འཐུས་ཤོར",
|
||||
"common.attachment": "མཉམ༌སྦྲགས༌",
|
||||
"prompt.placeholder.shell": "Shell བརྡ་བཀོད་བཙུགས།... {{example}}",
|
||||
"prompt.placeholder.normal": 'ག་ཅི་ཡང་དྲིས... "{{example}}"',
|
||||
"prompt.placeholder.shell": "Shell བརྡ་བཀོད་བཙུགས།… {{example}}",
|
||||
"prompt.placeholder.normal": 'ག་ཅི་ཡང་དྲིས… "{{example}}"',
|
||||
"prompt.placeholder.simple": "ག་ཅི་ཡང་དྲིས།",
|
||||
"prompt.placeholder.summarizeComments": "བསམ་འཆར་ཚུ་བཅུད་བསྡུས་འབད།",
|
||||
"prompt.placeholder.summarizeComment": "བསམ་འཆར་བཅུད་བསྡུས།...",
|
||||
"prompt.placeholder.summarizeComment": "བསམ་འཆར་བཅུད་བསྡུས།…",
|
||||
"prompt.mode.shell": "Shell",
|
||||
"prompt.mode.normal": "འདི་འཕྲོ་ལས",
|
||||
"prompt.mode.shell.exit": "esc ཕྱིར་འཐོན་འབད་ནི།",
|
||||
@@ -447,23 +447,23 @@ export const dict: Record<string, string> = {
|
||||
"wsl.server.updating": "དུས་མཐུན་བཟོ་དོ།",
|
||||
"wsl.onboarding.step.distro": "བཀྲམ་སྤེལ་གདམ་ཁ་རྐྱབས།",
|
||||
"wsl.onboarding.step.opencode": "OpenCode",
|
||||
"wsl.onboarding.checkingRuntime": "ཞིབ་དཔྱད་འབད་དོ WSL...",
|
||||
"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.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.checkingOpencode": "OpenCodeཞིབ་དཔྱད་འབད་དོ།…",
|
||||
"wsl.onboarding.checkingOpencodeIn": "{{distro}}ནང་ OpenCode ཞིབ་དཔྱད་འབད་དོ།…",
|
||||
"wsl.onboarding.updatingOpencode": "OpenCodeདུས་མཐུན་བཟོ་དོ།…",
|
||||
"wsl.onboarding.updatingOpencodeIn": "{{distro}}ནང་ OpenCodeདུས་མཐུན་བཟོ་དོ།…",
|
||||
"wsl.onboarding.updateOpencodeIn": "OpenCodeའདི་ {{distro}}ནང་དུས་མཐུན་བཟོ།",
|
||||
"wsl.onboarding.updateOpencode": "OpenCodeདུས་མཐུན་བཟོ།",
|
||||
"wsl.onboarding.opencodeReadyIn": "OpenCode འདི་ {{distro}} ནང་ལུ་གྲ་སྒྲིག་ཡོདཔ་ཨིན།",
|
||||
@@ -695,13 +695,13 @@ export const dict: Record<string, string> = {
|
||||
"session.review.filesChanged": "ཡིག་སྣོད་ཚུ་བསྒྱུར་བཅོས་འབད་ཡོདཔ། {{count}}",
|
||||
"session.review.change.one": "འགྱུར་བ",
|
||||
"session.review.change.other": "བསྒྱུར་བཅོས་ཚུ།",
|
||||
"session.review.loadingChanges": "བསྒྱུར་བཅོས་ཚུ་མངོན་གསལ་འབད་དོ...",
|
||||
"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.actionLoading": "Git མཛོད་ཁང་གསར་བསྐྲུན་འབད་དོ།…",
|
||||
"session.review.noVcs.createGit.action": "Gitམཛོད་ཁང་གསར་བསྐྲུན་འབད།",
|
||||
"session.review.noSnapshot":
|
||||
"རིམ་སྒྲིག་ནང་ལུ་ པར་རིས་རྗེས་འདེད་འབད་ནི་འདི་ལྕོགས་མིན་བཟོ་ཡོདཔ་ལས་ ལཱ་ཡུན་བསྒྱུར་བཅོས་ཚུ་འཐོབ་མི་ཚུགས།",
|
||||
@@ -713,9 +713,9 @@ export const dict: Record<string, string> = {
|
||||
"session.files.empty": "ཡིག་སྣོད་ཚུ་མེད།",
|
||||
"session.files.binaryContent": "ཟུང་ལྡན་ཡིག་སྣོད་ (ནང་དོན་བཀྲམ་སྟོན་འབད་མི་བཏུབ།)",
|
||||
"session.messages.renderEarlier": "ཧེ་མའི་འཕྲིན་དོན་ཚུ་བཀྲམ་སྟོན་འབད།",
|
||||
"session.messages.loadingEarlier": "ཧེ་མའི་འཕྲིན་དོན་ཚུ་མངོན་གསལ་འབད་དོ།...",
|
||||
"session.messages.loadingEarlier": "ཧེ་མའི་འཕྲིན་དོན་ཚུ་མངོན་གསལ་འབད་དོ།…",
|
||||
"session.messages.loadEarlier": "ཧེ་མའི་འཕྲིན་དོན་ཚུ་མངོན་གསལ་འབད།",
|
||||
"session.messages.loading": "འཕྲིན་དོན་ཚུ་མངོན་གསལ་འབད་དོ།...",
|
||||
"session.messages.loading": "འཕྲིན་དོན་ཚུ་མངོན་གསལ་འབད་དོ།…",
|
||||
"session.messages.jumpToLatest": "གསར་ཤོས་ལུ་མཆོངས།",
|
||||
"session.context.addToContext": "{{selection}} སྐབས་དོན་ལུ་ཁ་སྐོང་བརྐྱབ།",
|
||||
"session.todo.title": "ཊོ་ཌོས།",
|
||||
@@ -737,7 +737,7 @@ export const dict: Record<string, string> = {
|
||||
"session.new.workspace.runIn": "ནང་ལཱ་ཡུན་གཡོག་བཀོལ།",
|
||||
"session.new.workspace.triggerLocal": "ས་གནས་ཀྱི",
|
||||
"session.new.workspace.local": "ས་གནས་ཀྱི་མཛོད་ཁང་།",
|
||||
"session.new.workspace.existing": "ལཱ་གི་ས་སྒོ...",
|
||||
"session.new.workspace.existing": "ལཱ་གི་ས་སྒོ…",
|
||||
"session.new.git.none": "མེད། Git།",
|
||||
"session.new.lastModified": "མཐའ་མའི་བཟོ་བཅོས་འབད་ཡོདཔ།",
|
||||
"session.header.search.placeholder": "འཚོལ་ཞིབ་ {{project}}།",
|
||||
@@ -777,7 +777,7 @@ export const dict: Record<string, string> = {
|
||||
"lsp.tooltip.none": "LSP སར་བར་ཚུ་མེད།",
|
||||
"lsp.label.connected": "{{count}} LSP།",
|
||||
"prompt.loading": "མངོན་གསལ་འབད་དོ།",
|
||||
"terminal.loading": "ཊར་མི་ནཱལ་མངོན་གསལ་འབད་དོ་...",
|
||||
"terminal.loading": "ཊར་མི་ནཱལ་མངོན་གསལ་འབད་དོ་…",
|
||||
"terminal.title": "ཊར་མི་ནཱལ།",
|
||||
"terminal.title.numbered": "ཊར་མི་ནཱལ་ {{number}}།",
|
||||
"terminal.close": "ཊར་མི་ནཱལ་ཁ་བསྡམས།",
|
||||
@@ -1099,7 +1099,7 @@ export const dict: Record<string, string> = {
|
||||
"workspace.reset.success.title": "ལཱ་གི་ས་སྒོ་སླར་སྒྲིག་འབད།",
|
||||
"workspace.reset.success.description": "ལཱ་གི་ས་སྒོ་འདི་ད་ལྟོ་སྔོན་སྒྲིག་ཡན་ལག་ལུ་མཐུན་སྒྲིག་འབདཝ་ཨིན།",
|
||||
"workspace.error.stillPreparing": "ལཱ་གི་ས་སྒོ་འདི་ ད་ལྟོ་ཡང་གྲ་སྒྲིག་འབད་དོ།",
|
||||
"workspace.status.checking": "མཉམ་བསྡོམས་མ་འབད་བའི་བསྒྱུར་བཅོས་ཚུ་ཞིབ་དཔྱད་འབད་དོ...",
|
||||
"workspace.status.checking": "མཉམ་བསྡོམས་མ་འབད་བའི་བསྒྱུར་བཅོས་ཚུ་ཞིབ་དཔྱད་འབད་དོ…",
|
||||
"workspace.status.error": "ཇིཊི་གནས་ཚད་བདེན་སྦྱོར་འབད་མ་ཚུགས།",
|
||||
"workspace.status.clean": "མཉམ་བསྡོམས་མ་འབད་བའི་བསྒྱུར་བཅོས་ཚུ་ སྐྱོན་འཛིན་མ་འབད་བས།",
|
||||
"workspace.status.dirty": "ལཱ་གི་ས་སྒོ་འདི་ནང་མཉམ་བསྡོམས་མ་འབད་བའི་བསྒྱུར་བཅོས་ཚུ་སྐྱོན་འཛིན་འབད་ཡོདཔ།",
|
||||
|
||||
@@ -6,13 +6,13 @@ export const dict = {
|
||||
"desktop.menu.go": "Μετάβαση",
|
||||
"desktop.menu.window": "Παράθυρο",
|
||||
"desktop.menu.help": "Βοήθεια",
|
||||
"desktop.menu.checkForUpdates": "Έλεγχος για ενημερώσεις...",
|
||||
"desktop.menu.checkForUpdates": "Έλεγχος για ενημερώσεις…",
|
||||
"desktop.menu.settings": "Ρυθμίσεις",
|
||||
"desktop.menu.reloadWebview": "Επανάληψη φόρτωσης Webview",
|
||||
"desktop.menu.restart": "Επανεκκίνηση",
|
||||
"desktop.menu.exportLogs": "Εξαγωγή αρχείων καταγραφής...",
|
||||
"desktop.menu.exportLogs": "Εξαγωγή αρχείων καταγραφής…",
|
||||
"desktop.menu.newSession": "Νέα συνεδρία",
|
||||
"desktop.menu.openProject": "Άνοιγμα έργου...",
|
||||
"desktop.menu.openProject": "Άνοιγμα έργου…",
|
||||
"desktop.menu.newWindow": "Νέο παράθυρο",
|
||||
"desktop.menu.closeWindow": "Κλείσιμο παραθύρου",
|
||||
"desktop.menu.undo": "Αναίρεση",
|
||||
@@ -213,8 +213,8 @@ export const dict = {
|
||||
"provider.connect.method.apiKey": "API κλειδί",
|
||||
"provider.connect.method.browser": "Πρόγραμμα περιήγησης",
|
||||
"provider.connect.method.headless": "Χωρίς γραφικό περιβάλλον",
|
||||
"provider.connect.status.inProgress": "Εξουσιοδότηση σε εξέλιξη...",
|
||||
"provider.connect.status.waiting": "Αναμονή για εξουσιοδότηση...",
|
||||
"provider.connect.status.inProgress": "Εξουσιοδότηση σε εξέλιξη…",
|
||||
"provider.connect.status.waiting": "Αναμονή για εξουσιοδότηση…",
|
||||
"provider.connect.status.failed": "Η εξουσιοδότηση απέτυχε: {{error}}",
|
||||
"provider.connect.apiKey.description":
|
||||
"Εισαγάγετε το κλειδί {{provider}} API για να συνδέσετε τον λογαριασμό σας και χρησιμοποιήστε μοντέλα {{provider}} στο OpenCode.",
|
||||
@@ -308,7 +308,7 @@ export const dict = {
|
||||
"common.goBack": "Πλοήγηση πίσω",
|
||||
"common.goForward": "Πλοήγηση προς τα εμπρός",
|
||||
"common.loading": "Φόρτωση",
|
||||
"common.loading.ellipsis": "...",
|
||||
"common.loading.ellipsis": "…",
|
||||
"common.cancel": "Ακύρωση",
|
||||
"common.clear": "Διαγραφή",
|
||||
"common.open": "Άνοιγμα",
|
||||
@@ -317,12 +317,12 @@ export const dict = {
|
||||
"common.continue": "Συνέχεια",
|
||||
"common.submit": "Υποβολή",
|
||||
"common.save": "Αποθήκευση",
|
||||
"common.saving": "Αποθήκευση...",
|
||||
"common.saving": "Αποθήκευση…",
|
||||
"common.default": "Προεπιλογή",
|
||||
"common.attachment": "συνημμένο",
|
||||
"prompt.placeholder.shell": "Εισαγωγή εντολής κελύφους... {{example}}",
|
||||
"prompt.placeholder.normal": 'Ρωτήστε οτιδήποτε... "{{example}}"',
|
||||
"prompt.placeholder.simple": "Ρωτήστε οτιδήποτε...",
|
||||
"prompt.placeholder.shell": "Εισαγωγή εντολής κελύφους… {{example}}",
|
||||
"prompt.placeholder.normal": 'Ρωτήστε οτιδήποτε… "{{example}}"',
|
||||
"prompt.placeholder.simple": "Ρωτήστε οτιδήποτε…",
|
||||
"prompt.placeholder.summarizeComments": "Σύνοψη σχολίων…",
|
||||
"prompt.placeholder.summarizeComment": "Σύνοψη σχολίου…",
|
||||
"prompt.mode.shell": "Shell",
|
||||
@@ -342,7 +342,7 @@ export const dict = {
|
||||
"prompt.example.10": "Δημιουργία API τεκμηρίωσης",
|
||||
"prompt.example.11": "Βελτιστοποίηση ερωτημάτων βάσης δεδομένων",
|
||||
"prompt.example.12": "Προσθήκη επικύρωσης εισόδου",
|
||||
"prompt.example.13": "Δημιουργία νέου στοιχείου για...",
|
||||
"prompt.example.13": "Δημιουργία νέου στοιχείου για…",
|
||||
"prompt.example.14": "Πώς μπορώ να αναπτύξω αυτό το έργο;",
|
||||
"prompt.example.15": "Ελέγξτε τον κώδικά μου για βέλτιστες πρακτικές",
|
||||
"prompt.example.16": "Προσθήκη χειρισμού σφαλμάτων σε αυτήν τη λειτουργία",
|
||||
@@ -353,7 +353,7 @@ export const dict = {
|
||||
"prompt.example.21": "Βοηθήστε με να γράψω ένα σενάριο μετεγκατάστασης",
|
||||
"prompt.example.22": "Εφαρμογή προσωρινής αποθήκευσης για αυτό το τελικό σημείο",
|
||||
"prompt.example.23": "Προσθήκη σελιδοποίησης σε αυτήν τη λίστα",
|
||||
"prompt.example.24": "Δημιουργία εντολής CLI για...",
|
||||
"prompt.example.24": "Δημιουργία εντολής CLI για…",
|
||||
"prompt.example.25": "Πώς λειτουργούν οι μεταβλητές περιβάλλοντος εδώ;",
|
||||
"prompt.popover.emptyResults": "Δεν υπάρχουν αποτελέσματα",
|
||||
"prompt.popover.emptyCommands": "Δεν ταιριάζουν εντολές",
|
||||
@@ -406,7 +406,7 @@ export const dict = {
|
||||
"dialog.directory.parent": "Γονικός",
|
||||
"dialog.directory.readError": "Δεν είναι δυνατή η ανάγνωση αυτού του φακέλου",
|
||||
"app.server.unreachable": "Δεν ήταν δυνατή η πρόσβαση στο {{server}}",
|
||||
"app.server.retrying": "Αυτόματη προσπάθεια επανάληψης...",
|
||||
"app.server.retrying": "Αυτόματη προσπάθεια επανάληψης…",
|
||||
"app.server.otherServers": "Άλλοι διακομιστές",
|
||||
"dialog.server.title": "Διακομιστές",
|
||||
"dialog.server.description": "Αλλαγή σε ποιον διακομιστή OpenCode συνδέεται αυτή η εφαρμογή.",
|
||||
@@ -416,7 +416,7 @@ export const dict = {
|
||||
"dialog.server.add.url": "Διεύθυνση διακομιστή",
|
||||
"dialog.server.add.placeholder": "http://localhost:4096",
|
||||
"dialog.server.add.error": "Δεν ήταν δυνατή η σύνδεση με τον διακομιστή",
|
||||
"dialog.server.add.checking": "Έλεγχος...",
|
||||
"dialog.server.add.checking": "Έλεγχος…",
|
||||
"dialog.server.add.button": "Προσθήκη διακομιστή",
|
||||
"dialog.server.add.name": "Όνομα διακομιστή (προαιρετικό)",
|
||||
"dialog.server.add.namePlaceholder": "Localhost",
|
||||
@@ -441,26 +441,26 @@ export const dict = {
|
||||
"wsl.server.label": "WSL",
|
||||
"wsl.server.menu.label": "WSL διακομιστής",
|
||||
"wsl.server.retryStart": "Επανάληψη έναρξης",
|
||||
"wsl.server.updating": "Ενημέρωση...",
|
||||
"wsl.server.updating": "Ενημέρωση…",
|
||||
"wsl.onboarding.step.distro": "Επιλογή διανομής",
|
||||
"wsl.onboarding.step.opencode": "OpenCode",
|
||||
"wsl.onboarding.checkingRuntime": "Έλεγχος WSL...",
|
||||
"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.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": "Έλεγχος OpenCode σε {{distro}}...",
|
||||
"wsl.onboarding.updatingOpencode": "Ενημέρωση OpenCode...",
|
||||
"wsl.onboarding.updatingOpencodeIn": "Ενημέρωση OpenCode σε {{distro}}...",
|
||||
"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.updateOpencode": "Ενημέρωση OpenCode",
|
||||
"wsl.onboarding.opencodeReadyIn": "OpenCode είναι έτοιμο στο {{distro}}.",
|
||||
@@ -469,11 +469,11 @@ export const dict = {
|
||||
"wsl.onboarding.installOpencode": "Εγκατάσταση OpenCode",
|
||||
"wsl.onboarding.chooseDistroFirst": "Επιλέξτε πρώτα μια διανομή.",
|
||||
"wsl.onboarding.loadFailed": "Απέτυχε η φόρτωση της κατάστασης WSL.",
|
||||
"wsl.onboarding.loading": "Φόρτωση...",
|
||||
"wsl.onboarding.loading": "Φόρτωση…",
|
||||
"wsl.onboarding.installedDistros": "Εγκατεστημένες διανομές",
|
||||
"wsl.onboarding.checkAgain": "Έλεγχος ξανά",
|
||||
"wsl.onboarding.distroStatus.ready": "Έτοιμο",
|
||||
"wsl.onboarding.distroStatus.checking": "Έλεγχος...",
|
||||
"wsl.onboarding.distroStatus.checking": "Έλεγχος…",
|
||||
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode δεν έχει εγκατασταθεί",
|
||||
"wsl.onboarding.distroStatus.missingTools": "Λείπει το bash, curl",
|
||||
"wsl.onboarding.distroStatus.unsupported": "Δεν υποστηρίζεται · Χρήση WSL 2",
|
||||
@@ -492,7 +492,7 @@ export const dict = {
|
||||
"wsl.onboarding.allDistrosAdded": "Όλες οι εγκατεστημένες διανομές έχουν ήδη προστεθεί.",
|
||||
"wsl.onboarding.noDistros": "Δεν έχουν εντοπιστεί ακόμη διανομές.",
|
||||
"wsl.onboarding.install": "Εγκατάσταση",
|
||||
"wsl.onboarding.installing": "Εγκατάσταση...",
|
||||
"wsl.onboarding.installing": "Εγκατάσταση…",
|
||||
"wsl.onboarding.installDistro": "Εγκατάσταση διανομής",
|
||||
"wsl.onboarding.searchDistros": "Αναζήτηση διανομών",
|
||||
"wsl.onboarding.wsl2Required": "WSL 2 απαιτείται.",
|
||||
@@ -504,7 +504,7 @@ export const dict = {
|
||||
"wsl.onboarding.unknown": "άγνωστο",
|
||||
"wsl.onboarding.desktopVersion": "επιτραπέζιος υπολογιστής {{version}}",
|
||||
"wsl.onboarding.versionMismatch": "Η εγκατεστημένη έκδοση δεν ταιριάζει με την έκδοση της εφαρμογής για υπολογιστές.",
|
||||
"wsl.onboarding.adding": "Προσθήκη...",
|
||||
"wsl.onboarding.adding": "Προσθήκη…",
|
||||
"dialog.project.edit.title": "Επεξεργασία έργου",
|
||||
"dialog.project.edit.name": "Όνομα",
|
||||
"dialog.project.edit.icon": "Εικονίδιο",
|
||||
@@ -611,7 +611,7 @@ export const dict = {
|
||||
"error.page.action.report": "Αναφορά σφάλματος",
|
||||
"error.page.action.reported": "Αναφέρθηκε σφάλμα",
|
||||
"error.page.action.exportLogs": "Εξαγωγή αρχείων καταγραφής",
|
||||
"error.page.action.checking": "Έλεγχος...",
|
||||
"error.page.action.checking": "Έλεγχος…",
|
||||
"error.page.action.checkUpdates": "Έλεγχος για ενημερώσεις",
|
||||
"error.page.action.updateTo": "Ενημέρωση σε {{version}}",
|
||||
"error.page.circular": "[Circular]",
|
||||
@@ -693,12 +693,12 @@ export const dict = {
|
||||
"session.review.filesChanged": "Τα αρχεία άλλαξαν {{count}}",
|
||||
"session.review.change.one": "Αλλαγή",
|
||||
"session.review.change.other": "Αλλαγές",
|
||||
"session.review.loadingChanges": "Φόρτωση αλλαγών...",
|
||||
"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.actionLoading": "Δημιουργία αποθετηρίου Git…",
|
||||
"session.review.noVcs.createGit.action": "Δημιουργία αποθετηρίου Git",
|
||||
"session.review.noSnapshot":
|
||||
"Η παρακολούθηση στιγμιότυπου είναι απενεργοποιημένη στις ρυθμίσεις παραμέτρων, επομένως οι αλλαγές περιόδου λειτουργίας δεν είναι διαθέσιμες",
|
||||
@@ -710,9 +710,9 @@ export const dict = {
|
||||
"session.files.empty": "Δεν υπάρχουν αρχεία",
|
||||
"session.files.binaryContent": "Δυαδικό αρχείο (το περιεχόμενο δεν μπορεί να εμφανιστεί)",
|
||||
"session.messages.renderEarlier": "Απόδοση προηγούμενων μηνυμάτων",
|
||||
"session.messages.loadingEarlier": "Φόρτωση προηγούμενων μηνυμάτων...",
|
||||
"session.messages.loadingEarlier": "Φόρτωση προηγούμενων μηνυμάτων…",
|
||||
"session.messages.loadEarlier": "Φόρτωση προηγούμενων μηνυμάτων",
|
||||
"session.messages.loading": "Φόρτωση μηνυμάτων...",
|
||||
"session.messages.loading": "Φόρτωση μηνυμάτων…",
|
||||
"session.messages.jumpToLatest": "Μετάβαση στο πιο πρόσφατο",
|
||||
"session.context.addToContext": "Προσθήκη {{selection}} στο περιβάλλον",
|
||||
"session.todo.title": "Εκκρεμότητες",
|
||||
@@ -773,8 +773,8 @@ export const dict = {
|
||||
"common.copied": "Αντιγράφηκε",
|
||||
"lsp.tooltip.none": "Δεν υπάρχουν LSP διακομιστές",
|
||||
"lsp.label.connected": "{{count}} LSP",
|
||||
"prompt.loading": "Φόρτωση προτροπής...",
|
||||
"terminal.loading": "Φόρτωση τερματικού...",
|
||||
"prompt.loading": "Φόρτωση προτροπής…",
|
||||
"terminal.loading": "Φόρτωση τερματικού…",
|
||||
"terminal.title": "Τερματικό",
|
||||
"terminal.title.numbered": "Τερματικό {{number}}",
|
||||
"terminal.close": "Κλείσιμο τερματικού",
|
||||
@@ -943,9 +943,9 @@ export const dict = {
|
||||
"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.action.checking": "Έλεγχος…",
|
||||
"settings.updates.action.downloading": "Λήψη…",
|
||||
"settings.updates.action.installing": "Εγκατάσταση…",
|
||||
"settings.updates.toast.latest.title": "Είστε ενημερωμένοι",
|
||||
"settings.updates.toast.latest.description": "Εκτελείτε την πιο πρόσφατη έκδοση του OpenCode.",
|
||||
"sound.option.none": "Κανένα",
|
||||
@@ -1093,7 +1093,7 @@ export const dict = {
|
||||
"workspace.reset.success.title": "Επαναφορά χώρου εργασίας",
|
||||
"workspace.reset.success.description": "Ο χώρος εργασίας αντιστοιχεί πλέον στον προεπιλεγμένο κλάδο.",
|
||||
"workspace.error.stillPreparing": "Ο χώρος εργασίας προετοιμάζεται ακόμη",
|
||||
"workspace.status.checking": "Έλεγχος για μη συγχωνευμένες αλλαγές...",
|
||||
"workspace.status.checking": "Έλεγχος για μη συγχωνευμένες αλλαγές…",
|
||||
"workspace.status.error": "Δεν είναι δυνατή η επαλήθευση της κατάστασης git.",
|
||||
"workspace.status.clean": "Δεν εντοπίστηκαν μη συγχωνευμένες αλλαγές.",
|
||||
"workspace.status.dirty": "Εντοπίστηκαν μη συγχωνευμένες αλλαγές σε αυτόν τον χώρο εργασίας.",
|
||||
|
||||
@@ -23,7 +23,7 @@ export const dict = {
|
||||
"command.category.mcp": "MCP",
|
||||
"command.category.agent": "Agent",
|
||||
"command.category.permissions": "Permissions",
|
||||
"command.category.workspace": "Workspace",
|
||||
"command.category.workspace": "Worktree",
|
||||
"command.category.settings": "Settings",
|
||||
"command.logs.export": "Export logs",
|
||||
|
||||
@@ -88,8 +88,8 @@ export const dict = {
|
||||
"command.prompt.mode.normal": "Prompt",
|
||||
"command.permissions.autoaccept.enable": "Auto-accept permissions",
|
||||
"command.permissions.autoaccept.disable": "Stop auto-accepting permissions",
|
||||
"command.workspace.toggle": "Toggle workspaces",
|
||||
"command.workspace.toggle.description": "Enable or disable multiple workspaces in the sidebar",
|
||||
"command.workspace.toggle": "Toggle worktrees",
|
||||
"command.workspace.toggle.description": "Enable or disable multiple worktrees in the sidebar",
|
||||
"command.session.undo": "Undo",
|
||||
"command.session.undo.description": "Undo the last message",
|
||||
"command.session.redo": "Redo",
|
||||
@@ -143,8 +143,8 @@ export const dict = {
|
||||
"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.inProgress": "Authorization in progress…",
|
||||
"provider.connect.status.waiting": "Waiting for authorization…",
|
||||
"provider.connect.status.failed": "Authorization failed: {{error}}",
|
||||
"provider.connect.apiKey.description":
|
||||
"Enter your {{provider}} API key to connect your account and use {{provider}} models in OpenCode.",
|
||||
@@ -241,7 +241,7 @@ export const dict = {
|
||||
"common.goBack": "Navigate back",
|
||||
"common.goForward": "Navigate forward",
|
||||
"common.loading": "Loading",
|
||||
"common.loading.ellipsis": "...",
|
||||
"common.loading.ellipsis": "…",
|
||||
"common.cancel": "Cancel",
|
||||
"common.clear": "Clear",
|
||||
"common.open": "Open",
|
||||
@@ -250,13 +250,13 @@ export const dict = {
|
||||
"common.continue": "Continue",
|
||||
"common.submit": "Submit",
|
||||
"common.save": "Save",
|
||||
"common.saving": "Saving...",
|
||||
"common.saving": "Saving…",
|
||||
"common.default": "Default",
|
||||
"common.attachment": "attachment",
|
||||
|
||||
"prompt.placeholder.shell": "Enter shell command... {{example}}",
|
||||
"prompt.placeholder.normal": 'Ask anything... "{{example}}"',
|
||||
"prompt.placeholder.simple": "Ask anything...",
|
||||
"prompt.placeholder.shell": "Enter shell command… {{example}}",
|
||||
"prompt.placeholder.normal": 'Ask anything… "{{example}}"',
|
||||
"prompt.placeholder.simple": "Ask anything…",
|
||||
"prompt.placeholder.summarizeComments": "Summarize comments…",
|
||||
"prompt.placeholder.summarizeComment": "Summarize comment…",
|
||||
"prompt.mode.shell": "Shell",
|
||||
@@ -277,7 +277,7 @@ export const dict = {
|
||||
"prompt.example.10": "Generate API documentation",
|
||||
"prompt.example.11": "Optimize database queries",
|
||||
"prompt.example.12": "Add input validation",
|
||||
"prompt.example.13": "Create a new component for...",
|
||||
"prompt.example.13": "Create a new component for…",
|
||||
"prompt.example.14": "How do I deploy this project?",
|
||||
"prompt.example.15": "Review my code for best practices",
|
||||
"prompt.example.16": "Add error handling to this function",
|
||||
@@ -288,7 +288,7 @@ export const dict = {
|
||||
"prompt.example.21": "Help me write a migration script",
|
||||
"prompt.example.22": "Implement caching for this endpoint",
|
||||
"prompt.example.23": "Add pagination to this list",
|
||||
"prompt.example.24": "Create a CLI command for...",
|
||||
"prompt.example.24": "Create a CLI command for…",
|
||||
"prompt.example.25": "How do environment variables work here?",
|
||||
|
||||
"prompt.popover.emptyResults": "No matching results",
|
||||
@@ -348,7 +348,7 @@ export const dict = {
|
||||
"dialog.directory.readError": "Unable to read this folder",
|
||||
|
||||
"app.server.unreachable": "Could not reach {{server}}",
|
||||
"app.server.retrying": "Retrying automatically...",
|
||||
"app.server.retrying": "Retrying automatically…",
|
||||
"app.server.otherServers": "Other servers",
|
||||
|
||||
"dialog.server.title": "Servers",
|
||||
@@ -359,7 +359,7 @@ export const dict = {
|
||||
"dialog.server.add.url": "Server address",
|
||||
"dialog.server.add.placeholder": "http://localhost:4096",
|
||||
"dialog.server.add.error": "Could not connect to server",
|
||||
"dialog.server.add.checking": "Checking...",
|
||||
"dialog.server.add.checking": "Checking…",
|
||||
"dialog.server.add.button": "Add server",
|
||||
"dialog.server.add.name": "Server name (optional)",
|
||||
"dialog.server.add.namePlaceholder": "Localhost",
|
||||
@@ -387,26 +387,26 @@ export const dict = {
|
||||
"wsl.server.label": "WSL",
|
||||
"wsl.server.menu.label": "WSL server",
|
||||
"wsl.server.retryStart": "Retry start",
|
||||
"wsl.server.updating": "Updating...",
|
||||
"wsl.server.updating": "Updating…",
|
||||
"wsl.onboarding.step.distro": "Choose distro",
|
||||
"wsl.onboarding.step.opencode": "OpenCode",
|
||||
"wsl.onboarding.checkingRuntime": "Checking WSL...",
|
||||
"wsl.onboarding.checkingRuntime": "Checking WSL…",
|
||||
"wsl.onboarding.restartRequired": "Windows needs a restart to finish installing WSL.",
|
||||
"wsl.onboarding.ready": "WSL is ready.",
|
||||
"wsl.onboarding.required": "WSL is required to continue.",
|
||||
"wsl.onboarding.checkingDistros": "Checking distros...",
|
||||
"wsl.onboarding.installingDistro": "Installing {{distro}}...",
|
||||
"wsl.onboarding.checkingDistro": "Checking {{distro}}...",
|
||||
"wsl.onboarding.listingDistros": "Listing distros...",
|
||||
"wsl.onboarding.checkingDistros": "Checking distros…",
|
||||
"wsl.onboarding.installingDistro": "Installing {{distro}}…",
|
||||
"wsl.onboarding.checkingDistro": "Checking {{distro}}…",
|
||||
"wsl.onboarding.listingDistros": "Listing distros…",
|
||||
"wsl.onboarding.distroReady": "{{distro}} is ready.",
|
||||
"wsl.onboarding.distroNotInstalled": "{{distro}} is not installed yet.",
|
||||
"wsl.onboarding.openDistroOnce": "Open {{distro}} once to finish setup.",
|
||||
"wsl.onboarding.finishingDistro": "Finishing setup for {{distro}}.",
|
||||
"wsl.onboarding.pickDistro": "Pick a distro or install one below.",
|
||||
"wsl.onboarding.checkingOpencode": "Checking OpenCode...",
|
||||
"wsl.onboarding.checkingOpencodeIn": "Checking OpenCode in {{distro}}...",
|
||||
"wsl.onboarding.updatingOpencode": "Updating OpenCode...",
|
||||
"wsl.onboarding.updatingOpencodeIn": "Updating OpenCode in {{distro}}...",
|
||||
"wsl.onboarding.checkingOpencode": "Checking OpenCode…",
|
||||
"wsl.onboarding.checkingOpencodeIn": "Checking OpenCode in {{distro}}…",
|
||||
"wsl.onboarding.updatingOpencode": "Updating OpenCode…",
|
||||
"wsl.onboarding.updatingOpencodeIn": "Updating OpenCode in {{distro}}…",
|
||||
"wsl.onboarding.updateOpencodeIn": "Update OpenCode in {{distro}}.",
|
||||
"wsl.onboarding.updateOpencode": "Update OpenCode",
|
||||
"wsl.onboarding.opencodeReadyIn": "OpenCode is ready in {{distro}}.",
|
||||
@@ -415,11 +415,11 @@ export const dict = {
|
||||
"wsl.onboarding.installOpencode": "Install OpenCode",
|
||||
"wsl.onboarding.chooseDistroFirst": "Choose a distro first.",
|
||||
"wsl.onboarding.loadFailed": "Failed to load WSL state.",
|
||||
"wsl.onboarding.loading": "Loading...",
|
||||
"wsl.onboarding.loading": "Loading…",
|
||||
"wsl.onboarding.installedDistros": "Installed distros",
|
||||
"wsl.onboarding.checkAgain": "Check again",
|
||||
"wsl.onboarding.distroStatus.ready": "Ready",
|
||||
"wsl.onboarding.distroStatus.checking": "Checking...",
|
||||
"wsl.onboarding.distroStatus.checking": "Checking…",
|
||||
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode not installed",
|
||||
"wsl.onboarding.distroStatus.missingTools": "Missing bash, curl",
|
||||
"wsl.onboarding.distroStatus.unsupported": "Unsupported · Use WSL 2",
|
||||
@@ -437,7 +437,7 @@ export const dict = {
|
||||
"wsl.onboarding.allDistrosAdded": "All installed distros are already added.",
|
||||
"wsl.onboarding.noDistros": "No distros detected yet.",
|
||||
"wsl.onboarding.install": "Install",
|
||||
"wsl.onboarding.installing": "Installing...",
|
||||
"wsl.onboarding.installing": "Installing…",
|
||||
"wsl.onboarding.installDistro": "Install distro",
|
||||
"wsl.onboarding.searchDistros": "Search distros",
|
||||
"wsl.onboarding.wsl2Required": "WSL 2 is required.",
|
||||
@@ -449,7 +449,7 @@ export const dict = {
|
||||
"wsl.onboarding.unknown": "unknown",
|
||||
"wsl.onboarding.desktopVersion": "desktop {{version}}",
|
||||
"wsl.onboarding.versionMismatch": "Installed version does not match the desktop app version.",
|
||||
"wsl.onboarding.adding": "Adding...",
|
||||
"wsl.onboarding.adding": "Adding…",
|
||||
|
||||
"server.row.incompatible":
|
||||
"This server is running OpenCode {{version}}, which isn't compatible with this app. Upgrade it to OpenCode V2 to continue.",
|
||||
@@ -462,9 +462,9 @@ export const dict = {
|
||||
"dialog.project.edit.icon.recommended": "Recommended: 128x128px",
|
||||
"dialog.project.edit.color": "Color",
|
||||
"dialog.project.edit.color.select": "Select {{color}} color",
|
||||
"dialog.project.edit.worktree.startup": "Workspace startup script",
|
||||
"dialog.project.edit.worktree.startup": "Worktree startup script",
|
||||
"dialog.project.edit.worktree.startup.description":
|
||||
"Runs after creating a new workspace (worktree). Use $OPENCODE_WORKTREE_BASE for the base worktree and $OPENCODE_WORKTREE_PATH for the new worktree.",
|
||||
"Runs after creating a new worktree. Use $OPENCODE_WORKTREE_BASE for the base worktree and $OPENCODE_WORKTREE_PATH for the new worktree.",
|
||||
"dialog.project.edit.worktree.startup.placeholder": "e.g. bun install",
|
||||
|
||||
"dialog.releaseNotes.action.getStarted": "Get started",
|
||||
@@ -533,9 +533,9 @@ export const dict = {
|
||||
"toast.theme.title": "Theme switched",
|
||||
"toast.scheme.title": "Color scheme",
|
||||
|
||||
"toast.workspace.enabled.title": "Workspaces enabled",
|
||||
"toast.workspace.enabled.title": "Worktrees enabled",
|
||||
"toast.workspace.enabled.description": "Multiple worktrees are now shown in the sidebar",
|
||||
"toast.workspace.disabled.title": "Workspaces disabled",
|
||||
"toast.workspace.disabled.title": "Worktrees disabled",
|
||||
"toast.workspace.disabled.description": "Only the main worktree is shown in the sidebar",
|
||||
|
||||
"toast.permissions.autoaccept.on.title": "Auto-accepting permissions",
|
||||
@@ -586,7 +586,7 @@ export const dict = {
|
||||
"error.page.action.report": "Report Error",
|
||||
"error.page.action.reported": "Error Reported",
|
||||
"error.page.action.exportLogs": "Export Logs",
|
||||
"error.page.action.checking": "Checking...",
|
||||
"error.page.action.checking": "Checking…",
|
||||
"error.page.action.checkUpdates": "Check for updates",
|
||||
"error.page.action.updateTo": "Update to {{version}}",
|
||||
"error.page.circular": "[Circular]",
|
||||
@@ -702,13 +702,13 @@ export const dict = {
|
||||
"session.review.filesChanged": "Files Changed {{count}}",
|
||||
"session.review.change.one": "Change",
|
||||
"session.review.change.other": "Changes",
|
||||
"session.review.loadingChanges": "Loading changes...",
|
||||
"session.review.loadingChanges": "Loading changes…",
|
||||
"session.review.wrapLines": "Wrap lines",
|
||||
"session.review.empty": "No changes in this session yet",
|
||||
"session.review.noVcs": "No Git Version Control System detected, changes not displayed",
|
||||
"session.review.noVcs.createGit.title": "Create a Git repository",
|
||||
"session.review.noVcs.createGit.description": "Track, review, and undo changes in this project",
|
||||
"session.review.noVcs.createGit.actionLoading": "Creating Git repository...",
|
||||
"session.review.noVcs.createGit.actionLoading": "Creating Git repository…",
|
||||
"session.review.noVcs.createGit.action": "Create Git repository",
|
||||
"session.review.noSnapshot": "Snapshot tracking is disabled in config, so session changes are unavailable",
|
||||
"session.review.noChanges": "No changes",
|
||||
@@ -721,9 +721,9 @@ export const dict = {
|
||||
"session.files.binaryContent": "Binary file (content cannot be displayed)",
|
||||
|
||||
"session.messages.renderEarlier": "Render earlier messages",
|
||||
"session.messages.loadingEarlier": "Loading earlier messages...",
|
||||
"session.messages.loadingEarlier": "Loading earlier messages…",
|
||||
"session.messages.loadEarlier": "Load earlier messages",
|
||||
"session.messages.loading": "Loading messages...",
|
||||
"session.messages.loading": "Loading messages…",
|
||||
"session.messages.jumpToLatest": "Jump to latest",
|
||||
|
||||
"session.context.addToContext": "Add {{selection}} to context",
|
||||
@@ -745,11 +745,11 @@ export const dict = {
|
||||
"session.new.worktree.mainWithBranch": "Main branch ({{branch}})",
|
||||
"session.new.worktree.create": "Create new worktree",
|
||||
"session.new.worktree.creating": "Creating worktree",
|
||||
"session.new.worktree.draftPlaceholder": "Draft a follow-up while the worktree is being prepared...",
|
||||
"session.new.worktree.draftPlaceholder": "Draft a follow-up while the worktree is being prepared…",
|
||||
"session.new.workspace.runIn": "Run session in",
|
||||
"session.new.workspace.triggerLocal": "Local",
|
||||
"session.new.workspace.local": "Local repository",
|
||||
"session.new.workspace.existing": "Workspace…",
|
||||
"session.new.workspace.existing": "Worktree…",
|
||||
"session.new.git.none": "No Git",
|
||||
"session.new.lastModified": "Last modified",
|
||||
|
||||
@@ -793,8 +793,8 @@ export const dict = {
|
||||
"lsp.tooltip.none": "No LSP servers",
|
||||
"lsp.label.connected": "{{count}} LSP",
|
||||
|
||||
"prompt.loading": "Loading prompt...",
|
||||
"terminal.loading": "Loading terminal...",
|
||||
"prompt.loading": "Loading prompt…",
|
||||
"terminal.loading": "Loading terminal…",
|
||||
"terminal.title": "Terminal",
|
||||
"terminal.title.numbered": "Terminal {{number}}",
|
||||
"terminal.close": "Close terminal",
|
||||
@@ -850,8 +850,8 @@ export const dict = {
|
||||
"sidebar.nav.projectsAndSessions": "Projects and sessions",
|
||||
"sidebar.settings": "Settings",
|
||||
"sidebar.help": "Help",
|
||||
"sidebar.workspaces.enable": "Enable workspaces",
|
||||
"sidebar.workspaces.disable": "Disable workspaces",
|
||||
"sidebar.workspaces.enable": "Enable worktrees",
|
||||
"sidebar.workspaces.disable": "Disable worktrees",
|
||||
"sidebar.gettingStarted.title": "Getting started",
|
||||
"sidebar.gettingStarted.line1": "OpenCode includes free models so you can start immediately.",
|
||||
"sidebar.gettingStarted.line2": "Connect any provider to use models, inc. Claude, GPT, Gemini etc.",
|
||||
@@ -911,6 +911,8 @@ export const dict = {
|
||||
"settings.appearance.row.tabs.description": "Choose how session tabs are arranged",
|
||||
"settings.appearance.row.tabs.horizontal": "Horizontal",
|
||||
"settings.appearance.row.tabs.vertical": "Vertical",
|
||||
"settings.appearance.row.projectName.title": "Show project names",
|
||||
"settings.appearance.row.projectName.description": "Show project names in vertical tabs and the mobile tab drawer",
|
||||
"settings.notifications.description": "Choose when to receive notifications and hear sounds",
|
||||
"settings.shortcuts.description": "Customize shortcuts for common actions",
|
||||
"settings.servers.description": "Manage server connections",
|
||||
@@ -984,8 +986,7 @@ export const dict = {
|
||||
"settings.general.row.showProjectIcon.title": "Project icon",
|
||||
"settings.general.row.showProjectIcon.description": "Show the project icon in the session header",
|
||||
"settings.general.row.mobileTitlebarBottom.title": "Bottom navigation",
|
||||
"settings.general.row.mobileTitlebarBottom.description":
|
||||
"Place the title bar at the bottom of the screen on mobile",
|
||||
"settings.general.row.mobileTitlebarBottom.description": "Place the title bar at the bottom of the screen on mobile",
|
||||
"settings.general.row.mobileDiffWrap.description":
|
||||
"Wrap long lines in mobile diffs instead of scrolling horizontally",
|
||||
"settings.general.row.showCustomAgents.title": "Show agent",
|
||||
@@ -1025,9 +1026,9 @@ export const dict = {
|
||||
"settings.updates.row.check.title": "Check for updates",
|
||||
"settings.updates.row.check.description": "Manually check for updates and install if available",
|
||||
"settings.updates.action.checkNow": "Check now",
|
||||
"settings.updates.action.checking": "Checking...",
|
||||
"settings.updates.action.downloading": "Downloading...",
|
||||
"settings.updates.action.installing": "Installing...",
|
||||
"settings.updates.action.checking": "Checking…",
|
||||
"settings.updates.action.downloading": "Downloading…",
|
||||
"settings.updates.action.installing": "Installing…",
|
||||
"settings.updates.toast.latest.title": "You're up to date",
|
||||
"settings.updates.toast.latest.description": "You're running the latest version of OpenCode.",
|
||||
"sound.option.none": "None",
|
||||
@@ -1173,7 +1174,7 @@ export const dict = {
|
||||
"session.delete.confirm": 'Delete session "{{name}}"?',
|
||||
"session.delete.button": "Delete session",
|
||||
|
||||
"workspace.new": "New workspace",
|
||||
"workspace.new": "New worktree",
|
||||
"common.viewAll": "View all",
|
||||
"session.new.workspace.local.tooltip": "Use current checkout",
|
||||
"session.new.workspace.new.tooltip": "Create isolated checkout",
|
||||
@@ -1181,66 +1182,66 @@ export const dict = {
|
||||
"session.new.workspace.createFrom": "Create from branch",
|
||||
"session.new.workspace.branch.search.placeholder": "Search branches",
|
||||
"session.new.workspace.trigger.tooltip": "Select where to run session",
|
||||
"session.new.workspace.search.placeholder": "Search workspaces",
|
||||
"settings.tab.workspaces": "Workspaces",
|
||||
"session.new.workspace.search.placeholder": "Search worktrees",
|
||||
"settings.tab.workspaces": "Worktrees",
|
||||
"settings.workspaces.filter.all": "All projects",
|
||||
"settings.workspaces.empty": "No workspaces",
|
||||
"settings.workspaces.count.one": "{{count}} workspace",
|
||||
"settings.workspaces.count.other": "{{count}} workspaces",
|
||||
"settings.workspaces.empty": "No worktrees",
|
||||
"settings.workspaces.count.one": "{{count}} worktree",
|
||||
"settings.workspaces.count.other": "{{count}} worktrees",
|
||||
"settings.workspaces.sessions.one": "{{count}} session in {{project}}",
|
||||
"settings.workspaces.sessions.other": "{{count}} sessions in {{project}}",
|
||||
"settings.workspaces.lastActiveSession": "Last active session",
|
||||
"settings.workspaces.deleteAll": "Delete all workspaces",
|
||||
"settings.workspaces.deleteAll.confirm": "Delete all {{count}} workspaces?",
|
||||
"settings.workspaces.deleteAll": "Delete all worktrees",
|
||||
"settings.workspaces.deleteAll.confirm": "Delete all {{count}} worktrees?",
|
||||
"settings.workspaces.delete.warning":
|
||||
"The workspace directory and branch will be permanently removed, including any unmerged changes shown below.",
|
||||
"The worktree directory and branch will be permanently removed, including any unmerged changes shown below.",
|
||||
"settings.workspaces.deleteAll.warning":
|
||||
"The {{count}} selected workspaces in {{project}} will be permanently removed only if each is clean, inactive, and has no linked sessions.",
|
||||
"settings.workspaces.delete.blocked.active": "The active workspace cannot be deleted.",
|
||||
"The {{count}} selected worktrees in {{project}} will be permanently removed only if each is clean, inactive, and has no linked sessions.",
|
||||
"settings.workspaces.delete.blocked.active": "The active worktree cannot be deleted.",
|
||||
"settings.workspaces.delete.blocked.linked":
|
||||
"Linked sessions will remain, but their working directory will be permanently removed.",
|
||||
"settings.workspaces.default.title": "Default environment",
|
||||
"settings.workspaces.default.description": "Choose where new sessions start",
|
||||
"settings.workspaces.default.lastUsed": "Last used per project",
|
||||
"settings.workspaces.default.local": "Local directory",
|
||||
"settings.workspaces.default.new": "New workspace",
|
||||
"workspace.move.title": "Move to workspace",
|
||||
"settings.workspaces.default.new": "New worktree",
|
||||
"workspace.move.title": "Move to worktree",
|
||||
"workspace.move.menu.title": "Move session to",
|
||||
"workspace.move.failed": "Failed to move session",
|
||||
"workspace.lifecycle.creating": "Creating workspace",
|
||||
"workspace.lifecycle.created": "Workspace created",
|
||||
"workspace.lifecycle.creating": "Creating worktree",
|
||||
"workspace.lifecycle.created": "Worktree created",
|
||||
"workspace.lifecycle.starting": "Starting session",
|
||||
"workspace.onboarding.title": "Isolate sessions with workspaces",
|
||||
"workspace.onboarding.title": "Isolate sessions with worktrees",
|
||||
"workspace.onboarding.description": "Each gets its own checkout, so nothing interferes with your local repository",
|
||||
"workspace.lifecycle.moving": "Moving to workspace",
|
||||
"workspace.lifecycle.set": "Workspace set",
|
||||
"workspace.lifecycle.moving": "Moving to worktree",
|
||||
"workspace.lifecycle.set": "Worktree set",
|
||||
"session.summary.title": "Session details",
|
||||
"session.summary.noBranch": "No branch",
|
||||
"session.summary.basedOn": "Based on {{branch}}",
|
||||
"workspace.type.local": "local",
|
||||
"workspace.type.sandbox": "sandbox",
|
||||
"workspace.create.failed.title": "Failed to create workspace",
|
||||
"workspace.delete.failed.title": "Failed to delete workspace",
|
||||
"workspace.resetting.title": "Resetting workspace",
|
||||
"workspace.create.failed.title": "Failed to create worktree",
|
||||
"workspace.delete.failed.title": "Failed to delete worktree",
|
||||
"workspace.resetting.title": "Resetting worktree",
|
||||
"workspace.resetting.description": "This may take a minute.",
|
||||
"workspace.reset.failed.title": "Failed to reset workspace",
|
||||
"workspace.reset.success.title": "Workspace reset",
|
||||
"workspace.reset.success.description": "Workspace now matches the default branch.",
|
||||
"workspace.error.stillPreparing": "Workspace is still preparing",
|
||||
"workspace.status.checking": "Checking for unmerged changes...",
|
||||
"workspace.reset.failed.title": "Failed to reset worktree",
|
||||
"workspace.reset.success.title": "Worktree reset",
|
||||
"workspace.reset.success.description": "Worktree now matches the default branch.",
|
||||
"workspace.error.stillPreparing": "Worktree is still preparing",
|
||||
"workspace.status.checking": "Checking for unmerged changes…",
|
||||
"workspace.status.error": "Unable to verify git status.",
|
||||
"workspace.status.clean": "No unmerged changes detected.",
|
||||
"workspace.status.dirty": "Unmerged changes detected in this workspace.",
|
||||
"workspace.delete.title": "Delete workspace",
|
||||
"workspace.delete.confirm": 'Delete workspace "{{name}}"?',
|
||||
"workspace.delete.button": "Delete workspace",
|
||||
"workspace.reset.title": "Reset workspace",
|
||||
"workspace.reset.confirm": 'Reset workspace "{{name}}"?',
|
||||
"workspace.reset.button": "Reset workspace",
|
||||
"workspace.status.dirty": "Unmerged changes detected in this worktree.",
|
||||
"workspace.delete.title": "Delete worktree",
|
||||
"workspace.delete.confirm": 'Delete worktree "{{name}}"?',
|
||||
"workspace.delete.button": "Delete worktree",
|
||||
"workspace.reset.title": "Reset worktree",
|
||||
"workspace.reset.confirm": 'Reset worktree "{{name}}"?',
|
||||
"workspace.reset.button": "Reset worktree",
|
||||
"workspace.reset.archived.none": "No active sessions will be archived.",
|
||||
"workspace.reset.archived.one": "1 session will be archived.",
|
||||
"workspace.reset.archived.many": "{{count}} sessions will be archived.",
|
||||
"workspace.reset.note": "This will reset the workspace to match the default branch.",
|
||||
"workspace.reset.note": "This will reset the worktree to match the default branch.",
|
||||
}
|
||||
|
||||
export default dict
|
||||
|
||||
@@ -6,13 +6,13 @@ export const dict = {
|
||||
"desktop.menu.go": "Ir",
|
||||
"desktop.menu.window": "Ventana",
|
||||
"desktop.menu.help": "Ayuda",
|
||||
"desktop.menu.checkForUpdates": "Buscar actualizaciones...",
|
||||
"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.exportLogs": "Exportar registros…",
|
||||
"desktop.menu.newSession": "Nueva sesión",
|
||||
"desktop.menu.openProject": "Abrir proyecto...",
|
||||
"desktop.menu.openProject": "Abrir proyecto…",
|
||||
"desktop.menu.newWindow": "Nueva ventana",
|
||||
"desktop.menu.closeWindow": "Cerrar ventana",
|
||||
"desktop.menu.undo": "Deshacer",
|
||||
@@ -233,8 +233,8 @@ export const dict = {
|
||||
"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.inProgress": "Autorización en progreso…",
|
||||
"provider.connect.status.waiting": "Esperando autorización…",
|
||||
"provider.connect.status.failed": "Autorización fallida: {{error}}",
|
||||
"provider.connect.apiKey.description":
|
||||
"Introduce tu clave API de {{provider}} para conectar tu cuenta y usar modelos de {{provider}} en OpenCode.",
|
||||
@@ -332,7 +332,7 @@ export const dict = {
|
||||
"common.goBack": "Volver",
|
||||
"common.goForward": "Avanzar",
|
||||
"common.loading": "Cargando",
|
||||
"common.loading.ellipsis": "...",
|
||||
"common.loading.ellipsis": "…",
|
||||
"common.cancel": "Cancelar",
|
||||
"common.clear": "Limpiar",
|
||||
"common.connect": "Conectar",
|
||||
@@ -340,13 +340,13 @@ export const dict = {
|
||||
"common.continue": "Continuar",
|
||||
"common.submit": "Enviar",
|
||||
"common.save": "Guardar",
|
||||
"common.saving": "Guardando...",
|
||||
"common.saving": "Guardando…",
|
||||
"common.default": "Predeterminado",
|
||||
"common.attachment": "adjunto",
|
||||
|
||||
"prompt.placeholder.shell": "Introduce comando de shell... {{example}}",
|
||||
"prompt.placeholder.normal": 'Pregunta cualquier cosa... "{{example}}"',
|
||||
"prompt.placeholder.simple": "Pregunta cualquier cosa...",
|
||||
"prompt.placeholder.shell": "Introduce comando de shell… {{example}}",
|
||||
"prompt.placeholder.normal": 'Pregunta cualquier cosa… "{{example}}"',
|
||||
"prompt.placeholder.simple": "Pregunta cualquier cosa…",
|
||||
"prompt.placeholder.summarizeComments": "Resumir comentarios…",
|
||||
"prompt.placeholder.summarizeComment": "Resumir comentario…",
|
||||
"prompt.mode.shell": "Shell",
|
||||
@@ -367,7 +367,7 @@ export const dict = {
|
||||
"prompt.example.10": "Generar documentación de API",
|
||||
"prompt.example.11": "Optimizar consultas a la base de datos",
|
||||
"prompt.example.12": "Añadir validación de entrada",
|
||||
"prompt.example.13": "Crear un nuevo componente para...",
|
||||
"prompt.example.13": "Crear un nuevo componente para…",
|
||||
"prompt.example.14": "¿Cómo despliego este proyecto?",
|
||||
"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",
|
||||
@@ -378,7 +378,7 @@ export const dict = {
|
||||
"prompt.example.21": "Ayúdame a escribir un script de migración",
|
||||
"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.24": "Crear un comando CLI para…",
|
||||
"prompt.example.25": "¿Cómo funcionan las variables de entorno aquí?",
|
||||
|
||||
"prompt.popover.emptyResults": "Sin resultados coincidentes",
|
||||
@@ -446,7 +446,7 @@ export const dict = {
|
||||
"dialog.server.add.url": "URL del servidor",
|
||||
"dialog.server.add.placeholder": "http://localhost:4096",
|
||||
"dialog.server.add.error": "No se pudo conectar al servidor",
|
||||
"dialog.server.add.checking": "Comprobando...",
|
||||
"dialog.server.add.checking": "Comprobando…",
|
||||
"dialog.server.add.button": "Añadir servidor",
|
||||
"dialog.server.add.name": "Nombre del servidor (opcional)",
|
||||
"dialog.server.add.namePlaceholder": "Localhost",
|
||||
@@ -471,26 +471,26 @@ export const dict = {
|
||||
"wsl.server.label": "WSL",
|
||||
"wsl.server.menu.label": "Servidor WSL",
|
||||
"wsl.server.retryStart": "Reintentar el inicio",
|
||||
"wsl.server.updating": "Actualizando...",
|
||||
"wsl.server.updating": "Actualizando…",
|
||||
"wsl.onboarding.step.distro": "Elegir distribución",
|
||||
"wsl.onboarding.step.opencode": "OpenCode",
|
||||
"wsl.onboarding.checkingRuntime": "Comprobando WSL...",
|
||||
"wsl.onboarding.checkingRuntime": "Comprobando WSL…",
|
||||
"wsl.onboarding.restartRequired": "Es necesario reiniciar Windows para terminar de instalar WSL.",
|
||||
"wsl.onboarding.ready": "WSL está listo.",
|
||||
"wsl.onboarding.required": "Se necesita WSL para continuar.",
|
||||
"wsl.onboarding.checkingDistros": "Comprobando distribuciones...",
|
||||
"wsl.onboarding.installingDistro": "Instalando {{distro}}...",
|
||||
"wsl.onboarding.checkingDistro": "Comprobando {{distro}}...",
|
||||
"wsl.onboarding.listingDistros": "Listando distribuciones...",
|
||||
"wsl.onboarding.checkingDistros": "Comprobando distribuciones…",
|
||||
"wsl.onboarding.installingDistro": "Instalando {{distro}}…",
|
||||
"wsl.onboarding.checkingDistro": "Comprobando {{distro}}…",
|
||||
"wsl.onboarding.listingDistros": "Listando distribuciones…",
|
||||
"wsl.onboarding.distroReady": "La distribución {{distro}} está lista.",
|
||||
"wsl.onboarding.distroNotInstalled": "La distribución {{distro}} aún no está instalada.",
|
||||
"wsl.onboarding.openDistroOnce": "Abre {{distro}} una vez para completar la configuración.",
|
||||
"wsl.onboarding.finishingDistro": "Completando la configuración de {{distro}}.",
|
||||
"wsl.onboarding.pickDistro": "Elige una distribución o instala una abajo.",
|
||||
"wsl.onboarding.checkingOpencode": "Comprobando OpenCode...",
|
||||
"wsl.onboarding.checkingOpencodeIn": "Comprobando OpenCode en {{distro}}...",
|
||||
"wsl.onboarding.updatingOpencode": "Actualizando OpenCode...",
|
||||
"wsl.onboarding.updatingOpencodeIn": "Actualizando OpenCode en {{distro}}...",
|
||||
"wsl.onboarding.checkingOpencode": "Comprobando OpenCode…",
|
||||
"wsl.onboarding.checkingOpencodeIn": "Comprobando OpenCode en {{distro}}…",
|
||||
"wsl.onboarding.updatingOpencode": "Actualizando OpenCode…",
|
||||
"wsl.onboarding.updatingOpencodeIn": "Actualizando OpenCode en {{distro}}…",
|
||||
"wsl.onboarding.updateOpencodeIn": "Actualiza OpenCode en {{distro}}.",
|
||||
"wsl.onboarding.updateOpencode": "Actualizar OpenCode",
|
||||
"wsl.onboarding.opencodeReadyIn": "OpenCode está listo en {{distro}}.",
|
||||
@@ -499,11 +499,11 @@ export const dict = {
|
||||
"wsl.onboarding.installOpencode": "Instalar OpenCode",
|
||||
"wsl.onboarding.chooseDistroFirst": "Elige primero una distribución.",
|
||||
"wsl.onboarding.loadFailed": "No se pudo cargar el estado de WSL.",
|
||||
"wsl.onboarding.loading": "Cargando...",
|
||||
"wsl.onboarding.loading": "Cargando…",
|
||||
"wsl.onboarding.installedDistros": "Distribuciones instaladas",
|
||||
"wsl.onboarding.checkAgain": "Comprobar de nuevo",
|
||||
"wsl.onboarding.distroStatus.ready": "Lista",
|
||||
"wsl.onboarding.distroStatus.checking": "Comprobando...",
|
||||
"wsl.onboarding.distroStatus.checking": "Comprobando…",
|
||||
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode no está instalado",
|
||||
"wsl.onboarding.distroStatus.missingTools": "Faltan bash y curl",
|
||||
"wsl.onboarding.distroStatus.unsupported": "No compatible · Usa WSL 2",
|
||||
@@ -522,7 +522,7 @@ export const dict = {
|
||||
"wsl.onboarding.allDistrosAdded": "Ya se han añadido todas las distribuciones instaladas.",
|
||||
"wsl.onboarding.noDistros": "Aún no se han detectado distribuciones.",
|
||||
"wsl.onboarding.install": "Instalar",
|
||||
"wsl.onboarding.installing": "Instalando...",
|
||||
"wsl.onboarding.installing": "Instalando…",
|
||||
"wsl.onboarding.installDistro": "Instalar distribución",
|
||||
"wsl.onboarding.searchDistros": "Buscar distribuciones",
|
||||
"wsl.onboarding.wsl2Required": "Se necesita WSL 2.",
|
||||
@@ -534,7 +534,7 @@ export const dict = {
|
||||
"wsl.onboarding.unknown": "desconocida",
|
||||
"wsl.onboarding.desktopVersion": "escritorio {{version}}",
|
||||
"wsl.onboarding.versionMismatch": "La versión instalada no coincide con la versión de la aplicación de escritorio.",
|
||||
"wsl.onboarding.adding": "Añadiendo...",
|
||||
"wsl.onboarding.adding": "Añadiendo…",
|
||||
|
||||
"dialog.project.edit.title": "Editar proyecto",
|
||||
"dialog.project.edit.name": "Nombre",
|
||||
@@ -658,7 +658,7 @@ export const dict = {
|
||||
"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.checking": "Comprobando…",
|
||||
"error.page.action.checkUpdates": "Buscar actualizaciones",
|
||||
"error.page.action.updateTo": "Actualizar a {{version}}",
|
||||
"error.page.report.prefix": "Informa de este error al equipo de OpenCode",
|
||||
@@ -736,7 +736,7 @@ export const dict = {
|
||||
"session.review.filesChanged": "Archivos modificados: {{count}}",
|
||||
"session.review.change.one": "Cambio",
|
||||
"session.review.change.other": "Cambios",
|
||||
"session.review.loadingChanges": "Cargando cambios...",
|
||||
"session.review.loadingChanges": "Cargando cambios…",
|
||||
"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":
|
||||
@@ -751,9 +751,9 @@ export const dict = {
|
||||
"session.files.binaryContent": "Archivo binario (no se puede mostrar el contenido)",
|
||||
|
||||
"session.messages.renderEarlier": "Mostrar mensajes anteriores",
|
||||
"session.messages.loadingEarlier": "Cargando mensajes anteriores...",
|
||||
"session.messages.loadingEarlier": "Cargando mensajes anteriores…",
|
||||
"session.messages.loadEarlier": "Cargar mensajes anteriores",
|
||||
"session.messages.loading": "Cargando mensajes...",
|
||||
"session.messages.loading": "Cargando mensajes…",
|
||||
"session.messages.jumpToLatest": "Ir al mensaje más reciente",
|
||||
|
||||
"session.context.addToContext": "Añadir {{selection}} al contexto",
|
||||
@@ -801,8 +801,8 @@ export const dict = {
|
||||
"lsp.tooltip.none": "Sin servidores LSP",
|
||||
"lsp.label.connected": "{{count}} LSP",
|
||||
|
||||
"prompt.loading": "Cargando prompt...",
|
||||
"terminal.loading": "Cargando terminal...",
|
||||
"prompt.loading": "Cargando prompt…",
|
||||
"terminal.loading": "Cargando terminal…",
|
||||
"terminal.title": "Terminal",
|
||||
"terminal.title.numbered": "Terminal {{number}}",
|
||||
"terminal.close": "Cerrar terminal",
|
||||
@@ -926,9 +926,9 @@ export const dict = {
|
||||
"settings.updates.row.check.title": "Buscar actualizaciones",
|
||||
"settings.updates.row.check.description": "Buscar actualizaciones manualmente e instalarlas si hay alguna",
|
||||
"settings.updates.action.checkNow": "Buscar ahora",
|
||||
"settings.updates.action.checking": "Buscando...",
|
||||
"settings.updates.action.downloading": "Descargando...",
|
||||
"settings.updates.action.installing": "Instalando...",
|
||||
"settings.updates.action.checking": "Buscando…",
|
||||
"settings.updates.action.downloading": "Descargando…",
|
||||
"settings.updates.action.installing": "Instalando…",
|
||||
"settings.updates.toast.latest.title": "Estás al día",
|
||||
"settings.updates.toast.latest.description": "Estás usando la última versión de OpenCode.",
|
||||
"sound.option.none": "Ninguno",
|
||||
@@ -1085,7 +1085,7 @@ export const dict = {
|
||||
"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.checking": "Comprobando cambios no fusionados…",
|
||||
"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.",
|
||||
@@ -1115,12 +1115,12 @@ export const dict = {
|
||||
"settings.providers.custom.description": "Añade un proveedor compatible con OpenAI por su URL base.",
|
||||
|
||||
"app.server.unreachable": "No se pudo conectar con {{server}}",
|
||||
"app.server.retrying": "Reintentando automáticamente...",
|
||||
"app.server.retrying": "Reintentando automáticamente…",
|
||||
"app.server.otherServers": "Otros servidores",
|
||||
"dialog.server.add.passwordPlaceholder": "contraseña",
|
||||
"session.review.noVcs.createGit.title": "Crear repositorio Git",
|
||||
"session.review.noVcs.createGit.description": "Rastrea, revisa y deshaz cambios en este proyecto",
|
||||
"session.review.noVcs.createGit.actionLoading": "Creando repositorio Git...",
|
||||
"session.review.noVcs.createGit.actionLoading": "Creando repositorio Git…",
|
||||
"session.review.noVcs.createGit.action": "Crear repositorio Git",
|
||||
"session.todo.progress": "{{done}} de {{total}} tareas completadas",
|
||||
"session.question.progress": "{{current}} de {{total}} preguntas",
|
||||
|
||||
@@ -6,13 +6,13 @@ export const dict = {
|
||||
"desktop.menu.go": "Mine",
|
||||
"desktop.menu.window": "Aken",
|
||||
"desktop.menu.help": "Abi",
|
||||
"desktop.menu.checkForUpdates": "Otsige värskendusi...",
|
||||
"desktop.menu.checkForUpdates": "Otsige värskendusi…",
|
||||
"desktop.menu.settings": "Seaded",
|
||||
"desktop.menu.reloadWebview": "Laadige Webview uuesti",
|
||||
"desktop.menu.restart": "Taaskäivitage",
|
||||
"desktop.menu.exportLogs": "Ekspordi logid...",
|
||||
"desktop.menu.exportLogs": "Ekspordi logid…",
|
||||
"desktop.menu.newSession": "Uus sessioon",
|
||||
"desktop.menu.openProject": "Ava projekt...",
|
||||
"desktop.menu.openProject": "Ava projekt…",
|
||||
"desktop.menu.newWindow": "Uus aken",
|
||||
"desktop.menu.closeWindow": "Sule aken",
|
||||
"desktop.menu.undo": "Võta tagasi",
|
||||
@@ -212,8 +212,8 @@ export const dict = {
|
||||
"provider.connect.method.apiKey": "API klahv",
|
||||
"provider.connect.method.browser": "Brauser",
|
||||
"provider.connect.method.headless": "Peata",
|
||||
"provider.connect.status.inProgress": "Autoriseerimine on pooleli...",
|
||||
"provider.connect.status.waiting": "Autoriseerimise ootel...",
|
||||
"provider.connect.status.inProgress": "Autoriseerimine on pooleli…",
|
||||
"provider.connect.status.waiting": "Autoriseerimise ootel…",
|
||||
"provider.connect.status.failed": "Autoriseerimine ebaõnnestus: {{error}}",
|
||||
"provider.connect.apiKey.description":
|
||||
"Sisestage {{provider}} API võti, et ühendada konto ja kasutada {{provider}} mudeleid OpenCode'is.",
|
||||
@@ -306,7 +306,7 @@ export const dict = {
|
||||
"common.goBack": "Navigeerige tagasi",
|
||||
"common.goForward": "Liikuge edasi",
|
||||
"common.loading": "Laadimine",
|
||||
"common.loading.ellipsis": "...",
|
||||
"common.loading.ellipsis": "…",
|
||||
"common.cancel": "Tühista",
|
||||
"common.clear": "Selge",
|
||||
"common.open": "Avatud",
|
||||
@@ -315,12 +315,12 @@ export const dict = {
|
||||
"common.continue": "Jätka",
|
||||
"common.submit": "Esita",
|
||||
"common.save": "Salvesta",
|
||||
"common.saving": "Salvestamine...",
|
||||
"common.saving": "Salvestamine…",
|
||||
"common.default": "Vaikimisi",
|
||||
"common.attachment": "manus",
|
||||
"prompt.placeholder.shell": "Sisestage shellikäsk... {{example}}",
|
||||
"prompt.placeholder.normal": 'Küsige mida tahes... "{{example}}"',
|
||||
"prompt.placeholder.simple": "Küsi midagi...",
|
||||
"prompt.placeholder.shell": "Sisestage shellikäsk… {{example}}",
|
||||
"prompt.placeholder.normal": 'Küsige mida tahes… "{{example}}"',
|
||||
"prompt.placeholder.simple": "Küsi midagi…",
|
||||
"prompt.placeholder.summarizeComments": "Tee kommentaaridest kokkuvõte…",
|
||||
"prompt.placeholder.summarizeComment": "Kommentaari kokkuvõte…",
|
||||
"prompt.mode.shell": "Shell",
|
||||
@@ -340,7 +340,7 @@ export const dict = {
|
||||
"prompt.example.10": "Loo API dokumentatsioon",
|
||||
"prompt.example.11": "Optimeerige andmebaasi päringuid",
|
||||
"prompt.example.12": "Lisage sisendi valideerimine",
|
||||
"prompt.example.13": "Looge uus komponent ...",
|
||||
"prompt.example.13": "Looge uus komponent …",
|
||||
"prompt.example.14": "Kuidas seda projekti juurutada?",
|
||||
"prompt.example.15": "Heade tavade saamiseks vaadake üle minu kood",
|
||||
"prompt.example.16": "Lisage sellele funktsioonile veakäsitlus",
|
||||
@@ -351,7 +351,7 @@ export const dict = {
|
||||
"prompt.example.21": "Aidake mul migratsiooniskripti kirjutada",
|
||||
"prompt.example.22": "Rakendage selle lõpp-punkti vahemälu",
|
||||
"prompt.example.23": "Lisage sellele loendile lehekülgede arv",
|
||||
"prompt.example.24": "Looge CLI käsk...",
|
||||
"prompt.example.24": "Looge CLI käsk…",
|
||||
"prompt.example.25": "Kuidas keskkonnamuutujad siin töötavad?",
|
||||
"prompt.popover.emptyResults": "Vastavaid tulemusi pole",
|
||||
"prompt.popover.emptyCommands": "Ühtegi sobivat käsku pole",
|
||||
@@ -403,7 +403,7 @@ export const dict = {
|
||||
"dialog.directory.parent": "Lapsevanem",
|
||||
"dialog.directory.readError": "Seda kausta ei saa lugeda",
|
||||
"app.server.unreachable": "Ei saanud ühendust {{server}}",
|
||||
"app.server.retrying": "Automaatne uuesti proovimine...",
|
||||
"app.server.retrying": "Automaatne uuesti proovimine…",
|
||||
"app.server.otherServers": "Muud serverid",
|
||||
"dialog.server.title": "Serverid",
|
||||
"dialog.server.description": "Lülitage, millise OpenCode serveriga see rakendus ühenduse loob.",
|
||||
@@ -413,7 +413,7 @@ export const dict = {
|
||||
"dialog.server.add.url": "Serveri aadress",
|
||||
"dialog.server.add.placeholder": "http://localhost:4096",
|
||||
"dialog.server.add.error": "Serveriga ei õnnestunud ühendust luua",
|
||||
"dialog.server.add.checking": "Kontrollimine...",
|
||||
"dialog.server.add.checking": "Kontrollimine…",
|
||||
"dialog.server.add.button": "Lisa server",
|
||||
"dialog.server.add.name": "Serveri nimi (valikuline)",
|
||||
"dialog.server.add.namePlaceholder": "Localhost",
|
||||
@@ -438,26 +438,26 @@ export const dict = {
|
||||
"wsl.server.label": "WSL",
|
||||
"wsl.server.menu.label": "WSL server",
|
||||
"wsl.server.retryStart": "Proovi uuesti alustada",
|
||||
"wsl.server.updating": "Värskendamine...",
|
||||
"wsl.server.updating": "Värskendamine…",
|
||||
"wsl.onboarding.step.distro": "Valige distro",
|
||||
"wsl.onboarding.step.opencode": "OpenCode",
|
||||
"wsl.onboarding.checkingRuntime": "WSL kontrollimine...",
|
||||
"wsl.onboarding.checkingRuntime": "WSL kontrollimine…",
|
||||
"wsl.onboarding.restartRequired": "Windows vajab installimise WSL lõpetamiseks taaskäivitamist.",
|
||||
"wsl.onboarding.ready": "WSL on valmis.",
|
||||
"wsl.onboarding.required": "Jätkamiseks on vaja WSL.",
|
||||
"wsl.onboarding.checkingDistros": "Distrode kontrollimine...",
|
||||
"wsl.onboarding.installingDistro": "{{distro}} installimine...",
|
||||
"wsl.onboarding.checkingDistro": "{{distro}} kontrollimine...",
|
||||
"wsl.onboarding.listingDistros": "Distrode loend...",
|
||||
"wsl.onboarding.checkingDistros": "Distrode kontrollimine…",
|
||||
"wsl.onboarding.installingDistro": "{{distro}} installimine…",
|
||||
"wsl.onboarding.checkingDistro": "{{distro}} kontrollimine…",
|
||||
"wsl.onboarding.listingDistros": "Distrode loend…",
|
||||
"wsl.onboarding.distroReady": "{{distro}} on valmis.",
|
||||
"wsl.onboarding.distroNotInstalled": "{{distro}} pole veel installitud.",
|
||||
"wsl.onboarding.openDistroOnce": "Seadistamise lõpetamiseks avage üks kord {{distro}}.",
|
||||
"wsl.onboarding.finishingDistro": "Seadistuse lõpetamine {{distro}} jaoks.",
|
||||
"wsl.onboarding.pickDistro": "Valige distro või installige see allpool.",
|
||||
"wsl.onboarding.checkingOpencode": "OpenCode kontrollimine...",
|
||||
"wsl.onboarding.checkingOpencodeIn": "OpenCode kontrollimine asukohas {{distro}}...",
|
||||
"wsl.onboarding.updatingOpencode": "OpenCode värskendamine...",
|
||||
"wsl.onboarding.updatingOpencodeIn": "OpenCode värskendamine asukohas {{distro}}...",
|
||||
"wsl.onboarding.checkingOpencode": "OpenCode kontrollimine…",
|
||||
"wsl.onboarding.checkingOpencodeIn": "OpenCode kontrollimine asukohas {{distro}}…",
|
||||
"wsl.onboarding.updatingOpencode": "OpenCode värskendamine…",
|
||||
"wsl.onboarding.updatingOpencodeIn": "OpenCode värskendamine asukohas {{distro}}…",
|
||||
"wsl.onboarding.updateOpencodeIn": "Värskenda OpenCode jaotises {{distro}}.",
|
||||
"wsl.onboarding.updateOpencode": "Värskenda OpenCode",
|
||||
"wsl.onboarding.opencodeReadyIn": "OpenCode on valmis {{distro}}.",
|
||||
@@ -466,11 +466,11 @@ export const dict = {
|
||||
"wsl.onboarding.installOpencode": "Installige OpenCode",
|
||||
"wsl.onboarding.chooseDistroFirst": "Valige esmalt distro.",
|
||||
"wsl.onboarding.loadFailed": "Oleku WSL laadimine ebaõnnestus.",
|
||||
"wsl.onboarding.loading": "Laadimine...",
|
||||
"wsl.onboarding.loading": "Laadimine…",
|
||||
"wsl.onboarding.installedDistros": "Installitud distrood",
|
||||
"wsl.onboarding.checkAgain": "Kontrollige uuesti",
|
||||
"wsl.onboarding.distroStatus.ready": "Valmis",
|
||||
"wsl.onboarding.distroStatus.checking": "Kontrollimine...",
|
||||
"wsl.onboarding.distroStatus.checking": "Kontrollimine…",
|
||||
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode pole installitud",
|
||||
"wsl.onboarding.distroStatus.missingTools": "Puuduvad bash, curl",
|
||||
"wsl.onboarding.distroStatus.unsupported": "Toetamata · Kasutage WSL 2",
|
||||
@@ -488,7 +488,7 @@ export const dict = {
|
||||
"wsl.onboarding.allDistrosAdded": "Kõik installitud distrood on juba lisatud.",
|
||||
"wsl.onboarding.noDistros": "Ühtegi distrosid pole veel tuvastatud.",
|
||||
"wsl.onboarding.install": "Installige",
|
||||
"wsl.onboarding.installing": "Installimine...",
|
||||
"wsl.onboarding.installing": "Installimine…",
|
||||
"wsl.onboarding.installDistro": "Installige distro",
|
||||
"wsl.onboarding.searchDistros": "Otsige distrosid",
|
||||
"wsl.onboarding.wsl2Required": "WSL 2 on nõutav.",
|
||||
@@ -500,7 +500,7 @@ export const dict = {
|
||||
"wsl.onboarding.unknown": "teadmata",
|
||||
"wsl.onboarding.desktopVersion": "töölaud {{version}}",
|
||||
"wsl.onboarding.versionMismatch": "Installitud versioon ei ühti töölauarakenduse versiooniga.",
|
||||
"wsl.onboarding.adding": "Lisamine...",
|
||||
"wsl.onboarding.adding": "Lisamine…",
|
||||
"dialog.project.edit.title": "Redigeeri projekti",
|
||||
"dialog.project.edit.name": "Nimi",
|
||||
"dialog.project.edit.icon": "Ikoon",
|
||||
@@ -605,7 +605,7 @@ export const dict = {
|
||||
"error.page.action.report": "Teata veast",
|
||||
"error.page.action.reported": "Teatatud viga",
|
||||
"error.page.action.exportLogs": "Ekspordi logid",
|
||||
"error.page.action.checking": "Kontrollimine...",
|
||||
"error.page.action.checking": "Kontrollimine…",
|
||||
"error.page.action.checkUpdates": "Kontrollige värskendusi",
|
||||
"error.page.action.updateTo": "Värskenda väärtusele {{version}}",
|
||||
"error.page.circular": "[Ringkiri]",
|
||||
@@ -682,12 +682,12 @@ export const dict = {
|
||||
"session.review.filesChanged": "Muudetud failid {{count}}",
|
||||
"session.review.change.one": "Muuda",
|
||||
"session.review.change.other": "Muudatused",
|
||||
"session.review.loadingChanges": "Muudatuste laadimine...",
|
||||
"session.review.loadingChanges": "Muudatuste laadimine…",
|
||||
"session.review.empty": "Sellel seansil pole veel muudatusi",
|
||||
"session.review.noVcs": "Ei tuvastatud Git Versioonikontrollisüsteemi, muudatusi ei kuvata",
|
||||
"session.review.noVcs.createGit.title": "Loo Git hoidla",
|
||||
"session.review.noVcs.createGit.description": "Selle projekti muudatuste jälgimine, ülevaatamine ja tagasivõtmine",
|
||||
"session.review.noVcs.createGit.actionLoading": "Git hoidla loomine...",
|
||||
"session.review.noVcs.createGit.actionLoading": "Git hoidla loomine…",
|
||||
"session.review.noVcs.createGit.action": "Loo Git hoidla",
|
||||
"session.review.noSnapshot":
|
||||
"Hetketõmmise jälgimine on konfiguratsioonis keelatud, seega pole seansi muudatused saadaval",
|
||||
@@ -699,9 +699,9 @@ export const dict = {
|
||||
"session.files.empty": "Faile pole",
|
||||
"session.files.binaryContent": "Binaarfail (sisu ei saa kuvada)",
|
||||
"session.messages.renderEarlier": "Renderda varasemaid sõnumeid",
|
||||
"session.messages.loadingEarlier": "Varasemate sõnumite laadimine...",
|
||||
"session.messages.loadingEarlier": "Varasemate sõnumite laadimine…",
|
||||
"session.messages.loadEarlier": "Laadige varasemad sõnumid",
|
||||
"session.messages.loading": "Sõnumite laadimine...",
|
||||
"session.messages.loading": "Sõnumite laadimine…",
|
||||
"session.messages.jumpToLatest": "Hüppa uusimale",
|
||||
"session.context.addToContext": "Lisage konteksti {{selection}}",
|
||||
"session.todo.title": "Ülesanded",
|
||||
@@ -762,8 +762,8 @@ export const dict = {
|
||||
"common.copied": "Kopeeritud",
|
||||
"lsp.tooltip.none": "LSP serverit pole",
|
||||
"lsp.label.connected": "{{count}} LSP",
|
||||
"prompt.loading": "Viipa laadimine...",
|
||||
"terminal.loading": "Terminali laadimine...",
|
||||
"prompt.loading": "Viipa laadimine…",
|
||||
"terminal.loading": "Terminali laadimine…",
|
||||
"terminal.title": "Terminal",
|
||||
"terminal.title.numbered": "Terminal {{number}}",
|
||||
"terminal.close": "Sulgege terminal",
|
||||
@@ -925,9 +925,9 @@ export const dict = {
|
||||
"settings.updates.row.check.title": "Kontrollige värskendusi",
|
||||
"settings.updates.row.check.description": "Kontrollige värskendusi käsitsi ja installige, kui need on saadaval",
|
||||
"settings.updates.action.checkNow": "Kontrollige kohe",
|
||||
"settings.updates.action.checking": "Kontrollimine...",
|
||||
"settings.updates.action.downloading": "Allalaadimine...",
|
||||
"settings.updates.action.installing": "Installimine...",
|
||||
"settings.updates.action.checking": "Kontrollimine…",
|
||||
"settings.updates.action.downloading": "Allalaadimine…",
|
||||
"settings.updates.action.installing": "Installimine…",
|
||||
"settings.updates.toast.latest.title": "Oled kursis",
|
||||
"settings.updates.toast.latest.description": "Kasutate rakenduse OpenCode uusimat versiooni.",
|
||||
"sound.option.none": "Mitte ühtegi",
|
||||
@@ -1073,7 +1073,7 @@ export const dict = {
|
||||
"workspace.reset.success.title": "Tööruumi lähtestamine",
|
||||
"workspace.reset.success.description": "Tööala vastab nüüd vaikeharule.",
|
||||
"workspace.error.stillPreparing": "Tööala on veel ettevalmistamisel",
|
||||
"workspace.status.checking": "Ühendamata muudatuste otsimine...",
|
||||
"workspace.status.checking": "Ühendamata muudatuste otsimine…",
|
||||
"workspace.status.error": "git-olekut ei saa kinnitada.",
|
||||
"workspace.status.clean": "Ühtegi ühendamata muudatust ei tuvastatud.",
|
||||
"workspace.status.dirty": "Selles tööruumis tuvastati ühendamata muudatused.",
|
||||
|
||||
@@ -6,13 +6,13 @@ export const dict = {
|
||||
"desktop.menu.go": "برو",
|
||||
"desktop.menu.window": "پنجره",
|
||||
"desktop.menu.help": "کمک کنید",
|
||||
"desktop.menu.checkForUpdates": "بررسی به روز رسانی...",
|
||||
"desktop.menu.checkForUpdates": "بررسی به روز رسانی…",
|
||||
"desktop.menu.settings": "تنظیمات",
|
||||
"desktop.menu.reloadWebview": "بارگذاری مجدد Webview",
|
||||
"desktop.menu.restart": "راه اندازی مجدد",
|
||||
"desktop.menu.exportLogs": "صادرات گزارشها...",
|
||||
"desktop.menu.exportLogs": "صادرات گزارشها…",
|
||||
"desktop.menu.newSession": "جلسه جدید",
|
||||
"desktop.menu.openProject": "باز کردن پروژه ...",
|
||||
"desktop.menu.openProject": "باز کردن پروژه …",
|
||||
"desktop.menu.newWindow": "پنجره جدید",
|
||||
"desktop.menu.closeWindow": "بستن پنجره",
|
||||
"desktop.menu.undo": "واگرد",
|
||||
@@ -213,8 +213,8 @@ export const dict = {
|
||||
"provider.connect.method.apiKey": "کلید API",
|
||||
"provider.connect.method.browser": "مرورگر",
|
||||
"provider.connect.method.headless": "بدون رابط گرافیکی",
|
||||
"provider.connect.status.inProgress": "مجوز در حال انجام است...",
|
||||
"provider.connect.status.waiting": "در انتظار مجوز...",
|
||||
"provider.connect.status.inProgress": "مجوز در حال انجام است…",
|
||||
"provider.connect.status.waiting": "در انتظار مجوز…",
|
||||
"provider.connect.status.failed": "مجوز انجام نشد: {{error}}",
|
||||
"provider.connect.apiKey.description":
|
||||
"کلید API سرویس {{provider}} را وارد کنید تا حساب شما متصل شود و بتوانید از مدلهای {{provider}} در OpenCode استفاده کنید.",
|
||||
@@ -307,7 +307,7 @@ export const dict = {
|
||||
"common.goBack": "به عقب پیمایش کنید",
|
||||
"common.goForward": "به جلو حرکت کنید",
|
||||
"common.loading": "در حال بارگذاری",
|
||||
"common.loading.ellipsis": "...",
|
||||
"common.loading.ellipsis": "…",
|
||||
"common.cancel": "لغو کنید",
|
||||
"common.clear": "پاک کردن",
|
||||
"common.open": "باز کنید",
|
||||
@@ -316,12 +316,12 @@ export const dict = {
|
||||
"common.continue": "ادامه دهید",
|
||||
"common.submit": "ارسال کنید",
|
||||
"common.save": "ذخیره کنید",
|
||||
"common.saving": "در حال ذخیره...",
|
||||
"common.saving": "در حال ذخیره…",
|
||||
"common.default": "پیش فرض",
|
||||
"common.attachment": "پیوست",
|
||||
"prompt.placeholder.shell": "دستور پوسته را وارد کنید... {{example}}",
|
||||
"prompt.placeholder.normal": 'هر چیزی بپرسید... "{{example}}"',
|
||||
"prompt.placeholder.simple": "هر چیزی بپرس...",
|
||||
"prompt.placeholder.shell": "دستور پوسته را وارد کنید… {{example}}",
|
||||
"prompt.placeholder.normal": 'هر چیزی بپرسید… "{{example}}"',
|
||||
"prompt.placeholder.simple": "هر چیزی بپرس…",
|
||||
"prompt.placeholder.summarizeComments": "خلاصه نظرات…",
|
||||
"prompt.placeholder.summarizeComment": "خلاصه نظر…",
|
||||
"prompt.mode.shell": "پوسته",
|
||||
@@ -341,7 +341,7 @@ export const dict = {
|
||||
"prompt.example.10": "مستندات API را ایجاد کنید",
|
||||
"prompt.example.11": "بهینه سازی پرس و جوهای پایگاه داده",
|
||||
"prompt.example.12": "افزودن اعتبار سنجی ورودی",
|
||||
"prompt.example.13": "ایجاد یک جزء جدید برای ...",
|
||||
"prompt.example.13": "ایجاد یک جزء جدید برای …",
|
||||
"prompt.example.14": "چگونه این پروژه را مستقر کنم؟",
|
||||
"prompt.example.15": "کد من را برای بهترین شیوه ها مرور کنید",
|
||||
"prompt.example.16": "مدیریت خطا را به این تابع اضافه کنید",
|
||||
@@ -352,7 +352,7 @@ export const dict = {
|
||||
"prompt.example.21": "به من کمک کنید تا یک اسکریپت مهاجرت بنویسم",
|
||||
"prompt.example.22": "کش را برای این نقطه پایانی اجرا کنید",
|
||||
"prompt.example.23": "صفحه بندی را به این لیست اضافه کنید",
|
||||
"prompt.example.24": "ایجاد یک دستور CLI برای ...",
|
||||
"prompt.example.24": "ایجاد یک دستور CLI برای …",
|
||||
"prompt.example.25": "متغیرهای محیطی در اینجا چگونه کار می کنند؟",
|
||||
"prompt.popover.emptyResults": "نتایج منطبقی وجود ندارد",
|
||||
"prompt.popover.emptyCommands": "بدون دستور منطبق",
|
||||
@@ -404,7 +404,7 @@ export const dict = {
|
||||
"dialog.directory.parent": "پدر و مادر",
|
||||
"dialog.directory.readError": "خواندن این پوشه ممکن نیست",
|
||||
"app.server.unreachable": "نمی توان به {{server}} رسید",
|
||||
"app.server.retrying": "تلاش مجدد به صورت خودکار...",
|
||||
"app.server.retrying": "تلاش مجدد به صورت خودکار…",
|
||||
"app.server.otherServers": "سرورهای دیگر",
|
||||
"dialog.server.title": "سرورها",
|
||||
"dialog.server.description": "این برنامه به کدام سرور OpenCode متصل است، تغییر دهید.",
|
||||
@@ -414,7 +414,7 @@ export const dict = {
|
||||
"dialog.server.add.url": "آدرس سرور",
|
||||
"dialog.server.add.placeholder": "http://localhost:4096",
|
||||
"dialog.server.add.error": "نمی توان به سرور متصل شد",
|
||||
"dialog.server.add.checking": "در حال بررسی...",
|
||||
"dialog.server.add.checking": "در حال بررسی…",
|
||||
"dialog.server.add.button": "سرور اضافه کنید",
|
||||
"dialog.server.add.name": "نام سرور (اختیاری)",
|
||||
"dialog.server.add.namePlaceholder": "Localhost",
|
||||
@@ -439,26 +439,26 @@ export const dict = {
|
||||
"wsl.server.label": "WSL",
|
||||
"wsl.server.menu.label": "سرور WSL",
|
||||
"wsl.server.retryStart": "شروع مجدد امتحان کنید",
|
||||
"wsl.server.updating": "در حال به روز رسانی...",
|
||||
"wsl.server.updating": "در حال به روز رسانی…",
|
||||
"wsl.onboarding.step.distro": "توزیع را انتخاب کنید",
|
||||
"wsl.onboarding.step.opencode": "OpenCode",
|
||||
"wsl.onboarding.checkingRuntime": "در حال بررسی WSL...",
|
||||
"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.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": "بررسی OpenCode در {{distro}}...",
|
||||
"wsl.onboarding.updatingOpencode": "در حال به روز رسانی OpenCode...",
|
||||
"wsl.onboarding.updatingOpencodeIn": "به روز رسانی OpenCode در {{distro}}...",
|
||||
"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.updateOpencode": "OpenCode را به روز کنید",
|
||||
"wsl.onboarding.opencodeReadyIn": "OpenCode در {{distro}} آماده است.",
|
||||
@@ -467,11 +467,11 @@ export const dict = {
|
||||
"wsl.onboarding.installOpencode": "OpenCode را نصب کنید",
|
||||
"wsl.onboarding.chooseDistroFirst": "ابتدا یک توزیع را انتخاب کنید.",
|
||||
"wsl.onboarding.loadFailed": "وضعیت WSL بارگیری نشد.",
|
||||
"wsl.onboarding.loading": "در حال بارگیری...",
|
||||
"wsl.onboarding.loading": "در حال بارگیری…",
|
||||
"wsl.onboarding.installedDistros": "توزیع های نصب شده",
|
||||
"wsl.onboarding.checkAgain": "دوباره چک کنید",
|
||||
"wsl.onboarding.distroStatus.ready": "آماده است",
|
||||
"wsl.onboarding.distroStatus.checking": "در حال بررسی...",
|
||||
"wsl.onboarding.distroStatus.checking": "در حال بررسی…",
|
||||
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode نصب نشده است",
|
||||
"wsl.onboarding.distroStatus.missingTools": "bash، curl وجود ندارد",
|
||||
"wsl.onboarding.distroStatus.unsupported": "پشتیبانی نشده · از WSL 2 استفاده کنید",
|
||||
@@ -490,7 +490,7 @@ export const dict = {
|
||||
"wsl.onboarding.allDistrosAdded": "همه توزیعهای نصبشده قبلاً اضافه شدهاند.",
|
||||
"wsl.onboarding.noDistros": "هنوز هیچ توزیعی شناسایی نشده است.",
|
||||
"wsl.onboarding.install": "نصب کنید",
|
||||
"wsl.onboarding.installing": "در حال نصب...",
|
||||
"wsl.onboarding.installing": "در حال نصب…",
|
||||
"wsl.onboarding.installDistro": "توزیع را نصب کنید",
|
||||
"wsl.onboarding.searchDistros": "جستجوی توزیع ها",
|
||||
"wsl.onboarding.wsl2Required": "WSL 2 مورد نیاز است.",
|
||||
@@ -502,7 +502,7 @@ export const dict = {
|
||||
"wsl.onboarding.unknown": "ناشناخته",
|
||||
"wsl.onboarding.desktopVersion": "دسکتاپ {{version}}",
|
||||
"wsl.onboarding.versionMismatch": "نسخه نصب شده با نسخه برنامه دسکتاپ مطابقت ندارد.",
|
||||
"wsl.onboarding.adding": "در حال افزودن...",
|
||||
"wsl.onboarding.adding": "در حال افزودن…",
|
||||
"dialog.project.edit.title": "ویرایش پروژه",
|
||||
"dialog.project.edit.name": "نام",
|
||||
"dialog.project.edit.icon": "نماد",
|
||||
@@ -607,7 +607,7 @@ export const dict = {
|
||||
"error.page.action.report": "گزارش خطا",
|
||||
"error.page.action.reported": "خطا گزارش شده است",
|
||||
"error.page.action.exportLogs": "صادرات سیاهههای مربوط",
|
||||
"error.page.action.checking": "در حال بررسی...",
|
||||
"error.page.action.checking": "در حال بررسی…",
|
||||
"error.page.action.checkUpdates": "به روز رسانی را بررسی کنید",
|
||||
"error.page.action.updateTo": "به روز رسانی به {{version}}",
|
||||
"error.page.circular": "[دایره]",
|
||||
@@ -685,12 +685,12 @@ export const dict = {
|
||||
"session.review.filesChanged": "فایل ها تغییر کردند {{count}}",
|
||||
"session.review.change.one": "تغییر دهید",
|
||||
"session.review.change.other": "تغییرات",
|
||||
"session.review.loadingChanges": "در حال بارگیری تغییرات...",
|
||||
"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.actionLoading": "ایجاد مخزن Git…",
|
||||
"session.review.noVcs.createGit.action": "مخزن Git ایجاد کنید",
|
||||
"session.review.noSnapshot": "ردیابی عکس فوری در پیکربندی غیرفعال است، بنابراین تغییرات جلسه در دسترس نیست",
|
||||
"session.review.noChanges": "بدون تغییر",
|
||||
@@ -701,9 +701,9 @@ export const dict = {
|
||||
"session.files.empty": "بدون فایل",
|
||||
"session.files.binaryContent": "فایل باینری (محتوا قابل نمایش نیست)",
|
||||
"session.messages.renderEarlier": "ارسال پیام های قبلی",
|
||||
"session.messages.loadingEarlier": "در حال بارگیری پیام های قبلی...",
|
||||
"session.messages.loadingEarlier": "در حال بارگیری پیام های قبلی…",
|
||||
"session.messages.loadEarlier": "بارگیری پیام های قبلی",
|
||||
"session.messages.loading": "در حال بارگیری پیام ها...",
|
||||
"session.messages.loading": "در حال بارگیری پیام ها…",
|
||||
"session.messages.jumpToLatest": "پرش به آخرین",
|
||||
"session.context.addToContext": "{{selection}} را به متن اضافه کنید",
|
||||
"session.todo.title": "کارهای انجامدادنی",
|
||||
@@ -764,8 +764,8 @@ export const dict = {
|
||||
"common.copied": "کپی شد",
|
||||
"lsp.tooltip.none": "بدون سرور LSP",
|
||||
"lsp.label.connected": "{{count}} LSP",
|
||||
"prompt.loading": "در حال بارگیری درخواست...",
|
||||
"terminal.loading": "در حال بارگیری ترمینال...",
|
||||
"prompt.loading": "در حال بارگیری درخواست…",
|
||||
"terminal.loading": "در حال بارگیری ترمینال…",
|
||||
"terminal.title": "ترمینال",
|
||||
"terminal.title.numbered": "ترمینال {{number}}",
|
||||
"terminal.close": "ترمینال را ببندید",
|
||||
@@ -926,9 +926,9 @@ export const dict = {
|
||||
"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.action.checking": "در حال بررسی…",
|
||||
"settings.updates.action.downloading": "در حال دانلود…",
|
||||
"settings.updates.action.installing": "در حال نصب…",
|
||||
"settings.updates.toast.latest.title": "شما به روز هستید",
|
||||
"settings.updates.toast.latest.description": "شما آخرین نسخه OpenCode را اجرا می کنید.",
|
||||
"sound.option.none": "هیچ کدام",
|
||||
@@ -1075,7 +1075,7 @@ export const dict = {
|
||||
"workspace.reset.success.title": "بازنشانی فضای کاری",
|
||||
"workspace.reset.success.description": "اکنون فضای کاری با شاخه پیشفرض مطابقت دارد.",
|
||||
"workspace.error.stillPreparing": "فضای کاری همچنان در حال آماده سازی است",
|
||||
"workspace.status.checking": "در حال بررسی تغییرات ادغام نشده...",
|
||||
"workspace.status.checking": "در حال بررسی تغییرات ادغام نشده…",
|
||||
"workspace.status.error": "تأیید وضعیت git ممکن نیست.",
|
||||
"workspace.status.clean": "هیچ تغییر ادغام نشده شناسایی نشد.",
|
||||
"workspace.status.dirty": "تغییرات ادغام نشده در این فضای کاری شناسایی شد.",
|
||||
|
||||
@@ -120,8 +120,8 @@ export const dict = {
|
||||
"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.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.",
|
||||
@@ -214,7 +214,7 @@ export const dict = {
|
||||
"common.goBack": "Siirry takaisin",
|
||||
"common.goForward": "Siirry eteenpäin",
|
||||
"common.loading": "Ladataan",
|
||||
"common.loading.ellipsis": "...",
|
||||
"common.loading.ellipsis": "…",
|
||||
"common.cancel": "Peruuta",
|
||||
"common.clear": "Tyhjennä",
|
||||
"common.open": "Avaa",
|
||||
@@ -223,12 +223,12 @@ export const dict = {
|
||||
"common.continue": "Jatka",
|
||||
"common.submit": "Lähetä",
|
||||
"common.save": "Tallenna",
|
||||
"common.saving": "Tallennetaan...",
|
||||
"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.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",
|
||||
@@ -248,7 +248,7 @@ export const dict = {
|
||||
"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.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",
|
||||
@@ -259,7 +259,7 @@ export const dict = {
|
||||
"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.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",
|
||||
@@ -311,7 +311,7 @@ export const dict = {
|
||||
"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.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.",
|
||||
@@ -321,7 +321,7 @@ export const dict = {
|
||||
"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.checking": "Tarkistetaan…",
|
||||
"dialog.server.add.button": "Lisää palvelin",
|
||||
"dialog.server.add.name": "Palvelimen nimi (valinnainen)",
|
||||
"dialog.server.add.namePlaceholder": "Localhost",
|
||||
@@ -346,26 +346,26 @@ export const dict = {
|
||||
"wsl.server.label": "WSL",
|
||||
"wsl.server.menu.label": "WSL-palvelin",
|
||||
"wsl.server.retryStart": "Yritä käynnistystä uudelleen",
|
||||
"wsl.server.updating": "Päivitetään...",
|
||||
"wsl.server.updating": "Päivitetään…",
|
||||
"wsl.onboarding.step.distro": "Valitse jakelu",
|
||||
"wsl.onboarding.step.opencode": "OpenCode",
|
||||
"wsl.onboarding.checkingRuntime": "Tarkistetaan WSL...",
|
||||
"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.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.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}}.",
|
||||
@@ -374,11 +374,11 @@ export const dict = {
|
||||
"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.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.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",
|
||||
@@ -397,7 +397,7 @@ export const dict = {
|
||||
"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.installing": "Asennetaan…",
|
||||
"wsl.onboarding.installDistro": "Asenna jakelu",
|
||||
"wsl.onboarding.searchDistros": "Etsi jakeluja",
|
||||
"wsl.onboarding.wsl2Required": "WSL 2 vaaditaan.",
|
||||
@@ -409,7 +409,7 @@ export const dict = {
|
||||
"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...",
|
||||
"wsl.onboarding.adding": "Lisätään…",
|
||||
"dialog.project.edit.title": "Muokkaa projektia",
|
||||
"dialog.project.edit.name": "Nimi",
|
||||
"dialog.project.edit.icon": "Kuvake",
|
||||
@@ -519,7 +519,7 @@ export const dict = {
|
||||
"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.checking": "Tarkistetaan…",
|
||||
"error.page.action.checkUpdates": "Tarkista päivitykset",
|
||||
"error.page.action.updateTo": "Päivitä versioon {{version}}",
|
||||
"error.page.circular": "[Kehäviittaus]",
|
||||
@@ -598,12 +598,12 @@ export const dict = {
|
||||
"session.review.filesChanged": "Muutettuja tiedostoja: {{count}}",
|
||||
"session.review.change.one": "Muutos",
|
||||
"session.review.change.other": "Muutokset",
|
||||
"session.review.loadingChanges": "Ladataan muutoksia...",
|
||||
"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.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ä",
|
||||
@@ -615,9 +615,9 @@ export const dict = {
|
||||
"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.loadingEarlier": "Ladataan aikaisempia viestejä…",
|
||||
"session.messages.loadEarlier": "Lataa aikaisemmat viestit",
|
||||
"session.messages.loading": "Ladataan viestejä...",
|
||||
"session.messages.loading": "Ladataan viestejä…",
|
||||
"session.messages.jumpToLatest": "Siirry uusimpaan",
|
||||
"session.context.addToContext": "Lisää {{selection}} kontekstiin",
|
||||
"session.todo.title": "Tehtävät",
|
||||
@@ -678,8 +678,8 @@ export const dict = {
|
||||
"common.copied": "Kopioitu",
|
||||
"lsp.tooltip.none": "Ei LSP-palvelimia",
|
||||
"lsp.label.connected": "{{count}} LSP",
|
||||
"prompt.loading": "Ladataan kehotetta...",
|
||||
"terminal.loading": "Ladataan terminaalia...",
|
||||
"prompt.loading": "Ladataan kehotetta…",
|
||||
"terminal.loading": "Ladataan terminaalia…",
|
||||
"terminal.title": "Terminaali",
|
||||
"terminal.title.numbered": "Terminaali {{number}}",
|
||||
"terminal.close": "Sulje terminaali",
|
||||
@@ -845,9 +845,9 @@ export const dict = {
|
||||
"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.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",
|
||||
@@ -996,7 +996,7 @@ export const dict = {
|
||||
"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.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.",
|
||||
@@ -1017,13 +1017,13 @@ export const dict = {
|
||||
"desktop.menu.go": "Siirry",
|
||||
"desktop.menu.window": "Ikkuna",
|
||||
"desktop.menu.help": "Ohje",
|
||||
"desktop.menu.checkForUpdates": "Tarkista päivitykset...",
|
||||
"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.exportLogs": "Vie lokit…",
|
||||
"desktop.menu.newSession": "Uusi istunto",
|
||||
"desktop.menu.openProject": "Avaa projekti...",
|
||||
"desktop.menu.openProject": "Avaa projekti…",
|
||||
"desktop.menu.newWindow": "Uusi ikkuna",
|
||||
"desktop.menu.closeWindow": "Sulje ikkuna",
|
||||
"desktop.menu.undo": "Kumoa",
|
||||
|
||||
@@ -6,13 +6,13 @@ export const dict = {
|
||||
"desktop.menu.go": "Far",
|
||||
"desktop.menu.window": "Vindeyga",
|
||||
"desktop.menu.help": "Hjálp",
|
||||
"desktop.menu.checkForUpdates": "Kanna fyri dagføringum...",
|
||||
"desktop.menu.checkForUpdates": "Kanna fyri dagføringum…",
|
||||
"desktop.menu.settings": "Innstillingar",
|
||||
"desktop.menu.reloadWebview": "Endurlesa vevvísing",
|
||||
"desktop.menu.restart": "Endurbyrja",
|
||||
"desktop.menu.exportLogs": "Útflyt loggar...",
|
||||
"desktop.menu.exportLogs": "Útflyt loggar…",
|
||||
"desktop.menu.newSession": "Nýggj seta",
|
||||
"desktop.menu.openProject": "Opna verkætlan...",
|
||||
"desktop.menu.openProject": "Opna verkætlan…",
|
||||
"desktop.menu.newWindow": "Nýtt vindeyga",
|
||||
"desktop.menu.closeWindow": "Lat vindeyga aftur",
|
||||
"desktop.menu.undo": "Angra",
|
||||
@@ -212,8 +212,8 @@ export const dict = {
|
||||
"provider.connect.method.apiKey": "API lykil",
|
||||
"provider.connect.method.browser": "Kagari",
|
||||
"provider.connect.method.headless": "Høvdleysur",
|
||||
"provider.connect.status.inProgress": "Heimild í gongd...",
|
||||
"provider.connect.status.waiting": "Bíða eftir heimild...",
|
||||
"provider.connect.status.inProgress": "Heimild í gongd…",
|
||||
"provider.connect.status.waiting": "Bíða eftir heimild…",
|
||||
"provider.connect.status.failed": "Heimild miseydnaðist: {{error}}",
|
||||
"provider.connect.apiKey.description":
|
||||
"Skriva {{provider}} API-lykilin fyri at knýta kontuna saman og brúka {{provider}}-modell í OpenCode.",
|
||||
@@ -306,7 +306,7 @@ export const dict = {
|
||||
"common.goBack": "Far aftur",
|
||||
"common.goForward": "Far frameftir",
|
||||
"common.loading": "Innlesing",
|
||||
"common.loading.ellipsis": "...",
|
||||
"common.loading.ellipsis": "…",
|
||||
"common.cancel": "Avlýs",
|
||||
"common.clear": "Klára",
|
||||
"common.open": "Opið",
|
||||
@@ -315,14 +315,14 @@ export const dict = {
|
||||
"common.continue": "Halt fram",
|
||||
"common.submit": "Send inn",
|
||||
"common.save": "Goym",
|
||||
"common.saving": "Spar...",
|
||||
"common.saving": "Spar…",
|
||||
"common.default": "Forsett",
|
||||
"common.attachment": "viðheft",
|
||||
"prompt.placeholder.shell": "Skriva eina shell-skipan... {{example}}",
|
||||
"prompt.placeholder.normal": 'Spyr nakað sum helst... "{{example}}"',
|
||||
"prompt.placeholder.simple": "Spyr um alt...",
|
||||
"prompt.placeholder.summarizeComments": "Samanber viðmerkingar...",
|
||||
"prompt.placeholder.summarizeComment": "Samanfata viðmerking...",
|
||||
"prompt.placeholder.shell": "Skriva eina shell-skipan… {{example}}",
|
||||
"prompt.placeholder.normal": 'Spyr nakað sum helst… "{{example}}"',
|
||||
"prompt.placeholder.simple": "Spyr um alt…",
|
||||
"prompt.placeholder.summarizeComments": "Samanber viðmerkingar…",
|
||||
"prompt.placeholder.summarizeComment": "Samanfata viðmerking…",
|
||||
"prompt.mode.shell": "Shell",
|
||||
"prompt.mode.normal": "Prompt",
|
||||
"prompt.mode.shell.exit": "esc at fara út",
|
||||
@@ -340,7 +340,7 @@ export const dict = {
|
||||
"prompt.example.10": "Ger API skjøl",
|
||||
"prompt.example.11": "Optimera dátugrunnsfyrispurningar",
|
||||
"prompt.example.12": "Legg inntøkugóðkenning til",
|
||||
"prompt.example.13": "Stovna ein nýggjan part til...",
|
||||
"prompt.example.13": "Stovna ein nýggjan part til…",
|
||||
"prompt.example.14": "Hvussu seti eg hesa verkætlanina í verk?",
|
||||
"prompt.example.15": "Gjøgnumganga mína kodu fyri bestu siðvenjur",
|
||||
"prompt.example.16": "Legg feilhandfaring til hesa funku",
|
||||
@@ -351,7 +351,7 @@ export const dict = {
|
||||
"prompt.example.21": "Hjálp mær at skriva eitt flytingarrit",
|
||||
"prompt.example.22": "Set í verk goymslu fyri hetta endapunktið",
|
||||
"prompt.example.23": "Legg síðu til hendan listan",
|
||||
"prompt.example.24": "Stovna eina CLI skipan til...",
|
||||
"prompt.example.24": "Stovna eina CLI skipan til…",
|
||||
"prompt.example.25": "Hvussu virka umhvørvisbreytir her?",
|
||||
"prompt.popover.emptyResults": "Eingi samsvarandi úrslit",
|
||||
"prompt.popover.emptyCommands": "Ongar samsvarandi skipanir",
|
||||
@@ -403,7 +403,7 @@ export const dict = {
|
||||
"dialog.directory.parent": "Foreldur",
|
||||
"dialog.directory.readError": "Tað ber ikki til at lesa hesa mappuna",
|
||||
"app.server.unreachable": "Kundi ikki náa {{server}}.",
|
||||
"app.server.retrying": "Roynir aftur sjálvvirkandi...",
|
||||
"app.server.retrying": "Roynir aftur sjálvvirkandi…",
|
||||
"app.server.otherServers": "Aðrir ambætarar",
|
||||
"dialog.server.title": "Ambætarar",
|
||||
"dialog.server.description": "Skift hvønn OpenCode ambætara henda appin hevur samband við.",
|
||||
@@ -413,7 +413,7 @@ export const dict = {
|
||||
"dialog.server.add.url": "Ambætaraadressa",
|
||||
"dialog.server.add.placeholder": "http://localhost:4096",
|
||||
"dialog.server.add.error": "Kundi ikki seta samband við ambætaran",
|
||||
"dialog.server.add.checking": "Kanna...",
|
||||
"dialog.server.add.checking": "Kanna…",
|
||||
"dialog.server.add.button": "Legg ambætara til",
|
||||
"dialog.server.add.name": "Ambætaranavn (valfrítt)",
|
||||
"dialog.server.add.namePlaceholder": "Localhost",
|
||||
@@ -438,26 +438,26 @@ export const dict = {
|
||||
"wsl.server.label": "WSL",
|
||||
"wsl.server.menu.label": "WSL ambætari",
|
||||
"wsl.server.retryStart": "Royn aftur at byrja",
|
||||
"wsl.server.updating": "Dagføring...",
|
||||
"wsl.server.updating": "Dagføring…",
|
||||
"wsl.onboarding.step.distro": "Vel distro",
|
||||
"wsl.onboarding.step.opencode": "OpenCode",
|
||||
"wsl.onboarding.checkingRuntime": "Kanna WSL...",
|
||||
"wsl.onboarding.checkingRuntime": "Kanna WSL…",
|
||||
"wsl.onboarding.restartRequired": "Windows hevur brúk fyri endurbyrjan fyri at klára at seta upp WSL.",
|
||||
"wsl.onboarding.ready": "WSL er klárt.",
|
||||
"wsl.onboarding.required": "WSL er kravt fyri at halda fram.",
|
||||
"wsl.onboarding.checkingDistros": "Kanna útbreiðslur...",
|
||||
"wsl.onboarding.installingDistro": "Seta upp {{distro}}...",
|
||||
"wsl.onboarding.checkingDistro": "Kanna {{distro}}...",
|
||||
"wsl.onboarding.listingDistros": "Skráseta útbreiðslur...",
|
||||
"wsl.onboarding.checkingDistros": "Kanna útbreiðslur…",
|
||||
"wsl.onboarding.installingDistro": "Seta upp {{distro}}…",
|
||||
"wsl.onboarding.checkingDistro": "Kanna {{distro}}…",
|
||||
"wsl.onboarding.listingDistros": "Skráseta útbreiðslur…",
|
||||
"wsl.onboarding.distroReady": "{{distro}} er klárt.",
|
||||
"wsl.onboarding.distroNotInstalled": "{{distro}} er ikki installerað enn.",
|
||||
"wsl.onboarding.openDistroOnce": "Opna {{distro}} einaferð fyri at klára uppsetingina.",
|
||||
"wsl.onboarding.finishingDistro": "Klára uppseting til {{distro}}.",
|
||||
"wsl.onboarding.pickDistro": "Vel eina distro ella set eina upp niðanfyri.",
|
||||
"wsl.onboarding.checkingOpencode": "Kanna OpenCode...",
|
||||
"wsl.onboarding.checkingOpencodeIn": "Kanna OpenCode í {{distro}}...",
|
||||
"wsl.onboarding.updatingOpencode": "Dagføring OpenCode...",
|
||||
"wsl.onboarding.updatingOpencodeIn": "Dagføring OpenCode í {{distro}}...",
|
||||
"wsl.onboarding.checkingOpencode": "Kanna OpenCode…",
|
||||
"wsl.onboarding.checkingOpencodeIn": "Kanna OpenCode í {{distro}}…",
|
||||
"wsl.onboarding.updatingOpencode": "Dagføring OpenCode…",
|
||||
"wsl.onboarding.updatingOpencodeIn": "Dagføring OpenCode í {{distro}}…",
|
||||
"wsl.onboarding.updateOpencodeIn": "Dagfør OpenCode í {{distro}}.",
|
||||
"wsl.onboarding.updateOpencode": "Dagfør OpenCode",
|
||||
"wsl.onboarding.opencodeReadyIn": "OpenCode er klárt í {{distro}}.",
|
||||
@@ -466,11 +466,11 @@ export const dict = {
|
||||
"wsl.onboarding.installOpencode": "Set upp OpenCode",
|
||||
"wsl.onboarding.chooseDistroFirst": "Vel eina distro fyrst.",
|
||||
"wsl.onboarding.loadFailed": "Tað eydnaðist ikki at heinta WSL tilstandin.",
|
||||
"wsl.onboarding.loading": "Heinta...",
|
||||
"wsl.onboarding.loading": "Heinta…",
|
||||
"wsl.onboarding.installedDistros": "Innsettar distros",
|
||||
"wsl.onboarding.checkAgain": "Kanna aftur",
|
||||
"wsl.onboarding.distroStatus.ready": "Klárt",
|
||||
"wsl.onboarding.distroStatus.checking": "Kanna...",
|
||||
"wsl.onboarding.distroStatus.checking": "Kanna…",
|
||||
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode ikki innstillað",
|
||||
"wsl.onboarding.distroStatus.missingTools": "Manglar bash, curl",
|
||||
"wsl.onboarding.distroStatus.unsupported": "Óstuðlað · Brúka WSL 2",
|
||||
@@ -489,7 +489,7 @@ export const dict = {
|
||||
"wsl.onboarding.allDistrosAdded": "Allar uppsettar distros eru longu lagdar afturat.",
|
||||
"wsl.onboarding.noDistros": "Ongar útbreiðslur eru funnar enn.",
|
||||
"wsl.onboarding.install": "Set upp",
|
||||
"wsl.onboarding.installing": "Seta upp...",
|
||||
"wsl.onboarding.installing": "Seta upp…",
|
||||
"wsl.onboarding.installDistro": "Set distro upp",
|
||||
"wsl.onboarding.searchDistros": "Leita eftir útbreiðslum",
|
||||
"wsl.onboarding.wsl2Required": "WSL 2 er kravt.",
|
||||
@@ -501,7 +501,7 @@ export const dict = {
|
||||
"wsl.onboarding.unknown": "ókent",
|
||||
"wsl.onboarding.desktopVersion": "skriviborð {{version}}",
|
||||
"wsl.onboarding.versionMismatch": "Innsetta útgávan passar ikki til skriviborðsappiútgávuna.",
|
||||
"wsl.onboarding.adding": "Leggi til...",
|
||||
"wsl.onboarding.adding": "Leggi til…",
|
||||
"dialog.project.edit.title": "Rætta verkætlan",
|
||||
"dialog.project.edit.name": "Navn",
|
||||
"dialog.project.edit.icon": "Ikon",
|
||||
@@ -607,7 +607,7 @@ export const dict = {
|
||||
"error.page.action.report": "Melda feil",
|
||||
"error.page.action.reported": "Feilur fráboðaður",
|
||||
"error.page.action.exportLogs": "Útflyt loggar",
|
||||
"error.page.action.checking": "Kanna...",
|
||||
"error.page.action.checking": "Kanna…",
|
||||
"error.page.action.checkUpdates": "Kanna fyri dagføringum",
|
||||
"error.page.action.updateTo": "Dagfør til {{version}}",
|
||||
"error.page.circular": "[Rundskriv]",
|
||||
@@ -686,12 +686,12 @@ export const dict = {
|
||||
"session.review.filesChanged": "Fílur broyttar {{count}}",
|
||||
"session.review.change.one": "Broyting",
|
||||
"session.review.change.other": "Broytingar",
|
||||
"session.review.loadingChanges": "Heinta broytingar...",
|
||||
"session.review.loadingChanges": "Heinta broytingar…",
|
||||
"session.review.empty": "Ongar broytingar í hesi setuni enn",
|
||||
"session.review.noVcs": "Nei Git Útgávustýringarskipan er uppdagað, broytingar ikki vístar",
|
||||
"session.review.noVcs.createGit.title": "Stovna eitt Git goymslustað",
|
||||
"session.review.noVcs.createGit.description": "Fylg við, kanna og angra broytingar í hesi verkætlan",
|
||||
"session.review.noVcs.createGit.actionLoading": "Stovna Git goymslu...",
|
||||
"session.review.noVcs.createGit.actionLoading": "Stovna Git goymslu…",
|
||||
"session.review.noVcs.createGit.action": "Stovna Git goymslu",
|
||||
"session.review.noSnapshot": "Snapshot sporing er sløkt í config, so setubroytingar eru ikki tøkar",
|
||||
"session.review.noChanges": "Ongar broytingar",
|
||||
@@ -702,9 +702,9 @@ export const dict = {
|
||||
"session.files.empty": "Ongar fílur",
|
||||
"session.files.binaryContent": "Binær fíla (innihaldið kann ikki vísast)",
|
||||
"session.messages.renderEarlier": "Vís fyrri boð",
|
||||
"session.messages.loadingEarlier": "Heinta fyrri boð...",
|
||||
"session.messages.loadingEarlier": "Heinta fyrri boð…",
|
||||
"session.messages.loadEarlier": "Innlesa fyrri boð",
|
||||
"session.messages.loading": "Heinta boð...",
|
||||
"session.messages.loading": "Heinta boð…",
|
||||
"session.messages.jumpToLatest": "Hopp til nýggjasta",
|
||||
"session.context.addToContext": "Legg {{selection}} til samanhang",
|
||||
"session.todo.title": "Uppgávur",
|
||||
@@ -726,7 +726,7 @@ export const dict = {
|
||||
"session.new.workspace.runIn": "Koyr setu í",
|
||||
"session.new.workspace.triggerLocal": "Lokal",
|
||||
"session.new.workspace.local": "Lokal goymsla",
|
||||
"session.new.workspace.existing": "Workspace...",
|
||||
"session.new.workspace.existing": "Workspace…",
|
||||
"session.new.git.none": "Nei Git",
|
||||
"session.new.lastModified": "Seinast broytt",
|
||||
"session.header.search.placeholder": "Leita {{project}}",
|
||||
@@ -765,8 +765,8 @@ export const dict = {
|
||||
"common.copied": "Avritað",
|
||||
"lsp.tooltip.none": "Ongar LSP ambætarar",
|
||||
"lsp.label.connected": "{{count}} LSP",
|
||||
"prompt.loading": "Heinta boð...",
|
||||
"terminal.loading": "Innlesingarterminal...",
|
||||
"prompt.loading": "Heinta boð…",
|
||||
"terminal.loading": "Innlesingarterminal…",
|
||||
"terminal.title": "Farstøð",
|
||||
"terminal.title.numbered": "Terminur {{number}}",
|
||||
"terminal.close": "Lat terminalin aftur",
|
||||
@@ -926,9 +926,9 @@ export const dict = {
|
||||
"settings.updates.row.check.title": "Kanna fyri dagføringum",
|
||||
"settings.updates.row.check.description": "Kanna manuelt fyri dagføringum og set upp, um tær eru tøkar",
|
||||
"settings.updates.action.checkNow": "Kanna nú",
|
||||
"settings.updates.action.checking": "Kanna...",
|
||||
"settings.updates.action.downloading": "Heinta...",
|
||||
"settings.updates.action.installing": "Seta upp...",
|
||||
"settings.updates.action.checking": "Kanna…",
|
||||
"settings.updates.action.downloading": "Heinta…",
|
||||
"settings.updates.action.installing": "Seta upp…",
|
||||
"settings.updates.toast.latest.title": "Tú ert dagførdur",
|
||||
"settings.updates.toast.latest.description": "Tú koyrir nýggjastu útgávuna av OpenCode.",
|
||||
"sound.option.none": "Eingin",
|
||||
@@ -1075,7 +1075,7 @@ export const dict = {
|
||||
"workspace.reset.success.title": "Workspace nullstillað",
|
||||
"workspace.reset.success.description": "Workspace passar nú til forsettu greinina.",
|
||||
"workspace.error.stillPreparing": "Workspace verður enn fyrireikað",
|
||||
"workspace.status.checking": "Kanna fyri ósamanlagdum broytingum...",
|
||||
"workspace.status.checking": "Kanna fyri ósamanlagdum broytingum…",
|
||||
"workspace.status.error": "Ikki ber til at staðfesta git-støðuna.",
|
||||
"workspace.status.clean": "Ongar ósamanlagdar broytingar eru funnar.",
|
||||
"workspace.status.dirty": "Ósamanlagdar broytingar funnar í hesum workspace.",
|
||||
|
||||
@@ -6,13 +6,13 @@ export const dict = {
|
||||
"desktop.menu.go": "Aller",
|
||||
"desktop.menu.window": "Fenêtre",
|
||||
"desktop.menu.help": "Aide",
|
||||
"desktop.menu.checkForUpdates": "Rechercher les mises à jour...",
|
||||
"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.exportLogs": "Exporter les journaux…",
|
||||
"desktop.menu.newSession": "Nouvelle session",
|
||||
"desktop.menu.openProject": "Ouvrir un projet...",
|
||||
"desktop.menu.openProject": "Ouvrir un projet…",
|
||||
"desktop.menu.newWindow": "Nouvelle fenêtre",
|
||||
"desktop.menu.closeWindow": "Fermer la fenêtre",
|
||||
"desktop.menu.undo": "Annuler",
|
||||
@@ -221,8 +221,8 @@ export const dict = {
|
||||
"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.inProgress": "Autorisation en cours…",
|
||||
"provider.connect.status.waiting": "En attente d'autorisation…",
|
||||
"provider.connect.status.failed": "Échec de l'autorisation : {{error}}",
|
||||
"provider.connect.apiKey.description":
|
||||
"Entrez votre clé API {{provider}} pour connecter votre compte et utiliser les modèles {{provider}} dans OpenCode.",
|
||||
@@ -318,7 +318,7 @@ export const dict = {
|
||||
"common.goBack": "Retour",
|
||||
"common.goForward": "Suivant",
|
||||
"common.loading": "Chargement",
|
||||
"common.loading.ellipsis": "...",
|
||||
"common.loading.ellipsis": "…",
|
||||
"common.cancel": "Annuler",
|
||||
"common.clear": "Effacer",
|
||||
"common.connect": "Connecter",
|
||||
@@ -326,12 +326,12 @@ export const dict = {
|
||||
"common.continue": "Continuer",
|
||||
"common.submit": "Soumettre",
|
||||
"common.save": "Enregistrer",
|
||||
"common.saving": "Enregistrement...",
|
||||
"common.saving": "Enregistrement…",
|
||||
"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}}"',
|
||||
"prompt.placeholder.simple": "Demandez n'importe quoi...",
|
||||
"prompt.placeholder.shell": "Entrez une commande shell… {{example}}",
|
||||
"prompt.placeholder.normal": 'Demandez n\'importe quoi… "{{example}}"',
|
||||
"prompt.placeholder.simple": "Demandez n'importe quoi…",
|
||||
"prompt.placeholder.summarizeComments": "Résumer les commentaires…",
|
||||
"prompt.placeholder.summarizeComment": "Résumer le commentaire…",
|
||||
"prompt.mode.shell": "Shell",
|
||||
@@ -351,7 +351,7 @@ export const dict = {
|
||||
"prompt.example.10": "Générer la documentation de l'API",
|
||||
"prompt.example.11": "Optimiser les requêtes de base de données",
|
||||
"prompt.example.12": "Ajouter une validation d'entrée",
|
||||
"prompt.example.13": "Créer un nouveau composant pour...",
|
||||
"prompt.example.13": "Créer un nouveau composant pour…",
|
||||
"prompt.example.14": "Comment déployer ce projet ?",
|
||||
"prompt.example.15": "Vérifier que mon code respecte les bonnes pratiques",
|
||||
"prompt.example.16": "Ajouter la gestion des erreurs à cette fonction",
|
||||
@@ -362,7 +362,7 @@ export const dict = {
|
||||
"prompt.example.21": "Aidez-moi à écrire un script de migration",
|
||||
"prompt.example.22": "Implémenter la mise en cache pour ce point de terminaison",
|
||||
"prompt.example.23": "Ajouter la pagination à cette liste",
|
||||
"prompt.example.24": "Créer une commande CLI pour...",
|
||||
"prompt.example.24": "Créer une commande CLI pour…",
|
||||
"prompt.example.25": "Comment fonctionnent les variables d'environnement ici ?",
|
||||
"prompt.popover.emptyResults": "Aucun résultat correspondant",
|
||||
"prompt.popover.emptyCommands": "Aucune commande correspondante",
|
||||
@@ -422,7 +422,7 @@ export const dict = {
|
||||
"dialog.server.add.url": "URL du serveur",
|
||||
"dialog.server.add.placeholder": "http://localhost:4096",
|
||||
"dialog.server.add.error": "Impossible de se connecter au serveur",
|
||||
"dialog.server.add.checking": "Vérification...",
|
||||
"dialog.server.add.checking": "Vérification…",
|
||||
"dialog.server.add.button": "Ajouter un serveur",
|
||||
"dialog.server.add.name": "Nom du serveur (optionnel)",
|
||||
"dialog.server.add.namePlaceholder": "Localhost",
|
||||
@@ -446,26 +446,26 @@ export const dict = {
|
||||
"wsl.server.label": "WSL",
|
||||
"wsl.server.menu.label": "Serveur WSL",
|
||||
"wsl.server.retryStart": "Réessayer de démarrer",
|
||||
"wsl.server.updating": "Mise à jour...",
|
||||
"wsl.server.updating": "Mise à jour…",
|
||||
"wsl.onboarding.step.distro": "Choisir une distribution",
|
||||
"wsl.onboarding.step.opencode": "OpenCode",
|
||||
"wsl.onboarding.checkingRuntime": "Vérification de WSL...",
|
||||
"wsl.onboarding.checkingRuntime": "Vérification de WSL…",
|
||||
"wsl.onboarding.restartRequired": "Windows doit redémarrer pour terminer l'installation de WSL.",
|
||||
"wsl.onboarding.ready": "WSL est prêt.",
|
||||
"wsl.onboarding.required": "WSL est requis pour continuer.",
|
||||
"wsl.onboarding.checkingDistros": "Vérification des distributions...",
|
||||
"wsl.onboarding.installingDistro": "Installation de {{distro}}...",
|
||||
"wsl.onboarding.checkingDistro": "Vérification de {{distro}}...",
|
||||
"wsl.onboarding.listingDistros": "Récupération de la liste des distributions...",
|
||||
"wsl.onboarding.checkingDistros": "Vérification des distributions…",
|
||||
"wsl.onboarding.installingDistro": "Installation de {{distro}}…",
|
||||
"wsl.onboarding.checkingDistro": "Vérification de {{distro}}…",
|
||||
"wsl.onboarding.listingDistros": "Récupération de la liste des distributions…",
|
||||
"wsl.onboarding.distroReady": "{{distro}} est prête.",
|
||||
"wsl.onboarding.distroNotInstalled": "{{distro}} n'est pas encore installée.",
|
||||
"wsl.onboarding.openDistroOnce": "Ouvrez {{distro}} une fois pour terminer la configuration.",
|
||||
"wsl.onboarding.finishingDistro": "Finalisation de la configuration de {{distro}}.",
|
||||
"wsl.onboarding.pickDistro": "Choisissez une distribution ou installez-en une ci-dessous.",
|
||||
"wsl.onboarding.checkingOpencode": "Vérification d'OpenCode...",
|
||||
"wsl.onboarding.checkingOpencodeIn": "Vérification d'OpenCode dans {{distro}}...",
|
||||
"wsl.onboarding.updatingOpencode": "Mise à jour d'OpenCode...",
|
||||
"wsl.onboarding.updatingOpencodeIn": "Mise à jour d'OpenCode dans {{distro}}...",
|
||||
"wsl.onboarding.checkingOpencode": "Vérification d'OpenCode…",
|
||||
"wsl.onboarding.checkingOpencodeIn": "Vérification d'OpenCode dans {{distro}}…",
|
||||
"wsl.onboarding.updatingOpencode": "Mise à jour d'OpenCode…",
|
||||
"wsl.onboarding.updatingOpencodeIn": "Mise à jour d'OpenCode dans {{distro}}…",
|
||||
"wsl.onboarding.updateOpencodeIn": "Mettez à jour OpenCode dans {{distro}}.",
|
||||
"wsl.onboarding.updateOpencode": "Mettre à jour OpenCode",
|
||||
"wsl.onboarding.opencodeReadyIn": "OpenCode est prêt dans {{distro}}.",
|
||||
@@ -474,11 +474,11 @@ export const dict = {
|
||||
"wsl.onboarding.installOpencode": "Installer OpenCode",
|
||||
"wsl.onboarding.chooseDistroFirst": "Choisissez d'abord une distribution.",
|
||||
"wsl.onboarding.loadFailed": "Impossible de charger l'état de WSL.",
|
||||
"wsl.onboarding.loading": "Chargement...",
|
||||
"wsl.onboarding.loading": "Chargement…",
|
||||
"wsl.onboarding.installedDistros": "Distributions installées",
|
||||
"wsl.onboarding.checkAgain": "Vérifier à nouveau",
|
||||
"wsl.onboarding.distroStatus.ready": "Prête",
|
||||
"wsl.onboarding.distroStatus.checking": "Vérification...",
|
||||
"wsl.onboarding.distroStatus.checking": "Vérification…",
|
||||
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode non installé",
|
||||
"wsl.onboarding.distroStatus.missingTools": "bash et curl manquants",
|
||||
"wsl.onboarding.distroStatus.unsupported": "Non prise en charge · Utilisez WSL 2",
|
||||
@@ -497,7 +497,7 @@ export const dict = {
|
||||
"wsl.onboarding.allDistrosAdded": "Toutes les distributions installées ont déjà été ajoutées.",
|
||||
"wsl.onboarding.noDistros": "Aucune distribution détectée pour l'instant.",
|
||||
"wsl.onboarding.install": "Installer",
|
||||
"wsl.onboarding.installing": "Installation...",
|
||||
"wsl.onboarding.installing": "Installation…",
|
||||
"wsl.onboarding.installDistro": "Installer une distribution",
|
||||
"wsl.onboarding.searchDistros": "Rechercher des distributions",
|
||||
"wsl.onboarding.wsl2Required": "WSL 2 est requis.",
|
||||
@@ -509,7 +509,7 @@ export const dict = {
|
||||
"wsl.onboarding.unknown": "inconnue",
|
||||
"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...",
|
||||
"wsl.onboarding.adding": "Ajout…",
|
||||
"dialog.project.edit.title": "Modifier le projet",
|
||||
"dialog.project.edit.name": "Nom",
|
||||
"dialog.project.edit.icon": "Icône",
|
||||
@@ -617,7 +617,7 @@ export const dict = {
|
||||
"error.page.action.report": "Signaler l'erreur",
|
||||
"error.page.action.reported": "Erreur signalée",
|
||||
"error.page.action.exportLogs": "Exporter les journaux",
|
||||
"error.page.action.checking": "Vérification...",
|
||||
"error.page.action.checking": "Vérification…",
|
||||
"error.page.action.checkUpdates": "Vérifier les mises à jour",
|
||||
"error.page.action.updateTo": "Mettre à jour vers {{version}}",
|
||||
"error.page.report.prefix": "Veuillez signaler cette erreur à l'équipe OpenCode",
|
||||
@@ -690,7 +690,7 @@ export const dict = {
|
||||
"session.review.filesChanged": "{{count}} fichiers modifiés",
|
||||
"session.review.change.one": "Modification",
|
||||
"session.review.change.other": "Modifications",
|
||||
"session.review.loadingChanges": "Chargement des modifications...",
|
||||
"session.review.loadingChanges": "Chargement des modifications…",
|
||||
"session.review.empty": "Aucune modification dans cette session pour l'instant",
|
||||
"session.review.noChanges": "Aucune modification",
|
||||
"session.review.noUncommittedChanges": "Aucune modification non validée pour l'instant",
|
||||
@@ -703,9 +703,9 @@ export const dict = {
|
||||
"session.files.empty": "Aucun fichier",
|
||||
"session.files.binaryContent": "Fichier binaire (le contenu ne peut pas être affiché)",
|
||||
"session.messages.renderEarlier": "Afficher les messages précédents",
|
||||
"session.messages.loadingEarlier": "Chargement des messages précédents...",
|
||||
"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.loading": "Chargement des messages…",
|
||||
"session.messages.jumpToLatest": "Aller au message le plus récent",
|
||||
"session.context.addToContext": "Ajouter {{selection}} au contexte",
|
||||
"session.todo.title": "Tâches",
|
||||
@@ -746,8 +746,8 @@ export const dict = {
|
||||
"common.copied": "Copié",
|
||||
"lsp.tooltip.none": "Aucun serveur LSP",
|
||||
"lsp.label.connected": "{{count}} LSP",
|
||||
"prompt.loading": "Chargement de l'invite...",
|
||||
"terminal.loading": "Chargement du terminal...",
|
||||
"prompt.loading": "Chargement de l'invite…",
|
||||
"terminal.loading": "Chargement du terminal…",
|
||||
"terminal.title": "Terminal",
|
||||
"terminal.title.numbered": "Terminal {{number}}",
|
||||
"terminal.close": "Fermer le terminal",
|
||||
@@ -861,9 +861,9 @@ export const dict = {
|
||||
"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...",
|
||||
"settings.updates.action.installing": "Installation...",
|
||||
"settings.updates.action.checking": "Vérification…",
|
||||
"settings.updates.action.downloading": "Téléchargement…",
|
||||
"settings.updates.action.installing": "Installation…",
|
||||
"settings.updates.toast.latest.title": "Vous êtes à jour",
|
||||
"settings.updates.toast.latest.description": "Vous utilisez la dernière version d'OpenCode.",
|
||||
"sound.option.none": "Aucun",
|
||||
@@ -1011,7 +1011,7 @@ export const dict = {
|
||||
"workspace.reset.success.title": "Espace de travail réinitialisé",
|
||||
"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.checking": "Vérification des modifications non fusionnées…",
|
||||
"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.",
|
||||
@@ -1041,12 +1041,12 @@ export const dict = {
|
||||
"settings.providers.custom.description": "Ajouter un fournisseur compatible avec OpenAI via l'URL de base.",
|
||||
|
||||
"app.server.unreachable": "Impossible de joindre {{server}}",
|
||||
"app.server.retrying": "Nouvelle tentative automatique...",
|
||||
"app.server.retrying": "Nouvelle tentative automatique…",
|
||||
"app.server.otherServers": "Autres serveurs",
|
||||
"dialog.server.add.passwordPlaceholder": "mot de passe",
|
||||
"session.review.noVcs.createGit.title": "Créer un dépôt Git",
|
||||
"session.review.noVcs.createGit.description": "Suivre, examiner et annuler les modifications dans ce projet",
|
||||
"session.review.noVcs.createGit.actionLoading": "Création du dépôt Git...",
|
||||
"session.review.noVcs.createGit.actionLoading": "Création du dépôt Git…",
|
||||
"session.review.noVcs.createGit.action": "Créer un dépôt Git",
|
||||
"session.todo.progress": "{{done}} tâches sur {{total}} terminées",
|
||||
"session.question.progress": "{{current}} questions sur {{total}}",
|
||||
|
||||
@@ -6,13 +6,13 @@ export const dict = {
|
||||
"desktop.menu.go": "מעבר",
|
||||
"desktop.menu.window": "חלון",
|
||||
"desktop.menu.help": "עזרה",
|
||||
"desktop.menu.checkForUpdates": "בדוק אם יש עדכונים...",
|
||||
"desktop.menu.checkForUpdates": "בדוק אם יש עדכונים…",
|
||||
"desktop.menu.settings": "הגדרות",
|
||||
"desktop.menu.reloadWebview": "טען מחדש את Webview",
|
||||
"desktop.menu.restart": "הפעל מחדש",
|
||||
"desktop.menu.exportLogs": "ייצוא יומנים...",
|
||||
"desktop.menu.exportLogs": "ייצוא יומנים…",
|
||||
"desktop.menu.newSession": "הפעלה חדשה",
|
||||
"desktop.menu.openProject": "פתח פרויקט...",
|
||||
"desktop.menu.openProject": "פתח פרויקט…",
|
||||
"desktop.menu.newWindow": "חלון חדש",
|
||||
"desktop.menu.closeWindow": "סגור חלון",
|
||||
"desktop.menu.undo": "בטל",
|
||||
@@ -213,8 +213,8 @@ export const dict = {
|
||||
"provider.connect.method.apiKey": "מפתח API",
|
||||
"provider.connect.method.browser": "דפדפן",
|
||||
"provider.connect.method.headless": "ללא ממשק גרפי",
|
||||
"provider.connect.status.inProgress": "האישור מתבצע...",
|
||||
"provider.connect.status.waiting": "ממתין לאישור...",
|
||||
"provider.connect.status.inProgress": "האישור מתבצע…",
|
||||
"provider.connect.status.waiting": "ממתין לאישור…",
|
||||
"provider.connect.status.failed": "ההרשאה נכשלה: {{error}}",
|
||||
"provider.connect.apiKey.description":
|
||||
"הזן את מפתח ה-API של {{provider}} כדי לחבר את החשבון ולהשתמש במודלים של {{provider}} ב-OpenCode.",
|
||||
@@ -305,7 +305,7 @@ export const dict = {
|
||||
"common.goBack": "נווט אחורה",
|
||||
"common.goForward": "נווט קדימה",
|
||||
"common.loading": "טוען",
|
||||
"common.loading.ellipsis": "...",
|
||||
"common.loading.ellipsis": "…",
|
||||
"common.cancel": "בטל",
|
||||
"common.clear": "נקה",
|
||||
"common.open": "פתח",
|
||||
@@ -314,12 +314,12 @@ export const dict = {
|
||||
"common.continue": "המשך",
|
||||
"common.submit": "שלח",
|
||||
"common.save": "שמור",
|
||||
"common.saving": "שומר...",
|
||||
"common.saving": "שומר…",
|
||||
"common.default": "ברירת מחדל",
|
||||
"common.attachment": "קובץ מצורף",
|
||||
"prompt.placeholder.shell": "הזן פקודת מעטפת... {{example}}",
|
||||
"prompt.placeholder.normal": 'אפשר לשאול כל דבר... "{{example}}"',
|
||||
"prompt.placeholder.simple": "אפשר לשאול כל דבר...",
|
||||
"prompt.placeholder.shell": "הזן פקודת מעטפת… {{example}}",
|
||||
"prompt.placeholder.normal": 'אפשר לשאול כל דבר… "{{example}}"',
|
||||
"prompt.placeholder.simple": "אפשר לשאול כל דבר…",
|
||||
"prompt.placeholder.summarizeComments": "סכם את התגובות…",
|
||||
"prompt.placeholder.summarizeComment": "סכם את התגובה…",
|
||||
"prompt.mode.shell": "מעטפת",
|
||||
@@ -339,7 +339,7 @@ export const dict = {
|
||||
"prompt.example.10": "צור תיעוד API",
|
||||
"prompt.example.11": "בצע אופטימיזציה של שאילתות מסד הנתונים",
|
||||
"prompt.example.12": "הוסף אימות קלט",
|
||||
"prompt.example.13": "צור רכיב חדש עבור...",
|
||||
"prompt.example.13": "צור רכיב חדש עבור…",
|
||||
"prompt.example.14": "כיצד אוכל לפרוס את הפרויקט הזה?",
|
||||
"prompt.example.15": "עיין בקוד שלי לקבלת שיטות עבודה מומלצות",
|
||||
"prompt.example.16": "הוסף טיפול בשגיאות לפונקציה זו",
|
||||
@@ -350,7 +350,7 @@ export const dict = {
|
||||
"prompt.example.21": "עזור לי לכתוב סקריפט העברה",
|
||||
"prompt.example.22": "יישם מטמון עבור נקודת קצה זו",
|
||||
"prompt.example.23": "הוסף עימוד לרשימה זו",
|
||||
"prompt.example.24": "צור פקודת CLI עבור...",
|
||||
"prompt.example.24": "צור פקודת CLI עבור…",
|
||||
"prompt.example.25": "איך משתני סביבה עובדים כאן?",
|
||||
"prompt.popover.emptyResults": "אין תוצאות תואמות",
|
||||
"prompt.popover.emptyCommands": "אין פקודות תואמות",
|
||||
@@ -402,7 +402,7 @@ export const dict = {
|
||||
"dialog.directory.parent": "תיקיית אב",
|
||||
"dialog.directory.readError": "לא ניתן לקרוא את התיקייה הזו",
|
||||
"app.server.unreachable": "לא ניתן היה להגיע ל-{{server}}",
|
||||
"app.server.retrying": "מנסה שוב אוטומטית...",
|
||||
"app.server.retrying": "מנסה שוב אוטומטית…",
|
||||
"app.server.otherServers": "שרתים אחרים",
|
||||
"dialog.server.title": "שרתים",
|
||||
"dialog.server.description": "בחירת שרת OpenCode שאליו האפליקציה תתחבר.",
|
||||
@@ -412,7 +412,7 @@ export const dict = {
|
||||
"dialog.server.add.url": "כתובת שרת",
|
||||
"dialog.server.add.placeholder": "http://localhost:4096",
|
||||
"dialog.server.add.error": "לא ניתן להתחבר לשרת",
|
||||
"dialog.server.add.checking": "בודק...",
|
||||
"dialog.server.add.checking": "בודק…",
|
||||
"dialog.server.add.button": "הוסף שרת",
|
||||
"dialog.server.add.name": "שם שרת (אופציונלי)",
|
||||
"dialog.server.add.namePlaceholder": "מארח מקומי",
|
||||
@@ -436,26 +436,26 @@ export const dict = {
|
||||
"wsl.server.label": "WSL",
|
||||
"wsl.server.menu.label": "שרת WSL",
|
||||
"wsl.server.retryStart": "נסה להפעיל שוב",
|
||||
"wsl.server.updating": "מעדכן...",
|
||||
"wsl.server.updating": "מעדכן…",
|
||||
"wsl.onboarding.step.distro": "בחר בהפצה",
|
||||
"wsl.onboarding.step.opencode": "OpenCode",
|
||||
"wsl.onboarding.checkingRuntime": "בודק WSL...",
|
||||
"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.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": "בודק OpenCode ב-{{distro}}...",
|
||||
"wsl.onboarding.updatingOpencode": "מעדכן את OpenCode...",
|
||||
"wsl.onboarding.updatingOpencodeIn": "מעדכן את OpenCode ב-{{distro}}...",
|
||||
"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.updateOpencode": "עדכון OpenCode",
|
||||
"wsl.onboarding.opencodeReadyIn": "OpenCode מוכן ב-{{distro}}.",
|
||||
@@ -464,11 +464,11 @@ export const dict = {
|
||||
"wsl.onboarding.installOpencode": "התקן את OpenCode",
|
||||
"wsl.onboarding.chooseDistroFirst": "בחר תחילה הפצה.",
|
||||
"wsl.onboarding.loadFailed": "טעינת מצב WSL נכשלה.",
|
||||
"wsl.onboarding.loading": "טוען...",
|
||||
"wsl.onboarding.loading": "טוען…",
|
||||
"wsl.onboarding.installedDistros": "הפצות מותקנות",
|
||||
"wsl.onboarding.checkAgain": "בדוק שוב",
|
||||
"wsl.onboarding.distroStatus.ready": "מוכן",
|
||||
"wsl.onboarding.distroStatus.checking": "בודק...",
|
||||
"wsl.onboarding.distroStatus.checking": "בודק…",
|
||||
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode לא מותקן",
|
||||
"wsl.onboarding.distroStatus.missingTools": "bash ו-curl חסרים",
|
||||
"wsl.onboarding.distroStatus.unsupported": "לא נתמך · השתמש ב-WSL 2",
|
||||
@@ -486,7 +486,7 @@ export const dict = {
|
||||
"wsl.onboarding.allDistrosAdded": "כל ההפצות המותקנות כבר נוספו.",
|
||||
"wsl.onboarding.noDistros": "עדיין לא זוהו הפצות.",
|
||||
"wsl.onboarding.install": "התקן",
|
||||
"wsl.onboarding.installing": "מתקין...",
|
||||
"wsl.onboarding.installing": "מתקין…",
|
||||
"wsl.onboarding.installDistro": "התקנת הפצה",
|
||||
"wsl.onboarding.searchDistros": "חפש בהפצות",
|
||||
"wsl.onboarding.wsl2Required": "נדרש WSL 2.",
|
||||
@@ -498,7 +498,7 @@ export const dict = {
|
||||
"wsl.onboarding.unknown": "לא ידוע",
|
||||
"wsl.onboarding.desktopVersion": "גרסת שולחן העבודה: {{version}}",
|
||||
"wsl.onboarding.versionMismatch": "הגרסה המותקנת אינה תואמת את גרסת האפליקציה לשולחן העבודה.",
|
||||
"wsl.onboarding.adding": "מוסיף...",
|
||||
"wsl.onboarding.adding": "מוסיף…",
|
||||
"dialog.project.edit.title": "ערוך פרויקט",
|
||||
"dialog.project.edit.name": "שם",
|
||||
"dialog.project.edit.icon": "סמל",
|
||||
@@ -604,7 +604,7 @@ export const dict = {
|
||||
"error.page.action.report": "דווח על שגיאה",
|
||||
"error.page.action.reported": "שגיאה דווחה",
|
||||
"error.page.action.exportLogs": "ייצוא יומנים",
|
||||
"error.page.action.checking": "בודק...",
|
||||
"error.page.action.checking": "בודק…",
|
||||
"error.page.action.checkUpdates": "בדוק אם יש עדכונים",
|
||||
"error.page.action.updateTo": "עדכון ל-{{version}}",
|
||||
"error.page.circular": "[מעגלי]",
|
||||
@@ -691,12 +691,12 @@ export const dict = {
|
||||
"session.review.filesChanged": "קבצים שהשתנו: {{count}}",
|
||||
"session.review.change.one": "שינוי",
|
||||
"session.review.change.other": "שינויים",
|
||||
"session.review.loadingChanges": "טוען שינויים...",
|
||||
"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.actionLoading": "יוצר מאגר Git…",
|
||||
"session.review.noVcs.createGit.action": "צור מאגר Git",
|
||||
"session.review.noSnapshot": "המעקב אחר snapshots מושבת בהגדרות, ולכן שינויי ההפעלה אינם זמינים",
|
||||
"session.review.noChanges": "אין שינויים",
|
||||
@@ -707,9 +707,9 @@ export const dict = {
|
||||
"session.files.empty": "אין קבצים",
|
||||
"session.files.binaryContent": "קובץ בינארי (לא ניתן להציג תוכן)",
|
||||
"session.messages.renderEarlier": "הצגת הודעות קודמות",
|
||||
"session.messages.loadingEarlier": "טוען הודעות קודמות...",
|
||||
"session.messages.loadingEarlier": "טוען הודעות קודמות…",
|
||||
"session.messages.loadEarlier": "טען הודעות קודמות",
|
||||
"session.messages.loading": "טוען הודעות...",
|
||||
"session.messages.loading": "טוען הודעות…",
|
||||
"session.messages.jumpToLatest": "מעבר להודעה האחרונה",
|
||||
"session.context.addToContext": "הוסף {{selection}} להקשר",
|
||||
"session.todo.title": "משימות",
|
||||
@@ -770,8 +770,8 @@ export const dict = {
|
||||
"common.copied": "הועתק",
|
||||
"lsp.tooltip.none": "אין שרתי LSP",
|
||||
"lsp.label.connected": "{{count}} LSP",
|
||||
"prompt.loading": "טוען פרומפט...",
|
||||
"terminal.loading": "טוען מסוף...",
|
||||
"prompt.loading": "טוען פרומפט…",
|
||||
"terminal.loading": "טוען מסוף…",
|
||||
"terminal.title": "מסוף",
|
||||
"terminal.title.numbered": "מסוף {{number}}",
|
||||
"terminal.close": "סגור את המסוף",
|
||||
@@ -959,9 +959,9 @@ export const dict = {
|
||||
"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.action.checking": "בודק…",
|
||||
"settings.updates.action.downloading": "מוריד…",
|
||||
"settings.updates.action.installing": "מתקין…",
|
||||
"settings.updates.toast.latest.title": "אתה מעודכן",
|
||||
"settings.updates.toast.latest.description": "אתה מפעיל את הגרסה האחרונה של OpenCode.",
|
||||
"sound.option.none": "אין",
|
||||
@@ -1147,7 +1147,7 @@ export const dict = {
|
||||
"workspace.reset.success.title": "סביבת העבודה אופסה",
|
||||
"workspace.reset.success.description": "סביבת העבודה תואמת כעת לענף ברירת המחדל.",
|
||||
"workspace.error.stillPreparing": "סביבת העבודה עדיין בהכנות",
|
||||
"workspace.status.checking": "מחפש שינויים שלא ממוזגים...",
|
||||
"workspace.status.checking": "מחפש שינויים שלא ממוזגים…",
|
||||
"workspace.status.error": "לא ניתן לבדוק את מצב Git.",
|
||||
"workspace.status.clean": "לא זוהו שינויים לא ממוזגים.",
|
||||
"workspace.status.dirty": "שינויים שלא ממוזגים זוהו בסביבת עבודה זו.",
|
||||
|
||||
@@ -6,13 +6,13 @@ export const dict = {
|
||||
"desktop.menu.go": "जाएँ",
|
||||
"desktop.menu.window": "विंडो",
|
||||
"desktop.menu.help": "सहायता",
|
||||
"desktop.menu.checkForUpdates": "अपडेट की जाँच करें...",
|
||||
"desktop.menu.checkForUpdates": "अपडेट की जाँच करें…",
|
||||
"desktop.menu.settings": "सेटिंग्स",
|
||||
"desktop.menu.reloadWebview": "वेबव्यू पुनः लोड करें",
|
||||
"desktop.menu.restart": "पुनः आरंभ करें",
|
||||
"desktop.menu.exportLogs": "लॉग निर्यात करें...",
|
||||
"desktop.menu.exportLogs": "लॉग निर्यात करें…",
|
||||
"desktop.menu.newSession": "नया सेशन",
|
||||
"desktop.menu.openProject": "प्रोजेक्ट खोलें...",
|
||||
"desktop.menu.openProject": "प्रोजेक्ट खोलें…",
|
||||
"desktop.menu.newWindow": "नई विंडो",
|
||||
"desktop.menu.closeWindow": "विंडो बंद करें",
|
||||
"desktop.menu.undo": "पूर्ववत करें",
|
||||
@@ -220,8 +220,8 @@ export const dict = {
|
||||
"provider.connect.method.apiKey": "API कुंजी",
|
||||
"provider.connect.method.browser": "ब्राउज़र",
|
||||
"provider.connect.method.headless": "हेडलेस मोड",
|
||||
"provider.connect.status.inProgress": "प्राधिकरण प्रगति पर है...",
|
||||
"provider.connect.status.waiting": "प्राधिकरण की प्रतीक्षा हो रही है...",
|
||||
"provider.connect.status.inProgress": "प्राधिकरण प्रगति पर है…",
|
||||
"provider.connect.status.waiting": "प्राधिकरण की प्रतीक्षा हो रही है…",
|
||||
"provider.connect.status.failed": "प्राधिकरण विफल: {{error}}",
|
||||
"provider.connect.apiKey.description":
|
||||
"अपने खाते को कनेक्ट करने के लिए अपनी {{provider}} API कुंजी दर्ज करें और OpenCode में {{provider}} मॉडल का उपयोग करें।",
|
||||
@@ -314,7 +314,7 @@ export const dict = {
|
||||
"common.goBack": "पीछे जाएँ",
|
||||
"common.goForward": "आगे जाएँ",
|
||||
"common.loading": "लोड हो रहा है",
|
||||
"common.loading.ellipsis": "...",
|
||||
"common.loading.ellipsis": "…",
|
||||
"common.cancel": "रद्द करें",
|
||||
"common.clear": "साफ़ करें",
|
||||
"common.open": "खोलें",
|
||||
@@ -323,14 +323,14 @@ export const dict = {
|
||||
"common.continue": "जारी रखें",
|
||||
"common.submit": "जमा करें",
|
||||
"common.save": "सहेजें",
|
||||
"common.saving": "सहेजा जा रहा है...",
|
||||
"common.saving": "सहेजा जा रहा है…",
|
||||
"common.default": "डिफ़ॉल्ट",
|
||||
"common.attachment": "अटैचमेंट",
|
||||
"prompt.placeholder.shell": "शेल कमांड... {{example}} दर्ज करें",
|
||||
"prompt.placeholder.normal": 'कुछ भी पूछें... "{{example}}"',
|
||||
"prompt.placeholder.simple": "कुछ भी पूछें...",
|
||||
"prompt.placeholder.summarizeComments": "टिप्पणियों को सारांशित करें...",
|
||||
"prompt.placeholder.summarizeComment": "टिप्पणी को सारांशित करें...",
|
||||
"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",
|
||||
@@ -348,7 +348,7 @@ export const dict = {
|
||||
"prompt.example.10": "API दस्तावेज़ तैयार करें",
|
||||
"prompt.example.11": "डेटाबेस क्वेरीज़ को अनुकूलित करें",
|
||||
"prompt.example.12": "इनपुट सत्यापन जोड़ें",
|
||||
"prompt.example.13": "इसके लिए एक नया कॉम्पोनेंट बनाएँ...",
|
||||
"prompt.example.13": "इसके लिए एक नया कॉम्पोनेंट बनाएँ…",
|
||||
"prompt.example.14": "मैं इस प्रोजेक्ट को कैसे तैनात करूं?",
|
||||
"prompt.example.15": "सर्वोत्तम प्रथाओं के लिए मेरे कोड की समीक्षा करें",
|
||||
"prompt.example.16": "इस फ़ंक्शन में त्रुटि प्रबंधन जोड़ें",
|
||||
@@ -359,7 +359,7 @@ export const dict = {
|
||||
"prompt.example.21": "माइग्रेशन स्क्रिप्ट लिखने में मेरी सहायता करें",
|
||||
"prompt.example.22": "इस समापन बिंदु के लिए कैशिंग लागू करें",
|
||||
"prompt.example.23": "इस सूची में पेजिनेशन जोड़ें",
|
||||
"prompt.example.24": "इसके लिए एक CLI कमांड बनाएं...",
|
||||
"prompt.example.24": "इसके लिए एक CLI कमांड बनाएं…",
|
||||
"prompt.example.25": "पर्यावरण चर यहाँ कैसे काम करते हैं?",
|
||||
"prompt.popover.emptyResults": "कोई मेल खाता परिणाम नहीं",
|
||||
"prompt.popover.emptyCommands": "कोई मेल खाता कमांड नहीं",
|
||||
@@ -411,7 +411,7 @@ export const dict = {
|
||||
"dialog.directory.parent": "पैरेंट",
|
||||
"dialog.directory.readError": "इस फ़ोल्डर को पढ़ने में असमर्थ",
|
||||
"app.server.unreachable": "{{server}} तक नहीं पहुँचा जा सका",
|
||||
"app.server.retrying": "स्वचालित रूप से पुनः प्रयास किया जा रहा है...",
|
||||
"app.server.retrying": "स्वचालित रूप से पुनः प्रयास किया जा रहा है…",
|
||||
"app.server.otherServers": "अन्य सर्वर",
|
||||
"dialog.server.title": "सर्वर",
|
||||
"dialog.server.description": "स्विच करें कि यह ऐप किस OpenCode सर्वर से कनेक्ट होता है।",
|
||||
@@ -421,7 +421,7 @@ export const dict = {
|
||||
"dialog.server.add.url": "सर्वर पता",
|
||||
"dialog.server.add.placeholder": "http://localhost:4096",
|
||||
"dialog.server.add.error": "सर्वर से कनेक्ट नहीं कर सका",
|
||||
"dialog.server.add.checking": "जाँच हो रही है...",
|
||||
"dialog.server.add.checking": "जाँच हो रही है…",
|
||||
"dialog.server.add.button": "सर्वर जोड़ें",
|
||||
"dialog.server.add.name": "सर्वर नाम (वैकल्पिक)",
|
||||
"dialog.server.add.namePlaceholder": "Localhost",
|
||||
@@ -446,26 +446,26 @@ export const dict = {
|
||||
"wsl.server.label": "WSL",
|
||||
"wsl.server.menu.label": "WSL सर्वर",
|
||||
"wsl.server.retryStart": "पुन: प्रयास प्रारंभ करें",
|
||||
"wsl.server.updating": "अद्यतन किया जा रहा है...",
|
||||
"wsl.server.updating": "अद्यतन किया जा रहा है…",
|
||||
"wsl.onboarding.step.distro": "डिस्ट्रो चुनें",
|
||||
"wsl.onboarding.step.opencode": "OpenCode",
|
||||
"wsl.onboarding.checkingRuntime": "WSL की जाँच हो रही है...",
|
||||
"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.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.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}} में तैयार है।",
|
||||
@@ -474,11 +474,11 @@ export const dict = {
|
||||
"wsl.onboarding.installOpencode": "OpenCode स्थापित करें",
|
||||
"wsl.onboarding.chooseDistroFirst": "पहले एक डिस्ट्रो चुनें।",
|
||||
"wsl.onboarding.loadFailed": "WSL स्थिति लोड करने में विफल।",
|
||||
"wsl.onboarding.loading": "लोड हो रहा है...",
|
||||
"wsl.onboarding.loading": "लोड हो रहा है…",
|
||||
"wsl.onboarding.installedDistros": "स्थापित डिस्ट्रोस",
|
||||
"wsl.onboarding.checkAgain": "फिर से जाँचें",
|
||||
"wsl.onboarding.distroStatus.ready": "तैयार",
|
||||
"wsl.onboarding.distroStatus.checking": "जाँच हो रही है...",
|
||||
"wsl.onboarding.distroStatus.checking": "जाँच हो रही है…",
|
||||
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode स्थापित नहीं है",
|
||||
"wsl.onboarding.distroStatus.missingTools": "गायब बैश, कर्ल",
|
||||
"wsl.onboarding.distroStatus.unsupported": "असमर्थित · WSL 2 का उपयोग करें",
|
||||
@@ -497,7 +497,7 @@ export const dict = {
|
||||
"wsl.onboarding.allDistrosAdded": "सभी स्थापित डिस्ट्रो पहले ही जोड़े जा चुके हैं।",
|
||||
"wsl.onboarding.noDistros": "अभी तक कोई डिस्ट्रो नहीं मिला।",
|
||||
"wsl.onboarding.install": "स्थापित करें",
|
||||
"wsl.onboarding.installing": "स्थापित किया जा रहा है...",
|
||||
"wsl.onboarding.installing": "स्थापित किया जा रहा है…",
|
||||
"wsl.onboarding.installDistro": "डिस्ट्रो स्थापित करें",
|
||||
"wsl.onboarding.searchDistros": "डिस्ट्रोस खोजें",
|
||||
"wsl.onboarding.wsl2Required": "WSL 2 आवश्यक है।",
|
||||
@@ -509,7 +509,7 @@ export const dict = {
|
||||
"wsl.onboarding.unknown": "अज्ञात",
|
||||
"wsl.onboarding.desktopVersion": "डेस्कटॉप {{version}}",
|
||||
"wsl.onboarding.versionMismatch": "इंस्टॉल किया गया संस्करण डेस्कटॉप ऐप संस्करण से मेल नहीं खाता।",
|
||||
"wsl.onboarding.adding": "जोड़ा जा रहा है...",
|
||||
"wsl.onboarding.adding": "जोड़ा जा रहा है…",
|
||||
"dialog.project.edit.title": "प्रोजेक्ट संपादित करें",
|
||||
"dialog.project.edit.name": "नाम",
|
||||
"dialog.project.edit.icon": "आइकन",
|
||||
@@ -618,7 +618,7 @@ export const dict = {
|
||||
"error.page.action.report": "त्रुटि की रिपोर्ट करें",
|
||||
"error.page.action.reported": "त्रुटि रिपोर्ट की गई",
|
||||
"error.page.action.exportLogs": "लॉग निर्यात करें",
|
||||
"error.page.action.checking": "जाँच हो रही है...",
|
||||
"error.page.action.checking": "जाँच हो रही है…",
|
||||
"error.page.action.checkUpdates": "अद्यतन के लिए जाँच",
|
||||
"error.page.action.updateTo": "{{version}} पर अपडेट करें",
|
||||
"error.page.circular": "[Circular]",
|
||||
@@ -696,13 +696,13 @@ export const dict = {
|
||||
"session.review.filesChanged": "बदली गई फ़ाइलें: {{count}}",
|
||||
"session.review.change.one": "परिवर्तन",
|
||||
"session.review.change.other": "परिवर्तन",
|
||||
"session.review.loadingChanges": "परिवर्तन लोड हो रहे हैं...",
|
||||
"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.actionLoading": "Git रिपॉजिटरी बनाई जा रही है…",
|
||||
"session.review.noVcs.createGit.action": "Git रिपॉजिटरी बनाएं",
|
||||
"session.review.noSnapshot": "कॉन्फ़िगरेशन में स्नैपशॉट ट्रैकिंग अक्षम है, इसलिए सेशन परिवर्तन अनुपलब्ध हैं",
|
||||
"session.review.noChanges": "कोई परिवर्तन नहीं",
|
||||
@@ -713,9 +713,9 @@ export const dict = {
|
||||
"session.files.empty": "कोई फ़ाइल नहीं",
|
||||
"session.files.binaryContent": "बाइनरी फ़ाइल (सामग्री प्रदर्शित नहीं की जा सकती)",
|
||||
"session.messages.renderEarlier": "पहले के संदेश रेंडर करें",
|
||||
"session.messages.loadingEarlier": "पुराने संदेश लोड हो रहे हैं...",
|
||||
"session.messages.loadingEarlier": "पुराने संदेश लोड हो रहे हैं…",
|
||||
"session.messages.loadEarlier": "पहले के संदेश लोड करें",
|
||||
"session.messages.loading": "संदेश लोड हो रहे हैं...",
|
||||
"session.messages.loading": "संदेश लोड हो रहे हैं…",
|
||||
"session.messages.jumpToLatest": "नवीनतम पर जाएं",
|
||||
"session.context.addToContext": "{{selection}} को कॉन्टेक्स्ट में जोड़ें",
|
||||
"session.todo.title": "कार्य सूची",
|
||||
@@ -776,8 +776,8 @@ export const dict = {
|
||||
"common.copied": "कॉपी किया गया",
|
||||
"lsp.tooltip.none": "कोई LSP सर्वर नहीं",
|
||||
"lsp.label.connected": "{{count}} LSP",
|
||||
"prompt.loading": "प्रॉम्प्ट लोड हो रहा है...",
|
||||
"terminal.loading": "टर्मिनल लोड हो रहा है...",
|
||||
"prompt.loading": "प्रॉम्प्ट लोड हो रहा है…",
|
||||
"terminal.loading": "टर्मिनल लोड हो रहा है…",
|
||||
"terminal.title": "टर्मिनल",
|
||||
"terminal.title.numbered": "टर्मिनल {{number}}",
|
||||
"terminal.close": "टर्मिनल बंद करें",
|
||||
@@ -936,9 +936,9 @@ export const dict = {
|
||||
"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.action.checking": "जाँच हो रही है…",
|
||||
"settings.updates.action.downloading": "डाउनलोड हो रहा है…",
|
||||
"settings.updates.action.installing": "स्थापित किया जा रहा है…",
|
||||
"settings.updates.toast.latest.title": "आपके पास नवीनतम संस्करण है",
|
||||
"settings.updates.toast.latest.description": "आप OpenCode का नवीनतम संस्करण चला रहे हैं।",
|
||||
"sound.option.none": "कोई नहीं",
|
||||
@@ -1085,7 +1085,7 @@ export const dict = {
|
||||
"workspace.reset.success.title": "वर्कस्पेस रीसेट",
|
||||
"workspace.reset.success.description": "वर्कस्पेस अब डिफ़ॉल्ट शाखा से मेल खाता है।",
|
||||
"workspace.error.stillPreparing": "वर्कस्पेस अभी भी तैयारी कर रहा है",
|
||||
"workspace.status.checking": "मर्ज न किए गए परिवर्तनों की जाँच हो रही है...",
|
||||
"workspace.status.checking": "मर्ज न किए गए परिवर्तनों की जाँच हो रही है…",
|
||||
"workspace.status.error": "Git स्थिति सत्यापित नहीं की जा सकी।",
|
||||
"workspace.status.clean": "मर्ज न किए गए कोई परिवर्तन नहीं मिले।",
|
||||
"workspace.status.dirty": "इस वर्कस्पेस में मर्ज न किए गए परिवर्तन मिले।",
|
||||
|
||||
@@ -8,13 +8,13 @@ const desktop = [
|
||||
"Idi",
|
||||
"Prozor",
|
||||
"Pomoć",
|
||||
"Provjeri ima li ažuriranja...",
|
||||
"Provjeri ima li ažuriranja…",
|
||||
"Postavke",
|
||||
"Ponovno učitaj Webview",
|
||||
"Ponovno pokreni",
|
||||
"Izvezi zapisnike...",
|
||||
"Izvezi zapisnike…",
|
||||
"Nova sesija",
|
||||
"Otvori projekt...",
|
||||
"Otvori projekt…",
|
||||
"Novi prozor",
|
||||
"Zatvori prozor",
|
||||
"Poništi",
|
||||
@@ -216,8 +216,8 @@ export const dict = {
|
||||
"provider.connect.method.apiKey": "Ključ API",
|
||||
"provider.connect.method.browser": "preglednik",
|
||||
"provider.connect.method.headless": "Bezglav",
|
||||
"provider.connect.status.inProgress": "Autorizacija u tijeku...",
|
||||
"provider.connect.status.waiting": "Čeka se autorizacija...",
|
||||
"provider.connect.status.inProgress": "Autorizacija u tijeku…",
|
||||
"provider.connect.status.waiting": "Čeka se autorizacija…",
|
||||
"provider.connect.status.failed": "Autorizacija nije uspjela: {{error}}",
|
||||
"provider.connect.apiKey.description":
|
||||
"Enter vaš {{provider}} API ključ za povezivanje vašeg računa i korištenje {{provider}} modela u OpenCode.",
|
||||
@@ -311,7 +311,7 @@ export const dict = {
|
||||
"common.goBack": "Navigacija natrag",
|
||||
"common.goForward": "Navigacija naprijed",
|
||||
"common.loading": "Učitavanje",
|
||||
"common.loading.ellipsis": "...",
|
||||
"common.loading.ellipsis": "…",
|
||||
"common.cancel": "Otkazati",
|
||||
"common.clear": "Jasan",
|
||||
"common.open": "Otvoriti",
|
||||
@@ -320,12 +320,12 @@ export const dict = {
|
||||
"common.continue": "Nastaviti",
|
||||
"common.submit": "Pošalji",
|
||||
"common.save": "Uštedjeti",
|
||||
"common.saving": "Spremanje...",
|
||||
"common.saving": "Spremanje…",
|
||||
"common.default": "Zadano",
|
||||
"common.attachment": "privitak",
|
||||
"prompt.placeholder.shell": "Unesite naredbu ljuske... {{example}}",
|
||||
"prompt.placeholder.normal": 'Pitajte bilo što... "{{example}}"',
|
||||
"prompt.placeholder.simple": "Pitajte bilo što...",
|
||||
"prompt.placeholder.shell": "Unesite naredbu ljuske… {{example}}",
|
||||
"prompt.placeholder.normal": 'Pitajte bilo što… "{{example}}"',
|
||||
"prompt.placeholder.simple": "Pitajte bilo što…",
|
||||
"prompt.placeholder.summarizeComments": "Sažeti komentare…",
|
||||
"prompt.placeholder.summarizeComment": "Sažeti komentar…",
|
||||
"prompt.mode.shell": "Ljuska",
|
||||
@@ -345,7 +345,7 @@ export const dict = {
|
||||
"prompt.example.10": "Generirajte API dokumentaciju",
|
||||
"prompt.example.11": "Optimizirajte upite baze podataka",
|
||||
"prompt.example.12": "Dodajte potvrdu unosa",
|
||||
"prompt.example.13": "Stvorite novu komponentu za...",
|
||||
"prompt.example.13": "Stvorite novu komponentu za…",
|
||||
"prompt.example.14": "Kako mogu implementirati ovaj projekt?",
|
||||
"prompt.example.15": "Pregledajte moj kod radi najboljih praksi",
|
||||
"prompt.example.16": "Dodajte rukovanje pogreškama ovoj funkciji",
|
||||
@@ -356,7 +356,7 @@ export const dict = {
|
||||
"prompt.example.21": "Pomozite mi napisati skriptu za migraciju",
|
||||
"prompt.example.22": "Implementirajte predmemoriranje za ovu krajnju točku",
|
||||
"prompt.example.23": "Dodajte paginaciju ovom popisu",
|
||||
"prompt.example.24": "Kreirajte naredbu CLI za...",
|
||||
"prompt.example.24": "Kreirajte naredbu CLI za…",
|
||||
"prompt.example.25": "Kako ovdje rade varijable okruženja?",
|
||||
"prompt.popover.emptyResults": "Nema odgovarajućih rezultata",
|
||||
"prompt.popover.emptyCommands": "Nema odgovarajućih naredbi",
|
||||
@@ -408,7 +408,7 @@ export const dict = {
|
||||
"dialog.directory.parent": "Roditelj",
|
||||
"dialog.directory.readError": "Nije moguće pročitati ovu mapu",
|
||||
"app.server.unreachable": "Nije moguće doći do {{server}}",
|
||||
"app.server.retrying": "Automatski ponovni pokušaj...",
|
||||
"app.server.retrying": "Automatski ponovni pokušaj…",
|
||||
"app.server.otherServers": "Ostali poslužitelji",
|
||||
"dialog.server.title": "poslužitelji",
|
||||
"dialog.server.description": "Promijenite na koji se OpenCode poslužitelj povezuje ova aplikacija.",
|
||||
@@ -418,7 +418,7 @@ export const dict = {
|
||||
"dialog.server.add.url": "Adresa poslužitelja",
|
||||
"dialog.server.add.placeholder": "http://localhost:4096",
|
||||
"dialog.server.add.error": "Nije moguće spojiti se na poslužitelj",
|
||||
"dialog.server.add.checking": "Provjera...",
|
||||
"dialog.server.add.checking": "Provjera…",
|
||||
"dialog.server.add.button": "Dodaj poslužitelj",
|
||||
"dialog.server.add.name": "Naziv poslužitelja (neobavezno)",
|
||||
"dialog.server.add.namePlaceholder": "Localhost",
|
||||
@@ -443,26 +443,26 @@ export const dict = {
|
||||
"wsl.server.label": "WSL",
|
||||
"wsl.server.menu.label": "WSL poslužitelj",
|
||||
"wsl.server.retryStart": "Ponovi početak",
|
||||
"wsl.server.updating": "Ažuriranje...",
|
||||
"wsl.server.updating": "Ažuriranje…",
|
||||
"wsl.onboarding.step.distro": "Odaberite distro",
|
||||
"wsl.onboarding.step.opencode": "OpenCode",
|
||||
"wsl.onboarding.checkingRuntime": "Provjera WSL...",
|
||||
"wsl.onboarding.checkingRuntime": "Provjera WSL…",
|
||||
"wsl.onboarding.restartRequired": "Windows treba ponovno pokretanje kako bi završio instalaciju WSL.",
|
||||
"wsl.onboarding.ready": "WSL je spreman.",
|
||||
"wsl.onboarding.required": "Za nastavak je potreban WSL.",
|
||||
"wsl.onboarding.checkingDistros": "Provjera distribucija...",
|
||||
"wsl.onboarding.installingDistro": "Instaliranje {{distro}}...",
|
||||
"wsl.onboarding.checkingDistro": "Provjera {{distro}}...",
|
||||
"wsl.onboarding.listingDistros": "Popis distribucija...",
|
||||
"wsl.onboarding.checkingDistros": "Provjera distribucija…",
|
||||
"wsl.onboarding.installingDistro": "Instaliranje {{distro}}…",
|
||||
"wsl.onboarding.checkingDistro": "Provjera {{distro}}…",
|
||||
"wsl.onboarding.listingDistros": "Popis distribucija…",
|
||||
"wsl.onboarding.distroReady": "{{distro}} je spreman.",
|
||||
"wsl.onboarding.distroNotInstalled": "{{distro}} još nije instaliran.",
|
||||
"wsl.onboarding.openDistroOnce": "Otvorite {{distro}} jednom da završite postavljanje.",
|
||||
"wsl.onboarding.finishingDistro": "Dovršavanje postavljanja za {{distro}}.",
|
||||
"wsl.onboarding.pickDistro": "Odaberite distribuciju ili je instalirajte u nastavku.",
|
||||
"wsl.onboarding.checkingOpencode": "Provjera OpenCode...",
|
||||
"wsl.onboarding.checkingOpencodeIn": "Provjera OpenCode u {{distro}}...",
|
||||
"wsl.onboarding.updatingOpencode": "Ažuriranje OpenCode...",
|
||||
"wsl.onboarding.updatingOpencodeIn": "Ažuriranje OpenCode u {{distro}}...",
|
||||
"wsl.onboarding.checkingOpencode": "Provjera OpenCode…",
|
||||
"wsl.onboarding.checkingOpencodeIn": "Provjera OpenCode u {{distro}}…",
|
||||
"wsl.onboarding.updatingOpencode": "Ažuriranje OpenCode…",
|
||||
"wsl.onboarding.updatingOpencodeIn": "Ažuriranje OpenCode u {{distro}}…",
|
||||
"wsl.onboarding.updateOpencodeIn": "Ažurirajte OpenCode u {{distro}}.",
|
||||
"wsl.onboarding.updateOpencode": "Ažurirajte OpenCode",
|
||||
"wsl.onboarding.opencodeReadyIn": "OpenCode je spreman u {{distro}}.",
|
||||
@@ -471,11 +471,11 @@ export const dict = {
|
||||
"wsl.onboarding.installOpencode": "Instalirajte OpenCode",
|
||||
"wsl.onboarding.chooseDistroFirst": "Prvo odaberite distribuciju.",
|
||||
"wsl.onboarding.loadFailed": "Nije uspjelo učitavanje stanja WSL.",
|
||||
"wsl.onboarding.loading": "Učitavanje...",
|
||||
"wsl.onboarding.loading": "Učitavanje…",
|
||||
"wsl.onboarding.installedDistros": "Instalirane distribucije",
|
||||
"wsl.onboarding.checkAgain": "Provjerite ponovno",
|
||||
"wsl.onboarding.distroStatus.ready": "Spreman",
|
||||
"wsl.onboarding.distroStatus.checking": "Provjera...",
|
||||
"wsl.onboarding.distroStatus.checking": "Provjera…",
|
||||
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode nije instaliran",
|
||||
"wsl.onboarding.distroStatus.missingTools": "Nedostaje bash, curl",
|
||||
"wsl.onboarding.distroStatus.unsupported": "Nepodržano · Koristite WSL 2",
|
||||
@@ -494,7 +494,7 @@ export const dict = {
|
||||
"wsl.onboarding.allDistrosAdded": "Sve instalirane distribucije su već dodane.",
|
||||
"wsl.onboarding.noDistros": "Još nije otkrivena nijedna distribucija.",
|
||||
"wsl.onboarding.install": "Instalirati",
|
||||
"wsl.onboarding.installing": "Instaliranje...",
|
||||
"wsl.onboarding.installing": "Instaliranje…",
|
||||
"wsl.onboarding.installDistro": "Instalirajte distro",
|
||||
"wsl.onboarding.searchDistros": "Pretražite distribucije",
|
||||
"wsl.onboarding.wsl2Required": "Potreban je WSL 2.",
|
||||
@@ -506,7 +506,7 @@ export const dict = {
|
||||
"wsl.onboarding.unknown": "nepoznato",
|
||||
"wsl.onboarding.desktopVersion": "radna površina {{version}}",
|
||||
"wsl.onboarding.versionMismatch": "Instalirana verzija ne odgovara verziji aplikacije za stolna računala.",
|
||||
"wsl.onboarding.adding": "Dodavanje...",
|
||||
"wsl.onboarding.adding": "Dodavanje…",
|
||||
"dialog.project.edit.title": "Uredi projekt",
|
||||
"dialog.project.edit.name": "Ime",
|
||||
"dialog.project.edit.icon": "Ikona",
|
||||
@@ -613,7 +613,7 @@ export const dict = {
|
||||
"error.page.action.report": "Prijavi pogrešku",
|
||||
"error.page.action.reported": "Prijavljena pogreška",
|
||||
"error.page.action.exportLogs": "Izvoz zapisnika",
|
||||
"error.page.action.checking": "Provjera...",
|
||||
"error.page.action.checking": "Provjera…",
|
||||
"error.page.action.checkUpdates": "Provjerite ima li ažuriranja",
|
||||
"error.page.action.updateTo": "Ažurirajte na {{version}}",
|
||||
"error.page.circular": "[Kružni]",
|
||||
@@ -693,12 +693,12 @@ export const dict = {
|
||||
"session.review.filesChanged": "Datoteke promijenjene {{count}}",
|
||||
"session.review.change.one": "Promijeniti",
|
||||
"session.review.change.other": "Promjene",
|
||||
"session.review.loadingChanges": "Učitavanje promjena...",
|
||||
"session.review.loadingChanges": "Učitavanje promjena…",
|
||||
"session.review.empty": "Još nema promjena u ovoj sesiji",
|
||||
"session.review.noVcs": "Sustav kontrole verzija Git nije otkriven, promjene nisu prikazane",
|
||||
"session.review.noVcs.createGit.title": "Napravite Git spremište",
|
||||
"session.review.noVcs.createGit.description": "Pratite, pregledajte i poništite promjene u ovom projektu",
|
||||
"session.review.noVcs.createGit.actionLoading": "Stvaranje Git repozitorija...",
|
||||
"session.review.noVcs.createGit.actionLoading": "Stvaranje Git repozitorija…",
|
||||
"session.review.noVcs.createGit.action": "Napravi Git spremište",
|
||||
"session.review.noSnapshot": "Praćenje snimke onemogućeno je u konfiguraciji, tako da promjene sesije nisu dostupne",
|
||||
"session.review.noChanges": "Nema promjena",
|
||||
@@ -709,9 +709,9 @@ export const dict = {
|
||||
"session.files.empty": "Nema datoteka",
|
||||
"session.files.binaryContent": "Binarna datoteka (sadržaj se ne može prikazati)",
|
||||
"session.messages.renderEarlier": "Prikaži ranije poruke",
|
||||
"session.messages.loadingEarlier": "Učitavanje ranijih poruka...",
|
||||
"session.messages.loadingEarlier": "Učitavanje ranijih poruka…",
|
||||
"session.messages.loadEarlier": "Učitaj ranije poruke",
|
||||
"session.messages.loading": "Učitavanje poruka...",
|
||||
"session.messages.loading": "Učitavanje poruka…",
|
||||
"session.messages.jumpToLatest": "Skoči na najnovije",
|
||||
"session.context.addToContext": "Dodajte {{selection}} u kontekst",
|
||||
"session.todo.title": "Zadaci",
|
||||
@@ -773,8 +773,8 @@ export const dict = {
|
||||
"common.copied": "Kopirano",
|
||||
"lsp.tooltip.none": "Nema LSP poslužitelja",
|
||||
"lsp.label.connected": "{{count}} LSP",
|
||||
"prompt.loading": "Učitavanje upita...",
|
||||
"terminal.loading": "Učitavanje terminala...",
|
||||
"prompt.loading": "Učitavanje upita…",
|
||||
"terminal.loading": "Učitavanje terminala…",
|
||||
"terminal.title": "Terminal",
|
||||
"terminal.title.numbered": "Terminal {{number}}",
|
||||
"terminal.close": "Zatvori terminal",
|
||||
@@ -939,9 +939,9 @@ export const dict = {
|
||||
"settings.updates.row.check.title": "Provjerite ima li ažuriranja",
|
||||
"settings.updates.row.check.description": "Ručno provjerite postoje li ažuriranja i instalirajte ih ako su dostupna",
|
||||
"settings.updates.action.checkNow": "Provjerite sada",
|
||||
"settings.updates.action.checking": "Provjera...",
|
||||
"settings.updates.action.downloading": "Preuzimanje...",
|
||||
"settings.updates.action.installing": "Instaliranje...",
|
||||
"settings.updates.action.checking": "Provjera…",
|
||||
"settings.updates.action.downloading": "Preuzimanje…",
|
||||
"settings.updates.action.installing": "Instaliranje…",
|
||||
"settings.updates.toast.latest.title": "U toku ste",
|
||||
"settings.updates.toast.latest.description": "Imate najnoviju verziju OpenCode.",
|
||||
"sound.option.none": "Nijedan",
|
||||
@@ -1088,7 +1088,7 @@ export const dict = {
|
||||
"workspace.reset.success.title": "Resetiranje radnog prostora",
|
||||
"workspace.reset.success.description": "Radni prostor sada odgovara zadanoj grani.",
|
||||
"workspace.error.stillPreparing": "Radni prostor je još u pripremi",
|
||||
"workspace.status.checking": "Provjera nespojenih promjena...",
|
||||
"workspace.status.checking": "Provjera nespojenih promjena…",
|
||||
"workspace.status.error": "Nije moguće potvrditi git status.",
|
||||
"workspace.status.clean": "Nisu otkrivene nespojene promjene.",
|
||||
"workspace.status.dirty": "Nespojene promjene otkrivene u ovom radnom prostoru.",
|
||||
|
||||
@@ -8,13 +8,13 @@ const desktop = [
|
||||
"Ugrás",
|
||||
"Ablak",
|
||||
"Súgó",
|
||||
"Frissítések keresése...",
|
||||
"Frissítések keresése…",
|
||||
"Beállítások",
|
||||
"Webview újratöltése",
|
||||
"Újraindítás",
|
||||
"Naplók exportálása...",
|
||||
"Naplók exportálása…",
|
||||
"Új munkamenet",
|
||||
"Projekt megnyitása...",
|
||||
"Projekt megnyitása…",
|
||||
"Új ablak",
|
||||
"Ablak bezárása",
|
||||
"Visszavonás",
|
||||
@@ -216,8 +216,8 @@ export const dict = {
|
||||
"provider.connect.method.apiKey": "API kulcs",
|
||||
"provider.connect.method.browser": "Böngésző",
|
||||
"provider.connect.method.headless": "Fejetlen",
|
||||
"provider.connect.status.inProgress": "Az engedélyezés folyamatban...",
|
||||
"provider.connect.status.waiting": "Várakozás az engedélyezésre...",
|
||||
"provider.connect.status.inProgress": "Az engedélyezés folyamatban…",
|
||||
"provider.connect.status.waiting": "Várakozás az engedélyezésre…",
|
||||
"provider.connect.status.failed": "Az engedélyezés sikertelen: {{error}}",
|
||||
"provider.connect.apiKey.description":
|
||||
"Enter az Ön {{provider}} API kulcsa fiókja összekapcsolásához és a {{provider}} modellek használatához a OpenCode-ben.",
|
||||
@@ -311,7 +311,7 @@ export const dict = {
|
||||
"common.goBack": "Navigáljon vissza",
|
||||
"common.goForward": "Navigáljon előre",
|
||||
"common.loading": "Betöltés",
|
||||
"common.loading.ellipsis": "...",
|
||||
"common.loading.ellipsis": "…",
|
||||
"common.cancel": "Mégsem",
|
||||
"common.clear": "Törlés",
|
||||
"common.open": "Nyitott",
|
||||
@@ -320,12 +320,12 @@ export const dict = {
|
||||
"common.continue": "Folytatás",
|
||||
"common.submit": "Beküld",
|
||||
"common.save": "Megtakarítás",
|
||||
"common.saving": "Megtakarítás...",
|
||||
"common.saving": "Megtakarítás…",
|
||||
"common.default": "Alapértelmezett",
|
||||
"common.attachment": "mellékletet",
|
||||
"prompt.placeholder.shell": "Enter shell parancs... {{example}}",
|
||||
"prompt.placeholder.normal": 'Kérdezz bármit... "{{example}}"',
|
||||
"prompt.placeholder.simple": "Kérdezz bármit...",
|
||||
"prompt.placeholder.shell": "Enter shell parancs… {{example}}",
|
||||
"prompt.placeholder.normal": 'Kérdezz bármit… "{{example}}"',
|
||||
"prompt.placeholder.simple": "Kérdezz bármit…",
|
||||
"prompt.placeholder.summarizeComments": "A megjegyzések összegzése…",
|
||||
"prompt.placeholder.summarizeComment": "Komment összefoglalása…",
|
||||
"prompt.mode.shell": "Shell",
|
||||
@@ -345,7 +345,7 @@ export const dict = {
|
||||
"prompt.example.10": "API dokumentáció létrehozása",
|
||||
"prompt.example.11": "Az adatbázis-lekérdezések optimalizálása",
|
||||
"prompt.example.12": "Bemeneti ellenőrzés hozzáadása",
|
||||
"prompt.example.13": "Hozzon létre egy új összetevőt a...",
|
||||
"prompt.example.13": "Hozzon létre egy új összetevőt a…",
|
||||
"prompt.example.14": "Hogyan telepíthetem ezt a projektet?",
|
||||
"prompt.example.15": "Tekintse át a kódomat a bevált módszerekért",
|
||||
"prompt.example.16": "Adja hozzá a hibakezelést ehhez a funkcióhoz",
|
||||
@@ -356,7 +356,7 @@ export const dict = {
|
||||
"prompt.example.21": "Segíts nekem migrációs szkriptet írni",
|
||||
"prompt.example.22": "Gyorsítótárazás megvalósítása ehhez a végponthoz",
|
||||
"prompt.example.23": "Lapozás hozzáadása ehhez a listához",
|
||||
"prompt.example.24": "Hozzon létre egy CLI parancsot...",
|
||||
"prompt.example.24": "Hozzon létre egy CLI parancsot…",
|
||||
"prompt.example.25": "Hogyan működnek itt a környezeti változók?",
|
||||
"prompt.popover.emptyResults": "Nincsenek megfelelő eredmények",
|
||||
"prompt.popover.emptyCommands": "Nincsenek megfelelő parancsok",
|
||||
@@ -408,7 +408,7 @@ export const dict = {
|
||||
"dialog.directory.parent": "Szülő",
|
||||
"dialog.directory.readError": "Ez a mappa nem olvasható",
|
||||
"app.server.unreachable": "A {{server}} nem érhető el",
|
||||
"app.server.retrying": "Automatikus újrapróbálkozás...",
|
||||
"app.server.retrying": "Automatikus újrapróbálkozás…",
|
||||
"app.server.otherServers": "Egyéb szerverek",
|
||||
"dialog.server.title": "Szerverek",
|
||||
"dialog.server.description": "Állítsa be, hogy ez az alkalmazás melyik OpenCode szerverhez csatlakozzon.",
|
||||
@@ -418,7 +418,7 @@ export const dict = {
|
||||
"dialog.server.add.url": "Szerver címe",
|
||||
"dialog.server.add.placeholder": "http://localhost:4096",
|
||||
"dialog.server.add.error": "Nem sikerült csatlakozni a szerverhez",
|
||||
"dialog.server.add.checking": "Ellenőrzés...",
|
||||
"dialog.server.add.checking": "Ellenőrzés…",
|
||||
"dialog.server.add.button": "Szerver hozzáadása",
|
||||
"dialog.server.add.name": "Szerver neve (nem kötelező)",
|
||||
"dialog.server.add.namePlaceholder": "Localhost",
|
||||
@@ -443,26 +443,26 @@ export const dict = {
|
||||
"wsl.server.label": "WSL",
|
||||
"wsl.server.menu.label": "WSL szerver",
|
||||
"wsl.server.retryStart": "Próbálja újra az indítást",
|
||||
"wsl.server.updating": "Frissítés...",
|
||||
"wsl.server.updating": "Frissítés…",
|
||||
"wsl.onboarding.step.distro": "Válasszon disztrót",
|
||||
"wsl.onboarding.step.opencode": "OpenCode",
|
||||
"wsl.onboarding.checkingRuntime": "WSL ellenőrzése...",
|
||||
"wsl.onboarding.checkingRuntime": "WSL ellenőrzése…",
|
||||
"wsl.onboarding.restartRequired": "A Windows készüléket újra kell indítani a WSL telepítésének befejezéséhez.",
|
||||
"wsl.onboarding.ready": "A WSL készen áll.",
|
||||
"wsl.onboarding.required": "A folytatáshoz WSL szükséges.",
|
||||
"wsl.onboarding.checkingDistros": "A disztribúciók ellenőrzése...",
|
||||
"wsl.onboarding.installingDistro": "{{distro}} telepítése...",
|
||||
"wsl.onboarding.checkingDistro": "{{distro}} ellenőrzése...",
|
||||
"wsl.onboarding.listingDistros": "A disztribúciók listázása...",
|
||||
"wsl.onboarding.checkingDistros": "A disztribúciók ellenőrzése…",
|
||||
"wsl.onboarding.installingDistro": "{{distro}} telepítése…",
|
||||
"wsl.onboarding.checkingDistro": "{{distro}} ellenőrzése…",
|
||||
"wsl.onboarding.listingDistros": "A disztribúciók listázása…",
|
||||
"wsl.onboarding.distroReady": "A {{distro}} készen áll.",
|
||||
"wsl.onboarding.distroNotInstalled": "A {{distro}} még nincs telepítve.",
|
||||
"wsl.onboarding.openDistroOnce": "Nyissa meg egyszer a {{distro}}-t a beállítás befejezéséhez.",
|
||||
"wsl.onboarding.finishingDistro": "A {{distro}} befejező beállítása.",
|
||||
"wsl.onboarding.pickDistro": "Válasszon disztrót vagy telepítsen egyet alább.",
|
||||
"wsl.onboarding.checkingOpencode": "OpenCode ellenőrzése...",
|
||||
"wsl.onboarding.checkingOpencodeIn": "OpenCode ellenőrzése a {{distro}}-ben...",
|
||||
"wsl.onboarding.updatingOpencode": "OpenCode frissítése...",
|
||||
"wsl.onboarding.updatingOpencodeIn": "OpenCode frissítése a {{distro}}-ben...",
|
||||
"wsl.onboarding.checkingOpencode": "OpenCode ellenőrzése…",
|
||||
"wsl.onboarding.checkingOpencodeIn": "OpenCode ellenőrzése a {{distro}}-ben…",
|
||||
"wsl.onboarding.updatingOpencode": "OpenCode frissítése…",
|
||||
"wsl.onboarding.updatingOpencodeIn": "OpenCode frissítése a {{distro}}-ben…",
|
||||
"wsl.onboarding.updateOpencodeIn": "Frissítse a OpenCode-t a {{distro}}-ben.",
|
||||
"wsl.onboarding.updateOpencode": "Frissítse a OpenCode-t",
|
||||
"wsl.onboarding.opencodeReadyIn": "A OpenCode készen áll a {{distro}}-ben.",
|
||||
@@ -471,11 +471,11 @@ export const dict = {
|
||||
"wsl.onboarding.installOpencode": "Telepítse a OpenCode-t",
|
||||
"wsl.onboarding.chooseDistroFirst": "Először válasszon disztrót.",
|
||||
"wsl.onboarding.loadFailed": "Nem sikerült betölteni a WSL állapotot.",
|
||||
"wsl.onboarding.loading": "Betöltés...",
|
||||
"wsl.onboarding.loading": "Betöltés…",
|
||||
"wsl.onboarding.installedDistros": "Telepített disztribúciók",
|
||||
"wsl.onboarding.checkAgain": "Ellenőrizze újra",
|
||||
"wsl.onboarding.distroStatus.ready": "Kész",
|
||||
"wsl.onboarding.distroStatus.checking": "Ellenőrzés...",
|
||||
"wsl.onboarding.distroStatus.checking": "Ellenőrzés…",
|
||||
"wsl.onboarding.distroStatus.opencodeMissing": "A OpenCode nincs telepítve",
|
||||
"wsl.onboarding.distroStatus.missingTools": "Hiányzik a bash, curl",
|
||||
"wsl.onboarding.distroStatus.unsupported": "Nem támogatott · Használja a WSL 2-t",
|
||||
@@ -494,7 +494,7 @@ export const dict = {
|
||||
"wsl.onboarding.allDistrosAdded": "Az összes telepített disztribúció már hozzáadva van.",
|
||||
"wsl.onboarding.noDistros": "Még nem észleltek disztribúciót.",
|
||||
"wsl.onboarding.install": "Telepítés",
|
||||
"wsl.onboarding.installing": "Telepítés...",
|
||||
"wsl.onboarding.installing": "Telepítés…",
|
||||
"wsl.onboarding.installDistro": "Telepítse a disztribúciót",
|
||||
"wsl.onboarding.searchDistros": "Keresés disztribúciókban",
|
||||
"wsl.onboarding.wsl2Required": "WSL 2 szükséges.",
|
||||
@@ -506,7 +506,7 @@ export const dict = {
|
||||
"wsl.onboarding.unknown": "ismeretlen",
|
||||
"wsl.onboarding.desktopVersion": "asztali {{version}}",
|
||||
"wsl.onboarding.versionMismatch": "A telepített verzió nem egyezik az asztali alkalmazás verziójával.",
|
||||
"wsl.onboarding.adding": "Hozzáadás...",
|
||||
"wsl.onboarding.adding": "Hozzáadás…",
|
||||
"dialog.project.edit.title": "Projekt szerkesztése",
|
||||
"dialog.project.edit.name": "Név",
|
||||
"dialog.project.edit.icon": "Ikon",
|
||||
@@ -612,7 +612,7 @@ export const dict = {
|
||||
"error.page.action.report": "Jelentés hiba",
|
||||
"error.page.action.reported": "Hiba jelentve",
|
||||
"error.page.action.exportLogs": "Naplók exportálása",
|
||||
"error.page.action.checking": "Ellenőrzés...",
|
||||
"error.page.action.checking": "Ellenőrzés…",
|
||||
"error.page.action.checkUpdates": "Ellenőrizze a frissítéseket",
|
||||
"error.page.action.updateTo": "Frissítés a {{version}}-re",
|
||||
"error.page.circular": "[Kör alakú]",
|
||||
@@ -691,13 +691,13 @@ export const dict = {
|
||||
"session.review.filesChanged": "A fájlok megváltoztak {{count}}",
|
||||
"session.review.change.one": "Változás",
|
||||
"session.review.change.other": "Változások",
|
||||
"session.review.loadingChanges": "Módosítások betöltése...",
|
||||
"session.review.loadingChanges": "Módosítások betöltése…",
|
||||
"session.review.empty": "Ebben a munkamenetben még nincs változás",
|
||||
"session.review.noVcs": "Nem észlelt Git verzióvezérlő rendszert, a változások nem jelennek meg",
|
||||
"session.review.noVcs.createGit.title": "Hozzon létre egy Git tárolót",
|
||||
"session.review.noVcs.createGit.description":
|
||||
"Kövesse nyomon, tekintse át és vonja vissza a változtatásokat ebben a projektben",
|
||||
"session.review.noVcs.createGit.actionLoading": "Git adattár létrehozása...",
|
||||
"session.review.noVcs.createGit.actionLoading": "Git adattár létrehozása…",
|
||||
"session.review.noVcs.createGit.action": "Git tároló létrehozása",
|
||||
"session.review.noSnapshot":
|
||||
"A pillanatkép-követés le van tiltva a konfigurációban, így a munkamenet-módosítások nem érhetők el",
|
||||
@@ -709,9 +709,9 @@ export const dict = {
|
||||
"session.files.empty": "Nincsenek fájlok",
|
||||
"session.files.binaryContent": "Bináris fájl (a tartalom nem jeleníthető meg)",
|
||||
"session.messages.renderEarlier": "A korábbi üzenetek megjelenítése",
|
||||
"session.messages.loadingEarlier": "Korábbi üzenetek betöltése...",
|
||||
"session.messages.loadingEarlier": "Korábbi üzenetek betöltése…",
|
||||
"session.messages.loadEarlier": "Korábbi üzenetek betöltése",
|
||||
"session.messages.loading": "Üzenetek betöltése...",
|
||||
"session.messages.loading": "Üzenetek betöltése…",
|
||||
"session.messages.jumpToLatest": "Ugrás a legújabbra",
|
||||
"session.context.addToContext": "Adja hozzá a {{selection}}-t a kontextushoz",
|
||||
"session.todo.title": "Feladatok",
|
||||
@@ -772,8 +772,8 @@ export const dict = {
|
||||
"common.copied": "Másolva",
|
||||
"lsp.tooltip.none": "Nincsenek LSP szerverek",
|
||||
"lsp.label.connected": "{{count}} LSP",
|
||||
"prompt.loading": "Prompt betöltése...",
|
||||
"terminal.loading": "Terminál betöltése...",
|
||||
"prompt.loading": "Prompt betöltése…",
|
||||
"terminal.loading": "Terminál betöltése…",
|
||||
"terminal.title": "Terminál",
|
||||
"terminal.title.numbered": "Terminal {{number}}",
|
||||
"terminal.close": "Zárja be a terminált",
|
||||
@@ -939,9 +939,9 @@ export const dict = {
|
||||
"settings.updates.row.check.title": "Ellenőrizze a frissítéseket",
|
||||
"settings.updates.row.check.description": "Manuálisan ellenőrizze a frissítéseket, és telepítse, ha elérhető",
|
||||
"settings.updates.action.checkNow": "Ellenőrizze most",
|
||||
"settings.updates.action.checking": "Ellenőrzés...",
|
||||
"settings.updates.action.downloading": "Letöltés...",
|
||||
"settings.updates.action.installing": "Telepítés...",
|
||||
"settings.updates.action.checking": "Ellenőrzés…",
|
||||
"settings.updates.action.downloading": "Letöltés…",
|
||||
"settings.updates.action.installing": "Telepítés…",
|
||||
"settings.updates.toast.latest.title": "Ön naprakész",
|
||||
"settings.updates.toast.latest.description": "Ön a OpenCode legújabb verzióját futtatja.",
|
||||
"sound.option.none": "Egyik sem",
|
||||
@@ -1091,7 +1091,7 @@ export const dict = {
|
||||
"workspace.reset.success.title": "Munkaterület visszaállítása",
|
||||
"workspace.reset.success.description": "A munkaterület most megegyezik az alapértelmezett ággal.",
|
||||
"workspace.error.stillPreparing": "A munkaterület még készül",
|
||||
"workspace.status.checking": "Nem egyesített módosítások ellenőrzése...",
|
||||
"workspace.status.checking": "Nem egyesített módosítások ellenőrzése…",
|
||||
"workspace.status.error": "Nem lehet ellenőrizni a git állapotát.",
|
||||
"workspace.status.clean": "Nem észleltek összevont változtatásokat.",
|
||||
"workspace.status.dirty": "Nem egyesített változtatásokat észleltünk ezen a munkaterületen.",
|
||||
|
||||
@@ -6,13 +6,13 @@ export const dict = {
|
||||
"desktop.menu.go": "Գնալ",
|
||||
"desktop.menu.window": "Պատուհան",
|
||||
"desktop.menu.help": "Օգնություն",
|
||||
"desktop.menu.checkForUpdates": "Ստուգեք թարմացումների համար...",
|
||||
"desktop.menu.checkForUpdates": "Ստուգեք թարմացումների համար…",
|
||||
"desktop.menu.settings": "Կարգավորումներ",
|
||||
"desktop.menu.reloadWebview": "Վերբեռնել Webview",
|
||||
"desktop.menu.restart": "Վերագործարկեք",
|
||||
"desktop.menu.exportLogs": "Արտահանման մատյաններ...",
|
||||
"desktop.menu.exportLogs": "Արտահանման մատյաններ…",
|
||||
"desktop.menu.newSession": "Նոր նիստ",
|
||||
"desktop.menu.openProject": "Բաց նախագիծ...",
|
||||
"desktop.menu.openProject": "Բաց նախագիծ…",
|
||||
"desktop.menu.newWindow": "Նոր պատուհան",
|
||||
"desktop.menu.closeWindow": "Փակել պատուհանը",
|
||||
"desktop.menu.undo": "Հետարկել",
|
||||
@@ -214,8 +214,8 @@ export const dict = {
|
||||
"provider.connect.method.apiKey": "API բանալի",
|
||||
"provider.connect.method.browser": "Դիտարկիչ",
|
||||
"provider.connect.method.headless": "Առանց գրաֆիկական միջերեսի",
|
||||
"provider.connect.status.inProgress": "Լիազորումն ընթացքի մեջ է...",
|
||||
"provider.connect.status.waiting": "Սպասում է թույլտվության...",
|
||||
"provider.connect.status.inProgress": "Լիազորումն ընթացքի մեջ է…",
|
||||
"provider.connect.status.waiting": "Սպասում է թույլտվության…",
|
||||
"provider.connect.status.failed": "Լիազորումը ձախողվեց՝ {{error}}",
|
||||
"provider.connect.apiKey.description":
|
||||
"Մուտքագրեք ձեր {{provider}} API բանալին՝ ձեր հաշիվը միացնելու և OpenCode-ում {{provider}} մոդելներ օգտագործելու համար։",
|
||||
@@ -309,7 +309,7 @@ export const dict = {
|
||||
"common.goBack": "Նավարկեք հետ",
|
||||
"common.goForward": "Նավարկել առաջ",
|
||||
"common.loading": "Բեռնվում",
|
||||
"common.loading.ellipsis": "...",
|
||||
"common.loading.ellipsis": "…",
|
||||
"common.cancel": "Չեղարկել",
|
||||
"common.clear": "Մաքրել",
|
||||
"common.open": "Բացել",
|
||||
@@ -318,12 +318,12 @@ export const dict = {
|
||||
"common.continue": "Շարունակել",
|
||||
"common.submit": "Ներկայացնել",
|
||||
"common.save": "Պահել",
|
||||
"common.saving": "Պահպանում...",
|
||||
"common.saving": "Պահպանում…",
|
||||
"common.default": "Լռելյայն",
|
||||
"common.attachment": "կցված",
|
||||
"prompt.placeholder.shell": "Մուտքագրեք shell հրամանը... {{example}}",
|
||||
"prompt.placeholder.normal": "Հարցրեք որևէ բան... «{{example}}»",
|
||||
"prompt.placeholder.simple": "Հարցրեք որեւէ բան...",
|
||||
"prompt.placeholder.shell": "Մուտքագրեք shell հրամանը… {{example}}",
|
||||
"prompt.placeholder.normal": "Հարցրեք որևէ բան… «{{example}}»",
|
||||
"prompt.placeholder.simple": "Հարցրեք որեւէ բան…",
|
||||
"prompt.placeholder.summarizeComments": "Ամփոփել մեկնաբանությունները…",
|
||||
"prompt.placeholder.summarizeComment": "Ամփոփել մեկնաբանությունը…",
|
||||
"prompt.mode.shell": "Shell",
|
||||
@@ -343,7 +343,7 @@ export const dict = {
|
||||
"prompt.example.10": "Ստեղծել API փաստաթղթեր",
|
||||
"prompt.example.11": "Օպտիմալացնել տվյալների բազայի հարցումները",
|
||||
"prompt.example.12": "Ավելացնել մուտքագրման վավերացում",
|
||||
"prompt.example.13": "Ստեղծել նոր բաղադրիչ...",
|
||||
"prompt.example.13": "Ստեղծել նոր բաղադրիչ…",
|
||||
"prompt.example.14": "Ինչպե՞ս կարող եմ տեղակայել այս նախագիծը",
|
||||
"prompt.example.15": "Վերանայել իմ կոդը լավագույն փորձի համար",
|
||||
"prompt.example.16": "Ավելացնել սխալների մշակումն այս ֆունկցիային",
|
||||
@@ -354,7 +354,7 @@ export const dict = {
|
||||
"prompt.example.21": "Օգնիր ինձ գրել միգրացիոն սցենար",
|
||||
"prompt.example.22": "Իրականացնել քեշավորում այս վերջնակետի համար",
|
||||
"prompt.example.23": "Ավելացնել էջադրում այս ցանկին",
|
||||
"prompt.example.24": "Ստեղծել CLI հրաման...",
|
||||
"prompt.example.24": "Ստեղծել CLI հրաման…",
|
||||
"prompt.example.25": "Ինչպե՞ս են այստեղ աշխատում շրջակա միջավայրի փոփոխականները",
|
||||
"prompt.popover.emptyResults": "Համապատասխան արդյունքներ չկա",
|
||||
"prompt.popover.emptyCommands": "Համապատասխան հրամաններ",
|
||||
@@ -406,7 +406,7 @@ export const dict = {
|
||||
"dialog.directory.parent": "Ծնող",
|
||||
"dialog.directory.readError": "Անհնար է կարդալ այս թղթապանակը",
|
||||
"app.server.unreachable": "Չհաջողվեց հասնել {{server}}",
|
||||
"app.server.retrying": "Նորից ինքնաբերաբար...",
|
||||
"app.server.retrying": "Նորից ինքնաբերաբար…",
|
||||
"app.server.otherServers": "Այլ սերվերներ",
|
||||
"dialog.server.title": "Սերվերներ",
|
||||
"dialog.server.description": "Փոխարկեք, թե որ OpenCode սերվերին է միանում այս հավելվածը։",
|
||||
@@ -416,7 +416,7 @@ export const dict = {
|
||||
"dialog.server.add.url": "Սերվերի հասցեն",
|
||||
"dialog.server.add.placeholder": "http://localhost:4096",
|
||||
"dialog.server.add.error": "Չհաջողվեց միանալ սերվերին",
|
||||
"dialog.server.add.checking": "Ստուգում...",
|
||||
"dialog.server.add.checking": "Ստուգում…",
|
||||
"dialog.server.add.button": "Ավելացնել սերվեր",
|
||||
"dialog.server.add.name": "Սերվերի անունը (ըստ ցանկության)",
|
||||
"dialog.server.add.namePlaceholder": "Localhost",
|
||||
@@ -441,26 +441,26 @@ export const dict = {
|
||||
"wsl.server.label": "WSL",
|
||||
"wsl.server.menu.label": "WSL սերվեր",
|
||||
"wsl.server.retryStart": "Փորձեք նորից սկսել",
|
||||
"wsl.server.updating": "Թարմացվում է...",
|
||||
"wsl.server.updating": "Թարմացվում է…",
|
||||
"wsl.onboarding.step.distro": "Ընտրեք բաշխում",
|
||||
"wsl.onboarding.step.opencode": "OpenCode",
|
||||
"wsl.onboarding.checkingRuntime": "Ստուգում է WSL...",
|
||||
"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.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": "Ստուգում է OpenCode-ը {{distro}}...",
|
||||
"wsl.onboarding.updatingOpencode": "Թարմացվում է OpenCode...",
|
||||
"wsl.onboarding.updatingOpencodeIn": "Թարմացվում է OpenCode-ը {{distro}}...",
|
||||
"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.updateOpencode": "Թարմացնել OpenCode",
|
||||
"wsl.onboarding.opencodeReadyIn": "OpenCode պատրաստ է {{distro}}-ում։",
|
||||
@@ -469,11 +469,11 @@ export const dict = {
|
||||
"wsl.onboarding.installOpencode": "Տեղադրեք OpenCode",
|
||||
"wsl.onboarding.chooseDistroFirst": "Ընտրեք նախաբաշխումը։",
|
||||
"wsl.onboarding.loadFailed": "Չհաջողվեց բեռնել WSL վիճակը։",
|
||||
"wsl.onboarding.loading": "Բեռնվում է...",
|
||||
"wsl.onboarding.loading": "Բեռնվում է…",
|
||||
"wsl.onboarding.installedDistros": "Տեղադրված բաշխումներ",
|
||||
"wsl.onboarding.checkAgain": "Ստուգել նորից",
|
||||
"wsl.onboarding.distroStatus.ready": "Պատրաստ է",
|
||||
"wsl.onboarding.distroStatus.checking": "Ստուգում...",
|
||||
"wsl.onboarding.distroStatus.checking": "Ստուգում…",
|
||||
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode տեղադրված չէ",
|
||||
"wsl.onboarding.distroStatus.missingTools": "Բացակայում են bash-ը և curl-ը",
|
||||
"wsl.onboarding.distroStatus.unsupported": "Չի աջակցվում · Օգտագործել WSL 2",
|
||||
@@ -492,7 +492,7 @@ export const dict = {
|
||||
"wsl.onboarding.allDistrosAdded": "Բոլոր տեղադրված բաշխումները արդեն ավելացված են։",
|
||||
"wsl.onboarding.noDistros": "Դեռևս տարածումներ չեն հայտնաբերվել։",
|
||||
"wsl.onboarding.install": "Տեղադրել",
|
||||
"wsl.onboarding.installing": "Տեղադրվում է...",
|
||||
"wsl.onboarding.installing": "Տեղադրվում է…",
|
||||
"wsl.onboarding.installDistro": "Տեղադրել դիստրիբուտիվը",
|
||||
"wsl.onboarding.searchDistros": "Որոնման բաշխումներ",
|
||||
"wsl.onboarding.wsl2Required": "WSL 2 պարտադիր է։",
|
||||
@@ -504,7 +504,7 @@ export const dict = {
|
||||
"wsl.onboarding.unknown": "անհայտ",
|
||||
"wsl.onboarding.desktopVersion": "աշխատասեղանի {{version}}",
|
||||
"wsl.onboarding.versionMismatch": "Տեղադրված տարբերակը չի համապատասխանում աշխատասեղանի հավելվածի տարբերակին։",
|
||||
"wsl.onboarding.adding": "Ավելացվում է...",
|
||||
"wsl.onboarding.adding": "Ավելացվում է…",
|
||||
"dialog.project.edit.title": "Խմբագրել նախագիծը",
|
||||
"dialog.project.edit.name": "Անուն",
|
||||
"dialog.project.edit.icon": "Պատկերակ",
|
||||
@@ -611,7 +611,7 @@ export const dict = {
|
||||
"error.page.action.report": "Հաղորդել սխալ",
|
||||
"error.page.action.reported": "Հաղորդվել է սխալ",
|
||||
"error.page.action.exportLogs": "Արտահանման մատյաններ",
|
||||
"error.page.action.checking": "Ստուգում...",
|
||||
"error.page.action.checking": "Ստուգում…",
|
||||
"error.page.action.checkUpdates": "Ստուգեք թարմացումների համար",
|
||||
"error.page.action.updateTo": "Թարմացնել {{version}}",
|
||||
"error.page.circular": "[Circular]",
|
||||
@@ -690,12 +690,12 @@ export const dict = {
|
||||
"session.review.filesChanged": "Ֆայլերը փոխվել են {{count}}",
|
||||
"session.review.change.one": "Փոխել",
|
||||
"session.review.change.other": "Փոփոխություններ",
|
||||
"session.review.loadingChanges": "Բեռնվում են փոփոխություններ...",
|
||||
"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.actionLoading": "Ստեղծվում է Git պահոց…",
|
||||
"session.review.noVcs.createGit.action": "Ստեղծել Git պահոց",
|
||||
"session.review.noSnapshot":
|
||||
"Snapshot-ի հետագծումն անջատված է կազմաձևում, ուստի նիստի փոփոխություններն անհասանելի են",
|
||||
@@ -707,9 +707,9 @@ export const dict = {
|
||||
"session.files.empty": "Ֆայլեր չկան",
|
||||
"session.files.binaryContent": "Երկուական ֆայլ (բովանդակությունը չի կարող ցուցադրվել)",
|
||||
"session.messages.renderEarlier": "Ներկայացնել ավելի վաղ հաղորդագրությունները",
|
||||
"session.messages.loadingEarlier": "Նախկին հաղորդագրությունների բեռնում...",
|
||||
"session.messages.loadingEarlier": "Նախկին հաղորդագրությունների բեռնում…",
|
||||
"session.messages.loadEarlier": "Բեռնել ավելի վաղ հաղորդագրությունները",
|
||||
"session.messages.loading": "Բեռնվում է հաղորդագրություններ...",
|
||||
"session.messages.loading": "Բեռնվում է հաղորդագրություններ…",
|
||||
"session.messages.jumpToLatest": "Անցնել վերջին",
|
||||
"session.context.addToContext": "Ավելացնել {{selection}} համատեքստում",
|
||||
"session.todo.title": "Անելիքներ",
|
||||
@@ -770,8 +770,8 @@ export const dict = {
|
||||
"common.copied": "Պատճենված",
|
||||
"lsp.tooltip.none": "Չկան LSP սերվեր",
|
||||
"lsp.label.connected": "{{count}} LSP",
|
||||
"prompt.loading": "Բեռնվում է հուշում...",
|
||||
"terminal.loading": "Բեռնվում է տերմինալը...",
|
||||
"prompt.loading": "Բեռնվում է հուշում…",
|
||||
"terminal.loading": "Բեռնվում է տերմինալը…",
|
||||
"terminal.title": "Տերմինալ",
|
||||
"terminal.title.numbered": "Տերմինալ {{number}}",
|
||||
"terminal.close": "Փակել տերմինալը",
|
||||
@@ -935,9 +935,9 @@ export const dict = {
|
||||
"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.action.checking": "Ստուգում…",
|
||||
"settings.updates.action.downloading": "Ներբեռնվում է…",
|
||||
"settings.updates.action.installing": "Տեղադրվում է…",
|
||||
"settings.updates.toast.latest.title": "Դուք արդի եք",
|
||||
"settings.updates.toast.latest.description": "Դուք օգտագործում եք OpenCode-ի վերջին տարբերակը։",
|
||||
"sound.option.none": "Ոչ մեկը",
|
||||
@@ -1086,7 +1086,7 @@ export const dict = {
|
||||
"workspace.reset.success.title": "Աշխատանքային տարածքի վերակայում",
|
||||
"workspace.reset.success.description": "Աշխատանքային տարածքն այժմ համապատասխանում է լռելյայն ճյուղին։",
|
||||
"workspace.error.stillPreparing": "Աշխատանքային տարածքը դեռ պատրաստվում է",
|
||||
"workspace.status.checking": "Չմիաձուլված փոփոխությունների ստուգում...",
|
||||
"workspace.status.checking": "Չմիաձուլված փոփոխությունների ստուգում…",
|
||||
"workspace.status.error": "Հնարավոր չէ ստուգել git կարգավիճակը։",
|
||||
"workspace.status.clean": "Չմիաձուլված փոփոխություններ չեն հայտնաբերվել։",
|
||||
"workspace.status.dirty": "Չմիաձուլված փոփոխություններ են հայտնաբերվել այս աշխատանքային տարածքում։",
|
||||
|
||||
@@ -6,13 +6,13 @@ export const dict = {
|
||||
"desktop.menu.go": "Navigasi",
|
||||
"desktop.menu.window": "Jendela",
|
||||
"desktop.menu.help": "Bantuan",
|
||||
"desktop.menu.checkForUpdates": "Periksa pembaruan...",
|
||||
"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.exportLogs": "Ekspor log…",
|
||||
"desktop.menu.newSession": "Sesi baru",
|
||||
"desktop.menu.openProject": "Buka proyek...",
|
||||
"desktop.menu.openProject": "Buka proyek…",
|
||||
"desktop.menu.newWindow": "Jendela baru",
|
||||
"desktop.menu.closeWindow": "Tutup jendela",
|
||||
"desktop.menu.undo": "Urungkan",
|
||||
@@ -233,8 +233,8 @@ export const dict = {
|
||||
"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.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.",
|
||||
@@ -331,7 +331,7 @@ export const dict = {
|
||||
"common.goBack": "Navigasi mundur",
|
||||
"common.goForward": "Navigasi maju",
|
||||
"common.loading": "Memuat",
|
||||
"common.loading.ellipsis": "...",
|
||||
"common.loading.ellipsis": "…",
|
||||
"common.cancel": "Batal",
|
||||
"common.clear": "Bersihkan",
|
||||
"common.open": "Buka",
|
||||
@@ -340,13 +340,13 @@ export const dict = {
|
||||
"common.continue": "Lanjutkan",
|
||||
"common.submit": "Kirim",
|
||||
"common.save": "Simpan",
|
||||
"common.saving": "Menyimpan...",
|
||||
"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.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",
|
||||
@@ -367,7 +367,7 @@ export const dict = {
|
||||
"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.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",
|
||||
@@ -378,7 +378,7 @@ export const dict = {
|
||||
"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.24": "Buat perintah CLI untuk…",
|
||||
"prompt.example.25": "Bagaimana cara kerja variabel lingkungan di sini?",
|
||||
|
||||
"prompt.popover.emptyResults": "Tidak ada hasil yang cocok",
|
||||
@@ -438,7 +438,7 @@ export const dict = {
|
||||
"dialog.directory.readError": "Tidak dapat membaca folder ini",
|
||||
|
||||
"app.server.unreachable": "Tidak dapat menjangkau {{server}}",
|
||||
"app.server.retrying": "Mencoba ulang secara otomatis...",
|
||||
"app.server.retrying": "Mencoba ulang secara otomatis…",
|
||||
"app.server.otherServers": "Server lainnya",
|
||||
|
||||
"dialog.server.title": "Server",
|
||||
@@ -449,7 +449,7 @@ export const dict = {
|
||||
"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.checking": "Memeriksa…",
|
||||
"dialog.server.add.button": "Tambah server",
|
||||
"dialog.server.add.name": "Nama server (opsional)",
|
||||
"dialog.server.add.namePlaceholder": "Localhost",
|
||||
@@ -475,26 +475,26 @@ export const dict = {
|
||||
"wsl.server.label": "WSL",
|
||||
"wsl.server.menu.label": "Server WSL",
|
||||
"wsl.server.retryStart": "Coba mulai ulang",
|
||||
"wsl.server.updating": "Memperbarui...",
|
||||
"wsl.server.updating": "Memperbarui…",
|
||||
"wsl.onboarding.step.distro": "Pilih distro",
|
||||
"wsl.onboarding.step.opencode": "OpenCode",
|
||||
"wsl.onboarding.checkingRuntime": "Memeriksa WSL...",
|
||||
"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.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.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}}.",
|
||||
@@ -503,11 +503,11 @@ export const dict = {
|
||||
"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.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.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",
|
||||
@@ -526,7 +526,7 @@ export const dict = {
|
||||
"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.installing": "Menginstal…",
|
||||
"wsl.onboarding.installDistro": "Instal distro",
|
||||
"wsl.onboarding.searchDistros": "Cari distro",
|
||||
"wsl.onboarding.wsl2Required": "WSL 2 diperlukan.",
|
||||
@@ -538,7 +538,7 @@ export const dict = {
|
||||
"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...",
|
||||
"wsl.onboarding.adding": "Menambahkan…",
|
||||
|
||||
|
||||
"dialog.project.edit.title": "Sunting proyek",
|
||||
@@ -666,7 +666,7 @@ export const dict = {
|
||||
"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.checking": "Memeriksa…",
|
||||
"error.page.action.checkUpdates": "Periksa pembaruan",
|
||||
"error.page.action.updateTo": "Perbarui ke {{version}}",
|
||||
"error.page.circular": "[Sirkular]",
|
||||
@@ -751,12 +751,12 @@ export const dict = {
|
||||
"session.review.filesChanged": "{{count}} Berkas Berubah",
|
||||
"session.review.change.one": "Perubahan",
|
||||
"session.review.change.other": "Perubahan",
|
||||
"session.review.loadingChanges": "Memuat 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.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",
|
||||
@@ -770,9 +770,9 @@ export const dict = {
|
||||
"session.files.binaryContent": "Berkas biner (konten tidak dapat ditampilkan)",
|
||||
|
||||
"session.messages.renderEarlier": "Tampilkan pesan sebelumnya",
|
||||
"session.messages.loadingEarlier": "Memuat pesan sebelumnya...",
|
||||
"session.messages.loadingEarlier": "Memuat pesan sebelumnya…",
|
||||
"session.messages.loadEarlier": "Muat pesan sebelumnya",
|
||||
"session.messages.loading": "Memuat pesan...",
|
||||
"session.messages.loading": "Memuat pesan…",
|
||||
"session.messages.jumpToLatest": "Lompat ke pesan terbaru",
|
||||
|
||||
"session.context.addToContext": "Tambahkan {{selection}} ke konteks",
|
||||
@@ -840,8 +840,8 @@ export const dict = {
|
||||
"lsp.tooltip.none": "Tidak ada server LSP",
|
||||
"lsp.label.connected": "{{count}} LSP",
|
||||
|
||||
"prompt.loading": "Memuat prompt...",
|
||||
"terminal.loading": "Memuat terminal...",
|
||||
"prompt.loading": "Memuat prompt…",
|
||||
"terminal.loading": "Memuat terminal…",
|
||||
"terminal.title": "Terminal",
|
||||
"terminal.title.numbered": "Terminal {{number}}",
|
||||
"terminal.close": "Tutup terminal",
|
||||
@@ -1014,9 +1014,9 @@ export const dict = {
|
||||
"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.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",
|
||||
@@ -1173,7 +1173,7 @@ export const dict = {
|
||||
"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.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.",
|
||||
|
||||
@@ -8,13 +8,13 @@ const desktop = [
|
||||
"Fara",
|
||||
"Gluggi",
|
||||
"Hjálp",
|
||||
"Leita að uppfærslum...",
|
||||
"Leita að uppfærslum…",
|
||||
"Stillingar",
|
||||
"Endurhlaða Webview",
|
||||
"Endurræsa",
|
||||
"Flytja út atvikaskrár...",
|
||||
"Flytja út atvikaskrár…",
|
||||
"Ný seta",
|
||||
"Opna verkefni...",
|
||||
"Opna verkefni…",
|
||||
"Nýr gluggi",
|
||||
"Loka glugga",
|
||||
"Afturkalla",
|
||||
@@ -216,8 +216,8 @@ export const dict = {
|
||||
"provider.connect.method.apiKey": "API lykill",
|
||||
"provider.connect.method.browser": "Vafri",
|
||||
"provider.connect.method.headless": "Höfuðlaus",
|
||||
"provider.connect.status.inProgress": "Heimild í gangi...",
|
||||
"provider.connect.status.waiting": "Bíður eftir heimild...",
|
||||
"provider.connect.status.inProgress": "Heimild í gangi…",
|
||||
"provider.connect.status.waiting": "Bíður eftir heimild…",
|
||||
"provider.connect.status.failed": "Heimild mistókst: {{error}}",
|
||||
"provider.connect.apiKey.description":
|
||||
"Sláðu inn API-lykilinn þinn fyrir {{provider}} til að tengja reikninginn og nota líkön frá {{provider}} í OpenCode.",
|
||||
@@ -311,7 +311,7 @@ export const dict = {
|
||||
"common.goBack": "Sigla til baka",
|
||||
"common.goForward": "Sigla áfram",
|
||||
"common.loading": "Hleðsla",
|
||||
"common.loading.ellipsis": "...",
|
||||
"common.loading.ellipsis": "…",
|
||||
"common.cancel": "Hætta við",
|
||||
"common.clear": "Hreinsa",
|
||||
"common.open": "Opið",
|
||||
@@ -320,14 +320,14 @@ export const dict = {
|
||||
"common.continue": "Halda áfram",
|
||||
"common.submit": "Sendu inn",
|
||||
"common.save": "Vista",
|
||||
"common.saving": "Vistar...",
|
||||
"common.saving": "Vistar…",
|
||||
"common.default": "Sjálfgefið",
|
||||
"common.attachment": "viðhengi",
|
||||
"prompt.placeholder.shell": "Sláðu inn skeljarskipun... {{example}}",
|
||||
"prompt.placeholder.normal": 'Spyrðu hvað sem er... "{{example}}"',
|
||||
"prompt.placeholder.simple": "Spurðu hvað sem er...",
|
||||
"prompt.placeholder.shell": "Sláðu inn skeljarskipun… {{example}}",
|
||||
"prompt.placeholder.normal": 'Spyrðu hvað sem er… "{{example}}"',
|
||||
"prompt.placeholder.simple": "Spurðu hvað sem er…",
|
||||
"prompt.placeholder.summarizeComments": "Taktu saman athugasemdir…",
|
||||
"prompt.placeholder.summarizeComment": "Tekið saman athugasemd...",
|
||||
"prompt.placeholder.summarizeComment": "Tekið saman athugasemd…",
|
||||
"prompt.mode.shell": "Skel",
|
||||
"prompt.mode.normal": "Kvaðning",
|
||||
"prompt.mode.shell.exit": "esc að hætta",
|
||||
@@ -345,7 +345,7 @@ export const dict = {
|
||||
"prompt.example.10": "Búðu til API skjöl",
|
||||
"prompt.example.11": "Fínstilltu gagnagrunnsfyrirspurnir",
|
||||
"prompt.example.12": "Bættu við inntaksstaðfestingu",
|
||||
"prompt.example.13": "Búðu til nýjan íhlut fyrir...",
|
||||
"prompt.example.13": "Búðu til nýjan íhlut fyrir…",
|
||||
"prompt.example.14": "Hvernig set ég þetta verkefni í notkun?",
|
||||
"prompt.example.15": "Skoðaðu kóðann minn fyrir bestu starfsvenjur",
|
||||
"prompt.example.16": "Bættu villumeðferð við þessa aðgerð",
|
||||
@@ -356,7 +356,7 @@ export const dict = {
|
||||
"prompt.example.21": "Hjálpaðu mér að skrifa flutningshandrit",
|
||||
"prompt.example.22": "Innleiða skyndiminni fyrir þennan endapunkt",
|
||||
"prompt.example.23": "Bættu blaðsíðu við þennan lista",
|
||||
"prompt.example.24": "Búðu til CLI skipun fyrir...",
|
||||
"prompt.example.24": "Búðu til CLI skipun fyrir…",
|
||||
"prompt.example.25": "Hvernig virka umhverfisbreytur hér?",
|
||||
"prompt.popover.emptyResults": "Engar samsvarandi niðurstöður",
|
||||
"prompt.popover.emptyCommands": "Engar samsvarandi skipanir",
|
||||
@@ -408,7 +408,7 @@ export const dict = {
|
||||
"dialog.directory.parent": "Foreldri",
|
||||
"dialog.directory.readError": "Get ekki lesið þessa möppu",
|
||||
"app.server.unreachable": "Ekki tókst að ná í {{server}}",
|
||||
"app.server.retrying": "Reynir sjálfkrafa aftur...",
|
||||
"app.server.retrying": "Reynir sjálfkrafa aftur…",
|
||||
"app.server.otherServers": "Aðrir netþjónar",
|
||||
"dialog.server.title": "Netþjónar",
|
||||
"dialog.server.description": "Skiptu um hvaða OpenCode miðlara þetta app tengist.",
|
||||
@@ -418,7 +418,7 @@ export const dict = {
|
||||
"dialog.server.add.url": "Heimilisfang netþjóns",
|
||||
"dialog.server.add.placeholder": "http://localhost:4096",
|
||||
"dialog.server.add.error": "Gat ekki tengst þjóninum",
|
||||
"dialog.server.add.checking": "Athugar...",
|
||||
"dialog.server.add.checking": "Athugar…",
|
||||
"dialog.server.add.button": "Bæta við netþjóni",
|
||||
"dialog.server.add.name": "Nafn netþjóns (valfrjálst)",
|
||||
"dialog.server.add.namePlaceholder": "Localhost",
|
||||
@@ -443,26 +443,26 @@ export const dict = {
|
||||
"wsl.server.label": "WSL",
|
||||
"wsl.server.menu.label": "WSL netþjónn",
|
||||
"wsl.server.retryStart": "Reyndu að byrja aftur",
|
||||
"wsl.server.updating": "Uppfærir...",
|
||||
"wsl.server.updating": "Uppfærir…",
|
||||
"wsl.onboarding.step.distro": "Veldu distro",
|
||||
"wsl.onboarding.step.opencode": "OpenCode",
|
||||
"wsl.onboarding.checkingRuntime": "Athugar WSL...",
|
||||
"wsl.onboarding.checkingRuntime": "Athugar WSL…",
|
||||
"wsl.onboarding.restartRequired": "Windows þarf endurræsingu til að klára uppsetningu WSL.",
|
||||
"wsl.onboarding.ready": "WSL er tilbúinn.",
|
||||
"wsl.onboarding.required": "WSL þarf til að halda áfram.",
|
||||
"wsl.onboarding.checkingDistros": "Athugar dreifingar...",
|
||||
"wsl.onboarding.installingDistro": "Setur upp {{distro}}...",
|
||||
"wsl.onboarding.checkingDistro": "Athugar {{distro}}...",
|
||||
"wsl.onboarding.listingDistros": "Birtir dreifingar...",
|
||||
"wsl.onboarding.checkingDistros": "Athugar dreifingar…",
|
||||
"wsl.onboarding.installingDistro": "Setur upp {{distro}}…",
|
||||
"wsl.onboarding.checkingDistro": "Athugar {{distro}}…",
|
||||
"wsl.onboarding.listingDistros": "Birtir dreifingar…",
|
||||
"wsl.onboarding.distroReady": "{{distro}} er tilbúinn.",
|
||||
"wsl.onboarding.distroNotInstalled": "{{distro}} er ekki uppsett ennþá.",
|
||||
"wsl.onboarding.openDistroOnce": "Opnaðu {{distro}} einu sinni til að ljúka uppsetningu.",
|
||||
"wsl.onboarding.finishingDistro": "Að klára uppsetningu fyrir {{distro}}.",
|
||||
"wsl.onboarding.pickDistro": "Veldu dreifingu eða settu upp fyrir neðan.",
|
||||
"wsl.onboarding.checkingOpencode": "Athugar OpenCode...",
|
||||
"wsl.onboarding.checkingOpencodeIn": "Athugar OpenCode í {{distro}}...",
|
||||
"wsl.onboarding.updatingOpencode": "Uppfærir OpenCode...",
|
||||
"wsl.onboarding.updatingOpencodeIn": "Uppfærir OpenCode í {{distro}}...",
|
||||
"wsl.onboarding.checkingOpencode": "Athugar OpenCode…",
|
||||
"wsl.onboarding.checkingOpencodeIn": "Athugar OpenCode í {{distro}}…",
|
||||
"wsl.onboarding.updatingOpencode": "Uppfærir OpenCode…",
|
||||
"wsl.onboarding.updatingOpencodeIn": "Uppfærir OpenCode í {{distro}}…",
|
||||
"wsl.onboarding.updateOpencodeIn": "Uppfærðu OpenCode í {{distro}}.",
|
||||
"wsl.onboarding.updateOpencode": "Uppfærðu OpenCode",
|
||||
"wsl.onboarding.opencodeReadyIn": "OpenCode er tilbúið í {{distro}}.",
|
||||
@@ -471,11 +471,11 @@ export const dict = {
|
||||
"wsl.onboarding.installOpencode": "Settu upp OpenCode",
|
||||
"wsl.onboarding.chooseDistroFirst": "Veldu dreifingu fyrst.",
|
||||
"wsl.onboarding.loadFailed": "Mistókst að hlaða WSL stöðu.",
|
||||
"wsl.onboarding.loading": "Hleður...",
|
||||
"wsl.onboarding.loading": "Hleður…",
|
||||
"wsl.onboarding.installedDistros": "Uppsett dreifing",
|
||||
"wsl.onboarding.checkAgain": "Athugaðu aftur",
|
||||
"wsl.onboarding.distroStatus.ready": "Tilbúið",
|
||||
"wsl.onboarding.distroStatus.checking": "Athugar...",
|
||||
"wsl.onboarding.distroStatus.checking": "Athugar…",
|
||||
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode ekki uppsett",
|
||||
"wsl.onboarding.distroStatus.missingTools": "Vantar bash, krullu",
|
||||
"wsl.onboarding.distroStatus.unsupported": "Óstudd · Notaðu WSL 2",
|
||||
@@ -494,7 +494,7 @@ export const dict = {
|
||||
"wsl.onboarding.allDistrosAdded": "Öllum uppsettum dreifingum er þegar bætt við.",
|
||||
"wsl.onboarding.noDistros": "Engin dreifing hefur fundist ennþá.",
|
||||
"wsl.onboarding.install": "Settu upp",
|
||||
"wsl.onboarding.installing": "Setur upp...",
|
||||
"wsl.onboarding.installing": "Setur upp…",
|
||||
"wsl.onboarding.installDistro": "Settu upp distro",
|
||||
"wsl.onboarding.searchDistros": "Leitaðu að dreifingum",
|
||||
"wsl.onboarding.wsl2Required": "WSL 2 er krafist.",
|
||||
@@ -506,7 +506,7 @@ export const dict = {
|
||||
"wsl.onboarding.unknown": "óþekkt",
|
||||
"wsl.onboarding.desktopVersion": "skrifborð {{version}}",
|
||||
"wsl.onboarding.versionMismatch": "Uppsett útgáfa passar ekki við útgáfu skrifborðsforritsins.",
|
||||
"wsl.onboarding.adding": "Bætir við...",
|
||||
"wsl.onboarding.adding": "Bætir við…",
|
||||
"dialog.project.edit.title": "Breyta verkefni",
|
||||
"dialog.project.edit.name": "Nafn",
|
||||
"dialog.project.edit.icon": "Táknmynd",
|
||||
@@ -612,7 +612,7 @@ export const dict = {
|
||||
"error.page.action.report": "Tilkynna villu",
|
||||
"error.page.action.reported": "Villa tilkynnt",
|
||||
"error.page.action.exportLogs": "Flytja út atvikaskrár",
|
||||
"error.page.action.checking": "Athugar...",
|
||||
"error.page.action.checking": "Athugar…",
|
||||
"error.page.action.checkUpdates": "Leitaðu að uppfærslum",
|
||||
"error.page.action.updateTo": "Uppfærsla í {{version}}",
|
||||
"error.page.circular": "[Hringbréf]",
|
||||
@@ -689,12 +689,12 @@ export const dict = {
|
||||
"session.review.filesChanged": "Skráum breytt {{count}}",
|
||||
"session.review.change.one": "Breyta",
|
||||
"session.review.change.other": "Breytingar",
|
||||
"session.review.loadingChanges": "Hleður breytingum...",
|
||||
"session.review.loadingChanges": "Hleður breytingum…",
|
||||
"session.review.empty": "Engar breytingar á þessu þingi ennþá",
|
||||
"session.review.noVcs": "Ekkert Git útgáfustýringarkerfi fannst, breytingar ekki birtar",
|
||||
"session.review.noVcs.createGit.title": "Búðu til Git geymslu",
|
||||
"session.review.noVcs.createGit.description": "Fylgstu með, skoðaðu og afturkallaðu breytingar á þessu verkefni",
|
||||
"session.review.noVcs.createGit.actionLoading": "Býr til Git geymslu...",
|
||||
"session.review.noVcs.createGit.actionLoading": "Býr til Git geymslu…",
|
||||
"session.review.noVcs.createGit.action": "Búðu til Git geymslu",
|
||||
"session.review.noSnapshot":
|
||||
"Slökkt er á skyndimyndarakningu í stillingum, þannig að lotubreytingar eru ekki tiltækar",
|
||||
@@ -706,9 +706,9 @@ export const dict = {
|
||||
"session.files.empty": "Engar skrár",
|
||||
"session.files.binaryContent": "Tvöfaldur skrá (ekki hægt að birta efni)",
|
||||
"session.messages.renderEarlier": "Sendu fyrri skilaboð",
|
||||
"session.messages.loadingEarlier": "Hleður fyrri skilaboðum...",
|
||||
"session.messages.loadingEarlier": "Hleður fyrri skilaboðum…",
|
||||
"session.messages.loadEarlier": "Hlaða fyrri skilaboðum",
|
||||
"session.messages.loading": "Hleður skilaboð...",
|
||||
"session.messages.loading": "Hleður skilaboð…",
|
||||
"session.messages.jumpToLatest": "Farðu í nýjasta",
|
||||
"session.context.addToContext": "Bættu {{selection}} við samhengi",
|
||||
"session.todo.title": "Verkefnalisti",
|
||||
@@ -769,8 +769,8 @@ export const dict = {
|
||||
"common.copied": "Afritað",
|
||||
"lsp.tooltip.none": "Engir LSP netþjónar",
|
||||
"lsp.label.connected": "{{count}} LSP",
|
||||
"prompt.loading": "Hleður tilkynningu...",
|
||||
"terminal.loading": "Hleður útstöð...",
|
||||
"prompt.loading": "Hleður tilkynningu…",
|
||||
"terminal.loading": "Hleður útstöð…",
|
||||
"terminal.title": "Skel",
|
||||
"terminal.title.numbered": "Skjáhermir {{number}}",
|
||||
"terminal.close": "Lokaðu flugstöðinni",
|
||||
@@ -930,9 +930,9 @@ export const dict = {
|
||||
"settings.updates.row.check.title": "Leitaðu að uppfærslum",
|
||||
"settings.updates.row.check.description": "Athugaðu handvirkt fyrir uppfærslur og settu upp ef það er tiltækt",
|
||||
"settings.updates.action.checkNow": "Athugaðu núna",
|
||||
"settings.updates.action.checking": "Athugar...",
|
||||
"settings.updates.action.downloading": "Sækir...",
|
||||
"settings.updates.action.installing": "Setur upp...",
|
||||
"settings.updates.action.checking": "Athugar…",
|
||||
"settings.updates.action.downloading": "Sækir…",
|
||||
"settings.updates.action.installing": "Setur upp…",
|
||||
"settings.updates.toast.latest.title": "Þú ert uppfærður",
|
||||
"settings.updates.toast.latest.description": "Þú ert að keyra nýjustu útgáfuna af OpenCode.",
|
||||
"sound.option.none": "Engin",
|
||||
@@ -1079,7 +1079,7 @@ export const dict = {
|
||||
"workspace.reset.success.title": "Vinnusvæði endurstillt",
|
||||
"workspace.reset.success.description": "Vinnusvæði passar nú við sjálfgefna útibúið.",
|
||||
"workspace.error.stillPreparing": "Vinnusvæði er enn í undirbúningi",
|
||||
"workspace.status.checking": "Leitar að ósameinuðum breytingum...",
|
||||
"workspace.status.checking": "Leitar að ósameinuðum breytingum…",
|
||||
"workspace.status.error": "Ekki hægt að staðfesta git stöðu.",
|
||||
"workspace.status.clean": "Engar ósamræmdar breytingar fundust.",
|
||||
"workspace.status.dirty": "Ósamræmdar breytingar fundust á þessu vinnusvæði.",
|
||||
|
||||
@@ -121,8 +121,8 @@ export const dict = {
|
||||
"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.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.",
|
||||
@@ -216,7 +216,7 @@ export const dict = {
|
||||
"common.goBack": "Torna indietro",
|
||||
"common.goForward": "Vai avanti",
|
||||
"common.loading": "Caricamento",
|
||||
"common.loading.ellipsis": "...",
|
||||
"common.loading.ellipsis": "…",
|
||||
"common.cancel": "Annulla",
|
||||
"common.clear": "Cancella",
|
||||
"common.open": "Apri",
|
||||
@@ -225,14 +225,14 @@ export const dict = {
|
||||
"common.continue": "Continua",
|
||||
"common.submit": "Invia",
|
||||
"common.save": "Salva",
|
||||
"common.saving": "Salvataggio...",
|
||||
"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.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",
|
||||
@@ -250,7 +250,7 @@ export const dict = {
|
||||
"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.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",
|
||||
@@ -261,7 +261,7 @@ export const dict = {
|
||||
"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.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",
|
||||
@@ -313,7 +313,7 @@ export const dict = {
|
||||
"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.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.",
|
||||
@@ -323,7 +323,7 @@ export const dict = {
|
||||
"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.checking": "Controllo…",
|
||||
"dialog.server.add.button": "Aggiungi server",
|
||||
"dialog.server.add.name": "Nome del server (facoltativo)",
|
||||
"dialog.server.add.namePlaceholder": "Host locale",
|
||||
@@ -348,26 +348,26 @@ export const dict = {
|
||||
"wsl.server.label": "WSL",
|
||||
"wsl.server.menu.label": "Server WSL",
|
||||
"wsl.server.retryStart": "Riprova l'avvio",
|
||||
"wsl.server.updating": "Aggiornamento...",
|
||||
"wsl.server.updating": "Aggiornamento…",
|
||||
"wsl.onboarding.step.distro": "Scegli la distribuzione",
|
||||
"wsl.onboarding.step.opencode": "OpenCode",
|
||||
"wsl.onboarding.checkingRuntime": "Controllo WSL...",
|
||||
"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.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.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}}.",
|
||||
@@ -376,11 +376,11 @@ export const dict = {
|
||||
"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.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.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",
|
||||
@@ -399,7 +399,7 @@ export const dict = {
|
||||
"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.installing": "Installazione…",
|
||||
"wsl.onboarding.installDistro": "Installa la distribuzione",
|
||||
"wsl.onboarding.searchDistros": "Cerca distribuzioni",
|
||||
"wsl.onboarding.wsl2Required": "WSL 2 è obbligatorio.",
|
||||
@@ -411,7 +411,7 @@ export const dict = {
|
||||
"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...",
|
||||
"wsl.onboarding.adding": "Aggiunta…",
|
||||
"dialog.project.edit.title": "Modifica progetto",
|
||||
"dialog.project.edit.name": "Nome",
|
||||
"dialog.project.edit.icon": "Icona",
|
||||
@@ -523,7 +523,7 @@ export const dict = {
|
||||
"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.checking": "Controllo…",
|
||||
"error.page.action.checkUpdates": "Controlla gli aggiornamenti",
|
||||
"error.page.action.updateTo": "Aggiorna a {{version}}",
|
||||
"error.page.circular": "[Circular]",
|
||||
@@ -601,12 +601,12 @@ export const dict = {
|
||||
"session.review.filesChanged": "{{count}} file modificati",
|
||||
"session.review.change.one": "Modifica",
|
||||
"session.review.change.other": "Modifiche",
|
||||
"session.review.loadingChanges": "Caricamento 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.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",
|
||||
@@ -618,9 +618,9 @@ export const dict = {
|
||||
"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.loadingEarlier": "Caricamento dei messaggi precedenti…",
|
||||
"session.messages.loadEarlier": "Carica i messaggi precedenti",
|
||||
"session.messages.loading": "Caricamento messaggi...",
|
||||
"session.messages.loading": "Caricamento messaggi…",
|
||||
"session.messages.jumpToLatest": "Vai all'ultimo",
|
||||
"session.context.addToContext": "Aggiungi {{selection}} al contesto",
|
||||
"session.todo.title": "Attività",
|
||||
@@ -643,7 +643,7 @@ export const dict = {
|
||||
"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.workspace.existing": "Area di lavoro…",
|
||||
"session.new.git.none": "Senza Git",
|
||||
"session.new.lastModified": "Ultima modifica",
|
||||
"session.header.search.placeholder": "Cerca {{project}}",
|
||||
@@ -682,8 +682,8 @@ export const dict = {
|
||||
"common.copied": "Copiato",
|
||||
"lsp.tooltip.none": "Nessun server LSP",
|
||||
"lsp.label.connected": "{{count}} LSP",
|
||||
"prompt.loading": "Caricamento del prompt...",
|
||||
"terminal.loading": "Caricamento terminale...",
|
||||
"prompt.loading": "Caricamento del prompt…",
|
||||
"terminal.loading": "Caricamento terminale…",
|
||||
"terminal.title": "Terminale",
|
||||
"terminal.title.numbered": "Terminale {{number}}",
|
||||
"terminal.close": "Chiudi il terminale",
|
||||
@@ -851,9 +851,9 @@ export const dict = {
|
||||
"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.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",
|
||||
@@ -1003,7 +1003,7 @@ export const dict = {
|
||||
"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.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.",
|
||||
@@ -1024,13 +1024,13 @@ export const dict = {
|
||||
"desktop.menu.go": "Vai",
|
||||
"desktop.menu.window": "Finestra",
|
||||
"desktop.menu.help": "Aiuto",
|
||||
"desktop.menu.checkForUpdates": "Verifica aggiornamenti...",
|
||||
"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.exportLogs": "Esporta log…",
|
||||
"desktop.menu.newSession": "Nuova sessione",
|
||||
"desktop.menu.openProject": "Apri progetto...",
|
||||
"desktop.menu.openProject": "Apri progetto…",
|
||||
"desktop.menu.newWindow": "Nuova finestra",
|
||||
"desktop.menu.closeWindow": "Chiudi finestra",
|
||||
"desktop.menu.undo": "Annulla",
|
||||
|
||||
@@ -6,13 +6,13 @@ export const dict = {
|
||||
"desktop.menu.go": "移動",
|
||||
"desktop.menu.window": "ウインドウ",
|
||||
"desktop.menu.help": "ヘルプ",
|
||||
"desktop.menu.checkForUpdates": "アップデートを確認...",
|
||||
"desktop.menu.checkForUpdates": "アップデートを確認…",
|
||||
"desktop.menu.settings": "設定",
|
||||
"desktop.menu.reloadWebview": "Webビューを再読み込み",
|
||||
"desktop.menu.restart": "再起動",
|
||||
"desktop.menu.exportLogs": "ログをエクスポート...",
|
||||
"desktop.menu.exportLogs": "ログをエクスポート…",
|
||||
"desktop.menu.newSession": "新しいセッション",
|
||||
"desktop.menu.openProject": "プロジェクトを開く...",
|
||||
"desktop.menu.openProject": "プロジェクトを開く…",
|
||||
"desktop.menu.newWindow": "新しいウインドウ",
|
||||
"desktop.menu.closeWindow": "ウインドウを閉じる",
|
||||
"desktop.menu.undo": "取り消す",
|
||||
@@ -219,8 +219,8 @@ export const dict = {
|
||||
"provider.connect.method.apiKey": "APIキー",
|
||||
"provider.connect.method.browser": "ブラウザ",
|
||||
"provider.connect.method.headless": "ヘッドレス モード",
|
||||
"provider.connect.status.inProgress": "認証中...",
|
||||
"provider.connect.status.waiting": "認証を待機中...",
|
||||
"provider.connect.status.inProgress": "認証中…",
|
||||
"provider.connect.status.waiting": "認証を待機中…",
|
||||
"provider.connect.status.failed": "認証に失敗しました: {{error}}",
|
||||
"provider.connect.apiKey.description":
|
||||
"{{provider}}のAPIキーを入力してアカウントを接続し、OpenCodeで{{provider}}モデルを使用します。",
|
||||
@@ -312,7 +312,7 @@ export const dict = {
|
||||
"common.goBack": "戻る",
|
||||
"common.goForward": "進む",
|
||||
"common.loading": "読み込み中",
|
||||
"common.loading.ellipsis": "...",
|
||||
"common.loading.ellipsis": "…",
|
||||
"common.cancel": "キャンセル",
|
||||
"common.clear": "クリア",
|
||||
"common.connect": "接続",
|
||||
@@ -320,12 +320,12 @@ export const dict = {
|
||||
"common.continue": "続行",
|
||||
"common.submit": "送信",
|
||||
"common.save": "保存",
|
||||
"common.saving": "保存中...",
|
||||
"common.saving": "保存中…",
|
||||
"common.default": "デフォルト",
|
||||
"common.attachment": "添付ファイル",
|
||||
"prompt.placeholder.shell": "シェルコマンドを入力... {{example}}",
|
||||
"prompt.placeholder.normal": '何でも聞いてください... "{{example}}"',
|
||||
"prompt.placeholder.simple": "何でも聞いてください...",
|
||||
"prompt.placeholder.shell": "シェルコマンドを入力… {{example}}",
|
||||
"prompt.placeholder.normal": '何でも聞いてください… "{{example}}"',
|
||||
"prompt.placeholder.simple": "何でも聞いてください…",
|
||||
"prompt.placeholder.summarizeComments": "コメントを要約…",
|
||||
"prompt.placeholder.summarizeComment": "コメントを要約…",
|
||||
"prompt.mode.shell": "シェル",
|
||||
@@ -415,7 +415,7 @@ export const dict = {
|
||||
"dialog.server.add.url": "サーバーURL",
|
||||
"dialog.server.add.placeholder": "http://localhost:4096",
|
||||
"dialog.server.add.error": "サーバーに接続できませんでした",
|
||||
"dialog.server.add.checking": "確認中...",
|
||||
"dialog.server.add.checking": "確認中…",
|
||||
"dialog.server.add.button": "サーバーを追加",
|
||||
"dialog.server.add.name": "サーバー名 (オプション)",
|
||||
"dialog.server.add.namePlaceholder": "Localhost",
|
||||
@@ -439,26 +439,26 @@ export const dict = {
|
||||
"wsl.server.label": "WSL",
|
||||
"wsl.server.menu.label": "WSLサーバー",
|
||||
"wsl.server.retryStart": "起動を再試行",
|
||||
"wsl.server.updating": "更新中...",
|
||||
"wsl.server.updating": "更新中…",
|
||||
"wsl.onboarding.step.distro": "ディストリビューションを選択",
|
||||
"wsl.onboarding.step.opencode": "OpenCode",
|
||||
"wsl.onboarding.checkingRuntime": "WSLを確認中...",
|
||||
"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.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.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": "{{distro}}内のOpenCodeの準備ができました。",
|
||||
@@ -467,11 +467,11 @@ export const dict = {
|
||||
"wsl.onboarding.installOpencode": "OpenCodeをインストール",
|
||||
"wsl.onboarding.chooseDistroFirst": "先にディストリビューションを選択してください。",
|
||||
"wsl.onboarding.loadFailed": "WSLの状態を読み込めませんでした。",
|
||||
"wsl.onboarding.loading": "読み込み中...",
|
||||
"wsl.onboarding.loading": "読み込み中…",
|
||||
"wsl.onboarding.installedDistros": "インストール済みのディストリビューション",
|
||||
"wsl.onboarding.checkAgain": "再確認",
|
||||
"wsl.onboarding.distroStatus.ready": "準備完了",
|
||||
"wsl.onboarding.distroStatus.checking": "確認中...",
|
||||
"wsl.onboarding.distroStatus.checking": "確認中…",
|
||||
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCodeがインストールされていません",
|
||||
"wsl.onboarding.distroStatus.missingTools": "bash、curlがありません",
|
||||
"wsl.onboarding.distroStatus.unsupported": "非対応 · WSL 2を使用してください",
|
||||
@@ -490,7 +490,7 @@ export const dict = {
|
||||
"wsl.onboarding.allDistrosAdded": "インストール済みのディストリビューションはすべて追加済みです。",
|
||||
"wsl.onboarding.noDistros": "ディストリビューションはまだ検出されていません。",
|
||||
"wsl.onboarding.install": "インストール",
|
||||
"wsl.onboarding.installing": "インストール中...",
|
||||
"wsl.onboarding.installing": "インストール中…",
|
||||
"wsl.onboarding.installDistro": "ディストリビューションをインストール",
|
||||
"wsl.onboarding.searchDistros": "ディストリビューションを検索",
|
||||
"wsl.onboarding.wsl2Required": "WSL 2が必要です。",
|
||||
@@ -502,7 +502,7 @@ export const dict = {
|
||||
"wsl.onboarding.unknown": "不明",
|
||||
"wsl.onboarding.desktopVersion": "デスクトップ {{version}}",
|
||||
"wsl.onboarding.versionMismatch": "インストールされているバージョンがデスクトップアプリのバージョンと一致しません。",
|
||||
"wsl.onboarding.adding": "追加中...",
|
||||
"wsl.onboarding.adding": "追加中…",
|
||||
|
||||
"dialog.project.edit.title": "プロジェクトを編集",
|
||||
"dialog.project.edit.name": "名前",
|
||||
@@ -608,7 +608,7 @@ export const dict = {
|
||||
"error.page.action.report": "エラーを報告",
|
||||
"error.page.action.reported": "エラーを報告しました",
|
||||
"error.page.action.exportLogs": "ログをエクスポート",
|
||||
"error.page.action.checking": "確認中...",
|
||||
"error.page.action.checking": "確認中…",
|
||||
"error.page.action.checkUpdates": "アップデートを確認",
|
||||
"error.page.action.updateTo": "{{version}}にアップデート",
|
||||
"error.page.report.prefix": "このエラーをOpenCodeチームに報告してください: ",
|
||||
@@ -677,7 +677,7 @@ export const dict = {
|
||||
"session.review.filesChanged": "変更されたファイル: {{count}}件",
|
||||
"session.review.change.one": "変更",
|
||||
"session.review.change.other": "変更",
|
||||
"session.review.loadingChanges": "変更を読み込み中...",
|
||||
"session.review.loadingChanges": "変更を読み込み中…",
|
||||
"session.review.empty": "このセッションでの変更はまだありません",
|
||||
"session.review.noVcs": "Gitバージョン管理システムが検出されないため、変更は表示されません",
|
||||
"session.review.noSnapshot": "設定でスナップショット追跡が無効になっているため、セッションの変更は利用できません",
|
||||
@@ -689,9 +689,9 @@ export const dict = {
|
||||
"session.files.empty": "ファイルなし",
|
||||
"session.files.binaryContent": "バイナリファイル(内容を表示できません)",
|
||||
"session.messages.renderEarlier": "以前のメッセージを表示",
|
||||
"session.messages.loadingEarlier": "以前のメッセージを読み込み中...",
|
||||
"session.messages.loadingEarlier": "以前のメッセージを読み込み中…",
|
||||
"session.messages.loadEarlier": "以前のメッセージを読み込む",
|
||||
"session.messages.loading": "メッセージを読み込み中...",
|
||||
"session.messages.loading": "メッセージを読み込み中…",
|
||||
"session.messages.jumpToLatest": "最新へジャンプ",
|
||||
"session.context.addToContext": "{{selection}}をコンテキストに追加",
|
||||
"session.todo.title": "ToDo",
|
||||
@@ -731,8 +731,8 @@ export const dict = {
|
||||
"common.copied": "コピーしました",
|
||||
"lsp.tooltip.none": "LSPサーバーなし",
|
||||
"lsp.label.connected": "{{count}} LSP",
|
||||
"prompt.loading": "プロンプトを読み込み中...",
|
||||
"terminal.loading": "ターミナルを読み込み中...",
|
||||
"prompt.loading": "プロンプトを読み込み中…",
|
||||
"terminal.loading": "ターミナルを読み込み中…",
|
||||
"terminal.title": "ターミナル",
|
||||
"terminal.title.numbered": "ターミナル {{number}}",
|
||||
"terminal.close": "ターミナルを閉じる",
|
||||
@@ -839,9 +839,9 @@ export const dict = {
|
||||
"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.action.checking": "確認中…",
|
||||
"settings.updates.action.downloading": "ダウンロード中…",
|
||||
"settings.updates.action.installing": "インストール中…",
|
||||
"settings.updates.toast.latest.title": "最新です",
|
||||
"settings.updates.toast.latest.description": "OpenCode は最新バージョンです。",
|
||||
"sound.option.none": "なし",
|
||||
@@ -986,7 +986,7 @@ export const dict = {
|
||||
"workspace.reset.success.title": "ワークスペースをリセットしました",
|
||||
"workspace.reset.success.description": "ワークスペースはデフォルトブランチと一致しています。",
|
||||
"workspace.error.stillPreparing": "ワークスペースはまだ準備中です",
|
||||
"workspace.status.checking": "未マージの変更を確認中...",
|
||||
"workspace.status.checking": "未マージの変更を確認中…",
|
||||
"workspace.status.error": "gitステータスを確認できません。",
|
||||
"workspace.status.clean": "未マージの変更は検出されませんでした。",
|
||||
"workspace.status.dirty": "このワークスペースで未マージの変更が検出されました。",
|
||||
@@ -1016,12 +1016,12 @@ export const dict = {
|
||||
"settings.providers.custom.description": "ベース URL を指定して OpenAI 互換のプロバイダーを追加します。",
|
||||
|
||||
"app.server.unreachable": "{{server}} に到達できませんでした",
|
||||
"app.server.retrying": "自動的に再試行中...",
|
||||
"app.server.retrying": "自動的に再試行中…",
|
||||
"app.server.otherServers": "その他のサーバー",
|
||||
"dialog.server.add.passwordPlaceholder": "パスワード",
|
||||
"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}} 個の Todo が完了",
|
||||
"session.question.progress": "{{total}} 問中 {{current}} 問",
|
||||
|
||||
@@ -6,13 +6,13 @@ export const dict = {
|
||||
"desktop.menu.go": "გადადით",
|
||||
"desktop.menu.window": "ფანჯარა",
|
||||
"desktop.menu.help": "დახმარება",
|
||||
"desktop.menu.checkForUpdates": "შეამოწმეთ განახლებები...",
|
||||
"desktop.menu.checkForUpdates": "შეამოწმეთ განახლებები…",
|
||||
"desktop.menu.settings": "პარამეტრები",
|
||||
"desktop.menu.reloadWebview": "გადატვირთვა Webview",
|
||||
"desktop.menu.restart": "გადატვირთვა",
|
||||
"desktop.menu.exportLogs": "ჟურნალების ექსპორტი...",
|
||||
"desktop.menu.exportLogs": "ჟურნალების ექსპორტი…",
|
||||
"desktop.menu.newSession": "ახალი სესია",
|
||||
"desktop.menu.openProject": "გახსნა პროექტი...",
|
||||
"desktop.menu.openProject": "გახსნა პროექტი…",
|
||||
"desktop.menu.newWindow": "ახალი ფანჯარა",
|
||||
"desktop.menu.closeWindow": "ფანჯრის დახურვა",
|
||||
"desktop.menu.undo": "გაუქმება",
|
||||
@@ -212,8 +212,8 @@ export const dict = {
|
||||
"provider.connect.method.apiKey": "API გასაღები",
|
||||
"provider.connect.method.browser": "ბრაუზერი",
|
||||
"provider.connect.method.headless": "გრაფიკული ინტერფეისის გარეშე",
|
||||
"provider.connect.status.inProgress": "ავტორიზაცია მიმდინარეობს...",
|
||||
"provider.connect.status.waiting": "ველოდები ავტორიზაციას...",
|
||||
"provider.connect.status.inProgress": "ავტორიზაცია მიმდინარეობს…",
|
||||
"provider.connect.status.waiting": "ველოდები ავტორიზაციას…",
|
||||
"provider.connect.status.failed": "ავტორიზაცია ვერ მოხერხდა: {{error}}",
|
||||
"provider.connect.apiKey.description":
|
||||
"შეიყვანეთ თქვენი {{provider}} API გასაღები თქვენი ანგარიშის დასაკავშირებლად და გამოიყენეთ {{provider}} მოდელები OpenCode-ში.",
|
||||
@@ -307,7 +307,7 @@ export const dict = {
|
||||
"common.goBack": "ნავიგაცია უკან",
|
||||
"common.goForward": "ნავიგაცია წინ",
|
||||
"common.loading": "იტვირთება",
|
||||
"common.loading.ellipsis": "...",
|
||||
"common.loading.ellipsis": "…",
|
||||
"common.cancel": "გაუქმება",
|
||||
"common.clear": "გასუფთავება",
|
||||
"common.open": "გახსნა",
|
||||
@@ -316,12 +316,12 @@ export const dict = {
|
||||
"common.continue": "გაგრძელება",
|
||||
"common.submit": "გაგზავნა",
|
||||
"common.save": "შენახვა",
|
||||
"common.saving": "შენახვა...",
|
||||
"common.saving": "შენახვა…",
|
||||
"common.default": "ნაგულისხმევი",
|
||||
"common.attachment": "დანართი",
|
||||
"prompt.placeholder.shell": "შეიყვანეთ shell ბრძანება... {{example}}",
|
||||
"prompt.placeholder.normal": 'იკითხეთ რაიმე... "{{example}}"',
|
||||
"prompt.placeholder.simple": "იკითხე რაიმე...",
|
||||
"prompt.placeholder.shell": "შეიყვანეთ shell ბრძანება… {{example}}",
|
||||
"prompt.placeholder.normal": 'იკითხეთ რაიმე… "{{example}}"',
|
||||
"prompt.placeholder.simple": "იკითხე რაიმე…",
|
||||
"prompt.placeholder.summarizeComments": "კომენტარების შეჯამება…",
|
||||
"prompt.placeholder.summarizeComment": "კომენტარის შეჯამება…",
|
||||
"prompt.mode.shell": "Shell",
|
||||
@@ -341,7 +341,7 @@ export const dict = {
|
||||
"prompt.example.10": "შექმენით API დოკუმენტაცია",
|
||||
"prompt.example.11": "მონაცემთა ბაზის მოთხოვნების ოპტიმიზაცია",
|
||||
"prompt.example.12": "შეყვანის ვალიდაციის დამატება",
|
||||
"prompt.example.13": "შექმენით ახალი კომპონენტი...",
|
||||
"prompt.example.13": "შექმენით ახალი კომპონენტი…",
|
||||
"prompt.example.14": "როგორ განვათავსო ეს პროექტი?",
|
||||
"prompt.example.15": "მიმოიხილე ჩემი კოდი საუკეთესო პრაქტიკისთვის",
|
||||
"prompt.example.16": "შეცდომის დამუშავების დამატება ამ ფუნქციას",
|
||||
@@ -352,7 +352,7 @@ export const dict = {
|
||||
"prompt.example.21": "დამეხმარეთ მიგრაციის სკრიპტის დაწერაში",
|
||||
"prompt.example.22": "ქეშირების განხორციელება ამ ბოლო წერტილისთვის",
|
||||
"prompt.example.23": "დაამატე გვერდი ამ სიაში",
|
||||
"prompt.example.24": "შექმენით CLI ბრძანება...",
|
||||
"prompt.example.24": "შექმენით CLI ბრძანება…",
|
||||
"prompt.example.25": "როგორ მუშაობს აქ გარემოს ცვლადები?",
|
||||
"prompt.popover.emptyResults": "შესაბამისი შედეგები არ არის",
|
||||
"prompt.popover.emptyCommands": "შესაბამისი ბრძანებები არ არის",
|
||||
@@ -404,7 +404,7 @@ export const dict = {
|
||||
"dialog.directory.parent": "მშობელი",
|
||||
"dialog.directory.readError": "ამ საქაღალდის წაკითხვა შეუძლებელია",
|
||||
"app.server.unreachable": "ვერ მივაღწიე {{server}}",
|
||||
"app.server.retrying": "ვცდი ავტომატურად...",
|
||||
"app.server.retrying": "ვცდი ავტომატურად…",
|
||||
"app.server.otherServers": "სხვა სერვერები",
|
||||
"dialog.server.title": "სერვერები",
|
||||
"dialog.server.description": "გადართეთ რომელ OpenCode სერვერს უკავშირდება ეს აპი.",
|
||||
@@ -414,7 +414,7 @@ export const dict = {
|
||||
"dialog.server.add.url": "სერვერის მისამართი",
|
||||
"dialog.server.add.placeholder": "http://localhost:4096",
|
||||
"dialog.server.add.error": "სერვერთან დაკავშირება ვერ მოხერხდა",
|
||||
"dialog.server.add.checking": "შემოწმება...",
|
||||
"dialog.server.add.checking": "შემოწმება…",
|
||||
"dialog.server.add.button": "სერვერის დამატება",
|
||||
"dialog.server.add.name": "სერვერის სახელი (არასავალდებულო)",
|
||||
"dialog.server.add.namePlaceholder": "Localhost",
|
||||
@@ -439,26 +439,26 @@ export const dict = {
|
||||
"wsl.server.label": "WSL",
|
||||
"wsl.server.menu.label": "WSL სერვერი",
|
||||
"wsl.server.retryStart": "სცადეთ ხელახლა დაწყება",
|
||||
"wsl.server.updating": "განახლება...",
|
||||
"wsl.server.updating": "განახლება…",
|
||||
"wsl.onboarding.step.distro": "აირჩიე დისტრო",
|
||||
"wsl.onboarding.step.opencode": "OpenCode",
|
||||
"wsl.onboarding.checkingRuntime": "შემოწმებულია WSL...",
|
||||
"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": "Listing Distros...",
|
||||
"wsl.onboarding.checkingDistros": "გავრცელების შემოწმება…",
|
||||
"wsl.onboarding.installingDistro": "ინსტალაცია {{distro}}…",
|
||||
"wsl.onboarding.checkingDistro": "შემოწმებულია {{distro}}…",
|
||||
"wsl.onboarding.listingDistros": "Listing Distros…",
|
||||
"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.checkingOpencode": "შემოწმებულია OpenCode…",
|
||||
"wsl.onboarding.checkingOpencodeIn": "შემოწმებულია OpenCode-ში {{distro}}…",
|
||||
"wsl.onboarding.updatingOpencode": "განახლება OpenCode…",
|
||||
"wsl.onboarding.updatingOpencodeIn": "OpenCode განახლება ხდება {{distro}}…",
|
||||
"wsl.onboarding.updateOpencodeIn": "განახლება OpenCode {{distro}}-ში.",
|
||||
"wsl.onboarding.updateOpencode": "განახლება OpenCode",
|
||||
"wsl.onboarding.opencodeReadyIn": "OpenCode მზად არის {{distro}}-ში.",
|
||||
@@ -467,11 +467,11 @@ export const dict = {
|
||||
"wsl.onboarding.installOpencode": "დააინსტალირეთ OpenCode",
|
||||
"wsl.onboarding.chooseDistroFirst": "აირჩიეთ ჯერ დისტრო.",
|
||||
"wsl.onboarding.loadFailed": "ვერ ჩაიტვირთა WSL მდგომარეობა.",
|
||||
"wsl.onboarding.loading": "იტვირთება...",
|
||||
"wsl.onboarding.loading": "იტვირთება…",
|
||||
"wsl.onboarding.installedDistros": "დაინსტალირებული დისტროები",
|
||||
"wsl.onboarding.checkAgain": "გადაამოწმეთ",
|
||||
"wsl.onboarding.distroStatus.ready": "მზად",
|
||||
"wsl.onboarding.distroStatus.checking": "შემოწმება...",
|
||||
"wsl.onboarding.distroStatus.checking": "შემოწმება…",
|
||||
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode არ არის დაინსტალირებული",
|
||||
"wsl.onboarding.distroStatus.missingTools": "აკლია bash და curl",
|
||||
"wsl.onboarding.distroStatus.unsupported": "მხარდაუჭერელია · გამოიყენეთ WSL 2",
|
||||
@@ -490,7 +490,7 @@ export const dict = {
|
||||
"wsl.onboarding.allDistrosAdded": "ყველა დაინსტალირებული დისტრო უკვე დამატებულია.",
|
||||
"wsl.onboarding.noDistros": "გავრცელება ჯერ არ არის გამოვლენილი.",
|
||||
"wsl.onboarding.install": "ინსტალაცია",
|
||||
"wsl.onboarding.installing": "ინსტალაცია...",
|
||||
"wsl.onboarding.installing": "ინსტალაცია…",
|
||||
"wsl.onboarding.installDistro": "Install Distro",
|
||||
"wsl.onboarding.searchDistros": "ძიების დისტრიბუციები",
|
||||
"wsl.onboarding.wsl2Required": "WSL 2 საჭიროა.",
|
||||
@@ -502,7 +502,7 @@ export const dict = {
|
||||
"wsl.onboarding.unknown": "უცნობი",
|
||||
"wsl.onboarding.desktopVersion": "დესკტოპის {{version}}",
|
||||
"wsl.onboarding.versionMismatch": "დაინსტალირებული ვერსია არ ემთხვევა დესკტოპის აპის ვერსიას.",
|
||||
"wsl.onboarding.adding": "დამატება...",
|
||||
"wsl.onboarding.adding": "დამატება…",
|
||||
"dialog.project.edit.title": "პროექტის რედაქტირება",
|
||||
"dialog.project.edit.name": "სახელი",
|
||||
"dialog.project.edit.icon": "ხატულა",
|
||||
@@ -607,7 +607,7 @@ export const dict = {
|
||||
"error.page.action.report": "შეცდომის შესახებ შეტყობინება",
|
||||
"error.page.action.reported": "მოხსენებული შეცდომა",
|
||||
"error.page.action.exportLogs": "ჟურნალების ექსპორტი",
|
||||
"error.page.action.checking": "შემოწმება...",
|
||||
"error.page.action.checking": "შემოწმება…",
|
||||
"error.page.action.checkUpdates": "შეამოწმეთ განახლებები",
|
||||
"error.page.action.updateTo": "განახლება {{version}}",
|
||||
"error.page.circular": "[Circular]",
|
||||
@@ -686,12 +686,12 @@ export const dict = {
|
||||
"session.review.filesChanged": "ფაილები შეიცვალა {{count}}",
|
||||
"session.review.change.one": "შეცვლა",
|
||||
"session.review.change.other": "ცვლილებები",
|
||||
"session.review.loadingChanges": "ცვლილებების ჩატვირთვა...",
|
||||
"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.actionLoading": "Git საცავის შექმნა…",
|
||||
"session.review.noVcs.createGit.action": "შექმენით Git საცავი",
|
||||
"session.review.noSnapshot": "Snapshot tracking გამორთულია კონფიგურაციაში, ამიტომ სესიის ცვლილებები მიუწვდომელია",
|
||||
"session.review.noChanges": "ცვლილებები არ არის",
|
||||
@@ -702,9 +702,9 @@ export const dict = {
|
||||
"session.files.empty": "ფაილები არ არის",
|
||||
"session.files.binaryContent": "ორობითი ფაილი (კონტენტის ჩვენება შეუძლებელია)",
|
||||
"session.messages.renderEarlier": "ადრე შეტყობინებების რენდერი",
|
||||
"session.messages.loadingEarlier": "ვიტვირთება ადრინდელი შეტყობინებები...",
|
||||
"session.messages.loadingEarlier": "ვიტვირთება ადრინდელი შეტყობინებები…",
|
||||
"session.messages.loadEarlier": "ადრე შეტყობინებების ჩატვირთვა",
|
||||
"session.messages.loading": "იტვირთება შეტყობინებები...",
|
||||
"session.messages.loading": "იტვირთება შეტყობინებები…",
|
||||
"session.messages.jumpToLatest": "გადადით უახლესზე",
|
||||
"session.context.addToContext": "დაამატე {{selection}} კონტექსტში",
|
||||
"session.todo.title": "დავალებები",
|
||||
@@ -765,8 +765,8 @@ export const dict = {
|
||||
"common.copied": "კოპირებულია",
|
||||
"lsp.tooltip.none": "LSP სერვერები არ არის",
|
||||
"lsp.label.connected": "{{count}} LSP",
|
||||
"prompt.loading": "იტვირთება მოთხოვნა...",
|
||||
"terminal.loading": "იტვირთება ტერმინალი...",
|
||||
"prompt.loading": "იტვირთება მოთხოვნა…",
|
||||
"terminal.loading": "იტვირთება ტერმინალი…",
|
||||
"terminal.title": "ტერმინალი",
|
||||
"terminal.title.numbered": "ტერმინალი {{number}}",
|
||||
"terminal.close": "ტერმინალის დახურვა",
|
||||
@@ -928,9 +928,9 @@ export const dict = {
|
||||
"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.action.checking": "შემოწმება…",
|
||||
"settings.updates.action.downloading": "ჩამოტვირთვა…",
|
||||
"settings.updates.action.installing": "ინსტალაცია…",
|
||||
"settings.updates.toast.latest.title": "თქვენ განახლებული ხართ",
|
||||
"settings.updates.toast.latest.description": "თქვენ იყენებთ OpenCode-ის უახლეს ვერსიას.",
|
||||
"sound.option.none": "არცერთი",
|
||||
@@ -1077,7 +1077,7 @@ export const dict = {
|
||||
"workspace.reset.success.title": "სამუშაო სივრცის გადატვირთვა",
|
||||
"workspace.reset.success.description": "სამუშაო სივრცე ახლა ემთხვევა ნაგულისხმევ ფილიალს.",
|
||||
"workspace.error.stillPreparing": "სამუშაო სივრცე ჯერ კიდევ მზადდება",
|
||||
"workspace.status.checking": "შეუერთებელი ცვლილებების შემოწმება...",
|
||||
"workspace.status.checking": "შეუერთებელი ცვლილებების შემოწმება…",
|
||||
"workspace.status.error": "git სტატუსის გადამოწმება შეუძლებელია.",
|
||||
"workspace.status.clean": "გაუერთებელი ცვლილებები არ არის აღმოჩენილი.",
|
||||
"workspace.status.dirty": "აღმოჩენილი ცვლილებები აღმოჩენილია ამ სამუშაო სივრცეში.",
|
||||
|
||||
@@ -6,13 +6,13 @@ export const dict = {
|
||||
"desktop.menu.go": "ទៅ",
|
||||
"desktop.menu.window": "បង្អួច",
|
||||
"desktop.menu.help": "ជំនួយ",
|
||||
"desktop.menu.checkForUpdates": "ពិនិត្យមើលបច្ចុប្បន្នភាព...",
|
||||
"desktop.menu.checkForUpdates": "ពិនិត្យមើលបច្ចុប្បន្នភាព…",
|
||||
"desktop.menu.settings": "ការកំណត់",
|
||||
"desktop.menu.reloadWebview": "ផ្ទុក Webview ឡើងវិញ",
|
||||
"desktop.menu.restart": "ចាប់ផ្ដើមឡើងវិញ",
|
||||
"desktop.menu.exportLogs": "នាំចេញកំណត់ហេតុ...",
|
||||
"desktop.menu.exportLogs": "នាំចេញកំណត់ហេតុ…",
|
||||
"desktop.menu.newSession": "សម័យថ្មី។",
|
||||
"desktop.menu.openProject": "បើកគម្រោង...",
|
||||
"desktop.menu.openProject": "បើកគម្រោង…",
|
||||
"desktop.menu.newWindow": "បង្អួចថ្មី។",
|
||||
"desktop.menu.closeWindow": "បិទបង្អួច",
|
||||
"desktop.menu.undo": "មិនធ្វើវិញ",
|
||||
@@ -212,8 +212,8 @@ export const dict = {
|
||||
"provider.connect.method.apiKey": "សោ API",
|
||||
"provider.connect.method.browser": "កម្មវិធីរុករក",
|
||||
"provider.connect.method.headless": "គ្មានក្បាល",
|
||||
"provider.connect.status.inProgress": "ការអនុញ្ញាតកំពុងដំណើរការ...",
|
||||
"provider.connect.status.waiting": "រង់ចាំការអនុញ្ញាត...",
|
||||
"provider.connect.status.inProgress": "ការអនុញ្ញាតកំពុងដំណើរការ…",
|
||||
"provider.connect.status.waiting": "រង់ចាំការអនុញ្ញាត…",
|
||||
"provider.connect.status.failed": "ការអនុញ្ញាតបានបរាជ័យ៖ {{error}}",
|
||||
"provider.connect.apiKey.description":
|
||||
"បញ្ចូល {{provider}} API key របស់អ្នក ដើម្បីភ្ជាប់គណនីរបស់អ្នក ហើយប្រើម៉ូដែល {{provider}} នៅក្នុង OpenCode។",
|
||||
@@ -306,7 +306,7 @@ export const dict = {
|
||||
"common.goBack": "រុករកត្រឡប់មកវិញ",
|
||||
"common.goForward": "រុករកទៅមុខ",
|
||||
"common.loading": "កំពុងផ្ទុក",
|
||||
"common.loading.ellipsis": "...",
|
||||
"common.loading.ellipsis": "…",
|
||||
"common.cancel": "បោះបង់",
|
||||
"common.clear": "ច្បាស់",
|
||||
"common.open": "បើក",
|
||||
@@ -315,14 +315,14 @@ export const dict = {
|
||||
"common.continue": "បន្ត",
|
||||
"common.submit": "ដាក់ស្នើ",
|
||||
"common.save": "រក្សាទុក",
|
||||
"common.saving": "កំពុងរក្សាទុក...",
|
||||
"common.saving": "កំពុងរក្សាទុក…",
|
||||
"common.default": "លំនាំដើម\nឯកសារភ្ជាប់",
|
||||
"common.attachment": "ឯកសារភ្ជាប់",
|
||||
"prompt.placeholder.shell": "បញ្ចូលពាក្យបញ្ជាសែល... {{example}}",
|
||||
"prompt.placeholder.normal": 'សួរអ្វីក៏បាន... "{{example}}"',
|
||||
"prompt.placeholder.simple": "សួរអ្វី...",
|
||||
"prompt.placeholder.summarizeComments": "សង្ខេបមតិ...",
|
||||
"prompt.placeholder.summarizeComment": "សង្ខេបមតិ...",
|
||||
"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 ដើម្បីចេញ",
|
||||
@@ -340,7 +340,7 @@ export const dict = {
|
||||
"prompt.example.10": "បង្កើតឯកសារ API",
|
||||
"prompt.example.11": "បង្កើនប្រសិទ្ធភាពសំណួរមូលដ្ឋានទិន្នន័យ",
|
||||
"prompt.example.12": "បន្ថែមសុពលភាពបញ្ចូល",
|
||||
"prompt.example.13": "បង្កើតសមាសធាតុថ្មីសម្រាប់...",
|
||||
"prompt.example.13": "បង្កើតសមាសធាតុថ្មីសម្រាប់…",
|
||||
"prompt.example.14": "តើខ្ញុំដាក់ពង្រាយគម្រោងនេះដោយរបៀបណា?",
|
||||
"prompt.example.15": "ពិនិត្យមើលកូដរបស់ខ្ញុំសម្រាប់ការអនុវត្តល្អបំផុត",
|
||||
"prompt.example.16": "បន្ថែមការដោះស្រាយកំហុសទៅមុខងារនេះ។",
|
||||
@@ -351,7 +351,7 @@ export const dict = {
|
||||
"prompt.example.21": "ជួយខ្ញុំសរសេរស្គ្រីបការធ្វើចំណាកស្រុក",
|
||||
"prompt.example.22": "អនុវត្តឃ្លាំងសម្ងាត់សម្រាប់ចំណុចបញ្ចប់នេះ។",
|
||||
"prompt.example.23": "បន្ថែមលេខទំព័រទៅក្នុងបញ្ជីនេះ។",
|
||||
"prompt.example.24": "បង្កើតពាក្យបញ្ជា CLI សម្រាប់...",
|
||||
"prompt.example.24": "បង្កើតពាក្យបញ្ជា CLI សម្រាប់…",
|
||||
"prompt.example.25": "តើអថេរបរិស្ថានដំណើរការនៅទីនេះដោយរបៀបណា?",
|
||||
"prompt.popover.emptyResults": "គ្មានលទ្ធផលដែលត្រូវគ្នា។",
|
||||
"prompt.popover.emptyCommands": "គ្មានពាក្យបញ្ជាដែលត្រូវគ្នាទេ។",
|
||||
@@ -403,7 +403,7 @@ export const dict = {
|
||||
"dialog.directory.parent": "មាតាបិតា",
|
||||
"dialog.directory.readError": "មិនអាចអានថតឯកសារនេះបានទេ។",
|
||||
"app.server.unreachable": "មិនអាចទៅដល់ {{server}} បានទេ។",
|
||||
"app.server.retrying": "កំពុងព្យាយាមម្តងទៀតដោយស្វ័យប្រវត្តិ...",
|
||||
"app.server.retrying": "កំពុងព្យាយាមម្តងទៀតដោយស្វ័យប្រវត្តិ…",
|
||||
"app.server.otherServers": "ម៉ាស៊ីនមេផ្សេងទៀត។",
|
||||
"dialog.server.title": "ម៉ាស៊ីនមេ",
|
||||
"dialog.server.description": "ប្តូរម៉ាស៊ីនមេ OpenCode ដែលកម្មវិធីនេះភ្ជាប់ទៅ។",
|
||||
@@ -413,7 +413,7 @@ export const dict = {
|
||||
"dialog.server.add.url": "អាសយដ្ឋានម៉ាស៊ីនមេ",
|
||||
"dialog.server.add.placeholder": "http://localhost:4096",
|
||||
"dialog.server.add.error": "មិនអាចភ្ជាប់ទៅម៉ាស៊ីនមេបានទេ។",
|
||||
"dialog.server.add.checking": "កំពុងពិនិត្យ...",
|
||||
"dialog.server.add.checking": "កំពុងពិនិត្យ…",
|
||||
"dialog.server.add.button": "បន្ថែមម៉ាស៊ីនមេ",
|
||||
"dialog.server.add.name": "ឈ្មោះម៉ាស៊ីនមេ (ជាជម្រើស)",
|
||||
"dialog.server.add.namePlaceholder": "Localhost",
|
||||
@@ -438,26 +438,26 @@ export const dict = {
|
||||
"wsl.server.label": "WSL",
|
||||
"wsl.server.menu.label": "ម៉ាស៊ីនមេ WSL",
|
||||
"wsl.server.retryStart": "ព្យាយាមចាប់ផ្តើមឡើងវិញ",
|
||||
"wsl.server.updating": "កំពុងអាប់ដេត...",
|
||||
"wsl.server.updating": "កំពុងអាប់ដេត…",
|
||||
"wsl.onboarding.step.distro": "ជ្រើសរើស distro",
|
||||
"wsl.onboarding.step.opencode": "OpenCode",
|
||||
"wsl.onboarding.checkingRuntime": "កំពុងពិនិត្យ WSL...",
|
||||
"wsl.onboarding.checkingRuntime": "កំពុងពិនិត្យ WSL…",
|
||||
"wsl.onboarding.restartRequired": "វីនដូត្រូវការការចាប់ផ្តើមឡើងវិញដើម្បីបញ្ចប់ការដំឡើង 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.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": "ជ្រើសរើស distro ឬដំឡើងមួយខាងក្រោម។",
|
||||
"wsl.onboarding.checkingOpencode": "កំពុងពិនិត្យមើលកូដ OpenCode...",
|
||||
"wsl.onboarding.checkingOpencodeIn": "កំពុងពិនិត្យកូដ OpenCode ក្នុង {{distro}}...",
|
||||
"wsl.onboarding.updatingOpencode": "កំពុងអាប់ដេត OpenCode...",
|
||||
"wsl.onboarding.updatingOpencodeIn": "កំពុងអាប់ដេត OpenCode ក្នុង {{distro}}...",
|
||||
"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.updateOpencode": "ធ្វើបច្ចុប្បន្នភាព OpenCode",
|
||||
"wsl.onboarding.opencodeReadyIn": "OpenCode គឺរួចរាល់នៅក្នុង {{distro}} ។",
|
||||
@@ -466,11 +466,11 @@ export const dict = {
|
||||
"wsl.onboarding.installOpencode": "ដំឡើង OpenCode",
|
||||
"wsl.onboarding.chooseDistroFirst": "ជ្រើសរើសការចែកចាយជាមុនសិន។",
|
||||
"wsl.onboarding.loadFailed": "បានបរាជ័យក្នុងការផ្ទុកស្ថានភាព WSL ។",
|
||||
"wsl.onboarding.loading": "កំពុងផ្ទុក...",
|
||||
"wsl.onboarding.loading": "កំពុងផ្ទុក…",
|
||||
"wsl.onboarding.installedDistros": "បានដំឡើងការចែកចាយ",
|
||||
"wsl.onboarding.checkAgain": "ពិនិត្យម្តងទៀត",
|
||||
"wsl.onboarding.distroStatus.ready": "រួចរាល់",
|
||||
"wsl.onboarding.distroStatus.checking": "កំពុងពិនិត្យ...",
|
||||
"wsl.onboarding.distroStatus.checking": "កំពុងពិនិត្យ…",
|
||||
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode មិនត្រូវបានដំឡើងទេ។",
|
||||
"wsl.onboarding.distroStatus.missingTools": "បាត់ bash, curl",
|
||||
"wsl.onboarding.distroStatus.unsupported": "មិនគាំទ្រ · ប្រើ WSL 2",
|
||||
@@ -489,7 +489,7 @@ export const dict = {
|
||||
"wsl.onboarding.allDistrosAdded": "ការចែកចាយដែលបានដំឡើងទាំងអស់ត្រូវបានបន្ថែមរួចហើយ។",
|
||||
"wsl.onboarding.noDistros": "មិនបានរកឃើញការចែកចាយនៅឡើយទេ។",
|
||||
"wsl.onboarding.install": "ដំឡើង",
|
||||
"wsl.onboarding.installing": "កំពុងដំឡើង...",
|
||||
"wsl.onboarding.installing": "កំពុងដំឡើង…",
|
||||
"wsl.onboarding.installDistro": "ដំឡើង distro",
|
||||
"wsl.onboarding.searchDistros": "ស្វែងរកការចែកចាយ",
|
||||
"wsl.onboarding.wsl2Required": "WSL 2 ត្រូវបានទាមទារ។",
|
||||
@@ -501,7 +501,7 @@ export const dict = {
|
||||
"wsl.onboarding.unknown": "មិនស្គាល់",
|
||||
"wsl.onboarding.desktopVersion": "ផ្ទៃតុ {{version}}",
|
||||
"wsl.onboarding.versionMismatch": "កំណែដែលបានដំឡើងមិនត្រូវគ្នានឹងកំណែកម្មវិធីកុំព្យូទ័រលើតុទេ។",
|
||||
"wsl.onboarding.adding": "កំពុងបន្ថែម...",
|
||||
"wsl.onboarding.adding": "កំពុងបន្ថែម…",
|
||||
"dialog.project.edit.title": "កែសម្រួលគម្រោង",
|
||||
"dialog.project.edit.name": "ឈ្មោះ",
|
||||
"dialog.project.edit.icon": "រូបតំណាង",
|
||||
@@ -606,7 +606,7 @@ export const dict = {
|
||||
"error.page.action.report": "រាយការណ៍កំហុស",
|
||||
"error.page.action.reported": "កំហុសត្រូវបានរាយការណ៍",
|
||||
"error.page.action.exportLogs": "នាំចេញកំណត់ហេតុ",
|
||||
"error.page.action.checking": "កំពុងពិនិត្យ...",
|
||||
"error.page.action.checking": "កំពុងពិនិត្យ…",
|
||||
"error.page.action.checkUpdates": "ពិនិត្យមើលបច្ចុប្បន្នភាព",
|
||||
"error.page.action.updateTo": "ធ្វើបច្ចុប្បន្នភាពទៅ {{version}}",
|
||||
"error.page.circular": "[សារាចរ]",
|
||||
@@ -683,12 +683,12 @@ export const dict = {
|
||||
"session.review.filesChanged": "ឯកសារបានផ្លាស់ប្តូរ {{count}}",
|
||||
"session.review.change.one": "ការផ្លាស់ប្តូរ",
|
||||
"session.review.change.other": "ការផ្លាស់ប្តូរ",
|
||||
"session.review.loadingChanges": "កំពុងផ្ទុកការផ្លាស់ប្តូរ...",
|
||||
"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.actionLoading": "ការបង្កើតឃ្លាំង Git…",
|
||||
"session.review.noVcs.createGit.action": "បង្កើតឃ្លាំង Git",
|
||||
"session.review.noSnapshot": "ការតាមដានរូបថតត្រូវបានបិទនៅក្នុងការកំណត់ ដូច្នេះការផ្លាស់ប្តូរវេនមិនអាចប្រើបានទេ",
|
||||
"session.review.noChanges": "គ្មានការផ្លាស់ប្តូរទេ។",
|
||||
@@ -699,9 +699,9 @@ export const dict = {
|
||||
"session.files.empty": "គ្មានឯកសារទេ។",
|
||||
"session.files.binaryContent": "ឯកសារគោលពីរ (មាតិកាមិនអាចត្រូវបានបង្ហាញ)",
|
||||
"session.messages.renderEarlier": "បង្ហាញសារមុន។",
|
||||
"session.messages.loadingEarlier": "កំពុងផ្ទុកសារមុន...",
|
||||
"session.messages.loadingEarlier": "កំពុងផ្ទុកសារមុន…",
|
||||
"session.messages.loadEarlier": "ផ្ទុកសារមុន។",
|
||||
"session.messages.loading": "កំពុងផ្ទុកសារ...",
|
||||
"session.messages.loading": "កំពុងផ្ទុកសារ…",
|
||||
"session.messages.jumpToLatest": "លោតទៅចុងក្រោយបំផុត។",
|
||||
"session.context.addToContext": "បន្ថែម {{selection}} ទៅបរិបទ",
|
||||
"session.todo.title": "អ្វីដែលត្រូវធ្វើ",
|
||||
@@ -762,8 +762,8 @@ export const dict = {
|
||||
"common.copied": "ចម្លង",
|
||||
"lsp.tooltip.none": "គ្មានម៉ាស៊ីនមេ LSP ទេ។",
|
||||
"lsp.label.connected": "{{count}} LSP",
|
||||
"prompt.loading": "កំពុងផ្ទុកប្រអប់បញ្ចូល...",
|
||||
"terminal.loading": "កំពុងផ្ទុកស្ថានីយ...",
|
||||
"prompt.loading": "កំពុងផ្ទុកប្រអប់បញ្ចូល…",
|
||||
"terminal.loading": "កំពុងផ្ទុកស្ថានីយ…",
|
||||
"terminal.title": "ស្ថានីយ",
|
||||
"terminal.title.numbered": "ស្ថានីយ {{number}}",
|
||||
"terminal.close": "បិទស្ថានីយ",
|
||||
@@ -924,9 +924,9 @@ export const dict = {
|
||||
"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.action.checking": "កំពុងពិនិត្យ…",
|
||||
"settings.updates.action.downloading": "កំពុងទាញយក…",
|
||||
"settings.updates.action.installing": "កំពុងដំឡើង…",
|
||||
"settings.updates.toast.latest.title": "អ្នកទាន់សម័យហើយ។",
|
||||
"settings.updates.toast.latest.description": "អ្នកកំពុងដំណើរការកំណែចុងក្រោយបំផុតនៃ OpenCode ។",
|
||||
"sound.option.none": "គ្មានទេ។",
|
||||
@@ -1073,7 +1073,7 @@ export const dict = {
|
||||
"workspace.reset.success.title": "កំណត់កន្លែងធ្វើការឡើងវិញ",
|
||||
"workspace.reset.success.description": "កន្លែងធ្វើការឥឡូវនេះត្រូវគ្នានឹងសាខាលំនាំដើម។",
|
||||
"workspace.error.stillPreparing": "កន្លែងធ្វើការកំពុងរៀបចំនៅឡើយ",
|
||||
"workspace.status.checking": "កំពុងពិនិត្យមើលការផ្លាស់ប្តូរដែលមិនរួមបញ្ចូលគ្នា...",
|
||||
"workspace.status.checking": "កំពុងពិនិត្យមើលការផ្លាស់ប្តូរដែលមិនរួមបញ្ចូលគ្នា…",
|
||||
"workspace.status.error": "មិនអាចផ្ទៀងផ្ទាត់ស្ថានភាព git បានទេ។",
|
||||
"workspace.status.clean": "រកមិនឃើញការផ្លាស់ប្តូរដែលមិនរួមបញ្ចូលគ្នាទេ។",
|
||||
"workspace.status.dirty": "បានរកឃើញការផ្លាស់ប្តូរដែលមិនរួមបញ្ចូលគ្នានៅក្នុងកន្លែងធ្វើការនេះ។",
|
||||
|
||||
@@ -116,8 +116,8 @@ export const dict = {
|
||||
"provider.connect.method.apiKey": "API 키",
|
||||
"provider.connect.method.browser": "브라우저",
|
||||
"provider.connect.method.headless": "헤드리스 모드",
|
||||
"provider.connect.status.inProgress": "인증 진행 중...",
|
||||
"provider.connect.status.waiting": "인증 대기 중...",
|
||||
"provider.connect.status.inProgress": "인증 진행 중…",
|
||||
"provider.connect.status.waiting": "인증 대기 중…",
|
||||
"provider.connect.status.failed": "인증 실패: {{error}}",
|
||||
"provider.connect.apiKey.description":
|
||||
"{{provider}} API 키를 입력하여 계정을 연결하고 OpenCode에서 {{provider}} 모델을 사용하세요.",
|
||||
@@ -204,19 +204,19 @@ export const dict = {
|
||||
"common.goBack": "뒤로 가기",
|
||||
"common.goForward": "앞으로 가기",
|
||||
"common.loading": "로딩 중",
|
||||
"common.loading.ellipsis": "...",
|
||||
"common.loading.ellipsis": "…",
|
||||
"common.cancel": "취소",
|
||||
"common.connect": "연결",
|
||||
"common.disconnect": "연결 해제",
|
||||
"common.continue": "계속",
|
||||
"common.submit": "제출",
|
||||
"common.save": "저장",
|
||||
"common.saving": "저장 중...",
|
||||
"common.saving": "저장 중…",
|
||||
"common.default": "기본값",
|
||||
"common.attachment": "첨부 파일",
|
||||
"prompt.placeholder.shell": "셸 명령어 입력... {{example}}",
|
||||
"prompt.placeholder.normal": '무엇이든 물어보세요... "{{example}}"',
|
||||
"prompt.placeholder.simple": "무엇이든 물어보세요...",
|
||||
"prompt.placeholder.shell": "셸 명령어 입력… {{example}}",
|
||||
"prompt.placeholder.normal": '무엇이든 물어보세요… "{{example}}"',
|
||||
"prompt.placeholder.simple": "무엇이든 물어보세요…",
|
||||
"prompt.placeholder.summarizeComments": "댓글 요약…",
|
||||
"prompt.placeholder.summarizeComment": "댓글 요약…",
|
||||
"prompt.mode.shell": "셸",
|
||||
@@ -234,7 +234,7 @@ export const dict = {
|
||||
"prompt.example.10": "API 문서 생성",
|
||||
"prompt.example.11": "데이터베이스 쿼리 최적화",
|
||||
"prompt.example.12": "입력 유효성 검사 추가",
|
||||
"prompt.example.13": "...를 위한 새 컴포넌트 생성",
|
||||
"prompt.example.13": "…를 위한 새 컴포넌트 생성",
|
||||
"prompt.example.14": "이 프로젝트를 어떻게 배포하나요?",
|
||||
"prompt.example.15": "모범 사례를 기준으로 내 코드 검토",
|
||||
"prompt.example.16": "이 함수에 오류 처리 추가",
|
||||
@@ -245,7 +245,7 @@ export const dict = {
|
||||
"prompt.example.21": "마이그레이션 스크립트 작성 도와줘",
|
||||
"prompt.example.22": "이 엔드포인트에 캐싱 구현",
|
||||
"prompt.example.23": "이 목록에 페이지네이션 추가",
|
||||
"prompt.example.24": "...를 위한 CLI 명령어 생성",
|
||||
"prompt.example.24": "…를 위한 CLI 명령어 생성",
|
||||
"prompt.example.25": "여기서 환경 변수는 어떻게 작동하나요?",
|
||||
"prompt.popover.emptyResults": "일치하는 결과 없음",
|
||||
"prompt.popover.emptyCommands": "일치하는 명령어 없음",
|
||||
@@ -304,7 +304,7 @@ export const dict = {
|
||||
"dialog.server.add.url": "서버 URL",
|
||||
"dialog.server.add.placeholder": "http://localhost:4096",
|
||||
"dialog.server.add.error": "서버에 연결할 수 없습니다",
|
||||
"dialog.server.add.checking": "확인 중...",
|
||||
"dialog.server.add.checking": "확인 중…",
|
||||
"dialog.server.add.button": "서버 추가",
|
||||
"dialog.server.add.name": "서버 이름 (선택 사항)",
|
||||
"dialog.server.add.namePlaceholder": "Localhost",
|
||||
@@ -423,7 +423,7 @@ export const dict = {
|
||||
"error.page.action.restart": "다시 시작",
|
||||
"error.page.action.report": "오류 신고",
|
||||
"error.page.action.reported": "오류가 신고됨",
|
||||
"error.page.action.checking": "확인 중...",
|
||||
"error.page.action.checking": "확인 중…",
|
||||
"error.page.action.checkUpdates": "업데이트 확인",
|
||||
"error.page.action.updateTo": "{{version}} 버전으로 업데이트",
|
||||
"error.page.report.prefix": "이 오류를 OpenCode 팀에 제보해 주세요: ",
|
||||
@@ -470,7 +470,7 @@ export const dict = {
|
||||
"session.review.filesChanged": "{{count}}개 파일 변경됨",
|
||||
"session.review.change.one": "변경",
|
||||
"session.review.change.other": "변경",
|
||||
"session.review.loadingChanges": "변경 사항 로드 중...",
|
||||
"session.review.loadingChanges": "변경 사항 로드 중…",
|
||||
"session.review.empty": "이 세션에 변경 사항이 아직 없습니다",
|
||||
"session.review.noVcs": "Git 버전 관리 시스템이 감지되지 않아 변경 사항이 표시되지 않습니다",
|
||||
"session.review.noSnapshot": "구성에서 스냅샷 추적이 비활성화되어 있어 세션 변경 사항을 사용할 수 없습니다",
|
||||
@@ -480,9 +480,9 @@ export const dict = {
|
||||
"session.files.empty": "파일 없음",
|
||||
"session.files.binaryContent": "바이너리 파일 (내용을 표시할 수 없음)",
|
||||
"session.messages.renderEarlier": "이전 메시지 렌더링",
|
||||
"session.messages.loadingEarlier": "이전 메시지 로드 중...",
|
||||
"session.messages.loadingEarlier": "이전 메시지 로드 중…",
|
||||
"session.messages.loadEarlier": "이전 메시지 로드",
|
||||
"session.messages.loading": "메시지 로드 중...",
|
||||
"session.messages.loading": "메시지 로드 중…",
|
||||
"session.messages.jumpToLatest": "최신으로 이동",
|
||||
"session.context.addToContext": "컨텍스트에 {{selection}} 추가",
|
||||
"session.todo.title": "할 일",
|
||||
@@ -510,8 +510,8 @@ export const dict = {
|
||||
"common.copied": "복사됨",
|
||||
"lsp.tooltip.none": "LSP 서버 없음",
|
||||
"lsp.label.connected": "{{count}} LSP",
|
||||
"prompt.loading": "프롬프트 로드 중...",
|
||||
"terminal.loading": "터미널 로드 중...",
|
||||
"prompt.loading": "프롬프트 로드 중…",
|
||||
"terminal.loading": "터미널 로드 중…",
|
||||
"terminal.title": "터미널",
|
||||
"terminal.title.numbered": "터미널 {{number}}",
|
||||
"terminal.close": "터미널 닫기",
|
||||
@@ -591,7 +591,7 @@ export const dict = {
|
||||
"settings.updates.row.check.title": "업데이트 확인",
|
||||
"settings.updates.row.check.description": "업데이트를 수동으로 확인하고, 사용 가능하면 설치합니다",
|
||||
"settings.updates.action.checkNow": "지금 확인",
|
||||
"settings.updates.action.checking": "확인 중...",
|
||||
"settings.updates.action.checking": "확인 중…",
|
||||
"settings.updates.toast.latest.title": "최신 상태입니다",
|
||||
"settings.updates.toast.latest.description": "현재 최신 버전의 OpenCode를 사용 중입니다.",
|
||||
"sound.option.none": "없음",
|
||||
@@ -735,7 +735,7 @@ export const dict = {
|
||||
"workspace.reset.success.title": "작업 공간 재설정됨",
|
||||
"workspace.reset.success.description": "작업 공간이 이제 기본 브랜치와 일치합니다.",
|
||||
"workspace.error.stillPreparing": "작업 공간이 아직 준비 중입니다",
|
||||
"workspace.status.checking": "병합되지 않은 변경 사항 확인 중...",
|
||||
"workspace.status.checking": "병합되지 않은 변경 사항 확인 중…",
|
||||
"workspace.status.error": "Git 상태를 확인할 수 없습니다.",
|
||||
"workspace.status.clean": "병합되지 않은 변경 사항이 감지되지 않았습니다.",
|
||||
"workspace.status.dirty": "이 작업 공간에서 병합되지 않은 변경 사항이 감지되었습니다.",
|
||||
@@ -765,12 +765,12 @@ export const dict = {
|
||||
"settings.providers.custom.description": "기본 URL로 OpenAI 호환 공급자를 추가합니다.",
|
||||
|
||||
"app.server.unreachable": "{{server}}에 연결할 수 없습니다",
|
||||
"app.server.retrying": "자동으로 재시도 중...",
|
||||
"app.server.retrying": "자동으로 재시도 중…",
|
||||
"app.server.otherServers": "다른 서버",
|
||||
"dialog.server.add.passwordPlaceholder": "비밀번호",
|
||||
"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": "{{total}}개의 할 일 중 {{done}}개 완료",
|
||||
"session.question.progress": "{{total}}개의 질문 중 {{current}}개",
|
||||
@@ -871,26 +871,26 @@ export const dict = {
|
||||
"wsl.server.label": "WSL",
|
||||
"wsl.server.menu.label": "WSL 서버",
|
||||
"wsl.server.retryStart": "시작 재시도",
|
||||
"wsl.server.updating": "업데이트 중...",
|
||||
"wsl.server.updating": "업데이트 중…",
|
||||
"wsl.onboarding.step.distro": "배포판 선택",
|
||||
"wsl.onboarding.step.opencode": "OpenCode",
|
||||
"wsl.onboarding.checkingRuntime": "WSL 확인 중...",
|
||||
"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.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.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": "{{distro}}에서 OpenCode를 사용할 준비가 되었습니다.",
|
||||
@@ -899,11 +899,11 @@ export const dict = {
|
||||
"wsl.onboarding.installOpencode": "OpenCode 설치",
|
||||
"wsl.onboarding.chooseDistroFirst": "먼저 배포판을 선택하세요.",
|
||||
"wsl.onboarding.loadFailed": "WSL 상태를 불러오지 못했습니다.",
|
||||
"wsl.onboarding.loading": "로딩 중...",
|
||||
"wsl.onboarding.loading": "로딩 중…",
|
||||
"wsl.onboarding.installedDistros": "설치된 배포판",
|
||||
"wsl.onboarding.checkAgain": "다시 확인",
|
||||
"wsl.onboarding.distroStatus.ready": "준비됨",
|
||||
"wsl.onboarding.distroStatus.checking": "확인 중...",
|
||||
"wsl.onboarding.distroStatus.checking": "확인 중…",
|
||||
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode가 설치되지 않음",
|
||||
"wsl.onboarding.distroStatus.missingTools": "bash, curl 없음",
|
||||
"wsl.onboarding.distroStatus.unsupported": "지원되지 않음 · WSL 2 사용",
|
||||
@@ -921,7 +921,7 @@ export const dict = {
|
||||
"wsl.onboarding.allDistrosAdded": "설치된 모든 배포판이 이미 추가되었습니다.",
|
||||
"wsl.onboarding.noDistros": "아직 감지된 배포판이 없습니다.",
|
||||
"wsl.onboarding.install": "설치",
|
||||
"wsl.onboarding.installing": "설치 중...",
|
||||
"wsl.onboarding.installing": "설치 중…",
|
||||
"wsl.onboarding.installDistro": "배포판 설치",
|
||||
"wsl.onboarding.searchDistros": "배포판 검색",
|
||||
"wsl.onboarding.wsl2Required": "WSL 2가 필요합니다.",
|
||||
@@ -933,7 +933,7 @@ export const dict = {
|
||||
"wsl.onboarding.unknown": "알 수 없음",
|
||||
"wsl.onboarding.desktopVersion": "데스크톱 {{version}}",
|
||||
"wsl.onboarding.versionMismatch": "설치된 버전이 데스크톱 앱 버전과 일치하지 않습니다.",
|
||||
"wsl.onboarding.adding": "추가 중...",
|
||||
"wsl.onboarding.adding": "추가 중…",
|
||||
|
||||
"language.uk": "Українська",
|
||||
"error.page.description.localServerStartup": "로컬 서버를 시작하는 동안 오류가 발생했습니다.",
|
||||
@@ -1002,8 +1002,8 @@ export const dict = {
|
||||
"입력창에서 에이전트를 전환합니다. 숨기면 기본적으로 Build 에이전트를 사용합니다.",
|
||||
"settings.general.row.pinchZoom.title": "핀치 줌",
|
||||
"settings.general.row.pinchZoom.description": "트랙패드 핀치 및 Ctrl-스크롤 제스처로 확대/축소 허용",
|
||||
"settings.updates.action.downloading": "다운로드 중...",
|
||||
"settings.updates.action.installing": "설치 중...",
|
||||
"settings.updates.action.downloading": "다운로드 중…",
|
||||
"settings.updates.action.installing": "설치 중…",
|
||||
|
||||
"command.logs.export": "로그 내보내기",
|
||||
|
||||
@@ -1014,13 +1014,13 @@ export const dict = {
|
||||
"desktop.menu.go": "이동",
|
||||
"desktop.menu.window": "윈도우",
|
||||
"desktop.menu.help": "도움말",
|
||||
"desktop.menu.checkForUpdates": "업데이트 확인...",
|
||||
"desktop.menu.checkForUpdates": "업데이트 확인…",
|
||||
"desktop.menu.settings": "설정",
|
||||
"desktop.menu.reloadWebview": "WebView 새로 고침",
|
||||
"desktop.menu.restart": "다시 시작",
|
||||
"desktop.menu.exportLogs": "로그 내보내기...",
|
||||
"desktop.menu.exportLogs": "로그 내보내기…",
|
||||
"desktop.menu.newSession": "새 세션",
|
||||
"desktop.menu.openProject": "프로젝트 열기...",
|
||||
"desktop.menu.openProject": "프로젝트 열기…",
|
||||
"desktop.menu.newWindow": "새 윈도우",
|
||||
"desktop.menu.closeWindow": "윈도우 닫기",
|
||||
"desktop.menu.undo": "실행 취소",
|
||||
|
||||
@@ -6,13 +6,13 @@ export const dict = {
|
||||
"desktop.menu.go": "ໄປ",
|
||||
"desktop.menu.window": "ປ່ອງຢ້ຽມ",
|
||||
"desktop.menu.help": "ຊ່ວຍ",
|
||||
"desktop.menu.checkForUpdates": "ກວດເບິ່ງການອັບເດດ...",
|
||||
"desktop.menu.checkForUpdates": "ກວດເບິ່ງການອັບເດດ…",
|
||||
"desktop.menu.settings": "ການຕັ້ງຄ່າ",
|
||||
"desktop.menu.reloadWebview": "ໂຫຼດ Webview ຄືນໃໝ່",
|
||||
"desktop.menu.restart": "ຣີສະຕາດ",
|
||||
"desktop.menu.exportLogs": "ບັນທຶກການສົ່ງອອກ...",
|
||||
"desktop.menu.exportLogs": "ບັນທຶກການສົ່ງອອກ…",
|
||||
"desktop.menu.newSession": "ເຊດຊັນໃໝ່",
|
||||
"desktop.menu.openProject": "ເປີດໂຄງການ...",
|
||||
"desktop.menu.openProject": "ເປີດໂຄງການ…",
|
||||
"desktop.menu.newWindow": "ໜ້າຈໍໃໝ່",
|
||||
"desktop.menu.closeWindow": "ປິດໜ້າຈໍ",
|
||||
"desktop.menu.undo": "ຍົກເລີກ",
|
||||
@@ -212,8 +212,8 @@ export const dict = {
|
||||
"provider.connect.method.apiKey": "ລະຫັດ API",
|
||||
"provider.connect.method.browser": "ຕົວທ່ອງເວັບ",
|
||||
"provider.connect.method.headless": "ບໍ່ມີຫົວ",
|
||||
"provider.connect.status.inProgress": "ກໍາລັງດໍາເນີນຢູ່...",
|
||||
"provider.connect.status.waiting": "ລໍຖ້າການອະນຸຍາດ...",
|
||||
"provider.connect.status.inProgress": "ກໍາລັງດໍາເນີນຢູ່…",
|
||||
"provider.connect.status.waiting": "ລໍຖ້າການອະນຸຍາດ…",
|
||||
"provider.connect.status.failed": "ການອະນຸຍາດລົ້ມເຫລວ: {{error}}",
|
||||
"provider.connect.apiKey.description":
|
||||
"ໃສ່ລະຫັດ API {{provider}} ຂອງທ່ານເພື່ອເຊື່ອມຕໍ່ບັນຊີຂອງທ່ານ ແລະໃຊ້ຕົວແບບ {{provider}} ໃນ OpenCode.",
|
||||
@@ -306,7 +306,7 @@ export const dict = {
|
||||
"common.goBack": "ນຳທາງກັບຄືນ",
|
||||
"common.goForward": "ນຳທາງໄປຂ້າງໜ້າ",
|
||||
"common.loading": "ກຳລັງໂຫຼດ",
|
||||
"common.loading.ellipsis": "...",
|
||||
"common.loading.ellipsis": "…",
|
||||
"common.cancel": "ຍົກເລີກ",
|
||||
"common.clear": "ຈະແຈ້ງ",
|
||||
"common.open": "ເປີດ",
|
||||
@@ -315,14 +315,14 @@ export const dict = {
|
||||
"common.continue": "ສືບຕໍ່",
|
||||
"common.submit": "ສົ່ງ",
|
||||
"common.save": "ບັນທຶກ",
|
||||
"common.saving": "ກຳລັງບັນທຶກ...",
|
||||
"common.saving": "ກຳລັງບັນທຶກ…",
|
||||
"common.default": "ຄ່າເລີ່ມຕົ້ນ",
|
||||
"common.attachment": "ໄຟລ໌ແນບ",
|
||||
"prompt.placeholder.shell": "ໃສ່ຄຳສັ່ງ shell... {{example}}",
|
||||
"prompt.placeholder.normal": 'ຖາມຫຍັງ ... "{{example}}"',
|
||||
"prompt.placeholder.simple": "ຖາມຫຍັງ...",
|
||||
"prompt.placeholder.summarizeComments": "ສະຫຼຸບຄຳເຫັນ...",
|
||||
"prompt.placeholder.summarizeComment": "ສະຫຼຸບຄຳເຫັນ...",
|
||||
"prompt.placeholder.shell": "ໃສ່ຄຳສັ່ງ shell… {{example}}",
|
||||
"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 ເພື່ອອອກ",
|
||||
@@ -340,7 +340,7 @@ export const dict = {
|
||||
"prompt.example.10": "ສ້າງເອກະສານ API",
|
||||
"prompt.example.11": "ເພີ່ມປະສິດທິພາບການສອບຖາມຖານຂໍ້ມູນ",
|
||||
"prompt.example.12": "ເພີ່ມການກວດສອບການປ້ອນຂໍ້ມູນ",
|
||||
"prompt.example.13": "ສ້າງອົງປະກອບໃຫມ່ສໍາລັບ ...",
|
||||
"prompt.example.13": "ສ້າງອົງປະກອບໃຫມ່ສໍາລັບ …",
|
||||
"prompt.example.14": "ຂ້ອຍຈະນຳໃຊ້ໂຄງການນີ້ແນວໃດ?",
|
||||
"prompt.example.15": "ທົບທວນລະຫັດຂອງຂ້ອຍສໍາລັບການປະຕິບັດທີ່ດີທີ່ສຸດ",
|
||||
"prompt.example.16": "ເພີ່ມການຈັດການຂໍ້ຜິດພາດກັບຟັງຊັນນີ້",
|
||||
@@ -351,7 +351,7 @@ export const dict = {
|
||||
"prompt.example.21": "ຊ່ວຍຂ້ອຍຂຽນສະຄຣິບການເຄື່ອນຍ້າຍ",
|
||||
"prompt.example.22": "ປະຕິບັດຖານຄວາມຈໍາສໍາລັບຈຸດສິ້ນສຸດນີ້",
|
||||
"prompt.example.23": "ເພີ່ມ pagination ໃສ່ບັນຊີລາຍຊື່ນີ້",
|
||||
"prompt.example.24": "ສ້າງຄໍາສັ່ງ CLI ສໍາລັບ ...",
|
||||
"prompt.example.24": "ສ້າງຄໍາສັ່ງ CLI ສໍາລັບ …",
|
||||
"prompt.example.25": "ຕົວແປສະພາບແວດລ້ອມເຮັດວຽກແນວໃດຢູ່ທີ່ນີ້?",
|
||||
"prompt.popover.emptyResults": "ບໍ່ມີຜົນໄດ້ຮັບທີ່ກົງກັນ",
|
||||
"prompt.popover.emptyCommands": "ບໍ່ມີຄໍາສັ່ງທີ່ກົງກັນ",
|
||||
@@ -403,7 +403,7 @@ export const dict = {
|
||||
"dialog.directory.parent": "ພໍ່ແມ່",
|
||||
"dialog.directory.readError": "ບໍ່ສາມາດອ່ານໂຟນເດີນີ້ໄດ້",
|
||||
"app.server.unreachable": "ບໍ່ສາມາດບັນລຸ {{server}}",
|
||||
"app.server.retrying": "ກຳລັງລອງໃໝ່ໂດຍອັດຕະໂນມັດ...",
|
||||
"app.server.retrying": "ກຳລັງລອງໃໝ່ໂດຍອັດຕະໂນມັດ…",
|
||||
"app.server.otherServers": "ເຊີບເວີອື່ນໆ",
|
||||
"dialog.server.title": "ເຊີບເວີ",
|
||||
"dialog.server.description": "ສະຫຼັບເຊີບເວີ OpenCode ທີ່ແອັບຯນີ້ເຊື່ອມຕໍ່ກັບ.",
|
||||
@@ -413,7 +413,7 @@ export const dict = {
|
||||
"dialog.server.add.url": "ທີ່ຢູ່ເຊີບເວີ",
|
||||
"dialog.server.add.placeholder": "http://localhost:4096",
|
||||
"dialog.server.add.error": "ບໍ່ສາມາດເຊື່ອມຕໍ່ກັບເຊີບເວີໄດ້",
|
||||
"dialog.server.add.checking": "ກຳລັງກວດສອບ...",
|
||||
"dialog.server.add.checking": "ກຳລັງກວດສອບ…",
|
||||
"dialog.server.add.button": "ເພີ່ມເຊີບເວີ",
|
||||
"dialog.server.add.name": "ຊື່ເຊີບເວີ (ທາງເລືອກ)",
|
||||
"dialog.server.add.namePlaceholder": "Localhost",
|
||||
@@ -438,26 +438,26 @@ export const dict = {
|
||||
"wsl.server.label": "WSL",
|
||||
"wsl.server.menu.label": "ເຊີບເວີ WSL",
|
||||
"wsl.server.retryStart": "ລອງເລີ່ມໃໝ່",
|
||||
"wsl.server.updating": "ກຳລັງອັບເດດ...",
|
||||
"wsl.server.updating": "ກຳລັງອັບເດດ…",
|
||||
"wsl.onboarding.step.distro": "ເລືອກ distro",
|
||||
"wsl.onboarding.step.opencode": "OpenCode",
|
||||
"wsl.onboarding.checkingRuntime": "ກຳລັງກວດສອບ WSL...",
|
||||
"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.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": "ເລືອກ distro ຫຼືຕິດຕັ້ງຫນຶ່ງຂ້າງລຸ່ມນີ້.",
|
||||
"wsl.onboarding.checkingOpencode": "ກຳລັງກວດສອບ OpenCode...",
|
||||
"wsl.onboarding.checkingOpencodeIn": "ກຳລັງກວດສອບ OpenCode ໃນ {{distro}}...",
|
||||
"wsl.onboarding.updatingOpencode": "ກຳລັງອັບເດດ OpenCode...",
|
||||
"wsl.onboarding.updatingOpencodeIn": "ກຳລັງອັບເດດ OpenCode ໃນ {{distro}}...",
|
||||
"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.updateOpencode": "ອັບເດດ OpenCode",
|
||||
"wsl.onboarding.opencodeReadyIn": "OpenCode ແມ່ນພ້ອມແລ້ວໃນ {{distro}}.",
|
||||
@@ -466,11 +466,11 @@ export const dict = {
|
||||
"wsl.onboarding.installOpencode": "ຕິດຕັ້ງ OpenCode",
|
||||
"wsl.onboarding.chooseDistroFirst": "ເລືອກ distro ກ່ອນ.",
|
||||
"wsl.onboarding.loadFailed": "ລົ້ມເຫລວໃນການໂຫຼດສະຖານະ WSL.",
|
||||
"wsl.onboarding.loading": "ກຳລັງໂຫລດ...",
|
||||
"wsl.onboarding.loading": "ກຳລັງໂຫລດ…",
|
||||
"wsl.onboarding.installedDistros": "ຕິດຕັ້ງ distros",
|
||||
"wsl.onboarding.checkAgain": "ກວດເບິ່ງອີກຄັ້ງ",
|
||||
"wsl.onboarding.distroStatus.ready": "ພ້ອມ",
|
||||
"wsl.onboarding.distroStatus.checking": "ກຳລັງກວດສອບ...",
|
||||
"wsl.onboarding.distroStatus.checking": "ກຳລັງກວດສອບ…",
|
||||
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode ບໍ່ໄດ້ຕິດຕັ້ງ",
|
||||
"wsl.onboarding.distroStatus.missingTools": "ຂາດ bash, curl",
|
||||
"wsl.onboarding.distroStatus.unsupported": "ບໍ່ຮອງຮັບ · ໃຊ້ WSL 2",
|
||||
@@ -488,7 +488,7 @@ export const dict = {
|
||||
"wsl.onboarding.allDistrosAdded": "ການຕິດຕັ້ງທັງໝົດຖືກເພີ່ມແລ້ວ.",
|
||||
"wsl.onboarding.noDistros": "ບໍ່ພົບການລົບກວນເທື່ອ.",
|
||||
"wsl.onboarding.install": "ຕິດຕັ້ງ",
|
||||
"wsl.onboarding.installing": "ກຳລັງຕິດຕັ້ງ...",
|
||||
"wsl.onboarding.installing": "ກຳລັງຕິດຕັ້ງ…",
|
||||
"wsl.onboarding.installDistro": "ຕິດຕັ້ງ distro",
|
||||
"wsl.onboarding.searchDistros": "ຄົ້ນຫາ distros",
|
||||
"wsl.onboarding.wsl2Required": "WSL 2 ແມ່ນຕ້ອງການ.",
|
||||
@@ -500,7 +500,7 @@ export const dict = {
|
||||
"wsl.onboarding.unknown": "ບໍ່ຮູ້ຈັກ",
|
||||
"wsl.onboarding.desktopVersion": "ເດັສທັອບ {{version}}",
|
||||
"wsl.onboarding.versionMismatch": "ເວີຊັນທີ່ຕິດຕັ້ງບໍ່ກົງກັບເວີຊັນຂອງແອັບ desktop.",
|
||||
"wsl.onboarding.adding": "ກຳລັງເພີ່ມ...",
|
||||
"wsl.onboarding.adding": "ກຳລັງເພີ່ມ…",
|
||||
"dialog.project.edit.title": "ແກ້ໄຂໂຄງການ",
|
||||
"dialog.project.edit.name": "ຊື່",
|
||||
"dialog.project.edit.icon": "ໄອຄອນ",
|
||||
@@ -605,7 +605,7 @@ export const dict = {
|
||||
"error.page.action.report": "ລາຍງານຄວາມຜິດພາດ",
|
||||
"error.page.action.reported": "ລາຍງານຂໍ້ຜິດພາດ",
|
||||
"error.page.action.exportLogs": "ບັນທຶກການສົ່ງອອກ",
|
||||
"error.page.action.checking": "ກຳລັງກວດສອບ...",
|
||||
"error.page.action.checking": "ກຳລັງກວດສອບ…",
|
||||
"error.page.action.checkUpdates": "ກວດສອບການອັບເດດ",
|
||||
"error.page.action.updateTo": "ອັບເດດເປັນ {{version}}",
|
||||
"error.page.circular": "[Circular]",
|
||||
@@ -682,12 +682,12 @@ export const dict = {
|
||||
"session.review.filesChanged": "ໄຟລ໌ປ່ຽນ {{count}}",
|
||||
"session.review.change.one": "ປ່ຽນແປງ",
|
||||
"session.review.change.other": "ການປ່ຽນແປງ",
|
||||
"session.review.loadingChanges": "ກຳລັງໂຫຼດການປ່ຽນແປງ...",
|
||||
"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.actionLoading": "ກຳລັງສ້າງບ່ອນເກັບຂໍ້ມູນ Git…",
|
||||
"session.review.noVcs.createGit.action": "ສ້າງບ່ອນເກັບຂໍ້ມູນ Git",
|
||||
"session.review.noSnapshot": "ການຕິດຕາມພາບຖ່າຍຖືກປິດໃຊ້ງານຢູ່ໃນການຕັ້ງຄ່າ, ດັ່ງນັ້ນການປ່ຽນແປງເຊດຊັນບໍ່ສາມາດໃຊ້ໄດ້",
|
||||
"session.review.noChanges": "ບໍ່ມີການປ່ຽນແປງ",
|
||||
@@ -698,9 +698,9 @@ export const dict = {
|
||||
"session.files.empty": "ບໍ່ມີໄຟລ໌",
|
||||
"session.files.binaryContent": "ໄຟລ໌ຖານສອງ (ເນື້ອຫາບໍ່ສາມາດສະແດງໄດ້)",
|
||||
"session.messages.renderEarlier": "ສະແດງຂໍ້ຄວາມກ່ອນໜ້ານີ້",
|
||||
"session.messages.loadingEarlier": "ກຳລັງໂຫຼດຂໍ້ຄວາມກ່ອນໜ້ານີ້...",
|
||||
"session.messages.loadingEarlier": "ກຳລັງໂຫຼດຂໍ້ຄວາມກ່ອນໜ້ານີ້…",
|
||||
"session.messages.loadEarlier": "ໂຫຼດຂໍ້ຄວາມກ່ອນໜ້ານີ້",
|
||||
"session.messages.loading": "ກຳລັງໂຫຼດຂໍ້ຄວາມ...",
|
||||
"session.messages.loading": "ກຳລັງໂຫຼດຂໍ້ຄວາມ…",
|
||||
"session.messages.jumpToLatest": "ຂ້າມໄປຫາຫຼ້າສຸດ",
|
||||
"session.context.addToContext": "ເພີ່ມ {{selection}} ໃສ່ບໍລິບົດ",
|
||||
"session.todo.title": "ສິ່ງທີ່ຕ້ອງເຮັດ",
|
||||
@@ -722,7 +722,7 @@ export const dict = {
|
||||
"session.new.workspace.runIn": "ແລ່ນເຊສຊັນໃນ",
|
||||
"session.new.workspace.triggerLocal": "ທ້ອງຖິ່ນ",
|
||||
"session.new.workspace.local": "ພື້ນທີ່ເກັບຂໍ້ມູນທ້ອງຖິ່ນ",
|
||||
"session.new.workspace.existing": "ພື້ນທີ່ເຮັດວຽກ...",
|
||||
"session.new.workspace.existing": "ພື້ນທີ່ເຮັດວຽກ…",
|
||||
"session.new.git.none": "ບໍ່ມີ Git",
|
||||
"session.new.lastModified": "ດັດແກ້ຫຼ້າສຸດ",
|
||||
"session.header.search.placeholder": "ຄົ້ນຫາ {{project}}",
|
||||
@@ -761,8 +761,8 @@ export const dict = {
|
||||
"common.copied": "ສຳເນົາແລ້ວ",
|
||||
"lsp.tooltip.none": "ບໍ່ມີເຊີບເວີ LSP",
|
||||
"lsp.label.connected": "{{count}} LSP",
|
||||
"prompt.loading": "ກຳລັງໂຫຼດຂໍ້ຄວາມ...",
|
||||
"terminal.loading": "ກຳລັງໂຫຼດເຄື່ອງໃຊ້...",
|
||||
"prompt.loading": "ກຳລັງໂຫຼດຂໍ້ຄວາມ…",
|
||||
"terminal.loading": "ກຳລັງໂຫຼດເຄື່ອງໃຊ້…",
|
||||
"terminal.title": "ສະຖານີ",
|
||||
"terminal.title.numbered": "ສະຖານີ {{number}}",
|
||||
"terminal.close": "ປິດ terminal",
|
||||
@@ -923,9 +923,9 @@ export const dict = {
|
||||
"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.action.checking": "ກຳລັງກວດສອບ…",
|
||||
"settings.updates.action.downloading": "ກຳລັງດາວໂຫຼດ…",
|
||||
"settings.updates.action.installing": "ກຳລັງຕິດຕັ້ງ…",
|
||||
"settings.updates.toast.latest.title": "ທ່ານອັບເດດແລ້ວ",
|
||||
"settings.updates.toast.latest.description": "ທ່ານກຳລັງໃຊ້ OpenCode ເວີຊັນຫຼ້າສຸດ.",
|
||||
"sound.option.none": "ບໍ່ມີ",
|
||||
@@ -1072,7 +1072,7 @@ export const dict = {
|
||||
"workspace.reset.success.title": "ຣີເຊັດພື້ນທີ່ເຮັດວຽກ",
|
||||
"workspace.reset.success.description": "ພື້ນທີ່ເຮັດວຽກຕອນນີ້ກົງກັບສາຂາເລີ່ມຕົ້ນ.",
|
||||
"workspace.error.stillPreparing": "ພື້ນທີ່ເຮັດວຽກກຳລັງກະກຽມຢູ່",
|
||||
"workspace.status.checking": "ກຳລັງກວດສອບການປ່ຽນແປງທີ່ບໍ່ໄດ້ຮວມ...",
|
||||
"workspace.status.checking": "ກຳລັງກວດສອບການປ່ຽນແປງທີ່ບໍ່ໄດ້ຮວມ…",
|
||||
"workspace.status.error": "ບໍ່ສາມາດກວດສອບສະຖານະ git ໄດ້.",
|
||||
"workspace.status.clean": "ບໍ່ພົບການປ່ຽນແປງທີ່ບໍ່ຮວມເຂົ້າກັນ.",
|
||||
"workspace.status.dirty": "ກວດພົບການປ່ຽນແປງທີ່ບໍ່ຮວມຢູ່ໃນບ່ອນເຮັດວຽກນີ້.",
|
||||
|
||||
@@ -8,13 +8,13 @@ const desktop = [
|
||||
"Eiti",
|
||||
"Langas",
|
||||
"Žinynas",
|
||||
"Tikrinti, ar yra naujinimų...",
|
||||
"Tikrinti, ar yra naujinimų…",
|
||||
"Nuostatos",
|
||||
"Įkelti Webview iš naujo",
|
||||
"Paleisti iš naujo",
|
||||
"Eksportuoti žurnalus...",
|
||||
"Eksportuoti žurnalus…",
|
||||
"Naujas seansas",
|
||||
"Atverti projektą...",
|
||||
"Atverti projektą…",
|
||||
"Naujas langas",
|
||||
"Užverti langą",
|
||||
"Atšaukti",
|
||||
@@ -216,8 +216,8 @@ export const dict = {
|
||||
"provider.connect.method.apiKey": "API raktas",
|
||||
"provider.connect.method.browser": "Naršyklė",
|
||||
"provider.connect.method.headless": "Be galvos",
|
||||
"provider.connect.status.inProgress": "Vykdoma prieigos teisė...",
|
||||
"provider.connect.status.waiting": "Laukiama įgaliojimo...",
|
||||
"provider.connect.status.inProgress": "Vykdoma prieigos teisė…",
|
||||
"provider.connect.status.waiting": "Laukiama įgaliojimo…",
|
||||
"provider.connect.status.failed": "Autorizacija nepavyko: {{error}}",
|
||||
"provider.connect.apiKey.description":
|
||||
"Įveskite {{provider}} API raktą, kad susietumėte paskyrą ir naudotumėte {{provider}} modelius programoje OpenCode.",
|
||||
@@ -312,7 +312,7 @@ export const dict = {
|
||||
"common.goBack": "Grįžti atgal",
|
||||
"common.goForward": "Eikite į priekį",
|
||||
"common.loading": "Įkeliama",
|
||||
"common.loading.ellipsis": "...",
|
||||
"common.loading.ellipsis": "…",
|
||||
"common.cancel": "Atšaukti",
|
||||
"common.clear": "Išvalyti",
|
||||
"common.open": "Atidaryti",
|
||||
@@ -321,12 +321,12 @@ export const dict = {
|
||||
"common.continue": "Tęsti",
|
||||
"common.submit": "Pateikti",
|
||||
"common.save": "Išsaugoti",
|
||||
"common.saving": "Išsaugoma...",
|
||||
"common.saving": "Išsaugoma…",
|
||||
"common.default": "Numatytoji",
|
||||
"common.attachment": "priedą",
|
||||
"prompt.placeholder.shell": "Įveskite apvalkalo komandą... {{example}}",
|
||||
"prompt.placeholder.normal": 'Paklauskite bet ko... "{{example}}"',
|
||||
"prompt.placeholder.simple": "Paklausk bet ko...",
|
||||
"prompt.placeholder.shell": "Įveskite apvalkalo komandą… {{example}}",
|
||||
"prompt.placeholder.normal": 'Paklauskite bet ko… "{{example}}"',
|
||||
"prompt.placeholder.simple": "Paklausk bet ko…",
|
||||
"prompt.placeholder.summarizeComments": "Apibendrinkite komentarus…",
|
||||
"prompt.placeholder.summarizeComment": "Apibendrinti komentarą…",
|
||||
"prompt.mode.shell": "Apvalkalas",
|
||||
@@ -346,7 +346,7 @@ export const dict = {
|
||||
"prompt.example.10": "Sukurkite API dokumentaciją",
|
||||
"prompt.example.11": "Optimizuokite duomenų bazės užklausas",
|
||||
"prompt.example.12": "Pridėti įvesties patvirtinimą",
|
||||
"prompt.example.13": "Sukurkite naują komponentą...",
|
||||
"prompt.example.13": "Sukurkite naują komponentą…",
|
||||
"prompt.example.14": "Kaip įdiegti šį projektą?",
|
||||
"prompt.example.15": "Peržiūrėkite mano kodą, kad gautumėte geriausią praktiką",
|
||||
"prompt.example.16": "Prie šios funkcijos pridėkite klaidų tvarkymą",
|
||||
@@ -357,7 +357,7 @@ export const dict = {
|
||||
"prompt.example.21": "Padėkite man parašyti perkėlimo scenarijų",
|
||||
"prompt.example.22": "Įdiekite šio galutinio taško talpyklą",
|
||||
"prompt.example.23": "Į šį sąrašą įtraukite puslapius",
|
||||
"prompt.example.24": "Sukurkite komandą CLI, skirtą...",
|
||||
"prompt.example.24": "Sukurkite komandą CLI, skirtą…",
|
||||
"prompt.example.25": "Kaip čia veikia aplinkos kintamieji?",
|
||||
"prompt.popover.emptyResults": "Nėra atitinkančių rezultatų",
|
||||
"prompt.popover.emptyCommands": "Nėra atitinkamų komandų",
|
||||
@@ -409,7 +409,7 @@ export const dict = {
|
||||
"dialog.directory.parent": "Tėvas",
|
||||
"dialog.directory.readError": "Nepavyko perskaityti šio aplanko",
|
||||
"app.server.unreachable": "Nepavyko pasiekti {{server}}",
|
||||
"app.server.retrying": "Automatiškai bandoma iš naujo...",
|
||||
"app.server.retrying": "Automatiškai bandoma iš naujo…",
|
||||
"app.server.otherServers": "Kiti serveriai",
|
||||
"dialog.server.title": "Serveriai",
|
||||
"dialog.server.description": "Perjunkite, prie kurio OpenCode serverio jungiasi ši programa.",
|
||||
@@ -419,7 +419,7 @@ export const dict = {
|
||||
"dialog.server.add.url": "Serverio adresas",
|
||||
"dialog.server.add.placeholder": "http://localhost:4096",
|
||||
"dialog.server.add.error": "Nepavyko prisijungti prie serverio",
|
||||
"dialog.server.add.checking": "Tikrinama...",
|
||||
"dialog.server.add.checking": "Tikrinama…",
|
||||
"dialog.server.add.button": "Pridėti serverį",
|
||||
"dialog.server.add.name": "Serverio pavadinimas (neprivaloma)",
|
||||
"dialog.server.add.namePlaceholder": "Localhost",
|
||||
@@ -444,26 +444,26 @@ export const dict = {
|
||||
"wsl.server.label": "WSL",
|
||||
"wsl.server.menu.label": "WSL serveris",
|
||||
"wsl.server.retryStart": "Pabandykite pradėti iš naujo",
|
||||
"wsl.server.updating": "Atnaujinama...",
|
||||
"wsl.server.updating": "Atnaujinama…",
|
||||
"wsl.onboarding.step.distro": "Pasirinkite distro",
|
||||
"wsl.onboarding.step.opencode": "OpenCode",
|
||||
"wsl.onboarding.checkingRuntime": "Tikrinama WSL...",
|
||||
"wsl.onboarding.checkingRuntime": "Tikrinama WSL…",
|
||||
"wsl.onboarding.restartRequired": "Windows reikia paleisti iš naujo, kad būtų baigtas WSL diegimas.",
|
||||
"wsl.onboarding.ready": "WSL yra paruoštas.",
|
||||
"wsl.onboarding.required": "Norint tęsti, reikia WSL.",
|
||||
"wsl.onboarding.checkingDistros": "Tikrinamos distribucijos...",
|
||||
"wsl.onboarding.installingDistro": "Diegimas {{distro}}...",
|
||||
"wsl.onboarding.checkingDistro": "Tikrinama {{distro}}...",
|
||||
"wsl.onboarding.listingDistros": "Sąrašas platinimo...",
|
||||
"wsl.onboarding.checkingDistros": "Tikrinamos distribucijos…",
|
||||
"wsl.onboarding.installingDistro": "Diegimas {{distro}}…",
|
||||
"wsl.onboarding.checkingDistro": "Tikrinama {{distro}}…",
|
||||
"wsl.onboarding.listingDistros": "Sąrašas platinimo…",
|
||||
"wsl.onboarding.distroReady": "{{distro}} yra paruoštas.",
|
||||
"wsl.onboarding.distroNotInstalled": "{{distro}} dar neįdiegtas.",
|
||||
"wsl.onboarding.openDistroOnce": "Atidarykite {{distro}} vieną kartą, kad užbaigtumėte sąranką.",
|
||||
"wsl.onboarding.finishingDistro": "{{distro}} apdailos sąranka.",
|
||||
"wsl.onboarding.pickDistro": "Pasirinkite platinimą arba įdiekite jį žemiau.",
|
||||
"wsl.onboarding.checkingOpencode": "Tikrinama OpenCode...",
|
||||
"wsl.onboarding.checkingOpencodeIn": "Tikrinama OpenCode {{distro}}...",
|
||||
"wsl.onboarding.updatingOpencode": "Atnaujinamas OpenCode...",
|
||||
"wsl.onboarding.updatingOpencodeIn": "Atnaujinamas OpenCode {{distro}}...",
|
||||
"wsl.onboarding.checkingOpencode": "Tikrinama OpenCode…",
|
||||
"wsl.onboarding.checkingOpencodeIn": "Tikrinama OpenCode {{distro}}…",
|
||||
"wsl.onboarding.updatingOpencode": "Atnaujinamas OpenCode…",
|
||||
"wsl.onboarding.updatingOpencodeIn": "Atnaujinamas OpenCode {{distro}}…",
|
||||
"wsl.onboarding.updateOpencodeIn": "Atnaujinkite OpenCode {{distro}}.",
|
||||
"wsl.onboarding.updateOpencode": "Atnaujinkite OpenCode",
|
||||
"wsl.onboarding.opencodeReadyIn": "OpenCode yra paruoštas {{distro}}.",
|
||||
@@ -472,11 +472,11 @@ export const dict = {
|
||||
"wsl.onboarding.installOpencode": "Įdiekite OpenCode",
|
||||
"wsl.onboarding.chooseDistroFirst": "Pirmiausia pasirinkite distribuciją.",
|
||||
"wsl.onboarding.loadFailed": "Nepavyko įkelti WSL būsenos.",
|
||||
"wsl.onboarding.loading": "Įkeliama...",
|
||||
"wsl.onboarding.loading": "Įkeliama…",
|
||||
"wsl.onboarding.installedDistros": "Įdiegtos distribucijos",
|
||||
"wsl.onboarding.checkAgain": "Patikrinkite dar kartą",
|
||||
"wsl.onboarding.distroStatus.ready": "Paruošta",
|
||||
"wsl.onboarding.distroStatus.checking": "Tikrinama...",
|
||||
"wsl.onboarding.distroStatus.checking": "Tikrinama…",
|
||||
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode neįdiegtas",
|
||||
"wsl.onboarding.distroStatus.missingTools": "Trūksta bash, curl",
|
||||
"wsl.onboarding.distroStatus.unsupported": "Nepalaikoma · Naudokite WSL 2",
|
||||
@@ -495,7 +495,7 @@ export const dict = {
|
||||
"wsl.onboarding.allDistrosAdded": "Visos įdiegtos distribucijos jau pridėtos.",
|
||||
"wsl.onboarding.noDistros": "Dar neaptikta jokių paskirstymų.",
|
||||
"wsl.onboarding.install": "Įdiegti",
|
||||
"wsl.onboarding.installing": "Diegiama...",
|
||||
"wsl.onboarding.installing": "Diegiama…",
|
||||
"wsl.onboarding.installDistro": "Įdiekite distro",
|
||||
"wsl.onboarding.searchDistros": "Ieškoti paskirstymų",
|
||||
"wsl.onboarding.wsl2Required": "Reikalingas WSL 2.",
|
||||
@@ -507,7 +507,7 @@ export const dict = {
|
||||
"wsl.onboarding.unknown": "nežinomas",
|
||||
"wsl.onboarding.desktopVersion": "darbalaukis {{version}}",
|
||||
"wsl.onboarding.versionMismatch": "Įdiegta versija neatitinka darbalaukio programos versijos.",
|
||||
"wsl.onboarding.adding": "Pridedama...",
|
||||
"wsl.onboarding.adding": "Pridedama…",
|
||||
"dialog.project.edit.title": "Redaguoti projektą",
|
||||
"dialog.project.edit.name": "Vardas",
|
||||
"dialog.project.edit.icon": "Piktograma",
|
||||
@@ -613,7 +613,7 @@ export const dict = {
|
||||
"error.page.action.report": "Pranešti apie klaidą",
|
||||
"error.page.action.reported": "Pranešta apie klaidą",
|
||||
"error.page.action.exportLogs": "Eksportuoti žurnalus",
|
||||
"error.page.action.checking": "Tikrinama...",
|
||||
"error.page.action.checking": "Tikrinama…",
|
||||
"error.page.action.checkUpdates": "Patikrinkite, ar nėra atnaujinimų",
|
||||
"error.page.action.updateTo": "Atnaujinkite į {{version}}",
|
||||
"error.page.circular": "[Aplinkraštis]",
|
||||
@@ -692,12 +692,12 @@ export const dict = {
|
||||
"session.review.filesChanged": "Failai pakeisti {{count}}",
|
||||
"session.review.change.one": "Keisti",
|
||||
"session.review.change.other": "Pakeitimai",
|
||||
"session.review.loadingChanges": "Įkeliami pakeitimai...",
|
||||
"session.review.loadingChanges": "Įkeliami pakeitimai…",
|
||||
"session.review.empty": "Pakeitimų šioje sesijoje dar nėra",
|
||||
"session.review.noVcs": "Neaptikta Git versijos valdymo sistema, pakeitimai nerodomi",
|
||||
"session.review.noVcs.createGit.title": "Sukurkite Git saugyklą",
|
||||
"session.review.noVcs.createGit.description": "Stebėkite, peržiūrėkite ir anuliuokite šio projekto pakeitimus",
|
||||
"session.review.noVcs.createGit.actionLoading": "Kuriama Git saugykla...",
|
||||
"session.review.noVcs.createGit.actionLoading": "Kuriama Git saugykla…",
|
||||
"session.review.noVcs.createGit.action": "Sukurkite Git saugyklą",
|
||||
"session.review.noSnapshot":
|
||||
"Konfigūracijos metu momentinės nuotraukos stebėjimas išjungtas, todėl seanso pakeitimai nepasiekiami",
|
||||
@@ -709,9 +709,9 @@ export const dict = {
|
||||
"session.files.empty": "Failų nėra",
|
||||
"session.files.binaryContent": "Dvejetainis failas (turinys negali būti rodomas)",
|
||||
"session.messages.renderEarlier": "Pateikti ankstesnius pranešimus",
|
||||
"session.messages.loadingEarlier": "Įkeliami ankstesni pranešimai...",
|
||||
"session.messages.loadingEarlier": "Įkeliami ankstesni pranešimai…",
|
||||
"session.messages.loadEarlier": "Įkelti ankstesnius pranešimus",
|
||||
"session.messages.loading": "Įkeliami pranešimai...",
|
||||
"session.messages.loading": "Įkeliami pranešimai…",
|
||||
"session.messages.jumpToLatest": "Pereiti prie naujausio",
|
||||
"session.context.addToContext": "Pridėkite {{selection}} prie konteksto",
|
||||
"session.todo.title": "Užduotys",
|
||||
@@ -774,8 +774,8 @@ export const dict = {
|
||||
"common.copied": "Nukopijuota",
|
||||
"lsp.tooltip.none": "Nėra LSP serverių",
|
||||
"lsp.label.connected": "{{count}} LSP",
|
||||
"prompt.loading": "Įkeliamas raginimas...",
|
||||
"terminal.loading": "Įkeliamas terminalas...",
|
||||
"prompt.loading": "Įkeliamas raginimas…",
|
||||
"terminal.loading": "Įkeliamas terminalas…",
|
||||
"terminal.title": "Terminalas",
|
||||
"terminal.title.numbered": "Terminalas {{number}}",
|
||||
"terminal.close": "Uždarykite terminalą",
|
||||
@@ -939,9 +939,9 @@ export const dict = {
|
||||
"settings.updates.row.check.title": "Patikrinkite, ar nėra atnaujinimų",
|
||||
"settings.updates.row.check.description": "Rankiniu būdu patikrinkite, ar nėra naujinimų, ir įdiekite, jei yra",
|
||||
"settings.updates.action.checkNow": "Patikrinkite dabar",
|
||||
"settings.updates.action.checking": "Tikrinama...",
|
||||
"settings.updates.action.downloading": "Atsisiunčiama...",
|
||||
"settings.updates.action.installing": "Diegiama...",
|
||||
"settings.updates.action.checking": "Tikrinama…",
|
||||
"settings.updates.action.downloading": "Atsisiunčiama…",
|
||||
"settings.updates.action.installing": "Diegiama…",
|
||||
"settings.updates.toast.latest.title": "Jūs esate atnaujintas",
|
||||
"settings.updates.toast.latest.description": "Naudojate naujausią OpenCode versiją.",
|
||||
"sound.option.none": "Nėra",
|
||||
@@ -1090,7 +1090,7 @@ export const dict = {
|
||||
"workspace.reset.success.title": "Darbo sritis nustatyta iš naujo",
|
||||
"workspace.reset.success.description": "Dabar darbo sritis atitinka numatytąją šaką.",
|
||||
"workspace.error.stillPreparing": "Darbo vieta vis dar ruošiama",
|
||||
"workspace.status.checking": "Tikrinama, ar nėra nesujungtų pakeitimų...",
|
||||
"workspace.status.checking": "Tikrinama, ar nėra nesujungtų pakeitimų…",
|
||||
"workspace.status.error": "Nepavyko patvirtinti git būsenos.",
|
||||
"workspace.status.clean": "Neaptikta jokių nesujungtų pakeitimų.",
|
||||
"workspace.status.dirty": "Šioje darbo srityje aptikti nesujungti pakeitimai.",
|
||||
|
||||
@@ -6,13 +6,13 @@ export const dict = {
|
||||
"desktop.menu.go": "Iet",
|
||||
"desktop.menu.window": "Logs",
|
||||
"desktop.menu.help": "Palīdzība",
|
||||
"desktop.menu.checkForUpdates": "Pārbaudīt atjauninājumus...",
|
||||
"desktop.menu.checkForUpdates": "Pārbaudīt atjauninājumus…",
|
||||
"desktop.menu.settings": "Iestatījumi",
|
||||
"desktop.menu.reloadWebview": "Pārlādēt tīmekļa skatu",
|
||||
"desktop.menu.restart": "Restartēt",
|
||||
"desktop.menu.exportLogs": "Eksportēt žurnālus...",
|
||||
"desktop.menu.exportLogs": "Eksportēt žurnālus…",
|
||||
"desktop.menu.newSession": "Jauna sesija",
|
||||
"desktop.menu.openProject": "Atvērt projektu...",
|
||||
"desktop.menu.openProject": "Atvērt projektu…",
|
||||
"desktop.menu.newWindow": "Jauns logs",
|
||||
"desktop.menu.closeWindow": "Aizvērt logu",
|
||||
"desktop.menu.undo": "Atsaukt",
|
||||
@@ -212,8 +212,8 @@ export const dict = {
|
||||
"provider.connect.method.apiKey": "API atslēga",
|
||||
"provider.connect.method.browser": "Pārlūks",
|
||||
"provider.connect.method.headless": "Bezgalvas režīms",
|
||||
"provider.connect.status.inProgress": "Notiek autorizācija...",
|
||||
"provider.connect.status.waiting": "Gaida autorizāciju...",
|
||||
"provider.connect.status.inProgress": "Notiek autorizācija…",
|
||||
"provider.connect.status.waiting": "Gaida autorizāciju…",
|
||||
"provider.connect.status.failed": "Autorizācija neizdevās: {{error}}",
|
||||
"provider.connect.apiKey.description":
|
||||
"Ievadiet savu {{provider}} API atslēgu, lai savienotu kontu un izmantotu {{provider}} modeļus OpenCode.",
|
||||
@@ -307,7 +307,7 @@ export const dict = {
|
||||
"common.goBack": "Atpakaļ",
|
||||
"common.goForward": "Uz priekšu",
|
||||
"common.loading": "Ielādējas",
|
||||
"common.loading.ellipsis": "...",
|
||||
"common.loading.ellipsis": "…",
|
||||
"common.cancel": "Atcelt",
|
||||
"common.clear": "Notīrīt",
|
||||
"common.open": "Atvērt",
|
||||
@@ -316,12 +316,12 @@ export const dict = {
|
||||
"common.continue": "Turpināt",
|
||||
"common.submit": "Iesniegt",
|
||||
"common.save": "Saglabāt",
|
||||
"common.saving": "Saglabājas...",
|
||||
"common.saving": "Saglabājas…",
|
||||
"common.default": "Noklusējums",
|
||||
"common.attachment": "pielikums",
|
||||
"prompt.placeholder.shell": "Ievadiet čaulas komandu... {{example}}",
|
||||
"prompt.placeholder.normal": 'Uzdodiet jebko... "{{example}}"',
|
||||
"prompt.placeholder.simple": "Uzdodiet jebko...",
|
||||
"prompt.placeholder.shell": "Ievadiet čaulas komandu… {{example}}",
|
||||
"prompt.placeholder.normal": 'Uzdodiet jebko… "{{example}}"',
|
||||
"prompt.placeholder.simple": "Uzdodiet jebko…",
|
||||
"prompt.placeholder.summarizeComments": "Kopsavilkt komentārus…",
|
||||
"prompt.placeholder.summarizeComment": "Kopsavilkt komentāru…",
|
||||
"prompt.mode.shell": "Čaula",
|
||||
@@ -341,7 +341,7 @@ export const dict = {
|
||||
"prompt.example.10": "Ģenerē API dokumentāciju",
|
||||
"prompt.example.11": "Optimizē datubāzes vaicājumus",
|
||||
"prompt.example.12": "Pievieno ievades validāciju",
|
||||
"prompt.example.13": "Izveido jaunu komponenti...",
|
||||
"prompt.example.13": "Izveido jaunu komponenti…",
|
||||
"prompt.example.14": "Kā izvietot šo projektu?",
|
||||
"prompt.example.15": "Pārskati manu kodu labākajai praksei",
|
||||
"prompt.example.16": "Pievieno kļūdu apstrādi šai funkcijai",
|
||||
@@ -352,7 +352,7 @@ export const dict = {
|
||||
"prompt.example.21": "Palīdzi uzrakstīt migrācijas skriptu",
|
||||
"prompt.example.22": "Ievies kešošanu šim galapunktam",
|
||||
"prompt.example.23": "Pievieno lapošanu šim sarakstam",
|
||||
"prompt.example.24": "Izveido CLI komandu...",
|
||||
"prompt.example.24": "Izveido CLI komandu…",
|
||||
"prompt.example.25": "Kā šeit darbojas vides mainīgie?",
|
||||
"prompt.popover.emptyResults": "Nav atbilstošu rezultātu",
|
||||
"prompt.popover.emptyCommands": "Nav atbilstošu komandu",
|
||||
@@ -404,7 +404,7 @@ export const dict = {
|
||||
"dialog.directory.parent": "Vecāks",
|
||||
"dialog.directory.readError": "Neizdevās nolasīt šo mapi",
|
||||
"app.server.unreachable": "Neizdevās sasniegt {{server}}",
|
||||
"app.server.retrying": "Automātiska atkārtota mēģināšana...",
|
||||
"app.server.retrying": "Automātiska atkārtota mēģināšana…",
|
||||
"app.server.otherServers": "Citi serveri",
|
||||
"dialog.server.title": "Serveri",
|
||||
"dialog.server.description": "Mainiet, pie kura OpenCode servera šī lietotne pieslēdzas.",
|
||||
@@ -414,7 +414,7 @@ export const dict = {
|
||||
"dialog.server.add.url": "Servera adrese",
|
||||
"dialog.server.add.placeholder": "http://localhost:4096",
|
||||
"dialog.server.add.error": "Neizdevās izveidot savienojumu ar serveri",
|
||||
"dialog.server.add.checking": "Pārbauda...",
|
||||
"dialog.server.add.checking": "Pārbauda…",
|
||||
"dialog.server.add.button": "Pievienot serveri",
|
||||
"dialog.server.add.name": "Servera nosaukums (nav obligāti)",
|
||||
"dialog.server.add.namePlaceholder": "Localhost",
|
||||
@@ -439,26 +439,26 @@ export const dict = {
|
||||
"wsl.server.label": "WSL",
|
||||
"wsl.server.menu.label": "WSL serveris",
|
||||
"wsl.server.retryStart": "Mēģināt vēlreiz",
|
||||
"wsl.server.updating": "Atjaunina...",
|
||||
"wsl.server.updating": "Atjaunina…",
|
||||
"wsl.onboarding.step.distro": "Izvēlieties distribūciju",
|
||||
"wsl.onboarding.step.opencode": "OpenCode",
|
||||
"wsl.onboarding.checkingRuntime": "Pārbauda WSL...",
|
||||
"wsl.onboarding.checkingRuntime": "Pārbauda WSL…",
|
||||
"wsl.onboarding.restartRequired": "Lai pabeigtu WSL instalēšanu, nepieciešama Windows pārstartēšana.",
|
||||
"wsl.onboarding.ready": "WSL ir gatavs.",
|
||||
"wsl.onboarding.required": "Turpināšanai nepieciešams WSL.",
|
||||
"wsl.onboarding.checkingDistros": "Pārbauda distribūcijas...",
|
||||
"wsl.onboarding.installingDistro": "Instalē {{distro}}...",
|
||||
"wsl.onboarding.checkingDistro": "Pārbauda {{distro}}...",
|
||||
"wsl.onboarding.listingDistros": "Uzskaita distribūcijas...",
|
||||
"wsl.onboarding.checkingDistros": "Pārbauda distribūcijas…",
|
||||
"wsl.onboarding.installingDistro": "Instalē {{distro}}…",
|
||||
"wsl.onboarding.checkingDistro": "Pārbauda {{distro}}…",
|
||||
"wsl.onboarding.listingDistros": "Uzskaita distribūcijas…",
|
||||
"wsl.onboarding.distroReady": "{{distro}} ir gatava.",
|
||||
"wsl.onboarding.distroNotInstalled": "{{distro}} vēl nav instalēta.",
|
||||
"wsl.onboarding.openDistroOnce": "Atveriet {{distro}} vienu reizi, lai pabeigtu iestatīšanu.",
|
||||
"wsl.onboarding.finishingDistro": "Pabeidzu {{distro}} iestatīšanu.",
|
||||
"wsl.onboarding.pickDistro": "Izvēlieties distribūciju vai instalējiet kādu no zemāk redzamajām.",
|
||||
"wsl.onboarding.checkingOpencode": "Pārbaudu OpenCode...",
|
||||
"wsl.onboarding.checkingOpencodeIn": "Pārbaudu OpenCode distribūcijā {{distro}}...",
|
||||
"wsl.onboarding.updatingOpencode": "Atjauninu OpenCode...",
|
||||
"wsl.onboarding.updatingOpencodeIn": "Atjauninu OpenCode distribūcijā {{distro}}...",
|
||||
"wsl.onboarding.checkingOpencode": "Pārbaudu OpenCode…",
|
||||
"wsl.onboarding.checkingOpencodeIn": "Pārbaudu OpenCode distribūcijā {{distro}}…",
|
||||
"wsl.onboarding.updatingOpencode": "Atjauninu OpenCode…",
|
||||
"wsl.onboarding.updatingOpencodeIn": "Atjauninu OpenCode distribūcijā {{distro}}…",
|
||||
"wsl.onboarding.updateOpencodeIn": "Atjauniniet OpenCode distribūcijā {{distro}}.",
|
||||
"wsl.onboarding.updateOpencode": "Atjauniniet OpenCode",
|
||||
"wsl.onboarding.opencodeReadyIn": "OpenCode ir gatavs distribūcijā {{distro}}.",
|
||||
@@ -467,11 +467,11 @@ export const dict = {
|
||||
"wsl.onboarding.installOpencode": "Instalējiet OpenCode",
|
||||
"wsl.onboarding.chooseDistroFirst": "Vispirms izvēlieties distribūciju.",
|
||||
"wsl.onboarding.loadFailed": "Neizdevās ielādēt WSL stāvokli.",
|
||||
"wsl.onboarding.loading": "Ielādē...",
|
||||
"wsl.onboarding.loading": "Ielādē…",
|
||||
"wsl.onboarding.installedDistros": "Instalētās distribūcijas",
|
||||
"wsl.onboarding.checkAgain": "Pārbaudīt vēlreiz",
|
||||
"wsl.onboarding.distroStatus.ready": "Gatavs",
|
||||
"wsl.onboarding.distroStatus.checking": "Pārbaudu...",
|
||||
"wsl.onboarding.distroStatus.checking": "Pārbaudu…",
|
||||
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode nav instalēts",
|
||||
"wsl.onboarding.distroStatus.missingTools": "Trūkst bash, curl",
|
||||
"wsl.onboarding.distroStatus.unsupported": "Nav atbalstīts · Izmantojiet WSL 2",
|
||||
@@ -490,7 +490,7 @@ export const dict = {
|
||||
"wsl.onboarding.allDistrosAdded": "Visas instalētās distribūcijas jau ir pievienotas.",
|
||||
"wsl.onboarding.noDistros": "Distribūcijas vēl nav atrastas.",
|
||||
"wsl.onboarding.install": "Instalēt",
|
||||
"wsl.onboarding.installing": "Notiek instalēšana...",
|
||||
"wsl.onboarding.installing": "Notiek instalēšana…",
|
||||
"wsl.onboarding.installDistro": "Instalēt distribūciju",
|
||||
"wsl.onboarding.searchDistros": "Meklēt distribūcijas",
|
||||
"wsl.onboarding.wsl2Required": "Nepieciešams WSL 2.",
|
||||
@@ -502,7 +502,7 @@ export const dict = {
|
||||
"wsl.onboarding.unknown": "nezināms",
|
||||
"wsl.onboarding.desktopVersion": "darbvirsmas {{version}}",
|
||||
"wsl.onboarding.versionMismatch": "Instalētā versija neatbilst darbvirsmas lietotnes versijai.",
|
||||
"wsl.onboarding.adding": "Pievieno...",
|
||||
"wsl.onboarding.adding": "Pievieno…",
|
||||
"dialog.project.edit.title": "Rediģēt projektu",
|
||||
"dialog.project.edit.name": "Nosaukums",
|
||||
"dialog.project.edit.icon": "Ikona",
|
||||
@@ -607,7 +607,7 @@ export const dict = {
|
||||
"error.page.action.report": "Ziņot par kļūdu",
|
||||
"error.page.action.reported": "Kļūda ziņota",
|
||||
"error.page.action.exportLogs": "Eksportēt žurnālus",
|
||||
"error.page.action.checking": "Pārbauda...",
|
||||
"error.page.action.checking": "Pārbauda…",
|
||||
"error.page.action.checkUpdates": "Pārbaudīt atjauninājumus",
|
||||
"error.page.action.updateTo": "Atjaunināt uz {{version}}",
|
||||
"error.page.circular": "[Ciklisks]",
|
||||
@@ -687,12 +687,12 @@ export const dict = {
|
||||
"session.review.filesChanged": "Mainīti faili: {{count}}",
|
||||
"session.review.change.one": "Izmaiņa",
|
||||
"session.review.change.other": "Izmaiņas",
|
||||
"session.review.loadingChanges": "Notiek izmaiņu ielāde...",
|
||||
"session.review.loadingChanges": "Notiek izmaiņu ielāde…",
|
||||
"session.review.empty": "Šajā sesijā vēl nav izmaiņu",
|
||||
"session.review.noVcs": "Nav atrasta Git versiju kontrole, izmaiņas netiek rādītas",
|
||||
"session.review.noVcs.createGit.title": "Izveidot Git repozitoriju",
|
||||
"session.review.noVcs.createGit.description": "Izseko, pārskati un atsauc izmaiņas šajā projektā",
|
||||
"session.review.noVcs.createGit.actionLoading": "Notiek Git repozitorija izveide...",
|
||||
"session.review.noVcs.createGit.actionLoading": "Notiek Git repozitorija izveide…",
|
||||
"session.review.noVcs.createGit.action": "Izveidot Git repozitoriju",
|
||||
"session.review.noSnapshot":
|
||||
"Konfigurācijā atspējota momentuzņēmumu izsekošana, tāpēc sesijas izmaiņas nav pieejamas",
|
||||
@@ -704,9 +704,9 @@ export const dict = {
|
||||
"session.files.empty": "Nav failu",
|
||||
"session.files.binaryContent": "Binārs fails (saturs nav skatāms)",
|
||||
"session.messages.renderEarlier": "Rādīt agrākos ziņojumus",
|
||||
"session.messages.loadingEarlier": "Notiek agrāko ziņojumu ielāde...",
|
||||
"session.messages.loadingEarlier": "Notiek agrāko ziņojumu ielāde…",
|
||||
"session.messages.loadEarlier": "Ielādēt agrākos ziņojumus",
|
||||
"session.messages.loading": "Notiek ziņojumu ielāde...",
|
||||
"session.messages.loading": "Notiek ziņojumu ielāde…",
|
||||
"session.messages.jumpToLatest": "Pāriet uz jaunāko",
|
||||
"session.context.addToContext": "Pievienot {{selection}} kontekstam",
|
||||
"session.todo.title": "Darāmais",
|
||||
@@ -768,8 +768,8 @@ export const dict = {
|
||||
"common.copied": "Nokopēts",
|
||||
"lsp.tooltip.none": "Nav LSP serveru",
|
||||
"lsp.label.connected": "{{count}} LSP",
|
||||
"prompt.loading": "Ielādē uzvedni...",
|
||||
"terminal.loading": "Ielādē termināli...",
|
||||
"prompt.loading": "Ielādē uzvedni…",
|
||||
"terminal.loading": "Ielādē termināli…",
|
||||
"terminal.title": "Terminālis",
|
||||
"terminal.title.numbered": "Terminālis {{number}}",
|
||||
"terminal.close": "Aizvērt termināli",
|
||||
@@ -933,9 +933,9 @@ export const dict = {
|
||||
"settings.updates.row.check.title": "Pārbaudīt atjauninājumus",
|
||||
"settings.updates.row.check.description": "Manuāli pārbaudīt un instalēt atjauninājumus, ja pieejami",
|
||||
"settings.updates.action.checkNow": "Pārbaudīt tagad",
|
||||
"settings.updates.action.checking": "Pārbauda...",
|
||||
"settings.updates.action.downloading": "Lejupielādē...",
|
||||
"settings.updates.action.installing": "Instalē...",
|
||||
"settings.updates.action.checking": "Pārbauda…",
|
||||
"settings.updates.action.downloading": "Lejupielādē…",
|
||||
"settings.updates.action.installing": "Instalē…",
|
||||
"settings.updates.toast.latest.title": "Jums ir jaunākā versija",
|
||||
"settings.updates.toast.latest.description": "Jūs izmantojat jaunāko OpenCode versiju.",
|
||||
"sound.option.none": "Nav",
|
||||
@@ -1082,7 +1082,7 @@ export const dict = {
|
||||
"workspace.reset.success.title": "Darba vide atiestatīta",
|
||||
"workspace.reset.success.description": "Darba vide tagad atbilst noklusētajam zaram.",
|
||||
"workspace.error.stillPreparing": "Darba vide vēl tiek sagatavota",
|
||||
"workspace.status.checking": "Pārbauda nesapludinātās izmaiņas...",
|
||||
"workspace.status.checking": "Pārbauda nesapludinātās izmaiņas…",
|
||||
"workspace.status.error": "Nevar pārbaudīt git statusu.",
|
||||
"workspace.status.clean": "Nesapludinātas izmaiņas nav atrastas.",
|
||||
"workspace.status.dirty": "Šajā darba vidē ir nesapludinātas izmaiņas.",
|
||||
|
||||
@@ -6,13 +6,13 @@ export const dict = {
|
||||
"desktop.menu.go": "Оди",
|
||||
"desktop.menu.window": "Прозорец",
|
||||
"desktop.menu.help": "Помош",
|
||||
"desktop.menu.checkForUpdates": "Проверете дали има ажурирања...",
|
||||
"desktop.menu.checkForUpdates": "Проверете дали има ажурирања…",
|
||||
"desktop.menu.settings": "Поставки",
|
||||
"desktop.menu.reloadWebview": "Вчитај повторно Webview",
|
||||
"desktop.menu.restart": "Рестартирајте",
|
||||
"desktop.menu.exportLogs": "Извези дневници...",
|
||||
"desktop.menu.exportLogs": "Извези дневници…",
|
||||
"desktop.menu.newSession": "Нова сесија",
|
||||
"desktop.menu.openProject": "Отворен проект...",
|
||||
"desktop.menu.openProject": "Отворен проект…",
|
||||
"desktop.menu.newWindow": "Нов прозорец",
|
||||
"desktop.menu.closeWindow": "Затвори го прозорецот",
|
||||
"desktop.menu.undo": "Врати",
|
||||
@@ -213,8 +213,8 @@ export const dict = {
|
||||
"provider.connect.method.apiKey": "клуч API",
|
||||
"provider.connect.method.browser": "Прелистувач",
|
||||
"provider.connect.method.headless": "Без глава",
|
||||
"provider.connect.status.inProgress": "Овластувањето е во тек...",
|
||||
"provider.connect.status.waiting": "Се чека овластување...",
|
||||
"provider.connect.status.inProgress": "Овластувањето е во тек…",
|
||||
"provider.connect.status.waiting": "Се чека овластување…",
|
||||
"provider.connect.status.failed": "Овластувањето не успеа: {{error}}",
|
||||
"provider.connect.apiKey.description":
|
||||
"Внесете го вашиот клуч {{provider}} API за да ја поврзете вашата сметка и да користите {{provider}} модели во OpenCode.",
|
||||
@@ -308,7 +308,7 @@ export const dict = {
|
||||
"common.goBack": "Одете назад",
|
||||
"common.goForward": "Одете напред",
|
||||
"common.loading": "Се вчитува",
|
||||
"common.loading.ellipsis": "...",
|
||||
"common.loading.ellipsis": "…",
|
||||
"common.cancel": "Откажи",
|
||||
"common.clear": "Јасно",
|
||||
"common.open": "Отвори",
|
||||
@@ -317,12 +317,12 @@ export const dict = {
|
||||
"common.continue": "Продолжи",
|
||||
"common.submit": "Поднесете",
|
||||
"common.save": "Зачувај",
|
||||
"common.saving": "Се зачувува...",
|
||||
"common.saving": "Се зачувува…",
|
||||
"common.default": "Стандардно",
|
||||
"common.attachment": "приврзаност",
|
||||
"prompt.placeholder.shell": "Внесете школка команда... {{example}}",
|
||||
"prompt.placeholder.normal": 'Прашај што било... "{{example}}"',
|
||||
"prompt.placeholder.simple": "Прашај што било...",
|
||||
"prompt.placeholder.shell": "Внесете школка команда… {{example}}",
|
||||
"prompt.placeholder.normal": 'Прашај што било… "{{example}}"',
|
||||
"prompt.placeholder.simple": "Прашај што било…",
|
||||
"prompt.placeholder.summarizeComments": "Сумирајте ги коментарите…",
|
||||
"prompt.placeholder.summarizeComment": "Сумирајте го коментарот…",
|
||||
"prompt.mode.shell": "Школка",
|
||||
@@ -342,7 +342,7 @@ export const dict = {
|
||||
"prompt.example.10": "Создадете API документација",
|
||||
"prompt.example.11": "Оптимизирајте ги барањата за базата на податоци",
|
||||
"prompt.example.12": "Додадете валидација на влезот",
|
||||
"prompt.example.13": "Создадете нова компонента за...",
|
||||
"prompt.example.13": "Создадете нова компонента за…",
|
||||
"prompt.example.14": "Како да го распоредам овој проект?",
|
||||
"prompt.example.15": "Прегледајте го мојот код за најдобри практики",
|
||||
"prompt.example.16": "Додајте справување со грешки на оваа функција",
|
||||
@@ -353,7 +353,7 @@ export const dict = {
|
||||
"prompt.example.21": "Помогнете ми да напишам скрипта за миграција",
|
||||
"prompt.example.22": "Спроведување на кеширање за оваа крајна точка",
|
||||
"prompt.example.23": "Додајте страници на оваа листа",
|
||||
"prompt.example.24": "Направете CLI команда за...",
|
||||
"prompt.example.24": "Направете CLI команда за…",
|
||||
"prompt.example.25": "Како функционираат променливите на животната средина овде?",
|
||||
"prompt.popover.emptyResults": "Нема соодветни резултати",
|
||||
"prompt.popover.emptyCommands": "Нема соодветни команди",
|
||||
@@ -405,7 +405,7 @@ export const dict = {
|
||||
"dialog.directory.parent": "Родител",
|
||||
"dialog.directory.readError": "Не може да се прочита оваа папка",
|
||||
"app.server.unreachable": "Не можеше да достигне {{server}}",
|
||||
"app.server.retrying": "Автоматски се обидува повторно...",
|
||||
"app.server.retrying": "Автоматски се обидува повторно…",
|
||||
"app.server.otherServers": "Други сервери",
|
||||
"dialog.server.title": "Сервери",
|
||||
"dialog.server.description": "Променете на кој OpenCode сервер се поврзува оваа апликација.",
|
||||
@@ -415,7 +415,7 @@ export const dict = {
|
||||
"dialog.server.add.url": "Адреса на серверот",
|
||||
"dialog.server.add.placeholder": "http://localhost:4096",
|
||||
"dialog.server.add.error": "Не може да се поврзе со серверот",
|
||||
"dialog.server.add.checking": "Се проверува...",
|
||||
"dialog.server.add.checking": "Се проверува…",
|
||||
"dialog.server.add.button": "Додај сервер",
|
||||
"dialog.server.add.name": "Име на сервер (изборно)",
|
||||
"dialog.server.add.namePlaceholder": "Localhost",
|
||||
@@ -440,26 +440,26 @@ export const dict = {
|
||||
"wsl.server.label": "WSL",
|
||||
"wsl.server.menu.label": "WSL сервер",
|
||||
"wsl.server.retryStart": "Обидете се повторно да започнете",
|
||||
"wsl.server.updating": "Се ажурира...",
|
||||
"wsl.server.updating": "Се ажурира…",
|
||||
"wsl.onboarding.step.distro": "Изберете дистрибуција",
|
||||
"wsl.onboarding.step.opencode": "OpenCode",
|
||||
"wsl.onboarding.checkingRuntime": "Се проверува WSL...",
|
||||
"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.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": "Се проверува OpenCode во {{distro}}...",
|
||||
"wsl.onboarding.updatingOpencode": "Се ажурира OpenCode...",
|
||||
"wsl.onboarding.updatingOpencodeIn": "Се ажурира OpenCode во {{distro}}...",
|
||||
"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.updateOpencode": "Ажурирај OpenCode",
|
||||
"wsl.onboarding.opencodeReadyIn": "OpenCode е подготвен во {{distro}}.",
|
||||
@@ -468,11 +468,11 @@ export const dict = {
|
||||
"wsl.onboarding.installOpencode": "Инсталирај OpenCode",
|
||||
"wsl.onboarding.chooseDistroFirst": "Прво изберете дистрибуција.",
|
||||
"wsl.onboarding.loadFailed": "Не успеа да се вчита WSL состојба.",
|
||||
"wsl.onboarding.loading": "Се вчитува...",
|
||||
"wsl.onboarding.loading": "Се вчитува…",
|
||||
"wsl.onboarding.installedDistros": "Инсталирани дистрибуции",
|
||||
"wsl.onboarding.checkAgain": "Проверете повторно",
|
||||
"wsl.onboarding.distroStatus.ready": "Подготвени",
|
||||
"wsl.onboarding.distroStatus.checking": "Се проверува...",
|
||||
"wsl.onboarding.distroStatus.checking": "Се проверува…",
|
||||
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode не е инсталиран",
|
||||
"wsl.onboarding.distroStatus.missingTools": "Недостасува bash, curl",
|
||||
"wsl.onboarding.distroStatus.unsupported": "Неподдржано · Користете WSL 2",
|
||||
@@ -491,7 +491,7 @@ export const dict = {
|
||||
"wsl.onboarding.allDistrosAdded": "Сите инсталирани дистрибуции се веќе додадени.",
|
||||
"wsl.onboarding.noDistros": "Сè уште не се откриени дистрибуции.",
|
||||
"wsl.onboarding.install": "Инсталирајте",
|
||||
"wsl.onboarding.installing": "Се инсталира...",
|
||||
"wsl.onboarding.installing": "Се инсталира…",
|
||||
"wsl.onboarding.installDistro": "Инсталирајте distro",
|
||||
"wsl.onboarding.searchDistros": "Пребарувајте дистрибуции",
|
||||
"wsl.onboarding.wsl2Required": "WSL 2 е потребно.",
|
||||
@@ -503,7 +503,7 @@ export const dict = {
|
||||
"wsl.onboarding.unknown": "непознат",
|
||||
"wsl.onboarding.desktopVersion": "работна површина {{version}}",
|
||||
"wsl.onboarding.versionMismatch": "Инсталираната верзија не се совпаѓа со верзијата на апликацијата за десктоп.",
|
||||
"wsl.onboarding.adding": "Се додава...",
|
||||
"wsl.onboarding.adding": "Се додава…",
|
||||
"dialog.project.edit.title": "Уреди проект",
|
||||
"dialog.project.edit.name": "Име",
|
||||
"dialog.project.edit.icon": "Икона",
|
||||
@@ -609,7 +609,7 @@ export const dict = {
|
||||
"error.page.action.report": "Пријавете грешка",
|
||||
"error.page.action.reported": "Пријавена грешка",
|
||||
"error.page.action.exportLogs": "Извоз на дневници",
|
||||
"error.page.action.checking": "Се проверува...",
|
||||
"error.page.action.checking": "Се проверува…",
|
||||
"error.page.action.checkUpdates": "Проверете дали има ажурирања",
|
||||
"error.page.action.updateTo": "Ажурирајте до {{version}}",
|
||||
"error.page.circular": "[Кружни]",
|
||||
@@ -688,12 +688,12 @@ export const dict = {
|
||||
"session.review.filesChanged": "Променети датотеки {{count}}",
|
||||
"session.review.change.one": "Промена",
|
||||
"session.review.change.other": "Промени",
|
||||
"session.review.loadingChanges": "Се вчитуваат промените...",
|
||||
"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.actionLoading": "Се создава складиште Git…",
|
||||
"session.review.noVcs.createGit.action": "Креирај Git складиште",
|
||||
"session.review.noSnapshot":
|
||||
"Следењето снимки е оневозможено во конфигурацијата, така што промените на сесиите не се достапни",
|
||||
@@ -705,9 +705,9 @@ export const dict = {
|
||||
"session.files.empty": "Нема датотеки",
|
||||
"session.files.binaryContent": "Бинарна датотека (содржината не може да се прикаже)",
|
||||
"session.messages.renderEarlier": "Рендерирајте ги претходните пораки",
|
||||
"session.messages.loadingEarlier": "Се вчитуваат претходните пораки...",
|
||||
"session.messages.loadingEarlier": "Се вчитуваат претходните пораки…",
|
||||
"session.messages.loadEarlier": "Вчитај претходни пораки",
|
||||
"session.messages.loading": "Се вчитуваат пораки...",
|
||||
"session.messages.loading": "Се вчитуваат пораки…",
|
||||
"session.messages.jumpToLatest": "Скокни до најновото",
|
||||
"session.context.addToContext": "Додајте {{selection}} во контекст",
|
||||
"session.todo.title": "Тодос",
|
||||
@@ -768,8 +768,8 @@ export const dict = {
|
||||
"common.copied": "Копирано",
|
||||
"lsp.tooltip.none": "Нема LSP сервери",
|
||||
"lsp.label.connected": "{{count}} LSP",
|
||||
"prompt.loading": "Се вчитува известувањето...",
|
||||
"terminal.loading": "Се вчитува терминал...",
|
||||
"prompt.loading": "Се вчитува известувањето…",
|
||||
"terminal.loading": "Се вчитува терминал…",
|
||||
"terminal.title": "Терминал",
|
||||
"terminal.title.numbered": "Терминал {{number}}",
|
||||
"terminal.close": "Затворете го терминалот",
|
||||
@@ -937,9 +937,9 @@ export const dict = {
|
||||
"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.action.checking": "Се проверува…",
|
||||
"settings.updates.action.downloading": "Се презема…",
|
||||
"settings.updates.action.installing": "Се инсталира…",
|
||||
"settings.updates.toast.latest.title": "Ажуриран си",
|
||||
"settings.updates.toast.latest.description": "Ја извршувате најновата верзија на OpenCode.",
|
||||
"sound.option.none": "Никој",
|
||||
@@ -1086,7 +1086,7 @@ export const dict = {
|
||||
"workspace.reset.success.title": "Ресетирање на работниот простор",
|
||||
"workspace.reset.success.description": "Работниот простор сега се совпаѓа со стандардната гранка.",
|
||||
"workspace.error.stillPreparing": "Работниот простор сè уште се подготвува",
|
||||
"workspace.status.checking": "Се проверува за неспоени промени...",
|
||||
"workspace.status.checking": "Се проверува за неспоени промени…",
|
||||
"workspace.status.error": "Не може да се потврди статусот на git.",
|
||||
"workspace.status.clean": "Не се откриени неповрзани промени.",
|
||||
"workspace.status.dirty": "Откриени несоединети промени во овој работен простор.",
|
||||
|
||||
@@ -6,13 +6,13 @@ export const dict = {
|
||||
"desktop.menu.go": "Яв",
|
||||
"desktop.menu.window": "Цонх",
|
||||
"desktop.menu.help": "Туслаач",
|
||||
"desktop.menu.checkForUpdates": "Шинэчлэлтүүдийг шалгана уу...",
|
||||
"desktop.menu.checkForUpdates": "Шинэчлэлтүүдийг шалгана уу…",
|
||||
"desktop.menu.settings": "Тохиргоо",
|
||||
"desktop.menu.reloadWebview": "Дахин ачаалах Webview",
|
||||
"desktop.menu.restart": "Дахин эхлүүлэх",
|
||||
"desktop.menu.exportLogs": "Лог экспортлох...",
|
||||
"desktop.menu.exportLogs": "Лог экспортлох…",
|
||||
"desktop.menu.newSession": "Шинэ сесс",
|
||||
"desktop.menu.openProject": "Нээлттэй төсөл...",
|
||||
"desktop.menu.openProject": "Нээлттэй төсөл…",
|
||||
"desktop.menu.newWindow": "Шинэ цонх",
|
||||
"desktop.menu.closeWindow": "Цонхыг хаах",
|
||||
"desktop.menu.undo": "Буцаах",
|
||||
@@ -215,8 +215,8 @@ export const dict = {
|
||||
"provider.connect.method.apiKey": "API түлхүүр",
|
||||
"provider.connect.method.browser": "Хөтөч",
|
||||
"provider.connect.method.headless": "Толгойгүй",
|
||||
"provider.connect.status.inProgress": "Зөвшөөрөл хийгдэж байна...",
|
||||
"provider.connect.status.waiting": "Зөвшөөрөл хүлээж байна...",
|
||||
"provider.connect.status.inProgress": "Зөвшөөрөл хийгдэж байна…",
|
||||
"provider.connect.status.waiting": "Зөвшөөрөл хүлээж байна…",
|
||||
"provider.connect.status.failed": "Зөвшөөрөл амжилтгүй болсон: {{error}}",
|
||||
"provider.connect.apiKey.description":
|
||||
"Бүртгэлээ холбохын тулд {{provider}} API түлхүүрээ оруулаад OpenCode-д {{provider}} загварыг ашиглана уу.",
|
||||
@@ -310,7 +310,7 @@ export const dict = {
|
||||
"common.goBack": "Буцах",
|
||||
"common.goForward": "Урагшаа чиглүүлэх",
|
||||
"common.loading": "Ачааж байна",
|
||||
"common.loading.ellipsis": "...",
|
||||
"common.loading.ellipsis": "…",
|
||||
"common.cancel": "Цуцлах",
|
||||
"common.clear": "Тодорхой",
|
||||
"common.open": "Нээлттэй",
|
||||
@@ -319,14 +319,14 @@ export const dict = {
|
||||
"common.continue": "Үргэлжлүүлэх",
|
||||
"common.submit": "Илгээх",
|
||||
"common.save": "Хадгалах",
|
||||
"common.saving": "Хадгалж байна...",
|
||||
"common.saving": "Хадгалж байна…",
|
||||
"common.default": "Өгөгдмөл",
|
||||
"common.attachment": "хавсралт",
|
||||
"prompt.placeholder.shell": "shell командыг оруулна уу... {{example}}",
|
||||
"prompt.placeholder.normal": 'Юу ч асуугаарай... "{{example}}"',
|
||||
"prompt.placeholder.simple": "Юу ч асуу...",
|
||||
"prompt.placeholder.summarizeComments": "Сэтгэгдэлийг нэгтгэн дүгнэх...",
|
||||
"prompt.placeholder.summarizeComment": "Сэтгэгдлээ нэгтгэн дүгнэх...",
|
||||
"prompt.placeholder.shell": "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": "esc товчийг дарна уу",
|
||||
@@ -344,7 +344,7 @@ export const dict = {
|
||||
"prompt.example.10": "API бичиг баримт үүсгэх",
|
||||
"prompt.example.11": "Өгөгдлийн сангийн асуулгыг оновчтой болгох",
|
||||
"prompt.example.12": "Оролтын баталгаажуулалтыг нэмнэ үү",
|
||||
"prompt.example.13": "Шинэ бүрэлдэхүүн хэсэг үүсгэх...",
|
||||
"prompt.example.13": "Шинэ бүрэлдэхүүн хэсэг үүсгэх…",
|
||||
"prompt.example.14": "Би энэ төслийг хэрхэн хэрэгжүүлэх вэ?",
|
||||
"prompt.example.15": "Шилдэг туршлагыг авахын тулд миний кодыг шалгана уу",
|
||||
"prompt.example.16": "Энэ функцэд алдаа засах аргыг нэмнэ үү",
|
||||
@@ -355,7 +355,7 @@ export const dict = {
|
||||
"prompt.example.21": "Шилжилтийн скрипт бичихэд тусална уу",
|
||||
"prompt.example.22": "Энэ төгсгөлийн цэгт кэш хийх",
|
||||
"prompt.example.23": "Энэ жагсаалтад хуудасны тэмдэглэгээ нэмнэ үү",
|
||||
"prompt.example.24": "CLI тушаал үүсгэх...",
|
||||
"prompt.example.24": "CLI тушаал үүсгэх…",
|
||||
"prompt.example.25": "Энд орчны хувьсагч хэрхэн ажилладаг вэ?",
|
||||
"prompt.popover.emptyResults": "Тохирох илэрц алга",
|
||||
"prompt.popover.emptyCommands": "Тохирох команд алга",
|
||||
@@ -407,7 +407,7 @@ export const dict = {
|
||||
"dialog.directory.parent": "Эцэг эх",
|
||||
"dialog.directory.readError": "Энэ фолдерыг унших боломжгүй байна",
|
||||
"app.server.unreachable": "{{server}}-д хүрч чадсангүй",
|
||||
"app.server.retrying": "Автоматаар дахин оролдож байна...",
|
||||
"app.server.retrying": "Автоматаар дахин оролдож байна…",
|
||||
"app.server.otherServers": "Бусад серверүүд",
|
||||
"dialog.server.title": "Серверүүд",
|
||||
"dialog.server.description": "Энэ апп аль OpenCode серверт холбогдохыг сэлгэнэ үү.",
|
||||
@@ -417,7 +417,7 @@ export const dict = {
|
||||
"dialog.server.add.url": "Серверийн хаяг",
|
||||
"dialog.server.add.placeholder": "http://localhost:4096",
|
||||
"dialog.server.add.error": "Сервертэй холбогдож чадсангүй",
|
||||
"dialog.server.add.checking": "Шалгаж байна...",
|
||||
"dialog.server.add.checking": "Шалгаж байна…",
|
||||
"dialog.server.add.button": "Сервер нэмэх",
|
||||
"dialog.server.add.name": "Серверийн нэр (заавал биш)",
|
||||
"dialog.server.add.namePlaceholder": "Localhost",
|
||||
@@ -442,26 +442,26 @@ export const dict = {
|
||||
"wsl.server.label": "WSL",
|
||||
"wsl.server.menu.label": "WSL сервер",
|
||||
"wsl.server.retryStart": "Дахин оролдох",
|
||||
"wsl.server.updating": "Шинэчилж байна...",
|
||||
"wsl.server.updating": "Шинэчилж байна…",
|
||||
"wsl.onboarding.step.distro": "Дистро сонгоно уу",
|
||||
"wsl.onboarding.step.opencode": "OpenCode",
|
||||
"wsl.onboarding.checkingRuntime": "WSL-г шалгаж байна...",
|
||||
"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.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.checkingOpencode": "OpenCode-г шалгаж байна…",
|
||||
"wsl.onboarding.checkingOpencodeIn": "{{distro}} дахь OpenCode-г шалгаж байна…",
|
||||
"wsl.onboarding.updatingOpencode": "Шинэчилж байна OpenCode…",
|
||||
"wsl.onboarding.updatingOpencodeIn": "{{distro}}-д OpenCode-г шинэчилж байна…",
|
||||
"wsl.onboarding.updateOpencodeIn": "OpenCode-г {{distro}}-д шинэчилнэ үү.",
|
||||
"wsl.onboarding.updateOpencode": "Шинэчлэх OpenCode",
|
||||
"wsl.onboarding.opencodeReadyIn": "OpenCode {{distro}}-д бэлэн боллоо.",
|
||||
@@ -470,11 +470,11 @@ export const dict = {
|
||||
"wsl.onboarding.installOpencode": "OpenCode суулгах",
|
||||
"wsl.onboarding.chooseDistroFirst": "Эхлээд дистро сонгоно уу.",
|
||||
"wsl.onboarding.loadFailed": "WSL төлөвийг ачаалж чадсангүй.",
|
||||
"wsl.onboarding.loading": "Ачааж байна...",
|
||||
"wsl.onboarding.loading": "Ачааж байна…",
|
||||
"wsl.onboarding.installedDistros": "Суулгасан түгээлтүүд",
|
||||
"wsl.onboarding.checkAgain": "Дахин шалгана уу",
|
||||
"wsl.onboarding.distroStatus.ready": "Бэлэн",
|
||||
"wsl.onboarding.distroStatus.checking": "Шалгаж байна...",
|
||||
"wsl.onboarding.distroStatus.checking": "Шалгаж байна…",
|
||||
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode суулгаагүй байна",
|
||||
"wsl.onboarding.distroStatus.missingTools": "bash, curl алга",
|
||||
"wsl.onboarding.distroStatus.unsupported": "Дэмжигдээгүй · WSL 2 ашиглах",
|
||||
@@ -493,7 +493,7 @@ export const dict = {
|
||||
"wsl.onboarding.allDistrosAdded": "Бүх суулгасан түгээлтүүд аль хэдийн нэмэгдсэн байна.",
|
||||
"wsl.onboarding.noDistros": "Одоогоор ямар ч түгээлт илрээгүй байна.",
|
||||
"wsl.onboarding.install": "Суулгах",
|
||||
"wsl.onboarding.installing": "Суулгаж байна...",
|
||||
"wsl.onboarding.installing": "Суулгаж байна…",
|
||||
"wsl.onboarding.installDistro": "Дистро суулгана уу",
|
||||
"wsl.onboarding.searchDistros": "Дистро хайх",
|
||||
"wsl.onboarding.wsl2Required": "WSL 2 шаардлагатай.",
|
||||
@@ -505,7 +505,7 @@ export const dict = {
|
||||
"wsl.onboarding.unknown": "үл мэдэгдэх",
|
||||
"wsl.onboarding.desktopVersion": "ширээний компьютер {{version}}",
|
||||
"wsl.onboarding.versionMismatch": "Суулгасан хувилбар нь ширээний програмын хувилбартай таарахгүй байна.",
|
||||
"wsl.onboarding.adding": "Нэмэж байна...",
|
||||
"wsl.onboarding.adding": "Нэмэж байна…",
|
||||
"dialog.project.edit.title": "Төслийг засварлах",
|
||||
"dialog.project.edit.name": "Нэр",
|
||||
"dialog.project.edit.icon": "Дүрс",
|
||||
@@ -611,7 +611,7 @@ export const dict = {
|
||||
"error.page.action.report": "Алдаа мэдээлэх",
|
||||
"error.page.action.reported": "Алдаа мэдээлсэн",
|
||||
"error.page.action.exportLogs": "Экспортын бүртгэл",
|
||||
"error.page.action.checking": "Шалгаж байна...",
|
||||
"error.page.action.checking": "Шалгаж байна…",
|
||||
"error.page.action.checkUpdates": "Шинэчлэлт байгаа эсэхийг шалгана уу",
|
||||
"error.page.action.updateTo": "{{version}} руу шинэчлэх",
|
||||
"error.page.circular": "[Тойрог]",
|
||||
@@ -691,12 +691,12 @@ export const dict = {
|
||||
"session.review.filesChanged": "Файлууд өөрчлөгдсөн {{count}}",
|
||||
"session.review.change.one": "Өөрчлөх",
|
||||
"session.review.change.other": "Өөрчлөлтүүд",
|
||||
"session.review.loadingChanges": "Өөрчлөлтүүдийг ачаалж байна...",
|
||||
"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.actionLoading": "Git репозитор үүсгэж байна…",
|
||||
"session.review.noVcs.createGit.action": "Git репозитор үүсгэх",
|
||||
"session.review.noSnapshot":
|
||||
"Тохиромжтой хэсэгт агшин зуурын зургийг хянахыг идэвхгүй болгосон тул сессийн өөрчлөлтийг хийх боломжгүй",
|
||||
@@ -708,9 +708,9 @@ export const dict = {
|
||||
"session.files.empty": "Файл байхгүй",
|
||||
"session.files.binaryContent": "Хоёртын файл (агуулга харуулах боломжгүй)",
|
||||
"session.messages.renderEarlier": "Өмнөх мессежүүдийг үзүүлэх",
|
||||
"session.messages.loadingEarlier": "Өмнөх мессежүүдийг ачаалж байна...",
|
||||
"session.messages.loadingEarlier": "Өмнөх мессежүүдийг ачаалж байна…",
|
||||
"session.messages.loadEarlier": "Өмнөх мессежүүдийг ачаалах",
|
||||
"session.messages.loading": "Мессежүүдийг ачаалж байна...",
|
||||
"session.messages.loading": "Мессежүүдийг ачаалж байна…",
|
||||
"session.messages.jumpToLatest": "Сүүлийнх рүү шилжих",
|
||||
"session.context.addToContext": "Контекст {{selection}} нэмнэ үү",
|
||||
"session.todo.title": "Тодос",
|
||||
@@ -771,8 +771,8 @@ export const dict = {
|
||||
"common.copied": "Хуулсан",
|
||||
"lsp.tooltip.none": "LSP сервер байхгүй",
|
||||
"lsp.label.connected": "{{count}} LSP",
|
||||
"prompt.loading": "Промптыг ачаалж байна...",
|
||||
"terminal.loading": "Терминал ачаалж байна...",
|
||||
"prompt.loading": "Промптыг ачаалж байна…",
|
||||
"terminal.loading": "Терминал ачаалж байна…",
|
||||
"terminal.title": "Терминал",
|
||||
"terminal.title.numbered": "Терминал {{number}}",
|
||||
"terminal.close": "Терминалыг хаах",
|
||||
@@ -938,9 +938,9 @@ export const dict = {
|
||||
"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.action.checking": "Шалгаж байна…",
|
||||
"settings.updates.action.downloading": "Татаж авч байна…",
|
||||
"settings.updates.action.installing": "Суулгаж байна…",
|
||||
"settings.updates.toast.latest.title": "Та шинэчлэгдсэн байна",
|
||||
"settings.updates.toast.latest.description": "Та OpenCode-н хамгийн сүүлийн хувилбарыг ажиллуулж байна.",
|
||||
"sound.option.none": "Байхгүй",
|
||||
@@ -1088,7 +1088,7 @@ export const dict = {
|
||||
"workspace.reset.success.title": "Ажлын талбарыг дахин тохируулсан",
|
||||
"workspace.reset.success.description": "Ажлын талбар нь одоо үндсэн салбартай таарч байна.",
|
||||
"workspace.error.stillPreparing": "Ажлын байраа бэлдэж байна",
|
||||
"workspace.status.checking": "Нэгтгээгүй өөрчлөлтүүдийг шалгаж байна...",
|
||||
"workspace.status.checking": "Нэгтгээгүй өөрчлөлтүүдийг шалгаж байна…",
|
||||
"workspace.status.error": "Git статусыг шалгах боломжгүй байна.",
|
||||
"workspace.status.clean": "Нэгтгэсэн өөрчлөлт илрээгүй.",
|
||||
"workspace.status.dirty": "Энэ ажлын талбарт нэгтгэгдээгүй өөрчлөлтүүд илэрсэн.",
|
||||
|
||||
@@ -6,13 +6,13 @@ export const dict = {
|
||||
"desktop.menu.go": "Pergi",
|
||||
"desktop.menu.window": "Tetingkap",
|
||||
"desktop.menu.help": "Bantuan",
|
||||
"desktop.menu.checkForUpdates": "Semak Kemas Kini...",
|
||||
"desktop.menu.checkForUpdates": "Semak Kemas Kini…",
|
||||
"desktop.menu.settings": "Tetapan",
|
||||
"desktop.menu.reloadWebview": "Muat Semula Paparan Web",
|
||||
"desktop.menu.restart": "Mulakan Semula",
|
||||
"desktop.menu.exportLogs": "Eksport Log...",
|
||||
"desktop.menu.exportLogs": "Eksport Log…",
|
||||
"desktop.menu.newSession": "Sesi Baharu",
|
||||
"desktop.menu.openProject": "Buka Projek...",
|
||||
"desktop.menu.openProject": "Buka Projek…",
|
||||
"desktop.menu.newWindow": "Tetingkap Baharu",
|
||||
"desktop.menu.closeWindow": "Tutup Tetingkap",
|
||||
"desktop.menu.undo": "Nyahbuat",
|
||||
@@ -212,8 +212,8 @@ export const dict = {
|
||||
"provider.connect.method.apiKey": "Kunci API",
|
||||
"provider.connect.method.browser": "Pelayar",
|
||||
"provider.connect.method.headless": "Tanpa antara muka",
|
||||
"provider.connect.status.inProgress": "Kebenaran sedang diproses...",
|
||||
"provider.connect.status.waiting": "Menunggu kebenaran...",
|
||||
"provider.connect.status.inProgress": "Kebenaran sedang diproses…",
|
||||
"provider.connect.status.waiting": "Menunggu kebenaran…",
|
||||
"provider.connect.status.failed": "Kebenaran gagal: {{error}}",
|
||||
"provider.connect.apiKey.description":
|
||||
"Masukkan kunci API {{provider}} anda untuk menghubungkan akaun anda dan menggunakan model {{provider}} dalam OpenCode.",
|
||||
@@ -307,7 +307,7 @@ export const dict = {
|
||||
"common.goBack": "Navigasi ke belakang",
|
||||
"common.goForward": "Navigasi ke hadapan",
|
||||
"common.loading": "Memuatkan",
|
||||
"common.loading.ellipsis": "...",
|
||||
"common.loading.ellipsis": "…",
|
||||
"common.cancel": "Batal",
|
||||
"common.clear": "Kosongkan",
|
||||
"common.open": "Buka",
|
||||
@@ -316,12 +316,12 @@ export const dict = {
|
||||
"common.continue": "Teruskan",
|
||||
"common.submit": "Hantar",
|
||||
"common.save": "Simpan",
|
||||
"common.saving": "Sedang menyimpan...",
|
||||
"common.saving": "Sedang menyimpan…",
|
||||
"common.default": "Lalai",
|
||||
"common.attachment": "lampiran",
|
||||
"prompt.placeholder.shell": "Masukkan arahan shell... {{example}}",
|
||||
"prompt.placeholder.normal": 'Tanya apa-apa... "{{example}}"',
|
||||
"prompt.placeholder.simple": "Tanya apa-apa...",
|
||||
"prompt.placeholder.shell": "Masukkan arahan shell… {{example}}",
|
||||
"prompt.placeholder.normal": 'Tanya apa-apa… "{{example}}"',
|
||||
"prompt.placeholder.simple": "Tanya apa-apa…",
|
||||
"prompt.placeholder.summarizeComments": "Ringkaskan komen…",
|
||||
"prompt.placeholder.summarizeComment": "Ringkaskan komen…",
|
||||
"prompt.mode.shell": "Shell",
|
||||
@@ -341,7 +341,7 @@ export const dict = {
|
||||
"prompt.example.10": "Jana dokumentasi API",
|
||||
"prompt.example.11": "Optimumkan pertanyaan pangkalan data",
|
||||
"prompt.example.12": "Tambah pengesahan input",
|
||||
"prompt.example.13": "Cipta komponen baharu untuk...",
|
||||
"prompt.example.13": "Cipta komponen baharu untuk…",
|
||||
"prompt.example.14": "Bagaimana untuk melaksanakan projek ini?",
|
||||
"prompt.example.15": "Semak kod saya untuk amalan terbaik",
|
||||
"prompt.example.16": "Tambah pengendalian ralat pada fungsi ini",
|
||||
@@ -352,7 +352,7 @@ export const dict = {
|
||||
"prompt.example.21": "Bantu saya tulis skrip migrasi",
|
||||
"prompt.example.22": "Laksanakan cache untuk titik akhir ini",
|
||||
"prompt.example.23": "Tambah penomboran halaman pada senarai ini",
|
||||
"prompt.example.24": "Cipta arahan CLI untuk...",
|
||||
"prompt.example.24": "Cipta arahan CLI untuk…",
|
||||
"prompt.example.25": "Bagaimana pembolehubah persekitaran berfungsi di sini?",
|
||||
"prompt.popover.emptyResults": "Tiada hasil yang sepadan",
|
||||
"prompt.popover.emptyCommands": "Tiada arahan yang sepadan",
|
||||
@@ -404,7 +404,7 @@ export const dict = {
|
||||
"dialog.directory.parent": "Induk",
|
||||
"dialog.directory.readError": "Tidak dapat membaca folder ini",
|
||||
"app.server.unreachable": "Tidak dapat menghubungi {{server}}",
|
||||
"app.server.retrying": "Mencuba semula secara automatik...",
|
||||
"app.server.retrying": "Mencuba semula secara automatik…",
|
||||
"app.server.otherServers": "Pelayan lain",
|
||||
"dialog.server.title": "Pelayan",
|
||||
"dialog.server.description": "Tukar pelayan OpenCode yang disambungkan oleh aplikasi ini.",
|
||||
@@ -414,7 +414,7 @@ export const dict = {
|
||||
"dialog.server.add.url": "Alamat pelayan",
|
||||
"dialog.server.add.placeholder": "http://localhost:4096",
|
||||
"dialog.server.add.error": "Tidak dapat menyambung ke pelayan",
|
||||
"dialog.server.add.checking": "Sedang menyemak...",
|
||||
"dialog.server.add.checking": "Sedang menyemak…",
|
||||
"dialog.server.add.button": "Tambah pelayan",
|
||||
"dialog.server.add.name": "Nama pelayan (pilihan)",
|
||||
"dialog.server.add.namePlaceholder": "Localhost",
|
||||
@@ -439,26 +439,26 @@ export const dict = {
|
||||
"wsl.server.label": "WSL",
|
||||
"wsl.server.menu.label": "Pelayan WSL",
|
||||
"wsl.server.retryStart": "Cuba mula semula",
|
||||
"wsl.server.updating": "Mengemas kini...",
|
||||
"wsl.server.updating": "Mengemas kini…",
|
||||
"wsl.onboarding.step.distro": "Pilih distro",
|
||||
"wsl.onboarding.step.opencode": "OpenCode",
|
||||
"wsl.onboarding.checkingRuntime": "Memeriksa WSL...",
|
||||
"wsl.onboarding.checkingRuntime": "Memeriksa WSL…",
|
||||
"wsl.onboarding.restartRequired": "Windows perlu dimulakan semula untuk melengkapkan pemasangan WSL.",
|
||||
"wsl.onboarding.ready": "WSL sedia digunakan.",
|
||||
"wsl.onboarding.required": "WSL diperlukan untuk meneruskan.",
|
||||
"wsl.onboarding.checkingDistros": "Memeriksa distro...",
|
||||
"wsl.onboarding.installingDistro": "Memasang {{distro}}...",
|
||||
"wsl.onboarding.checkingDistro": "Memeriksa {{distro}}...",
|
||||
"wsl.onboarding.listingDistros": "Menyenaraikan distro...",
|
||||
"wsl.onboarding.checkingDistros": "Memeriksa distro…",
|
||||
"wsl.onboarding.installingDistro": "Memasang {{distro}}…",
|
||||
"wsl.onboarding.checkingDistro": "Memeriksa {{distro}}…",
|
||||
"wsl.onboarding.listingDistros": "Menyenaraikan distro…",
|
||||
"wsl.onboarding.distroReady": "{{distro}} sedia digunakan.",
|
||||
"wsl.onboarding.distroNotInstalled": "{{distro}} belum dipasang.",
|
||||
"wsl.onboarding.openDistroOnce": "Buka {{distro}} sekali untuk melengkapkan tetapan.",
|
||||
"wsl.onboarding.finishingDistro": "Sedang melengkapkan tetapan untuk {{distro}}.",
|
||||
"wsl.onboarding.pickDistro": "Pilih distro atau pasang satu di bawah.",
|
||||
"wsl.onboarding.checkingOpencode": "Sedang menyemak OpenCode...",
|
||||
"wsl.onboarding.checkingOpencodeIn": "Sedang menyemak OpenCode dalam {{distro}}...",
|
||||
"wsl.onboarding.updatingOpencode": "Sedang mengemas kini OpenCode...",
|
||||
"wsl.onboarding.updatingOpencodeIn": "Sedang mengemas kini OpenCode dalam {{distro}}...",
|
||||
"wsl.onboarding.checkingOpencode": "Sedang menyemak OpenCode…",
|
||||
"wsl.onboarding.checkingOpencodeIn": "Sedang menyemak OpenCode dalam {{distro}}…",
|
||||
"wsl.onboarding.updatingOpencode": "Sedang mengemas kini OpenCode…",
|
||||
"wsl.onboarding.updatingOpencodeIn": "Sedang mengemas kini OpenCode dalam {{distro}}…",
|
||||
"wsl.onboarding.updateOpencodeIn": "Kemas kini OpenCode dalam {{distro}}.",
|
||||
"wsl.onboarding.updateOpencode": "Kemas kini OpenCode",
|
||||
"wsl.onboarding.opencodeReadyIn": "OpenCode sedia digunakan dalam {{distro}}.",
|
||||
@@ -467,11 +467,11 @@ export const dict = {
|
||||
"wsl.onboarding.installOpencode": "Pasang OpenCode",
|
||||
"wsl.onboarding.chooseDistroFirst": "Pilih distro terlebih dahulu.",
|
||||
"wsl.onboarding.loadFailed": "Gagal memuatkan status WSL.",
|
||||
"wsl.onboarding.loading": "Memuatkan...",
|
||||
"wsl.onboarding.loading": "Memuatkan…",
|
||||
"wsl.onboarding.installedDistros": "Distro yang telah dipasang",
|
||||
"wsl.onboarding.checkAgain": "Semak semula",
|
||||
"wsl.onboarding.distroStatus.ready": "Sedia",
|
||||
"wsl.onboarding.distroStatus.checking": "Sedang menyemak...",
|
||||
"wsl.onboarding.distroStatus.checking": "Sedang menyemak…",
|
||||
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode belum dipasang",
|
||||
"wsl.onboarding.distroStatus.missingTools": "bash, curl tiada",
|
||||
"wsl.onboarding.distroStatus.unsupported": "Tidak disokong · Guna WSL 2",
|
||||
@@ -490,7 +490,7 @@ export const dict = {
|
||||
"wsl.onboarding.allDistrosAdded": "Semua distro yang dipasang telah pun ditambah.",
|
||||
"wsl.onboarding.noDistros": "Tiada distro dikesan lagi.",
|
||||
"wsl.onboarding.install": "Pasang",
|
||||
"wsl.onboarding.installing": "Sedang memasang...",
|
||||
"wsl.onboarding.installing": "Sedang memasang…",
|
||||
"wsl.onboarding.installDistro": "Pasang distro",
|
||||
"wsl.onboarding.searchDistros": "Cari distro",
|
||||
"wsl.onboarding.wsl2Required": "WSL 2 diperlukan.",
|
||||
@@ -502,7 +502,7 @@ export const dict = {
|
||||
"wsl.onboarding.unknown": "tidak diketahui",
|
||||
"wsl.onboarding.desktopVersion": "desktop {{version}}",
|
||||
"wsl.onboarding.versionMismatch": "Versi yang dipasang tidak sepadan dengan versi aplikasi desktop.",
|
||||
"wsl.onboarding.adding": "Sedang menambah...",
|
||||
"wsl.onboarding.adding": "Sedang menambah…",
|
||||
"dialog.project.edit.title": "Edit projek",
|
||||
"dialog.project.edit.name": "Nama",
|
||||
"dialog.project.edit.icon": "Ikon",
|
||||
@@ -607,7 +607,7 @@ export const dict = {
|
||||
"error.page.action.report": "Laporkan Ralat",
|
||||
"error.page.action.reported": "Ralat Dilaporkan",
|
||||
"error.page.action.exportLogs": "Eksport Log",
|
||||
"error.page.action.checking": "Sedang menyemak...",
|
||||
"error.page.action.checking": "Sedang menyemak…",
|
||||
"error.page.action.checkUpdates": "Semak kemas kini",
|
||||
"error.page.action.updateTo": "Kemas kini ke {{version}}",
|
||||
"error.page.circular": "[Bersepusing]",
|
||||
@@ -684,12 +684,12 @@ export const dict = {
|
||||
"session.review.filesChanged": "{{count}} Fail Diubah",
|
||||
"session.review.change.one": "Perubahan",
|
||||
"session.review.change.other": "Perubahan",
|
||||
"session.review.loadingChanges": "Memuat perubahan...",
|
||||
"session.review.loadingChanges": "Memuat perubahan…",
|
||||
"session.review.empty": "Belum ada perubahan dalam sesi ini",
|
||||
"session.review.noVcs": "Tiada Sistem Kawalan Versi Git dikesan, perubahan tidak dipaparkan",
|
||||
"session.review.noVcs.createGit.title": "Cipta repositori Git",
|
||||
"session.review.noVcs.createGit.description": "Jejak, semak dan undur perubahan dalam projek ini",
|
||||
"session.review.noVcs.createGit.actionLoading": "Mencipta repositori Git...",
|
||||
"session.review.noVcs.createGit.actionLoading": "Mencipta repositori Git…",
|
||||
"session.review.noVcs.createGit.action": "Cipta repositori Git",
|
||||
"session.review.noSnapshot": "Penjejakan snapshot dilumpuhkan dalam tetapan, jadi perubahan sesi tidak tersedia",
|
||||
"session.review.noChanges": "Tiada perubahan",
|
||||
@@ -700,9 +700,9 @@ export const dict = {
|
||||
"session.files.empty": "Tiada fail",
|
||||
"session.files.binaryContent": "Fail binari (kandungan tidak dapat dipaparkan)",
|
||||
"session.messages.renderEarlier": "Papar mesej terdahulu",
|
||||
"session.messages.loadingEarlier": "Memuat mesej terdahulu...",
|
||||
"session.messages.loadingEarlier": "Memuat mesej terdahulu…",
|
||||
"session.messages.loadEarlier": "Muat mesej terdahulu",
|
||||
"session.messages.loading": "Memuat mesej...",
|
||||
"session.messages.loading": "Memuat mesej…",
|
||||
"session.messages.jumpToLatest": "Lompat ke terkini",
|
||||
"session.context.addToContext": "Tambah {{selection}} ke konteks",
|
||||
"session.todo.title": "Senarai Tugasan",
|
||||
@@ -763,8 +763,8 @@ export const dict = {
|
||||
"common.copied": "Disalin",
|
||||
"lsp.tooltip.none": "Tiada pelayan LSP",
|
||||
"lsp.label.connected": "{{count}} LSP",
|
||||
"prompt.loading": "Memuatkan prompt...",
|
||||
"terminal.loading": "Memuatkan terminal...",
|
||||
"prompt.loading": "Memuatkan prompt…",
|
||||
"terminal.loading": "Memuatkan terminal…",
|
||||
"terminal.title": "Terminal",
|
||||
"terminal.title.numbered": "Terminal {{number}}",
|
||||
"terminal.close": "Tutup terminal",
|
||||
@@ -927,9 +927,9 @@ export const dict = {
|
||||
"settings.updates.row.check.title": "Semak kemas kini",
|
||||
"settings.updates.row.check.description": "Semak kemas kini secara manual dan pasang jika tersedia",
|
||||
"settings.updates.action.checkNow": "Semak sekarang",
|
||||
"settings.updates.action.checking": "Menyemak...",
|
||||
"settings.updates.action.downloading": "Memuat turun...",
|
||||
"settings.updates.action.installing": "Sedang memasang...",
|
||||
"settings.updates.action.checking": "Menyemak…",
|
||||
"settings.updates.action.downloading": "Memuat turun…",
|
||||
"settings.updates.action.installing": "Sedang memasang…",
|
||||
"settings.updates.toast.latest.title": "Anda sudah terkini",
|
||||
"settings.updates.toast.latest.description": "Anda sedang menggunakan versi terkini OpenCode.",
|
||||
"sound.option.none": "Tiada",
|
||||
@@ -1077,7 +1077,7 @@ export const dict = {
|
||||
"workspace.reset.success.title": "Ruang kerja telah ditetap semula",
|
||||
"workspace.reset.success.description": "Ruang kerja kini sepadan dengan cawangan lalai.",
|
||||
"workspace.error.stillPreparing": "Ruang kerja masih sedang disediakan",
|
||||
"workspace.status.checking": "Memeriksa perubahan belum digabungkan...",
|
||||
"workspace.status.checking": "Memeriksa perubahan belum digabungkan…",
|
||||
"workspace.status.error": "Tidak dapat mengesahkan status git.",
|
||||
"workspace.status.clean": "Tiada perubahan belum digabungkan dikesan.",
|
||||
"workspace.status.dirty": "Perubahan belum digabungkan dikesan dalam ruang kerja ini.",
|
||||
|
||||
@@ -6,13 +6,13 @@ export const dict = {
|
||||
"desktop.menu.go": "သွားပါ။",
|
||||
"desktop.menu.window": "ဝင်းဒိုး",
|
||||
"desktop.menu.help": "အကူအညီ",
|
||||
"desktop.menu.checkForUpdates": "အပ်ဒိတ်များအတွက် စစ်ဆေးပါ...",
|
||||
"desktop.menu.checkForUpdates": "အပ်ဒိတ်များအတွက် စစ်ဆေးပါ…",
|
||||
"desktop.menu.settings": "ဆက်တင်များ",
|
||||
"desktop.menu.reloadWebview": "Webview ကို ပြန်လည်စတင်ပါ။",
|
||||
"desktop.menu.restart": "ပြန်လည်စတင်ပါ။",
|
||||
"desktop.menu.exportLogs": "မှတ်တမ်းများ ထုတ်ယူရန်...",
|
||||
"desktop.menu.exportLogs": "မှတ်တမ်းများ ထုတ်ယူရန်…",
|
||||
"desktop.menu.newSession": "အပိုင်းအသစ်",
|
||||
"desktop.menu.openProject": "ပရောဂျက်ကို ဖွင့်ပါ...",
|
||||
"desktop.menu.openProject": "ပရောဂျက်ကို ဖွင့်ပါ…",
|
||||
"desktop.menu.newWindow": "ဝင်းဒိုးအသစ်",
|
||||
"desktop.menu.closeWindow": "Window ကိုပိတ်ပါ။",
|
||||
"desktop.menu.undo": "မလုပ်တော့ပါ။",
|
||||
@@ -214,8 +214,8 @@ export const dict = {
|
||||
"provider.connect.method.apiKey": "API သော့",
|
||||
"provider.connect.method.browser": "ဘရောက်ဆာ",
|
||||
"provider.connect.method.headless": "ဦးခေါင်းမဲ့",
|
||||
"provider.connect.status.inProgress": "ခွင့်ပြုချက် လုပ်ဆောင်နေသည်...",
|
||||
"provider.connect.status.waiting": "ခွင့်ပြုချက်ကို စောင့်ဆိုင်းနေသည်...",
|
||||
"provider.connect.status.inProgress": "ခွင့်ပြုချက် လုပ်ဆောင်နေသည်…",
|
||||
"provider.connect.status.waiting": "ခွင့်ပြုချက်ကို စောင့်ဆိုင်းနေသည်…",
|
||||
"provider.connect.status.failed": "ခွင့်ပြုချက် မအောင်မြင်ပါ- {{error}}",
|
||||
"provider.connect.apiKey.description":
|
||||
"သင့်အကောင့်ကို ချိတ်ဆက်ရန်နှင့် OpenCode တွင် {{provider}} မော်ဒယ်များကို အသုံးပြုရန် သင်၏ {{provider}} API သော့ကို ထည့်သွင်းပါ။",
|
||||
@@ -310,7 +310,7 @@ export const dict = {
|
||||
"common.goBack": "ပြန်သွားပါ။",
|
||||
"common.goForward": "ရှေ့သို့သွားပါ။",
|
||||
"common.loading": "တင်နေသည်။",
|
||||
"common.loading.ellipsis": "...",
|
||||
"common.loading.ellipsis": "…",
|
||||
"common.cancel": "မလုပ်တော့",
|
||||
"common.clear": "ရှင်းလင်းသည်။",
|
||||
"common.open": "ဖွင့်ပါ။",
|
||||
@@ -319,14 +319,14 @@ export const dict = {
|
||||
"common.continue": "ဆက်ရန်",
|
||||
"common.submit": "တင်ပြပါ။",
|
||||
"common.save": "သိမ်းဆည်းပါ။",
|
||||
"common.saving": "သိမ်းဆည်းနေသည်...",
|
||||
"common.saving": "သိမ်းဆည်းနေသည်…",
|
||||
"common.default": "မူရင်း",
|
||||
"common.attachment": "တွယ်တာမှု",
|
||||
"prompt.placeholder.shell": "shell command ကိုရိုက်ထည့်ပါ... {{example}}",
|
||||
"prompt.placeholder.normal": 'ဘာမဆိုမေးပါ... "{{example}}"',
|
||||
"prompt.placeholder.simple": "ဘာမဆိုမေးပါ...",
|
||||
"prompt.placeholder.summarizeComments": "မှတ်ချက်များကို အကျဉ်းချုပ်ပါ...",
|
||||
"prompt.placeholder.summarizeComment": "မှတ်ချက်ကို အကျဉ်းချုပ်ပါ...",
|
||||
"prompt.placeholder.shell": "shell command ကိုရိုက်ထည့်ပါ… {{example}}",
|
||||
"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",
|
||||
@@ -344,7 +344,7 @@ export const dict = {
|
||||
"prompt.example.10": "API စာရွက်စာတမ်းကို ဖန်တီးပါ။",
|
||||
"prompt.example.11": "ဒေတာဘေ့စ်မေးခွန်းများကို ပိုမိုကောင်းမွန်အောင်ပြုလုပ်ပါ။",
|
||||
"prompt.example.12": "ထည့်သွင်းမှုအတည်ပြုချက်ကို ထည့်ပါ။",
|
||||
"prompt.example.13": "အတွက် အစိတ်အပိုင်းအသစ်တစ်ခု ဖန်တီးပါ...",
|
||||
"prompt.example.13": "အတွက် အစိတ်အပိုင်းအသစ်တစ်ခု ဖန်တီးပါ…",
|
||||
"prompt.example.14": "ဤပရောဂျက်ကို မည်သို့အသုံးချရမည်နည်း။",
|
||||
"prompt.example.15": "အကောင်းဆုံးအလေ့အကျင့်များအတွက် ကျွန်ုပ်၏ကုဒ်ကို ပြန်လည်သုံးသပ်ပါ။",
|
||||
"prompt.example.16": "ဤလုပ်ဆောင်ချက်သို့ အမှားအယွင်းများကို ကိုင်တွယ်ထည့်ပါ။",
|
||||
@@ -355,7 +355,7 @@ export const dict = {
|
||||
"prompt.example.21": "ရွှေ့ပြောင်းခြင်းဆိုင်ရာ ဇာတ်ညွှန်းရေးရန် ကူညီပေးပါ။",
|
||||
"prompt.example.22": "ဤအဆုံးမှတ်အတွက် ကက်ရှ်ကို အကောင်အထည်ဖော်ပါ။",
|
||||
"prompt.example.23": "ဤစာရင်းသို့ pagination ထည့်ပါ။",
|
||||
"prompt.example.24": "အတွက် CLI အမိန့်ကို ဖန်တီးပါ...",
|
||||
"prompt.example.24": "အတွက် CLI အမိန့်ကို ဖန်တီးပါ…",
|
||||
"prompt.example.25": "ဤနေရာတွင် ပတ်ဝန်းကျင် ကိန်းရှင်များ မည်သို့အလုပ်လုပ်သနည်း။",
|
||||
"prompt.popover.emptyResults": "တူညီသောရလဒ်များမရှိပါ။",
|
||||
"prompt.popover.emptyCommands": "တူညီသော ညွှန်ကြားချက်များ မရှိပါ။",
|
||||
@@ -408,7 +408,7 @@ export const dict = {
|
||||
"dialog.directory.parent": "မိဘ",
|
||||
"dialog.directory.readError": "ဤဖိုင်တွဲကို ဖတ်၍မရပါ။",
|
||||
"app.server.unreachable": "{{server}} သို့ မရောက်ရှိနိုင်ပါ။",
|
||||
"app.server.retrying": "အလိုအလျောက် ပြန်ကြိုးစားနေသည်...",
|
||||
"app.server.retrying": "အလိုအလျောက် ပြန်ကြိုးစားနေသည်…",
|
||||
"app.server.otherServers": "အခြားဆာဗာများ",
|
||||
"dialog.server.title": "ဆာဗာများ",
|
||||
"dialog.server.description": "ဤအက်ပ်နှင့်ချိတ်ဆက်သည့် OpenCode ဆာဗာကို ပြောင်းပါ။",
|
||||
@@ -418,7 +418,7 @@ export const dict = {
|
||||
"dialog.server.add.url": "ဆာဗာလိပ်စာ",
|
||||
"dialog.server.add.placeholder": "http://localhost:4096",
|
||||
"dialog.server.add.error": "ဆာဗာသို့ ချိတ်ဆက်၍မရပါ။",
|
||||
"dialog.server.add.checking": "စစ်ဆေးနေသည်...",
|
||||
"dialog.server.add.checking": "စစ်ဆေးနေသည်…",
|
||||
"dialog.server.add.button": "ဆာဗာထည့်ပါ။",
|
||||
"dialog.server.add.name": "ဆာဗာအမည် (ချန်လှပ်ထားနိုင်သည်)",
|
||||
"dialog.server.add.namePlaceholder": "Localhost",
|
||||
@@ -443,26 +443,26 @@ export const dict = {
|
||||
"wsl.server.label": "WSL",
|
||||
"wsl.server.menu.label": "WSL ဆာဗာ",
|
||||
"wsl.server.retryStart": "ပြန်လည်စတင်ကြည့်ပါ။",
|
||||
"wsl.server.updating": "အပ်ဒိတ်လုပ်နေသည်...",
|
||||
"wsl.server.updating": "အပ်ဒိတ်လုပ်နေသည်…",
|
||||
"wsl.onboarding.step.distro": "distro ကို ရွေးပါ။",
|
||||
"wsl.onboarding.step.opencode": "OpenCode",
|
||||
"wsl.onboarding.checkingRuntime": "WSL ကို စစ်ဆေးနေသည်...",
|
||||
"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.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": "distro တစ်ခုကို ရွေးပါ သို့မဟုတ် အောက်တွင် တစ်ခု ထည့်သွင်းပါ။",
|
||||
"wsl.onboarding.checkingOpencode": "OpenCode စစ်ဆေးနေသည်...",
|
||||
"wsl.onboarding.checkingOpencodeIn": "{{distro}} တွင် OpenCode ကိုစစ်ဆေးနေသည်...",
|
||||
"wsl.onboarding.updatingOpencode": "OpenCode ကို အပ်ဒိတ်လုပ်နေသည်...",
|
||||
"wsl.onboarding.updatingOpencodeIn": "{{distro}} တွင် OpenCode ကို အပ်ဒိတ်လုပ်နေသည်...",
|
||||
"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}} တွင် အဆင်သင့်ဖြစ်နေပါပြီ။",
|
||||
@@ -471,11 +471,11 @@ export const dict = {
|
||||
"wsl.onboarding.installOpencode": "OpenCode ကို ထည့်သွင်းပါ။",
|
||||
"wsl.onboarding.chooseDistroFirst": "ပထမဆုံး distro တစ်ခုကို ရွေးပါ။",
|
||||
"wsl.onboarding.loadFailed": "WSL အခြေအနေအား တင်ရန် မအောင်မြင်ပါ။",
|
||||
"wsl.onboarding.loading": "ဖွင့်နေသည်...",
|
||||
"wsl.onboarding.loading": "ဖွင့်နေသည်…",
|
||||
"wsl.onboarding.installedDistros": "ကွဲပြားမှုများကို ထည့်သွင်းထားသည်။",
|
||||
"wsl.onboarding.checkAgain": "ထပ်မံစစ်ဆေးပါ။",
|
||||
"wsl.onboarding.distroStatus.ready": "အဆင်သင့်ဖြစ်ပါပြီ။",
|
||||
"wsl.onboarding.distroStatus.checking": "စစ်ဆေးနေသည်...",
|
||||
"wsl.onboarding.distroStatus.checking": "စစ်ဆေးနေသည်…",
|
||||
"wsl.onboarding.distroStatus.opencodeMissing": "OpenCode ကို ထည့်သွင်းမထားပါ။",
|
||||
"wsl.onboarding.distroStatus.missingTools": "ပျောက်နေသော ဘေ့စ်၊ ကောက်ကြောင်း",
|
||||
"wsl.onboarding.distroStatus.unsupported": "ပံ့ပိုးမထားပါ · WSL 2 ကို သုံးပါ။",
|
||||
@@ -494,7 +494,7 @@ export const dict = {
|
||||
"wsl.onboarding.allDistrosAdded": "ထည့်သွင်းထားသည့် distros အားလုံးကို ထည့်သွင်းပြီးဖြစ်သည်။",
|
||||
"wsl.onboarding.noDistros": "မည်သည့် distros မှ ရှာမတွေ့သေးပါ။",
|
||||
"wsl.onboarding.install": "ထည့်သွင်းပါ။",
|
||||
"wsl.onboarding.installing": "ထည့်သွင်းနေသည်...",
|
||||
"wsl.onboarding.installing": "ထည့်သွင်းနေသည်…",
|
||||
"wsl.onboarding.installDistro": "distro ကို ထည့်သွင်းပါ။",
|
||||
"wsl.onboarding.searchDistros": "ကွဲပြားမှုများကို ရှာဖွေပါ။",
|
||||
"wsl.onboarding.wsl2Required": "WSL 2 လိုအပ်သည်။",
|
||||
@@ -506,7 +506,7 @@ export const dict = {
|
||||
"wsl.onboarding.unknown": "အမည်မသိ",
|
||||
"wsl.onboarding.desktopVersion": "ဒက်စ်တော့ {{version}}",
|
||||
"wsl.onboarding.versionMismatch": "ထည့်သွင်းထားသောဗားရှင်းသည် ဒက်စ်တော့အက်ပ်ဗားရှင်းနှင့် မကိုက်ညီပါ။",
|
||||
"wsl.onboarding.adding": "ထည့်နေသည်...",
|
||||
"wsl.onboarding.adding": "ထည့်နေသည်…",
|
||||
"dialog.project.edit.title": "ပရောဂျက်ကို တည်းဖြတ်ပါ။",
|
||||
"dialog.project.edit.name": "အမည်",
|
||||
"dialog.project.edit.icon": "သင်္ကေတ",
|
||||
@@ -612,7 +612,7 @@ export const dict = {
|
||||
"error.page.action.report": "အမှားအယွင်းကို တိုင်ကြားပါ။",
|
||||
"error.page.action.reported": "Error အစီရင်ခံခဲ့သည်။",
|
||||
"error.page.action.exportLogs": "မှတ်တမ်းများ ထုတ်ယူရန်",
|
||||
"error.page.action.checking": "စစ်ဆေးနေသည်...",
|
||||
"error.page.action.checking": "စစ်ဆေးနေသည်…",
|
||||
"error.page.action.checkUpdates": "အပ်ဒိတ်များအတွက် စစ်ဆေးပါ။",
|
||||
"error.page.action.updateTo": "{{version}} သို့ အပ်ဒိတ်လုပ်ပါ။",
|
||||
"error.page.circular": "[မြို့ပတ်]",
|
||||
@@ -692,12 +692,12 @@ export const dict = {
|
||||
"session.review.filesChanged": "ဖိုင်များကို {{count}} ပြောင်းထားသည်။",
|
||||
"session.review.change.one": "ပြောင်းလဲခြင်း။",
|
||||
"session.review.change.other": "ပြောင်းလဲမှုများ",
|
||||
"session.review.loadingChanges": "အပြောင်းအလဲများကို ဖွင့်နေသည်...",
|
||||
"session.review.loadingChanges": "အပြောင်းအလဲများကို ဖွင့်နေသည်…",
|
||||
"session.review.empty": "ဤစက်ရှင်တွင် ပြောင်းလဲမှုမရှိသေးပါ။",
|
||||
"session.review.noVcs": "မည်သည့် Git ဗားရှင်းထိန်းချုပ်မှုစနစ်မှ ရှာမတွေ့ပါ၊ အပြောင်းအလဲများကို မပြသပါ။",
|
||||
"session.review.noVcs.createGit.title": "Git repository တစ်ခုဖန်တီးပါ။",
|
||||
"session.review.noVcs.createGit.description": "ဤပရောဂျက်ရှိ အပြောင်းအလဲများကို ခြေရာခံ၊ သုံးသပ်ပြီး ပြန်ဖျက်ပါ။",
|
||||
"session.review.noVcs.createGit.actionLoading": "Git repository ကို ဖန်တီးနေသည်...",
|
||||
"session.review.noVcs.createGit.actionLoading": "Git repository ကို ဖန်တီးနေသည်…",
|
||||
"session.review.noVcs.createGit.action": "Git repository ဖန်တီးပါ။",
|
||||
"session.review.noSnapshot":
|
||||
"Snapshot ခြေရာခံခြင်းကို config တွင်ပိတ်ထားသည်၊ ထို့ကြောင့် စက်ရှင်ပြောင်းလဲမှုများကို မရရှိနိုင်ပါ",
|
||||
@@ -709,9 +709,9 @@ export const dict = {
|
||||
"session.files.empty": "ဖိုင်မရှိပါ။",
|
||||
"session.files.binaryContent": "Binary ဖိုင် (အကြောင်းအရာကို ပြသ၍မရပါ)",
|
||||
"session.messages.renderEarlier": "အစောပိုင်းစာတိုများကို တင်ဆက်ပါ။",
|
||||
"session.messages.loadingEarlier": "အစောပိုင်းမက်ဆေ့ချ်များကို တင်နေသည်...",
|
||||
"session.messages.loadingEarlier": "အစောပိုင်းမက်ဆေ့ချ်များကို တင်နေသည်…",
|
||||
"session.messages.loadEarlier": "အစောပိုင်းမက်ဆေ့ချ်များကို တင်ပါ။",
|
||||
"session.messages.loading": "မက်ဆေ့ချ်များကို ဖွင့်နေသည်...",
|
||||
"session.messages.loading": "မက်ဆေ့ချ်များကို ဖွင့်နေသည်…",
|
||||
"session.messages.jumpToLatest": "နောက်ဆုံးသို့ ခုန်ပါ။",
|
||||
"session.context.addToContext": "{{selection}} ကို ဆက်စပ်အကြောင်းအရာထဲ ထည့်ပါ။",
|
||||
"session.todo.title": "လုပ်စရာများ",
|
||||
@@ -772,8 +772,8 @@ export const dict = {
|
||||
"common.copied": "ကူးယူထားသည်။",
|
||||
"lsp.tooltip.none": "LSP ဆာဗာများ မရှိပါ။",
|
||||
"lsp.label.connected": "{{count}} LSP",
|
||||
"prompt.loading": "အချက်ပြမှုကို ဖွင့်နေသည်...",
|
||||
"terminal.loading": "Terminal ကို ဖွင့်နေသည်...",
|
||||
"prompt.loading": "အချက်ပြမှုကို ဖွင့်နေသည်…",
|
||||
"terminal.loading": "Terminal ကို ဖွင့်နေသည်…",
|
||||
"terminal.title": "Terminal",
|
||||
"terminal.title.numbered": "Terminal {{number}}",
|
||||
"terminal.close": "Terminal ကို ပိတ်ပါ",
|
||||
@@ -943,9 +943,9 @@ export const dict = {
|
||||
"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.action.checking": "စစ်ဆေးနေသည်…",
|
||||
"settings.updates.action.downloading": "ဒေါင်းလုဒ်လုပ်နေသည်…",
|
||||
"settings.updates.action.installing": "ထည့်သွင်းနေသည်…",
|
||||
"settings.updates.toast.latest.title": "သင်သည် ခေတ်မီနေပါသည်။",
|
||||
"settings.updates.toast.latest.description": "သင်သည် OpenCode ၏ နောက်ဆုံးဗားရှင်းကို အသုံးပြုနေပါသည်။",
|
||||
"sound.option.none": "မရှိပါ။",
|
||||
@@ -1095,7 +1095,7 @@ export const dict = {
|
||||
"workspace.reset.success.title": "အလုပ်နေရာ ပြန်လည်သတ်မှတ်ခြင်း။",
|
||||
"workspace.reset.success.description": "ယခု Workspace သည် မူရင်းဌာနခွဲနှင့် ကိုက်ညီပါသည်။",
|
||||
"workspace.error.stillPreparing": "အလုပ်နေရာသည် ပြင်ဆင်ဆဲဖြစ်သည်။",
|
||||
"workspace.status.checking": "ပေါင်းစပ်မထားသော အပြောင်းအလဲများကို စစ်ဆေးနေသည်...",
|
||||
"workspace.status.checking": "ပေါင်းစပ်မထားသော အပြောင်းအလဲများကို စစ်ဆေးနေသည်…",
|
||||
"workspace.status.error": "git အခြေအနေကို အတည်မပြုနိုင်ပါ။",
|
||||
"workspace.status.clean": "ပေါင်းစပ်မထားသော အပြောင်းအလဲများကို ရှာမတွေ့ပါ။",
|
||||
"workspace.status.dirty": "ဤလုပ်ငန်းခွင်တွင် ပေါင်းစပ်မထားသော အပြောင်းအလဲများကို တွေ့ရှိခဲ့သည်။",
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user