mirror of
https://github.com/anomalyco/opencode.git
synced 2026-08-11 03:59:54 -04:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 9876d7aa7c |
@@ -29,7 +29,7 @@
|
||||
},
|
||||
"packages/app": {
|
||||
"name": "@opencode-ai/app",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"dependencies": {
|
||||
"@corvu/drawer": "catalog:",
|
||||
"@dnd-kit/abstract": "0.5.0",
|
||||
@@ -96,7 +96,7 @@
|
||||
},
|
||||
"packages/cli": {
|
||||
"name": "@opencode-ai/cli",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"bin": {
|
||||
"lildax": "./bin/lildax.cjs",
|
||||
},
|
||||
@@ -144,7 +144,7 @@
|
||||
},
|
||||
"packages/codemode": {
|
||||
"name": "@opencode-ai/codemode",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"dependencies": {
|
||||
"acorn": "8.15.0",
|
||||
"effect": "catalog:",
|
||||
@@ -158,7 +158,7 @@
|
||||
},
|
||||
"packages/console/app": {
|
||||
"name": "@opencode-ai/console-app",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"dependencies": {
|
||||
"@cloudflare/vite-plugin": "1.15.2",
|
||||
"@ibm/plex": "6.4.1",
|
||||
@@ -194,7 +194,7 @@
|
||||
},
|
||||
"packages/console/core": {
|
||||
"name": "@opencode-ai/console-core",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"dependencies": {
|
||||
"@aws-sdk/client-sts": "3.782.0",
|
||||
"@jsx-email/render": "1.1.1",
|
||||
@@ -221,7 +221,7 @@
|
||||
},
|
||||
"packages/console/function": {
|
||||
"name": "@opencode-ai/console-function",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"dependencies": {
|
||||
"@ai-sdk/anthropic": "3.0.82",
|
||||
"@ai-sdk/openai": "3.0.48",
|
||||
@@ -243,7 +243,7 @@
|
||||
},
|
||||
"packages/console/mail": {
|
||||
"name": "@opencode-ai/console-mail",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"dependencies": {
|
||||
"@jsx-email/all": "2.2.3",
|
||||
"@jsx-email/cli": "1.4.3",
|
||||
@@ -267,7 +267,7 @@
|
||||
},
|
||||
"packages/console/support": {
|
||||
"name": "@opencode-ai/console-support",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"dependencies": {
|
||||
"@cloudflare/vite-plugin": "1.15.2",
|
||||
"@opencode-ai/console-core": "workspace:*",
|
||||
@@ -287,7 +287,7 @@
|
||||
},
|
||||
"packages/core": {
|
||||
"name": "@opencode-ai/core",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"bin": {
|
||||
"opencode": "./bin/opencode",
|
||||
},
|
||||
@@ -381,7 +381,7 @@
|
||||
},
|
||||
"packages/desktop": {
|
||||
"name": "@opencode-ai/desktop",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"dependencies": {
|
||||
"@zip.js/zip.js": "2.7.62",
|
||||
"drizzle-orm": "catalog:",
|
||||
@@ -435,7 +435,7 @@
|
||||
},
|
||||
"packages/effect-drizzle-sqlite": {
|
||||
"name": "@opencode-ai/effect-drizzle-sqlite",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"dependencies": {
|
||||
"drizzle-orm": "catalog:",
|
||||
"effect": "catalog:",
|
||||
@@ -449,7 +449,7 @@
|
||||
},
|
||||
"packages/effect-sqlite-node": {
|
||||
"name": "@opencode-ai/effect-sqlite-node",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"dependencies": {
|
||||
"effect": "catalog:",
|
||||
},
|
||||
@@ -461,7 +461,7 @@
|
||||
},
|
||||
"packages/enterprise": {
|
||||
"name": "@opencode-ai/enterprise",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"dependencies": {
|
||||
"@hono/standard-validator": "catalog:",
|
||||
"@opencode-ai/core": "workspace:*",
|
||||
@@ -493,7 +493,7 @@
|
||||
},
|
||||
"packages/function": {
|
||||
"name": "@opencode-ai/function",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"dependencies": {
|
||||
"@octokit/auth-app": "8.0.1",
|
||||
"@octokit/rest": "catalog:",
|
||||
@@ -509,7 +509,7 @@
|
||||
},
|
||||
"packages/http-recorder": {
|
||||
"name": "@opencode-ai/http-recorder",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"dependencies": {
|
||||
"@effect/platform-node": "4.0.0-beta.83",
|
||||
"@effect/platform-node-shared": "4.0.0-beta.83",
|
||||
@@ -540,7 +540,7 @@
|
||||
},
|
||||
"packages/llm": {
|
||||
"name": "@opencode-ai/llm",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"dependencies": {
|
||||
"@opencode-ai/schema": "workspace:*",
|
||||
"@smithy/eventstream-codec": "4.2.14",
|
||||
@@ -559,7 +559,7 @@
|
||||
},
|
||||
"packages/opencode": {
|
||||
"name": "opencode",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"bin": {
|
||||
"opencode": "./bin/opencode",
|
||||
},
|
||||
@@ -690,7 +690,7 @@
|
||||
},
|
||||
"packages/plugin": {
|
||||
"name": "@opencode-ai/plugin",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"dependencies": {
|
||||
"@ai-sdk/provider": "3.0.8",
|
||||
"@opencode-ai/sdk": "workspace:*",
|
||||
@@ -766,7 +766,7 @@
|
||||
},
|
||||
"packages/sdk/js": {
|
||||
"name": "@opencode-ai/sdk",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"dependencies": {
|
||||
"cross-spawn": "catalog:",
|
||||
},
|
||||
@@ -781,7 +781,7 @@
|
||||
},
|
||||
"packages/server": {
|
||||
"name": "@opencode-ai/server",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"dependencies": {
|
||||
"@opencode-ai/core": "workspace:*",
|
||||
"@opencode-ai/protocol": "workspace:*",
|
||||
@@ -796,7 +796,7 @@
|
||||
},
|
||||
"packages/session-ui": {
|
||||
"name": "@opencode-ai/session-ui",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"dependencies": {
|
||||
"@kobalte/core": "catalog:",
|
||||
"@opencode-ai/client": "file:../app/vendor/opencode-ai-client-1.17.13-v2.tgz",
|
||||
@@ -836,7 +836,7 @@
|
||||
},
|
||||
"packages/slack": {
|
||||
"name": "@opencode-ai/slack",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"dependencies": {
|
||||
"@opencode-ai/sdk": "workspace:*",
|
||||
"@slack/bolt": "^3.17.1",
|
||||
@@ -849,7 +849,7 @@
|
||||
},
|
||||
"packages/stats/app": {
|
||||
"name": "@opencode-ai/stats-app",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"dependencies": {
|
||||
"@ibm/plex": "6.4.1",
|
||||
"@kobalte/core": "catalog:",
|
||||
@@ -883,7 +883,7 @@
|
||||
},
|
||||
"packages/stats/core": {
|
||||
"name": "@opencode-ai/stats-core",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"dependencies": {
|
||||
"@aws-sdk/client-athena": "3.933.0",
|
||||
"@planetscale/database": "1.19.0",
|
||||
@@ -902,7 +902,7 @@
|
||||
},
|
||||
"packages/stats/server": {
|
||||
"name": "@opencode-ai/stats-server",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"dependencies": {
|
||||
"@aws-sdk/client-firehose": "3.933.0",
|
||||
"@effect/platform-node": "catalog:",
|
||||
@@ -944,7 +944,7 @@
|
||||
},
|
||||
"packages/tui": {
|
||||
"name": "@opencode-ai/tui",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"dependencies": {
|
||||
"@opencode-ai/core": "workspace:*",
|
||||
"@opencode-ai/plugin": "workspace:*",
|
||||
@@ -971,7 +971,7 @@
|
||||
},
|
||||
"packages/ui": {
|
||||
"name": "@opencode-ai/ui",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"dependencies": {
|
||||
"@kobalte/core": "catalog:",
|
||||
"@pierre/diffs": "catalog:",
|
||||
@@ -1022,7 +1022,7 @@
|
||||
},
|
||||
"packages/web": {
|
||||
"name": "@opencode-ai/web",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"dependencies": {
|
||||
"@astrojs/cloudflare": "12.6.3",
|
||||
"@astrojs/markdown-remark": "6.3.1",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@opencode-ai/app",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"description": "",
|
||||
"type": "module",
|
||||
"exports": {
|
||||
|
||||
@@ -103,7 +103,6 @@ describe("normalizeProviderList", () => {
|
||||
)
|
||||
|
||||
expect(result.connected).toEqual(["openai"])
|
||||
expect(result.defaultModel).toEqual({ providerID: "openai", modelID: "gpt-5" })
|
||||
expect(result.default).toEqual({ openai: "gpt-5" })
|
||||
expect(result.all.get("openai")?.models["gpt-old"]).toBeUndefined()
|
||||
expect(result.all.get("openai")?.models["gpt-5"]).toMatchObject({
|
||||
@@ -114,10 +113,6 @@ describe("normalizeProviderList", () => {
|
||||
variants: { high: {} },
|
||||
})
|
||||
})
|
||||
|
||||
test("preserves an empty current default", () => {
|
||||
expect(normalizeProviderList([] as ProviderListOutput["data"], [], null).defaultModel).toBeNull()
|
||||
})
|
||||
})
|
||||
|
||||
describe("directoryKey", () => {
|
||||
|
||||
@@ -139,7 +139,6 @@ export function normalizeProviderList(
|
||||
return {
|
||||
all,
|
||||
connected: providers.map((provider) => provider.id),
|
||||
defaultModel: defaultModel ? { providerID: defaultModel.providerID, modelID: defaultModel.id } : null,
|
||||
default: Object.fromEntries(
|
||||
providers.flatMap((provider) => {
|
||||
const model =
|
||||
|
||||
@@ -6,7 +6,6 @@ import { createStore } from "solid-js/store"
|
||||
import { useModels } from "@/context/models"
|
||||
import { useSettings } from "@/context/settings"
|
||||
import { useProviders } from "@/hooks/use-providers"
|
||||
import { resolveDefaultModel } from "@/hooks/provider-catalog"
|
||||
import { Persist, persisted } from "@/utils/persist"
|
||||
import { hasCustomAgent, resolveAgent } from "./local-agent"
|
||||
import { cycleModelVariant, getConfiguredAgentVariant, resolveModelVariant } from "./model-variant"
|
||||
@@ -150,8 +149,10 @@ export const { use: useLocal, provider: LocalProvider } = createSimpleContext({
|
||||
})
|
||||
|
||||
const configuredModel = () => {
|
||||
const model = resolveDefaultModel(providers.defaultModel(), sync().data.config.model)
|
||||
if (!model) return
|
||||
const configured = sync().data.config.model
|
||||
if (!configured) return
|
||||
const [providerID, modelID] = configured.split("/")
|
||||
const model = { providerID, modelID }
|
||||
if (validModel(model)) return model
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { expect, test } from "bun:test"
|
||||
import type { NormalizedProviderListResponse } from "@opencode-ai/session-ui/context"
|
||||
import { resolveDefaultModel, selectProviderCatalog } from "./provider-catalog"
|
||||
import { selectProviderCatalog } from "./provider-catalog"
|
||||
|
||||
const catalog = (id: string): NormalizedProviderListResponse => ({
|
||||
all: new Map([[id, { id, name: id, source: "api", env: [], options: {}, models: {} }]]),
|
||||
@@ -57,21 +57,3 @@ test("falls back to the global catalog for route consumers", () => {
|
||||
}),
|
||||
).toBe(global)
|
||||
})
|
||||
|
||||
test("uses the current server default model", () => {
|
||||
expect(resolveDefaultModel({ providerID: "openai", modelID: "gpt-5" }, "anthropic/claude")).toEqual({
|
||||
providerID: "openai",
|
||||
modelID: "gpt-5",
|
||||
})
|
||||
})
|
||||
|
||||
test("does not use legacy config when the current server has no default", () => {
|
||||
expect(resolveDefaultModel(null, "anthropic/claude")).toBeUndefined()
|
||||
})
|
||||
|
||||
test("uses config for legacy servers", () => {
|
||||
expect(resolveDefaultModel(undefined, "anthropic/claude")).toEqual({
|
||||
providerID: "anthropic",
|
||||
modelID: "claude",
|
||||
})
|
||||
})
|
||||
|
||||
@@ -25,13 +25,3 @@ export function selectProviderCatalog(input: ProviderCatalogInput) {
|
||||
if (input.explicit) return emptyProviderCatalog
|
||||
return input.global
|
||||
}
|
||||
|
||||
export function resolveDefaultModel(
|
||||
current: NormalizedProviderListResponse["defaultModel"],
|
||||
legacy: string | undefined,
|
||||
) {
|
||||
if (current !== undefined) return current ?? undefined
|
||||
if (!legacy) return undefined
|
||||
const [providerID, modelID] = legacy.split("/")
|
||||
return { providerID, modelID }
|
||||
}
|
||||
|
||||
@@ -41,7 +41,6 @@ export function useProviders(directory: Accessor<string | undefined>) {
|
||||
return {
|
||||
all: () => providers().all,
|
||||
default: () => providers().default,
|
||||
defaultModel: () => providers().defaultModel,
|
||||
popular: () =>
|
||||
pipe(
|
||||
providers().all,
|
||||
|
||||
@@ -167,6 +167,23 @@ describe("i18n parity", () => {
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
test("UI rich templates keep exactly one typed slot", async () => {
|
||||
const expected = {
|
||||
"ui.lineComment.label": "selection",
|
||||
"ui.lineComment.editorLabel": "selection",
|
||||
"ui.list.emptyWithFilter": "query",
|
||||
} as const
|
||||
const legacy = Object.keys(expected).flatMap((key) => [`${key}.prefix`, `${key}.suffix`])
|
||||
|
||||
for (const locale of ["en", ...appLocales]) {
|
||||
const target = await dictionary(`../../../ui/src/i18n/${locale}.ts`)
|
||||
for (const [key, slot] of Object.entries(expected)) {
|
||||
expect({ locale, key, placeholders: placeholders(target[key]) }).toEqual({ locale, key, placeholders: [slot] })
|
||||
}
|
||||
expect({ locale, legacy: legacy.filter((key) => Object.hasOwn(target, key)) }).toEqual({ locale, legacy: [] })
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
describe("i18n plural parity", () => {
|
||||
|
||||
@@ -583,7 +583,7 @@ export const dict = {
|
||||
"dialog.usageExceeded.dontShowAgain": "不再显示",
|
||||
|
||||
"context.breakdown.title": "上下文细分",
|
||||
"context.breakdown.note": "输入 token 的大致细分。“其他”包含工具定义和开销。",
|
||||
"context.breakdown.note": "输入词元的大致细分。“其他”包含工具定义和开销。",
|
||||
"context.breakdown.system": "系统",
|
||||
"context.breakdown.user": "用户",
|
||||
"context.breakdown.assistant": "助手",
|
||||
@@ -598,18 +598,18 @@ export const dict = {
|
||||
"context.stats.provider": "提供商",
|
||||
"context.stats.model": "模型",
|
||||
"context.stats.limit": "上下文限制",
|
||||
"context.stats.totalTokens": "总 token",
|
||||
"context.stats.totalTokens": "词元总数",
|
||||
"context.stats.usage": "使用率",
|
||||
"context.stats.inputTokens": "输入 token",
|
||||
"context.stats.outputTokens": "输出 token",
|
||||
"context.stats.reasoningTokens": "推理 token",
|
||||
"context.stats.cacheTokens": "缓存 token(读/写)",
|
||||
"context.stats.inputTokens": "输入词元",
|
||||
"context.stats.outputTokens": "输出词元",
|
||||
"context.stats.reasoningTokens": "推理词元",
|
||||
"context.stats.cacheTokens": "缓存词元(读/写)",
|
||||
"context.stats.userMessages": "用户消息",
|
||||
"context.stats.assistantMessages": "助手消息",
|
||||
"context.stats.totalCost": "总成本",
|
||||
"context.stats.sessionCreated": "创建时间",
|
||||
"context.stats.lastActivity": "最后活动",
|
||||
"context.usage.tokens": "Token",
|
||||
"context.usage.tokens": "词元数",
|
||||
"context.usage.usage": "使用率",
|
||||
"context.usage.cost": "成本",
|
||||
"context.usage.clickToView": "点击查看上下文",
|
||||
|
||||
@@ -6,7 +6,6 @@ import { usePrompt } from "@/context/prompt"
|
||||
import { useSDK } from "@/context/sdk"
|
||||
import { useSync } from "@/context/sync"
|
||||
import { useProviders } from "@/hooks/use-providers"
|
||||
import { resolveDefaultModel } from "@/hooks/provider-catalog"
|
||||
|
||||
export function createPromptModelSelection(input: { agent: () => { model?: ModelKey; variant?: string } | undefined }) {
|
||||
const sdk = useSDK()
|
||||
@@ -22,8 +21,10 @@ export function createPromptModelSelection(input: { agent: () => { model?: Model
|
||||
}
|
||||
|
||||
const configured = () => {
|
||||
const model = resolveDefaultModel(providers.defaultModel(), sync().data.config.model)
|
||||
if (!model) return
|
||||
const value = sync().data.config.model
|
||||
if (!value) return
|
||||
const [providerID, modelID] = value.split("/")
|
||||
const model = { providerID, modelID }
|
||||
if (valid(model)) return model
|
||||
}
|
||||
|
||||
|
||||
@@ -37,8 +37,7 @@ export function useUsageExceededDialogs() {
|
||||
const sdk = useSDK()
|
||||
const dialog = useDialog()
|
||||
const { params } = useSessionLayout()
|
||||
const { t, locale } = useI18n()
|
||||
const isEnglish = () => locale() === "en"
|
||||
const { tDynamic } = useI18n()
|
||||
|
||||
const [goUpsellState, setGoUpsellState] = persisted(
|
||||
Persist.global("go-upsell"),
|
||||
@@ -68,9 +67,9 @@ export function useUsageExceededDialogs() {
|
||||
if (action.reason === "free_tier_limit") {
|
||||
dialog.show(() => (
|
||||
<DialogUsageExceeded
|
||||
title={isEnglish() ? action.title : t("dialog.usageExceeded.freeTier.title")}
|
||||
description={isEnglish() ? action.message : t("dialog.usageExceeded.freeTier.description")}
|
||||
actionLabel={isEnglish() ? action.label : t("dialog.usageExceeded.freeTier.actionLabel")}
|
||||
title={tDynamic("dialog.usageExceeded.freeTier.title", action.title)}
|
||||
description={tDynamic("dialog.usageExceeded.freeTier.description", action.message)}
|
||||
actionLabel={tDynamic("dialog.usageExceeded.freeTier.actionLabel", action.label)}
|
||||
link={action.link}
|
||||
onClose={(dontShowAgain) => {
|
||||
setGoUpsellState(keys.lastSeenAt, Date.now())
|
||||
@@ -88,9 +87,9 @@ export function useUsageExceededDialogs() {
|
||||
} else if (action.reason === "account_rate_limit") {
|
||||
dialog.show(() => (
|
||||
<DialogUsageExceeded
|
||||
title={isEnglish() ? action.title : t("dialog.usageExceeded.accountRateLimit.title")}
|
||||
description={isEnglish() ? action.message : t("dialog.usageExceeded.accountRateLimit.description")}
|
||||
actionLabel={isEnglish() ? action.label : t("dialog.usageExceeded.accountRateLimit.actionLabel")}
|
||||
title={tDynamic("dialog.usageExceeded.accountRateLimit.title", action.title)}
|
||||
description={tDynamic("dialog.usageExceeded.accountRateLimit.description", action.message)}
|
||||
actionLabel={tDynamic("dialog.usageExceeded.accountRateLimit.actionLabel", action.label)}
|
||||
link={action.link}
|
||||
onClose={(dontShowAgain) => {
|
||||
setGoUpsellState(keys.lastSeenAt, Date.now())
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"name": "@opencode-ai/cli",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"bin": {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"name": "@opencode-ai/codemode",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"description": "Effect-native confined code execution over schema-described tools",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@opencode-ai/console-app",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"name": "@opencode-ai/console-core",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@opencode-ai/console-function",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@opencode-ai/console-mail",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"dependencies": {
|
||||
"@jsx-email/all": "2.2.3",
|
||||
"@jsx-email/cli": "1.4.3",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@opencode-ai/console-support",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"name": "@opencode-ai/core",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@opencode-ai/desktop",
|
||||
"private": true,
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"homepage": "https://opencode.ai",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"name": "@opencode-ai/effect-drizzle-sqlite",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"name": "@opencode-ai/effect-sqlite-node",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@opencode-ai/enterprise",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@opencode-ai/function",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"name": "@opencode-ai/http-recorder",
|
||||
"description": "Record and replay Effect HTTP client traffic with deterministic cassettes",
|
||||
"type": "module",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"name": "@opencode-ai/llm",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"name": "opencode",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
You are OpenCode, a coding agent that helps users with software engineering tasks. You are powered by {{MODEL_NAME}}, a large language model trained by Meta MSL.
|
||||
You are OpenCode, a coding agent that helps users with software engineering tasks. You are powered by Muse Spark, a large language model trained by Meta MSL.
|
||||
|
||||
Use the instructions below and the tools available to assist the user.
|
||||
|
||||
@@ -61,5 +61,5 @@ Use the instructions below and the tools available to assist the user.
|
||||
- NEVER use comments as a place for long-winded chain-of-thought. Long thinking texts must be generated as private reasoning. Comments in code must be appropriately concise.
|
||||
|
||||
# User Help & Feedback
|
||||
- Users can give feedback or report issues at https://github.com/anomalyco/opencode and mention that they are using Meta {{MODEL_NAME}}.
|
||||
- Users can give feedback or report issues at https://github.com/anomalyco/opencode and mention that they are using Meta Muse Spark.
|
||||
- When users ask directly about OpenCode (eg. "can OpenCode do...", "are you able to do...") or its features (eg. implement a hook, write a slash command, or install an MCP server), use the WebFetch tool to gather information to answer the question from the OpenCode docs at https://opencode.ai/docs.
|
||||
|
||||
@@ -25,10 +25,7 @@ import { MCP } from "@/mcp"
|
||||
import { PermissionV1 } from "@opencode-ai/core/v1/permission"
|
||||
|
||||
export function provider(model: Provider.Model) {
|
||||
if (model.api.id.includes("muse")) {
|
||||
const name = model.api.id.includes("muse-glimmer") ? "Muse Glimmer" : "Muse Spark"
|
||||
return [PROMPT_META.replaceAll("{{MODEL_NAME}}", name)]
|
||||
}
|
||||
if (model.api.id.includes("muse-spark")) return [PROMPT_META]
|
||||
if (model.api.id.includes("gpt-4") || model.api.id.includes("o1") || model.api.id.includes("o3"))
|
||||
return [PROMPT_BEAST]
|
||||
if (model.api.id.includes("gpt")) {
|
||||
|
||||
@@ -85,21 +85,9 @@ const it = testEffect(
|
||||
|
||||
describe("session.system", () => {
|
||||
test("selects the Meta prompt for Muse Spark model IDs", () => {
|
||||
for (const id of ["meta/muse-spark-preview", "muse-spark-1.1", "muse-spark-1.2"]) {
|
||||
const prompt = SystemPrompt.provider({ api: { id } } as Provider.Model)[0]
|
||||
expect(prompt).toContain("powered by Muse Spark,")
|
||||
expect(prompt).toContain("using Meta Muse Spark.")
|
||||
expect(prompt).not.toContain("{{MODEL_NAME}}")
|
||||
}
|
||||
})
|
||||
|
||||
test("selects the Meta prompt for Muse Glimmer model IDs", () => {
|
||||
for (const id of ["meta/muse-glimmer", "meta/muse-glimmer-30b", "muse-glimmer-30b"]) {
|
||||
const prompt = SystemPrompt.provider({ api: { id } } as Provider.Model)[0]
|
||||
expect(prompt).toContain("powered by Muse Glimmer,")
|
||||
expect(prompt).toContain("using Meta Muse Glimmer.")
|
||||
expect(prompt).not.toContain("{{MODEL_NAME}}")
|
||||
}
|
||||
expect(SystemPrompt.provider({ api: { id: "meta/muse-spark-preview" } } as Provider.Model)[0]).toContain(
|
||||
"Meta Muse Spark",
|
||||
)
|
||||
})
|
||||
|
||||
it.effect("skills output is sorted by name and stable across calls", () =>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"name": "@opencode-ai/plugin",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
|
||||
@@ -517,15 +517,7 @@ export type TuiSlots = {
|
||||
}
|
||||
|
||||
export type TuiEventBus = {
|
||||
on: <Type extends Event["type"]>(
|
||||
type: Type,
|
||||
handler: (event: Extract<Event, { type: Type }>, metadata: TuiEventMetadata) => void,
|
||||
) => () => void
|
||||
}
|
||||
|
||||
export type TuiEventMetadata = {
|
||||
directory: string
|
||||
workspace: string | undefined
|
||||
on: <Type extends Event["type"]>(type: Type, handler: (event: Extract<Event, { type: Type }>) => void) => () => void
|
||||
}
|
||||
|
||||
export type TuiDispose = () => void | Promise<void>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"name": "@opencode-ai/sdk",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"name": "@opencode-ai/server",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -3,5 +3,7 @@
|
||||
- NEVER hardcode user-visible English strings in production code. ALWAYS use an i18n key for visible copy, placeholders, accessible labels, tooltips, menus, dialogs, empty states, and displayed errors.
|
||||
- When migrating existing copy to i18n, preserve the English text byte-for-byte unless the task explicitly requests a copy change.
|
||||
- NEVER change existing English text or English keys to facilitate translation. English is intentional, designer-written source copy; adapt locale-specific translations and i18n mechanics around it.
|
||||
- Keep locale and grammar logic behind the shared typed i18n API. Session components should use `t(...)`, `plural(...)`, `parts(...)`, or `pluralParts(...)`; they must not inspect locales, choose plural categories, construct category-suffixed keys, or assemble translated grammatical fragments.
|
||||
- Prefer complete phrase templates with typed rich slots for styled values. If the current API cannot express a phrase, deepen the shared context instead of leaking locale mechanics into session components.
|
||||
- Do not translate from model knowledge alone. Verify terminology and grammar with Unicode CLDR locale/plural data, Microsoft Localization Style Guides and terminology, Apple localization/style guidance and localized platform UI, Mozilla localization style guides, Mozilla Pontoon, and the Firefox localization corpus at `github.com/mozilla-l10n/firefox-l10n`.
|
||||
- Also use the relevant language authority or official dictionary for the locale (for example RAE/Fundéu, FranceTerme, Duden, TDK, Kotus/Kielitoimiston sanakirja, Språkrådet/Bokmålsordboka, Rada Języka Polskiego/PWN, the Russian and Arabic language academies, the Ukrainian Orthography, Taiwan MOE dictionaries, or the Royal Society of Thailand). Treat the English dictionary as the semantic source of truth and preserve placeholders, code identifiers, product names, and keyboard labels.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@opencode-ai/session-ui",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -146,11 +146,7 @@ export const LineComment = (props: LineCommentProps) => {
|
||||
<div data-slot="line-comment-tools">{split.actions}</div>
|
||||
</Show>
|
||||
</div>
|
||||
<div data-slot="line-comment-label">
|
||||
{i18n.t("ui.lineComment.label.prefix")}
|
||||
{split.selection}
|
||||
{i18n.t("ui.lineComment.label.suffix")}
|
||||
</div>
|
||||
<div data-slot="line-comment-label">{i18n.parts("ui.lineComment.label", { selection: split.selection })}</div>
|
||||
</div>
|
||||
</LineCommentAnchor>
|
||||
)
|
||||
@@ -395,9 +391,7 @@ export const LineCommentEditor = (props: LineCommentEditorProps) => {
|
||||
</Show>
|
||||
<div data-slot="line-comment-actions">
|
||||
<div data-slot="line-comment-editor-label">
|
||||
{i18n.t("ui.lineComment.editorLabel.prefix")}
|
||||
{split.selection}
|
||||
{i18n.t("ui.lineComment.editorLabel.suffix")}
|
||||
{i18n.parts("ui.lineComment.editorLabel", { selection: split.selection })}
|
||||
</div>
|
||||
<Show
|
||||
when={!props.inline}
|
||||
|
||||
@@ -1,57 +1,6 @@
|
||||
[data-component="tool-count-label"] {
|
||||
display: inline-flex;
|
||||
align-items: baseline;
|
||||
white-space: nowrap;
|
||||
white-space: pre;
|
||||
gap: 0;
|
||||
|
||||
[data-slot="tool-count-label-before"] {
|
||||
display: inline-block;
|
||||
white-space: pre;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
[data-slot="tool-count-label-word"] {
|
||||
display: inline-flex;
|
||||
align-items: baseline;
|
||||
white-space: pre;
|
||||
line-height: inherit;
|
||||
}
|
||||
|
||||
[data-slot="tool-count-label-stem"] {
|
||||
display: inline-block;
|
||||
white-space: pre;
|
||||
}
|
||||
|
||||
[data-slot="tool-count-label-suffix"] {
|
||||
display: inline-grid;
|
||||
grid-template-columns: 0fr;
|
||||
opacity: 0;
|
||||
filter: blur(calc(var(--tool-motion-blur, 2px) * 0.42));
|
||||
overflow: hidden;
|
||||
transform: translateX(-0.04em);
|
||||
transition-property: grid-template-columns, opacity, filter, transform;
|
||||
transition-duration: 250ms, 250ms, 250ms, 250ms;
|
||||
transition-timing-function:
|
||||
var(--tool-motion-ease, cubic-bezier(0.22, 1, 0.36, 1)), ease-out, ease-out,
|
||||
var(--tool-motion-ease, cubic-bezier(0.22, 1, 0.36, 1));
|
||||
}
|
||||
|
||||
[data-slot="tool-count-label-suffix"][data-active="true"] {
|
||||
grid-template-columns: 1fr;
|
||||
opacity: 1;
|
||||
filter: blur(0);
|
||||
transform: translateX(0);
|
||||
}
|
||||
|
||||
[data-slot="tool-count-label-suffix-inner"] {
|
||||
min-width: 0;
|
||||
overflow: hidden;
|
||||
white-space: pre;
|
||||
}
|
||||
}
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
[data-component="tool-count-label"] [data-slot="tool-count-label-suffix"] {
|
||||
transition-duration: 0ms;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,61 +1,18 @@
|
||||
import { createMemo } from "solid-js"
|
||||
import { AnimatedNumber } from "@opencode-ai/ui/animated-number"
|
||||
import { pluralCategory, pluralKey, useI18n, type UiI18nPluralKey } from "@opencode-ai/ui/context/i18n"
|
||||
|
||||
function split(text: string) {
|
||||
const match = /{{\s*count\s*}}/.exec(text)
|
||||
if (!match) return { before: "", after: text }
|
||||
if (match.index === undefined) return { before: "", after: text }
|
||||
return {
|
||||
before: text.slice(0, match.index),
|
||||
after: text.slice(match.index + match[0].length),
|
||||
}
|
||||
}
|
||||
|
||||
function common(one: string, other: string) {
|
||||
const a = Array.from(one)
|
||||
const b = Array.from(other)
|
||||
let i = 0
|
||||
while (i < a.length && i < b.length && a[i] === b[i]) i++
|
||||
return {
|
||||
stem: a.slice(0, i).join(""),
|
||||
one: a.slice(i).join(""),
|
||||
other: b.slice(i).join(""),
|
||||
}
|
||||
}
|
||||
import { useI18n, type UiI18nPluralKey } from "@opencode-ai/ui/context/i18n"
|
||||
|
||||
export function AnimatedCountLabel(props: { count: number; plural: UiI18nPluralKey; class?: string }) {
|
||||
const i18n = useI18n()
|
||||
const category = createMemo(() => pluralCategory(i18n.locale(), Math.round(props.count)))
|
||||
const one = createMemo(() => split(i18n.t(pluralKey(props.plural, "one"))))
|
||||
const other = createMemo(() => split(i18n.t(pluralKey(props.plural, "other"))))
|
||||
const active = createMemo(() => split(i18n.t(pluralKey(props.plural, category()))))
|
||||
const suffix = createMemo(() => common(one().after, other().after))
|
||||
const splitSuffix = createMemo(
|
||||
() =>
|
||||
(category() === "one" || category() === "other") &&
|
||||
one().before === other().before &&
|
||||
(one().after.startsWith(other().after) || other().after.startsWith(one().after)),
|
||||
const parts = createMemo(() =>
|
||||
i18n.pluralParts(props.plural, Math.round(props.count), {
|
||||
count: <AnimatedNumber value={props.count} />,
|
||||
}),
|
||||
)
|
||||
const before = createMemo(() => (splitSuffix() ? one().before : active().before))
|
||||
const stem = createMemo(() => (splitSuffix() ? suffix().stem : active().after))
|
||||
const tail = createMemo(() => {
|
||||
if (!splitSuffix()) return ""
|
||||
if (category() === "one") return suffix().one
|
||||
return suffix().other
|
||||
})
|
||||
const showTail = createMemo(() => splitSuffix() && tail().length > 0)
|
||||
|
||||
return (
|
||||
<span data-component="tool-count-label" class={props.class}>
|
||||
<span data-slot="tool-count-label-before">{before()}</span>
|
||||
<AnimatedNumber value={props.count} />
|
||||
<span data-slot="tool-count-label-word">
|
||||
<span data-slot="tool-count-label-stem">{stem()}</span>
|
||||
<span data-slot="tool-count-label-suffix" data-active={showTail() ? "true" : "false"}>
|
||||
<span data-slot="tool-count-label-suffix-inner">{tail()}</span>
|
||||
</span>
|
||||
</span>
|
||||
{parts()}
|
||||
</span>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -5,10 +5,6 @@ import { PreloadMultiFileDiffResult } from "@pierre/diffs/ssr"
|
||||
|
||||
export type NormalizedProviderListResponse = {
|
||||
all: Map<string, Provider>
|
||||
defaultModel?: {
|
||||
providerID: string
|
||||
modelID: string
|
||||
} | null
|
||||
default: {
|
||||
[key: string]: string
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@opencode-ai/slack",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"name": "@opencode-ai/stats-app",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"name": "@opencode-ai/stats-core",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"name": "@opencode-ai/stats-server",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"name": "@opencode-ai/tui",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,19 +1,13 @@
|
||||
import type { Event } from "@opencode-ai/sdk/v2"
|
||||
import type { TuiAttentionSoundName, TuiEventMetadata, TuiPlugin, TuiPluginApi } from "@opencode-ai/plugin/tui"
|
||||
import type { TuiAttentionSoundName, TuiPlugin, TuiPluginApi } from "@opencode-ai/plugin/tui"
|
||||
import type { BuiltinTuiPlugin } from "../builtins"
|
||||
|
||||
const id = "internal:notifications"
|
||||
|
||||
type SessionError = Extract<Event, { type: "session.error" }>["properties"]["error"]
|
||||
|
||||
function matchesSession(api: TuiPluginApi, sessionID: string, metadata: TuiEventMetadata) {
|
||||
const session = api.state.session.get(sessionID)
|
||||
return session?.directory === metadata.directory && session.workspaceID === metadata.workspace
|
||||
}
|
||||
|
||||
function notify(api: TuiPluginApi, sessionID: string | undefined, message: string, sound: TuiAttentionSoundName) {
|
||||
const session = sessionID ? api.state.session.get(sessionID) : undefined
|
||||
if (!session) return
|
||||
const isSubagent = session?.parentID !== undefined
|
||||
void api.attention.notify({
|
||||
title: session?.title,
|
||||
@@ -38,41 +32,32 @@ const tui: TuiPlugin = async (api) => {
|
||||
const questions = new Set<string>()
|
||||
const permissions = new Set<string>()
|
||||
|
||||
api.event.on("question.asked", (event, metadata) => {
|
||||
if (!matchesSession(api, event.properties.sessionID, metadata)) return
|
||||
if (!api.state.session.question(event.properties.sessionID).some((item) => item.id === event.properties.id)) return
|
||||
api.event.on("question.asked", (event) => {
|
||||
if (questions.has(event.properties.id)) return
|
||||
questions.add(event.properties.id)
|
||||
notify(api, event.properties.sessionID, "Question needs input", "question")
|
||||
})
|
||||
|
||||
api.event.on("question.replied", (event, metadata) => {
|
||||
if (!matchesSession(api, event.properties.sessionID, metadata)) return
|
||||
api.event.on("question.replied", (event) => {
|
||||
questions.delete(event.properties.requestID)
|
||||
})
|
||||
|
||||
api.event.on("question.rejected", (event, metadata) => {
|
||||
if (!matchesSession(api, event.properties.sessionID, metadata)) return
|
||||
api.event.on("question.rejected", (event) => {
|
||||
questions.delete(event.properties.requestID)
|
||||
})
|
||||
|
||||
api.event.on("permission.asked", (event, metadata) => {
|
||||
if (!matchesSession(api, event.properties.sessionID, metadata)) return
|
||||
if (!api.state.session.permission(event.properties.sessionID).some((item) => item.id === event.properties.id))
|
||||
return
|
||||
api.event.on("permission.asked", (event) => {
|
||||
if (permissions.has(event.properties.id)) return
|
||||
permissions.add(event.properties.id)
|
||||
notify(api, event.properties.sessionID, "Permission needs input", "permission")
|
||||
})
|
||||
|
||||
api.event.on("permission.replied", (event, metadata) => {
|
||||
if (!matchesSession(api, event.properties.sessionID, metadata)) return
|
||||
api.event.on("permission.replied", (event) => {
|
||||
permissions.delete(event.properties.requestID)
|
||||
})
|
||||
|
||||
api.event.on("session.status", (event, metadata) => {
|
||||
api.event.on("session.status", (event) => {
|
||||
const sessionID = event.properties.sessionID
|
||||
if (!matchesSession(api, sessionID, metadata)) return
|
||||
if (event.properties.status.type === "busy" || event.properties.status.type === "retry") {
|
||||
active.add(sessionID)
|
||||
errored.delete(sessionID)
|
||||
@@ -92,10 +77,9 @@ const tui: TuiPlugin = async (api) => {
|
||||
notify(api, sessionID, "Session done", session?.parentID ? "subagent_done" : "done")
|
||||
})
|
||||
|
||||
api.event.on("session.error", (event, metadata) => {
|
||||
api.event.on("session.error", (event) => {
|
||||
const sessionID = event.properties.sessionID
|
||||
if (!sessionID) return
|
||||
if (!matchesSession(api, sessionID, metadata)) return
|
||||
if (!active.has(sessionID)) return
|
||||
errored.add(sessionID)
|
||||
notify(api, sessionID, sessionErrorMessage(event.properties.error), "error")
|
||||
|
||||
@@ -4,14 +4,9 @@ import type { Event, PermissionRequest, QuestionRequest, Session } from "@openco
|
||||
import type { TuiAttentionNotifyInput } from "@opencode-ai/plugin/tui"
|
||||
import { createTuiPluginApi } from "../../../fixture/tui-plugin"
|
||||
|
||||
async function setup(input: { auto?: boolean } = {}) {
|
||||
async function setup() {
|
||||
const notifications: TuiAttentionNotifyInput[] = []
|
||||
const handlers = new Map<
|
||||
Event["type"],
|
||||
((event: Event, metadata: { directory: string; workspace: string | undefined }) => void)[]
|
||||
>()
|
||||
const permissions: Record<string, PermissionRequest[]> = {}
|
||||
const questions: Record<string, QuestionRequest[]> = {}
|
||||
const handlers = new Map<Event["type"], ((event: Event) => void)[]>()
|
||||
const session = (id: string, title: string, parentID?: string): Session => ({
|
||||
id,
|
||||
title,
|
||||
@@ -38,18 +33,9 @@ async function setup(input: { auto?: boolean } = {}) {
|
||||
},
|
||||
},
|
||||
event: {
|
||||
on: <Type extends Event["type"]>(
|
||||
type: Type,
|
||||
handler: (
|
||||
event: Extract<Event, { type: Type }>,
|
||||
metadata: { directory: string; workspace: string | undefined },
|
||||
) => void,
|
||||
) => {
|
||||
on: <Type extends Event["type"]>(type: Type, handler: (event: Extract<Event, { type: Type }>) => void) => {
|
||||
const list = handlers.get(type) ?? []
|
||||
const wrapped = handler as (
|
||||
event: Event,
|
||||
metadata: { directory: string; workspace: string | undefined },
|
||||
) => void
|
||||
const wrapped = handler as (event: Event) => void
|
||||
list.push(wrapped)
|
||||
handlers.set(type, list)
|
||||
return () => {
|
||||
@@ -63,8 +49,6 @@ async function setup(input: { auto?: boolean } = {}) {
|
||||
state: {
|
||||
session: {
|
||||
get: (sessionID: string) => sessions[sessionID],
|
||||
permission: (sessionID: string) => permissions[sessionID] ?? [],
|
||||
question: (sessionID: string) => questions[sessionID] ?? [],
|
||||
},
|
||||
},
|
||||
}),
|
||||
@@ -74,30 +58,8 @@ async function setup(input: { auto?: boolean } = {}) {
|
||||
|
||||
return {
|
||||
notifications,
|
||||
emit(event: Event, metadata = { directory: "/workspace", workspace: undefined as string | undefined }) {
|
||||
if (event.type === "permission.asked" && !input.auto) {
|
||||
permissions[event.properties.sessionID] = [
|
||||
...(permissions[event.properties.sessionID] ?? []).filter((item) => item.id !== event.properties.id),
|
||||
event.properties,
|
||||
]
|
||||
}
|
||||
if (event.type === "permission.replied") {
|
||||
permissions[event.properties.sessionID] = (permissions[event.properties.sessionID] ?? []).filter(
|
||||
(item) => item.id !== event.properties.requestID,
|
||||
)
|
||||
}
|
||||
if (event.type === "question.asked") {
|
||||
questions[event.properties.sessionID] = [
|
||||
...(questions[event.properties.sessionID] ?? []).filter((item) => item.id !== event.properties.id),
|
||||
event.properties,
|
||||
]
|
||||
}
|
||||
if (event.type === "question.replied" || event.type === "question.rejected") {
|
||||
questions[event.properties.sessionID] = (questions[event.properties.sessionID] ?? []).filter(
|
||||
(item) => item.id !== event.properties.requestID,
|
||||
)
|
||||
}
|
||||
for (const handler of handlers.get(event.type) ?? []) handler(event, metadata)
|
||||
emit(event: Event) {
|
||||
for (const handler of handlers.get(event.type) ?? []) handler(event)
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -174,52 +136,6 @@ describe("internal notifications TUI plugin", () => {
|
||||
])
|
||||
})
|
||||
|
||||
test("suppresses auto-approved permission requests", async () => {
|
||||
const harness = await setup({ auto: true })
|
||||
|
||||
harness.emit({ id: "event-1", type: "permission.asked", properties: permission("permission-1") })
|
||||
|
||||
expect(harness.notifications).toEqual([])
|
||||
})
|
||||
|
||||
test("ignores events outside the session location", async () => {
|
||||
const harness = await setup()
|
||||
const foreign = { directory: "/other", workspace: undefined }
|
||||
|
||||
harness.emit({ id: "event-1", type: "question.asked", properties: question("question-1") }, foreign)
|
||||
harness.emit({ id: "event-2", type: "permission.asked", properties: permission("permission-1") }, foreign)
|
||||
harness.emit(
|
||||
{ id: "event-2b", type: "permission.asked", properties: permission("permission-2") },
|
||||
{ directory: "/workspace", workspace: "other-workspace" },
|
||||
)
|
||||
harness.emit(
|
||||
{
|
||||
id: "event-3",
|
||||
type: "session.status",
|
||||
properties: { sessionID: "session", status: { type: "busy" } },
|
||||
},
|
||||
foreign,
|
||||
)
|
||||
harness.emit(
|
||||
{
|
||||
id: "event-4",
|
||||
type: "session.error",
|
||||
properties: { sessionID: "session", error: { name: "UnknownError", data: { message: "boom" } } },
|
||||
},
|
||||
foreign,
|
||||
)
|
||||
harness.emit(
|
||||
{
|
||||
id: "event-5",
|
||||
type: "session.status",
|
||||
properties: { sessionID: "session", status: { type: "idle" } },
|
||||
},
|
||||
foreign,
|
||||
)
|
||||
|
||||
expect(harness.notifications).toEqual([])
|
||||
})
|
||||
|
||||
test("notifies when an active session becomes idle and suppresses no-op idle", async () => {
|
||||
const harness = await setup()
|
||||
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
- NEVER hardcode user-visible English strings in production code. ALWAYS use an i18n key for component defaults, visible copy, placeholders, accessible labels, tooltips, dialogs, toasts, empty states, and displayed errors.
|
||||
- When migrating existing copy to i18n, preserve the English text byte-for-byte unless the task explicitly requests a copy change.
|
||||
- NEVER change existing English text or English keys to facilitate translation. English is intentional, designer-written source copy; adapt locale-specific translations and i18n mechanics around it.
|
||||
- Keep locale and grammar logic behind the shared typed i18n API. Components should use `t(...)`, `plural(...)`, `parts(...)`, or `pluralParts(...)`; they must not inspect locales, choose plural categories, construct category-suffixed keys, or assemble translated grammatical fragments.
|
||||
- Prefer complete phrase templates with typed rich slots for styled values. If the current API cannot express a phrase, deepen the shared context instead of leaking locale mechanics into components.
|
||||
- Do not translate from model knowledge alone. Verify terminology and grammar with Unicode CLDR locale/plural data, Microsoft Localization Style Guides and terminology, Apple localization/style guidance and localized platform UI, Mozilla localization style guides, Mozilla Pontoon, and the Firefox localization corpus at `github.com/mozilla-l10n/firefox-l10n`.
|
||||
- For developer-facing terminology, prefer established usage in the target language's developer community over literal translations. Cross-check maintained Firefox, KDE, and VS Code localizations, using at least two independent corpora when available. Keep established English loanwords and acronyms instead of inventing unfamiliar terms.
|
||||
- Translate whole UI phrases in context rather than substituting glossary words. Audit recurring concepts for consistency and review every exact-English value; retain it only when it is an intentional product/provider/tool name, URL, code token, keyboard legend, acronym, asset name, or established borrowing.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@opencode-ai/ui",
|
||||
"version": "1.18.16",
|
||||
"version": "1.18.15",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"repository": {
|
||||
|
||||
@@ -247,16 +247,9 @@ export function List<T>(props: ListProps<T> & { ref?: (ref: ListRef) => void })
|
||||
const query = filter()
|
||||
if (!query) return i18n.t("ui.list.empty")
|
||||
|
||||
const suffix = i18n.t("ui.list.emptyWithFilter.suffix")
|
||||
return (
|
||||
<>
|
||||
<span>{i18n.t("ui.list.emptyWithFilter.prefix")}</span>
|
||||
<span data-slot="list-filter">"{query}"</span>
|
||||
<Show when={suffix}>
|
||||
<span>{suffix}</span>
|
||||
</Show>
|
||||
</>
|
||||
)
|
||||
return i18n.parts("ui.list.emptyWithFilter", {
|
||||
query: <span data-slot="list-filter">"{query}"</span>,
|
||||
})
|
||||
}
|
||||
|
||||
return (
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { describe, expect, test } from "bun:test"
|
||||
import { pluralCategory } from "./i18n"
|
||||
import { createUiI18n, pluralCategory, pluralKey, type UiI18nParams, type UiI18nSource } from "./i18n"
|
||||
|
||||
describe("pluralCategory", () => {
|
||||
test.each([
|
||||
@@ -22,3 +22,58 @@ describe("pluralCategory", () => {
|
||||
expect(pluralCategory(locale, count)).toBe(expected)
|
||||
})
|
||||
})
|
||||
|
||||
function i18n(locale: string, messages: Record<string, string>) {
|
||||
const source: UiI18nSource = {
|
||||
locale: () => locale,
|
||||
t: (key, params) => resolve(messages[key] ?? key, params),
|
||||
plural: (key, count, params) =>
|
||||
source.t(pluralKey(key, pluralCategory(source.locale(), count)), { ...params, count }),
|
||||
}
|
||||
return createUiI18n(source)
|
||||
}
|
||||
|
||||
function resolve(template: string, params?: UiI18nParams) {
|
||||
if (!params) return template
|
||||
return template.replace(/{{\s*([^}]+?)\s*}}/g, (_, key) => String(params[String(key)] ?? ""))
|
||||
}
|
||||
|
||||
describe("createUiI18n", () => {
|
||||
test("keeps dynamic source copy for English locale tags", () => {
|
||||
const value = i18n("en-US", { title: "Dictionary title" })
|
||||
expect(value.tDynamic("title", "Runtime {{name}}", { name: "title" })).toBe("Runtime title")
|
||||
})
|
||||
|
||||
test("uses dictionary copy for non-English locales", () => {
|
||||
const value = i18n("fr", { title: "Titre traduit" })
|
||||
expect(value.tDynamic("title", "Runtime title")).toBe("Titre traduit")
|
||||
})
|
||||
|
||||
test("inserts rich values in dictionary order", () => {
|
||||
const value = i18n("ja", {
|
||||
"ui.lineComment.label": "{{selection}}へのコメント",
|
||||
"ui.lineComment.editorLabel": "Commenting on {{selection}}",
|
||||
"ui.list.emptyWithFilter": "没有关于{{query}}的结果",
|
||||
})
|
||||
const selection = { id: "selection" }
|
||||
expect(value.parts("ui.lineComment.label", { selection })).toEqual(["", selection, "へのコメント"])
|
||||
expect(value.parts("ui.list.emptyWithFilter", { query: "needle" })).toEqual(["没有关于", "needle", "的结果"])
|
||||
})
|
||||
|
||||
test("rejects malformed rich templates", () => {
|
||||
const value = i18n("en", { "ui.lineComment.label": "Comment" })
|
||||
expect(() => value.parts("ui.lineComment.label", { selection: "path" })).toThrow()
|
||||
})
|
||||
|
||||
test("selects plural copy before inserting the animated count", () => {
|
||||
const value = i18n("ar", {
|
||||
"ui.messagePart.context.read.two": "تمت قراءة ملفين: {{count}} في {{folder}}",
|
||||
})
|
||||
const count = { id: "animated-count" }
|
||||
expect(value.pluralParts("ui.messagePart.context.read", 2, { count }, { folder: "src" })).toEqual([
|
||||
"تمت قراءة ملفين: ",
|
||||
count,
|
||||
" في src",
|
||||
])
|
||||
})
|
||||
})
|
||||
|
||||
@@ -16,13 +16,32 @@ export type UiI18nPluralLookupKey = `${UiI18nPluralKey}.${UiPluralCategory}`
|
||||
|
||||
export type UiI18nParams = Record<string, string | number | boolean>
|
||||
|
||||
export type UiI18n = {
|
||||
export const UI_RICH_KEYS = {
|
||||
"ui.lineComment.label": "selection",
|
||||
"ui.lineComment.editorLabel": "selection",
|
||||
"ui.list.emptyWithFilter": "query",
|
||||
} as const
|
||||
export type UiI18nRichKey = keyof typeof UI_RICH_KEYS
|
||||
export type UiI18nRichSlot<K extends UiI18nRichKey> = (typeof UI_RICH_KEYS)[K]
|
||||
export type UiI18nPart<T> = string | T
|
||||
|
||||
export type UiI18nSource = {
|
||||
locale: Accessor<string>
|
||||
layoutLocale?: Accessor<string>
|
||||
t: (key: UiI18nKey, params?: UiI18nParams) => string
|
||||
plural: (key: UiI18nPluralKey, count: number, params?: UiI18nParams) => string
|
||||
}
|
||||
|
||||
export type UiI18n = UiI18nSource & {
|
||||
/** Preserve runtime-generated English copy while using the keyed dictionary for every other locale. */
|
||||
tDynamic: (key: UiI18nKey, source: string, params?: UiI18nParams) => string
|
||||
parts: <K extends UiI18nRichKey, S extends Record<UiI18nRichSlot<K>, unknown>>(
|
||||
key: K,
|
||||
slots: S,
|
||||
) => UiI18nPart<S[UiI18nRichSlot<K>]>[]
|
||||
pluralParts: <T>(key: UiI18nPluralKey, count: number, slots: { count: T }, params?: UiI18nParams) => UiI18nPart<T>[]
|
||||
}
|
||||
|
||||
const rules = new Map<string, Intl.PluralRules>()
|
||||
|
||||
export function pluralCategory(locale: string, count: number): UiPluralCategory {
|
||||
@@ -35,7 +54,7 @@ export function pluralCategory(locale: string, count: number): UiPluralCategory
|
||||
}
|
||||
|
||||
export function pluralKey(key: UiI18nPluralKey, category: UiPluralCategory) {
|
||||
return `${key}.${category}` as UiI18nPluralLookupKey
|
||||
return `${key}.${category}`
|
||||
}
|
||||
|
||||
function resolveTemplate(text: string, params?: UiI18nParams) {
|
||||
@@ -47,22 +66,50 @@ function resolveTemplate(text: string, params?: UiI18nParams) {
|
||||
})
|
||||
}
|
||||
|
||||
const fallback: UiI18n = {
|
||||
function resolveParts<T>(template: string, slot: string, value: T, params?: UiI18nParams): UiI18nPart<T>[] {
|
||||
const matches = Array.from(template.matchAll(/{{\s*([^}]+?)\s*}}/g)).filter((match) => match[1] === slot)
|
||||
if (matches.length !== 1) throw new Error(`Expected exactly one {{${slot}}} placeholder`)
|
||||
const match = matches[0]
|
||||
const index = match.index
|
||||
return [
|
||||
resolveTemplate(template.slice(0, index), params),
|
||||
value,
|
||||
resolveTemplate(template.slice(index + match[0].length), params),
|
||||
]
|
||||
}
|
||||
|
||||
export function createUiI18n(source: UiI18nSource): UiI18n {
|
||||
return {
|
||||
...source,
|
||||
tDynamic: (key, value, params) =>
|
||||
source.locale().toLowerCase().split("-")[0] === "en" ? resolveTemplate(value, params) : source.t(key, params),
|
||||
parts: (key, slots) => {
|
||||
const slot = UI_RICH_KEYS[key]
|
||||
return resolveParts(source.t(key), slot, slots[slot])
|
||||
},
|
||||
pluralParts: (key, count, slots, params) =>
|
||||
resolveParts(source.t(pluralKey(key, pluralCategory(source.locale(), count))), "count", slots.count, params),
|
||||
}
|
||||
}
|
||||
|
||||
const fallbackSource: UiI18nSource = {
|
||||
locale: () => "en",
|
||||
t: (key, params) => {
|
||||
const value = en[key] ?? String(key)
|
||||
const value = en[key] ?? key
|
||||
return resolveTemplate(value, params)
|
||||
},
|
||||
plural: (key, count, params) =>
|
||||
fallback.t(pluralKey(key, pluralCategory(fallback.locale(), count)), { ...params, count }),
|
||||
fallbackSource.t(pluralKey(key, pluralCategory(fallbackSource.locale(), count)), { ...params, count }),
|
||||
}
|
||||
const fallback = createUiI18n(fallbackSource)
|
||||
|
||||
const Context = createContext<UiI18n>(fallback)
|
||||
|
||||
function UiI18nProvider(props: ParentProps<{ value: UiI18n }>) {
|
||||
function UiI18nProvider(props: ParentProps<{ value: UiI18nSource }>) {
|
||||
const value = createUiI18n(props.value)
|
||||
return (
|
||||
<I18nProvider locale={(props.value.layoutLocale ?? props.value.locale)()}>
|
||||
<Context.Provider value={props.value}>{props.children}</Context.Provider>
|
||||
<I18nProvider locale={(value.layoutLocale ?? value.locale)()}>
|
||||
<Context.Provider value={value}>{props.children}</Context.Provider>
|
||||
</I18nProvider>
|
||||
)
|
||||
}
|
||||
|
||||
@@ -43,10 +43,8 @@ export const dict: Record<string, string> = {
|
||||
"ui.fileMedia.binary.title": "ሁለትዮሽ ፋይል",
|
||||
"ui.fileMedia.binary.description.path": "{{path}} ሁለትዮሽ ነው።",
|
||||
"ui.fileMedia.binary.description.default": "ሁለትዮሽ ይዘት",
|
||||
"ui.lineComment.label.prefix": "አስተያየት በ ላይ ",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "በላይ አስተያየት መስጠት ",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "አስተያየት በ ላይ {{selection}}",
|
||||
"ui.lineComment.editorLabel": "በላይ አስተያየት መስጠት {{selection}}",
|
||||
"ui.lineComment.placeholder": "አስተያየት ያክሉ",
|
||||
"ui.lineComment.contextPlaceholder": "ለዚህ ለውጥ አውድ ጨምር",
|
||||
"ui.lineComment.submit": "አስተያየት",
|
||||
@@ -102,8 +100,7 @@ export const dict: Record<string, string> = {
|
||||
"ui.list.loading": "በመጫን ላይ",
|
||||
"ui.list.empty": "ምንም ውጤቶች",
|
||||
"ui.list.clearFilter": "ማጣሪያን አጽዳ",
|
||||
"ui.list.emptyWithFilter.prefix": "ምንም ውጤቶች ለ",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "ምንም ውጤቶች ለ{{query}}",
|
||||
"ui.fileSearch.placeholder": "አግኝ",
|
||||
"ui.fileSearch.previousMatch": "የቀድሞ ግጥሚያ",
|
||||
"ui.fileSearch.nextMatch": "ቀጣይ ተዛማጅ",
|
||||
|
||||
@@ -44,10 +44,8 @@ export const dict = {
|
||||
"ui.fileMedia.binary.description.path": "{{path}} عبارة عن ملف ثنائي ولا يمكن عرضه.",
|
||||
"ui.fileMedia.binary.description.default": "هذا ملف ثنائي ولا يمكن عرضه.",
|
||||
|
||||
"ui.lineComment.label.prefix": "تعليق على ",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "جارٍ التعليق على ",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "تعليق على {{selection}}",
|
||||
"ui.lineComment.editorLabel": "جارٍ التعليق على {{selection}}",
|
||||
"ui.lineComment.placeholder": "أضف تعليقًا",
|
||||
"ui.lineComment.contextPlaceholder": "أضف سياقًا لهذا التغيير",
|
||||
"ui.lineComment.submit": "تعليق",
|
||||
@@ -126,8 +124,7 @@ export const dict = {
|
||||
"ui.list.loading": "جارٍ التحميل",
|
||||
"ui.list.empty": "لا توجد نتائج",
|
||||
"ui.list.clearFilter": "مسح عامل التصفية",
|
||||
"ui.list.emptyWithFilter.prefix": "لا توجد نتائج لـ",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "لا توجد نتائج لـ{{query}}",
|
||||
|
||||
"ui.messageNav.newMessage": "رسالة جديدة",
|
||||
|
||||
|
||||
@@ -43,10 +43,8 @@ export const dict: Record<string, string> = {
|
||||
"ui.fileMedia.binary.title": "İkili fayl",
|
||||
"ui.fileMedia.binary.description.path": "{{path}} ikili fayldır.",
|
||||
"ui.fileMedia.binary.description.default": "İkili məzmun",
|
||||
"ui.lineComment.label.prefix": "Şərh: ",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "Şərh yazılır: ",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "Şərh: {{selection}}",
|
||||
"ui.lineComment.editorLabel": "Şərh yazılır: {{selection}}",
|
||||
"ui.lineComment.placeholder": "Şərh əlavə et",
|
||||
"ui.lineComment.contextPlaceholder": "Bu dəyişiklik üçün kontekst əlavə et",
|
||||
"ui.lineComment.submit": "Şərh et",
|
||||
@@ -103,8 +101,7 @@ export const dict: Record<string, string> = {
|
||||
"ui.list.loading": "Yüklənir",
|
||||
"ui.list.empty": "Nəticə yoxdur",
|
||||
"ui.list.clearFilter": "Filtri təmizlə",
|
||||
"ui.list.emptyWithFilter.prefix": "Nəticə tapılmadı:",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "Nəticə tapılmadı:{{query}}",
|
||||
"ui.fileSearch.placeholder": "Axtar",
|
||||
"ui.fileSearch.previousMatch": "Əvvəlki uyğunluq",
|
||||
"ui.fileSearch.nextMatch": "Növbəti uyğunluq",
|
||||
|
||||
@@ -43,10 +43,8 @@ export const dict = {
|
||||
"ui.fileMedia.binary.title": "Двоичен файл",
|
||||
"ui.fileMedia.binary.description.path": "{{path}} е двоичен.",
|
||||
"ui.fileMedia.binary.description.default": "Двоично съдържание",
|
||||
"ui.lineComment.label.prefix": "Коментирайте",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "Коментиране на",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "Коментирайте{{selection}}",
|
||||
"ui.lineComment.editorLabel": "Коментиране на{{selection}}",
|
||||
"ui.lineComment.placeholder": "Добавете коментар",
|
||||
"ui.lineComment.contextPlaceholder": "Добавете контекст за тази промяна",
|
||||
"ui.lineComment.submit": "Коментирайте",
|
||||
@@ -103,8 +101,7 @@ export const dict = {
|
||||
"ui.list.loading": "Зарежда се",
|
||||
"ui.list.empty": "Няма резултати",
|
||||
"ui.list.clearFilter": "Изчистване на филтъра",
|
||||
"ui.list.emptyWithFilter.prefix": "Няма резултати за",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "Няма резултати за{{query}}",
|
||||
"ui.fileSearch.placeholder": "Намерете",
|
||||
"ui.fileSearch.previousMatch": "Предишен мач",
|
||||
"ui.fileSearch.nextMatch": "Следващ мач",
|
||||
|
||||
@@ -45,10 +45,8 @@ export const dict: Record<string, string> = {
|
||||
"ui.fileMedia.binary.title": "বাইনারি ফাইল",
|
||||
"ui.fileMedia.binary.description.path": "{{path}} হল বাইনারি।",
|
||||
"ui.fileMedia.binary.description.default": "বাইনারি বিষয়বস্তু",
|
||||
"ui.lineComment.label.prefix": "মন্তব্য করুন",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "মন্তব্য করছেন",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "মন্তব্য করুন{{selection}}",
|
||||
"ui.lineComment.editorLabel": "মন্তব্য করছেন{{selection}}",
|
||||
"ui.lineComment.placeholder": "মন্তব্য যোগ করুন",
|
||||
"ui.lineComment.contextPlaceholder": "এই পরিবর্তনের জন্য প্রসঙ্গ যোগ করুন",
|
||||
"ui.lineComment.submit": "মন্তব্য করুন",
|
||||
@@ -105,8 +103,7 @@ export const dict: Record<string, string> = {
|
||||
"ui.list.loading": "লোড হচ্ছে",
|
||||
"ui.list.empty": "কোন ফলাফল নেই",
|
||||
"ui.list.clearFilter": "ফিল্টার পরিষ্কার করুন",
|
||||
"ui.list.emptyWithFilter.prefix": "জন্য কোন ফলাফল",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "জন্য কোন ফলাফল{{query}}",
|
||||
"ui.fileSearch.placeholder": "খুঁজুন",
|
||||
"ui.fileSearch.previousMatch": "আগের ম্যাচ",
|
||||
"ui.fileSearch.nextMatch": "পরের ম্যাচ",
|
||||
@@ -141,8 +138,8 @@ export const dict: Record<string, string> = {
|
||||
"ui.tool.grep": "Grep",
|
||||
"ui.tool.task": "টাস্ক",
|
||||
"ui.tool.webfetch": "ওয়েবফেচ",
|
||||
"ui.tool.websearch": "Web Search",
|
||||
"ui.tool.websearch.provider": "{{provider}} Web Search",
|
||||
"ui.tool.websearch": "ওয়েব অনুসন্ধান",
|
||||
"ui.tool.websearch.provider": "{{provider}} ওয়েব অনুসন্ধান",
|
||||
"ui.tool.shell": "শেল",
|
||||
"ui.tool.patch": "প্যাচ",
|
||||
"ui.tool.todos": "করণীয়",
|
||||
|
||||
@@ -44,10 +44,8 @@ export const dict = {
|
||||
"ui.fileMedia.binary.description.path": "Não é possível exibir {{path}} porque é um arquivo binário.",
|
||||
"ui.fileMedia.binary.description.default": "Não é possível exibir o arquivo porque ele é binário.",
|
||||
|
||||
"ui.lineComment.label.prefix": "Comentar em ",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "Comentando em ",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "Comentar em {{selection}}",
|
||||
"ui.lineComment.editorLabel": "Comentando em {{selection}}",
|
||||
"ui.lineComment.placeholder": "Adicionar comentário",
|
||||
"ui.lineComment.contextPlaceholder": "Adicionar contexto para esta alteração",
|
||||
"ui.lineComment.submit": "Comentar",
|
||||
@@ -114,8 +112,7 @@ export const dict = {
|
||||
"ui.list.loading": "Carregando",
|
||||
"ui.list.empty": "Nenhum resultado",
|
||||
"ui.list.clearFilter": "Limpar filtro",
|
||||
"ui.list.emptyWithFilter.prefix": "Nenhum resultado para",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "Nenhum resultado para{{query}}",
|
||||
|
||||
"ui.messageNav.newMessage": "Nova mensagem",
|
||||
|
||||
|
||||
@@ -48,10 +48,8 @@ export const dict = {
|
||||
"ui.fileMedia.binary.description.path": "{{path}} je binarna datoteka.",
|
||||
"ui.fileMedia.binary.description.default": "Binarni sadržaj",
|
||||
|
||||
"ui.lineComment.label.prefix": "Komentar na ",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "Komentarišeš ",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "Komentar na {{selection}}",
|
||||
"ui.lineComment.editorLabel": "Komentarišeš {{selection}}",
|
||||
"ui.lineComment.placeholder": "Dodaj komentar",
|
||||
"ui.lineComment.contextPlaceholder": "Dodaj kontekst za ovu izmjenu",
|
||||
"ui.lineComment.submit": "Komentariši",
|
||||
@@ -118,8 +116,7 @@ export const dict = {
|
||||
"ui.list.loading": "Učitavanje",
|
||||
"ui.list.empty": "Nema rezultata",
|
||||
"ui.list.clearFilter": "Očisti filter",
|
||||
"ui.list.emptyWithFilter.prefix": "Nema rezultata za",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "Nema rezultata za{{query}}",
|
||||
|
||||
"ui.messageNav.newMessage": "Nova poruka",
|
||||
|
||||
|
||||
@@ -43,10 +43,8 @@ export const dict: Record<string, string> = {
|
||||
"ui.fileMedia.binary.title": "Fitxer binari",
|
||||
"ui.fileMedia.binary.description.path": "{{path}} és binari.",
|
||||
"ui.fileMedia.binary.description.default": "Contingut binari",
|
||||
"ui.lineComment.label.prefix": "Comenta ",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "Comentant ",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "Comenta {{selection}}",
|
||||
"ui.lineComment.editorLabel": "Comentant {{selection}}",
|
||||
"ui.lineComment.placeholder": "Afegeix un comentari",
|
||||
"ui.lineComment.contextPlaceholder": "Afegeix context per a aquest canvi",
|
||||
"ui.lineComment.submit": "Comenta",
|
||||
@@ -107,8 +105,7 @@ export const dict: Record<string, string> = {
|
||||
"ui.list.loading": "Carregant",
|
||||
"ui.list.empty": "Sense resultats",
|
||||
"ui.list.clearFilter": "Esborra el filtre",
|
||||
"ui.list.emptyWithFilter.prefix": "No hi ha resultats per a",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "No hi ha resultats per a{{query}}",
|
||||
"ui.fileSearch.placeholder": "Troba",
|
||||
"ui.fileSearch.previousMatch": "Coincidència anterior",
|
||||
"ui.fileSearch.nextMatch": "Coincidència següent",
|
||||
|
||||
@@ -43,10 +43,8 @@ export const dict: Record<string, string> = {
|
||||
"ui.fileMedia.binary.title": "Binární soubor",
|
||||
"ui.fileMedia.binary.description.path": "{{path}} je binární.",
|
||||
"ui.fileMedia.binary.description.default": "Binární obsah",
|
||||
"ui.lineComment.label.prefix": "Komentář k ",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "Komentování ",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "Komentář k {{selection}}",
|
||||
"ui.lineComment.editorLabel": "Komentování {{selection}}",
|
||||
"ui.lineComment.placeholder": "Přidat komentář",
|
||||
"ui.lineComment.contextPlaceholder": "Přidejte kontext pro tuto změnu",
|
||||
"ui.lineComment.submit": "Komentář",
|
||||
@@ -111,8 +109,7 @@ export const dict: Record<string, string> = {
|
||||
"ui.list.loading": "Načítání",
|
||||
"ui.list.empty": "Žádné výsledky",
|
||||
"ui.list.clearFilter": "Vymazat filtr",
|
||||
"ui.list.emptyWithFilter.prefix": "Žádné výsledky pro",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "Žádné výsledky pro{{query}}",
|
||||
"ui.fileSearch.placeholder": "Najít",
|
||||
"ui.fileSearch.previousMatch": "Předchozí shoda",
|
||||
"ui.fileSearch.nextMatch": "Další shoda",
|
||||
|
||||
@@ -44,10 +44,8 @@ export const dict = {
|
||||
"ui.fileMedia.binary.title": "Binær fil",
|
||||
"ui.fileMedia.binary.description.path": "{{path}} kan ikke vises, fordi det er en binær fil.",
|
||||
"ui.fileMedia.binary.description.default": "Denne fil kan ikke vises, fordi det er en binær fil.",
|
||||
"ui.lineComment.label.prefix": "Skriv en kommentar til ",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "Skriver en kommentar til ",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "Skriv en kommentar til {{selection}}",
|
||||
"ui.lineComment.editorLabel": "Skriver en kommentar til {{selection}}",
|
||||
"ui.lineComment.placeholder": "Tilføj kommentar",
|
||||
"ui.lineComment.submit": "Kommenter",
|
||||
"ui.lineComment.cancel": "Annuller",
|
||||
@@ -108,8 +106,7 @@ export const dict = {
|
||||
"ui.list.loading": "Indlæser",
|
||||
"ui.list.empty": "Ingen resultater",
|
||||
"ui.list.clearFilter": "Ryd filter",
|
||||
"ui.list.emptyWithFilter.prefix": "Ingen resultater for",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "Ingen resultater for{{query}}",
|
||||
|
||||
"ui.messageNav.newMessage": "Ny besked",
|
||||
|
||||
|
||||
@@ -51,10 +51,8 @@ export const dict = {
|
||||
"{{path}} kann nicht angezeigt werden, da es sich um eine Binärdatei handelt.",
|
||||
"ui.fileMedia.binary.description.default":
|
||||
"Diese Datei kann nicht angezeigt werden, da es sich um eine Binärdatei handelt.",
|
||||
"ui.lineComment.label.prefix": "Kommentar zu ",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "Kommentiere ",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "Kommentar zu {{selection}}",
|
||||
"ui.lineComment.editorLabel": "Kommentiere {{selection}}",
|
||||
"ui.lineComment.placeholder": "Kommentar hinzufügen",
|
||||
"ui.lineComment.submit": "Kommentieren",
|
||||
"ui.lineComment.cancel": "Abbrechen",
|
||||
@@ -115,8 +113,7 @@ export const dict = {
|
||||
"ui.list.loading": "Laden",
|
||||
"ui.list.empty": "Keine Ergebnisse",
|
||||
"ui.list.clearFilter": "Filter löschen",
|
||||
"ui.list.emptyWithFilter.prefix": "Keine Ergebnisse für",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "Keine Ergebnisse für{{query}}",
|
||||
|
||||
"ui.messageNav.newMessage": "Neue Nachricht",
|
||||
|
||||
|
||||
@@ -44,10 +44,8 @@ export const dict: Record<string, string> = {
|
||||
"ui.fileMedia.binary.title": "ބައިނަރީ ފައިލް އެވެ",
|
||||
"ui.fileMedia.binary.description.path": "{{path}} އަކީ ބައިނަރީ އެއްޗެކެވެ.",
|
||||
"ui.fileMedia.binary.description.default": "ބައިނަރީ ކޮންޓެންޓް",
|
||||
"ui.lineComment.label.prefix": "ކޮމެންޓް ކޮށްލައްވާ ",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "ކޮމެންޓް ކުރަމުންނެވެ ",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "ކޮމެންޓް ކޮށްލައްވާ {{selection}}",
|
||||
"ui.lineComment.editorLabel": "ކޮމެންޓް ކުރަމުންނެވެ {{selection}}",
|
||||
"ui.lineComment.placeholder": "ކޮމެންޓް އެޑް ކުރާށެވެ",
|
||||
"ui.lineComment.contextPlaceholder": "މި ބަދަލަށް ކޮންޓެކްސްޓް އިތުރުކުރުން",
|
||||
"ui.lineComment.submit": "ކޮމެންޓް",
|
||||
@@ -104,8 +102,7 @@ export const dict: Record<string, string> = {
|
||||
"ui.list.loading": "ލޯޑިންގ",
|
||||
"ui.list.empty": "ނަތީޖާއެއް ނެތެވެ",
|
||||
"ui.list.clearFilter": "ފިލްޓަރ ސާފުކުރުން",
|
||||
"ui.list.emptyWithFilter.prefix": "އެއްވެސް ނަތީޖާއެއް ނުލިބެއެވެ",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "އެއްވެސް ނަތީޖާއެއް ނުލިބެއެވެ{{query}}",
|
||||
"ui.fileSearch.placeholder": "ހޯދުން",
|
||||
"ui.fileSearch.previousMatch": "ކުރީ މެޗެވެ",
|
||||
"ui.fileSearch.nextMatch": "ދެން މެޗް",
|
||||
|
||||
@@ -45,10 +45,8 @@ export const dict: Record<string, string> = {
|
||||
"ui.fileMedia.binary.title": "ཟུང་ལྡན་ཡིག་སྣོད།",
|
||||
"ui.fileMedia.binary.description.path": "{{path}} འདི་ཟུང་ལྡན་ཨིན།",
|
||||
"ui.fileMedia.binary.description.default": "ཟུང་ལྡན་ནང་དོན།",
|
||||
"ui.lineComment.label.prefix": "བསམ་འཆར།",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "བསམ་འཆར་བཀོད་དོན།",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "བསམ་འཆར།{{selection}}",
|
||||
"ui.lineComment.editorLabel": "བསམ་འཆར་བཀོད་དོན།{{selection}}",
|
||||
"ui.lineComment.placeholder": "བསམ་འཆར་ཁ་སྣོན་འབད།",
|
||||
"ui.lineComment.contextPlaceholder": "བསྒྱུར་བཅོས་འདི་གི་དོན་ལུ་ སྐབས་དོན་ཁ་སྐོང་བརྐྱབ།",
|
||||
"ui.lineComment.submit": "བསམ༌འཆར",
|
||||
@@ -105,8 +103,7 @@ export const dict: Record<string, string> = {
|
||||
"ui.list.loading": "མངོན་གསལ་འབད་དོ།",
|
||||
"ui.list.empty": "གྲུབ་འབྲས་མེད།",
|
||||
"ui.list.clearFilter": "ཚགས་མ་བསལ།",
|
||||
"ui.list.emptyWithFilter.prefix": "2019 ལོའི་གྲུབ་འབྲས་མེད།",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "2019 ལོའི་གྲུབ་འབྲས་མེད།{{query}}",
|
||||
"ui.fileSearch.placeholder": "འཚོལ་ནི",
|
||||
"ui.fileSearch.previousMatch": "ཧེ་མའི་རྩེད་འགྲན་འདི།",
|
||||
"ui.fileSearch.nextMatch": "རྩེད་འགྲན་ཤུལ་མམ།",
|
||||
@@ -141,8 +138,8 @@ export const dict: Record<string, string> = {
|
||||
"ui.tool.grep": "Grep།",
|
||||
"ui.tool.task": "ལཱ",
|
||||
"ui.tool.webfetch": "ཝེབ་ཕིཆ།",
|
||||
"ui.tool.websearch": "Web Search",
|
||||
"ui.tool.websearch.provider": "{{provider}} Web Search",
|
||||
"ui.tool.websearch": "ཡོངས་འབྲེལ་འཚོལ་ཞིབ།",
|
||||
"ui.tool.websearch.provider": "{{provider}} ཡོངས་འབྲེལ་འཚོལ་ཞིབ།",
|
||||
"ui.tool.shell": "Shell",
|
||||
"ui.tool.patch": "ལྷནམ",
|
||||
"ui.tool.todos": "འབད་དགོཔ་ཚུ།",
|
||||
|
||||
@@ -43,10 +43,8 @@ export const dict: Record<string, string> = {
|
||||
"ui.fileMedia.binary.title": "Δυαδικό αρχείο",
|
||||
"ui.fileMedia.binary.description.path": "{{path}} είναι δυαδικό.",
|
||||
"ui.fileMedia.binary.description.default": "Δυαδικό περιεχόμενο",
|
||||
"ui.lineComment.label.prefix": "Σχόλιο ",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "Σχολιασμός ",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "Σχόλιο {{selection}}",
|
||||
"ui.lineComment.editorLabel": "Σχολιασμός {{selection}}",
|
||||
"ui.lineComment.placeholder": "Προσθήκη σχολίου",
|
||||
"ui.lineComment.contextPlaceholder": "Προσθήκη περιβάλλοντος για αυτήν την αλλαγή",
|
||||
"ui.lineComment.submit": "Σχόλιο",
|
||||
@@ -103,8 +101,7 @@ export const dict: Record<string, string> = {
|
||||
"ui.list.loading": "Φόρτωση",
|
||||
"ui.list.empty": "Δεν υπάρχουν αποτελέσματα",
|
||||
"ui.list.clearFilter": "Διαγραφή φίλτρου",
|
||||
"ui.list.emptyWithFilter.prefix": "Δεν υπάρχουν αποτελέσματα για",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "Δεν υπάρχουν αποτελέσματα για{{query}}",
|
||||
"ui.fileSearch.placeholder": "Εύρεση",
|
||||
"ui.fileSearch.previousMatch": "Προηγούμενη αντιστοίχιση",
|
||||
"ui.fileSearch.nextMatch": "Επόμενος αγώνας",
|
||||
|
||||
@@ -46,10 +46,8 @@ export const dict: Record<string, string> = {
|
||||
"ui.fileMedia.binary.description.path": "{{path}} is binary.",
|
||||
"ui.fileMedia.binary.description.default": "Binary content",
|
||||
|
||||
"ui.lineComment.label.prefix": "Comment on ",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "Commenting on ",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "Comment on {{selection}}",
|
||||
"ui.lineComment.editorLabel": "Commenting on {{selection}}",
|
||||
"ui.lineComment.placeholder": "Add comment",
|
||||
"ui.lineComment.contextPlaceholder": "Add context for this change",
|
||||
"ui.lineComment.submit": "Comment",
|
||||
@@ -112,8 +110,7 @@ export const dict: Record<string, string> = {
|
||||
"ui.list.loading": "Loading",
|
||||
"ui.list.empty": "No results",
|
||||
"ui.list.clearFilter": "Clear filter",
|
||||
"ui.list.emptyWithFilter.prefix": "No results for",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "No results for{{query}}",
|
||||
|
||||
"ui.fileSearch.placeholder": "Find",
|
||||
"ui.fileSearch.previousMatch": "Previous match",
|
||||
|
||||
@@ -44,10 +44,8 @@ export const dict = {
|
||||
"ui.fileMedia.binary.description.path": "No se puede mostrar {{path}} porque es un archivo binario.",
|
||||
"ui.fileMedia.binary.description.default": "No se puede mostrar este archivo porque es un archivo binario.",
|
||||
|
||||
"ui.lineComment.label.prefix": "Comentar en ",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "Comentando en ",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "Comentar en {{selection}}",
|
||||
"ui.lineComment.editorLabel": "Comentando en {{selection}}",
|
||||
"ui.lineComment.placeholder": "Añadir comentario",
|
||||
"ui.lineComment.contextPlaceholder": "Añadir contexto para este cambio",
|
||||
"ui.lineComment.submit": "Comentar",
|
||||
@@ -114,8 +112,7 @@ export const dict = {
|
||||
"ui.list.loading": "Cargando",
|
||||
"ui.list.empty": "Sin resultados",
|
||||
"ui.list.clearFilter": "Borrar filtro",
|
||||
"ui.list.emptyWithFilter.prefix": "Sin resultados para",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "Sin resultados para{{query}}",
|
||||
|
||||
"ui.messageNav.newMessage": "Nuevo mensaje",
|
||||
|
||||
|
||||
@@ -43,10 +43,8 @@ export const dict: Record<string, string> = {
|
||||
"ui.fileMedia.binary.title": "Binaarne fail",
|
||||
"ui.fileMedia.binary.description.path": "{{path}} on binaarne.",
|
||||
"ui.fileMedia.binary.description.default": "Binaarne sisu",
|
||||
"ui.lineComment.label.prefix": "kommenteerida ",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "Kommenteerides ",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "kommenteerida {{selection}}",
|
||||
"ui.lineComment.editorLabel": "Kommenteerides {{selection}}",
|
||||
"ui.lineComment.placeholder": "Lisa kommentaar",
|
||||
"ui.lineComment.contextPlaceholder": "Lisage selle muudatuse kontekst",
|
||||
"ui.lineComment.submit": "Kommenteeri",
|
||||
@@ -103,8 +101,7 @@ export const dict: Record<string, string> = {
|
||||
"ui.list.loading": "Laadimine",
|
||||
"ui.list.empty": "Tulemusi pole",
|
||||
"ui.list.clearFilter": "Selge filter",
|
||||
"ui.list.emptyWithFilter.prefix": "Päringule pole tulemusi",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "Päringule pole tulemusi{{query}}",
|
||||
"ui.fileSearch.placeholder": "Otsi",
|
||||
"ui.fileSearch.previousMatch": "Eelmine vaste",
|
||||
"ui.fileSearch.nextMatch": "Järgmine vaste",
|
||||
|
||||
@@ -43,10 +43,8 @@ export const dict: Record<string, string> = {
|
||||
"ui.fileMedia.binary.title": "فایل باینری",
|
||||
"ui.fileMedia.binary.description.path": "{{path}} باینری است.",
|
||||
"ui.fileMedia.binary.description.default": "محتوای باینری",
|
||||
"ui.lineComment.label.prefix": "نظر دهید ",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "در حال اظهار نظر ",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "نظر دهید {{selection}}",
|
||||
"ui.lineComment.editorLabel": "در حال اظهار نظر {{selection}}",
|
||||
"ui.lineComment.placeholder": "نظر اضافه کنید",
|
||||
"ui.lineComment.contextPlaceholder": "برای این تغییر زمینه اضافه کنید",
|
||||
"ui.lineComment.submit": "نظر دهید",
|
||||
@@ -103,8 +101,7 @@ export const dict: Record<string, string> = {
|
||||
"ui.list.loading": "در حال بارگذاری",
|
||||
"ui.list.empty": "هیچ نتیجه ای وجود ندارد",
|
||||
"ui.list.clearFilter": "فیلتر را پاک کنید",
|
||||
"ui.list.emptyWithFilter.prefix": "هیچ نتیجه ای برای",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "هیچ نتیجه ای برای{{query}}",
|
||||
"ui.fileSearch.placeholder": "پیدا کنید",
|
||||
"ui.fileSearch.previousMatch": "مسابقه قبلی",
|
||||
"ui.fileSearch.nextMatch": "مسابقه بعدی",
|
||||
|
||||
@@ -43,10 +43,8 @@ export const dict: Record<string, string> = {
|
||||
"ui.fileMedia.binary.title": "Binääritiedosto",
|
||||
"ui.fileMedia.binary.description.path": "{{path}} on binääritiedosto.",
|
||||
"ui.fileMedia.binary.description.default": "Binäärisisältö",
|
||||
"ui.lineComment.label.prefix": "Kommentoi ",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "Kommentoit kohdetta ",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "Kommentoi {{selection}}",
|
||||
"ui.lineComment.editorLabel": "Kommentoit kohdetta {{selection}}",
|
||||
"ui.lineComment.placeholder": "Lisää kommentti",
|
||||
"ui.lineComment.submit": "Kommentoi",
|
||||
"ui.lineComment.cancel": "Peruuta",
|
||||
@@ -102,8 +100,7 @@ export const dict: Record<string, string> = {
|
||||
"ui.list.loading": "Ladataan",
|
||||
"ui.list.empty": "Ei tuloksia",
|
||||
"ui.list.clearFilter": "Tyhjennä suodatin",
|
||||
"ui.list.emptyWithFilter.prefix": "Ei tuloksia haulle",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "Ei tuloksia haulle{{query}}",
|
||||
"ui.fileSearch.placeholder": "Etsi",
|
||||
"ui.fileSearch.previousMatch": "Edellinen osuma",
|
||||
"ui.fileSearch.nextMatch": "Seuraava osuma",
|
||||
|
||||
@@ -43,10 +43,8 @@ export const dict: Record<string, string> = {
|
||||
"ui.fileMedia.binary.title": "Binær fíla",
|
||||
"ui.fileMedia.binary.description.path": "{{path}} er binær.",
|
||||
"ui.fileMedia.binary.description.default": "Binært innihald",
|
||||
"ui.lineComment.label.prefix": "Viðmerk á ",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "Viðmerkjandi ",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "Viðmerk á {{selection}}",
|
||||
"ui.lineComment.editorLabel": "Viðmerkjandi {{selection}}",
|
||||
"ui.lineComment.placeholder": "Legg viðmerking til",
|
||||
"ui.lineComment.contextPlaceholder": "Legg samanhang til hesa broyting",
|
||||
"ui.lineComment.submit": "Viðmerking",
|
||||
@@ -103,8 +101,7 @@ export const dict: Record<string, string> = {
|
||||
"ui.list.loading": "Innlesing",
|
||||
"ui.list.empty": "Einki úrslit",
|
||||
"ui.list.clearFilter": "Rudda filtur",
|
||||
"ui.list.emptyWithFilter.prefix": "Einki úrslit fyri",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "Einki úrslit fyri{{query}}",
|
||||
"ui.fileSearch.placeholder": "Finn",
|
||||
"ui.fileSearch.previousMatch": "Fyrra samsvar",
|
||||
"ui.fileSearch.nextMatch": "Næsta samsvar",
|
||||
|
||||
@@ -45,10 +45,8 @@ export const dict = {
|
||||
"ui.fileMedia.binary.description.path": "Impossible d'afficher {{path}} car il s'agit d'un fichier binaire.",
|
||||
"ui.fileMedia.binary.description.default": "Impossible d'afficher ce fichier car il s'agit d'un fichier binaire.",
|
||||
|
||||
"ui.lineComment.label.prefix": "Commenter ",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "Commentaire concernant ",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "Commenter {{selection}}",
|
||||
"ui.lineComment.editorLabel": "Commentaire concernant {{selection}}",
|
||||
"ui.lineComment.placeholder": "Ajouter un commentaire",
|
||||
"ui.lineComment.contextPlaceholder": "Ajouter du contexte à cette modification",
|
||||
"ui.lineComment.submit": "Commenter",
|
||||
@@ -115,8 +113,7 @@ export const dict = {
|
||||
"ui.list.loading": "Chargement",
|
||||
"ui.list.empty": "Aucun résultat",
|
||||
"ui.list.clearFilter": "Effacer le filtre",
|
||||
"ui.list.emptyWithFilter.prefix": "Aucun résultat pour",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "Aucun résultat pour{{query}}",
|
||||
|
||||
"ui.messageNav.newMessage": "Nouveau message",
|
||||
|
||||
|
||||
@@ -44,10 +44,8 @@ export const dict: Record<string, string> = {
|
||||
"ui.fileMedia.binary.title": "बाइनरी फ़ाइल",
|
||||
"ui.fileMedia.binary.description.path": "{{path}} बाइनरी है।",
|
||||
"ui.fileMedia.binary.description.default": "बाइनरी सामग्री",
|
||||
"ui.lineComment.label.prefix": "इस पर टिप्पणी: ",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "इस पर टिप्पणी की जा रही है: ",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "इस पर टिप्पणी: {{selection}}",
|
||||
"ui.lineComment.editorLabel": "इस पर टिप्पणी की जा रही है: {{selection}}",
|
||||
"ui.lineComment.placeholder": "टिप्पणी जोड़ें",
|
||||
"ui.lineComment.contextPlaceholder": "इस परिवर्तन के लिए संदर्भ जोड़ें",
|
||||
"ui.lineComment.submit": "टिप्पणी",
|
||||
@@ -104,8 +102,7 @@ export const dict: Record<string, string> = {
|
||||
"ui.list.loading": "लोड हो रहा है",
|
||||
"ui.list.empty": "कोई परिणाम नहीं",
|
||||
"ui.list.clearFilter": "फ़िल्टर साफ़ करें",
|
||||
"ui.list.emptyWithFilter.prefix": "के लिए कोई परिणाम नहीं",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "के लिए कोई परिणाम नहीं{{query}}",
|
||||
"ui.fileSearch.placeholder": "खोजें",
|
||||
"ui.fileSearch.previousMatch": "पिछला मिलान",
|
||||
"ui.fileSearch.nextMatch": "अगला मिलान",
|
||||
|
||||
@@ -44,10 +44,8 @@ export const dict: Record<string, string> = {
|
||||
"ui.fileMedia.binary.title": "Binarna datoteka",
|
||||
"ui.fileMedia.binary.description.path": "{{path}} je binarni.",
|
||||
"ui.fileMedia.binary.description.default": "Binarni sadržaj",
|
||||
"ui.lineComment.label.prefix": "Komentirajte",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "Komentiranje",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "Komentirajte{{selection}}",
|
||||
"ui.lineComment.editorLabel": "Komentiranje{{selection}}",
|
||||
"ui.lineComment.placeholder": "Dodajte komentar",
|
||||
"ui.lineComment.contextPlaceholder": "Dodajte kontekst za ovu promjenu",
|
||||
"ui.lineComment.submit": "Komentar",
|
||||
@@ -108,8 +106,7 @@ export const dict: Record<string, string> = {
|
||||
"ui.list.loading": "Učitavanje",
|
||||
"ui.list.empty": "Nema rezultata",
|
||||
"ui.list.clearFilter": "Očisti filter",
|
||||
"ui.list.emptyWithFilter.prefix": "Nema rezultata za",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "Nema rezultata za{{query}}",
|
||||
"ui.fileSearch.placeholder": "Pronaći",
|
||||
"ui.fileSearch.previousMatch": "Prethodno podudaranje",
|
||||
"ui.fileSearch.nextMatch": "Sljedeće podudaranje",
|
||||
|
||||
@@ -45,10 +45,8 @@ export const dict: Record<string, string> = {
|
||||
"ui.fileMedia.binary.title": "Bináris fájl",
|
||||
"ui.fileMedia.binary.description.path": "A {{path}} bináris.",
|
||||
"ui.fileMedia.binary.description.default": "Bináris tartalom",
|
||||
"ui.lineComment.label.prefix": "Hozzászólás",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "Hozzászólás",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "Hozzászólás{{selection}}",
|
||||
"ui.lineComment.editorLabel": "Hozzászólás{{selection}}",
|
||||
"ui.lineComment.placeholder": "Megjegyzés hozzáadása",
|
||||
"ui.lineComment.contextPlaceholder": "Kontextus hozzáadása ehhez a módosításhoz",
|
||||
"ui.lineComment.submit": "Megjegyzés",
|
||||
@@ -105,8 +103,7 @@ export const dict: Record<string, string> = {
|
||||
"ui.list.loading": "Betöltés",
|
||||
"ui.list.empty": "Nincs eredmény",
|
||||
"ui.list.clearFilter": "Szűrő törlése",
|
||||
"ui.list.emptyWithFilter.prefix": "Nincs találat a következőre",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "Nincs találat a következőre{{query}}",
|
||||
"ui.fileSearch.placeholder": "Keresés",
|
||||
"ui.fileSearch.previousMatch": "Előző találat",
|
||||
"ui.fileSearch.nextMatch": "Következő találat",
|
||||
|
||||
@@ -43,10 +43,8 @@ export const dict: Record<string, string> = {
|
||||
"ui.fileMedia.binary.title": "Երկուական ֆայլ",
|
||||
"ui.fileMedia.binary.description.path": "{{path}}-ը երկուական է:",
|
||||
"ui.fileMedia.binary.description.default": "Երկուական բովանդակություն",
|
||||
"ui.lineComment.label.prefix": "Մեկնաբանություն ",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "Մեկնաբանում ",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "Մեկնաբանություն {{selection}}",
|
||||
"ui.lineComment.editorLabel": "Մեկնաբանում {{selection}}",
|
||||
"ui.lineComment.placeholder": "Ավելացնել մեկնաբանություն",
|
||||
"ui.lineComment.contextPlaceholder": "Ավելացնել համատեքստ այս փոփոխության համար",
|
||||
"ui.lineComment.submit": "Մեկնաբանություն",
|
||||
@@ -103,8 +101,7 @@ export const dict: Record<string, string> = {
|
||||
"ui.list.loading": "Բեռնվում",
|
||||
"ui.list.empty": "Արդյունք չկա",
|
||||
"ui.list.clearFilter": "Մաքրել զտիչը",
|
||||
"ui.list.emptyWithFilter.prefix": "Արդյունք չկա",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "Արդյունք չկա{{query}}",
|
||||
"ui.fileSearch.placeholder": "Գտնել",
|
||||
"ui.fileSearch.previousMatch": "Նախորդ համընկնում",
|
||||
"ui.fileSearch.nextMatch": "Հաջորդ համընկնում",
|
||||
|
||||
@@ -45,10 +45,8 @@ export const dict: Record<string, string> = {
|
||||
"ui.fileMedia.binary.description.path": "Berkas {{path}} bersifat biner.",
|
||||
"ui.fileMedia.binary.description.default": "Konten biner",
|
||||
|
||||
"ui.lineComment.label.prefix": "Komentar pada ",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "Mengomentari ",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "Komentar pada {{selection}}",
|
||||
"ui.lineComment.editorLabel": "Mengomentari {{selection}}",
|
||||
"ui.lineComment.placeholder": "Tambah komentar",
|
||||
"ui.lineComment.contextPlaceholder": "Tambahkan konteks untuk perubahan ini",
|
||||
"ui.lineComment.submit": "Komentar",
|
||||
@@ -111,8 +109,7 @@ export const dict: Record<string, string> = {
|
||||
"ui.list.loading": "Memuat",
|
||||
"ui.list.empty": "Tidak ada hasil",
|
||||
"ui.list.clearFilter": "Hapus filter",
|
||||
"ui.list.emptyWithFilter.prefix": "Tidak ada hasil untuk",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "Tidak ada hasil untuk{{query}}",
|
||||
|
||||
"ui.fileSearch.placeholder": "Cari",
|
||||
"ui.fileSearch.previousMatch": "Kecocokan sebelumnya",
|
||||
|
||||
@@ -43,10 +43,8 @@ export const dict: Record<string, string> = {
|
||||
"ui.fileMedia.binary.title": "Tvíundarskrá",
|
||||
"ui.fileMedia.binary.description.path": "{{path}} er tvíundarskrá.",
|
||||
"ui.fileMedia.binary.description.default": "Tvíundarefni",
|
||||
"ui.lineComment.label.prefix": "Athugasemdir við",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "Gerir athugasemdir við",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "Athugasemdir við{{selection}}",
|
||||
"ui.lineComment.editorLabel": "Gerir athugasemdir við{{selection}}",
|
||||
"ui.lineComment.placeholder": "Bæta við athugasemd",
|
||||
"ui.lineComment.contextPlaceholder": "Bættu við samhengi fyrir þessa breytingu",
|
||||
"ui.lineComment.submit": "Athugasemd",
|
||||
@@ -103,8 +101,7 @@ export const dict: Record<string, string> = {
|
||||
"ui.list.loading": "Hleðsla",
|
||||
"ui.list.empty": "Engar niðurstöður",
|
||||
"ui.list.clearFilter": "Hreinsaðu síu",
|
||||
"ui.list.emptyWithFilter.prefix": "Engar niðurstöður fyrir",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "Engar niðurstöður fyrir{{query}}",
|
||||
"ui.fileSearch.placeholder": "Finndu",
|
||||
"ui.fileSearch.previousMatch": "Fyrri samsvörun",
|
||||
"ui.fileSearch.nextMatch": "Næsta samsvörun",
|
||||
|
||||
@@ -44,10 +44,8 @@ export const dict: Record<string, string> = {
|
||||
"ui.fileMedia.binary.title": "File binario",
|
||||
"ui.fileMedia.binary.description.path": "{{path}} è binario.",
|
||||
"ui.fileMedia.binary.description.default": "Contenuto binario",
|
||||
"ui.lineComment.label.prefix": "Commento su ",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "Commento su ",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "Commento su {{selection}}",
|
||||
"ui.lineComment.editorLabel": "Commento su {{selection}}",
|
||||
"ui.lineComment.placeholder": "Aggiungi commento",
|
||||
"ui.lineComment.contextPlaceholder": "Aggiungi contesto per questa modifica",
|
||||
"ui.lineComment.submit": "Commenta",
|
||||
@@ -108,8 +106,7 @@ export const dict: Record<string, string> = {
|
||||
"ui.list.loading": "Caricamento",
|
||||
"ui.list.empty": "Nessun risultato",
|
||||
"ui.list.clearFilter": "Cancella filtro",
|
||||
"ui.list.emptyWithFilter.prefix": "Nessun risultato per",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "Nessun risultato per{{query}}",
|
||||
"ui.fileSearch.placeholder": "Cerca",
|
||||
"ui.fileSearch.previousMatch": "Corrispondenza precedente",
|
||||
"ui.fileSearch.nextMatch": "Corrispondenza successiva",
|
||||
|
||||
@@ -44,10 +44,8 @@ export const dict = {
|
||||
"ui.fileMedia.binary.title": "バイナリファイル",
|
||||
"ui.fileMedia.binary.description.path": "{{path}} はバイナリファイルのため表示できません。",
|
||||
"ui.fileMedia.binary.description.default": "このファイルはバイナリファイルのため表示できません。",
|
||||
"ui.lineComment.label.prefix": "",
|
||||
"ui.lineComment.label.suffix": "へのコメント",
|
||||
"ui.lineComment.editorLabel.prefix": "",
|
||||
"ui.lineComment.editorLabel.suffix": "へのコメントを作成中",
|
||||
"ui.lineComment.label": "{{selection}}へのコメント",
|
||||
"ui.lineComment.editorLabel": "{{selection}}へのコメントを作成中",
|
||||
"ui.lineComment.placeholder": "コメントを追加",
|
||||
"ui.lineComment.contextPlaceholder": "この変更に関するコンテキストを追加",
|
||||
"ui.lineComment.submit": "コメント",
|
||||
@@ -109,8 +107,7 @@ export const dict = {
|
||||
"ui.list.loading": "読み込み中",
|
||||
"ui.list.empty": "結果なし",
|
||||
"ui.list.clearFilter": "フィルターをクリア",
|
||||
"ui.list.emptyWithFilter.prefix": "次の検索結果はありません: ",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "次の検索結果はありません: {{query}}",
|
||||
|
||||
"ui.messageNav.newMessage": "新しいメッセージ",
|
||||
|
||||
|
||||
@@ -43,10 +43,8 @@ export const dict: Record<string, string> = {
|
||||
"ui.fileMedia.binary.title": "ორობითი ფაილი",
|
||||
"ui.fileMedia.binary.description.path": "{{path}} არის ორობითი.",
|
||||
"ui.fileMedia.binary.description.default": "ორობითი შინაარსი",
|
||||
"ui.lineComment.label.prefix": "კომენტარი ",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "კომენტირება ",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "კომენტარი {{selection}}",
|
||||
"ui.lineComment.editorLabel": "კომენტირება {{selection}}",
|
||||
"ui.lineComment.placeholder": "კომენტარის დამატება",
|
||||
"ui.lineComment.contextPlaceholder": "დაამატეთ კონტექსტი ამ ცვლილებისთვის",
|
||||
"ui.lineComment.submit": "კომენტარი",
|
||||
@@ -103,8 +101,7 @@ export const dict: Record<string, string> = {
|
||||
"ui.list.loading": "იტვირთება",
|
||||
"ui.list.empty": "შედეგები არ არის",
|
||||
"ui.list.clearFilter": "ფილტრის გასუფთავება",
|
||||
"ui.list.emptyWithFilter.prefix": "შედეგები არ არის",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "შედეგები არ არის{{query}}",
|
||||
"ui.fileSearch.placeholder": "მოძებნა",
|
||||
"ui.fileSearch.previousMatch": "წინა მატჩი",
|
||||
"ui.fileSearch.nextMatch": "შემდეგი მატჩი",
|
||||
|
||||
@@ -44,10 +44,8 @@ export const dict = {
|
||||
"ui.fileMedia.binary.title": "ឯកសារគោលពីរ",
|
||||
"ui.fileMedia.binary.description.path": "{{path}} គឺជាប្រព័ន្ធគោលពីរ។",
|
||||
"ui.fileMedia.binary.description.default": "មាតិកាគោលពីរ",
|
||||
"ui.lineComment.label.prefix": "មតិយោបល់លើ",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "អត្ថាធិប្បាយលើ",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "មតិយោបល់លើ{{selection}}",
|
||||
"ui.lineComment.editorLabel": "អត្ថាធិប្បាយលើ{{selection}}",
|
||||
"ui.lineComment.placeholder": "បន្ថែមមតិ",
|
||||
"ui.lineComment.contextPlaceholder": "បន្ថែមបរិបទសម្រាប់ការផ្លាស់ប្តូរនេះ។",
|
||||
"ui.lineComment.submit": "មតិយោបល់",
|
||||
@@ -104,8 +102,7 @@ export const dict = {
|
||||
"ui.list.loading": "កំពុងផ្ទុក",
|
||||
"ui.list.empty": "គ្មានលទ្ធផល",
|
||||
"ui.list.clearFilter": "ជម្រះតម្រង",
|
||||
"ui.list.emptyWithFilter.prefix": "គ្មានលទ្ធផលសម្រាប់",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "គ្មានលទ្ធផលសម្រាប់{{query}}",
|
||||
"ui.fileSearch.placeholder": "ស្វែងរក",
|
||||
"ui.fileSearch.previousMatch": "ការប្រកួតពីមុន",
|
||||
"ui.fileSearch.nextMatch": "ការប្រកួតបន្ទាប់",
|
||||
|
||||
@@ -26,10 +26,8 @@ export const dict = {
|
||||
"ui.fileMedia.binary.description.path": "{{path}}은(는) 바이너리 파일이므로 표시할 수 없습니다.",
|
||||
"ui.fileMedia.binary.description.default": "바이너리 파일이므로 표시할 수 없습니다.",
|
||||
|
||||
"ui.lineComment.label.prefix": "",
|
||||
"ui.lineComment.label.suffix": "에 댓글 달기",
|
||||
"ui.lineComment.editorLabel.prefix": "",
|
||||
"ui.lineComment.editorLabel.suffix": "에 댓글 작성 중",
|
||||
"ui.lineComment.label": "{{selection}}에 댓글 달기",
|
||||
"ui.lineComment.editorLabel": "{{selection}}에 댓글 작성 중",
|
||||
"ui.lineComment.placeholder": "댓글 추가",
|
||||
"ui.lineComment.contextPlaceholder": "이 변경 사항에 대한 컨텍스트 추가",
|
||||
"ui.lineComment.submit": "댓글 달기",
|
||||
@@ -86,8 +84,7 @@ export const dict = {
|
||||
"ui.list.loading": "로딩 중",
|
||||
"ui.list.empty": "결과 없음",
|
||||
"ui.list.clearFilter": "필터 지우기",
|
||||
"ui.list.emptyWithFilter.prefix": "다음에 대한 결과 없음: ",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "다음에 대한 결과 없음: {{query}}",
|
||||
|
||||
"ui.messageNav.newMessage": "새 메시지",
|
||||
|
||||
|
||||
@@ -43,10 +43,8 @@ export const dict = {
|
||||
"ui.fileMedia.binary.title": "ໄຟລ໌ຖານສອງ",
|
||||
"ui.fileMedia.binary.description.path": "{{path}} ເປັນໄບນາຣີ.",
|
||||
"ui.fileMedia.binary.description.default": "ເນື້ອໃນຖານສອງ",
|
||||
"ui.lineComment.label.prefix": "ຄໍາເຫັນກ່ຽວກັບ",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "ຄໍາເຫັນກ່ຽວກັບ",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "ຄໍາເຫັນກ່ຽວກັບ{{selection}}",
|
||||
"ui.lineComment.editorLabel": "ຄໍາເຫັນກ່ຽວກັບ{{selection}}",
|
||||
"ui.lineComment.placeholder": "ເພີ່ມຄຳເຫັນ",
|
||||
"ui.lineComment.contextPlaceholder": "ເພີ່ມບໍລິບົດສໍາລັບການປ່ຽນແປງນີ້",
|
||||
"ui.lineComment.submit": "ຄໍາເຫັນ",
|
||||
@@ -103,8 +101,7 @@ export const dict = {
|
||||
"ui.list.loading": "ກຳລັງໂຫຼດ",
|
||||
"ui.list.empty": "ບໍ່ມີຜົນໄດ້ຮັບ",
|
||||
"ui.list.clearFilter": "ລ້າງການກັ່ນຕອງ",
|
||||
"ui.list.emptyWithFilter.prefix": "ບໍ່ມີຜົນໄດ້ຮັບສໍາລັບ",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "ບໍ່ມີຜົນໄດ້ຮັບສໍາລັບ{{query}}",
|
||||
"ui.fileSearch.placeholder": "ຊອກຫາ",
|
||||
"ui.fileSearch.previousMatch": "ການແຂ່ງຂັນທີ່ຜ່ານມາ",
|
||||
"ui.fileSearch.nextMatch": "ການແຂ່ງຂັນຕໍ່ໄປ",
|
||||
|
||||
@@ -43,10 +43,8 @@ export const dict: Record<string, string> = {
|
||||
"ui.fileMedia.binary.title": "Dvejetainis failas",
|
||||
"ui.fileMedia.binary.description.path": "{{path}} yra dvejetainis.",
|
||||
"ui.fileMedia.binary.description.default": "Dvejetainis turinys",
|
||||
"ui.lineComment.label.prefix": "Komentuoti",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "Komentuodamas",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "Komentuoti{{selection}}",
|
||||
"ui.lineComment.editorLabel": "Komentuodamas{{selection}}",
|
||||
"ui.lineComment.placeholder": "Pridėti komentarą",
|
||||
"ui.lineComment.contextPlaceholder": "Pridėkite šio pakeitimo kontekstą",
|
||||
"ui.lineComment.submit": "komentuoti",
|
||||
@@ -111,8 +109,7 @@ export const dict: Record<string, string> = {
|
||||
"ui.list.loading": "Įkeliama",
|
||||
"ui.list.empty": "Jokių rezultatų",
|
||||
"ui.list.clearFilter": "Išvalyti filtrą",
|
||||
"ui.list.emptyWithFilter.prefix": "Nėra rezultatų pagal",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "Nėra rezultatų pagal{{query}}",
|
||||
"ui.fileSearch.placeholder": "Rasti",
|
||||
"ui.fileSearch.previousMatch": "Ankstesnis atitikmuo",
|
||||
"ui.fileSearch.nextMatch": "Kitas atitikmuo",
|
||||
|
||||
@@ -43,10 +43,8 @@ export const dict: Record<string, string> = {
|
||||
"ui.fileMedia.binary.title": "Binārs fails",
|
||||
"ui.fileMedia.binary.description.path": "{{path}} ir binārs fails.",
|
||||
"ui.fileMedia.binary.description.default": "Binārs saturs",
|
||||
"ui.lineComment.label.prefix": "Komentēt",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "Komentē",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "Komentēt{{selection}}",
|
||||
"ui.lineComment.editorLabel": "Komentē{{selection}}",
|
||||
"ui.lineComment.placeholder": "Pievieno komentāru",
|
||||
"ui.lineComment.contextPlaceholder": "Pievieno kontekstu šai izmaiņai",
|
||||
"ui.lineComment.submit": "Komentēt",
|
||||
@@ -107,8 +105,7 @@ export const dict: Record<string, string> = {
|
||||
"ui.list.loading": "Ielādējas",
|
||||
"ui.list.empty": "Nav rezultātu",
|
||||
"ui.list.clearFilter": "Notīrīt filtru",
|
||||
"ui.list.emptyWithFilter.prefix": "Nav rezultātu vaicājumam",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "Nav rezultātu vaicājumam{{query}}",
|
||||
"ui.fileSearch.placeholder": "Meklēt",
|
||||
"ui.fileSearch.previousMatch": "Iepriekšējā atbilstība",
|
||||
"ui.fileSearch.nextMatch": "Nākamā atbilstība",
|
||||
|
||||
@@ -43,10 +43,8 @@ export const dict = {
|
||||
"ui.fileMedia.binary.title": "Бинарна датотека",
|
||||
"ui.fileMedia.binary.description.path": "{{path}} е бинарен.",
|
||||
"ui.fileMedia.binary.description.default": "Бинарна содржина",
|
||||
"ui.lineComment.label.prefix": "Коментар на",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "Коментирајќи на",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "Коментар на{{selection}}",
|
||||
"ui.lineComment.editorLabel": "Коментирајќи на{{selection}}",
|
||||
"ui.lineComment.placeholder": "Додадете коментар",
|
||||
"ui.lineComment.contextPlaceholder": "Додадете контекст за оваа промена",
|
||||
"ui.lineComment.submit": "Коментар",
|
||||
@@ -103,8 +101,7 @@ export const dict = {
|
||||
"ui.list.loading": "Се вчитува",
|
||||
"ui.list.empty": "Нема резултати",
|
||||
"ui.list.clearFilter": "Исчистете го филтерот",
|
||||
"ui.list.emptyWithFilter.prefix": "Нема резултати за",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "Нема резултати за{{query}}",
|
||||
"ui.fileSearch.placeholder": "Најдете",
|
||||
"ui.fileSearch.previousMatch": "Претходен натпревар",
|
||||
"ui.fileSearch.nextMatch": "Следен натпревар",
|
||||
|
||||
@@ -43,10 +43,8 @@ export const dict = {
|
||||
"ui.fileMedia.binary.title": "Хоёртын файл",
|
||||
"ui.fileMedia.binary.description.path": "{{path}} нь хоёртын систем юм.",
|
||||
"ui.fileMedia.binary.description.default": "Хоёртын агуулга",
|
||||
"ui.lineComment.label.prefix": "Сэтгэгдэл бичих",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "Сэтгэгдэл бичиж байна",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "Сэтгэгдэл бичих{{selection}}",
|
||||
"ui.lineComment.editorLabel": "Сэтгэгдэл бичиж байна{{selection}}",
|
||||
"ui.lineComment.placeholder": "Сэтгэгдэл нэмэх",
|
||||
"ui.lineComment.contextPlaceholder": "Энэ өөрчлөлтийн контекст нэмнэ үү",
|
||||
"ui.lineComment.submit": "Сэтгэгдэл",
|
||||
@@ -103,8 +101,7 @@ export const dict = {
|
||||
"ui.list.loading": "Ачааж байна",
|
||||
"ui.list.empty": "Үр дүн алга",
|
||||
"ui.list.clearFilter": "Шүүлтүүрийг цэвэрлэх",
|
||||
"ui.list.emptyWithFilter.prefix": "-д илэрц байхгүй",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "-д илэрц байхгүй{{query}}",
|
||||
"ui.fileSearch.placeholder": "Хай",
|
||||
"ui.fileSearch.previousMatch": "Өмнөх тоглолт",
|
||||
"ui.fileSearch.nextMatch": "Дараагийн тоглолт",
|
||||
|
||||
@@ -43,10 +43,8 @@ export const dict: Record<string, string> = {
|
||||
"ui.fileMedia.binary.title": "Fail binari",
|
||||
"ui.fileMedia.binary.description.path": "{{path}} ialah fail binari.",
|
||||
"ui.fileMedia.binary.description.default": "Kandungan binari",
|
||||
"ui.lineComment.label.prefix": "Komen pada",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "Sedang mengulas pada",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "Komen pada{{selection}}",
|
||||
"ui.lineComment.editorLabel": "Sedang mengulas pada{{selection}}",
|
||||
"ui.lineComment.placeholder": "Tambah komen",
|
||||
"ui.lineComment.contextPlaceholder": "Tambah konteks untuk perubahan ini",
|
||||
"ui.lineComment.submit": "Komen",
|
||||
@@ -103,8 +101,7 @@ export const dict: Record<string, string> = {
|
||||
"ui.list.loading": "Memuatkan",
|
||||
"ui.list.empty": "Tiada hasil",
|
||||
"ui.list.clearFilter": "Kosongkan penapis",
|
||||
"ui.list.emptyWithFilter.prefix": "Tiada hasil untuk",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "Tiada hasil untuk{{query}}",
|
||||
"ui.fileSearch.placeholder": "Cari",
|
||||
"ui.fileSearch.previousMatch": "Padanan sebelumnya",
|
||||
"ui.fileSearch.nextMatch": "Padanan seterusnya",
|
||||
|
||||
@@ -44,10 +44,8 @@ export const dict = {
|
||||
"ui.fileMedia.binary.title": "Binary ဖိုင်",
|
||||
"ui.fileMedia.binary.description.path": "{{path}} သည် ဒွိစုံဖြစ်သည်။",
|
||||
"ui.fileMedia.binary.description.default": "Binary အကြောင်းအရာ",
|
||||
"ui.lineComment.label.prefix": "မှတ်ချက်",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "မှတ်ချက်ပေးခြင်း",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "မှတ်ချက်{{selection}}",
|
||||
"ui.lineComment.editorLabel": "မှတ်ချက်ပေးခြင်း{{selection}}",
|
||||
"ui.lineComment.placeholder": "မှတ်ချက်ထည့်ပါ။",
|
||||
"ui.lineComment.contextPlaceholder": "ဤပြောင်းလဲမှုအတွက် အကြောင်းအရာကို ထည့်ပါ။",
|
||||
"ui.lineComment.submit": "မှတ်ချက်",
|
||||
@@ -104,8 +102,7 @@ export const dict = {
|
||||
"ui.list.loading": "တင်နေသည်။",
|
||||
"ui.list.empty": "ရလဒ်မရှိပါ။",
|
||||
"ui.list.clearFilter": "စစ်ထုတ်မှုကို ရှင်းလင်းပါ။",
|
||||
"ui.list.emptyWithFilter.prefix": "အတွက် ရလဒ်များ မရှိပါ။",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "အတွက် ရလဒ်များ မရှိပါ။{{query}}",
|
||||
"ui.fileSearch.placeholder": "ရှာပါ။",
|
||||
"ui.fileSearch.previousMatch": "ယခင်ပွဲ",
|
||||
"ui.fileSearch.nextMatch": "နောက်ပွဲ",
|
||||
|
||||
@@ -45,10 +45,8 @@ export const dict: Record<string, string> = {
|
||||
"ui.fileMedia.binary.title": "बाइनरी फाइल",
|
||||
"ui.fileMedia.binary.description.path": "{{path}} बाइनरी हो।",
|
||||
"ui.fileMedia.binary.description.default": "बाइनरी सामग्री",
|
||||
"ui.lineComment.label.prefix": "टिप्पणी गर्नुहोस्",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "टिप्पणी गर्दै",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "टिप्पणी गर्नुहोस्{{selection}}",
|
||||
"ui.lineComment.editorLabel": "टिप्पणी गर्दै{{selection}}",
|
||||
"ui.lineComment.placeholder": "टिप्पणी थप्नुहोस्",
|
||||
"ui.lineComment.contextPlaceholder": "यो परिवर्तनको लागि सन्दर्भ थप्नुहोस्",
|
||||
"ui.lineComment.submit": "टिप्पणी गर्नुहोस्",
|
||||
@@ -105,8 +103,7 @@ export const dict: Record<string, string> = {
|
||||
"ui.list.loading": "लोड गर्दै",
|
||||
"ui.list.empty": "कुनै परिणाम छैन",
|
||||
"ui.list.clearFilter": "फिल्टर खाली गर्नुहोस्",
|
||||
"ui.list.emptyWithFilter.prefix": "को लागि कुनै परिणाम छैन",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "को लागि कुनै परिणाम छैन{{query}}",
|
||||
"ui.fileSearch.placeholder": "फेला पार्नुहोस्",
|
||||
"ui.fileSearch.previousMatch": "अघिल्लो खेल",
|
||||
"ui.fileSearch.nextMatch": "अर्को खेल",
|
||||
@@ -141,8 +138,8 @@ export const dict: Record<string, string> = {
|
||||
"ui.tool.grep": "Grep",
|
||||
"ui.tool.task": "कार्य",
|
||||
"ui.tool.webfetch": "Webfetch",
|
||||
"ui.tool.websearch": "Web Search",
|
||||
"ui.tool.websearch.provider": "{{provider}} Web Search",
|
||||
"ui.tool.websearch": "वेब खोज",
|
||||
"ui.tool.websearch.provider": "{{provider}} वेब खोज",
|
||||
"ui.tool.shell": "शेल",
|
||||
"ui.tool.patch": "प्याच",
|
||||
"ui.tool.todos": "गर्नुपर्ने कार्यहरू",
|
||||
|
||||
@@ -43,10 +43,8 @@ export const dict: Record<string, string> = {
|
||||
"ui.fileMedia.binary.title": "Binair bestand",
|
||||
"ui.fileMedia.binary.description.path": "{{path}} is binair.",
|
||||
"ui.fileMedia.binary.description.default": "Binaire inhoud",
|
||||
"ui.lineComment.label.prefix": "Opmerking bij ",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "Opmerking bij ",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "Opmerking bij {{selection}}",
|
||||
"ui.lineComment.editorLabel": "Opmerking bij {{selection}}",
|
||||
"ui.lineComment.placeholder": "Opmerking toevoegen",
|
||||
"ui.lineComment.contextPlaceholder": "Context voor deze wijziging toevoegen",
|
||||
"ui.lineComment.submit": "Opmerking plaatsen",
|
||||
@@ -103,8 +101,7 @@ export const dict: Record<string, string> = {
|
||||
"ui.list.loading": "Laden",
|
||||
"ui.list.empty": "Geen resultaten",
|
||||
"ui.list.clearFilter": "Filter wissen",
|
||||
"ui.list.emptyWithFilter.prefix": "Geen resultaten voor",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "Geen resultaten voor{{query}}",
|
||||
"ui.fileSearch.placeholder": "Zoeken",
|
||||
"ui.fileSearch.previousMatch": "Vorige overeenkomst",
|
||||
"ui.fileSearch.nextMatch": "Volgende overeenkomst",
|
||||
|
||||
@@ -29,10 +29,8 @@ export const dict: Record<Keys, string> = {
|
||||
"ui.fileMedia.binary.description.path": "{{path}} kan ikke vises fordi det er en binærfil.",
|
||||
"ui.fileMedia.binary.description.default": "Denne filen kan ikke vises fordi det er en binærfil.",
|
||||
|
||||
"ui.lineComment.label.prefix": "Legg inn kommentar til ",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "Kommentar til ",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "Legg inn kommentar til {{selection}}",
|
||||
"ui.lineComment.editorLabel": "Kommentar til {{selection}}",
|
||||
"ui.lineComment.placeholder": "Legg til kommentar",
|
||||
"ui.lineComment.contextPlaceholder": "Legg til kontekst for denne endringen",
|
||||
"ui.lineComment.submit": "Kommenter",
|
||||
@@ -89,8 +87,7 @@ export const dict: Record<Keys, string> = {
|
||||
"ui.list.loading": "Laster",
|
||||
"ui.list.empty": "Ingen resultater",
|
||||
"ui.list.clearFilter": "Tøm filter",
|
||||
"ui.list.emptyWithFilter.prefix": "Ingen resultater for",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "Ingen resultater for{{query}}",
|
||||
|
||||
"ui.messageNav.newMessage": "Ny melding",
|
||||
|
||||
|
||||
@@ -44,10 +44,8 @@ export const dict: Record<string, string> = {
|
||||
"ui.fileMedia.binary.title": "بائنری فائل",
|
||||
"ui.fileMedia.binary.description.path": "{{path}} بائنری اے۔",
|
||||
"ui.fileMedia.binary.description.default": "بائنری مواد",
|
||||
"ui.lineComment.label.prefix": "ایتھے تبصرہ کرو: ",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "ایتھے تبصرہ ہو رہیا اے: ",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "ایتھے تبصرہ کرو: {{selection}}",
|
||||
"ui.lineComment.editorLabel": "ایتھے تبصرہ ہو رہیا اے: {{selection}}",
|
||||
"ui.lineComment.placeholder": "تبصرہ شامل کرو",
|
||||
"ui.lineComment.contextPlaceholder": "اس تبدیلی لئی تناظر شامل کرو",
|
||||
"ui.lineComment.submit": "تبصرہ کرو",
|
||||
@@ -104,8 +102,7 @@ export const dict: Record<string, string> = {
|
||||
"ui.list.loading": "لوڈ ہو رہیا اے",
|
||||
"ui.list.empty": "کوئی نتیجہ نئیں نکلیا",
|
||||
"ui.list.clearFilter": "فلٹر صاف کرو",
|
||||
"ui.list.emptyWithFilter.prefix": "لئی کوئی نتیجہ نئیں",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "لئی کوئی نتیجہ نئیں{{query}}",
|
||||
"ui.fileSearch.placeholder": "لبھو",
|
||||
"ui.fileSearch.previousMatch": "پچھلا میل",
|
||||
"ui.fileSearch.nextMatch": "اگلا میل",
|
||||
@@ -140,8 +137,8 @@ export const dict: Record<string, string> = {
|
||||
"ui.tool.grep": "Grep",
|
||||
"ui.tool.task": "کم",
|
||||
"ui.tool.webfetch": "Webfetch",
|
||||
"ui.tool.websearch": "Web Search",
|
||||
"ui.tool.websearch.provider": "{{provider}} Web Search",
|
||||
"ui.tool.websearch": "ویب تلاش",
|
||||
"ui.tool.websearch.provider": "{{provider}} ویب تلاش",
|
||||
"ui.tool.shell": "Shell",
|
||||
"ui.tool.patch": "Patch",
|
||||
"ui.tool.todos": "ٹوڈوس",
|
||||
|
||||
@@ -44,10 +44,8 @@ export const dict = {
|
||||
"ui.fileMedia.binary.title": "Plik binarny",
|
||||
"ui.fileMedia.binary.description.path": "Nie można wyświetlić pliku {{path}}, ponieważ jest to plik binarny.",
|
||||
"ui.fileMedia.binary.description.default": "Nie można wyświetlić tego pliku, ponieważ jest to plik binarny.",
|
||||
"ui.lineComment.label.prefix": "Komentarz do ",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "Komentowanie: ",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "Komentarz do {{selection}}",
|
||||
"ui.lineComment.editorLabel": "Komentowanie: {{selection}}",
|
||||
"ui.lineComment.placeholder": "Dodaj komentarz",
|
||||
"ui.lineComment.contextPlaceholder": "Dodaj kontekst tej zmiany",
|
||||
"ui.lineComment.submit": "Skomentuj",
|
||||
@@ -117,8 +115,7 @@ export const dict = {
|
||||
"ui.list.loading": "Ładowanie",
|
||||
"ui.list.empty": "Brak wyników",
|
||||
"ui.list.clearFilter": "Wyczyść filtr",
|
||||
"ui.list.emptyWithFilter.prefix": "Brak wyników dla",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "Brak wyników dla{{query}}",
|
||||
|
||||
"ui.messageNav.newMessage": "Nowa wiadomość",
|
||||
|
||||
|
||||
@@ -43,10 +43,8 @@ export const dict: Record<string, string> = {
|
||||
"ui.fileMedia.binary.title": "Fișier binar",
|
||||
"ui.fileMedia.binary.description.path": "{{path}} este binar.",
|
||||
"ui.fileMedia.binary.description.default": "Conținut binar",
|
||||
"ui.lineComment.label.prefix": "Comentează la",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "Se comentează la",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "Comentează la{{selection}}",
|
||||
"ui.lineComment.editorLabel": "Se comentează la{{selection}}",
|
||||
"ui.lineComment.placeholder": "Adaugă comentariu",
|
||||
"ui.lineComment.contextPlaceholder": "Adaugă context pentru această modificare",
|
||||
"ui.lineComment.submit": "Comentează",
|
||||
@@ -107,8 +105,7 @@ export const dict: Record<string, string> = {
|
||||
"ui.list.loading": "Se încarcă",
|
||||
"ui.list.empty": "Niciun rezultat",
|
||||
"ui.list.clearFilter": "Șterge filtrul",
|
||||
"ui.list.emptyWithFilter.prefix": "Niciun rezultat pentru",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "Niciun rezultat pentru{{query}}",
|
||||
"ui.fileSearch.placeholder": "Caută",
|
||||
"ui.fileSearch.previousMatch": "Potrivirea anterioară",
|
||||
"ui.fileSearch.nextMatch": "Potrivirea următoare",
|
||||
|
||||
@@ -44,10 +44,8 @@ export const dict = {
|
||||
"ui.fileMedia.binary.title": "Двоичный файл",
|
||||
"ui.fileMedia.binary.description.path": "Невозможно отобразить {{path}}, так как это двоичный файл.",
|
||||
"ui.fileMedia.binary.description.default": "Невозможно отобразить этот файл, так как он двоичный.",
|
||||
"ui.lineComment.label.prefix": "Комментарий к ",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "Комментирование: ",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "Комментарий к {{selection}}",
|
||||
"ui.lineComment.editorLabel": "Комментирование: {{selection}}",
|
||||
"ui.lineComment.placeholder": "Добавить комментарий",
|
||||
"ui.lineComment.contextPlaceholder": "Добавить контекст для этого изменения",
|
||||
"ui.lineComment.submit": "Добавить комментарий",
|
||||
@@ -117,8 +115,7 @@ export const dict = {
|
||||
"ui.list.loading": "Загрузка",
|
||||
"ui.list.empty": "Нет результатов",
|
||||
"ui.list.clearFilter": "Очистить фильтр",
|
||||
"ui.list.emptyWithFilter.prefix": "Нет результатов для",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "Нет результатов для{{query}}",
|
||||
|
||||
"ui.messageNav.newMessage": "Новое сообщение",
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ export const dict: Record<string, string> = {
|
||||
"ui.sessionReview.image.placeholder": "රූපය",
|
||||
"ui.sessionReview.largeDiff.title": "විදැහුම් කිරීමට විශාල වෙනස",
|
||||
"ui.sessionReview.largeDiff.meta": "සීමාව: {{limit}} රේඛා වෙනස් කර ඇත. වත්මන්: {{current}} වෙනස් කළ රේඛා.",
|
||||
"ui.sessionReview.largeDiff.renderAnyway": "කොහොම හරි Render කරන්න",
|
||||
"ui.sessionReview.largeDiff.renderAnyway": "කෙසේ හෝ විදැහුම් කරන්න",
|
||||
"ui.sessionReviewV2.expandMode": "වෙනස පුළුල් කරන්න හෝ හකුළන්න",
|
||||
"ui.sessionReviewV2.filterFiles": "ගොනු පෙරහන් කරන්න",
|
||||
"ui.sessionReviewV2.toggleSidebar": "ගොනු ගස ටොගල් කරන්න",
|
||||
@@ -43,10 +43,8 @@ export const dict: Record<string, string> = {
|
||||
"ui.fileMedia.binary.title": "ද්විමය ගොනුව",
|
||||
"ui.fileMedia.binary.description.path": "{{path}} ද්විමය වේ.",
|
||||
"ui.fileMedia.binary.description.default": "ද්විමය අන්තර්ගතය",
|
||||
"ui.lineComment.label.prefix": "අදහස් දක්වන්න",
|
||||
"ui.lineComment.label.suffix": "",
|
||||
"ui.lineComment.editorLabel.prefix": "අදහස් දක්වමින්",
|
||||
"ui.lineComment.editorLabel.suffix": "",
|
||||
"ui.lineComment.label": "අදහස් දක්වන්න{{selection}}",
|
||||
"ui.lineComment.editorLabel": "අදහස් දක්වමින්{{selection}}",
|
||||
"ui.lineComment.placeholder": "අදහස් එක් කරන්න",
|
||||
"ui.lineComment.contextPlaceholder": "මෙම වෙනස සඳහා සන්දර්භය එක් කරන්න",
|
||||
"ui.lineComment.submit": "අදහස් දක්වන්න",
|
||||
@@ -103,8 +101,7 @@ export const dict: Record<string, string> = {
|
||||
"ui.list.loading": "පැටවීම",
|
||||
"ui.list.empty": "ප්රතිඵල නැත",
|
||||
"ui.list.clearFilter": "පෙරහන හිස් කරන්න",
|
||||
"ui.list.emptyWithFilter.prefix": "සඳහා ප්රතිඵල නැත",
|
||||
"ui.list.emptyWithFilter.suffix": "",
|
||||
"ui.list.emptyWithFilter": "සඳහා ප්රතිඵල නැත{{query}}",
|
||||
"ui.fileSearch.placeholder": "සොයන්න",
|
||||
"ui.fileSearch.previousMatch": "පෙර තරගය",
|
||||
"ui.fileSearch.nextMatch": "ඊළඟ තරගය",
|
||||
@@ -139,8 +136,8 @@ export const dict: Record<string, string> = {
|
||||
"ui.tool.grep": "Grep",
|
||||
"ui.tool.task": "කාර්යය",
|
||||
"ui.tool.webfetch": "Webfetch",
|
||||
"ui.tool.websearch": "Web Search",
|
||||
"ui.tool.websearch.provider": "{{provider}} Web Search",
|
||||
"ui.tool.websearch": "වෙබ් සෙවුම",
|
||||
"ui.tool.websearch.provider": "{{provider}} වෙබ් සෙවුම",
|
||||
"ui.tool.shell": "ෂෙල්",
|
||||
"ui.tool.patch": "පැච්",
|
||||
"ui.tool.todos": "කළ යුතු දේ",
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user