diff --git a/apps/backend/internal/i18n/i18n.go b/apps/backend/internal/i18n/i18n.go index fdc2ad1714..1cf18a2611 100644 --- a/apps/backend/internal/i18n/i18n.go +++ b/apps/backend/internal/i18n/i18n.go @@ -46,6 +46,8 @@ var supportedLocales = map[string]bool{ "en": true, "pt-pt": true, "zh-cn": true, + "zh-tw": true, + "zh-hk": true, "pseudo": true, } diff --git a/apps/backend/internal/i18n/i18n_test.go b/apps/backend/internal/i18n/i18n_test.go index e795d4285e..2010bdf3e4 100644 --- a/apps/backend/internal/i18n/i18n_test.go +++ b/apps/backend/internal/i18n/i18n_test.go @@ -17,6 +17,10 @@ func TestNormalize(t *testing.T) { {"en", "en"}, {"zh-cn", "zh-cn"}, {"zh-CN", "zh-cn"}, + {"zh-tw", "zh-tw"}, + {"zh-TW", "zh-tw"}, + {"zh-hk", "zh-hk"}, + {"zh-HK", "zh-hk"}, {localePtPT, localePtPT}, {"pt-PT", localePtPT}, {"pseudo", "pseudo"}, @@ -44,6 +48,12 @@ func TestTranslatesAndFallsBack(t *testing.T) { if chinese := T("zh-cn", "webapp.shellUnavailable"); chinese == en { t.Fatalf("zh-cn message should differ from en, both %q", en) } + if taiwan := T("zh-tw", "webapp.shellUnavailable"); taiwan == en { + t.Fatalf("zh-tw message should differ from en, both %q", en) + } + if hongKong := T("zh-hk", "webapp.shellUnavailable"); hongKong == en { + t.Fatalf("zh-hk message should differ from en, both %q", en) + } if portuguese := T(localePtPT, "webapp.shellUnavailable"); portuguese == en { t.Fatalf("pt-pt message should differ from en, both %q", en) } @@ -127,7 +137,7 @@ func TestCatalogsHaveMatchingKeys(t *testing.T) { t.Parallel() load() source := catalogs[DefaultLocale] - for _, locale := range []string{"pseudo", "zh-cn", localePtPT} { + for _, locale := range []string{"pseudo", "zh-cn", "zh-tw", "zh-hk", localePtPT} { translated := catalogs[locale] if len(translated) != len(source) { t.Fatalf("%s catalog has %d keys, want %d", locale, len(translated), len(source)) @@ -195,6 +205,34 @@ func TestFromRequest(t *testing.T) { } }) + t.Run("accept-language selects zh-TW", func(t *testing.T) { + t.Parallel() + r := httptest.NewRequest(http.MethodGet, "/", nil) + r.Header.Set("Accept-Language", "zh-TW,zh;q=0.9,en;q=0.8") + if got := FromRequest(r); got != "zh-tw" { + t.Fatalf("got %q, want zh-tw", got) + } + }) + + t.Run("accept-language selects zh-HK", func(t *testing.T) { + t.Parallel() + r := httptest.NewRequest(http.MethodGet, "/", nil) + r.Header.Set("Accept-Language", "zh-HK;q=1.0, en;q=0.5") + if got := FromRequest(r); got != "zh-hk" { + t.Fatalf("got %q, want zh-hk", got) + } + }) + + t.Run("zh-tw cookie wins over accept-language", func(t *testing.T) { + t.Parallel() + r := httptest.NewRequest(http.MethodGet, "/", nil) + r.AddCookie(&http.Cookie{Name: LocaleCookie, Value: "zh-tw"}) + r.Header.Set("Accept-Language", "en") + if got := FromRequest(r); got != "zh-tw" { + t.Fatalf("got %q, want zh-tw", got) + } + }) + t.Run("region subtag matches base locale", func(t *testing.T) { t.Parallel() r := httptest.NewRequest(http.MethodGet, "/", nil) diff --git a/apps/backend/internal/i18n/locales/zh-cn.json b/apps/backend/internal/i18n/locales/zh-cn.json index 22e3841814..cda9c0900e 100644 --- a/apps/backend/internal/i18n/locales/zh-cn.json +++ b/apps/backend/internal/i18n/locales/zh-cn.json @@ -7,7 +7,7 @@ "share.gistDescriptionUntitled": "kandev 任务分享", "share.messageCount_one": "{{count}} 条消息", "share.messageCount_other": "{{count}} 条消息", - "share.metaAgent": "代理", + "share.metaAgent": "智能体", "share.metaCompleted": "已完成", "share.metaExecutor": "执行器", "share.metaModel": "模型", @@ -18,7 +18,7 @@ "share.openRenderedView": "**[打开渲染视图 →]({{url}})**,查看正确排版的对话。", "share.openShareHTML": "**打开 {{file}}** 查看渲染后的对话。", "share.pageTitle": "{{title}}; kandev 分享", - "share.pitch": "由 **[kandev]({{url}})** 分享--开源的智能代理开发环境。", + "share.pitch": "由 **[kandev]({{url}})** 分享--开源的智能体开发环境。", "share.rawExport": "原始导出:", "share.redacted": "已脱敏:", "share.redactedBeforePublish": "发布前已脱敏:", diff --git a/apps/backend/internal/i18n/locales/zh-hk.json b/apps/backend/internal/i18n/locales/zh-hk.json new file mode 100644 index 0000000000..f2570d8285 --- /dev/null +++ b/apps/backend/internal/i18n/locales/zh-hk.json @@ -0,0 +1,36 @@ +{ + "share.brandTag": "分享的任務", + "share.builtWith": "基於", + "share.ctaTryKandev": "在 GitHub 上試用 kandev", + "share.emptyMessage": "空", + "share.gistDescription": "kandev 分享:{{title}}", + "share.gistDescriptionUntitled": "kandev 任務分享", + "share.messageCount_one": "{{count}} 條訊息", + "share.messageCount_other": "{{count}} 條訊息", + "share.metaAgent": "代理程式", + "share.metaCompleted": "已完成", + "share.metaExecutor": "執行器", + "share.metaModel": "模型", + "share.metaStarted": "開始時間", + "share.metaWorkflowStep": "工作流程步驟", + "share.noMessages": "暫無訊息。", + "share.noMetadata": "無元數據", + "share.openRenderedView": "**[開啟渲染視圖 →]({{url}})**,查看正確排版的對話。", + "share.openShareHTML": "**開啟 {{file}}** 查看渲染後的對話。", + "share.pageTitle": "{{title}}; kandev 分享", + "share.pitch": "由 **[kandev]({{url}})** 分享--開源的代理程式開發環境。", + "share.rawExport": "原始匯出:", + "share.redacted": "已脱敏:", + "share.redactedBeforePublish": "發佈前已脱敏:", + "share.roleAssistant": "助手", + "share.roleSystem": "系統", + "share.roleUser": "用戶", + "share.roleYou": "你", + "share.sessionDetails": "工作階段詳情", + "share.toolOutput": "工具輸出", + "share.toolOutputTruncated": "工具輸出(已截斷)", + "share.untitledTask": "未命名任務", + "webapp.assetReadFailed": "無法讀取網頁資源。", + "webapp.devServerUnavailable": "Vite 開發伺服器不可用。", + "webapp.shellUnavailable": "Kandev Web 應用不可用。" +} diff --git a/apps/backend/internal/i18n/locales/zh-tw.json b/apps/backend/internal/i18n/locales/zh-tw.json new file mode 100644 index 0000000000..3b7e108529 --- /dev/null +++ b/apps/backend/internal/i18n/locales/zh-tw.json @@ -0,0 +1,36 @@ +{ + "share.brandTag": "分享的任務", + "share.builtWith": "基於", + "share.ctaTryKandev": "在 GitHub 上試用 kandev", + "share.emptyMessage": "空", + "share.gistDescription": "kandev 分享:{{title}}", + "share.gistDescriptionUntitled": "kandev 任務分享", + "share.messageCount_one": "{{count}} 條訊息", + "share.messageCount_other": "{{count}} 條訊息", + "share.metaAgent": "代理程式", + "share.metaCompleted": "已完成", + "share.metaExecutor": "執行器", + "share.metaModel": "模型", + "share.metaStarted": "開始時間", + "share.metaWorkflowStep": "工作流程步驟", + "share.noMessages": "暫無訊息。", + "share.noMetadata": "無後設資料", + "share.openRenderedView": "**[開啟渲染檢視 →]({{url}})**,檢視正確排版的對話。", + "share.openShareHTML": "**開啟 {{file}}** 檢視渲染後的對話。", + "share.pageTitle": "{{title}}; kandev 分享", + "share.pitch": "由 **[kandev]({{url}})** 分享--開源的代理程式開發環境。", + "share.rawExport": "原始匯出:", + "share.redacted": "已脫敏:", + "share.redactedBeforePublish": "釋出前已脫敏:", + "share.roleAssistant": "助手", + "share.roleSystem": "系統", + "share.roleUser": "使用者", + "share.roleYou": "你", + "share.sessionDetails": "工作階段詳情", + "share.toolOutput": "工具輸出", + "share.toolOutputTruncated": "工具輸出(已截斷)", + "share.untitledTask": "未命名任務", + "webapp.assetReadFailed": "無法讀取網頁資源。", + "webapp.devServerUnavailable": "Vite 開發伺服器不可用。", + "webapp.shellUnavailable": "Kandev Web 應用不可用。" +} diff --git a/apps/backend/internal/webapp/shell_test.go b/apps/backend/internal/webapp/shell_test.go index 37b6cab62d..d9340809d2 100644 --- a/apps/backend/internal/webapp/shell_test.go +++ b/apps/backend/internal/webapp/shell_test.go @@ -111,6 +111,8 @@ func TestRenderShellSetsHTMLLangFromLocale(t *testing.T) { }{ {name: "default when empty", locale: "", wantLang: `lang="en"`}, {name: "supported simplified chinese", locale: "zh-cn", wantLang: `lang="zh-cn"`}, + {name: "supported traditional chinese taiwan", locale: "zh-tw", wantLang: `lang="zh-tw"`}, + {name: "supported traditional chinese hong kong", locale: "zh-hk", wantLang: `lang="zh-hk"`}, {name: "supported european portuguese", locale: "pt-pt", wantLang: `lang="pt-pt"`}, {name: "supported pseudo", locale: "pseudo", wantLang: `lang="pseudo"`}, {name: "unknown coerces to en", locale: "klingon", wantLang: `lang="en"`}, @@ -234,6 +236,10 @@ func TestNormalizeLocale(t *testing.T) { {"en", "en"}, {"zh-cn", "zh-cn"}, {"zh-CN", "zh-cn"}, + {"zh-tw", "zh-tw"}, + {"zh-TW", "zh-tw"}, + {"zh-hk", "zh-hk"}, + {"zh-HK", "zh-hk"}, {"pt-pt", "pt-pt"}, {"pt-PT", "pt-pt"}, {"pseudo", "pseudo"}, diff --git a/apps/pnpm-lock.yaml b/apps/pnpm-lock.yaml index e4ea83e361..75fd1a3669 100644 --- a/apps/pnpm-lock.yaml +++ b/apps/pnpm-lock.yaml @@ -571,6 +571,9 @@ importers: happy-dom: specifier: ^20.8.9 version: 20.8.9 + opencc-js: + specifier: 1.4.1 + version: 1.4.1 tailwindcss: specifier: ^4 version: 4.1.18 @@ -5202,6 +5205,9 @@ packages: resolution: {integrity: sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==} engines: {node: '>=20'} + opencc-js@1.4.1: + resolution: {integrity: sha512-2lPLcrg7cnh1ATSduOxhnk/jq6KlR6w+5Ihl4wF7Z5e5Rva4vxTyugV5rZ7EiUCOZl+EDOLetIix+BhgYDCC+A==} + optionator@0.9.4: resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} @@ -11261,6 +11267,8 @@ snapshots: powershell-utils: 0.1.0 wsl-utils: 0.3.1 + opencc-js@1.4.1: {} + optionator@0.9.4: dependencies: deep-is: 0.1.4 diff --git a/apps/web/e2e/tests/i18n/language-switch.spec.ts b/apps/web/e2e/tests/i18n/language-switch.spec.ts index 28e148398d..b10e7e3e2c 100644 --- a/apps/web/e2e/tests/i18n/language-switch.spec.ts +++ b/apps/web/e2e/tests/i18n/language-switch.spec.ts @@ -69,6 +69,62 @@ test.describe("i18n language switcher", () => { await expect(testPage.getByLabel("Display language")).toBeVisible({ timeout: 10_000 }); }); + for (const locale of [ + { + id: "zh-tw", + option: "繁體中文(台灣)", + displayLanguage: "顯示語言", + screenshot: "traditional-chinese-taiwan-locale-desktop", + caption: "Settings > General > Appearance with Traditional Chinese (Taiwan) active", + }, + { + id: "zh-hk", + option: "繁體中文(香港)", + displayLanguage: "顯示語言", + screenshot: "traditional-chinese-hong-kong-locale-desktop", + caption: "Settings > General > Appearance with Traditional Chinese (Hong Kong) active", + }, + ] as const) { + test(`switching to ${locale.option} persists through reload and can restore English`, async ({ + testPage, + prCapture, + }) => { + await testPage.goto(APPEARANCE_URL); + + const select = testPage.getByLabel("Display language"); + await expect(select).toBeVisible({ timeout: 10_000 }); + await select.click(); + await testPage.getByRole("listbox").getByRole("option", { name: locale.option }).click(); + + await expect(testPage.locator("html")).toHaveAttribute("lang", locale.id, { + timeout: 10_000, + }); + await expect(testPage.getByLabel(locale.displayLanguage)).toBeVisible({ timeout: 10_000 }); + await expect + .poll(async () => { + const cookies = await testPage.context().cookies(); + return cookies.find((cookie) => cookie.name === "kandev_locale")?.value; + }) + .toBe(locale.id); + + await prCapture.screenshot(locale.screenshot, { + caption: locale.caption, + }); + + await testPage.reload(); + await expect(testPage.locator("html")).toHaveAttribute("lang", locale.id, { + timeout: 10_000, + }); + await expect(testPage.getByLabel(locale.displayLanguage)).toBeVisible({ timeout: 10_000 }); + + const selectAfter = testPage.getByLabel(locale.displayLanguage); + await selectAfter.click(); + await testPage.getByRole("listbox").getByRole("option", { name: "English" }).click(); + await expect(testPage.locator("html")).toHaveAttribute("lang", "en", { timeout: 10_000 }); + await expect(testPage.getByLabel("Display language")).toBeVisible({ timeout: 10_000 }); + }); + } + test("switching to pseudo re-renders accented copy and survives reload", async ({ testPage, prCapture, diff --git a/apps/web/lib/agent-runtime-update.test.ts b/apps/web/lib/agent-runtime-update.test.ts index a2dd5299a1..5c2d221af0 100644 --- a/apps/web/lib/agent-runtime-update.test.ts +++ b/apps/web/lib/agent-runtime-update.test.ts @@ -157,13 +157,16 @@ describe("missing current version under a non-English locale", () => { installInFlight: false, }; - it.each(["en", "pt-pt", "zh-cn", "pseudo"])("stays un-approvable in %s", async (locale) => { - await i18n.changeLanguage(locale); + it.each(["en", "pt-pt", "zh-cn", "zh-tw", "zh-hk", "pseudo"])( + "stays un-approvable in %s", + async (locale) => { + await i18n.changeLanguage(locale); - const pair = resolveRuntimeVersionPair(preview({ current_version: "" })); - expect(pair.hasCurrentVersion).toBe(false); - expect(canApproveAgentRuntimeUpdate(missing)).toBe(false); - }); + const pair = resolveRuntimeVersionPair(preview({ current_version: "" })); + expect(pair.hasCurrentVersion).toBe(false); + expect(canApproveAgentRuntimeUpdate(missing)).toBe(false); + }, + ); it("still shows a localized placeholder to the user", async () => { await i18n.changeLanguage("pseudo"); diff --git a/apps/web/lib/i18n/date-locale.test.ts b/apps/web/lib/i18n/date-locale.test.ts index aafd5c7ddc..1ecdac1ba0 100644 --- a/apps/web/lib/i18n/date-locale.test.ts +++ b/apps/web/lib/i18n/date-locale.test.ts @@ -70,6 +70,8 @@ describe("resolveDateLocale", () => { ["en", "en-US"], ["pt-pt", "pt"], ["zh-cn", "zh-CN"], + ["zh-tw", "zh-TW"], + ["zh-hk", "zh-HK"], ])("maps %j to the %j date-fns locale", async (locale, code) => { const resolved = await resolveDateLocale(locale as "en"); expect(resolved.code).toBe(code); diff --git a/apps/web/lib/i18n/date-locale.ts b/apps/web/lib/i18n/date-locale.ts index 50fc743d4f..3e6dfbe890 100644 --- a/apps/web/lib/i18n/date-locale.ts +++ b/apps/web/lib/i18n/date-locale.ts @@ -38,6 +38,8 @@ import { DEFAULT_LOCALE, i18n, normalizeLocale, type SupportedLocale } from "./i const LAZY_LOCALES: Partial Promise>> = { "pt-pt": () => import("date-fns/locale/pt").then((m) => m.pt), "zh-cn": () => import("date-fns/locale/zh-CN").then((m) => m.zhCN), + "zh-tw": () => import("date-fns/locale/zh-TW").then((m) => m.zhTW), + "zh-hk": () => import("date-fns/locale/zh-HK").then((m) => m.zhHK), }; const loaded = new Map([ diff --git a/apps/web/lib/i18n/formats.test.ts b/apps/web/lib/i18n/formats.test.ts index 93e5a84c95..6bd8e9c0ad 100644 --- a/apps/web/lib/i18n/formats.test.ts +++ b/apps/web/lib/i18n/formats.test.ts @@ -3,6 +3,8 @@ import { afterAll, beforeAll, describe, expect, it } from "vitest"; import { formatDate, formatNumber, formatRelative, formatRelativeTime } from "./formats"; import { activateLocale } from "./index"; +const FORMAT_DATE = "2026-07-27T00:00:00Z"; + beforeAll(async () => { // Activate en so the relative-time buckets resolve from the real catalog, // matching the former timeAgo behavior byte-for-byte. @@ -39,7 +41,7 @@ describe("locale-aware Intl wrappers", () => { await activateLocale("pseudo"); // pseudo has no CLDR data; wrappers fall back to en formatting. expect(formatNumber(1000)).toBe("1,000"); - expect(formatDate("2026-07-27T00:00:00Z", { year: "numeric" })).toBe("2026"); + expect(formatDate(FORMAT_DATE, { year: "numeric" })).toBe("2026"); await activateLocale("en"); }); @@ -56,7 +58,7 @@ describe("locale-aware Intl wrappers", () => { day: "numeric", timeZone: "UTC", }; - const date = "2026-07-27T00:00:00Z"; + const date = FORMAT_DATE; expect(formatNumber(1234.5, numberOptions)).toBe( new Intl.NumberFormat("zh-cn", numberOptions).format(1234.5), @@ -67,6 +69,33 @@ describe("locale-aware Intl wrappers", () => { await activateLocale("en"); }); + it.each([ + ["zh-tw", "TWD"], + ["zh-hk", "HKD"], + ] as const)("passes %s to number and date formatters", async (locale, currency) => { + await activateLocale(locale); + const numberOptions: Intl.NumberFormatOptions = { + style: "currency", + currency, + currencyDisplay: "code", + }; + const dateOptions: Intl.DateTimeFormatOptions = { + year: "numeric", + month: "long", + day: "numeric", + timeZone: "UTC", + }; + const date = FORMAT_DATE; + + expect(formatNumber(1234.5, numberOptions)).toBe( + new Intl.NumberFormat(locale, numberOptions).format(1234.5), + ); + expect(formatDate(date, dateOptions)).toBe( + new Intl.DateTimeFormat(locale, dateOptions).format(new Date(date)), + ); + await activateLocale("en"); + }); + it("passes pt-pt to number and date formatters", async () => { await activateLocale("pt-pt"); const dateOptions: Intl.DateTimeFormatOptions = { @@ -75,7 +104,7 @@ describe("locale-aware Intl wrappers", () => { day: "numeric", timeZone: "UTC", }; - const date = "2026-07-27T00:00:00Z"; + const date = FORMAT_DATE; expect(formatNumber(1234.5)).toBe(new Intl.NumberFormat("pt-pt").format(1234.5)); expect(formatDate(date, dateOptions)).toBe( diff --git a/apps/web/lib/i18n/index.test.ts b/apps/web/lib/i18n/index.test.ts index 1175569580..05b283b40f 100644 --- a/apps/web/lib/i18n/index.test.ts +++ b/apps/web/lib/i18n/index.test.ts @@ -13,6 +13,8 @@ import { import { LOCALE_COOKIE, readLocaleCookie } from "./cookie"; const ZH_CN_LOCALE = "zh-cn"; +const ZH_TW_LOCALE = "zh-tw"; +const ZH_HK_LOCALE = "zh-hk"; const PT_PT_LOCALE = "pt-pt"; const DISPLAY_LANGUAGE_KEY = "settings:displayLanguage"; @@ -29,6 +31,10 @@ describe("locale predicates", () => { expect(isSupportedLocale(ZH_CN_LOCALE)).toBe(true); expect(isSupportedLocale("zh-CN")).toBe(true); expect(isSupportedLocale(" ZH-CN ")).toBe(true); + expect(isSupportedLocale(ZH_TW_LOCALE)).toBe(true); + expect(isSupportedLocale("zh-TW")).toBe(true); + expect(isSupportedLocale(ZH_HK_LOCALE)).toBe(true); + expect(isSupportedLocale("zh-HK")).toBe(true); expect(isSupportedLocale(PT_PT_LOCALE)).toBe(true); expect(isSupportedLocale("pt-PT")).toBe(true); expect(isSupportedLocale("pseudo")).toBe(true); @@ -40,6 +46,8 @@ describe("locale predicates", () => { expect(normalizeLocale(ZH_CN_LOCALE)).toBe(ZH_CN_LOCALE); expect(normalizeLocale("zh-CN")).toBe(ZH_CN_LOCALE); expect(normalizeLocale(" ZH-CN ")).toBe(ZH_CN_LOCALE); + expect(normalizeLocale("zh-TW")).toBe(ZH_TW_LOCALE); + expect(normalizeLocale("zh-HK")).toBe(ZH_HK_LOCALE); expect(normalizeLocale("pt-PT")).toBe(PT_PT_LOCALE); expect(normalizeLocale("pseudo")).toBe("pseudo"); expect(normalizeLocale("nope")).toBe(DEFAULT_LOCALE); @@ -48,7 +56,7 @@ describe("locale predicates", () => { it("exposes en as the default and lists every shipped locale", () => { expect(DEFAULT_LOCALE).toBe("en"); - expect([...SUPPORTED_LOCALES]).toEqual(["en", "pt-pt", "zh-cn", "pseudo"]); + expect([...SUPPORTED_LOCALES]).toEqual(["en", "pt-pt", "zh-cn", "zh-tw", "zh-hk", "pseudo"]); }); // Only the `isProd` half of the contract. `selectableLocales` also requires @@ -56,8 +64,8 @@ describe("locale predicates", () => { // is fixed to `true` for the whole vitest run (config resolves in serve mode). // `bundling.test.ts` covers the decision that produces it, in both directions. it("hides the pseudo locale from production builds", () => { - expect(selectableLocales(false)).toEqual(["en", "pt-pt", "zh-cn", "pseudo"]); - expect(selectableLocales(true)).toEqual(["en", "pt-pt", "zh-cn"]); + expect(selectableLocales(false)).toEqual(["en", "pt-pt", "zh-cn", "zh-tw", "zh-hk", "pseudo"]); + expect(selectableLocales(true)).toEqual(["en", "pt-pt", "zh-cn", "zh-tw", "zh-hk"]); }); /** @@ -148,4 +156,36 @@ describe("activateLocale", () => { ); expect(i18n.t(DISPLAY_LANGUAGE_KEY)).toBe("Idioma de apresentação"); }); + + it("activates Traditional Chinese (Taiwan) and resolves its catalog", async () => { + const result = await activateLocale(ZH_TW_LOCALE); + expect(result).toBe(ZH_TW_LOCALE); + expect(i18n.language).toBe(ZH_TW_LOCALE); + expect(document.documentElement.lang).toBe(ZH_TW_LOCALE); + expect(readLocaleCookie()).toBe(ZH_TW_LOCALE); + expect(i18n.hasResourceBundle(ZH_TW_LOCALE, "settings")).toBe(true); + expect(i18n.getResource(ZH_TW_LOCALE, "settings", "displayLanguage")).toBe("顯示語言"); + expect(i18n.t(DISPLAY_LANGUAGE_KEY)).toBe("顯示語言"); + }); + + it("activates Traditional Chinese (Hong Kong) and resolves its catalog", async () => { + const result = await activateLocale("zh-HK"); + expect(result).toBe(ZH_HK_LOCALE); + expect(i18n.language).toBe(ZH_HK_LOCALE); + expect(document.documentElement.lang).toBe(ZH_HK_LOCALE); + expect(readLocaleCookie()).toBe(ZH_HK_LOCALE); + expect(i18n.hasResourceBundle(ZH_HK_LOCALE, "settings")).toBe(true); + expect(i18n.getResource(ZH_HK_LOCALE, "settings", "displayLanguage")).toBe("顯示語言"); + expect(i18n.t(DISPLAY_LANGUAGE_KEY)).toBe("顯示語言"); + }); + + it("resolves reviewed product vocabulary for each Traditional Chinese region", async () => { + await activateLocale(ZH_TW_LOCALE); + expect(i18n.t("settings:addEditor")).toBe("新增編輯器"); + expect(i18n.t("task:pullRequest")).toBe("提取要求"); + + await activateLocale(ZH_HK_LOCALE); + expect(i18n.t("settings:addEditor")).toBe("新增編輯器"); + expect(i18n.t("task:pullRequest")).toBe("拉取要求"); + }); }); diff --git a/apps/web/lib/i18n/index.ts b/apps/web/lib/i18n/index.ts index a613062df3..9144bb4c92 100644 --- a/apps/web/lib/i18n/index.ts +++ b/apps/web/lib/i18n/index.ts @@ -18,7 +18,7 @@ import { writeLocaleCookie } from "./cookie"; */ export const DEFAULT_LOCALE = "en"; export const DEFAULT_NAMESPACE = "common"; -export const SUPPORTED_LOCALES = ["en", "pt-pt", "zh-cn", "pseudo"] as const; +export const SUPPORTED_LOCALES = ["en", "pt-pt", "zh-cn", "zh-tw", "zh-hk", "pseudo"] as const; export type SupportedLocale = (typeof SUPPORTED_LOCALES)[number]; /** Human-readable labels for the language switcher. */ @@ -26,6 +26,8 @@ export const LOCALE_LABELS: Record = { en: "English", "pt-pt": "Português (Portugal)", "zh-cn": "简体中文", + "zh-tw": "繁體中文(台灣)", + "zh-hk": "繁體中文(香港)", pseudo: "Pseudo (QA)", }; diff --git a/apps/web/lib/i18n/lazy-catalogs.test.ts b/apps/web/lib/i18n/lazy-catalogs.test.ts index ac01d9c01e..5dc72fca68 100644 --- a/apps/web/lib/i18n/lazy-catalogs.test.ts +++ b/apps/web/lib/i18n/lazy-catalogs.test.ts @@ -43,7 +43,7 @@ describe("catalog loading", () => { expect(i18n.hasResourceBundle("en", SETTINGS_NS)).toBe(true); expect(i18n.t(`${SETTINGS_NS}:${DISPLAY_LANGUAGE}`)).toBe("Display language"); - for (const locale of ["pt-pt", "zh-cn", "pseudo"]) { + for (const locale of ["pt-pt", "zh-cn", "zh-tw", "zh-hk", "pseudo"]) { expect( i18n.hasResourceBundle(locale, SETTINGS_NS), `${locale} must not be in the initial bundle`, diff --git a/apps/web/package.json b/apps/web/package.json index e7986735a1..2b76590695 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -29,7 +29,8 @@ "i18n:ratchet": "node scripts/run-i18n-ratchet.mjs", "i18n:removed": "node scripts/check-removed-literals.mjs", "i18n:sweep": "node scripts/i18n-sweep.mjs", - "i18n:parity": "node scripts/i18n-parity.mjs" + "i18n:parity": "node scripts/i18n-parity.mjs", + "i18n:zh-hant": "node scripts/convert-zh-cn-to-zh-hant.mjs --locale all --write" }, "dependencies": { "@base-ui/react": "^1.0.0", @@ -150,6 +151,7 @@ "eslint-plugin-sonarjs": "^3.0.7", "eslint-plugin-unused-imports": "^4.4.1", "happy-dom": "^20.8.9", + "opencc-js": "1.4.1", "tailwindcss": "^4", "tsx": "^4.21.0", "typescript": "^5", diff --git a/apps/web/scripts/convert-zh-cn-to-zh-hant.mjs b/apps/web/scripts/convert-zh-cn-to-zh-hant.mjs new file mode 100644 index 0000000000..dffcde4da3 --- /dev/null +++ b/apps/web/scripts/convert-zh-cn-to-zh-hant.mjs @@ -0,0 +1,202 @@ +#!/usr/bin/env node +/** + * Convert zh-cn catalogs to zh-tw / zh-hk (OpenCC + product glossary). + * + * Usage: + * node scripts/convert-zh-cn-to-zh-hant.mjs [--locale zh-tw|zh-hk|all] [--namespace name] + * node scripts/convert-zh-cn-to-zh-hant.mjs --write [--backend] + * node scripts/convert-zh-cn-to-zh-hant.mjs --write --locale all + * + * Dry-run (default) prints a summary; --write materializes JSON catalogs. + */ +import fs from "node:fs"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; + +import { + TARGET_LOCALES, + convertCatalog, + loadGlossary, + residualSimplifiedInCatalog, +} from "./lib/zh-hant-convert.mjs"; + +const MODULE_PATH = fileURLToPath(import.meta.url); +const HERE = path.dirname(MODULE_PATH); +const WEB_LOCALES = path.resolve(HERE, "..", "src", "locales"); +const BACKEND_LOCALES = path.resolve(HERE, "..", "..", "backend", "internal", "i18n", "locales"); +const SOURCE_LOCALE = "zh-cn"; +const OVERRIDES_PATH = path.join(HERE, "lib", "zh-hant-overrides.json"); + +function parseArgs(argv) { + const args = { + locale: "all", + namespace: null, + write: false, + backend: false, + }; + for (let i = 0; i < argv.length; i++) { + const arg = argv[i]; + if (arg === "--write") args.write = true; + else if (arg === "--backend") args.backend = true; + else if (arg === "--locale") args.locale = argv[++i]; + else if (arg === "--namespace") args.namespace = argv[++i]; + else if (arg === "--help" || arg === "-h") args.help = true; + else throw new Error(`unknown argument: ${arg}`); + } + return args; +} + +function resolveLocales(localeArg) { + if (localeArg === "all") return [...TARGET_LOCALES]; + if (!TARGET_LOCALES.includes(localeArg)) { + throw new Error(`--locale must be one of ${TARGET_LOCALES.join("|")}|all`); + } + return [localeArg]; +} + +function listNamespaces(sourceDir, namespaceFilter) { + const files = fs + .readdirSync(sourceDir) + .filter((name) => name.endsWith(".json")) + .map((name) => name.replace(/\.json$/, "")) + .sort(); + if (!namespaceFilter) return files; + if (!files.includes(namespaceFilter)) { + throw new Error(`namespace ${namespaceFilter} not found in ${sourceDir}`); + } + return [namespaceFilter]; +} + +function writeJson(filePath, data) { + fs.mkdirSync(path.dirname(filePath), { recursive: true }); + fs.writeFileSync(filePath, `${JSON.stringify(data, null, 2)}\n`, "utf8"); +} + +export function convertWeb({ + locales, + namespace, + write, + sourceDir = path.join(WEB_LOCALES, SOURCE_LOCALE), + targetRoot = WEB_LOCALES, + overrides = {}, +}) { + const namespaces = listNamespaces(sourceDir, namespace); + let totalKeys = 0; + let residual = 0; + const outputs = []; + + for (const locale of locales) { + for (const ns of namespaces) { + const sourcePath = path.join(sourceDir, `${ns}.json`); + const messages = JSON.parse(fs.readFileSync(sourcePath, "utf8")); + const converted = convertCatalog(messages, locale, overrides[locale]?.[ns]); + const hits = residualSimplifiedInCatalog(converted); + totalKeys += Object.keys(converted).length; + residual += hits.length; + if (hits.length > 0) { + console.warn( + `[warn] ${locale}/${ns}: ${hits.length} key(s) still look simplified (e.g. ${hits.slice(0, 3).join(", ")})`, + ); + } + outputs.push({ locale, namespace: ns, converted }); + } + } + if (write && residual > 0) { + throw new Error(`catalog integrity check failed; refusing to write ${residual} web message(s)`); + } + if (write) { + for (const { locale, namespace: ns, converted } of outputs) { + writeJson(path.join(targetRoot, locale, `${ns}.json`), converted); + } + } + for (const locale of locales) { + console.log( + `${write ? "wrote" : "would write"} web ${locale}: ${namespaces.length} namespace(s)`, + ); + } + return { totalKeys, residual }; +} + +export function convertBackend({ + locales, + write, + sourcePath = path.join(BACKEND_LOCALES, `${SOURCE_LOCALE}.json`), + targetRoot = BACKEND_LOCALES, + overrides = {}, +}) { + if (!fs.existsSync(sourcePath)) { + throw new Error(`missing backend source catalog: ${sourcePath}`); + } + const messages = JSON.parse(fs.readFileSync(sourcePath, "utf8")); + let residual = 0; + const outputs = []; + for (const locale of locales) { + const converted = convertCatalog(messages, locale, overrides[locale]); + const hits = residualSimplifiedInCatalog(converted); + residual += hits.length; + if (hits.length > 0) { + console.warn(`[warn] backend ${locale}: residual simplified in ${hits.join(", ")}`); + } + outputs.push({ locale, converted }); + } + if (write && residual > 0) { + throw new Error( + `catalog integrity check failed; refusing to write ${residual} backend message(s)`, + ); + } + if (write) { + for (const { locale, converted } of outputs) { + writeJson(path.join(targetRoot, `${locale}.json`), converted); + } + } + for (const locale of locales) { + console.log( + `${write ? "wrote" : "would write"} backend ${locale}: ${Object.keys(messages).length} key(s)`, + ); + } + return { residual }; +} + +function main() { + const args = parseArgs(process.argv.slice(2)); + if (args.help) { + console.log(`Usage: node scripts/convert-zh-cn-to-zh-hant.mjs [options] + --locale zh-tw|zh-hk|all Target locale (default all) + --namespace Only one web namespace + --write Materialize files (default dry-run) + --backend Also convert backend i18n catalog +`); + return; + } + + loadGlossary(); + const reviewedOverrides = JSON.parse(fs.readFileSync(OVERRIDES_PATH, "utf8")); + const locales = resolveLocales(args.locale); + const web = convertWeb({ + locales, + namespace: args.namespace, + write: args.write, + overrides: reviewedOverrides.web, + }); + let backendResidual = 0; + if (args.backend || args.write) { + // Always convert backend when writing full catalogs so FE/BE stay in sync. + const backend = convertBackend({ + locales, + write: args.write, + overrides: reviewedOverrides.backend, + }); + backendResidual = backend.residual; + } + + console.log( + `done: ${web.totalKeys} web message(s); residual-simplified warnings: web=${web.residual} backend=${backendResidual}`, + ); + if (!args.write) { + console.log("(dry-run; pass --write to materialize)"); + } +} + +if (process.argv[1] && path.resolve(process.argv[1]) === MODULE_PATH) { + main(); +} diff --git a/apps/web/scripts/convert-zh-cn-to-zh-hant.test.mjs b/apps/web/scripts/convert-zh-cn-to-zh-hant.test.mjs new file mode 100644 index 0000000000..a449a2f9bc --- /dev/null +++ b/apps/web/scripts/convert-zh-cn-to-zh-hant.test.mjs @@ -0,0 +1,317 @@ +import assert from "node:assert/strict"; +import { spawnSync } from "node:child_process"; +import { existsSync, mkdirSync, mkdtempSync, readFileSync, rmSync, writeFileSync } from "node:fs"; +import { tmpdir } from "node:os"; +import path from "node:path"; +import { describe, it } from "vitest"; + +import { convertWeb } from "./convert-zh-cn-to-zh-hant.mjs"; +import { + convertCatalog, + convertMessage, + loadGlossary, + protectLiterals, + residualSimplifiedInCatalog, + TARGET_LOCALES, +} from "./lib/zh-hant-convert.mjs"; + +const glossary = loadGlossary(); +const SOURCE_DISK_HELP = "遍历数据文件夹中的每个目录"; +const REVIEWED_DISK_HELP = "遍歷資料目錄中的每個目錄"; +const SYSTEM_CATALOG_FILENAME = "system.json"; + +describe("protectLiterals", () => { + it("restores interpolation and Trans tags after conversion", () => { + const source = "刪除 <1>{{count}} 项"; + const { text, restore } = protectLiterals(source); + assert.equal(text.includes("{{count}}"), false); + assert.equal(text.includes("<1>"), false); + assert.equal(restore(text), source); + }); + + it("keeps brand names intact", () => { + const source = "连接 GitHub 仓库"; + const { text, restore } = protectLiterals(source); + assert.match(text, /\uE000\d+\uE001/); + assert.equal(restore(text).includes("GitHub"), true); + }); +}); + +describe("glossary coverage", () => { + it("maps every glossary source and target to the exact regional term", () => { + for (const locale of ["zh-tw", "zh-hk"]) { + for (const row of [...glossary.phrases, ...glossary.tokens]) { + assert.equal(convertMessage(row.from, locale), row[locale], `${locale} source ${row.from}`); + assert.equal( + convertMessage(row[locale], locale), + row[locale], + `${locale} target ${row[locale]}`, + ); + } + } + }); + + it("maps every glossary source before surrounding Chinese text", () => { + for (const locale of TARGET_LOCALES) { + for (const row of [...glossary.phrases, ...glossary.tokens]) { + assert.equal( + convertMessage(`${row.from}了`, locale), + `${row[locale]}了`, + `${locale}: ${row.from}`, + ); + } + } + }); +}); + +describe("convertMessage basics", () => { + it("preserves placeholders and Trans tags", () => { + const source = "删除 <1>{{count}} 个任务"; + for (const locale of ["zh-tw", "zh-hk"]) { + const out = convertMessage(source, locale); + assert.match(out, /\{\{count\}\}/); + assert.match(out, /<1>/); + assert.match(out, /<\/1>/); + assert.equal(out.includes("{{count}}"), true); + } + }); + + it("does not rewrite brand names", () => { + const source = "连接 GitHub 并保存设置"; + const tw = convertMessage(source, "zh-tw"); + const hk = convertMessage(source, "zh-hk"); + assert.match(tw, /GitHub/); + assert.match(hk, /GitHub/); + assert.match(tw, /設定|設定/); + assert.match(hk, /設定/); + }); + + it("applies Taiwan vs Hong Kong glossary divergences", () => { + const software = convertMessage("软件更新", "zh-tw"); + const softwareHk = convertMessage("软件更新", "zh-hk"); + assert.match(software, /軟體/); + assert.match(softwareHk, /軟件/); + assert.notEqual(software, softwareHk); + + const networkTw = convertMessage("网络错误", "zh-tw"); + const networkHk = convertMessage("网络错误", "zh-hk"); + assert.match(networkTw, /網路/); + assert.match(networkHk, /網絡/); + + const projectTw = convertMessage("选择项目", "zh-tw"); + const projectHk = convertMessage("选择项目", "zh-hk"); + assert.match(projectTw, /專案/); + assert.match(projectHk, /項目/); + }); + + it("maps product UI verbs via glossary", () => { + assert.equal(convertMessage("登录", "zh-tw"), "登入"); + assert.equal(convertMessage("保存", "zh-hk"), "儲存"); + assert.equal(convertMessage("设置", "zh-tw"), "設定"); + assert.equal(convertMessage("默认", "zh-hk"), "預設"); + assert.match(convertMessage("显示语言", "zh-tw"), /顯示語言/); + }); + + it("uses reviewed local software vocabulary in both regions", () => { + const samples = [ + ["添加消息队列控件链接并运行", "新增訊息佇列控制項連結並執行"], + ["当前智能体配置", "目前代理程式設定檔"], + ["发送代码", "傳送程式碼"], + ]; + + for (const locale of ["zh-tw", "zh-hk"]) { + for (const [source, expected] of samples) { + assert.equal(convertMessage(source, locale), expected, `${locale} ${source}`); + } + } + }); +}); + +describe("convertMessage regional vocabulary", () => { + it("distinguishes AI agents from network proxies", () => { + for (const locale of TARGET_LOCALES) { + assert.equal(convertMessage("智能体配置和子智能体", locale), "代理程式設定檔和子代理程式"); + assert.equal(convertMessage("智能体工作流", locale), "代理式工作流程"); + assert.equal(convertMessage("反向代理客户端", locale), "反向代理用戶端"); + assert.equal(convertMessage("代理", locale), "代理"); + + const catalog = convertCatalog({ agent: "智能体", proxy: "代理" }, locale, { + proxy: "代理伺服器", + }); + assert.equal(catalog.agent, "代理程式"); + assert.equal(catalog.proxy, "代理伺服器"); + } + }); + + it("normalizes mainland technical vocabulary for Traditional Chinese", () => { + assert.equal( + convertMessage("调用自定义提供商凭据并审阅响应", "zh-tw"), + "呼叫自訂提供者認證資訊並審閱回應", + ); + assert.equal( + convertMessage("调用自定义提供商凭据并审阅响应", "zh-hk"), + "呼叫自訂提供者認證資料並審閱回應", + ); + assert.equal(convertMessage("磁盘进程", "zh-tw"), "磁碟處理程序"); + assert.equal(convertMessage("磁盘进程", "zh-hk"), "磁碟程序"); + assert.equal(convertMessage("显式回退标志", "zh-tw"), "明確指定的備援旗標"); + assert.equal(convertMessage("显式回退标志", "zh-hk"), "明確指定的後備旗標"); + }); + + it("uses reviewed regional vocabulary in high-traffic UI copy", () => { + assert.equal(convertMessage("生成文本列表并查看反馈", "zh-tw"), "產生文字清單並檢視意見回饋"); + assert.equal(convertMessage("生成文本列表并查看反馈", "zh-hk"), "產生文字列表並查看反饋"); + assert.equal(convertMessage("禁用组件后查看屏幕", "zh-tw"), "停用元件後檢視螢幕"); + assert.equal(convertMessage("禁用组件后查看屏幕", "zh-hk"), "停用組件後查看屏幕"); + assert.equal(convertMessage("邮箱字段和变量界面", "zh-tw"), "電子郵件地址欄位和變數介面"); + assert.equal(convertMessage("邮箱字段和变量界面", "zh-hk"), "電郵地址欄位和變量介面"); + assert.equal( + convertMessage("查看后台克隆历史并了解详情", "zh-tw"), + "檢視後台複製歷史並了解詳情", + ); + assert.equal( + convertMessage("查看后台克隆历史并了解详情", "zh-hk"), + "查看後台複製歷史並了解詳情", + ); + }); + + it("uses region pull-request wording", () => { + const tw = convertMessage("打开拉取请求", "zh-tw"); + const hk = convertMessage("打开拉取请求", "zh-hk"); + assert.match(tw, /提取要求/); + assert.match(hk, /拉取要求/); + }); + + it("does not rewrite 資料 inside 資料夾 for Hong Kong", () => { + assert.equal(convertMessage("文件夹", "zh-hk"), "資料夾"); + assert.equal(convertMessage("资料夹", "zh-hk"), "資料夾"); + assert.equal(convertMessage("文件夹", "zh-tw"), "資料夾"); + }); + + it("maps filesystem 文件 to 檔案 in both regions", () => { + assert.equal(convertMessage("文件", "zh-tw"), "檔案"); + assert.equal(convertMessage("文件", "zh-hk"), "檔案"); + }); + + it("uses Traditional Chinese corner quotes for UI copy", () => { + assert.equal(convertMessage("点击“启动智能体”", "zh-tw"), "點選「啟動代理程式」"); + assert.equal(convertMessage("点击“启动智能体”", "zh-hk"), "點擊「啓動代理程式」"); + }); +}); + +describe("convertMessage idempotence", () => { + it("does not expand glossary targets when converting an existing target", () => { + for (const locale of TARGET_LOCALES) { + const converted = convertMessage("工作流和文件夹", locale); + assert.equal(converted, "工作流程和資料夾"); + assert.equal(convertMessage(converted, locale), converted); + } + }); +}); + +describe("convertCatalog", () => { + it("applies reviewed key overrides after mechanical conversion", () => { + const converted = convertCatalog({ diskRefreshHelp: SOURCE_DISK_HELP }, "zh-tw", { + diskRefreshHelp: REVIEWED_DISK_HELP, + }); + + assert.equal(converted.diskRefreshHelp, REVIEWED_DISK_HELP); + }); + + it("rejects reviewed overrides that do not match a catalog key", () => { + assert.throws( + () => convertCatalog({ known: "设置" }, "zh-tw", { typo: "設定" }), + /unknown override key.*typo/i, + ); + }); +}); + +describe("catalog integrity", () => { + it("reports malformed glossary expansion artifacts", () => { + assert.deepEqual( + residualSimplifiedInCatalog({ + workflow: "工作流程程", + profile: "設定設定", + email: "電子電子郵件地址", + repository: "儲存儲存庫", + history: "曆史", + agent: "智能智能体", + healthy: "工作流程", + }), + ["workflow", "profile", "email", "repository", "history", "agent"], + ); + }); + + it("rejects invalid generated catalogs before writing any file", () => { + const root = mkdtempSync(path.join(tmpdir(), "kandev-zh-hant-")); + const sourceDir = path.join(root, "zh-cn"); + const targetRoot = path.join(root, "output"); + mkdirSync(sourceDir, { recursive: true }); + writeFileSync( + path.join(sourceDir, SYSTEM_CATALOG_FILENAME), + `${JSON.stringify({ diskRefreshHelp: SOURCE_DISK_HELP })}\n`, + "utf8", + ); + + try { + assert.throws( + () => + convertWeb({ + locales: ["zh-tw"], + namespace: null, + write: true, + sourceDir, + targetRoot, + }), + /refusing to write/i, + ); + assert.equal(existsSync(path.join(targetRoot, "zh-tw", SYSTEM_CATALOG_FILENAME)), false); + } finally { + rmSync(root, { recursive: true, force: true }); + } + }); + + it("writes a catalog after a reviewed override clears the integrity issue", () => { + const root = mkdtempSync(path.join(tmpdir(), "kandev-zh-hant-")); + const sourceDir = path.join(root, "zh-cn"); + const targetRoot = path.join(root, "output"); + mkdirSync(sourceDir, { recursive: true }); + writeFileSync( + path.join(sourceDir, SYSTEM_CATALOG_FILENAME), + `${JSON.stringify({ diskRefreshHelp: SOURCE_DISK_HELP })}\n`, + "utf8", + ); + + try { + convertWeb({ + locales: ["zh-tw"], + namespace: null, + write: true, + sourceDir, + targetRoot, + overrides: { + "zh-tw": { + system: { diskRefreshHelp: REVIEWED_DISK_HELP }, + }, + }, + }); + const written = JSON.parse( + readFileSync(path.join(targetRoot, "zh-tw", SYSTEM_CATALOG_FILENAME), "utf8"), + ); + assert.equal(written.diskRefreshHelp, REVIEWED_DISK_HELP); + } finally { + rmSync(root, { recursive: true, force: true }); + } + }); + + it("loads reviewed overrides in the real CLI pipeline", () => { + const result = spawnSync( + process.execPath, + ["scripts/convert-zh-cn-to-zh-hant.mjs", "--locale", "all", "--namespace", "system"], + { cwd: path.resolve("."), encoding: "utf8" }, + ); + + assert.equal(result.status, 0, result.stderr); + assert.match(result.stdout, /residual-simplified warnings: web=0 backend=0/); + }); +}); diff --git a/apps/web/scripts/lib/zh-hant-convert.mjs b/apps/web/scripts/lib/zh-hant-convert.mjs new file mode 100644 index 0000000000..ca1f9d782f --- /dev/null +++ b/apps/web/scripts/lib/zh-hant-convert.mjs @@ -0,0 +1,189 @@ +/** + * Convert Simplified Chinese UI strings to Traditional Chinese (Taiwan / Hong Kong). + * + * Pipeline: protect placeholders/brands → OpenCC (s2twp / s2hk) → glossary + * phrase/token overrides (longest first) → restore protections. + */ +import fs from "node:fs"; +import path from "node:path"; +import { fileURLToPath } from "node:url"; +import * as OpenCC from "opencc-js"; + +const HERE = path.dirname(fileURLToPath(import.meta.url)); +const GLOSSARY_PATH = path.join(HERE, "zh-hant-glossary.json"); + +export const TARGET_LOCALES = ["zh-tw", "zh-hk"]; + +const OPENCC_TO = { + "zh-tw": "twp", + "zh-hk": "hk", +}; + +/** @type {{ brands: string[], phrases: Array<{from:string,"zh-tw":string,"zh-hk":string}>, tokens: Array<{from:string,"zh-tw":string,"zh-hk":string}> }} */ +let glossaryCache; +const glossaryRowsCache = new Map(); + +export function loadGlossary(glossaryPath = GLOSSARY_PATH) { + glossaryCache = JSON.parse(fs.readFileSync(glossaryPath, "utf8")); + glossaryRowsCache.clear(); + return glossaryCache; +} + +function glossary() { + if (!glossaryCache) loadGlossary(); + return glossaryCache; +} + +const converters = new Map(); +const baseTraditionalConverter = OpenCC.Converter({ from: "cn", to: "t" }); + +function converterFor(locale) { + if (!converters.has(locale)) { + const to = OPENCC_TO[locale]; + if (!to) throw new Error(`unsupported target locale: ${locale}`); + converters.set(locale, OpenCC.Converter({ from: "cn", to })); + } + return converters.get(locale); +} + +function glossaryRowsFor(locale) { + const cached = glossaryRowsCache.get(locale); + if (cached) return cached; + + const byMatch = new Map(); + for (const row of [...glossary().phrases, ...glossary().tokens]) { + const replacement = row[locale]; + if (!replacement || !row.from) continue; + + // Conversion runs before glossary replacement. Compile both the source and + // target through OpenCC so regional variants such as 退出登入 and 帳户 still + // resolve to the glossary's exact target. Registering the converted target + // as an identity match also protects it from shorter rows (工作流程 must win + // over 工作流), making the conversion idempotent. + for (const match of [ + baseTraditionalConverter(row.from), + converterFor(locale)(row.from), + converterFor(locale)(replacement), + ]) { + const existing = byMatch.get(match); + if (existing !== undefined && existing !== replacement) { + throw new Error( + `conflicting ${locale} glossary replacements for ${match}: ${existing} / ${replacement}`, + ); + } + byMatch.set(match, replacement); + } + } + + const rows = [...byMatch].map(([from, replacement]) => ({ from, replacement })); + rows.sort((a, b) => b.from.length - a.from.length); + glossaryRowsCache.set(locale, rows); + return rows; +} + +/** + * Protect spans that must not be rewritten: {{placeholders}}, tags, brands. + * Returns { text, restore }. + */ +export function protectLiterals(message, brands = glossary().brands) { + const slots = []; + const push = (value) => { + const token = `\uE000${slots.length}\uE001`; + slots.push(value); + return token; + }; + + let text = message; + // Interpolation first so brands inside values are not an issue. + text = text.replace(/\{\{[^}]+\}\}/g, (match) => push(match)); + text = text.replace(/<\/?\d+>/g, (match) => push(match)); + + // Longer brands first so "Azure DevOps" wins over "Azure". + const ordered = [...brands].sort((a, b) => b.length - a.length); + for (const brand of ordered) { + if (!brand) continue; + // Escape regex metacharacters in brand names. + const pattern = brand.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); + text = text.replace(new RegExp(pattern, "g"), () => push(brand)); + } + + return { + text, + restore(converted) { + return converted.replace(/\uE000(\d+)\uE001/g, (_, index) => slots[Number(index)] ?? ""); + }, + }; +} + +function applyGlossary(text, locale) { + const slots = []; + let out = text; + for (const { from, replacement } of glossaryRowsFor(locale)) { + if (!out.includes(from)) continue; + // Protect even when the form is unchanged so a shorter token cannot rewrite + // inside a longer phrase (e.g. 資料 inside 資料夾 → 數據夾 on zh-hk). + const token = `\uE010${slots.length}\uE011`; + slots.push(replacement); + out = out.split(from).join(token); + } + return out.replace(/\uE010(\d+)\uE011/g, (_, index) => slots[Number(index)] ?? ""); +} + +function normalizeTraditionalPunctuation(text) { + return text.replaceAll("“", "「").replaceAll("”", "」"); +} + +/** + * Convert one message string to the target Traditional locale. + * Applies OpenCC once, then one compiled glossary pass. Glossary matches are + * normalized through the same OpenCC converter, so source and target variants + * resolve without reprocessing replacement text. + */ +export function convertMessage(message, locale) { + if (typeof message !== "string" || message.length === 0) return message; + const { text, restore } = protectLiterals(message); + const converted = converterFor(locale)(text); + return restore(normalizeTraditionalPunctuation(applyGlossary(converted, locale))); +} + +/** Convert a flat key→string catalog object, then apply reviewed key overrides. */ +export function convertCatalog(messages, locale, overrides = {}) { + const unknownOverrideKeys = Object.keys(overrides).filter((key) => !Object.hasOwn(messages, key)); + if (unknownOverrideKeys.length > 0) { + throw new Error(`Unknown override key(s) for ${locale}: ${unknownOverrideKeys.join(", ")}`); + } + + const out = {}; + for (const [key, value] of Object.entries(messages)) { + if (Object.hasOwn(overrides, key)) { + out[key] = overrides[key]; + } else { + out[key] = typeof value === "string" ? convertMessage(value, locale) : value; + } + } + return out; +} + +/** + * Residual Simplified multi-character forms that should not remain after + * conversion. Whole phrases only — character classes false-positive on shared + * glyphs (e.g. 任 in both 任务 and 任務). + */ +const SIMPLIFIED_MARKERS = + /软件|网络|信息|数据|文件夹|设置|默认|用户|登录|加载|服务器|项目|质量|视频|内存|缓存|粘贴|复制|打印|权限|密码|错误|失败|确定|关闭|打开|编辑|导出|导入|语言|会话|仓库|插件|评审|暂存|远程|冲突|解决|获取|认证|授权|任务|执行器|自动化|创建|搜索|保存|账户|账号|拉取请求|合并请求|显示语言/; +const MALFORMED_MARKERS = + /工作流程程|資料資料夾|數據資料夾|設定設定|設定檔檔案|電子電子|地址地址|儲存儲存庫|曆史|智能智能体/; + +export function hasResidualSimplified(message) { + if (typeof message !== "string") return false; + const { text } = protectLiterals(message); + return SIMPLIFIED_MARKERS.test(text) || MALFORMED_MARKERS.test(text); +} + +export function residualSimplifiedInCatalog(messages) { + const hits = []; + for (const [key, value] of Object.entries(messages)) { + if (hasResidualSimplified(value)) hits.push(key); + } + return hits; +} diff --git a/apps/web/scripts/lib/zh-hant-glossary.json b/apps/web/scripts/lib/zh-hant-glossary.json new file mode 100644 index 0000000000..d3ec922265 --- /dev/null +++ b/apps/web/scripts/lib/zh-hant-glossary.json @@ -0,0 +1,388 @@ +{ + "brands": [ + "Kandev", + "kandev", + "GitHub", + "GitLab", + "Jira", + "Linear", + "Azure DevOps", + "Sentry", + "OAuth", + "JSON", + "YAML", + "CLI", + "API", + "URL", + "SSH", + "HTTP", + "HTTPS", + "MCP", + "ACP", + "PR", + "MR", + "Token", + "DELETE ALL" + ], + "phrases": [ + { + "from": "個人訪問令牌", + "zh-tw": "個人存取權杖", + "zh-hk": "個人存取權杖" + }, + { + "from": "个人访问令牌", + "zh-tw": "個人存取權杖", + "zh-hk": "個人存取權杖" + }, + { + "from": "拉取請求", + "zh-tw": "提取要求", + "zh-hk": "拉取要求" + }, + { + "from": "拉取请求", + "zh-tw": "提取要求", + "zh-hk": "拉取要求" + }, + { + "from": "合併請求", + "zh-tw": "合併請求", + "zh-hk": "合併請求" + }, + { + "from": "合并请求", + "zh-tw": "合併請求", + "zh-hk": "合併請求" + }, + { + "from": "工作流", + "zh-tw": "工作流程", + "zh-hk": "工作流程" + }, + { + "from": "智能体工作流", + "zh-tw": "代理式工作流程", + "zh-hk": "代理式工作流程" + }, + { + "from": "反向代理客户端", + "zh-tw": "反向代理用戶端", + "zh-hk": "反向代理用戶端" + }, + { + "from": "退出登錄", + "zh-tw": "登出", + "zh-hk": "登出" + }, + { + "from": "退出登录", + "zh-tw": "登出", + "zh-hk": "登出" + }, + { + "from": "電子郵件", + "zh-tw": "電子郵件", + "zh-hk": "電郵" + }, + { + "from": "强制推送", + "zh-tw": "強制推送", + "zh-hk": "強制推送" + }, + { + "from": "強制推送", + "zh-tw": "強制推送", + "zh-hk": "強制推送" + }, + { + "from": "取消暫存", + "zh-tw": "取消暫存", + "zh-hk": "取消暫存" + }, + { + "from": "取消暂存", + "zh-tw": "取消暫存", + "zh-hk": "取消暫存" + }, + { + "from": "外掛程式", + "zh-tw": "外掛", + "zh-hk": "外掛程式" + }, + { + "from": "显示语言", + "zh-tw": "顯示語言", + "zh-hk": "顯示語言" + }, + { + "from": "顯示語言", + "zh-tw": "顯示語言", + "zh-hk": "顯示語言" + }, + { + "from": "許可權", + "zh-tw": "權限", + "zh-hk": "權限" + }, + { + "from": "例項", + "zh-tw": "實例", + "zh-hk": "實例" + }, + { + "from": "麵包屑", + "zh-tw": "導覽列", + "zh-hk": "導覽列" + }, + { + "from": "麪包屑", + "zh-tw": "導覽列", + "zh-hk": "導覽列" + }, + { + "from": "命令列", + "zh-tw": "命令列", + "zh-hk": "命令列" + }, + { + "from": "命令行", + "zh-tw": "命令列", + "zh-hk": "命令列" + }, + { + "from": "智能体配置", + "zh-tw": "代理程式設定檔", + "zh-hk": "代理程式設定檔" + }, + { + "from": "执行器配置", + "zh-tw": "執行器設定檔", + "zh-hk": "執行器設定檔" + }, + { + "from": "配置文件", + "zh-tw": "設定檔", + "zh-hk": "設定檔" + }, + { + "from": "源代码", + "zh-tw": "原始碼", + "zh-hk": "原始碼" + }, + { + "from": "Git 工作树", + "zh-tw": "Git 工作樹", + "zh-hk": "Git 工作樹" + } + ], + "tokens": [ + { "from": "軟件", "zh-tw": "軟體", "zh-hk": "軟件" }, + { "from": "软件", "zh-tw": "軟體", "zh-hk": "軟件" }, + { "from": "軟體", "zh-tw": "軟體", "zh-hk": "軟件" }, + { "from": "網絡", "zh-tw": "網路", "zh-hk": "網絡" }, + { "from": "网络", "zh-tw": "網路", "zh-hk": "網絡" }, + { "from": "網路", "zh-tw": "網路", "zh-hk": "網絡" }, + { "from": "資訊", "zh-tw": "資訊", "zh-hk": "資訊" }, + { "from": "信息", "zh-tw": "資訊", "zh-hk": "資訊" }, + { "from": "數據", "zh-tw": "資料", "zh-hk": "數據" }, + { "from": "数据", "zh-tw": "資料", "zh-hk": "數據" }, + { "from": "資料", "zh-tw": "資料", "zh-hk": "數據" }, + { "from": "文件夾", "zh-tw": "資料夾", "zh-hk": "資料夾" }, + { "from": "文件夹", "zh-tw": "資料夾", "zh-hk": "資料夾" }, + { "from": "资料夹", "zh-tw": "資料夾", "zh-hk": "資料夾" }, + { "from": "資料夾", "zh-tw": "資料夾", "zh-hk": "資料夾" }, + { "from": "文件", "zh-tw": "檔案", "zh-hk": "檔案" }, + { "from": "檔案", "zh-tw": "檔案", "zh-hk": "檔案" }, + { "from": "設置", "zh-tw": "設定", "zh-hk": "設定" }, + { "from": "设置", "zh-tw": "設定", "zh-hk": "設定" }, + { "from": "設定", "zh-tw": "設定", "zh-hk": "設定" }, + { "from": "默認", "zh-tw": "預設", "zh-hk": "預設" }, + { "from": "默认", "zh-tw": "預設", "zh-hk": "預設" }, + { "from": "預設", "zh-tw": "預設", "zh-hk": "預設" }, + { "from": "用戶", "zh-tw": "使用者", "zh-hk": "用戶" }, + { "from": "用户", "zh-tw": "使用者", "zh-hk": "用戶" }, + { "from": "使用者", "zh-tw": "使用者", "zh-hk": "用戶" }, + { "from": "帳戶", "zh-tw": "帳戶", "zh-hk": "帳戶" }, + { "from": "賬戶", "zh-tw": "帳戶", "zh-hk": "帳戶" }, + { "from": "賬號", "zh-tw": "帳戶", "zh-hk": "帳戶" }, + { "from": "账户", "zh-tw": "帳戶", "zh-hk": "帳戶" }, + { "from": "账号", "zh-tw": "帳戶", "zh-hk": "帳戶" }, + { "from": "登錄", "zh-tw": "登入", "zh-hk": "登入" }, + { "from": "登录", "zh-tw": "登入", "zh-hk": "登入" }, + { "from": "登入", "zh-tw": "登入", "zh-hk": "登入" }, + { "from": "登出", "zh-tw": "登出", "zh-hk": "登出" }, + { "from": "保存", "zh-tw": "儲存", "zh-hk": "儲存" }, + { "from": "儲存", "zh-tw": "儲存", "zh-hk": "儲存" }, + { "from": "創建", "zh-tw": "建立", "zh-hk": "建立" }, + { "from": "创建", "zh-tw": "建立", "zh-hk": "建立" }, + { "from": "建立", "zh-tw": "建立", "zh-hk": "建立" }, + { "from": "刪除", "zh-tw": "刪除", "zh-hk": "刪除" }, + { "from": "删除", "zh-tw": "刪除", "zh-hk": "刪除" }, + { "from": "搜索", "zh-tw": "搜尋", "zh-hk": "搜尋" }, + { "from": "搜尋", "zh-tw": "搜尋", "zh-hk": "搜尋" }, + { "from": "加載", "zh-tw": "載入", "zh-hk": "載入" }, + { "from": "加载", "zh-tw": "載入", "zh-hk": "載入" }, + { "from": "載入", "zh-tw": "載入", "zh-hk": "載入" }, + { "from": "上傳", "zh-tw": "上傳", "zh-hk": "上傳" }, + { "from": "上传", "zh-tw": "上傳", "zh-hk": "上傳" }, + { "from": "下載", "zh-tw": "下載", "zh-hk": "下載" }, + { "from": "下载", "zh-tw": "下載", "zh-hk": "下載" }, + { "from": "伺服器", "zh-tw": "伺服器", "zh-hk": "伺服器" }, + { "from": "服務器", "zh-tw": "伺服器", "zh-hk": "伺服器" }, + { "from": "服务器", "zh-tw": "伺服器", "zh-hk": "伺服器" }, + { "from": "專案", "zh-tw": "專案", "zh-hk": "項目" }, + { "from": "項目", "zh-tw": "專案", "zh-hk": "項目" }, + { "from": "项目", "zh-tw": "專案", "zh-hk": "項目" }, + { "from": "質量", "zh-tw": "品質", "zh-hk": "品質" }, + { "from": "质量", "zh-tw": "品質", "zh-hk": "品質" }, + { "from": "品質", "zh-tw": "品質", "zh-hk": "品質" }, + { "from": "視頻", "zh-tw": "影片", "zh-hk": "影片" }, + { "from": "视频", "zh-tw": "影片", "zh-hk": "影片" }, + { "from": "影片", "zh-tw": "影片", "zh-hk": "影片" }, + { "from": "記憶體", "zh-tw": "記憶體", "zh-hk": "記憶體" }, + { "from": "内存", "zh-tw": "記憶體", "zh-hk": "記憶體" }, + { "from": "快取", "zh-tw": "快取", "zh-hk": "快取" }, + { "from": "緩存", "zh-tw": "快取", "zh-hk": "快取" }, + { "from": "缓存", "zh-tw": "快取", "zh-hk": "快取" }, + { "from": "粘貼", "zh-tw": "貼上", "zh-hk": "貼上" }, + { "from": "粘贴", "zh-tw": "貼上", "zh-hk": "貼上" }, + { "from": "貼上", "zh-tw": "貼上", "zh-hk": "貼上" }, + { "from": "複製", "zh-tw": "複製", "zh-hk": "複製" }, + { "from": "复制", "zh-tw": "複製", "zh-hk": "複製" }, + { "from": "克隆", "zh-tw": "複製", "zh-hk": "複製" }, + { "from": "曆史", "zh-tw": "歷史", "zh-hk": "歷史" }, + { "from": "历史", "zh-tw": "歷史", "zh-hk": "歷史" }, + { "from": "後臺", "zh-tw": "後台", "zh-hk": "後台" }, + { "from": "后台", "zh-tw": "後台", "zh-hk": "後台" }, + { "from": "瞭解", "zh-tw": "了解", "zh-hk": "了解" }, + { "from": "了解", "zh-tw": "了解", "zh-hk": "了解" }, + { "from": "列印", "zh-tw": "列印", "zh-hk": "列印" }, + { "from": "打印", "zh-tw": "列印", "zh-hk": "列印" }, + { "from": "權限", "zh-tw": "權限", "zh-hk": "權限" }, + { "from": "权限", "zh-tw": "權限", "zh-hk": "權限" }, + { "from": "客戶端", "zh-tw": "用戶端", "zh-hk": "用戶端" }, + { "from": "客户端", "zh-tw": "用戶端", "zh-hk": "用戶端" }, + { "from": "用戶端", "zh-tw": "用戶端", "zh-hk": "用戶端" }, + { "from": "使用者端", "zh-tw": "用戶端", "zh-hk": "用戶端" }, + { "from": "實例", "zh-tw": "實例", "zh-hk": "實例" }, + { "from": "实例", "zh-tw": "實例", "zh-hk": "實例" }, + { "from": "密碼", "zh-tw": "密碼", "zh-hk": "密碼" }, + { "from": "密码", "zh-tw": "密碼", "zh-hk": "密碼" }, + { "from": "錯誤", "zh-tw": "錯誤", "zh-hk": "錯誤" }, + { "from": "错误", "zh-tw": "錯誤", "zh-hk": "錯誤" }, + { "from": "失敗", "zh-tw": "失敗", "zh-hk": "失敗" }, + { "from": "失败", "zh-tw": "失敗", "zh-hk": "失敗" }, + { "from": "確定", "zh-tw": "確定", "zh-hk": "確定" }, + { "from": "确定", "zh-tw": "確定", "zh-hk": "確定" }, + { "from": "關閉", "zh-tw": "關閉", "zh-hk": "關閉" }, + { "from": "关闭", "zh-tw": "關閉", "zh-hk": "關閉" }, + { "from": "打開", "zh-tw": "開啟", "zh-hk": "開啟" }, + { "from": "打开", "zh-tw": "開啟", "zh-hk": "開啟" }, + { "from": "開啟", "zh-tw": "開啟", "zh-hk": "開啟" }, + { "from": "編輯", "zh-tw": "編輯", "zh-hk": "編輯" }, + { "from": "编辑", "zh-tw": "編輯", "zh-hk": "編輯" }, + { "from": "匯出", "zh-tw": "匯出", "zh-hk": "匯出" }, + { "from": "导出", "zh-tw": "匯出", "zh-hk": "匯出" }, + { "from": "匯入", "zh-tw": "匯入", "zh-hk": "匯入" }, + { "from": "导入", "zh-tw": "匯入", "zh-hk": "匯入" }, + { "from": "語言", "zh-tw": "語言", "zh-hk": "語言" }, + { "from": "语言", "zh-tw": "語言", "zh-hk": "語言" }, + { "from": "會話", "zh-tw": "工作階段", "zh-hk": "工作階段" }, + { "from": "会话", "zh-tw": "工作階段", "zh-hk": "工作階段" }, + { "from": "工作階段", "zh-tw": "工作階段", "zh-hk": "工作階段" }, + { "from": "倉庫", "zh-tw": "儲存庫", "zh-hk": "儲存庫" }, + { "from": "仓库", "zh-tw": "儲存庫", "zh-hk": "儲存庫" }, + { "from": "儲存庫", "zh-tw": "儲存庫", "zh-hk": "儲存庫" }, + { "from": "插件", "zh-tw": "外掛", "zh-hk": "外掛程式" }, + { "from": "外掛", "zh-tw": "外掛", "zh-hk": "外掛程式" }, + { "from": "審查", "zh-tw": "審查", "zh-hk": "審查" }, + { "from": "评审", "zh-tw": "審查", "zh-hk": "審查" }, + { "from": "評審", "zh-tw": "審查", "zh-hk": "審查" }, + { "from": "暫存", "zh-tw": "暫存", "zh-hk": "暫存" }, + { "from": "暂存", "zh-tw": "暫存", "zh-hk": "暫存" }, + { "from": "遠端", "zh-tw": "遠端", "zh-hk": "遠端" }, + { "from": "远程", "zh-tw": "遠端", "zh-hk": "遠端" }, + { "from": "衝突", "zh-tw": "衝突", "zh-hk": "衝突" }, + { "from": "冲突", "zh-tw": "衝突", "zh-hk": "衝突" }, + { "from": "解決", "zh-tw": "解決", "zh-hk": "解決" }, + { "from": "解决", "zh-tw": "解決", "zh-hk": "解決" }, + { "from": "獲取", "zh-tw": "擷取", "zh-hk": "擷取" }, + { "from": "获取", "zh-tw": "擷取", "zh-hk": "擷取" }, + { "from": "擷取", "zh-tw": "擷取", "zh-hk": "擷取" }, + { "from": "驗證", "zh-tw": "驗證", "zh-hk": "驗證" }, + { "from": "认证", "zh-tw": "驗證", "zh-hk": "驗證" }, + { "from": "認證", "zh-tw": "驗證", "zh-hk": "驗證" }, + { "from": "授權", "zh-tw": "授權", "zh-hk": "授權" }, + { "from": "授权", "zh-tw": "授權", "zh-hk": "授權" }, + { "from": "令牌", "zh-tw": "權杖", "zh-hk": "權杖" }, + { "from": "權杖", "zh-tw": "權杖", "zh-hk": "權杖" }, + { "from": "工作區", "zh-tw": "工作區", "zh-hk": "工作區" }, + { "from": "工作区", "zh-tw": "工作區", "zh-hk": "工作區" }, + { "from": "任務", "zh-tw": "任務", "zh-hk": "任務" }, + { "from": "任务", "zh-tw": "任務", "zh-hk": "任務" }, + { "from": "執行器", "zh-tw": "執行器", "zh-hk": "執行器" }, + { "from": "执行器", "zh-tw": "執行器", "zh-hk": "執行器" }, + { "from": "自動化", "zh-tw": "自動化", "zh-hk": "自動化" }, + { "from": "自动化", "zh-tw": "自動化", "zh-hk": "自動化" }, + { "from": "添加", "zh-tw": "新增", "zh-hk": "新增" }, + { "from": "消息", "zh-tw": "訊息", "zh-hk": "訊息" }, + { "from": "队列", "zh-tw": "佇列", "zh-hk": "佇列" }, + { "from": "控件", "zh-tw": "控制項", "zh-hk": "控制項" }, + { "from": "链接", "zh-tw": "連結", "zh-hk": "連結" }, + { "from": "运行", "zh-tw": "執行", "zh-hk": "執行" }, + { "from": "当前", "zh-tw": "目前", "zh-hk": "目前" }, + { "from": "配置", "zh-tw": "設定", "zh-hk": "設定" }, + { "from": "代码", "zh-tw": "程式碼", "zh-hk": "程式碼" }, + { "from": "发送", "zh-tw": "傳送", "zh-hk": "傳送" }, + { "from": "生成", "zh-tw": "產生", "zh-hk": "產生" }, + { "from": "文本", "zh-tw": "文字", "zh-hk": "文字" }, + { "from": "列表", "zh-tw": "清單", "zh-hk": "列表" }, + { "from": "查看", "zh-tw": "檢視", "zh-hk": "查看" }, + { "from": "反馈", "zh-tw": "意見回饋", "zh-hk": "反饋" }, + { "from": "禁用", "zh-tw": "停用", "zh-hk": "停用" }, + { "from": "组件", "zh-tw": "元件", "zh-hk": "組件" }, + { "from": "屏幕", "zh-tw": "螢幕", "zh-hk": "屏幕" }, + { "from": "邮箱", "zh-tw": "電子郵件地址", "zh-hk": "電郵地址" }, + { "from": "字段", "zh-tw": "欄位", "zh-hk": "欄位" }, + { "from": "变量", "zh-tw": "變數", "zh-hk": "變量" }, + { "from": "界面", "zh-tw": "介面", "zh-hk": "介面" }, + { "from": "回复", "zh-tw": "回覆", "zh-hk": "回覆" }, + { "from": "说明", "zh-tw": "說明", "zh-hk": "說明" }, + { "from": "身份", "zh-tw": "身分", "zh-hk": "身份" }, + { "from": "访问", "zh-tw": "存取", "zh-hk": "存取" }, + { "from": "支持", "zh-tw": "支援", "zh-hk": "支援" }, + { "from": "导航", "zh-tw": "導覽", "zh-hk": "導航" }, + { "from": "菜单", "zh-tw": "選單", "zh-hk": "菜單" }, + { "from": "全局", "zh-tw": "全域", "zh-hk": "全局" }, + { "from": "工作树", "zh-tw": "工作樹", "zh-hk": "工作樹" }, + { "from": "智能体", "zh-tw": "代理程式", "zh-hk": "代理程式" }, + { "from": "调用", "zh-tw": "呼叫", "zh-hk": "呼叫" }, + { "from": "調用", "zh-tw": "呼叫", "zh-hk": "呼叫" }, + { "from": "呼叫", "zh-tw": "呼叫", "zh-hk": "呼叫" }, + { "from": "自定义", "zh-tw": "自訂", "zh-hk": "自訂" }, + { "from": "自定義", "zh-tw": "自訂", "zh-hk": "自訂" }, + { "from": "自訂", "zh-tw": "自訂", "zh-hk": "自訂" }, + { "from": "提供商", "zh-tw": "提供者", "zh-hk": "提供者" }, + { "from": "提供者", "zh-tw": "提供者", "zh-hk": "提供者" }, + { "from": "凭据", "zh-tw": "認證資訊", "zh-hk": "認證資料" }, + { "from": "憑據", "zh-tw": "認證資訊", "zh-hk": "認證資料" }, + { "from": "响应", "zh-tw": "回應", "zh-hk": "回應" }, + { "from": "響應", "zh-tw": "回應", "zh-hk": "回應" }, + { "from": "回應", "zh-tw": "回應", "zh-hk": "回應" }, + { "from": "审阅", "zh-tw": "審閱", "zh-hk": "審閱" }, + { "from": "審閲", "zh-tw": "審閱", "zh-hk": "審閱" }, + { "from": "審閱", "zh-tw": "審閱", "zh-hk": "審閱" }, + { "from": "磁盘", "zh-tw": "磁碟", "zh-hk": "磁碟" }, + { "from": "磁盤", "zh-tw": "磁碟", "zh-hk": "磁碟" }, + { "from": "磁碟", "zh-tw": "磁碟", "zh-hk": "磁碟" }, + { "from": "进程", "zh-tw": "處理程序", "zh-hk": "程序" }, + { "from": "進程", "zh-tw": "處理程序", "zh-hk": "程序" }, + { "from": "标志", "zh-tw": "旗標", "zh-hk": "旗標" }, + { "from": "標誌", "zh-tw": "旗標", "zh-hk": "旗標" }, + { "from": "旗標", "zh-tw": "旗標", "zh-hk": "旗標" }, + { "from": "回退", "zh-tw": "備援", "zh-hk": "後備" }, + { "from": "显式", "zh-tw": "明確指定的", "zh-hk": "明確指定的" }, + { "from": "顯式", "zh-tw": "明確指定的", "zh-hk": "明確指定的" } + ] +} diff --git a/apps/web/scripts/lib/zh-hant-overrides.json b/apps/web/scripts/lib/zh-hant-overrides.json new file mode 100644 index 0000000000..75c713ee34 --- /dev/null +++ b/apps/web/scripts/lib/zh-hant-overrides.json @@ -0,0 +1,47 @@ +{ + "web": { + "zh-tw": { + "settings": { + "preventAutoStartAgentOnOpen": "開啟任務時不自動啟動代理程式", + "preventAutoStartAgentOnOpenHelp": "重新啟動後,或從工作流程最後一步開啟任務時,不會自動啟動代理程式,改為顯示「啟動代理程式」按鈕。" + }, + "github": { + "resolvedFromOneNamedHostAccount": "需要時從一個指定的主機帳戶解析。受管理任務會取得限定範圍的中介身分;除非在下方選取,否則不會繼承主機 Git。", + "storedAppCredentialsMintShortLived": "儲存的應用程式認證會簽發短效安裝權杖。受管理任務會針對允許的儲存庫取得限定範圍的應用程式中介身分。", + "withManagedWorkspaceCredentialsKandevConfigures": "使用受管理的工作區認證資訊時,Kandev 會在新啟動的任務處理程序中,將 agentctl 設為 Git 的認證輔助程式。當 Git 要求取得已附加 GitHub HTTPS 儲存庫的認證資訊時,輔助程式會兌換僅適用於該任務與儲存庫的 broker 租約。認證資訊會在需要時傳回 Git,且不會寫入儲存庫或 Git 設定。gh 命令會使用 Kandev 支援 broker 的轉接程式。繼承執行器設定則會略過這兩者,改用所選執行器可見的認證資訊。變更會套用至新啟動的任務及下次繼續執行,不會影響已在執行的處理程序。" + }, + "task": { + "proxy": "代理伺服器", + "pathBasedProxyWorksForApis": "路徑型代理伺服器。適用於 API,但可能導致預期由 / 提供服務的 Web 應用程式無法正常運作。" + }, + "workspaces": { + "failedToSaveRepository": "無法儲存此儲存庫" + }, + "system": { + "diskRefreshHelp": "遍歷 Kandev 資料目錄內的所有子目錄並累計檔案大小。結果會快取幾小時;點選可立即重新計算。大型工作區可能需要幾秒。" + } + }, + "zh-hk": { + "settings": { + "preventAutoStartAgentOnOpen": "開啟任務時不自動啓動代理程式", + "preventAutoStartAgentOnOpenHelp": "重新啓動後,或從工作流程最後一步開啟任務時,不會自動啓動代理程式,改為顯示「啓動代理程式」按鈕。" + }, + "github": { + "resolvedFromOneNamedHostAccount": "需要時從一個指定的主機帳戶解析。受管理任務會取得限定範圍的中介身份;除非在下方選取,否則不會繼承主機 Git。", + "storedAppCredentialsMintShortLived": "儲存的應用程式認證會簽發短效安裝權杖。受管理任務會針對允許的儲存庫取得限定範圍的應用程式中介身份。", + "withManagedWorkspaceCredentialsKandevConfigures": "使用受管理的工作區認證資料時,Kandev 會在新啓動的任務程序中,將 agentctl 設為 Git 的認證輔助程式。當 Git 要求取得已附加 GitHub HTTPS 儲存庫的認證資料時,輔助程式會兌換只適用於該任務及儲存庫的 broker 租約。認證資料會在需要時傳回 Git,且不會寫入儲存庫或 Git 設定。gh 命令會使用 Kandev 支援 broker 的轉接程式。繼承執行器設定則會略過這兩者,改用所選執行器可見的認證資料。變更會套用至新啓動的任務及下次繼續執行,不會影響已在執行的程序。" + }, + "task": { + "proxy": "代理伺服器", + "pathBasedProxyWorksForApis": "路徑型代理伺服器。適用於 API,但可能導致預期由 / 提供服務的 Web 應用程式無法正常運作。" + }, + "workspaces": { + "failedToSaveRepository": "無法儲存此儲存庫" + }, + "system": { + "diskRefreshHelp": "遍歷 Kandev 數據目錄內的所有子目錄並累計檔案大小。結果會快取幾小時;點擊可立即重新計算。大型工作區可能需要幾秒。" + } + } + }, + "backend": {} +} diff --git a/apps/web/src/locales/zh-cn/account.json b/apps/web/src/locales/zh-cn/account.json index a120dbd116..e30c2023e7 100644 --- a/apps/web/src/locales/zh-cn/account.json +++ b/apps/web/src/locales/zh-cn/account.json @@ -36,7 +36,7 @@ "signOut": "退出登录", "thisDevice": "此设备", "tokenCreated": "令牌已创建", - "tokenShownOnlyOnce": "此内容仅显示一次; 请立即复制并妥善保管。", + "tokenShownOnlyOnce": "此内容仅显示一次;请立即复制并妥善保管。", "tokensPageDescription": "供以你身份运行的脚本和 CLI 使用的个人访问令牌。", "tokensPageTitle": "API 令牌" } diff --git a/apps/web/src/locales/zh-cn/agents.json b/apps/web/src/locales/zh-cn/agents.json index 8b27314961..37746b56a3 100644 --- a/apps/web/src/locales/zh-cn/agents.json +++ b/apps/web/src/locales/zh-cn/agents.json @@ -2,49 +2,49 @@ "actionCannotBeUndone": "此操作无法撤销。", "add": "添加", "addProfile": "添加配置", - "addTuiAgent": "添加 TUI 代理", - "addTuiAgentDescription": "将 CLI 工具注册为 TUI 代理。它会以默认透传配置出现在代理列表中。", - "agentCliFlags": "代理 CLI 标志", - "agentCliFlagsDescription": "启动时代理 CLI 接收的标志。仅应用已启用的项。", - "agentInstallAlreadyInProgress": "代理安装已在进行中。", - "agentInstallationInProgress": "正在安装代理", - "agentNotFound": "未找到代理。", - "agentProfileSettings": "{{name}} 配置设置", + "addTuiAgent": "添加 TUI 智能体", + "addTuiAgentDescription": "将 CLI 工具注册为 TUI 智能体。它会以默认透传配置出现在智能体列表中。", + "agentCliFlags": "智能体 CLI 标志", + "agentCliFlagsDescription": "启动时智能体 CLI 接收的标志。仅应用已启用的项。", + "agentInstallAlreadyInProgress": "智能体安装已在进行中。", + "agentInstallationInProgress": "正在安装智能体", + "agentNotFound": "未找到智能体。", + "agentProfileSettings": "{{name}} 智能体配置", "agentProfilesTitle": "{{name}} 配置", "approveUpdate": "批准更新", - "authRequiredOpenLoginTerminal": "需要身份验证; 点击打开登录终端", - "authRequiredOpenShell": "需要身份验证; 点击打开 shell 并登录", + "authRequiredOpenLoginTerminal": "需要身份验证;点击打开登录终端", + "authRequiredOpenShell": "需要身份验证;点击打开 shell 并登录", "authenticationRequired": "需要身份验证", "automaticallyAvailable": "自动可用", "availableCommandsCount_one": "可用命令({{count}})", "availableCommandsCount_other": "可用命令({{count}})", "availableSlashCommands": "可用斜杠命令", - "availableSlashCommandsHelp": "在会话聊天中输入即可调用; 例如 <0>{{example}}。", - "availableToInstallDescription": "点击“安装”在 kandev 主机上运行该代理的安装脚本。进度会实时推送;可并行启动多个安装。", - "backToAgents": "返回代理", + "availableSlashCommandsHelp": "在会话聊天中输入即可调用;例如 <0>{{example}}。", + "availableToInstallDescription": "点击“安装”在 Kandev 主机上运行该智能体的安装脚本。进度会实时推送;可并行启动多个安装。", + "backToAgents": "返回智能体", "backToModelSettings": "从 {{name}} 返回模型设置", - "browseAvailableAgents": "浏览可用代理", + "browseAvailableAgents": "浏览可用智能体", "builtIn": "内置", - "cannotDeleteAgentProfile": "无法删除代理配置", - "capabilityAuthRequired": "需要身份验证。请在终端运行代理 CLI 完成认证,然后刷新。", - "capabilityNotInstalled": "未安装代理 CLI。", - "capabilityProbeFailed": "探测失败。请查看代理日志了解详情。", - "capabilityProbing": "正在检查代理能力…", + "cannotDeleteAgentProfile": "无法删除智能体配置", + "capabilityAuthRequired": "需要身份验证。请在终端运行智能体 CLI 完成认证,然后刷新。", + "capabilityNotInstalled": "未安装智能体 CLI。", + "capabilityProbeFailed": "探测失败。请查看智能体日志了解详情。", + "capabilityProbing": "正在检查智能体能力…", "changeTierMappingsFirst": "删除此配置前,请先更改这些工作区层级映射。", - "everythingInstalled": "所有可用代理和工具均已安装。", + "everythingInstalled": "所有可用智能体和工具均已安装。", "checkingAuthentication": "正在检查身份验证", - "checkingCapabilitiesAndAuth": "正在检查代理能力与身份验证…", + "checkingCapabilitiesAndAuth": "正在检查智能体能力与身份验证…", "checkingLatestRuntimeVersion": "正在检查最新运行时版本…", "cliFlagsEnabledCount_one": "已启用 {{enabled}} / {{count}}", "cliFlagsEnabledCount_other": "已启用 {{enabled}} / {{count}}", "command": "命令", "commandPrefix": "命令前缀", - "commandPrefixHelp": "附加在代理启动命令前的令牌,使其在沙箱启动器下运行(例如 <0>{{example}})。该值会按 shell 规则拆分为多个令牌。留空则直接运行代理。仅适用于 ACP 会话; 当配置使用 TUI 透传时无效。", + "commandPrefixHelp": "附加在智能体启动命令前的令牌,使其在沙箱启动器下运行(例如 <0>{{example}})。该值会按 shell 规则拆分为多个令牌。留空则直接运行智能体。仅适用于 ACP 会话;当配置使用 TUI 透传时无效。", "commandPreview": "命令预览", "commandPreviewHelp": "根据当前设置将执行的 CLI 命令。", "commandRequired": "命令为必填项", "commandThatWillRun": "将要运行的命令", - "configureProfilesIntro": "为此代理设置配置文件与默认值。", + "configureProfilesIntro": "管理此智能体的配置和默认值。", "configured": "已配置", "conflictAutomationRow": "<0>{{name}}({{workspace}})", "conflictAutomationsTitle": "自动化:", @@ -53,50 +53,50 @@ "conflictTierMappingRow": "{{workspace}} 中 {{provider}} 的 <0>{{tier}} 层级", "conflictTierMappingsTitle": "工作区层级映射:", "conflictWatchersTitle": "监控(将被禁用):", - "conflictUtilityAgentsTitle": "实用代理(将保留失效绑定):", - "disableProfileUtilityWarning": "实用代理正在使用此配置。禁用后,新调用会停止,直到修复每个绑定。", + "conflictUtilityAgentsTitle": "辅助智能体(将保留失效绑定):", + "disableProfileUtilityWarning": "辅助智能体正在使用此配置。禁用后,新调用会停止,直到修复每个绑定。", "disableProfileAnyway": "禁用配置", "copied": "已复制", "copyInstallCommand": "复制安装命令", "copyToClipboard": "复制到剪贴板", "create": "创建", "createAgentProfileTitle": "创建 {{name}} 配置", - "installAgents": "安装代理", + "installAgents": "安装智能体", "profileCount_one": "{{count}} 个配置", "profileCount_other": "{{count}} 个配置", - "createProfileIntro": "为此代理创建新配置。", + "createProfileIntro": "为此智能体创建新配置。", "creating": "正在创建…", - "defaultProfile": "默认配置", + "defaultProfile": "默认智能体配置", "defaultSuffix": "(默认)", "delete": "删除", - "deleteAgent": "删除代理", - "deleteAgentDescription": "这将永久移除该代理及其所有配置。此操作无法撤销。", + "deleteAgent": "删除智能体", + "deleteAgentDescription": "这将永久移除该智能体及其所有配置。此操作无法撤销。", "deleteAgentProfileDescription": "这将永久删除此配置。此操作无法撤销。", - "deleteAgentProfileTitle": "删除代理配置?", + "deleteAgentProfileTitle": "删除智能体配置?", "deleteAgentTitle": "删除 {{name}}?", "deleteAnyway": "仍然删除", "deleteAnywayConsequences": "这些会话将无法再使用此配置,所列监控将被禁用。此操作无法撤销。", "deleteProfile": "删除配置", "details": "详情", "detectedAt": "检测路径:{{path}}", - "disableProfile": "禁用配置文件", + "disableProfile": "禁用智能体配置", "disableSetting": "禁用 {{name}}", "displayName": "显示名称", "displayNameRequired": "显示名称为必填项", "done": "完成", "enableMcp": "启用 MCP", "enableMcpDescription": "允许此配置在会话中使用 MCP 服务器。", - "enableProfile": "启用配置文件", + "enableProfile": "启用智能体配置", "enableSetting": "启用 {{name}}", "enabled": "已启用", - "enabledProfileInfo": "关于配置文件可用性的更多信息", - "enabledProfileHelper": "已禁用的配置文件仍会继续服务现有会话,但在创建新任务或代理时不会出现在选项中。", + "enabledProfileInfo": "关于智能体配置可用性的更多信息", + "enabledProfileHelper": "已禁用的智能体配置仍会继续服务现有会话,但在创建新任务或智能体时不会出现在选项中。", "everyProfileNeedsNameAndModel": "每个配置都需要名称和模型。", "exampleValue": "例如 {{example}}", - "failedToCreateAgent": "创建代理失败", + "failedToCreateAgent": "创建智能体失败", "failedToDeleteProfile": "删除配置失败", "failedToFetchCapabilities": "获取能力失败", - "modelOptionsAuthenticationRequired": "请登录此代理以加载模型选项。", + "modelOptionsAuthenticationRequired": "请登录此智能体以加载模型选项。", "modelOptionsResolutionFailed": "无法加载模型选项。", "modelSettings": "模型设置", "resolvingModelOptions": "正在加载模型选项…", @@ -104,22 +104,22 @@ "failedToLoadCommandPreview": "加载命令预览失败", "failedToLoadMcpConfig": "加载 MCP 配置失败", "failedToRefresh": "刷新失败:{{error}}", - "failedToSaveAgent": "保存代理失败", + "failedToSaveAgent": "保存智能体失败", "failedToSaveMcpConfig": "保存 MCP 配置失败", "failedToSaveProfile": "保存配置失败", - "failedToUpdateProfile": "更新配置文件失败", + "failedToUpdateProfile": "更新智能体配置失败", "filterModels": "筛选模型…", "fixInvalidMcpConfig": "请先修复无效的 MCP 配置再保存。", "fixInvalidMcpJson": "请先修复无效的 MCP JSON 再保存。", "flag": "标志", "hostTerminal": "主机终端", - "hostTerminalDescription": "在 kandev 主机上运行 shell。可用于手动安装或配置代理。", + "hostTerminalDescription": "在 Kandev 主机上运行 shell。可用于手动安装或配置智能体。", "install": "安装", "installQueued": "已排队…", "installationNotDetected": "未检测到安装", "installed": "已安装", - "installedAgents": "已安装的代理", - "installedAgentsDescription": "在本机检测到的代理已可配置。", + "installedAgents": "已安装的智能体", + "installedAgentsDescription": "在本机检测到的智能体已可配置。", "installing": "正在安装…", "invalidJson": "无效的 JSON", "invalidMcpConfig": "无效的 MCP 配置", @@ -129,30 +129,30 @@ "mcpConfiguration": "MCP 配置", "mcpDraftHint": "配置保存后将应用 MCP 设置。", "mcpKeyMustBeJsonObject": "{{key}} 必须是 JSON 对象", - "mcpPassthroughInjectionHint": "在 CLI 透传模式下,kandev 通过 {{mechanism}} 注入这些 MCP 服务器。", + "mcpPassthroughInjectionHint": "在 CLI 透传模式下,Kandev 通过 {{mechanism}} 注入这些 MCP 服务器。", "mcpSaveProfileHint": "保存此配置以配置 MCP 服务器。", - "mcpServersHelp": "MCP 定义存储在数据库中,并在运行时按执行器解析。这不会覆盖你的本地代理配置。", + "mcpServersHelp": "MCP 定义存储在数据库中,并在运行时按执行器解析。这不会覆盖你的本地智能体配置。", "mcpServersJson": "MCP 服务器(JSON)", "model": "模型", "modelHeading": "模型", "modelRequiredForAllProfiles": "所有配置都需要模型。", "noAuthHintLogin": "点击“打开终端”登录,然后刷新。", - "noAuthHintNotInstalled": "安装代理 CLI,然后点击“刷新”。", - "noAuthHintShell": "点击“打开终端”启动 shell,运行代理的登录命令,然后刷新。", - "noAuthLoginRequired": "未认证; 需要登录", + "noAuthHintNotInstalled": "安装智能体 CLI,然后点击“刷新”。", + "noAuthHintShell": "点击“打开终端”启动 shell,运行智能体的登录命令,然后刷新。", + "noAuthLoginRequired": "未认证;需要登录", "newProfile": "新配置", "noCliFlagsConfigured": "未配置 CLI 标志。请在下方添加。", "noCommandPreview": "无可用命令预览。", - "noInstalledAgentsDetected": "未检测到已安装的代理。请在下方安装,然后点击“重新扫描”。", + "noInstalledAgentsDetected": "未检测到已安装的智能体。请在下方安装,然后点击“重新扫描”。", "noModeFound": "未找到模式。", "noModelFound": "未找到模型。", "noModelsFound": "未找到模型。", - "noProfilesYet": "尚无配置。请从已安装的代理创建一个。", + "noProfilesYet": "尚无配置。请从已安装的智能体创建一个。", "notInstalled": "未安装", "openTerminal": "打开终端", - "pageDescription": "发现已安装的代理、安装新代理并管理其配置。", + "pageDescription": "发现已安装的智能体、安装新智能体并管理其配置。", "popularServers": "常用服务器", - "probingCapabilities": "正在探测代理能力… 通常需要几秒钟。", + "probingCapabilities": "正在探测智能体能力… 通常需要几秒钟。", "profileActions": "配置操作", "profileInUseIntro": "此配置当前正在使用。删除后将影响以下内容:", "profileName": "配置名称", @@ -160,11 +160,11 @@ "profileNameRequiredDescription": "保存前请输入配置名称。", "profileNameRequiredTitle": "配置名称为必填项", "profileNotFound": "未找到配置。", - "profileSettings": "配置设置", + "profileSettings": "智能体配置", "promptTokenHint": "<0>{{token}} 将替换为你的任务描述或后续消息。", "ptyConnectionError": "连接错误", "refresh": "刷新", - "refreshCapabilitiesTooltip": "刷新代理能力(模型 + 模式)", + "refreshCapabilitiesTooltip": "刷新智能体能力(模型 + 模式)", "remove": "移除", "removeCliFlag": "移除 {{name}}", "removeThisProfile": "移除此配置", @@ -191,36 +191,41 @@ "rollBackRuntime": "回滚运行时", "repairRuntime": "修复运行时", "upToDateRuntime": "已是最新", - "scanningForInstalledAgents": "正在扫描已安装的代理…", + "scanningForInstalledAgents": "正在扫描已安装的智能体…", "searchModels": "搜索模型…", "searchModes": "搜索模式…", "selectAModelShort": "选择模型", - "selectModel": "选择模型...", + "selectModel": "选择模型…", "sessionEnded": "会话已结束。", "sessionEndedWithCode": "会话已结束(退出码 {{code}})。", "sessionUnavailable": "会话已不再可用。", - "setupProfile": "设置配置", + "setupProfile": "设置智能体配置", "signInToAgent": "登录:{{name}}", "startMode": "启动模式", "startModel": "启动模型", "startingSession": "正在启动会话…", "terminal": "终端", "tuiCommandHelp": "在 PATH 上查找的二进制名称。使用 <0>{{token}} 插入模型值。", - "tuiModelHelp": "在代理选择器下拉菜单中显示的配置标签", + "tuiModelHelp": "在智能体选择器下拉菜单中显示的配置标签", "unableToStartUpdate": "无法开始更新:{{error}}", "untitledQuickChat": "未命名快速聊天", "untitledTask": "未命名任务", "upToDate": "已是最新", "updateAgent": "更新 {{name}}", "updatePhaseQueued": "更新已排队…", - "updatePhaseRefreshing": "正在刷新代理能力…", + "updatePhaseRefreshing": "正在刷新智能体能力…", "updatePhaseResolving": "正在检查最新版本…", "updatePhaseUpdating": "正在更新运行时…", "valueOptional": "值(可选)", "valueOptionalLabel": "值(可选)", "valuePlaceholder": "值", "watcherKindGithubIssue": "GitHub 议题", - "watcherKindGithubReview": "GitHub PR Reviews", + "watcherKindGithubReview": "GitHub PR 审查", "watcherKindJira": "Jira", - "watcherKindLinear": "Linear" + "watcherKindLinear": "Linear", + "duplicate": "复制", + "duplicateProfileNamed": "复制 {{name}}", + "duplicateProfileSuccess": "智能体配置已复制", + "duplicateSaveBlocked": "设置仍在保存,请稍后重试。", + "failedToDuplicateProfile": "复制智能体配置失败" } diff --git a/apps/web/src/locales/zh-cn/auth.json b/apps/web/src/locales/zh-cn/auth.json index ad48592d33..440b51b535 100644 --- a/apps/web/src/locales/zh-cn/auth.json +++ b/apps/web/src/locales/zh-cn/auth.json @@ -1,7 +1,7 @@ { "acceptInvite": "接受邀请", "atLeast8Characters": "至少 8 个字符。", - "authenticationIsEnabledForThisDeployment": "此部署已启用身份验证。请在下方创建首个账户; 该账户将成为管理员,并可邀请其他用户。", + "authenticationIsEnabledForThisDeployment": "此部署已启用身份验证。请在下方创建首个账户;该账户将成为管理员,并可邀请其他用户。", "checkingInvite": "正在检查邀请…", "continueWithProvider": "使用 {{provider}} 继续", "createAdminAccount": "创建管理员账户", diff --git a/apps/web/src/locales/zh-cn/automations.json b/apps/web/src/locales/zh-cn/automations.json index 8a5928bc15..7656bfd3a6 100644 --- a/apps/web/src/locales/zh-cn/automations.json +++ b/apps/web/src/locales/zh-cn/automations.json @@ -2,8 +2,8 @@ "aboutSchedulePolling": "关于计划轮询", "addCondition": "添加条件", "addRepository": "添加仓库", - "agentProfileLabel": "代理配置", - "agentProfilePlaceholder": "选择代理", + "agentProfileLabel": "智能体配置", + "agentProfilePlaceholder": "选择智能体", "allRuns": "全部运行记录", "alreadyAdded": "已添加", "anyAutomation": "任意自动化", @@ -15,7 +15,7 @@ "availablePlaceholders": "可用占位符", "availablePlaceholdersColon": "可用占位符:", "baseBranchesLabel": "基础分支(逗号分隔)", - "boardMoveNoticeBody": "此处的自动化过去会在运行时在看板上创建卡片。它们仍会运行,但报告现在归属于自动化本身; 打开即可查看结果。已在看板上的卡片不受影响。", + "boardMoveNoticeBody": "此处的自动化过去会在运行时在看板上创建卡片。它们仍会运行,但报告现在归属于自动化本身;打开即可查看结果。已在看板上的卡片不受影响。", "boardMoveNoticeDismiss": "知道了", "boardMoveNoticeTitle": "自动化运行不再出现在看板上", "branchPatternsLabel": "分支模式(逗号分隔,支持 glob)", @@ -34,7 +34,7 @@ "completed": "已完成", "configurationLabel": "配置", "couldNotLoadWorkflows": "无法加载工作流", - "couldNotRefreshRuns": "无法刷新运行记录; 已从本地缓存恢复", + "couldNotRefreshRuns": "无法刷新运行记录;已从本地缓存恢复", "couldNotTrigger": "无法触发此自动化", "createAnAutomation": "创建自动化", "cronEveryDay": "每天", @@ -45,7 +45,7 @@ "delete": "删除", "deleteAll": "全部删除", "deleteAllRuns": "删除所有运行记录", - "deleteAllRunsDescription": "这将永久删除此自动化的所有运行记录; 包括当前未加载的记录; 以及关联的任务。此操作无法撤销。", + "deleteAllRunsDescription": "这将永久删除此自动化的所有运行记录;包括当前未加载的记录;以及关联的任务。此操作无法撤销。", "deleteAllRunsScoped": "删除所有{{status}}运行记录", "deleteAllRunsScopedDescription": "这将永久删除此视图中显示的所有{{status}}运行记录以及关联的任务。此操作无法撤销。", "deleteAllRunsScopedTitle": "删除所有{{status}}运行记录?", @@ -71,7 +71,7 @@ "instructionsLabel": "说明", "interpretedAsUtcSetTimezone": "按 UTC 解释,请设置时区", "lastRan": "上次运行 {{when}}", - "listDescription": "创建自动触发代理任务的规则。", + "listDescription": "创建自动触发智能体任务的规则。", "loading": "正在加载…", "loadingActivity": "正在加载活动…", "loadingAutomations": "正在加载自动化…", @@ -88,7 +88,7 @@ "noRepositoriesHelp": "未选择仓库时,此自动化会针对工作区的第一个仓库运行。", "noRunsMatchFilters": "没有符合这些筛选条件的运行记录。", "noRunsYet": "还没有运行记录", - "noSchedule": "无计划; 此自动化不会自行运行。", + "noSchedule": "无计划;此自动化不会自行运行。", "noStep": "无步骤", "noTimezoneFound": "未找到时区。", "noTriggers": "无", @@ -100,7 +100,7 @@ "pickAWorkflowFirst": "请先选择工作流", "prMergedDeadConfigWarning": "未选择仓库;此触发器不会触发。请启用“此工作区允许的所有仓库”或至少添加一个仓库。", "prEventOpened": "已打开", - "prEventOpenedTooltip": "检测到新的开放 PR 时触发一次。每个 PR 编号只会去重一次; 同一个 PR 不会再次触发。", + "prEventOpenedTooltip": "检测到新的开放 PR 时触发一次。每个 PR 编号只会去重一次;同一个 PR 不会再次触发。", "prTriggerRepositoryHelp": "PR 触发器始终使用 PR 自己的仓库。", "pushTriggerHelp": "代码推送到匹配的分支时触发", "recentRuns": "最近运行记录", @@ -110,7 +110,7 @@ "removeRepository": "移除仓库", "replyToThisRun": "回复此运行…", "repositoryLabel": "仓库", - "repositoryNone": "无; 不使用仓库", + "repositoryNone": "无;不使用仓库", "repositoryPlaceholderAuto": "自动", "required": "必填", "resizeRuns": "调整运行记录区域大小", @@ -143,7 +143,7 @@ "samplePayloadLabel": "示例请求体(可选)", "scheduleLabel": "计划", "schedulePollingHelp": "由后台进程每 30 秒检查一次。计划会在后端重启后保留。", - "schedulerNote": "计划自动化仅在 kandev 运行时执行。关闭期间错过的触发会在下次检查时运行一次,而不是为每次错过的次数各运行一次。", + "schedulerNote": "计划自动化仅在 Kandev 运行时执行。关闭期间错过的触发会在下次检查时运行一次,而不是为每次错过的次数各运行一次。", "searchConditions": "搜索条件…", "searchTimezones": "搜索时区…", "selectRepositoryPlaceholder": "选择仓库", @@ -153,8 +153,8 @@ "showLess": "显示更少", "showMore": "显示更多", "showRunDetail": "运行详情", - "skipped": "已跳过; {{reason}}", - "skippedAlreadyRunning": "已跳过; 已在运行", + "skipped": "已跳过;{{reason}}", + "skippedAlreadyRunning": "已跳过;已在运行", "starting": "正在启动…", "stateIdle": "空闲", "statePaused": "已暂停", diff --git a/apps/web/src/locales/zh-cn/azuredevops.json b/apps/web/src/locales/zh-cn/azuredevops.json index 4f09d3125b..363ac4077a 100644 --- a/apps/web/src/locales/zh-cn/azuredevops.json +++ b/apps/web/src/locales/zh-cn/azuredevops.json @@ -8,7 +8,7 @@ "addWorkItemQuery": "添加工作项查询", "addWorkItemWatch": "添加工作项监控", "advanced": "高级", - "agentProfileId": "代理配置 ID", + "agentProfileId": "智能体配置 ID", "assignment": "分配", "assignToMe": "分配给我", "azureDevopsFilters": "Azure DevOps 筛选条件", @@ -99,13 +99,13 @@ "linkedItemsCount_one": "{{count}} 个关联项", "linkedItemsCount_other": "{{count}} 个关联项", "linkedKandevTasks": "关联的 Kandev 任务", - "loading": "加载中...", + "loading": "加载中…", "loading2": "加载中…", "loadingBoard": "正在加载看板…", - "loadingFeedback": "正在加载反馈...", + "loadingFeedback": "正在加载反馈…", "loadingLinkedTasks": "正在加载关联任务…", - "loadingProjects": "正在加载项目...", - "loadingResults": "正在加载结果...", + "loadingProjects": "正在加载项目…", + "loadingResults": "正在加载结果…", "loadingWatchers": "正在加载监控…", "loadingWorkItem": "正在加载工作项…", "loadOlderDiscussion": "加载更早的讨论", @@ -166,7 +166,7 @@ "pullRequestSubtitle": "{{repository}} · PR {{id}}", "pullRequestWatches": "拉取请求监控", "pullRequestWatchesDescription": "根据匹配的 Azure DevOps 拉取请求自动创建任务。", - "pullRequestWatchFieldsRequired": "项目、仓库、工作流、步骤、代理和执行器均为必填项。", + "pullRequestWatchFieldsRequired": "项目、仓库、工作流、步骤、智能体和执行器均为必填项。", "queryCreatorAria": "{{kind}} 查询创建者 {{index}}", "queryGroupAria": "{{kind}} 查询分组 {{index}}", "queryLabelAria": "{{kind}} 查询标签 {{index}}", @@ -200,7 +200,7 @@ "savedCredential": "已保存的凭据", "saveFailed": "保存失败:{{error}}", "saveViewDescription": "为此工作区保存当前{{kind}}。", - "saving": "正在保存...", + "saving": "正在保存…", "savingEllipsis": "正在保存…", "selectAProjectToViewIts": "选择一个项目以查看其看板。", "selectProject": "选择项目", @@ -219,7 +219,7 @@ "taskActionsForWorkItem": "工作项 {{id}} 的任务操作", "team": "团队", "testConnection": "测试连接", - "testing": "正在测试...", + "testing": "正在测试…", "top": "上限", "unassign": "取消分配", "unassigned": "未分配", @@ -253,7 +253,7 @@ "workItemUnavailable": "工作项不可用。", "workItemWatches": "工作项监控", "workItemWatchesDescription": "根据匹配的 Azure DevOps 工作项查询自动创建任务。", - "workItemWatchFieldsRequired": "项目、WIQL、仓库、工作流、步骤、代理和执行器均为必填项。", + "workItemWatchFieldsRequired": "项目、WIQL、仓库、工作流、步骤、智能体和执行器均为必填项。", "prStatusAbandoned": "已放弃", "prStatusActive": "活动", "prStatusChangesRequested": "已请求更改", diff --git a/apps/web/src/locales/zh-cn/chat.json b/apps/web/src/locales/zh-cn/chat.json index 871b747006..95811c1a96 100644 --- a/apps/web/src/locales/zh-cn/chat.json +++ b/apps/web/src/locales/zh-cn/chat.json @@ -3,16 +3,16 @@ "addedToChatContext": "{{name}} 已添加到聊天上下文", "addRepository": "添加仓库", "addToChatContext": "添加到聊天上下文", - "agentOptional": "代理(可选)", - "agentProfile": "代理配置", - "agentProfileHelp": "为此对话选择代理。", + "agentOptional": "智能体(可选)", + "agentProfile": "智能体配置", + "agentProfileHelp": "为此对话选择智能体。", "allConversationHistory": "全部对话历史", "allWorkspaceRepositoriesAdded": "工作区中的所有仓库均已添加", "attachmentDeliveryFile": "文件", "attachmentDeliveryMode": "附件传递方式", - "attachmentDeliveryPathDescription": "上传到工作区,以便代理读取或编辑该文件。", + "attachmentDeliveryPathDescription": "上传到工作区,以便智能体读取或编辑该文件。", "attachmentDeliveryPrompt": "提示词", - "attachmentDeliveryPromptDescription": "作为提示词上下文发送,用于视觉理解。代理不会获得文件路径。", + "attachmentDeliveryPromptDescription": "作为提示词上下文发送,用于视觉理解。智能体不会获得文件路径。", "attachmentFallbackName": "附件", "attachmentMessageAlt": "附件 {{index}}", "attachmentPreviewAlt": "预览", @@ -30,7 +30,7 @@ "collapseQueuedMessages": "折叠排队中的消息", "configChatPlaceholder": "询问任何关于你配置的问题…", "configurationChat": "配置聊天", - "configurationChatDescription": "让代理更新 Kandev 设置、工作流、代理配置和 MCP 配置。", + "configurationChatDescription": "让智能体更新 Kandev 设置、工作流、智能体配置和 MCP 配置。", "configurationChatTab": "配置聊天", "delete": "删除", "deleteQuickChat": "删除快速聊天?", @@ -59,7 +59,7 @@ "providerQuotaTitle": "{{provider}} 使用额度已达上限", "newChatTab": "新建聊天", "newQuickChat": "新建快速聊天", - "noAgentsAvailable": "没有可用的代理", + "noAgentsAvailable": "没有可用的智能体", "noRepositoriesAvailableInWorkspace": "此工作区中没有可用仓库", "noRepository": "无仓库", "optional": "(可选)", @@ -80,25 +80,25 @@ "queuedCount_one": "{{count}} 条排队消息", "queuedCount_other": "{{count}} 条排队消息", "queuedMessages": "排队中的消息", - "queueEditAlreadySent": "消息已发送; 代理在你的编辑生效前已取走它。", + "queueEditAlreadySent": "消息已发送;智能体在你的编辑生效前已取走它。", "queueEditSaveFailed": "保存编辑失败。请重试。", "queueFullSuffix": "· 已满", - "quickChatDialogIntro": "与代理开始快速对话,无需创建正式任务。", - "quickChatIntro": "就想法、问题或代码库与代理聊天。", + "quickChatDialogIntro": "与智能体开始快速对话,无需创建正式任务。", + "quickChatIntro": "就想法、问题或代码库与智能体聊天。", "quickChatIntroSecondary": "快速聊天独立于任务看板。", "renameChat": "重命名聊天", "renameSavedOnThisDeviceOnly": "重命名仅保存在此设备上", "renameSyncFailedDescription": "无法将新名称同步到你的其他设备。", "repositories": "仓库", "repositoriesHelp": "添加仓库上下文,以便聚焦特定代码和分支。", - "repositoryContextHelp": "Kandev 会从所选分支创建隔离的 worktree。未提交的本地更改不会包含在内。", + "repositoryContextHelp": "Kandev 会从所选分支创建隔离的工作树。未提交的本地更改不会包含在内。", "repositoryOptional": "仓库(可选)", "resizeQuickChatFromLeft": "从左侧调整快速聊天大小", "resizeQuickChatFromRight": "从右侧调整快速聊天大小", "retryAttachmentUpload": "重试上传附件", "runNext": "运行下一个", "runNextQueuedMessage": "运行下一个排队消息", - "selectAgent": "选择代理", + "selectAgent": "选择智能体", "selectARepository": "选择仓库…", "startChat": "开始聊天", "startChatAction": "开始聊天", @@ -107,19 +107,19 @@ "sendNow": "立即发送", "sendNowQueuedMessage": "立即发送排队消息", "sendNowQueuedMessages": "立即发送全部排队消息", - "sendNowEntryAlreadySent": "消息已发送; 代理在“立即发送”开始前已取走它。", + "sendNowEntryAlreadySent": "消息已发送;智能体在“立即发送”开始前已取走它。", "sendNowQueueEmpty": "队列为空。", "sendNowQueueChanged": "队列在“立即发送”开始前已发生变化。", "sendNowConflict": "另有取消或“立即发送”操作正在进行中。", "sendNowTurnChanged": "活动回合在“立即发送”开始前已变化。", "sendNowAttachmentOverflow": "合并后的附件超出消息限制。", "sendNowReferenceOverflow": "合并后的实体引用超出消息限制。", - "theAssociatedWorktree": "关联的 worktree", + "theAssociatedWorktree": "关联的工作树", "theTaskAndItsData": "任务及其数据", "thisActionCannotBeUndone": "此操作无法撤销。", "turnGroupToolCalls_one": "{{count}} 次工具调用", "turnGroupToolCalls_other": "{{count}} 次工具调用", - "composerSteerPlaceholder": "立即发送; 将送入正在进行的回合", + "composerSteerPlaceholder": "立即发送;将送入正在进行的回合", "unknownError": "未知错误", "useWorkspaceDefault": "使用工作区默认值…", "useWorkspaceDefaultOption": "使用工作区默认值", diff --git a/apps/web/src/locales/zh-cn/common.json b/apps/web/src/locales/zh-cn/common.json index 21d7f38dd7..4c00a8f164 100644 --- a/apps/web/src/locales/zh-cn/common.json +++ b/apps/web/src/locales/zh-cn/common.json @@ -1,15 +1,15 @@ { "aboutContextCompactionCount": "关于推断的压缩次数", - "activeSubagents_one": "{{count}} 个子代理运行中", - "activeSubagents_other": "{{count}} 个子代理运行中", + "activeSubagents_one": "{{count}} 个子智能体运行中", + "activeSubagents_other": "{{count}} 个子智能体运行中", "activeTasks": "进行中的任务", "aDirectLocalExecutorProfileIsRequired": "创建并使用空仓库需要一个直接本地执行器配置。", - "agent": "代理", - "agentDashboard": "代理仪表盘", - "agentRun": "代理运行", - "agentRuns": "代理运行记录", - "agents": "代理", - "agentSkillsAskTheAgentTo": "代理技能(可让代理运行)", + "agent": "智能体", + "agentDashboard": "智能体仪表盘", + "agentRun": "智能体运行", + "agentRuns": "智能体运行记录", + "agents": "智能体", + "agentSkillsAskTheAgentTo": "智能体技能(可让智能体运行)", "allowIndexing": "允许索引", "andMoreFiles_one": "+{{count}} 个", "andMoreFiles_other": "+{{count}} 个", @@ -25,10 +25,10 @@ "back": "返回", "backToTaskOverview": "返回任务概览", "baseBranch": "基础分支", - "bootsASecondaryKandevDevInstance": "启动一个带干净数据库的次要 kandev 开发实例,便于在不影响主实例的情况下验证改动。", + "bootsASecondaryKandevDevInstance": "启动一个使用全新数据库的辅助 Kandev 开发实例,以便在不影响主实例的情况下验证改动。", "bootstrapFailed": "引导失败", - "bootstrapFailedCloseAndReopen": "引导失败; 关闭后重新打开以重试。", - "breadcrumb": "面包屑", + "bootstrapFailedCloseAndReopen": "引导失败;关闭后重新打开以重试。", + "breadcrumb": "路径导航", "browseParentDirectory": "浏览上级目录", "bugFix": "缺陷修复", "cancel": "取消", @@ -37,7 +37,7 @@ "checkingGithubAuthentication": "正在检查 GitHub 身份验证…", "chooseAFolderOrEnterA": "选择一个文件夹,或输入本机上的新路径。", "cliClient": "CLI 客户端", - "cliModeYourPromptWillBe": "CLI 模式; 你的提示词将自动注入到终端", + "cliModeYourPromptWillBe": "CLI 模式;你的提示词将自动注入到终端", "cliPassthrough": "CLI 透传", "close": "关闭", "closeEsc": "关闭(Esc)", @@ -49,16 +49,16 @@ "commandAddPlanPanelKeywords": "计划, 文档, 任务计划, 实现计划, 计划详情, plan", "commandAddTerminalPanel": "添加终端面板", "commandAddTerminalPanelKeywords": "终端, shell, 控制台, 新终端, 打开终端, 命令行, terminal", - "commandAgentsSettingsKeywords": "代理, 代理设置, 代理配置, 已安装代理, claude", + "commandAgentsSettingsKeywords": "智能体, 智能体设置, 智能体配置, 已安装智能体, claude", "commandArchiveTaskKeywords": "归档, 归档任务, 归档当前任务, 关闭任务, 完成任务, 收起", "commandCancelTurn": "取消本轮", - "commandCancelTurnKeywords": "取消, 停止, 轮次, 取消代理, 停止代理, 中断代理, cancel", + "commandCancelTurnKeywords": "取消, 停止, 轮次, 取消智能体, 停止智能体, 中断智能体, cancel", "commandCommitChanges": "提交更改", "commandCommitChangesKeywords": "提交, git, 保存更改, git commit, commit", "commandConfigChatKeywords": "配置聊天, 配置模式, 配置 kandev, 工作流配置, mcp 配置", "commandCreateFile": "创建文件", "commandCreateFileKeywords": "创建, 新建, 文件, 添加, file", - "commandCreateFilePlaceholder": "相对于工作区根目录的文件路径...", + "commandCreateFilePlaceholder": "相对于工作区根目录的文件路径…", "commandCreateNewTask": "创建新任务", "commandCreateNewTaskKeywords": "新建, 创建, 任务, 添加, task", "commandCreatePr": "创建 PR", @@ -77,7 +77,7 @@ "commandGoToStats": "前往统计", "commandGoToStatsKeywords": "统计, 数据分析, 分析, 指标", "commandGroupActions": "操作", - "commandGroupAgent": "代理", + "commandGroupAgent": "智能体", "commandGroupCommands": "命令", "commandGroupGit": "Git", "commandGroupNavigation": "导航", @@ -88,10 +88,10 @@ "commandGroupView": "视图", "commandGroupWorkspace": "工作区", "commandMergeKeywords": "合并, git, 分支, merge", - "commandNewAgent": "新建代理", - "commandNewAgentKeywords": "新建, 代理, 会话, 启动代理, 新建会话, agent", - "commandOpenRecentTaskSwitcher": "打开最近任务切换器", - "commandOpenRecentTaskSwitcherKeywords": "最近, 任务, 切换器, 历史, 最近任务, 切换任务, 切换最近任务, recent", + "commandNewAgent": "新建智能体", + "commandNewAgentKeywords": "新建, 智能体, 会话, 启动智能体, 新建会话, agent", + "commandOpenRecentTaskSwitcher": "打开最近任务切换面板", + "commandOpenRecentTaskSwitcherKeywords": "最近, 任务, 切换面板, 历史, 最近任务, 切换任务, 切换最近任务, recent", "commandPaletteMode": "命令面板模式", "commandPreviewAddTerminalPanel": "添加终端面板", "commandPreviewCommitChanges": "提交更改", @@ -102,7 +102,7 @@ "commandPullKeywords": "拉取, git, 拉取更改, 下载更改, pull", "commandPushKeywords": "推送, git, 推送更改, 推送到远程, 上传更改, push", "commandQuickChat": "快速聊天", - "commandQuickChatKeywords": "快速聊天, 新建快速聊天, 快速提问, 询问代理", + "commandQuickChatKeywords": "快速聊天, 新建快速聊天, 快速提问, 询问智能体", "commandRebaseKeywords": "变基, git, 分支, rebase", "commandSwitchToDarkMode": "切换到深色模式", "commandSwitchToKanbanView": "切换到看板视图", @@ -117,8 +117,8 @@ "commitsAndPushesToTheCurrent": "提交并推送到当前分支。", "commitsPushesAndOpensAPull": "提交、推送并创建拉取请求。", "configurationChat": "配置聊天", - "configureAUtilityAgentToEnhance": "在设置中配置实用代理以启用 AI 增强", - "configureExecutorsInSettingsToControl": "在设置中配置执行器,以控制代理的运行位置。", + "configureAUtilityAgentToEnhance": "在设置中配置辅助智能体以启用 AI 增强", + "configureExecutorsInSettingsToControl": "在设置中配置执行器,以控制智能体的运行位置。", "configureGithub": "配置 GitHub", "confirm": "确认", "contents": "内容", @@ -141,20 +141,20 @@ "default": "默认", "defaultBadge": "默认", "deleteSession": "删除会话", - "describeABugYouHitOr": "描述你遇到的缺陷或想要的功能,我们将在你自己的代理上创建任务,并在 kandev 代码库中实现。", + "describeABugYouHitOr": "描述你遇到的缺陷或想要的功能,我们会在你自己的智能体上创建任务,并在 Kandev 代码库中实现。", "destination": "目标位置", "discardAndContinue": "丢弃并继续", "discardLocalChanges": "丢弃本地更改?", "discardLocalChangesAtPathDescription": "启动此任务将永久丢弃本地克隆 {{repoPath}} 中未提交的更改。继续前请备份需要保留的内容。", "discardLocalChangesDescription": "启动此任务将永久丢弃本地克隆中未提交的更改。继续前请备份需要保留的内容。", - "discoveringAgents": "正在发现代理…", + "discoveringAgents": "正在发现智能体…", "doNotShowThisAgain": "不再显示", "edit": "编辑", "editTask": "编辑任务", "emptyRepositoriesRunDirectlySwitch": "空仓库直接在本机运行。此任务将切换到“{{profile}}”。", "enhancePromptWithAi": "用 AI 增强提示词", - "enterAValue": "输入值...", - "enterValue": "输入值...", + "enterAValue": "输入值…", + "enterValue": "输入值…", "error": "错误", "executor": "执行器", "executors": "执行器", @@ -190,7 +190,7 @@ "gitOpRebase": "变基", "gitOperationCompleted": "{{operation}}已完成", "gitOperationFailed": "{{operation}}失败", - "gitOperationRunning": "{{operation}}...", + "gitOperationRunning": "{{operation}}…", "gitOperationScoped": "{{operation}}({{repo}})", "gitOperationSucceeded": "{{operation}}成功", "gitOpRevertCommit": "还原提交", @@ -208,18 +208,18 @@ "createImproveWorkspaceCheckbox": "创建专用的 {{workspace}} 工作区,使改进任务与日常工作隔离", "improveWorkspaceDoesNotExistYet": "专用的 Improve Kandev 工作区尚不存在。改进任务会放在独立工作区中,与日常工作隔离。", "continue": "继续", - "improveKandevBugPlaceholder": "例如:打开看板时,在宽度小于 1200px 的屏幕上,列标题文字会与任务数量徽章重叠...", - "improveKandevFeaturePlaceholder": "例如:添加键盘快捷键,以便从任务详情视图将任务标记为完成,并在任务操作菜单中显示该快捷键...", - "improveKandevIssuePlaceholder": "描述你想发布的问题或请求。代理会按匹配的 GitHub 议题模板询问所需细节...", - "includeRecentBackendAndBrowserLogs": "将最近的后端与浏览器日志作为上下文提供给代理", + "improveKandevBugPlaceholder": "例如:打开看板时,在宽度小于 1200px 的屏幕上,列标题文字会与任务数量徽章重叠…", + "improveKandevFeaturePlaceholder": "例如:添加键盘快捷键,以便从任务详情视图将任务标记为完成,并在任务操作菜单中显示该快捷键…", + "improveKandevIssuePlaceholder": "描述你想发布的问题或请求。智能体会按匹配的 GitHub 议题模板询问所需细节…", + "includeRecentBackendAndBrowserLogs": "将最近的后端与浏览器日志作为上下文提供给智能体", "installed": "已安装", "integrations": "集成", "interruptedByRestart": "因重启而中断", "justNow": "刚刚", - "kandevAllowsEveryAgentPermissionRequest": "Kandev 会批准代理的每一项权限请求,而不会向你提示。", + "kandevAllowsEveryAgentPermissionRequest": "Kandev 会批准智能体的每一项权限请求,而不会向你提示。", "kandevCouldNotLoad": "Kandev 无法加载。", "kandevIsOpenSourceAndYou": "Kandev 是开源的,你可以一起把它做得更好。", - "kandevKeepsASmallInMemory": "Kandev 会在内存中保留一小段最近后端日志与浏览器控制台事件的环形缓冲区。启用后,这些日志会写入本机临时文件夹,文件路径会追加到任务描述中,便于代理在排查时读取。", + "kandevKeepsASmallInMemory": "Kandev 会在内存中保留一小段最近后端日志与浏览器控制台事件的环形缓冲区。启用后,这些日志会写入本机临时文件夹,文件路径会追加到任务描述中,便于智能体在排查时读取。", "lastRefreshFailed": "上次刷新失败:{{error}}", "latestReleaseNotes": "最新发行说明", "loading": "加载中…", @@ -230,7 +230,7 @@ "loadingRoute": "正在加载 {{routeName}}…", "loadingRoutine": "正在加载例程…", "loadingTask": "正在加载任务…", - "loadingWorkflowTemplates": "正在加载工作流模板...", + "loadingWorkflowTemplates": "正在加载工作流模板…", "mAgo": "{{diffMin}}分钟前", "matchCase": "区分大小写", "menu": "菜单", @@ -240,7 +240,7 @@ "multiRepoUnavailableRemoteDocker": "在 Remote Docker 支持创建任务实例之前,多仓库任务不可用。", "multiRepoUnsupportedExecutor": "此执行器不支持多仓库任务。", "navigate": "导航", - "navigateBetweenPagesSearchTasksTrigger": "在页面间导航、搜索任务、触发 git 操作并管理面板; 全部无需离开键盘。上下文相关的命令会根据当前页面出现。", + "navigateBetweenPagesSearchTasksTrigger": "在页面间导航、搜索任务、触发 git 操作并管理面板;全部无需离开键盘。上下文相关的命令会根据当前页面出现。", "newFolder": "新建文件夹", "newFolderName": "新文件夹名称", "newReleases_one": "{{count}} 个新版本", @@ -252,35 +252,35 @@ "noCommandsFound": "未找到命令。", "noContentMatchesFound": "未找到匹配内容。", "noFilesFound": "未找到文件。", - "noFoldersHerePickThisOne": "此处没有文件夹; 选择此项或返回上级", + "noFoldersHerePickThisOne": "此处没有文件夹;选择此项或返回上级", "noResults": "无结果。", - "notificationClarificationBody": "代理提出了一个问题。", - "notificationClarificationTitle": "代理需要您的回答", + "notificationClarificationBody": "智能体提出了一个问题。", + "notificationClarificationTitle": "智能体需要您的回答", "notificationInboxItemBody": "有新条目需要您处理。", "notificationInboxItemTitle": "新的收件箱条目", - "notificationTurnFinishedBody": "代理完成了一轮。", - "notificationTurnFinishedTitle": "代理本轮已完成", + "notificationTurnFinishedBody": "智能体完成了一轮。", + "notificationTurnFinishedTitle": "智能体本轮已完成", "notInstalled": "未安装", "notYetInstalled": "尚未安装", "officeIsNotEnabledForThis": "此运行时未启用办公室。", "officeRouteNotPortedYet": "此办公室路由由 SPA 外壳处理,但其专用客户端页面仍在迁移中:<1>{{pathname}}", - "onboardingAgentsAutoApproveWarning": "<0>注意:默认代理配置启用了自动批准(YOLO 模式)。", - "onboardingAgentsHelp": "展开代理以配置其模型与权限。继续时会保存更改。之后也可在“设置 > 代理”中添加自定义 TUI 代理。", - "onboardingStepAgentsDescription": "管理已发现的代理并安装新代理。", - "onboardingStepAgentsTitle": "AI 代理", + "onboardingAgentsAutoApproveWarning": "<0>注意:默认智能体配置启用了自动批准(YOLO 模式)。", + "onboardingAgentsHelp": "展开智能体以配置其模型与权限。继续时会保存更改。之后也可在“设置 > 智能体”中添加自定义 TUI 智能体。", + "onboardingStepAgentsDescription": "管理已发现的智能体并安装新智能体。", + "onboardingStepAgentsTitle": "AI 智能体", "onboardingStepCommandPanelDescription": "通过键盘快捷键随时快速访问操作。", "onboardingStepCommandPanelTitle": "命令面板", - "onboardingStepExecutorsDescription": "代理可在不同执行器环境中运行; 本地、容器或远程。", + "onboardingStepExecutorsDescription": "智能体可在不同执行器环境中运行;本地、容器或远程。", "onboardingStepExecutorsTitle": "执行器", "onboardingStepWorkflowsDescription": "工作流定义任务的步骤与自动化。", - "onboardingStepWorkflowsTitle": "代理工作流", + "onboardingStepWorkflowsTitle": "智能体工作流", "open": "打开", "openFullPage": "打开完整页面", "openNavigationMenu": "打开导航菜单", "openNavigationMenuWithConnectionIssue": "{{description}} 打开导航菜单", "openingLastTask": "正在打开上次任务…", "openIssue": "打开议题", - "optionalTheRepositoryTheAgentWorks": "可选; 代理工作的仓库。", + "optionalTheRepositoryTheAgentWorks": "可选;智能体工作的仓库。", "panels": "面板", "parentDirectory": "上级目录", "pending": "待处理", @@ -291,8 +291,8 @@ "pluginPanelUnavailable": "此面板已不可用。", "plugins": "插件", "prDetails": "PR 详情", - "preparingKandevRepository": "正在准备 kandev 仓库…", - "preparingKandevRepositoryInBackground": "正在后台准备 kandev 仓库。填写详情后即可提交。", + "preparingKandevRepository": "正在准备 Kandev 仓库…", + "preparingKandevRepositoryInBackground": "正在后台准备 Kandev 仓库。填写详情后即可提交。", "presetIconBug": "缺陷", "presetIconCheck": "勾选", "presetIconCode": "代码", @@ -311,7 +311,7 @@ "reference": "引用", "refreshAriaLabel": "刷新 {{label}}", "refreshBranchesGitFetch": "刷新分支(git fetch)", - "refreshingLabel": "正在刷新 {{label}}...", + "refreshingLabel": "正在刷新 {{label}}…", "refreshLabelLastFetched": "刷新 {{label}}(上次获取 {{time}})", "regularExpression": "正则表达式", "releasedOn": "发布于 {{date}}", @@ -340,10 +340,10 @@ "runsFormatTypecheckTestAndLint": "在 monorepo 中运行格式化、类型检查、测试和 lint。", "runtimeDocker": "Docker", "runtimeDockerDescription": "容器化执行,实现完全隔离与可复现。", - "runtimeGitWorktree": "Git Worktree", - "runtimeGitWorktreeDescription": "在 worktree 根目录下隔离的分支环境,便于并行工作。", + "runtimeGitWorktree": "Git 工作树", + "runtimeGitWorktreeDescription": "在工作树根目录下隔离的分支环境,便于并行工作。", "runtimeLocal": "本地", - "runtimeLocalDescription": "直接在本机运行代理,可完整访问本地文件系统。", + "runtimeLocalDescription": "直接在本机运行智能体,可完整访问本地文件系统。", "runtimeSprites": "Sprites(远程 sprites.dev)", "runtimeSpritesDescription": "面向任意代码的硬件隔离执行环境。", "save": "保存", @@ -355,8 +355,8 @@ "script": "脚本", "searchEllipsis": "搜索…", "searchFailedEditTheQueryOr": "搜索失败。请修改查询或重新打开搜索后重试。", - "searchForFiles": "搜索文件...", - "searchForTasks": "搜索任务...", + "searchForFiles": "搜索文件…", + "searchForTasks": "搜索任务…", "searchingTaskWorkspace": "正在搜索任务工作区…", "searchQueriesAreLimitedTo200": "搜索查询限制为 200 个字符。", "searchTaskContents": "搜索任务内容…", @@ -371,13 +371,13 @@ "sessionStateWaitingForInput": "等待输入", "settings": "设置", "shell": "命令解释器", - "shellCommandPlusSlashCommandSkills": "可在次要实例中运行的 Shell 命令,以及工作流期间可让代理运行的斜杠命令 <2>skills。", + "shellCommandPlusSlashCommandSkills": "可在次要实例中运行的 Shell 命令,以及工作流期间可让智能体运行的斜杠命令 <2>skills。", "showAdvancedOptions": "显示高级选项", "showCode": "显示代码", "showDiagram": "显示图表", "showingRange_one": "显示第 {{from}}–{{to}} 条,共 {{count}} 条结果", "showingRange_other": "显示第 {{from}}–{{to}} 条,共 {{count}} 条结果", - "showMoreBreadcrumbs": "显示更多面包屑", + "showMoreBreadcrumbs": "显示更多路径层级", "skip": "跳过", "stagesAndCommitsChangesUsingConventional": "暂存并用 Conventional Commits 提交更改。", "status": "状态", @@ -404,17 +404,17 @@ "taskStateWaitingForInput": "等待输入", "taskUnavailable": "任务不可用", "taskUnavailableDescription": "无法加载此任务。它可能已被删除,或者你没有访问权限。", - "theAgentForksKandevToYourAccount": "代理会将 <1>{{repo}} fork 到你的 GitHub 账户,并从你的 fork 打开 PR,贡献记在你名下", - "theBaseBranchTheAgentStarts": "代理起始的基础分支。", + "theAgentForksKandevToYourAccount": "智能体会将 <1>{{repo}} fork 到你的 GitHub 账户,并从你的 fork 打开 PR,贡献记在你名下", + "theBaseBranchTheAgentStarts": "智能体起始的基础分支。", "theFinalStepOpensAPullRequest": "此工作流的最后一步会打开拉取请求,需要 <1>{{binary}} CLI 已通过身份验证。{{message}}", "thisEmptyRepositoryWillRunWith": "此空仓库将在本机以“{{profile}}”运行。", "thisGithubAccountCannotForkKdlbs": "此 GitHub 账户无法 fork kdlbs/kandev。", "thisPageCouldNotLoad": "此页面无法加载。", - "thisWorkflowWillOnlyCreateA": "此工作流只会根据仓库模板创建 GitHub 议题。代理会询问缺失细节并请求发布批准;它不会实现改动或打开拉取请求。", + "thisWorkflowWillOnlyCreateA": "此工作流只会根据仓库模板创建 GitHub 议题。智能体会询问缺失细节并请求发布批准;它不会实现改动或打开拉取请求。", "title": "标题", "toastRegionLabel": "通知", - "typeACommand": "输入命令...", - "typeToSearchFiles": "输入以搜索文件...", + "typeACommand": "输入命令…", + "typeToSearchFiles": "输入以搜索文件…", "typeToSearchTaskContents": "输入以搜索任务内容…", "unavailable": "不可用", "unknown": "未知", @@ -422,7 +422,7 @@ "unknownPanel": "未知面板:{{component}}", "unsavedChanges": "未保存的更改", "untitledTask": "未命名任务", - "usefulCommandsAgentSkills": "实用命令与代理技能", + "usefulCommandsAgentSkills": "实用命令与智能体技能", "useScratchInstead": "改用临时工作区", "useStepDefaultOption": "(使用步骤默认值)", "watcherLoadingBranchesPlaceholder": "加载中…", @@ -433,15 +433,15 @@ "waitsForCiAndAutomatedReviews": "等待 CI 与自动审阅,然后修复失败并处理评论。", "walkthrough": "导览", "whatSNew": "新功能", - "whenItsDoneTheAgentOpensAPr": "完成后,代理会向 <2>{{repo}} 打开拉取请求供维护者审阅,节省他们的时间,并把改进带给所有人。", + "whenItsDoneTheAgentOpensAPr": "完成后,智能体会向 <2>{{repo}} 打开拉取请求供维护者审阅,节省他们的时间,并把改进带给所有人。", "workflow": "工作流", - "workflowsControlTheStepsAutomationAnd": "工作流控制任务的步骤、自动化与代理行为。可在设置中添加更多工作流。", + "workflowsControlTheStepsAutomationAnd": "工作流控制任务的步骤、自动化与智能体行为。可在设置中添加更多工作流。", "workspace": "工作区", "workspaces": "工作区", "you": "您", "youCanUseTheNavigationOr": "你可以使用导航或重新加载以重试。", - "yourAgentImplementsItInThe": "你的代理在 kandev 仓库中实现它,并附带测试", - "youVerifyAndTestTheChange": "你在第二个 kandev 实例中验证并测试该改动", + "yourAgentImplementsItInThe": "你的智能体在 Kandev 仓库中实现它,并附带测试", + "youVerifyAndTestTheChange": "你在第二个 Kandev 实例中验证并测试该改动", "failedToRenderDiagram": "图表渲染失败", "demoAgentMessagesDescription": "目视检查代理消息规范化。每张卡片同时显示渲染结果和原始 JSON。", "demoAgentMessagesQa": "代理消息质量检查", diff --git a/apps/web/src/locales/zh-cn/configChat.json b/apps/web/src/locales/zh-cn/configChat.json index de8fa8c8ab..64088b6b51 100644 --- a/apps/web/src/locales/zh-cn/configChat.json +++ b/apps/web/src/locales/zh-cn/configChat.json @@ -1,20 +1,20 @@ { - "agentProfileHeading": "配置代理配置文件", - "agentProfileHelp": "选择可访问配置工具的代理。这将成为工作区默认值。", + "agentProfileHeading": "配置聊天智能体", + "agentProfileHelp": "选择可访问配置工具的智能体。这将成为工作区默认值。", "closePanel": "关闭配置聊天", - "dialogDescription": "让代理管理你的工作流、代理配置与 MCP 配置。", - "noAgentProfiles": "暂无可用的代理配置。请先在代理设置中创建一个。", + "dialogDescription": "让智能体管理你的工作流、智能体配置与 MCP 配置。", + "noAgentProfiles": "暂无可用的智能体配置。请先在智能体设置中创建一个。", "openInQuickChat": "在快速聊天中打开", - "profileUnavailable": "所选代理配置尚不可用。请稍后再试。", + "profileUnavailable": "所选智能体配置尚不可用。请稍后再试。", "promptHeading": "你想配置什么?", "promptPlaceholder": "询问任何与配置相关的问题…", "startChat": "开始聊天", "startChatAria": "开始配置聊天", "startingChat": "正在开始聊天…", "suggestionAddReviewStep": "为我的工作流添加一个“代码审阅”步骤", - "suggestionCreateProfile": "创建一个启用自动批准的新代理配置", + "suggestionCreateProfile": "创建一个启用自动批准的新智能体配置", "suggestionShowWorkflow": "显示当前工作流配置", - "suggestionUpdateMcp": "更新默认代理配置的 MCP 服务器", + "suggestionUpdateMcp": "更新默认智能体配置的 MCP 服务器", "tagline": "用自然语言配置 Kandev", "tryAsking": "试着问", "unknownError": "未知错误" diff --git a/apps/web/src/locales/zh-cn/diff.json b/apps/web/src/locales/zh-cn/diff.json index 993bef83d9..b88fb0fd07 100644 --- a/apps/web/src/locales/zh-cn/diff.json +++ b/apps/web/src/locales/zh-cn/diff.json @@ -27,20 +27,20 @@ "revertChanges": "还原更改", "run": "运行", "runComment": "运行评论", - "saveAndSendToAgent": "保存并发送给代理({{modKey}}+Shift+Enter)", + "saveAndSendToAgent": "保存并发送给智能体({{modKey}}+Shift+Enter)", "saveCommentForReview": "保存评论以供审阅({{modKey}}+Enter)", - "sendToAgent": "发送给代理", + "sendToAgent": "发送给智能体", "stale": "已过期", "staleFindingsForThisFile_one": "此文件有 {{count}} 条过期发现", "staleFindingsForThisFile_other": "此文件有 {{count}} 条过期发现", "stepProgress": "步骤 {{current}} / {{total}} · {{lineLabel}}", - "suggestedChangeNotAppliedAutomatically": "建议的更改; 不会自动应用", + "suggestedChangeNotAppliedAutomatically": "建议的更改;不会自动应用", "switchToSplitView": "切换到分栏视图", "switchToUnifiedView": "切换到统一视图", "theDiffChangedAfterThisReview": "此审阅之后 diff 已变化,该发现所描述的代码已不在其中。", "theDiffChangedAfterThisReviewRelocated": "此审阅之后 diff 已变化;该发现已重新锚定到其描述的代码。", "toggleWordWrap": "切换自动换行", - "unableToRenderDiffForThis": "无法渲染此文件的 diff。缓存的 diff 可能与工作区不同步; 请刷新后重试。", + "unableToRenderDiffForThis": "无法渲染此文件的 diff。缓存的 diff 可能与工作区不同步;请刷新后重试。", "undo": "撤销", "update": "更新", "walkthrough": "导览", diff --git a/apps/web/src/locales/zh-cn/editors.json b/apps/web/src/locales/zh-cn/editors.json index 7c68843319..6f026d64a7 100644 --- a/apps/web/src/locales/zh-cn/editors.json +++ b/apps/web/src/locales/zh-cn/editors.json @@ -1,6 +1,6 @@ { "apply": "应用", - "applyLatestAgentChangesToFile": "将代理的最新更改应用到此文件", + "applyLatestAgentChangesToFile": "将智能体的最新更改应用到此文件", "boldCmdB": "粗体(Cmd+B)", "comment": "评论", "commentAdded": "评论已添加", @@ -8,8 +8,8 @@ "commentCount_one": "{{count}} 条评论", "commentCount_other": "{{count}} 条评论", "commentDeleted": "评论已删除", - "commentMarkerTitle_one": "{{count}} 条评论; 点击查看", - "commentMarkerTitle_other": "{{count}} 条评论; 点击查看", + "commentMarkerTitle_one": "{{count}} 条评论;点击查看", + "commentMarkerTitle_other": "{{count}} 条评论;点击查看", "commentSent": "评论已发送", "commentUpdated": "评论已更新", "commentWillBeSentWithNextMessage": "你的评论将随下一条消息发送。", @@ -42,18 +42,18 @@ "noDiffAvailable": "无可用 diff", "noEditorsConfigured": "未配置编辑器", "openFolder": "打开文件夹", - "openTaskSessionBeforeSending": "发送给代理前请先打开任务会话。", + "openTaskSessionBeforeSending": "发送给智能体前请先打开任务会话。", "openWith": "打开方式…", "pasteLink": "粘贴链接…", "pleaseTryAgain": "请重试。", "previewMarkdown": "预览 Markdown", - "queuedForTheAgent": "已排队等待代理。", + "queuedForTheAgent": "已排队等待智能体。", "reload": "重新加载", "revertAllChanges": "还原全部更改", "revertChanges": "还原更改", "saveFailed": "保存失败", "saving": "正在保存…", - "sentToTheAgent": "已发送给代理。", + "sentToTheAgent": "已发送给智能体。", "showAllLines": "显示全部行", "showDiffIndicators": "显示 diff 指示器", "slashBlockquote": "引用", diff --git a/apps/web/src/locales/zh-cn/executors.json b/apps/web/src/locales/zh-cn/executors.json index bc28db0ffd..8becedc3b9 100644 --- a/apps/web/src/locales/zh-cn/executors.json +++ b/apps/web/src/locales/zh-cn/executors.json @@ -5,13 +5,13 @@ "addDockerfileContentBeforeCreating": "创建配置前请先添加 Dockerfile 内容。", "addRule": "添加规则", "advanced": "高级", - "agent": "代理", + "agent": "智能体", "allow": "允许", "allowlistGithubPlaywright": "白名单 GitHub + Playwright", "apiKey": "API 密钥", "areYouSureThisActionCannot": "确定吗?此操作无法撤销。", "areYouSureYouWantTo": "确定要删除此配置吗?此操作无法撤销。", - "authFilesNotFoundOnThisMachine": "{{files}}; 本机未找到这些文件", + "authFilesNotFoundOnThisMachine": "{{files}};本机未找到这些文件", "backToExecutor": "返回执行器", "backToExecutors": "返回执行器", "buildFailedWithMessage": "构建失败:{{message}}", @@ -22,7 +22,7 @@ "checking": "正在检查…", "chooseAnExecutorTypeToRun": "选择一种执行器类型,以在你的基础设施上运行环境。", "cleanupScript": "清理脚本", - "configureAuthenticationForToolsAndAgents": "为远程环境中的工具和代理配置身份验证。", + "configureAuthenticationForToolsAndAgents": "为远程环境中的工具和智能体配置身份验证。", "configured": "已配置", "confirmDelete": "确认删除", "connected": "已连接", @@ -52,12 +52,12 @@ "deny": "拒绝", "descriptionCustom": "自定义执行器。", "descriptionLocalDocker": "在本机运行 Docker 容器。", - "descriptionLocalPc": "直接在仓库文件夹中运行代理。", + "descriptionLocalPc": "直接在仓库文件夹中运行智能体。", "descriptionRemoteDocker": "连接到远程 Docker 主机。", - "descriptionSprites": "在 Sprites.dev 云沙箱中运行代理。", - "descriptionSsh": "通过 SSH 在受信任的 Linux amd64 或 macOS 主机上运行代理。", + "descriptionSprites": "在 Sprites.dev 云沙箱中运行智能体。", + "descriptionSsh": "通过 SSH 在受信任的 Linux amd64 或 macOS 主机上运行智能体。", "descriptionSshCreate": "通过 SSH 连接到远程主机并在其上运行 agentctl。", - "descriptionWorktree": "创建 git worktree,用于隔离的代理会话。", + "descriptionWorktree": "创建 Git 工作树,用于隔离智能体会话。", "differentConfigurationsForThisExecutorEach": "此执行器的不同配置。每个配置可拥有自己的准备脚本、环境变量和设置。", "disabled": "已禁用", "disconnected": "已断开", @@ -95,12 +95,12 @@ "gitUserName": "Git 用户名", "goToExecutors": "前往执行器", "host": "主机", - "hubDescription": "执行器配置定义代理如何以及在何处运行。每个配置会设置执行环境的脚本、环境变量和 MCP 策略。", + "hubDescription": "执行器配置定义智能体如何以及在何处运行。每个配置会设置执行环境的脚本、环境变量和 MCP 策略。", "hubDescriptionDocker": "在本机运行 Docker 容器。", - "hubDescriptionLocal": "直接在仓库文件夹中运行代理。", - "hubDescriptionSprites": "在 Sprites.dev 云沙箱中运行代理。", + "hubDescriptionLocal": "直接在仓库文件夹中运行智能体。", + "hubDescriptionSprites": "在 Sprites.dev 云沙箱中运行智能体。", "hubDescriptionSsh": "通过 SSH 连接远程主机并在其上运行 agentctl。", - "hubDescriptionWorktree": "创建 git worktree,用于隔离的代理会话。", + "hubDescriptionWorktree": "创建 Git 工作树,用于隔离智能体会话。", "image": "镜像", "imageTag": "镜像标签", "include": "包含", @@ -130,7 +130,7 @@ "noEnvironmentVariablesConfigured": "未配置环境变量。", "noEnvironmentVariablesConfiguredAddOne": "未配置环境变量。请在下方添加。", "noNetworkPolicyRulesConfigured": "未配置网络策略规则。", - "noProfilesConfigured": "尚未配置任何配置文件。", + "noProfilesConfigured": "尚未创建任何执行器配置。", "noResponseBody": "无响应正文", "noTransferableCredentialsFound": "未找到可传输的凭据。", "none": "无", @@ -147,8 +147,8 @@ "port": "端口", "prepareScript": "准备脚本", "prepareScriptBadge": "准备脚本", - "prepareScriptDescriptionLocal": "在代理启动前于主机上运行。", - "prepareScriptDescriptionRemote": "在代理启动前于执行环境内运行。输入 {{trigger}} 查看可用占位符。", + "prepareScriptDescriptionLocal": "在智能体启动前于主机上运行。", + "prepareScriptDescriptionRemote": "在智能体启动前于执行环境内运行。输入 {{trigger}} 查看可用占位符。", "profileDetails": "配置详情", "profileForExecutor": "{{name}} 的配置", "profileNameIsRequired": "配置名称为必填项。", @@ -171,7 +171,7 @@ "removeThisExecutor": "移除此执行器", "repositoriesWillBeMountedAsVolumes": "仓库将在运行时以卷形式挂载。", "rewriteLocalhostForDocker": "为 Docker 重写 localhost", - "runsAfterTheAgentSessionEnds": "在代理会话结束后运行,用于清理任务。", + "runsAfterTheAgentSessionEnds": "在智能体会话结束后运行,用于清理任务。", "save": "保存", "secret": "密钥", "selectASecret": "选择密钥…", @@ -185,19 +185,19 @@ "spritesTokenIsRequired": "Sprites token 为必填项。", "sshActiveSessions": "活动会话", "sshActiveSessionsDescription": "当前在此 SSH 主机上运行的会话。每 90 秒刷新一次。", - "sshAvailableAgents": "此主机上的可用代理", - "sshAvailableAgentsDescription": "在所选登录 shell 下,探测远程 {{pathVar}} 中每个已启用的代理。代理缺失时,可复制安装提示并在远程主机上运行。", + "sshAvailableAgents": "此主机上的可用智能体", + "sshAvailableAgentsDescription": "在所选登录 shell 下,探测远程 {{pathVar}} 中每个已启用的智能体。智能体缺失时,可复制安装提示并在远程主机上运行。", "sshBinary": "二进制文件", "sshConfirmRunningSessions_one": "此执行器有 {{count}} 个正在运行的会话。它们会继续在当前主机上运行。仅保存后新启动的会话会使用更新后的配置。是否继续?", "sshConfirmRunningSessions_other": "此执行器有 {{count}} 个正在运行的会话。它们会继续在当前主机上运行。仅保存后新启动的会话会使用更新后的配置。是否继续?", - "sshConnectionDescription": "在可通过 SSH 访问的 Linux amd64 或 macOS 主机上运行代理。", + "sshConnectionDescription": "在可通过 SSH 访问的 Linux amd64 或 macOS 主机上运行智能体。", "sshConnectionTestFailed": "连接测试失败", "sshConnectionTestPassed": "连接测试通过", "sshCopyInstallHint": "复制安装提示", "sshCreateDescription": "连接到远程 Linux amd64 或 macOS 主机并在其上运行 agentctl。", "sshExecutorPageDescription": "编辑连接设置或重新信任主机。现有会话会保留先前配置的快照。", "sshFailedToLoadSessions": "加载会话失败", - "sshFailedToProbeAgents": "探测代理失败", + "sshFailedToProbeAgents": "探测智能体失败", "sshFailedToReachBackend": "无法连接后端", "sshFailedToSaveExecutor": "保存执行器失败", "sshFailedToSaveShell": "保存 shell 失败", @@ -218,12 +218,12 @@ "sshMissing": "缺失", "sshNamePlaceholder": "我的 VPS", "sshNoActiveSessions": "暂无活动会话。", - "sshNoEnabledAgents": "没有可探测的已启用代理。", + "sshNoEnabledAgents": "没有可探测的已启用智能体。", "sshNoHintAvailable": "无可用提示", "sshPinnedFingerprint": "已固定指纹:", - "sshProbeAgents": "探测代理", + "sshProbeAgents": "探测智能体", "sshProbeError": "探测错误", - "sshProbeHint": "点击“{{button}}”检查远程主机上已安装哪些代理。", + "sshProbeHint": "点击“{{button}}”检查远程主机上已安装哪些智能体。", "sshProxyJumpHint": "仅支持单跳堡垒。不支持链式跳转。", "sshProxyJumpLabel": "ProxyJump(可选)", "sshRemotePort": "远程端口", @@ -247,7 +247,7 @@ "tokenConfiguredButUnableToConnect": "已配置 token,但无法连接。", "typeLocal": "本地", "typeTokenToConfirmDeletion": "输入“{{token}}”以确认删除。此操作无法撤销。", - "typeWorktree": "Worktree", + "typeWorktree": "工作树", "unknownError": "未知错误", "unknownExecutorType": "未知执行器类型", "untrackedTask": "未跟踪", diff --git a/apps/web/src/locales/zh-cn/github.json b/apps/web/src/locales/zh-cn/github.json index 19e94853aa..b90ad403d8 100644 --- a/apps/web/src/locales/zh-cn/github.json +++ b/apps/web/src/locales/zh-cn/github.json @@ -21,7 +21,7 @@ "addWatch": "添加监控", "addWholeThreadToChatContext": "将整个讨论串添加到对话上下文", "addedToChatContext": "已添加到对话上下文", - "agentProfile": "代理配置", + "agentProfile": "智能体配置", "allRepos": "所有仓库", "allRepositories": "所有仓库", "allRepositoriesAllowedByThisWorkspace": "此工作区允许的所有仓库", @@ -46,7 +46,7 @@ "autoFixCiAndAddressComments": "自动修复 CI 并处理评论", "autoFixPrompt": "自动修复提示词", "autoFixPromptDescription": "此提示词仅用于本任务。留空则使用默认提示词。若希望 Kandev 附上 PR 反馈快照,请添加 <0>{{placeholder}}。", - "autoFixRoundExplanation": "自动修复已为该 PR 使用 {{current}} / {{max}} 轮。Kandev 每次发送或排队一条 CI 自动修复消息即计为一轮。Kandev 会等待全部 PR 检查完成后再开始新一轮自动修复,以便代理同时获得最终的失败检查与当前评论。更新已排队的自动修复消息不会额外消耗轮次。当已达 {{max}}/{{max}} 且没有待更新的自动修复消息时,Kandev 会暂停该 PR 的自动修复,避免无限循环。人工审阅后,请关闭并重新启用自动修复以重新开始。", + "autoFixRoundExplanation": "自动修复已为该 PR 使用 {{current}} / {{max}} 轮。Kandev 每次发送或排队一条 CI 自动修复消息即计为一轮。Kandev 会等待全部 PR 检查完成后再开始新一轮自动修复,以便智能体同时获得最终的失败检查与当前评论。更新已排队的自动修复消息不会额外消耗轮次。当已达 {{max}}/{{max}} 且没有待更新的自动修复消息时,Kandev 会暂停该 PR 的自动修复,避免无限循环。人工审阅后,请关闭并重新启用自动修复以重新开始。", "autoMerge": "自动合并", "autoMergeEnabledAria": "自动合并已启用", "autoMergeWhenReady": "就绪时自动合并", @@ -55,6 +55,7 @@ "automaticallyCreateTasksWhenNewGithub": "当新的 GitHub 议题符合条件时自动创建任务。", "automaticallyCreateTasksWhenNewPull": "当新的拉取请求需要你审阅时自动创建任务。", "automation": "自动化", + "automationForPr": "仅适用于 PR #{{number}}", "available": "可用", "availablePlaceholders": "可用占位符:", "avgTimeToMerge": "平均合并时间", @@ -77,9 +78,9 @@ "checkBucketInProgress": "进行中", "checkBucketPassed": "已通过", "checkNow": "立即检查", - "checkingForNewIssues": "正在检查新议题...", - "checkingForNewPrs": "正在检查新 PR...", - "checkingGithubConnection": "正在检查 GitHub 连接...", + "checkingForNewIssues": "正在检查新议题…", + "checkingForNewPrs": "正在检查新 PR…", + "checkingGithubConnection": "正在检查 GitHub 连接…", "checkingGithubStatus": "正在检查 GitHub 状态…", "checksFailed": "检查失败", "checksFailedCount_one": "{{count}} 个失败", @@ -108,7 +109,7 @@ "cleanupPolicyAutoDescription": "当已合并或关闭的 PR 任务有用户参与或启用了 PR 生命周期提示时保留,否则删除。", "cleanupPolicyNever": "从不自动删除", "cleanupPolicyNeverDescription": "保留所有任务。请从任务列表手动删除。", - "cliAccountActiveSuffix": "; 当前", + "cliAccountActiveSuffix": ";当前", "clientId": "客户端 ID", "clientSecret": "客户端密钥", "closePrStatus": "关闭 PR 状态", @@ -134,10 +135,10 @@ "createReviewWatch": "创建审阅监控", "created": "已创建", "createdByKandev": "由 Kandev 创建", - "credentialUsedForRepositorySyncWatches": "用于仓库同步、监控,以及托管代理的 git 和 gh 命令的凭据。执行器配置令牌优先。", + "credentialUsedForRepositorySyncWatches": "用于仓库同步、监控,以及托管智能体的 git 和 gh 命令的凭据。执行器配置令牌优先。", "currentGithubApiRateAndQuery": "此工作区连接当前的 GitHub API 速率和查询限制。", "customQuery": "自定义查询", - "customQueryPressEnterEG": "自定义查询; 按 Enter。例如 \"is:open review-requested:@me\"", + "customQueryPressEnterEG": "自定义查询;按 Enter。例如 \"is:open review-requested:@me\"", "defaultQueries": "默认查询", "defaultQueriesAreStillLoading": "默认查询仍在加载。", "defaultQueriesSaved": "默认查询已保存", @@ -262,7 +263,7 @@ "issueWatchCreated": "议题监控已创建", "issueWatchDeleted": "议题监控已删除", "issueWatchNotFound": "未找到议题监控", - "issueWatchPromptHelp": "为每个新议题发送给代理的提示词。输入 {{token}} 可插入占位符。", + "issueWatchPromptHelp": "为每个新议题发送给智能体的提示词。输入 {{token}} 可插入占位符。", "issueWatchUpdated": "议题监控已更新", "issueWatches": "议题监控", "issues": "议题", @@ -272,7 +273,7 @@ "kandevManagedOperationsActAs": "Kandev 托管的操作以 {{actor}} 身份执行。", "kandevManagedOperationsUseTheGithub": "Kandev 托管的操作使用为 {{actor}} 安装的 GitHub 应用。", "kandevStoresThisTokenForThis": "Kandev 会为此工作区保存该令牌。GitHub 会将操作记录为令牌所有者执行。", - "kandevUsesThisWorkspaceConnectionFor": "Kandev 使用此工作区连接执行仓库同步、监控、后台任务和托管代理的 GitHub 命令。使用 PAT 或 GitHub CLI 账户时,“我的 GitHub”和你触发的操作会使用同一个真人身份。", + "kandevUsesThisWorkspaceConnectionFor": "Kandev 使用此工作区连接执行仓库同步、监控、后台任务和托管智能体的 GitHub 命令。使用 PAT 或 GitHub CLI 账户时,“我的 GitHub”和你触发的操作会使用同一个真人身份。", "kindIssue": "议题", "kindPullRequest": "拉取请求", "label": "标签", @@ -282,9 +283,9 @@ "lastSynced": "上次同步", "legacySharedConnection": "旧版共享连接", "limitsGithubPullRequestsAndIssues": "限制此工作区中显示或导入的 GitHub 拉取请求和议题。", - "loadingAccounts": "正在加载账户...", - "loadingOrganizations": "正在加载组织...", - "loadingRegisteredApps": "正在加载已注册应用...", + "loadingAccounts": "正在加载账户…", + "loadingOrganizations": "正在加载组织…", + "loadingRegisteredApps": "正在加载已注册应用…", "loadingTaskAccess": "正在加载任务访问设置…", "localAndWorktreeTasksUseHost": "本地和工作树任务使用主机可见的 Git 或 SSH 凭据。Docker、SSH 和云端任务使用对应执行器中配置的凭据。", "managedWorkspaceCredentials": "托管工作区凭据", @@ -332,7 +333,7 @@ "noTasksToCleanUp": "没有需要清理的任务", "noWorkspaceConfiguredCreateAWorkspace": "尚未配置工作区。请先创建工作区,才能从 PR/议题启动任务。", "notMergeable": "不可合并", - "omitThePlaceholderIfYouWant": "若希望代理自行拉取分支并检查 GitHub,而不是接收 Kandev 的快照,请省略该占位符。", + "omitThePlaceholderIfYouWant": "若希望智能体自行拉取分支并检查 GitHub,而不是接收 Kandev 的快照,请省略该占位符。", "onlyMatchIssuesWithTheseLabels": "仅匹配带有这些标签的议题。留空则匹配所有议题。", "onlyPrsWhereYouAreExplicitly": "仅匹配明确请求你审阅的 PR(不包括通过团队成员身份请求)", "onlyTheAppOwner": "仅应用所有者", @@ -343,8 +344,8 @@ "openSettingsToSeePrsAndIssues": "<0>打开 GitHub 设置 以查看你的拉取请求和议题。", "openedAgo": "创建于 {{time}}", "optionalFallsBackToStepDefault": "可选,留空则使用步骤默认值。", - "optionalFallsBackToStepDefault2": "可选,留空则使用步骤默认值。代理将在该执行器环境中运行。", - "optionallyConnectYourGithubUserFor": "你可以选择连接 GitHub 用户,用于“我的 GitHub”和归属于真人的操作。此身份绝不会提供给托管代理;工作区自动化仍以应用身份运行。", + "optionalFallsBackToStepDefault2": "可选,留空则使用步骤默认值。智能体将在该执行器环境中运行。", + "optionallyConnectYourGithubUserFor": "你可以选择连接 GitHub 用户,用于“我的 GitHub”和归属于真人的操作。此身份绝不会提供给托管智能体;工作区自动化仍以应用身份运行。", "or": "或", "organization": "组织", "organizations": "组织", @@ -387,6 +388,7 @@ "prApproved": "PR 已批准", "prClosedWithoutMerging": "PR 已关闭且未合并", "prEvents": "PR 事件", + "reviewFollowUp": "审查跟进", "prMerged": "PR 已合并", "prTaskStatusCi": "CI", "prTaskStatusMerge": "合并", @@ -426,8 +428,8 @@ "pullRequestStatuses_other": "{{count}} 个拉取请求状态", "pullRequests": "拉取请求", "pullRequestsAndIssuesAcrossYour": "跨你的仓库的拉取请求与议题。", - "pullRequestsLinkedToTask_one": "此任务已关联 {{count}} 个拉取请求; 打开其中一个", - "pullRequestsLinkedToTask_other": "此任务已关联 {{count}} 个拉取请求; 打开其中一个", + "pullRequestsLinkedToTask_one": "此任务已关联 {{count}} 个拉取请求;打开其中一个", + "pullRequestsLinkedToTask_other": "此任务已关联 {{count}} 个拉取请求;打开其中一个", "query": "查询", "queryExample": "例如 {{query}}", "quickActions": "快捷操作", @@ -459,7 +461,7 @@ "resetWatch": "重置监控", "resets": "· 于 {{reset}} 重置", "resolveConflicts": "解决冲突", - "resolvedFromOneNamedHostAccount": "需要时从一个指定的主机账户解析。托管任务会获得受限的代理身份;除非在下方选择,否则不会继承主机 Git。", + "resolvedFromOneNamedHostAccount": "需要时从一个指定的主机账户解析。托管任务会获得限定范围的中介身份;除非在下方选择,否则不会继承主机 Git。", "retry": "重试", "reviewCount_one": "{{count}} 条审阅", "reviewCount_other": "{{count}} 条审阅", @@ -469,7 +471,7 @@ "reviewWatchCreated": "审阅监控已创建", "reviewWatchDeleted": "审阅监控已删除", "reviewWatchNotFound": "未找到审阅监控", - "reviewWatchPromptHelp": "为每个新 PR 发送给代理的提示词。输入 {{token}} 可插入占位符,或使用 {{mention}} 按名称引用已保存的提示词。它的展开方式与工作流步骤提示词相同,因为此提示词会成为通过同一组装流程传递的任务描述。", + "reviewWatchPromptHelp": "为每个新 PR 发送给智能体的提示词。输入 {{token}} 可插入占位符,或使用 {{mention}} 按名称引用已保存的提示词。它的展开方式与工作流步骤提示词相同,因为此提示词会成为通过同一组装流程传递的任务描述。", "reviewWatchUpdated": "审阅监控已更新", "reviewWatches": "审阅监控", "reviews": "审阅{{summary}}", @@ -480,11 +482,11 @@ "saveQuery": "保存查询", "saved": "已保存", "savedQueryFallback": "已保存的查询", - "saving": "正在保存...", + "saving": "正在保存…", "savingChanges": "正在保存更改…", "searchLimit": "搜索限制", "searchQuery": "搜索查询", - "searching": "正在搜索...", + "searching": "正在搜索…", "selectWorkflow": "选择工作流", "selectWorkspace": "选择工作区", "selectedRepositories": "已选仓库", @@ -499,7 +501,7 @@ "someSettingsWereSavedButAnother": "部分设置已保存,但另一项更改失败:{{detail}}", "startOver": "重新开始", "stepLabelled": "步骤:{{stepTitle}}", - "storedAppCredentialsMintShortLived": "存储的应用凭据用于签发短期安装令牌。托管任务会针对允许的仓库获得受限的应用代理身份。", + "storedAppCredentialsMintShortLived": "存储的应用凭据用于签发短期安装令牌。托管任务会针对允许的仓库获得限定范围的应用中介身份。", "storedEncryptedByKandevWorkspaceAutomation": "由 Kandev 加密存储。工作区自动化和托管任务的 GitHub HTTPS/gh 操作将以你的账户身份执行。", "subscribedEvents": "订阅的事件", "task": "任务", @@ -526,9 +528,10 @@ "thisAppRegistrationIsShared_other": "此应用注册由 {{count}} 个工作区共享。注册更改会影响所有使用它的工作区;安装访问权限仍按工作区隔离。", "thisBranchCanTBeMerged": "此分支无法自动合并。请先解决冲突再合并。", "thisRepositoryOpensByDefaultYou": "默认打开此仓库。打开查询后仍可更改筛选条件。", - "thisWorkspaceUsesOneCredentialFor": "此工作区使用一个凭据执行仓库同步、监控、后台任务和托管代理的 GitHub 访问。执行器配置凭据仍可优先使用。", + "thisWorkspaceUsesOneCredentialFor": "此工作区使用一个凭据执行仓库同步、监控、后台任务和托管智能体的 GitHub 访问。执行器配置凭据仍可优先使用。", "titleIssues": "议题", "titlePullRequests": "拉取请求", + "toggleReviewFollowUpAutomation": "切换审查跟进自动化", "typeACustomQueryFirst": "请先输入自定义查询", "typeOwnerRepoToSearch": "输入 {{format}} 进行搜索", "unableToLoadTheCurrentTask": "无法加载当前任务访问设置。", @@ -550,12 +553,14 @@ "viewPermissions": "查看权限", "viewPullRequestOnGithub": "在 GitHub 上查看拉取请求", "waitingOnBranchProtection": "等待分支保护", - "watchesThisTaskSLinkedPull": "在 1 分钟 PR 刷新循环中监视此任务关联的拉取请求。自动修复会为新观察到的反馈排队任务提示词,自动合并会等待 PR 就绪,通知开关会在工作区连接的 GitHub 账户被请求审阅或 PR 到达终态时唤醒任务代理。审阅请求会先静默建立该账户当前请求状态的基线,再在后续请求时通知。", + "wakeAgentOnReviewRequest": "收到任何新的审查请求时唤醒智能体,包括修改后的重新审查。", + "wakeAgentOnTerminalPrState": "审查工作结束时唤醒智能体。可选择其中一种或两种结果。", + "watchesThisTaskSLinkedPull": "在 1 分钟 PR 刷新循环中监视此任务关联的拉取请求。自动修复会为新观察到的反馈排队任务提示词,自动合并会等待 PR 就绪,通知开关会在工作区连接的 GitHub 账户被请求审阅或 PR 到达终态时唤醒任务智能体。审阅请求会先静默建立该账户当前请求状态的基线,再在后续请求时通知。", "webhook": "网络钩子", "webhookSecret": "网络钩子密钥", "whichAllowedGithubRepositoriesToMonitor": "此监控要监测哪些允许访问的 GitHub 仓库。", "whoCanInstallThisApp": "谁可以安装此应用?", - "withManagedWorkspaceCredentialsKandevConfigures": "使用托管工作区凭据时,Kandev 会在新启动的任务进程内将 agentctl 配置为 Git 凭据帮助程序。当 Git 请求已附加 GitHub HTTPS 仓库的凭据时,该帮助程序会换取一个限定于任务和仓库的 broker 租约。凭据按需返回给 Git,不会写入仓库或 Git 配置。gh 命令使用 Kandev 的 broker 感知适配层。继承执行器会跳过这两者,改用所选执行器可见的凭据。更改应用于新启动的任务和下次恢复,不影响已在运行的进程。", + "withManagedWorkspaceCredentialsKandevConfigures": "使用托管的工作区凭据时,Kandev 会在新启动的任务进程中,将 agentctl 配置为 Git 凭据助手。当 Git 请求已附加 GitHub HTTPS 仓库的凭据时,该助手会兑换仅适用于该任务与仓库的 broker 租约。凭据会在需要时返回给 Git,且不会写入仓库或 Git 配置。gh 命令会使用 Kandev 支持 broker 的适配程序。继承执行器配置则会跳过这两者,改用所选执行器可见的凭据。变更会应用于新启动的任务及下次恢复,不会影响已在运行的进程。", "workflow": "工作流", "workflowStep": "工作流步骤", "workflowStepPromptWrapHelp": "工作流步骤提示词会包裹此提示词。例如,如果步骤提示词为 <2>{{stepPrompt}},最终提示词将变为 <5>{{finalPrompt}}", diff --git a/apps/web/src/locales/zh-cn/gitlab.json b/apps/web/src/locales/zh-cn/gitlab.json index a077c4159b..5cce4799c9 100644 --- a/apps/web/src/locales/zh-cn/gitlab.json +++ b/apps/web/src/locales/zh-cn/gitlab.json @@ -18,7 +18,7 @@ "addDiscussionToTaskContext": "将讨论添加到任务上下文", "addIssueAction": "添加议题操作", "addMrAction": "添加合并请求操作", - "agentProfile": "代理配置", + "agentProfile": "智能体配置", "allProjects": "所有项目", "alwaysDelete": "始终删除", "apply": "应用", @@ -52,7 +52,7 @@ "createTask": "创建任务", "createWatch": "创建监控", "created": "已创建", - "customQueryPressEnterEG": "自定义查询; 按 Enter。例如 \"labels=bug&state=opened\"", + "customQueryPressEnterEG": "自定义查询;按 Enter。例如 \"labels=bug&state=opened\"", "deleteSavedQuery": "删除已保存查询", "deleteSavedQuery2": "删除已保存查询 {{label}}", "deleteWatch": "删除监控", @@ -205,7 +205,7 @@ "project": "项目", "projectPaths": "项目路径", "projects": "项目", - "promptSentToTheSelectedAgent": "为每个新匹配项发送给所选代理配置的提示词。", + "promptSentToTheSelectedAgent": "为每个新匹配项发送给所选智能体配置的提示词。", "promptUsingUrlAndTitle": "使用 {{url}} 和 {{title}} 的提示词", "query": "查询", "quickActions": "快捷操作", @@ -246,7 +246,7 @@ "savePresetDescription": "将此 {{kind}} 查询保存到侧边栏,以便日后快速访问。", "saved": "已保存", "savedQueryFallback": "已保存的查询", - "saving": "正在保存...", + "saving": "正在保存…", "searchAssignees": "搜索负责人", "searchProjectMembers": "搜索项目成员", "searchReviewers": "搜索审阅者", @@ -283,13 +283,13 @@ "workflowThatReceivesNewTasks": "接收新任务的工作流。", "yourTokenMayStillBeValid": "你的令牌可能仍然有效--这看起来是网络或上游服务问题。", "mrAutomationClosedLabel": "MR 已关闭未合并", - "mrAutomationDescription": "当关联的合并请求请求你的审阅,或该合并请求被合并、关闭时,唤醒此任务的代理。通知会发送到该任务当前处于活动状态的会话队列。", + "mrAutomationDescription": "当关联的合并请求请求你的审阅,或该合并请求被合并、关闭时,唤醒此任务的智能体。通知会发送到该任务当前处于活动状态的会话队列。", "mrAutomationMergedLabel": "MR 已合并", "mrAutomationRetry": "重试", - "mrAutomationReviewRequestedHelp": "当工作区连接的 GitLab 账户被添加为审阅者时唤醒代理。移除后重新添加算作新的请求;在 MR 更新过程中保持指派状态则不算。", + "mrAutomationReviewRequestedHelp": "当工作区连接的 GitLab 账户被添加为审阅者时唤醒智能体。移除后重新添加算作新的请求;在 MR 更新过程中保持指派状态则不算。", "mrAutomationReviewRequestedHelpAriaLabel": "说明审阅请求通知", "mrAutomationReviewRequestedLabel": "已请求你的审阅", - "mrAutomationTerminalHelp": "当审阅工作结束时唤醒代理。可以选择其中一种或两种结果。", + "mrAutomationTerminalHelp": "当审阅工作结束时唤醒智能体。可以选择其中一种或两种结果。", "mrAutomationTerminalHelpAriaLabel": "说明 MR 最终状态通知", "mrAutomationToggleAriaLabel": "切换审阅跟进自动化", "mrAutomationTriggerLabel": "审阅跟进", @@ -299,17 +299,17 @@ "mrAutoFixCiAndAddressComments": "自动修复 CI 并处理评论", "mrAutoFixPrompt": "自动修复提示词", "mrAutoFixPromptDescription": "此提示词仅用于本任务。留空则使用默认提示词。若希望 Kandev 附带其 MR 反馈快照,请加入 <0>{{placeholder}}。", - "mrAutoFixRoundExplanation": "自动修复已为此 MR 使用 {{max}} 轮中的 {{current}} 轮。每当 Kandev 发送或排入一条 MR 自动修复消息时计为一轮。Kandev 会等待流水线结束后再开始新的自动修复轮次,以便代理同时获得最终失败的作业和当前的讨论评论。更新已排队的自动修复消息不会消耗额外轮次。当达到 {{max}}/{{max}} 且没有待更新的自动修复消息时,Kandev 会暂停此 MR 的自动修复,以免无限循环。人工审查后先停用再重新启用自动修复即可重新开始。", + "mrAutoFixRoundExplanation": "自动修复已为此 MR 使用 {{max}} 轮中的 {{current}} 轮。每当 Kandev 发送或排入一条 MR 自动修复消息时计为一轮。Kandev 会等待流水线结束后再开始新的自动修复轮次,以便智能体同时获得最终失败的作业和当前的讨论评论。更新已排队的自动修复消息不会消耗额外轮次。当达到 {{max}}/{{max}} 且没有待更新的自动修复消息时,Kandev 会暂停此 MR 的自动修复,以免无限循环。人工审查后先停用再重新启用自动修复即可重新开始。", "mrAutoMergeWhenReady": "就绪时自动合并", "mrAutomationExplainAutoMerge": "说明自动合并就绪条件", "mrAutoMergeReadyExplanation": "一旦此 MR 完全就绪,Kandev 会立即自动合并:处于开启状态且非草稿、流水线已成功、没有未解决的讨论,并且 GitLab 自身的合并就绪检查也通过。如果您的项目需要审批,该条件已包含在 GitLab 的检查中。MR 获得批准且满足其他所有条件后,Kandev 会立即合并,不再另行确认。", "mrAutomationExplainOptions": "说明自动化选项", - "mrAutomationWatchesLinkedMergeRequest": "在 1 分钟同步循环中监视此任务关联的合并请求。自动修复会为新观察到的流水线失败或讨论评论排入任务提示词,自动合并会等待 MR 就绪,而通知开关会在工作区已连接的 GitLab 账号被请求审查或 MR 进入终态时唤醒该任务的代理。审查请求会先静默记录该账号的当前请求状态,之后再有请求时才通知。", + "mrAutomationWatchesLinkedMergeRequest": "在 1 分钟同步循环中监视此任务关联的合并请求。自动修复会为新观察到的流水线失败或讨论评论排入任务提示词,自动合并会等待 MR 就绪,而通知开关会在工作区已连接的 GitLab 账号被请求审查或 MR 进入终态时唤醒该任务的智能体。审查请求会先静默记录该账号的当前请求状态,之后再有请求时才通知。", "mrAutoFixInsertMrFeedback": "插入 MR 反馈", "mrAutomationEditDefaultPrompt": "编辑默认提示词", "mrAutomationTaskAutoFixPrompt": "任务自动修复提示词", "mrAutomationPlaceholderExplanation": "该占位符会插入当前 MR 标识符、新增或变更的失败流水线作业及其链接,以及新增或变更的未解决讨论评论(含文件、行号和正文)。", - "mrAutomationOmitPlaceholderExplanation": "如果您希望代理自行拉取或获取分支并直接查看 GitLab,而不是接收 Kandev 的快照,请省略该占位符。", + "mrAutomationOmitPlaceholderExplanation": "如果您希望智能体自行拉取或获取分支并直接查看 GitLab,而不是接收 Kandev 的快照,请省略该占位符。", "mrAutomationUseDefault": "使用默认值", "mrAutomationSavePrompt": "保存提示词", "mrAutomationEditAutoFixPromptForThis": "编辑此任务的自动修复提示词", diff --git a/apps/web/src/locales/zh-cn/integrations.json b/apps/web/src/locales/zh-cn/integrations.json index 2030a54d64..9793ced75d 100644 --- a/apps/web/src/locales/zh-cn/integrations.json +++ b/apps/web/src/locales/zh-cn/integrations.json @@ -13,11 +13,11 @@ "commitChangedFiles_one": "提交 {{count}} 个已更改文件", "commitChangedFiles_other": "提交 {{count}} 个已更改文件", "commitChanges": "提交更改", - "commitChangesScoped": "提交更改; {{scopedRepo}}", + "commitChangesScoped": "提交更改;{{scopedRepo}}", "commitsAheadAriaLabel": "领先 {{value}} 个提交", "commitsBehindAriaLabel": "落后 {{value}} 个提交", "committingEllipsis": "正在提交…", - "configureAUtilityAgentInSettings": "在设置中配置实用代理以启用 AI 生成", + "configureAUtilityAgentInSettings": "在设置中配置辅助智能体以启用 AI 生成", "copiedConfigTo": "已将 {{label}} 配置复制到 {{targetName}}。", "copyConfig": "复制配置", "copyConfigSettingsOnly": "将 <4>{{sourceName}} 的 {{label}} 设置复制到另一个工作区。这将覆盖目标工作区当前的 {{label}} 配置。不会复制监控与自动化。", @@ -35,7 +35,7 @@ "createPr": "创建 PR", "createPrCommitsAhead_one": "创建 PR(领先 {{count}} 个提交)", "createPrCommitsAhead_other": "创建 PR(领先 {{count}} 个提交)", - "createScoped": "创建 {{longName}}; {{scopedRepo}}", + "createScoped": "创建 {{longName}};{{scopedRepo}}", "createShortName": "创建 {{shortName}}", "creatingEllipsis": "正在创建…", "creatingFrom": "正在从 <4>{{displayBranch}} 创建 {{shortName}}", diff --git a/apps/web/src/locales/zh-cn/jira.json b/apps/web/src/locales/zh-cn/jira.json index 5b0a096dee..e7be45d0dc 100644 --- a/apps/web/src/locales/zh-cn/jira.json +++ b/apps/web/src/locales/zh-cn/jira.json @@ -3,9 +3,9 @@ "actions": "操作", "active": "活动", "addPreset": "添加预设", - "agentProfile": "代理配置", + "agentProfile": "智能体配置", "aJiraSiteUrlIsRequired": "必须提供 Jira 站点 URL。", - "anEmailAddressIsRequired": "必须提供电子邮箱地址。", + "anEmailAddressIsRequired": "必须填写邮箱。", "apiToken": "API 令牌", "apiTokenRecommended": "API 令牌(推荐)", "apply": "应用", @@ -23,7 +23,6 @@ "checkFailed": "检查失败:{{error}}", "checkingJiraStatus": "正在检查 Jira 状态…", "checkNow": "立即检查", - "checkingJiraStatus": "正在检查 Jira 状态…", "clear": "清除{{lowerCase}}", "clearFilters": "清除筛选条件", "connectedAs": "已连接为 {{name}}", @@ -50,7 +49,7 @@ "details": "详情", "editJiraWatcher": "编辑 Jira 监控", "editPrompt": "编辑提示词", - "email": "电子邮箱", + "email": "邮箱", "enable": "启用", "enabled": "已启用", "enterAPositiveIntegerOrLeave": "请输入正整数或留空。", @@ -87,7 +86,7 @@ "jqlIsGeneratedFromThePills": "JQL 由上方筛选胶囊生成。编辑可覆盖。", "label": "标签", "lastPolled": "上次轮询", - "loading": "加载中...", + "loading": "加载中…", "loading2": "加载中…", "loadingTicket": "正在加载工单…", "matchedTickets_one": "本页匹配 {{count}} 个工单。", @@ -147,7 +146,7 @@ "presetPromptPlaceholderHelp": "输入 {{token}} 可查看可用占位符。运行操作时会替换 <4>{{key}}、<7>{{url}}、<10>{{title}} 和 <13>{{description}}。", "proj123OrPasteTicketUrl": "PROJ-123 或粘贴工单 URL", "project": "项目", - "promptFieldHelp": "为每个新工单发送给代理的提示词。输入 {{token}} 可插入占位符。", + "promptFieldHelp": "为每个新工单发送给智能体的提示词。输入 {{token}} 可插入占位符。", "refresh": "刷新", "remove": "移除", "removeConfiguration": "移除配置", @@ -191,7 +190,7 @@ "tasksCreatedByThisWatcherLand": "此监控创建的任务会进入所选工作区。", "testConnection": "测试连接", "testFailed": "失败:{{error}}", - "testingConnection": "正在测试...", + "testingConnection": "正在测试…", "testingJql": "正在测试…", "testJql": "测试 JQL", "ticketOnThisPage_one": "本页 {{count}} 个工单", diff --git a/apps/web/src/locales/zh-cn/kanban.json b/apps/web/src/locales/zh-cn/kanban.json index 31993a5f42..d09e6b6e95 100644 --- a/apps/web/src/locales/zh-cn/kanban.json +++ b/apps/web/src/locales/zh-cn/kanban.json @@ -30,8 +30,8 @@ "displayOptions": "显示选项", "dropOnAColumnToMove": "拖放到列上以移动任务", "githubIssue": "GitHub 议题", - "githubPullRequest": "GitHub Pull Request", - "gitlabMergeRequest": "GitLab Merge Request", + "githubPullRequest": "GitHub 拉取请求", + "gitlabMergeRequest": "GitLab 合并请求", "goToTask": "转到任务", "group": "分组", "groupTasksIntoSectionsByState": "按状态、工作流、仓库或无分组将任务归入分区。", diff --git a/apps/web/src/locales/zh-cn/linear.json b/apps/web/src/locales/zh-cn/linear.json index 654215233c..ed92358d14 100644 --- a/apps/web/src/locales/zh-cn/linear.json +++ b/apps/web/src/locales/zh-cn/linear.json @@ -1,7 +1,7 @@ { "actions": "操作", "active": "活动", - "agentProfile": "代理配置", + "agentProfile": "智能体配置", "allTeams": "全部团队", "anApiKeyIsRequired": "必须提供 API 密钥。", "any": "(任意)", @@ -118,7 +118,7 @@ "priorityMedium": "中", "priorityNone": "无优先级", "priorityUrgent": "紧急", - "promptFieldHelp": "为每个新议题发送给代理的提示词。输入 {{token}} 可插入占位符。", + "promptFieldHelp": "为每个新议题发送给智能体的提示词。输入 {{token}} 可插入占位符。", "query": "查询", "queryHelp": "在标题和描述中做自由文本匹配(可选)。", "queryPlaceholder": "身份验证缺陷", diff --git a/apps/web/src/locales/zh-cn/lsp.json b/apps/web/src/locales/zh-cn/lsp.json index 7baa7f4486..6e64c78067 100644 --- a/apps/web/src/locales/zh-cn/lsp.json +++ b/apps/web/src/locales/zh-cn/lsp.json @@ -69,7 +69,7 @@ "stopping": "正在停止", "stoppingLanguageServer": "正在停止语言服务器", "taskExecutorUnsupported": "此任务执行器不支持语言服务器", - "thisMayTakeAMoment": "这可能需要一点时间...", + "thisMayTakeAMoment": "这可能需要一点时间…", "tooManyLanguageServers": "活动的语言服务器过多", "unavailable": "不可用", "waitingForInitializeResponse": "正在等待语言服务器响应 LSP 初始化请求。", diff --git a/apps/web/src/locales/zh-cn/office.json b/apps/web/src/locales/zh-cn/office.json index d22949e1c8..1e8542f988 100644 --- a/apps/web/src/locales/zh-cn/office.json +++ b/apps/web/src/locales/zh-cn/office.json @@ -2,9 +2,9 @@ "aCronScheduleExample": "Cron 计划(例如 <1>{{cron}} 表示工作日上午 9 点)", "actionOnExceed": "超出时的操作", "actions": "操作", - "actionsByAgentsAndUsersAre": "代理与用户的操作会记录在此。", + "actionsByAgentsAndUsersAre": "智能体与用户的操作会记录在此。", "actionValue": "操作:{{action}}", - "activeAgents": "活动代理", + "activeAgents": "活动智能体", "activeSessionCount_one": "{{count}} 个活动会话", "activeSessionCount_other": "{{count}} 个活动会话", "activity": "活动", @@ -30,33 +30,33 @@ "addReviewers": "添加审阅人", "addToOrder": "加入顺序", "advanced": "高级", - "agent": "代理", - "agentAutoPaused": "代理已自动暂停", - "agentAwaitingApproval": "代理等待审批", - "agentConfigurationUpdated": "代理配置已更新", - "agentCount_one": "{{count}} 个代理", - "agentCount_other": "{{count}} 个代理", - "agentCreated": "代理已创建", - "agentCreatedSkillsMustBeApproved": "代理创建的技能须经批准后才能启用", - "agentError": "代理错误", - "agentFinishedWorkspaceReadyForReview": "代理已完成; 工作区可供审阅", - "agentIsActivelyWorkingOnThis": "代理正在处理此任务", - "agentIsWorkingMessageWillBe": "代理工作中…消息将排队", - "agentName": "代理名称", - "agentNotFound": "未找到代理。", + "agent": "智能体", + "agentAutoPaused": "智能体已自动暂停", + "agentAwaitingApproval": "智能体等待审批", + "agentConfigurationUpdated": "智能体配置已更新", + "agentCount_one": "{{count}} 个智能体", + "agentCount_other": "{{count}} 个智能体", + "agentCreated": "智能体已创建", + "agentCreatedSkillsMustBeApproved": "智能体创建的技能须经批准后才能启用", + "agentError": "智能体错误", + "agentFinishedWorkspaceReadyForReview": "智能体已完成;工作区可供审阅", + "agentIsActivelyWorkingOnThis": "智能体正在处理此任务", + "agentIsWorkingMessageWillBe": "智能体工作中…消息将排队", + "agentName": "智能体名称", + "agentNotFound": "未找到智能体。", "agentRecentTasks": "最近任务", "agentRunActivity": "运行活动", - "agentRunFailed": "代理运行失败", - "agents": "代理", - "agentSections": "代理分区", - "agentsEnabled": "已启用代理", - "agentSessionEnded": "代理会话已结束", - "agentsInheritThisTierUnlessThey": "代理继承此层级,除非自行覆盖。每个路由提供商都必须将此层级映射到一个模型。", - "agentsThatHaveThisSkillAssigned": "已分配此技能的代理", + "agentRunFailed": "智能体运行失败", + "agents": "智能体", + "agentSections": "智能体分区", + "agentsEnabled": "已启用智能体", + "agentSessionEnded": "智能体会话已结束", + "agentsInheritThisTierUnlessThey": "智能体继承此层级,除非自行覆盖。每个路由提供商都必须将此层级映射到一个模型。", + "agentsThatHaveThisSkillAssigned": "已分配此技能的智能体", "agentSuccessRate": "成功率", - "agentThatPicksUpRunsTriggered": "接收此例行程序触发运行的代理", - "agentTierProfiles": "代理层级配置", - "agentUpdated": "代理已更新", + "agentThatPicksUpRunsTriggered": "接收此例行程序触发运行的智能体", + "agentTierProfiles": "智能体层级配置", + "agentUpdated": "智能体已更新", "agentWillUseThisStarterTask": "{{name}} 将使用此启动任务检查仓库、组建团队,并提出下一步工作供审批。", "agentWorkedForSeconds": "{{agent}} 工作了 {{seconds}} 秒", "agentWorkedForSecondsRanCommands_one": "{{agent}} 工作了 {{seconds}} 秒 · 运行了 {{count}} 条命令", @@ -85,17 +85,17 @@ "asc": "升序", "aSkillWithThisNameAlready": "已存在同名技能", "assembledPrompt": "组装后的提示词", - "assignATaskToThisAgent": "向此代理分配任务以查看执行历史。", + "assignATaskToThisAgent": "向此智能体分配任务以查看执行历史。", "assignee": "负责人", - "aTaskTitleDescriptionWhatThe": "任务标题 + 描述(代理每次运行应执行的内容)", - "aUniqueNameForThisAgent": "此代理的唯一名称(例如 CEO、前端工作者)", + "aTaskTitleDescriptionWhatThe": "任务标题 + 描述(智能体每次运行应执行的内容)", + "aUniqueNameForThisAgent": "此智能体的唯一名称(例如 CEO、前端工作者)", "autoCommitAfterApproval": "批准后自动提交", "automaticProviderFallback": "提供商自动回退", "backToTasks": "返回任务", "barTotal": "{{label}}:{{total}}", "beingWorkedOn": "处理中", "beyondThisCountMissedTicksAre": "超过此数量后,错过的触发会被丢弃(默认 25)", - "blockedActionRequired": "已阻塞; 需要操作", + "blockedActionRequired": "已阻塞;需要操作", "blockNewTasks": "阻止新任务", "boardView": "看板视图", "botTokenChatId": "{\"bot_token\": \"...\", \"chat_id\": \"...\"}", @@ -103,7 +103,7 @@ "browseSkillsSh": "浏览 skills.sh", "budgetActionBlockNewTasks": "阻止新任务", "budgetActionNotifyOnly": "仅通知", - "budgetActionPauseAgent": "暂停代理", + "budgetActionPauseAgent": "暂停智能体", "budgetAlert": "预算告警", "budgetAmount": "预算:{{amount}}", "budgetCapConcurrencyAndExecutionEnvironment": "预算上限、并发与执行环境。", @@ -114,9 +114,9 @@ "budgetPolicyCreated": "预算策略已创建", "budgetPolicyDeleted": "预算策略已删除", "budgets": "预算", - "bundledWithKandev": "随 kandev 捆绑", - "bundledWithKandevVersion": "随 kandev v{{version}} 捆绑", - "byAgent": "按代理", + "bundledWithKandev": "随 Kandev 捆绑", + "bundledWithKandevVersion": "随 Kandev v{{version}} 捆绑", + "byAgent": "按智能体", "byModel": "按模型", "byProject": "按项目", "byProvider": "按提供商", @@ -127,11 +127,11 @@ "cancelReasonTaskNotFound": "未找到任务", "cancelReasonTaskTerminal": "任务已完成", "capabilities": "能力", - "capabilityCreateAgent": "创建代理", + "capabilityCreateAgent": "创建智能体", "capabilityCreateSubtask": "创建子任务", "capabilityDeleteSkills": "删除技能", "capabilityListSkills": "列出技能", - "capabilityModifyAgents": "修改代理", + "capabilityModifyAgents": "修改智能体", "capabilityPostComment": "发表评论", "capabilityReadMemory": "读取记忆", "capabilityRequestApproval": "请求审批", @@ -140,15 +140,15 @@ "capabilityWriteMemory": "写入记忆", "catchUpMax": "追赶上限", "catchUpPolicy": "追赶策略", - "ceoManagesOtherAgentsWorkersExecute": "CEO 管理其他代理,工作者执行任务", + "ceoManagesOtherAgentsWorkersExecute": "CEO 管理其他智能体,工作者执行任务", "changesPushed": "更改已推送", "channelAdded": "渠道已添加", "channelDeleted": "渠道已删除", - "chooseTheProfileFamilyOfficeShould": "选择办公室在代理被分配 Frontier、Balanced 或 Economy 工作时使用的配置系列。", + "chooseTheProfileFamilyOfficeShould": "选择办公室在智能体被分配 Frontier、Balanced 或 Economy 工作时使用的配置系列。", "clearAll": "全部清除", "clearAllMemory": "清除全部记忆?", "clearFilters": "清除筛选", - "cliAgentProfile": "CLI 代理配置", + "cliAgentProfile": "CLI 智能体配置", "clickToOpenRoutines": "点击打开例行程序。", "clone": "克隆", "cloneFailed": "克隆失败", @@ -157,7 +157,7 @@ "coalesceIfActive": "活动时合并", "collapse": "折叠", "color": "颜色", - "comingSoonOnlyLocalIsSupported": "即将推出; 目前仅支持本地。", + "comingSoonOnlyLocalIsSupported": "即将推出;目前仅支持本地。", "commitMessage": "提交说明", "compareWorkspaceDatabaseWithOnDisk": "比较工作区数据库与磁盘上的配置文件。", "concurrency": "并发", @@ -166,11 +166,11 @@ "configuration": "配置", "configure": "配置", "configured": "已配置", - "configuredRouteTooltip": "来自工作区 + 代理覆盖的主路由。", + "configuredRouteTooltip": "来自工作区 + 智能体覆盖的主路由。", "confirmTheDetailsBelowEverythingCan": "请确认以下详情。之后均可更改。", "connectAGitRepositoryToVersion": "连接 git 仓库以版本控制此工作区配置。", - "controlWhatThisAgentIsAllowed": "控制此代理允许执行的操作。默认值基于代理角色。", - "coordinatorAgent": "协调代理", + "controlWhatThisAgentIsAllowed": "控制此智能体允许执行的操作。默认值基于智能体角色。", + "coordinatorAgent": "协调智能体", "copied": "已复制!", "copySlug": "复制 slug", "cost": "费用", @@ -185,11 +185,11 @@ "countLive_other": "{{count}} 个运行中", "cpuCores": "CPU 核心", "create": "创建", - "createACeoAgentToStart": "创建 CEO 代理,开始在各项目间编排工作。", - "createAgent": "创建代理", - "createAgentsAndSetTheirReporting": "创建代理并设置汇报结构以查看组织图。", + "createACeoAgentToStart": "创建 CEO 智能体,开始在各项目间编排工作。", + "createAgent": "创建智能体", + "createAgentsAndSetTheirReporting": "创建智能体并设置汇报结构以查看组织图。", "createANewCliProfile": "+ 创建新的 CLI 配置", - "createATaskOrLetAgents": "创建任务,或让代理从例行程序生成。", + "createATaskOrLetAgents": "创建任务,或让智能体从例行程序生成。", "createLaunch": "创建并启动", "createNewSkill": "创建新技能", "createOneInline": "内联创建一个", @@ -198,7 +198,7 @@ "createRoutine": "创建例行程序", "createSkill": "创建技能", "createTask": "创建任务", - "createYourCoordinatorAgent": "创建协调代理", + "createYourCoordinatorAgent": "创建协调智能体", "createYourFirstProject": "创建第一个项目", "creating": "正在创建…", "cron": "Cron", @@ -225,7 +225,7 @@ "deletePolicy": "删除策略", "deleteProject": "删除项目", "deleteWorkspace": "删除工作区", - "deleteWorkspaceSummary": "将永久删除 {{agents}} 个代理、{{tasks}} 个任务、{{skills}} 个技能以及工作区文件夹。", + "deleteWorkspaceSummary": "将永久删除 {{agents}} 个智能体、{{tasks}} 个任务、{{skills}} 个技能以及工作区文件夹。", "deleting": "正在删除…", "desc": "降序", "description": "描述", @@ -238,9 +238,9 @@ "dockerImageWithExample": "Docker 镜像(例如 node:20-slim)", "duration": "时长", "editable": "可编辑", - "editOrgChartFromTheAgents": "从代理列表编辑组织图。", + "editOrgChartFromTheAgents": "从智能体列表编辑组织图。", "editRoutine": "编辑例行程序", - "effectiveActionsThisAgentCanRequest": "此代理在办公室运行期间可请求的有效操作。", + "effectiveActionsThisAgentCanRequest": "此智能体在办公室运行期间可请求的有效操作。", "eGCodeReview": "例如 code-review", "eGFrontendWorker": "例如 Frontend Worker", "enqueueMissedWithCap": "将错过的加入队列(有上限)", @@ -267,7 +267,7 @@ "failedToApprove": "批准失败", "failedToClearMemory": "清除记忆失败", "failedToCompleteSetup": "完成设置失败", - "failedToCreateAgent": "创建代理失败", + "failedToCreateAgent": "创建智能体失败", "failedToCreateBudgetPolicy": "创建预算策略失败", "failedToCreateFile": "创建文件失败", "failedToCreateIssue": "创建议题失败", @@ -309,7 +309,7 @@ "failedToSaveProject": "保存项目失败", "failedToSaveRoutine": "保存例行程序失败", "failedToSaveSettings": "保存设置失败", - "failedToUpdateAgent": "更新代理失败", + "failedToUpdateAgent": "更新智能体失败", "failedToUpdateRoutine": "更新例行程序失败", "failedToUpdateSkills": "更新技能失败", "fallback": "回退", @@ -324,20 +324,20 @@ "foundWorkspacesOnFilesystem_one": "在文件系统上找到 {{count}} 个工作区。要导入设置以开始吗?", "foundWorkspacesOnFilesystem_other": "在文件系统上找到 {{count}} 个工作区。要导入设置以开始吗?", "general": "通用", - "gitUrlsOrLocalPathsWhere": "代理将在此项目上工作的 Git URL 或本地路径。", - "gitUrlsOrLocalPathsWhereShort": "代理工作所用的 Git URL 或本地路径", + "gitUrlsOrLocalPathsWhere": "智能体将在此项目上工作的 Git URL 或本地路径。", + "gitUrlsOrLocalPathsWhereShort": "智能体工作所用的 Git URL 或本地路径", "giveAgentSomethingToDo": "给 {{name}} 分配一些工作", "groupBy": "分组依据", "healthy": "正常", "hideApprover": "隐藏审批人", "hideReviewer": "隐藏审阅人", - "highestUtilizationAcrossSubscriptionAgents": "订阅代理中的最高利用率", + "highestUtilizationAcrossSubscriptionAgents": "订阅智能体中的最高利用率", "hours": "小时", - "howAgentSessionsRunForThis": "此项目的代理会话运行方式。", - "howAgentSessionsRunInheritProject": "代理会话运行方式(继承使用项目/工作区默认值)", - "howAgentSessionsRunInheritUses": "代理会话运行方式(继承使用工作区默认值)", + "howAgentSessionsRunForThis": "此项目的智能体会话运行方式。", + "howAgentSessionsRunInheritProject": "智能体会话运行方式(继承使用项目/工作区默认值)", + "howAgentSessionsRunInheritUses": "智能体会话运行方式(继承使用工作区默认值)", "howFarBackToLookFor": "恢复扫描时向前查找未开始任务的时间范围", - "howManyTasksThisAgentCan": "此代理可同时运行的任务数", + "howManyTasksThisAgentCan": "此智能体可同时运行的任务数", "identifier": "标识符", "identity": "身份", "importContinue": "导入并继续", @@ -361,7 +361,7 @@ "inputTokens": "输入令牌", "inReview": "审阅中", "instructionFileCompletionDetail": "说明文件", - "instructionsTheAgentReceivesWhenThis": "此例行程序触发时代理收到的说明", + "instructionsTheAgentReceivesWhenThis": "此例行程序触发时智能体收到的说明", "intended": "预期", "itemsWaitingForYourReview": "等待你审阅的项目", "kind": "类型", @@ -372,7 +372,7 @@ "lastRunFailedAgo": "上次运行失败于 {{ago}}", "lastRunNever": "从未", "latestRun": "最近运行", - "leadAgent": "主导代理", + "leadAgent": "主导智能体", "leadAgentName": "主导:{{name}}", "limit": "限额($)", "linked": "已关联", @@ -391,13 +391,13 @@ "main": "main", "manage": "管理", "manageSkillsInCompany": "在公司中管理技能", - "mapOfficeAgentsToProvidersAnd": "将办公室代理映射到提供商与层级,并控制回退。高级功能;默认关闭。", + "mapOfficeAgentsToProvidersAnd": "将办公室智能体映射到提供商与层级,并控制回退。高级功能;默认关闭。", "markFixed": "标记为已修复", "marking": "正在标记…", "maxConcurrent": "最大并发", "maxConcurrentSessions": "最大并发会话", "memoryEntryDeleted": "记忆条目已删除", - "memoryIsAccumulatedAsTheAgent": "代理处理任务时会累积记忆。", + "memoryIsAccumulatedAsTheAgent": "智能体处理任务时会累积记忆。", "memoryMb": "内存(MB)", "metaKey": "键", "metaMode": "模式", @@ -415,13 +415,13 @@ "moveDown": "下移", "moveUp": "上移", "name": "名称", - "nameRoleAndReportingStructureFor": "此代理的名称、角色与汇报结构。", + "nameRoleAndReportingStructureFor": "此智能体的名称、角色与汇报结构。", "needsAction": "需要操作", "never": "从未", "neverRun": "从未运行", - "newAgent": "新建代理", - "newAgentHiresMustBeApproved": "新雇佣的代理须经批准后才能启用", - "newAgentsMatchingTheseRolesGet": "匹配这些角色的新代理会自动附加此技能", + "newAgent": "新建智能体", + "newAgentHiresMustBeApproved": "新雇佣的智能体须经批准后才能启用", + "newAgentsMatchingTheseRolesGet": "匹配这些角色的新智能体会自动附加此技能", "newIssue": "新建议题", "newProject": "新建项目", "newRoutine": "新建例行程序", @@ -432,18 +432,18 @@ "noActiveExecutionProfilesAreAvailable": "此提供商没有可用的活动执行配置。", "noActiveSessionForThisTask": "此任务没有活动会话。", "noActivityYet": "尚无活动。", - "noAgentProfileConfigured": "未配置代理配置", - "noAgentsAttached": "未附加代理", - "noAgentsInThisWorkspaceYet": "此工作区尚无代理。", - "noAgentsToDisplay": "无可显示的代理。", - "noAgentsYet": "尚无代理。", + "noAgentProfileConfigured": "未配置智能体配置", + "noAgentsAttached": "未附加智能体", + "noAgentsInThisWorkspaceYet": "此工作区尚无智能体。", + "noAgentsToDisplay": "无可显示的智能体。", + "noAgentsYet": "尚无智能体。", "noBudget": "无预算", "noBudgetPoliciesConfiguredAddOne": "未配置预算策略。添加一个以强制执行支出限制。", "noChangesDetected": "未检测到更改。", "noChannelsConfiguredAddAChannel": "未配置渠道。添加渠道以启用外部消息。", - "noCliAgentProfilesAvailableYet": "尚无可用的 CLI 代理配置。", + "noCliAgentProfilesAvailableYet": "尚无可用的 CLI 智能体配置。", "noConversationLinkedToThisRun": "此运行未关联对话。", - "noCostDataYetCostsAre": "尚无费用数据。代理运行任务时会记录费用。", + "noCostDataYetCostsAre": "尚无费用数据。智能体运行任务时会记录费用。", "noEventsRecordedForThisRun": "此运行尚无事件记录。", "noGrouping": "不分组", "noInitialTask": "无初始任务", @@ -457,12 +457,12 @@ "noneTopLevel": "无(顶层)", "noProject": "无项目", "noProjectsYet": "尚无项目。", - "noProviderHasTierMapped": "没有提供商映射了 {{tier}} 层级; 请在下方“提供商层级映射”中为 {{tier}} 设置模型。", + "noProviderHasTierMapped": "没有提供商映射了 {{tier}} 层级;请在下方“提供商层级映射”中为 {{tier}} 设置模型。", "noProviderInOrderHasTierMapped": "有效顺序中没有任何提供商映射了 {{tier}}。", "noProviderMappedForTierHelp": "有效顺序中没有任何提供商映射了 {{tier}} 层级。请在“工作区 → 提供商路由”中至少为一个提供商选择 {{tier}} 的执行配置。", "noProvidersConfigured": "未配置提供商。", "noProvidersSelected": "未选择提供商。", - "noRecentActivityActionsByAgents": "暂无最近活动。代理与用户的操作将显示在此。", + "noRecentActivityActionsByAgents": "暂无最近活动。智能体与用户的操作将显示在此。", "noRecentTasks": "暂无最近任务。", "noRepositoriesAddedYet": "尚未添加仓库。", "noRoute": "无路由", @@ -471,7 +471,7 @@ "noRunsWithCostDataYet": "尚无含费用数据的运行。", "noRunsYet": "尚无运行。", "noRunsYetShort": "尚无运行", - "noScheduledWakeUpsManageRoutines": "无计划唤醒; 管理例行程序", + "noScheduledWakeUpsManageRoutines": "无计划唤醒;管理例行程序", "noSkillsRegisteredYet": "尚未注册技能。", "noSkillsYetImportFromGithub": "尚无技能。可从 GitHub 导入或自行创建。", "noTasksFound": "未找到任务。", @@ -484,7 +484,7 @@ "noUtilizationDataClickRefreshTo": "无利用率数据。点击刷新以获取当前用量。", "observed": "观测到", "off": "关", - "officeTurnsYourBacklogIntoAutonomous": "办公室将待办转化为自主工作。协调代理会拆解每个任务、委派给专业工作者代理,并向你汇报进度。接下来你将命名此工作区、创建协调代理,并可选择交给它第一个任务以启动。", + "officeTurnsYourBacklogIntoAutonomous": "办公室将待办转化为自主工作。协调智能体会拆解每个任务、委派给专业工作者智能体,并向你汇报进度。接下来你将命名此工作区、创建协调智能体,并可选择交给它第一个任务以启动。", "on": "开", "onDisk": "磁盘上", "onDiskBadge": "磁盘上", @@ -501,11 +501,11 @@ "outgoingDatabaseFilesystem": "传出(数据库 → 文件系统)", "output": "输出", "outputTokens": "输出令牌", - "overrideTheWorkspaceTierOrProvider": "覆盖此代理的工作区层级或提供商顺序。", + "overrideTheWorkspaceTierOrProvider": "覆盖此智能体的工作区层级或提供商顺序。", "overrideWakeReasonTiers": "覆盖唤醒原因层级", - "overrideWakeReasonTiersHelp": "较少使用。仅当此代理的后台工作需要不同行为时覆盖; 例如安全关键代理即使例行检查也必须使用 Frontier。多数代理应继承工作区策略。", - "overrideWhichModelTierRunsFor": "覆盖特定类型代理工作使用的模型层级。多数用户保留工作区默认; 后台任务用 Economy,常规运行用 Balanced。心跳、计划例行程序与预算告警会在后台持续运行,因此在此使用更便宜的层级可大幅降低成本,而不影响关键工作。", - "overrideWorkspacePolicyForThisAgent": "为此代理覆盖工作区策略", + "overrideWakeReasonTiersHelp": "较少使用。仅当此智能体的后台工作需要不同行为时覆盖;例如安全关键智能体即使例行检查也必须使用 Frontier。多数智能体应继承工作区策略。", + "overrideWhichModelTierRunsFor": "覆盖特定类型智能体工作使用的模型层级。多数用户保留工作区默认;后台任务用 Economy,常规运行用 Balanced。心跳、计划例行程序与预算告警会在后台持续运行,因此在此使用更便宜的层级可大幅降低成本,而不影响关键工作。", + "overrideWorkspacePolicyForThisAgent": "为此智能体覆盖工作区策略", "overrideWorkspaceProviderOrder": "覆盖工作区提供商顺序", "overrideWorkspaceTier": "覆盖工作区层级", "overRuns": "{{overall}}% · 共 {{total}} 次运行", @@ -515,9 +515,9 @@ "participantsSelected_one": "已选 {{count}} 个", "participantsSelected_other": "已选 {{count}} 个", "pathGithubUrlOrSkillsSh": "路径、GitHub URL 或 skills.sh", - "pauseAgent": "暂停代理", - "pausedConsecutiveFailures_one": "已暂停; 连续失败 {{count}} 次", - "pausedConsecutiveFailures_other": "已暂停; 连续失败 {{count}} 次", + "pauseAgent": "暂停智能体", + "pausedConsecutiveFailures_one": "已暂停;连续失败 {{count}} 次", + "pausedConsecutiveFailures_other": "已暂停;连续失败 {{count}} 次", "pendingApproval": "待审批", "pendingApprovals": "待审批", "period": "周期", @@ -526,7 +526,7 @@ "permissionSettingsSaved": "权限设置已保存", "permissionsUpdated": "权限已更新", "pickAWorkspaceRepoADiscovered": "选择工作区仓库、已发现的本地路径,或粘贴 URL。", - "picksTheCliClientModelMode": "选择此代理将使用的 CLI 客户端、模型、模式与标志。", + "picksTheCliClientModelMode": "选择此智能体将使用的 CLI 客户端、模型、模式与标志。", "platform": "平台", "preferences": "偏好", "primary": "主要", @@ -597,7 +597,7 @@ "repositoryRemoved": "仓库已移除", "repositoryUrl": "仓库 URL", "requested": "已请求", - "requireApprovalForNewAgents": "新代理需审批", + "requireApprovalForNewAgents": "新智能体需审批", "requireApprovalForSkillChanges": "技能变更需审批", "requireApprovalForTaskCompletion": "任务完成需审批", "required": "必填", @@ -610,7 +610,7 @@ "retry": "重试", "retryAtSuffix": "· 重试 {{retryAt}}", "retryAtWhen": "于 {{when}} 重试", - "retryCancelledReassigned": "重试已取消; 已重新分配", + "retryCancelledReassigned": "重试已取消;已重新分配", "retrying": "正在重试…", "retryNow": "立即重试", "shortRetry": "即将重试", @@ -698,9 +698,9 @@ "searchTasks": "搜索任务…", "selectAFileToPreview": "选择要预览的文件", "selectAFileToViewOr": "选择要查看或编辑的文件。", - "selectAgent": "选择代理", - "selectAgentOptional": "选择代理(可选)", - "selectAnAgentProfile": "选择代理配置…", + "selectAgent": "选择智能体", + "selectAgentOptional": "选择智能体(可选)", + "selectAnAgentProfile": "选择智能体配置…", "selectApprover": "选择审批人", "selectAProjectToCreateATask": "选择项目以创建任务", "selectASkillToView": "选择要查看的技能", @@ -716,16 +716,16 @@ "sessionId": "会话 ID", "sessionIdAfter": "会话 ID(之后)", "sessionIdBefore": "会话 ID(之前)", - "setSpendingLimitsPerAgentOr": "按代理或项目设置支出限额。超出限额时代理会暂停。", - "setupTierAgentProfiles": "设置层级代理配置", + "setSpendingLimitsPerAgentOr": "按智能体或项目设置支出限额。超出限额时智能体会暂停。", + "setupTierAgentProfiles": "设置层级智能体配置", "setUpYourOfficeWorkspace": "设置你的办公室工作区", "ship": "发布", "showSystemTasks": "显示系统任务", - "skillAutoAttachedToRole": "此技能会自动附加到新的 {{role}} 代理。你仍可为此代理取消勾选。", + "skillAutoAttachedToRole": "此技能会自动附加到新的 {{role}} 智能体。你仍可为此智能体取消勾选。", "skillCount_one": "{{count}} 个技能", "skillCount_other": "{{count}} 个技能", "skillMdContent": "SKILL.md 内容", - "skillNameInstructionsForTheAgent": "# 技能名称\n\n给代理的说明…", + "skillNameInstructionsForTheAgent": "# 技能名称\n\n给智能体的说明…", "skills": "技能", "skillSourceGithub": "GitHub", "skillSourceGitRepository": "Git 仓库", @@ -736,8 +736,8 @@ "skillSourceLocalPath": "本地路径", "skillSourceSkillsSh": "skills.sh", "skillSourceUserHome": "用户主目录", - "skillsTeachAgentsHowToPerform": "技能教代理如何执行特定任务。可从 GitHub 导入或自行创建。", - "skillsThisAgentOwnsSkillsAre": "此代理拥有的技能。会话开始时技能会注入代理的系统提示词。", + "skillsTeachAgentsHowToPerform": "技能教智能体如何执行特定任务。可从 GitHub 导入或自行创建。", + "skillsThisAgentOwnsSkillsAre": "此智能体拥有的技能。会话开始时技能会注入智能体的系统提示词。", "skillsUpdated": "技能已更新", "skipIfActive": "活动时跳过", "skipMissed": "跳过错过的", @@ -767,7 +767,7 @@ "stepNumberTitle": "步骤 {{number}}:{{title}}", "stepSchedule": "计划", "stepTaskTemplate": "任务模板", - "stepXOfYTitle": "步骤 {{number}} / {{total}}; {{title}}", + "stepXOfYTitle": "步骤 {{number}} / {{total}};{{title}}", "structuredResult": "结构化结果", "subIssueOfParent": "{{parent}} 的子议题", "subscriptionQuota": "订阅配额", @@ -801,28 +801,28 @@ "taskTitle": "任务标题", "taskTitleTemplate": "任务标题模板", "telegram": "Telegram", - "theAgentResponsibleForManagingThis": "负责管理此项目的代理", - "theCoordinatorCanCreateWorkerAgents": "协调代理可创建工作者代理并为每个选择层级。每个层级会解析为这里选择的配置,之后可在工作区路由中更改。", - "theCoordinatorManagesOtherAgentsDelegates": "协调代理管理其他代理、委派任务并监控进度。", - "thisAgentAsTheAssignee": "以此代理为负责人", - "thisCoordinatorHasNoScheduledWake": "此协调代理无计划唤醒; 仅在评论、错误或手动触发时运行。", - "thisPermanentlyDeletesAgentsTasksSkills": "将永久删除代理、任务、技能、例行程序与配置。", + "theAgentResponsibleForManagingThis": "负责管理此项目的智能体", + "theCoordinatorCanCreateWorkerAgents": "协调智能体可创建工作者智能体并为每个选择层级。每个层级会解析为这里选择的配置,之后可在工作区路由中更改。", + "theCoordinatorManagesOtherAgentsDelegates": "协调智能体管理其他智能体、委派任务并监控进度。", + "thisAgentAsTheAssignee": "以此智能体为负责人", + "thisCoordinatorHasNoScheduledWake": "此协调智能体无计划唤醒;仅在评论、错误或手动触发时运行。", + "thisPermanentlyDeletesAgentsTasksSkills": "将永久删除智能体、任务、技能、例行程序与配置。", "thisProvider": "此提供商", - "thisWillPermanentlyDeleteAllMemory": "将永久删除此代理的全部记忆条目。此操作无法撤销。", + "thisWillPermanentlyDeleteAllMemory": "将永久删除此智能体的全部记忆条目。此操作无法撤销。", "thisWillPermanentlyDeleteThisInstruction": "将永久删除此说明文件。此操作无法撤销。", "tier": "层级", "tierBalanced": "Balanced", - "tierBalancedDescription": "当协调代理分配 Balanced 层级时,用于一般工作者代理。", + "tierBalancedDescription": "当协调智能体分配 Balanced 层级时,用于一般工作者智能体。", "tierBalancedHint": "标准能力", "tierBalancedQualified": "Balanced(标准)", "tierBalancedUsage": "Balanced 层级用量", "tierEconomy": "Economy", - "tierEconomyDescription": "当协调代理分配 Economy 层级时,用于 QA、例行与低成本代理。", + "tierEconomyDescription": "当协调智能体分配 Economy 层级时,用于 QA、例行与低成本智能体。", "tierEconomyHint": "最便宜的可用模型", "tierEconomyQualified": "Economy(最便宜)", "tierEconomyUsage": "Economy 层级用量", "tierFrontier": "Frontier", - "tierFrontierDescription": "当协调代理创建最高能力工作的代理或分配 Frontier 层级时使用。", + "tierFrontierDescription": "当协调智能体创建最高能力工作的智能体或分配 Frontier 层级时使用。", "tierFrontierHint": "各提供商的最强能力", "tierFrontierQualified": "Frontier(最强能力)", "tierFrontierUsage": "Frontier 层级用量", @@ -833,7 +833,7 @@ "title": "标题", "titleForAutoCreatedTasksUse": "自动创建任务的标题。可用 {{name}} 与 {{date}} 作为占位符。", "toggleNesting": "切换嵌套", - "topToBottomFallbackOrderAgents": "自上而下的回退顺序。除非覆盖,代理会尝试第一个健康的提供商。", + "topToBottomFallbackOrderAgents": "自上而下的回退顺序。除非覆盖,智能体会尝试第一个健康的提供商。", "toSetUpARoutineYou": "设置例行程序需要:", "total": "合计", "totalApiCostsThisBillingPeriod": "本计费周期的 API 总费用", @@ -855,35 +855,35 @@ "updateWorkspaceConfiguration": "更新工作区配置", "upload": "上传", "uploadLogo": "上传图标", - "useAgentSNormalTier": "使用代理的常规层级", + "useAgentSNormalTier": "使用智能体的常规层级", "usedBy": "使用者", "useQuery": "使用“{{query}}”", - "usingThisAgentsWakeReasonOverrides": "正在使用此代理的唤醒原因覆盖。", + "usingThisAgentsWakeReasonOverrides": "正在使用此智能体的唤醒原因覆盖。", "variables": "变量", "waiting": "等待中…", "waitingForCapacity": "等待容量", "wakeBudgetAlert": "预算告警", - "wakeBudgetAlertLong": "预算告警是快速确认工作; 代理读取告警、决定是否暂停工作或通知人工,然后继续休眠。几乎不涉及重推理,因此最便宜的层级几乎总是够用。", + "wakeBudgetAlertLong": "预算告警是快速确认工作;智能体读取告警、决定是否暂停工作或通知人工,然后继续休眠。几乎不涉及重推理,因此最便宜的层级几乎总是够用。", "wakeBudgetAlertRecommendation": "快速确认工作 → 更便宜的层级即可。", - "wakeBudgetAlertShort": "当工作区或项目预算接近限额、可能需要限流或上报时通知代理。", + "wakeBudgetAlertShort": "当工作区或项目预算接近限额、可能需要限流或上报时通知智能体。", "wakeHeartbeat": "心跳", - "wakeHeartbeatLong": "心跳保持代理反应灵敏:快速扫描收件箱、未完成任务与预算告警。它们在后台持续触发,因此在此使用更便宜的层级可大幅降低月度支出,而不影响关键工作。", + "wakeHeartbeatLong": "心跳保持智能体反应灵敏:快速扫描收件箱、未完成任务与预算告警。它们在后台持续触发,因此在此使用更便宜的层级可大幅降低月度支出,而不影响关键工作。", "wakeHeartbeatRecommendation": "非常频繁 → 建议使用更便宜的层级。", - "wakeHeartbeatShort": "代理按计划(每隔几分钟)运行的定期检查,查看是否有需要关注的新事项。", + "wakeHeartbeatShort": "智能体按计划(每隔几分钟)运行的定期检查,查看是否有需要关注的新事项。", "wakeReasonTierPolicy": "唤醒原因层级策略", "wakeRoutineTrigger": "例行程序触发", - "wakeRoutineTriggerLong": "例行程序触发按你控制的 cron 计划运行。工作负载可预期且很少时间关键,因此更便宜的层级通常足够。若特定例行程序需要更强模型,可按代理覆盖。", + "wakeRoutineTriggerLong": "例行程序触发按你控制的 cron 计划运行。工作负载可预期且很少时间关键,因此更便宜的层级通常足够。若特定例行程序需要更强模型,可按智能体覆盖。", "wakeRoutineTriggerRecommendation": "可预期的工作负载 → 更便宜的层级通常足够。", "wakeRoutineTriggerShort": "你在“例行程序”下设置的计划任务(例如“每周一上午汇总 PR”)。", "warning": "警告", "webhook": "Webhook", - "whatEachAgentWouldLaunchWith": "在当前设置下每个代理将如何启动。", + "whatEachAgentWouldLaunchWith": "在当前设置下每个智能体将如何启动。", "whatHappensIfThePreviousRun": "若上一次运行仍在进行,会发生什么", "whatHappensToTicksMissedWhile": "后端离线期间错过的触发如何处理", - "whatTheAgentReceivedAndProduced": "代理接收与产生的内容。", + "whatTheAgentReceivedAndProduced": "智能体接收与产生的内容。", "whenEnabledProviderLimitsCanMove": "启用后,提供商限制可将运行移至下一个已配置的执行配置。禁用后,办公室仅对所选层级使用第一个提供商。", "whetherThisSkillSContentCan": "此技能内容是否可在 Kandev 中编辑", - "whichAgentManagesThisOne": "管理此代理的上级代理", + "whichAgentManagesThisOne": "管理此智能体的上级智能体", "workingDir": "工作目录", "workspaceCreatedSuccessfully": "工作区创建成功", "workspaceDefaultForThisReason": "此原因的工作区默认:", diff --git a/apps/web/src/locales/zh-cn/plugins.json b/apps/web/src/locales/zh-cn/plugins.json index a60ae06a6c..4a24d0f8ac 100644 --- a/apps/web/src/locales/zh-cn/plugins.json +++ b/apps/web/src/locales/zh-cn/plugins.json @@ -36,9 +36,9 @@ "installing": "正在安装…", "loadingMarketplace": "正在加载市场…", "loadingPlugins": "正在加载插件…", - "loadingSelectedUtilityAgent": "正在加载所选实用代理…", + "loadingSelectedUtilityAgent": "正在加载所选辅助智能体…", "loadingSettings": "正在加载设置…", - "loadingUtilityAgents": "正在加载实用代理…", + "loadingUtilityAgents": "正在加载辅助智能体…", "manifest": "清单", "manifestApiVersion": "API 版本", "manifestAuthor": "作者", @@ -71,20 +71,20 @@ "resetAutoUpdateFor": "将 {{name}} 的自动更新重置为默认", "savingRestartsPlugin": "保存后将重启插件以使新设置生效。", "searchPlugins": "搜索插件…", - "selectAUtilityAgent": "选择实用代理…", + "selectAUtilityAgent": "选择辅助智能体…", "selectPlaceholder": "选择…", - "selectedUtilityAgentUnavailable": "所选实用代理不可用", + "selectedUtilityAgentUnavailable": "所选辅助智能体不可用", "settings": "设置", "settingsDescription": "浏览市场,然后安装、启用、禁用和卸载 Kandev 插件。", "settingsSaved": "插件设置已保存", - "settingsSavedReloadFailed": "设置已保存,但重新加载失败; 请刷新以确认。", + "settingsSavedReloadFailed": "设置已保存,但重新加载失败;请刷新以确认。", "sortMostStars": "星标最多", "sortName": "名称", "sortRecentlyUpdated": "最近更新", "sourceNamePlaceholder": "来源名称(例如 Acme Internal)", "sourceOfficial": "官方", "sourceUnreachable": "无法访问", - "sourceUnreachableDetail": "<0>{{name}} 无法访问{{detail}}; 其插件已隐藏。", + "sourceUnreachableDetail": "<0>{{name}} 无法访问{{detail}};其插件已隐藏。", "sources": "来源", "statusActive": "活跃", "statusDisabled": "已禁用", @@ -111,7 +111,7 @@ "updateToVersion": "更新到 v{{version}}", "updating": "正在更新…", "uploadFile": "上传文件", - "utilityAgentsUnavailable": "实用代理不可用", + "utilityAgentsUnavailable": "辅助智能体不可用", "viewRaw": "查看原始内容", "yes": "是" } diff --git a/apps/web/src/locales/zh-cn/review.json b/apps/web/src/locales/zh-cn/review.json index 51cda17484..8fd40cf944 100644 --- a/apps/web/src/locales/zh-cn/review.json +++ b/apps/web/src/locales/zh-cn/review.json @@ -10,13 +10,13 @@ "commentSent": "评论已发送", "copyDiff": "复制 diff", "diffLoading": "正在加载 diff…", - "diffSkipBinary": "二进制文件; 无法比较 diff", - "diffSkipBudgetExceeded": "已跳过 diff; 更改文件过多", + "diffSkipBinary": "二进制文件;无法比较 diff", + "diffSkipBudgetExceeded": "已跳过 diff;更改文件过多", "diffSkipTooLarge": "文件过大,无法比较 diff(>10 MB)", "diffSkipTruncated": "diff 已截断(>256 KB)", - "diffTruncated": "diff 已截断; 仅显示前 256 KB", + "diffTruncated": "diff 已截断;仅显示前 256 KB", "discardWalkthrough": "丢弃导览", - "discardWalkthroughDescription": "这将移除此任务上已保存的导览。代理之后可以再创建新的。", + "discardWalkthroughDescription": "这将移除此任务上已保存的导览。智能体之后可以再创建新的。", "discardWalkthroughTitle": "丢弃导览?", "editFile": "编辑文件", "expandAll": "全部展开", @@ -55,18 +55,18 @@ "pendingCommentCount_other": "{{count}} 条待处理审阅评论", "pleaseTryAgain": "请重试。", "previewMarkdown": "预览 Markdown", - "queuedForTheAgent": "已排队等待代理。", + "queuedForTheAgent": "已排队等待智能体。", "resizeFileList": "调整文件列表大小", "retry": "重试", "revertChanges": "还原更改", - "reviewAgentUnavailableNotice": "未配置可用于审阅的推理代理。<2>设置 → 实用代理", + "reviewAgentUnavailableNotice": "未配置可用于审阅的推理智能体。<2>设置 → 辅助智能体", "reviewChanges": "审阅更改", "reviewChangesTitle": "审阅更改", "reviewInProgress": "审阅进行中", "reviewPullRequest": "审阅拉取请求", "reviewPullRequestFor": "审阅拉取请求 {{repo}} #{{prNumber}}", - "reviewTheseChangesWithAnAgent": "使用代理审阅这些更改", - "sentToTheAgent": "已发送给代理。", + "reviewTheseChangesWithAnAgent": "使用智能体审阅这些更改", + "sentToTheAgent": "已发送给智能体。", "showDiff": "显示 diff", "staleChanged": "已更改", "switchToSplitView": "切换到分栏视图", diff --git a/apps/web/src/locales/zh-cn/sentry.json b/apps/web/src/locales/zh-cn/sentry.json index 1d8f582d7e..1cc48b3c51 100644 --- a/apps/web/src/locales/zh-cn/sentry.json +++ b/apps/web/src/locales/zh-cn/sentry.json @@ -2,7 +2,7 @@ "actions": "操作", "active": "活动", "addInstance": "添加实例", - "agentProfile": "代理配置", + "agentProfile": "智能体配置", "allProjects": "全部项目", "any": "(任意)", "authToken": "身份验证令牌", @@ -71,7 +71,7 @@ "newInstance": "新建实例", "newWatcher": "新建监控", "noCap": "(不限制)", - "noHealthySentryInstanceCheckThe": "没有健康的 Sentry 实例; 请检查集成设置。", + "noHealthySentryInstanceCheckThe": "没有健康的 Sentry 实例;请检查集成设置。", "noInstancesInWorkspace": "此工作区中没有 Sentry 实例", "noInstancesYet": "尚无 Sentry 实例。添加一个实例以连接此工作区。", "noIssuesYetRunASearch": "暂无议题。运行搜索以开始。", @@ -109,7 +109,7 @@ "projectSlugHelp": "要轮询的 Sentry 项目。可选择一个或多个。", "projectsSelected_one": "已选择 {{count}} 个项目", "projectsSelected_other": "已选择 {{count}} 个项目", - "promptFieldHelp": "为每个新议题发送给代理的提示词。输入 {{token}} 可插入占位符。", + "promptFieldHelp": "为每个新议题发送给智能体的提示词。输入 {{token}} 可插入占位符。", "query": "查询", "queryExample": "例如 {{query}}", "queryHelp": "自由文本 Sentry 搜索查询(可选)。", @@ -126,7 +126,7 @@ "scopeEventRead": "议题和事件--浏览议题并运行监控", "scopeOrgRead": "组织--解析组织并列出议题", "scopeProjectRead": "项目--列出项目并限定搜索范围", - "searchProjects": "搜索项目...", + "searchProjects": "搜索项目…", "selectASentryInstanceToBrowse": "选择一个 Sentry 实例以浏览其议题。", "selectAnInstance": "选择实例", "selectAnInstanceToBrowse": "选择要浏览的实例", @@ -157,7 +157,7 @@ "taskPrompt": "任务提示词", "testConnection": "测试连接", "testFailed": "失败:{{error}}", - "testing": "正在测试...", + "testing": "正在测试…", "update": "更新", "updateFailed": "更新失败:{{error}}", "useStepDefault": "(使用步骤默认值)", diff --git a/apps/web/src/locales/zh-cn/settings.json b/apps/web/src/locales/zh-cn/settings.json index 106eb6d5da..e82a9da32a 100644 --- a/apps/web/src/locales/zh-cn/settings.json +++ b/apps/web/src/locales/zh-cn/settings.json @@ -4,7 +4,7 @@ "aboutAffectedKandevMcpTools": "关于受影响的 Kandev MCP 工具", "accessControl": "访问控制", "actionsFor": "{{target}} 的操作", - "activeKandevSpritesSpritesAreDestroyed": "活跃的 Kandev 云沙盒。代理停止时会销毁这些云沙盒。", + "activeKandevSpritesSpritesAreDestroyed": "活跃的 Kandev 云沙盒。智能体停止时会销毁这些云沙盒。", "activeSessions": "活动会话", "activeSprites_one": "{{count}} 个活跃云沙盒。", "activeSprites_other": "{{count}} 个活跃云沙盒。", @@ -17,17 +17,17 @@ "addSecret": "添加密钥", "addTheTabToTheSelected": "将 {{panel}} 标签页添加到所选拆分区域。", "affectedKandevMcpTool": "受影响的 Kandev MCP 工具", - "agent": "代理", - "agentFallback": "代理回退", - "agentFallbackAria": "代理回退模型设置", + "agent": "智能体", + "agentFallback": "智能体回退", + "agentFallbackAria": "智能体回退模型设置", "agentFallbackDisabledHelper": "已启用自动回退。关闭后才能选择一个指定的回退模型。", "agentFallbackHelper": "如果启动模型不可用,则自动切换到此模型。", "agentFallbackHelp": "如果启动模型不可用,Kandev 只会尝试此模型。如果此模型也不可用,会话将失败。需要可预测的回退行为时使用此选项。", - "agentFallbackHelpTitle": "代理回退", - "agentFallbackInfoLabel": "说明代理回退", + "agentFallbackHelpTitle": "智能体回退", + "agentFallbackInfoLabel": "说明智能体回退", "agentFallbackPlaceholder": "选择回退模型…", - "agentGeneratedTaskTitles": "由代理生成任务标题", - "agentGeneratedTaskTitlesDescription": "启用后,新建任务和子任务表单会隐藏手动标题字段,并要求填写提示词。Kandev 会立即使用提示词的前六个词生成临时标题,然后让代理将其替换为约三个词的简洁标题。如果代理无法重命名任务,你仍可编辑临时标题。现有任务和经过编辑的任务会继续显示常规标题字段。", + "agentGeneratedTaskTitles": "由智能体生成任务标题", + "agentGeneratedTaskTitlesDescription": "启用后,新建任务和子任务表单会隐藏手动标题字段,并要求填写提示词。Kandev 会立即使用提示词的前六个词生成临时标题,然后让智能体将其替换为约三个词的简洁标题。如果智能体无法重命名任务,你仍可编辑临时标题。现有任务和经过编辑的任务会继续显示常规标题字段。", "agentGeneratedTaskTitlesDisabledHint": "默认关闭;请先保存此设置,再打开创建对话框。", "apiTokenIsConfigured": "API 令牌已配置。", "appearance": "外观", @@ -36,16 +36,16 @@ "appriseServiceUrls": "服务 URL", "appriseUrlRequired": "至少需要一个 Apprise 服务 URL。", "archiveConfirmation": "归档确认", - "preventAutoStartAgentOnOpen": "打开时阻止自动启动", - "preventAutoStartAgentOnOpenHelp": "重启后或从工作流最后一步打开任务时,不会自动启动代理,而是显示启动代理按钮。", + "preventAutoStartAgentOnOpen": "打开任务时不自动启动智能体", + "preventAutoStartAgentOnOpenHelp": "重启后,或从工作流最后一步打开任务时,不会自动启动智能体,改为显示“启动智能体”按钮。", "arrangeSplit": "调整拆分布局", "autoApprove": "自动批准", "autoInstallIfNotFound": "未找到时自动安装", "autoStart": "自动启动", "autoStartLanguageServersWhenOpening": "打开文件时自动启动语言服务器,以获取诊断、悬停信息和转到定义功能。你也可以按文件分别开关每个服务器。", "autoFallback": "自动回退到下一个模型", - "autoFallbackHelper": "启动模型不可用时,让代理选择下一个可用模型,而不是直接失败。启用后会停用显式回退模型。", - "autoFallbackHelp": "如果启动模型不可用,Kandev 会让代理从其余已公布的模型中选择。可用性变化时,所选模型也可能变化。", + "autoFallbackHelper": "启动模型不可用时,让智能体选择下一个可用模型,而不是直接失败。启用后会停用显式回退模型。", + "autoFallbackHelp": "如果启动模型不可用,Kandev 会让智能体从其余已公布的模型中选择。可用性变化时,所选模型也可能变化。", "autoFallbackHelpTitle": "自动回退", "autoFallbackInfoLabel": "说明自动回退", "autoStartLanguageServer": "自动启动 {{language}} 语言服务器", @@ -66,7 +66,7 @@ "changesTheLanguageOfTheKandev": "更改 Kandev 界面的语言。更改会立即生效,并记住在此设备上。任务标题、聊天以及你创建的其他内容不会翻译。", "chatInput": "聊天输入", "chooseAMonospaceFontForThe": "为终端选择等宽字体。Nerd Fonts 包含 CLI 工具所需的图标。", - "chooseHowDeepTheSettingsMenuGoes": "选择设置菜单仅列出页面,还是将工作区、代理和执行器展开为其中的具体内容。", + "chooseHowDeepTheSettingsMenuGoes": "选择设置菜单仅列出页面,还是将工作区、智能体和执行器展开为其中的具体内容。", "chooseTheLanguageUsedAcrossThe": "选择 Kandev 界面使用的语言", "chooseWhatOpensWhenKandevStarts": "选择 Kandev 启动时或访问其不带路径的主页时打开的内容", "chooseWhichTranscriptNavigationControls": "选择要显示的对话记录导航控件,包括仅限桌面的固定提示栏", @@ -79,10 +79,10 @@ "colorTheme": "颜色主题", "command": "命令", "completeTheRequiredEditorFieldsBefore": "保存前请填写必需的编辑器字段。", - "configChatAgentDescription": "选择用于配置聊天的代理配置。此代理可管理你的工作流、代理配置与 MCP 配置。", + "configChatAgentDescription": "选择用于配置聊天的智能体配置。此智能体可管理你的工作流、智能体配置与 MCP 配置。", "configChatAgentNoDefault": "无默认", - "configChatAgentTitle": "配置聊天代理", - "configureArchiveSafeguardsAndDefaultsFor": "配置代理创建任务时的归档保护和默认设置", + "configChatAgentTitle": "配置聊天智能体", + "configureArchiveSafeguardsAndDefaultsFor": "配置智能体创建任务时的归档保护和默认设置", "configureBackendAndExecutionResourceSampling": "配置后端和执行资源采样", "configureStatusBarVisibility": "选择是否显示 Kandev 的状态区域", "configureChatInputBehavior": "配置聊天输入行为", @@ -109,7 +109,7 @@ "custom": "自定义", "customEditorType": "自定义", "customEditors": "自定义编辑器", - "customEllipsis": "自定义...", + "customEllipsis": "自定义…", "customFontExample": "例如 \"我的自定义字体\"", "customizeHowChangedFilesAreDisplayed": "自定义变更文件的显示方式", "customizeHowTheApplicationLooks": "自定义应用外观", @@ -127,7 +127,7 @@ "deleteSecret": "删除密钥", "deleteThisCustomLayoutAfterConfirmation": "确认后删除此自定义布局。", "desktopNotifications": "桌面通知", - "desktopNotificationsDescription": "当选定的代理回合、问题或办公室事件发生时通知此设备。", + "desktopNotificationsDescription": "当选定的智能体回合、问题或办公室事件发生时通知此设备。", "desktopOnlyWhileYouScrollPast": "仅限桌面端。滚动越过最后一条提示时,将缩短后的副本固定到记录顶部,并提供展开开关。", "destroyAll": "全部销毁", "diagnosticACPNoSessions": "调试模式下可以下载 ACP 数据,但此账户没有可包含的合格会话。", @@ -149,7 +149,7 @@ "diagnosticCustomizerTitle": "自定义诊断包", "diagnosticFrontendEvents": "前端日志包含此浏览器配置中记录的控制台错误、警告和诊断通知报告。", "diagnosticIncidentalText": "日志条目中已写入的附带文本不会自动脱敏。分享前请检查 ZIP。", - "diagnosticNoMessages": "标准诊断包不包含聊天记录、会话消息或代理消息。", + "diagnosticNoMessages": "标准诊断包不包含聊天记录、会话消息或智能体消息。", "diagnosticOpenTask": "在新标签页中打开任务 {{title}}", "diagnosticPartialZipDownloading": "正在下载部分诊断 ZIP:{{warnings}}", "diagnosticPartialZipUnavailable": "正在下载部分诊断 ZIP;部分前端日志不可用。", @@ -167,7 +167,7 @@ "diagnosticSessionsDescription_other": "最多选择 {{count}} 个符合条件的会话。无法收集不可用的会话。", "diagnosticSessionsLoading": "正在加载符合条件的会话…", "diagnosticSourceACP": "ACP 调试消息", - "diagnosticSourceACPDescription": "所选会话的原始及标准化代理协议帧。", + "diagnosticSourceACPDescription": "所选会话的原始及标准化智能体协议帧。", "diagnosticSourceBackend": "后端日志", "diagnosticSourceBackendDescription": "最多三天的 Kandev 后端保留日志文件。", "diagnosticSourceFrontend": "前端日志", @@ -178,9 +178,9 @@ "diagnosticSourcesTitle": "证据来源", "diagnosticZipDownloading": "诊断 ZIP 正在下载。", "discardAndLeave": "放弃更改并离开", - "discarding": "正在放弃...", + "discarding": "正在放弃…", "disconnected": "已断开连接", - "discoveryAliasesAgentTaskProfile": "MCP 任务配置,代理任务默认", + "discoveryAliasesAgentTaskProfile": "MCP 任务配置,智能体任务默认", "discoveryAliasesArchiveConfirmation": "归档警告,确认归档", "discoveryAliasesColorTheme": "主题,浅色模式,深色模式,外观", "discoveryAliasesDesktopNotifications": "桌面提醒,系统通知", @@ -192,9 +192,9 @@ "discoveryAliasesNotificationSound": "通知音,提示音,警报音", "discoveryAliasesPreferredShell": "shell,zsh,bash,终端 shell", "discoveryAliasesResourceMetrics": "指标,CPU,内存,磁盘,状态栏", - "discoveryAliasesSettingsMenu": "侧边栏,导航,树,手风琴,菜单", + "discoveryAliasesSettingsMenu": "侧边栏,导航,树形菜单,单分支展开,保留展开,菜单", "discoveryAliasesStartupPage": "主页,起始页,启动页", - "discoveryAliasesStatusBar": "底栏,状态抽屉,连接状态,外观", + "discoveryAliasesStatusBar": "底栏,状态面板,连接状态,外观", "discoveryAliasesSubmitShortcut": "发送键,回车发送,Command Enter", "discoveryAliasesTerminalFont": "字体系列,字体,等宽", "discoveryAliasesTerminalFontSize": "文字大小,终端文字", @@ -204,7 +204,7 @@ "discoveryAliasesUtilityDefaultModel": "实用模型,推理模型,默认 AI 模型", "disk": "磁盘 %", "diskPath": "磁盘路径", - "displayChangedFilesAsAFlat": "将变更文件显示为包含完整路径的平铺列表,或显示为文件夹树。", + "displayChangedFilesAsAFlat": "将变更文件显示为包含完整路径的单层列表,或显示为文件夹树。", "displayLanguage": "显示语言", "done": "完成", "duplicate": "复制", @@ -217,37 +217,37 @@ "editors": "编辑器", "enableDesktopNotifications": "启用桌面通知", "enableNotificationSound": "启用通知声音", - "enterAShellPathOrCommand": "输入代理环境中可用的命令解释器路径或命令。", + "enterAShellPathOrCommand": "输入智能体环境中可用的命令解释器路径或命令。", "enterToSend": "按 Enter 发送", "externalMcpAvailableTools": "可用工具", "externalMcpCategoryCount_one": "{{count}} 个类别", "externalMcpCategoryCount_other": "{{count}} 个类别", - "externalMcpConfigPathOrCli": "{{path}}; 或运行下方 CLI 命令", + "externalMcpConfigPathOrCli": "{{path}};或运行下方 CLI 命令", "externalMcpCopied": "已复制", "externalMcpCopyToClipboard": "复制到剪贴板", "externalMcpCopyUrl": "复制 URL", "externalMcpEndpoints": "端点", - "externalMcpEndpointsDescription": "与 Kandev 使用相同主机与端口。本机代理使用 {{localhostHost}};LAN、VPN 与反向代理客户端使用可达的 Kandev URL。", - "externalMcpGroupAgentProfiles": "代理配置与 MCP 配置", + "externalMcpEndpointsDescription": "与 Kandev 使用相同主机与端口。本机智能体使用 {{localhostHost}};LAN、VPN 与反向代理客户端使用可达的 Kandev URL。", + "externalMcpGroupAgentProfiles": "智能体配置与 MCP 配置", "externalMcpGroupAgentProfilesDescription": "管理配置级 MCP 服务器设置。", - "externalMcpGroupAgents": "代理", - "externalMcpGroupAgentsDescription": "检查并配置代理目录。", + "externalMcpGroupAgents": "智能体", + "externalMcpGroupAgentsDescription": "检查并配置智能体目录。", "externalMcpGroupExecutors": "执行器", "externalMcpGroupExecutorsDescription": "对执行器配置进行 CRUD(Docker、独立、Sprites…)。", "externalMcpGroupTaskCreation": "任务创建", - "externalMcpGroupTaskCreationDescription": "从外部代理创建新的顶层任务或子任务。", + "externalMcpGroupTaskCreationDescription": "从外部智能体创建新的顶层任务或子任务。", "externalMcpGroupTasks": "任务", "externalMcpGroupTasksDescription": "列出、移动、归档并更新任务状态。", "externalMcpGroupWorkflowSteps": "工作流步骤(列)", "externalMcpGroupWorkflowStepsDescription": "管理构成工作流的列。", "externalMcpGroupWorkspaces": "工作区与工作流", "externalMcpGroupWorkspacesDescription": "发现工作区并对工作流进行 CRUD。", - "externalMcpIntro": "若要从运行在 Kandev <2>外部 的编码代理(例如主机上的 Claude Code、Cursor 或 Codex)管理 Kandev,或从 Kandev 内的 <4>透传代理 管理,请使用此功能。", - "externalMcpIntroPassthrough": "在 Kandev 内以正常模式启动的代理已自动接入 Kandev MCP,无需额外设置。", + "externalMcpIntro": "若要从运行在 Kandev <2>外部 的编码智能体(例如主机上的 Claude Code、Cursor 或 Codex)管理 Kandev,或从 Kandev 内的 <4>透传智能体 管理,请使用此功能。", + "externalMcpIntroPassthrough": "在 Kandev 内以正常模式启动的智能体已自动接入 Kandev MCP,无需额外设置。", "externalMcpOneLiner": "一行命令(写入 {{path}})", "externalMcpOpenCodePaths": "{{projectPath}}(项目)或 {{globalPath}}(全局)", "externalMcpSnippets": "配置片段", - "externalMcpSnippetsDescription": "粘贴到代理的全局 MCP 配置中。", + "externalMcpSnippetsDescription": "粘贴到智能体的全局 MCP 配置中。", "externalMcpSse": "Server-Sent Events(SSE)", "externalMcpSseHint": "兼容旧版 MCP 客户端的传输方式。", "externalMcpStreamableHttp": "Streamable HTTP", @@ -255,19 +255,19 @@ "externalMcpToolArchiveTask": "归档任务。", "externalMcpToolCount_one": "{{count}} 个工具", "externalMcpToolCount_other": "{{count}} 个工具", - "externalMcpToolCreateAgentProfile": "创建新代理配置(模型、自动批准)。", + "externalMcpToolCreateAgentProfile": "创建新智能体配置(模型、自动批准)。", "externalMcpToolCreateExecutorProfile": "创建带配置、准备/清理脚本的配置。", "externalMcpToolCreateTask": "创建顶层任务,或在显式 {{parentIdParam}} 下创建子任务。", "externalMcpToolCreateWorkflow": "创建工作流。", "externalMcpToolCreateWorkflowStep": "添加带提示词、颜色与事件钩子的新列。", - "externalMcpToolDeleteAgentProfile": "删除代理配置。", + "externalMcpToolDeleteAgentProfile": "删除智能体配置。", "externalMcpToolDeleteExecutorProfile": "删除执行器配置。", "externalMcpToolDeleteTask": "永久删除任务。", "externalMcpToolDeleteWorkflow": "删除工作流及其所有步骤(破坏性)。", "externalMcpToolDeleteWorkflowStep": "删除步骤(破坏性)。", "externalMcpToolGetMcpConfig": "读取配置的 MCP 服务器映射。", - "externalMcpToolListAgentProfiles": "列出代理的配置。", - "externalMcpToolListAgents": "列出已配置的代理及其配置。", + "externalMcpToolListAgentProfiles": "列出智能体的配置。", + "externalMcpToolListAgents": "列出已配置的智能体及其配置。", "externalMcpToolListExecutorProfiles": "列出执行器的配置。", "externalMcpToolListExecutors": "列出所有执行器。", "externalMcpToolListTasks": "列出工作流中的任务。", @@ -276,14 +276,14 @@ "externalMcpToolListWorkspaces": "列出所有工作区。", "externalMcpToolMoveTask": "将任务移到其他步骤或位置。", "externalMcpToolReorderWorkflowSteps": "设置步骤 ID 的完整有序列表。", - "externalMcpToolUpdateAgent": "切换 MCP 支持或设置配置路径。", + "externalMcpToolUpdateAgent": "切换 MCP 支持或指定配置文件路径。", "externalMcpToolUpdateAgentProfile": "更新名称、模型或自动批准。", "externalMcpToolUpdateExecutorProfile": "更新执行器配置。", "externalMcpToolUpdateMcpConfig": "替换配置的 MCP 服务器映射。", "externalMcpToolUpdateTaskState": "设置任务状态:{{states}}。", "externalMcpToolUpdateWorkflow": "重命名或更新工作流。", "externalMcpToolUpdateWorkflowStep": "编辑步骤设置或事件。", - "externalMcpToolsSummary": "{{tools}},共 {{categories}}; 展开可预览外部代理能做什么。", + "externalMcpToolsSummary": "{{tools}},共 {{categories}};展开可预览外部智能体能做什么。", "externalProviders": "外部提供商", "externalProvidersDescription": "配置用于远程通知的外部提供商。", "failedToConnectToBackend": "无法连接到后端", @@ -291,7 +291,7 @@ "fileEditor": "文件编辑器", "fileListView": "文件列表视图", "fixInvalidLspServerConfigurationBefore": "保存前请修复无效的 LSP 服务器配置。", - "flatList": "平铺列表", + "flatList": "单层列表", "fontFamily": "字体", "fontSize": "字号", "frequencySeconds": "频率(秒)", @@ -316,7 +316,7 @@ "inferenceAgentProbing": "正在设置 {{name}}…", "inferenceAgentRefresh": "刷新", "inferenceAgentRefreshing": "正在刷新…", - "inferenceAgentThisAgent": "此代理", + "inferenceAgentThisAgent": "此智能体", "inferenceAgentUnavailable": "{{name}} 已不可用。", "installed": "已安装", "integrationDescriptionAzureDevops": "Azure Boards 工作项与 Azure Repos 拉取请求。", @@ -325,8 +325,8 @@ "integrationDescriptionJira": "Atlassian Cloud 凭据与 JQL 议题监控。", "integrationDescriptionLinear": "个人 API 密钥与团队默认值。", "integrationDescriptionSentry": "认证令牌、组织/项目默认值与议题浏览。", - "hideDisabledAgentProfilesFromNav": "在左侧导航中隐藏已禁用的代理配置", - "hideDisabledAgentProfilesFromNavDescription": "开启后,即使配置文件仍已配置,已禁用的代理配置也会从左侧导航中移除。", + "hideDisabledAgentProfilesFromNav": "在左侧导航中隐藏已禁用的智能体配置", + "hideDisabledAgentProfilesFromNavDescription": "开启后,已禁用但仍保留的智能体配置也会从左侧导航中移除。", "hideDisabledIntegrationsFromNav": "在左侧导航中隐藏已禁用的集成", "hideDisabledIntegrationsFromNavDescription": "开启后,即使集成仍已配置,已禁用的集成也会从侧边栏和移动菜单中移除。", "invalidJson": "无效 JSON", @@ -348,21 +348,21 @@ "layoutProfile": "布局配置", "layoutProfileCopyName": "{{name}} 副本", "layoutProfileDefault": "默认", - "layoutProfileDefaultDescription": "代理,并附带文件、更改和终端", + "layoutProfileDefaultDescription": "智能体,并附带文件、更改和终端", "layoutProfileName": "布局配置名称", "layoutProfileNamesMustNotBe": "布局配置名称不能为空", "layoutProfilePlanMode": "计划模式", - "layoutProfilePlanModeDescription": "代理与计划并排显示", + "layoutProfilePlanModeDescription": "智能体与计划并排显示", "layoutProfilePreviewMode": "预览模式", - "layoutProfilePreviewModeDescription": "代理与浏览器并排显示", + "layoutProfilePreviewModeDescription": "智能体与浏览器并排显示", "layoutProfiles": "布局配置", "layoutProfilesWereNotSaved": "布局配置未保存", - "layoutProfileVsCodeDescription": "代理与 VS Code 并排显示", + "layoutProfileVsCodeDescription": "智能体与 VS Code 并排显示", "layouts": "布局", "ligatures": "连字", "light": "浅色", - "loading": "加载中...", - "loadingSecrets": "正在加载密钥...", + "loading": "加载中…", + "loadingSecrets": "正在加载密钥…", "logsPageDescription": "下载一个大小受限的诊断 ZIP,其中包含前端和后端日志。", "lspConfigCustomBadge": "自定义", "lspInstallHintGo": "运行“{{command}}”。需要安装 Go。", @@ -377,27 +377,27 @@ "makeTheSelectedSplit40Pixels3": "使所选拆分区域缩短 40 像素。", "makeTheSelectedSplit40Pixels4": "使所选拆分区域增高 40 像素。", "makesAgentctlValuesAvailableToPlugins": "使 agentctl 的值可供插件和其他使用方使用。内置状态栏仍仅由宿主使用。", - "manageApiKeysAndCredentialsSecrets": "管理 API 密钥和凭据。密钥会在静态存储时加密,并通过执行器配置文件的环境变量注入代理环境。", + "manageApiKeysAndCredentialsSecrets": "管理 API 密钥和凭据。密钥会以加密形式存储,并通过执行器配置的环境变量注入智能体环境。", "globalScope": "全局", "modelWithValue": "模型:{{model}}", "settingsMenu": "设置菜单", - "settingsMenuAccordion": "手风琴树", - "settingsMenuAccordionDescription": "工作区、代理和执行器会展开到其包含的内容:从工作区一直到单个集成。打开一个分支会关闭其他分支,因此菜单始终只显示通往当前页面的路径。", - "settingsMenuFlat": "扁平列表", - "settingsMenuFlatDescription": "每个设置页面一行,不再展开。具体工作区、代理和执行器从各自页面进入。这是默认选项,也是最短的菜单。", - "settingsMenuPersistent": "持久树", - "settingsMenuPersistentDescription": "同样的分支结构,但可以同时展开多个,并在重新加载后保持打开。适合并排查看几条记录;工作区或代理较多时菜单会变长。", - "settingsMenuShape": "菜单形态", + "settingsMenuAccordion": "单分支展开", + "settingsMenuAccordionDescription": "工作区、智能体和执行器可逐级展开到其中的内容。打开一个分支会关闭其他分支,因此菜单仅保留当前页面所在的路径。", + "settingsMenuFlat": "单层列表", + "settingsMenuFlatDescription": "每个设置页面显示为单独一行,不展开子项。具体工作区、智能体和执行器需从各自页面进入。这是默认选项,也是最精简的菜单。", + "settingsMenuPersistent": "保留展开状态", + "settingsMenuPersistentDescription": "采用相同的树形结构,但可同时展开多个分支,并在刷新后保留展开状态。适合同时查看多个工作区或智能体;内容较多时菜单会更长。", + "settingsMenuShape": "菜单布局", "settingsMenuShapePerDevice": "仅适用于此设备。其他设备和浏览器保留各自的选择。", "temperatureWithValue": "温度:{{temperature}}", "workspaceScope": "工作区", - "workspaceSecretsDescription": "管理工作区中仓库可用的密钥。共享代理与执行器配置文件只能使用全局密钥。", + "workspaceSecretsDescription": "管理工作区中仓库可用的密钥。共享智能体配置与执行器配置只能使用全局密钥。", "workspacesAndAccess": "工作区与访问", "revealSecretNamed": "显示密钥 {{name}}", "hideSecretNamed": "隐藏密钥 {{name}}", "editSecretNamed": "编辑密钥 {{name}}", "deleteSecretNamed": "删除密钥 {{name}}", - "manageSpritesDevRemoteSandboxIntegration": "管理 Sprites.dev 远程沙盒集成,以便在隔离的云环境中运行代理。", + "manageSpritesDevRemoteSandboxIntegration": "管理 Sprites.dev 远程沙盒集成,以便在隔离的云环境中运行智能体。", "manualInstallRequired": "需要手动安装", "markMessagesThatArrivedWhileA": "标记任务不可见期间收到的消息。立即生效。", "mcpAffectedToolsHelp": "<0>create_task_kandev 会创建单独任务。<3>spawn_session_kandev 会向当前任务添加会话,因此不使用此偏好设置。", @@ -441,13 +441,13 @@ "noSecretsYetAddYourFirst": "还没有密钥。添加第一个密钥即可开始。", "notConfigured": "未配置", "notInstalled": "未安装", - "notificationEventClarificationRequested": "代理需要回答", - "notificationEventClarificationRequestedDescription": "代理明确提出问题时通知。", + "notificationEventClarificationRequested": "智能体需要回答", + "notificationEventClarificationRequestedDescription": "智能体明确提出问题时通知。", "notificationEventOfficeInboxItem": "办公室收件箱项目", "notificationEventOfficeInboxItemDescription": "有新的收件箱项目需要你处理时通知。", "notificationEventToggle": "{{event}}({{name}})", - "notificationEventTurnFinished": "代理回合已完成", - "notificationEventTurnFinishedDescription": "每个代理回合完成后通知。", + "notificationEventTurnFinished": "智能体回合已完成", + "notificationEventTurnFinishedDescription": "每个智能体回合完成后通知。", "notificationEventUpdateAvailable": "Kandev 有可用更新", "notificationEventUpdateAvailableDescription": "有更新版本的 Kandev 发布时通知。", "notificationEvents": "通知事件", @@ -457,7 +457,7 @@ "notificationPermissionEnabled": "已启用", "notificationPermissionRetry": "重试", "notificationSound": "通知声音", - "notificationSoundDescription": "当选定的代理回合、问题或办公室事件发生时在此设备上播放声音。", + "notificationSoundDescription": "当选定的智能体回合、问题或办公室事件发生时在此设备上播放声音。", "notificationSoundSelect": "通知声音", "notificationType": "通知类型", "notifications": "通知", @@ -475,20 +475,20 @@ "overrideSettingsSentToEachLanguage": "通过 <2>{{method}} 覆盖发送给每个语言服务器的设置。JSON 格式。", "password": "密码", "pickTheDefaultShellForTask": "选择任务会话的默认命令解释器", - "pinTheAgentsLiveTodoChecklistAs": "自动将代理的实时待办清单固定为右侧面板中的 Todos 标签页。即使关闭此选项,您也可以随时手动添加 Todos 标签页。", + "pinTheAgentsLiveTodoChecklistAs": "自动将智能体的实时待办清单固定为右侧面板中的 Todos 标签页。即使关闭此选项,您也可以随时手动添加 Todos 标签页。", "onlyPinWhenTodoListIsNotEmpty": "仅在待办清单不为空时固定", "onlyPinWhenTodoListIsNotEmptyDescription": "仅在会话有待办条目时自动固定。手动添加的 Todos 标签页不受影响。", "pluginShortcuts": "插件快捷键", "preferredShell": "首选命令解释器", "preferences": "偏好设置", - "pressAKeyCombo": "按下按键组合...", + "pressAKeyCombo": "按下按键组合…", "pressCmdCtrlEnterToSend": "按 Cmd/Ctrl+Enter 发送消息。按 Enter 换行。", "pressEnterToSendMessagesPress": "按 Enter 发送消息。按 Shift+Enter 换行。", "previewSound": "试听声音", - "profileForTasksCreatedByAgents": "代理创建任务时使用的配置", + "profileForTasksCreatedByAgents": "智能体创建任务时使用的配置", "programming": "编程", "profileFallbackWillBeUsed": "起始模型 {{model}} 已不可用,将使用备用模型 {{fallback}}。", - "profileStartModelUnavailable": "起始模型 {{model}} 已不可用,请在代理配置中更改。", + "profileStartModelUnavailable": "起始模型 {{model}} 已不可用,请在智能体配置中更改。", "promptAdd": "添加提示词", "promptContentPlaceholder": "提示词内容", "promptCreateFailed": "无法创建提示词", @@ -528,16 +528,16 @@ "saveChanges": "保存更改", "saveChangesBeforeLeaving": "离开前保存更改?", "saved": "已保存", - "saving": "正在保存...", + "saving": "正在保存…", "savingChanges": "正在保存更改", - "searchEditors": "搜索编辑器...", + "searchEditors": "搜索编辑器…", "searchSettings": "搜索设置", "secretValue": "密钥值", "secrets": "密钥", "security": "安全", "selectADefaultEditor": "选择默认编辑器", "selectAShell": "选择命令解释器", - "selectAModel": "选择模型...", + "selectAModel": "选择模型…", "sendTestNotification": "发送测试通知", "sendTestNotificationFor": "发送测试通知给 {{name}}", "serverConfiguration": "服务器配置", @@ -546,7 +546,7 @@ "settingsSearchResults_one": "{{count}} 个匹配的设置", "settingsSearchResults_other": "{{count}} 个匹配的设置", "shellOptionsUnavailable": "命令解释器选项不可用", - "showAgentTodoListPanel": "显示代理待办列表面板", + "showAgentTodoListPanel": "显示智能体待办列表面板", "showAnchoredPromptBar": "显示固定提示栏", "showCleanupDetailsAndSubtaskOptions": "归档开始前显示清理详情和子任务选项。", "showHostMetricsInStatusBar": "在状态栏显示主机指标", @@ -598,7 +598,7 @@ "spriteHealthStopping": "正在停止", "spriteHealthUnhealthy": "异常", "spriteHealthUnknown": "未知", - "spritesDevProvidesEphemeralCloudSandboxes": "Sprites.dev 提供临时云沙盒,用于远程运行代理。", + "spritesDevProvidesEphemeralCloudSandboxes": "Sprites.dev 提供临时云沙盒,用于远程运行智能体。", "startOnYourSavedKanbanPipelineOrList": "从保存的看板、流水线或列表视图开始。", "startupPage": "启动页面", "statusBar": "状态栏", @@ -656,43 +656,43 @@ "updateChannelUnsavedNotice": "检查或应用更新前请先保存通道更改。", "updateChannelUnsupportedServiceManager": "此服务管理器不支持 nightly 更新。", "uptime": "运行时间", - "useAgentForNewTaskTitles": "使用代理生成新任务标题", + "useAgentForNewTaskTitles": "使用智能体生成新任务标题", "useAsDefault": "设为默认", "useBuiltInDefault": "使用内置“默认”布局", "useThisLayoutAsTheStarting": "将此布局用作新任务的起始布局。", - "useThisSettingWhenAnAgent": "当代理调用会创建任务的 Kandev MCP 工具时使用此设置。如果调用未选择配置,Kandev 必须为新任务分配代理配置。该配置控制任务的代理、模型和设置。", - "usefulWhenKandevIsSelfHosted": "如果 Kandev 部署在远程服务器上,这项设置很有用:你可以从全局状态栏或手机端的状态抽屉查看机器资源的轻量信息。", + "useThisSettingWhenAnAgent": "当智能体调用会创建任务的 Kandev MCP 工具时使用此设置。如果调用未选择配置,Kandev 必须为新任务分配智能体配置。该配置控制任务的智能体、模型和设置。", + "usefulWhenKandevIsSelfHosted": "如果 Kandev 部署在远程服务器上,这项设置很有用:你可以从全局状态栏或手机端的状态面板查看机器资源的简要信息。", "utilityActionsTitle": "操作", - "utilityActionsDescription": "为特定的 Kandev 界面操作覆盖代理配置。这些操作不会配置在任务会话中运行的代理。", + "utilityActionsDescription": "为特定的 Kandev 界面操作覆盖智能体配置。这些操作不会配置在任务会话中运行的智能体。", "utilityAddCustomAgent": "添加", "utilityAgentDescriptionLabel": "描述", - "utilityAgentDescriptionPlaceholder": "简要描述此代理的作用", - "utilityAgentDialogCreate": "创建代理", - "utilityAgentDialogCreateTitle": "创建实用代理", - "utilityAgentDialogEditTitle": "编辑实用代理", + "utilityAgentDescriptionPlaceholder": "简要描述此智能体的作用", + "utilityAgentDialogCreate": "创建智能体", + "utilityAgentDialogCreateTitle": "创建辅助智能体", + "utilityAgentDialogEditTitle": "编辑辅助智能体", "utilityAgentDialogSave": "保存更改", "utilityAgentNamePlaceholder": "例如 commit-message", "utilityAgentPromptHint": "输入 <1>{{sigil}} 可查看可用变量并自动完成", "utilityAgentPromptTemplate": "提示词模板", - "utilityAgents": "实用代理", - "utilityAgentsPageDescription": "一次性助手执行 Kandev 界面操作,例如生成提交和 PR 文本或增强提示词。它们与任务会话中的代理分开。", - "utilityCustomAgentsDescription": "使用自定义提示词创建你自己的实用代理。", - "utilityCustomAgentsEmpty": "无自定义实用代理。", - "utilityCustomAgentsTitle": "自定义实用代理", + "utilityAgents": "辅助智能体", + "utilityAgentsPageDescription": "一次性助手执行 Kandev 界面操作,例如生成提交和 PR 文本或增强提示词。它们与任务会话中的智能体分开。", + "utilityCustomAgentsDescription": "使用自定义提示词创建你自己的辅助智能体。", + "utilityCustomAgentsEmpty": "无自定义辅助智能体。", + "utilityCustomAgentsTitle": "自定义辅助智能体", "utilityDefaultModelDescription": "选择内置实用操作使用的配置。配置包含模型、权限和启动设置。", - "utilityDefaultModelTitle": "默认实用代理模型", - "utilityAgentProfile": "代理配置", + "utilityDefaultModelTitle": "默认辅助智能体模型", + "utilityAgentProfile": "智能体配置", "utilitySelectProfile": "选择配置…", - "utilitySearchProfiles": "搜索代理配置…", - "utilityNoProfilesFound": "没有匹配的代理配置。", - "utilityNoDefaultProfile": "无默认配置", + "utilitySearchProfiles": "搜索智能体配置…", + "utilityNoProfilesFound": "没有匹配的智能体配置。", + "utilityNoDefaultProfile": "无默认智能体配置", "utilityUnavailableProfile": "不可用:{{name}}", "utilityProfileNeedsRepair": "此配置不可用。请选择启用的推理配置。", "viewAvailableSettings": "查看可用设置", "visualEditorUnavailable": "可视化编辑器不可用", "vsCodeRemoteSsh": "VS Code Remote SSH", "whenEnabledInstallYourProjectS": "启用后,会通过仓库设置脚本安装项目依赖(例如运行 <2>{{command}}),以避免缺少类型错误。", - "externalMcpToolListTaskSessions": "按最近启动的顺序列出任务的所有代理会话,以便其他工具通过 ID 定位会话。", + "externalMcpToolListTaskSessions": "按最近启动的顺序列出任务的所有智能体会话,以便其他工具通过 ID 定位会话。", "shortcutBottomTerminal": "切换底部终端", "shortcutCommandPanel": "命令面板", "shortcutCommandPanelAlt": "命令面板(备用)", diff --git a/apps/web/src/locales/zh-cn/sidebar.json b/apps/web/src/locales/zh-cn/sidebar.json index 68646e3e1d..5ab1d5b267 100644 --- a/apps/web/src/locales/zh-cn/sidebar.json +++ b/apps/web/src/locales/zh-cn/sidebar.json @@ -5,10 +5,10 @@ "retry": "重试", "activeWorkspaceBadge": "活动", "activity": "活动", - "addAgent": "添加代理", + "addAgent": "添加智能体", "addProject": "添加项目", "addWorkspace": "添加工作区", - "agentTopology": "代理拓扑", + "agentTopology": "智能体拓扑", "apiTokens": "API 令牌", "applicationStatus": "应用状态", "applicationStatusItems": "应用状态项", @@ -54,7 +54,7 @@ "newTask": "新建任务", "newView": "新建视图", "newViewUnavailable": "无法新建视图。{{reason}}", - "noAgentsYet": "尚无代理", + "noAgentsYet": "尚无智能体", "noProjectsYet": "尚无项目", "noTasksYet": "暂无任务", "noWorkspaces": "无工作区", @@ -74,7 +74,7 @@ "quickChat": "快速聊天", "quickTerminal": "快速终端", "quickChatTerminals": "终端", - "quickChatNewAgent": "新建代理", + "quickChatNewAgent": "新建智能体", "quickChatNewTerminal": "新建终端", "quickChatClose": "关闭快速聊天", "quickChatTerminalTab_one": "终端 {{count}}", diff --git a/apps/web/src/locales/zh-cn/system.json b/apps/web/src/locales/zh-cn/system.json index 403ab17015..6481f2da73 100644 --- a/apps/web/src/locales/zh-cn/system.json +++ b/apps/web/src/locales/zh-cn/system.json @@ -8,7 +8,7 @@ "aboutOs": "操作系统", "aboutPageDescription": "版本、构建元数据与链接。", "aboutReportIssue": "报告问题", - "aboutTitle": "关于 kandev", + "aboutTitle": "关于 Kandev", "aboutVersion": "版本", "actionDone": "完成", "actionFailed": "失败", @@ -49,13 +49,13 @@ "createUserTitle": "添加用户", "databaseDriver": "驱动", "databaseFactoryReset": "出厂重置", - "databaseFactoryResetHelp": "清除全部 Kandev 数据:任务、会话、设置、仓库与 worktree。无法撤销。重置前会先创建备份,但恢复需在重置后使用备份页面。仅在你希望从头开始时使用。", + "databaseFactoryResetHelp": "清除全部 Kandev 数据:任务、会话、设置、仓库与工作树。无法撤销。重置前会先创建备份,但恢复需在重置后使用备份页面。仅在你希望从头开始时使用。", "databaseLastBackup": "上次备份", "databaseLoading": "正在加载数据库统计…", "databaseMaintenanceUnavailable": "SQLite 维护操作对 {{driver}} 不可用。", "databaseNever": "从未", "databaseOptimize": "优化", - "databaseOptimizeHelp": "让数据库刷新内部索引,使常见查询保持快速。大量删除数据后或应用感觉变慢时运行。快速且安全; 不更改任何数据。", + "databaseOptimizeHelp": "让数据库刷新内部索引,使常见查询保持快速。大量删除数据后或应用感觉变慢时运行。快速且安全;不更改任何数据。", "databasePageDescription": "数据库驱动、大小与可用维护控件。", "dataStoragePageDescription": "数据库统计、备份、磁盘清理和服务器日志。", "databasePath": "路径", @@ -66,9 +66,9 @@ "databaseSizeLong": "数据库大小", "databaseTitle": "数据库", "databaseVacuum": "Vacuum", - "databaseVacuumHelp": "回收数据库文件中的未用空间。删除任务或会话后文件可能随时间增大;vacuum 会将其压缩。随时可安全运行; 不更改任何数据。若数据库看起来很大,可偶尔运行一次。", + "databaseVacuumHelp": "回收数据库文件中的未用空间。删除任务或会话后文件可能随时间增大;vacuum 会将其压缩。随时可安全运行;不更改任何数据。若数据库看起来很大,可偶尔运行一次。", "databaseWal": "WAL", - "databaseWalHelp": "预写日志。SQLite 先将新更改写入此附属文件,再随时间合并到主数据库。非零 WAL 大小是正常的; 负载下会暂时增大,检查点时会缩小。运行 vacuum 会将其重置。", + "databaseWalHelp": "预写日志。SQLite 先将新更改写入此附属文件,再随时间合并到主数据库。非零 WAL 大小是正常的;负载下会暂时增大,检查点时会缩小。运行 vacuum 会将其重置。", "databaseWhatIs": "什么是 {{label}}?", "desktopUpdateFailed": "桌面更新失败", "diskCalculating": "正在计算…", @@ -86,20 +86,20 @@ "diskRowRepos": "仓库", "diskRowSessions": "会话", "diskRowTasks": "任务", - "diskRowWorktrees": "Worktree", + "diskRowWorktrees": "工作树", "diskTotal": "总计", "diskUnmeasuredDirs": "部分目录无法测量:", "diskUsageTitle": "磁盘用量", "dismiss": "关闭", - "factoryResetCompleteBody": "Kandev 数据已清除。请退出并重新启动应用以全新开始; 正在运行的后端仍持有现已清空数据库的连接,在重启前不会重建缓存。若需回滚,可在备份页面使用重置前快照。", + "factoryResetCompleteBody": "Kandev 数据已清除。请退出并重新启动应用以全新开始;正在运行的后端仍持有现已清空数据库的连接,在重启前不会重建缓存。若需回滚,可在备份页面使用重置前快照。", "factoryResetCompleteTitle": "出厂重置完成", "factoryResetFailed": "重置失败", "factoryResetPlaceholder": "输入 {{token}} 以确认", "factoryResetRequestFailed": "重置请求失败", "factoryResetSnapshot": "擦除前会自动在 <1>{{path}} 下创建快照,若改变主意可从备份页面恢复。", "factoryResetTitle": "出厂重置", - "factoryResetTypeToConfirm": "输入 <1>{{token}} 以启用确认按钮。擦除完成后需要你退出并重新启动 Kandev; 后端不会自动重启。", - "factoryResetWipes": "这将清除整个 kandev 安装:数据库、worktree、仓库克隆、会话、任务与快速聊天会话。", + "factoryResetTypeToConfirm": "输入 <1>{{token}} 以启用确认按钮。擦除完成后需要你退出并重新启动 Kandev;后端不会自动重启。", + "factoryResetWipes": "这将清除整个 Kandev 安装:数据库、工作树、仓库克隆、会话、任务与快速聊天会话。", "factoryResetWiping": "正在清除数据…", "featureToggleDebug": "调试", "featureToggleEnv": "环境变量:{{envVar}}", @@ -143,7 +143,7 @@ "inviteDone": "完成", "inviteEmailOptional": "邮箱(可选)", "inviteFailed": "无法创建邀请。", - "inviteReadyDescription": "将此链接分享给受邀者。仅显示一次; 请立即复制。", + "inviteReadyDescription": "将此链接分享给受邀者。仅显示一次;请立即复制。", "inviteReadyTitle": "邀请链接已就绪", "inviteTitle": "邀请用户", "inviteUrlLabel": "邀请链接", @@ -158,7 +158,7 @@ "licensesCount": "{{visible}} / {{total}}", "licensesEmpty": "没有匹配筛选的条目。", "licensesFilterPlaceholder": "按名称、许可证或生态筛选…", - "licensesPageDescription": "随 kandev 发布的每个 npm 与 Go 依赖的开源许可证。", + "licensesPageDescription": "随 Kandev 发布的每个 npm 与 Go 依赖的开源许可证。", "licensesSource": "来源", "licensesStaleWarning": "因生成失败,Go 许可证条目复用了已提交的清单。在 go-licenses 正常时请重新生成以刷新 Go 依赖数据。", "licensesTitle": "第三方许可证", @@ -175,8 +175,8 @@ "messageQueueLoadFailed": "无法加载消息队列设置。", "messageQueueLoading": "正在加载消息队列设置…", "messageQueueMaximumLabel": "每个会话的最大消息数", - "messageQueueMergeDescription": "可在代理取用前,将一条排队消息合并到正上方的消息中,把连续相关的跟进内容合成一轮。", - "messageQueueMergeNotice": "仅同一发送方的相邻消息可合并:你自己的排队消息可互相合并;另一任务的代理排队的消息仅在来源任务相同时可合并。工作流、系统与进行中的消息永远不可合并。若两条消息合并后、去重后的实体引用合计超过 100(每条消息的共享上限),合并也会被拒绝。关闭后会立即隐藏合并控件,不影响已合并的消息。", + "messageQueueMergeDescription": "可在智能体取用前,将一条排队消息合并到正上方的消息中,把连续相关的跟进内容合成一轮。", + "messageQueueMergeNotice": "仅同一发送方的相邻消息可合并:你自己的排队消息可互相合并;另一任务的智能体排队的消息仅在来源任务相同时可合并。工作流、系统与进行中的消息永远不可合并。若两条消息合并后、去重后的实体引用合计超过 100(每条消息的共享上限),合并也会被拒绝。关闭后会立即隐藏合并控件,不影响已合并的消息。", "messageQueueMergeToggleLabel": "启用排队消息合并", "messageQueueRetry": "重试", "messageQueueSaveFailed": "保存消息队列设置失败。", @@ -204,8 +204,8 @@ "navUsers": "用户", "reloadPage": "重新加载页面", "restartAction": "重启", - "agentRuntimeUnavailableTitle": "本地代理运行时已停止", - "agentRuntimeUnavailableBody": "本地运行时停止后,代理操作和工作区工具可能不会更新。你保存的数据仍然安全。", + "agentRuntimeUnavailableTitle": "本地智能体运行时已停止", + "agentRuntimeUnavailableBody": "本地运行时停止后,智能体操作和工作区工具可能不会更新。你保存的数据仍然安全。", "agentRuntimeUnavailableRestartRequired": "请完全重启 Kandev 以恢复运行。", "agentRuntimeUnavailableRestart": "重启 Kandev", "agentRuntimeUnavailableManual": "请从终端或服务管理器重启 Kandev。", @@ -227,8 +227,8 @@ "restartTimedOut": "重启耗时超过预期。请刷新以查看当前状态。", "restartUnsupportedHelp": "在部署预览、非托管终端运行或不含重启监督程序的启动模式下,自动重启不可用。", "restoreAction": "恢复", - "restoreBody": "将 <1>{{name}} 覆盖到当前数据库。暂存副本就绪后,需要你退出并重新启动 Kandev 以加载新数据; 后端不会自动重启。", - "restoreCompleteBody": "<0>{{name}} 已写入当前数据库。请退出并重新启动 Kandev 以加载恢复的数据; 正在运行的后端仍持有旧版本连接,重启前会提供过期行。", + "restoreBody": "将 <1>{{name}} 覆盖到当前数据库。暂存副本就绪后,需要你退出并重新启动 Kandev 以加载新数据;后端不会自动重启。", + "restoreCompleteBody": "<0>{{name}} 已写入当前数据库。请退出并重新启动 Kandev 以加载恢复的数据;正在运行的后端仍持有旧版本连接,重启前会提供过期行。", "restoreCompleteTitle": "恢复完成", "restoreFailed": "恢复失败", "restorePlaceholder": "输入 {{token}} 以确认", @@ -243,7 +243,7 @@ "selfUpdateInstalling": "正在下载并安装 {{version}}…", "selfUpdateInstallingUnknown": "正在下载并安装新版本…", "selfUpdateKeepOpen": "请保持此页面打开。更新完成后会自动刷新。", - "selfUpdateRestarting": "正在重启 Kandev; 最多可能需要一分钟。", + "selfUpdateRestarting": "正在重启 Kandev;最多可能需要一分钟。", "selfUpdateStartFailed": "启动更新失败", "selfUpdateStarting": "正在开始更新到 {{version}}…", "selfUpdateStartingUnknown": "正在开始更新到新版本…", @@ -361,7 +361,7 @@ "storageOrphanGraceLabel": "孤立前等待(小时)", "storageOrphanWorkspaces": "孤立任务工作区", "storageOrphanWorkspacesDescription": "将已确认的孤立工作区移至隔离区。", - "storageOrphanWorkspacesHelp": "仅当清单确认没有活动任务、环境、会话或受保护 worktree 使用时,Kandev 才选择任务工作区。工作区先移至隔离区,可在永久删除前恢复。", + "storageOrphanWorkspacesHelp": "仅当清单确认没有活动任务、环境、会话或受保护工作树使用时,Kandev 才选择任务工作区。工作区先移至隔离区,可在永久删除前恢复。", "storagePolicyDescription": "选择 Kandev 可自动回收的内容及其须遵守的安全限制。", "storagePolicyLoadingBlock": "请等待存储设置加载完成。", "storagePolicyTitle": "维护策略", @@ -454,7 +454,7 @@ "storageCleanWorkspaceDependencies": "清理工作区依赖项", "storageEnableWorkspaceDependenciesAndSave": "请先启用并保存依赖清理设置,再运行清理。", "systemMetrics": "系统指标", - "uiStateHelp": "清除保存在浏览器中的布局与 UI 偏好(面板大小、固定任务、展开分组等)。若应用显示异常、面板卡住或布局不对,可使用此选项。任务、会话与服务器数据不受影响; 仅影响当前浏览器保存的 UI 状态。重置后页面会重新加载。", + "uiStateHelp": "清除保存在浏览器中的布局与 UI 偏好(面板大小、固定任务、展开分组等)。若应用显示异常、面板卡住或布局不对,可使用此选项。任务、会话与服务器数据不受影响;仅影响当前浏览器保存的 UI 状态。重置后页面会重新加载。", "uiStateReset": "重置", "uiStateResetLabel": "重置浏览器布局", "uiStateTitle": "UI 状态", @@ -473,7 +473,7 @@ "updatesLatestRelease": "最新发布", "updatesNever": "从未", "updatesNotificationsHint": "通知偏好在 <2>通知 中管理。", - "updatesPageDescription": "当前版本与最新发布,以及完整 kandev 更新日志。", + "updatesPageDescription": "当前版本、最新发布以及完整的 Kandev 更新日志。", "updatesReleaseNotes": "发布说明", "updatesRetryAfter_one": "已检查过。请在 {{count}} 秒后重试。", "updatesRetryAfter_other": "已检查过。请在 {{count}} 秒后重试。", @@ -503,7 +503,7 @@ "usersRoleMember": "成员", "usersStatusActive": "活动", "usersStatusDisabled": "已禁用", - "usersTakesEffectImmediately": "{{email}}; 立即生效。", + "usersTakesEffectImmediately": "{{email}};立即生效。", "usersTitle": "用户", "usersUpdateFailed": "无法更新用户", "versionCurrent": "当前", diff --git a/apps/web/src/locales/zh-cn/task.json b/apps/web/src/locales/zh-cn/task.json index 1c073db082..2c1b0034ba 100644 --- a/apps/web/src/locales/zh-cn/task.json +++ b/apps/web/src/locales/zh-cn/task.json @@ -1,9 +1,9 @@ { - "agentCliNotInstalled": "未安装代理 CLI", - "agentProbeFailed": "代理探测失败", + "agentCliNotInstalled": "未安装智能体 CLI", + "agentProbeFailed": "智能体探测失败", "aPullRequestAlreadyExistsFor": "此任务已存在拉取请求", "archivedTask": "已归档任务", - "aSharedDocumentForYouAnd": "供你与代理协作制定方案的共享文档", + "aSharedDocumentForYouAnd": "供你与智能体协作制定方案的共享文档", "aboutContextWindowSource": "关于上下文窗口来源", "activeBadge": "活跃", "activeSessionRepositoryTapToSwitch": "当前会话:{{agentLabel}}。仓库:{{repositoryLabel}}。点按以切换。", @@ -15,7 +15,7 @@ "addAComment": "添加评论…", "addACommentFromTheDiff": "从差异或文件视图添加评论,然后回到此处审阅并发送。", "addAPortThatIsnT": "添加未自动检测的端口。适用于尚未启动的服务。", - "addAgent": "添加代理", + "addAgent": "添加智能体", "addAnOptionalComment": "添加可选评论", "addAnotherRemoteRepository": "添加另一个远程仓库", "addAnotherRepository": "添加另一个仓库", @@ -41,28 +41,28 @@ "adding": "正在添加…", "advanced": "高级", "afterDuration": ",耗时 {{duration}}", - "agent": "代理", - "agentBootFailedToResume": "恢复代理 {{agentName}} 失败", - "agentBootFailedToStart": "启动代理 {{agentName}} 失败", - "agentBootResumed": "已恢复代理 {{agentName}}", - "agentBootResuming": "正在恢复代理 {{agentName}}", - "agentBootStarted": "已启动代理 {{agentName}}", - "agentBootStarting": "正在启动代理 {{agentName}}", - "agentCount_one": "{{count}} 个代理", - "agentCount_other": "{{count}} 个代理", - "agentFallbackName": "代理", - "agentHasEncounteredAnError": "代理遇到错误", - "agentImage": "代理镜像", - "agentIsRunning": "代理运行中", - "agentIsStarting": "代理正在启动", - "agentOutput": "代理输出", - "agentPermissionMode": "代理权限模式", - "agentPlan": "代理计划", - "agentProfile": "代理配置", - "agentProfile2": "代理配置", - "agentProfileNoLongerExists": "代理配置文件已不存在", - "agentRunning": "代理运行中", - "agentSetByWorkflow": "由工作流设置的代理", + "agent": "智能体", + "agentBootFailedToResume": "恢复智能体 {{agentName}} 失败", + "agentBootFailedToStart": "启动智能体 {{agentName}} 失败", + "agentBootResumed": "已恢复智能体 {{agentName}}", + "agentBootResuming": "正在恢复智能体 {{agentName}}", + "agentBootStarted": "已启动智能体 {{agentName}}", + "agentBootStarting": "正在启动智能体 {{agentName}}", + "agentCount_one": "{{count}} 个智能体", + "agentCount_other": "{{count}} 个智能体", + "agentFallbackName": "智能体", + "agentHasEncounteredAnError": "智能体遇到错误", + "agentImage": "智能体镜像", + "agentIsRunning": "智能体运行中", + "agentIsStarting": "智能体正在启动", + "agentOutput": "智能体输出", + "agentPermissionMode": "智能体权限模式", + "agentPlan": "智能体计划", + "agentProfile": "智能体配置", + "agentProfile2": "智能体配置", + "agentProfileNoLongerExists": "智能体配置已不存在", + "agentRunning": "智能体运行中", + "agentSetByWorkflow": "由工作流设置的智能体", "agentctl": "Agentctl", "allChanges": "全部更改", "allChangesTitle": "全部变更", @@ -90,7 +90,7 @@ "answer": "回答", "anyUncommittedOrUnpushedChangesAre": "任何未提交或未推送的更改都会丢失。", "anyUncommittedOrUnpushedChangesIn": "工作区中任何未提交或未推送的更改都会丢失。", - "anyoneWithThisLinkCanView": "任何拥有此链接的人都可以查看此对话。发布前请仔细检查预览; 发布后,快照会上传到你账户的 GitHub Gist。", + "anyoneWithThisLinkCanView": "任何拥有此链接的人都可以查看此对话。发布前请仔细检查预览;发布后,快照会上传到你账户的 GitHub Gist。", "approve": "批准", "approveAndContinue": "批准并继续", "approveThisAction": "批准此操作?", @@ -121,12 +121,12 @@ "attachmentsCanTotalUpTo": "附件总大小最多 {{bytes}}。", "authentication": "身份验证", "authenticationRequiredLogInBeforeResuming": "需要身份验证,请先登录再恢复", - "authenticationRequiredPleaseLogInVia": "需要身份验证; 请通过终端登录", + "authenticationRequiredPleaseLogInVia": "需要身份验证;请通过终端登录", "autoMarkReviewedOnScroll": "滚动时自动标记为已审阅", "autoStart": "自动启动", "availableModes": "可用模式", - "awaitingApprovalFromAgents_one": "等待 {{count}} 个代理批准", - "awaitingApprovalFromAgents_other": "等待 {{count}} 个代理批准", + "awaitingApprovalFromAgents_one": "等待 {{count}} 个智能体批准", + "awaitingApprovalFromAgents_other": "等待 {{count}} 个智能体批准", "awaitingUserResponse": "等待用户响应 (pending_id={{pendingId}})", "back": "返回", "backendRejectedSessionRequest": "后端拒绝了会话请求。", @@ -136,7 +136,7 @@ "baseBranch2": "基础分支", "behindCount": "落后 {{behind}}", "binaryFile": "二进制文件", - "binaryOrEmptyDiff": "{{path}}; 二进制或空差异", + "binaryOrEmptyDiff": "{{path}};二进制或空差异", "blank": "空白", "blocked": "已阻塞", "blockedBy": "被阻塞于", @@ -155,7 +155,7 @@ "byAuthor": "由 {{author}}", "byDefaultTheLocalExecutorUses": "默认情况下,本地执行器使用仓库的当前检出。点击可改为从基础分支创建新分支,从而不改动你的工作树。", "cachedInput": "缓存输入", - "cancelAgent": "取消代理", + "cancelAgent": "取消智能体", "cancelLeavesWorkspaceUnchangedDetail": "<0>取消会使工作区保持不变。若继续,该批处理为全有或全无:任一来源失败时,不会附加任何新来源。", "cancelTaskTree": "取消任务树", "cancelTree": "取消任务树", @@ -168,8 +168,8 @@ "changeGithubIssue": "更改 GitHub 议题", "changes": "变更", "changesDiscarded": "更改已丢弃", - "changesHiddenBanner_one": "另有 {{formattedCount}} 个更改文件已隐藏; 变更集过大,无法完整渲染。", - "changesHiddenBanner_other": "另有 {{formattedCount}} 个更改文件已隐藏; 变更集过大,无法完整渲染。", + "changesHiddenBanner_one": "另有 {{formattedCount}} 个更改文件已隐藏;变更集过大,无法完整渲染。", + "changesHiddenBanner_other": "另有 {{formattedCount}} 个更改文件已隐藏;变更集过大,无法完整渲染。", "chat": "聊天", "chooseALinkedPullRequestOr": "选择已关联的拉取请求或合并请求,在其提供商处打开。", "chooseFromSavedOrDiscoveredRepositories": "从已保存或已发现的仓库中选择。", @@ -183,7 +183,7 @@ "cloneFromAProviderOrGit": "从提供商或 Git URL 克隆。", "close": "关闭", "close2": "关闭 {{label}}", - "closeComposeBoxHelp": "关闭编写框(或在其中按 <1>Esc)。CLI 代理终端保持焦点。", + "closeComposeBoxHelp": "关闭编写框(或在其中按 <1>Esc)。CLI 智能体终端保持焦点。", "closeGroup": "关闭分组", "closeOthers": "关闭其他", "closePreview": "关闭预览", @@ -217,7 +217,7 @@ "commentCmdShiftC": "评论 (Cmd+Shift+C)", "commentCount_one": "{{count}} 条评论", "commentCount_other": "{{count}} 条评论", - "commentOnAgentResponse": "对代理回复发表评论", + "commentOnAgentResponse": "对智能体回复发表评论", "commentOnSelection": "对选中内容发表评论", "comments": "评论", "commentsOnFiles_one": "{{files}} 上有 {{count}} 条评论", @@ -286,7 +286,7 @@ "createOnly": "仅创建", "createSession": "创建会话", "createSubtask": "创建子任务", - "createWithoutStartingAgent": "创建但不启动代理", + "createWithoutStartingAgent": "创建但不启动智能体", "created": "已创建", "created2": "已创建 {{longName}}", "createdBy": "创建者", @@ -306,7 +306,7 @@ "defaultSubtaskTitle": "{{parent}} / 子任务 {{index}}", "delete": "删除", "delete2": "删除 {{name}}", - "deleteAgent": "删除代理", + "deleteAgent": "删除智能体", "deleteComment": "删除评论", "deleteFolderConfirm": "将永久删除 <1>{{name}}。此操作无法撤销。", "deleteFolderTitle": "删除文件夹?", @@ -328,10 +328,10 @@ "deleteTasksTitle_other": "删除 {{count}} 个任务", "deletesTheCurrentTaskEnvironmentContainer": "删除当前任务环境(容器、沙箱和/或工作树),并在下次运行时强制创建新环境。", "deleting": "正在删除…", - "deliverTheseCommentsToTheCli": "将这些评论作为单条消息投递到 CLI 代理的 stdin; 无需打开聊天框。代理收到的 markdown 与在输入消息前附加评论时相同。", + "deliverTheseCommentsToTheCli": "将这些评论作为单条消息投递到 CLI 智能体的 stdin;无需打开聊天框。智能体收到的 markdown 与在输入消息前附加评论时相同。", "deny": "拒绝", "describeWhatNeedsToChange": "描述需要变更的内容", - "describeWhatYouWantTheAgent": "描述你希望代理做什么…(@ 插入已保存的提示词)", + "describeWhatYouWantTheAgent": "描述你希望智能体做什么…(@ 插入已保存的提示词)", "describeYourChanges": "描述你的变更…", "description": "描述", "description2": "描述", @@ -419,9 +419,9 @@ "executorEnvironmentRunning": "执行器环境运行中", "executorEnvironmentStopped": "执行器环境已停止", "executorHintDocker": "将从所选基础分支创建 Docker 容器,并在任务分支上检出。", - "executorHintLocal": "代理将直接在仓库上运行。", - "executorHintWorktreeMulti": "将在父文件夹中为每个仓库创建 git 工作树。代理在该父文件夹中运行,以便并排查看所有工作树。", - "executorHintWorktreeSingle": "将从基础分支创建 git 工作树。", + "executorHintLocal": "智能体将直接在仓库上运行。", + "executorHintWorktreeMulti": "将在父文件夹中为每个仓库创建 Git 工作树。智能体在该父文件夹中运行,以便并排查看所有工作树。", + "executorHintWorktreeSingle": "将从基础分支创建 Git 工作树。", "executorProfile2": "执行器配置", "executorSettings": "执行器设置", "executorSettingsPreparing": "执行器设置,正在准备环境", @@ -462,7 +462,6 @@ "failedToPublishShare": "发布分享失败。", "failedToRead": "读取 {{name}} 失败", "failedToRenameBranch": "重命名分支失败", - "failedToRenameItem": "重命名项目失败", "failedToRenameTask": "重命名任务失败", "failedToRestorePlan": "恢复计划失败", "failedToResumeSession": "无法恢复会话", @@ -521,12 +520,12 @@ "forcePush": "强制推送", "forkANewBranchFromA": "从基础分支创建新分支(关闭则使用当前检出)", "forkANewBranchFromA2": "从基础分支创建新分支,而非使用当前检出", - "forkModeANewBranchWill": "分支模式:代理运行前将从所选基础创建新分支。点击可关闭并改用仓库的当前检出。", + "forkModeANewBranchWill": "分支模式:智能体运行前将从所选基础创建新分支。点击可关闭并改用仓库的当前检出。", "foundFiles_one": "找到 {{count}} 个文件", "foundFiles_other": "找到 {{count}} 个文件", "freshBranchTooltip": "从所选基础创建新分支。本地克隆中任何未提交更改将被丢弃;若有更改会要求确认。", - "fromAgent": "来自代理", - "fromAgentInTask": "来自任务 <1>“{{fullTitle}}” 中的代理", + "fromAgent": "来自智能体", + "fromAgentInTask": "来自任务 <1>“{{fullTitle}}” 中的智能体", "fromBranch": "来自 {{branch}}", "fromSessionInTask": "来自会话 <1>“{{sessionName}}”,任务 <3>“{{fullTitle}}”", "fromTask": "来自 {{title}}", @@ -571,7 +570,7 @@ "hideDetails": "隐藏详情", "hideErrorDetails": "隐藏错误详情:{{displayLabel}}", "hidePreparationDetails": "隐藏准备详情", - "hidePreviousAgentError": "隐藏先前的代理错误", + "hidePreviousAgentError": "隐藏先前的智能体错误", "hideRightPanel": "隐藏右侧面板", "hideRightPanels": "隐藏右侧面板", "hideSidebar": "隐藏侧边栏", @@ -583,13 +582,13 @@ "imagePreview": "图片预览", "imageWithSize": "图片({{bytes}})", "implement": "实现", - "implementInFreshAgent": "在新代理中实现", + "implementInFreshAgent": "在新智能体中实现", "implementThePlanInThisSession": "在此会话中实现计划", "includeThePlanAsContext": "将计划作为上下文包含", "inheritParentWorkspace": "继承父任务工作区", "inputTokens": "输入 token", "inspectClickToPinOrDrag": "检查:点击固定,或拖动以选择预览区域", - "inspectingClickToPin": "检查中; 点击固定,拖动选择区域,Esc 退出", + "inspectingClickToPin": "检查中;点击固定,拖动选择区域,Esc 退出", "invalidName": "无效名称", "isTheMaximumFileSizeIs": "{{name}} 大小为 {{size}}。最大文件大小为 {{maxSize}}。", "issue": "议题", @@ -604,7 +603,7 @@ "kandevGetTaskConversation": "Kandev:获取任务对话", "kandevGetTaskDocument": "Kandev:获取任务文档", "kandevGetTaskPlan": "Kandev:获取任务计划", - "kandevListAgents": "Kandev:列出代理", + "kandevListAgents": "Kandev:列出智能体", "kandevListExecutorProfiles": "Kandev:列出执行器配置", "kandevListRelatedTasks": "Kandev:列出相关任务", "kandevListTaskDocuments": "Kandev:列出任务文档", @@ -660,13 +659,13 @@ "linkSentryIssueDescription": "为此任务使用 Sentry 短 ID 或 URL。", "linkedIssue": "已关联议题", "listeningPorts": "监听端口", - "liveUpdateConsequenceSessionAndProcesses": "<0>会话与进程:在 Kandev 重新扫描工作区期间,代理与正在运行的工作区进程会继续运行。任务、会话、任务状态、消息、计划、已附加来源、模型与模式均保持不变。", - "liveUpdateConsequenceWorkspace": "<0>工作区:仓库会以命名的顶层条目克隆到当前远程工作区下。代理的工作目录不会改变,现有文件与 Git 变更不会被移动或丢弃。", + "liveUpdateConsequenceSessionAndProcesses": "<0>会话与进程:在 Kandev 重新扫描工作区期间,智能体与正在运行的工作区进程会继续运行。任务、会话、任务状态、消息、计划、已附加来源、模型与模式均保持不变。", + "liveUpdateConsequenceWorkspace": "<0>工作区:仓库会以命名的顶层条目克隆到当前远程工作区下。智能体的工作目录不会改变,现有文件与 Git 变更不会被移动或丢弃。", "loadOlderMessages": "加载更早的消息", "loading": "加载中…", "loading2": "加载中…", - "loadingAgentProfiles": "正在加载代理配置…", - "loadingAgents": "正在加载代理…", + "loadingAgentProfiles": "正在加载智能体配置…", + "loadingAgents": "正在加载智能体…", "loadingBranches": "正在加载分支…", "loadingBranches2": "正在加载分支…", "loadingBranches3": "正在加载分支…", @@ -734,8 +733,8 @@ "needsInput": "需要输入", "nestUnder": "嵌套到", "new": "新建", - "newAgent": "新建代理", - "newAgentInTask": "在 <1>{{title}} 中新建代理", + "newAgent": "新建智能体", + "newAgentInTask": "在 <1>{{title}} 中新建智能体", "newDocument": "新建文档", "newFile": "新建文件", "newMessages": "新消息", @@ -757,17 +756,17 @@ "noActiveSessionDescription": "请先启动会话再使用 AI 生成", "noActiveTask": "无活动任务", "noActivityYet": "暂无动态", - "noAgentFound": "未找到代理。", - "noAgentProfileConfigured": "未配置代理配置", - "noAgentProfileConfiguredDetail": "此任务没有代理配置,且工作区、工作流与工作流步骤均未设置默认值。请选择默认代理配置,以便新任务能够启动会话。", - "noAgentProfileConfiguredFor": "未为 <2>“{{name}}” 配置代理配置。请在“设置 → 执行器”中配置凭据。", - "noAgentProfilesConfigured": "未配置代理配置", - "noAgentProfilesConfiguredAddOne": "未配置代理配置。请先在“设置 → 代理”中添加。", - "noAgentRunning": "无代理运行中", - "noAgentsFound": "未找到代理。", - "noAgentsFound2": "未找到代理", - "noAgentsYet": "尚无代理", - "noAgentsYet2": "尚无代理。", + "noAgentFound": "未找到智能体。", + "noAgentProfileConfigured": "未配置智能体配置", + "noAgentProfileConfiguredDetail": "此任务没有智能体配置,且工作区、工作流与工作流步骤均未设置默认值。请选择默认智能体配置,以便新任务能够启动会话。", + "noAgentProfileConfiguredFor": "未为 <2>“{{name}}” 配置智能体配置。请在“设置 → 执行器”中配置凭据。", + "noAgentProfilesConfigured": "未配置智能体配置", + "noAgentProfilesConfiguredAddOne": "未配置智能体配置。请先在“设置 → 智能体”中添加。", + "noAgentRunning": "无智能体运行中", + "noAgentsFound": "未找到智能体。", + "noAgentsFound2": "未找到智能体", + "noAgentsYet": "尚无智能体", + "noAgentsYet2": "尚无智能体。", "noAssignee": "无负责人", "noBranches": "无分支", "noBranchesForUrl": "此 URL 没有可用分支。", @@ -777,8 +776,8 @@ "noCommandOutput": "无命令输出。", "noCommandOutputYet": "尚无命令输出。", "noCommentsYet": "暂无评论", - "noCompatibleAgentProfileFor": "未为 {{target}} 配置兼容的代理配置。请在“设置 → 执行器”中配置代理凭据。", - "noCompatibleAgentProfilesFor": "没有适用于 {{target}} 的兼容代理配置。", + "noCompatibleAgentProfileFor": "未为 {{target}} 配置兼容的智能体配置。请在“设置 → 执行器”中配置智能体凭据。", + "noCompatibleAgentProfilesFor": "没有适用于 {{target}} 的兼容智能体配置。", "noContent": "无内容", "noDecisionYet": "尚未决定", "noDocumentsFound": "未找到文档。", @@ -803,7 +802,7 @@ "noPlan": "无计划", "noPlanFound": "未找到计划。", "noProfileFound": "未找到配置。", - "noProfilesFound": "未找到配置文件。", + "noProfilesFound": "未找到智能体配置。", "noProject": "无项目", "noProjectsFound": "未找到项目。", "noQuestionsFound": "未找到问题。", @@ -835,7 +834,7 @@ "ontoBranch": "到 {{branch}}", "openBrowserPreview": "打开浏览器预览", "openCodeReview": "打开代码审阅", - "openComposeBoxHelp": "在终端上方打开由 kandev 控制的编写框以输入跟进消息。按 <1>Enter 发送,<3>Shift+Enter 换行。", + "openComposeBoxHelp": "在终端上方打开由 Kandev 控制的编写框以输入跟进消息。按 <1>Enter 发送,<3>Shift+Enter 换行。", "openEditor": "打开编辑器", "openEntityReference": "打开 {{label}}:{{title}}", "openFile": "打开文件", @@ -852,7 +851,7 @@ "openPullRequest": "打开拉取请求", "openSidebarFilters": "打开侧边栏筛选", "openSourceTask": "打开来源任务 {{fullTitle}}", - "openTaskSwitcher": "打开任务切换器", + "openTaskSwitcher": "打开任务切换面板", "openTerminal": "打开终端", "openTheBottomTerminalAndPaste": "打开底部终端并粘贴此命令", "openWorkspaceFolder": "打开工作区文件夹", @@ -863,7 +862,7 @@ "output": "输出", "outputTokens": "输出 token", "outputTruncated": "输出已截断", - "panelAgent": "代理", + "panelAgent": "智能体", "panelChanges": "更改", "panelDiffViewer": "差异查看器", "panelFileDiff": "差异 [{{file}}]", @@ -877,12 +876,12 @@ "parkedCount": "已停放({{parked}})", "parkedTerminals": "已停放的终端", "pastedImageCouldnTBeAttached": "粘贴的图片无法附加", - "pathBasedProxyWorksForApis": "基于路径的代理。适用于 API,但可能破坏期望在 / 提供服务的 Web 应用。", + "pathBasedProxyWorksForApis": "基于路径的代理服务器。适用于 API,但可能导致期望在 / 提供服务的 Web 应用无法正常运行。", "pauseTree": "暂停任务树", "paused": "已暂停", "pendingApproval": "待批准", - "pendingReviewCommentsHelp_one": "{{count}} 条待发送的审阅评论。点击展开列表; 可编辑每条评论、点击文件路径跳转到源码,或用垃圾桶图标移除评论。", - "pendingReviewCommentsHelp_other": "{{count}} 条待发送的审阅评论。点击展开列表; 可编辑每条评论、点击文件路径跳转到源码,或用垃圾桶图标移除评论。", + "pendingReviewCommentsHelp_one": "{{count}} 条待发送的审阅评论。点击展开列表;可编辑每条评论、点击文件路径跳转到源码,或用垃圾桶图标移除评论。", + "pendingReviewCommentsHelp_other": "{{count}} 条待发送的审阅评论。点击展开列表;可编辑每条评论、点击文件路径跳转到源码,或用垃圾桶图标移除评论。", "permissionRequested": "已请求权限", "permissionRequired": "需要权限", "pickADifferentRepoLocalFolder": "选择其他仓库、本地文件夹或远程 URL", @@ -918,7 +917,7 @@ "pressEscToCancelCmdEnter": "按 Esc 取消,Cmd+Enter 保存", "preview": "预览", "previous": "上一个", - "previousAgentError": "先前的代理错误", + "previousAgentError": "先前的智能体错误", "previousMessage": "上一条消息", "previousQuestion": "上一个问题", "priority": "优先级", @@ -938,7 +937,8 @@ "providerAheadPushDisabled": "提供商分支较新。无法执行推送。", "providerAheadPullRequiresUpstream": "此检出必须配置上游后才能拉取。", "divergedActionsUnavailable": "贡献历史已分叉。请从 Changes 操作中选择一个版本。", - "proxy": "代理", + "providerHistoryUnavailable": "当前 PR 历史不可用。显示检出历史,但不假定发生了重写。", + "proxy": "代理服务器", "publishARedactedSnapshotOfThis": "将此已完成任务的脱敏快照发布为你账户上的私密 GitHub Gist。", "publishToGithubGist": "发布到 GitHub Gist", "publishedAnyoneWithThisLinkCan": "已发布。任何拥有此链接的人都可以查看对话。", @@ -967,7 +967,7 @@ "reasonAddSessionDescription": "添加会话描述", "reasonAddTaskPrompt": "添加任务提示词", "reasonAddTaskTitle": "添加任务标题", - "reasonSelectAgent": "选择代理", + "reasonSelectAgent": "选择智能体", "reasonSelectBranch": "选择分支", "reasonSelectRepository": "选择仓库", "reasonSelectWorkflow": "选择工作流", @@ -1011,7 +1011,7 @@ "remoteStateLine": "状态:{{state}}", "remoteStatusFailedLine": "状态失败:{{error}}", "currentPRCommit": "当前 PR 提交", - "remoteUrlPressEnter": "<0>远程 URL; 按 Enter 提交。", + "remoteUrlPressEnter": "<0>远程 URL;按 Enter 提交。", "remove": "移除", "remove2": "移除 {{name}}", "remove3": "移除 {{identifier}}", @@ -1034,7 +1034,7 @@ "repeatedTerminalCommandsShown_one": "已显示 {{count}} 条重复的相同终端命令", "repeatedTerminalCommandsShown_other": "已显示 {{count}} 条重复的相同终端命令", "repo": "仓库", - "repositoriesAreAddedAsTopLevel": "仓库会作为当前远程工作区中的顶层条目添加。代理的工作目录不会改变。", + "repositoriesAreAddedAsTopLevel": "仓库会作为当前远程工作区中的顶层条目添加。智能体的工作目录不会改变。", "repository": "仓库", "repository2": "仓库", "repositoryWithPath": "仓库 · {{path}}", @@ -1043,8 +1043,8 @@ "requestedChangesPlain": "{{who}} 请求了更改", "requestedChangesVerb": "已请求更改", "requestedChangesWithComment": "{{who}} 请求了更改:'{{comment}}'", - "resetAgentContext": "重置代理上下文?", - "resetAgentContextClearsConversationHistory": "重置代理上下文; 清除对话历史,保留工作区", + "resetAgentContext": "重置智能体上下文?", + "resetAgentContextClearsConversationHistory": "重置智能体上下文;清除对话历史,保留工作区", "resetContext": "重置上下文", "resetEnvironment": "重置环境?", "resetEnvironment2": "重置环境", @@ -1055,8 +1055,8 @@ "resize": "调整大小", "restart": "重启", "restartConsequenceRunningProcesses": "<0>运行中的进程:已打开的终端、开发服务器及其他工作区进程会停止,包括任务编辑器服务器。请先保存未保存的工作,在来源附加完成后再重新打开或重启这些进程。", - "restartConsequenceSessionContext": "<0>会话上下文:Kandev 会在保留任务、会话、任务状态、消息、计划、已附加来源以及所选模型与模式的同时重启空闲代理。支持跨目录恢复的提供商会保留其原生会话。其他提供商会启动新会话,并在下一次提示时收到 Kandev 已记录的对话。Kandev 未记录的提供商私有上下文可能不会保留。", - "restartConsequenceWorkspace": "<0>工作区:任务根目录将成为代理的工作目录。对于单仓库任务,这会将 CWD 上移一级,并将每个来源显示为命名的顶层条目。现有文件与 Git 变更不会被移动或丢弃。", + "restartConsequenceSessionContext": "<0>会话上下文:Kandev 会在保留任务、会话、任务状态、消息、计划、已附加来源以及所选模型与模式的同时重启空闲智能体。支持跨目录恢复的提供商会保留其原生会话。其他提供商会启动新会话,并在下一次提示时收到 Kandev 已记录的对话。Kandev 未记录的提供商私有上下文可能不会保留。", + "restartConsequenceWorkspace": "<0>工作区:任务根目录将成为智能体的工作目录。对于单仓库任务,这会将 CWD 上移一级,并将每个来源显示为命名的顶层条目。现有文件与 Git 变更不会被移动或丢弃。", "restarting": "正在重启…", "restore": "恢复", "restoreThisVersion": "恢复此版本", @@ -1068,7 +1068,7 @@ "restoring": "正在恢复…", "restoringThisTaskSMaterializedWorkspace": "恢复此任务的具体化工作区失败。启动前请重新配置工作区。", "resume": "恢复", - "resumeAgent": "恢复代理", + "resumeAgent": "恢复智能体", "resumeSession": "恢复会话", "resumeTree": "恢复任务树", "resumingSession": "正在恢复会话", @@ -1103,8 +1103,8 @@ "running": "运行中", "sameBranchAsCurrentSession": "与当前会话相同的分支", "sameEnvironmentAsCurrentSession": "与当前会话相同的环境", - "saveAndSendToAgent": "保存并发送给代理", - "saveAndSendToAgentShortcut": "保存并发送给代理({{modKey}}+Shift+Enter)", + "saveAndSendToAgent": "保存并发送给智能体", + "saveAndSendToAgentShortcut": "保存并发送给智能体({{modKey}}+Shift+Enter)", "saveAs": "另存为:", "saveAs2": "另存为…", "saveCommentForReview": "保存评论以供审阅", @@ -1124,7 +1124,7 @@ "scrollToActiveSession": "滚动到活动会话", "scrollToLastPrompt": "滚动到上一条提示词", "scrollToStartOfTranscript": "滚动到记录开头", - "searchAgents": "搜索代理…", + "searchAgents": "搜索智能体…", "searchBranches": "搜索分支…", "searchEllipsis": "搜索…", "searchEllipsis2": "搜索…", @@ -1140,8 +1140,8 @@ "searchingWorkItems": "正在搜索工作项…", "selectASessionToOpenIts": "选择会话以打开其工作树", "selectATaskToStartChatting": "选择任务以开始聊天", - "selectAgent": "选择代理", - "selectAgentProfile": "选择代理配置", + "selectAgent": "选择智能体", + "selectAgentProfile": "选择智能体配置", "selectAnInstance": "选择实例", "selectBranch": "选择分支", "selectExecutorProfile": "选择执行器配置", @@ -1159,8 +1159,8 @@ "send": "发送", "sendAnswer": "发送回答", "sendComment": "发送评论", - "sendToAgent": "发送给代理", - "sendToAgentHelp": "在面板内点击 <1>发送给代理 立即投递给 CLI 代理,或打开聊天框输入跟进; 评论会自动前置。", + "sendToAgent": "发送给智能体", + "sendToAgentHelp": "在面板内点击 <1>发送给智能体 立即投递给 CLI 智能体,或打开聊天框输入跟进;评论会自动前置。", "sendToWorkflow": "发送到工作流", "senderWithSession": "{{base}} · {{sessionName}}", "sentAsNewMessage": "· 已作为新消息发送", @@ -1247,8 +1247,8 @@ "stageShip": "发布", "start": "开始", "start2": "开始", - "startAgent": "启动代理", - "startAgent2": "启动代理", + "startAgent": "启动智能体", + "startAgent2": "启动智能体", "startDevServerPreview": "启动开发服务器预览", "startFreshSession": "开始全新会话", "startPlanMode": "启动计划模式", @@ -1281,12 +1281,12 @@ "stepOf": "步骤 {{stepNumber}} / {{totalSteps}}:{{stepLabel}}", "stillWorkingSubjectMany": "其中一个或多个任务仍在工作", "stillWorkingSubjectOne": "此任务仍在工作", - "stillWorkingWarning": "{{subject}}; 代理正在生成或运行后台工作。现在继续将丢弃仍在进行的工作。", + "stillWorkingWarning": "{{subject}};智能体正在生成或运行后台工作。现在继续将丢弃仍在进行的工作。", "stop": "停止", "stopTunnel": "停止隧道", "stoppedWithAnError": "因错误而停止", "stopping": "正在停止…", - "subagent": "子代理", + "subagent": "子智能体", "subIssues": "子议题", "subTasks": "子任务", "submit": "提交", @@ -1316,7 +1316,7 @@ "taskCount_other": "{{count}} 个任务", "taskDebug": "任务调试", "taskDetails": "任务详情", - "taskHasAnAgentError": "任务存在代理错误", + "taskHasAnAgentError": "任务存在智能体错误", "taskName": "任务名称", "taskNeedsRepositoryForSources": "添加来源前,此任务需要一个仓库。", "taskOverview": "任务概览", @@ -1335,26 +1335,26 @@ "terminal": "终端", "terminalCount_one": "{{count}} 个终端", "terminalCount_other": "{{count}} 个终端", - "terminalNotAvailableThisTaskIs": "终端不可用; 此任务已归档", + "terminalNotAvailableThisTaskIs": "终端不可用;此任务已归档", "terminalNumbered": "终端 #{{seq}}", "terminalPromptInputAreDisabledUntil": "终端与提示词输入在下次运行开始前已禁用。", "terminalSessionEnded": "此会话已结束。没有可用的终端。", - "terminalUnavailableNoActiveSession": "终端不可用; 无活动会话。", + "terminalUnavailableNoActiveSession": "终端不可用;无活动会话。", "terminalWithSeq": "终端 {{seq}}", "terminals": "终端", "terminate": "终止", "terminateTerminal": "终止终端 #{{seq}}", "terminateThisKillsTheRunningPty": "终止 {{label}}?这将终止正在运行的 PTY。", - "theAgentAndRunningWorkspaceProcesses": "代理与正在运行的工作区进程会继续。现有文件、Git 变更以及已记录的任务与会话上下文会保留。", - "theAgentCanWriteAndUpdate": "代理可在工作过程中编写并更新计划", - "theAgentHasFinishedItsLast": "代理已完成上一轮,正在等待下一个符合条件的触发。下方文件树从磁盘上的工作树读取;之前的聊天历史会保留。", - "theAgentHasMovedOn": "代理已继续推进。你的响应将作为新消息发送。", - "theAgentStoppedWithAnError": "代理因错误而停止。恢复可重试同一对话,或开始全新会话。", + "theAgentAndRunningWorkspaceProcesses": "智能体与正在运行的工作区进程会继续。现有文件、Git 变更以及已记录的任务与会话上下文会保留。", + "theAgentCanWriteAndUpdate": "智能体可在工作过程中编写并更新计划", + "theAgentHasFinishedItsLast": "智能体已完成上一轮,正在等待下一个符合条件的触发。下方文件树从磁盘上的工作树读取;之前的聊天历史会保留。", + "theAgentHasMovedOn": "智能体已继续推进。你的响应将作为新消息发送。", + "theAgentStoppedWithAnError": "智能体因错误而停止。恢复可重试同一对话,或开始全新会话。", "theBrowserDidnTProvideImage": "浏览器未提供图片数据。请先保存图片,再以文件形式附加。", "theBuiltInDefaultLayoutWill": "内置默认布局将成为默认。", "theConnectionDroppedOrTimedOut": "连接断开或超时。请刷新任务以确认是否已成功。", - "theIdleAgentRestartsAtThe": "空闲代理会在任务根目录重启。现有文件、Git 变更、任务与会话历史、消息、计划、已附加来源、模型与模式均会保留。", - "theTextIsDeliveredStraightTo": "文本直接投递到 CLI 代理的 stdin; 待发送的审阅评论(如有)会自动前置。", + "theIdleAgentRestartsAtThe": "空闲智能体会在任务根目录重启。现有文件、Git 变更、任务与会话历史、消息、计划、已附加来源、模型与模式均会保留。", + "theTextIsDeliveredStraightTo": "文本直接投递到 CLI 智能体的 stdin;待发送的审阅评论(如有)会自动前置。", "theseAreTheSameVersionNothing": "这些是相同版本;无需比较。", "thinking": "思考中", "thisConversationHasNoShareableContent": "此对话没有可分享的内容。", @@ -1375,11 +1375,11 @@ "thisTearsDownTheCurrentContainer": "这将拆除此任务的当前容器、沙箱和/或工作树,以便下一会话以全新环境开始。", "thisTerminal": "此终端", "thisUpdatesTheLiveTaskWorkspace": "这将更新活动的任务工作区", - "thisWillClearTheAgentS": "这将清除代理的对话历史并开始全新上下文。你的工作区、文件与 git 状态会保留。", + "thisWillClearTheAgentS": "这将清除智能体的对话历史并开始全新上下文。你的工作区、文件与 git 状态会保留。", "thisWillPermanentlyDeleteSelectedItems": "将永久删除 {{selectedCount}} 个所选项目。此操作无法撤销。", "thisWillPermanentlyDeleteTheConversation": "这将永久删除与此会话的对话历史。任务工作区和其中的文件会被保留。", "ticket": "工单", - "timedOutAgentMovedOn": "已超时(代理已继续)", + "timedOutAgentMovedOn": "已超时(智能体已继续)", "title": "标题", "title2": "{{longName}} 标题", "title3": "{{longName}} 标题…", @@ -1400,7 +1400,7 @@ "tools": "工具", "toolSearching": "正在搜索", "treeActionFailed": "任务树操作失败", - "treeCancelDescription": "将取消 {{taskCount}} 个任务并中断 {{activeRunCount}} 个活动代理会话。可用“恢复”撤销此操作。", + "treeCancelDescription": "将取消 {{taskCount}} 个任务并中断 {{activeRunCount}} 个活动智能体会话。可用“恢复”撤销此操作。", "treeCost": "任务树成本", "treeTasks": "任务树中的任务", "truncated": "已截断", @@ -1426,7 +1426,7 @@ "unified": "统一", "unifiedView": "统一视图", "unknown": "未知", - "unknownAgent": "未知代理", + "unknownAgent": "未知智能体", "unknownError": "未知错误", "unknownError2": "未知错误", "unlink": "取消关联", @@ -1478,10 +1478,10 @@ "walkthroughNoteCount_one": "{{count}} 条演练备注", "walkthroughNoteCount_other": "{{count}} 条演练备注", "websocketClientNotAvailable": "WebSocket 客户端不可用", - "whatShouldTheAgentWorkOn": "代理应处理什么?", + "whatShouldTheAgentWorkOn": "智能体应处理什么?", "workdir": "工作目录", - "workedRanCommands_one": "已工作; 运行了 {{count}} 条命令", - "workedRanCommands_other": "已工作; 运行了 {{count}} 条命令", + "workedRanCommands_one": "已工作;运行了 {{count}} 条命令", + "workedRanCommands_other": "已工作;运行了 {{count}} 条命令", "workflow": "工作流", "workflowCount_one": "{{count}} 个工作流", "workflowCount_other": "{{count}} 个工作流", @@ -1506,7 +1506,7 @@ "worktree": "工作树", "wouldCreateABlockerCycle": "会形成阻塞循环:{{cycle}}", "writeAComment": "撰写评论…", - "writeAPromptForTheAgent": "为代理撰写提示词…(@ 插入已保存的提示词)", + "writeAPromptForTheAgent": "为智能体撰写提示词…(@ 插入已保存的提示词)", "writeYourChangesHere": "在此写下你的变更", "you": "你", "youCanAttachUpToFiles": "最多可附加 {{maxFiles}} 个文件。", @@ -1515,10 +1515,10 @@ "yourCodeLivesInLabel": "你的代码位于:", "yourReviewIsRequestedOnThis": "请求你审阅此任务。", "autopilot": "自动驾驶", - "autopilotDescription": "代理会自主工作,只有在关键决策阻碍进展时才会向父任务询问,然后等待答复再继续。", + "autopilotDescription": "智能体会自主工作,只有在关键决策阻碍进展时才会向父任务询问,然后等待答复再继续。", "autopilotInfoLabel": "了解自动驾驶模式", "autopilotSidebarDescription": "自动驾驶任务", - "autopilotChatDescription": "自动驾驶已启用。代理只会向父任务询问关键决策。", + "autopilotChatDescription": "自动驾驶已启用。智能体只会向父任务询问关键决策。", "duplicateRepository": "仓库重复", "duplicateRepositoryDescription": "{{repository}} 被添加了多次。请删除重复行。", "repositoryStillBeingVerified": "仍在验证仓库", diff --git a/apps/web/src/locales/zh-cn/workflows.json b/apps/web/src/locales/zh-cn/workflows.json index 801b064c23..99567b862e 100644 --- a/apps/web/src/locales/zh-cn/workflows.json +++ b/apps/web/src/locales/zh-cn/workflows.json @@ -3,8 +3,8 @@ "addCondition": "添加条件", "adding": "正在添加…", "addWorkflow": "添加工作流", - "agentProfile": "代理配置", - "agentProfileHelp": "此工作流中任务的默认代理配置。设置后,任务创建对话框中的代理选择器将被锁定。", + "agentProfile": "智能体配置", + "agentProfileHelp": "此工作流中任务的默认智能体配置。设置后,任务创建对话框中的智能体选择器将被锁定。", "allowManualMove": "允许手动移动", "allowManualMoveHelp": "允许在看板上将任务拖入此步骤。", "applyAnyway": "仍然应用", @@ -13,15 +13,15 @@ "autoArchiveHelp": "任务在此步骤停留设定小时数后自动归档。适用于工作流最后一步(例如 Done),以保持看板整洁。", "autoArchiveHours": "小时后", "automaticWorkflowCycle": "自动工作流循环", - "autoStartAgent": "自动启动代理", - "autoStartAgentHelp": "任务进入此步骤时自动启动代理。", + "autoStartAgent": "自动启动智能体", + "autoStartAgentHelp": "任务进入此步骤时自动启动智能体。", "autoSync": "自动同步", "autoSyncOff": "自动同步已关闭", "autoTransition": "自动流转", - "branchLabel": "Branch", + "branchLabel": "分支", "childrenCompletedHelp": "用于父任务步骤。当每个活动的直接子任务均为 COMPLETED、FAILED 或 CANCELLED 时,Kandev 运行此流转一次。已归档与临时子任务会被忽略。孙任务不计入;若父任务没有子任务则不运行。", "childrenCompletedHelpAria": "子任务完成流转的工作方式", - "chooseAgentFamily": "选择代理系列", + "chooseAgentFamily": "选择智能体系列", "chooseModelAndSessionSettings": "选择模型和会话设置", "close": "关闭", "color": "颜色", @@ -35,15 +35,15 @@ "colorRed": "红色", "colorYellow": "黄色", "configureOriginalSessionOptions": "配置原会话设置选项", - "configureOriginalSessionOptionsDescription": "仅当现有对话标签页的初始代理系列与某条规则匹配时,才更改该标签页。", + "configureOriginalSessionOptionsDescription": "仅当现有对话标签页的初始智能体系列与某条规则匹配时,才更改该标签页。", "confirmWorkflowCycle": "确认工作流循环", - "confirmWorkflowCycleDescription": "继续前请审阅重复的代理运行。", + "confirmWorkflowCycleDescription": "继续前请审阅重复的智能体运行。", "copied": "已复制", "copy": "复制", "createAnyway": "仍然创建", - "customAgentProfile": "自定义代理配置", + "customAgentProfile": "自定义智能体配置", "customTemplate": "自定义", - "customTemplateDescription": "从零创建你自己的代理工作流。", + "customTemplateDescription": "从零创建你自己的智能体工作流。", "cycle": "循环", "delete": "删除", "deleteAndArchiveTasks": "删除并归档任务", @@ -60,14 +60,17 @@ "deleteWorkflowNoTasks": "这将永久删除工作流及其所有步骤。", "deleteWorkflowWithTasks_one": "此工作流有 {{count}} 个任务。选择迁移目标,或删除工作流并归档任务。", "deleteWorkflowWithTasks_other": "此工作流有 {{count}} 个任务。选择迁移目标,或删除工作流并归档任务。", - "directoryLabel": "Directory", + "directoryLabel": "目录", "directoryLine": "目录 {{path}}", "disablePlanMode": "禁用计划模式", "disablePlanModeOnComplete": "完成时禁用计划模式", - "disablePlanModeOnCompleteHelp": "代理完成一轮后关闭计划模式,即使任务仍留在此步骤。", + "disablePlanModeOnCompleteHelp": "智能体完成一轮后关闭计划模式,即使任务仍留在此步骤。", "disablePlanModeOnExitHelp": "在此步骤的每一轮保持计划模式开启,仅当任务移到其他步骤时关闭。", "doNothing": "不执行任何操作", "doNothingWaitForUser": "不执行任何操作(等待用户)", + "duplicateUnavailableInImproveKandev": "无法复制此工作区中的工作流。", + "duplicateWorkflow": "复制", + "duplicatingWorkflow": "正在复制…", "everySeconds_one": "每 {{count}} 秒", "everySeconds_other": "每 {{count}} 秒", "export": "导出", @@ -79,6 +82,7 @@ "failedToCheckWorkflowTasks": "检查工作流任务失败", "failedToDeleteStep": "删除步骤失败", "failedToDeleteWorkflow": "删除工作流失败", + "failedToDuplicateWorkflow": "复制工作流失败", "failedToExportWorkflow": "导出工作流失败", "failedToExportWorkflows": "导出工作流失败", "failedToImportWorkflows": "导入工作流失败", @@ -111,11 +115,11 @@ "noneUseTaskDefault": "无(使用任务默认)", "noProfileOverride": "无配置覆盖", "notARecognizedRepositoryLink": "无法识别的 {{provider}} 仓库链接。", - "notSyncedYet": "尚未同步; 请使用“立即同步”", + "notSyncedYet": "尚未同步;请使用“立即同步”", "onExit": "退出时", "onExitActions": "退出时操作", "onExitHelp": "离开此步骤时运行(进入下一步之前)。", - "onTurnCompleteHelp": "代理完成一轮后运行。可用于自动推进流水线中的任务。", + "onTurnCompleteHelp": "智能体完成一轮后运行。可用于自动推进流水线中的任务。", "onTurnCompleteLabel": "轮次完成时", "onTurnCompleteTrigger": "轮次完成时", "onTurnStartHelp": "用户发送消息时运行。可用于审阅循环(例如收到反馈后移回进行中)。", @@ -123,18 +127,18 @@ "onTurnStartTrigger": "轮次开始时", "onUserMessage": "用户消息时", "orPasteYaml": "或粘贴 YAML", - "overrideAgentProfileHelp": "覆盖此步骤的代理配置。进入此步骤时,如果使用其他配置,将创建具有全新上下文的新会话。", + "overrideAgentProfileHelp": "覆盖此步骤的智能体配置。进入此步骤时,如果使用其他配置,将创建具有全新上下文的新会话。", "overrideOriginalSessionOptions": "覆盖原会话选项", "overrideOriginalSessionOptionsHelp": "保留原对话标签页,同时更改其在此步骤中的会话设置。例如,先使用 5.6 Sol 模型,再切换到 5.6 Luna 进行实现工作。", - "pasteGitLabPathHint": "Paste any GitLab link (self-managed hosts work too; only the path is used), or type the path directly. Set branch and directory below.", - "pasteRepositoryLinkHint": "Paste a {{provider}} link, or type the path directly. Set branch and directory below.", + "pasteGitLabPathHint": "粘贴任意 GitLab 链接(也支持自行托管的实例;只会使用其中的路径),或直接输入路径。然后在下方设置分支和目录。", + "pasteRepositoryLinkHint": "粘贴 {{provider}} 链接或直接输入路径,然后在下方设置分支和目录。", "planMode": "计划模式", - "planModeHelp": "代理提出计划,而不是直接做更改。", + "planModeHelp": "智能体提出计划,而不是直接做更改。", "pollDisabledHint": "仅在你按下“立即同步”时运行同步。", "pollEnabledHint": "按此间隔检查仓库(最短 60 秒)。", "pollIntervalSeconds": "轮询间隔(秒)", - "potentialRepeatedAgentRun": "可能重复的代理运行", - "projectPathOrLink": "Project path or link", + "potentialRepeatedAgentRun": "可能重复的智能体运行", + "projectPathOrLink": "项目路径或链接", "promptSourceStepPrompt": "重新进入“{{stepName}}”会发送其步骤提示词,而不是任务描述。", "promptSourceStepPromptWithTaskDescription": "重新进入“{{stepName}}”会发送已渲染的步骤提示词(含任务描述)。", "promptSourceTaskDescription": "“{{stepName}}”没有步骤提示词,因此重新进入时会发送任务描述。", @@ -142,23 +146,24 @@ "pullFromHelp": "当此步骤有容量时,可选的馈送步骤用于拉取排队中的工作。", "pullFromGuidanceWithFeeder": "可选的自动馈送入口。目标队列中的任务优先获得准入;有容量时,Kandev 再从 {{feeder}} 拉取符合条件的工作。直接移动和自动转换会在目标步骤排队,不需要馈送步骤。新任务在目标步骤已满时使用此馈送步骤。", "pullFromGuidanceWithoutFeeder": "未选择馈送步骤。目标步骤已满时,直接移动和自动转换会在此目标队列中排队。新任务也会留在此队列中,直到有可用容量。", - "readOnlyManagedBySync": "只读; 由工作流同步管理", - "readOnlyManagedByImproveKandev": "只读; 由 Improve Kandev 管理", + "readOnlyManagedBySync": "只读;由工作流同步管理", + "readOnlyManagedByImproveKandev": "只读;由 Improve Kandev 管理", "remove": "移除", - "removeAgentCondition": "移除代理条件 {{index}}", - "removeConditionalSessionConfigBeforeProfile": "请先移除条件会话配置,再为此步骤选择固定代理配置。", + "removeAgentCondition": "移除智能体条件 {{index}}", + "removeConditionalSessionConfigBeforeProfile": "请先移除条件会话配置,再为此步骤选择固定智能体配置。", "removeSyncConfirm": "移除工作流同步配置?这不会删除已同步的工作流。", "repositoryLink": "仓库链接", "repositoryRoot": "(仓库根目录)", - "resetAgentContext": "重置代理上下文", - "resetAgentContextHelp": "进入此步骤时用全新对话上下文重启代理。适用于需要无偏见视角的审阅步骤。", - "resetAgentContextHelpWithProfile": "无需此操作; 切换代理配置已会创建带全新上下文的新会话。", + "resetAgentContext": "重置智能体上下文", + "resetAgentContextHelp": "进入此步骤时用全新对话上下文重启智能体。适用于需要无偏见视角的审阅步骤。", + "resetAgentContextHelpWithProfile": "无需此操作;切换智能体配置已会创建带全新上下文的新会话。", "restoreOriginal": "恢复原始设置", "retryPartialSaveBeforeLeaving": "离开前请重试未完成的工作流保存", "returnToWorkflow": "返回工作流", "runCompletionActionsWhenTurnCancelled": "取消轮次时运行完成操作", - "runCompletionActionsWhenTurnCancelledHelp": "仅在用户明确取消轮次时适用。目标步骤的进入操作可能会立即启动另一轮代理。", + "runCompletionActionsWhenTurnCancelledHelp": "仅在用户明确取消轮次时适用。目标步骤的进入操作可能会立即启动另一轮智能体。", "save": "保存", + "saveBeforeDuplicating": "复制前请先保存工作流。", "saveBeforeExporting": "导出前请先保存工作流。", "saveFailed": "保存失败:{{error}}", "saveWorkflowsBeforeOrdering": "排序前请先保存工作流", @@ -170,12 +175,12 @@ "selectWorkflow": "选择工作流", "sessionConfigCarryForwardWarning": "由于复用原对话标签页,之前的工作流设置可能会沿用到此步骤。", "sessionConfigCarryForwardWarningMessage": "{{stepName}} 中更改的设置可能会沿用到此步骤的 {{agentName}}。请选择保留、恢复原始或设置新值。", - "sessionConfigEmptyRules": "添加条件,以选择哪些初始代理接收这些设置。", + "sessionConfigEmptyRules": "添加条件,以选择哪些初始智能体接收这些设置。", "sessionConfigFixedProfileWarning": "请先移除固定配置覆盖,再配置原会话。这两种行为不能同时使用。", "sessionConfigKeep": "保留", - "sessionConfigModelOptionsUnavailable": "此代理的模型选项不可用。请刷新代理能力后再保存此条件。", + "sessionConfigModelOptionsUnavailable": "此智能体的模型选项不可用。请刷新智能体能力后再保存此条件。", "sessionConfigRestore": "恢复", - "sessionConfigRulesHelp": "规则应用于任务的第一个代理会话,不会创建或切换对话标签页。", + "sessionConfigRulesHelp": "规则应用于任务的第一个智能体会话,不会创建或切换对话标签页。", "sessionConfigSetNew": "重新设置", "setSettings": "设置选项", "settingsForAgent": "{{agent}} 的设置", @@ -186,34 +191,34 @@ "stepIsPartOfReplayCycle": "{{stepName}} 属于回放循环", "stepNamePlaceholder": "步骤名称", "workflowPrompt": "工作流提示词", - "workflowPromptHelp": "可选说明,会在每一步进入时、步骤提示词之前加入。支持 {task_id} 与 @saved-prompt 引用(展开方式与步骤提示词相同)。{{taskPrompt}} 仅用于步骤。留空即禁用。对代理可见,并在聊天中折叠显示。", + "workflowPromptHelp": "可选说明,会在每一步进入时、步骤提示词之前加入。支持 {task_id} 与 @saved-prompt 引用(展开方式与步骤提示词相同)。{{taskPrompt}} 仅用于步骤。留空即禁用。对智能体可见,并在聊天中折叠显示。", "workflowPromptPlaceholder": "若 PR 已合并或关闭,将任务移至 Done。\n若需要创建多个拉取请求,优先通过子任务编排。", - "workflowPromptCollapsedHint": "可选; 展开以添加共享的步骤入口说明", - "workflowPromptSetHint": "已配置; 展开以编辑", + "workflowPromptCollapsedHint": "可选;展开以添加共享的步骤入口说明", + "workflowPromptSetHint": "已配置;展开以编辑", "workflowInstructionsCollapsed": "工作流说明", "stepPrompt": "步骤提示词", - "stepPromptHelp": "为此步骤中的代理提供自定义指令。使用 {{taskPrompt}} 可插入任务描述。", + "stepPromptHelp": "为此步骤中的智能体提供自定义指令。使用 {{taskPrompt}} 可插入任务描述。", "stepPromptPlaceholderExample": "使用 OAuth2 实现用户身份验证", "stepPromptPlaceholderTaskPrompt": "用户提供的原始任务描述", "stepPromptUsageHint": "输入 {{open}} 可使用占位符({{taskPrompt}} 会插入任务描述),或输入 @ 引用已保存的提示词。其内容会作为隐藏上下文附加;编辑已保存的提示词时,所有引用该提示词的步骤都会更新。注意:{{taskPrompt}} 只会在步骤提示词本身展开,不会在所引用的已保存提示词中展开。", - "switchProviderWarning": "Switching the source replaces every synced workflow with what's in the new repository; workflows missing there will be removed.", + "switchProviderWarning": "切换来源后,所有已同步工作流都会替换为新仓库中的版本;新仓库中不存在的工作流将被移除。", "syncCompletedWithWarnings": "同步完成,但有警告", "syncConfigSaved": "工作流同步配置已保存", - "syncDescription": "Automatically sync workflow definitions from a repository into this workspace.", + "syncDescription": "自动将仓库中的工作流定义同步到此工作区。", "syncDirectoryHelp": "目录应包含 {{format}} 格式的工作流导出文件({{extensions}})- 与工作流导出产生的格式相同。", "synced": "已同步", - "syncedBadgeTooltip": "只读; 由 {{source}} 的工作流同步管理。请在同步仓库中编辑或移除。", - "syncedReadOnlyReason": "由工作流同步管理; 请在同步仓库中编辑或移除", + "syncedBadgeTooltip": "只读;由 {{source}} 的工作流同步管理。请在同步仓库中编辑或移除。", + "syncedReadOnlyReason": "由工作流同步管理;请在同步仓库中编辑或移除", "syncFailed": "同步失败", "syncFailedWithError": "同步失败:{{error}}", "syncingFromRepository": "正在从 <1>{{repository}} 同步", "syncNow": "立即同步", - "syncProviderLabel": "Sync from", - "syncRemoved": "已移除工作流同步; 已同步的工作流可再次编辑", + "syncProviderLabel": "同步来源", + "syncRemoved": "已移除工作流同步;已同步的工作流可再次编辑", "syncRemoveFailed": "删除失败:{{error}}", - "syncResolvedTarget": "正在同步 {{owner}}/{{repo}} @ {{branch}}; 目录 {{directory}}。", - "syncResolvedTargetGitLab": "Syncing {{projectPath}} @ {{branch}}; directory {{directory}}.", - "syncTitle": "Workflow Sync", + "syncResolvedTarget": "正在同步 {{owner}}/{{repo}} @ {{branch}};目录 {{directory}}。", + "syncResolvedTargetGitLab": "正在同步 {{projectPath}} @ {{branch}};目录 {{directory}}。", + "syncTitle": "工作流同步", "targetStep": "目标步骤", "targetWorkflow": "目标工作流", "template": "模板", @@ -231,11 +236,11 @@ "update": "更新", "uploadYamlFile": "上传 YAML 文件", "userActionRequired": "需要用户操作", - "waitForAgentCompletionSignal": "等待代理完成信号", - "waitForAgentCompletionSignalHelp": "仅在代理调用 {{tool}} 后才自动推进。否则将轮次结束视为完成。", + "waitForAgentCompletionSignal": "等待智能体完成信号", + "waitForAgentCompletionSignalHelp": "仅在智能体调用 {{tool}} 后才自动推进。否则将轮次结束视为完成。", "waitingForFirstSync": "等待首次同步…", "waitingForRetry": "正在等待重试失败的更改。", - "whenAgentIs": "当代理为", + "whenAgentIs": "当智能体为", "whenChildTasksComplete": "当子任务完成时", "wipLimit": "在制品限制", "wipLimitHelp": "此步骤中允许的最大活动任务数。溢出的任务在队列中可见。使用 0 表示无限制。", @@ -243,9 +248,9 @@ "workflow": "工作流", "workflowCycleBlocked": "工作流循环已阻止", "workflowCycleBlockedDescription": "继续前请更改工作流步骤以消除自动循环。", - "workflowCycleBlockingBody": "此路径会重新进入“{{stepName}}”,并可能在没有用户再次操作的情况下重新启动代理。", + "workflowCycleBlockingBody": "此路径会重新进入“{{stepName}}”,并可能在没有用户再次操作的情况下重新启动智能体。", "workflowCycleReplayPathFor": "{{stepName}} 的回放路径", - "workflowCycleWarningBody": "此路径可能重新进入“{{stepName}}”,并在用户操作后再次启动代理。", + "workflowCycleWarningBody": "此路径可能重新进入“{{stepName}}”,并在用户操作后再次启动智能体。", "workflowDescription": "描述", "workflowDescriptionPlaceholder": "可选描述", "workflowDetails": "工作流详情", @@ -253,6 +258,7 @@ "workflowsReadOnlyImprove": "此工作区中的工作流由 Improve Kandev 管理,无法更改。", "workflowNameIsRequired": "工作流名称为必填项", "workflowNamePlaceholder": "我的项目工作流", + "workflowMutationInProgress": "请等待当前工作流更改完成。", "workflows": "工作流", "workflowsSectionDescription": "创建带自动流转的自主流水线,或由你手动移动任务的手动工作流", "workflowSteps": "工作流步骤", diff --git a/apps/web/src/locales/zh-cn/workspaces.json b/apps/web/src/locales/zh-cn/workspaces.json index bcff35411f..1cc4add6c2 100644 --- a/apps/web/src/locales/zh-cn/workspaces.json +++ b/apps/web/src/locales/zh-cn/workspaces.json @@ -2,7 +2,7 @@ "addLocalRepository": "添加本地仓库", "addScript": "添加脚本", "addWorkspace": "添加工作区", - "alwaysPullBeforeWorktree": "创建新 worktree 前始终拉取", + "alwaysPullBeforeWorktree": "创建新工作树前始终拉取", "backToWorkspaces": "返回工作区", "branchTemplateIssueKey": "ticket 的别名。按模板可读性任选其一。", "branchTemplateLiteralPrefix": "直接写字面前缀,例如 <0>{{example}}。", @@ -21,25 +21,25 @@ "closeRepositoryEditor": "关闭仓库编辑器", "confirmDelete": "确认删除", "copyFiles": "复制文件", - "copyFilesHelp": "复制到新 worktree 的 gitignored 路径。在条目后追加 <0>{{symlink}} 可链接回主仓库。使用 <1>{{escapedSymlink}} 表示以 <2>{{symlink}} 结尾的字面文件名。", - "copyFilesPathsResolved": "路径相对于仓库根解析,并植入每个新 worktree,保持相对位置。worktree 中已有文件不会被覆盖。", + "copyFilesHelp": "复制到新工作树的 gitignored 路径。在条目后追加 <0>{{symlink}} 可链接回主仓库。使用 <1>{{escapedSymlink}} 表示以 <2>{{symlink}} 结尾的字面文件名。", + "copyFilesPathsResolved": "路径相对于仓库根解析,并植入每个新工作树,保持相对位置。工作树中已有文件不会被覆盖。", "copyFilesPatternBraces": "<0>{{braces}} 大括号交替,例如 <1>{{example}}", "copyFilesPatternGlobstar": "<0>{{globstar}} 匹配任意层目录,例如 <1>{{example}}", "copyFilesPatternLiteral": "<0>{{pattern}} 字面文件或目录(目录会递归复制)", "copyFilesPatternWildcards": "<0>{{star}}、<1>{{question}}、<2>{{charClass}} 单段通配符", "copyFilesRemoteFallback": "远程执行器复制文件内容,而不是创建符号链接。", - "copyFilesSizeLimit": "复制到远程执行器时,超过 {{limit}} 的文件会被跳过。本地 worktree 复制无大小上限。", + "copyFilesSizeLimit": "复制到远程执行器时,超过 {{limit}} 的文件会被跳过。本地工作树复制无大小上限。", "customScriptsLabel": "自定义脚本", "customScripts_one": "{{count}} 个自定义脚本", "customScripts_other": "{{count}} 个自定义脚本", - "defaultAgentProfile": "默认代理配置", + "defaultAgentProfile": "默认智能体配置", "defaultExecutor": "默认执行器", "delete": "删除", "deleteRepository": "删除仓库", "deleteRepositoryConfirm": "这将移除仓库及其脚本。此操作无法撤销。", "deleteRepositoryTitle": "删除仓库", - "deleteRepositoryActiveSessions_one": "此仓库正被 {{count}} 个活动代理会话使用。请先停止或完成后再删除仓库。", - "deleteRepositoryActiveSessions_other": "此仓库正被 {{count}} 个活动代理会话使用。请先停止或完成后再删除仓库。", + "deleteRepositoryActiveSessions_one": "此仓库正被 {{count}} 个活动智能体会话使用。请先停止或完成后再删除仓库。", + "deleteRepositoryActiveSessions_other": "此仓库正被 {{count}} 个活动智能体会话使用。请先停止或完成后再删除仓库。", "deleteThisWorkspace": "删除此工作区", "deleteWorkspace": "删除工作区", "devScript": "开发脚本", @@ -81,7 +81,7 @@ "manageYourWorkspacesAndWorkflows": "管理你的工作区与工作流", "manualPath": "手动路径", "name": "名称", - "noAgentProfilesAvailable": "无可用代理配置", + "noAgentProfilesAvailable": "无可用智能体配置", "overview": "概览", "noCustomScripts": "无自定义脚本", "noDefault": "无默认", @@ -99,10 +99,10 @@ "repositoryName": "仓库名称", "scanningRepositories": "正在扫描仓库…", "scriptName": "脚本名称", - "selectDefaultAgentProfile": "选择默认代理配置", + "selectDefaultAgentProfile": "选择默认智能体配置", "selectDefaultExecutor": "选择默认执行器", "setupScript": "设置脚本", - "setupScriptHelp": "在克隆仓库或创建 git worktree 时运行。", + "setupScriptHelp": "在克隆仓库或创建 Git 工作树时运行。", "sourceLocal": "本地", "sourceRemote": "远程", "supportedPatterns": "支持的模式:", @@ -117,6 +117,6 @@ "workspaceNamePlaceholder": "我的工作区", "workspaceNotFound": "未找到工作区", "workspaceSettings": "工作区设置", - "worktreeBranchTemplate": "Worktree 分支模板", - "worktreeSync": "Worktree 同步" + "worktreeBranchTemplate": "工作树分支模板", + "worktreeSync": "工作树同步" } diff --git a/apps/web/src/locales/zh-hk/account.json b/apps/web/src/locales/zh-hk/account.json new file mode 100644 index 0000000000..b3beb8f3cd --- /dev/null +++ b/apps/web/src/locales/zh-hk/account.json @@ -0,0 +1,42 @@ +{ + "actions": "操作", + "activeSessions": "活動工作階段", + "apiTokens": "API 權杖", + "apiTokensBlurb": "個人存取權杖可讓腳本和 CLI 以你的身份驗證。若權杖可能已泄露,請立即吊銷。", + "cancel": "取消", + "changePassword": "修改密碼", + "couldNotChangePassword": "無法修改密碼。", + "couldNotCreateToken": "無法建立權杖。", + "createApiToken": "建立 API 權杖", + "createApiTokenDescription": "授予與你的帳戶相同的存取權限,供腳本或 CLI 使用。請為其命名,便於日後識別。", + "createToken": "建立權杖", + "created": "建立時間", + "creating": "正在建立…", + "currentPassword": "目前密碼", + "device": "設備", + "done": "完成", + "failedToLoadSessions": "載入工作階段失敗。", + "failedToLoadTokens": "載入權杖失敗。", + "ipAddress": "IP", + "lastSeen": "上次活動", + "lastUsed": "上次使用", + "loadingSessions": "正在載入工作階段…", + "loadingTokens": "正在載入權杖…", + "name": "名稱", + "never": "從未", + "newPassword": "新密碼", + "newToken": "新權杖", + "noTokensYet": "暫無權杖。", + "password": "密碼", + "passwordUpdated": "密碼已更新。", + "revoke": "吊銷", + "saving": "正在儲存…", + "securityPageDescription": "修改密碼並查看已登入你帳戶的設備。", + "securityPageTitle": "個人數據與密碼", + "signOut": "登出", + "thisDevice": "此設備", + "tokenCreated": "權杖已建立", + "tokenShownOnlyOnce": "此內容僅顯示一次;請立即複製並妥善保管。", + "tokensPageDescription": "供以你身份執行的腳本和 CLI 使用的個人存取權杖。", + "tokensPageTitle": "API 權杖" +} diff --git a/apps/web/src/locales/zh-hk/agents.json b/apps/web/src/locales/zh-hk/agents.json new file mode 100644 index 0000000000..6a5706af2e --- /dev/null +++ b/apps/web/src/locales/zh-hk/agents.json @@ -0,0 +1,221 @@ +{ + "actionCannotBeUndone": "此操作無法撤銷。", + "add": "新增", + "addProfile": "新增設定", + "addTuiAgent": "新增 TUI 代理程式", + "addTuiAgentDescription": "將 CLI 工具註冊為 TUI 代理程式。它會以預設透傳設定出現在代理程式列表中。", + "agentCliFlags": "代理程式 CLI 旗標", + "agentCliFlagsDescription": "啓動時代理程式 CLI 接收的旗標。僅應用已啓用的項。", + "agentInstallAlreadyInProgress": "代理程式安裝已在進行中。", + "agentInstallationInProgress": "正在安裝代理程式", + "agentNotFound": "未找到代理程式。", + "agentProfileSettings": "{{name}} 代理程式設定檔", + "agentProfilesTitle": "{{name}} 設定", + "approveUpdate": "批准更新", + "authRequiredOpenLoginTerminal": "需要身份驗證;點擊開啟登入終端", + "authRequiredOpenShell": "需要身份驗證;點擊開啟 shell 並登入", + "authenticationRequired": "需要身份驗證", + "automaticallyAvailable": "自動可用", + "availableCommandsCount_one": "可用命令({{count}})", + "availableCommandsCount_other": "可用命令({{count}})", + "availableSlashCommands": "可用斜槓命令", + "availableSlashCommandsHelp": "在工作階段聊天中輸入即可呼叫;例如 <0>{{example}}。", + "availableToInstallDescription": "點擊「安裝」在 Kandev 主機上執行該代理程式的安裝腳本。進度會實時推送;可並行啓動多個安裝。", + "backToAgents": "返回代理程式", + "backToModelSettings": "從 {{name}} 返回模型設定", + "browseAvailableAgents": "瀏覽可用代理程式", + "builtIn": "內置", + "cannotDeleteAgentProfile": "無法刪除代理程式設定檔", + "capabilityAuthRequired": "需要身份驗證。請在終端執行代理程式 CLI 完成驗證,然後刷新。", + "capabilityNotInstalled": "未安裝代理程式 CLI。", + "capabilityProbeFailed": "探測失敗。請查看代理程式日誌了解詳情。", + "capabilityProbing": "正在檢查代理程式能力…", + "changeTierMappingsFirst": "刪除此設定前,請先更改這些工作區層級映射。", + "everythingInstalled": "所有可用代理程式和工具均已安裝。", + "checkingAuthentication": "正在檢查身份驗證", + "checkingCapabilitiesAndAuth": "正在檢查代理程式能力與身份驗證…", + "checkingLatestRuntimeVersion": "正在檢查最新執行時版本…", + "cliFlagsEnabledCount_one": "已啓用 {{enabled}} / {{count}}", + "cliFlagsEnabledCount_other": "已啓用 {{enabled}} / {{count}}", + "command": "命令", + "commandPrefix": "命令前綴", + "commandPrefixHelp": "附加在代理程式啓動命令前的權杖,使其在沙箱啓動器下執行(例如 <0>{{example}})。該值會按 shell 規則拆分為多個權杖。留空則直接執行代理程式。僅適用於 ACP 工作階段;當設定使用 TUI 透傳時無效。", + "commandPreview": "命令預覽", + "commandPreviewHelp": "根據目前設定將執行的 CLI 命令。", + "commandRequired": "命令為必填項", + "commandThatWillRun": "將要執行的命令", + "configureProfilesIntro": "管理此代理程式的設定和預設值。", + "configured": "已設定", + "conflictAutomationRow": "<0>{{name}}({{workspace}})", + "conflictAutomationsTitle": "自動化:", + "conflictQuickChatsTitle": "快速聊天:", + "conflictTasksTitle": "任務:", + "conflictTierMappingRow": "{{workspace}} 中 {{provider}} 的 <0>{{tier}} 層級", + "conflictTierMappingsTitle": "工作區層級映射:", + "conflictWatchersTitle": "監控(將被停用):", + "conflictUtilityAgentsTitle": "輔助代理程式(將保留失效綁定):", + "disableProfileUtilityWarning": "輔助代理程式正在使用此設定。停用後,新呼叫會停止,直到修復每個綁定。", + "disableProfileAnyway": "停用設定", + "copied": "已複製", + "copyInstallCommand": "複製安裝命令", + "copyToClipboard": "複製到剪貼板", + "create": "建立", + "createAgentProfileTitle": "建立 {{name}} 設定", + "installAgents": "安裝代理程式", + "profileCount_one": "{{count}} 個設定", + "profileCount_other": "{{count}} 個設定", + "createProfileIntro": "為此代理程式建立新設定。", + "creating": "正在建立…", + "defaultProfile": "預設代理程式設定檔", + "defaultSuffix": "(預設)", + "delete": "刪除", + "deleteAgent": "刪除代理程式", + "deleteAgentDescription": "這將永久移除該代理程式及其所有設定。此操作無法撤銷。", + "deleteAgentProfileDescription": "這將永久刪除此設定。此操作無法撤銷。", + "deleteAgentProfileTitle": "刪除代理程式設定檔?", + "deleteAgentTitle": "刪除 {{name}}?", + "deleteAnyway": "仍然刪除", + "deleteAnywayConsequences": "這些工作階段將無法再使用此設定,所列監控將被停用。此操作無法撤銷。", + "deleteProfile": "刪除設定", + "details": "詳情", + "detectedAt": "檢測路徑:{{path}}", + "disableProfile": "停用代理程式設定檔", + "disableSetting": "停用 {{name}}", + "displayName": "顯示名稱", + "displayNameRequired": "顯示名稱為必填項", + "done": "完成", + "enableMcp": "啓用 MCP", + "enableMcpDescription": "允許此設定在工作階段中使用 MCP 伺服器。", + "enableProfile": "啓用代理程式設定檔", + "enableSetting": "啓用 {{name}}", + "enabled": "已啓用", + "enabledProfileInfo": "關於代理程式設定檔可用性的更多資訊", + "enabledProfileHelper": "已停用的代理程式設定檔仍會繼續服務現有工作階段,但在建立新任務或代理程式時不會出現在選項中。", + "everyProfileNeedsNameAndModel": "每個設定都需要名稱和模型。", + "exampleValue": "例如 {{example}}", + "failedToCreateAgent": "建立代理程式失敗", + "failedToDeleteProfile": "刪除設定失敗", + "failedToFetchCapabilities": "擷取能力失敗", + "modelOptionsAuthenticationRequired": "請登入此代理程式以載入模型選項。", + "modelOptionsResolutionFailed": "無法載入模型選項。", + "modelSettings": "模型設定", + "resolvingModelOptions": "正在載入模型選項…", + "retryModelOptions": "重試", + "failedToLoadCommandPreview": "載入命令預覽失敗", + "failedToLoadMcpConfig": "載入 MCP 設定失敗", + "failedToRefresh": "刷新失敗:{{error}}", + "failedToSaveAgent": "儲存代理程式失敗", + "failedToSaveMcpConfig": "儲存 MCP 設定失敗", + "failedToSaveProfile": "儲存設定失敗", + "failedToUpdateProfile": "更新代理程式設定檔失敗", + "filterModels": "篩選模型…", + "fixInvalidMcpConfig": "請先修復無效的 MCP 設定再儲存。", + "fixInvalidMcpJson": "請先修復無效的 MCP JSON 再儲存。", + "flag": "旗標", + "hostTerminal": "主機終端", + "hostTerminalDescription": "在 Kandev 主機上執行 shell。可用於手動安裝或設定代理程式。", + "install": "安裝", + "installQueued": "已排隊…", + "installationNotDetected": "未檢測到安裝", + "installed": "已安裝", + "installedAgents": "已安裝的代理程式", + "installedAgentsDescription": "在本機檢測到的代理程式已可設定。", + "installing": "正在安裝…", + "invalidJson": "無效的 JSON", + "invalidMcpConfig": "無效的 MCP 設定", + "kandevMcpChip": "✓ {{name}}", + "kandevMcpTools": "工具:{{tools}}", + "mcpConfigMustBeJsonObject": "MCP 伺服器設定必須是 JSON 對象", + "mcpConfiguration": "MCP 設定", + "mcpDraftHint": "設定儲存後將應用 MCP 設定。", + "mcpKeyMustBeJsonObject": "{{key}} 必須是 JSON 對象", + "mcpPassthroughInjectionHint": "在 CLI 透傳模式下,Kandev 通過 {{mechanism}} 注入這些 MCP 伺服器。", + "mcpSaveProfileHint": "儲存此設定以設定 MCP 伺服器。", + "mcpServersHelp": "MCP 定義存儲在數據庫中,並在執行時按執行器解析。這不會覆蓋你的本地代理程式設定檔。", + "mcpServersJson": "MCP 伺服器(JSON)", + "model": "模型", + "modelHeading": "模型", + "modelRequiredForAllProfiles": "所有設定都需要模型。", + "noAuthHintLogin": "點擊「開啟終端」登入,然後刷新。", + "noAuthHintNotInstalled": "安裝代理程式 CLI,然後點擊「刷新」。", + "noAuthHintShell": "點擊「開啟終端」啓動 shell,執行代理程式的登入命令,然後刷新。", + "noAuthLoginRequired": "未驗證;需要登入", + "newProfile": "新設定", + "noCliFlagsConfigured": "未設定 CLI 旗標。請在下方新增。", + "noCommandPreview": "無可用命令預覽。", + "noInstalledAgentsDetected": "未檢測到已安裝的代理程式。請在下方安裝,然後點擊「重新掃描」。", + "noModeFound": "未找到模式。", + "noModelFound": "未找到模型。", + "noModelsFound": "未找到模型。", + "noProfilesYet": "尚無設定。請從已安裝的代理程式建立一個。", + "notInstalled": "未安裝", + "openTerminal": "開啟終端", + "pageDescription": "發現已安裝的代理程式、安裝新代理程式並管理其設定。", + "popularServers": "常用伺服器", + "probingCapabilities": "正在探測代理程式能力… 通常需要幾秒鐘。", + "profileActions": "設定操作", + "profileInUseIntro": "此設定目前正在使用。刪除後將影響以下內容:", + "profileName": "設定名稱", + "profileNameRequired": "設定名稱為必填項。", + "profileNameRequiredDescription": "儲存前請輸入設定名稱。", + "profileNameRequiredTitle": "設定名稱為必填項", + "profileNotFound": "未找到設定。", + "profileSettings": "代理程式設定檔", + "promptTokenHint": "<0>{{token}} 將替換為你的任務描述或後續訊息。", + "ptyConnectionError": "連接錯誤", + "refresh": "刷新", + "refreshCapabilitiesTooltip": "刷新代理程式能力(模型 + 模式)", + "remove": "移除", + "removeCliFlag": "移除 {{name}}", + "removeThisProfile": "移除此設定", + "requestFailed": "請求失敗", + "rescan": "重新掃描", + "retry": "重試", + "retryUpdate": "重試更新", + "retryVersionCheck": "重試版本檢查", + "reviewUpdateBeforeApplying": "在 Kandev 更改此主機執行時之前,請先審閱更新。", + "runtimeAlreadyUpToDate": "執行時已是最新。", + "runtimeUpdateExplainer": "這將更新此 Kandev 主機上的託管執行時,然後刷新其模型與能力。", + "runtimeUpdateFailed": "執行時更新失敗。", + "runtimeUpdateSessionsNote": "活動工作階段會繼續執行;僅後續探測與啓動會使用刷新後的執行時。", + "runtimeUpdatedRefreshFailed": "執行時已更新,但無法刷新能力:{{error}}", + "runtimeUpdatedSuccess": "執行時更新成功。", + "runtimeVersion": "執行時版本", + "scanningForInstalledAgents": "正在掃描已安裝的代理程式…", + "searchModels": "搜尋模型…", + "searchModes": "搜尋模式…", + "selectAModelShort": "選擇模型", + "selectModel": "選擇模型…", + "sessionEnded": "工作階段已結束。", + "sessionEndedWithCode": "工作階段已結束(退出碼 {{code}})。", + "sessionUnavailable": "工作階段已不再可用。", + "setupProfile": "設定代理程式設定檔", + "signInToAgent": "登入:{{name}}", + "startMode": "啓動模式", + "startModel": "啓動模型", + "startingSession": "正在啓動工作階段…", + "terminal": "終端", + "tuiCommandHelp": "在 PATH 上查找的二進制名稱。使用 <0>{{token}} 插入模型值。", + "tuiModelHelp": "在代理程式選擇器下拉菜單中顯示的設定標籤", + "unableToStartUpdate": "無法開始更新:{{error}}", + "untitledQuickChat": "未命名快速聊天", + "untitledTask": "未命名任務", + "upToDate": "已是最新", + "updateAgent": "更新 {{name}}", + "updatePhaseQueued": "更新已排隊…", + "updatePhaseRefreshing": "正在刷新代理程式能力…", + "updatePhaseResolving": "正在檢查最新版本…", + "updatePhaseUpdating": "正在更新執行時…", + "valueOptional": "值(可選)", + "valueOptionalLabel": "值(可選)", + "valuePlaceholder": "值", + "watcherKindGithubIssue": "GitHub 議題", + "watcherKindGithubReview": "GitHub PR 審查", + "watcherKindJira": "Jira", + "watcherKindLinear": "Linear", + "duplicate": "複製", + "duplicateProfileNamed": "複製 {{name}}", + "duplicateProfileSuccess": "代理程式設定檔已複製", + "duplicateSaveBlocked": "設定仍在儲存,請稍後重試。", + "failedToDuplicateProfile": "複製代理程式設定檔失敗" +} diff --git a/apps/web/src/locales/zh-hk/auth.json b/apps/web/src/locales/zh-hk/auth.json new file mode 100644 index 0000000000..cf3a4ff038 --- /dev/null +++ b/apps/web/src/locales/zh-hk/auth.json @@ -0,0 +1,20 @@ +{ + "acceptInvite": "接受邀請", + "atLeast8Characters": "至少 8 個字符。", + "authenticationIsEnabledForThisDeployment": "此部署已啓用身份驗證。請在下方建立首個帳戶;該帳戶將成為管理員,並可邀請其他用戶。", + "checkingInvite": "正在檢查邀請…", + "continueWithProvider": "使用 {{provider}} 繼續", + "createAdminAccount": "建立管理員帳戶", + "creatingAdminAccount": "正在建立管理員帳戶…", + "displayName": "顯示名稱", + "email": "電郵地址", + "joining": "正在加入…", + "joinThisKandevDeployment": "加入此 Kandev 部署。", + "orContinueWith": "或使用以下方式繼續", + "password": "密碼", + "setUpKandev": "設定 Kandev", + "signIn": "登入", + "signingIn": "正在登入…", + "signInToYourKandevAccount": "登入你的 Kandev 帳戶以繼續。", + "youVeBeenInvitedAs": "你已被邀請為 {{role}}。" +} diff --git a/apps/web/src/locales/zh-hk/automations.json b/apps/web/src/locales/zh-hk/automations.json new file mode 100644 index 0000000000..770ef805bf --- /dev/null +++ b/apps/web/src/locales/zh-hk/automations.json @@ -0,0 +1,206 @@ +{ + "aboutSchedulePolling": "關於計劃輪詢", + "addCondition": "新增條件", + "addRepository": "新增儲存庫", + "agentProfileLabel": "代理程式設定檔", + "agentProfilePlaceholder": "選擇代理程式", + "allRuns": "全部執行記錄", + "alreadyAdded": "已新增", + "anyAutomation": "任意自動化", + "atMinute": "在分鐘", + "authorsLabel": "作者(逗號分隔)", + "automation": "自動化", + "automationCreated": "自動化已建立", + "automations": "自動化", + "availablePlaceholders": "可用佔位符", + "availablePlaceholdersColon": "可用佔位符:", + "baseBranchesLabel": "基礎分支(逗號分隔)", + "boardMoveNoticeBody": "此處的自動化過去會在執行時在看板上建立卡片。它們仍會執行,但報告現在歸屬於自動化本身;開啟即可查看結果。已在看板上的卡片不受影響。", + "boardMoveNoticeDismiss": "知道了", + "boardMoveNoticeTitle": "自動化執行不再出現在看板上", + "branchPatternsLabel": "分支模式(逗號分隔,支援 glob)", + "checkNamesLabel": "檢查名稱(逗號分隔,可選)", + "ciConclusionCancelled": "已取消", + "ciConclusionFailure": "失敗", + "ciConclusionSuccess": "成功", + "ciConclusionsLabel": "結論", + "clearFilters": "清除篩選", + "columnEnabled": "已啓用", + "columnLastTriggered": "上次觸發", + "columnName": "名稱", + "columnTriggers": "觸發器", + "comingSoonSuffix": "(即將推出)", + "completeRequiredFields": "請先填寫必填的自動化欄位,再儲存。", + "completed": "已完成", + "configurationLabel": "設定", + "couldNotLoadWorkflows": "無法載入工作流程", + "couldNotRefreshRuns": "無法刷新執行記錄;已從本地快取恢復", + "couldNotTrigger": "無法觸發此自動化", + "createAnAutomation": "建立自動化", + "cronEveryDay": "每天", + "cronEveryHour": "每小時", + "cronEveryWeek": "每週", + "cronExpressionLabel": "Cron 表達式", + "cronHelp": "標準五欄位 cron 或快捷方式({{shortcuts}})", + "delete": "刪除", + "deleteAll": "全部刪除", + "deleteAllRuns": "刪除所有執行記錄", + "deleteAllRunsDescription": "這將永久刪除此自動化的所有執行記錄;包括目前未載入的記錄;以及關聯的任務。此操作無法撤銷。", + "deleteAllRunsScoped": "刪除所有{{status}}執行記錄", + "deleteAllRunsScopedDescription": "這將永久刪除此視圖中顯示的所有{{status}}執行記錄以及關聯的任務。此操作無法撤銷。", + "deleteAllRunsScopedTitle": "刪除所有{{status}}執行記錄?", + "deleteAllRunsTitle": "刪除所有執行記錄?", + "deleteRun": "刪除執行記錄", + "details": "詳情", + "done": "完成", + "emptyListBody": "自動化可按計劃或 webhook 執行,並回寫發現結果。建立後,報告會出現在這裏。", + "emptyListTitle": "此工作區還沒有自動化", + "emptyRunsTitle": "還沒有自動化報告", + "enabledLabel": "已啓用", + "eventsLabel": "事件", + "excludeDraftPrs": "排除草稿 PR", + "executorProfileLabel": "執行器設定檔", + "executorProfilePlaceholder": "選擇執行器", + "failedToDeleteAutomation": "刪除自動化失敗", + "failedToDeleteRun": "刪除執行記錄失敗", + "failedToDeleteRuns": "刪除執行記錄失敗", + "failedToLoadWebhookSecret": "載入 webhook 密鑰失敗:{{error}}", + "failedToSaveAutomation": "儲存自動化失敗:{{error}}", + "hasNotRunYet": "此自動化尚未執行。", + "hideRunDetail": "隱藏執行詳情", + "instructionsLabel": "說明", + "interpretedAsUtcSetTimezone": "按 UTC 解釋,請設定時區", + "lastRan": "上次執行 {{when}}", + "listDescription": "建立自動觸發代理程式任務的規則。", + "loading": "正在載入…", + "loadingActivity": "正在載入活動…", + "loadingAutomations": "正在載入自動化…", + "loadingRuns": "正在載入執行記錄…", + "maxConcurrentRuns": "最大併發執行數", + "nameHelp": "輸入自動化名稱後才能啓用儲存。", + "nameLabel": "名稱", + "namePlaceholder": "自動化名稱", + "neverTriggered": "從未觸發", + "newAutomation": "新建自動化", + "nextRun": "下次執行", + "noAutomationsYet": "還沒有自動化", + "noConversationForRun": "此執行未產生可閲讀的對話。", + "noRepositoriesHelp": "未選擇儲存庫時,此自動化會針對工作區的第一個儲存庫執行。", + "noRunsMatchFilters": "沒有符合這些篩選條件的執行記錄。", + "noRunsYet": "還沒有執行記錄", + "noSchedule": "無計劃;此自動化不會自行執行。", + "noStep": "無步驟", + "noTimezoneFound": "未找到時區。", + "noTriggers": "無", + "noWorkflow": "無工作流程", + "nothingHasRunYet": "尚未執行任何內容。", + "openAutomations": "開啟自動化", + "orUseWebhookInstead": "或者改用 webhook", + "outcome": "結果", + "pickAWorkflowFirst": "請先選擇工作流程", + "prMergedDeadConfigWarning": "未選擇儲存庫;此觸發器不會觸發。請啓用「此工作區允許的所有儲存庫」或至少新增一個儲存庫。", + "prEventOpened": "已開啟", + "prEventOpenedTooltip": "檢測到新的開放 PR 時觸發一次。每個 PR 編號只會去重一次;同一個 PR 不會再次觸發。", + "prTriggerRepositoryHelp": "PR 觸發器始終使用 PR 自己的儲存庫。", + "pushTriggerHelp": "程式碼推送到匹配的分支時觸發", + "recentRuns": "最近執行記錄", + "recentRuns_one": "最近執行記錄({{count}})", + "recentRuns_other": "最近執行記錄({{count}})", + "refresh": "刷新", + "removeRepository": "移除儲存庫", + "replyToThisRun": "回覆此執行…", + "repositoryLabel": "儲存庫", + "repositoryNone": "無;不使用儲存庫", + "repositoryPlaceholderAuto": "自動", + "required": "必填", + "resizeRuns": "調整執行記錄區域大小", + "run": "執行", + "runAll": "全部", + "runArchived": "已歸檔", + "runCancelled": "已取消", + "runFailed": "失敗", + "runNow": "立即執行", + "runRunning": "執行中", + "runSkipped": "已跳過", + "runStatusArchived": "已歸檔", + "runStatusCancelled": "已取消", + "runStatusFailed": "失敗", + "runStatusRunning": "執行中", + "runStatusSkipped": "已跳過", + "runStatusSucceeded": "成功", + "runStatusTriggered": "已觸發", + "runSucceeded": "成功", + "runTriggered": "已觸發", + "running": "執行中", + "runs": "執行記錄", + "runsColumnStatus": "狀態", + "runsColumnTime": "時間", + "runsColumnTrigger": "觸發器", + "runsCount_one": "{{count}} 條執行記錄", + "runsCount_other": "{{count}} 條執行記錄", + "runsTitle": "全部執行記錄", + "samplePayloadHelp": "貼上示例 JSON 請求體以發現可用佔位符。", + "samplePayloadLabel": "示例請求體(可選)", + "scheduleLabel": "計劃", + "schedulePollingHelp": "由後台程序每 30 秒檢查一次。計劃會在後端重啓後保留。", + "schedulerNote": "計劃自動化僅在 Kandev 執行時執行。關閉期間錯過的觸發會在下次檢查時執行一次,而不是為每次錯過的次數各執行一次。", + "searchConditions": "搜尋條件…", + "searchTimezones": "搜尋時區…", + "selectRepositoryPlaceholder": "選擇儲存庫", + "selectStepOptional": "選擇步驟(可選)", + "selectWorkflowOptional": "選擇工作流程(可選)", + "setUpAnAutomation": "設定自動化", + "showLess": "顯示更少", + "showMore": "顯示更多", + "showRunDetail": "執行詳情", + "skipped": "已跳過;{{reason}}", + "skippedAlreadyRunning": "已跳過;已在執行", + "starting": "正在啓動…", + "stateIdle": "空閒", + "statePaused": "已暫停", + "stateRunning": "執行中", + "summaryCiCompleted": "CI 已完成", + "summaryPrMerged": "PR 已合併", + "summaryCustomSchedule": "自訂計劃", + "summaryPrEvents": "PR:{{events}}", + "summaryPullRequestEvent": "拉取要求事件", + "summaryPushToBranch": "推送到分支", + "summaryWebhook": "Webhook", + "switchToScheduled": "切換為計劃執行", + "taskTitleHelp": "留空以使用預設值。支援佔位符。", + "taskTitleLabel": "任務標題", + "taskTitlePlaceholder": "[自動] 自動化名稱", + "thenDescription": "每次此自動化觸發時都會建立一個新任務", + "thenTitle": "然後", + "triggerCategoryGithub": "GitHub", + "triggerCategoryWebhook": "Webhook", + "triggerInfoGithubPr": "按你的計劃輪詢 GitHub API,查找符合篩選條件的 PR。", + "triggerInfoGithubPrMerged": "當 Kandev 的 PR 輪詢器檢測到關聯的 PR 已合併時觸發。檢測最多可能延遲一分鐘。", + "triggerInfoNotImplemented": "尚未實現。", + "triggerInfoScheduled": "每 30 秒檢查一次。Cron 計劃匹配時觸發。", + "triggerInfoWebhook": "Webhook URL 收到 POST 請求時立即觸發。", + "triggerLabelGithubCi": "GitHub CI", + "triggerLabelGithubPr": "GitHub PR", + "triggerLabelGithubPrMerged": "GitHub PR 已合併", + "triggerLabelGithubPush": "GitHub 推送", + "triggerLabelScheduled": "計劃執行", + "triggerLabelWebhook": "Webhook", + "triggerManually": "手動觸發", + "triggered": "已觸發", + "tryAgain": "重試", + "unknownTriggerType": "未知觸發器類型", + "upNext": "接下來", + "watchForLabel": "監控", + "webhookCreatedDescription": "設定外部系統,將請求 POST 到此 URL,並在 <0>{{header}} 請求頭中提供密鑰。你可以隨時回到此自動化,再次複製這些值。", + "webhookSecretLabel": "Webhook 密鑰", + "webhookSecretLoading": "正在載入…", + "webhookUrlAfterSave": "儲存自動化後即可使用 Webhook URL。", + "webhookUrlLabel": "Webhook URL", + "webhookUsageHelp": "傳送帶 JSON 請求體的 POST 請求,並在 <0>{{header}} 請求頭中提供密鑰。使用 <1>{{placeholder}} 引用請求體欄位,例如 <2>{{example}}。", + "whenDescription": "導致此自動化執行的原因", + "whenTitle": "當", + "workflowLabel": "工作流程", + "workflowLoadError": "無法載入工作流程。", + "workflowStepHelpNoWorkflow": "請先選擇工作流程,再選擇步驟。", + "workflowStepLabel": "工作流程步驟" +} diff --git a/apps/web/src/locales/zh-hk/azuredevops.json b/apps/web/src/locales/zh-hk/azuredevops.json new file mode 100644 index 0000000000..dffb210098 --- /dev/null +++ b/apps/web/src/locales/zh-hk/azuredevops.json @@ -0,0 +1,257 @@ +{ + "actionHintAria": "{{kind}} 操作提示 {{index}}", + "actionLabelAria": "{{kind}} 操作標籤 {{index}}", + "addPrAction": "新增拉取要求操作", + "addPrQuery": "新增拉取要求查詢", + "addPrWatch": "新增拉取要求監控", + "addWorkItemAction": "新增工作項操作", + "addWorkItemQuery": "新增工作項查詢", + "addWorkItemWatch": "新增工作項監控", + "advanced": "高級", + "agentProfileId": "代理程式設定檔 ID", + "assignment": "分配", + "assignToMe": "分配給我", + "azureDevopsFilters": "Azure DevOps 篩選條件", + "azureDevopsReviewAndPolicyState": "Azure DevOps 審閱與策略狀態", + "azureDevopsWorkItemDetails": "Azure DevOps 工作項詳情", + "azureProjectId": "Azure 項目 ID", + "azureRepositoryIdOptional": "Azure 儲存庫 ID(可選)", + "baseBranch": "基礎分支", + "board": "看板", + "boardColumn": "看板列", + "boardColumns": "看板列", + "boardsAndRepos": "{{organizationUrl}} · 看板與儲存庫", + "branchPolicies": "分支策略", + "checkedAt": "檢查於 {{at}}", + "cleanupAlways": "始終", + "cleanupAuto": "自動", + "cleanupNever": "從不", + "cleanupPolicy": "清理策略", + "cleanupPolicyAlways": "始終", + "cleanupPolicyAuto": "自動", + "cleanupPolicyNever": "從不", + "closeWatchEditor": "關閉監控編輯器", + "closeWorkItemDetails": "關閉工作項詳情", + "configurationRemoved": "已移除 Azure DevOps 設定", + "configurationSaved": "已儲存 Azure DevOps 設定", + "connected": "已連接", + "connectedAs": "已連接為 {{name}}", + "connectionFailed": "連接失敗", + "couldNotLoadQuickActions": "無法載入現有快捷操作:{{error}}", + "couldNotSaveView": "無法儲存此視圖。請重試。", + "createPersonalAccessToken": "建立個人存取權杖", + "createWatch": "建立監控", + "creator": "建立者", + "creatorId": "建立者 ID", + "defaultProject": "預設項目", + "defaultQueries": "預設查詢", + "defaultQueriesDescription": "在 {{path}} 上顯示的拉取要求和工作項查詢快捷方式。", + "defaultQueriesSaved": "已儲存 Azure DevOps 預設查詢", + "defaultQueryInvalid": "每個預設查詢都必須包含標籤和有效的篩選條件。", + "delete": "刪除", + "deleteWatchConfirm": "刪除此監控?", + "description": "描述", + "descriptionFallback": "(無描述)", + "disable": "停用", + "disabled": "已停用", + "discussion": "討論", + "done": "完成", + "draft": "草稿", + "edit": "編輯", + "editPrompt": "編輯提示詞", + "editWatchTitle": "編輯{{kind}}監控", + "eGPlatformTriage": "例如 Platform triage", + "enable": "啓用", + "enabled": "已啓用", + "enterValidOrganizationUrl": "請輸入有效的組織 URL,以開啟其權杖設定。", + "executorProfileId": "執行器設定檔 ID", + "failedToLinkPullRequest": "無法關聯 Azure DevOps 拉取要求。", + "failedToLinkWorkItem": "無法關聯 Azure DevOps 工作項。", + "failedToLinkWorkItemNoProject": "無法關聯 Azure DevOps 工作項:缺少項目。", + "failedToLoadConfig": "載入 Azure DevOps 設定失敗:{{error}}", + "failedToLoadQuickActions": "載入快捷操作失敗。", + "failedToSaveDefaultQueries": "儲存預設查詢失敗", + "failedToSaveQuickActions": "儲存快捷操作失敗", + "fallbackAuthor": "Azure DevOps", + "fallbackUnassigned": "未分配", + "fallbackUnknown": "未知", + "fallbackWorkItem": "工作項", + "feedback": "反饋", + "fieldArea": "區域", + "fieldAssignee": "經辦人", + "fieldState": "狀態", + "fieldType": "類型", + "group": "分組", + "groupCreated": "已建立", + "groupInbox": "收件箱", + "hidePrompt": "隱藏提示詞", + "hint": "提示", + "hintOptional": "提示(可選)", + "howToCreatePat": "如何建立個人存取權杖", + "icon": "圖標", + "identityIdPlaceholder": "{{token}} 或身份 ID", + "identityPlaceholder": "{{token}} 或身份", + "inProgress": "進行中", + "integrationDescription": "此工作區使用的 Azure DevOps Services 組織、項目和 PAT。", + "integrationTitle": "Azure DevOps 集成", + "kandevRepositoryId": "Kandev 儲存庫 ID", + "label": "標籤", + "linkedItemsCount_one": "{{count}} 個關聯項", + "linkedItemsCount_other": "{{count}} 個關聯項", + "linkedKandevTasks": "關聯的 Kandev 任務", + "loading": "載入中…", + "loading2": "載入中…", + "loadingBoard": "正在載入看板…", + "loadingFeedback": "正在載入反饋…", + "loadingLinkedTasks": "正在載入關聯任務…", + "loadingProjects": "正在載入項目…", + "loadingResults": "正在載入結果…", + "loadingWatchers": "正在載入監控…", + "loadingWorkItem": "正在載入工作項…", + "loadOlderDiscussion": "載入更早的討論", + "maxInflightTasks": "最大進行中任務數(0 表示不限制)", + "move": "移動", + "moveToColumn": "移動到列", + "name": "名稱", + "newMatches_one": "{{count}} 個新匹配項。", + "newMatches_other": "{{count}} 個新匹配項。", + "newWatchTitle": "新建{{kind}}監控", + "nextBoardColumn": "下一看板列", + "nextPullRequestPage": "下一頁拉取要求", + "noComments": "暫無評論。", + "noDescription": "暫無描述。", + "noDiscussionYet": "尚無討論。", + "noLinkedTasks": "暫無關聯任務。", + "noMatchingResults": "無匹配結果。", + "none": "無", + "noPolicyEvaluations": "暫無策略評估。", + "noPullRequestWatches": "尚無拉取要求監控。", + "noReviewers": "暫無審閱者。", + "notCheckedYet": "尚未檢查", + "notConnectedNotice": "此工作區尚未連接 Azure DevOps。<2>設定 Azure DevOps", + "noWorkItemWatches": "尚無工作項監控。", + "openAzureDevopsFilters": "開啟 Azure DevOps 篩選條件", + "openPullRequestInAzureDevops": "在 Azure DevOps 中開啟拉取要求 {{id}}", + "openWorkItemInAzureDevops": "在 Azure DevOps 中開啟工作項 {{id}}", + "openWorkItemInAzureDevops2": "在 Azure DevOps 中開啟工作項", + "optional": "可選", + "organizationUrl": "組織 URL", + "pastePat": "貼上 PAT", + "patHelpTitle": "建立用於編輯看板的個人存取權杖", + "patStepCheckScopes": "在 <1>{{workItems}} 下勾選「讀取和寫入」。在 <4>{{code}} 下勾選「讀取」。其他範圍均不要勾選。", + "patStepChooseScopes": "選擇此組織、較短的有效期和「自訂範圍」。", + "patStepCreateAndPaste": "建立權杖,複製後貼上到此欄位。", + "patStepOpenTokenSettings": "開啟權杖設定並選擇「新建權杖」。", + "pending": "待處理", + "personalAccessToken": "個人存取權杖", + "placeholderTitleDescription": "Azure DevOps 工作項或拉取要求的標題", + "placeholderUrlDescription": "Azure DevOps 工作項或拉取要求的 URL", + "planningAndEffort": "規劃與工作量", + "policiesLabelled": "策略:{{state}}", + "pollIntervalSeconds": "輪詢間隔(秒)", + "previousBoardColumn": "上一看板列", + "previousPullRequestPage": "上一頁拉取要求", + "project": "項目", + "prompt": "提示詞", + "promptPlaceholdersHint": "輸入 {{open}} 可查看可用佔位符。執行操作時會替換 <3>{{url}} 和 <6>{{title}}。", + "pullRequestAny": "任意", + "pullRequestFeedback": "拉取要求反饋", + "pullRequestFilter": "拉取要求篩選條件", + "pullRequestFilters": "拉取要求篩選條件", + "pullRequestKindLower": "拉取要求", + "pullRequestKindNoun": "拉取要求", + "pullRequestKindTitle": "拉取要求", + "pullRequests": "拉取要求", + "pullRequestsTab": "拉取要求", + "pullRequestSubtitle": "{{repository}} · PR {{id}}", + "pullRequestWatches": "拉取要求監控", + "pullRequestWatchesDescription": "根據匹配的 Azure DevOps 拉取要求自動建立任務。", + "pullRequestWatchFieldsRequired": "項目、儲存庫、工作流程、步驟、代理程式和執行器均為必填項。", + "queryCreatorAria": "{{kind}} 查詢建立者 {{index}}", + "queryGroupAria": "{{kind}} 查詢分組 {{index}}", + "queryLabelAria": "{{kind}} 查詢標籤 {{index}}", + "queryReviewerAria": "{{kind}} 查詢審閱者 {{index}}", + "queryStatusAria": "{{kind}} 查詢狀態 {{index}}", + "queryTopAria": "{{kind}} 查詢上限 {{index}}", + "queryWiqlAria": "{{kind}} 查詢 WIQL {{index}}", + "quickActionInvalid": "每個快捷操作都必須包含標籤和提示詞。", + "quickActions": "快捷操作", + "quickActionsDescription": "從拉取要求或工作項啓動任務時,在 {{path}} 上顯示的提示詞。", + "quickActionsSaved": "已儲存 Azure DevOps 快捷操作", + "remove": "移除", + "removeActionAria": "移除 {{kind}} 操作 {{index}}", + "removeConfigurationConfirm": "移除 Azure DevOps 設定?", + "removeFailed": "移除失敗:{{error}}", + "removeQueryAria": "移除 {{kind}} 查詢 {{index}}", + "repository": "儲存庫", + "resetWatchConfirm_one": "重置此{{policy}}監控並移除 {{count}} 個任務?", + "resetWatchConfirm_other": "重置此{{policy}}監控並移除 {{count}} 個任務?", + "resultLimit": "結果上限", + "resultsCount_one": "{{count}} 個結果", + "resultsCount_other": "{{count}} 個結果", + "retry": "重試", + "reviewer": "審閱者", + "reviewerId": "審閱者 ID", + "reviewers": "審閱者", + "reviewLabelled": "審閱:{{state}}", + "runNow": "立即執行", + "save": "儲存", + "saveAzureDevopsView": "儲存 Azure DevOps 視圖", + "savedCredential": "已儲存的認證資料", + "saveFailed": "儲存失敗:{{error}}", + "saveViewDescription": "為此工作區儲存目前{{kind}}。", + "saving": "正在儲存…", + "savingEllipsis": "正在儲存…", + "selectAProjectToViewIts": "選擇一個項目以查看其看板。", + "selectProject": "選擇項目", + "selectRepository": "選擇儲存庫", + "startTask": "啓動任務", + "status": "狀態", + "statusAbandoned": "已放棄", + "statusActive": "活動", + "statusAll": "全部", + "statusAny": "任意狀態", + "statusCompleted": "已完成", + "statusLine": "狀態:{{status}}", + "task": "任務", + "taskActions": "任務操作", + "taskActionsForPullRequest": "拉取要求 {{id}} 的任務操作", + "taskActionsForWorkItem": "工作項 {{id}} 的任務操作", + "team": "團隊", + "testConnection": "測試連接", + "testing": "正在測試…", + "top": "上限", + "unassign": "取消分配", + "unassigned": "未分配", + "untitledWorkItem": "未命名工作項", + "update": "更新", + "updateWatch": "更新監控", + "updating": "正在更新…", + "voteApproved": "已批准", + "voteApprovedWithSuggestions": "已批准(含建議)", + "voteNone": "未投票", + "voteRejected": "已拒絕", + "voteWaitingForAuthor": "等待作者", + "watchDeleted": "已刪除監控。", + "watchDisabled": "已停用監控。", + "watchEnabled": "已啓用監控。", + "watchReset": "已重置監控。", + "watchStatusAbandoned": "已放棄", + "watchStatusActive": "活動", + "watchStatusCompleted": "已完成", + "watchSummary_one": "{{projectId}} · 每 {{count}} 秒 · 清理策略:{{policy}}", + "watchSummary_other": "{{projectId}} · 每 {{count}} 秒 · 清理策略:{{policy}}", + "workflowId": "工作流程 ID", + "workflowStepId": "工作流程步驟 ID", + "workItemKindLower": "工作項", + "workItemKindNoun": "工作項", + "workItemKindTitle": "工作項", + "workItemQuery": "工作項查詢", + "workItemQuery2": "工作項查詢", + "workItems": "工作項", + "workItemsTab": "工作項", + "workItemUnavailable": "工作項不可用。", + "workItemWatches": "工作項監控", + "workItemWatchesDescription": "根據匹配的 Azure DevOps 工作項查詢自動建立任務。", + "workItemWatchFieldsRequired": "項目、WIQL、儲存庫、工作流程、步驟、代理程式和執行器均為必填項。" +} diff --git a/apps/web/src/locales/zh-hk/chat.json b/apps/web/src/locales/zh-hk/chat.json new file mode 100644 index 0000000000..1ede32f878 --- /dev/null +++ b/apps/web/src/locales/zh-hk/chat.json @@ -0,0 +1,139 @@ +{ + "aboutRepositoryContext": "關於儲存庫上下文", + "addedToChatContext": "{{name}} 已新增到聊天上下文", + "addRepository": "新增儲存庫", + "addToChatContext": "新增到聊天上下文", + "agentOptional": "代理程式(可選)", + "agentProfile": "代理程式設定檔", + "agentProfileHelp": "為此對話選擇代理程式。", + "allConversationHistory": "全部對話歷史", + "allWorkspaceRepositoriesAdded": "工作區中的所有儲存庫均已新增", + "attachmentDeliveryFile": "檔案", + "attachmentDeliveryMode": "附件傳遞方式", + "attachmentDeliveryPathDescription": "上傳到工作區,以便代理程式讀取或編輯該檔案。", + "attachmentDeliveryPrompt": "提示詞", + "attachmentDeliveryPromptDescription": "作為提示詞上下文傳送,用於視覺理解。代理程式不會獲得檔案路徑。", + "attachmentFallbackName": "附件", + "attachmentMessageAlt": "附件 {{index}}", + "attachmentPreviewAlt": "預覽", + "attachmentPreviewFullAlt": "完整尺寸預覽", + "attachmentUploadFailed": "附件上傳失敗", + "attachmentUploadPending": "正在上傳附件…", + "attachmentUploadPendingSubmit": "請等待附件上傳完成後再傳送。", + "chatTabName": "聊天 {{index}}", + "clarificationNeeded": "需要澄清", + "clearAll": "全部清除", + "clearAllQueuedMessages": "清除所有排隊中的訊息", + "close": "關閉 {{name}}", + "collapseClarification": "摺疊澄清", + "collapseMessage": "摺疊訊息", + "collapseQueuedMessages": "摺疊排隊中的訊息", + "configChatPlaceholder": "詢問任何關於你設定的問題…", + "configurationChat": "設定聊天", + "configurationChatDescription": "讓代理程式更新 Kandev 設定、工作流程、代理程式設定檔和 MCP 設定。", + "configurationChatTab": "設定聊天", + "delete": "刪除", + "deleteQuickChat": "刪除快速聊天?", + "deleteQuickChatIntro": "這將永久刪除此快速聊天工作階段,包括:", + "doubleClickToRename": "雙擊以重命名", + "editQueuedMessage": "編輯排隊中的訊息", + "expandClarification": "展開澄清", + "expandMessage": "展開訊息", + "failedToClearQueuedMessages": "清除排隊中的訊息失敗。", + "failedToDeleteQuickChat": "刪除快速聊天失敗", + "failedToMergeQueuedMessages": "合併排隊中的訊息失敗。", + "failedToRemoveQueuedMessage": "移除排隊中的訊息失敗。", + "failedToReorderQueuedMessages": "無法重新排序佇列中的訊息。", + "failedToRunQueuedMessage": "執行排隊中的訊息失敗。", + "failedToStartQuickChat": "啓動快速聊天失敗", + "fileTreeActions": "檔案操作", + "loadingRepositories": "正在載入儲存庫", + "failedToSendQueuedMessageNow": "立即傳送排隊訊息失敗。", + "mergeReferenceOverflow": "這些排隊中的訊息包含過多實體引用,無法合併。", + "mergeWithAbove": "與上方訊息合併", + "noTodosYet": "暫無待辦。", + "removeQueuedMessage": "移除排隊中的訊息", + "reorderQueuedMessage": "重新排序佇列訊息", + "sortable": "可排序", + "technicalDetails": "技術詳情", + "providerQuotaTitle": "{{provider}} 使用額度已達上限", + "newChatTab": "新建聊天", + "newQuickChat": "新建快速聊天", + "noAgentsAvailable": "沒有可用的代理程式", + "noRepositoriesAvailableInWorkspace": "此工作區中沒有可用儲存庫", + "noRepository": "無儲存庫", + "optional": "(可選)", + "providerQuotaModel": "模型:{{model}}", + "providerQuotaProviderFallback": "提供者", + "providerQuotaReset": "容量將於 {{resetAt}} 恢復。", + "providerQuotaResetUnknown": "請在提供者恢復可用容量後重試。", + "queueCapacity_one": "{{count}} / {{max}}", + "queueCapacity_other": "{{count}} / {{max}}", + "queueCapacityFull_one": "{{count}} / {{max}} · 已滿", + "queueCapacityFull_other": "{{count}} / {{max}} · 已滿", + "queueChipExpand_one": "{{count}} 條排隊訊息,點擊展開", + "queueChipExpand_other": "{{count}} 條排隊訊息,點擊展開", + "queueCount_one": "{{count}}", + "queueCount_other": "{{count}}", + "queued": "已排隊", + "queuedCount_one": "{{count}} 條排隊訊息", + "queuedCount_other": "{{count}} 條排隊訊息", + "queuedMessages": "排隊中的訊息", + "queueEditAlreadySent": "訊息已傳送;代理程式在你的編輯生效前已取走它。", + "queueEditSaveFailed": "儲存編輯失敗。請重試。", + "queueFullSuffix": "· 已滿", + "quickChatDialogIntro": "與代理程式開始快速對話,無需建立正式任務。", + "quickChatIntro": "就想法、問題或程式碼庫與代理程式聊天。", + "quickChatIntroSecondary": "快速聊天獨立於任務看板。", + "renameChat": "重命名聊天", + "renameSavedOnThisDeviceOnly": "重命名僅儲存在此設備上", + "renameSyncFailedDescription": "無法將新名稱同步到你的其他設備。", + "repositories": "儲存庫", + "repositoriesHelp": "新增儲存庫上下文,以便聚焦特定程式碼和分支。", + "repositoryContextHelp": "Kandev 會從所選分支建立隔離的工作樹。未提交的本地更改不會包含在內。", + "repositoryOptional": "儲存庫(可選)", + "resizeQuickChatFromLeft": "從左側調整快速聊天大小", + "resizeQuickChatFromRight": "從右側調整快速聊天大小", + "retryAttachmentUpload": "重試上傳附件", + "runNext": "執行下一個", + "runNextQueuedMessage": "執行下一個排隊訊息", + "selectAgent": "選擇代理程式", + "selectARepository": "選擇儲存庫…", + "startChat": "開始聊天", + "startChatAction": "開始聊天", + "starting": "正在啓動…", + "startingChat": "正在啓動聊天…", + "sendNow": "立即傳送", + "sendNowQueuedMessage": "立即傳送排隊訊息", + "sendNowQueuedMessages": "立即傳送全部排隊訊息", + "sendNowEntryAlreadySent": "訊息已傳送;代理程式在「立即傳送」開始前已取走它。", + "sendNowQueueEmpty": "佇列為空。", + "sendNowQueueChanged": "佇列在「立即傳送」開始前已發生變化。", + "sendNowConflict": "另有取消或「立即傳送」操作正在進行中。", + "sendNowTurnChanged": "活動回合在「立即傳送」開始前已變化。", + "sendNowAttachmentOverflow": "合併後的附件超出訊息限制。", + "sendNowReferenceOverflow": "合併後的實體引用超出訊息限制。", + "theAssociatedWorktree": "關聯的工作樹", + "theTaskAndItsData": "任務及其數據", + "thisActionCannotBeUndone": "此操作無法撤銷。", + "turnGroupToolCalls_one": "{{count}} 次工具呼叫", + "turnGroupToolCalls_other": "{{count}} 次工具呼叫", + "composerSteerPlaceholder": "立即傳送;將送入正在進行的回合", + "unknownError": "未知錯誤", + "useWorkspaceDefault": "使用工作區預設值…", + "useWorkspaceDefaultOption": "使用工作區預設值", + "openProviderPage": "開啟服務商頁面", + "transientRetryReasonModelCapacity": "模型暫時沒有可用容量", + "transientRetryReasonNetworkUnavailable": "網絡不可用", + "transientRetryReasonProviderOverloaded": "服務商過載", + "transientRetryReasonProviderUnavailable": "服務商暫時不可用", + "transientRetryReasonRateLimited": "請求受限", + "transientRetryReasonGeneric": "服務商錯誤", + "transientRetryIn": "將在 {{countdown}} 後重試", + "transientRetryNow": "正在重試…", + "transientRetryCountdownLabel": "重試倒計時", + "transientRetryAttempt": "第 {{attempt}} 次,共 {{maxAttempts}} 次", + "transientRetryProviderModel": "{{provider}} · {{model}}", + "transientRetryProvider": "服務商:{{provider}}", + "transientRetryModel": "模型:{{model}}" +} diff --git a/apps/web/src/locales/zh-hk/common.json b/apps/web/src/locales/zh-hk/common.json new file mode 100644 index 0000000000..253e3eed8f --- /dev/null +++ b/apps/web/src/locales/zh-hk/common.json @@ -0,0 +1,445 @@ +{ + "aboutContextCompactionCount": "關於推斷的壓縮次數", + "activeSubagents_one": "{{count}} 個子代理程式執行中", + "activeSubagents_other": "{{count}} 個子代理程式執行中", + "activeTasks": "進行中的任務", + "aDirectLocalExecutorProfileIsRequired": "建立並使用空儲存庫需要一個直接本地執行器設定檔。", + "agent": "代理程式", + "agentDashboard": "代理程式儀表盤", + "agentRun": "代理程式執行", + "agentRuns": "代理程式執行記錄", + "agents": "代理程式", + "agentSkillsAskTheAgentTo": "代理程式技能(可讓代理程式執行)", + "allowIndexing": "允許索引", + "andMoreFiles_one": "+{{count}} 個", + "andMoreFiles_other": "+{{count}} 個", + "anEnhancedPromptIsAvailable": "可用增強提示詞。", + "anErrorOccurred": "發生錯誤", + "anUnexpectedErrorOccurred": "發生意外錯誤", + "anUnknownErrorOccurred": "發生未知錯誤", + "apply": "應用", + "autoApproveAllPermissions": "自動批准所有權限", + "automation": "自動化", + "automations": "自動化", + "availableTemplates": "可用模板", + "back": "返回", + "backToTaskOverview": "返回任務概覽", + "baseBranch": "基礎分支", + "bootsASecondaryKandevDevInstance": "啓動一個使用全新數據庫的輔助 Kandev 開發實例,以便在不影響主實例的情況下驗證改動。", + "bootstrapFailed": "引導失敗", + "bootstrapFailedCloseAndReopen": "引導失敗;關閉後重新開啟以重試。", + "breadcrumb": "路徑導航", + "browseParentDirectory": "瀏覽上級目錄", + "bugFix": "缺陷修復", + "cancel": "取消", + "cancelNewFolder": "取消新建資料夾", + "changelog": "更新日誌", + "checkingGithubAuthentication": "正在檢查 GitHub 身份驗證…", + "chooseAFolderOrEnterA": "選擇一個資料夾,或輸入本機上的新路徑。", + "cliClient": "CLI 用戶端", + "cliModeYourPromptWillBe": "CLI 模式;你的提示詞將自動注入到終端", + "cliPassthrough": "CLI 透傳", + "close": "關閉", + "closeEsc": "關閉(Esc)", + "commandAddBrowserPanel": "新增瀏覽器面板", + "commandAddBrowserPanelKeywords": "瀏覽器, 預覽, 網頁, 開啟瀏覽器預覽, 網頁預覽, 應用預覽, browser", + "commandAddChangesPanel": "新增更改面板", + "commandAddChangesPanelKeywords": "更改, 差異, git 更改, 已更改檔案, 版本控制, git diff, 審查更改, changes", + "commandAddPlanPanel": "新增計劃面板", + "commandAddPlanPanelKeywords": "計劃, 文檔, 任務計劃, 實現計劃, 計劃詳情, plan", + "commandAddTerminalPanel": "新增終端面板", + "commandAddTerminalPanelKeywords": "終端, shell, 控制台, 新終端, 開啟終端, 命令列, terminal", + "commandAgentsSettingsKeywords": "代理程式, 代理程式設定, 代理程式設定檔, 已安裝代理程式, claude", + "commandArchiveTaskKeywords": "歸檔, 歸檔任務, 歸檔目前任務, 關閉任務, 完成任務, 收起", + "commandCancelTurn": "取消本輪", + "commandCancelTurnKeywords": "取消, 停止, 輪次, 取消代理程式, 停止代理程式, 中斷代理程式, cancel", + "commandCommitChanges": "提交更改", + "commandCommitChangesKeywords": "提交, git, 儲存更改, git commit, commit", + "commandConfigChatKeywords": "設定聊天, 設定模式, 設定 kandev, 工作流程設定, mcp 設定", + "commandCreateFile": "建立檔案", + "commandCreateFileKeywords": "建立, 新建, 檔案, 新增, file", + "commandCreateFilePlaceholder": "相對於工作區根目錄的檔案路徑…", + "commandCreateNewTask": "建立新任務", + "commandCreateNewTaskKeywords": "新建, 建立, 任務, 新增, task", + "commandCreatePr": "建立 PR", + "commandCreatePrKeywords": "拉取要求, pr, 開啟拉取要求, 提交拉取要求, git", + "commandCreateSubtask": "建立子任務", + "commandCreateSubtaskKeywords": "子任務, 建立, 新建子任務, 子級任務, subtask", + "commandExecutorsSettingsKeywords": "執行器, 執行器設定檔, 執行環境, 環境變量, 執行時, 計算", + "commandGoToAllTasks": "前往全部任務", + "commandGoToAllTasksKeywords": "任務, 列表, 全部", + "commandGoToGitHubDashboard": "前往 GitHub 儀表盤", + "commandGoToGitHubDashboardKeywords": "github, 儀表盤, pr, 拉取要求, 程式碼審閱, issues, 審閱", + "commandGoToHome": "前往首頁", + "commandGoToHomeKeywords": "首頁, 看板, 面板", + "commandGoToSettings": "前往設定", + "commandGoToSettingsKeywords": "設定, 偏好, 設定, 通用設定", + "commandGoToStats": "前往統計", + "commandGoToStatsKeywords": "統計, 數據分析, 分析, 指標", + "commandGroupActions": "操作", + "commandGroupAgent": "代理程式", + "commandGroupCommands": "命令", + "commandGroupGit": "Git", + "commandGroupNavigation": "導航", + "commandGroupPanels": "面板", + "commandGroupPreferences": "偏好", + "commandGroupSettings": "設定", + "commandGroupTasks": "任務", + "commandGroupView": "視圖", + "commandGroupWorkspace": "工作區", + "commandMergeKeywords": "合併, git, 分支, merge", + "commandNewAgent": "新建代理程式", + "commandNewAgentKeywords": "新建, 代理程式, 工作階段, 啓動代理程式, 新建工作階段, agent", + "commandOpenRecentTaskSwitcher": "開啟最近任務切換面板", + "commandOpenRecentTaskSwitcherKeywords": "最近, 任務, 切換面板, 歷史, 最近任務, 切換任務, 切換最近任務, recent", + "commandPaletteMode": "命令面板模式", + "commandPreviewAddTerminalPanel": "新增終端面板", + "commandPreviewCommitChanges": "提交更改", + "commandPreviewGoToHome": "前往首頁", + "commandPreviewPull": "拉取", + "commandPreviewSearchTasks": "搜尋任務", + "commandPromptsSettingsKeywords": "提示詞, 提示詞設定, 自訂提示詞, 提示詞片段, 提示詞模板", + "commandPullKeywords": "拉取, git, 拉取更改, 下載更改, pull", + "commandPushKeywords": "推送, git, 推送更改, 推送到遠端, 上傳更改, push", + "commandQuickChat": "快速聊天", + "commandQuickChatKeywords": "快速聊天, 新建快速聊天, 快速提問, 詢問代理程式", + "commandRebaseKeywords": "變基, git, 分支, rebase", + "commandSwitchToDarkMode": "切換到深色模式", + "commandSwitchToKanbanView": "切換到看板視圖", + "commandSwitchToKanbanViewKeywords": "看板, 面板, 視圖, kanban", + "commandSwitchToLightMode": "切換到淺色模式", + "commandSwitchToListView": "切換到列表視圖", + "commandSwitchToListViewKeywords": "列表, 表格, 視圖, list", + "commandSwitchToPipelineView": "切換到流水線視圖", + "commandSwitchToPipelineViewKeywords": "流水線, 圖, 視圖, pipeline", + "commandThemeKeywords": "主題, 顏色主題, 外觀", + "commandWorkspaceSettingsKeywords": "工作區, 工作區", + "commitsAndPushesToTheCurrent": "提交併推送到目前分支。", + "commitsPushesAndOpensAPull": "提交、推送並建立拉取要求。", + "configurationChat": "設定聊天", + "configureAUtilityAgentToEnhance": "在設定中設定輔助代理程式以啓用 AI 增強", + "configureExecutorsInSettingsToControl": "在設定中設定執行器,以控制代理程式的執行位置。", + "configureGithub": "設定 GitHub", + "confirm": "確認", + "contents": "內容", + "contentSearchNeedsAnActiveTask": "內容搜尋需要處於活動狀態的任務工作階段。", + "contextCompactionCountHelp": "Kandev 根據觀察到的上下文用量下降推斷此計數。樣本缺失或提供者重置可能導致結果僅為近似值。", + "contextCompactions": "壓縮次數", + "contribute": "貢獻", + "contributingAsLogin": "以 <1>@{{login}} 身份貢獻。{{access}}", + "contributingAsYourGithubAccount": "以你的 GitHub 帳戶身份貢獻。{{access}}", + "copy": "複製", + "couldNotPrepareImproveKandev": "無法準備 Improve Kandev", + "createATaskDescribingYourBug": "建立一個任務,描述你的缺陷或功能請求", + "createAWorkspaceToConfigureThisIntegration": "建立工作區後即可設定此集成。", + "createFolder": "建立資料夾", + "createNewRepository": "建立新儲存庫", + "createRepository": "建立儲存庫", + "createsAnEmptyGitRepository": "建立空 Git 儲存庫並註冊到此工作區。", + "creating": "正在建立…", + "dAgo": "{{diffDay}}天前", + "default": "預設", + "defaultBadge": "預設", + "deleteSession": "刪除工作階段", + "describeABugYouHitOr": "描述你遇到的缺陷或想要的功能,我們會在你自己的代理程式上建立任務,並在 Kandev 程式碼庫中實現。", + "destination": "目標位置", + "discardAndContinue": "丟棄並繼續", + "discardLocalChanges": "丟棄本地更改?", + "discardLocalChangesAtPathDescription": "啓動此任務將永久丟棄本地複製 {{repoPath}} 中未提交的更改。繼續前請備份需要保留的內容。", + "discardLocalChangesDescription": "啓動此任務將永久丟棄本地複製中未提交的更改。繼續前請備份需要保留的內容。", + "discoveringAgents": "正在發現代理程式…", + "doNotShowThisAgain": "不再顯示", + "edit": "編輯", + "editTask": "編輯任務", + "emptyRepositoriesRunDirectlySwitch": "空儲存庫直接在本機執行。此任務將切換到「{{profile}}」。", + "enhancePromptWithAi": "用 AI 增強提示詞", + "enterAValue": "輸入值…", + "enterValue": "輸入值…", + "error": "錯誤", + "executor": "執行器", + "executors": "執行器", + "externalMcp": "外部 MCP", + "failedToCreateFolder": "建立資料夾失敗", + "failedToCreateRepository": "建立儲存庫失敗", + "failedToLoadDirectory": "載入目錄失敗", + "failedToLoadRoutine": "載入例程失敗", + "failedToLoadSetup": "載入設定失敗", + "failedToRenderDiagram": "渲染圖表失敗", + "featureRequest": "功能請求", + "files": "檔案", + "folderName": "資料夾名稱", + "folders": "資料夾", + "forwardStdinStdoutStraightToThe": "將 stdin/stdout 直接轉發到 CLI 子程序。會停用 ACP。", + "getStarted": "開始使用", + "githubCliNotAuthenticated": "GitHub CLI 未通過身份驗證", + "gitOpAmendCommit": "修補提交", + "gitOpCommit": "提交", + "gitOperationFailedInRepos_one": "在 {{count}} 個儲存庫中失敗:{{summary}}", + "gitOperationFailedInRepos_other": "在 {{count}} 個儲存庫中失敗:{{summary}}", + "gitOperationPartialDescription_one": "{{operation}}在 {{count}} 個儲存庫中的 {{succeeded}} 個成功({{repos}});失敗:{{summary}}", + "gitOperationPartialDescription_other": "{{operation}}在 {{count}} 個儲存庫中的 {{succeeded}} 個成功({{repos}});失敗:{{summary}}", + "gitOperationPartiallySucceeded": "{{operation}}部分成功", + "gitOperationRepoFailure": "{{repo}}:{{error}}", + "gitOperationSucceededInRepos_one": "{{operation}}在 {{count}} 個儲存庫中成功:{{repos}}", + "gitOperationSucceededInRepos_other": "{{operation}}在 {{count}} 個儲存庫中成功:{{repos}}", + "gitOpForcePush": "強制推送", + "gitOpHardReset": "硬重置", + "gitOpMerge": "合併", + "gitOpPull": "拉取", + "gitOpPush": "推送", + "gitOpRebase": "變基", + "gitOperationCompleted": "{{operation}}已完成", + "gitOperationFailed": "{{operation}}失敗", + "gitOperationRunning": "{{operation}}…", + "gitOperationScoped": "{{operation}}({{repo}})", + "gitOperationSucceeded": "{{operation}}成功", + "gitOpRevertCommit": "還原提交", + "gitOpSoftReset": "軟重置", + "gitScopeSkipped": "已跳過 {{scope}},因為子儲存庫操作失敗({{failedScopes}})。", + "goToFirstPage": "轉到第一頁", + "goToLastPage": "轉到最後一頁", + "goToNextPage": "轉到下一頁", + "goToPreviousPage": "轉到上一頁", + "hAgo": "{{diffHr}}小時前", + "healthIssues": "健康問題", + "hideAdvancedOptions": "隱藏高級選項", + "howLogContextWorks": "日誌上下文如何工作", + "improveKandev": "改進 Kandev", + "createImproveWorkspaceCheckbox": "建立專用的 {{workspace}} 工作區,使改進任務與日常工作隔離", + "improveWorkspaceDoesNotExistYet": "專用的 Improve Kandev 工作區尚不存在。改進任務會放在獨立工作區中,與日常工作隔離。", + "continue": "繼續", + "improveKandevBugPlaceholder": "例如:開啟看板時,在寬度小於 1200px 的屏幕上,列標題文字會與任務數量徽章重疊…", + "improveKandevFeaturePlaceholder": "例如:新增鍵盤快捷鍵,以便從任務詳情視圖將任務標記為完成,並在任務操作菜單中顯示該快捷鍵…", + "improveKandevIssuePlaceholder": "描述你想發佈的問題或請求。代理程式會按匹配的 GitHub 議題模板詢問所需細節…", + "includeRecentBackendAndBrowserLogs": "將最近的後端與瀏覽器日誌作為上下文提供給代理程式", + "installed": "已安裝", + "integrations": "集成", + "interruptedByRestart": "因重啓而中斷", + "justNow": "剛剛", + "kandevAllowsEveryAgentPermissionRequest": "Kandev 會批准代理程式的每一項權限請求,而不會向你提示。", + "kandevCouldNotLoad": "Kandev 無法載入。", + "kandevIsOpenSourceAndYou": "Kandev 是開源的,你可以一起把它做得更好。", + "kandevKeepsASmallInMemory": "Kandev 會在記憶體中保留一小段最近後端日誌與瀏覽器控制台事件的環形緩衝區。啓用後,這些日誌會寫入本機臨時資料夾,檔案路徑會追加到任務描述中,便於代理程式在排查時讀取。", + "lastRefreshFailed": "上次刷新失敗:{{error}}", + "latestReleaseNotes": "最新發行說明", + "loading": "載入中…", + "loadingEllipsis": "正在載入…", + "loadingFolder": "正在載入資料夾…", + "loadingIndicatorLabel": "載入中", + "loadingLabel": "正在載入 {{label}}…", + "loadingRoute": "正在載入 {{routeName}}…", + "loadingRoutine": "正在載入例程…", + "loadingTask": "正在載入任務…", + "loadingWorkflowTemplates": "正在載入工作流程模板…", + "mAgo": "{{diffMin}}分鐘前", + "matchCase": "區分大小寫", + "menu": "菜單", + "mode": "模式", + "model": "模型", + "multiRepoUnavailableLocal": "在 Local 支援其初始啓動路徑投影同級儲存庫之前,多儲存庫任務不可用。", + "multiRepoUnavailableRemoteDocker": "在 Remote Docker 支援建立任務實例之前,多儲存庫任務不可用。", + "multiRepoUnsupportedExecutor": "此執行器不支援多儲存庫任務。", + "navigate": "導航", + "navigateBetweenPagesSearchTasksTrigger": "在頁面間導航、搜尋任務、觸發 git 操作並管理面板;全部無需離開鍵盤。上下文相關的命令會根據目前頁面出現。", + "newFolder": "新建資料夾", + "newFolderName": "新資料夾名稱", + "newReleases_one": "{{count}} 個新版本", + "newReleases_other": "{{count}} 個新版本", + "next": "下一步", + "nextEnter": "下一步(Enter)", + "noAuth": "無身份驗證", + "noCliClientsInstalledYetInstall": "尚未安裝 CLI 用戶端。請安裝 Claude / Codex / OpenCode / Amp 以啓用此選擇器。", + "noCommandsFound": "未找到命令。", + "noContentMatchesFound": "未找到匹配內容。", + "noFilesFound": "未找到檔案。", + "noFoldersHerePickThisOne": "此處沒有資料夾;選擇此項或返回上級", + "noResults": "無結果。", + "notificationClarificationBody": "代理程式提出了一個問題。", + "notificationClarificationTitle": "代理程式需要您的回答", + "notificationInboxItemBody": "有新條目需要您處理。", + "notificationInboxItemTitle": "新的收件箱條目", + "notificationTurnFinishedBody": "代理程式完成了一輪。", + "notificationTurnFinishedTitle": "代理程式本輪已完成", + "notInstalled": "未安裝", + "notYetInstalled": "尚未安裝", + "officeIsNotEnabledForThis": "此執行時未啓用辦公室。", + "officeRouteNotPortedYet": "此辦公室路由由 SPA 外殼處理,但其專用用戶端頁面仍在遷移中:<1>{{pathname}}", + "onboardingAgentsAutoApproveWarning": "<0>注意:預設代理程式設定檔啓用了自動批准(YOLO 模式)。", + "onboardingAgentsHelp": "展開代理程式以設定其模型與權限。繼續時會儲存更改。之後也可在「設定 > 代理程式」中新增自訂 TUI 代理程式。", + "onboardingStepAgentsDescription": "管理已發現的代理程式並安裝新代理程式。", + "onboardingStepAgentsTitle": "AI 代理程式", + "onboardingStepCommandPanelDescription": "通過鍵盤快捷鍵隨時快速存取操作。", + "onboardingStepCommandPanelTitle": "命令面板", + "onboardingStepExecutorsDescription": "代理程式可在不同執行器環境中執行;本地、容器或遠端。", + "onboardingStepExecutorsTitle": "執行器", + "onboardingStepWorkflowsDescription": "工作流程定義任務的步驟與自動化。", + "onboardingStepWorkflowsTitle": "代理式工作流程", + "open": "開啟", + "openFullPage": "開啟完整頁面", + "openNavigationMenu": "開啟導航菜單", + "openNavigationMenuWithConnectionIssue": "{{description}} 開啟導航菜單", + "openingLastTask": "正在開啟上次任務…", + "openIssue": "開啟議題", + "optionalTheRepositoryTheAgentWorks": "可選;代理程式工作的儲存庫。", + "panels": "面板", + "parentDirectory": "上級目錄", + "pending": "待處理", + "permitTheCliToUploadCode": "允許 CLI 上傳程式碼以進行雲端索引(auggie / 類似工具)。", + "pickACliClient": "選擇 CLI 用戶端", + "pickACliClientToLoad": "選擇 CLI 用戶端以載入其可用模型和模式。", + "pluginPanelFailedToLoad": "此外掛程式面板載入失敗。", + "pluginPanelUnavailable": "此面板已不可用。", + "plugins": "外掛程式", + "prDetails": "PR 詳情", + "preparingKandevRepository": "正在準備 Kandev 儲存庫…", + "preparingKandevRepositoryInBackground": "正在後台準備 Kandev 儲存庫。填寫詳情後即可提交。", + "presetIconBug": "缺陷", + "presetIconCheck": "勾選", + "presetIconCode": "程式碼", + "presetIconEye": "眼睛", + "presetIconMessage": "訊息", + "presetIconSearch": "搜尋", + "presetIconSparkle": "閃光", + "presetIconTool": "工具", + "pressCmdKToOpenItAnytime": "<0>按<1><2>隨時開啟", + "pressEnterToConfirm": "按 Enter 確認", + "previousShiftEnter": "上一步(Shift+Enter)", + "probing": "正在探測", + "profile": "設定", + "profileName": "設定名稱", + "prompts": "提示詞", + "reference": "引用", + "refreshAriaLabel": "刷新 {{label}}", + "refreshBranchesGitFetch": "刷新分支(git fetch)", + "refreshingLabel": "正在刷新 {{label}}…", + "refreshLabelLastFetched": "刷新 {{label}}(上次擷取 {{time}})", + "regularExpression": "正則表達式", + "releasedOn": "發佈於 {{date}}", + "reload": "重新載入", + "reloadTheApplicationToTryAgain": "重新載入應用以重試。", + "rename": "重命名", + "repository": "儲存庫", + "noRepositoryOption": "(無儲存庫)", + "repositoryDefaultBranchOption": "(儲存庫預設分支)", + "repositoryName": "儲存庫名稱", + "requestFailed": "請求失敗", + "reset": "重置", + "resetting": "正在重置…", + "resetWatchChecking": "正在檢查將刪除多少任務…", + "resetWatchDeleteAllTasks": "這會刪除此前由此監控建立的所有任務,包括已歸檔任務。監控的輪詢游標也會被清除,因此下次檢查會重新匯入目前所有匹配項。此操作無法撤銷。", + "resetWatchDeleteTasks_one": "這會刪除此前由此監控建立的 {{count}} 個任務,包括已歸檔任務。監控的輪詢游標也會被清除,因此下次檢查會重新匯入目前所有匹配項。此操作無法撤銷。", + "resetWatchDeleteTasks_other": "這會刪除此前由此監控建立的 {{count}} 個任務,包括已歸檔任務。監控的輪詢游標也會被清除,因此下次檢查會重新匯入目前所有匹配項。此操作無法撤銷。", + "resetWatchNoTasks": "此監控尚未建立任何任務,將只清除輪詢狀態。監控的輪詢游標也會被清除,因此下次檢查會重新匯入目前所有匹配項。此操作無法撤銷。", + "resetWatchPreviewFailedRequired": "無法載入受影響的任務數量。請重新預覽後再重置此監控。", + "resetWatchTitle": "重置 {{label}}?", + "resizeTableColumns": "調整表格列 {{left}} 與 {{right}} 的寬度", + "results": "結果", + "retryPreview": "重新預覽", + "reviewSubmoduleBoundary": "子模塊:{{scope}}", + "rowsPerPage": "每頁行數", + "runsFormatTypecheckTestAndLint": "在 monorepo 中執行格式化、類型檢查、測試和 lint。", + "runtimeDocker": "Docker", + "runtimeDockerDescription": "容器化執行,實現完全隔離與可復現。", + "runtimeGitWorktree": "Git 工作樹", + "runtimeGitWorktreeDescription": "在工作樹根目錄下隔離的分支環境,便於並行工作。", + "runtimeLocal": "本地", + "runtimeLocalDescription": "直接在本機執行代理程式,可完整存取本地檔案系統。", + "runtimeSprites": "Sprites(遠端 sprites.dev)", + "runtimeSpritesDescription": "面向任意程式碼的硬件隔離執行環境。", + "save": "儲存", + "scopeCommands": "命令", + "scopeContents": "內容", + "scopeFiles": "檔案", + "scopeTitleWithShortcut": "{{label}}({{shortcut}})", + "scratchWorkspace": "臨時工作區", + "script": "腳本", + "searchEllipsis": "搜尋…", + "searchFailedEditTheQueryOr": "搜尋失敗。請修改查詢或重新開啟搜尋後重試。", + "searchForFiles": "搜尋檔案…", + "searchForTasks": "搜尋任務…", + "searchingTaskWorkspace": "正在搜尋任務工作區…", + "searchQueriesAreLimitedTo200": "搜尋查詢限制為 200 個字符。", + "searchTaskContents": "搜尋任務內容…", + "select": "選擇", + "sessionStateCancelled": "已取消", + "sessionStateCompleted": "已完成", + "sessionStateCreated": "已建立", + "sessionStateFailed": "失敗", + "sessionStateIdle": "空閒", + "sessionStateRunning": "執行中", + "sessionStateStarting": "啓動中", + "sessionStateWaitingForInput": "等待輸入", + "settings": "設定", + "shell": "命令解釋器", + "shellCommandPlusSlashCommandSkills": "可在次要實例中執行的 Shell 命令,以及工作流程期間可讓代理程式執行的斜槓命令 <2>skills。", + "showAdvancedOptions": "顯示高級選項", + "showCode": "顯示程式碼", + "showDiagram": "顯示圖表", + "showingRange_one": "顯示第 {{from}}–{{to}} 條,共 {{count}} 條結果", + "showingRange_other": "顯示第 {{from}}–{{to}} 條,共 {{count}} 條結果", + "showMoreBreadcrumbs": "顯示更多路徑層級", + "skip": "跳過", + "stagesAndCommitsChangesUsingConventional": "暫存並用 Conventional Commits 提交更改。", + "status": "狀態", + "statusWithConnectionIssue": "{{description}} 狀態", + "step": "步驟", + "subtaskTitle": "子任務標題", + "switchMode": "切換模式", + "system": "系統", + "task": "任務", + "terminal": "終端", + "todos": "待辦", + "taskLoading": "正在載入任務…", + "tasks": "任務", + "taskStateBlocked": "已阻塞", + "taskStateCancelled": "已取消", + "taskStateCompleted": "已完成", + "taskStateCreated": "已建立", + "taskStateFailed": "失敗", + "taskStateInProgress": "進行中", + "taskStateNotStarted": "未開始", + "taskStateReview": "審查", + "taskStateScheduling": "調度中", + "taskStateTodo": "待辦", + "taskStateWaitingForInput": "等待輸入", + "taskUnavailable": "任務不可用", + "taskUnavailableDescription": "無法載入此任務。它可能已被刪除,或者你沒有存取權限。", + "theAgentForksKandevToYourAccount": "代理程式會將 <1>{{repo}} fork 到你的 GitHub 帳戶,並從你的 fork 開啟 PR,貢獻記在你名下", + "theBaseBranchTheAgentStarts": "代理程式起始的基礎分支。", + "theFinalStepOpensAPullRequest": "此工作流程的最後一步會開啟拉取要求,需要 <1>{{binary}} CLI 已通過身份驗證。{{message}}", + "thisEmptyRepositoryWillRunWith": "此空儲存庫將在本機以「{{profile}}」執行。", + "thisGithubAccountCannotForkKdlbs": "此 GitHub 帳戶無法 fork kdlbs/kandev。", + "thisPageCouldNotLoad": "此頁面無法載入。", + "thisWorkflowWillOnlyCreateA": "此工作流程只會根據儲存庫模板建立 GitHub 議題。代理程式會詢問缺失細節並請求發佈批准;它不會實現改動或開啟拉取要求。", + "title": "標題", + "toastRegionLabel": "通知", + "typeACommand": "輸入命令…", + "typeToSearchFiles": "輸入以搜尋檔案…", + "typeToSearchTaskContents": "輸入以搜尋任務內容…", + "unavailable": "不可用", + "unknown": "未知", + "unknownError": "未知錯誤", + "unknownPanel": "未知面板:{{component}}", + "unsavedChanges": "未儲存的更改", + "untitledTask": "未命名任務", + "usefulCommandsAgentSkills": "實用命令與代理程式技能", + "useScratchInstead": "改用臨時工作區", + "useStepDefaultOption": "(使用步驟預設值)", + "watcherLoadingBranchesPlaceholder": "載入中…", + "watcherPickRepositoryPlaceholder": "請先選擇儲存庫", + "useThisFolder": "使用此資料夾", + "utilities": "實用工具", + "viewFullReleaseOnGithub": "在 GitHub 上查看完整發行說明", + "waitsForCiAndAutomatedReviews": "等待 CI 與自動審閱,然後修復失敗並處理評論。", + "walkthrough": "導覽", + "whatSNew": "新功能", + "whenItsDoneTheAgentOpensAPr": "完成後,代理程式會向 <2>{{repo}} 開啟拉取要求供維護者審閱,節省他們的時間,並把改進帶給所有人。", + "workflow": "工作流程", + "workflowsControlTheStepsAutomationAnd": "工作流程控制任務的步驟、自動化與代理程式行為。可在設定中新增更多工作流程。", + "workspace": "工作區", + "workspaces": "工作區", + "you": "您", + "youCanUseTheNavigationOr": "你可以使用導航或重新載入以重試。", + "yourAgentImplementsItInThe": "你的代理程式在 Kandev 儲存庫中實現它,並附帶測試", + "youVerifyAndTestTheChange": "你在第二個 Kandev 實例中驗證並測試該改動" +} diff --git a/apps/web/src/locales/zh-hk/configChat.json b/apps/web/src/locales/zh-hk/configChat.json new file mode 100644 index 0000000000..65c3782de0 --- /dev/null +++ b/apps/web/src/locales/zh-hk/configChat.json @@ -0,0 +1,21 @@ +{ + "agentProfileHeading": "設定聊天代理程式", + "agentProfileHelp": "選擇可存取設定工具的代理程式。這將成為工作區預設值。", + "closePanel": "關閉設定聊天", + "dialogDescription": "讓代理程式管理你的工作流程、代理程式設定檔與 MCP 設定。", + "noAgentProfiles": "暫無可用的代理程式設定檔。請先在代理程式設定中建立一個。", + "openInQuickChat": "在快速聊天中開啟", + "profileUnavailable": "所選代理程式設定檔尚不可用。請稍後再試。", + "promptHeading": "你想設定什麼?", + "promptPlaceholder": "詢問任何與設定相關的問題…", + "startChat": "開始聊天", + "startChatAria": "開始設定聊天", + "startingChat": "正在開始聊天…", + "suggestionAddReviewStep": "為我的工作流程新增一個「程式碼審閱」步驟", + "suggestionCreateProfile": "建立一個啓用自動批准的新代理程式設定檔", + "suggestionShowWorkflow": "顯示目前工作流程設定", + "suggestionUpdateMcp": "更新預設代理程式設定檔的 MCP 伺服器", + "tagline": "用自然語言設定 Kandev", + "tryAsking": "試着問", + "unknownError": "未知錯誤" +} diff --git a/apps/web/src/locales/zh-hk/diff.json b/apps/web/src/locales/zh-hk/diff.json new file mode 100644 index 0000000000..3e7ef82306 --- /dev/null +++ b/apps/web/src/locales/zh-hk/diff.json @@ -0,0 +1,50 @@ +{ + "add": "新增", + "addAComment": "新增評論…", + "addComment": "新增評論", + "closeWalkthrough": "關閉導覽", + "collapseUnchangedLines": "摺疊未更改的行", + "copyDiff": "複製 diff", + "deleteComment": "刪除評論", + "dismiss": "關閉", + "editComment": "編輯評論", + "enterToAdd": "{{modKey}}+Enter 新增", + "enterToAddShiftEnterToRun": "{{modKey}}+Enter 新增,{{modKey}}+Shift+Enter 執行", + "expandAllLines": "展開所有行", + "failedToSendWalkthroughNote": "傳送導覽備註失敗", + "lineLabel": "第 {{line}} 行", + "lineRangeLabel": "第 {{start}}–{{end}} 行", + "new": "新", + "next": "下一個", + "noActiveSessionForWalkthroughNote": "沒有可用於導覽備註的活動工作階段", + "noDiffAvailable": "無可用 diff", + "old": "舊", + "openFileAtLine": "開啟 {{file}}:{{line}}", + "previewMarkdown": "預覽 Markdown", + "previous": "上一個", + "reopen": "重新開啟", + "resolve": "解決", + "revertChanges": "還原更改", + "run": "執行", + "runComment": "執行評論", + "saveAndSendToAgent": "儲存併傳送給代理程式({{modKey}}+Shift+Enter)", + "saveCommentForReview": "儲存評論以供審閱({{modKey}}+Enter)", + "sendToAgent": "傳送給代理程式", + "stale": "已過期", + "staleFindingsForThisFile_one": "此檔案有 {{count}} 條過期發現", + "staleFindingsForThisFile_other": "此檔案有 {{count}} 條過期發現", + "stepProgress": "步驟 {{current}} / {{total}} · {{lineLabel}}", + "suggestedChangeNotAppliedAutomatically": "建議的更改;不會自動應用", + "switchToSplitView": "切換到分欄視圖", + "switchToUnifiedView": "切換到統一視圖", + "theDiffChangedAfterThisReview": "此審閱之後 diff 已變化,該發現所描述的程式碼已不在其中。", + "theDiffChangedAfterThisReviewRelocated": "此審閱之後 diff 已變化;該發現已重新錨定到其描述的程式碼。", + "toggleWordWrap": "切換自動換行", + "unableToRenderDiffForThis": "無法渲染此檔案的 diff。快取的 diff 可能與工作區不同步;請刷新後重試。", + "undo": "撤銷", + "update": "更新", + "walkthrough": "導覽", + "walkthroughNoteAdded": "已新增導覽備註", + "walkthroughNoteQueued": "導覽備註已排隊", + "walkthroughNoteSent": "導覽備註已傳送" +} diff --git a/apps/web/src/locales/zh-hk/editors.json b/apps/web/src/locales/zh-hk/editors.json new file mode 100644 index 0000000000..8c498812da --- /dev/null +++ b/apps/web/src/locales/zh-hk/editors.json @@ -0,0 +1,89 @@ +{ + "apply": "應用", + "applyLatestAgentChangesToFile": "將代理程式的最新更改應用到此檔案", + "boldCmdB": "粗體(Cmd+B)", + "comment": "評論", + "commentAdded": "評論已新增", + "commentCmdShiftC": "評論(Cmd+Shift+C)", + "commentCount_one": "{{count}} 條評論", + "commentCount_other": "{{count}} 條評論", + "commentDeleted": "評論已刪除", + "commentMarkerTitle_one": "{{count}} 條評論;點擊查看", + "commentMarkerTitle_other": "{{count}} 條評論;點擊查看", + "commentSent": "評論已傳送", + "commentUpdated": "評論已更新", + "commentWillBeSentWithNextMessage": "你的評論將隨下一條訊息傳送。", + "copyAllChangedLines": "複製所有更改行", + "copyCode": "複製程式碼", + "copyDiff": "複製 diff", + "copyLine": "複製第 {{lineNumber}} 行", + "copyPath": "複製路徑", + "default": "預設", + "deleteFailed": "刪除失敗", + "deleteFile": "刪除檔案", + "disableWordWrap": "關閉自動換行", + "enableWordWrap": "開啓自動換行", + "errorWhileDeletingFile": "刪除檔案時發生錯誤", + "errorWhileSavingFile": "儲存檔案時發生錯誤", + "failedToDeleteFile": "無法刪除檔案", + "failedToSaveFile": "無法儲存檔案", + "failedToSendComment": "傳送評論失敗", + "fileSavedOverwritten": "檔案已儲存(已覆蓋)", + "fileSavedOverwrittenDescription": "該檔案已被外部修改。已儲存您的版本。", + "foldUnchangedLines": "摺疊未更改的行", + "hideDiffIndicators": "隱藏 diff 指示器", + "highlight": "高亮", + "inlineCode": "行內程式碼", + "insertBlock": "插入程式碼塊", + "italicCmdI": "斜體(Cmd+I)", + "link": "連結", + "loadingDiff": "正在載入 diff…", + "loadingEditor": "正在載入編輯器…", + "noDiffAvailable": "無可用 diff", + "noEditorsConfigured": "未設定編輯器", + "openFolder": "開啟資料夾", + "openTaskSessionBeforeSending": "傳送給代理程式前請先開啟任務工作階段。", + "openWith": "開啟方式…", + "pasteLink": "貼上連結…", + "pleaseTryAgain": "請重試。", + "previewMarkdown": "預覽 Markdown", + "queuedForTheAgent": "已排隊等待代理程式。", + "reload": "重新載入", + "revertAllChanges": "還原全部更改", + "revertChanges": "還原更改", + "saveFailed": "儲存失敗", + "saving": "正在儲存…", + "sentToTheAgent": "已傳送給代理程式。", + "showAllLines": "顯示全部行", + "showDiffIndicators": "顯示 diff 指示器", + "slashBlockquote": "引用", + "slashBlockquoteDescription": "引用文字", + "slashBulletList": "無序列表", + "slashBulletListDescription": "無序列表", + "slashCategoryBlocks": "塊", + "slashCategoryLists": "列表", + "slashCategoryText": "文字", + "slashCodeBlock": "程式碼塊", + "slashCodeBlockDescription": "圍欄程式碼", + "slashDivider": "分隔線", + "slashDividerDescription": "水平線", + "slashHeading1": "標題 1", + "slashHeading1Description": "大標題", + "slashHeading2": "標題 2", + "slashHeading2Description": "中標題", + "slashHeading3": "標題 3", + "slashHeading3Description": "小標題", + "slashNumberedList": "有序列表", + "slashNumberedListDescription": "有序列表", + "slashTable": "表格", + "slashTableDescription": "3×3 表格", + "slashTaskList": "任務列表", + "slashTaskListDescription": "清單項", + "startTyping": "開始輸入…", + "strikethroughCmdShiftX": "刪除線(Cmd+Shift+X)", + "switchToSplitView": "切換到分欄視圖", + "switchToUnifiedView": "切換到統一視圖", + "toggleCode": "切換程式碼", + "toggleWordWrap": "切換自動換行", + "underlineCmdU": "下劃線(Cmd+U)" +} diff --git a/apps/web/src/locales/zh-hk/executors.json b/apps/web/src/locales/zh-hk/executors.json new file mode 100644 index 0000000000..def9b7f12a --- /dev/null +++ b/apps/web/src/locales/zh-hk/executors.json @@ -0,0 +1,262 @@ +{ + "action": "操作", + "add": "新增", + "addASpritesApiKeyBeforeCreating": "建立設定前請先新增 Sprites API 密鑰。", + "addDockerfileContentBeforeCreating": "建立設定前請先新增 Dockerfile 內容。", + "addRule": "新增規則", + "advanced": "高級", + "agent": "代理程式", + "allow": "允許", + "allowlistGithubPlaywright": "白名單 GitHub + Playwright", + "apiKey": "API 密鑰", + "areYouSureThisActionCannot": "確定嗎?此操作無法撤銷。", + "areYouSureYouWantTo": "確定要刪除此設定嗎?此操作無法撤銷。", + "authFilesNotFoundOnThisMachine": "{{files}};本機未找到這些檔案", + "backToExecutor": "返回執行器", + "backToExecutors": "返回執行器", + "buildFailedWithMessage": "構建失敗:{{message}}", + "buildFailedWithStatus": "構建失敗({{status}}):{{text}}", + "buildImage": "構建鏡像", + "buildThisDockerImageBeforeCreating": "建立設定前請先構建此 Docker 鏡像。", + "building": "正在構建…", + "checking": "正在檢查…", + "chooseAnExecutorTypeToRun": "選擇一種執行器類型,以在你的基礎設施上執行環境。", + "cleanupScript": "清理腳本", + "configureAuthenticationForToolsAndAgents": "為遠端環境中的工具和代理程式設定檔身份驗證。", + "configured": "已設定", + "confirmDelete": "確認刪除", + "connected": "已連接", + "connectedActiveSprites_one": "已連接。{{count}} 個活動 sprite。", + "connectedActiveSprites_other": "已連接。{{count}} 個活動 sprite。", + "connection": "連接", + "connectionSettings": "連接設定", + "connectionTestFailed": "連接測試失敗", + "connectionTestPassed": "連接測試通過", + "connectsToARemoteDockerHost": "連接到遠端 Docker 主機。儲存庫將在容器內複製。", + "copyAuthFiles": "複製驗證檔案", + "createANewProfileForThis": "為此執行器建立新設定。可在設定頁設定腳本和環境變量。", + "createExecutor": "建立執行器", + "createNewProfile": "建立新設定", + "createNewSecret": "建立新密鑰…", + "createProfile": "建立設定", + "creating": "正在建立…", + "creatingProfile": "正在建立設定…", + "defaultNoTls": "預設(無 TLS)", + "defineNetworkAccessRulesAppliedWhen": "定義為此設定建立 sprite 時應用的網絡存取規則。", + "defineTheDockerImageBuildAnd": "定義 Docker 鏡像。可在此構建並測試。", + "delete": "刪除", + "deleteExecutor": "刪除執行器", + "deleteProfile": "刪除設定", + "deleteProfileConfirm": "確定要刪除「{{name}}」嗎?此操作無法撤銷。", + "deleting": "正在刪除…", + "deny": "拒絕", + "descriptionCustom": "自訂執行器。", + "descriptionLocalDocker": "在本機執行 Docker 容器。", + "descriptionLocalPc": "直接在儲存庫資料夾中執行代理程式。", + "descriptionRemoteDocker": "連接到遠端 Docker 主機。", + "descriptionSprites": "在 Sprites.dev 雲沙箱中執行代理程式。", + "descriptionSsh": "通過 SSH 在受信任的 Linux amd64 或 macOS 主機上執行代理程式。", + "descriptionSshCreate": "通過 SSH 連接到遠端主機並在其上執行 agentctl。", + "descriptionWorktree": "建立 Git 工作樹,用於隔離代理程式工作階段。", + "differentConfigurationsForThisExecutorEach": "此執行器的不同設定。每個設定可擁有自己的準備腳本、環境變量和設定。", + "disabled": "已停用", + "disconnected": "已斷開", + "dockerContainers": "Docker 容器", + "dockerContainersCreatedByThisProfile": "由此設定建立的 Docker 容器。", + "dockerHost": "Docker 主機", + "dockerHostRemotePlaceholder": "{{tcp}} 或 {{ssh}}", + "dockerfile": "Dockerfile", + "dockerfileContent": "Dockerfile 內容", + "domain": "域名", + "eGMyApiToken": "例如 {{example}}", + "eGProductionDevelopment": "例如 {{example}}", + "enabled": "已啓用", + "enterAProfileName": "請輸入設定名稱。", + "enterAnImageTagBeforeCreating": "建立設定前請先輸入鏡像標籤。", + "envVarsConfiguredCount_one": "已設定 {{count}} 個", + "envVarsConfiguredCount_other": "已設定 {{count}} 個", + "environmentVariables": "環境變量", + "executorName": "執行器名稱", + "executorNotFound": "未找到執行器", + "executorType": "執行器類型", + "failed": "失敗", + "failedToConnectToBackend": "連接後端失敗", + "failedToCreateProfile": "建立設定失敗", + "failedToCreateSecret": "建立密鑰失敗", + "failedToLoadExecutor": "載入執行器失敗", + "missingSecretReference": "缺少密鑰引用", + "failedToSaveProfile": "儲存設定失敗", + "filesSelected": "已選檔案", + "gitIdentity": "Git 身份", + "gitIdentityAutoDetect": "自動檢測", + "gitIdentityCustom": "自訂", + "gitTokenOptional": "Git token(可選)", + "gitUserEmail": "Git 用戶電郵地址", + "gitUserName": "Git 用戶名", + "goToExecutors": "前往執行器", + "host": "主機", + "hubDescription": "執行器設定檔定義代理程式如何以及在何處執行。每個設定會設定執行環境的腳本、環境變量和 MCP 策略。", + "hubDescriptionDocker": "在本機執行 Docker 容器。", + "hubDescriptionLocal": "直接在儲存庫資料夾中執行代理程式。", + "hubDescriptionSprites": "在 Sprites.dev 雲沙箱中執行代理程式。", + "hubDescriptionSsh": "通過 SSH 連接遠端主機並在其上執行 agentctl。", + "hubDescriptionWorktree": "建立 Git 工作樹,用於隔離代理程式工作階段。", + "image": "鏡像", + "imageTag": "鏡像標籤", + "include": "包含", + "injectedIntoTheExecutionEnvironmentUse": "注入到執行環境。權杖和 API 密鑰請使用密鑰模式;字面值存儲在設定 JSON 中。", + "injectedIntoTheExecutionEnvironmentVariables": "注入到執行環境。變量可引用密鑰以存放敏感值。", + "invalidJson": "無效的 JSON", + "janeDeveloper": "Jane Developer", + "key": "鍵", + "loading": "載入中…", + "loadingEditor": "正在載入編輯器…", + "loadingExecutor": "正在載入執行器…", + "localDocker": "本地 Docker", + "localDockerExecutor": "本地 Docker 執行器", + "localGitIdentityNotDetected": "本機未檢測到本地 git user.name/user.email", + "mcpPolicy": "MCP 策略", + "mcpPolicyJson": "MCP 策略 JSON", + "mcpPolicyMustBeAJsonObject": "MCP 策略必須是 JSON 對象", + "mcpPolicyOverridesForExecutor": "此執行器上 MCP 伺服器的 JSON 策略覆蓋。", + "mcpPolicyOverridesForProfile": "此設定上 MCP 伺服器的 JSON 策略覆蓋。", + "mode": "模式", + "name": "名稱", + "networkPolicies": "網絡策略", + "newProfile": "新設定", + "newSshExecutor": "新建 SSH 執行器", + "newTypeProfile": "新建 {{type}} 設定", + "noDockerContainers": "沒有 Docker 容器。", + "noEnvironmentVariablesConfigured": "未設定環境變量。", + "noEnvironmentVariablesConfiguredAddOne": "未設定環境變量。請在下方新增。", + "noNetworkPolicyRulesConfigured": "未設定網絡策略規則。", + "noProfilesConfigured": "尚未建立任何執行器設定檔。", + "noResponseBody": "無回應正文", + "noTransferableCredentialsFound": "未找到可傳輸的認證資料。", + "none": "無", + "notAnSshExecutor": "執行器 {{id}} 不是 SSH 執行器", + "notConfigured": "未設定", + "onlyHttpSse": "僅 HTTP/SSE", + "onlyStdio": "僅 stdio", + "optionalAuthorIdentityAppliedInRemote": "應用於遠端執行器環境的可選作者身份。", + "optionalPattern": "可選模式", + "overrideIdentity": "覆蓋身份", + "pasteYourSecretValue": "貼上你的密鑰值…", + "pathToTlsCertificatesForThe": "Docker 主機的 TLS 證書路徑。", + "personalAccessTokenForCloningRepositories": "在容器內複製儲存庫用的個人存取權杖。未設定時從主機環境自動檢測。", + "port": "端口", + "prepareScript": "準備腳本", + "prepareScriptBadge": "準備腳本", + "prepareScriptDescriptionLocal": "在代理程式啓動前於主機上執行。", + "prepareScriptDescriptionRemote": "在代理程式啓動前於執行環境內執行。輸入 {{trigger}} 查看可用佔位符。", + "profileDetails": "設定詳情", + "profileForExecutor": "{{name}} 的設定", + "profileNameIsRequired": "設定名稱為必填項。", + "profileNotFound": "未找到設定", + "profileSaved": "設定已儲存", + "profiles": "設定", + "provideSecret": "提供密鑰", + "quickPresets": "快速預設", + "refresh": "刷新", + "relatedDockerContainersRemoved_one": "還將移除 {{count}} 個相關 Docker 容器。", + "relatedDockerContainersRemoved_other": "還將移除 {{count}} 個相關 Docker 容器。", + "remoteAuthMethod": "遠端驗證方式", + "remoteCredentials": "遠端認證資料", + "remoteDocker": "遠端 Docker", + "remoteDockerExecutor": "遠端 Docker 執行器", + "remove": "移除", + "removeEnvVar": "移除環境變量", + "removeEnvVarNamed": "移除 {{key}}", + "removeRelatedDockerContainers": "移除相關 Docker 容器", + "removeThisExecutor": "移除此執行器", + "repositoriesWillBeMountedAsVolumes": "儲存庫將在執行時以卷形式掛載。", + "rewriteLocalhostForDocker": "為 Docker 重寫 localhost", + "runsAfterTheAgentSessionEnds": "在代理程式工作階段結束後執行,用於清理任務。", + "save": "儲存", + "secret": "密鑰", + "selectASecret": "選擇密鑰…", + "selectOrCreateASecret": "選擇或建立密鑰…", + "selectSecret": "選擇密鑰…", + "selectTheSecretContainingYourSprites": "選擇包含 Sprites.dev API token 的密鑰。", + "session": "工作階段", + "setACustomNameAndEmail": "為遠端 git 提交設定自訂名稱和電郵地址。", + "setEnvVarViaStoredSecret": "通過已存密鑰設定 <1>{{envVar}}", + "spritesApiKeyIsRequired": "Sprites API 密鑰為必填項。", + "spritesTokenIsRequired": "Sprites token 為必填項。", + "sshActiveSessions": "活動工作階段", + "sshActiveSessionsDescription": "目前在此 SSH 主機上執行的工作階段。每 90 秒刷新一次。", + "sshAvailableAgents": "此主機上的可用代理程式", + "sshAvailableAgentsDescription": "在所選登入 shell 下,探測遠端 {{pathVar}} 中每個已啓用的代理程式。代理程式缺失時,可複製安裝提示並在遠端主機上執行。", + "sshBinary": "二進制檔案", + "sshConfirmRunningSessions_one": "此執行器有 {{count}} 個正在執行的工作階段。它們會繼續在目前主機上執行。僅儲存後新啓動的工作階段會使用更新後的設定。是否繼續?", + "sshConfirmRunningSessions_other": "此執行器有 {{count}} 個正在執行的工作階段。它們會繼續在目前主機上執行。僅儲存後新啓動的工作階段會使用更新後的設定。是否繼續?", + "sshConnectionDescription": "在可通過 SSH 存取的 Linux amd64 或 macOS 主機上執行代理程式。", + "sshConnectionTestFailed": "連接測試失敗", + "sshConnectionTestPassed": "連接測試通過", + "sshCopyInstallHint": "複製安裝提示", + "sshCreateDescription": "連接到遠端 Linux amd64 或 macOS 主機並在其上執行 agentctl。", + "sshExecutorPageDescription": "編輯連接設定或重新信任主機。現有工作階段會保留先前設定的快照。", + "sshFailedToLoadSessions": "載入工作階段失敗", + "sshFailedToProbeAgents": "探測代理程式失敗", + "sshFailedToReachBackend": "無法連接後端", + "sshFailedToSaveExecutor": "儲存執行器失敗", + "sshFailedToSaveShell": "儲存 shell 失敗", + "sshFingerprintChanged": "警告:此指紋與目前固定的指紋不同(<1>{{fingerprint}})。信任後將覆蓋已固定的密鑰。若你未預期主機重新產生密鑰,請停止操作。", + "sshFingerprintObserved": "觀察到的主機指紋:", + "sshHostAliasHint": "若已設定,將從設定繼承 HostName / Port / User / IdentityFile / ProxyJump。", + "sshHostAliasLabel": "來自 {{path}} 的主機別名(可選)", + "sshIdentityFileHint": "受密碼保護的密鑰須先載入到 ssh-agent。", + "sshIdentityFilePath": "身份檔案路徑", + "sshIdentitySource": "身份來源", + "sshIdentitySourceAgent": "{{program}}({{envVar}})", + "sshIdentitySourceFile": "身份檔案(私鑰路徑)", + "sshInstallHint": "安裝提示", + "sshInstallHintCopied": "已複製安裝提示", + "sshInstalled": "已安裝", + "sshLocalForward": "本地轉發", + "sshLoginShell": "登入 shell", + "sshMissing": "缺失", + "sshNamePlaceholder": "我的 VPS", + "sshNoActiveSessions": "暫無活動工作階段。", + "sshNoEnabledAgents": "沒有可探測的已啓用代理程式。", + "sshNoHintAvailable": "無可用提示", + "sshPinnedFingerprint": "已固定指紋:", + "sshProbeAgents": "探測代理程式", + "sshProbeError": "探測錯誤", + "sshProbeHint": "點擊「{{button}}」檢查遠端主機上已安裝哪些代理程式。", + "sshProxyJumpHint": "僅支援單跳堡壘。不支援鏈式跳轉。", + "sshProxyJumpLabel": "ProxyJump(可選)", + "sshRemotePort": "遠端端口", + "sshReprobe": "重新探測", + "sshShellNotDetected": "(未檢測到)", + "sshTestAndTrustToSave": "請先測試連接並信任其指紋後再儲存。", + "sshTestConnection": "測試連接", + "sshTestResultStale": "測試執行後你更改了連接欄位。請在信任並儲存前重新執行連接測試。", + "sshTrustThisHost": "<0>信任此主機。 我已確認上方指紋與我的伺服器匹配。之後若報告不同指紋的連接將被拒絕。", + "sshTrusted": "已信任", + "sshUnverified": "未驗證", + "status": "狀態", + "stop": "停止", + "success": "成功", + "task": "任務", + "testConnection": "測試連接", + "theRemoteDockerHostUrlTcp": "遠端 Docker 主機 URL({{schemes}})。", + "thisActionCannotBeUndone": "此操作無法撤銷。", + "tlsCertificatePath": "TLS 證書路徑", + "tlsVerify": "TLS 驗證", + "tokenConfiguredButUnableToConnect": "已設定 token,但無法連接。", + "typeLocal": "本地", + "typeTokenToConfirmDeletion": "輸入「{{token}}」以確認刪除。此操作無法撤銷。", + "typeWorktree": "工作樹", + "unknownError": "未知錯誤", + "unknownExecutorType": "未知執行器類型", + "untrackedTask": "未跟蹤", + "uptime": "執行時間", + "useDefaults": "使用預設值", + "useLocalGitConfig": "使用本地 git 設定", + "usedByRemoteExecutorsForCommit": "由遠端執行器用於提交作者設定。", + "user": "用戶", + "usesTheLocalDockerDaemonOn": "使用本機上的本地 Docker 守護程序。", + "value": "值", + "verifyingConnection": "正在驗證連接…" +} diff --git a/apps/web/src/locales/zh-hk/github.json b/apps/web/src/locales/zh-hk/github.json new file mode 100644 index 0000000000..8683e9ac65 --- /dev/null +++ b/apps/web/src/locales/zh-hk/github.json @@ -0,0 +1,572 @@ +{ + "aRegistrationCanBeReusedAcross": "一個註冊可跨工作區複用,也可將工作和個人應用分開。每個工作區自行選擇並安裝認證資料。", + "accountsUnavailable": "帳戶不可用", + "actionPromptPlaceholderHelp": "輸入 {{token}} 可查看可用佔位符。執行操作時會替換 <4>{{url}} 和 <7>{{title}}。", + "actions": "操作", + "active": "活躍", + "addAll": "全部新增", + "addAllCommentsToChatContext": "將全部評論新增到對話上下文", + "addAllFailedChecksToChat": "將全部失敗檢查新增到對話上下文", + "addAllReviewsToChatContext": "將全部審閱新增到對話上下文", + "addAllToChatContext": "全部新增到對話上下文", + "addAnExistingGithubApp": "新增現有 GitHub 應用", + "addExistingApp": "新增現有應用", + "addFailuresToChatContext": "將 {{workflow}} 失敗項新增到對話上下文", + "addIssueAction": "新增議題操作", + "addIssueQuery": "新增議題查詢", + "addPrAction": "新增 PR 操作", + "addPrQuery": "新增 PR 查詢", + "addRepository": "新增儲存庫", + "addToChatContext": "新增到對話上下文", + "addWatch": "新增監控", + "addWholeThreadToChatContext": "將整個討論串新增到對話上下文", + "addedToChatContext": "已新增到對話上下文", + "agentProfile": "代理程式設定檔", + "allRepos": "所有儲存庫", + "allRepositories": "所有儲存庫", + "allRepositoriesAllowedByThisWorkspace": "此工作區允許的所有儲存庫", + "allowsInstallationElsewhereItDoesNot": "允許在其他位置安裝。不會發布到 Marketplace,也不會授予儲存庫權限。", + "anErrorOccurred": "發生錯誤", + "anExecutorProfileGhTokenOr": "執行器設定檔中的 {{ghToken}} 或 {{githubToken}} 會覆蓋該任務的工作區託管認證資料。", + "anImportedAppMustHaveAt": "匯入的應用至少必須具備以下儲存庫權限和訂閲事件。", + "apiRateLimit": "API 速率限制", + "appId": "應用 ID", + "appInstallationFailed": "應用安裝失敗", + "approvalRate": "通過率", + "approveAs": "以 {{mutationActor}} 身份批准", + "approved": "已批准", + "approving": "正在批准…", + "authenticationUnavailable": "驗證不可用", + "auto": "自動", + "autoFix": "自動修復", + "autoFixEnabledAria": "自動修復已啓用", + "autoFixEnabledWithRoundsAria": "自動修復已啓用,已使用 {{current}} / {{max}} 輪", + "autoFixExhausted": "自動修復已暫停", + "autoFixExhaustedAria": "達到 {{current}} / {{max}} 輪後,自動修復已暫停", + "autoFixCiAndAddressComments": "自動修復 CI 並處理評論", + "autoFixPrompt": "自動修復提示詞", + "autoFixPromptDescription": "此提示詞僅用於本任務。留空則使用預設提示詞。若希望 Kandev 附上 PR 反饋快照,請新增 <0>{{placeholder}}。", + "autoFixRoundExplanation": "自動修復已為該 PR 使用 {{current}} / {{max}} 輪。Kandev 每次傳送或排隊一條 CI 自動修復訊息即計為一輪。Kandev 會等待全部 PR 檢查完成後再開始新一輪自動修復,以便代理程式同時獲得最終的失敗檢查與目前評論。更新已排隊的自動修復訊息不會額外消耗輪次。當已達 {{max}}/{{max}} 且沒有待更新的自動修復訊息時,Kandev 會暫停該 PR 的自動修復,避免無限循環。人工審閱後,請關閉並重新啓用自動修復以重新開始。", + "autoMerge": "自動合併", + "autoMergeEnabledAria": "自動合併已啓用", + "autoMergeWhenReady": "就緒時自動合併", + "automaticallyCreateTasksForGithubIssues": "為符合條件的 GitHub 議題自動建立任務。", + "automaticallyCreateTasksForPrsThat": "自動為需要你審閱的 PR 建立任務。", + "automaticallyCreateTasksWhenNewGithub": "當新的 GitHub 議題符合條件時自動建立任務。", + "automaticallyCreateTasksWhenNewPull": "當新的拉取要求需要你審閱時自動建立任務。", + "automation": "自動化", + "automationForPr": "僅適用於 PR #{{number}}", + "available": "可用", + "availablePlaceholders": "可用佔位符:", + "avgTimeToMerge": "平均合併時間", + "backToRegisteredApps": "返回已註冊應用", + "behindBase": "落後於基線分支", + "bestForPersonalOrCompanyInternal": "最適合個人或公司內部自動化。", + "blocked": "已阻止", + "blockedByBranchProtection": "被分支保護規則阻止", + "blockedGeneric": "仍需滿足必需審閱、程式碼所有者或儲存庫規則後才能繼續。", + "blockedNeedsApprovals_one": "還需 {{count}} 個批准後才能合併。", + "blockedNeedsApprovals_other": "還需 {{count}} 個批准後才能合併。", + "blockedStatusCheck": "有必需的狀態檢查尚未通過。", + "botComments": "機器人評論(", + "byAuthor": "由 <1>", + "byAuthorOpenedAgo": "由 {{author}} · 建立於 {{time}}", + "changeConnection": "更改連接", + "changeGithubConnection": "更改 GitHub 連接", + "changesRequested": "已請求更改", + "checkBucketFailed": "失敗", + "checkBucketInProgress": "進行中", + "checkBucketPassed": "已通過", + "checkNow": "立即檢查", + "checkingForNewIssues": "正在檢查新議題…", + "checkingForNewPrs": "正在檢查新 PR…", + "checkingGithubConnection": "正在檢查 GitHub 連接…", + "checkingGithubStatus": "正在檢查 GitHub 狀態…", + "checksFailed": "檢查失敗", + "checksFailedCount_one": "{{count}} 個失敗", + "checksFailedCount_other": "{{count}} 個失敗", + "checksPassed": "檢查通過", + "checksPassedCount_one": "{{count}} 個通過", + "checksPassedCount_other": "{{count}} 個通過", + "checksPendingCount_one": "{{count}} 個進行中", + "checksPendingCount_other": "{{count}} 個進行中", + "checksRunning": "檢查執行中", + "chooseAGithubApp": "選擇 GitHub 應用", + "chooseHowNewlyLaunchedTasksAuthenticate": "選擇新啓動任務向 GitHub 驗證的方式。這不會改變上方的工作區自動化連接。", + "chooseMergeMethod": "選擇合併方式", + "chooseTheAutomationAndPersonalIdentities": "選擇此工作區使用的自動化身份和個人身份。", + "chooseTheExactAccountKandevDoes": "選擇確切帳戶。Kandev 不會在 CLI 活躍帳戶改變時靜默跟隨。", + "ciChecks": "CI 檢查{{summary}}", + "ciPassRate": "CI 通過率", + "cleanUpClosed": "清理已關閉項", + "cleanUpMerged": "清理已合併項", + "cleaning": "正在清理…", + "cleanupBehavior": "清理行為", + "cleanupFailed": "清理失敗", + "cleanupPolicyAlways": "始終刪除", + "cleanupPolicyAlwaysDescription": "「始終刪除」優先於保留規則:即使任務有用戶參與或啓用了 PR 生命週期提示,也會在合併或關閉時刪除。", + "cleanupPolicyAuto": "自動(推薦)", + "cleanupPolicyAutoDescription": "當已合併或關閉的 PR 任務有用戶參與或啓用了 PR 生命週期提示時保留,否則刪除。", + "cleanupPolicyNever": "從不自動刪除", + "cleanupPolicyNeverDescription": "保留所有任務。請從任務列表手動刪除。", + "cliAccountActiveSuffix": ";目前", + "clientId": "用戶端 ID", + "clientSecret": "用戶端密鑰", + "closePrStatus": "關閉 PR 狀態", + "closed": "已關閉", + "closedAgo": "關閉於 {{time}}", + "commentCount_one": "{{count}} 條評論", + "commentCount_other": "{{count}} 條評論", + "comments": "評論", + "configureTheExistingAppOnGithub": "在 GitHub 上設定現有應用", + "conflicts": "衝突", + "connectGithub": "連接 GitHub", + "connectIdentity": "連接身份", + "connectYourPersonalGithubIdentityTo": "連接你的個人 GitHub 身份,以查看分配給你的拉取要求和議題。", + "connectionMethod": "連接方式", + "continueOnGithub": "在 GitHub 上繼續", + "controlsHowNewlyLaunchedTasksAuthenticate": "控制新啓動任務如何使用 Git HTTPS 和 gh 命令向 GitHub 驗證。託管工作區認證資料使用 Kandev 的工作區連接;執行器認證資料使用所選執行器的 Git 或 SSH 設定。", + "copy": "複製 {{label}}", + "couldNotLoadGithubCliAccounts": "無法載入 GitHub CLI 帳戶。{{error}}", + "create": "建立", + "createAGithubApp": "建立 GitHub 應用", + "createIssueWatch": "建立議題監控", + "createNewApp": "新建應用", + "createReviewWatch": "建立審閱監控", + "created": "已建立", + "createdByKandev": "由 Kandev 建立", + "credentialUsedForRepositorySyncWatches": "用於儲存庫同步、監控,以及託管代理程式的 git 和 gh 命令的認證資料。執行器設定檔權杖優先。", + "currentGithubApiRateAndQuery": "此工作區連接目前的 GitHub API 速率和查詢限制。", + "customQuery": "自訂查詢", + "customQueryPressEnterEG": "自訂查詢;按 Enter。例如 \"is:open review-requested:@me\"", + "defaultQueries": "預設查詢", + "defaultQueriesAreStillLoading": "預設查詢仍在載入。", + "defaultQueriesSaved": "預設查詢已儲存", + "defaultRepository": "預設儲存庫", + "delete": "刪除", + "deletedTasks_one": "已刪除 {{count}} 個任務", + "deletedTasks_other": "已刪除 {{count}} 個任務", + "description": "描述", + "disconnect": "斷開連接", + "disconnectFailed": "斷開連接失敗", + "draft": "草稿", + "eGBugEnhancementPriorityHigh": "例如 {{examples}}", + "eGNeedsMyReview": "例如:需要我審閱", + "editAutoFixPromptForThis": "編輯此任務的自動修復提示詞", + "editDefaultPrompt": "編輯預設提示詞", + "editDetails": "編輯詳情", + "editIssueWatch": "編輯議題監控", + "editPrompt": "編輯提示詞", + "editReviewWatch": "編輯審閱監控", + "enable": "啓用", + "enabled": "已啓用", + "enterANameUpTo100Characters": "請輸入不超過 100 個字符的名稱。", + "enterAPublicHostNotLocalhost": "請輸入公共主機,不能是 localhost。", + "enterAPublicHttpsOrigin": "請輸入公共 HTTPS 源。", + "enterAValidGithubAccountLogin": "請輸入有效的 GitHub 帳戶登入名。", + "enterAnOriginWithoutAPath": "請輸入不含路徑、查詢參數或片段的源。", + "enterTheAppClientId": "請輸入應用用戶端 ID。", + "enterTheAppClientSecret": "請輸入應用用戶端密鑰。", + "enterTheGithubAppSlug": "請輸入 GitHub 應用標識。", + "enterTheNumericGithubAppId": "請輸入數字形式的 GitHub 應用 ID。", + "enterTheWebhookSecret": "請輸入網絡鈎子密鑰。", + "executorProfile": "執行器設定檔", + "explainAutoFixRounds": "說明自動修復輪次", + "explainCiAutomationOptions": "說明 CI 自動化選項", + "explainFinalPrStateNotifications": "說明 PR 最終狀態通知", + "explainHowManagedTaskCredentialsWork": "說明託管任務認證資料的工作方式", + "explainRepositoryScope": "說明儲存庫範圍", + "explainReviewRequestNotifications": "說明審閱請求通知", + "explainTaskGitAccess": "說明任務 Git 存取方式", + "explainWorkspaceGithubIdentity": "說明工作區 GitHub 身份", + "failedToApprove": "批准失敗", + "failedToCheckForIssues": "檢查議題失敗", + "failedToCheckForPrs": "檢查 PR 失敗", + "failedToDeleteIssueWatch": "刪除議題監控失敗", + "failedToDeleteReviewWatch": "刪除審閱監控失敗", + "failedToLoadGithubWorkspaceSettings": "載入 GitHub 工作區設定失敗", + "failedToMerge": "合併失敗", + "failedToReRequestReview": "無法重新請求審查", + "failedToResetIssueWatch": "重置議題監控失敗", + "failedToResetReviewWatch": "重置審閱監控失敗", + "failedToSaveDefaultQueries": "儲存預設查詢失敗", + "failedToSaveGithubWorkspaceSettings": "儲存 GitHub 工作區設定失敗", + "failedToSaveQuickActions": "儲存快捷操作失敗", + "failedToUnlinkPullRequest": "取消關聯拉取要求失敗", + "filter": "篩選", + "filterGithubResultsByRepository": "按儲存庫篩選 GitHub 結果", + "filterRepositories": "篩選儲存庫…", + "filters": "篩選", + "forWebhooksChooseContentType": "對於網絡鈎子,請選擇 <1>{{contentType}} 作為內容類型,並保持 SSL 驗證啓用。", + "foundNewIssues_one": "發現 {{count}} 個新議題", + "foundNewIssues_other": "發現 {{count}} 個新議題", + "foundNewPrs_one": "發現 {{count}} 個新 PR", + "foundNewPrs_other": "發現 {{count}} 個新 PR", + "general": "(常規)", + "generateSetupInstructions": "產生設定說明", + "githubAccessSettingsSaved": "GitHub 存取設定已儲存", + "githubApiAccessIsExhaustedFor": "{{resources}} 的 GitHub API 配額已耗盡。後台 PR 和議題檢查將暫停,直至最近一次限額在 {{reset}} 重置。", + "githubApiLimits": "GitHub API 限制", + "githubApp": "GitHub 應用", + "githubAppAdded": "已新增 GitHub 應用", + "githubAppConfigurationInstructions": "GitHub 應用設定說明", + "githubAppConnected": "GitHub 應用已連接", + "githubAppCouldNotBeImported": "無法匯入 GitHub 應用", + "githubAppImportedItIsReady": "已匯入 GitHub 應用,可以安裝。", + "githubAppPermissions": "GitHub 應用權限", + "githubAppSetupCancelled": "已取消 GitHub 應用設定", + "githubAppSetupCouldNotStart": "無法啓動 GitHub 應用設定", + "githubAppSlug": "GitHub 應用標識", + "githubAuthenticationLost": "GitHub 驗證已失效。", + "githubCli": "GitHub CLI", + "githubCliAccount": "GitHub CLI 帳戶", + "githubDidNotReturnARedirectUrl": "GitHub 未返回重定向 URL", + "githubDidNotReturnAnInstallationUrl": "GitHub 未返回安裝 URL", + "githubIdentityConnected": "GitHub 身份已連接", + "githubIntegration": "GitHub 集成", + "githubIsNotConnectedConfigureWorkspace": "GitHub 未連接。請使用 gh CLI 或個人存取權杖設定工作區自動化。", + "githubIsReadyToCreateThe": "GitHub 已準備好建立應用", + "githubMustReachThisHttpsOrigin": "GitHub 必須能夠存取此 HTTPS 源,以傳送簽名網絡鈎子和回調。", + "githubOwnerLogin": "GitHub 所有者登入名", + "githubSearchQuerySupportsFullGithub": "GitHub 搜尋查詢。支援完整的 GitHub 搜尋語法,提供最大的靈活性。", + "githubSearchQueryWhenSetOverrides": "GitHub 搜尋查詢。設定後將覆蓋上方的標籤篩選條件。", + "githubSetupWasNotCompleted": "GitHub 設定未完成", + "githubWillShowTheGeneratedPermissions": "GitHub 會顯示產生的權限並要求你確認。從 GitHub 返回後會新增註冊;仍需明確執行安裝,才能將其用於此工作區。", + "githubWorkspaceSettingsSaved": "GitHub 工作區設定已儲存", + "graphqlQueryLimit": "GraphQL 查詢限制", + "group": "分組", + "hidePrompt": "隱藏提示詞", + "hideToken": "隱藏權杖", + "hint": "提示", + "hintOptional": "提示(可選)", + "howManagedTaskCredentialsWork": "託管任務認證資料的工作方式", + "howOftenToCheckForNew": "檢查新議題的頻率。最短 60 秒,最長 3600 秒。", + "howOftenToCheckForNew2": "檢查新 PR 的頻率。最短 60 秒,最長 3600 秒。", + "icon": "圖標", + "identityConnectionFailed": "身份連接失敗", + "importSetupCouldNotStart": "無法啓動匯入設定", + "imported": "已匯入", + "inUse": "使用中", + "inbox": "收件箱", + "inheritExecutorGitCredentials": "繼承執行器 Git 認證資料", + "initialStepForNewTasks": "新任務的初始步驟。", + "initialStepForNewTasksAuto": "新任務的初始步驟。自動啓動由該步驟設定。", + "insertPrFeedback": "插入 PR 反饋", + "installAGithubAppAboveTo": "請先安裝上方的 GitHub 應用以更改工作區連接。安裝完成後即可儲存任務存取設定。", + "installForThisWorkspace": "為此工作區安裝", + "interval": "間隔", + "issue": "議題 #{{number}}", + "issue2": "議題 #", + "issueCleanupPolicyAlwaysDescription": "關閉時刪除,即使你參與過該任務。", + "issueCleanupPolicyAutoDescription": "刪除已關閉議題的任務,但保留你曾在其中輸入訊息的任務。", + "issueWatch": "議題監控", + "issueWatchCreated": "議題監控已建立", + "issueWatchDeleted": "議題監控已刪除", + "issueWatchNotFound": "未找到議題監控", + "issueWatchPromptHelp": "為每個新議題傳送給代理程式的提示詞。輸入 {{token}} 可插入佔位符。", + "issueWatchUpdated": "議題監控已更新", + "issueWatches": "議題監控", + "issues": "議題", + "kandevBrokersTheWorkspacePatNamed": "Kandev 將工作區 PAT、指定的 GitHub CLI 帳戶或應用身份提供給此任務,用於 GitHub HTTPS 和 gh。", + "kandevFirstReservesExactCallbackAnd": "Kandev 會先預留準確的回調和網絡鈎子 URL,再引導你完成 GitHub 應用設定。在安裝匯入的應用前,現有工作區存取保持不變。", + "kandevGeneratesTheExactAppPolicy": "Kandev 會產生準確的應用策略。你在 GitHub 上確認建立後,Kandev 將儲存此註冊,供工作區選擇。", + "kandevManagedOperationsActAs": "Kandev 託管的操作以 {{actor}} 身份執行。", + "kandevManagedOperationsUseTheGithub": "Kandev 託管的操作使用為 {{actor}} 安裝的 GitHub 應用。", + "kandevStoresThisTokenForThis": "Kandev 會為此工作區儲存該權杖。GitHub 會將操作記錄為權杖所有者執行。", + "kandevUsesThisWorkspaceConnectionFor": "Kandev 使用此工作區連接執行儲存庫同步、監控、後台任務和託管代理程式的 GitHub 命令。使用 PAT 或 GitHub CLI 帳戶時,「我的 GitHub」和你觸發的操作會使用同一個真人身份。", + "kindIssue": "議題", + "kindPullRequest": "拉取要求", + "label": "標籤", + "labels": "標籤", + "labelsCommaSeparated": "標籤(逗號分隔)", + "lastPolled": "上次輪詢", + "lastSynced": "上次同步", + "legacySharedConnection": "舊版共享連接", + "limitsGithubPullRequestsAndIssues": "限制此工作區中顯示或匯入的 GitHub 拉取要求和議題。", + "loadingAccounts": "正在載入帳戶…", + "loadingOrganizations": "正在載入組織…", + "loadingRegisteredApps": "正在載入已註冊應用…", + "loadingTaskAccess": "正在載入任務存取設定…", + "localAndWorktreeTasksUseHost": "本地和工作樹任務使用主機可見的 Git 或 SSH 認證資料。Docker、SSH 和雲端任務使用對應執行器中設定的認證資料。", + "managedWorkspaceCredentials": "託管工作區認證資料", + "me": "我", + "meMyTeams": "我和我的團隊", + "mergeable": "可合併", + "mergeConflictsWith": "與以下內容存在合併衝突", + "mergeMethodDefault": "合併 PR", + "mergeMethodMergeCommit": "建立合併提交", + "mergeMethodMergeCommitShort": "合併提交", + "mergeMethodRebase": "變基併合並", + "mergeMethodRebaseShort": "變基", + "mergeMethodSquash": "壓縮併合並", + "mergeMethodSquashShort": "壓縮", + "merged": "已合併", + "mergedAgo": "合併於 {{time}}", + "merging": "正在合併…", + "missing": "缺失", + "mode": "模式", + "myGithubIdentity": "我的 GitHub 身份", + "myGithubNowUsesYourVerified": "「我的 GitHub」現在使用你已驗證的個人身份。", + "name": "名稱", + "nameInKandev": "Kandev 中的名稱", + "needsAttention": "需要處理", + "never": "從不", + "noAutomationConnection": "無自動化連接", + "noChecks": "無檢查", + "noChecksHaveStarted": "尚未開始任何檢查", + "noCommentsYet": "暫無評論", + "noGhAccountsFound": "未找到 gh 帳戶", + "noGithubAppsAreRegisteredYet": "尚未註冊 GitHub 應用。請新增現有應用或在下方新建。", + "noIssueWatchesConfiguredCreateOne": "尚未設定議題監控。建立一個即可開始監控 GitHub 議題。", + "noIssuesMatchThisFilter": "沒有符合此篩選條件的議題。", + "noNewIssuesFound": "未發現新議題", + "noNewPrsFound": "未發現新 PR", + "noPullRequestLinkedToThis": "此工作階段未關聯拉取要求。", + "noPullRequestsMatchThisFilter": "沒有符合此篩選條件的拉取要求。", + "noReposFoundFor": "未找到「{{org}}」的儲存庫", + "noRepositoriesFound": "未找到儲存庫。", + "noReviewWatchesConfiguredCreateOne": "尚未設定審閱監控。建立一個即可開始監控 PR。", + "noReviewsYet": "暫無審閱", + "noSavedQueriesYet": "尚無已儲存的查詢。", + "noStatsAvailableYet": "暫無統計數據。", + "noTaskCreatedYet": "尚未建立任務", + "noTasksToCleanUp": "沒有需要清理的任務", + "noWorkspaceConfiguredCreateAWorkspace": "尚未設定工作區。請先建立工作區,才能從 PR/議題啓動任務。", + "notMergeable": "不可合併", + "omitThePlaceholderIfYouWant": "若希望代理程式自行拉取分支並檢查 GitHub,而不是接收 Kandev 的快照,請省略該佔位符。", + "onlyMatchIssuesWithTheseLabels": "僅匹配帶有這些標籤的議題。留空則匹配所有議題。", + "onlyPrsWhereYouAreExplicitly": "僅匹配明確請求你審閱的 PR(不包括通過團隊成員身份請求)", + "onlyTheAppOwner": "僅應用所有者", + "openDetails": "開啟 {{title}} 詳情", + "openGithubAppSettings": "開啟 GitHub 應用設定", + "openGithubFilters": "開啟 GitHub 篩選", + "openOnGithub": "在 GitHub 上開啟 {{workflow}}", + "openSettingsToSeePrsAndIssues": "<0>開啟 GitHub 設定 以查看你的拉取要求和議題。", + "openedAgo": "建立於 {{time}}", + "optionalFallsBackToStepDefault": "可選,留空則使用步驟預設值。", + "optionalFallsBackToStepDefault2": "可選,留空則使用步驟預設值。代理程式將在該執行器環境中執行。", + "optionallyConnectYourGithubUserFor": "你可以選擇連接 GitHub 用戶,用於「我的 GitHub」和歸屬於真人的操作。此身份絕不會提供給託管代理程式;工作區自動化仍以應用身份執行。", + "or": "或", + "organization": "組織", + "organizations": "組織", + "otherGithubAccounts": "其他 GitHub 帳戶", + "overallLabel": "總體:", + "passRate": "通過率", + "pasteTheAppPrivateKey": "請貼上應用私鑰。", + "pause": "暫停", + "pauseOrResumePolling": "暫停或恢復輪詢。", + "paused": "已暫停", + "pending": "{{pending}} 個待處理", + "pendingReview": "待審閱", + "pendingReviewCount_one": "({{count}} 個待處理)", + "pendingReviewCount_other": "({{count}} 個待處理)", + "pendingReviews_one": "{{count}} 條待審閱", + "pendingReviews_other": "{{count}} 條待審閱", + "permissionsAvailableToKandevThroughThis": "Kandev 通過此工作區安裝的 GitHub 應用獲得的權限。", + "personalAccessToken": "個人存取權杖", + "personalAccount": "個人帳戶", + "personalGithubIdentityDisconnected": "個人 GitHub 身份已斷開連接", + "personalOauth": "個人 OAuth", + "placeholderActionTitle": "PR 或議題標題", + "placeholderActionUrl": "PR 或議題 URL", + "placeholderCommaSeparatedLabels": "逗號分隔的標籤", + "placeholderIssueAuthor": "議題作者用戶名", + "placeholderIssueBody": "議題正文", + "placeholderIssueNumber": "議題編號", + "placeholderIssueTitle": "議題標題", + "placeholderIssueUrl": "議題 URL", + "placeholderPrAuthor": "PR 作者用戶名", + "placeholderPrNumber": "PR 編號", + "placeholderPrTitle": "PR 標題", + "placeholderPrUrl": "PR 地址", + "placeholderRepository": "儲存庫", + "placeholderSourceBranch": "源分支", + "placeholderTargetBranch": "目標分支", + "pollIntervalSeconds": "輪詢間隔(秒)", + "pr": "PR #", + "prAnalytics": "PR 分析", + "prApproved": "PR 已批准", + "prClosedWithoutMerging": "PR 已關閉且未合併", + "prEvents": "PR 事件", + "reviewFollowUp": "審查跟進", + "prMerged": "PR 已合併", + "prTaskStatusCi": "CI", + "prTaskStatusMerge": "合併", + "prTaskStatusNumber": "PR #{{number}}", + "prTaskStatusReview": "審閱", + "prTaskStatusState": "狀態", + "prepareAppOnGithub": "在 GitHub 上準備應用", + "presetIconBug": "缺陷", + "presetIconCheck": "檢查", + "presetIconCode": "程式碼", + "presetIconEye": "眼睛", + "presetIconMessage": "訊息", + "presetIconSearch": "搜尋", + "presetIconSparkle": "閃光", + "presetIconTool": "工具", + "pressEnter": "按 Enter", + "private": "私有", + "privateKeyPem": "私鑰({{extension}})", + "promptsShownOnGithubWhenStarting": "從 PR 或議題啓動任務時在 {{route}} 上顯示的提示詞。", + "prs": "PR", + "prsByDay": "按天統計 PR", + "prsCreated": "已建立 PR", + "prsOnDay_one": "{{date}}:{{count}} 個 PR", + "prsOnDay_other": "{{date}}:{{count}} 個 PR", + "prsReviewed": "已審閱 PR", + "prsWhereYouOrAnyOf": "請求你或你的任一團隊審閱的 PR", + "publicKandevUrl": "公共 Kandev URL", + "pullRequestActivityForThisWorkspace": "此工作區的拉取要求活動。", + "pullRequestCiStatusAria": "拉取要求 #{{number}} CI 狀態{{automation}}", + "pullRequestCiStatusReviewsAnd": "拉取要求的 CI 狀態、審閱與檢查摘要。", + "pullRequestCount_one": "{{count}} 個拉取要求", + "pullRequestCount_other": "{{count}} 個拉取要求", + "pullRequestCountCiStatusAria_one": "{{count}} 個拉取要求 CI 狀態{{automation}}", + "pullRequestCountCiStatusAria_other": "{{count}} 個拉取要求 CI 狀態{{automation}}", + "pullRequestStatus": "拉取要求 #{{number}} 狀態", + "pullRequestStatuses_one": "{{count}} 個拉取要求狀態", + "pullRequestStatuses_other": "{{count}} 個拉取要求狀態", + "pullRequests": "拉取要求", + "pullRequestsAndIssuesAcrossYour": "跨你的儲存庫的拉取要求與議題。", + "pullRequestsLinkedToTask_one": "此任務已關聯 {{count}} 個拉取要求;開啟其中一個", + "pullRequestsLinkedToTask_other": "此任務已關聯 {{count}} 個拉取要求;開啟其中一個", + "query": "查詢", + "queryExample": "例如 {{query}}", + "quickActions": "快捷操作", + "quickActionsAreStillLoading": "快捷操作仍在載入。", + "quickActionsSaved": "快捷操作已儲存", + "rateLimitRemaining": "剩餘 {{remaining}} / {{limit}} {{unit}}", + "rateLimitUnitPoints": "點數", + "rateLimitUnitRequests": "次請求", + "rateLimitUnknown": "未知", + "readyToMerge": "可以合併", + "reRequestReview": "重新請求審閱", + "reRequestReviewFrom": "向 {{author}} 重新請求審閱", + "reconnectGithub": "重新連接 GitHub", + "reconnectIdentity": "重新連接身份", + "refresh": "刷新", + "refreshGithubConnection": "刷新 GitHub 連接", + "remove": "移除", + "removeFromTask": "從任務中移除 {{repo}} #{{prnumber}}", + "repositories": "儲存庫", + "repository": "儲存庫", + "repositoryPermissions": "儲存庫權限", + "repositoryScope": "儲存庫範圍", + "repositoryScopeHelp": "限制 Kandev 為此工作區發現的 GitHub 拉取要求和議題,包括「我的 GitHub」結果、審閱監控和議題監控。它不會更改 GitHub 權限或儲存庫存取權限。", + "requesting": "正在請求…", + "requiredGithubAppPolicy": "必需的 GitHub 應用策略", + "resetCompleteDeletedTasks_one": "重置完成,已刪除 {{count}} 個任務;下次輪詢將重新匯入。", + "resetCompleteDeletedTasks_other": "重置完成,已刪除 {{count}} 個任務;下次輪詢將重新匯入。", + "resetCompleteNextPollWillRe": "重置完成,下次輪詢將重新匯入匹配項。", + "resetWatch": "重置監控", + "resets": "· 於 {{reset}} 重置", + "resolveConflicts": "解決衝突", + "resolvedFromOneNamedHostAccount": "需要時從一個指定的主機帳戶解析。受管理任務會取得限定範圍的中介身份;除非在下方選取,否則不會繼承主機 Git。", + "retry": "重試", + "reviewCount_one": "{{count}} 條審閱", + "reviewCount_other": "{{count}} 條審閱", + "reviewPermissions": "審閱權限", + "reviewReRequestedFrom": "已重新向 {{reviewer}} 請求審查", + "reviewWatch": "審閱監控", + "reviewWatchCreated": "審閱監控已建立", + "reviewWatchDeleted": "審閱監控已刪除", + "reviewWatchNotFound": "未找到審閱監控", + "reviewWatchPromptHelp": "為每個新 PR 傳送給代理程式的提示詞。輸入 {{token}} 可插入佔位符,或使用 {{mention}} 按名稱引用已儲存的提示詞。它的展開方式與工作流程步驟提示詞相同,因為此提示詞會成為通過同一組裝流程傳遞的任務描述。", + "reviewWatchUpdated": "審閱監控已更新", + "reviewWatches": "審閱監控", + "reviews": "審閱{{summary}}", + "saveChanges": "儲存更改", + "saveCurrentQuery": "儲存目前查詢", + "savePresetDescription": "將此 {{kind}} 查詢儲存到側邊欄,以便日後快速存取。", + "savePrompt": "儲存提示詞", + "saveQuery": "儲存查詢", + "saved": "已儲存", + "savedQueryFallback": "已儲存的查詢", + "saving": "正在儲存…", + "savingChanges": "正在儲存更改…", + "searchLimit": "搜尋限制", + "searchQuery": "搜尋查詢", + "searching": "正在搜尋…", + "selectWorkflow": "選擇工作流程", + "selectWorkspace": "選擇工作區", + "selectedRepositories": "已選儲存庫", + "selectWorkspaceBeforeRequestingReview": "請求審查前請先選擇工作區。", + "setTheseExactUrlsCreateAClientSecret": "設定這些準確的 URL,建立用戶端密鑰和網絡鈎子密鑰,並下載私鑰。此一次性設定於 {{expiresAt}} 過期。", + "showGithubApiLimits": "顯示 GitHub API 限制", + "showLess": "收起", + "showMore": "展開更多", + "showToken": "顯示權杖", + "sidebarQueriesShownOnGithubFor": "在 {{route}} 上為拉取要求和議題顯示的側邊欄查詢。", + "signInWithGhAuthLogin": "使用 <1>{{command}} 登入,然後重新開啟此對話框。", + "someSettingsWereSavedButAnother": "部分設定已儲存,但另一項更改失敗:{{detail}}", + "startOver": "重新開始", + "stepLabelled": "步驟:{{stepTitle}}", + "storedAppCredentialsMintShortLived": "儲存的應用程式認證會簽發短效安裝權杖。受管理任務會針對允許的儲存庫取得限定範圍的應用程式中介身份。", + "storedEncryptedByKandevWorkspaceAutomation": "由 Kandev 加密存儲。工作區自動化和託管任務的 GitHub HTTPS/gh 操作將以你的帳戶身份執行。", + "subscribedEvents": "訂閲的事件", + "task": "任務", + "taskAccess": "任務存取:", + "taskAccessUnavailable": "任務存取不可用", + "taskAutoFixPrompt": "任務自動修復提示詞", + "taskGitAccess": "任務 Git 存取", + "taskLabelled": "任務:{{title}}", + "taskPrompt": "任務提示詞", + "tasks": "任務", + "tasksCreatedByThisWatcherLand": "此監控建立的任務會進入所選工作區。", + "theAppIsReadyToSelect": "該應用已可供此工作區選擇和安裝。", + "theExistingWorkspaceConnectionWasNot": "現有工作區連接未更改。", + "theGithubResponseCouldNotBe": "無法驗證 GitHub 回應。請檢查連接後重試。", + "thePlaceholderInsertsTheCurrentPr": "該佔位符會插入目前 PR 標識、新增或變更的失敗檢查(含 GitHub 作業連結),以及新增或變更的審閱評論(含檔案、行號和正文)。", + "thePullRequestIsStillLinked": "拉取要求仍保持關聯。", + "theRepositoryWillBeAutomaticallyCloned": "如果工作區中尚無此儲存庫,將自動複製到 {{path}}。", + "theSettingsCouldNotBeSaved": "無法儲存設定", + "theStoredAppCredentialsAreUnavailable": "存儲的應用認證資料不可用。", + "theWorkflowToCreateTasksIn": "用於建立任務的工作流程。", + "theWorkspaceChangedBeforeTaskAccess": "儲存任務存取設定前工作區已發生變化", + "thisAccountAlsoPowersMyGithub": "此帳戶也用於「我的 GitHub」和用戶觸發的操作。", + "thisAppRegistrationIsShared_one": "此應用註冊由 {{count}} 個工作區共享。註冊更改會影響所有使用它的工作區;安裝存取權限仍按工作區隔離。", + "thisAppRegistrationIsShared_other": "此應用註冊由 {{count}} 個工作區共享。註冊更改會影響所有使用它的工作區;安裝存取權限仍按工作區隔離。", + "thisBranchCanTBeMerged": "此分支無法自動合併。請先解決衝突再合併。", + "thisRepositoryOpensByDefaultYou": "預設開啟此儲存庫。開啟查詢後仍可更改篩選條件。", + "thisWorkspaceUsesOneCredentialFor": "此工作區使用一個認證資料執行儲存庫同步、監控、後台任務和託管代理程式的 GitHub 存取。執行器設定檔認證資料仍可優先使用。", + "titleIssues": "議題", + "titlePullRequests": "拉取要求", + "toggleReviewFollowUpAutomation": "切換審查跟進自動化", + "typeACustomQueryFirst": "請先輸入自訂查詢", + "typeOwnerRepoToSearch": "輸入 {{format}} 進行搜尋", + "unableToLoadTheCurrentTask": "無法載入目前任務存取設定。", + "unexpectedResponseFromTheServer": "伺服器返回了意外回應", + "unresolvedComments_one": "{{count}} 條未解決評論", + "unresolvedComments_other": "{{count}} 條未解決評論", + "untitledPr": "未命名 PR", + "update": "更新", + "updated": "已更新 ", + "updatedAgo": "{{elapsed}} 前更新", + "updatedJustNow": "剛剛更新", + "updatingStatus": "更新中…", + "useAnAppWhenAutomationNeeds": "當自動化需要獨立身份、短期權杖和儲存庫級安裝控制時,請使用應用。設定過程更復雜,並且需要可公開存取的 HTTPS URL。", + "useCommaSeparatedOwnerRepoValues": "使用逗號分隔的 owner/repo 值。", + "useDefault": "使用預設", + "usedByWorkspaces_one": "由 {{count}} 個工作區使用。編輯或刪除會影響所有這些工作區。", + "usedByWorkspaces_other": "由 {{count}} 個工作區使用。編輯或刪除會影響所有這些工作區。", + "verifyAndImportApp": "驗證並匯入應用", + "viewPermissions": "查看權限", + "viewPullRequestOnGithub": "在 GitHub 上查看拉取要求", + "waitingOnBranchProtection": "等待分支保護", + "wakeAgentOnReviewRequest": "收到任何新的審查請求時喚醒代理程式,包括修改後的重新審查。", + "wakeAgentOnTerminalPrState": "審查工作結束時喚醒代理程式。可選擇其中一種或兩種結果。", + "watchesThisTaskSLinkedPull": "在 1 分鐘 PR 刷新循環中監視此任務關聯的拉取要求。自動修復會為新觀察到的反饋排隊任務提示詞,自動合併會等待 PR 就緒,通知開關會在工作區連接的 GitHub 帳戶被請求審閱或 PR 到達終態時喚醒任務代理程式。審閱請求會先靜默建立該帳戶目前請求狀態的基線,再在後續請求時通知。", + "webhook": "網絡鈎子", + "webhookSecret": "網絡鈎子密鑰", + "whichAllowedGithubRepositoriesToMonitor": "此監控要監測哪些允許存取的 GitHub 儲存庫。", + "whoCanInstallThisApp": "誰可以安裝此應用?", + "withManagedWorkspaceCredentialsKandevConfigures": "使用受管理的工作區認證資料時,Kandev 會在新啓動的任務程序中,將 agentctl 設為 Git 的認證輔助程式。當 Git 要求取得已附加 GitHub HTTPS 儲存庫的認證資料時,輔助程式會兌換只適用於該任務及儲存庫的 broker 租約。認證資料會在需要時傳回 Git,且不會寫入儲存庫或 Git 設定。gh 命令會使用 Kandev 支援 broker 的轉接程式。繼承執行器設定則會略過這兩者,改用所選執行器可見的認證資料。變更會套用至新啓動的任務及下次繼續執行,不會影響已在執行的程序。", + "workflow": "工作流程", + "workflowStep": "工作流程步驟", + "workflowStepPromptWrapHelp": "工作流程步驟提示詞會包裹此提示詞。例如,如果步驟提示詞為 <2>{{stepPrompt}},最終提示詞將變為 <5>{{finalPrompt}}", + "workspaceAutomationNowUsesTheVerified": "工作區自動化現在使用已驗證的應用安裝。", + "workspaceGithubAccess": "工作區 GitHub 存取", + "workspaceGithubConnectionRemoved": "工作區 GitHub 連接已移除", + "workspaceGithubIdentity": "工作區 GitHub 身份", + "yourReviewIsRequested": "已請求你的審閱" +} diff --git a/apps/web/src/locales/zh-hk/gitlab.json b/apps/web/src/locales/zh-hk/gitlab.json new file mode 100644 index 0000000000..7cde6fc580 --- /dev/null +++ b/apps/web/src/locales/zh-hk/gitlab.json @@ -0,0 +1,351 @@ +{ + "actionApprove": "批准", + "actionAssignees": "負責人", + "actionFailed": "{{action}} 失敗", + "actionHint": "操作提示 {{index}}", + "actionLabel": "操作標籤 {{index}}", + "actionLabels": "標籤", + "actionMerge": "合併", + "actionPrompt": "操作提示詞 {{index}}", + "actionReply": "回覆", + "actionResolve": "解決", + "actionReviewers": "審閱者", + "actionUnapprove": "取消批准", + "actionUnlink": "取消關聯", + "actions": "操作", + "active": "活躍", + "addAllDiscussionsToTaskContext": "將全部討論新增到任務上下文", + "addDiscussionToTaskContext": "將討論新增到任務上下文", + "addIssueAction": "新增議題操作", + "addMrAction": "新增合併請求操作", + "agentProfile": "代理程式設定檔", + "allProjects": "所有項目", + "alwaysDelete": "始終刪除", + "apply": "應用", + "approvalRemoved": "已移除批准", + "approvals": "批准", + "approve": "批准", + "approvedCount_one": "{{count}} 人已批准", + "approvedCount_other": "{{count}} 人已批准", + "assignees": "負責人", + "assigneesUpdated": "負責人已更新", + "authenticationMethod": "身份驗證方式", + "auto": "自動", + "autoKeepEngagedTasks": "自動;保留進行中的任務", + "between60And3600Seconds": "必須介於 60 到 3600 秒之間。", + "bugBackend": "bug, backend", + "byAuthorOpenedAgo": "由 {{author}} · 建立於 {{time}}", + "checkNow": "立即檢查", + "checkingGitlabStatus": "正在檢查 GitLab 狀態…", + "chooseAWorkspacePatTheLocal": "請選擇工作區 PAT、本地 glab CLI 登入認證資料或環境提供的權杖。CLI 和環境認證資料必須已可供 Kandev 後端使用。", + "chooseWhetherToIncludeOnlyDirect": "選擇僅包含直接審閱請求,還是包含範圍更廣的兼容請求。", + "cleanupPolicy": "清理策略", + "clearToken": "清除權杖", + "commits": "提交", + "conflicts": "衝突", + "connectAGitlabAccountSoKandev": "連接 GitLab 帳戶,以便 Kandev 代表你開啟合併請求、讀取審閱討論,以及回覆或解決討論。", + "connected": "已連接", + "controlsTaskDeletionWhenTheGitlab": "控制 GitLab 條目關閉時是否刪除任務。", + "couldNotReachHost": "無法連接 <1>{{host}}:{{error}}", + "createIssueWatch": "建立 GitLab 議題監控", + "createReviewWatch": "建立 GitLab 審閱監控", + "createTask": "建立任務", + "createWatch": "建立監控", + "created": "已建立", + "customQueryPressEnterEG": "自訂查詢;按 Enter。例如 \"labels=bug&state=opened\"", + "deleteSavedQuery": "刪除已儲存查詢", + "deleteSavedQuery2": "刪除已儲存查詢 {{label}}", + "deleteWatch": "刪除監控", + "deleteWatchTitle": "刪除 {{label}}?", + "deleting": "正在刪除…", + "description": "描述", + "directAndGroupCompatibleRequests": "直接請求及與羣組兼容的請求", + "directRequests": "直接請求", + "discussionReply": "討論回覆", + "discussionResolved": "討論已解決", + "discussions": "討論", + "draft": "草稿", + "eGNeedsMyReview": "例如:需要我審閱", + "editIssueWatch": "編輯 GitLab 議題監控", + "editReviewWatch": "編輯 GitLab 審閱監控", + "editWatch": "編輯監控", + "enableThisWatchBeforeCheckingNow": "請先啓用此監控,再立即檢查", + "enableWatch": "啓用監控", + "enterAPersonalAccessTokenToSwitch": "請輸入個人存取權杖以切換到 PAT。", + "enterAValidHttpOrHttpsGitlabHost": "請輸入有效的 HTTP 或 HTTPS GitLab 主機 URL。", + "environmentToken": "環境權杖", + "everyQuickActionNeedsALabel": "每個快捷操作都需要標籤和提示詞。", + "executorProfile": "執行器設定檔", + "failedToClearToken": "清除權杖失敗", + "failedToLinkMergeRequest": "關聯合並請求失敗", + "failedToResetQuickActions": "重置快捷操作失敗", + "failedToSaveQuickActions": "儲存快捷操作失敗", + "failedToUnlinkMergeRequest": "取消關聯合並請求失敗", + "failedToUpdateAuthenticationMethod": "更新身份驗證方式失敗", + "files": "檔案", + "filters": "篩選", + "foundMatchingIssues_one": "找到 {{count}} 個匹配的議題", + "foundMatchingIssues_other": "找到 {{count}} 個匹配的議題", + "foundMatchingMergeRequests_one": "找到 {{count}} 個匹配的合併請求", + "foundMatchingMergeRequests_other": "找到 {{count}} 個匹配的合併請求", + "gitlabAuthenticationMethodUpdated": "GitLab 身份驗證方式已更新", + "gitlabCredentialsAreConfiguredButAuthentication": "已設定 GitLab 認證資料,但身份驗證失敗。請在以下位置重新連接:", + "gitlabHostUrlOverrideForSelf": "GitLab 主機 URL。自託管實例可覆蓋此值;使用 {{host}} 時請保留預設值。", + "gitlabIsNotConnectedConfigureGitlab": "GitLab 未連接。請在以下位置設定 GitLab 身份驗證:", + "gitlabIssueWatch": "GitLab 議題監控", + "gitlabMergeRequest": "GitLab 合併請求 !{{mriid}}", + "gitlabMergeRequests": "{{length}} 個 GitLab 合併請求", + "gitlabQueryParameters": "GitLab 查詢參數", + "gitlabQuickActionsReset": "GitLab 快捷操作已重置", + "gitlabQuickActionsSaved": "GitLab 快捷操作已儲存", + "gitlabRejectedAction": "GitLab 拒絕了該操作。", + "gitlabRejectedTheAction": "GitLab 拒絕了該操作。", + "gitlabRejectedTheMergeRequestLink": "GitLab 拒絕了合併請求關聯。", + "gitlabRejectedTheRequest": "GitLab 拒絕了該請求。", + "gitlabReviewWatch": "GitLab 審閱監控", + "gitlabTokenCleared": "GitLab 權杖已清除", + "gitlabWatchCouldNotBeSaved": "無法儲存 GitLab 監控", + "gitlabWillMergeDescription": "GitLab 將使用項目預設方式把 {{mr}} 合併到 {{baseBranch}}。", + "glabCli": "glab CLI", + "hideToken": "隱藏權杖", + "inbox": "收件箱", + "initialStepForEachNewTask": "每個新任務的初始步驟。", + "interval": "間隔", + "intervalMinutesLabel_one": "間隔 {{count}} 分鐘", + "intervalMinutesLabel_other": "間隔 {{count}} 分鐘", + "intervalMinutes_one": "{{count}} 分鐘", + "intervalMinutes_other": "{{count}} 分鐘", + "into": "合併到", + "issueWatchCheckFailed": "議題監控檢查失敗", + "issueWatchCreated": "議題監控已建立", + "issueWatchCreationFailed": "建立議題監控失敗", + "issueWatchDeleted": "議題監控已刪除", + "issueWatchDeletionFailed": "刪除議題監控失敗", + "issueWatchDialogDescription": "為新匹配的 GitLab 議題自動建立工作區任務。", + "issueWatchResetFailed": "重置議題監控失敗", + "issueWatchReset_one": "議題監控已重置;已刪除 {{count}} 個任務", + "issueWatchReset_other": "議題監控已重置;已刪除 {{count}} 個任務", + "issueWatchUpdateFailed": "更新議題監控失敗", + "issueWatchUpdated": "議題監控已更新", + "issueWatches": "議題監控", + "issues": "議題", + "kindIssue": "議題", + "kindMergeRequest": "合併請求", + "label": "標籤", + "labels": "標籤", + "labelsUpdated": "標籤已更新", + "lastChecked": "上次檢查", + "lastCheckedAt": "上次檢查時間:{{value}}", + "leaveEmptyToMatchMergeRequests": "留空以匹配請求你審閱的合併請求。新增參數會明確替換該審閱人約束。", + "linkAnotherMergeRequest": "關聯另一個合併請求", + "linkGitlabMergeRequest": "關聯 GitLab 合併請求", + "linkMergeRequest": "關聯合並請求", + "linkedMergeRequest": "已關聯的合併請求", + "linking": "正在關聯…", + "loadingMergeRequest": "正在載入合併請求", + "loggedInAs": "登入身份:<1>{{username}}", + "match": "匹配", + "maximumInFlightTasks": "最大進行中任務數", + "merge": "合併", + "merging": "合併中…", + "mergeRequest": "合併請求 !{{mriid}}", + "mergeRequestApproved": "合併請求已批准", + "mergeRequestLabels": "合併請求標籤", + "mergeRequestMerged": "合併請求已合併", + "mergeRequestReviewWatches": "合併請求審閱監控", + "mergeRequestUnlinked": "合併請求已取消關聯", + "mergeRequestUrl": "合併請求 URL", + "mergeRequests": "合併請求", + "mergeRequestsAndIssues": "{{host}} · 合併請求與議題", + "mergeThisMergeRequest": "合併此合併請求?", + "mergeability": "可合併性", + "mockTest": "模擬(測試)", + "mrs": "MR", + "name": "名稱", + "never": "從不", + "neverDelete": "永不刪除", + "newWatch": "新建監控", + "noChangedFiles": "無變更檔案", + "noCommits": "無提交", + "noDiscussionsYet": "暫無討論", + "noIssuesMatchThisFilter": "沒有符合此篩選條件的議題。", + "noLimit": "無限制", + "noMergeRequestLinked": "此工作階段未關聯合並請求。", + "noMergeRequestsMatchThisFilter": "沒有符合此篩選條件的合併請求。", + "noNewIssuesMatched": "沒有匹配到新議題", + "noNewMergeRequestsMatched": "沒有匹配到新的合併請求", + "noPipeline": "無流水線", + "noSavedQueriesYet": "尚無已儲存的查詢。", + "noTaskCreatedYet": "尚未建立任務", + "noWatchesConfigured": "尚未設定監控。", + "noneAssigned": "未分配", + "notConfigured": "未設定", + "notConnected": "未連接", + "notificationStatusUnavailable": "通知狀態不可用", + "notificationUpdateFailed": "更新通知失敗", + "openGitlabFilters": "開啟 GitLab 篩選", + "openInGitlab": "在 GitLab 中開啟", + "openMergeRequestInGitlab": "在 GitLab 中開啟合併請求", + "openSettingsToSeeMrsAndIssues": "<0>設定 → GitLab 以查看你的合併請求和議題。", + "optionalCapPollingResumesWhenActive": "可選上限;當活躍任務數低於此值時恢復輪詢。", + "optionalCommaSeparatedGitlabLabelsThat": "可選的以逗號分隔的 GitLab 標籤;匹配的議題必須包含這些標籤。", + "optionalCommaSeparatedNamespaceProjectPaths": "可選的以逗號分隔的命名空間/項目路徑。留空將監控所有可存取的項目。", + "optionalGitlabApiQueryParametersSuch": "可選的 GitLab API 查詢參數,例如 {{example}}。", + "optionalOtherwiseUsesTheWorkflowStep": "可選;否則使用工作流程步驟的預設值。", + "pasteAMergeRequestUrlFrom": "貼上來自此工作區所設定 GitLab 主機的合併請求 URL。", + "pauseWatch": "暫停監控", + "paused": "已暫停", + "personalAccessToken": "個人存取權杖", + "pipeline": "流水線", + "pollGitlabForMergeRequestsAwaiting": "輪詢 GitLab 中等待審閱的合併請求,併為每個新的匹配項建立一個任務。", + "pollGitlabIssuesAndCreateOne": "輪詢 GitLab 議題,併為每個新的匹配項建立一個任務。", + "pollIntervalSeconds": "輪詢間隔(秒)", + "pollingAndCleanup": "輪詢與清理", + "pressEnter": "按 Enter", + "project": "項目", + "projectPaths": "項目路徑", + "projects": "項目", + "promptSentToTheSelectedAgent": "為每個新匹配項傳送給所選代理程式設定檔的提示詞。", + "promptUsingUrlAndTitle": "使用 {{url}} 和 {{title}} 的提示詞", + "query": "查詢", + "quickActions": "快捷操作", + "reconnectRequired": "需要重新連接", + "refresh": "刷新", + "refreshFailed": "刷新失敗:{{error}}", + "refreshFailedShowingCached": "GitLab 刷新失敗:{{error}}。正在顯示上次成功載入的審閱數據。", + "refreshMergeRequest": "刷新合併請求", + "remove": "移除 {{label}}", + "removeFromAssignees": "將 {{username}} 從負責人中移除", + "removeFromReviewers": "將 {{username}} 從審閱者中移除", + "reply": "回覆", + "replyAdded": "已新增回復", + "replyToThisDiscussion": "回覆此討論", + "resetQuickActionsToDefaults": "將快捷操作重置為預設值", + "resetWatch": "重置監控", + "resolve": "解決", + "resolved": "已解決", + "retry": "重試", + "review": "審閱", + "reviewScope": "審閱範圍", + "reviewWatchCheckFailed": "審閱監控檢查失敗", + "reviewWatchCreated": "審閱監控已建立", + "reviewWatchCreationFailed": "建立審閱監控失敗", + "reviewWatchDeleted": "審閱監控已刪除", + "reviewWatchDeletionFailed": "刪除審閱監控失敗", + "reviewWatchDialogDescription": "為新匹配的 GitLab 合併請求自動建立工作區任務。", + "reviewWatchResetFailed": "重置審閱監控失敗", + "reviewWatchReset_one": "審閱監控已重置;已刪除 {{count}} 個任務", + "reviewWatchReset_other": "審閱監控已重置;已刪除 {{count}} 個任務", + "reviewWatchUpdateFailed": "更新審閱監控失敗", + "reviewWatchUpdated": "審閱監控已更新", + "reviewers": "審閱者", + "reviewersUpdated": "審閱者已更新", + "saveChangesBeforeCheckingNow": "立即檢查前請先儲存更改", + "saveCurrentQuery": "儲存目前查詢", + "saveGitlabQuery": "儲存 GitLab 查詢", + "savePresetDescription": "將此 {{kind}} 查詢儲存到側邊欄,以便日後快速存取。", + "saved": "已儲存", + "savedQueryFallback": "已儲存的查詢", + "saving": "正在儲存…", + "searchAssignees": "搜尋負責人", + "searchProjectMembers": "搜尋項目成員", + "searchReviewers": "搜尋審閱者", + "selectWorkflow": "選擇工作流程", + "shortHint": "簡短提示", + "showToken": "顯示權杖", + "subscribe": "訂閲", + "subscribeToNotifications": "訂閲 GitLab 通知", + "subscribedToGitlabNotifications": "已訂閲 GitLab 通知", + "task": "任務", + "taskAutomation": "任務自動化", + "taskPrompt": "任務提示詞", + "taskPromptsShownOnTheGitlab": "顯示在 GitLab 瀏覽頁面上、用於合併請求和議題的任務提示詞。", + "taskRepository": "任務儲存庫", + "theMergeRequestIsStillLinked": "合併請求仍保持關聯。", + "thisMergeRequestBelongsToA": "此合併請求屬於與目前工作區連接不同的 GitLab 主機。", + "thisWillDeleteEveryTaskCreated": "這會刪除由此監控建立的所有任務,包括已歸檔任務,並移除其輪詢歷史。此操作無法撤銷。", + "titleIssues": "議題", + "titleMergeRequests": "合併請求", + "typeACustomQueryFirst": "請先輸入自訂查詢", + "unapprove": "取消批准", + "unlink": "取消關聯 !", + "unlinkMergeRequest": "取消關聯合並請求", + "unreachable": "無法存取", + "unsubscribe": "取消訂閲", + "unsubscribeFromNotifications": "取消訂閲 GitLab 通知", + "unsubscribedFromGitlabNotifications": "已取消訂閲 GitLab 通知", + "updateWatch": "更新監控", + "updated": "已更新 ", + "verifyingGitlabConnection": "正在驗證 GitLab 連接", + "watchDeletionFailed": "刪除監控失敗", + "workflow": "工作流程", + "workflowStep": "工作流程步驟", + "workflowThatReceivesNewTasks": "接收新任務的工作流程。", + "yourTokenMayStillBeValid": "你的權杖可能仍然有效--這看起來是網絡或上游服務問題。", + "mrAutomationClosedLabel": "MR 已關閉未合併", + "mrAutomationDescription": "當關聯的合併請求請求你的審閱,或該合併請求被合併、關閉時,喚醒此任務的代理程式。通知會傳送到該任務目前處於活動狀態的工作階段佇列。", + "mrAutomationMergedLabel": "MR 已合併", + "mrAutomationRetry": "重試", + "mrAutomationReviewRequestedHelp": "當工作區連接的 GitLab 帳戶被新增為審閱者時喚醒代理程式。移除後重新新增算作新的請求;在 MR 更新過程中保持指派狀態則不算。", + "mrAutomationReviewRequestedHelpAriaLabel": "說明審閱請求通知", + "mrAutomationReviewRequestedLabel": "已請求你的審閱", + "mrAutomationTerminalHelp": "當審閱工作結束時喚醒代理程式。可以選擇其中一種或兩種結果。", + "mrAutomationTerminalHelpAriaLabel": "說明 MR 最終狀態通知", + "mrAutomationToggleAriaLabel": "切換審閱跟進自動化", + "mrAutomationTriggerLabel": "審閱跟進", + "mrAutomationUpdateFailedDescription": "設定未儲存。", + "mrAutomationUpdateFailedTitle": "更新 MR 自動化失敗", + "mrAutomation": "自動化", + "mrAutoFixCiAndAddressComments": "自動修復 CI 並處理評論", + "mrAutoFixPrompt": "自動修復提示詞", + "mrAutoFixPromptDescription": "此提示詞僅用於本任務。留空則使用預設提示詞。若希望 Kandev 附帶其 MR 反饋快照,請加入 <0>{{placeholder}}。", + "mrAutoFixRoundExplanation": "自動修復已為此 MR 使用 {{max}} 輪中的 {{current}} 輪。每當 Kandev 傳送或排入一條 MR 自動修復訊息時計為一輪。Kandev 會等待流水線結束後再開始新的自動修復輪次,以便代理程式同時獲得最終失敗的作業和目前的討論評論。更新已排隊的自動修復訊息不會消耗額外輪次。當達到 {{max}}/{{max}} 且沒有待更新的自動修復訊息時,Kandev 會暫停此 MR 的自動修復,以免無限循環。人工審查後先停用再重新啓用自動修復即可重新開始。", + "mrAutoMergeWhenReady": "就緒時自動合併", + "mrAutomationExplainAutoMerge": "說明自動合併就緒條件", + "mrAutoMergeReadyExplanation": "一旦此 MR 完全就緒,Kandev 會立即自動合併:處於開啓狀態且非草稿、流水線已成功、沒有未解決的討論,並且 GitLab 自身的合併就緒檢查也通過。如果您的項目需要審批,該條件已包含在 GitLab 的檢查中。MR 獲得批准且滿足其他所有條件後,Kandev 會立即合併,不再另行確認。", + "mrAutomationExplainOptions": "說明自動化選項", + "mrAutomationWatchesLinkedMergeRequest": "在 1 分鐘同步循環中監視此任務關聯的合併請求。自動修復會為新觀察到的流水線失敗或討論評論排入任務提示詞,自動合併會等待 MR 就緒,而通知開關會在工作區已連接的 GitLab 帳戶被請求審查或 MR 進入終態時喚醒該任務的代理程式。審查請求會先靜默記錄該帳戶的目前請求狀態,之後再有請求時才通知。", + "mrAutoFixInsertMrFeedback": "插入 MR 反饋", + "mrAutomationEditDefaultPrompt": "編輯預設提示詞", + "mrAutomationTaskAutoFixPrompt": "任務自動修復提示詞", + "mrAutomationPlaceholderExplanation": "該佔位符會插入目前 MR 標識符、新增或變更的失敗流水線作業及其連結,以及新增或變更的未解決討論評論(含檔案、行號和正文)。", + "mrAutomationOmitPlaceholderExplanation": "如果您希望代理程式自行拉取或擷取分支並直接查看 GitLab,而不是接收 Kandev 的快照,請省略該佔位符。", + "mrAutomationUseDefault": "使用預設值", + "mrAutomationSavePrompt": "儲存提示詞", + "mrAutomationEditAutoFixPromptForThis": "編輯此任務的自動修復提示詞", + "mrAutomationExplainAutoFixRounds": "說明自動修復輪次", + "mrAutomationAutoFixPromptSaveFailed": "無法儲存自動修復提示詞。", + "mrAutomationAutoFixPromptResetFailed": "無法重置自動修復提示詞。", + "mrPopoverOpenInGitlab": "在 GitLab 中開啟 !{{mriid}}", + "mrPopoverUnlink": "取消關聯 !{{mriid}}", + "mrPopoverPassRate": "通過率", + "mrPopoverNoPipeline": "尚未啓動流水線", + "mrPopoverApproved": "已批准", + "mrPopoverAwaitingReview": "等待審查", + "mrPopoverAwaitingCount_one": "{{count}} 項待處理", + "mrPopoverAwaitingCount_other": "{{count}} 項待處理", + "mrPopoverUnresolvedComments_one": "{{count}} 條未解決的評論", + "mrPopoverUnresolvedComments_other": "{{count}} 條未解決的評論", + "mrPopoverUpdatedJustNow": "剛剛更新", + "mrPopoverUpdatedAgo": "{{elapsed}}前更新", + "mrTooltipState": "狀態:{{state}}", + "mrTooltipReview": "審查:{{state}}", + "mrTooltipPipeline": "流水線:{{state}}", + "mrTooltipReadyToMerge": "可以合併", + "mrChipAriaLabelSingle": "合併請求 !{{mriid}},{{status}}", + "mrChipAriaLabelMulti_one": "{{count}} 個合併請求,{{status}}", + "mrChipAriaLabelMulti_other": "{{count}} 個合併請求,{{status}}", + "mrChipStatusMerged": "已合併", + "mrChipStatusClosed": "已關閉", + "mrChipStatusFailed": "流水線失敗", + "mrChipStatusDraft": "草稿", + "mrChipStatusReady": "可以合併", + "mrChipStatusAwaitingApproval": "等待批准", + "mrChipStatusRunning": "流水線執行中", + "mrChipStatusNeutral": "無流水線", + "mrChipAutoFix": "自動修復", + "mrChipAutoMerge": "自動合併", + "mrChipDrawerTitle": "合併請求 !{{mriid}}", + "mrChipDrawerDescription": "流水線狀態、審閱狀態和合並請求操作。", + "mrChipDrawerClose": "關閉合並請求狀態面板" +} diff --git a/apps/web/src/locales/zh-hk/integrations.json b/apps/web/src/locales/zh-hk/integrations.json new file mode 100644 index 0000000000..4eee4da1c5 --- /dev/null +++ b/apps/web/src/locales/zh-hk/integrations.json @@ -0,0 +1,91 @@ +{ + "addDetailsAboutThisChange": "新增有關此更改的詳細資訊…", + "allRepos": "全部儲存庫", + "anErrorOccurred": "發生錯誤", + "authenticated": "已驗證", + "authenticationFailed": "身份驗證失敗:{{error}}", + "authRequiredHeading": "需要 {{name}} 身份驗證", + "authRequiredInline": "需要 {{name}} 身份驗證。", + "branchPushedNotCreated": "分支已推送;未建立 {{shortName}}", + "branchWasPushedRetryCreation": "分支已推送;請重試建立 {{longName}}。", + "checkedRelative": "· 檢查於 {{relative}}", + "commit": "提交", + "commitChangedFiles_one": "提交 {{count}} 個已更改檔案", + "commitChangedFiles_other": "提交 {{count}} 個已更改檔案", + "commitChanges": "提交更改", + "commitChangesScoped": "提交更改;{{scopedRepo}}", + "commitsAheadAriaLabel": "領先 {{value}} 個提交", + "commitsBehindAriaLabel": "落後 {{value}} 個提交", + "committingEllipsis": "正在提交…", + "configureAUtilityAgentInSettings": "在設定中設定輔助代理程式以啓用 AI 產生", + "copiedConfigTo": "已將 {{label}} 設定複製到 {{targetName}}。", + "copyConfig": "複製設定", + "copyConfigSettingsOnly": "將 <4>{{sourceName}} 的 {{label}} 設定複製到另一個工作區。這將覆蓋目標工作區目前的 {{label}} 設定。不會複製監控與自動化。", + "copyConfigToAnotherWorkspace": "複製設定到另一個工作區", + "copyConfiguration": "複製 {{label}} 設定", + "copyConfigWithCredentials": "將 <4>{{sourceName}} 的 {{label}} 設定與認證資料複製到另一個工作區。這將覆蓋目標工作區目前的 {{label}} 設定。不會複製監控與自動化。", + "copyingConfigTo": "正在將 {{label}} 設定複製到 {{targetName}}…", + "createAsDraft": "建立為草稿", + "createdSuccessfully": "{{longName}} 建立成功", + "createFailed": "建立 {{shortName}} 失敗", + "createLongName": "建立 {{longName}}", + "createPr": "建立 PR", + "createPrCommitsAhead_one": "建立 PR(領先 {{count}} 個提交)", + "createPrCommitsAhead_other": "建立 PR(領先 {{count}} 個提交)", + "createScoped": "建立 {{longName}};{{scopedRepo}}", + "createShortName": "建立 {{shortName}}", + "creatingEllipsis": "正在建立…", + "creatingFrom": "正在從 <4>{{displayBranch}} 建立 {{shortName}}", + "creatingFromInto": "正在從 <4>{{displayBranch}} → <6>{{baseBranch}} 建立 {{shortName}}", + "deleteSavedQueryNamed": "刪除已儲存的查詢「{{label}}」", + "describeYourChanges": "描述你的更改…", + "description": "描述", + "draftCreated": "草稿 {{shortName}} 已建立", + "enableIntegrationNamed": "啓用 {{name}}", + "enterCommitMessage": "輸入提交資訊…", + "failedToCopyConfig": "複製設定失敗:{{err}}", + "failedToDeleteSavedQuery": "刪除已儲存的查詢失敗", + "failedToSaveSavedQuery": "儲存查詢失敗", + "failedToUpdateDefaultView": "更新預設視圖失敗", + "filesChanged_one": "已更改 <0>{{count}} 個檔案", + "filesChanged_other": "已更改 <0>{{count}} 個檔案", + "forcePush": "強制推送", + "fromBranch": "來自 {{branch}}", + "generateCommitDescriptionWithAi": "用 AI 產生提交描述", + "generateCommitMessageWithAi": "用 AI 產生提交資訊", + "generateDescriptionWithAi": "用 AI 產生 {{shortName}} 描述", + "generateTitleWithAi": "用 AI 產生 {{shortName}} 標題", + "loading": "載入中…", + "longNameTitle": "{{longName}} 標題", + "longNameTitlePlaceholder": "{{longName}} 標題…", + "merge": "合併", + "noChangesToCommit": "沒有可提交的更改", + "noSavedQueriesYet": "暫無已儲存的查詢", + "ontoBranch": "到 {{branch}}", + "openVcsOptions": "開啟 VCS 選項", + "pickActionThenRepo": "先選操作,再選儲存庫", + "pickARepositoryForCommit": "選擇用於提交的儲存庫", + "pickARepositoryForCreatePr": "選擇用於建立 PR 的儲存庫", + "pickARepositoryForPush": "選擇用於推送的儲存庫", + "pickARepositoryForRebase": "選擇用於變基的儲存庫", + "pull": "拉取", + "push": "推送", + "pushCommitsToRemote_one": "推送 {{count}} 個提交到遠端", + "pushCommitsToRemote_other": "推送 {{count}} 個提交到遠端", + "rebase": "變基", + "rebaseOntoBranchBehind": "變基到 {{branch}}(落後 {{behind}})", + "reconnectProvider": "重新連接 {{name}}", + "repository": "儲存庫", + "retryShortName": "重試 {{shortName}}", + "saveCurrentQuery": "儲存目前查詢", + "savedQueries": "已儲存", + "savedQueryDefaultUpdateInProgress": "正在更新預設視圖…{{action}}", + "setSavedQueryAsDefaultView": "將 {{label}} 設為預設視圖", + "clearSavedQueryAsDefaultView": "取消將 {{label}} 設為預設視圖", + "selectAWorkspace": "選擇工作區…", + "shortNameCreated": "{{shortName}} 已建立", + "stageAllChangesBeforeCommitting": "提交前暫存所有更改", + "targetWorkspace": "目標工作區", + "unknownError": "未知錯誤", + "waitingForTheNextBackendHealth": "正在等待下一次後端健康檢查…" +} diff --git a/apps/web/src/locales/zh-hk/jira.json b/apps/web/src/locales/zh-hk/jira.json new file mode 100644 index 0000000000..a09ca8b27d --- /dev/null +++ b/apps/web/src/locales/zh-hk/jira.json @@ -0,0 +1,212 @@ +{ + "aCredentialIsRequired": "必須提供認證資料。", + "actions": "操作", + "active": "活動", + "addPreset": "新增預設", + "agentProfile": "代理程式設定檔", + "aJiraSiteUrlIsRequired": "必須提供 Jira 站點 URL。", + "anEmailAddressIsRequired": "必須填寫電郵地址。", + "apiToken": "API 權杖", + "apiTokenRecommended": "API 權杖(推薦)", + "apply": "應用", + "assignee": "經辦人", + "assigneeAnyone": "任何人", + "assigneeMe": "我", + "assigneeUnassigned": "未分配", + "atlassianCloud": "Atlassian Cloud", + "atlassianJqlHelp": "Atlassian JQL。監控會輪詢此查詢,併為每個新匹配的工單建立一個任務。", + "authenticationMethod": "身份驗證方式", + "availablePlaceholders": "可用佔位符:", + "browserSessionCookie": "瀏覽器工作階段 Cookie", + "builtIn": "內置", + "capOnOpenTasksCreatedBy": "限制此監控建立的進行中任務數量。留空表示不限制。達到上限後,新匹配項會推遲到下次輪詢。", + "checkFailed": "檢查失敗:{{error}}", + "checkingJiraStatus": "正在檢查 Jira 狀態…", + "checkNow": "立即檢查", + "clear": "清除{{lowerCase}}", + "clearFilters": "清除篩選條件", + "connectedAs": "已連接為 {{name}}", + "connectThisWorkspaceToAtlassianCloud": "將此工作區連接到 Atlassian Cloud 或自託管的 Jira Server / Data Center 實例。認證資料會在伺服器端加密存儲,並僅用於所選工作區。", + "cookieExpired": "Cookie 已過期--請貼上新的 Cookie", + "cookieExpiresInDays_one": "Cookie 將在 {{count}} 天后過期", + "cookieExpiresInDays_other": "Cookie 將在 {{count}} 天后過期", + "cookieExpiresInHours_one": "Cookie 將在 {{count}} 小時後過期", + "cookieExpiresInHours_other": "Cookie 將在 {{count}} 小時後過期", + "cookieInstructions": "在 Atlassian 標籤頁中開啟開發者工具({{shortcut}})→\n應用程序標籤頁 → 存儲 → Cookie → {{host}} →\n找到名為「{{cookieName}}」的行(SSO 租户中可能名為\n「{{ssoCookieName}}」)→ 複製「值」單元格 → 貼上到下方。\n請勿包含 Cookie 名稱或任何「=」符號,只貼上權杖值。", + "create": "建立", + "createATokenAt": "在 <2>{{url}} 建立權杖", + "createFailed": "建立失敗:{{error}}", + "createJiraWatcher": "建立 Jira 監控", + "createPatNoProfileLink": "在 Jira 個人數據 → 個人存取權杖中建立個人存取權杖。所需範圍:讀取和寫入。", + "createPatWithProfileLink": "在 Jira 個人數據(<1>{{url}})→ 個人存取權杖中建立個人存取權杖。所需範圍:讀取和寫入。", + "customJqlOverridePillFiltersAre": "自訂 JQL 覆蓋--篩選膠囊已暫停。", + "defaultProjectKeyOptional": "預設項目鍵(可選)", + "delete": "刪除", + "deleteFailed": "刪除失敗:{{error}}", + "deleteThisJiraWatcher": "刪除此 Jira 監控?", + "deleteView": "刪除視圖", + "description": "描述", + "details": "詳情", + "editJiraWatcher": "編輯 Jira 監控", + "editPrompt": "編輯提示詞", + "email": "電郵地址", + "enable": "啓用", + "enabled": "已啓用", + "enterAPositiveIntegerOrLeave": "請輸入正整數或留空。", + "executorProfile": "執行器設定檔", + "expiryUnknown": "過期時間未知", + "failedToLoadJiraConfig": "載入 Jira 設定失敗:{{error}}", + "failedToSaveTaskPresets": "儲存任務預設失敗", + "fallbackTicket": "Jira 工單", + "filterDisabled": "{{label}} 篩選已停用", + "foundNewTickets_one": "發現 {{count}} 個新工單,任務即將顯示。", + "foundNewTickets_other": "發現 {{count}} 個新工單,任務即將顯示。", + "hidePrompt": "隱藏提示詞", + "hideSessionTokenHelp": "隱藏工作階段權杖複製說明", + "hint": "提示", + "hintOptional": "提示(可選)", + "howOftenToReRunThe": "重新執行 JQL 的頻率。最短 60 秒,最長 3600 秒。", + "icon": "圖標", + "import": "匯入", + "importFromJira": "從 Jira 匯入", + "importFromJiraTicketUrlOr": "從 Jira 工單 URL 或鍵匯入", + "importJiraTicket": "匯入 Jira 工單", + "initialStepForNewTasks": "新任務的初始步驟。", + "instanceType": "實例類型", + "interval": "間隔", + "intervalMinutes_one": "{{count}} 分鐘", + "intervalMinutes_other": "{{count}} 分鐘", + "jiraConfigurationRemoved": "已移除 Jira 設定", + "jiraConfigurationSaved": "已儲存 Jira 設定", + "jiraIntegration": "Jira 集成", + "jiraWatcher": "Jira 監控", + "jiraWatchers": "Jira 監控", + "jiraWatchersDescription": "輪詢 JQL 查詢,併為每個新匹配的工單自動建立一個 Kandev 任務。", + "jqlError": "JQL 錯誤:{{error}}", + "jqlIsGeneratedFromThePills": "JQL 由上方篩選膠囊產生。編輯可覆蓋。", + "label": "標籤", + "lastPolled": "上次輪詢", + "loading": "載入中…", + "loading2": "載入中…", + "loadingTicket": "正在載入工單…", + "matchedTickets_one": "本頁匹配 {{count}} 個工單。", + "matchedTickets_other": "本頁匹配 {{count}} 個工單。", + "maxInFlightTasks": "最大進行中任務數", + "myOpenBugs": "我的未解決缺陷", + "never": "從不", + "newWatcher": "新建監控", + "noCap": "(不限制)", + "noDescription": "暫無描述。", + "noJiraWatchersConfiguredCreateOne": "尚未設定 Jira 監控。建立一個監控,即可根據 JQL 查詢自動建立任務。", + "noNewTicketsMatched": "沒有匹配的新工單。", + "noProjectsMatch": "無匹配項目。", + "noResults": "無結果", + "noStatusesForProject": "所選項目沒有可用狀態", + "noStatusesMatch": "無匹配狀態。", + "notConfiguredNotice": "尚未設定 Jira。<2>設定 Jira 以在此查看工單。", + "noTicketsFound": "未找到工單。", + "noView": "無視圖", + "openInAtlassian": "在 Atlassian 中開啟", + "openJiraTicket": "開啟 Jira 工單", + "openTicketDetails": "開啟工單詳情", + "optionalFallsBackToStepDefault": "可選--留空時使用步驟預設值。", + "pageNumber": "第 {{page}} 頁", + "pasteAJiraTicketUrlOr": "貼上 Jira 工單 URL 或鍵(PROJ-123)", + "pasteApiTokenHere": "在此貼上 API 權杖", + "pasteATokenToTestTheConnection": "貼上權杖以測試連接", + "pastePersonalAccessTokenHere": "在此貼上個人存取權杖", + "pasteSessionTokenValue": "貼上 {{cookieName}} 值", + "pause": "暫停", + "paused": "已暫停", + "pauseOrResumePolling": "暫停或恢復輪詢。", + "personalAccessToken": "個人存取權杖", + "placeholderAssigneeDisplayName": "經辦人顯示名稱", + "placeholderIssueType": "問題類型", + "placeholderPriority": "優先級", + "placeholderProjectKey": "項目鍵", + "placeholderReporterDisplayName": "報告者顯示名稱", + "placeholderStatusName": "狀態名稱", + "placeholderTicketDescription": "工單描述", + "placeholderTicketKey": "工單鍵", + "placeholderTicketSummary": "工單摘要", + "placeholderTicketUrl": "工單 URL", + "pollIntervalSeconds": "輪詢間隔(秒)", + "presetIconBug": "缺陷", + "presetIconCheck": "勾選", + "presetIconCode": "程式碼", + "presetIconEye": "眼睛", + "presetIconMessage": "訊息", + "presetIconSearch": "搜尋", + "presetIconSparkle": "閃光", + "presetIconTool": "工具", + "presetPlaceholderTicketDescription": "工單描述", + "presetPlaceholderTicketKey": "Jira 工單鍵", + "presetPlaceholderTicketSummary": "工單摘要", + "presetPlaceholderTicketUrl": "Jira 工單的 URL", + "presetPromptPlaceholderHelp": "輸入 {{token}} 可查看可用佔位符。執行操作時會替換 <4>{{key}}、<7>{{url}}、<10>{{title}} 和 <13>{{description}}。", + "proj123OrPasteTicketUrl": "PROJ-123 或貼上工單 URL", + "project": "項目", + "promptFieldHelp": "為每個新工單傳送給代理程式的提示詞。輸入 {{token}} 可插入佔位符。", + "refresh": "刷新", + "remove": "移除", + "removeConfiguration": "移除設定", + "removeJiraConfiguration": "移除 Jira 設定?", + "reporter": "報告者", + "resetCompleteDeletedTasks_one": "重置完成--已刪除 {{count}} 個任務;下次輪詢將重新匯入匹配項。", + "resetCompleteDeletedTasks_other": "重置完成--已刪除 {{count}} 個任務;下次輪詢將重新匯入匹配項。", + "resetCompleteNoTasksDeleted": "重置完成--下次輪詢將重新匯入匹配項。", + "resetFailed": "重置失敗:{{error}}", + "resetToPills": "重置為篩選膠囊", + "resetWatch": "重置監控", + "saveCurrentFiltersAs": "將目前篩選條件另存為…", + "saveCurrentFiltersAsAView": "將目前篩選條件儲存為視圖", + "saved": "已儲存", + "savedLeaveBlank": "(已儲存--留空可保持目前值)", + "saveFailed": "儲存失敗:{{error}}", + "saveView": "儲存視圖", + "saving": "正在儲存…", + "searchProjects": "搜尋項目…", + "searchStatuses": "搜尋狀態…", + "searchTicketKeyOrText": "搜尋工單鍵或文字…", + "selectProjectToFilterStatus": "選擇項目以按狀態篩選", + "selectWorkflow": "選擇工作流程", + "selectWorkspace": "選擇工作區", + "selfHostedJiraServerOrDataCenter": "自託管 Jira(Server 或 Data Center)。", + "serverDataCenter": "Server / Data Center", + "sessionTokenValue": "工作階段權杖值", + "showSessionTokenHelp": "顯示工作階段權杖複製說明", + "sitesHostedAt": "託管在 {{domain}} 的站點。", + "siteUrl": "站點 URL", + "sortCreated": "建立時間", + "sortLabelled": "排序:{{label}}", + "sortPriority": "優先級", + "sortUpdated": "更新時間", + "startTask": "啓動任務", + "taskPresets": "任務預設", + "taskPresetsDescription": "從工單啓動任務時,在 {{route}} 上顯示的提示詞。", + "taskPresetsSaved": "已儲存任務預設", + "taskPrompt": "任務提示詞", + "tasksAreCreatedInThisWorkflow": "任務將在此工作流程中建立。", + "tasksCreatedByThisWatcherLand": "此監控建立的任務會進入所選工作區。", + "testConnection": "測試連接", + "testFailed": "失敗:{{error}}", + "testingConnection": "正在測試…", + "testingJql": "正在測試…", + "testJql": "測試 JQL", + "ticketOnThisPage_one": "本頁 {{count}} 個工單", + "ticketOnThisPage_other": "本頁 {{count}} 個工單", + "ticketsAcrossYourAtlassianProjects": "你 Atlassian 項目中的工單。", + "toggleRawJqlEditor": "切換原始 JQL 編輯器", + "unassigned": "未分配", + "update": "更新", + "updatedAgo": "· 更新於 {{time}}", + "updatedTime": "更新於 {{time}}", + "updateFailed": "更新失敗:{{error}}", + "watchDialogDescription": "輪詢 JQL 查詢,併為每個新匹配的工單自動建立一個 Kandev 任務。可以綁定儲存庫,讓每個任務在該程式碼庫中執行;也可以留空,讓任務在無儲存庫的情況下執行。", + "watcherCreated": "已建立監控", + "watcherDeleted": "已刪除監控", + "watcherUpdated": "已更新監控", + "workflow": "工作流程", + "workflowStep": "工作流程步驟", + "yourJiraSessionExpiredOrNeeds": "你的 Jira 工作階段已過期或需要二次驗證。請重新連接以查看此工單。" +} diff --git a/apps/web/src/locales/zh-hk/kanban.json b/apps/web/src/locales/zh-hk/kanban.json new file mode 100644 index 0000000000..50771d4591 --- /dev/null +++ b/apps/web/src/locales/zh-hk/kanban.json @@ -0,0 +1,95 @@ +{ + "addRepositoryPullRequestSessionParent": "在列表行中新增儲存庫、拉取要求、工作階段、父任務與審閱上下文。", + "addTask": "新增任務", + "allRepositories": "全部儲存庫", + "allWorkflows": "全部工作流程", + "allWorkflowsTitleCase": "全部工作流程", + "allWorkspaces": "所有工作區", + "approvalRequired": "需要審批", + "archive": "歸檔", + "archiveCount_one": "歸檔 {{count}} 項", + "archiveCount_other": "歸檔 {{count}} 項", + "archiveTask": "歸檔任務", + "autoStart": "自動啓動", + "boardNavigator": "看板導航", + "cannotMoveTasksFromDifferentWorkflows": "無法移動來自不同工作流程的任務", + "changesRequested": "已請求更改", + "chooseHowTasksAreOrderedIn": "選擇此列表中任務的排序方式。", + "chooseStep": "{{stepLabel}}。選擇步驟。", + "chooseWorkflowAndStepShownOn": "選擇看板上顯示的工作流程與步驟。", + "chooseWorkflowOrStep": "{{name}},{{stepLabel}}。選擇工作流程或步驟。", + "clearSelection": "清除選擇", + "closePreview": "關閉預覽", + "current": "目前", + "delete": "刪除", + "deleteCount_one": "刪除 {{count}} 項", + "deleteCount_other": "刪除 {{count}} 項", + "deleteTask": "刪除任務", + "detachFromParent": "從父任務分離", + "dismiss": "關閉", + "displayOptions": "顯示選項", + "dropOnAColumnToMove": "拖放到列上以移動任務", + "githubIssue": "GitHub 議題", + "githubPullRequest": "GitHub 拉取要求", + "gitlabMergeRequest": "GitLab 合併請求", + "goToTask": "轉到任務", + "group": "分組", + "groupTasksIntoSectionsByState": "按狀態、工作流程、儲存庫或無分組將任務歸入分區。", + "healthIssues": "健康問題", + "improveKandev": "改進 Kandev", + "jiraTicket": "Jira 工單", + "kanban": "看板", + "kandevHome": "Kandev 主頁", + "linearIssue": "Linear 議題", + "link": "連結", + "list": "列表", + "listRows": "列表行", + "loadingRepositories": "正在載入儲存庫…", + "menu": "菜單", + "moreOptions": "更多選項", + "moveTo": "移動到", + "multiSelect": "多選", + "nextCapacity": "下一容量", + "nextStep": "下一步", + "noRepositories": "無儲存庫", + "noSteps": "無步驟", + "noStepsConfigured": "未設定步驟。", + "noStepsConfiguredChooseAnotherWorkflow": "未設定步驟。請選擇其他工作流程,或在設定中新增步驟。", + "noTasks": "無任務", + "openMenu": "開啟菜單", + "openMenuWithStatus": "{{description}} 開啟菜單", + "openPreviewOnClick": "點擊時開啟預覽", + "overWipLimit": "超出 WIP 限制", + "pipeline": "流水線", + "previewPanel": "預覽面板", + "previousStep": "上一步", + "queuedForStep": "已排隊等待 {{step}}", + "repository": "儲存庫", + "searchPlaceholder": "搜尋…", + "searchSection": "搜尋", + "searchTasks": "搜尋任務", + "searchTasksPlaceholder": "搜尋任務…", + "selectRepository": "選擇儲存庫", + "selectTask": "選擇任務 {{title}}", + "selectWorkflow": "選擇工作流程", + "sendToWorkflow": "傳送到工作流程", + "sentryIssue": "Sentry 議題", + "sessionCount_one": "{{count}} 個工作階段", + "sessionCount_other": "{{count}} 個工作階段", + "showArchived": "顯示已歸檔", + "showTaskDetails": "顯示任務詳情", + "sort": "排序", + "step": "步驟", + "subtaskOf": "子任務,父任務為", + "taskList": "任務列表", + "tasksOverWipLimit": "{{label}} 個任務,超出 WIP 限制", + "theseOptionsAffectThisTaskList": "這些選項僅影響此任務列表。", + "utilities": "實用工具", + "view": "視圖", + "whenEnabledClickingATaskOpens": "啓用後,點擊任務會開啟預覽面板;停用後,點擊會直接進入工作階段。", + "wipTaskCount": "{{label}} 個任務", + "workflow": "工作流程", + "workflowStepFallback": "工作流程步驟 {{stepId}}", + "columns": "列", + "columnsForWorkflow": "{{name}} 的列" +} diff --git a/apps/web/src/locales/zh-hk/linear.json b/apps/web/src/locales/zh-hk/linear.json new file mode 100644 index 0000000000..49b9147662 --- /dev/null +++ b/apps/web/src/locales/zh-hk/linear.json @@ -0,0 +1,174 @@ +{ + "actions": "操作", + "active": "活動", + "agentProfile": "代理程式設定檔", + "allTeams": "全部團隊", + "anApiKeyIsRequired": "必須提供 API 密鑰。", + "any": "(任意)", + "anyAssignee": "任意經辦人", + "anyTeam": "(任意團隊)", + "apiKey": "API 密鑰", + "assignedToMe": "分配給我", + "assignee": "經辦人", + "assigneeHelp": "按議題分配給誰進行篩選。", + "availablePlaceholders": "可用佔位符:", + "checkFailed": "檢查失敗:{{error}}", + "checkNow": "立即檢查", + "chooseATeam": "選擇團隊", + "configurationRemoved": "已移除 Linear 設定", + "configurationSaved": "已儲存 Linear 設定", + "connectedAs": "已連接為 {{name}}", + "connectedAsWithOrg": "已連接為 {{name}}({{org}})", + "create": "建立", + "createFailed": "建立失敗:{{error}}", + "createLinearWatcher": "建立 Linear 監控", + "createPersonalApiKeyAt": "建立個人 API 密鑰:", + "creator": "建立者", + "creatorHelp": "匹配由某位用戶建立的議題。", + "defaultTeamOptional": "預設團隊(可選)", + "delete": "刪除", + "deleteFailed": "刪除失敗:{{error}}", + "deleteThisLinearWatcher": "刪除此 Linear 監控?", + "description": "描述", + "details": "詳情", + "dispatchOrder": "分派順序", + "dispatchOrderHelp": "達到進行中任務上限後,將按此順序分派議題,以便最重要的議題優先執行。", + "editLinearWatcher": "編輯 Linear 監控", + "enable": "啓用", + "enabled": "已啓用", + "enabledHelp": "暫停或恢復輪詢。", + "eng123OrPasteIssueUrl": "ENG-123 或貼上議題 URL", + "enterAPositiveIntegerOrBlank": "請輸入正整數或留空。", + "estimateMax": "最大估算值", + "estimateMaxHelp": "點數上限(可選)。", + "estimateMaxPlaceholder": "例如 5", + "estimateMin": "最小估算值", + "estimateMinHelp": "點數下限(可選)。", + "estimateMinPlaceholder": "例如 1", + "executorProfile": "執行器設定檔", + "failedToLoadConfig": "載入 Linear 設定失敗:{{error}}", + "fallbackIssue": "Linear 議題", + "fallsBackToStepDefault": "可選--留空時使用步驟預設值。", + "filter": "篩選條件", + "foundNewIssues_one": "發現 {{count}} 個新議題,任務即將顯示。", + "foundNewIssues_other": "發現 {{count}} 個新議題,任務即將顯示。", + "import": "匯入", + "importFromLinear": "從 Linear 匯入", + "importFromLinearIssueUrlOr": "從 Linear 議題 URL 或標識符匯入", + "importLinearIssue": "匯入 Linear 議題", + "integrationDisabled": "Linear 集成已停用。", + "interval": "間隔", + "intervalMinutes_one": "{{count}} 分鐘", + "intervalMinutes_other": "{{count}} 分鐘", + "labels": "標籤", + "labelsHelp": "單擊可切換。匹配包含任意一個所選標籤的議題。", + "labelsHelpNoTeam": "請先選擇團隊,再選擇具體標籤。", + "lastPolled": "上次輪詢", + "linearIntegration": "Linear 集成", + "linearIntegrationDescription": "使用個人 API 密鑰將此工作區連接到 Linear。認證資料會在伺服器端加密存儲,並僅用於所選工作區。", + "linearWatcher": "Linear 監控", + "linearWatchers": "Linear 監控", + "linearWatchersDescription": "輪詢 Linear 篩選條件,併為每個新匹配的議題自動建立一個 Kandev 任務。", + "loading": "載入中…", + "loadingEllipsis": "正在載入…", + "loadingIssue": "正在載入議題…", + "loadingIssues": "正在載入議題…", + "loadingLabels": "正在載入標籤…", + "loadingStates": "正在載入狀態…", + "loadingTeams": "正在載入團隊…", + "maxInflightTasks": "最大進行中任務數", + "maxInflightTasksHelp": "限制此監控建立的進行中任務數量。留空表示不限制。達到上限後,新匹配項會推遲到下次輪詢。", + "me": "我", + "never": "從不", + "newWatcher": "新建監控", + "noCap": "(不限制)", + "noDefault": "無預設值", + "noDescription": "無描述。", + "noIssuesMatchYourFilters": "沒有與篩選條件匹配的議題。", + "noLabelsAvailableForThisTeam": "此團隊沒有可用標籤。", + "noLinearWatchersConfiguredCreateOne": "尚未設定 Linear 監控。建立一個監控後,即可根據篩選的議題自動建立任務。", + "noNewIssuesMatched": "沒有匹配的新議題。", + "noResults": "無結果", + "notConfiguredNotice": "未設定 Linear。<2>設定 Linear 後即可在此查看你的議題。", + "noWorkflowStatesAvailable": "沒有可用的工作流程狀態。", + "openInLinear": "在 Linear 中開啟", + "openIssueDetails": "開啟議題詳情", + "openLinearIssue": "開啟 Linear 議題", + "page": "頁面", + "pasteALinearIssueUrlOr": "貼上 Linear 議題 URL 或標識符(ENG-123)", + "pasteAnApiKeyToTest": "貼上 API 密鑰以測試連接", + "pause": "暫停", + "paused": "已暫停", + "pickATeamFirst": "請先選擇團隊", + "placeholderAssigneeDisplayName": "經辦人顯示名稱", + "placeholderCreatorDisplayName": "議題建立者顯示名稱", + "placeholderIssueDescription": "議題描述正文", + "placeholderIssueIdentifier": "議題標識符", + "placeholderIssueTitle": "議題標題", + "placeholderIssueUrl": "Linear 議題 URL", + "placeholderPriorityLabel": "優先級標籤", + "placeholderTeamKey": "團隊鍵", + "placeholderWorkflowStateName": "工作流程狀態名稱", + "pollIntervalHelp": "重新執行搜尋的頻率。最短 60 秒,最長 3600 秒。", + "pollIntervalSeconds": "輪詢間隔(秒)", + "priority": "優先級", + "priorityHelp": "單擊可切換。匹配任意一個所選優先級的議題。", + "priorityHigh": "高", + "priorityLow": "低", + "priorityMedium": "中", + "priorityNone": "無優先級", + "priorityUrgent": "緊急", + "promptFieldHelp": "為每個新議題傳送給代理程式的提示詞。輸入 {{token}} 可插入佔位符。", + "query": "查詢", + "queryHelp": "在標題和描述中做自由文字匹配(可選)。", + "queryPlaceholder": "身份驗證缺陷", + "reEnableItInSettings": "在設定中重新啓用", + "refresh": "刷新", + "removeConfiguration": "移除設定", + "removeLinearConfigurationConfirm": "移除 Linear 設定?", + "resetCompleteDeletedTasks_one": "重置完成--已刪除 {{count}} 個任務;下次輪詢將重新匯入匹配項。", + "resetCompleteDeletedTasks_other": "重置完成--已刪除 {{count}} 個任務;下次輪詢將重新匯入匹配項。", + "resetCompleteNoTasksDeleted": "重置完成--下次輪詢將重新匯入匹配項。", + "resetFailed": "重置失敗:{{error}}", + "resetWatch": "重置監控", + "savedLeaveBlank": "(已儲存--留空可保持目前值)", + "saveFailed": "儲存失敗:{{error}}", + "saving": "正在儲存…", + "searchByIdTitleOrDescription": "按 ID、標題或描述搜尋", + "selectWorkflow": "選擇工作流程", + "selectWorkspace": "選擇工作區", + "sortCreatedAsc": "建立時間(最早優先)", + "sortCreatedDesc": "建立時間(最新優先)", + "sortDefault": "預設(Linear 順序)", + "sortPriorityAsc": "優先級(從低到高)", + "sortPriorityDesc": "優先級(從高到低)", + "sortUpdatedAsc": "更新時間(最早更新優先)", + "sortUpdatedDesc": "更新時間(最近更新優先)", + "startTask": "開始任務", + "states": "狀態", + "statesHelp": "單擊狀態可切換。未選擇時匹配團隊中的所有狀態。", + "statesHelpNoTeam": "請先選擇團隊,再選擇具體工作流程狀態。", + "taskPrompt": "任務提示詞", + "team": "團隊", + "teamHelp": "將匹配範圍限制為一個團隊。", + "testConnection": "測試連接", + "testFailed": "失敗:{{error}}", + "testing": "正在測試…", + "unassigned": "未分配", + "unknownAccount": "未知帳戶", + "unknownError": "未知錯誤", + "update": "更新", + "updatedAgo": "· 更新於 {{time}}", + "updatedTime": "更新於 {{time}}", + "updateFailed": "更新失敗:{{error}}", + "watchDialogDescription": "使用結構化篩選條件輪詢 Linear,併為每個新匹配的議題自動建立一個 Kandev 任務。可以綁定儲存庫,讓每個任務在該程式碼庫中執行;也可以留空,讓任務在無儲存庫的情況下執行。", + "watcherCreated": "已建立監控", + "watcherDeleted": "已刪除監控", + "watcherUpdated": "已更新監控", + "workflow": "工作流程", + "workflowHelp": "任務將在此工作流程中建立。", + "workflowStep": "工作流程步驟", + "workflowStepHelp": "新任務的初始步驟。", + "workspaceHelp": "此監控建立的任務會進入所選工作區。", + "yourLinearApiKeyIsInvalid": "你的 Linear API 密鑰無效或已吊銷。請重新連接以查看此議題。" +} diff --git a/apps/web/src/locales/zh-hk/lsp.json b/apps/web/src/locales/zh-hk/lsp.json new file mode 100644 index 0000000000..6468480cc3 --- /dev/null +++ b/apps/web/src/locales/zh-hk/lsp.json @@ -0,0 +1,78 @@ +{ + "activeWorkItems_one": "{{count}} 個工作項正在進行", + "activeWorkItems_other": "{{count}} 個工作項正在進行", + "applicationStatusBar": "應用狀態欄", + "applicationStatusBarDescription": "在可重新排序的應用狀態欄中顯示 LSP 狀態。如果該狀態欄已停用或目前為觸控佈局,則改用編輯器工具欄。", + "autoInstallUnsupported": "此任務主機不支援自動安裝", + "chooseStatusLocation": "選擇 LSP 啓動、索引和連接詳情的顯示位置。", + "closeLanguageServerStatus": "關閉語言伺服器狀態", + "connected": "已連接", + "connecting": "正在連接", + "connection": "連接", + "connectionAndProjectAnalysis": "連接和項目分析", + "connectionClosed": "連接已關閉", + "crossFileDefinitionsMayBeIncomplete": "此工作進行期間,跨檔案定義和引用可能不完整。", + "crossFileFeaturesAfterInitialization": "初始化完成後即可使用跨檔案功能。", + "crossFileFeaturesUnavailable": "初始化完成前,跨檔案功能仍不可用。", + "editorToolbar": "編輯器工具欄", + "editorToolbarDescription": "在目前檔案的編輯器操作旁顯示 LSP 狀態。", + "elapsed": "已用時間 {{elapsed}}", + "elapsedDurationParts": "{{major}} {{minor}}", + "elapsedHours_one": "{{value}} 小時", + "elapsedHours_other": "{{value}} 小時", + "elapsedMinutes_one": "{{value}} 分鐘", + "elapsedMinutes_other": "{{value}} 分鐘", + "elapsedSeconds_one": "{{value}} 秒", + "elapsedSeconds_other": "{{value}} 秒", + "enableAutoInstall": "在「設定」→「編輯器」中啓用自動安裝。", + "error": "錯誤", + "initializationLongRunning": "初始化所需時間比平常更長", + "installFailed": "安裝失敗", + "installKotlinLsp": "請在任務主機上安裝 kotlin-lsp,然後重啓任務。", + "installLanguageServerManually": "請在任務主機上手動安裝語言伺服器,然後重試。", + "installingLanguageServer": "正在安裝語言伺服器", + "kotlinInitializationGuidance": "Kotlin LSP 可能正在匯入 Gradle 項目。初始化完成前,跨檔案功能仍不可用。", + "languageServer": "語言伺服器", + "languageServerConnection": "語言伺服器:{{summary}}", + "languageServerDescription": "{{language}} 語言伺服器:{{summary}}", + "languageServerError": "LSP 錯誤", + "languageServerExited": "語言伺服器已退出", + "languageServerFailedToStart": "語言伺服器啓動失敗", + "languageServerIsOff": "語言伺服器已關閉", + "languageServerNotFound": "未找到語言伺服器", + "languageServerOpenStatus": "語言伺服器:{{summary}}。開啟狀態", + "languageServerStatus": "語言伺服器狀態", + "languageServerUnavailable": "語言伺服器不可用", + "noActiveWorkspace": "沒有活動工作區", + "noBackgroundWorkReported": "未報告後台工作", + "noBackgroundWorkReportedDescription": "語言伺服器尚未報告正在進行的項目分析。跨檔案結果可能仍在準備中。", + "noPercentage": "伺服器未提供百分比。", + "off": "關閉", + "openStatus": "{{description}}。開啟狀態", + "progressAppearsDuringInitialization": "語言伺服器開始初始化後會顯示項目進度。", + "progressPercentage": "{{title}}:{{percentage}}%", + "progressUnavailable": "項目進度不可用", + "progressUnavailableDescription": "請重試連接以接收項目進度。", + "progressWillClear": "語言伺服器停止後,項目進度將被清除。", + "projectAnalysis": "項目分析", + "reportedWorkDisclaimer": "這僅確認已報告的工作項完成,並不表示整個項目已完成索引。", + "retryLanguageServer": "重試語言伺服器", + "serverProcessStarted": "伺服器程序已啓動", + "serverStillInitializing": "伺服器程序仍在執行,Kandev 正在等待 LSP 初始化。", + "serverWorkFinished": "伺服器報告的工作已完成", + "startLanguageServer": "啓動語言伺服器", + "startServerForProgress": "啓動語言伺服器以接收項目進度。", + "startingLanguageServer": "正在啓動語言伺服器", + "statusLocation": "狀態位置", + "statusLocationAria": "LSP 狀態位置", + "stopLanguageServer": "停止語言伺服器", + "stopping": "正在停止", + "stoppingLanguageServer": "正在停止語言伺服器", + "taskExecutorUnsupported": "此任務執行器不支援語言伺服器", + "thisMayTakeAMoment": "這可能需要一點時間…", + "tooManyLanguageServers": "活動的語言伺服器過多", + "unavailable": "不可用", + "waitingForInitializeResponse": "正在等待語言伺服器回應 LSP 初始化請求。", + "waitingForLanguageServer": "正在等待語言伺服器", + "webSocketError": "WebSocket 錯誤" +} diff --git a/apps/web/src/locales/zh-hk/office.json b/apps/web/src/locales/zh-hk/office.json new file mode 100644 index 0000000000..53eabac495 --- /dev/null +++ b/apps/web/src/locales/zh-hk/office.json @@ -0,0 +1,898 @@ +{ + "aCronScheduleExample": "Cron 計劃(例如 <1>{{cron}} 表示工作日上午 9 點)", + "actionOnExceed": "超出時的操作", + "actions": "操作", + "actionsByAgentsAndUsersAre": "代理程式與用戶的操作會記錄在此。", + "actionValue": "操作:{{action}}", + "activeAgents": "活動代理程式", + "activeSessionCount_one": "{{count}} 個活動工作階段", + "activeSessionCount_other": "{{count}} 個活動工作階段", + "activity": "活動", + "activityFilterAll": "全部類型", + "activityFilterBudget": "預算", + "activityFilterTask": "任務", + "activityStatusChangedTo": "狀態已更改為 {{status}}", + "adapter": "適配器", + "add": "新增", + "addADescription": "新增描述…", + "addApprover": "新增審批人", + "addApprovers": "新增審批人", + "addAsLocalPath": "新增為本地路徑", + "addAsRemoteUrl": "新增為遠端 URL", + "addATitleToCreateATask": "新增標題以建立任務", + "addChannel": "新增渠道", + "addCustom": "新增自訂", + "addDescription": "新增描述…", + "addPolicy": "新增策略", + "addProvider": "新增提供者…", + "addRepository": "新增儲存庫", + "addReviewer": "新增審閱人", + "addReviewers": "新增審閱人", + "addToOrder": "加入順序", + "advanced": "高級", + "agent": "代理程式", + "agentAutoPaused": "代理程式已自動暫停", + "agentAwaitingApproval": "代理程式等待審批", + "agentConfigurationUpdated": "代理程式設定檔已更新", + "agentCount_one": "{{count}} 個代理程式", + "agentCount_other": "{{count}} 個代理程式", + "agentCreated": "代理程式已建立", + "agentCreatedSkillsMustBeApproved": "代理程式建立的技能須經批准後才能啓用", + "agentError": "代理程式錯誤", + "agentFinishedWorkspaceReadyForReview": "代理程式已完成;工作區可供審閱", + "agentIsActivelyWorkingOnThis": "代理程式正在處理此任務", + "agentIsWorkingMessageWillBe": "代理程式工作中…訊息將排隊", + "agentName": "代理程式名稱", + "agentNotFound": "未找到代理程式。", + "agentRecentTasks": "最近任務", + "agentRunActivity": "執行活動", + "agentRunFailed": "代理程式執行失敗", + "agents": "代理程式", + "agentSections": "代理程式分區", + "agentsEnabled": "已啓用代理程式", + "agentSessionEnded": "代理程式工作階段已結束", + "agentsInheritThisTierUnlessThey": "代理程式繼承此層級,除非自行覆蓋。每個路由提供者都必須將此層級映射到一個模型。", + "agentsThatHaveThisSkillAssigned": "已分配此技能的代理程式", + "agentSuccessRate": "成功率", + "agentThatPicksUpRunsTriggered": "接收此例行程序觸發執行的代理程式", + "agentTierProfiles": "代理程式層級設定", + "agentUpdated": "代理程式已更新", + "agentWillUseThisStarterTask": "{{name}} 將使用此啓動任務檢查儲存庫、組建團隊,並提出下一步工作供審批。", + "agentWorkedForSeconds": "{{agent}} 工作了 {{seconds}} 秒", + "agentWorkedForSecondsRanCommands_one": "{{agent}} 工作了 {{seconds}} 秒 · 執行了 {{count}} 條命令", + "agentWorkedForSecondsRanCommands_other": "{{agent}} 工作了 {{seconds}} 秒 · 執行了 {{count}} 條命令", + "agentWorkingForSeconds": "{{agent}} 工作中({{seconds}} 秒)", + "agentWorkingForSecondsRanCommands_one": "{{agent}} 工作中({{seconds}} 秒)· 已執行 {{count}} 條命令", + "agentWorkingForSecondsRanCommands_other": "{{agent}} 工作中({{seconds}} 秒)· 已執行 {{count}} 條命令", + "alertPercent": "告警:{{percent}}%", + "alertThreshold": "告警閾值(%)", + "all": "全部", + "allClear": "一切正常。", + "allMemoryCleared": "全部記憶已清除", + "allProvidersHealthy": "所有提供者均正常。", + "alwaysCreate": "始終建立", + "aNameEGDailyStandup": "名稱(例如「每日站會」)", + "aNameForYourWorkspaceYou": "工作區名稱。之後可以更改。", + "appearance": "外觀", + "appearanceSettingsSaved": "外觀設定已儲存", + "applying": "正在應用…", + "applyOnDiskYamlFilesTo": "將磁碟上的 YAML 檔案應用到數據庫。", + "approval": "審批", + "approvalsAlertsAndItemsNeedingYour": "審批、告警以及需要你關注的事項會顯示在此。", + "approve": "批准", + "approved": "已批准", + "approver": "審批人", + "asc": "升序", + "aSkillWithThisNameAlready": "已存在同名技能", + "assembledPrompt": "組裝後的提示詞", + "assignATaskToThisAgent": "向此代理程式分配任務以查看執行歷史。", + "assignee": "負責人", + "aTaskTitleDescriptionWhatThe": "任務標題 + 描述(代理程式每次執行應執行的內容)", + "aUniqueNameForThisAgent": "此代理程式的唯一名稱(例如 CEO、前端工作者)", + "autoCommitAfterApproval": "批准後自動提交", + "automaticProviderFallback": "提供者自動後備", + "backToTasks": "返回任務", + "barTotal": "{{label}}:{{total}}", + "beingWorkedOn": "處理中", + "beyondThisCountMissedTicksAre": "超過此數量後,錯過的觸發會被丟棄(預設 25)", + "blockedActionRequired": "已阻塞;需要操作", + "blockNewTasks": "阻止新任務", + "boardView": "看板視圖", + "botTokenChatId": "{\"bot_token\": \"...\", \"chat_id\": \"...\"}", + "branch": "分支", + "browseSkillsSh": "瀏覽 skills.sh", + "budgetActionBlockNewTasks": "阻止新任務", + "budgetActionNotifyOnly": "僅通知", + "budgetActionPauseAgent": "暫停代理程式", + "budgetAlert": "預算告警", + "budgetAmount": "預算:{{amount}}", + "budgetCapConcurrencyAndExecutionEnvironment": "預算上限、併發與執行環境。", + "budgetLimitsConcurrencyAndExecutionEnvironment": "預算限制、併發與執行環境。", + "budgetPeriodMonthly": "每月", + "budgetPeriodTotal": "總計", + "budgetPolicies": "預算策略", + "budgetPolicyCreated": "預算策略已建立", + "budgetPolicyDeleted": "預算策略已刪除", + "budgets": "預算", + "bundledWithKandev": "隨 Kandev 捆綁", + "bundledWithKandevVersion": "隨 Kandev v{{version}} 捆綁", + "byAgent": "按代理程式", + "byModel": "按模型", + "byProject": "按項目", + "byProvider": "按提供者", + "cached": "已快取:", + "cachedTokens": "快取權杖", + "cancelReasonAssigneeChanged": "負責人已更改", + "cancelReasonReviewParticipantChanged": "審閱人已更改", + "cancelReasonTaskNotFound": "未找到任務", + "cancelReasonTaskTerminal": "任務已完成", + "capabilities": "能力", + "capabilityCreateAgent": "建立代理程式", + "capabilityCreateSubtask": "建立子任務", + "capabilityDeleteSkills": "刪除技能", + "capabilityListSkills": "列出技能", + "capabilityModifyAgents": "修改代理程式", + "capabilityPostComment": "發表評論", + "capabilityReadMemory": "讀取記憶", + "capabilityRequestApproval": "請求審批", + "capabilitySpawnAgentRun": "啓動執行", + "capabilityUpdateTaskStatus": "更新任務狀態", + "capabilityWriteMemory": "寫入記憶", + "catchUpMax": "追趕上限", + "catchUpPolicy": "追趕策略", + "ceoManagesOtherAgentsWorkersExecute": "CEO 管理其他代理程式,工作者執行任務", + "changesPushed": "更改已推送", + "channelAdded": "渠道已新增", + "channelDeleted": "渠道已刪除", + "chooseTheProfileFamilyOfficeShould": "選擇辦公室在代理程式被分配 Frontier、Balanced 或 Economy 工作時使用的設定系列。", + "clearAll": "全部清除", + "clearAllMemory": "清除全部記憶?", + "clearFilters": "清除篩選", + "cliAgentProfile": "CLI 代理程式設定檔", + "clickToOpenRoutines": "點擊開啟例行程序。", + "clone": "複製", + "cloneFailed": "複製失敗", + "cloning": "正在複製…", + "coalesce": "合併", + "coalesceIfActive": "活動時合併", + "collapse": "摺疊", + "color": "顏色", + "comingSoonOnlyLocalIsSupported": "即將推出;目前僅支援本地。", + "commitMessage": "提交說明", + "compareWorkspaceDatabaseWithOnDisk": "比較工作區數據庫與磁碟上的設定檔。", + "concurrency": "併發", + "concurrencyPolicy": "併發策略", + "configJson": "設定(JSON)", + "configuration": "設定", + "configure": "設定", + "configured": "已設定", + "configuredRouteTooltip": "來自工作區 + 代理程式覆蓋的主路由。", + "confirmTheDetailsBelowEverythingCan": "請確認以下詳情。之後均可更改。", + "connectAGitRepositoryToVersion": "連接 git 儲存庫以版本控制此工作區設定。", + "controlWhatThisAgentIsAllowed": "控制此代理程式允許執行的操作。預設值基於代理程式角色。", + "coordinatorAgent": "協調代理程式", + "copied": "已複製!", + "copySlug": "複製 slug", + "cost": "費用", + "costs": "費用", + "countAvailable_one": "{{count}} 個可用", + "countAvailable_other": "{{count}} 個可用", + "countDone_one": "{{count}} 個已完成", + "countDone_other": "{{count}} 個已完成", + "countInProgress_one": "{{count}} 個進行中", + "countInProgress_other": "{{count}} 個進行中", + "countLive_one": "{{count}} 個執行中", + "countLive_other": "{{count}} 個執行中", + "cpuCores": "CPU 核心", + "create": "建立", + "createACeoAgentToStart": "建立 CEO 代理程式,開始在各項目間編排工作。", + "createAgent": "建立代理程式", + "createAgentsAndSetTheirReporting": "建立代理程式並設定彙報結構以查看組織圖。", + "createANewCliProfile": "+ 建立新的 CLI 設定", + "createATaskOrLetAgents": "建立任務,或讓代理程式從例行程序產生。", + "createLaunch": "建立並啓動", + "createNewSkill": "建立新技能", + "createOneInline": "內聯建立一個", + "createPolicy": "建立策略", + "createProject": "建立項目", + "createRoutine": "建立例行程序", + "createSkill": "建立技能", + "createTask": "建立任務", + "createYourCoordinatorAgent": "建立協調代理程式", + "createYourFirstProject": "建立第一個項目", + "creating": "正在建立…", + "cron": "Cron", + "cronExpression": "Cron 表達式", + "cronExpressionTitleCase": "Cron 表達式", + "current": "目前", + "currentlyMapsTo": "目前映射到", + "currentRouteTooltip": "反映下次啓動的選擇。進行中的工作階段詳情見各次執行。", + "currentUtilizationOfSubscriptionRateLimit": "訂閲速率限制窗口的目前利用率。", + "dailyDepUpdate": "每日依賴更新", + "dailySuccessRate": "每日成功率", + "dangerZone": "危險區域", + "dashboard": "儀表盤", + "date": "日期", + "defaultFor": "預設用於", + "defaultForRole": "{{role}} 的預設值", + "defaultTier": "預設層級", + "defaultWorkspace": "預設工作區", + "degraded": "降級", + "delete": "刪除", + "deleteChannel": "刪除渠道", + "deleted": "已刪除 {{filename}}", + "deleteEntry": "刪除條目", + "deletePolicy": "刪除策略", + "deleteProject": "刪除項目", + "deleteWorkspace": "刪除工作區", + "deleteWorkspaceSummary": "將永久刪除 {{agents}} 個代理程式、{{tasks}} 個任務、{{skills}} 個技能以及工作區資料夾。", + "deleting": "正在刪除…", + "desc": "降序", + "description": "描述", + "directoryPath": "目錄路徑", + "dirty": "有未提交更改", + "discardDraft": "丟棄草稿", + "discord": "Discord", + "dockerImage": "Docker 鏡像", + "dockerImageExample": "例如 node:20-slim", + "dockerImageWithExample": "Docker 鏡像(例如 node:20-slim)", + "duration": "時長", + "editable": "可編輯", + "editOrgChartFromTheAgents": "從代理程式列表編輯組織圖。", + "editRoutine": "編輯例行程序", + "effectiveActionsThisAgentCanRequest": "此代理程式在辦公室執行期間可請求的有效操作。", + "eGCodeReview": "例如 code-review", + "eGFrontendWorker": "例如 Frontend Worker", + "enqueueMissedWithCap": "將錯過的加入佇列(有上限)", + "entityId": "實體 ID", + "events": "事件", + "exceeded": "已超出", + "executor": "執行器", + "executorConfiguration": "執行器設定檔", + "executorConfigurationSaved": "執行器設定檔已儲存", + "executorPreference": "執行器偏好", + "executorType": "執行器類型", + "existingConfigurationFound": "發現現有設定", + "expand": "展開", + "export": "匯出", + "exportedToFilesystem": "已匯出到檔案系統", + "exportFilesCount_one": "匯出 {{count}} 個檔案", + "exportFilesCount_other": "匯出 {{count}} 個檔案", + "exportSelectionSummary": "{{workspace}} 匯出 · 已選 {{selected}} / {{total}} 個檔案", + "exportSvg": "匯出 SVG", + "exportToFilesystem": "匯出到檔案系統", + "failed": "失敗", + "failedToAddChannel": "新增渠道失敗", + "failedToAddRepository": "新增儲存庫失敗", + "failedToApprove": "批准失敗", + "failedToClearMemory": "清除記憶失敗", + "failedToCompleteSetup": "完成設定失敗", + "failedToCreateAgent": "建立代理程式失敗", + "failedToCreateBudgetPolicy": "建立預算策略失敗", + "failedToCreateFile": "建立檔案失敗", + "failedToCreateIssue": "建立議題失敗", + "failedToCreateProject": "建立項目失敗", + "failedToCreateRoutine": "建立例行程序失敗", + "failedToCreateSkill": "建立技能失敗", + "failedToDelete": "刪除失敗", + "failedToDeleteBudgetPolicy": "刪除預算策略失敗", + "failedToDeleteChannel": "刪除渠道失敗", + "failedToDeleteMemoryEntry": "刪除記憶條目失敗", + "failedToDeleteProject": "刪除項目失敗", + "failedToDeleteRoutine": "刪除例行程序失敗", + "failedToDeleteWorkspace": "刪除工作區失敗", + "failedToExportToFilesystem": "匯出到檔案系統失敗", + "failedToImportFromFilesystem": "從檔案系統匯入失敗", + "failedToImportSettings": "匯入設定失敗", + "failedToImportSkill": "匯入技能失敗:{{msg}}", + "failedToLoad": "載入失敗", + "failedToLoadActivity": "載入活動失敗", + "failedToLoadBudgets": "載入預算失敗", + "failedToLoadChannels": "載入渠道失敗", + "failedToLoadCostData": "載入費用數據失敗", + "failedToLoadDeletionSummary": "載入刪除摘要失敗", + "failedToLoadDiffs": "載入差異失敗", + "failedToLoadExportBundle": "載入匯出包失敗", + "failedToLoadInstructions": "載入說明失敗", + "failedToLoadMemory": "載入記憶失敗", + "failedToLoadMoreTasks": "載入更多任務失敗", + "failedToLoadProject": "載入項目失敗", + "failedToLoadTask": "載入任務失敗", + "failedToLoadTasks": "載入任務失敗", + "failedToRefreshTasks": "刷新任務失敗", + "failedToRefreshUtilization": "刷新利用率失敗", + "failedToReject": "拒絕失敗", + "failedToRemoveRepository": "移除儲存庫失敗", + "failedToRunRoutine": "執行例行程序失敗", + "failedToSave": "儲存失敗", + "failedToSaveExecutorConfiguration": "儲存執行器設定檔失敗", + "failedToSaveProject": "儲存項目失敗", + "failedToSaveRoutine": "儲存例行程序失敗", + "failedToSaveSettings": "儲存設定失敗", + "failedToUpdateAgent": "更新代理程式失敗", + "failedToUpdateRoutine": "更新例行程序失敗", + "failedToUpdateSkills": "更新技能失敗", + "fallback": "後備", + "filter": "篩選", + "filterSkills": "篩選技能…", + "finished": "已完成", + "finishedAgo": "完成於 {{ago}}", + "firesNow": "即將觸發", + "firstTask": "首個任務", + "fitToScreen": "適應屏幕", + "forAgentInProject": "<0>對於 <1> <2>在 <3>", + "foundWorkspacesOnFilesystem_one": "在檔案系統上找到 {{count}} 個工作區。要匯入設定以開始嗎?", + "foundWorkspacesOnFilesystem_other": "在檔案系統上找到 {{count}} 個工作區。要匯入設定以開始嗎?", + "general": "通用", + "gitUrlsOrLocalPathsWhere": "代理程式將在此項目上工作的 Git URL 或本地路徑。", + "gitUrlsOrLocalPathsWhereShort": "代理程式工作所用的 Git URL 或本地路徑", + "giveAgentSomethingToDo": "給 {{name}} 分配一些工作", + "groupBy": "分組依據", + "healthy": "正常", + "hideApprover": "隱藏審批人", + "hideReviewer": "隱藏審閱人", + "highestUtilizationAcrossSubscriptionAgents": "訂閲代理程式中的最高利用率", + "hours": "小時", + "howAgentSessionsRunForThis": "此項目的代理程式工作階段執行方式。", + "howAgentSessionsRunInheritProject": "代理程式工作階段執行方式(繼承使用項目/工作區預設值)", + "howAgentSessionsRunInheritUses": "代理程式工作階段執行方式(繼承使用工作區預設值)", + "howFarBackToLookFor": "恢復掃描時向前查找未開始任務的時間範圍", + "howManyTasksThisAgentCan": "此代理程式可同時執行的任務數", + "identifier": "標識符", + "identity": "身份", + "importContinue": "匯入並繼續", + "importedConfigEntries": "已匯入 {{importedCount}} 條設定", + "importedFromFilesystemCreatedUpdated": "已從檔案系統匯入(建立 {{created}},更新 {{updated}})", + "importFromFilesystem": "從檔案系統匯入", + "importing": "正在匯入…", + "in": "在:", + "inbox": "收件箱", + "incomingFilesystemDatabase": "傳入(檔案系統 → 數據庫)", + "inFlight": "進行中", + "inherit": "繼承", + "inheritFromProjectWorkspace": "從項目/工作區繼承", + "inheritFromWorkspace": "從工作區繼承", + "inheritsTierFromWorkspace": "從工作區繼承 <1>{{tier}}。", + "inheritsWorkspacePolicyList": "繼承工作區策略:{{list}}。", + "inheritsWorkspacePolicyNoneSet": "繼承工作區策略(尚未設定喚醒原因層級)。", + "injectedContinuationSummary": "注入的續寫摘要", + "inProgress": "進行中", + "input": "輸入", + "inputTokens": "輸入權杖", + "inReview": "審閱中", + "instructionFileCompletionDetail": "說明檔案", + "instructionsTheAgentReceivesWhenThis": "此例行程序觸發時代理程式收到的說明", + "intended": "預期", + "itemsWaitingForYourReview": "等待你審閱的項目", + "kind": "類型", + "last14Days": "最近 14 天", + "last30Days": "最近 30 天", + "lastFired": "上次觸發:{{when}}", + "lastRun": "上次執行", + "lastRunFailedAgo": "上次執行失敗於 {{ago}}", + "lastRunNever": "從未", + "latestRun": "最近執行", + "leadAgent": "主導代理程式", + "leadAgentName": "主導:{{name}}", + "limit": "限額($)", + "linked": "已關聯", + "listView": "列表視圖", + "live": "實時", + "liveNow": "目前實時", + "loadingExportBundle": "正在載入匯出包…", + "loadingInstructions": "正在載入說明…", + "loadingProject": "正在載入項目…", + "loadingRuns": "正在載入執行…", + "loadingTasks": "正在載入任務…", + "loadMore": "載入更多", + "localDocker": "本地 Docker", + "localStandalone": "本地(獨立)", + "logo": "圖標", + "main": "main", + "manage": "管理", + "manageSkillsInCompany": "在公司中管理技能", + "mapOfficeAgentsToProvidersAnd": "將辦公室代理程式映射到提供者與層級,並控制後備。高級功能;預設關閉。", + "markFixed": "標記為已修復", + "marking": "正在標記…", + "maxConcurrent": "最大併發", + "maxConcurrentSessions": "最大併發工作階段", + "memoryEntryDeleted": "記憶條目已刪除", + "memoryIsAccumulatedAsTheAgent": "代理程式處理任務時會累積記憶。", + "memoryMb": "記憶體(MB)", + "metaKey": "鍵", + "metaMode": "模式", + "metaSource": "來源", + "mine": "我的", + "missingCount_one": "缺少 {{count}} 個", + "missingCount_other": "缺少 {{count}} 個", + "modelsUsed": "使用的模型", + "monthly": "每月", + "monthlyBudget": "月度預算($)", + "monthlySpendingLimit0Unlimited": "月度支出限額($0 = 無限制)", + "monthSpend": "本月支出", + "moreInfoAbout": "關於 {{label}} 的更多資訊", + "moreOptions": "更多選項", + "moveDown": "下移", + "moveUp": "上移", + "name": "名稱", + "nameRoleAndReportingStructureFor": "此代理程式的名稱、角色與彙報結構。", + "needsAction": "需要操作", + "never": "從未", + "neverRun": "從未執行", + "newAgent": "新建代理程式", + "newAgentHiresMustBeApproved": "新僱傭的代理程式須經批准後才能啓用", + "newAgentsMatchingTheseRolesGet": "匹配這些角色的新代理程式會自動附加此技能", + "newIssue": "新建議題", + "newProject": "新建項目", + "newRoutine": "新建例行程序", + "newSkill": "新建技能", + "newTask": "新建任務", + "nextFire": "下次觸發:{{when}}", + "nextIn": "{{when}} 後觸發", + "noActiveExecutionProfilesAreAvailable": "此提供者沒有可用的活動執行設定。", + "noActiveSessionForThisTask": "此任務沒有活動工作階段。", + "noActivityYet": "尚無活動。", + "noAgentProfileConfigured": "未設定代理程式設定檔", + "noAgentsAttached": "未附加代理程式", + "noAgentsInThisWorkspaceYet": "此工作區尚無代理程式。", + "noAgentsToDisplay": "無可顯示的代理程式。", + "noAgentsYet": "尚無代理程式。", + "noBudget": "無預算", + "noBudgetPoliciesConfiguredAddOne": "未設定預算策略。新增一個以強制執行支出限制。", + "noChangesDetected": "未檢測到更改。", + "noChannelsConfiguredAddAChannel": "未設定渠道。新增渠道以啓用外部訊息。", + "noCliAgentProfilesAvailableYet": "尚無可用的 CLI 代理程式設定檔。", + "noConversationLinkedToThisRun": "此執行未關聯對話。", + "noCostDataYetCostsAre": "尚無費用數據。代理程式執行任務時會記錄費用。", + "noEventsRecordedForThisRun": "此執行尚無事件記錄。", + "noGrouping": "不分組", + "noInitialTask": "無初始任務", + "noInstructionFilesYet": "尚無說明檔案。", + "noMatches": "無匹配。", + "noMatchingSkills": "無匹配技能", + "noMemoryEntriesYet": "尚無記憶條目。", + "noMoreRuns": "沒有更多執行", + "none": "無", + "noneLower": "無", + "noneTopLevel": "無(頂層)", + "noProject": "無項目", + "noProjectsYet": "尚無項目。", + "noProviderHasTierMapped": "沒有提供者映射了 {{tier}} 層級;請在下方「提供者層級映射」中為 {{tier}} 設定模型。", + "noProviderInOrderHasTierMapped": "有效順序中沒有任何提供者映射了 {{tier}}。", + "noProviderMappedForTierHelp": "有效順序中沒有任何提供者映射了 {{tier}} 層級。請在「工作區 → 提供者路由」中至少為一個提供者選擇 {{tier}} 的執行設定。", + "noProvidersConfigured": "未設定提供者。", + "noProvidersSelected": "未選擇提供者。", + "noRecentActivityActionsByAgents": "暫無最近活動。代理程式與用戶的操作將顯示在此。", + "noRecentTasks": "暫無最近任務。", + "noRepositoriesAddedYet": "尚未新增儲存庫。", + "noRoute": "無路由", + "noRoutinesYet": "尚無例行程序。", + "noRuns": "無執行", + "noRunsWithCostDataYet": "尚無含費用數據的執行。", + "noRunsYet": "尚無執行。", + "noRunsYetShort": "尚無執行", + "noScheduledWakeUpsManageRoutines": "無計劃喚醒;管理例行程序", + "noSkillsRegisteredYet": "尚未註冊技能。", + "noSkillsYetImportFromGithub": "尚無技能。可從 GitHub 匯入或自行建立。", + "noTasksFound": "未找到任務。", + "noTasksInThisProjectYet": "此項目尚無任務。", + "noTasksTouchedYet": "尚未處理任何任務。", + "noTasksWereModifiedDuringThis": "此執行期間未修改任何任務。", + "notConfigured": "未設定", + "notifyOnly": "僅通知", + "noUtilizationDataAvailable": "無可用利用率數據。", + "noUtilizationDataClickRefreshTo": "無利用率數據。點擊刷新以擷取目前用量。", + "observed": "觀測到", + "off": "關", + "officeTurnsYourBacklogIntoAutonomous": "辦公室將待辦轉化為自主工作。協調代理程式會拆解每個任務、委派給專業工作者代理程式,並向你彙報進度。接下來你將命名此工作區、建立協調代理程式,並可選擇交給它第一個任務以啓動。", + "on": "開", + "onDisk": "磁碟上", + "onDiskBadge": "磁碟上", + "oneLineSummary": "一行摘要", + "openAgent": "開啟 {{name}}", + "openBlocked": "{{open}} 個進行中,{{blocked}} 個已阻塞", + "openInAdvancedView": "在高級視圖中開啟", + "optional": "可選", + "optionalDescription": "可選描述", + "orchestration": "編排", + "orgChart": "組織圖", + "other": "其他", + "out": "輸出:", + "outgoingDatabaseFilesystem": "傳出(數據庫 → 檔案系統)", + "output": "輸出", + "outputTokens": "輸出權杖", + "overrideTheWorkspaceTierOrProvider": "覆蓋此代理程式的工作區層級或提供者順序。", + "overrideWakeReasonTiers": "覆蓋喚醒原因層級", + "overrideWakeReasonTiersHelp": "較少使用。僅當此代理程式的後台工作需要不同行為時覆蓋;例如安全關鍵代理程式即使例行檢查也必須使用 Frontier。多數代理程式應繼承工作區策略。", + "overrideWhichModelTierRunsFor": "覆蓋特定類型代理程式工作使用的模型層級。多數用戶保留工作區預設;後台任務用 Economy,常規執行用 Balanced。心跳、計劃例行程序與預算告警會在後台持續執行,因此在此使用更便宜的層級可大幅降低成本,而不影響關鍵工作。", + "overrideWorkspacePolicyForThisAgent": "為此代理程式覆蓋工作區策略", + "overrideWorkspaceProviderOrder": "覆蓋工作區提供者順序", + "overrideWorkspaceTier": "覆蓋工作區層級", + "overRuns": "{{overall}}% · 共 {{total}} 次執行", + "overview": "概覽", + "parent": "父級", + "parseErrors": "解析錯誤(", + "participantsSelected_one": "已選 {{count}} 個", + "participantsSelected_other": "已選 {{count}} 個", + "pathGithubUrlOrSkillsSh": "路徑、GitHub URL 或 skills.sh", + "pauseAgent": "暫停代理程式", + "pausedConsecutiveFailures_one": "已暫停;連續失敗 {{count}} 次", + "pausedConsecutiveFailures_other": "已暫停;連續失敗 {{count}} 次", + "pendingApproval": "待審批", + "pendingApprovals": "待審批", + "period": "週期", + "periodValue": "週期:{{period}}", + "permissions": "權限", + "permissionSettingsSaved": "權限設定已儲存", + "permissionsUpdated": "權限已更新", + "pickAWorkspaceRepoADiscovered": "選擇工作區儲存庫、已發現的本地路徑,或貼上 URL。", + "picksTheCliClientModelMode": "選擇此代理程式將使用的 CLI 用戶端、模型、模式與旗標。", + "platform": "平台", + "preferences": "偏好", + "primary": "主要", + "priority": "優先級", + "priorityCritical": "緊急", + "priorityHigh": "高", + "priorityLow": "低", + "priorityMedium": "中", + "project": "項目", + "projectCreated": "項目已建立", + "projectDeleted": "項目已刪除", + "projectDescription": "項目描述…", + "projectName": "項目名稱", + "projects": "項目", + "projectSaved": "項目已儲存", + "projectsGroupRelatedTasksAndRepositories": "項目將相關任務與儲存庫歸組在一起。", + "projectStatusActive": "進行中", + "projectStatusArchived": "已歸檔", + "projectStatusCompleted": "已完成", + "projectStatusOnHold": "已擱置", + "prompt": "提示詞", + "provider": "提供者", + "providerCandidatesTriedForThisRun": "此執行嘗試的提供者候選,按順序。", + "providerDegraded": "提供者已降級", + "providerHealth": "提供者健康狀況", + "providerOrder": "提供者順序", + "providerRouting": "提供者路由", + "providerRoutingHeading": "提供者路由", + "providers": "提供者", + "pulledLatestChanges": "已拉取最新更改", + "pullFailed": "拉取失敗", + "pulling": "正在拉取…", + "push": "推送", + "pushFailed": "推送失敗", + "pushing": "正在推送…", + "readOnly": "只讀", + "readOnlyReasonGit": "GitHub 管理的技能為只讀", + "readOnlyReasonLocalPath": "本地路徑技能為只讀", + "readOnlyReasonSkillsSh": "skills.sh 管理的技能為只讀", + "ready": "就緒", + "reason": "原因", + "recent": "最近", + "recentActivity": "最近活動", + "recentRuns": "最近執行", + "recentTasks": "最近任務", + "reconnect": "重新連接", + "recovery": "恢復", + "recoveryLookbackWindow": "恢復回看窗口", + "recoverySettingsSaved": "恢復設定已儲存", + "refresh": "刷新", + "refreshSkills": "刷新技能", + "refreshUtilization": "刷新利用率", + "reject": "拒絕", + "rejected": "已拒絕", + "remainingAmount": "剩餘:{{amount}}", + "remoteDocker": "遠端 Docker", + "remove": "移除", + "removeApprover": "移除審批人", + "removeRepository": "移除儲存庫", + "removeReviewer": "移除審閱人", + "removeSkill": "移除技能", + "repoCount_one": "{{count}} 個儲存庫", + "repoCount_other": "{{count}} 個儲存庫", + "reportsTo": "彙報給", + "repositories": "儲存庫", + "repositoryAdded": "儲存庫已新增", + "repositoryCloned": "儲存庫已複製", + "repositoryRemoved": "儲存庫已移除", + "repositoryUrl": "儲存庫 URL", + "requested": "已請求", + "requireApprovalForNewAgents": "新代理程式需審批", + "requireApprovalForSkillChanges": "技能變更需審批", + "requireApprovalForTaskCompletion": "任務完成需審批", + "required": "必填", + "resetsInHoursMinutes": "{{hours}} 小時 {{minutes}} 分鐘後重置", + "resetsInMinutes": "{{minutes}} 分鐘後重置", + "resettingSoon": "即將重置", + "resolved": "已解析", + "resolvedRoutes": "已解析路由", + "resumeSession": "恢復工作階段", + "retry": "重試", + "retryAtSuffix": "· 重試 {{retryAt}}", + "retryAtWhen": "於 {{when}} 重試", + "retryCancelledReassigned": "重試已取消;已重新分配", + "retrying": "正在重試…", + "retryNow": "立即重試", + "shortRetry": "即將重試", + "reviewAndLaunch": "審閱並啓動", + "reviewer": "審閱人", + "reviewers": "審閱人", + "reviewRequest": "審閱請求", + "reviewStages": "審閱階段", + "role": "角色", + "roleAssistant": "助手", + "roleCeo": "CEO", + "roleDefault": "角色預設", + "roleDevops": "DevOps", + "roleQa": "QA", + "roleSecurity": "安全", + "roleSpecialist": "專家", + "roleWorker": "工作者", + "routeAttempts": "路由嘗試", + "routeBlocked": "已阻塞", + "routeOutcomeFailedOther": "失敗(其他)", + "routeOutcomeFailedProviderUnavailable": "失敗(提供者不可用)", + "routeOutcomeLaunched": "已啓動", + "routeOutcomeRetryScheduled": "已安排重試", + "routeOutcomeSkippedDegraded": "已跳過(降級)", + "routeOutcomeSkippedMaxAttempts": "已跳過(達最大嘗試次數)", + "routeOutcomeSkippedMissingMapping": "已跳過(缺少映射)", + "routeOutcomeSkippedUserAction": "已跳過(用戶操作)", + "routineActivated": "例行程序已激活", + "routineCreated": "例行程序已建立", + "routineDeleted": "例行程序已刪除", + "routineFired": "例行程序已觸發", + "routinePaused": "例行程序已暫停", + "routines": "例行程序", + "routinesAutomaticallyCreateTasksOnA": "例行程序按計劃或 webhook 觸發自動建立任務。", + "routineSaved": "例行程序已儲存", + "routineStarted": "例行程序已啓動", + "routineStatusActive": "活動", + "routineStatusArchived": "已歸檔", + "routineStatusPaused": "已暫停", + "routingOverridesSaved": "路由覆蓋已儲存", + "routingSettingsSaved": "路由設定已儲存", + "run": "執行", + "runActivity": "執行活動", + "runCancelAssigneeChanged": "負責人已更改", + "runCancelRetryStale": "重試已過期", + "runCancelReviewParticipantChanged": "審閱人已更改", + "runCancelTaskCancelled": "任務已取消", + "runCancelTaskNotFound": "未找到任務", + "runCancelTaskTerminal": "任務已完成", + "runCount_one": "{{count}} 次執行", + "runCount_other": "{{count}} 次執行", + "runInALocalDockerContainer": "在本地 Docker 容器中執行", + "runInASpritesCloudEnvironment": "在 Sprites 雲環境中執行", + "runningPausedErrors": "{{running}} 執行中,{{paused}} 已暫停,{{errors}} 個錯誤", + "runNow": "立即執行", + "runNowTitleCase": "立即執行", + "runOnHostMachine": "在主機上執行", + "runs": "執行", + "runsAppearHereWhenARoutine": "例行程序觸發時,執行會顯示在此。", + "runStatusCancelled": "已取消", + "runStatusCoalesced": "已合併", + "runStatusDone": "完成", + "runStatusFailed": "失敗", + "runStatusReceived": "已接收", + "runStatusSkipped": "已跳過", + "runStatusTaskCreated": "任務已建立", + "runtime": "執行時", + "runtimeCapabilities": "執行時能力", + "saveChanges": "儲存更改", + "saveConfiguration": "儲存設定", + "saved": "已儲存 {{filename}}", + "saveOverrides": "儲存覆蓋", + "savePermissions": "儲存權限", + "saveSkills": "儲存技能", + "saving": "正在儲存…", + "savingEllipsis": "正在儲存…", + "schedule": "計劃", + "scopeId": "範圍 ID", + "scopeType": "範圍類型", + "search": "搜尋…", + "searchFiles": "搜尋檔案…", + "searchingYourMachine": "正在搜尋本機…", + "searchMemory": "搜尋記憶…", + "searchOrPasteAUrlOr": "搜尋或貼上 URL 或路徑…", + "searchTasks": "搜尋任務…", + "selectAFileToPreview": "選擇要預覽的檔案", + "selectAFileToViewOr": "選擇要查看或編輯的檔案。", + "selectAgent": "選擇代理程式", + "selectAgentOptional": "選擇代理程式(可選)", + "selectAnAgentProfile": "選擇代理程式設定檔…", + "selectApprover": "選擇審批人", + "selectAProjectToCreateATask": "選擇項目以建立任務", + "selectASkillToView": "選擇要查看的技能", + "selectAWorkspaceToViewActivity": "選擇工作區以查看活動。", + "selectAWorkspaceToViewCosts": "選擇工作區以查看費用。", + "selectExecutionProfile": "選擇執行設定", + "selectExecutor": "選擇執行器…", + "selectProfile": "選擇設定…", + "sendAMessage": "傳送訊息…", + "sendAMessageToStartA": "傳送訊息以開始工作階段…", + "sendMessage": "傳送訊息", + "session": "工作階段", + "sessionId": "工作階段 ID", + "sessionIdAfter": "工作階段 ID(之後)", + "sessionIdBefore": "工作階段 ID(之前)", + "setSpendingLimitsPerAgentOr": "按代理程式或項目設定支出限額。超出限額時代理程式會暫停。", + "setupTierAgentProfiles": "設定層級代理程式設定檔", + "setUpYourOfficeWorkspace": "設定你的辦公室工作區", + "ship": "發佈", + "showSystemTasks": "顯示系統任務", + "skillAutoAttachedToRole": "此技能會自動附加到新的 {{role}} 代理程式。你仍可為此代理程式取消勾選。", + "skillCount_one": "{{count}} 個技能", + "skillCount_other": "{{count}} 個技能", + "skillMdContent": "SKILL.md 內容", + "skillNameInstructionsForTheAgent": "# 技能名稱\n\n給代理程式的說明…", + "skills": "技能", + "skillSourceGithub": "GitHub", + "skillSourceGitRepository": "Git 儲存庫", + "skillSourceInline": "內聯", + "skillSourceInlineEditable": "內聯(在瀏覽器中編輯)", + "skillSourceKandev": "Kandev", + "skillSourceLocal": "本地", + "skillSourceLocalPath": "本地路徑", + "skillSourceSkillsSh": "skills.sh", + "skillSourceUserHome": "用戶主目錄", + "skillsTeachAgentsHowToPerform": "技能教代理程式如何執行特定任務。可從 GitHub 匯入或自行建立。", + "skillsThisAgentOwnsSkillsAre": "此代理程式擁有的技能。工作階段開始時技能會注入代理程式的系統提示詞。", + "skillsUpdated": "技能已更新", + "skipIfActive": "活動時跳過", + "skipMissed": "跳過錯過的", + "sort": "排序", + "sortBy": "排序依據", + "sortCreated": "建立時間", + "sortUpdated": "更新時間", + "sourceType": "來源類型", + "spritesRemoteSandbox": "Sprites(遠端沙箱)", + "staleRunCancelled": "過期執行已取消", + "standardCronExpressionExample": "標準 cron 表達式(例如 {{cron}} 表示每週一上午 9 點)", + "startASessionOrSendA": "啓動工作階段或傳送訊息以開始。", + "started": "已開始", + "startFresh": "全新開始", + "startFreshSentence": "全新開始", + "starting": "正在啓動…", + "startSession": "啓動工作階段", + "statusBacklog": "待辦池", + "statusBlocked": "已阻塞", + "statusCancelled": "已取消", + "statusChanged": "狀態已更改", + "statusDone": "完成", + "statusInProgress": "進行中", + "statusInReview": "審閱中", + "statusTodo": "待辦", + "stepDetails": "詳情", + "stepNumberTitle": "步驟 {{number}}:{{title}}", + "stepSchedule": "計劃", + "stepTaskTemplate": "任務模板", + "stepXOfYTitle": "步驟 {{number}} / {{total}};{{title}}", + "structuredResult": "結構化結果", + "subIssueOfParent": "{{parent}} 的子議題", + "subscriptionQuota": "訂閲配額", + "succeeded": "成功", + "successRate": "成功率", + "sync": "同步", + "syncTheWorkspaceDatabaseWithOn": "將工作區數據庫與磁碟上的 YAML 同步,或下載可移植匯出包。", + "system": "系統", + "tabChannels": "渠道", + "tabConfiguration": "設定", + "tabInstructions": "說明", + "tabMemory": "記憶", + "tabPermissions": "權限", + "taskCount_one": "{{count}} 個任務", + "taskCount_other": "{{count}} 個任務", + "taskCreated": "任務已建立", + "taskDescription": "任務描述", + "taskDescriptionTemplate": "任務描述模板", + "taskNotFound": "未找到任務", + "taskPrefix": "任務前綴", + "taskReview": "任務審閱", + "tasks": "任務", + "tasksByPriority": "按優先級的任務", + "tasksByStatus": "按狀態的任務", + "tasksInProgress": "進行中的任務", + "tasksMustBeReviewedBeforeThey": "任務須經審閱後才能標記為完成", + "tasksTouched": "涉及的任務", + "tasksWillBeNumbered": "任務將編號為 {{prefix}}-1、{{prefix}}-2 等。", + "tasksWorkedOnByPriority": "按優先級處理的任務", + "tasksWorkedOnByStatus": "按狀態處理的任務", + "taskTitle": "任務標題", + "taskTitleTemplate": "任務標題模板", + "telegram": "Telegram", + "theAgentResponsibleForManagingThis": "負責管理此項目的代理程式", + "theCoordinatorCanCreateWorkerAgents": "協調代理程式可建立工作者代理程式併為每個選擇層級。每個層級會解析為這裏選擇的設定,之後可在工作區路由中更改。", + "theCoordinatorManagesOtherAgentsDelegates": "協調代理程式管理其他代理程式、委派任務並監控進度。", + "thisAgentAsTheAssignee": "以此代理程式為負責人", + "thisCoordinatorHasNoScheduledWake": "此協調代理程式無計劃喚醒;僅在評論、錯誤或手動觸發時執行。", + "thisPermanentlyDeletesAgentsTasksSkills": "將永久刪除代理程式、任務、技能、例行程序與設定。", + "thisProvider": "此提供者", + "thisWillPermanentlyDeleteAllMemory": "將永久刪除此代理程式的全部記憶條目。此操作無法撤銷。", + "thisWillPermanentlyDeleteThisInstruction": "將永久刪除此說明檔案。此操作無法撤銷。", + "tier": "層級", + "tierBalanced": "Balanced", + "tierBalancedDescription": "當協調代理程式分配 Balanced 層級時,用於一般工作者代理程式。", + "tierBalancedHint": "標準能力", + "tierBalancedQualified": "Balanced(標準)", + "tierBalancedUsage": "Balanced 層級用量", + "tierEconomy": "Economy", + "tierEconomyDescription": "當協調代理程式分配 Economy 層級時,用於 QA、例行與低成本代理程式。", + "tierEconomyHint": "最便宜的可用模型", + "tierEconomyQualified": "Economy(最便宜)", + "tierEconomyUsage": "Economy 層級用量", + "tierFrontier": "Frontier", + "tierFrontierDescription": "當協調代理程式建立最高能力工作的代理程式或分配 Frontier 層級時使用。", + "tierFrontierHint": "各提供者的最強能力", + "tierFrontierQualified": "Frontier(最強能力)", + "tierFrontierUsage": "Frontier 層級用量", + "tierNameBalanced": "balanced", + "tierNameEconomy": "economy", + "tierNameFrontier": "frontier", + "timezone": "時區", + "title": "標題", + "titleForAutoCreatedTasksUse": "自動建立任務的標題。可用 {{name}} 與 {{date}} 作為佔位符。", + "toggleNesting": "切換嵌套", + "topToBottomFallbackOrderAgents": "自上而下的後備順序。除非覆蓋,代理程式會嘗試第一個健康的提供者。", + "toSetUpARoutineYou": "設定例行程序需要:", + "total": "合計", + "totalApiCostsThisBillingPeriod": "本計費週期的 API 總費用", + "totalCost": "總費用", + "totalSpend": "總支出", + "trigger": "觸發器", + "triggerComment": "評論", + "triggerRoutine": "例行程序", + "triggerTask": "任務", + "triggerType": "觸發類型", + "type": "類型", + "typeNameToConfirm": "輸入 {{name}} 以確認", + "typicalMappingAtLaunchTimeThe": "典型映射。啓動時路由會按提供者順序遍歷並選擇第一個健康提供者,因此主提供者降級時,此執行可能使用與此處顯示不同的提供者/模型。", + "unassigned": "未分配", + "unassignedParen": "(未分配)", + "unknownError": "未知錯誤", + "unstartedTaskRecovered": "未開始的任務已恢復", + "untitled": "(無標題)", + "updateWorkspaceConfiguration": "更新工作區設定", + "upload": "上傳", + "uploadLogo": "上傳圖標", + "useAgentSNormalTier": "使用代理程式的常規層級", + "usedBy": "用戶", + "useQuery": "使用「{{query}}」", + "usingThisAgentsWakeReasonOverrides": "正在使用此代理程式的喚醒原因覆蓋。", + "variables": "變量", + "waiting": "等待中…", + "waitingForCapacity": "等待容量", + "wakeBudgetAlert": "預算告警", + "wakeBudgetAlertLong": "預算告警是快速確認工作;代理程式讀取告警、決定是否暫停工作或通知人工,然後繼續休眠。幾乎不涉及重推理,因此最便宜的層級幾乎總是夠用。", + "wakeBudgetAlertRecommendation": "快速確認工作 → 更便宜的層級即可。", + "wakeBudgetAlertShort": "當工作區或項目預算接近限額、可能需要限流或上報時通知代理程式。", + "wakeHeartbeat": "心跳", + "wakeHeartbeatLong": "心跳保持代理程式反應靈敏:快速掃描收件箱、未完成任務與預算告警。它們在後台持續觸發,因此在此使用更便宜的層級可大幅降低月度支出,而不影響關鍵工作。", + "wakeHeartbeatRecommendation": "非常頻繁 → 建議使用更便宜的層級。", + "wakeHeartbeatShort": "代理程式按計劃(每隔幾分鐘)執行的定期檢查,查看是否有需要關注的新事項。", + "wakeReasonTierPolicy": "喚醒原因層級策略", + "wakeRoutineTrigger": "例行程序觸發", + "wakeRoutineTriggerLong": "例行程序觸發按你控制的 cron 計劃執行。工作負載可預期且很少時間關鍵,因此更便宜的層級通常足夠。若特定例行程序需要更強模型,可按代理程式覆蓋。", + "wakeRoutineTriggerRecommendation": "可預期的工作負載 → 更便宜的層級通常足夠。", + "wakeRoutineTriggerShort": "你在「例行程序」下設定的計劃任務(例如「每週一上午彙總 PR」)。", + "warning": "警告", + "webhook": "Webhook", + "whatEachAgentWouldLaunchWith": "在目前設定下每個代理程式將如何啓動。", + "whatHappensIfThePreviousRun": "若上一次執行仍在進行,會發生什麼", + "whatHappensToTicksMissedWhile": "後端離線期間錯過的觸發如何處理", + "whatTheAgentReceivedAndProduced": "代理程式接收與產生的內容。", + "whenEnabledProviderLimitsCanMove": "啓用後,提供者限制可將執行移至下一個已設定的執行設定。停用後,辦公室僅對所選層級使用第一個提供者。", + "whetherThisSkillSContentCan": "此技能內容是否可在 Kandev 中編輯", + "whichAgentManagesThisOne": "管理此代理程式的上級代理程式", + "workingDir": "工作目錄", + "workspaceCreatedSuccessfully": "工作區建立成功", + "workspaceDefaultForThisReason": "此原因的工作區預設:", + "workspaceDefaultTier": "工作區預設層級", + "workspaceDefaultTierHint": "我們將把 <1>{{model}} 作為 {{provider}} 的 {{tier}} 層級。之後可在「工作區 → 提供者路由」中更改。", + "workspaceDeleted": "工作區已刪除", + "workspaceName": "工作區名稱", + "writeTheDatabaseStateToOn": "將數據庫狀態寫入磁碟上的 YAML 檔案。", + "yourModel": "你的模型", + "zoomIn": "放大", + "zoomOut": "縮小" +} diff --git a/apps/web/src/locales/zh-hk/plugins.json b/apps/web/src/locales/zh-hk/plugins.json new file mode 100644 index 0000000000..7b3f5f4f8e --- /dev/null +++ b/apps/web/src/locales/zh-hk/plugins.json @@ -0,0 +1,117 @@ +{ + "add": "新增", + "allCategories": "全部分類", + "autoUpdate": "自動更新", + "autoUpdateDescription": "定期檢查市場併為已啓用外掛程式安裝較新版本。適用於每個外掛程式,除非在下方單獨覆蓋。", + "autoUpdateFor": "{{name}} 的自動更新", + "autoUpdateTitle": "自動更新外掛程式", + "byAuthor": "作者 {{author}}", + "cancel": "取消", + "category": "分類", + "confirmUninstall": "確認卸載", + "disable": "停用", + "dropzoneHint": "將 {{extension}} 包拖放到此處,或點擊瀏覽", + "enable": "啓用", + "failedToAddSource": "新增來源失敗", + "failedToDisable": "停用 {{name}} 失敗", + "failedToEnable": "啓用 {{name}} 失敗", + "failedToInstallPlugin": "安裝外掛程式失敗", + "failedToLoadMarketplace": "載入市場失敗", + "failedToLoadPlugins": "載入外掛程式失敗", + "failedToLoadSettings": "載入外掛程式設定失敗", + "failedToRemoveSource": "移除來源失敗", + "failedToSaveSettings": "儲存外掛程式設定失敗", + "failedToSetAutoUpdateFor": "更新 {{name}} 的自動更新設定失敗", + "failedToSyncPlugins": "同步外掛程式失敗", + "failedToUninstall": "卸載 {{name}} 失敗", + "failedToUpdateAutoUpdate": "更新自動更新設定失敗", + "failedToUpdateSource": "更新來源失敗", + "fromUrl": "來自 URL", + "hideRaw": "隱藏原始內容", + "install": "安裝", + "installPlugin": "安裝外掛程式", + "installPluginDescription": "從 URL 安裝外掛程式包,或直接上傳 {{extension}} 檔案。", + "installed": "已安裝", + "installedPlugins": "已安裝的外掛程式", + "installing": "正在安裝…", + "loadingMarketplace": "正在載入市場…", + "loadingPlugins": "正在載入外掛程式…", + "loadingSelectedUtilityAgent": "正在載入所選輔助代理程式…", + "loadingSettings": "正在載入設定…", + "loadingUtilityAgents": "正在載入輔助代理程式…", + "manifest": "清單", + "manifestApiVersion": "API 版本", + "manifestAuthor": "作者", + "manifestCapabilities": "能力", + "manifestId": "ID", + "manifestInstalled": "已安裝", + "manifestSigned": "已簽名", + "manifestVersion": "版本", + "manifestWebhooks": "Webhooks", + "marketplaceSources": "市場來源", + "marketplaceSourcesDescription": "新增團隊或企業註冊表,以便與官方目錄一起瀏覽其外掛程式。每個來源提供一份 {{document}} 文檔。", + "no": "否", + "noDeclaredSettings": "此外掛程式未聲明任何設定(清單中無 <1>config_schema)。", + "noInstalledPluginWithId": "沒有 id 為 <1>{{id}} 的已安裝外掛程式。", + "noPluginsAvailable": "暫無可用外掛程式。請稍後再來,或新增包含自有外掛程式的市場來源。", + "noPluginsMatchSearch": "沒有與搜尋匹配的外掛程式。請嘗試清除篩選條件。", + "noPluginsYet": "還沒有外掛程式。從「瀏覽」標籤安裝,或上傳一個包。", + "notSet": "未設定", + "override": "覆蓋", + "packageUrl": "包 URL", + "pluginInstalled": "{{name}} 已安裝", + "pluginPageFailedToLoad": "此外掛程式頁面載入失敗。", + "pluginsAvailable_one": "{{count}} 個可用外掛程式", + "pluginsAvailable_other": "{{count}} 個可用外掛程式", + "refresh": "刷新", + "removeSource": "移除 {{name}}", + "repo": "儲存庫", + "requiredFields": "必填:{{fields}}", + "reset": "重置", + "resetAutoUpdateFor": "將 {{name}} 的自動更新重置為預設", + "savingRestartsPlugin": "儲存後將重啓外掛程式以使新設定生效。", + "searchPlugins": "搜尋外掛程式…", + "selectAUtilityAgent": "選擇輔助代理程式…", + "selectPlaceholder": "選擇…", + "selectedUtilityAgentUnavailable": "所選輔助代理程式不可用", + "settings": "設定", + "settingsDescription": "瀏覽市場,然後安裝、啓用、停用和卸載 Kandev 外掛程式。", + "settingsSaved": "外掛程式設定已儲存", + "settingsSavedReloadFailed": "設定已儲存,但重新載入失敗;請刷新以確認。", + "sortMostStars": "星標最多", + "sortName": "名稱", + "sortRecentlyUpdated": "最近更新", + "sourceNamePlaceholder": "來源名稱(例如 Acme Internal)", + "sourceOfficial": "官方", + "sourceUnreachable": "無法存取", + "sourceUnreachableDetail": "<0>{{name}} 無法存取{{detail}};其外掛程式已隱藏。", + "sources": "來源", + "statusActive": "活躍", + "statusDisabled": "已停用", + "statusError": "錯誤", + "statusRegistered": "已註冊", + "statusUninstalled": "已卸載", + "sync": "同步", + "syncInstalled_one": "已安裝 {{count}} 個", + "syncInstalled_other": "已安裝 {{count}} 個", + "syncMissing_one": "缺失 {{count}} 個", + "syncMissing_other": "缺失 {{count}} 個", + "syncSideloaded_one": "旁載入 {{count}} 個", + "syncSideloaded_other": "旁載入 {{count}} 個", + "syncSummary": "同步:{{parts}}", + "syncUpToDate": "全部已是最新", + "tabBrowse": "瀏覽", + "tabInstalled": "已安裝", + "thisPlugin": "此外掛程式", + "uninstall": "卸載", + "uninstallConfirm": "這將永久移除 <2>{{name}} 並吊銷其 API 密鑰。此操作無法撤銷。", + "uninstallPlugin": "卸載外掛程式", + "unsigned": "未簽名", + "update": "更新", + "updateToVersion": "更新到 v{{version}}", + "updating": "正在更新…", + "uploadFile": "上傳檔案", + "utilityAgentsUnavailable": "輔助代理程式不可用", + "viewRaw": "查看原始內容", + "yes": "是" +} diff --git a/apps/web/src/locales/zh-hk/review.json b/apps/web/src/locales/zh-hk/review.json new file mode 100644 index 0000000000..670a88f9a8 --- /dev/null +++ b/apps/web/src/locales/zh-hk/review.json @@ -0,0 +1,82 @@ +{ + "acrossFileCount_one": "涉及 {{count}} 個檔案", + "acrossFileCount_other": "涉及 {{count}} 個檔案", + "actionsFor": "{{filePath}} 的操作", + "autoMarkReviewedOnScroll": "滾動時自動標記為已審閱", + "changedSection": "更改區塊 {{index}}", + "closeReview": "關閉審閱", + "collapseFile": "摺疊 {{path}}", + "collapseUnchanged": "摺疊未更改部分", + "commentSent": "評論已傳送", + "copyDiff": "複製 diff", + "diffLoading": "正在載入 diff…", + "diffSkipBinary": "二進制檔案;無法比較 diff", + "diffSkipBudgetExceeded": "已跳過 diff;更改檔案過多", + "diffSkipTooLarge": "檔案過大,無法比較 diff(>10 MB)", + "diffSkipTruncated": "diff 已截斷(>256 KB)", + "diffTruncated": "diff 已截斷;僅顯示前 256 KB", + "discardWalkthrough": "丟棄導覽", + "discardWalkthroughDescription": "這將移除此任務上已儲存的導覽。代理程式之後可以再建立新的。", + "discardWalkthroughTitle": "丟棄導覽?", + "editFile": "編輯檔案", + "expandAll": "全部展開", + "expandFile": "展開 {{path}}", + "expandUnchangedLines": "展開未更改的行", + "failedToDiscardWalkthrough": "丟棄導覽失敗", + "failedToSendComment": "傳送評論失敗", + "filesReviewed": "已審閱 {{reviewedCount}} / {{totalCount}} 個檔案", + "filterChangedFiles": "篩選已更改檔案", + "findingCount_one": "{{count}} 條發現", + "findingCount_other": "{{count}} 條發現", + "fixComments": "修復評論", + "goToFindings_one": "轉到 {{count}} 條審閱發現", + "goToFindings_other": "轉到 {{count}} 條審閱發現", + "loadingChangedFiles": "正在載入已更改檔案…", + "loadingPRChanges": "正在載入 {{repo}} #{{prNumber}} 的更改…", + "markdownPreviewPartialNotice": "正在顯示已更改的 Markdown 片段。未更改的內容不包含在此 diff 中。", + "moreActionsFor": "{{filePath}} 的更多操作", + "new": "新", + "newWalkthrough": "新建導覽", + "noChangesToReview": "沒有可審閱的更改", + "noChangesToReviewYet": "尚無可審閱的更改。", + "noCommentsToFixYet": "尚無可修復的評論。", + "noFilesMatchTheFilter": "沒有與篩選匹配的檔案", + "noOpenFindings": "沒有未解決的發現。", + "noTextualDiffAdded": "新增檔案沒有文字 diff", + "noTextualDiffDeleted": "已刪除檔案沒有文字 diff", + "noTextualDiffModified": "無可用文字 diff", + "noTextualDiffMoved": "檔案已移動;無文字更改", + "noTextualDiffMovedFrom": "從 {{oldPath}} 移動;無文字更改", + "noTextualDiffUntracked": "未跟蹤檔案沒有文字 diff", + "old": "舊", + "openFindingCount_one": "{{count}} 條未解決發現", + "openFindingCount_other": "{{count}} 條未解決發現", + "pendingCommentCount_one": "{{count}} 條待處理審閱評論", + "pendingCommentCount_other": "{{count}} 條待處理審閱評論", + "pleaseTryAgain": "請重試。", + "previewMarkdown": "預覽 Markdown", + "queuedForTheAgent": "已排隊等待代理程式。", + "resizeFileList": "調整檔案列表大小", + "retry": "重試", + "revertChanges": "還原更改", + "reviewAgentUnavailableNotice": "未設定可用於審閱的推理代理程式。<2>設定 → 輔助代理程式", + "reviewChanges": "審閱更改", + "reviewChangesTitle": "審閱更改", + "reviewInProgress": "審閱進行中", + "reviewPullRequest": "審閱拉取要求", + "reviewPullRequestFor": "審閱拉取要求 {{repo}} #{{prNumber}}", + "reviewTheseChangesWithAnAgent": "使用代理程式審閱這些更改", + "sentToTheAgent": "已傳送給代理程式。", + "showDiff": "顯示 diff", + "staleChanged": "已更改", + "switchToSplitView": "切換到分欄視圖", + "switchToUnifiedView": "切換到統一視圖", + "theReviewFailed": "審閱失敗", + "toggleWordWrap": "切換自動換行", + "view": "查看", + "walkMeThroughTheseChanges": "帶我瀏覽這些更改", + "walkMeThroughTheseReviewChanges": "帶我瀏覽這些審閱更改", + "walkthrough": "導覽", + "walkthroughDiscarded": "導覽已丟棄", + "wrapLongLines": "長行自動換行" +} diff --git a/apps/web/src/locales/zh-hk/sentry.json b/apps/web/src/locales/zh-hk/sentry.json new file mode 100644 index 0000000000..d9cb0c94bb --- /dev/null +++ b/apps/web/src/locales/zh-hk/sentry.json @@ -0,0 +1,176 @@ +{ + "actions": "操作", + "active": "活動", + "addInstance": "新增實例", + "agentProfile": "代理程式設定檔", + "allProjects": "全部項目", + "any": "(任意)", + "authToken": "身份驗證權杖", + "availablePlaceholders": "可用佔位符:", + "browseSentryIssues": "瀏覽 Sentry 議題", + "cantDeleteInstanceInUse_one": "無法刪除「{{name}}」:仍有 {{count}} 個監控綁定到該實例。請先重新分配或移除這些監控。", + "cantDeleteInstanceInUse_other": "無法刪除「{{name}}」:仍有 {{count}} 個監控綁定到該實例。請先重新分配或移除這些監控。", + "checkFailed": "檢查失敗:{{error}}", + "checkNow": "立即檢查", + "connectedAs": "已連接為 {{name}}", + "create": "建立", + "createFailed": "建立失敗:{{error}}", + "createSentryWatcher": "建立 Sentry 監控", + "delete": "刪除", + "deleteFailed": "刪除失敗:{{error}}", + "deleteInstanceAria": "刪除 {{name}} Sentry 實例", + "deleteThisSentryWatcher": "刪除此 Sentry 監控?", + "edit": "編輯", + "editInstanceAria": "編輯 {{name}} Sentry 實例", + "editSentryWatcher": "編輯 Sentry 監控", + "enable": "啓用", + "enabled": "已啓用", + "enabledHelp": "暫停或恢復輪詢。", + "enterAPositiveIntegerOrBlank": "請輸入正整數或留空。", + "enterNameAndTokenBeforeSaving": "儲存前請輸入實例名稱和身份驗證權杖。", + "environment": "環境", + "environmentHelp": "可選--限制為一個環境。", + "eventsCount_one": "事件 {{count}}", + "eventsCount_other": "事件 {{count}}", + "executorProfile": "執行器設定檔", + "failedToLoadInstances": "載入 Sentry 實例失敗:{{error}}", + "fallsBackToStepDefault": "可選--留空時使用步驟預設值。", + "filter": "篩選條件", + "foundNewIssues_one": "發現 {{count}} 個新議題,任務即將顯示。", + "foundNewIssues_other": "發現 {{count}} 個新議題,任務即將顯示。", + "grantReadAccess": "為以下範圍授予讀取權限:", + "instance": "實例", + "instanceNameTaken": "此工作區中已存在名為「{{name}}」的實例。", + "instanceRemoved": "已移除 Sentry 實例", + "instanceSaved": "已儲存 Sentry 實例", + "instanceUnavailable": "(不可用)", + "instanceUrl": "實例 URL", + "instanceUrlHelp": "Sentry 實例的基礎 URL。使用 Sentry SaaS 時保留 {{defaultUrl}};使用自託管安裝時,請改為對應地址(例如 {{exampleUrl}})。", + "instances": "實例", + "interval": "間隔", + "intervalMinutes_one": "{{count}} 分鐘", + "intervalMinutes_other": "{{count}} 分鐘", + "lastPolled": "上次輪詢", + "lastSeen": "上次出現", + "level": "級別", + "levelDebug": "調試", + "levelError": "錯誤", + "levelFatal": "致命", + "levelInfo": "資訊", + "levelWarning": "警告", + "levels": "級別", + "levelsHelp": "單擊可切換。匹配任意一個所選級別的議題。", + "loadMore": "載入更多", + "loadingEllipsis": "正在載入…", + "maxInflightTasks": "最大進行中任務數", + "maxInflightTasksHelp": "限制此監控建立的進行中任務數量。留空表示不限制。達到上限後,新匹配項會推遲到下次輪詢。", + "name": "名稱", + "nameHelp": "此實例的標籤,在工作區內必須唯一。", + "namePlaceholder": "生產環境、自託管等", + "never": "從不", + "newInstance": "新建實例", + "newWatcher": "新建監控", + "noCap": "(不限制)", + "noHealthySentryInstanceCheckThe": "沒有健康的 Sentry 實例;請檢查集成設定。", + "noInstancesInWorkspace": "此工作區中沒有 Sentry 實例", + "noInstancesYet": "尚無 Sentry 實例。新增一個實例以連接此工作區。", + "noIssuesYetRunASearch": "暫無議題。執行搜尋以開始。", + "noNewIssuesMatched": "沒有匹配的新議題。", + "noOrganizationsAvailable": "沒有可用組織", + "noProjectsAvailable": "沒有可用項目", + "noProjectsAvailableSentence": "沒有可用項目。", + "noSentryInstancesConfiguredForThis": "此工作區未設定 Sentry 實例。", + "noWatchersConfigured": "尚未設定 Sentry 監控。建立一個監控後,即可根據篩選的議題自動建立任務。", + "orgSlugRequired": "必須填寫組織 slug", + "organization": "組織", + "organizationSlug": "組織短名稱", + "organizationSlugHelp": "要輪詢的 Sentry 組織。", + "pasteAnAuthTokenToTest": "貼上身份驗證權杖以測試連接", + "pause": "暫停", + "paused": "已暫停", + "period": "時間範圍", + "placeholderAssigneeDisplayName": "經辦人顯示名稱", + "placeholderCulprit": "問題源(函數或檔案)", + "placeholderEventCount": "事件總數", + "placeholderFirstSeen": "首次發現議題的時間", + "placeholderIssueLevel": "議題級別", + "placeholderIssueStatus": "議題狀態", + "placeholderIssueTitle": "議題標題", + "placeholderIssueUrl": "Sentry 議題永久連結", + "placeholderLastSeen": "最近發現議題的時間", + "placeholderProjectSlug": "Sentry 項目短名稱", + "placeholderShortId": "Sentry 短 ID", + "placeholderUserCount": "受影響的獨立用戶數", + "pollIntervalHelp": "重新執行搜尋的頻率。最短 60 秒,最長 3600 秒。", + "pollIntervalSeconds": "輪詢間隔(秒)", + "production": "production", + "project": "項目", + "projectSlug": "項目短名稱", + "projectSlugHelp": "要輪詢的 Sentry 項目。可選擇一個或多個。", + "projectsSelected_one": "已選擇 {{count}} 個項目", + "projectsSelected_other": "已選擇 {{count}} 個項目", + "promptFieldHelp": "為每個新議題傳送給代理程式的提示詞。輸入 {{token}} 可插入佔位符。", + "query": "查詢", + "queryExample": "例如 {{query}}", + "queryHelp": "自由文字 Sentry 搜尋查詢(可選)。", + "removeInstanceConfirm": "移除 Sentry 實例「{{name}}」?", + "requiredTokenScopes": "所需權杖範圍", + "resetCompleteDeletedTasks_one": "重置完成--已刪除 {{count}} 個任務;下次輪詢將重新匯入匹配項。", + "resetCompleteDeletedTasks_other": "重置完成--已刪除 {{count}} 個任務;下次輪詢將重新匯入匹配項。", + "resetCompleteNoTasksDeleted": "重置完成--下次輪詢將重新匯入匹配項。", + "resetFailed": "重置失敗:{{error}}", + "resetWatch": "重置監控", + "saveFailed": "儲存失敗:{{error}}", + "savedLeaveBlank": "(已儲存--留空可保持目前值)", + "saving": "正在儲存…", + "scopeEventRead": "議題和事件--瀏覽議題並執行監控", + "scopeOrgRead": "組織--解析組織並列出議題", + "scopeProjectRead": "項目--列出項目並限定搜尋範圍", + "searchProjects": "搜尋項目…", + "selectASentryInstanceToBrowse": "選擇一個 Sentry 實例以瀏覽其議題。", + "selectAnInstance": "選擇實例", + "selectAnInstanceToBrowse": "選擇要瀏覽的實例", + "selectInstanceToSearch": "選擇要搜尋的 Sentry 實例", + "selectOrganization": "選擇組織", + "selectProjects": "選擇項目", + "selectWorkflow": "選擇工作流程", + "selectWorkspace": "選擇工作區", + "sentryInstance": "Sentry 實例", + "sentryInstanceHelp": "此監控輪詢的 Sentry 實例。建立後無法更改。", + "sentryIntegration": "Sentry 集成", + "sentryIntegrationDescription": "將此工作區連接到 Sentry。為每個 Sentry 組織或自託管主機新增一個命名實例;認證資料會在伺服器端加密存儲。", + "sentryWatcher": "Sentry 監控", + "sentryWatchers": "Sentry 監控", + "sentryWatchersDescription": "輪詢 Sentry 篩選條件,併為每個新匹配的議題自動建立一個 Kandev 任務。", + "statsPeriod": "統計週期", + "statsPeriodHelp": "向前追溯多長時間查找匹配的議題。", + "statsPeriodLast14Days": "過去 14 天", + "statsPeriodLast24Hours": "過去 24 小時", + "statsPeriodLast30Days": "過去 30 天", + "statsPeriodLast7Days": "過去 7 天", + "statsPeriodLastHour": "過去 1 小時", + "statusIgnored": "已忽略", + "statusResolved": "已解決", + "statusUnresolved": "未解決", + "statuses": "狀態", + "statusesHelp": "單擊可切換。匹配任意一個所選狀態的議題。", + "taskPrompt": "任務提示詞", + "testConnection": "測試連接", + "testFailed": "失敗:{{error}}", + "testing": "正在測試…", + "update": "更新", + "updateFailed": "更新失敗:{{error}}", + "useStepDefault": "(使用步驟預設值)", + "usersCount_one": "用戶 {{count}}", + "usersCount_other": "用戶 {{count}}", + "watchDialogDescription": "使用結構化篩選條件輪詢 Sentry,併為每個新匹配的議題自動建立一個 Kandev 任務。可以綁定儲存庫,讓每個任務在該程式碼庫中執行;也可以留空,讓任務在無儲存庫的情況下執行。", + "watcherCreated": "已建立監控", + "watcherDeleted": "已刪除監控", + "watcherUpdated": "已更新監控", + "workflow": "工作流程", + "workflowHelp": "任務將在此工作流程中建立。", + "workflowStep": "工作流程步驟", + "workflowStepHelp": "新任務的初始步驟。", + "workspaceHelp": "此監控建立的任務會進入所選工作區。", + "yourSentryAuthTokenIsInvalid": "你的 Sentry 驗證權杖無效或已吊銷。請重新連接以查看此議題。" +} diff --git a/apps/web/src/locales/zh-hk/settings.json b/apps/web/src/locales/zh-hk/settings.json new file mode 100644 index 0000000000..4577490748 --- /dev/null +++ b/apps/web/src/locales/zh-hk/settings.json @@ -0,0 +1,696 @@ +{ + "aSecretNameAndValueAreRequired": "需要填寫密鑰名稱和值。", + "aSecretNameIsRequired": "需要填寫密鑰名稱。", + "aboutAffectedKandevMcpTools": "關於受影響的 Kandev MCP 工具", + "accessControl": "存取控制", + "actionsFor": "{{target}} 的操作", + "activeKandevSpritesSpritesAreDestroyed": "活躍的 Kandev 雲沙盒。代理程式停止時會銷燬這些雲沙盒。", + "activeSessions": "活動工作階段", + "activeSprites_one": "{{count}} 個活躍雲沙盒。", + "activeSprites_other": "{{count}} 個活躍雲沙盒。", + "addAMissingToolTabBeside": "在所選拆分區域旁新增缺少的工具標籤頁。", + "addAppriseProvider": "新增 Apprise 提供者", + "addCustomEditor": "新增自訂編輯器", + "addEditor": "新增編輯器", + "addPanel": "新增面板", + "addProvider": "新增提供者", + "addSecret": "新增密鑰", + "addTheTabToTheSelected": "將 {{panel}} 標籤頁新增到所選拆分區域。", + "affectedKandevMcpTool": "受影響的 Kandev MCP 工具", + "agent": "代理程式", + "agentFallback": "代理程式後備", + "agentFallbackAria": "代理程式後備模型設定", + "agentFallbackDisabledHelper": "已啓用自動後備。關閉後才能選擇一個指定的後備模型。", + "agentFallbackHelper": "如果啓動模型不可用,則自動切換到此模型。", + "agentFallbackHelp": "如果啓動模型不可用,Kandev 只會嘗試此模型。如果此模型也不可用,工作階段將失敗。需要可預測的後備行為時使用此選項。", + "agentFallbackHelpTitle": "代理程式後備", + "agentFallbackInfoLabel": "說明代理程式後備", + "agentFallbackPlaceholder": "選擇後備模型…", + "agentGeneratedTaskTitles": "由代理程式產生任務標題", + "agentGeneratedTaskTitlesDescription": "啓用後,新建任務和子任務表單會隱藏手動標題欄位,並要求填寫提示詞。Kandev 會立即使用提示詞的前六個詞產生臨時標題,然後讓代理程式將其替換為約三個詞的簡潔標題。如果代理程式無法重命名任務,你仍可編輯臨時標題。現有任務和經過編輯的任務會繼續顯示常規標題欄位。", + "agentGeneratedTaskTitlesDisabledHint": "預設關閉;請先儲存此設定,再開啟建立對話框。", + "apiTokenIsConfigured": "API 權杖已設定。", + "appearance": "外觀", + "appriseNotInstalled": "Apprise 尚未安裝。你可以稍後新增它,以啓用遠端通知。<2>查看安裝說明。", + "appriseProvider": "Apprise 提供者", + "appriseServiceUrls": "服務 URL", + "appriseUrlRequired": "至少需要一個 Apprise 服務 URL。", + "archiveConfirmation": "歸檔確認", + "preventAutoStartAgentOnOpen": "開啟任務時不自動啓動代理程式", + "preventAutoStartAgentOnOpenHelp": "重新啓動後,或從工作流程最後一步開啟任務時,不會自動啓動代理程式,改為顯示「啓動代理程式」按鈕。", + "arrangeSplit": "調整拆分佈局", + "autoApprove": "自動批准", + "autoInstallIfNotFound": "未找到時自動安裝", + "autoStart": "自動啓動", + "autoStartLanguageServersWhenOpening": "開啟檔案時自動啓動語言伺服器,以擷取診斷、懸停資訊和轉到定義功能。你也可以按檔案分別開關每個伺服器。", + "autoFallback": "自動後備到下一個模型", + "autoFallbackHelper": "啓動模型不可用時,讓代理程式選擇下一個可用模型,而不是直接失敗。啓用後會停用明確指定的後備模型。", + "autoFallbackHelp": "如果啓動模型不可用,Kandev 會讓代理程式從其餘已公佈的模型中選擇。可用性變化時,所選模型也可能變化。", + "autoFallbackHelpTitle": "自動後備", + "autoFallbackInfoLabel": "說明自動後備", + "autoStartLanguageServer": "自動啓動 {{language}} 語言伺服器", + "builtIn": "內置", + "builtInBrowserPanel": "內置瀏覽器面板", + "cancel": "取消", + "changelogNotificationsDescription": "控制頂欄中的發佈說明通知", + "changelogPageDescription": "查看所有發佈並管理通知偏好", + "changelogReleaseHistory": "發佈歷史", + "changelogReleaseHistoryDescription": "所有版本及其發佈說明", + "changelogResetSeenDescription": "清除上次查看的版本,使頂欄通知再次出現", + "changelogResetSeenLabel": "重置已查看發佈", + "changelogTopbarDescription": "啓用後,有新版本發佈時頂欄會顯示閃光圖標", + "changelogTopbarLabel": "有新發布時顯示通知", + "changelogTopbarTitle": "頂欄發佈通知", + "changesPanel": "變更面板", + "changesPanelLayout": "變更面板佈局", + "changesTheLanguageOfTheKandev": "更改 Kandev 介面的語言。更改會立即生效,並記住在此設備上。任務標題、聊天以及你建立的其他內容不會翻譯。", + "chatInput": "聊天輸入", + "chooseAMonospaceFontForThe": "為終端選擇等寬字體。Nerd Fonts 包含 CLI 工具所需的圖標。", + "chooseHowDeepTheSettingsMenuGoes": "選擇設定菜單僅列出頁面,還是將工作區、代理程式和執行器展開為其中的具體內容。", + "chooseTheLanguageUsedAcrossThe": "選擇 Kandev 介面使用的語言", + "chooseWhatOpensWhenKandevStarts": "選擇 Kandev 啓動時或存取其不帶路徑的主頁時開啟的內容", + "chooseWhichTranscriptNavigationControls": "選擇要顯示的對話記錄導航控制項,包括僅限桌面的固定提示欄", + "clearSettingsSearch": "清除設定搜尋", + "clearShortcut": "清除快捷鍵", + "clickAShortcutToRecordA": "點擊快捷鍵以錄製新的按鍵組合。", + "clickAUrlInTheTerminal": "在終端中點擊 URL 即可開啟。", + "cmdCtrlEnterToSend": "按 Cmd/Ctrl+Enter 傳送", + "collectExecutionEnvironmentMetrics": "收集執行環境指標", + "colorTheme": "顏色主題", + "command": "命令", + "completeTheRequiredEditorFieldsBefore": "儲存前請填寫必需的編輯器欄位。", + "configChatAgentDescription": "選擇用於設定聊天的代理程式設定檔。此代理程式可管理你的工作流程、代理程式設定檔與 MCP 設定。", + "configChatAgentNoDefault": "無預設", + "configChatAgentTitle": "設定聊天代理程式", + "configureArchiveSafeguardsAndDefaultsFor": "設定代理程式建立任務時的歸檔保護和預設設定", + "configureBackendAndExecutionResourceSampling": "設定後端和執行資源採樣", + "configureStatusBarVisibility": "選擇是否顯示 Kandev 的狀態區域", + "configureChatInputBehavior": "設定聊天輸入行為", + "configureSpritesApiToken": "在執行器設定檔中設定 <1>{{envVar}} 環境變量,並引用儲存 Sprites.dev API 權杖的密鑰。", + "configureTerminalAppearanceAndBehavior": "設定終端外觀和行為", + "configureTheIncludedCodeEditorAnd": "設定內置程式碼編輯器和外部編輯器", + "configureTheInitialDesktopTaskWorkbench": "設定桌面任務工作區的初始佈局。", + "confirmBeforeArchivingTasks": "歸檔任務前確認", + "connectKandevToThirdPartyServices": "將 Kandev 連接到第三方服務。連接範圍與可用設定顯示在各集成頁面上。", + "connected": "已連接", + "connection": "連接", + "connectionTestFailed": "連接測試失敗", + "connectionTestPassed": "連接測試通過", + "continueEditing": "繼續編輯", + "couldnTSave": "<0> 無法儲存", + "couldnTSave2": "無法儲存", + "couldnTReset": "<0> 無法重置", + "couldnTReset2": "無法重置", + "cpu": "CPU %", + "cpuTemp": "CPU 温度", + "createANewEditableLayoutBased": "基於「預設」新建可編輯佈局。", + "createANewSplitOfThe": "在所選拆分區域的{{direction}}新建拆分區域。", + "createASeparateCustomCopyOf": "為所選佈局建立獨立的自訂副本。", + "custom": "自訂", + "customEditorType": "自訂", + "customEditors": "自訂編輯器", + "customEllipsis": "自訂…", + "customFontExample": "例如 \"我的自訂字體\"", + "customizeHowChangedFilesAreDisplayed": "自訂變更檔案的顯示方式", + "customizeHowTheApplicationLooks": "自訂應用外觀", + "customizeKeyboardShortcutsForTheCommand": "自訂命令面板的鍵盤快捷鍵", + "customized": "已自訂", + "dark": "深色", + "decreaseHeight": "減小高度", + "decreaseWidth": "減小寬度", + "default": "預設", + "defaultMenloMonaco": "預設(Menlo / Monaco)", + "defaults": "預設值:", + "delete": "刪除", + "deleteLayoutProfile": "刪除佈局設定", + "deleteLayoutProfileNamed": "刪除 {{name}}?", + "deleteSecret": "刪除密鑰", + "deleteThisCustomLayoutAfterConfirmation": "確認後刪除此自訂佈局。", + "desktopNotifications": "桌面通知", + "desktopNotificationsDescription": "當選定的代理程式回合、問題或辦公室事件發生時通知此設備。", + "desktopOnlyWhileYouScrollPast": "僅限桌面端。滾動越過最後一條提示時,將縮短後的副本固定到記錄頂部,並提供展開開關。", + "destroyAll": "全部銷燬", + "diagnosticACPNoSessions": "調試模式下可以下載 ACP 數據,但此帳戶沒有可包含的合格工作階段。", + "diagnosticACPSelectionLimit": "ACP 工作階段最多可選擇十個。", + "diagnosticACPSelectionRequired": "請至少選擇一個符合條件的 ACP 工作階段。", + "diagnosticACPWarning": "ACP 調試訊息可能包含提示詞、回應、工具呼叫、檔案內容、MCP 數據、從環境中獲得的值以及密鑰。分享前請仔細檢查此 ZIP。", + "diagnosticBackendEvents": "後端日誌包含 Kandev 記錄的啓動、生命週期、API、執行器和錯誤事件。", + "diagnosticBundleCancel": "取消", + "diagnosticBundleCreate": "建立診斷包", + "diagnosticBundleDescription": "Kandev 會向已連接的瀏覽器標籤頁請求其最多三天且數量受限的控制台歷史記錄,將其與保留的後端日誌檔案合併,並下載為一個 ZIP。", + "diagnosticBundleFailed": "診斷包建立失敗。", + "diagnosticBundlePrepareError": "無法準備診斷包。", + "diagnosticBundleTitle": "前端和後端診斷日誌", + "diagnosticBusy": "診斷功能正忙。請在 {{seconds}} 秒後重試。", + "diagnosticClearACPSelection": "清除 ACP 選擇", + "diagnosticCollectingFrontendLogs": "正在收集前端日誌…", + "diagnosticCustomize": "自訂診斷包", + "diagnosticCustomizerDescription": "選擇要包含的證據。預設選擇後端和前端日誌,且不會將任何選擇儲存為偏好設定。", + "diagnosticCustomizerTitle": "自訂診斷包", + "diagnosticFrontendEvents": "前端日誌包含此瀏覽器設定中記錄的控制台錯誤、警告和診斷通知報告。", + "diagnosticIncidentalText": "日誌條目中已寫入的附帶文字不會自動脱敏。分享前請檢查 ZIP。", + "diagnosticNoMessages": "標準診斷包不包含聊天記錄、工作階段訊息或代理程式訊息。", + "diagnosticOpenTask": "在新標籤頁中開啟任務 {{title}}", + "diagnosticPartialZipDownloading": "正在下載部分診斷 ZIP:{{warnings}}", + "diagnosticPartialZipUnavailable": "正在下載部分診斷 ZIP;部分前端日誌不可用。", + "diagnosticPreparingZip": "正在準備 ZIP…", + "diagnosticReviewBeforeSharing": "分享前請檢查", + "diagnosticReviewDescription": "此 ZIP 包含最多三天的後端日誌,以及所連接瀏覽器在本地保留的前端控制台事件。其中可能包含 URL、控制台參數、堆棧、路徑、執行時元數據和用戶可見錯誤。", + "diagnosticSelectAllACPSessions": "選擇所有 ACP 工作階段", + "diagnosticSelectSessions": "選擇 ACP 工作階段", + "diagnosticSelectedSessions_one": "已選擇 {{count}} 個工作階段", + "diagnosticSelectedSessions_other": "已選擇 {{count}} 個工作階段", + "diagnosticSessionReachable": "可存取", + "diagnosticSessionRetained": "主機已保留", + "diagnosticSessionUnavailable": "不可用", + "diagnosticSessionsDescription_one": "最多選擇 {{count}} 個符合條件的工作階段。無法收集不可用的工作階段。", + "diagnosticSessionsDescription_other": "最多選擇 {{count}} 個符合條件的工作階段。無法收集不可用的工作階段。", + "diagnosticSessionsLoading": "正在載入符合條件的工作階段…", + "diagnosticSourceACP": "ACP 調試訊息", + "diagnosticSourceACPDescription": "所選工作階段的原始及標準化代理程式協議幀。", + "diagnosticSourceBackend": "後端日誌", + "diagnosticSourceBackendDescription": "最多三天的 Kandev 後端保留日誌檔案。", + "diagnosticSourceFrontend": "前端日誌", + "diagnosticSourceFrontendDescription": "來自已連接瀏覽器標籤頁、數量受限的控制台事件。", + "diagnosticSourceRequired": "請至少選擇一個證據來源。", + "diagnosticSourceRuntime": "執行時索引", + "diagnosticSourceRuntimeDescription": "白名單內的工作階段狀態和執行器元數據;不包含訊息或提示詞。", + "diagnosticSourcesTitle": "證據來源", + "diagnosticZipDownloading": "診斷 ZIP 正在下載。", + "discardAndLeave": "放棄更改並離開", + "discarding": "正在放棄…", + "disconnected": "已斷開連接", + "discoveryAliasesAgentTaskProfile": "MCP 任務設定,代理程式任務預設", + "discoveryAliasesArchiveConfirmation": "歸檔警告,確認歸檔", + "discoveryAliasesColorTheme": "主題,淺色模式,深色模式,外觀", + "discoveryAliasesDesktopNotifications": "桌面提醒,系統通知", + "discoveryAliasesDisplayLanguage": "語言,翻譯,介面語言", + "discoveryAliasesExternalMcpEndpoints": "MCP URL,HTTP 端點,SSE 端點", + "discoveryAliasesFileEditor": "語言伺服器,LSP,預設編輯器", + "discoveryAliasesKeyboardShortcuts": "快捷鍵,鍵位綁定,鍵盤命令", + "discoveryAliasesLayoutProfiles": "工作區佈局,面板,任務工作台", + "discoveryAliasesNotificationSound": "通知音,提示音,警報音", + "discoveryAliasesPreferredShell": "shell,zsh,bash,終端 shell", + "discoveryAliasesResourceMetrics": "指標,CPU,記憶體,磁碟,狀態欄", + "discoveryAliasesSettingsMenu": "側邊欄,導航,樹形菜單,單分支展開,保留展開,菜單", + "discoveryAliasesStartupPage": "主頁,起始頁,啓動頁", + "discoveryAliasesStatusBar": "底欄,狀態面板,連接狀態,外觀", + "discoveryAliasesSubmitShortcut": "傳送鍵,回車傳送,Command Enter", + "discoveryAliasesTerminalFont": "字體系列,字體,等寬", + "discoveryAliasesTerminalFontSize": "文字大小,終端文字", + "discoveryAliasesTerminalLinks": "URL,開啟連結,瀏覽器", + "discoveryAliasesTranscriptNavigation": "錨定提示欄,滾動到提示,記錄自動滾動", + "discoveryAliasesUtilityActions": "標題產生,分支命名,提交資訊,PR 描述", + "discoveryAliasesUtilityDefaultModel": "實用模型,推理模型,預設 AI 模型", + "disk": "磁碟 %", + "diskPath": "磁碟路徑", + "displayChangedFilesAsAFlat": "將變更檔案顯示為包含完整路徑的單層列表,或顯示為資料夾樹。", + "displayLanguage": "顯示語言", + "done": "完成", + "duplicate": "複製", + "duplicateLayout": "複製佈局", + "edit": "編輯", + "editEditor": "編輯 {{name}}", + "editSecret": "編輯密鑰", + "editorName": "編輯器名稱", + "editorType": "編輯器類型", + "editors": "編輯器", + "enableDesktopNotifications": "啓用桌面通知", + "enableNotificationSound": "啓用通知聲音", + "enterAShellPathOrCommand": "輸入代理程式環境中可用的命令解釋器路徑或命令。", + "enterToSend": "按 Enter 傳送", + "externalMcpAvailableTools": "可用工具", + "externalMcpCategoryCount_one": "{{count}} 個類別", + "externalMcpCategoryCount_other": "{{count}} 個類別", + "externalMcpConfigPathOrCli": "{{path}};或執行下方 CLI 命令", + "externalMcpCopied": "已複製", + "externalMcpCopyToClipboard": "複製到剪貼板", + "externalMcpCopyUrl": "複製 URL", + "externalMcpEndpoints": "端點", + "externalMcpEndpointsDescription": "與 Kandev 使用相同主機與端口。本機代理程式使用 {{localhostHost}};LAN、VPN 與反向代理用戶端使用可達的 Kandev URL。", + "externalMcpGroupAgentProfiles": "代理程式設定檔與 MCP 設定", + "externalMcpGroupAgentProfilesDescription": "管理設定級 MCP 伺服器設定。", + "externalMcpGroupAgents": "代理程式", + "externalMcpGroupAgentsDescription": "檢查並設定代理程式目錄。", + "externalMcpGroupExecutors": "執行器", + "externalMcpGroupExecutorsDescription": "對執行器設定檔進行 CRUD(Docker、獨立、Sprites…)。", + "externalMcpGroupTaskCreation": "任務建立", + "externalMcpGroupTaskCreationDescription": "從外部代理程式建立新的頂層任務或子任務。", + "externalMcpGroupTasks": "任務", + "externalMcpGroupTasksDescription": "列出、移動、歸檔並更新任務狀態。", + "externalMcpGroupWorkflowSteps": "工作流程步驟(列)", + "externalMcpGroupWorkflowStepsDescription": "管理構成工作流程的列。", + "externalMcpGroupWorkspaces": "工作區與工作流程", + "externalMcpGroupWorkspacesDescription": "發現工作區並對工作流程進行 CRUD。", + "externalMcpIntro": "若要從執行在 Kandev <2>外部 的編碼代理程式(例如主機上的 Claude Code、Cursor 或 Codex)管理 Kandev,或從 Kandev 內的 <4>透傳代理程式 管理,請使用此功能。", + "externalMcpIntroPassthrough": "在 Kandev 內以正常模式啓動的代理程式已自動接入 Kandev MCP,無需額外設定。", + "externalMcpOneLiner": "一行命令(寫入 {{path}})", + "externalMcpOpenCodePaths": "{{projectPath}}(項目)或 {{globalPath}}(全局)", + "externalMcpSnippets": "設定片段", + "externalMcpSnippetsDescription": "貼上到代理程式的全局 MCP 設定中。", + "externalMcpSse": "Server-Sent Events(SSE)", + "externalMcpSseHint": "兼容舊版 MCP 用戶端的傳輸方式。", + "externalMcpStreamableHttp": "Streamable HTTP", + "externalMcpStreamableHttpHint": "推薦用於 Claude Code、Cursor 和 Codex。", + "externalMcpToolArchiveTask": "歸檔任務。", + "externalMcpToolCount_one": "{{count}} 個工具", + "externalMcpToolCount_other": "{{count}} 個工具", + "externalMcpToolCreateAgentProfile": "建立新代理程式設定檔(模型、自動批准)。", + "externalMcpToolCreateExecutorProfile": "建立帶設定、準備/清理腳本的設定。", + "externalMcpToolCreateTask": "建立頂層任務,或在明確指定的 {{parentIdParam}} 下建立子任務。", + "externalMcpToolCreateWorkflow": "建立工作流程。", + "externalMcpToolCreateWorkflowStep": "新增帶提示詞、顏色與事件鈎子的新列。", + "externalMcpToolDeleteAgentProfile": "刪除代理程式設定檔。", + "externalMcpToolDeleteExecutorProfile": "刪除執行器設定檔。", + "externalMcpToolDeleteTask": "永久刪除任務。", + "externalMcpToolDeleteWorkflow": "刪除工作流程及其所有步驟(破壞性)。", + "externalMcpToolDeleteWorkflowStep": "刪除步驟(破壞性)。", + "externalMcpToolGetMcpConfig": "讀取設定的 MCP 伺服器映射。", + "externalMcpToolListAgentProfiles": "列出代理程式的設定。", + "externalMcpToolListAgents": "列出已設定的代理程式及其設定。", + "externalMcpToolListExecutorProfiles": "列出執行器的設定。", + "externalMcpToolListExecutors": "列出所有執行器。", + "externalMcpToolListTasks": "列出工作流程中的任務。", + "externalMcpToolListWorkflowSteps": "列出工作流程中的所有步驟。", + "externalMcpToolListWorkflows": "列出工作區中的工作流程。", + "externalMcpToolListWorkspaces": "列出所有工作區。", + "externalMcpToolMoveTask": "將任務移到其他步驟或位置。", + "externalMcpToolReorderWorkflowSteps": "設定步驟 ID 的完整有序列表。", + "externalMcpToolUpdateAgent": "切換 MCP 支援或指定設定檔路徑。", + "externalMcpToolUpdateAgentProfile": "更新名稱、模型或自動批准。", + "externalMcpToolUpdateExecutorProfile": "更新執行器設定檔。", + "externalMcpToolUpdateMcpConfig": "替換設定的 MCP 伺服器映射。", + "externalMcpToolUpdateTaskState": "設定任務狀態:{{states}}。", + "externalMcpToolUpdateWorkflow": "重命名或更新工作流程。", + "externalMcpToolUpdateWorkflowStep": "編輯步驟設定或事件。", + "externalMcpToolsSummary": "{{tools}},共 {{categories}};展開可預覽外部代理程式能做什麼。", + "externalProviders": "外部提供者", + "externalProvidersDescription": "設定用於遠端通知的外部提供者。", + "failedToConnectToBackend": "無法連接到後端", + "failedToSaveLayoutProfiles": "無法儲存佈局設定", + "fileEditor": "檔案編輯器", + "fileListView": "檔案列表視圖", + "fixInvalidLspServerConfigurationBefore": "儲存前請修復無效的 LSP 伺服器設定。", + "flatList": "單層列表", + "fontFamily": "字體", + "fontSize": "字號", + "frequencySeconds": "頻率(秒)", + "fallbackModelUnavailable": "備用模型已不可用,請另選一個", + "fallbackSettings": "後備設定", + "fallbackSettingsSummaryAutomatic": "已啓用自動後備", + "fallbackSettingsSummaryExplicit": "明確指定的後備:{{model}}", + "fallbackSettingsSummaryStrict": "未設定後備", + "fallbackNoteLive": "此工作階段因設定的模型不可用而以備用模型啓動。(備用)標記僅反映目前工作階段,重新載入後不再顯示。", + "modelFallbackSuffix": "(備用)", + "globalSecrets": "全局密鑰", + "health": "執行狀況", + "hostedUrl": "託管 URL", + "icons": "圖標", + "increaseHeight": "增大高度", + "increaseWidth": "增大寬度", + "inferenceAgentAuthRequired": "登入 {{name}} 以載入模型。", + "inferenceAgentNoModels": "{{name}} 未公佈任何模型。", + "inferenceAgentNotConfigured": "{{name}} 未設定為推理用途。", + "inferenceAgentNotInstalled": "本機未安裝 {{name}} CLI。", + "inferenceAgentProbeFailed": "{{name}} 探測失敗。", + "inferenceAgentProbing": "正在設定 {{name}}…", + "inferenceAgentRefresh": "刷新", + "inferenceAgentRefreshing": "正在刷新…", + "inferenceAgentThisAgent": "此代理程式", + "inferenceAgentUnavailable": "{{name}} 已不可用。", + "installed": "已安裝", + "integrationDescriptionAzureDevops": "Azure Boards 工作項與 Azure Repos 拉取要求。", + "integrationDescriptionGithub": "PR 審閱佇列、議題監控與 OAuth 認證資料。", + "integrationDescriptionGitlab": "合併請求建立、討論回覆與自託管主機。", + "integrationDescriptionJira": "Atlassian Cloud 認證資料與 JQL 議題監控。", + "integrationDescriptionLinear": "個人 API 密鑰與團隊預設值。", + "integrationDescriptionSentry": "驗證權杖、組織/項目預設值與議題瀏覽。", + "hideDisabledAgentProfilesFromNav": "在左側導航中隱藏已停用的代理程式設定檔", + "hideDisabledAgentProfilesFromNavDescription": "開啓後,已停用但仍保留的代理程式設定檔也會從左側導航中移除。", + "hideDisabledIntegrationsFromNav": "在左側導航中隱藏已停用的集成", + "hideDisabledIntegrationsFromNavDescription": "開啓後,即使集成仍已設定,已停用的集成也會從側邊欄和移動菜單中移除。", + "invalidJson": "無效 JSON", + "keyboardShortcuts": "鍵盤快捷鍵", + "language": "語言", + "languageServers": "語言伺服器", + "lastVisitedTask": "上次存取的任務", + "layout": "佈局", + "layoutDirectionAbove": "上方", + "layoutDirectionAboveInline": "上方", + "layoutDirectionBelow": "下方", + "layoutDirectionBelowInline": "下方", + "layoutDirectionLeft": "左側", + "layoutDirectionLeftInline": "左側", + "layoutDirectionOfTarget": "{{direction}}(相對於 {{target}})", + "layoutDirectionRight": "右側", + "layoutDirectionRightInline": "右側", + "layoutEditorForProfile": "{{name}} 編輯器", + "layoutProfile": "佈局設定", + "layoutProfileCopyName": "{{name}} 副本", + "layoutProfileDefault": "預設", + "layoutProfileDefaultDescription": "代理程式,並附帶檔案、更改和終端", + "layoutProfileName": "佈局設定名稱", + "layoutProfileNamesMustNotBe": "佈局設定名稱不能為空", + "layoutProfilePlanMode": "計劃模式", + "layoutProfilePlanModeDescription": "代理程式與計劃並排顯示", + "layoutProfilePreviewMode": "預覽模式", + "layoutProfilePreviewModeDescription": "代理程式與瀏覽器並排顯示", + "layoutProfiles": "佈局設定", + "layoutProfilesWereNotSaved": "佈局設定未儲存", + "layoutProfileVsCodeDescription": "代理程式與 VS Code 並排顯示", + "layouts": "佈局", + "ligatures": "連字", + "light": "淺色", + "loading": "載入中…", + "loadingSecrets": "正在載入密鑰…", + "logsPageDescription": "下載一個大小受限的診斷 ZIP,其中包含前端和後端日誌。", + "lspConfigCustomBadge": "自訂", + "lspInstallHintGo": "執行「{{command}}」。需要安裝 Go。", + "lspInstallHintKotlin": "請手動將 {{binary}} 安裝到任務主機的 {{path}} 中。對於本地 Docker 任務,請將其安裝在任務容器內。", + "lspInstallHintPython": "安裝 {{package}}(通過 {{manager}})到 {{dir}}", + "lspInstallHintRust": "從 GitHub Releases 將 {{binary}} 二進制檔案下載到 {{dir}}", + "lspInstallHintTypescript": "安裝 {{server}} 和 {{runtime}}(通過 {{manager}})到 {{dir}}", + "lspLanguageExperimental": "{{language}}(實驗性)", + "makeTheOriginalDefaultLayoutThe": "將原始「預設」佈局設為新任務的起始佈局。", + "makeTheSelectedSplit40Pixels": "使所選拆分區域縮窄 40 像素。", + "makeTheSelectedSplit40Pixels2": "使所選拆分區域加寬 40 像素。", + "makeTheSelectedSplit40Pixels3": "使所選拆分區域縮短 40 像素。", + "makeTheSelectedSplit40Pixels4": "使所選拆分區域增高 40 像素。", + "makesAgentctlValuesAvailableToPlugins": "使 agentctl 的值可供外掛程式和其他使用方使用。內置狀態欄仍僅由宿主使用。", + "manageApiKeysAndCredentialsSecrets": "管理 API 密鑰和認證資料。密鑰會以加密形式存儲,並通過執行器設定檔的環境變量注入代理程式環境。", + "globalScope": "全局", + "modelWithValue": "模型:{{model}}", + "settingsMenu": "設定菜單", + "settingsMenuAccordion": "單分支展開", + "settingsMenuAccordionDescription": "工作區、代理程式和執行器可逐級展開到其中的內容。開啟一個分支會關閉其他分支,因此菜單僅保留目前頁面所在的路徑。", + "settingsMenuFlat": "單層列表", + "settingsMenuFlatDescription": "每個設定頁面顯示為單獨一行,不展開子項。具體工作區、代理程式和執行器需從各自頁面進入。這是預設選項,也是最精簡的菜單。", + "settingsMenuPersistent": "保留展開狀態", + "settingsMenuPersistentDescription": "採用相同的樹形結構,但可同時展開多個分支,並在刷新後保留展開狀態。適合同時查看多個工作區或代理程式;內容較多時菜單會更長。", + "settingsMenuShape": "菜單佈局", + "settingsMenuShapePerDevice": "僅適用於此設備。其他設備和瀏覽器保留各自的選擇。", + "temperatureWithValue": "温度:{{temperature}}", + "workspaceScope": "工作區", + "workspaceSecretsDescription": "管理工作區中儲存庫可用的密鑰。共享代理程式設定檔與執行器設定檔只能使用全局密鑰。", + "workspacesAndAccess": "工作區與存取", + "revealSecretNamed": "顯示密鑰 {{name}}", + "hideSecretNamed": "隱藏密鑰 {{name}}", + "editSecretNamed": "編輯密鑰 {{name}}", + "deleteSecretNamed": "刪除密鑰 {{name}}", + "manageSpritesDevRemoteSandboxIntegration": "管理 Sprites.dev 遠端沙盒集成,以便在隔離的雲環境中執行代理程式。", + "manualInstallRequired": "需要手動安裝", + "markMessagesThatArrivedWhileA": "標記任務不可見期間收到的訊息。立即生效。", + "mcpAffectedToolsHelp": "<0>create_task_kandev 會建立單獨任務。<3>spawn_session_kandev 會向目前任務新增工作階段,因此不使用此偏好設定。", + "mcpCreateTaskScope": "<0>create_task_kandev 會建立新任務和子任務。該設定僅在呼叫時未提供 <4>agent_profile_id 時生效。", + "mcpSpawnSessionScope": "<0>spawn_session_kandev 和你自行建立的任務不受影響。明確選擇的設定始終優先。", + "mcpTaskProfileCurrentTask": "目前任務設定", + "mcpTaskProfileCurrentTaskDescription": "新任務使用建立它的任務所用的相同設定。若後續工作需要相同模型和代理程式設定,請選擇此項。這可能會複用費用更高的設定。", + "mcpTaskProfileWorkspaceDefault": "工作區預設代理程式設定檔", + "mcpTaskProfileWorkspaceDefaultDescription": "設定了工作流程代理程式設定檔時,新任務會使用該設定;否則使用接收任務的工作區預設代理程式設定檔。選擇此項可讓代理程式建立的任務使用標準工作區模型,避免意外複用費用較高的代理程式設定檔。", + "memory": "記憶體 %", + "mergeThisSplitIntoTheSplit": "將此拆分區域合併到包含 {{target}} 的拆分區域。", + "mergeWithTarget": "與 {{target}} 合併", + "messageSubmitKey": "訊息提交快捷鍵", + "metrics": "指標", + "moveTabLeft": "左移標籤頁", + "moveTabRight": "右移標籤頁", + "moveTabToSplit": "將標籤頁移至拆分區域", + "moveThisSplitOf": "按{{direction}}移動此拆分區域,目標為 {{target}}。", + "moveThisTabIntoANewSplit": "將此標籤頁移到目前拆分區域旁的新拆分區域中。", + "moveThisTabIntoAnotherExisting": "將此標籤頁移到另一個現有拆分區域中。", + "moveThisTabIntoTheSplit": "將此標籤頁移到包含 {{target}} 的拆分區域中。", + "moveThisTabOnePositionLeft": "在所在拆分區域中將此標籤頁左移一個位置。", + "moveThisTabOnePositionRight": "在所在拆分區域中將此標籤頁右移一個位置。", + "mustBeAJsonObject": "必須是 JSON 對象", + "name": "名稱", + "nameEGOpenaiProductionKey": "名稱(例如 OpenAI 生產密鑰)", + "nerdFonts": "Nerd Fonts", + "new": "新建", + "newBrowserTab": "新建瀏覽器標籤頁", + "newCustomEditor": "新建自訂編輯器", + "newLayout": "新建佈局", + "newSecret": "新建密鑰", + "newTaskSessionsWillUseThis": "新的任務工作階段將使用此命令解釋器。現有工作階段繼續使用目前命令解釋器。", + "noActiveSprites": "目前沒有活躍的雲沙盒。", + "noAppriseProviders": "尚未設定 Apprise 提供者。", + "noCustomEditorsYet": "還沒有自訂編輯器。", + "noCustomProfiles": "暫無自訂設定", + "noEditorFound": "未找到編輯器。", + "noMatchingSettings": "沒有匹配的設定", + "noProvidersConfiguredYet": "還沒有設定提供者。", + "noSecretsYetAddYourFirst": "還沒有密鑰。新增第一個密鑰即可開始。", + "notConfigured": "未設定", + "notInstalled": "未安裝", + "notificationEventClarificationRequested": "代理程式需要回答", + "notificationEventClarificationRequestedDescription": "代理程式明確提出問題時通知。", + "notificationEventOfficeInboxItem": "辦公室收件箱項目", + "notificationEventOfficeInboxItemDescription": "有新的收件箱項目需要你處理時通知。", + "notificationEventToggle": "{{event}}({{name}})", + "notificationEventTurnFinished": "代理程式回合已完成", + "notificationEventTurnFinishedDescription": "每個代理程式回合完成後通知。", + "notificationEventUpdateAvailable": "Kandev 有可用更新", + "notificationEventUpdateAvailableDescription": "有更新版本的 Kandev 發佈時通知。", + "notificationEvents": "通知事件", + "notificationEventsDescription": "選擇每種通知類型應接收通知的提供者。", + "notificationPermissionCheckFailed": "Kandev 無法檢查通知權限。請重試,然後檢查瀏覽器或操作系統的通知設定。", + "notificationPermissionEnable": "啓用", + "notificationPermissionEnabled": "已啓用", + "notificationPermissionRetry": "重試", + "notificationSound": "通知聲音", + "notificationSoundDescription": "當選定的代理程式回合、問題或辦公室事件發生時在此設備上播放聲音。", + "notificationSoundSelect": "通知聲音", + "notificationType": "通知類型", + "notifications": "通知", + "notificationsBlockedInBrowser": "瀏覽器已阻止通知。請在網站設定中啓用通知,然後點擊刷新。", + "notificationsBlockedInOs": "操作系統的應用通知設定已阻止通知。請在那裏啓用通知,然後點擊刷新。", + "notificationsDescription": "設定提供者,並選擇哪些事件應觸發提醒。", + "notificationsNotShowingHint": "如果看不到通知,請檢查操作系統設定並允許此瀏覽器傳送通知。", + "notificationsUnsupported": "此瀏覽器不支援桌面通知。", + "notifyWhenThisEventOccurs": "此事件發生時通知。", + "openKandevTo": "預設視圖", + "openLinksIn": "開啟連結的方式", + "opensAVsCodeRemoteSsh": "使用該協議開啟 VS Code Remote SSH URL(示例:{{example}})。", + "optionalScheme": "可選協議({{schemes}})", + "optionalUsername": "可選用戶名", + "overrideSettingsSentToEachLanguage": "通過 <2>{{method}} 覆蓋傳送給每個語言伺服器的設定。JSON 格式。", + "password": "密碼", + "pickTheDefaultShellForTask": "選擇任務工作階段的預設命令解釋器", + "pinTheAgentsLiveTodoChecklistAs": "自動將代理程式的實時待辦清單固定為右側面板中的 Todos 標籤頁。即使關閉此選項,您也可以隨時手動新增 Todos 標籤頁。", + "onlyPinWhenTodoListIsNotEmpty": "僅在待辦清單不為空時固定", + "onlyPinWhenTodoListIsNotEmptyDescription": "僅在工作階段有待辦條目時自動固定。手動新增的 Todos 標籤頁不受影響。", + "pluginShortcuts": "外掛程式快捷鍵", + "preferredShell": "首選命令解釋器", + "preferences": "偏好設定", + "pressAKeyCombo": "按下按鍵組合…", + "pressCmdCtrlEnterToSend": "按 Cmd/Ctrl+Enter 傳送訊息。按 Enter 換行。", + "pressEnterToSendMessagesPress": "按 Enter 傳送訊息。按 Shift+Enter 換行。", + "previewSound": "試聽聲音", + "profileForTasksCreatedByAgents": "代理程式建立任務時使用的設定", + "programming": "編程", + "profileFallbackWillBeUsed": "起始模型 {{model}} 已不可用,將使用備用模型 {{fallback}}。", + "profileStartModelUnavailable": "起始模型 {{model}} 已不可用,請在代理程式設定檔中更改。", + "promptAdd": "新增提示詞", + "promptContentPlaceholder": "提示詞內容", + "promptCreateFailed": "無法建立提示詞", + "promptDelete": "刪除提示詞", + "promptDeleteDescription": "這將永久移除 <2>{{name}}。此操作無法撤銷。", + "promptDeleteFailed": "無法刪除提示詞", + "promptDeleteThisPrompt": "此提示詞", + "promptMentionHelp": "在聊天輸入中使用 <1>{{token}} 可插入提示詞內容。按名稱匹配提示詞並就地展開。", + "promptNamePlaceholder": "提示詞名稱", + "promptSaveFailed": "無法儲存提示詞", + "promptsCustomHeading": "自訂提示詞", + "promptsEmpty": "尚無提示詞。新增第一個提示詞以開始使用。", + "promptsInvalidReason": "提示詞名稱與內容為必填項。", + "promptsLoading": "正在載入提示詞…", + "promptsPageDescription": "為聊天輸入建立可複用的提示詞片段。", + "providerName": "提供者名稱", + "pxRange": "px(8-24)", + "refreshNotificationPermission": "刷新通知權限", + "refreshPermissionStatus": "刷新權限狀態", + "remove": "移除", + "removePanel": "移除面板", + "removeThisTabFromTheSaved": "從已儲存佈局中移除此標籤頁。", + "removesTheHostMarkerAndProgress": "移除主機標記和進度條,同時保留指標圖標和值。", + "reset": "重置", + "resetBuiltInLayout": "重置內置佈局", + "resetClearShortcut": "重置(清除快捷鍵)", + "resetToDefault": "恢復預設設定", + "resizeRepositionOrMergeTheSelected": "調整所選拆分區域的大小、位置或合併它。", + "resourceMetrics": "資源指標", + "restoreTheOriginalBuiltInLayout": "恢復原始內置佈局並捨棄其覆蓋設定。", + "resumeTheMostRecentlyOpenedTask": "在此設備上恢復此工作區中最近開啟的任務。", + "retrySave": "重試儲存", + "retryReset": "重試重置", + "runningSprites": "執行中的雲沙盒", + "sameShortcutAs": "與以下項使用相同快捷鍵:{{shortcuts}}", + "saveAndLeave": "儲存並離開", + "saveChanges": "儲存更改", + "saveChangesBeforeLeaving": "離開前儲存更改?", + "saved": "已儲存", + "saving": "正在儲存…", + "savingChanges": "正在儲存更改", + "searchEditors": "搜尋編輯器…", + "searchSettings": "搜尋設定", + "secretValue": "密鑰值", + "secrets": "密鑰", + "security": "安全", + "selectADefaultEditor": "選擇預設編輯器", + "selectAShell": "選擇命令解釋器", + "selectAModel": "選擇模型…", + "sendTestNotification": "傳送測試通知", + "sendTestNotificationFor": "傳送測試通知給 {{name}}", + "serverConfiguration": "伺服器設定", + "setTheFontSizeForThe": "設定終端字號。預設值為 13px。", + "settings": "設定", + "settingsSearchResults_one": "{{count}} 個匹配的設定", + "settingsSearchResults_other": "{{count}} 個匹配的設定", + "shellOptionsUnavailable": "命令解釋器選項不可用", + "showAgentTodoListPanel": "顯示代理程式待辦列表面板", + "showAnchoredPromptBar": "顯示固定提示欄", + "showCleanupDetailsAndSubtaskOptions": "歸檔開始前顯示清理詳情和子任務選項。", + "showHostMetricsInStatusBar": "在狀態欄顯示主機指標", + "showNewDividerInTranscripts": "在記錄中顯示「新訊息」分隔線", + "showScrollToLastPrompt": "顯示滾動到最後一條提示按鈕", + "showScrollToStart": "顯示滾動到開頭按鈕", + "showStatusBar": "顯示狀態欄", + "showStatusBarDescription": "在 Kandev 底部顯示狀態詳情。在手機上,它們會出現在「狀態」抽屜中。關閉此選項時,連接警告仍會顯示。", + "showTheControlThatJumpsTo": "顯示跳轉到記錄開頭的控制項。", + "showTheJumpControlAfterYour": "當最新提示滾動到記錄上方後顯示跳轉控制項。", + "showThePerSessionButtonThat": "顯示每個工作階段的按鈕,用於臨時開關記錄自動滾動。隱藏該按鈕不會改變預設行為:新記錄仍會自動滾動。", + "showTranscriptAutoScrollControl": "顯示記錄自動滾動控制項", + "showsKandevHostValuesOnlyCollection": "僅顯示 Kandev 主機值。用戶端顯示這些值時才開始收集。", + "simplifiedMetrics": "簡化指標", + "sleepInhibitionActive": "任務正在啓動或執行時處於活動狀態。", + "sleepInhibitionAdminOnly": "只有管理員可以更改此安裝範圍的設定。", + "sleepInhibitionAvailable": "可用;目前沒有活動請求。", + "sleepInhibitionCaveat": "容器、Kubernetes、遠端執行器和常開部署通常應保持關閉。它不會讓顯示器保持喚醒,也不會覆蓋用戶明確執行的休眠操作。", + "sleepInhibitionDescription": "任務正在啓動或執行時,讓 Kandev 後端主機保持可用。", + "sleepInhibitionInfoLabel": "主機休眠防護工作方式", + "sleepInhibitionInfoLinux": "Linux 通過 D-Bus 使用 <0>{{method}} 請求 systemd-logind。沒有正在工作的任務時,Kandev 會關閉返回的檔案。", + "sleepInhibitionInfoMacos": "macOS 執行 <0>{{command}}。<1>{{idleOption}} 選項可防止系統空閒休眠。<2>{{waitOption}} 選項會在後端退出時停止輔助程序。", + "sleepInhibitionInfoRelease": "該請求不會讓顯示器保持喚醒,也不會覆蓋用戶明確執行的休眠操作。", + "sleepInhibitionInfoTitle": "Kandev 如何防止主機休眠", + "sleepInhibitionInfoTrigger": "當任一任務正在啓動或執行時,後端會保持一個防休眠請求。", + "sleepInhibitionInfoWindows": "Windows 使用帶系統休眠旗標的 <0>{{api}}。沒有正在工作的任務時,Kandev 會清除該請求。", + "sleepInhibitionLoadFailed": "無法載入主機休眠設定。", + "sleepInhibitionLoading": "正在載入主機休眠設定…", + "sleepInhibitionRequestFailed": "主機休眠請求失敗;任務會正常繼續。", + "sleepInhibitionRetry": "重試載入主機休眠設定", + "sleepInhibitionSaveFailed": "儲存主機休眠設定失敗。", + "sleepInhibitionServiceUnavailable": "主機休眠服務不可用。", + "sleepInhibitionStatusLabel": "主機休眠狀態", + "sleepInhibitionSwitchHint": "預設關閉。此功能可能增加電池或電力消耗,並且隻影響後端主機。", + "sleepInhibitionSwitchLabel": "防止系統空閒休眠", + "sleepInhibitionTitle": "任務執行時防止主機休眠", + "sleepInhibitionUnsupported": "此後端平台不可用。", + "soundPresetChime": "鐘聲", + "soundPresetDing": "叮聲", + "soundPresetPlim": "輕響", + "soundPresetPop": "啵聲", + "splitTab": "拆分標籤頁", + "spriteHealthCold": "冷卻", + "spriteHealthFailed": "失敗", + "spriteHealthHealthy": "健康", + "spriteHealthRunning": "執行中", + "spriteHealthStarting": "正在啓動", + "spriteHealthStopped": "已停止", + "spriteHealthStopping": "正在停止", + "spriteHealthUnhealthy": "異常", + "spriteHealthUnknown": "未知", + "spritesDevProvidesEphemeralCloudSandboxes": "Sprites.dev 提供臨時雲沙盒,用於遠端執行代理程式。", + "startOnYourSavedKanbanPipelineOrList": "從儲存的看板、流水線或列表視圖開始。", + "startupPage": "啓動頁面", + "statusBar": "狀態欄", + "submitShortcut": "提交快捷鍵", + "supportedEditors": "支援的編輯器", + "supportsPlaceholders": "支援佔位符:{{placeholders}}", + "systemDefault": "系統預設", + "systemLoad1Min": "系統負載(1 分鐘)", + "taskActions": "任務操作", + "taskBehavior": "任務行為", + "taskOverview": "任務概覽", + "startModelUnavailable": "已不可用,請另選模型", + "startModelAria": "設定起始模型設定", + "terminal": "終端", + "terminalFont": "終端字體", + "terminalAndEditors": "終端與編輯器", + "terminalFontSize": "終端字號", + "terminalFontSizeMustBeA": "終端字號必須是 8 到 24 之間的數字。", + "terminalLinks": "終端連結", + "testConnection": "測試連接", + "testNotificationBody": "如果你能讀到這條訊息,說明瀏覽器通知正常工作。", + "testNotificationTitle": "測試通知", + "theBuiltInDefaultLayoutWill": "內置「預設」佈局將成為預設佈局。", + "thisAppliesWhenKandevStarts": "這適用於 Kandev 啓動或開啟不帶路徑的主頁時。主頁、返回和工作流程導航始終開啟任務概覽。", + "thisLayoutIsUsedAsThe": "此佈局將用作新任務的起始佈局。", + "thisPageHasUnsavedChangesSave": "此頁面有未儲存的更改。請儲存、放棄或繼續編輯。", + "thisProfileWillBeRemovedWhen": "儲存時將移除此設定。", + "thisSecret": "此密鑰", + "thisWillPermanentlyRemoveSecret": "此操作將永久移除 <2>{{name}}。此操作無法撤銷。", + "todoListPanel": "待辦列表面板", + "tokens": "權杖", + "transcriptNavigation": "對話記錄導航", + "tree": "檔案樹", + "unableToConnect": "無法連接。", + "unavailable": "不可用", + "unbound": "未綁定", + "unreadMessages": "未讀訊息", + "untitledLayout": "未命名佈局", + "updateChannel": "更新通道", + "updateChannelDescription": "選擇此託管服務檢查並應用的發佈版本。", + "updateChannelLatestNightly": "最新 Nightly", + "updateChannelLatestRelease": "最新正式版", + "updateChannelNightly": "Nightly", + "updateChannelNightlyDescription": "通過 npm 從 main 擷取的安裝級預發佈構建。應用使用顯示的確切版本。", + "updateChannelRequiresManagedService": "Nightly 更新需要 Kandev 管理的 npm 或 npx 用戶服務。", + "updateChannelRequiresNpmInstallation": "Nightly 更新僅適用於 npm 或 npx 安裝。", + "updateChannelRequiresServiceMetadata": "Nightly 更新需要有效的 Kandev 服務元數據。", + "updateChannelRequiresUserService": "Nightly 更新僅適用於用戶服務。", + "updateChannelSaveFailed": "無法儲存更新通道。請重試。", + "updateChannelSavingNotice": "在檢查或應用更新前正在儲存通道更改。", + "updateChannelSettingsUnavailable": "更新通道設定不可用。", + "updateChannelStable": "穩定版", + "updateChannelStableDescription": "已簽名的 GitHub 發佈。推薦大多數用戶使用。", + "updateChannelUnavailable": "此安裝無法使用 Nightly 更新通道。", + "updateChannelUnsavedNotice": "檢查或應用更新前請先儲存通道更改。", + "updateChannelUnsupportedServiceManager": "此服務管理器不支援 nightly 更新。", + "uptime": "執行時間", + "useAgentForNewTaskTitles": "使用代理程式產生新任務標題", + "useAsDefault": "設為預設", + "useBuiltInDefault": "使用內置「預設」佈局", + "useThisLayoutAsTheStarting": "將此佈局用作新任務的起始佈局。", + "useThisSettingWhenAnAgent": "當代理程式呼叫會建立任務的 Kandev MCP 工具時使用此設定。如果呼叫未選擇設定,Kandev 必須為新任務分配代理程式設定檔。該設定控制任務的代理程式、模型和設定。", + "usefulWhenKandevIsSelfHosted": "如果 Kandev 部署在遠端伺服器上,這項設定很有用:你可以從全局狀態欄或手機端的狀態面板查看機器資源的簡要資訊。", + "utilityActionsTitle": "操作", + "utilityActionsDescription": "為特定的 Kandev 介面操作覆蓋代理程式設定檔。這些操作不會設定在任務工作階段中執行的代理程式。", + "utilityAddCustomAgent": "新增", + "utilityAgentDescriptionLabel": "描述", + "utilityAgentDescriptionPlaceholder": "簡要描述此代理程式的作用", + "utilityAgentDialogCreate": "建立代理程式", + "utilityAgentDialogCreateTitle": "建立輔助代理程式", + "utilityAgentDialogEditTitle": "編輯輔助代理程式", + "utilityAgentDialogSave": "儲存更改", + "utilityAgentNamePlaceholder": "例如 commit-message", + "utilityAgentPromptHint": "輸入 <1>{{sigil}} 可查看可用變量並自動完成", + "utilityAgentPromptTemplate": "提示詞模板", + "utilityAgents": "輔助代理程式", + "utilityAgentsPageDescription": "一次性助手執行 Kandev 介面操作,例如產生提交和 PR 文字或增強提示詞。它們與任務工作階段中的代理程式分開。", + "utilityCustomAgentsDescription": "使用自訂提示詞建立你自己的輔助代理程式。", + "utilityCustomAgentsEmpty": "無自訂輔助代理程式。", + "utilityCustomAgentsTitle": "自訂輔助代理程式", + "utilityDefaultModelDescription": "選擇內置實用操作使用的設定。設定包含模型、權限和啓動設定。", + "utilityDefaultModelTitle": "預設輔助代理程式模型", + "utilityAgentProfile": "代理程式設定檔", + "utilitySelectProfile": "選擇設定…", + "utilitySearchProfiles": "搜尋代理程式設定檔…", + "utilityNoProfilesFound": "沒有匹配的代理程式設定檔。", + "utilityNoDefaultProfile": "無預設代理程式設定檔", + "utilityUnavailableProfile": "不可用:{{name}}", + "utilityProfileNeedsRepair": "此設定不可用。請選擇啓用的推理設定。", + "viewAvailableSettings": "查看可用設定", + "visualEditorUnavailable": "可視化編輯器不可用", + "vsCodeRemoteSsh": "VS Code Remote SSH", + "whenEnabledInstallYourProjectS": "啓用後,會通過儲存庫設定腳本安裝項目依賴(例如執行 <2>{{command}}),以避免缺少類型錯誤。", + "externalMcpToolListTaskSessions": "按最近啓動的順序列出任務的所有代理程式工作階段,以便其他工具通過 ID 定位工作階段。" +} diff --git a/apps/web/src/locales/zh-hk/sidebar.json b/apps/web/src/locales/zh-hk/sidebar.json new file mode 100644 index 0000000000..8d2d6219d2 --- /dev/null +++ b/apps/web/src/locales/zh-hk/sidebar.json @@ -0,0 +1,110 @@ +{ + "archivedLoadFailed": "無法載入已歸檔任務", + "collapseAllBranches": "全部摺疊", + "orgChart": "組織架構", + "retry": "重試", + "activeWorkspaceBadge": "活動", + "activity": "活動", + "addAgent": "新增代理程式", + "addProject": "新增項目", + "addWorkspace": "新增工作區", + "agentTopology": "代理程式拓撲", + "apiTokens": "API 權杖", + "applicationStatus": "應用狀態", + "applicationStatusItems": "應用狀態項", + "bulkArchiveFailed_one": "歸檔 {{count}} 個任務失敗", + "bulkArchiveFailed_other": "歸檔 {{count}} 個任務失敗", + "bulkDeleteFailed_one": "刪除 {{count}} 個任務失敗", + "bulkDeleteFailed_other": "刪除 {{count}} 個任務失敗", + "closeSettings": "關閉設定", + "collapseGroup": "摺疊 {{label}}", + "collapseSidebar": "摺疊側邊欄", + "connected": "已連接", + "connectedToKandev": "已連接到 Kandev", + "connecting": "正在連接", + "connectingToKandev": "正在連接到 Kandev", + "connection": "連接", + "connectionError": "連接錯誤", + "connectionErrorDetail": "連接錯誤:{{error}}", + "connectionLost": "連接已斷開", + "connectionLostDescription": "連接已斷開至少 10 秒。實時更新可能已過期。", + "connectionUnavailable": "連接不可用", + "connectionUnstable": "連接不穩定", + "connectionUnstableDescription": "連接不穩定。正在重新連接到 Kandev。", + "costs": "費用", + "disabledBadge": "已停用", + "enabledBadge": "已啓用", + "expandGroup": "展開 {{label}}", + "expandSidebar": "展開側邊欄", + "filtersAndSort": "篩選與排序", + "groupAll": "全部", + "groupMultiRepo": "多儲存庫", + "groupUnassigned": "未分配", + "home": "首頁", + "improveKandev": "完善 Kandev", + "inbox": "收件箱", + "kanban": "看板", + "kandevHome": "Kandev 首頁", + "logOut": "登出", + "maxViews_one": "最多 {{count}} 個", + "maxViews_other": "最多 {{count}} 個", + "nestUnder": "嵌套到「{{title}}」下", + "newKanbanWorkspace": "新建看板工作區", + "newOfficeWorkspace": "新建辦公室工作區", + "newTask": "新建任務", + "newView": "新建視圖", + "newViewUnavailable": "無法新建視圖。{{reason}}", + "noAgentsYet": "尚無代理程式", + "noProjectsYet": "尚無項目", + "noTasksYet": "暫無任務", + "noWorkspaces": "無工作區", + "office": "辦公室", + "offline": "離線", + "openStatus": "開啟狀態", + "pausedBadge": "已暫停", + "pollModeFastLabel": "已聚焦,2 秒輪詢", + "pollModePausedLabel": "無訂閲者", + "pollModeSlowLabel": "已訂閲,30 秒輪詢", + "preferences": "偏好", + "profileAndPassword": "個人數據與密碼", + "projects": "項目", + "queuedPromptCount_one": "{{count}} 條排隊提示", + "queuedPromptCount_other": "{{count}} 條排隊提示", + "quickChat": "快速聊天", + "quickTerminal": "快速終端", + "quickChatTerminals": "終端", + "quickChatNewAgent": "新建代理程式", + "quickChatNewTerminal": "新建終端", + "quickChatClose": "關閉快速聊天", + "quickChatTerminalTab_one": "終端 {{count}}", + "quickChatTerminalTab_other": "終端 {{count}}", + "quickChatCloseTerminal_one": "關閉終端 {{count}}", + "quickChatCloseTerminal_other": "關閉終端 {{count}}", + "quickChatTerminalError": "終端錯誤:{{error}}", + "quickChatTerminalUnknownError": "終端無法啓動。", + "quickChatTerminalConnecting": "正在連接終端…", + "quickChatTerminalExited": "終端已退出。", + "quickChatTerminalExitedWithCode": "終端已退出,程式碼為 {{code}}。", + "quickChatAdd": "新增或切換標籤頁", + "reconnecting": "正在重連", + "reconnectingToKandev": "正在重新連接到 Kandev", + "repositories": "儲存庫", + "resizeSidebar": "調整側邊欄大小", + "routines": "例行程序", + "routing": "路由", + "runErrors_one": "{{count}} 個錯誤", + "runErrors_other": "{{count}} 個錯誤", + "saveDiscardFirst": "請先儲存/丟棄", + "skills": "技能", + "stats": "統計", + "switchWorkspace": "切換工作區", + "tasks": "任務", + "toggleTheme": "切換主題", + "unsavedFilterChanges": "未儲存的篩選更改", + "viewAll": "全部", + "viewAllTasks": "所有任務", + "viewLabel": "視圖:{{name}}", + "whatsNew": "新功能", + "work": "工作", + "workspaceFallback": "工作區" +} diff --git a/apps/web/src/locales/zh-hk/stats.json b/apps/web/src/locales/zh-hk/stats.json new file mode 100644 index 0000000000..ecd54b516a --- /dev/null +++ b/apps/web/src/locales/zh-hk/stats.json @@ -0,0 +1,83 @@ +{ + "activity": "活動", + "activityRange": "活動({{range}})", + "averages": "平均值", + "avgPerTask": "每任務平均 {{duration}}", + "bestMonth": "最佳月份", + "bestWeekday": "最佳工作日", + "bestYear": "最佳年份", + "bucket": "時間桶", + "bucketDay": "天", + "bucketMonth": "月", + "bucketWeek": "周", + "completedCount_one": "已完成 {{count}}", + "completedCount_other": "已完成 {{count}}", + "completedTasksOverTime": "隨時間完成的任務", + "completion": "完成情況", + "completionRate": "完成率", + "copied": "已複製", + "copyStats": "複製統計", + "durationSpan": "跨度 {{duration}}", + "errorLoadingStats": "載入統計失敗:{{error}}", + "filesChangedCount_one": "已更改 {{count}} 個檔案", + "filesChangedCount_other": "已更改 {{count}} 個檔案", + "gitActivity": "Git 活動", + "inProgressCount_one": "進行中 {{count}}", + "inProgressCount_other": "進行中 {{count}}", + "less": "更少", + "longestTasks": "耗時最長的任務", + "meanDurationOfCompletedTurnsExcluding": "已完成回合的平均時長,排除 <1 秒、≥1 小時或無訊息的回合", + "meanMessageCountPerTurnSame": "每回合平均訊息數,排除規則與回合時長相同", + "messagesPerTask": "每任務訊息數", + "messagesPerTurn": "每回合訊息數", + "more": "更多", + "mostCommits": "提交最多", + "mostProductive": "最高產", + "mostTasks": "任務最多", + "mostTime": "耗時最多", + "noCompletedTaskDataYet": "暫無已完成任務數據。", + "noCompletedTasksYet": "暫無已完成任務。", + "noDataYet": "暫無數據。", + "noGitActivityYet": "暫無 Git 活動。", + "noModelUsageDataYet": "暫無模型使用數據。", + "noRepositoryStatsYet": "暫無儲存庫統計。", + "overview": "概覽", + "quickestTasks": "最快的任務", + "rangeAllTime": "全部時間", + "rangeLastMonth": "上個月", + "rangeLastWeek": "上週", + "rankedByActiveDuration": "按活動時長排序", + "repoLeaders": "儲存庫排行", + "repoMessagesCount_one": "{{count}} 條訊息", + "repoMessagesCount_other": "{{count}} 條訊息", + "repoSessionsCount_one": "{{count}} 個工作階段", + "repoSessionsCount_other": "{{count}} 個工作階段", + "repoTasksCount_one": "{{count}} 個任務", + "repoTasksCount_other": "{{count}} 個任務", + "repoTurnsCount_one": "{{count}} 個回合", + "repoTurnsCount_other": "{{count}} 個回合", + "repositoryActivity": "儲存庫活動", + "selectAWorkspaceToViewStatistics": "選擇一個工作區以查看統計。", + "sessions": "工作階段", + "signal": "信號", + "statistics": "統計", + "tasks": "任務", + "telemetry": "遙測", + "timeSpent": "耗時", + "toolCalls": "工具呼叫", + "toolShare": "工具佔比", + "topByMessages": "按訊息數", + "topByTurns": "按回合數", + "topModels": "熱門模型", + "topRepositories": "熱門儲存庫", + "totalMessages": "訊息總數", + "totalTurns": "回合總數", + "turnDuration": "回合時長", + "turnsMessagesCount": "{{turns}} 個回合,{{messages}} 條訊息", + "turnsMessagesMiddot": "{{turns}} 個回合 · {{messages}} 條訊息", + "turnsMessagesPerSession": "每工作階段 {{turns}} 個回合 · {{messages}} 條訊息", + "turnsPerTask": "每任務回合數", + "userMsgs": "用戶訊息", + "userShare": "用戶佔比", + "workload": "工作負載" +} diff --git a/apps/web/src/locales/zh-hk/system.json b/apps/web/src/locales/zh-hk/system.json new file mode 100644 index 0000000000..13b4eaf468 --- /dev/null +++ b/apps/web/src/locales/zh-hk/system.json @@ -0,0 +1,513 @@ +{ + "aboutArch": "架構", + "aboutBuildTime": "構建時間", + "aboutCommit": "提交", + "aboutDocumentation": "文檔", + "aboutGoVersion": "Go 版本", + "aboutLoading": "載入中…", + "aboutOs": "操作系統", + "aboutPageDescription": "版本、構建元數據與連結。", + "aboutReportIssue": "報告問題", + "aboutTitle": "關於 Kandev", + "aboutVersion": "版本", + "actionDone": "完成", + "actionFailed": "失敗", + "actionRunning": "執行中…", + "backupsColumnActions": "操作", + "backupsColumnCreated": "建立時間", + "backupsColumnKind": "類型", + "backupsColumnName": "名稱", + "backupsColumnSize": "大小", + "backupsCreate": "建立快照", + "backupsCreateFailed": "建立快照失敗", + "backupsCreateTimeout": "建立快照未在 {{seconds}} 秒內完成", + "backupsCreating": "正在建立…", + "backupsDeleteFailed": "刪除失敗", + "backupsDeleteLabel": "刪除 {{name}}", + "backupsDownloadLabel": "下載 {{name}}", + "backupsEmpty": "尚無備份。版本升級時自動建立,或通過上方按鈕手動建立的快照會顯示在這裏。", + "backupsHelp": "備份是 Kandev 數據庫(任務、工作階段、設定)的完整副本。每次版本升級前 Kandev 會自動建立一份,以便出錯時回滾。你也可以在出廠重置等風險操作前手動建立。", + "backupsKindAuto": "自動", + "backupsKindManual": "手動", + "backupsLoading": "正在載入備份…", + "backupsPageDescription": "存儲在 {{path}} 下的 {{command}} 快照。", + "backupsRestoreLabel": "恢復 {{name}}", + "backupsRetention_one": "磁碟上僅保留最新一份備份。", + "backupsRetention_other": "磁碟上僅保留最新 {{count}} 份備份。", + "backupsTitle": "備份", + "changelogEmpty": "暫無更新日誌條目。", + "changelogViewOnGitHub": "在 GitHub 上查看", + "close": "關閉", + "createUserDescription": "使用你設定的密碼直接建立帳戶。若希望用戶自選密碼,請改用邀請連結。", + "createUserDisplayName": "顯示名稱", + "createUserEmail": "電郵地址", + "createUserFailed": "無法建立用戶。", + "createUserPassword": "密碼", + "createUserRole": "角色", + "createUserSubmit": "建立用戶", + "createUserSubmitting": "正在建立…", + "createUserTitle": "新增用戶", + "databaseDriver": "驅動", + "databaseFactoryReset": "出廠重置", + "databaseFactoryResetHelp": "清除全部 Kandev 數據:任務、工作階段、設定、儲存庫與工作樹。無法撤銷。重置前會先建立備份,但恢復需在重置後使用備份頁面。僅在你希望從頭開始時使用。", + "databaseLastBackup": "上次備份", + "databaseLoading": "正在載入數據庫統計…", + "databaseMaintenanceUnavailable": "SQLite 維護操作對 {{driver}} 不可用。", + "databaseNever": "從未", + "databaseOptimize": "優化", + "databaseOptimizeHelp": "讓數據庫刷新內部索引,使常見查詢保持快速。大量刪除數據後或應用感覺變慢時執行。快速且安全;不更改任何數據。", + "databasePageDescription": "數據庫驅動、大小與可用維護控制項。", + "dataStoragePageDescription": "數據庫統計、備份、磁碟清理和伺服器日誌。", + "databasePath": "路徑", + "databaseRunOptimize": "執行優化", + "databaseRunVacuum": "執行 vacuum", + "databaseSchemaVersion": "架構版本", + "databaseSize": "大小", + "databaseSizeLong": "數據庫大小", + "databaseTitle": "數據庫", + "databaseVacuum": "Vacuum", + "databaseVacuumHelp": "回收數據庫檔案中的未用空間。刪除任務或工作階段後檔案可能隨時間增大;vacuum 會將其壓縮。隨時可安全執行;不更改任何數據。若數據庫看起來很大,可偶爾執行一次。", + "databaseWal": "WAL", + "databaseWalHelp": "預寫日誌。SQLite 先將新更改寫入此附屬檔案,再隨時間合併到主數據庫。非零 WAL 大小是正常的;負載下會暫時增大,檢查點時會縮小。執行 vacuum 會將其重置。", + "databaseWhatIs": "什麼是 {{label}}?", + "desktopUpdateFailed": "桌面更新失敗", + "diskCalculating": "正在計算…", + "diskColumnPath": "路徑", + "diskColumnSize": "大小", + "diskComputedAt": "計算於 {{at}}", + "diskOpen": "開啟", + "diskRefresh": "刷新", + "diskRefreshed": "已刷新", + "diskRefreshHelp": "遍歷 Kandev 數據目錄內的所有子目錄並累計檔案大小。結果會快取幾小時;點擊可立即重新計算。大型工作區可能需要幾秒。", + "diskRefreshing": "正在刷新…", + "diskRowBackups": "備份", + "diskRowDataDir": "數據目錄", + "diskRowQuickChat": "快速聊天", + "diskRowRepos": "儲存庫", + "diskRowSessions": "工作階段", + "diskRowTasks": "任務", + "diskRowWorktrees": "工作樹", + "diskTotal": "總計", + "diskUnmeasuredDirs": "部分目錄無法測量:", + "diskUsageTitle": "磁碟用量", + "dismiss": "關閉", + "factoryResetCompleteBody": "Kandev 數據已清除。請退出並重新啓動應用以全新開始;正在執行的後端仍持有現已清空數據庫的連接,在重啓前不會重建快取。若需回滾,可在備份頁面使用重置前快照。", + "factoryResetCompleteTitle": "出廠重置完成", + "factoryResetFailed": "重置失敗", + "factoryResetPlaceholder": "輸入 {{token}} 以確認", + "factoryResetRequestFailed": "重置請求失敗", + "factoryResetSnapshot": "擦除前會自動在 <1>{{path}} 下建立快照,若改變主意可從備份頁面恢復。", + "factoryResetTitle": "出廠重置", + "factoryResetTypeToConfirm": "輸入 <1>{{token}} 以啓用確認按鈕。擦除完成後需要你退出並重新啓動 Kandev;後端不會自動重啓。", + "factoryResetWipes": "這將清除整個 Kandev 安裝:數據庫、工作樹、儲存庫複製、工作階段、任務與快速聊天工作階段。", + "factoryResetWiping": "正在清除數據…", + "featureToggleDebug": "調試", + "featureToggleEnv": "環境變量:{{envVar}}", + "featureToggleEnvControlled": "由啓動環境控制", + "featureToggleExperimental": "實驗性", + "featureTogglePendingRestart": "待重啓", + "featureToggleRequiresRestart": "需要重啓", + "featureTogglesLoadError": "無法載入功能開關。", + "featureTogglesLoadFailed": "載入功能開關失敗", + "featureTogglesLoading": "正在載入功能開關…", + "featureToggleSource": "來源:{{source}}", + "featureToggleSourceDefault": "預設", + "featureToggleSourceEnv": "環境變量", + "featureToggleSourceOverride": "已儲存的覆蓋", + "featureTogglesPageDescription": "管理 Kandev 功能與診斷開關。", + "featureTogglesRetry": "重試", + "featureTogglesSaved": "功能開關已儲存", + "featureToggleSwitchLabel": "切換 {{label}}", + "featureToggleUseDefault": "使用預設值", + "healthAllPass": "所有系統檢查通過。", + "healthHealthy": "健康", + "healthIssue": "問題", + "healthIssueCount_one": "{{count}} 個問題", + "healthIssueCount_other": "{{count}} 個問題", + "healthLoading": "正在載入健康檢查…", + "healthPassing": "通過", + "healthSeverityError": "錯誤", + "healthSeverityInfo": "資訊", + "healthSeverityWarning": "警告", + "healthSystemChecks": "系統檢查", + "healthTitle": "健康狀態", + "healthWhatsMonitored": "監控內容", + "host": "主機", + "hostMetrics": "主機指標", + "hostWithLabel": "主機:{{label}}", + "inviteCopied": "邀請連結已複製", + "inviteCopy": "複製邀請連結", + "inviteCreate": "建立邀請連結", + "inviteCreating": "正在建立…", + "inviteDescription": "產生一次性邀請連結。電郵地址留空則任何人可用所選角色註冊;填寫電郵地址則將邀請綁定到該地址。", + "inviteDone": "完成", + "inviteEmailOptional": "電郵地址(可選)", + "inviteFailed": "無法建立邀請。", + "inviteReadyDescription": "將此連結分享給受邀者。僅顯示一次;請立即複製。", + "inviteReadyTitle": "邀請連結已就緒", + "inviteTitle": "邀請用戶", + "inviteUrlLabel": "邀請連結", + "ioLoadHelp": "過去一分鐘內正在執行或等待 CPU 的平均任務數。請將該值與主機的 CPU 核心數進行比較。", + "issuesNeedAttention_one": "{{count}} 個問題需要你關注", + "issuesNeedAttention_other": "{{count}} 個問題需要你關注", + "jobStateDone": "完成", + "jobStateFailed": "失敗", + "jobStateQueued": "已排隊", + "jobStateRunning": "執行中", + "lastUpdateUnknown": "上次更新時間未知", + "licensesCount": "{{visible}} / {{total}}", + "licensesEmpty": "沒有匹配篩選的條目。", + "licensesFilterPlaceholder": "按名稱、許可證或生態篩選…", + "licensesPageDescription": "隨 Kandev 發佈的每個 npm 與 Go 依賴的開源許可證。", + "licensesSource": "來源", + "licensesStaleWarning": "因產生失敗,Go 許可證條目複用了已提交的清單。在 go-licenses 正常時請重新產生以刷新 Go 依賴數據。", + "licensesTitle": "第三方許可證", + "licensesToggleLabel": "顯示 {{name}} 的許可證文字", + "messageQueueAdminOnly": "只有管理員可以更改此設定。", + "messageQueueConfigured": "已設定:", + "messageQueueDescription": "控制每個工作階段在新工作被拒絕前可以容納多少條待處理訊息。", + "messageQueueEffective": "目前生效:", + "messageQueueEffectiveHelp": "目前生效值會立即用於新的接納操作。降低此值不會清理已有的排隊條目。", + "messageQueueEnvironmentLockTitle": "由環境管理", + "messageQueueEnvironmentLocked": "{{variable}} 會覆蓋已儲存的設定。請更改環境值並重啓 Kandev,之後才能在此處再次編輯。", + "messageQueueLimitDescription": "此限制會立即應用於新接納的訊息。降低限制不會移除已在等待的訊息,已接受的投遞重試仍然安全。", + "messageQueueLimitTitle": "每工作階段佇列上限", + "messageQueueLoadFailed": "無法載入訊息佇列設定。", + "messageQueueLoading": "正在載入訊息佇列設定…", + "messageQueueMaximumLabel": "每個工作階段的最大訊息數", + "messageQueueMergeDescription": "可在代理程式取用前,將一條排隊訊息合併到正上方的訊息中,把連續相關的跟進內容合成一輪。", + "messageQueueMergeNotice": "僅同一傳送方的相鄰訊息可合併:你自己的排隊訊息可互相合並;另一任務的代理程式排隊的訊息僅在來源任務相同時可合併。工作流程、系統與進行中的訊息永遠不可合併。若兩條訊息合併後、去重後的實體引用合計超過 100(每條訊息的共享上限),合併也會被拒絕。關閉後會立即隱藏合併控制項,不影響已合併的訊息。", + "messageQueueMergeToggleLabel": "啓用排隊訊息合併", + "messageQueueRetry": "重試", + "messageQueueSaveFailed": "儲存訊息佇列設定失敗。", + "messageQueueSourceDefault": "預設值", + "messageQueueSourceEnvironment": "環境", + "messageQueueSourceSetting": "已儲存的設定", + "messageQueueTitle": "訊息佇列", + "messageQueueUnlimited": "無限制", + "messageQueueUnlimitedHelp": "設定為 0 表示無限制。正整數表示一個工作階段中待處理訊息達到該數量後拒絕新訊息。", + "messageQueueValidation": "請輸入大於或等於 0 的整數。", + "metricCpuPercent": "CPU", + "metricCpuTemp": "CPU 温度", + "metricDiskPercent": "磁碟", + "metricIoLoad": "系統負載(1 分鐘)", + "metricMemoryPercent": "記憶體", + "metricsUnavailable": "指標不可用", + "navAbout": "關於", + "navBackups": "備份", + "navDatabase": "數據庫", + "navDataStorage": "數據與日誌", + "navFeatureToggles": "功能開關", + "navLicenses": "許可證", + "navLogs": "日誌", + "navUpdates": "更新", + "navUsers": "用戶", + "reloadPage": "重新載入頁面", + "restartAction": "重啓", + "agentRuntimeUnavailableTitle": "本地代理程式執行時已停止", + "agentRuntimeUnavailableBody": "本地執行時停止後,代理程式操作和工作區工具可能不會更新。你儲存的數據仍然安全。", + "agentRuntimeUnavailableRestartRequired": "請完全重啓 Kandev 以恢復執行。", + "agentRuntimeUnavailableRestart": "重啓 Kandev", + "agentRuntimeUnavailableManual": "請從終端或服務管理器重啓 Kandev。", + "agentRuntimeCheckingRestart": "正在檢查重啓支援…", + "restartManualHint": "方便時從終端或服務管理器重啓。", + "restartPendingChanges": "已儲存的開關更改將在下次啓動 Kandev 時生效。", + "restartPhaseDoneBody": "後端已重新執行。請重新載入頁面以使用最新功能開關狀態重新連接。", + "restartPhaseDoneTitle": "Kandev 已重啓", + "restartPhaseErrorBody": "無法完成重啓。", + "restartPhaseErrorTitle": "重啓失敗", + "restartPhaseRestartingBody": "Kandev 正在停止並重新啓動。此頁面會自動檢測新程序。", + "restartPhaseRestartingTitle": "正在重啓 Kandev", + "restartPhaseStartingBody": "正在準備本地監督程序重啓請求。", + "restartPhaseStartingTitle": "請求重啓", + "restartRequired": "需要重啓", + "restartStartFailed": "重啓 Kandev 失敗", + "restartSupportDetails": "重啓支援詳情", + "restartSupportedHelp": "當 Kandev 在受支援的本地監督程序下執行時,可從此頁面重啓。", + "restartTimedOut": "重啓耗時超過預期。請刷新以查看目前狀態。", + "restartUnsupportedHelp": "在部署預覽、非託管終端執行或不含重啓監督程序的啓動模式下,自動重啓不可用。", + "restoreAction": "恢復", + "restoreBody": "將 <1>{{name}} 覆蓋到目前數據庫。暫存副本就緒後,需要你退出並重新啓動 Kandev 以載入新數據;後端不會自動重啓。", + "restoreCompleteBody": "<0>{{name}} 已寫入目前數據庫。請退出並重新啓動 Kandev 以載入恢復的數據;正在執行的後端仍持有舊版本連接,重啓前會提供過期行。", + "restoreCompleteTitle": "恢復完成", + "restoreFailed": "恢復失敗", + "restorePlaceholder": "輸入 {{token}} 以確認", + "restoreRequestFailed": "恢復請求失敗", + "restoreTitle": "恢復快照", + "restoreTypeToConfirm": "輸入 <1>{{token}} 以啓用確認按鈕。", + "restoreWriting": "正在將快照寫入實時數據庫…", + "selfUpdateDone": "已更新到 {{version}}。", + "selfUpdateDoneUnknown": "已更新到最新版本。", + "selfUpdateFailed": "更新失敗。", + "selfUpdateHelperFailed": "更新助手未能啓動。請檢查服務日誌。", + "selfUpdateInstalling": "正在下載並安裝 {{version}}…", + "selfUpdateInstallingUnknown": "正在下載並安裝新版本…", + "selfUpdateKeepOpen": "請保持此頁面開啟。更新完成後會自動刷新。", + "selfUpdateRestarting": "正在重啓 Kandev;最多可能需要一分鐘。", + "selfUpdateStartFailed": "啓動更新失敗", + "selfUpdateStarting": "正在開始更新到 {{version}}…", + "selfUpdateStartingUnknown": "正在開始更新到新版本…", + "selfUpdateTimedOut": "更新耗時超過預期。請刷新以查看目前版本。", + "settingsRouteNotPorted": "此設定路由由 SPA shell 處理,但其專用用戶端頁面仍在移植中:<1>{{pathname}}", + "setupIssues": "設定問題", + "statusPageDescription": "健康檢查、磁碟用量與版本摘要。", + "storageAcknowledgeDaemon": "確認守護程序", + "storageAcknowledgeDedicatedFirst": "請先確認專用 Docker 守護程序。", + "storageActionFailed": "存儲操作失敗", + "storageActionPending": "請等待目前存儲操作完成。", + "storageActionsDescription": "分析可得到只讀快照;若要立即回收空間,可執行已啓用的清理規則。", + "storageActionsTitle": "安全回收磁碟空間", + "storageAdoptCache": "接管快取", + "storageAdoptDialogDescription": "將允許 Kandev 輪換並隔離位於 {{path}} 的現有快取。路徑必須為絕對路徑,且與 Kandev 回收站位於同一檔案系統。", + "storageAdoptDialogFallbackPath": "所選路徑", + "storageAdoptDialogTitle": "接管外部 Go 構建快取", + "storageAdoptionPending": "請等待 Go 快取接管完成。", + "storageAnalysisComplete": "分析完成", + "storageAnalysisDescription": "目前用量與可回收空間的只讀分解。偶爾執行「分析」以刷新估算;它從不刪除或移動任何內容。", + "storageAnalysisFailed": "分析失敗", + "storageAnalysisRunning": "存儲分析仍在執行。", + "storageAnalysisTitle": "存儲分析", + "storageAnalyze": "分析", + "storageAnalyzing": "正在分析…", + "storageBuildCacheKeepHelp": "清理符合條件的記錄時,Docker 大約保留這麼多構建快取。值越大可保留更多可複用層,但回收空間更少。", + "storageBuildCacheKeepLabel": "保留的構建快取(GB)", + "storageBuildCacheUnusedHelp": "僅未使用時長超過此閾值的構建快取記錄符合條件。增大該值可更久地保護近期構建層。", + "storageBuildCacheUnusedLabel": "構建快取須未使用(小時)", + "storageBusyForceHint": "仍執行清理可能會中斷這些活動工作。", + "storageBusyIntro": "清理可能會中斷以下工作:", + "storageBusyTitle": "存儲清理發現活動中的 Kandev 工作", + "storageCheckIntervalHelp": "Kandev 檢查是否應執行計劃維護的頻率。發現 Kandev 忙碌的檢查會被跳過,並在下一間隔重試。", + "storageCheckIntervalLabel": "檢查間隔(小時)", + "storageCleanContainersAria": "清理 Kandev 容器", + "storageCleanDockerBuildCacheAria": "清理 Docker 構建快取", + "storageCleanGoCache": "清理 Go 快取", + "storageCleanTemporaryArtifacts": "清理過期臨時檔案", + "storageCleaning": "正在清理…", + "storageCleanOrphanWorkspacesAria": "清理孤立任務工作區", + "storageCleanUnusedImagesAria": "清理未使用的 Docker 鏡像", + "storageCleanupComplete": "清理完成", + "storageCleanupFailed": "清理失敗", + "storageCleanupRunning": "存儲清理仍在執行。", + "storageClearEligible": "清除符合條件的項", + "storageClearEligibleDialogTitle": "清除符合條件的隔離項", + "storageContainersDescription": "移除由 Kandev 建立並標記、且已停止未使用的容器。", + "storageContainersHelp": "僅考慮標記為 Kandev 管理的已停止容器,且清單須確認不再需要。執行中的容器與無關 Docker 容器絕不會被此選項移除。", + "storageDedicatedDaemon": "專用 Docker 守護程序", + "storageDedicatedDaemonDescription": "確認無關工作負載不共享此 Docker 守護程序。", + "storageDedicatedDaemonHelp": "構建快取與鏡像所有權無法可靠歸屬到 Kandev。此確認會解鎖守護程序範圍的清理,僅當設定的 Docker 守護程序專用於 Kandev 時才應啓用。Kandev 從不執行卷範圍的 prune。", + "storageDedicatedDialogDescription": "構建快取與未使用鏡像清理會影響整個設定的守護程序,包括 Kandev 以外建立的資源。僅在守護程序專用於此安裝時確認。", + "storageDedicatedDialogTitle": "使用此專用 Docker 守護程序", + "storageDefaultDockerHost": "預設 Docker 主機", + "storageDelete": "刪除", + "storageDeleteDialogDescription": "此操作無法撤銷。Kandev 將永久移除 {{path}}。", + "storageDeleteDialogFallbackPath": "所選隔離條目", + "storageDeleteDialogTitle": "永久刪除隔離數據", + "storageDeletePermanently": "永久刪除", + "storageDeletionComplete": "刪除完成", + "storageDescription": "查看磁碟用量,並在安裝需要時從 Kandev 擁有的工作區、快取與 Docker 資源回收空間。", + "storageDockerBuildCache": "Docker 構建快取", + "storageDockerBuildCacheDescription": "移除舊構建快取,同時保留設定的量。", + "storageDockerBuildCacheHelp": "使用 Docker 的年齡與存儲過濾器移除舊構建快取。不會執行 docker system prune,不會全局移除卷,且在確認專用守護程序前保持停用。", + "storageDockerDescription": "可選的守護程序範圍清理。僅當此 Docker 守護程序專用於 Kandev 時啓用。", + "storageDockerImageLayers": "Docker 鏡像層", + "storageDockerTitle": "Docker 清理", + "storageDockerUnavailable": "設定主機上 Docker 不可用。", + "storageDockerUnavailableBadge": "Docker 不可用", + "storageDockerUnavailableNotice": "Docker 不可用;此主機無法執行 Docker 清理選項。", + "storageDockerUnmeasured": "無法測量 Docker 用量", + "storageDiskTitle": "磁碟容量", + "storageDiskDescription": "包含 Kandev 存儲的檔案系統目前使用情況。", + "storageDiskLoading": "正在載入磁碟容量…", + "storageDiskUnavailable": "磁碟容量暫時不可用。", + "storageDiskUsed": "已滿 {{percent}}%", + "storageDiskUsedSize": "已使用 {{size}}", + "storageDiskCapacitySummary": "可用 {{available}} · 總計 {{total}}", + "storageDiskPath": "存儲路徑", + "storageDiskProgressAria": "磁碟使用率:已滿 {{percent}}%", + "storageDiskHighWarning": "此檔案系統正在變滿(已使用 80% 或更多)。", + "storageDiskCriticalWarning": "此檔案系統已嚴重滿載(已使用 90% 或更多)。", + "storageEligibleNow": "目前符合條件", + "storageEnableGoCacheFirst": "請先啓用託管的 Go 快取。", + "storageEnableManagedGoCacheAria": "啓用託管 Go 快取", + "storageEnterCachePathFirst": "請先輸入絕對快取路徑。", + "storageExternalGoCache": "外部 Go 快取", + "storageExternalGoCacheDescription": "可選允許 Kandev 維護託管路徑外的現有主機快取。", + "storageExternalGoCacheHelp": "接管授予 Kandev 輪換此現有快取的明確權限。除非你接管該精確絕對路徑並確認破壞性存取,Kandev 從不清掃預設用戶快取或其他路徑。", + "storageForceClearAll": "強制全部清除", + "storageForceClearDescription": "嘗試立即永久移除每個隔離項,成功的條目無法撤銷。失敗的條目可能仍可見並可重試。", + "storageForceClearDialogTitle": "強制清除全部隔離", + "storageGoBuildCache": "Go 構建快取", + "storageGoCacheBelowLimit": "Go 構建快取低於設定的大小限制。", + "storageGoCacheMaxHelp": "這是清理觸發閾值,不是硬配額。任務活動時快取可能超過此大小。維護會在超過限制後將所屬快取輪換到隔離區並重建空快取。", + "storageGoCacheMaxLabel": "最大快取大小(GB)", + "storageGoCacheNotOwned": "僅可清理 Kandev 擁有的 Go 構建快取。", + "storageGoCacheSectionDescription": "為新的主機本地執行使用並修剪 Kandev 擁有的快取。", + "storageHistoryEmpty": "尚無存儲維護執行記錄。", + "storageHistoryLoading": "正在載入維護記錄…", + "storageIdleHelp": "計劃清理僅在沒有任何任務、shell 命令、測試、設定、清理或鏡像構建使用託管資源這麼久之後才啓動。「立即執行」不等待此計時器,但資源活動時仍會拒絕執行。", + "storageIdleLabel": "要求空閒(分鐘)", + "storageKandevContainers": "Kandev 容器", + "storageLastAnalyzed": "上次分析 {{time}}", + "storageLoadingData": "正在載入存儲數據…", + "storageMaintenanceHistory": "維護歷史", + "storageManagedContainerCount_one": "{{count}} 個託管容器", + "storageManagedContainerCount_other": "{{count}} 個託管容器", + "storageManagedGoCache": "託管 Go 快取", + "storageManagedGoCacheDescription": "新的主機本地執行使用 {{path}}。", + "storageManagedGoCacheHelp": "啓用後,Kandev 為新的本地任務程序提供專用 Go 構建快取,並在超過最大值時於維護期間輪換。關閉後新執行不再使用託管快取,但不會刪除它。", + "storageMoreInformationAbout": "關於 {{label}} 的更多資訊", + "storageNoEligibleEntries": "尚無符合條件的隔離條目。", + "storageOrphanGraceHelp": "工作區須至少閒置這麼久才可歸類為孤立。增大該值會讓舊工作區在進入隔離前保留更久。", + "storageOrphanGraceLabel": "孤立前等待(小時)", + "storageOrphanWorkspaces": "孤立任務工作區", + "storageOrphanWorkspacesDescription": "將已確認的孤立工作區移至隔離區。", + "storageOrphanWorkspacesHelp": "僅當清單確認沒有活動任務、環境、工作階段或受保護工作樹使用時,Kandev 才選擇任務工作區。工作區先移至隔離區,可在永久刪除前恢復。", + "storagePolicyDescription": "選擇 Kandev 可自動回收的內容及其須遵守的安全限制。", + "storagePolicyLoadingBlock": "請等待存儲設定載入完成。", + "storagePolicyTitle": "維護策略", + "storageProtectedUntil": "保護至 <1>{{deadline}}", + "storagePurgeEligibleCount_one": "這將永久移除 {{count}} 個符合條件的項。", + "storagePurgeEligibleCount_other": "這將永久移除 {{count}} 個符合條件的項。", + "storagePurgeProtectedCount_one": "{{count}} 個受保護項在保留期限前仍會保留。", + "storagePurgeProtectedCount_other": "{{count}} 個受保護項在保留期限前仍會保留。", + "storageQuarantineCardDescription": "清理會先將可恢復數據移到此處,而不是立即刪除。若仍需要可恢復,確定不需要時可永久刪除。", + "storageQuarantineCleanupRunning": "隔離清理仍在執行。", + "storageQuarantinedResources": "已隔離資源", + "storageQuarantineEligibleCount_one": "目前符合條件 {{count}} 項", + "storageQuarantineEligibleCount_other": "目前符合條件 {{count}} 項", + "storageQuarantineEmpty": "沒有可恢復的隔離資源。", + "storageQuarantineHeading": "隔離區", + "storageQuarantineHelp": "隔離區是 Kandev 的可恢復暫存區。孤立任務工作區與輪換的 Go 快取在刪除前會移到這裏。保留期內可恢復;期限過後,後續維護可能會永久刪除。", + "storageQuarantineLoading": "正在載入隔離區…", + "storageQuarantineMovedAside_one": "{{count}} 項已暫存以便在永久刪除前恢復", + "storageQuarantineMovedAside_other": "{{count}} 項已暫存以便在永久刪除前恢復", + "storageQuarantineProtectedCount_one": "{{count}} 項受保護", + "storageQuarantineProtectedCount_other": "{{count}} 項受保護", + "storageQuarantineRetentionHelp": "清理會先將孤立工作區與輪換的 Go 快取移入 Kandev 回收站,而不是立即刪除。保留期內可恢復;期限過後,後續維護可能會永久刪除。", + "storageQuarantineRetentionLabel": "隔離項保留(小時)", + "storageQuarantineSafetyDescription": "在永久刪除前,將可恢復資源保留一段寬限期。", + "storageQuarantineSafetyTitle": "隔離安全", + "storageQuarantineScheduleOff": "自動隔離清理已關閉。準備好時請手動執行維護或使用隔離操作。", + "storageQuarantineScheduleOn_one": "符合條件的條目會在期限後的首次成功維護中移除(空閒門控允許時每 {{count}} 小時)。", + "storageQuarantineScheduleOn_other": "符合條件的條目會在期限後的首次成功維護中移除(空閒門控允許時每 {{count}} 小時)。", + "storageQuarantineTotal": "隔離區總量:{{size}}", + "storageQuarantineUnmeasured": "無法測量隔離區用量", + "storageRefreshFailed": "刷新存儲數據:{{message}}", + "storageResourceTypeGoCache": "go 快取", + "storageResourceTypeTaskWorkspace": "任務工作區", + "storageResourceTypeTemporaryArtifact": "臨時檔案", + "storageRestore": "恢復", + "storageRetentionEnds": "保留期結束於 {{deadline}}。", + "storageRunAnyway": "仍然執行", + "storageRunNow": "立即執行", + "storageScheduleDescription": "控制何時允許啓動自動維護。計劃關閉時手動操作仍可用。", + "storageScheduledMaintenance": "計劃維護", + "storageScheduledMaintenanceDescription": "使用已啓用的資源規則定期回收磁碟空間。", + "storageScheduledMaintenanceHelp": "啓用後,Kandev 按設定間隔檢查此策略,並僅在空閒達到要求後啓動。關閉不會停用「分析」或「立即執行」。", + "storageScheduleTitle": "計劃", + "storageSectionUnavailable": "無法載入此存儲區域", + "storageTaskWorkspaces": "任務工作區", + "storageTemporaryArtifacts": "Kandev 臨時檔案", + "storageTemporaryArtifactsActiveCount_one": "{{count}} 個活動中", + "storageTemporaryArtifactsActiveCount_other": "{{count}} 個活動中", + "storageTemporaryArtifactsDialogAction": "移入隔離區", + "storageTemporaryArtifactsDialogDescription": "符合條件的已登記臨時檔案會先移入隔離區,並可在保留期內恢復。活動中或最近建立的檔案會受到保護。", + "storageTemporaryArtifactsDialogTitle": "清理過期的 Kandev 臨時檔案?", + "storageTemporaryArtifactsNoStale": "沒有超過 24 小時的已登記臨時檔案。", + "storageTemporaryArtifactsProtectedCount_one": "{{count}} 個受保護", + "storageTemporaryArtifactsProtectedCount_other": "{{count}} 個受保護", + "storageTemporaryArtifactsStaleCount_one": "{{count}} 個過期可清理", + "storageTemporaryArtifactsStaleCount_other": "{{count}} 個過期可清理", + "storageTemporaryArtifactsStaleBytes": "{{value}} 可清理", + "storageTemporaryArtifactsUnavailable": "無法測量臨時檔案的所有權", + "storageTitle": "存儲", + "storageToastAnalysisStarted": "已開始存儲分析", + "storageToastCacheAdopted": "已接管 Go 構建快取", + "storageToastDeletionStarted": "已開始永久刪除", + "storageToastEligiblePurgeStarted": "已開始符合條件的隔離清理", + "storageToastForcedPurgeStarted": "已開始強制隔離清理", + "storageToastMaintenanceStarted": "已開始存儲維護", + "storageToastPolicySaved": "存儲策略已儲存", + "storageToastQuarantineRestored": "已恢復隔離資源", + "storageTotalCounted": "已統計總量:{{size}}", + "storageTotalPartial": "部分測量結果", + "storageTrashPath": "回收站:{{path}}", + "storageTypeToConfirm": "輸入 <1>{{phrase}} 以繼續。", + "storageTypeToConfirmAria": "輸入 {{phrase}} 以確認", + "storageUnavailableValue": "不可用", + "storageUnusedDockerImages": "未使用的 Docker 鏡像", + "storageUnusedImagesDescription": "移除沒有任何容器使用的舊鏡像。", + "storageUnusedImagesDetail": "無任何容器使用且超過設定年齡", + "storageUnusedImagesHelp": "僅當沒有執行中或已停止的容器引用該鏡像,且其年齡超過設定值時才移除。這是守護程序範圍的操作,因此需要專用守護程序確認。", + "storageUnusedImagesHoursHelp": "鏡像須對所有容器未使用且超過此年齡後,Kandev 才可移除。增大該值會更久保留舊鏡像。", + "storageUnusedImagesHoursLabel": "鏡像須未使用(小時)", + "storageUserGoBuildCache": "用戶 Go 構建快取", + "storageWorkspacesDescription": "回收 Kandev 能明確識別為不再使用的資源。", + "storageWorkspacesDetail": "寬限期後可回收 {{reclaimable}} · 活動 {{active}}", + "storageWorkspacesTitle": "工作區與容器", + "storageWorkspaceDependencies": "刪除已歸檔或已刪除工作區中的依賴項", + "storageWorkspaceDependenciesDescription": "選擇加入後可刪除依賴目錄,同時保留工作區原始碼和恢復元數據。", + "storageWorkspaceDependenciesHelp": "啓用並儲存後,Kandev 只會在已歸檔或已刪除且未受保護的 Kandev 任務工作區中遞歸檢查下列目錄。缺失目錄、符號連結、活動或受保護工作區,以及 vendor、target、build、dist、.cache 和 .git 等含義不明確的目錄都會跳過。恢復清理過的工作區後可能需要重新安裝依賴項。", + "storageDependencyFoldersTitle": "Kandev 將檢查的資料夾", + "storageDependencyFoldersDescription": "這些確切的目錄名稱構成完整的清理允許列表。", + "storageDependencyFoldersHelp": "Kandev 會遞歸搜尋這些目錄名稱。缺失目錄會跳過。Kandev 永遠不會處理排除的含義不明確名稱、跟隨符號連結或接受自訂路徑。只有已歸檔或已刪除且未受保護的 Kandev 工作區符合條件,恢復後可能需要重新安裝依賴項。", + "storageCleanWorkspaceDependencies": "清理工作區依賴項", + "storageEnableWorkspaceDependenciesAndSave": "請先啓用並儲存依賴清理設定,再執行清理。", + "systemMetrics": "系統指標", + "uiStateHelp": "清除儲存在瀏覽器中的佈局與 UI 偏好(面板大小、固定任務、展開分組等)。若應用顯示異常、面板卡住或佈局不對,可使用此選項。任務、工作階段與伺服器數據不受影響;僅影響目前瀏覽器儲存的 UI 狀態。重置後頁面會重新載入。", + "uiStateReset": "重置", + "uiStateResetLabel": "重置瀏覽器佈局", + "uiStateTitle": "UI 狀態", + "updateAvailable": "有可用更新", + "updatedRelative": "更新於 {{relative}}", + "updatesApply": "應用更新", + "updatesApplyConfirmDesktop": "Kandev 將安裝 {{version}} 並重啓桌面應用。", + "updatesApplyConfirmService": "Kandev 將更新到 {{version}},重新安裝用戶服務並重啓。", + "updatesApplyConfirmTitle": "應用更新?", + "updatesCheckNow": "立即檢查", + "updatesCurrentVersion": "目前版本", + "updatesDownloading": "正在下載更新({{downloaded}} 字節)…", + "updatesDownloadingOfTotal": "正在下載更新({{downloaded}} / {{total}} 字節)…", + "updatesInstalling": "正在安裝更新…", + "updatesLastChecked": "上次檢查 {{at}}", + "updatesLatestRelease": "最新發布", + "updatesNever": "從未", + "updatesNotificationsHint": "通知偏好在 <2>通知 中管理。", + "updatesPageDescription": "目前版本、最新發布以及完整的 Kandev 更新日誌。", + "updatesReleaseNotes": "發佈說明", + "updatesRetryAfter_one": "已檢查過。請在 {{count}} 秒後重試。", + "updatesRetryAfter_other": "已檢查過。請在 {{count}} 秒後重試。", + "updatesTitle": "更新", + "updatesUpToDate": "Kandev 已是最新。", + "usersAddUser": "新增用戶", + "usersColumnActions": "操作", + "usersColumnEmail": "電郵地址", + "usersColumnName": "名稱", + "usersColumnRole": "角色", + "usersColumnStatus": "狀態", + "usersConfirm": "確認", + "usersConfirmDisable": "停用 {{email}}?他們將在所有位置被登出。", + "usersConfirmEnable": "重新啓用 {{email}}?", + "usersConfirmRoleChange": "將 {{email}} 改為 {{role}}?", + "usersDisable": "停用", + "usersEmpty": "尚無用戶。", + "usersEnable": "啓用", + "usersInviteLink": "邀請連結", + "usersLastAdminGuard": "此部署必須至少保留一名活動管理員。", + "usersLoadFailed": "載入用戶失敗。", + "usersLoading": "正在載入用戶…", + "usersMakeAdmin": "設為管理員", + "usersMakeMember": "設為成員", + "usersPageDescription": "管理此實例的帳戶、角色與邀請連結。", + "usersRoleAdmin": "管理員", + "usersRoleMember": "成員", + "usersStatusActive": "活動", + "usersStatusDisabled": "已停用", + "usersTakesEffectImmediately": "{{email}};立即生效。", + "usersTitle": "用戶", + "usersUpdateFailed": "無法更新用戶", + "versionCurrent": "目前", + "versionLatest": "最新", + "versionTitle": "版本", + "versionViewUpdates": "查看更新" +} diff --git a/apps/web/src/locales/zh-hk/task.json b/apps/web/src/locales/zh-hk/task.json new file mode 100644 index 0000000000..27c204be91 --- /dev/null +++ b/apps/web/src/locales/zh-hk/task.json @@ -0,0 +1,1518 @@ +{ + "agentCliNotInstalled": "未安裝代理程式 CLI", + "agentProbeFailed": "代理程式探測失敗", + "aPullRequestAlreadyExistsFor": "此任務已存在拉取要求", + "archivedTask": "已歸檔任務", + "aSharedDocumentForYouAnd": "供你與代理程式協作制定方案的共享文檔", + "aboutContextWindowSource": "關於上下文窗口來源", + "activeBadge": "活躍", + "activeSessionRepositoryTapToSwitch": "目前工作階段:{{agentLabel}}。儲存庫:{{repositoryLabel}}。點按以切換。", + "activeSessionTapToSwitch": "目前工作階段:{{agentLabel}}。點按以切換。", + "activeSharesForThisSession": "此工作階段的有效分享", + "activeTerminalTapToSwitch": "目前終端:{{label}}。點按以切換。", + "activity": "動態", + "add": "新增", + "addAComment": "新增評論…", + "addACommentFromTheDiff": "從差異或檔案視圖新增評論,然後回到此處審閱併傳送。", + "addAPortThatIsnT": "新增未自動檢測的端口。適用於尚未啓動的服務。", + "addAgent": "新增代理程式", + "addAnOptionalComment": "新增可選評論", + "addAnotherRemoteRepository": "新增另一個遠端儲存庫", + "addAnotherRepository": "新增另一個儲存庫", + "addApprover": "+ 新增審批人", + "addAtLeastOneSource": "請至少新增一個來源。", + "addBlocker": "+ 新增阻塞項", + "addDetailsAboutThisChange": "新增此變更的詳細說明…", + "addFolder": "新增資料夾", + "addLabel": "新增標籤", + "addLabels": "+ 新增標籤", + "addMore": "新增更多", + "addPanel": "新增面板", + "addPortManually": "手動新增端口", + "addRemoteRepository": "新增遠端儲存庫", + "addRepositoriesToWorkspace": "向工作區新增儲存庫", + "addRepository": "新增儲存庫", + "addReviewer": "+ 新增審閱人", + "addShort": "+ 新增", + "addSubIssue": "新增子議題", + "addToWorkspace": "新增到工作區", + "addYourCommentOrInstruction": "新增你的評論或指示…", + "addedRemoved": "新增 {{added}} · 刪除 {{removed}}", + "adding": "正在新增…", + "advanced": "高級", + "afterDuration": ",耗時 {{duration}}", + "agent": "代理程式", + "agentBootFailedToResume": "恢復代理程式 {{agentName}} 失敗", + "agentBootFailedToStart": "啓動代理程式 {{agentName}} 失敗", + "agentBootResumed": "已恢復代理程式 {{agentName}}", + "agentBootResuming": "正在恢復代理程式 {{agentName}}", + "agentBootStarted": "已啓動代理程式 {{agentName}}", + "agentBootStarting": "正在啓動代理程式 {{agentName}}", + "agentCount_one": "{{count}} 個代理程式", + "agentCount_other": "{{count}} 個代理程式", + "agentFallbackName": "代理程式", + "agentHasEncounteredAnError": "代理程式遇到錯誤", + "agentImage": "代理程式鏡像", + "agentIsRunning": "代理程式執行中", + "agentIsStarting": "代理程式正在啓動", + "agentOutput": "代理程式輸出", + "agentPermissionMode": "代理程式權限模式", + "agentPlan": "代理程式計劃", + "agentProfile": "代理程式設定檔", + "agentProfile2": "代理程式設定檔", + "agentProfileNoLongerExists": "代理程式設定檔已不存在", + "agentRunning": "代理程式執行中", + "agentSetByWorkflow": "由工作流程設定的代理程式", + "agentctl": "Agentctl", + "allChanges": "全部更改", + "allChangesTitle": "全部變更", + "allWorkspaceRepositoriesAdded": "工作區儲存庫均已新增", + "alreadyAdded": "已新增", + "alsoArchiveSubtasks_one": "同時歸檔 {{count}} 個子任務", + "alsoArchiveSubtasks_other": "同時歸檔 {{count}} 個子任務", + "alsoDeleteSubtasks_one": "同時刪除 {{count}} 個子任務", + "alsoDeleteSubtasks_other": "同時刪除 {{count}} 個子任務", + "alwaysAllow": "始終允許", + "amend": "修訂", + "amendCommitMessage": "修訂提交說明", + "amendCommitMessage2": "修訂提交說明", + "amendMessage": "修訂說明", + "amending": "正在修訂…", + "anEnvironmentIsCreatedWhenYou": "在此任務上啓動工作階段時會建立環境。", + "anErrorOccurred": "發生錯誤", + "anUnexpectedErrorOccurred": "發生意外錯誤", + "andMoreFilesTruncated": "…還有更多檔案(已截斷)", + "annotationArea": "區域", + "annotationAreaSized": "區域 {{w}}x{{h}}", + "annotationCount_one": "{{count}} 個標註", + "annotationCount_other": "{{count}} 個標註", + "annotationPin": "圖釘", + "answer": "回答", + "anyUncommittedOrUnpushedChangesAre": "任何未提交或未推送的更改都會丟失。", + "anyUncommittedOrUnpushedChangesIn": "工作區中任何未提交或未推送的更改都會丟失。", + "anyoneWithThisLinkCanView": "任何擁有此連結的人都可以查看此對話。發佈前請仔細檢查預覽;發佈後,快照會上傳到你帳戶的 GitHub Gist。", + "approve": "批准", + "approveAndContinue": "批准並繼續", + "approveThisAction": "批准此操作?", + "approved": "已批准", + "approvedLowercase": "已批准", + "approvedThisTask": "{{who}} 批准了此任務", + "approvedVerb": "已批准", + "approvers": "審批人", + "archive": "歸檔", + "archiveTaskConfirm": "確定要歸檔「{{taskTitle}}」嗎?", + "archiveTaskTitle": "歸檔任務?", + "archiveTasksConfirm_one": "確定要歸檔 {{count}} 個任務嗎?", + "archiveTasksConfirm_other": "確定要歸檔 {{count}} 個任務嗎?", + "archiveTasksTitle_one": "歸檔 {{count}} 個任務?", + "archiveTasksTitle_other": "歸檔 {{count}} 個任務?", + "archiveTasks_one": "歸檔 {{count}} 個任務", + "archiveTasks_other": "歸檔 {{count}} 個任務", + "askToMakeChanges": "請求修改,@提及檔案", + "askToMakeChangesWithCommands": "請求修改,@提及檔案,執行 /commands", + "assignee": "負責人", + "attachFiles": "附加檔案", + "attachment": "附件", + "attachmentIndexed": "附件 {{index}}", + "attachmentIsTooLarge": "附件過大", + "attachmentLimitReached": "已達附件數量上限", + "attachmentPreview": "附件預覽", + "attachmentSizeKb": "({{size}} KB)", + "attachmentsCanTotalUpTo": "附件總大小最多 {{bytes}}。", + "authentication": "身份驗證", + "authenticationRequiredLogInBeforeResuming": "需要身份驗證,請先登入再恢復", + "authenticationRequiredPleaseLogInVia": "需要身份驗證;請通過終端登入", + "autoMarkReviewedOnScroll": "滾動時自動標記為已審閱", + "autoStart": "自動啓動", + "availableModes": "可用模式", + "awaitingApprovalFromAgents_one": "等待 {{count}} 個代理程式批准", + "awaitingApprovalFromAgents_other": "等待 {{count}} 個代理程式批准", + "awaitingUserResponse": "等待用戶回應 (pending_id={{pendingId}})", + "back": "返回", + "backendRejectedSessionRequest": "後端拒絕了工作階段請求。", + "background": "後台", + "backgroundWorkIsRunning": "後台工作正在執行", + "baseBranch": "基準分支", + "baseBranch2": "基礎分支", + "behindCount": "落後 {{behind}}", + "binaryFile": "二進制檔案", + "binaryOrEmptyDiff": "{{path}};二進制或空差異", + "blank": "空白", + "blocked": "已阻塞", + "blockedBy": "被阻塞於", + "blocking": "阻塞中", + "blocks": "阻塞", + "bothVersionsAreEmpty": "(兩個版本均為空)", + "branch": "分支", + "branchBasedOn": "分支 <1>{{branch}},基於 <3>{{base}}", + "branchComparisonAndTaskGitCredentials": "分支比較與任務 Git 認證資料。", + "branchDetails": "分支詳情", + "branchIsNoLongerAvailable": "分支已不可用", + "branchName": "分支名稱", + "browser": "瀏覽器", + "browserPreview": "瀏覽器預覽", + "buildingPreview": "正在產生預覽…", + "byAuthor": "由 {{author}}", + "byDefaultTheLocalExecutorUses": "預設情況下,本地執行器使用儲存庫的目前檢出。點擊可改為從基礎分支建立新分支,從而不改動你的工作樹。", + "cachedInput": "快取輸入", + "cancelAgent": "取消代理程式", + "cancelLeavesWorkspaceUnchangedDetail": "<0>取消會使工作區保持不變。若繼續,該批處理為全有或全無:任一來源失敗時,不會附加任何新來源。", + "cancelTaskTree": "取消任務樹", + "cancelTree": "取消任務樹", + "cancelled": "已取消", + "cancelledTree": "已取消(任務樹)", + "cancelling": "正在取消…", + "cannotMarkDoneAwaitingApprovalFrom": "無法標記為完成:正在等待 {{names}} 的批准", + "cannotMarkDoneAwaitingApprovals": "無法標記為完成:正在等待批准", + "cannotPreviewThisFile": "無法預覽此檔案", + "changeGithubIssue": "更改 GitHub 議題", + "changes": "變更", + "changesDiscarded": "更改已丟棄", + "changesHiddenBanner_one": "另有 {{formattedCount}} 個更改檔案已隱藏;變更集過大,無法完整渲染。", + "changesHiddenBanner_other": "另有 {{formattedCount}} 個更改檔案已隱藏;變更集過大,無法完整渲染。", + "chat": "聊天", + "chooseALinkedPullRequestOr": "選擇已關聯的拉取要求或合併請求,在其提供者處開啟。", + "chooseFromSavedOrDiscoveredRepositories": "從已儲存或已發現的儲存庫中選擇。", + "chooseLocalFolder": "選擇本地資料夾", + "chooseLocalGitRepository": "選擇本地 Git 儲存庫", + "chooseRepositoriesOrFoldersToMake": "選擇要在此任務中可用的儲存庫或資料夾。", + "cleanup": "清理", + "clearAllAnnotations": "清除全部標註", + "clickAnywhereToStartWriting": "點擊任意位置開始編寫", + "clickRefreshToDetectListeningPorts": "點擊刷新以檢測監聽端口。", + "cloneFromAProviderOrGit": "從提供者或 Git URL 複製。", + "close": "關閉", + "close2": "關閉 {{label}}", + "closeComposeBoxHelp": "關閉編寫框(或在其中按 <1>Esc)。CLI 代理程式終端保持焦點。", + "closeGroup": "關閉分組", + "closeOthers": "關閉其他", + "closePreview": "關閉預覽", + "closeTerminal": "關閉終端?", + "closeTerminal2": "關閉終端", + "closingTerminal": "正在關閉終端", + "cmdEnterToAdd": "⌘+Enter 新增", + "cmdEnterToUpdate": "⌘+Enter 更新", + "codeLanguagePlain": "純文字", + "collapse": "摺疊", + "collapseAll": "全部摺疊", + "collapseLastPrompt": "摺疊上一條提示詞", + "collapsePlan": "摺疊計劃", + "collapseSubtasks": "摺疊子任務", + "collapseToolbar": "摺疊工具欄", + "color": "顏色", + "colorBlue": "藍色", + "colorGreen": "綠色", + "colorOrange": "橙色", + "colorPink": "粉色", + "colorPurple": "紫色", + "colorRed": "紅色", + "colorYellow": "黃色", + "command": "命令", + "commandCopied": "命令已複製", + "commandFailed": "命令失敗", + "commandOutputUnavailable": "命令輸出不可用。", + "commandRunning": "命令執行中", + "commandSucceeded": "命令成功", + "comment": "評論", + "commentCmdShiftC": "評論 (Cmd+Shift+C)", + "commentCount_one": "{{count}} 條評論", + "commentCount_other": "{{count}} 條評論", + "commentOnAgentResponse": "對代理程式回覆發表評論", + "commentOnSelection": "對選中內容發表評論", + "comments": "評論", + "commentsOnFiles_one": "{{files}} 上有 {{count}} 條評論", + "commentsOnFiles_other": "{{files}} 上有 {{count}} 條評論", + "commit": "提交", + "commitChanges": "提交變更", + "commitChangesTitle": "提交變更", + "commits": "提交", + "committed": "已提交", + "committingEllipsis": "正在提交…", + "compare": "比較", + "compareRevisions": "比較 v{{before}} → v{{after}}", + "compareWithCurrent": "與目前比較", + "compareWithPrevious": "與上一個比較", + "comparingAgainstLabel": "比較對象:", + "completed": "已完成", + "completedSuccessfully": "{{operationName}} 已成功完成", + "configureCredentials": "設定認證資料", + "connectAHealthySentryInstanceIn": "在「設定 → 集成 → Sentry」中連接健康的 Sentry 實例以關聯議題。", + "connectProviderBanner": "在 <2>設定 中連接原始碼控制提供者,以便從你的儲存庫中選擇。", + "connectingTerminal": "正在連接終端…", + "container": "容器", + "contentMarkdownSupported": "內容(支援 Markdown)", + "context": "上下文", + "contextFieldLabel": "上下文", + "contextWindow": "上下文窗口", + "contextWindowNotMeasured": "上下文窗口:未測量使用量", + "contextWindowUsagePendingExplain": "使用數據將在第一輪完成後顯示。", + "contextWindowUsagePendingPercent": "N/A%", + "contextWindowUsagePendingTokens": "N/A / {{size}} 個 token", + "contextWindowUsed": "上下文窗口:已使用 {{percent}}%", + "contextWindowUsedTokens": "{{used}} / {{size}} 個 token", + "control": "Control", + "controlC": "Control C", + "controlD": "Control D", + "copied": "已複製!", + "copied2": "已複製", + "copied3": "已複製 {{label}}", + "copy": "複製", + "copy2": "複製 {{label}}", + "copyAnnotations": "複製標註", + "copyAnnotationsToClipboard": "複製標註到剪貼板", + "copyCommand": "複製命令", + "copyIdentifier": "複製標識符", + "copyInitialPrompt": "複製初始提示詞", + "copyMessage": "複製訊息", + "copyMessageToClipboard": "複製訊息到剪貼板", + "copyPath": "複製路徑", + "copyToClipboard": "複製到剪貼板", + "copyUrl": "複製 URL", + "copyWorkspacePath": "複製工作區路徑", + "couldNotAddSources": "無法新增來源。你的條目仍保留在此以便重試。", + "couldNotLoadRepositories": "無法載入儲存庫:{{message}}", + "couldNotResolveRemoteRepository": "無法解析遠端儲存庫:{{message}}", + "couldNotSaveStatusBarOrder": "無法儲存狀態欄順序", + "couldnTStartASession": "無法啓動工作階段", + "create": "建立", + "createANewBranch": "建立新分支", + "createAsDraft": "建立為草稿", + "createChangeRequest": "建立 {{shortName}}", + "createChangeRequestLong": "建立 {{longName}}", + "createFailed": "建立 {{shortName}} 失敗", + "createNewRepository": "建立新儲存庫", + "createNewTask": "建立新任務", + "createNewWorkspace": "建立新工作區", + "createOnly": "僅建立", + "createSession": "建立工作階段", + "createSubtask": "建立子任務", + "createWithoutStartingAgent": "建立但不啓動代理程式", + "created": "已建立", + "created2": "已建立 {{longName}}", + "createdBy": "建立者", + "createdSuccessfully": "{{longName}} 建立成功", + "creatingEllipsis": "正在建立…", + "creatingFrom": "正在從 <4>{{displayBranch}} 建立 {{shortName}}", + "creatingFromTo": "正在從 <4>{{displayBranch}} 到 <7>{{baseBranch}} 建立 {{shortName}}", + "credentialsAvailableInExecutor": "所選執行器中已提供認證資料", + "ctrl": "Ctrl", + "current": "目前", + "current2": "目前", + "currentStep": "目前步驟", + "customPrompt": "自訂提示詞", + "customPromptNamed": "自訂提示詞:{{name}}", + "cwd": "cwd:", + "dedicatedPortTunnelAppIsServed": "專用端口隧道。應用在 / 提供,因此資源與路由可正常工作。", + "defaultSubtaskTitle": "{{parent}} / 子任務 {{index}}", + "delete": "刪除", + "delete2": "刪除 {{name}}", + "deleteAgent": "刪除代理程式", + "deleteComment": "刪除評論", + "deleteFolderConfirm": "將永久刪除 <1>{{name}}。此操作無法撤銷。", + "deleteFolderTitle": "刪除資料夾?", + "deleteFolderWithFilesConfirm_one": "將永久刪除 <1>{{name}} 及其內的 <4>{{count}} 個檔案。此操作無法撤銷。", + "deleteFolderWithFilesConfirm_other": "將永久刪除 <1>{{name}} 及其內的 <4>{{count}} 個檔案。此操作無法撤銷。", + "deleteItemsLabel_one": "刪除 {{count}} 項", + "deleteItemsLabel_other": "刪除 {{count}} 項", + "deleteItemsTitle_one": "刪除 {{count}} 項?", + "deleteItemsTitle_other": "刪除 {{count}} 項?", + "deleteLayoutConfirm": "刪除 {{name}}?", + "deleteSession": "刪除工作階段?", + "deleteTaskConfirm": "確定要刪除「{{taskTitle}}」嗎?此操作無法撤銷。", + "deleteTaskTitle": "刪除任務", + "deleteTasksConfirm_one": "確定要刪除 {{count}} 個任務嗎?此操作無法撤銷。", + "deleteTasksConfirm_other": "確定要刪除 {{count}} 個任務嗎?此操作無法撤銷。", + "deleteTasksCount_one": "刪除 {{count}} 個任務", + "deleteTasksCount_other": "刪除 {{count}} 個任務", + "deleteTasksTitle_one": "刪除 {{count}} 個任務", + "deleteTasksTitle_other": "刪除 {{count}} 個任務", + "deletesTheCurrentTaskEnvironmentContainer": "刪除目前任務環境(容器、沙箱和/或工作樹),並在下次執行時強制建立新環境。", + "deleting": "正在刪除…", + "deliverTheseCommentsToTheCli": "將這些評論作為單條訊息投遞到 CLI 代理程式的 stdin;無需開啟聊天框。代理程式收到的 markdown 與在輸入訊息前附加評論時相同。", + "deny": "拒絕", + "describeWhatNeedsToChange": "描述需要變更的內容", + "describeWhatYouWantTheAgent": "描述你希望代理程式做什麼…(@ 插入已儲存的提示詞)", + "describeYourChanges": "描述你的變更…", + "description": "描述", + "description2": "描述", + "destroyTerminalConfirm": "銷燬「{{label}}」?這將終止 PTY 並移除它。", + "detach": "分離", + "detachFromParent": "從父任務分離", + "detachTaskFromParent": "從父任務分離任務?", + "detachWillBecomeTopLevel": "「{{taskTitle}}」將成為頂層任務。其工作流程、子任務與狀態不會改變。", + "detachingChangesTheHierarchyOnlyAccess": "分離僅更改層級。對任何共享工作區的存取保持不變。", + "details": "詳情", + "detected": "已檢測", + "devServer": "開發伺服器", + "diff": "Diff", + "diffSideNew": "新", + "diffSideOld": "舊", + "discard": "丟棄", + "discardAllChangesPermanentlyThisCannot": "永久丟棄全部更改。此操作無法撤銷。", + "discardAllChangesToFiles_one": "將永久丟棄對 {{count}} 個檔案的全部更改。此操作無法撤銷。", + "discardAllChangesToFiles_other": "將永久丟棄對 {{count}} 個檔案的全部更改。此操作無法撤銷。", + "discardChanges": "丟棄更改?", + "discardChanges2": "丟棄更改", + "discardChangesToFile": "將永久丟棄對 <2>{{file}} 的全部更改。此操作無法撤銷。", + "discardCount": "丟棄 {{selectionCount}}", + "discardFailed": "丟棄失敗", + "dismiss": "關閉", + "displayNameOptional": "顯示名稱(可選)", + "documentCount_one": "{{count}} 個文檔", + "documentCount_other": "{{count}} 個文檔", + "documentDeleted": "文檔已刪除", + "documentSaved": "文檔已儲存", + "documents": "文檔", + "documentsAvailable": "可用文檔", + "documentSummary_one": "{{count}} 行 · {{chars}} 個字符", + "documentSummary_other": "{{count}} 行 · {{chars}} 個字符", + "documentSummaryEmpty": "空", + "done": "完成", + "doubleClickToEditOrPress": "雙擊編輯(或按 Enter)", + "doubleClickToKeepThisTab": "雙擊以保持此標籤頁開啟", + "download": "下載", + "downloadingPercent": "正在下載 {{modelLabel}},{{pct}} 百分比", + "draftCreated": "草稿 {{longName}} 已建立", + "dropFilesHere": "將檔案拖放到此處", + "duration": "時長", + "durationValue": "時長:{{duration}}", + "earlierUpdates_one": "更早的更新({{count}})", + "earlierUpdates_other": "更早的更新({{count}})", + "editBranch": "編輯分支 {{branch}}", + "editBranch2": "編輯分支", + "editComment": "編輯評論", + "editMarkdownComment": "編輯 markdown 評論", + "editSummaryLines_one": "{{summary}}({{count}} 行)", + "editSummaryLines_other": "{{summary}}({{count}} 行)", + "editTheMessageForTheMost": "編輯最近一次提交的說明。", + "empty": "(空)", + "emptyGroup": "空分組", + "emptyPlan": "(空計劃)", + "enhancedPromptApplied": "已應用增強提示詞。", + "enhancedPromptInserted": "已插入增強後的提示詞。", + "enterAUrlAboveOrStart": "在上方輸入 URL 或啓動開發伺服器", + "enterAValidPort165535": "輸入有效端口(1-65535),或留空以隨機分配", + "enterAValidPort1655352": "輸入有效端口(1-65535)", + "enterCommitMessage": "輸入提交說明…", + "enterGithubIssueUrlOrNumber": "輸入 GitHub 議題 URL 或編號。", + "enterGithubPrUrlOrNumber": "輸入 GitHub 拉取要求 URL 或編號。", + "enterInspectMode": "進入檢查模式", + "enterMessageContent": "輸入訊息內容…", + "enterNewCommitMessage": "輸入新的提交說明…", + "enterRepositoryUrl": "輸入 GitHub、GitLab 或 Azure DevOps 儲存庫 URL。", + "environment": "環境 {{label}}", + "environmentPreparationFailed": "環境準備失敗", + "environmentPrepared": "環境已準備", + "environmentPreparedOnFreshSandbox": "已在全新沙箱上準備環境", + "environmentPreparedWithWarnings": "環境已準備(有警告)", + "environmentReset": "環境已重置", + "environmentResetFailed": "重置失敗:{{error}}", + "environmentSetupFailed": "環境設定失敗", + "environmentSetupFinishedWithErrors": "環境設定完成但有錯誤", + "environmentStateCurrent": "目前狀態:{{state}}", + "error": "錯誤", + "errorData": "錯誤數據", + "eventCount_one": "{{count}} 個事件", + "eventCount_other": "{{count}} 個事件", + "executor2": "執行器", + "executorEnvironmentIsUnavailable": "執行器環境不可用。", + "executorEnvironmentRunning": "執行器環境執行中", + "executorEnvironmentStopped": "執行器環境已停止", + "executorHintDocker": "將從所選基礎分支建立 Docker 容器,並在任務分支上檢出。", + "executorHintLocal": "代理程式將直接在儲存庫上執行。", + "executorHintWorktreeMulti": "將在父資料夾中為每個儲存庫建立 Git 工作樹。代理程式在該父資料夾中執行,以便並排查看所有工作樹。", + "executorHintWorktreeSingle": "將從基礎分支建立 Git 工作樹。", + "executorProfile2": "執行器設定檔", + "executorSettings": "執行器設定", + "executorSettingsPreparing": "執行器設定,正在準備環境", + "executorSettingsWithStatus": "執行器設定,環境 {{status}}", + "executorTypeLocalDocker": "本地 Docker", + "executorTypeLocalWorktree": "本地(工作樹)", + "executorTypeRemoteDocker": "遠端 Docker", + "executorTypeSpritesSandbox": "Sprites 沙箱", + "executorTypeUnknown": "未知執行器", + "exitCodeShell": "退出碼 {{exitCode}}", + "exitCodeUnavailable": "退出碼不可用", + "exitCodeValue": "退出碼:{{exitCode}}", + "exitInspectMode": "退出檢查模式", + "expandLastPrompt": "展開上一條提示詞", + "expandPlan": "展開計劃", + "expandReview": "展開審閱", + "expandSubtasks": "展開子任務", + "expired": "已過期", + "failed": "失敗", + "failed2": "{{operationName}} 失敗", + "failedAtStep": "失敗於:{{step}}", + "failedToArchiveTask": "歸檔任務失敗", + "failedToChangeCompareBranch": "更改比較分支失敗", + "failedToChangeModel": "更改模型失敗", + "failedToDeleteDocument": "刪除文檔失敗", + "failedToDeleteLayout": "刪除佈局失敗", + "failedToDiscardChanges": "無法放棄更改", + "failedToGenerateContent": "無法產生內容", + "failedToLinkGithubIssue": "關聯 GitHub 議題失敗。", + "failedToLinkGithubPullRequest": "關聯 GitHub 拉取要求失敗。", + "failedToLinkTarget": "關聯 {{target}} 失敗。", + "failedToLoad": "{{modelLabel}} 載入失敗", + "failedToLoadDocuments": "載入文檔失敗", + "failedToLoadPreview": "載入預覽失敗。", + "failedToLoadRevision": "載入修訂失敗", + "failedToLoadRevisionContent": "載入修訂內容失敗", + "failedToOpenFile": "開啟檔案失敗", + "failedToPublishShare": "發佈分享失敗。", + "failedToRead": "讀取 {{name}} 失敗", + "failedToRenameBranch": "重命名分支失敗", + "failedToRenameItem": "重命名項目失敗", + "failedToRenameTask": "重命名任務失敗", + "failedToRestorePlan": "恢復計劃失敗", + "failedToResumeSession": "無法恢復工作階段", + "failedToRevokeShare": "撤銷分享失敗。", + "failedToSaveDocument": "儲存文檔失敗", + "failedToSaveLayout": "儲存佈局失敗", + "failedToSendComment": "傳送評論失敗", + "failedToSendComments": "傳送評論失敗", + "failedToSendMessage": "傳送訊息失敗", + "failedToStartTunnel": "無法啓動隧道:{{error}}", + "failedToStartVsCode": "啓動 VS Code 失敗", + "failedToStopTunnel": "無法停止隧道:{{error}}", + "failedToUnarchiveTask": "取消歸檔任務失敗", + "failedToUnlinkGithubIssue": "取消關聯 GitHub 議題失敗。", + "failedToUpload": "上傳 {{name}} 失敗", + "file": "檔案", + "fileChangesTitle": "檔案變更", + "fileCountLabel_one": "{{count}} 個檔案", + "fileCountLabel_other": "{{count}} 個檔案", + "fileNamesCannotContainPathSeparators": "檔案名不能包含路徑分隔符", + "filename": "檔案名…", + "files": "檔案", + "filesChanged_one": "已更改 <0>{{count}} 個檔案", + "filesChanged_other": "已更改 <0>{{count}} 個檔案", + "filesReviewedCount": "已審閱 {{reviewedCount}} / {{totalFileCount}} 個檔案", + "filterBranches": "篩選分支…", + "filterDimensionArchived": "已歸檔", + "filterDimensionExecutorType": "執行器類型", + "filterDimensionHasDiff": "有 diff", + "filterDimensionHasPr": "有 PR", + "filterDimensionIssueWatch": "議題監控", + "filterDimensionPrReview": "PR 審閱", + "filterDimensionRepository": "儲存庫", + "filterDimensionState": "狀態", + "filterDimensionTitle": "標題", + "filterDimensionWorkflow": "工作流程", + "filterDimensionWorkflowStep": "工作流程步驟", + "filterOpContains": "包含", + "filterOpDoesNotContain": "不包含", + "filterOpHide": "隱藏", + "filterOpIn": "屬於", + "filterOpIs": "是", + "filterOpIsNot": "不是", + "filterOpNotIn": "不屬於", + "filterOpShow": "顯示", + "filterStateBacklog": "待辦池", + "filterStateInProgress": "進行中", + "filterStateReview": "審閱", + "filterTitlePlaceholder": "子字符串…", + "filters": "篩選", + "fingerprint": "指紋", + "fix": "修復", + "fixTheMarkedSources": "新增前請先修復標記的來源。", + "folder": "資料夾", + "folderDisplayName": "資料夾顯示名稱", + "forcePush": "強制推送", + "forkANewBranchFromA": "從基礎分支建立新分支(關閉則使用目前檢出)", + "forkANewBranchFromA2": "從基礎分支建立新分支,而非使用目前檢出", + "forkModeANewBranchWill": "分支模式:代理程式執行前將從所選基礎建立新分支。點擊可關閉並改用儲存庫的目前檢出。", + "foundFiles_one": "找到 {{count}} 個檔案", + "foundFiles_other": "找到 {{count}} 個檔案", + "freshBranchTooltip": "從所選基礎建立新分支。本地複製中任何未提交更改將被丟棄;若有更改會要求確認。", + "fromAgent": "來自代理程式", + "fromAgentInTask": "來自任務 <1>「{{fullTitle}}」 中的代理程式", + "fromBranch": "來自 {{branch}}", + "fromSessionInTask": "來自工作階段 <1>「{{sessionName}}」,任務 <3>「{{fullTitle}}」", + "fromTask": "來自 {{title}}", + "fullImpactDetails": "完整影響詳情", + "fullSize": "全尺寸 {{alt}}", + "generatingSummary": "正在產生摘要…", + "generationFailed": "產生失敗", + "gitActions": "Git 操作", + "gitPollMode": "Git 輪詢:{{mode}}({{label}})", + "githubIssue": "GitHub 議題", + "githubIssue2": "GitHub 議題", + "githubIssueLinked": "已關聯 GitHub 議題", + "githubIssueNumbered": "GitHub 議題 #{{number}}", + "githubIssueRefPlaceholder": "#1470 或 {{example}}", + "githubIssueUnlinked": "已取消關聯 GitHub 議題", + "githubPrRefPlaceholder": "#1471 或 {{example}}", + "githubPullRequest": "GitHub 拉取要求", + "githubPullRequestLinked": "已關聯 GitHub 拉取要求", + "gitlabMergeRequest": "GitLab 合併請求", + "goToNextMessage": "轉到下一條訊息", + "goToPreviousMessage": "轉到上一條訊息", + "groupBy": "分組依據", + "groupExecutorType": "執行器類型", + "groupNone": "無", + "groupRepository": "儲存庫", + "groupState": "狀態", + "groupStatusRateLimited": "暫時受到速率限制", + "groupStatusTimeout": "搜尋超時", + "groupStatusUnauthorized": "需要登入", + "groupStatusUnsupportedScope": "此工作區不可用", + "groupStatusUpstreamError": "提供者不可用", + "groupWorkflow": "工作流程", + "groupWorkflowStep": "工作流程步驟", + "handOffToTarget": "移交給 <1>{{label}}", + "handoff": "移交", + "hardReset": "硬重置", + "helpsPreserveCommittedWorkUncommittedChanges": "有助於保留已提交的工作。未提交的更改無法推送。", + "hiddenMessagesInPreview_one": "… 此預覽中還有 {{count}} 條訊息被隱藏(仍包含在分享中)…", + "hiddenMessagesInPreview_other": "… 此預覽中還有 {{count}} 條訊息被隱藏(仍包含在分享中)…", + "hideCommandOutput": "隱藏命令輸出", + "hideDebugInfo": "隱藏調試資訊", + "hideDetails": "隱藏詳情", + "hideErrorDetails": "隱藏錯誤詳情:{{displayLabel}}", + "hidePreparationDetails": "隱藏準備詳情", + "hidePreviousAgentError": "隱藏先前的代理程式錯誤", + "hideRightPanel": "隱藏右側面板", + "hideRightPanels": "隱藏右側面板", + "hideSidebar": "隱藏側邊欄", + "hideTheCommentListTheComments": "隱藏評論列表。評論仍會排隊,下次提交時仍會傳送(在此處或從聊天框)。", + "host": "主機", + "isolatedWorktreeAt": "隔離工作樹位於 <1>{{path}}", + "iUnderstandAnyUncommittedChangesWill": "我了解任何未提交的更改都將丟失。", + "image": "圖片", + "imagePreview": "圖片預覽", + "imageWithSize": "圖片({{bytes}})", + "implement": "實現", + "implementInFreshAgent": "在新代理程式中實現", + "implementThePlanInThisSession": "在此工作階段中實現計劃", + "includeThePlanAsContext": "將計劃作為上下文包含", + "inheritParentWorkspace": "繼承父任務工作區", + "inputTokens": "輸入 token", + "inspectClickToPinOrDrag": "檢查:點擊固定,或拖動以選擇預覽區域", + "inspectingClickToPin": "檢查中;點擊固定,拖動選擇區域,Esc 退出", + "invalidName": "無效名稱", + "isTheMaximumFileSizeIs": "{{name}} 大小為 {{size}}。最大檔案大小為 {{maxSize}}。", + "issue": "議題", + "jiraTicket": "Jira 工單", + "jiraTicketLinked": "已關聯 Jira 工單", + "jiraTicketPlaceholder": "PROJ-123 或貼上工單 URL", + "jiraTicketValidationHint": "貼上 Jira 工單 URL 或鍵(PROJ-123)。", + "kandevAskUserQuestion": "Kandev:向用戶提問", + "kandevCreateTask": "Kandev:建立任務", + "kandevCreateTaskPlan": "Kandev:建立任務計劃", + "kandevDeleteTaskPlan": "Kandev:刪除任務計劃", + "kandevGetTaskConversation": "Kandev:擷取任務對話", + "kandevGetTaskDocument": "Kandev:擷取任務文檔", + "kandevGetTaskPlan": "Kandev:擷取任務計劃", + "kandevListAgents": "Kandev:列出代理程式", + "kandevListExecutorProfiles": "Kandev:列出執行器設定檔", + "kandevListRelatedTasks": "Kandev:列出相關任務", + "kandevListTaskDocuments": "Kandev:列出任務文檔", + "kandevListTasks": "Kandev:列出任務", + "kandevListWorkflowSteps": "Kandev:列出工作流程步驟", + "kandevListWorkflows": "Kandev:列出工作流程", + "kandevListWorkspaces": "Kandev:列出工作區", + "kandevMessageTask": "Kandev:向任務傳送訊息", + "kandevMoveTask": "Kandev:移動任務", + "kandevUpdateAvailable": "Kandev 有可用更新", + "kandevUpdateTask": "Kandev:更新任務", + "kandevUpdateTaskPlan": "Kandev:更新任務計劃", + "kandevWriteTaskDocument": "Kandev:寫入任務文檔", + "keepOpen": "保持開啟", + "keepRunning": "繼續執行", + "keyAndContentAreRequired": "鍵與內容為必填", + "keyArrowDown": "向下箭頭", + "keyArrowLeft": "向左箭頭", + "keyArrowRight": "向右箭頭", + "keyArrowUp": "向上箭頭", + "keyDash": "連字符", + "keyEGPlanNotes": "鍵(例如 plan、notes)", + "keyEnd": "End", + "keyEscape": "Escape", + "keyHome": "Home", + "keyPageDown": "Page Down", + "keyPageUp": "Page Up", + "keyPipe": "豎線", + "keySlash": "斜槓", + "keyTab": "Tab", + "keyTilde": "波浪號", + "keyUnderscore": "下劃線", + "labelAlreadyExists": "標籤已存在", + "labelColor": "標籤顏色", + "labelName": "標籤名稱", + "labels": "標籤", + "layoutPresets": "佈局預設", + "lineLevelDiffBetweenTheTwo": "兩個所選版本之間的行級差異。", + "lineNumber": "第 {{line}} 行", + "lineRange": "第 {{start}}-{{end}} 行", + "linearIssue": "Linear 議題", + "linearIssueLinked": "已關聯 Linear 議題", + "linearIssuePlaceholder": "ENG-123 或貼上議題 URL", + "linearIssueValidationHint": "貼上 Linear 議題 URL 或標識符(ENG-123)。", + "link": "關聯", + "linkGithubIssue": "關聯 GitHub 議題", + "linkGithubPullRequest": "關聯 GitHub 拉取要求", + "linkJiraTicket": "關聯 Jira 工單", + "linkJiraTicketDescription": "為此任務使用 Jira 工單鍵或 URL。", + "linkLinearIssue": "關聯 Linear 議題", + "linkLinearIssueDescription": "為此任務使用 Linear 議題標識符或 URL。", + "linkSentryIssue": "關聯 Sentry 議題", + "linkSentryIssueDescription": "為此任務使用 Sentry 短 ID 或 URL。", + "linkedIssue": "已關聯議題", + "listeningPorts": "監聽端口", + "liveUpdateConsequenceSessionAndProcesses": "<0>工作階段與程序:在 Kandev 重新掃描工作區期間,代理程式與正在執行的工作區程序會繼續執行。任務、工作階段、任務狀態、訊息、計劃、已附加來源、模型與模式均保持不變。", + "liveUpdateConsequenceWorkspace": "<0>工作區:儲存庫會以命名的頂層條目複製到目前遠端工作區下。代理程式的工作目錄不會改變,現有檔案與 Git 變更不會被移動或丟棄。", + "loadOlderMessages": "載入更早的訊息", + "loading": "載入中…", + "loading2": "載入中…", + "loadingAgentProfiles": "正在載入代理程式設定檔…", + "loadingAgents": "正在載入代理程式…", + "loadingBranches": "正在載入分支…", + "loadingBranches2": "正在載入分支…", + "loadingBranches3": "正在載入分支…", + "loadingChangedFiles": "正在載入已更改檔案…", + "loadingChanges": "正在載入更改…", + "loadingCommandOutput": "正在載入命令輸出…", + "loadingCommit": "正在載入提交…", + "loadingConversation": "正在載入對話…", + "loadingEditor": "正在載入編輯器…", + "loadingFile": "正在載入檔案…", + "loadingFiles": "正在載入檔案…", + "loadingOlder": "正在載入更早內容…", + "loadingOlderMessages": "正在載入更早的訊息…", + "loadingPlan": "正在載入計劃…", + "loadingPreview": "正在載入預覽…", + "loadingProfiles": "正在載入設定…", + "loadingRepositories": "正在載入儲存庫…", + "loadingSessions": "正在載入工作階段…", + "loadingStatus": "正在載入狀態…", + "localCommitNotYetPushed": "本地提交(尚未推送)", + "localCheckoutCommit": "本地檢出提交", + "localCheckoutCommits": "本地檢出提交", + "localGitRepository": "本地 Git 儲存庫", + "login": "登入", + "loginRequired": "需要登入", + "manual": "手動", + "markAsFavorite": "標為收藏", + "markMessageAsFavorite": "將訊息標為收藏", + "maximize": "最大化", + "mcpConnectionStatus": "MCP 連接狀態", + "mcpPolicyLabel": "mcp:", + "mcpServers": "MCP 伺服器", + "mentionTasksFilesPrompts": "提及任務、檔案、提示詞", + "merge": "合併", + "mergeRequest": "合併請求 !{{mriid}}", + "mergeRequestLabel": "合併請求", + "messageCommentCount_one": "{{count}} 條訊息評論", + "messageCommentCount_other": "{{count}} 條訊息評論", + "messageCount_one": "{{count}} 條訊息", + "messageCount_other": "{{count}} 條訊息", + "messageMetadata": "訊息元數據", + "messageMetadataTitle": "訊息元數據", + "messageNotSent": "訊息未傳送", + "messageSendStatusUnknown": "訊息傳送狀態未知", + "messageTime": "訊息時間", + "modKeyEnterToAdd": "{{modKey}}+Enter 新增", + "model": "模型", + "monitor": "監控", + "monitorCommand": "監控:{{command}}", + "moreActions": "更多操作", + "moreImplementOptions": "更多實現選項", + "moreNotShown_one": "+ 另有 {{count}} 項未顯示", + "moreNotShown_other": "+ 另有 {{count}} 項未顯示", + "moreToolbarActions": "更多工具欄操作", + "moveFailed": "移動失敗", + "moveFailedFiles": "部分檔案無法移動", + "moveFailedUnexpected": "移動檔案時發生錯誤", + "moveHeadToThisCommitKeep": "將 HEAD 移至此提交。保留所有已暫存更改。", + "moveHere": "移到此處", + "moveTaskToTheNextWorkflow": "將任務移至下一工作流程步驟", + "moveTo": "移動到", + "moving": "正在移動…", + "myLayout": "我的佈局", + "name": "名稱", + "needsInput": "需要輸入", + "nestUnder": "嵌套到", + "new": "新建", + "newAgent": "新建代理程式", + "newAgentInTask": "在 <1>{{title}} 中新建代理程式", + "newDocument": "新建文檔", + "newFile": "新建檔案", + "newMessages": "新訊息", + "newSession": "新工作階段", + "newSession2": "新工作階段", + "newSubTask": "新建子任務", + "newSubtaskFor": "新建子任務:", + "newTask": "新建任務", + "newTerminal": "新建終端", + "newTerminal2": "新建終端", + "newView": "新建視圖", + "newViewName": "新視圖名稱", + "newViewUnavailable": "無法新建視圖。{{newViewDisabledReason}}", + "newline": "⇧↵ 換行", + "next": "下一步", + "nextMessage": "下一條訊息", + "nextQuestion": "下一個問題", + "noActiveSession": "無活動工作階段", + "noActiveSessionDescription": "請先啓動工作階段再使用 AI 產生", + "noActiveTask": "無活動任務", + "noActivityYet": "暫無動態", + "noAgentFound": "未找到代理程式。", + "noAgentProfileConfigured": "未設定代理程式設定檔", + "noAgentProfileConfiguredDetail": "此任務沒有代理程式設定檔,且工作區、工作流程與工作流程步驟均未設定預設值。請選擇預設代理程式設定檔,以便新任務能夠啓動工作階段。", + "noAgentProfileConfiguredFor": "未為 <2>「{{name}}」 設定代理程式設定檔。請在「設定 → 執行器」中設定認證資料。", + "noAgentProfilesConfigured": "未設定代理程式設定檔", + "noAgentProfilesConfiguredAddOne": "未設定代理程式設定檔。請先在「設定 → 代理程式」中新增。", + "noAgentRunning": "無代理程式執行中", + "noAgentsFound": "未找到代理程式。", + "noAgentsFound2": "未找到代理程式", + "noAgentsYet": "尚無代理程式", + "noAgentsYet2": "尚無代理程式。", + "noAssignee": "無負責人", + "noBranches": "無分支", + "noBranchesForUrl": "此 URL 沒有可用分支。", + "noBranchesFound": "未找到分支", + "noChanges": "無更改", + "noChangesToCommit": "沒有可提交的變更", + "noCommandOutput": "無命令輸出。", + "noCommandOutputYet": "尚無命令輸出。", + "noCommentsYet": "暫無評論", + "noCompatibleAgentProfileFor": "未為 {{target}} 設定兼容的代理程式設定檔。請在「設定 → 執行器」中設定代理程式認證資料。", + "noCompatibleAgentProfilesFor": "沒有適用於 {{target}} 的兼容代理程式設定檔。", + "noContent": "無內容", + "noDecisionYet": "尚未決定", + "noDocumentsFound": "未找到文檔。", + "noDocumentsYet": "暫無文檔。", + "noEditorsAvailable": "無可用編輯器", + "noEnvironmentYet": "尚無環境", + "noExecutorFound": "未找到執行器。", + "noFilesFound": "未找到檔案", + "noFilesInThisCommit": "此提交中無檔案", + "noItemsFound": "未找到項目。", + "noLabelsYet": "暫無標籤", + "noListeningPortsDetected": "未檢測到監聽端口。", + "noMatches": "無匹配項", + "noMatchingBranches": "無匹配分支", + "noMessagesFound": "未找到訊息。", + "noMessagesYetStartTheConversation": "暫無訊息。開始對話吧!", + "noOptions": "無選項", + "noOptions2": "無選項。", + "noOtherTasks": "無其他任務", + "noParent": "無父項", + "noPendingReviewComments": "無待傳送的審閱評論。", + "noPlan": "無計劃", + "noPlanFound": "未找到計劃。", + "noProfileFound": "未找到設定。", + "noProfilesFound": "未找到代理程式設定檔。", + "noProject": "無項目", + "noProjectsFound": "未找到項目。", + "noQuestionsFound": "未找到問題。", + "noRecentTasksYet": "尚無最近任務", + "noRelatedTasksFound": "未找到相關任務。", + "noRepositories": "無儲存庫", + "noRepositoriesAvailableInWorkspace": "此工作區中沒有可用儲存庫", + "noRepositoriesFound": "未找到儲存庫。", + "noResourceDetailsAvailable": "無可用資源詳情。", + "noResultsFound": "未找到結果", + "noRevisionsYetEditsWillAppear": "尚無修訂。編輯將顯示在此。", + "noSavedLayouts": "無已儲存佈局", + "noSessionsYetLaunchOneTo": "暫無工作階段。啓動一個以開始。", + "noSteps": "無步驟", + "noStepsConfigured": "未設定步驟", + "noStepsFound": "未找到步驟。", + "noSubIssues": "無子議題", + "noTaskSelected": "未選擇任務", + "noTasksFound": "未找到任務。", + "noTerminalsYet": "暫無終端。", + "noTextualChangesBetweenTheseVersions": "這些版本之間沒有文字更改。", + "noWorkItemsFound": "未找到工作項", + "noWorkflowsFound": "未找到工作流程。", + "noWorkspacesFound": "未找到工作區。", + "none": "無", + "notConfiguredForThisExecutor": "未為此執行器設定檔", + "onBranch": "位於分支 <1>{{branch}}", + "onDisk": "磁碟上", + "ontoBranch": "到 {{branch}}", + "openBrowserPreview": "開啟瀏覽器預覽", + "openCodeReview": "開啟程式碼審閱", + "openComposeBoxHelp": "在終端上方開啟由 Kandev 控制的編寫框以輸入跟進訊息。按 <1>Enter 傳送,<3>Shift+Enter 換行。", + "openEditor": "開啟編輯器", + "openEntityReference": "開啟 {{label}}:{{title}}", + "openFile": "開啟檔案", + "openImage": "開啟 {{alt}}", + "openInAdvancedView": "在高級視圖中開啟", + "openInBrowserPanel": "在瀏覽器面板中開啟", + "openInBrowserTab": "在瀏覽器標籤頁中開啟", + "openInEditorNamed": "在 {{name}} 中開啟", + "openInNewTab": "在新標籤頁中開啟", + "openInOfficeView": "在辦公室視圖中開啟", + "openInOtherEditor": "在其他編輯器中開啟", + "openMarkdownPreview": "開啟 Markdown 預覽", + "openPlanDetails": "開啟計劃詳情", + "openPullRequest": "開啟拉取要求", + "openSidebarFilters": "開啟側邊欄篩選", + "openSourceTask": "開啟來源任務 {{fullTitle}}", + "openTaskSwitcher": "開啟任務切換面板", + "openTerminal": "開啟終端", + "openTheBottomTerminalAndPaste": "開啟底部終端並貼上此命令", + "openWorkspaceFolder": "開啟工作區資料夾", + "openWorkspaceSettings": "開啟工作區設定", + "option": "選項 {{index}}", + "orTypeACustomAnswer": "或輸入自訂回答…", + "otherChanges": "其他更改", + "output": "輸出", + "outputTokens": "輸出 token", + "outputTruncated": "輸出已截斷", + "panelAgent": "代理程式", + "panelChanges": "更改", + "panelDiffViewer": "差異查看器", + "panelFileDiff": "差異 [{{file}}]", + "panelFiles": "檔案", + "panelMergeRequest": "合併請求", + "panelPlan": "計劃", + "panelPrDetails": "PR 詳情", + "panelPullRequest": "拉取要求", + "panelTerminal": "終端", + "parent": "父項", + "parkedCount": "已停放({{parked}})", + "parkedTerminals": "已停放的終端", + "pastedImageCouldnTBeAttached": "貼上的圖片無法附加", + "pathBasedProxyWorksForApis": "路徑型代理伺服器。適用於 API,但可能導致預期由 / 提供服務的 Web 應用程式無法正常運作。", + "pauseTree": "暫停任務樹", + "paused": "已暫停", + "pendingApproval": "待批准", + "pendingReviewCommentsHelp_one": "{{count}} 條待傳送的審閱評論。點擊展開列表;可編輯每條評論、點擊檔案路徑跳轉到源碼,或用垃圾桶圖標移除評論。", + "pendingReviewCommentsHelp_other": "{{count}} 條待傳送的審閱評論。點擊展開列表;可編輯每條評論、點擊檔案路徑跳轉到源碼,或用垃圾桶圖標移除評論。", + "permissionRequested": "已請求權限", + "permissionRequired": "需要權限", + "pickADifferentRepoLocalFolder": "選擇其他儲存庫、本地資料夾或遠端 URL", + "pickAStartingFolderOptional": "選擇起始資料夾(可選)", + "pickOrPasteARepo": "選擇或貼上儲存庫", + "pinTasksCount_one": "固定 {{count}} 個任務", + "pinTasksCount_other": "固定 {{count}} 個任務", + "plan": "計劃", + "planCommentCount_one": "{{count}} 條計劃評論", + "planCommentCount_other": "{{count}} 條計劃評論", + "planHistory": "計劃歷史", + "planIsEmpty": "計劃為空", + "planMode": "計劃模式", + "planRestoredToV": "計劃已恢復到 v{{revisionnumber}}", + "planYourImplementation": "規劃你的實現", + "pleaseTryAgain": "請重試。", + "pluginTopBarActions": "外掛程式頂欄操作", + "portAlreadyAdded": "端口已新增", + "portForwarding": "端口轉發", + "portForwardingPreferenceUpdateFailed": "無法更新端口轉發可見性", + "portForwardingTunnelActive_one": "端口轉發({{count}} 個隧道活動)", + "portForwardingTunnelActive_other": "端口轉發({{count}} 個隧道活動)", + "portNumber": "端口號", + "position": "位置 {{positionLabel}}", + "prChanges": "PR 更改", + "preparingEllipsis": "正在準備…", + "preparingEnvironment": "正在準備環境", + "preparingEnvironmentEllipsis": "正在準備環境…", + "preparingWorkspace": "正在準備工作區…", + "preparingWorkspace2": "正在準備工作區…", + "presets": "預設", + "pressEnterToUpdateYourAnswer": "按 Enter 更新你的回答…", + "pressEscToCancelCmdEnter": "按 Esc 取消,Cmd+Enter 儲存", + "preview": "預覽", + "previous": "上一個", + "previousAgentError": "先前的代理程式錯誤", + "previousMessage": "上一條訊息", + "previousQuestion": "上一個問題", + "priority": "優先級", + "priorityCritical": "緊急", + "priorityHigh": "高", + "priorityLow": "低", + "priorityMedium": "中", + "private": "私有", + "profileCount_one": "{{count}} 個設定", + "profileCount_other": "{{count}} 個設定", + "progress": "進度", + "project": "項目", + "prompt": "提示詞", + "promptFieldLabel": "提示詞", + "providerPrivateContextThatKandevDid": "Kandev 未記錄的提供者私有上下文可能不會保留。已開啟的終端、開發伺服器及其他工作區程序會停止,包括任務編輯器伺服器。", + "providerUnavailable": "提供者不可用", + "providerHistoryUnavailable": "目前 PR 歷史不可用。顯示檢出歷史,但不假定發生了重寫。", + "proxy": "代理伺服器", + "publishARedactedSnapshotOfThis": "將此已完成任務的脱敏快照發布為你帳戶上的私密 GitHub Gist。", + "publishToGithubGist": "發佈到 GitHub Gist", + "publishedAnyoneWithThisLinkCan": "已發佈。任何擁有此連結的人都可以查看對話。", + "publishing": "正在發佈…", + "pull": "拉取", + "pullRequest": "拉取要求", + "pullRequest2": "拉取要求", + "pullRequests": "拉取要求", + "push": "推送", + "pushCurrentBranchBeforeResetting": "重置前將目前分支推送到其遠端。", + "pushYourBranchToItsRemote": "在確認對話框中將分支推送到遠端,以在重置前保留已提交的工作。", + "pushedCommit": "已推送的提交", + "pushedToRemote": "已推送到遠端", + "questionCount_one": "{{count}} 個問題", + "questionCount_other": "{{count}} 個問題", + "questionOfTotal": "問題 {{index}} / {{total}}", + "questionOfTotalAnswered": "問題 {{index}} / {{total}}(已回答)", + "queueMoreInstructions": "排隊更多指示…", + "queued": "已排隊", + "ranCommands_one": "· 執行了 {{count}} 條命令", + "ranCommands_other": "· 執行了 {{count}} 條命令", + "random": "隨機", + "read": "讀取", + "readLines_one": "讀取 {{count}} 行", + "readLines_other": "讀取 {{count}} 行", + "reasonAddSessionDescription": "新增工作階段描述", + "reasonAddTaskPrompt": "新增任務提示詞", + "reasonAddTaskTitle": "新增任務標題", + "reasonSelectAgent": "選擇代理程式", + "reasonSelectBranch": "選擇分支", + "reasonSelectRepository": "選擇儲存庫", + "reasonSelectWorkflow": "選擇工作流程", + "reasonSelectWorkspace": "選擇工作區", + "rebase": "變基", + "recentTasks": "最近任務", + "reconnectingToTheExistingEnvironment": "正在重新連接到現有環境…", + "redactedRules": "已脱敏:{{rules}}", + "referenceWorkItems": "引用工作項", + "refresh": "刷新", + "rejected": "已拒絕", + "relatedBlockedBy": "被阻塞於", + "relatedBlockers": "阻塞項", + "relatedChildren": "子項", + "relatedParents": "父項", + "relatedSiblings": "同級項", + "relatedTaskCount_one": "{{count}} 個相關任務", + "relatedTaskCount_other": "{{count}} 個相關任務", + "relatedTasks": "相關任務", + "remote": "遠端", + "remoteContributionChangedTitle": "PR 分支已更改", + "remoteContributionChangedBody": "你的任務版本未更改。準備好後,選擇要使用的版本。", + "remoteContributionChangedTooltip": "PR 分支在任務開始後發生了更改。任務工作區未更改。", + "replacePRBranch": "替換 PR 分支", + "usePRVersion": "使用 PR 版本", + "prNumberVersion": "PR #{{number}} 版本", + "remoteContributionReplaceDescription": "用未更改的任務版本替換已發佈的 PR 分支。需要確認,並且提供者的最新提交必須完全匹配。", + "remoteContributionUseDescription": "在此任務中使用目前 PR 版本。Kandev 會先建立恢復分支,並且工作區必須乾淨。", + "remoteContributionViewDescription": "開啟 PR #{{number}} 版本,不更改任務工作區。", + "replacePRBranchConfirmation": "要用任務版本替換 {{repository}} 在 {{head}} 的已發佈 PR 分支嗎?這會讓提供者分支與任務版本一致。", + "usePRVersionConfirmation": "要使用 {{head}} 的 PR 版本嗎?Kandev 會先為目前任務版本建立恢復分支。工作區必須乾淨。", + "remoteContributionProviderChangedAgain": "PR 再次發生更改。請刷新提供者版本後重試。", + "remoteContributionCleanWorktreeRequired": "使用 PR 版本前,請先提交或丟棄本地更改。", + "remoteContributionResolutionFailed": "Kandev 無法更改貢獻分支。請檢查 Git 錯誤後重試。", + "remoteContributionReplaced": "PR 分支已替換為任務版本。", + "remoteContributionUsed": "已採用 PR 版本。恢復分支:{{branch}}", + "remoteCreatedLine": "建立:{{createdAt}}", + "remoteExecutor": "遠端執行器", + "remoteLastCheckLine": "上次檢查:{{checkedAt}}", + "remoteRepository": "遠端儲存庫", + "remoteStateLine": "狀態:{{state}}", + "remoteStatusFailedLine": "狀態失敗:{{error}}", + "currentPRCommit": "目前 PR 提交", + "remoteUrlPressEnter": "<0>遠端 URL;按 Enter 提交。", + "remove": "移除", + "remove2": "移除 {{name}}", + "remove3": "移除 {{identifier}}", + "removeAnnotation": "移除標註 {{number}}", + "removeComment": "移除評論", + "removeFile": "移除檔案", + "removeFilter": "移除篩選", + "removeFromFavorites": "從收藏中移除", + "removeImage": "移除圖片", + "removeLabeled": "移除 {{label}}", + "removeMessageFromFavorites": "將訊息從收藏中移除", + "removeRepository": "移除儲存庫", + "removeSource": "移除來源", + "rename": "重命名", + "rename2": "重命名…", + "renameTask": "重命名任務", + "renameTerminalLeaveEmptyToReset": "重命名終端(留空以重置,輸入「{{token}}」以移除並停止 PTY)。", + "repeatedTerminalCommandsHidden_one": "已隱藏 {{count}} 條重複的相同終端命令", + "repeatedTerminalCommandsHidden_other": "已隱藏 {{count}} 條重複的相同終端命令", + "repeatedTerminalCommandsShown_one": "已顯示 {{count}} 條重複的相同終端命令", + "repeatedTerminalCommandsShown_other": "已顯示 {{count}} 條重複的相同終端命令", + "repo": "儲存庫", + "repositoriesAreAddedAsTopLevel": "儲存庫會作為目前遠端工作區中的頂層條目新增。代理程式的工作目錄不會改變。", + "repository": "儲存庫", + "repository2": "儲存庫", + "repositoryWithPath": "儲存庫 · {{path}}", + "requestChanges": "請求更改", + "requestedChanges": "已請求更改", + "requestedChangesPlain": "{{who}} 請求了更改", + "requestedChangesVerb": "已請求更改", + "requestedChangesWithComment": "{{who}} 請求了更改:'{{comment}}'", + "resetAgentContext": "重置代理程式上下文?", + "resetAgentContextClearsConversationHistory": "重置代理程式上下文;清除對話歷史,保留工作區", + "resetContext": "重置上下文", + "resetEnvironment": "重置環境?", + "resetEnvironment2": "重置環境", + "resetLayout": "重置佈局", + "resetToCommitSha": "重置到提交 {{shortSha}}", + "resetToThisCommit": "重置到此提交", + "resetting": "正在重置…", + "resize": "調整大小", + "restart": "重啓", + "restartConsequenceRunningProcesses": "<0>執行中的程序:已開啟的終端、開發伺服器及其他工作區程序會停止,包括任務編輯器伺服器。請先儲存未儲存的工作,在來源附加完成後再重新開啟或重啓這些程序。", + "restartConsequenceSessionContext": "<0>工作階段上下文:Kandev 會在保留任務、工作階段、任務狀態、訊息、計劃、已附加來源以及所選模型與模式的同時重啓空閒代理程式。支援跨目錄恢復的提供者會保留其原生工作階段。其他提供者會啓動新工作階段,並在下一次提示時收到 Kandev 已記錄的對話。Kandev 未記錄的提供者私有上下文可能不會保留。", + "restartConsequenceWorkspace": "<0>工作區:任務根目錄將成為代理程式的工作目錄。對於單儲存庫任務,這會將 CWD 上移一級,並將每個來源顯示為命名的頂層條目。現有檔案與 Git 變更不會被移動或丟棄。", + "restarting": "正在重啓…", + "restore": "恢復", + "restoreThisVersion": "恢復此版本", + "restoreToVersionConfirm": "恢復到版本 {{version}}?", + "restoreToVersionDescription": "將建立包含 v{{version}} 內容的新版本。不會丟失任何內容;目前版本仍保留在歷史中。", + "restoreTree": "恢復任務樹", + "restoreVersion": "恢復 v{{version}}", + "restoredFromEarlierVersion": "從更早版本恢復", + "restoring": "正在恢復…", + "restoringThisTaskSMaterializedWorkspace": "恢復此任務的具體化工作區失敗。啓動前請重新設定工作區。", + "resume": "恢復", + "resumeAgent": "恢復代理程式", + "resumeSession": "恢復工作階段", + "resumeTree": "恢復任務樹", + "resumingSession": "正在恢復工作階段", + "retry": "重試", + "retryChangeRequest": "重試 {{shortName}}", + "retryRemoteRepositoryResolution": "重試遠端儲存庫解析", + "retrying": "正在重試…", + "reverseISearch": "(reverse-i-search)", + "revertCommit": "還原提交", + "review": "審閱", + "reviewComments": "審閱評論", + "reviewCommentsReadyToSend_one": "{{count}} 條審閱評論待傳送", + "reviewCommentsReadyToSend_other": "{{count}} 條審閱評論待傳送", + "reviewCommentsTitle": "審閱評論", + "reviewTheseChangesBeforeAddingSources": "新增來源前請審閱這些變更。在操作完成前任務必須保持空閒。", + "reviewed": "已審閱", + "reviewers": "審閱人", + "revoke": "撤銷", + "revokeShare": "撤銷分享", + "revoking": "正在撤銷…", + "roleApprover": "審批人", + "roleReviewer": "審閱人", + "run": "執行", + "runCommand": "執行 /{{name}} 命令", + "runInTerminal": "在終端中執行", + "runInTheParentSMaterialized": "在父任務的具體化工作區中執行", + "runInTheParentSWorktree": "在父任務的工作樹中執行({{worktreeBranch}})", + "runRepositorySetupScript": "執行儲存庫設定腳本", + "runScript": "執行腳本", + "running": "執行中", + "sameBranchAsCurrentSession": "與目前工作階段相同的分支", + "sameEnvironmentAsCurrentSession": "與目前工作階段相同的環境", + "saveAndSendToAgent": "儲存併傳送給代理程式", + "saveAndSendToAgentShortcut": "儲存併傳送給代理程式({{modKey}}+Shift+Enter)", + "saveAs": "另存為:", + "saveAs2": "另存為…", + "saveCommentForReview": "儲存評論以供審閱", + "saveCommentForReviewShortcut": "儲存評論以供審閱({{modKey}}+Enter)", + "saveCurrentLayout": "儲存目前佈局", + "saveCurrentLayout2": "儲存目前佈局…", + "saveOrDiscardBeforeNewView": "建立新視圖前請先儲存或丟棄更改。", + "saveYourCurrentPanelArrangementAs": "將目前面板排列儲存為可複用佈局。", + "savedAndLocalGitRepositoriesMust": "對於此執行器,已儲存與本地 Git 儲存庫必須具有可複製的 origin。本地資料夾不可用。", + "savedLayout": "已儲存佈局", + "savedLayouts": "已儲存佈局", + "saving": "正在儲存…", + "scriptExecutionMetadataUnavailable": "腳本執行(元數據不可用)", + "scriptExitedWithCode": "腳本以程式碼 {{code}} 退出", + "scriptFailed": "腳本失敗", + "scripts": "腳本", + "scrollToActiveSession": "滾動到活動工作階段", + "scrollToLastPrompt": "滾動到上一條提示詞", + "scrollToStartOfTranscript": "滾動到記錄開頭", + "searchAgents": "搜尋代理程式…", + "searchBranches": "搜尋分支…", + "searchEllipsis": "搜尋…", + "searchEllipsis2": "搜尋…", + "searchFiles": "搜尋檔案", + "searchFiles2": "搜尋檔案…", + "searchFilesAndPrompts": "搜尋檔案與提示詞…", + "searchProfiles": "搜尋設定…", + "searchProjects": "搜尋項目…", + "searchRepositories": "搜尋儲存庫…", + "searchRepositoriesOrPasteARemote": "搜尋儲存庫或貼上遠端 URL", + "searchTasks": "搜尋任務…", + "searching": "正在搜尋…", + "searchingWorkItems": "正在搜尋工作項…", + "selectASessionToOpenIts": "選擇工作階段以開啟其工作樹", + "selectATaskToStartChatting": "選擇任務以開始聊天", + "selectAgent": "選擇代理程式", + "selectAgentProfile": "選擇代理程式設定檔", + "selectAnInstance": "選擇實例", + "selectBranch": "選擇分支", + "selectExecutorProfile": "選擇執行器設定檔", + "selectFilesAndPromptsToInclude": "· 選擇要包含的檔案與提示詞", + "selectOrEnterRemoteRepoFirst": "請先選擇或輸入遠端儲存庫。", + "selectProfile": "選擇設定", + "selectRepositoryFirst": "請先選擇儲存庫", + "selectSentryInstanceToLink": "選擇要關聯的 Sentry 實例。", + "selectTextAndPressToComment": "選擇文字並按 <2>⌘⇧C 新增評論", + "selectValue": "選擇值", + "selectValues": "選擇多個值", + "selectWorkflow": "選擇工作流程", + "selectWorkspaceBeforeLinkingPr": "關聯 GitHub 拉取要求前請先選擇工作區。", + "selected": "已選擇", + "send": "傳送", + "sendAnswer": "傳送回答", + "sendComment": "傳送評論", + "sendToAgent": "傳送給代理程式", + "sendToAgentHelp": "在面板內點擊 <1>傳送給代理程式 立即投遞給 CLI 代理程式,或開啟聊天框輸入跟進;評論會自動前置。", + "sendToWorkflow": "傳送到工作流程", + "senderWithSession": "{{base}} · {{sessionName}}", + "sentAsNewMessage": "· 已作為新訊息傳送", + "sentryInstance": "Sentry 實例", + "sentryIssue": "Sentry 議題", + "sentryIssueLinked": "已關聯 Sentry 議題", + "sentryIssuePlaceholder": "PROJ-123 或貼上議題 URL", + "sentryIssueValidationHint": "貼上 Sentry 議題 URL 或短 ID(PROJ-123)。", + "session": "工作階段", + "sessionActions": "工作階段操作", + "sessionContext": "工作階段上下文", + "sessionCount_one": "{{count}} 個工作階段", + "sessionCount_other": "{{count}} 個工作階段", + "sessionFallbackLabel": "工作階段", + "sessionModelSettings": "工作階段模型設定", + "sessionNotReady": "工作階段未就緒", + "sessionStatusBackgroundRunning": "後台執行中", + "sessionStatusCancelled": "已取消", + "sessionStatusComplete": "已完成", + "sessionStatusFailed": "失敗", + "sessionStatusPermissionRequested": "請求權限", + "sessionStatusRunning": "執行中", + "sessionStatusWaitingForInput": "等待輸入", + "sessions": "工作階段", + "setAsDefaultLayout": "設為預設佈局", + "setAsPrimary": "設為主工作階段", + "setup": "設定", + "share": "分享", + "shareThisTask": "分享此任務", + "shareThisTaskConversationAsA": "將此任務對話分享為公開連結", + "sharedWorkspaceMembers_one": "共享工作區 · {{count}} 位成員", + "sharedWorkspaceMembers_other": "共享工作區 · {{count}} 位成員", + "shift": "Shift", + "shiftEnterToRun": ",⌘+Shift+Enter 執行", + "shiftEnterToRun2": ",{{modKey}}+Shift+Enter 執行", + "shortcutTogglesChatInput": "快捷鍵:<1>{{shortcut}} 切換此聊天輸入。", + "showBranchAndGitCredentialDetails": "顯示分支與 Git 認證資料詳情", + "showCode": "顯示程式碼", + "showCommandOutput": "顯示命令輸出", + "showDebugInfo": "顯示調試資訊", + "showDetails": "顯示詳情", + "showErrorDetails": "顯示錯誤詳情:{{displayLabel}}", + "showFormatted": "顯示格式化內容", + "showFormattedMessage": "顯示格式化訊息", + "showFullTimestamp": "顯示完整時間戳:{{absoluteTime}}", + "showMcpConnectionStatus": "顯示 MCP 連接狀態", + "showMessageMetadata": "顯示訊息元數據", + "showOlderSessions_one": "顯示 {{count}} 個更早的工作階段", + "showOlderSessions_other": "顯示 {{count}} 個更早的工作階段", + "showPreparationDetails": "顯示準備詳情", + "showRawText": "顯示原始文字", + "showRightPanel": "顯示右側面板", + "showSidebar": "顯示側邊欄", + "sibling": "同級", + "sidebarFilters": "側邊欄篩選", + "skipAllQuestions": "跳過全部問題", + "skipped": "已跳過", + "snapshotMessageCount_one": "{{count}} 條訊息", + "snapshotMessageCount_other": "{{count}} 條訊息", + "softReset": "軟重置", + "someone": "某人", + "sort": "排序", + "sortCreated": "建立時間", + "sortCustom": "自訂", + "sortDirection": "排序方向 {{direction}}", + "sortStatus": "狀態", + "sortTitle": "標題", + "sortUpdated": "更新時間", + "source": "來源", + "sourceChangesTitle": "{{source}} 變更", + "specifyALocalPortOrLeave": "指定本地端口,或留空以隨機分配。對於 Docker/K8s,請使用已預先暴露的端口。", + "split": "拆分", + "splitDown": "向下拆分", + "splitRight": "向右拆分", + "splitView": "拆分視圖", + "sprite": "Sprite", + "stageAll": "全部暫存", + "stageAllChangesBeforeCommitting": "提交前暫存全部變更", + "stageApproval": "批准", + "stageCount": "暫存 {{selectionCount}}", + "stageFile": "暫存檔案", + "stageImplement": "實現", + "stageReview": "審閱", + "stageShip": "發佈", + "start": "開始", + "start2": "開始", + "startAgent": "啓動代理程式", + "startAgent2": "啓動代理程式", + "startDevServerPreview": "啓動開發伺服器預覽", + "startFreshSession": "開始全新工作階段", + "startPlanMode": "啓動計劃模式", + "startTask": "啓動任務", + "startTaskInPlanMode": "以計劃模式啓動任務", + "startTunnel": "啓動隧道", + "startTypingYourPlan": "開始輸入你的計劃…", + "started": "已啓動", + "starting": "正在啓動…", + "startingAgent": "正在啓動 {{agentLabel}}", + "startingEllipsis": "正在啓動…", + "startingTerminal": "正在啓動終端…", + "startingVsCodeServer": "正在啓動 VS Code Server", + "startsANewSessionWithA": "使用乾淨的上下文窗口開始新工作階段", + "state": "狀態", + "status": "狀態", + "statusBacklog": "待辦池", + "statusBlocked": "已阻塞", + "statusCancelled": "已取消", + "statusChangedFromTo": "狀態從 <1>{{from}} 變更為 <3>{{to}}", + "statusDone": "已完成", + "statusInProgress": "進行中", + "statusInReview": "審閱中", + "statusTodo": "待辦", + "statusUpdate": "狀態更新", + "stepCount_one": "{{count}} 個步驟", + "stepCount_other": "{{count}} 個步驟", + "stepFieldLabel": "步驟", + "stepNumber": "步驟 {{index}}", + "stepOf": "步驟 {{stepNumber}} / {{totalSteps}}:{{stepLabel}}", + "stillWorkingSubjectMany": "其中一個或多個任務仍在工作", + "stillWorkingSubjectOne": "此任務仍在工作", + "stillWorkingWarning": "{{subject}};代理程式正在產生或執行後台工作。現在繼續將丟棄仍在進行的工作。", + "stop": "停止", + "stopTunnel": "停止隧道", + "stoppedWithAnError": "因錯誤而停止", + "stopping": "正在停止…", + "subagent": "子代理程式", + "subIssues": "子議題", + "subTasks": "子任務", + "submit": "提交", + "submitAnswers": "提交回答", + "submitUnavailable": "無法提交", + "submitting": "正在提交…", + "subtask": "子任務", + "subtasksBecomeRootTasksUnlessYou": "除非勾選此項,否則子任務將成為根任務。它們可能仍在進行中。", + "subtasksStayActiveUnlessYouTick": "除非勾選此項,否則子任務保持活動。它們可能仍在進行中。", + "successful": "{{operationName}} 成功", + "summarize": "總結", + "summarizeReturnedNoResult": "摘要工具未返回任何結果", + "summarizeSession": "總結工作階段", + "summarizeSessionNamed": "總結 {{label}}", + "summarizing": "正在總結…", + "switchRecentTasks": "切換最近任務。", + "switchSidebarView": "切換側邊欄視圖:{{name}}", + "switchWorkflows": "切換工作流程", + "switchWorkspace": "切換工作區", + "system": "系統", + "systemSender": "系統", + "targetAlreadyExists": "目標已存在:{{newPath}}", + "task": "任務", + "taskActions": "任務操作", + "taskChat": "任務聊天", + "taskCount_one": "{{count}} 個任務", + "taskCount_other": "{{count}} 個任務", + "taskDebug": "任務調試", + "taskDetails": "任務詳情", + "taskHasAnAgentError": "任務存在代理程式錯誤", + "taskName": "任務名稱", + "taskNeedsRepositoryForSources": "新增來源前,此任務需要一個儲存庫。", + "taskOverview": "任務概覽", + "taskStatusAndAttention": "任務狀態與關注事項", + "taskTitle": "任務標題", + "taskTools": "任務工具", + "taskTreeCancelled": "任務樹已取消", + "taskTreePaused": "任務樹已暫停", + "taskTreeRestored": "任務樹已恢復", + "taskTreeResumed": "任務樹已繼續", + "tasks": "任務", + "tasksAffected_one": "影響 {{count}} 個任務", + "tasksAffected_other": "影響 {{count}} 個任務", + "tcpPortsWithActiveListenersInside": "遠端執行器內有活動監聽器的 TCP 端口。點擊刷新以重新掃描。", + "technicalDetails": "技術詳情", + "terminal": "終端", + "terminalCount_one": "{{count}} 個終端", + "terminalCount_other": "{{count}} 個終端", + "terminalNotAvailableThisTaskIs": "終端不可用;此任務已歸檔", + "terminalNumbered": "終端 #{{seq}}", + "terminalPromptInputAreDisabledUntil": "終端與提示詞輸入在下次執行開始前已停用。", + "terminalSessionEnded": "此工作階段已結束。沒有可用的終端。", + "terminalUnavailableNoActiveSession": "終端不可用;無活動工作階段。", + "terminalWithSeq": "終端 {{seq}}", + "terminals": "終端", + "terminate": "終止", + "terminateTerminal": "終止終端 #{{seq}}", + "terminateThisKillsTheRunningPty": "終止 {{label}}?這將終止正在執行的 PTY。", + "theAgentAndRunningWorkspaceProcesses": "代理程式與正在執行的工作區程序會繼續。現有檔案、Git 變更以及已記錄的任務與工作階段上下文會保留。", + "theAgentCanWriteAndUpdate": "代理程式可在工作過程中編寫並更新計劃", + "theAgentHasFinishedItsLast": "代理程式已完成上一輪,正在等待下一個符合條件的觸發。下方檔案樹從磁碟上的工作樹讀取;之前的聊天歷史會保留。", + "theAgentHasMovedOn": "代理程式已繼續推進。你的回應將作為新訊息傳送。", + "theAgentStoppedWithAnError": "代理程式因錯誤而停止。恢復可重試同一對話,或開始全新工作階段。", + "theBrowserDidnTProvideImage": "瀏覽器未提供圖片數據。請先儲存圖片,再以檔案形式附加。", + "theBuiltInDefaultLayoutWill": "內置預設佈局將成為預設。", + "theConnectionDroppedOrTimedOut": "連接斷開或超時。請刷新任務以確認是否已成功。", + "theIdleAgentRestartsAtThe": "空閒代理程式會在任務根目錄重啓。現有檔案、Git 變更、任務與工作階段歷史、訊息、計劃、已附加來源、模型與模式均會保留。", + "theTextIsDeliveredStraightTo": "文字直接投遞到 CLI 代理程式的 stdin;待傳送的審閱評論(如有)會自動前置。", + "theseAreTheSameVersionNothing": "這些是相同版本;無需比較。", + "thinking": "思考中", + "thisConversationHasNoShareableContent": "此對話沒有可分享的內容。", + "thisExecutor": "此執行器", + "thisIsTheOnlySessionFor": "這是此任務的唯一工作階段,但任務工作區和其中的檔案會保留給未來的工作階段。", + "thisIsThePrimarySessionAnother": "這是主工作階段。將有另一個工作階段被設為主工作階段。", + "thisRepositoryMustHaveACloneable": "此儲存庫必須具有可複製的 origin;Kandev 會在新增前進行驗證。", + "thisRestartsTheTaskWorkspace": "這將重啓任務工作區", + "thisSavedLayoutWillBePermanently": "此已儲存佈局將被永久移除。", + "thisSessionDidNotFinishSetting": "此工作階段未完成工作區設定。", + "thisStopsTheShellAndAny": "這將停止「{{terminalName}}」shell 及其正在執行的任何命令。", + "thisTask": "此任務", + "thisTask2": "此任務", + "thisTaskHasLinkedPullRequests": "此任務有 {{length}} 個已關聯的拉取要求。選擇一個在 GitHub 上開啟。", + "thisTaskIsArchivedAndRead": "此任務已歸檔且為只讀。", + "thisTaskPointsToBranch": "此任務指向 <1>{{branch}},但在遠端儲存庫中找不到該分支。它可能已被合併或刪除。", + "thisTaskSharesItsParentS": "此任務共享其父任務的工作區。目前與未來工作階段將繼續使用該共享工作區。", + "thisTearsDownTheCurrentContainer": "這將拆除此任務的目前容器、沙箱和/或工作樹,以便下一工作階段以全新環境開始。", + "thisTerminal": "此終端", + "thisUpdatesTheLiveTaskWorkspace": "這將更新活動的任務工作區", + "thisWillClearTheAgentS": "這將清除代理程式的對話歷史並開始全新上下文。你的工作區、檔案與 git 狀態會保留。", + "thisWillPermanentlyDeleteSelectedItems": "將永久刪除 {{selectedCount}} 個所選項目。此操作無法撤銷。", + "thisWillPermanentlyDeleteTheConversation": "這將永久刪除與此工作階段的對話歷史。任務工作區和其中的檔案會被保留。", + "ticket": "工單", + "timedOutAgentMovedOn": "已超時(代理程式已繼續)", + "title": "標題", + "title2": "{{longName}} 標題", + "title3": "{{longName}} 標題…", + "titleOptional": "標題(可選)", + "toFocus": "以聚焦", + "todos": "待辦事項", + "todosCompleted": "已完成 {{completed}}/{{total}}", + "toggleWordWrap": "切換自動換行", + "tokenCount_one": "{{formatted}} 個 token", + "tokenCount_other": "{{formatted}} 個 token", + "tokens": "token", + "tool": "工具", + "toolCall": "工具呼叫", + "toolCallCount_one": "{{count}} 次工具呼叫", + "toolCallCount_other": "{{count}} 次工具呼叫", + "toolCount_one": "{{count}} 個工具", + "toolCount_other": "{{count}} 個工具", + "tools": "工具", + "toolSearching": "正在搜尋", + "treeActionFailed": "任務樹操作失敗", + "treeCancelDescription": "將取消 {{taskCount}} 個任務並中斷 {{activeRunCount}} 個活動代理程式工作階段。可用「恢復」撤銷此操作。", + "treeCost": "任務樹成本", + "treeTasks": "任務樹中的任務", + "truncated": "已截斷", + "truncatedParen": "(已截斷)", + "tryAgain": "重試", + "tunnel": "隧道", + "tunnelStartedOnPort": "隧道已在端口 {{port}} 上啓動", + "tunnelStopped": "隧道已停止", + "turnForDuration": ",耗時 {{duration}}", + "turnMessageCount_one": "· {{count}} 條訊息", + "turnMessageCount_other": "· {{count}} 條訊息", + "turnWorked": "已完成工作", + "turnWorking": "工作中", + "typeAMessageMentionFilesOr": "輸入訊息,@ 提及檔案或提示詞,Shift+Enter 換行", + "typeShaToConfirm": "輸入 <1>{{shortSha}} 以確認:", + "typeToSearch": "輸入以搜尋…", + "typeToSearchPreviousMessages": "輸入以搜尋先前的訊息…", + "typeToSearchWorkItems": "輸入以搜尋工作項", + "unNestRemoveParent": "取消嵌套(移除父任務)", + "unarchive": "取消歸檔", + "unarchiveTask": "取消歸檔任務", + "uncommitted": "未提交", + "unified": "統一", + "unifiedView": "統一視圖", + "unknown": "未知", + "unknownAgent": "未知代理程式", + "unknownError": "未知錯誤", + "unknownError2": "未知錯誤", + "unlink": "取消關聯", + "unnamed": "(未命名)", + "unpin": "取消固定", + "unpinTasksCount_one": "取消固定 {{count}} 個任務", + "unpinTasksCount_other": "取消固定 {{count}} 個任務", + "unpinWillBeRemovedAfterSend": "取消固定(傳送後將移除)", + "unpushedCommit": "未推送的提交", + "unstageAll": "全部取消暫存", + "unstageCount": "取消暫存 {{selectionCount}}", + "unstageFile": "取消暫存檔案", + "untitled": "(無標題)", + "update": "更新", + "updateComment": "更新評論", + "updateTask": "更新任務", + "updated": "已更新", + "updatedTodos": "已更新的待辦事項", + "updating": "正在更新…", + "updating2": "正在更新…", + "uploadFailed": "上傳失敗", + "uploaded": "已上傳 {{name}}", + "uptime": "執行時間", + "useAFullGithubIssueUrl": "為此任務使用完整的 GitHub 議題 URL。", + "useAFullGithubPullRequest": "為此任務使用完整的 GitHub 拉取要求 URL。", + "useAFullIssueUrlOr": "為 {{owner}}/{{repo}} 使用完整議題 URL 或編號。", + "useAFullPullRequestUrl": "為 {{owner}}/{{repo}} 使用完整拉取要求 URL 或編號。", + "useAnExistingCheckoutOnThis": "使用本機上的現有檢出。", + "usesCurrentBranch": "使用目前分支", + "usesTheCurrentCheckoutKandevDoes": "使用目前檢出。Kandev 不會切換你的本地儲存庫分支。", + "value": "值", + "verbIsDormant": "{{verb}} 處於休眠", + "versionNumber": "版本 {{version}}", + "viaSession": "通過工作階段", + "view": "視圖:", + "viewLimitReached_one": "最多可儲存 {{count}} 個視圖。", + "viewLimitReached_other": "最多可儲存 {{count}} 個視圖。", + "viewName": "視圖名稱", + "viewPlanHistory": "查看計劃歷史", + "vsCode": "VS Code", + "vsCodeServer": "VS Code Server", + "waitForActiveTurnToFinish": "請等待目前回合或工具呼叫完成後再新增來源。", + "waitForTaskSourcesToLoad": "請等待任務來源載入完成後再新增來源。", + "waitingForAnActiveSession": "正在等待活動工作階段…", + "walkMeThroughTheseChanges": "帶我了解這些更改", + "walkMeThroughTheseReviewChanges": "帶我了解這些審閱更改", + "walkthrough": "演練:{{title}}", + "walkthrough2": "演練", + "walkthroughNoteCount_one": "{{count}} 條演練備註", + "walkthroughNoteCount_other": "{{count}} 條演練備註", + "websocketClientNotAvailable": "WebSocket 用戶端不可用", + "whatShouldTheAgentWorkOn": "代理程式應處理什麼?", + "workdir": "工作目錄", + "workedRanCommands_one": "已工作;執行了 {{count}} 條命令", + "workedRanCommands_other": "已工作;執行了 {{count}} 條命令", + "workflow": "工作流程", + "workflowCount_one": "{{count}} 個工作流程", + "workflowCount_other": "{{count}} 個工作流程", + "workflowLabel": "工作流程:{{label}}", + "workflowSender": "工作流程", + "workflowStepMessageFrom": "來自 {{label}} 的工作流程步驟訊息", + "working": "工作中…", + "working3": "工作中", + "working4": "工作中…", + "workingIn": "工作於 <1>{{path}}", + "workingInBackground": "在後台工作", + "workspaceActions": "工作區操作", + "workspaceCount_one": "{{count}} 個工作區", + "workspaceCount_other": "{{count}} 個工作區", + "workspaceIsStillStarting": "工作區仍在啓動。", + "workspaceMode": "工作區模式", + "workspaceModeLabel": "模式:{{mode}}", + "workspaceRepository": "工作區儲存庫", + "workspaceRequiresConfiguration": "工作區需要設定", + "workspaceUnavailable": "工作區不可用", + "unknownTaskFallback": "(未知任務)", + "worktree": "工作樹", + "wouldCreateABlockerCycle": "會形成阻塞循環:{{cycle}}", + "writeAComment": "撰寫評論…", + "writeAPromptForTheAgent": "為代理程式撰寫提示詞…(@ 插入已儲存的提示詞)", + "writeYourChangesHere": "在此寫下你的變更", + "you": "你", + "youCanAttachUpToFiles": "最多可附加 {{maxFiles}} 個檔案。", + "yourBranchesLabel": "你的分支:", + "yourChangedFilesWillAppearHere": "你更改的檔案將顯示在此", + "yourCodeLivesInLabel": "你的程式碼位於:", + "yourReviewIsRequestedOnThis": "請求你審閱此任務。", + "autopilot": "自動駕駛", + "autopilotDescription": "代理程式會自主工作,只有在關鍵決策阻礙進展時才會向父任務詢問,然後等待答覆再繼續。", + "autopilotInfoLabel": "了解自動駕駛模式", + "autopilotSidebarDescription": "自動駕駛任務", + "autopilotChatDescription": "自動駕駛已啓用。代理程式只會向父任務詢問關鍵決策。" +} diff --git a/apps/web/src/locales/zh-hk/tasks.json b/apps/web/src/locales/zh-hk/tasks.json new file mode 100644 index 0000000000..084df2a878 --- /dev/null +++ b/apps/web/src/locales/zh-hk/tasks.json @@ -0,0 +1,54 @@ +{ + "approvalRequired": "需要審批", + "archive": "歸檔", + "archived": "已歸檔", + "archiveTask": "歸檔任務", + "changesRequested": "已請求更改", + "columnStep": "步驟", + "columnTask": "任務", + "columnUpdated": "更新時間", + "columnWorkflow": "工作流程", + "delete": "刪除", + "deleteTask": "刪除任務", + "failedToArchiveTask": "無法歸檔任務", + "failedToDeleteTask": "無法刪除任務", + "failedToLoadTasks": "無法載入任務", + "failedToUnarchiveTask": "無法取消歸檔任務", + "goToFirstPage": "轉到第一頁", + "goToLastPage": "轉到最後一頁", + "goToNextPage": "轉到下一頁", + "goToPreviousPage": "轉到上一頁", + "group": "分組", + "groupByNone": "無", + "groupByRepository": "儲存庫", + "groupByState": "狀態", + "groupByWorkflow": "工作流程", + "loading": "載入中…", + "loadingTasks": "正在載入任務…", + "noRepository": "無儲存庫", + "noTasksFound": "未找到任務。", + "noWorkflow": "無工作流程", + "openInAdvancedView": "在高級視圖中開啟", + "openInOfficeView": "在辦公視圖中開啟", + "rowsPerPage": "每頁行數", + "showArchived": "顯示已歸檔", + "showingRange_one": "顯示第 {{start}}–{{end}} 條,共 {{count}} 條結果", + "showingRange_other": "顯示第 {{start}}–{{end}} 條,共 {{count}} 條結果", + "simpleViewForKanbanTasksShows": "看板任務的簡單視圖顯示面板中已有的聊天。若要完整體驗(評論、屬性、活動時間線,類似 Linear),請在辦公視圖中開啟此任務。", + "simpleViewShowsTheChatThat": "簡單視圖顯示面板中已有的聊天。使用 {{simpleQuery}} 可切回高級佈局。", + "sort": "排序", + "sortCreatedNewest": "建立時間(最新)", + "sortCreatedOldest": "建立時間(最早)", + "sortTitleAZ": "標題 A-Z", + "sortTitleZA": "標題 Z-A", + "sortUpdatedNewest": "更新時間(最新)", + "sortUpdatedOldest": "更新時間(最早)", + "taskArchived": "任務已歸檔", + "taskArchivedDescription": "任務已成功歸檔。", + "taskUnarchived": "任務已取消歸檔", + "unarchive": "取消歸檔", + "unarchivedBranchesMissing_one": "分支 {{branches}} 在本地和遠端都已不存在。下一個工作階段將從基礎分支重新開始。", + "unarchivedBranchesMissing_other": "分支 {{branches}} 在本地和遠端都已不存在。下一個工作階段將從基礎分支重新開始。", + "unarchivedTaskRestored": "任務已恢復。", + "unarchiveTask": "取消歸檔任務" +} diff --git a/apps/web/src/locales/zh-hk/workflows.json b/apps/web/src/locales/zh-hk/workflows.json new file mode 100644 index 0000000000..dcf13cee23 --- /dev/null +++ b/apps/web/src/locales/zh-hk/workflows.json @@ -0,0 +1,264 @@ +{ + "aConfiguredRepository": "已設定的儲存庫", + "addCondition": "新增條件", + "adding": "正在新增…", + "addWorkflow": "新增工作流程", + "agentProfile": "代理程式設定檔", + "agentProfileHelp": "此工作流程中任務的預設代理程式設定檔。設定後,任務建立對話框中的代理程式選擇器將被鎖定。", + "allowManualMove": "允許手動移動", + "allowManualMoveHelp": "允許在看板上將任務拖入此步驟。", + "applyAnyway": "仍然應用", + "autoArchive": "自動歸檔", + "autoArchiveAfter": "在", + "autoArchiveHelp": "任務在此步驟停留設定小時數後自動歸檔。適用於工作流程最後一步(例如 Done),以保持看板整潔。", + "autoArchiveHours": "小時後", + "automaticWorkflowCycle": "自動工作流程循環", + "autoStartAgent": "自動啓動代理程式", + "autoStartAgentHelp": "任務進入此步驟時自動啓動代理程式。", + "autoSync": "自動同步", + "autoSyncOff": "自動同步已關閉", + "autoTransition": "自動流轉", + "branchLabel": "分支", + "childrenCompletedHelp": "用於父任務步驟。當每個活動的直接子任務均為 COMPLETED、FAILED 或 CANCELLED 時,Kandev 執行此流轉一次。已歸檔與臨時子任務會被忽略。孫任務不計入;若父任務沒有子任務則不執行。", + "childrenCompletedHelpAria": "子任務完成流轉的工作方式", + "chooseAgentFamily": "選擇代理程式系列", + "chooseModelAndSessionSettings": "選擇模型和工作階段設定", + "close": "關閉", + "color": "顏色", + "colorBlue": "藍色", + "colorCyan": "青色", + "colorGray": "灰色", + "colorGreen": "綠色", + "colorIndigo": "靛色", + "colorOrange": "橙色", + "colorPurple": "紫色", + "colorRed": "紅色", + "colorYellow": "黃色", + "configureOriginalSessionOptions": "設定原工作階段設定選項", + "configureOriginalSessionOptionsDescription": "僅當現有對話標籤頁的初始代理程式系列與某條規則匹配時,才更改該標籤頁。", + "confirmWorkflowCycle": "確認工作流程循環", + "confirmWorkflowCycleDescription": "繼續前請審閱重複的代理程式執行。", + "copied": "已複製", + "copy": "複製", + "createAnyway": "仍然建立", + "customAgentProfile": "自訂代理程式設定檔", + "customTemplate": "自訂", + "customTemplateDescription": "從零建立你自己的代理式工作流程。", + "cycle": "循環", + "delete": "刪除", + "deleteAndArchiveTasks": "刪除並歸檔任務", + "deleteStep": "刪除步驟", + "deleteStepAffectsTasks_one": "刪除 {{stepName}} 還將影響其 {{count}} 個任務。", + "deleteStepAffectsTasks_other": "刪除 {{stepName}} 還將影響其 {{count}} 個任務。", + "deleteStepAndTasks": "刪除步驟及任務", + "deleteStepDialogTitle": "刪除步驟", + "deleteStepNoTasks": "這將永久刪除 {{stepName}} 工作流程步驟。", + "deleteStepWithMigration_one": "{{stepName}} 有 {{count}} 個任務。選擇遷移目標,或刪除該步驟及其任務。", + "deleteStepWithMigration_other": "{{stepName}} 有 {{count}} 個任務。選擇遷移目標,或刪除該步驟及其任務。", + "deleteWorkflow": "刪除工作流程", + "deleteWorkflowDialogTitle": "刪除工作流程", + "deleteWorkflowNoTasks": "這將永久刪除工作流程及其所有步驟。", + "deleteWorkflowWithTasks_one": "此工作流程有 {{count}} 個任務。選擇遷移目標,或刪除工作流程並歸檔任務。", + "deleteWorkflowWithTasks_other": "此工作流程有 {{count}} 個任務。選擇遷移目標,或刪除工作流程並歸檔任務。", + "directoryLabel": "目錄", + "directoryLine": "目錄 {{path}}", + "disablePlanMode": "停用計劃模式", + "disablePlanModeOnComplete": "完成時停用計劃模式", + "disablePlanModeOnCompleteHelp": "代理程式完成一輪後關閉計劃模式,即使任務仍留在此步驟。", + "disablePlanModeOnExitHelp": "在此步驟的每一輪保持計劃模式開啓,僅當任務移到其他步驟時關閉。", + "doNothing": "不執行任何操作", + "doNothingWaitForUser": "不執行任何操作(等待用戶)", + "duplicateUnavailableInImproveKandev": "無法複製此工作區中的工作流程。", + "duplicateWorkflow": "複製", + "duplicatingWorkflow": "正在複製…", + "everySeconds_one": "每 {{count}} 秒", + "everySeconds_other": "每 {{count}} 秒", + "export": "匯出", + "exportAll": "全部匯出", + "exportWorkflowsTitle": "匯出工作流程", + "exportWorkflowTitle": "匯出工作流程", + "failedToAddWorkflowStep": "新增工作流程步驟失敗", + "failedToCheckWorkflowStepTasks": "檢查工作流程步驟任務失敗", + "failedToCheckWorkflowTasks": "檢查工作流程任務失敗", + "failedToDeleteStep": "刪除步驟失敗", + "failedToDeleteWorkflow": "刪除工作流程失敗", + "failedToDuplicateWorkflow": "複製工作流程失敗", + "failedToExportWorkflow": "匯出工作流程失敗", + "failedToExportWorkflows": "匯出工作流程失敗", + "failedToImportWorkflows": "匯入工作流程失敗", + "failedToLoadSyncConfig": "載入工作流程同步設定失敗:{{error}}", + "failedToLoadWorkflowSteps": "載入工作流程步驟失敗", + "failedToMigrateTasks": "遷移任務失敗", + "failedToSaveWorkflowChanges": "儲存工作流程更改失敗", + "failedToUpdateWorkflowStep": "更新工作流程步驟失敗", + "hopNumber": "躍點 {{index}}", + "import": "匯入", + "importCompleteTitle": "匯入完成", + "importCreated": "已建立:{{names}}", + "importing": "正在匯入…", + "importSkipped": "已跳過(已存在):{{names}}", + "importWorkflowsTitle": "匯入工作流程", + "invalidYaml": "無效的 YAML", + "keepCurrent": "保留目前設定", + "lastAttempt": "上次嘗試 {{when}}", + "lastSynced": "上次同步 {{when}}", + "loadingWorkflowSteps": "正在載入工作流程步驟…", + "migrateAndDelete": "遷移並刪除", + "migrateAndDeleteStep": "遷移並刪除步驟", + "migrating": "正在遷移…", + "moreInformation": "更多資訊", + "moveToNextStep": "移至下一步", + "moveToPreviousStep": "移至上一步", + "moveToSpecificStep": "移至指定步驟", + "name": "名稱", + "noFeederStep": "無饋送步驟", + "noneUseTaskDefault": "無(使用任務預設)", + "noProfileOverride": "無設定覆蓋", + "notARecognizedRepositoryLink": "無法識別的 {{provider}} 儲存庫連結。", + "notSyncedYet": "尚未同步;請使用「立即同步」", + "onExit": "退出時", + "onExitActions": "退出時操作", + "onExitHelp": "離開此步驟時執行(進入下一步之前)。", + "onTurnCompleteHelp": "代理程式完成一輪後執行。可用於自動推進流水線中的任務。", + "onTurnCompleteLabel": "輪次完成時", + "onTurnCompleteTrigger": "輪次完成時", + "onTurnStartHelp": "用戶傳送訊息時執行。可用於審閱循環(例如收到反饋後移回進行中)。", + "onTurnStartLabel": "輪次開始時", + "onTurnStartTrigger": "輪次開始時", + "onUserMessage": "用戶訊息時", + "orPasteYaml": "或貼上 YAML", + "overrideAgentProfileHelp": "覆蓋此步驟的代理程式設定檔。進入此步驟時,如果使用其他設定,將建立具有全新上下文的新工作階段。", + "overrideOriginalSessionOptions": "覆蓋原工作階段選項", + "overrideOriginalSessionOptionsHelp": "保留原對話標籤頁,同時更改其在此步驟中的工作階段設定。例如,先使用 5.6 Sol 模型,再切換到 5.6 Luna 進行實現工作。", + "pasteGitLabPathHint": "貼上任意 GitLab 連結(也支援自行託管的實例;只會使用其中的路徑),或直接輸入路徑。然後在下方設定分支和目錄。", + "pasteRepositoryLinkHint": "貼上 {{provider}} 連結或直接輸入路徑,然後在下方設定分支和目錄。", + "planMode": "計劃模式", + "planModeHelp": "代理程式提出計劃,而不是直接做更改。", + "pollDisabledHint": "僅在你按下「立即同步」時執行同步。", + "pollEnabledHint": "按此間隔檢查儲存庫(最短 60 秒)。", + "pollIntervalSeconds": "輪詢間隔(秒)", + "potentialRepeatedAgentRun": "可能重複的代理程式執行", + "projectPathOrLink": "項目路徑或連結", + "promptSourceStepPrompt": "重新進入「{{stepName}}」會傳送其步驟提示詞,而不是任務描述。", + "promptSourceStepPromptWithTaskDescription": "重新進入「{{stepName}}」會傳送已渲染的步驟提示詞(含任務描述)。", + "promptSourceTaskDescription": "「{{stepName}}」沒有步驟提示詞,因此重新進入時會傳送任務描述。", + "pullFrom": "拉取自", + "pullFromHelp": "當此步驟有容量時,可選的饋送步驟用於拉取排隊中的工作。", + "readOnlyManagedBySync": "只讀;由工作流程同步管理", + "readOnlyManagedByImproveKandev": "只讀;由 Improve Kandev 管理", + "remove": "移除", + "removeAgentCondition": "移除代理程式條件 {{index}}", + "removeConditionalSessionConfigBeforeProfile": "請先移除條件工作階段設定,再為此步驟選擇固定代理程式設定檔。", + "removeSyncConfirm": "移除工作流程同步設定?這不會刪除已同步的工作流程。", + "repositoryLink": "儲存庫連結", + "repositoryRoot": "(儲存庫根目錄)", + "resetAgentContext": "重置代理程式上下文", + "resetAgentContextHelp": "進入此步驟時用全新對話上下文重啓代理程式。適用於需要無偏見視角的審閱步驟。", + "resetAgentContextHelpWithProfile": "無需此操作;切換代理程式設定檔已會建立帶全新上下文的新工作階段。", + "restoreOriginal": "恢復原始設定", + "retryPartialSaveBeforeLeaving": "離開前請重試未完成的工作流程儲存", + "returnToWorkflow": "返回工作流程", + "runCompletionActionsWhenTurnCancelled": "取消輪次時執行完成操作", + "runCompletionActionsWhenTurnCancelledHelp": "僅在用戶明確取消輪次時適用。目標步驟的進入操作可能會立即啓動另一輪代理程式。", + "save": "儲存", + "saveBeforeDuplicating": "複製前請先儲存工作流程。", + "saveBeforeExporting": "匯出前請先儲存工作流程。", + "saveFailed": "儲存失敗:{{error}}", + "saveWorkflowsBeforeOrdering": "排序前請先儲存工作流程", + "saving": "正在儲存…", + "seconds": "秒", + "selectAction": "選擇操作", + "selectedStepFallback": "已選", + "selectStep": "選擇步驟", + "selectWorkflow": "選擇工作流程", + "sessionConfigCarryForwardWarning": "由於複用原對話標籤頁,之前的工作流程設定可能會沿用到此步驟。", + "sessionConfigCarryForwardWarningMessage": "{{stepName}} 中更改的設定可能會沿用到此步驟的 {{agentName}}。請選擇保留、恢復原始或設定新值。", + "sessionConfigEmptyRules": "新增條件,以選擇哪些初始代理程式接收這些設定。", + "sessionConfigFixedProfileWarning": "請先移除固定設定覆蓋,再設定原工作階段。這兩種行為不能同時使用。", + "sessionConfigKeep": "保留", + "sessionConfigModelOptionsUnavailable": "此代理程式的模型選項不可用。請刷新代理程式能力後再儲存此條件。", + "sessionConfigRestore": "恢復", + "sessionConfigRulesHelp": "規則應用於任務的第一個代理程式工作階段,不會建立或切換對話標籤頁。", + "sessionConfigSetNew": "重新設定", + "setSettings": "設定選項", + "settingsForAgent": "{{agent}} 的設定", + "showInCommandPanel": "在命令面板中顯示", + "showInCommandPanelHelp": "開啟命令面板(Cmd+K)時顯示此步驟中的任務。可用於從快速存取中隱藏待辦或完成步驟。", + "startStep": "起始步驟", + "startStepHelp": "新任務從此步驟開始。每個工作流程只能有一個起始步驟。", + "stepIsPartOfReplayCycle": "{{stepName}} 屬於回放循環", + "stepNamePlaceholder": "步驟名稱", + "workflowPrompt": "工作流程提示詞", + "workflowPromptHelp": "可選說明,會在每一步進入時、步驟提示詞之前加入。支援 {task_id} 與 @saved-prompt 引用(展開方式與步驟提示詞相同)。{{taskPrompt}} 僅用於步驟。留空即停用。對代理程式可見,並在聊天中摺疊顯示。", + "workflowPromptPlaceholder": "若 PR 已合併或關閉,將任務移至 Done。\n若需要建立多個拉取要求,優先通過子任務編排。", + "workflowPromptCollapsedHint": "可選;展開以新增共享的步驟入口說明", + "workflowPromptSetHint": "已設定;展開以編輯", + "workflowInstructionsCollapsed": "工作流程說明", + "stepPrompt": "步驟提示詞", + "stepPromptHelp": "為此步驟中的代理程式提供自訂指令。使用 {{taskPrompt}} 可插入任務描述。", + "stepPromptPlaceholderExample": "使用 OAuth2 實現用戶身份驗證", + "stepPromptPlaceholderTaskPrompt": "用戶提供的原始任務描述", + "stepPromptUsageHint": "輸入 {{open}} 可使用佔位符({{taskPrompt}} 會插入任務描述),或輸入 @ 引用已儲存的提示詞。其內容會作為隱藏上下文附加;編輯已儲存的提示詞時,所有引用該提示詞的步驟都會更新。注意:{{taskPrompt}} 只會在步驟提示詞本身展開,不會在所引用的已儲存提示詞中展開。", + "switchProviderWarning": "切換來源後,所有已同步工作流程都會替換為新儲存庫中的版本;新儲存庫中不存在的工作流程將被移除。", + "syncCompletedWithWarnings": "同步完成,但有警告", + "syncConfigSaved": "工作流程同步設定已儲存", + "syncDescription": "自動將儲存庫中的工作流程定義同步到此工作區。", + "syncDirectoryHelp": "目錄應包含 {{format}} 格式的工作流程匯出檔案({{extensions}})- 與工作流程匯出產生的格式相同。", + "synced": "已同步", + "syncedBadgeTooltip": "只讀;由 {{source}} 的工作流程同步管理。請在同步儲存庫中編輯或移除。", + "syncedReadOnlyReason": "由工作流程同步管理;請在同步儲存庫中編輯或移除", + "syncFailed": "同步失敗", + "syncFailedWithError": "同步失敗:{{error}}", + "syncingFromRepository": "正在從 <1>{{repository}} 同步", + "syncNow": "立即同步", + "syncProviderLabel": "同步來源", + "syncRemoved": "已移除工作流程同步;已同步的工作流程可再次編輯", + "syncRemoveFailed": "刪除失敗:{{error}}", + "syncResolvedTarget": "正在同步 {{owner}}/{{repo}} @ {{branch}};目錄 {{directory}}。", + "syncResolvedTargetGitLab": "正在同步 {{projectPath}} @ {{branch}};目錄 {{directory}}。", + "syncTitle": "工作流程同步", + "targetStep": "目標步驟", + "targetWorkflow": "目標工作流程", + "template": "模板", + "templateCodeReview": "程式碼審閱", + "templatePlan": "計劃", + "templates": "模板:", + "templateSecurityAudit": "安全審計", + "transitionAuto": "自動", + "transitionBack": "返回", + "transitionGoto": "跳轉", + "transitionManual": "手動", + "transitions": "流轉", + "unsavedStepChangesDiscarded": "未儲存的步驟更改將被丟棄。", + "unsavedWorkflowChangesDiscarded": "未儲存的工作流程更改將被丟棄。", + "update": "更新", + "uploadYamlFile": "上傳 YAML 檔案", + "userActionRequired": "需要用戶操作", + "waitForAgentCompletionSignal": "等待代理程式完成信號", + "waitForAgentCompletionSignalHelp": "僅在代理程式呼叫 {{tool}} 後才自動推進。否則將輪次結束視為完成。", + "waitingForFirstSync": "等待首次同步…", + "waitingForRetry": "正在等待重試失敗的更改。", + "whenAgentIs": "當代理程式為", + "whenChildTasksComplete": "當子任務完成時", + "wipLimit": "在製品限制", + "wipLimitHelp": "此步驟中允許的最大活動任務數。溢出的任務在佇列中可見。使用 0 表示無限制。", + "wipLimitsNote": "在製品限制約束的是活動工作,而非可見性。溢出任務會留在看板上直到有容量;若所選饋送步驟也已滿,則拒絕建立新任務。", + "workflow": "工作流程", + "workflowCycleBlocked": "工作流程循環已阻止", + "workflowCycleBlockedDescription": "繼續前請更改工作流程步驟以消除自動循環。", + "workflowCycleBlockingBody": "此路徑會重新進入「{{stepName}}」,並可能在沒有用戶再次操作的情況下重新啓動代理程式。", + "workflowCycleReplayPathFor": "{{stepName}} 的回放路徑", + "workflowCycleWarningBody": "此路徑可能重新進入「{{stepName}}」,並在用戶操作後再次啓動代理程式。", + "workflowDescription": "描述", + "workflowDescriptionPlaceholder": "可選描述", + "workflowDetails": "工作流程詳情", + "workflowName": "工作流程名稱", + "workflowsReadOnlyImprove": "此工作區中的工作流程由 Improve Kandev 管理,無法更改。", + "workflowNameIsRequired": "工作流程名稱為必填項", + "workflowNamePlaceholder": "我的項目工作流程", + "workflowMutationInProgress": "請等待目前工作流程更改完成。", + "workflows": "工作流程", + "workflowsSectionDescription": "建立帶自動流轉的自主流水線,或由你手動移動任務的手動工作流程", + "workflowSteps": "工作流程步驟", + "workflowSyncCompleted": "工作流程同步完成" +} diff --git a/apps/web/src/locales/zh-hk/workspaces.json b/apps/web/src/locales/zh-hk/workspaces.json new file mode 100644 index 0000000000..ff83a15533 --- /dev/null +++ b/apps/web/src/locales/zh-hk/workspaces.json @@ -0,0 +1,122 @@ +{ + "addLocalRepository": "新增本地儲存庫", + "addScript": "新增腳本", + "addWorkspace": "新增工作區", + "alwaysPullBeforeWorktree": "建立新工作樹前始終拉取", + "backToWorkspaces": "返回工作區", + "branchTemplateIssueKey": "ticket 的別名。按模板可讀性任選其一。", + "branchTemplateLiteralPrefix": "直接寫字面前綴,例如 <0>{{example}}。", + "branchTemplatePlaceholders": "分支模板佔位符", + "branchTemplateSuffix": "短隨機後綴。可選,但建議使用以避免分支名衝突。示例:{{example}}。", + "branchTemplateTaskId": "Kandev 任務 UUID,已清理為適合分支名。示例:{{example}}。", + "branchTemplateTicket": "優先使用任務標識;否則使用 Jira、Linear、GitHub 議題或 GitHub PR 元數據。示例:{{example}}。", + "branchTemplateTitle": "任務標題清理為小寫 ASCII、連字符分隔,最長 20 字符。示例:{{example}}。", + "branchTemplateTitleFull": "與 title 相同的清理規則,但最長 80 字符。示例:{{example}}。", + "buildScriptChip": "構建腳本", + "checking": "正在檢查…", + "cleanupScript": "清理腳本", + "cleanupScriptChip": "清理腳本", + "cleanupScriptHelp": "任務完成時執行,用於清理工作區。", + "close": "關閉", + "closeRepositoryEditor": "關閉儲存庫編輯器", + "confirmDelete": "確認刪除", + "copyFiles": "複製檔案", + "copyFilesHelp": "複製到新工作樹的 gitignored 路徑。在條目後追加 <0>{{symlink}} 可連結回主儲存庫。使用 <1>{{escapedSymlink}} 表示以 <2>{{symlink}} 結尾的字面檔案名。", + "copyFilesPathsResolved": "路徑相對於儲存庫根解析,並植入每個新工作樹,保持相對位置。工作樹中已有檔案不會被覆蓋。", + "copyFilesPatternBraces": "<0>{{braces}} 大括號交替,例如 <1>{{example}}", + "copyFilesPatternGlobstar": "<0>{{globstar}} 匹配任意層目錄,例如 <1>{{example}}", + "copyFilesPatternLiteral": "<0>{{pattern}} 字面檔案或目錄(目錄會遞歸複製)", + "copyFilesPatternWildcards": "<0>{{star}}、<1>{{question}}、<2>{{charClass}} 單段通配符", + "copyFilesRemoteFallback": "遠端執行器複製檔案內容,而不是建立符號連結。", + "copyFilesSizeLimit": "複製到遠端執行器時,超過 {{limit}} 的檔案會被跳過。本地工作樹複製無大小上限。", + "customScriptsLabel": "自訂腳本", + "customScripts_one": "{{count}} 個自訂腳本", + "customScripts_other": "{{count}} 個自訂腳本", + "defaultAgentProfile": "預設代理程式設定檔", + "defaultExecutor": "預設執行器", + "delete": "刪除", + "deleteRepository": "刪除儲存庫", + "deleteRepositoryConfirm": "這將移除儲存庫及其腳本。此操作無法撤銷。", + "deleteRepositoryTitle": "刪除儲存庫", + "deleteRepositoryActiveSessions_one": "此儲存庫正被 {{count}} 個活動代理程式工作階段使用。請先停止或完成後再刪除儲存庫。", + "deleteRepositoryActiveSessions_other": "此儲存庫正被 {{count}} 個活動代理程式工作階段使用。請先停止或完成後再刪除儲存庫。", + "deleteThisWorkspace": "刪除此工作區", + "deleteWorkspace": "刪除工作區", + "devScript": "開發腳本", + "devScriptChip": "開發腳本", + "devScriptHelp": "用於啓動此儲存庫的預覽開發伺服器。使用 <0>{{port}} 自動分配端口。", + "discoverRepositoryDescription": "選擇已發現的儲存庫,或提供絕對路徑進行驗證。", + "discoveredRepositories": "已發現的儲存庫", + "edit": "編輯", + "environmentSecrets": "環境密鑰", + "environmentSecretsDescription": "將已存儲的密鑰綁定到使用此儲存庫的任務的環境變量鍵。密鑰值不會在此顯示。", + "environmentSecretKey": "環境變量鍵", + "environmentSecretKeyPlaceholder": "NPM_TOKEN", + "environmentSecretValue": "已存儲密鑰", + "selectEnvironmentSecret": "選擇密鑰", + "missingSecretReference": "缺少密鑰引用", + "noEnvironmentSecrets": "未設定環境密鑰。", + "noAvailableEnvironmentSecrets": "沒有可用的全局或工作區密鑰。", + "addEnvironmentSecret": "新增環境密鑰", + "removeEnvironmentSecret": "移除環境密鑰 {{key}}", + "environmentSecretKeyInvalid": "請使用有效的 POSIX 環境變量鍵。", + "environmentSecretKeyDuplicate": "每個環境變量鍵只能綁定一次。", + "environmentSecretKeyReserved": "此環境變量鍵由 Kandev 保留。", + "environmentSecretRequired": "請為每個環境變量鍵選擇一個已存儲密鑰。", + "globalSecretScope": "全局", + "workspaceSecretScope": "工作區", + "failedToCheckRepositorySessions": "檢查儲存庫工作階段失敗", + "failedToCreateWorkspace": "建立工作區失敗", + "failedToDeleteRepository": "刪除儲存庫失敗", + "failedToDeleteWorkspace": "刪除工作區失敗", + "failedToDiscoverRepositories": "發現儲存庫失敗", + "failedToSaveRepository": "無法儲存此儲存庫", + "failedToSaveWorkspace": "儲存工作區失敗", + "filterRepositories": "篩選儲存庫…", + "invalidRepositoryPath": "無效的儲存庫路徑", + "localPath": "本地路徑", + "localPathNotSet": "未設定本地路徑", + "repositoriesReadOnlyImprove": "此工作區中的儲存庫由 Improve Kandev 管理,無法更改。", + "manageWorkspaceDetails": "管理工作區詳情,並跳轉到工作流程或儲存庫。", + "manageYourWorkspacesAndWorkflows": "管理你的工作區與工作流程", + "manualPath": "手動路徑", + "name": "名稱", + "noAgentProfilesAvailable": "無可用代理程式設定檔", + "overview": "概覽", + "noCustomScripts": "無自訂腳本", + "noDefault": "無預設", + "noExecutorsAvailable": "無可用執行器", + "noRepositoriesFound": "未找到儲存庫。", + "noScriptsYet": "尚無腳本。", + "noWorkspacesConfigured": "未設定工作區。新增第一個工作區以開始使用。", + "patternSyntax": "模式語法", + "remoteRepository": "遠端儲存庫", + "repositories": "儲存庫", + "resourceCount_one": "{{count}} 個資源", + "resourceCount_other": "{{count}} 個資源", + "repositoriesInThisWorkspace": "此工作區中的儲存庫", + "repository": "儲存庫", + "repositoryName": "儲存庫名稱", + "scanningRepositories": "正在掃描儲存庫…", + "scriptName": "腳本名稱", + "selectDefaultAgentProfile": "選擇預設代理程式設定檔", + "selectDefaultExecutor": "選擇預設執行器", + "setupScript": "設定腳本", + "setupScriptHelp": "在複製儲存庫或建立 Git 工作樹時執行。", + "sourceLocal": "本地", + "sourceRemote": "遠端", + "supportedPatterns": "支援的模式:", + "thisActionCannotBeUndone": "此操作無法撤銷。", + "typeWorkspaceNameToConfirm": "輸入工作區名稱 <0>{{name}} 以確認刪除。此操作無法撤銷。", + "untitledRepository": "未命名儲存庫", + "useRepository": "使用儲存庫", + "validGitRepository": "有效的 git 儲存庫", + "validate": "驗證", + "workspaceName": "工作區名稱", + "workspaceNameIsRequired": "工作區名稱為必填項。", + "workspaceNamePlaceholder": "我的工作區", + "workspaceNotFound": "未找到工作區", + "workspaceSettings": "工作區設定", + "worktreeBranchTemplate": "工作樹分支模板", + "worktreeSync": "工作樹同步" +} diff --git a/apps/web/src/locales/zh-tw/account.json b/apps/web/src/locales/zh-tw/account.json new file mode 100644 index 0000000000..4c7f035ae9 --- /dev/null +++ b/apps/web/src/locales/zh-tw/account.json @@ -0,0 +1,42 @@ +{ + "actions": "操作", + "activeSessions": "活動工作階段", + "apiTokens": "API 權杖", + "apiTokensBlurb": "個人存取權杖可讓指令碼和 CLI 以你的身分驗證。若權杖可能已洩露,請立即吊銷。", + "cancel": "取消", + "changePassword": "修改密碼", + "couldNotChangePassword": "無法修改密碼。", + "couldNotCreateToken": "無法建立權杖。", + "createApiToken": "建立 API 權杖", + "createApiTokenDescription": "授予與你的帳戶相同的存取權限,供指令碼或 CLI 使用。請為其命名,便於日後識別。", + "createToken": "建立權杖", + "created": "建立時間", + "creating": "正在建立…", + "currentPassword": "目前密碼", + "device": "裝置", + "done": "完成", + "failedToLoadSessions": "載入工作階段失敗。", + "failedToLoadTokens": "載入權杖失敗。", + "ipAddress": "IP", + "lastSeen": "上次活動", + "lastUsed": "上次使用", + "loadingSessions": "正在載入工作階段…", + "loadingTokens": "正在載入權杖…", + "name": "名稱", + "never": "從未", + "newPassword": "新密碼", + "newToken": "新權杖", + "noTokensYet": "暫無權杖。", + "password": "密碼", + "passwordUpdated": "密碼已更新。", + "revoke": "吊銷", + "saving": "正在儲存…", + "securityPageDescription": "修改密碼並檢視已登入你帳戶的裝置。", + "securityPageTitle": "個人資料與密碼", + "signOut": "登出", + "thisDevice": "此裝置", + "tokenCreated": "權杖已建立", + "tokenShownOnlyOnce": "此內容僅顯示一次;請立即複製並妥善保管。", + "tokensPageDescription": "供以你身分執行的指令碼和 CLI 使用的個人存取權杖。", + "tokensPageTitle": "API 權杖" +} diff --git a/apps/web/src/locales/zh-tw/agents.json b/apps/web/src/locales/zh-tw/agents.json new file mode 100644 index 0000000000..912a3a920e --- /dev/null +++ b/apps/web/src/locales/zh-tw/agents.json @@ -0,0 +1,221 @@ +{ + "actionCannotBeUndone": "此操作無法撤銷。", + "add": "新增", + "addProfile": "新增設定", + "addTuiAgent": "新增 TUI 代理程式", + "addTuiAgentDescription": "將 CLI 工具註冊為 TUI 代理程式。它會以預設透傳設定出現在代理程式清單中。", + "agentCliFlags": "代理程式 CLI 旗標", + "agentCliFlagsDescription": "啟動時代理程式 CLI 接收的旗標。僅應用已啟用的項。", + "agentInstallAlreadyInProgress": "代理程式安裝已在進行中。", + "agentInstallationInProgress": "正在安裝代理程式", + "agentNotFound": "未找到代理程式。", + "agentProfileSettings": "{{name}} 代理程式設定檔", + "agentProfilesTitle": "{{name}} 設定", + "approveUpdate": "批准更新", + "authRequiredOpenLoginTerminal": "需要身分驗證;點選開啟登入終端", + "authRequiredOpenShell": "需要身分驗證;點選開啟 shell 並登入", + "authenticationRequired": "需要身分驗證", + "automaticallyAvailable": "自動可用", + "availableCommandsCount_one": "可用命令({{count}})", + "availableCommandsCount_other": "可用命令({{count}})", + "availableSlashCommands": "可用斜槓命令", + "availableSlashCommandsHelp": "在工作階段聊天中輸入即可呼叫;例如 <0>{{example}}。", + "availableToInstallDescription": "點選「安裝」在 Kandev 主機上執行該代理程式的安裝指令碼。進度會即時推送;可並行啟動多個安裝。", + "backToAgents": "返回代理程式", + "backToModelSettings": "從 {{name}} 返回模型設定", + "browseAvailableAgents": "瀏覽可用代理程式", + "builtIn": "內建", + "cannotDeleteAgentProfile": "無法刪除代理程式設定檔", + "capabilityAuthRequired": "需要身分驗證。請在終端執行代理程式 CLI 完成驗證,然後重新整理。", + "capabilityNotInstalled": "未安裝代理程式 CLI。", + "capabilityProbeFailed": "探測失敗。請檢視代理程式日誌了解詳情。", + "capabilityProbing": "正在檢查代理程式能力…", + "changeTierMappingsFirst": "刪除此設定前,請先更改這些工作區層級對映。", + "everythingInstalled": "所有可用代理程式和工具均已安裝。", + "checkingAuthentication": "正在檢查身分驗證", + "checkingCapabilitiesAndAuth": "正在檢查代理程式能力與身分驗證…", + "checkingLatestRuntimeVersion": "正在檢查最新執行時版本…", + "cliFlagsEnabledCount_one": "已啟用 {{enabled}} / {{count}}", + "cliFlagsEnabledCount_other": "已啟用 {{enabled}} / {{count}}", + "command": "命令", + "commandPrefix": "命令字首", + "commandPrefixHelp": "附加在代理程式啟動命令前的權杖,使其在沙箱啟動器下執行(例如 <0>{{example}})。該值會按 shell 規則拆分為多個權杖。留空則直接執行代理程式。僅適用於 ACP 工作階段;當設定使用 TUI 透傳時無效。", + "commandPreview": "命令預覽", + "commandPreviewHelp": "根據目前設定將執行的 CLI 命令。", + "commandRequired": "命令為必填項", + "commandThatWillRun": "將要執行的命令", + "configureProfilesIntro": "管理此代理程式的設定和預設值。", + "configured": "已設定", + "conflictAutomationRow": "<0>{{name}}({{workspace}})", + "conflictAutomationsTitle": "自動化:", + "conflictQuickChatsTitle": "快速聊天:", + "conflictTasksTitle": "任務:", + "conflictTierMappingRow": "{{workspace}} 中 {{provider}} 的 <0>{{tier}} 層級", + "conflictTierMappingsTitle": "工作區層級對映:", + "conflictWatchersTitle": "監控(將被停用):", + "conflictUtilityAgentsTitle": "輔助代理程式(將保留失效繫結):", + "disableProfileUtilityWarning": "輔助代理程式正在使用此設定。停用後,新呼叫會停止,直到修復每個繫結。", + "disableProfileAnyway": "停用設定", + "copied": "已複製", + "copyInstallCommand": "複製安裝命令", + "copyToClipboard": "複製到剪貼簿", + "create": "建立", + "createAgentProfileTitle": "建立 {{name}} 設定", + "installAgents": "安裝代理程式", + "profileCount_one": "{{count}} 個設定", + "profileCount_other": "{{count}} 個設定", + "createProfileIntro": "為此代理程式建立新設定。", + "creating": "正在建立…", + "defaultProfile": "預設代理程式設定檔", + "defaultSuffix": "(預設)", + "delete": "刪除", + "deleteAgent": "刪除代理程式", + "deleteAgentDescription": "這將永久移除該代理程式及其所有設定。此操作無法撤銷。", + "deleteAgentProfileDescription": "這將永久刪除此設定。此操作無法撤銷。", + "deleteAgentProfileTitle": "刪除代理程式設定檔?", + "deleteAgentTitle": "刪除 {{name}}?", + "deleteAnyway": "仍然刪除", + "deleteAnywayConsequences": "這些工作階段將無法再使用此設定,所列監控將被停用。此操作無法撤銷。", + "deleteProfile": "刪除設定", + "details": "詳情", + "detectedAt": "檢測路徑:{{path}}", + "disableProfile": "停用代理程式設定檔", + "disableSetting": "停用 {{name}}", + "displayName": "顯示名稱", + "displayNameRequired": "顯示名稱為必填項", + "done": "完成", + "enableMcp": "啟用 MCP", + "enableMcpDescription": "允許此設定在工作階段中使用 MCP 伺服器。", + "enableProfile": "啟用代理程式設定檔", + "enableSetting": "啟用 {{name}}", + "enabled": "已啟用", + "enabledProfileInfo": "關於代理程式設定檔可用性的更多資訊", + "enabledProfileHelper": "已停用的代理程式設定檔仍會繼續服務現有工作階段,但在建立新任務或代理程式時不會出現在選項中。", + "everyProfileNeedsNameAndModel": "每個設定都需要名稱和模型。", + "exampleValue": "例如 {{example}}", + "failedToCreateAgent": "建立代理程式失敗", + "failedToDeleteProfile": "刪除設定失敗", + "failedToFetchCapabilities": "擷取能力失敗", + "modelOptionsAuthenticationRequired": "請登入此代理程式以載入模型選項。", + "modelOptionsResolutionFailed": "無法載入模型選項。", + "modelSettings": "模型設定", + "resolvingModelOptions": "正在載入模型選項…", + "retryModelOptions": "重試", + "failedToLoadCommandPreview": "載入命令預覽失敗", + "failedToLoadMcpConfig": "載入 MCP 設定失敗", + "failedToRefresh": "重新整理失敗:{{error}}", + "failedToSaveAgent": "儲存代理程式失敗", + "failedToSaveMcpConfig": "儲存 MCP 設定失敗", + "failedToSaveProfile": "儲存設定失敗", + "failedToUpdateProfile": "更新代理程式設定檔失敗", + "filterModels": "篩選模型…", + "fixInvalidMcpConfig": "請先修復無效的 MCP 設定再儲存。", + "fixInvalidMcpJson": "請先修復無效的 MCP JSON 再儲存。", + "flag": "旗標", + "hostTerminal": "主機終端", + "hostTerminalDescription": "在 Kandev 主機上執行 shell。可用於手動安裝或設定代理程式。", + "install": "安裝", + "installQueued": "已排隊…", + "installationNotDetected": "未檢測到安裝", + "installed": "已安裝", + "installedAgents": "已安裝的代理程式", + "installedAgentsDescription": "在本機檢測到的代理程式已可設定。", + "installing": "正在安裝…", + "invalidJson": "無效的 JSON", + "invalidMcpConfig": "無效的 MCP 設定", + "kandevMcpChip": "✓ {{name}}", + "kandevMcpTools": "工具:{{tools}}", + "mcpConfigMustBeJsonObject": "MCP 伺服器設定必須是 JSON 物件", + "mcpConfiguration": "MCP 設定", + "mcpDraftHint": "設定儲存後將應用 MCP 設定。", + "mcpKeyMustBeJsonObject": "{{key}} 必須是 JSON 物件", + "mcpPassthroughInjectionHint": "在 CLI 透傳模式下,Kandev 通過 {{mechanism}} 注入這些 MCP 伺服器。", + "mcpSaveProfileHint": "儲存此設定以設定 MCP 伺服器。", + "mcpServersHelp": "MCP 定義儲存在資料庫中,並在執行時按執行器解析。這不會覆蓋你的本地代理程式設定檔。", + "mcpServersJson": "MCP 伺服器(JSON)", + "model": "模型", + "modelHeading": "模型", + "modelRequiredForAllProfiles": "所有設定都需要模型。", + "noAuthHintLogin": "點選「開啟終端」登入,然後重新整理。", + "noAuthHintNotInstalled": "安裝代理程式 CLI,然後點選「重新整理」。", + "noAuthHintShell": "點選「開啟終端」啟動 shell,執行代理程式的登入命令,然後重新整理。", + "noAuthLoginRequired": "未驗證;需要登入", + "newProfile": "新設定", + "noCliFlagsConfigured": "未設定 CLI 旗標。請在下方新增。", + "noCommandPreview": "無可用命令預覽。", + "noInstalledAgentsDetected": "未檢測到已安裝的代理程式。請在下方安裝,然後點選「重新掃描」。", + "noModeFound": "未找到模式。", + "noModelFound": "未找到模型。", + "noModelsFound": "未找到模型。", + "noProfilesYet": "尚無設定。請從已安裝的代理程式建立一個。", + "notInstalled": "未安裝", + "openTerminal": "開啟終端", + "pageDescription": "發現已安裝的代理程式、安裝新代理程式並管理其設定。", + "popularServers": "常用伺服器", + "probingCapabilities": "正在探測代理程式能力… 通常需要幾秒鐘。", + "profileActions": "設定操作", + "profileInUseIntro": "此設定目前正在使用。刪除後將影響以下內容:", + "profileName": "設定名稱", + "profileNameRequired": "設定名稱為必填項。", + "profileNameRequiredDescription": "儲存前請輸入設定名稱。", + "profileNameRequiredTitle": "設定名稱為必填項", + "profileNotFound": "未找到設定。", + "profileSettings": "代理程式設定檔", + "promptTokenHint": "<0>{{token}} 將替換為你的任務描述或後續訊息。", + "ptyConnectionError": "連線錯誤", + "refresh": "重新整理", + "refreshCapabilitiesTooltip": "重新整理代理程式能力(模型 + 模式)", + "remove": "移除", + "removeCliFlag": "移除 {{name}}", + "removeThisProfile": "移除此設定", + "requestFailed": "請求失敗", + "rescan": "重新掃描", + "retry": "重試", + "retryUpdate": "重試更新", + "retryVersionCheck": "重試版本檢查", + "reviewUpdateBeforeApplying": "在 Kandev 更改此主機執行時之前,請先審閱更新。", + "runtimeAlreadyUpToDate": "執行時已是最新。", + "runtimeUpdateExplainer": "這將更新此 Kandev 主機上的託管執行時,然後重新整理其模型與能力。", + "runtimeUpdateFailed": "執行時更新失敗。", + "runtimeUpdateSessionsNote": "活動工作階段會繼續執行;僅後續探測與啟動會使用重新整理後的執行時。", + "runtimeUpdatedRefreshFailed": "執行時已更新,但無法重新整理能力:{{error}}", + "runtimeUpdatedSuccess": "執行時更新成功。", + "runtimeVersion": "執行時版本", + "scanningForInstalledAgents": "正在掃描已安裝的代理程式…", + "searchModels": "搜尋模型…", + "searchModes": "搜尋模式…", + "selectAModelShort": "選擇模型", + "selectModel": "選擇模型…", + "sessionEnded": "工作階段已結束。", + "sessionEndedWithCode": "工作階段已結束(退出碼 {{code}})。", + "sessionUnavailable": "工作階段已不再可用。", + "setupProfile": "設定代理程式設定檔", + "signInToAgent": "登入:{{name}}", + "startMode": "啟動模式", + "startModel": "啟動模型", + "startingSession": "正在啟動工作階段…", + "terminal": "終端", + "tuiCommandHelp": "在 PATH 上查詢的二進位制名稱。使用 <0>{{token}} 插入模型值。", + "tuiModelHelp": "在代理程式選擇器下拉選單中顯示的設定標籤", + "unableToStartUpdate": "無法開始更新:{{error}}", + "untitledQuickChat": "未命名快速聊天", + "untitledTask": "未命名任務", + "upToDate": "已是最新", + "updateAgent": "更新 {{name}}", + "updatePhaseQueued": "更新已排隊…", + "updatePhaseRefreshing": "正在重新整理代理程式能力…", + "updatePhaseResolving": "正在檢查最新版本…", + "updatePhaseUpdating": "正在更新執行時…", + "valueOptional": "值(可選)", + "valueOptionalLabel": "值(可選)", + "valuePlaceholder": "值", + "watcherKindGithubIssue": "GitHub 議題", + "watcherKindGithubReview": "GitHub PR 審查", + "watcherKindJira": "Jira", + "watcherKindLinear": "Linear", + "duplicate": "複製", + "duplicateProfileNamed": "複製 {{name}}", + "duplicateProfileSuccess": "代理程式設定檔已複製", + "duplicateSaveBlocked": "設定仍在儲存,請稍後重試。", + "failedToDuplicateProfile": "複製代理程式設定檔失敗" +} diff --git a/apps/web/src/locales/zh-tw/auth.json b/apps/web/src/locales/zh-tw/auth.json new file mode 100644 index 0000000000..4fbd55aa98 --- /dev/null +++ b/apps/web/src/locales/zh-tw/auth.json @@ -0,0 +1,20 @@ +{ + "acceptInvite": "接受邀請", + "atLeast8Characters": "至少 8 個字元。", + "authenticationIsEnabledForThisDeployment": "此部署已啟用身分驗證。請在下方建立首個帳戶;該帳戶將成為管理員,並可邀請其他使用者。", + "checkingInvite": "正在檢查邀請…", + "continueWithProvider": "使用 {{provider}} 繼續", + "createAdminAccount": "建立管理員帳戶", + "creatingAdminAccount": "正在建立管理員帳戶…", + "displayName": "顯示名稱", + "email": "電子郵件地址", + "joining": "正在加入…", + "joinThisKandevDeployment": "加入此 Kandev 部署。", + "orContinueWith": "或使用以下方式繼續", + "password": "密碼", + "setUpKandev": "設定 Kandev", + "signIn": "登入", + "signingIn": "正在登入…", + "signInToYourKandevAccount": "登入你的 Kandev 帳戶以繼續。", + "youVeBeenInvitedAs": "你已被邀請為 {{role}}。" +} diff --git a/apps/web/src/locales/zh-tw/automations.json b/apps/web/src/locales/zh-tw/automations.json new file mode 100644 index 0000000000..cfb0d45564 --- /dev/null +++ b/apps/web/src/locales/zh-tw/automations.json @@ -0,0 +1,206 @@ +{ + "aboutSchedulePolling": "關於計劃輪詢", + "addCondition": "新增條件", + "addRepository": "新增儲存庫", + "agentProfileLabel": "代理程式設定檔", + "agentProfilePlaceholder": "選擇代理程式", + "allRuns": "全部執行記錄", + "alreadyAdded": "已新增", + "anyAutomation": "任意自動化", + "atMinute": "在分鐘", + "authorsLabel": "作者(逗號分隔)", + "automation": "自動化", + "automationCreated": "自動化已建立", + "automations": "自動化", + "availablePlaceholders": "可用佔位符", + "availablePlaceholdersColon": "可用佔位符:", + "baseBranchesLabel": "基礎分支(逗號分隔)", + "boardMoveNoticeBody": "此處的自動化過去會在執行時在看板上建立卡片。它們仍會執行,但報告現在歸屬於自動化本身;開啟即可檢視結果。已在看板上的卡片不受影響。", + "boardMoveNoticeDismiss": "知道了", + "boardMoveNoticeTitle": "自動化執行不再出現在看板上", + "branchPatternsLabel": "分支模式(逗號分隔,支援 glob)", + "checkNamesLabel": "檢查名稱(逗號分隔,可選)", + "ciConclusionCancelled": "已取消", + "ciConclusionFailure": "失敗", + "ciConclusionSuccess": "成功", + "ciConclusionsLabel": "結論", + "clearFilters": "清除篩選", + "columnEnabled": "已啟用", + "columnLastTriggered": "上次觸發", + "columnName": "名稱", + "columnTriggers": "觸發器", + "comingSoonSuffix": "(即將推出)", + "completeRequiredFields": "請先填寫必填的自動化欄位,再儲存。", + "completed": "已完成", + "configurationLabel": "設定", + "couldNotLoadWorkflows": "無法載入工作流程", + "couldNotRefreshRuns": "無法重新整理執行記錄;已從本地快取恢復", + "couldNotTrigger": "無法觸發此自動化", + "createAnAutomation": "建立自動化", + "cronEveryDay": "每天", + "cronEveryHour": "每小時", + "cronEveryWeek": "每週", + "cronExpressionLabel": "Cron 表示式", + "cronHelp": "標準五欄位 cron 或快捷方式({{shortcuts}})", + "delete": "刪除", + "deleteAll": "全部刪除", + "deleteAllRuns": "刪除所有執行記錄", + "deleteAllRunsDescription": "這將永久刪除此自動化的所有執行記錄;包括目前未載入的記錄;以及關聯的任務。此操作無法撤銷。", + "deleteAllRunsScoped": "刪除所有{{status}}執行記錄", + "deleteAllRunsScopedDescription": "這將永久刪除此檢視中顯示的所有{{status}}執行記錄以及關聯的任務。此操作無法撤銷。", + "deleteAllRunsScopedTitle": "刪除所有{{status}}執行記錄?", + "deleteAllRunsTitle": "刪除所有執行記錄?", + "deleteRun": "刪除執行記錄", + "details": "詳情", + "done": "完成", + "emptyListBody": "自動化可按計劃或 webhook 執行,並回寫發現結果。建立後,報告會出現在這裡。", + "emptyListTitle": "此工作區還沒有自動化", + "emptyRunsTitle": "還沒有自動化報告", + "enabledLabel": "已啟用", + "eventsLabel": "事件", + "excludeDraftPrs": "排除草稿 PR", + "executorProfileLabel": "執行器設定檔", + "executorProfilePlaceholder": "選擇執行器", + "failedToDeleteAutomation": "刪除自動化失敗", + "failedToDeleteRun": "刪除執行記錄失敗", + "failedToDeleteRuns": "刪除執行記錄失敗", + "failedToLoadWebhookSecret": "載入 webhook 金鑰失敗:{{error}}", + "failedToSaveAutomation": "儲存自動化失敗:{{error}}", + "hasNotRunYet": "此自動化尚未執行。", + "hideRunDetail": "隱藏執行詳情", + "instructionsLabel": "說明", + "interpretedAsUtcSetTimezone": "按 UTC 解釋,請設定時區", + "lastRan": "上次執行 {{when}}", + "listDescription": "建立自動觸發代理程式任務的規則。", + "loading": "正在載入…", + "loadingActivity": "正在載入活動…", + "loadingAutomations": "正在載入自動化…", + "loadingRuns": "正在載入執行記錄…", + "maxConcurrentRuns": "最大併發執行數", + "nameHelp": "輸入自動化名稱後才能啟用儲存。", + "nameLabel": "名稱", + "namePlaceholder": "自動化名稱", + "neverTriggered": "從未觸發", + "newAutomation": "新建自動化", + "nextRun": "下次執行", + "noAutomationsYet": "還沒有自動化", + "noConversationForRun": "此執行未產生可閱讀的對話。", + "noRepositoriesHelp": "未選擇儲存庫時,此自動化會針對工作區的第一個儲存庫執行。", + "noRunsMatchFilters": "沒有符合這些篩選條件的執行記錄。", + "noRunsYet": "還沒有執行記錄", + "noSchedule": "無計劃;此自動化不會自行執行。", + "noStep": "無步驟", + "noTimezoneFound": "未找到時區。", + "noTriggers": "無", + "noWorkflow": "無工作流程", + "nothingHasRunYet": "尚未執行任何內容。", + "openAutomations": "開啟自動化", + "orUseWebhookInstead": "或者改用 webhook", + "outcome": "結果", + "pickAWorkflowFirst": "請先選擇工作流程", + "prMergedDeadConfigWarning": "未選擇儲存庫;此觸發器不會觸發。請啟用「此工作區允許的所有儲存庫」或至少新增一個儲存庫。", + "prEventOpened": "已開啟", + "prEventOpenedTooltip": "檢測到新的開放 PR 時觸發一次。每個 PR 編號只會去重一次;同一個 PR 不會再次觸發。", + "prTriggerRepositoryHelp": "PR 觸發器始終使用 PR 自己的儲存庫。", + "pushTriggerHelp": "程式碼推送到匹配的分支時觸發", + "recentRuns": "最近執行記錄", + "recentRuns_one": "最近執行記錄({{count}})", + "recentRuns_other": "最近執行記錄({{count}})", + "refresh": "重新整理", + "removeRepository": "移除儲存庫", + "replyToThisRun": "回覆此執行…", + "repositoryLabel": "儲存庫", + "repositoryNone": "無;不使用儲存庫", + "repositoryPlaceholderAuto": "自動", + "required": "必填", + "resizeRuns": "調整執行記錄區域大小", + "run": "執行", + "runAll": "全部", + "runArchived": "已歸檔", + "runCancelled": "已取消", + "runFailed": "失敗", + "runNow": "立即執行", + "runRunning": "執行中", + "runSkipped": "已跳過", + "runStatusArchived": "已歸檔", + "runStatusCancelled": "已取消", + "runStatusFailed": "失敗", + "runStatusRunning": "執行中", + "runStatusSkipped": "已跳過", + "runStatusSucceeded": "成功", + "runStatusTriggered": "已觸發", + "runSucceeded": "成功", + "runTriggered": "已觸發", + "running": "執行中", + "runs": "執行記錄", + "runsColumnStatus": "狀態", + "runsColumnTime": "時間", + "runsColumnTrigger": "觸發器", + "runsCount_one": "{{count}} 條執行記錄", + "runsCount_other": "{{count}} 條執行記錄", + "runsTitle": "全部執行記錄", + "samplePayloadHelp": "貼上示例 JSON 請求體以發現可用佔位符。", + "samplePayloadLabel": "示例請求體(可選)", + "scheduleLabel": "計劃", + "schedulePollingHelp": "由後台處理程序每 30 秒檢查一次。計劃會在後端重啟後保留。", + "schedulerNote": "計劃自動化僅在 Kandev 執行時執行。關閉期間錯過的觸發會在下次檢查時執行一次,而不是為每次錯過的次數各執行一次。", + "searchConditions": "搜尋條件…", + "searchTimezones": "搜尋時區…", + "selectRepositoryPlaceholder": "選擇儲存庫", + "selectStepOptional": "選擇步驟(可選)", + "selectWorkflowOptional": "選擇工作流程(可選)", + "setUpAnAutomation": "設定自動化", + "showLess": "顯示更少", + "showMore": "顯示更多", + "showRunDetail": "執行詳情", + "skipped": "已跳過;{{reason}}", + "skippedAlreadyRunning": "已跳過;已在執行", + "starting": "正在啟動…", + "stateIdle": "空閒", + "statePaused": "已暫停", + "stateRunning": "執行中", + "summaryCiCompleted": "CI 已完成", + "summaryPrMerged": "PR 已合併", + "summaryCustomSchedule": "自訂計劃", + "summaryPrEvents": "PR:{{events}}", + "summaryPullRequestEvent": "提取要求事件", + "summaryPushToBranch": "推送到分支", + "summaryWebhook": "Webhook", + "switchToScheduled": "切換為計劃執行", + "taskTitleHelp": "留空以使用預設值。支援佔位符。", + "taskTitleLabel": "任務標題", + "taskTitlePlaceholder": "[自動] 自動化名稱", + "thenDescription": "每次此自動化觸發時都會建立一個新任務", + "thenTitle": "然後", + "triggerCategoryGithub": "GitHub", + "triggerCategoryWebhook": "Webhook", + "triggerInfoGithubPr": "按你的計劃輪詢 GitHub API,查詢符合篩選條件的 PR。", + "triggerInfoGithubPrMerged": "當 Kandev 的 PR 輪詢器檢測到關聯的 PR 已合併時觸發。檢測最多可能延遲一分鐘。", + "triggerInfoNotImplemented": "尚未實現。", + "triggerInfoScheduled": "每 30 秒檢查一次。Cron 計劃匹配時觸發。", + "triggerInfoWebhook": "Webhook URL 收到 POST 請求時立即觸發。", + "triggerLabelGithubCi": "GitHub CI", + "triggerLabelGithubPr": "GitHub PR", + "triggerLabelGithubPrMerged": "GitHub PR 已合併", + "triggerLabelGithubPush": "GitHub 推送", + "triggerLabelScheduled": "計劃執行", + "triggerLabelWebhook": "Webhook", + "triggerManually": "手動觸發", + "triggered": "已觸發", + "tryAgain": "重試", + "unknownTriggerType": "未知觸發器型別", + "upNext": "接下來", + "watchForLabel": "監控", + "webhookCreatedDescription": "設定外部系統,將請求 POST 到此 URL,並在 <0>{{header}} 請求頭中提供金鑰。你可以隨時回到此自動化,再次複製這些值。", + "webhookSecretLabel": "Webhook 金鑰", + "webhookSecretLoading": "正在載入…", + "webhookUrlAfterSave": "儲存自動化後即可使用 Webhook URL。", + "webhookUrlLabel": "Webhook URL", + "webhookUsageHelp": "傳送帶 JSON 請求體的 POST 請求,並在 <0>{{header}} 請求頭中提供金鑰。使用 <1>{{placeholder}} 引用請求體欄位,例如 <2>{{example}}。", + "whenDescription": "導致此自動化執行的原因", + "whenTitle": "當", + "workflowLabel": "工作流程", + "workflowLoadError": "無法載入工作流程。", + "workflowStepHelpNoWorkflow": "請先選擇工作流程,再選擇步驟。", + "workflowStepLabel": "工作流程步驟" +} diff --git a/apps/web/src/locales/zh-tw/azuredevops.json b/apps/web/src/locales/zh-tw/azuredevops.json new file mode 100644 index 0000000000..09ac9aafb3 --- /dev/null +++ b/apps/web/src/locales/zh-tw/azuredevops.json @@ -0,0 +1,257 @@ +{ + "actionHintAria": "{{kind}} 操作提示 {{index}}", + "actionLabelAria": "{{kind}} 操作標籤 {{index}}", + "addPrAction": "新增提取要求操作", + "addPrQuery": "新增提取要求查詢", + "addPrWatch": "新增提取要求監控", + "addWorkItemAction": "新增工作項操作", + "addWorkItemQuery": "新增工作項查詢", + "addWorkItemWatch": "新增工作項監控", + "advanced": "高階", + "agentProfileId": "代理程式設定檔 ID", + "assignment": "分配", + "assignToMe": "分配給我", + "azureDevopsFilters": "Azure DevOps 篩選條件", + "azureDevopsReviewAndPolicyState": "Azure DevOps 審閱與策略狀態", + "azureDevopsWorkItemDetails": "Azure DevOps 工作項詳情", + "azureProjectId": "Azure 專案 ID", + "azureRepositoryIdOptional": "Azure 儲存庫 ID(可選)", + "baseBranch": "基礎分支", + "board": "看板", + "boardColumn": "看板列", + "boardColumns": "看板列", + "boardsAndRepos": "{{organizationUrl}} · 看板與儲存庫", + "branchPolicies": "分支策略", + "checkedAt": "檢查於 {{at}}", + "cleanupAlways": "始終", + "cleanupAuto": "自動", + "cleanupNever": "從不", + "cleanupPolicy": "清理策略", + "cleanupPolicyAlways": "始終", + "cleanupPolicyAuto": "自動", + "cleanupPolicyNever": "從不", + "closeWatchEditor": "關閉監控編輯器", + "closeWorkItemDetails": "關閉工作項詳情", + "configurationRemoved": "已移除 Azure DevOps 設定", + "configurationSaved": "已儲存 Azure DevOps 設定", + "connected": "已連線", + "connectedAs": "已連線為 {{name}}", + "connectionFailed": "連線失敗", + "couldNotLoadQuickActions": "無法載入現有快捷操作:{{error}}", + "couldNotSaveView": "無法儲存此檢視。請重試。", + "createPersonalAccessToken": "建立個人存取權杖", + "createWatch": "建立監控", + "creator": "建立者", + "creatorId": "建立者 ID", + "defaultProject": "預設專案", + "defaultQueries": "預設查詢", + "defaultQueriesDescription": "在 {{path}} 上顯示的提取要求和工作項查詢快捷方式。", + "defaultQueriesSaved": "已儲存 Azure DevOps 預設查詢", + "defaultQueryInvalid": "每個預設查詢都必須包含標籤和有效的篩選條件。", + "delete": "刪除", + "deleteWatchConfirm": "刪除此監控?", + "description": "描述", + "descriptionFallback": "(無描述)", + "disable": "停用", + "disabled": "已停用", + "discussion": "討論", + "done": "完成", + "draft": "草稿", + "edit": "編輯", + "editPrompt": "編輯提示詞", + "editWatchTitle": "編輯{{kind}}監控", + "eGPlatformTriage": "例如 Platform triage", + "enable": "啟用", + "enabled": "已啟用", + "enterValidOrganizationUrl": "請輸入有效的組織 URL,以開啟其權杖設定。", + "executorProfileId": "執行器設定檔 ID", + "failedToLinkPullRequest": "無法關聯 Azure DevOps 提取要求。", + "failedToLinkWorkItem": "無法關聯 Azure DevOps 工作項。", + "failedToLinkWorkItemNoProject": "無法關聯 Azure DevOps 工作項:缺少專案。", + "failedToLoadConfig": "載入 Azure DevOps 設定失敗:{{error}}", + "failedToLoadQuickActions": "載入快捷操作失敗。", + "failedToSaveDefaultQueries": "儲存預設查詢失敗", + "failedToSaveQuickActions": "儲存快捷操作失敗", + "fallbackAuthor": "Azure DevOps", + "fallbackUnassigned": "未分配", + "fallbackUnknown": "未知", + "fallbackWorkItem": "工作項", + "feedback": "意見回饋", + "fieldArea": "區域", + "fieldAssignee": "經辦人", + "fieldState": "狀態", + "fieldType": "型別", + "group": "分組", + "groupCreated": "已建立", + "groupInbox": "收件箱", + "hidePrompt": "隱藏提示詞", + "hint": "提示", + "hintOptional": "提示(可選)", + "howToCreatePat": "如何建立個人存取權杖", + "icon": "圖示", + "identityIdPlaceholder": "{{token}} 或身分 ID", + "identityPlaceholder": "{{token}} 或身分", + "inProgress": "進行中", + "integrationDescription": "此工作區使用的 Azure DevOps Services 組織、專案和 PAT。", + "integrationTitle": "Azure DevOps 整合", + "kandevRepositoryId": "Kandev 儲存庫 ID", + "label": "標籤", + "linkedItemsCount_one": "{{count}} 個關聯項", + "linkedItemsCount_other": "{{count}} 個關聯項", + "linkedKandevTasks": "關聯的 Kandev 任務", + "loading": "載入中…", + "loading2": "載入中…", + "loadingBoard": "正在載入看板…", + "loadingFeedback": "正在載入意見回饋…", + "loadingLinkedTasks": "正在載入關聯任務…", + "loadingProjects": "正在載入專案…", + "loadingResults": "正在載入結果…", + "loadingWatchers": "正在載入監控…", + "loadingWorkItem": "正在載入工作項…", + "loadOlderDiscussion": "載入更早的討論", + "maxInflightTasks": "最大進行中任務數(0 表示不限制)", + "move": "移動", + "moveToColumn": "移動到列", + "name": "名稱", + "newMatches_one": "{{count}} 個新匹配項。", + "newMatches_other": "{{count}} 個新匹配項。", + "newWatchTitle": "新建{{kind}}監控", + "nextBoardColumn": "下一看板列", + "nextPullRequestPage": "下一頁提取要求", + "noComments": "暫無評論。", + "noDescription": "暫無描述。", + "noDiscussionYet": "尚無討論。", + "noLinkedTasks": "暫無關聯任務。", + "noMatchingResults": "無匹配結果。", + "none": "無", + "noPolicyEvaluations": "暫無策略評估。", + "noPullRequestWatches": "尚無提取要求監控。", + "noReviewers": "暫無審閱者。", + "notCheckedYet": "尚未檢查", + "notConnectedNotice": "此工作區尚未連線 Azure DevOps。<2>設定 Azure DevOps", + "noWorkItemWatches": "尚無工作項監控。", + "openAzureDevopsFilters": "開啟 Azure DevOps 篩選條件", + "openPullRequestInAzureDevops": "在 Azure DevOps 中開啟提取要求 {{id}}", + "openWorkItemInAzureDevops": "在 Azure DevOps 中開啟工作項 {{id}}", + "openWorkItemInAzureDevops2": "在 Azure DevOps 中開啟工作項", + "optional": "可選", + "organizationUrl": "組織 URL", + "pastePat": "貼上 PAT", + "patHelpTitle": "建立用於編輯看板的個人存取權杖", + "patStepCheckScopes": "在 <1>{{workItems}} 下勾選「讀取和寫入」。在 <4>{{code}} 下勾選「讀取」。其他範圍均不要勾選。", + "patStepChooseScopes": "選擇此組織、較短的有效期和「自訂範圍」。", + "patStepCreateAndPaste": "建立權杖,複製後貼上到此欄位。", + "patStepOpenTokenSettings": "開啟權杖設定並選擇「新建權杖」。", + "pending": "待處理", + "personalAccessToken": "個人存取權杖", + "placeholderTitleDescription": "Azure DevOps 工作項或提取要求的標題", + "placeholderUrlDescription": "Azure DevOps 工作項或提取要求的 URL", + "planningAndEffort": "規劃與工作量", + "policiesLabelled": "策略:{{state}}", + "pollIntervalSeconds": "輪詢間隔(秒)", + "previousBoardColumn": "上一看板列", + "previousPullRequestPage": "上一頁提取要求", + "project": "專案", + "prompt": "提示詞", + "promptPlaceholdersHint": "輸入 {{open}} 可檢視可用佔位符。執行操作時會替換 <3>{{url}} 和 <6>{{title}}。", + "pullRequestAny": "任意", + "pullRequestFeedback": "提取要求意見回饋", + "pullRequestFilter": "提取要求篩選條件", + "pullRequestFilters": "提取要求篩選條件", + "pullRequestKindLower": "提取要求", + "pullRequestKindNoun": "提取要求", + "pullRequestKindTitle": "提取要求", + "pullRequests": "提取要求", + "pullRequestsTab": "提取要求", + "pullRequestSubtitle": "{{repository}} · PR {{id}}", + "pullRequestWatches": "提取要求監控", + "pullRequestWatchesDescription": "根據匹配的 Azure DevOps 提取要求自動建立任務。", + "pullRequestWatchFieldsRequired": "專案、儲存庫、工作流程、步驟、代理程式和執行器均為必填項。", + "queryCreatorAria": "{{kind}} 查詢建立者 {{index}}", + "queryGroupAria": "{{kind}} 查詢分組 {{index}}", + "queryLabelAria": "{{kind}} 查詢標籤 {{index}}", + "queryReviewerAria": "{{kind}} 查詢審閱者 {{index}}", + "queryStatusAria": "{{kind}} 查詢狀態 {{index}}", + "queryTopAria": "{{kind}} 查詢上限 {{index}}", + "queryWiqlAria": "{{kind}} 查詢 WIQL {{index}}", + "quickActionInvalid": "每個快捷操作都必須包含標籤和提示詞。", + "quickActions": "快捷操作", + "quickActionsDescription": "從提取要求或工作項啟動任務時,在 {{path}} 上顯示的提示詞。", + "quickActionsSaved": "已儲存 Azure DevOps 快捷操作", + "remove": "移除", + "removeActionAria": "移除 {{kind}} 操作 {{index}}", + "removeConfigurationConfirm": "移除 Azure DevOps 設定?", + "removeFailed": "移除失敗:{{error}}", + "removeQueryAria": "移除 {{kind}} 查詢 {{index}}", + "repository": "儲存庫", + "resetWatchConfirm_one": "重置此{{policy}}監控並移除 {{count}} 個任務?", + "resetWatchConfirm_other": "重置此{{policy}}監控並移除 {{count}} 個任務?", + "resultLimit": "結果上限", + "resultsCount_one": "{{count}} 個結果", + "resultsCount_other": "{{count}} 個結果", + "retry": "重試", + "reviewer": "審閱者", + "reviewerId": "審閱者 ID", + "reviewers": "審閱者", + "reviewLabelled": "審閱:{{state}}", + "runNow": "立即執行", + "save": "儲存", + "saveAzureDevopsView": "儲存 Azure DevOps 檢視", + "savedCredential": "已儲存的認證資訊", + "saveFailed": "儲存失敗:{{error}}", + "saveViewDescription": "為此工作區儲存目前{{kind}}。", + "saving": "正在儲存…", + "savingEllipsis": "正在儲存…", + "selectAProjectToViewIts": "選擇一個專案以檢視其看板。", + "selectProject": "選擇專案", + "selectRepository": "選擇儲存庫", + "startTask": "啟動任務", + "status": "狀態", + "statusAbandoned": "已放棄", + "statusActive": "活動", + "statusAll": "全部", + "statusAny": "任意狀態", + "statusCompleted": "已完成", + "statusLine": "狀態:{{status}}", + "task": "任務", + "taskActions": "任務操作", + "taskActionsForPullRequest": "提取要求 {{id}} 的任務操作", + "taskActionsForWorkItem": "工作項 {{id}} 的任務操作", + "team": "團隊", + "testConnection": "測試連線", + "testing": "正在測試…", + "top": "上限", + "unassign": "取消分配", + "unassigned": "未分配", + "untitledWorkItem": "未命名工作項", + "update": "更新", + "updateWatch": "更新監控", + "updating": "正在更新…", + "voteApproved": "已批准", + "voteApprovedWithSuggestions": "已批准(含建議)", + "voteNone": "未投票", + "voteRejected": "已拒絕", + "voteWaitingForAuthor": "等待作者", + "watchDeleted": "已刪除監控。", + "watchDisabled": "已停用監控。", + "watchEnabled": "已啟用監控。", + "watchReset": "已重置監控。", + "watchStatusAbandoned": "已放棄", + "watchStatusActive": "活動", + "watchStatusCompleted": "已完成", + "watchSummary_one": "{{projectId}} · 每 {{count}} 秒 · 清理策略:{{policy}}", + "watchSummary_other": "{{projectId}} · 每 {{count}} 秒 · 清理策略:{{policy}}", + "workflowId": "工作流程 ID", + "workflowStepId": "工作流程步驟 ID", + "workItemKindLower": "工作項", + "workItemKindNoun": "工作項", + "workItemKindTitle": "工作項", + "workItemQuery": "工作項查詢", + "workItemQuery2": "工作項查詢", + "workItems": "工作項", + "workItemsTab": "工作項", + "workItemUnavailable": "工作項不可用。", + "workItemWatches": "工作項監控", + "workItemWatchesDescription": "根據匹配的 Azure DevOps 工作項查詢自動建立任務。", + "workItemWatchFieldsRequired": "專案、WIQL、儲存庫、工作流程、步驟、代理程式和執行器均為必填項。" +} diff --git a/apps/web/src/locales/zh-tw/chat.json b/apps/web/src/locales/zh-tw/chat.json new file mode 100644 index 0000000000..68af5b1013 --- /dev/null +++ b/apps/web/src/locales/zh-tw/chat.json @@ -0,0 +1,139 @@ +{ + "aboutRepositoryContext": "關於儲存庫上下文", + "addedToChatContext": "{{name}} 已新增到聊天上下文", + "addRepository": "新增儲存庫", + "addToChatContext": "新增到聊天上下文", + "agentOptional": "代理程式(可選)", + "agentProfile": "代理程式設定檔", + "agentProfileHelp": "為此對話選擇代理程式。", + "allConversationHistory": "全部對話歷史", + "allWorkspaceRepositoriesAdded": "工作區中的所有儲存庫均已新增", + "attachmentDeliveryFile": "檔案", + "attachmentDeliveryMode": "附件傳遞方式", + "attachmentDeliveryPathDescription": "上傳到工作區,以便代理程式讀取或編輯該檔案。", + "attachmentDeliveryPrompt": "提示詞", + "attachmentDeliveryPromptDescription": "作為提示詞上下文傳送,用於視覺理解。代理程式不會獲得檔案路徑。", + "attachmentFallbackName": "附件", + "attachmentMessageAlt": "附件 {{index}}", + "attachmentPreviewAlt": "預覽", + "attachmentPreviewFullAlt": "完整尺寸預覽", + "attachmentUploadFailed": "附件上傳失敗", + "attachmentUploadPending": "正在上傳附件…", + "attachmentUploadPendingSubmit": "請等待附件上傳完成後再傳送。", + "chatTabName": "聊天 {{index}}", + "clarificationNeeded": "需要澄清", + "clearAll": "全部清除", + "clearAllQueuedMessages": "清除所有排隊中的訊息", + "close": "關閉 {{name}}", + "collapseClarification": "摺疊澄清", + "collapseMessage": "摺疊訊息", + "collapseQueuedMessages": "摺疊排隊中的訊息", + "configChatPlaceholder": "詢問任何關於你設定的問題…", + "configurationChat": "設定聊天", + "configurationChatDescription": "讓代理程式更新 Kandev 設定、工作流程、代理程式設定檔和 MCP 設定。", + "configurationChatTab": "設定聊天", + "delete": "刪除", + "deleteQuickChat": "刪除快速聊天?", + "deleteQuickChatIntro": "這將永久刪除此快速聊天工作階段,包括:", + "doubleClickToRename": "雙擊以重新命名", + "editQueuedMessage": "編輯排隊中的訊息", + "expandClarification": "展開澄清", + "expandMessage": "展開訊息", + "failedToClearQueuedMessages": "清除排隊中的訊息失敗。", + "failedToDeleteQuickChat": "刪除快速聊天失敗", + "failedToMergeQueuedMessages": "合併排隊中的訊息失敗。", + "failedToRemoveQueuedMessage": "移除排隊中的訊息失敗。", + "failedToReorderQueuedMessages": "無法重新排序佇列中的訊息。", + "failedToRunQueuedMessage": "執行排隊中的訊息失敗。", + "failedToStartQuickChat": "啟動快速聊天失敗", + "fileTreeActions": "檔案操作", + "loadingRepositories": "正在載入儲存庫", + "failedToSendQueuedMessageNow": "立即傳送排隊訊息失敗。", + "mergeReferenceOverflow": "這些排隊中的訊息包含過多實體引用,無法合併。", + "mergeWithAbove": "與上方訊息合併", + "noTodosYet": "暫無待辦。", + "removeQueuedMessage": "移除排隊中的訊息", + "reorderQueuedMessage": "重新排序佇列訊息", + "sortable": "可排序", + "technicalDetails": "技術詳情", + "providerQuotaTitle": "{{provider}} 使用額度已達上限", + "newChatTab": "新建聊天", + "newQuickChat": "新建快速聊天", + "noAgentsAvailable": "沒有可用的代理程式", + "noRepositoriesAvailableInWorkspace": "此工作區中沒有可用儲存庫", + "noRepository": "無儲存庫", + "optional": "(可選)", + "providerQuotaModel": "模型:{{model}}", + "providerQuotaProviderFallback": "提供者", + "providerQuotaReset": "容量將於 {{resetAt}} 恢復。", + "providerQuotaResetUnknown": "請在提供者恢復可用容量後重試。", + "queueCapacity_one": "{{count}} / {{max}}", + "queueCapacity_other": "{{count}} / {{max}}", + "queueCapacityFull_one": "{{count}} / {{max}} · 已滿", + "queueCapacityFull_other": "{{count}} / {{max}} · 已滿", + "queueChipExpand_one": "{{count}} 條排隊訊息,點選展開", + "queueChipExpand_other": "{{count}} 條排隊訊息,點選展開", + "queueCount_one": "{{count}}", + "queueCount_other": "{{count}}", + "queued": "已排隊", + "queuedCount_one": "{{count}} 條排隊訊息", + "queuedCount_other": "{{count}} 條排隊訊息", + "queuedMessages": "排隊中的訊息", + "queueEditAlreadySent": "訊息已傳送;代理程式在你的編輯生效前已取走它。", + "queueEditSaveFailed": "儲存編輯失敗。請重試。", + "queueFullSuffix": "· 已滿", + "quickChatDialogIntro": "與代理程式開始快速對話,無需建立正式任務。", + "quickChatIntro": "就想法、問題或程式碼庫與代理程式聊天。", + "quickChatIntroSecondary": "快速聊天獨立於任務看板。", + "renameChat": "重新命名聊天", + "renameSavedOnThisDeviceOnly": "重新命名僅儲存在此裝置上", + "renameSyncFailedDescription": "無法將新名稱同步到你的其他裝置。", + "repositories": "儲存庫", + "repositoriesHelp": "新增儲存庫上下文,以便聚焦特定程式碼和分支。", + "repositoryContextHelp": "Kandev 會從所選分支建立隔離的工作樹。未提交的本地更改不會包含在內。", + "repositoryOptional": "儲存庫(可選)", + "resizeQuickChatFromLeft": "從左側調整快速聊天大小", + "resizeQuickChatFromRight": "從右側調整快速聊天大小", + "retryAttachmentUpload": "重試上傳附件", + "runNext": "執行下一個", + "runNextQueuedMessage": "執行下一個排隊訊息", + "selectAgent": "選擇代理程式", + "selectARepository": "選擇儲存庫…", + "startChat": "開始聊天", + "startChatAction": "開始聊天", + "starting": "正在啟動…", + "startingChat": "正在啟動聊天…", + "sendNow": "立即傳送", + "sendNowQueuedMessage": "立即傳送排隊訊息", + "sendNowQueuedMessages": "立即傳送全部排隊訊息", + "sendNowEntryAlreadySent": "訊息已傳送;代理程式在「立即傳送」開始前已取走它。", + "sendNowQueueEmpty": "佇列為空。", + "sendNowQueueChanged": "佇列在「立即傳送」開始前已發生變化。", + "sendNowConflict": "另有取消或「立即傳送」操作正在進行中。", + "sendNowTurnChanged": "活動回合在「立即傳送」開始前已變化。", + "sendNowAttachmentOverflow": "合併後的附件超出訊息限制。", + "sendNowReferenceOverflow": "合併後的實體引用超出訊息限制。", + "theAssociatedWorktree": "關聯的工作樹", + "theTaskAndItsData": "任務及其資料", + "thisActionCannotBeUndone": "此操作無法撤銷。", + "turnGroupToolCalls_one": "{{count}} 次工具呼叫", + "turnGroupToolCalls_other": "{{count}} 次工具呼叫", + "composerSteerPlaceholder": "立即傳送;將送入正在進行的回合", + "unknownError": "未知錯誤", + "useWorkspaceDefault": "使用工作區預設值…", + "useWorkspaceDefaultOption": "使用工作區預設值", + "openProviderPage": "開啟服務商頁面", + "transientRetryReasonModelCapacity": "模型暫時沒有可用容量", + "transientRetryReasonNetworkUnavailable": "網路不可用", + "transientRetryReasonProviderOverloaded": "服務商過載", + "transientRetryReasonProviderUnavailable": "服務商暫時不可用", + "transientRetryReasonRateLimited": "請求受限", + "transientRetryReasonGeneric": "服務商錯誤", + "transientRetryIn": "將在 {{countdown}} 後重試", + "transientRetryNow": "正在重試…", + "transientRetryCountdownLabel": "重試倒計時", + "transientRetryAttempt": "第 {{attempt}} 次,共 {{maxAttempts}} 次", + "transientRetryProviderModel": "{{provider}} · {{model}}", + "transientRetryProvider": "服務商:{{provider}}", + "transientRetryModel": "模型:{{model}}" +} diff --git a/apps/web/src/locales/zh-tw/common.json b/apps/web/src/locales/zh-tw/common.json new file mode 100644 index 0000000000..7f7743794f --- /dev/null +++ b/apps/web/src/locales/zh-tw/common.json @@ -0,0 +1,445 @@ +{ + "aboutContextCompactionCount": "關於推斷的壓縮次數", + "activeSubagents_one": "{{count}} 個子代理程式執行中", + "activeSubagents_other": "{{count}} 個子代理程式執行中", + "activeTasks": "進行中的任務", + "aDirectLocalExecutorProfileIsRequired": "建立並使用空儲存庫需要一個直接本地執行器設定檔。", + "agent": "代理程式", + "agentDashboard": "代理程式儀表盤", + "agentRun": "代理程式執行", + "agentRuns": "代理程式執行記錄", + "agents": "代理程式", + "agentSkillsAskTheAgentTo": "代理程式技能(可讓代理程式執行)", + "allowIndexing": "允許索引", + "andMoreFiles_one": "+{{count}} 個", + "andMoreFiles_other": "+{{count}} 個", + "anEnhancedPromptIsAvailable": "可用增強提示詞。", + "anErrorOccurred": "發生錯誤", + "anUnexpectedErrorOccurred": "發生意外錯誤", + "anUnknownErrorOccurred": "發生未知錯誤", + "apply": "應用", + "autoApproveAllPermissions": "自動批准所有權限", + "automation": "自動化", + "automations": "自動化", + "availableTemplates": "可用模板", + "back": "返回", + "backToTaskOverview": "返回任務概覽", + "baseBranch": "基礎分支", + "bootsASecondaryKandevDevInstance": "啟動一個使用全新資料庫的輔助 Kandev 開發實例,以便在不影響主實例的情況下驗證改動。", + "bootstrapFailed": "引導失敗", + "bootstrapFailedCloseAndReopen": "引導失敗;關閉後重新開啟以重試。", + "breadcrumb": "路徑導覽", + "browseParentDirectory": "瀏覽上級目錄", + "bugFix": "缺陷修復", + "cancel": "取消", + "cancelNewFolder": "取消新建資料夾", + "changelog": "更新日誌", + "checkingGithubAuthentication": "正在檢查 GitHub 身分驗證…", + "chooseAFolderOrEnterA": "選擇一個資料夾,或輸入本機上的新路徑。", + "cliClient": "CLI 用戶端", + "cliModeYourPromptWillBe": "CLI 模式;你的提示詞將自動注入到終端", + "cliPassthrough": "CLI 透傳", + "close": "關閉", + "closeEsc": "關閉(Esc)", + "commandAddBrowserPanel": "新增瀏覽器面板", + "commandAddBrowserPanelKeywords": "瀏覽器, 預覽, 網頁, 開啟瀏覽器預覽, 網頁預覽, 應用預覽, browser", + "commandAddChangesPanel": "新增更改面板", + "commandAddChangesPanelKeywords": "更改, 差異, git 更改, 已更改檔案, 版本控制, git diff, 審查更改, changes", + "commandAddPlanPanel": "新增計劃面板", + "commandAddPlanPanelKeywords": "計劃, 檔案, 任務計劃, 實現計劃, 計劃詳情, plan", + "commandAddTerminalPanel": "新增終端面板", + "commandAddTerminalPanelKeywords": "終端, shell, 控制台, 新終端, 開啟終端, 命令列, terminal", + "commandAgentsSettingsKeywords": "代理程式, 代理程式設定, 代理程式設定檔, 已安裝代理程式, claude", + "commandArchiveTaskKeywords": "歸檔, 歸檔任務, 歸檔目前任務, 關閉任務, 完成任務, 收起", + "commandCancelTurn": "取消本輪", + "commandCancelTurnKeywords": "取消, 停止, 輪次, 取消代理程式, 停止代理程式, 中斷代理程式, cancel", + "commandCommitChanges": "提交更改", + "commandCommitChangesKeywords": "提交, git, 儲存更改, git commit, commit", + "commandConfigChatKeywords": "設定聊天, 設定模式, 設定 kandev, 工作流程設定, mcp 設定", + "commandCreateFile": "建立檔案", + "commandCreateFileKeywords": "建立, 新建, 檔案, 新增, file", + "commandCreateFilePlaceholder": "相對於工作區根目錄的檔案路徑…", + "commandCreateNewTask": "建立新任務", + "commandCreateNewTaskKeywords": "新建, 建立, 任務, 新增, task", + "commandCreatePr": "建立 PR", + "commandCreatePrKeywords": "提取要求, pr, 開啟提取要求, 提交提取要求, git", + "commandCreateSubtask": "建立子任務", + "commandCreateSubtaskKeywords": "子任務, 建立, 新建子任務, 子級任務, subtask", + "commandExecutorsSettingsKeywords": "執行器, 執行器設定檔, 執行環境, 環境變數, 執行時, 計算", + "commandGoToAllTasks": "前往全部任務", + "commandGoToAllTasksKeywords": "任務, 清單, 全部", + "commandGoToGitHubDashboard": "前往 GitHub 儀表盤", + "commandGoToGitHubDashboardKeywords": "github, 儀表盤, pr, 提取要求, 程式碼審閱, issues, 審閱", + "commandGoToHome": "前往首頁", + "commandGoToHomeKeywords": "首頁, 看板, 面板", + "commandGoToSettings": "前往設定", + "commandGoToSettingsKeywords": "設定, 偏好, 設定, 通用設定", + "commandGoToStats": "前往統計", + "commandGoToStatsKeywords": "統計, 資料分析, 分析, 指標", + "commandGroupActions": "操作", + "commandGroupAgent": "代理程式", + "commandGroupCommands": "命令", + "commandGroupGit": "Git", + "commandGroupNavigation": "導覽", + "commandGroupPanels": "面板", + "commandGroupPreferences": "偏好", + "commandGroupSettings": "設定", + "commandGroupTasks": "任務", + "commandGroupView": "檢視", + "commandGroupWorkspace": "工作區", + "commandMergeKeywords": "合併, git, 分支, merge", + "commandNewAgent": "新建代理程式", + "commandNewAgentKeywords": "新建, 代理程式, 工作階段, 啟動代理程式, 新建工作階段, agent", + "commandOpenRecentTaskSwitcher": "開啟最近任務切換面板", + "commandOpenRecentTaskSwitcherKeywords": "最近, 任務, 切換面板, 歷史, 最近任務, 切換任務, 切換最近任務, recent", + "commandPaletteMode": "命令面板模式", + "commandPreviewAddTerminalPanel": "新增終端面板", + "commandPreviewCommitChanges": "提交更改", + "commandPreviewGoToHome": "前往首頁", + "commandPreviewPull": "拉取", + "commandPreviewSearchTasks": "搜尋任務", + "commandPromptsSettingsKeywords": "提示詞, 提示詞設定, 自訂提示詞, 提示詞片段, 提示詞模板", + "commandPullKeywords": "拉取, git, 拉取更改, 下載更改, pull", + "commandPushKeywords": "推送, git, 推送更改, 推送到遠端, 上傳更改, push", + "commandQuickChat": "快速聊天", + "commandQuickChatKeywords": "快速聊天, 新建快速聊天, 快速提問, 詢問代理程式", + "commandRebaseKeywords": "變基, git, 分支, rebase", + "commandSwitchToDarkMode": "切換到深色模式", + "commandSwitchToKanbanView": "切換到看板檢視", + "commandSwitchToKanbanViewKeywords": "看板, 面板, 檢視, kanban", + "commandSwitchToLightMode": "切換到淺色模式", + "commandSwitchToListView": "切換到清單檢視", + "commandSwitchToListViewKeywords": "清單, 表格, 檢視, list", + "commandSwitchToPipelineView": "切換到流水線檢視", + "commandSwitchToPipelineViewKeywords": "流水線, 圖, 檢視, pipeline", + "commandThemeKeywords": "主題, 顏色主題, 外觀", + "commandWorkspaceSettingsKeywords": "工作區, 工作區", + "commitsAndPushesToTheCurrent": "提交併推送到目前分支。", + "commitsPushesAndOpensAPull": "提交、推送並建立提取要求。", + "configurationChat": "設定聊天", + "configureAUtilityAgentToEnhance": "在設定中設定輔助代理程式以啟用 AI 增強", + "configureExecutorsInSettingsToControl": "在設定中設定執行器,以控制代理程式的執行位置。", + "configureGithub": "設定 GitHub", + "confirm": "確認", + "contents": "內容", + "contentSearchNeedsAnActiveTask": "內容搜尋需要處於活動狀態的任務工作階段。", + "contextCompactionCountHelp": "Kandev 根據觀察到的上下文用量下降推斷此計數。樣本缺失或提供者重置可能導致結果僅為近似值。", + "contextCompactions": "壓縮次數", + "contribute": "貢獻", + "contributingAsLogin": "以 <1>@{{login}} 身分貢獻。{{access}}", + "contributingAsYourGithubAccount": "以你的 GitHub 帳戶身分貢獻。{{access}}", + "copy": "複製", + "couldNotPrepareImproveKandev": "無法準備 Improve Kandev", + "createATaskDescribingYourBug": "建立一個任務,描述你的缺陷或功能請求", + "createAWorkspaceToConfigureThisIntegration": "建立工作區後即可設定此整合。", + "createFolder": "建立資料夾", + "createNewRepository": "建立新儲存庫", + "createRepository": "建立儲存庫", + "createsAnEmptyGitRepository": "建立空 Git 儲存庫並註冊到此工作區。", + "creating": "正在建立…", + "dAgo": "{{diffDay}}天前", + "default": "預設", + "defaultBadge": "預設", + "deleteSession": "刪除工作階段", + "describeABugYouHitOr": "描述你遇到的缺陷或想要的功能,我們會在你自己的代理程式上建立任務,並在 Kandev 程式碼庫中實現。", + "destination": "目標位置", + "discardAndContinue": "丟棄並繼續", + "discardLocalChanges": "丟棄本地更改?", + "discardLocalChangesAtPathDescription": "啟動此任務將永久丟棄本地複製 {{repoPath}} 中未提交的更改。繼續前請備份需要保留的內容。", + "discardLocalChangesDescription": "啟動此任務將永久丟棄本地複製中未提交的更改。繼續前請備份需要保留的內容。", + "discoveringAgents": "正在發現代理程式…", + "doNotShowThisAgain": "不再顯示", + "edit": "編輯", + "editTask": "編輯任務", + "emptyRepositoriesRunDirectlySwitch": "空儲存庫直接在本機執行。此任務將切換到「{{profile}}」。", + "enhancePromptWithAi": "用 AI 增強提示詞", + "enterAValue": "輸入值…", + "enterValue": "輸入值…", + "error": "錯誤", + "executor": "執行器", + "executors": "執行器", + "externalMcp": "外部 MCP", + "failedToCreateFolder": "建立資料夾失敗", + "failedToCreateRepository": "建立儲存庫失敗", + "failedToLoadDirectory": "載入目錄失敗", + "failedToLoadRoutine": "載入例程失敗", + "failedToLoadSetup": "載入設定失敗", + "failedToRenderDiagram": "渲染圖表失敗", + "featureRequest": "功能請求", + "files": "檔案", + "folderName": "資料夾名稱", + "folders": "資料夾", + "forwardStdinStdoutStraightToThe": "將 stdin/stdout 直接轉發到 CLI 子處理程序。會停用 ACP。", + "getStarted": "開始使用", + "githubCliNotAuthenticated": "GitHub CLI 未通過身分驗證", + "gitOpAmendCommit": "修補提交", + "gitOpCommit": "提交", + "gitOperationFailedInRepos_one": "在 {{count}} 個儲存庫中失敗:{{summary}}", + "gitOperationFailedInRepos_other": "在 {{count}} 個儲存庫中失敗:{{summary}}", + "gitOperationPartialDescription_one": "{{operation}}在 {{count}} 個儲存庫中的 {{succeeded}} 個成功({{repos}});失敗:{{summary}}", + "gitOperationPartialDescription_other": "{{operation}}在 {{count}} 個儲存庫中的 {{succeeded}} 個成功({{repos}});失敗:{{summary}}", + "gitOperationPartiallySucceeded": "{{operation}}部分成功", + "gitOperationRepoFailure": "{{repo}}:{{error}}", + "gitOperationSucceededInRepos_one": "{{operation}}在 {{count}} 個儲存庫中成功:{{repos}}", + "gitOperationSucceededInRepos_other": "{{operation}}在 {{count}} 個儲存庫中成功:{{repos}}", + "gitOpForcePush": "強制推送", + "gitOpHardReset": "硬重置", + "gitOpMerge": "合併", + "gitOpPull": "拉取", + "gitOpPush": "推送", + "gitOpRebase": "變基", + "gitOperationCompleted": "{{operation}}已完成", + "gitOperationFailed": "{{operation}}失敗", + "gitOperationRunning": "{{operation}}…", + "gitOperationScoped": "{{operation}}({{repo}})", + "gitOperationSucceeded": "{{operation}}成功", + "gitOpRevertCommit": "還原提交", + "gitOpSoftReset": "軟重置", + "gitScopeSkipped": "已跳過 {{scope}},因為子儲存庫操作失敗({{failedScopes}})。", + "goToFirstPage": "轉到第一頁", + "goToLastPage": "轉到最後一頁", + "goToNextPage": "轉到下一頁", + "goToPreviousPage": "轉到上一頁", + "hAgo": "{{diffHr}}小時前", + "healthIssues": "健康問題", + "hideAdvancedOptions": "隱藏進階選項", + "howLogContextWorks": "日誌上下文如何工作", + "improveKandev": "改進 Kandev", + "createImproveWorkspaceCheckbox": "建立專用的 {{workspace}} 工作區,使改進任務與日常工作隔離", + "improveWorkspaceDoesNotExistYet": "專用的 Improve Kandev 工作區尚不存在。改進任務會放在獨立工作區中,與日常工作隔離。", + "continue": "繼續", + "improveKandevBugPlaceholder": "例如:開啟看板時,在寬度小於 1200px 的螢幕上,列標題文字會與任務數量徽章重疊…", + "improveKandevFeaturePlaceholder": "例如:新增鍵盤快捷鍵,以便從任務詳情檢視將任務標記為完成,並在任務操作選單中顯示該快捷鍵…", + "improveKandevIssuePlaceholder": "描述你想釋出的問題或請求。代理程式會按匹配的 GitHub 議題模板詢問所需細節…", + "includeRecentBackendAndBrowserLogs": "將最近的後端與瀏覽器日誌作為上下文提供給代理程式", + "installed": "已安裝", + "integrations": "整合", + "interruptedByRestart": "因重啟而中斷", + "justNow": "剛剛", + "kandevAllowsEveryAgentPermissionRequest": "Kandev 會批准代理程式的每一項權限請求,而不會向你提示。", + "kandevCouldNotLoad": "Kandev 無法載入。", + "kandevIsOpenSourceAndYou": "Kandev 是開源的,你可以一起把它做得更好。", + "kandevKeepsASmallInMemory": "Kandev 會在記憶體中保留一小段最近後端日誌與瀏覽器控制台事件的環形緩衝區。啟用後,這些日誌會寫入本機臨時資料夾,檔案路徑會追加到任務描述中,便於代理程式在排查時讀取。", + "lastRefreshFailed": "上次重新整理失敗:{{error}}", + "latestReleaseNotes": "最新發行說明", + "loading": "載入中…", + "loadingEllipsis": "正在載入…", + "loadingFolder": "正在載入資料夾…", + "loadingIndicatorLabel": "載入中", + "loadingLabel": "正在載入 {{label}}…", + "loadingRoute": "正在載入 {{routeName}}…", + "loadingRoutine": "正在載入例程…", + "loadingTask": "正在載入任務…", + "loadingWorkflowTemplates": "正在載入工作流程模板…", + "mAgo": "{{diffMin}}分鐘前", + "matchCase": "區分大小寫", + "menu": "選單", + "mode": "模式", + "model": "模型", + "multiRepoUnavailableLocal": "在 Local 支援其初始啟動路徑投影同級儲存庫之前,多儲存庫任務不可用。", + "multiRepoUnavailableRemoteDocker": "在 Remote Docker 支援建立任務實例之前,多儲存庫任務不可用。", + "multiRepoUnsupportedExecutor": "此執行器不支援多儲存庫任務。", + "navigate": "導覽", + "navigateBetweenPagesSearchTasksTrigger": "在頁面間導覽、搜尋任務、觸發 git 操作並管理面板;全部無需離開鍵盤。上下文相關的命令會根據目前頁面出現。", + "newFolder": "新建資料夾", + "newFolderName": "新資料夾名稱", + "newReleases_one": "{{count}} 個新版本", + "newReleases_other": "{{count}} 個新版本", + "next": "下一步", + "nextEnter": "下一步(Enter)", + "noAuth": "無身分驗證", + "noCliClientsInstalledYetInstall": "尚未安裝 CLI 用戶端。請安裝 Claude / Codex / OpenCode / Amp 以啟用此選擇器。", + "noCommandsFound": "未找到命令。", + "noContentMatchesFound": "未找到匹配內容。", + "noFilesFound": "未找到檔案。", + "noFoldersHerePickThisOne": "此處沒有資料夾;選擇此項或返回上級", + "noResults": "無結果。", + "notificationClarificationBody": "代理程式提出了一個問題。", + "notificationClarificationTitle": "代理程式需要您的回答", + "notificationInboxItemBody": "有新條目需要您處理。", + "notificationInboxItemTitle": "新的收件箱條目", + "notificationTurnFinishedBody": "代理程式完成了一輪。", + "notificationTurnFinishedTitle": "代理程式本輪已完成", + "notInstalled": "未安裝", + "notYetInstalled": "尚未安裝", + "officeIsNotEnabledForThis": "此執行時未啟用辦公室。", + "officeRouteNotPortedYet": "此辦公室路由由 SPA 外殼處理,但其專用用戶端頁面仍在遷移中:<1>{{pathname}}", + "onboardingAgentsAutoApproveWarning": "<0>注意:預設代理程式設定檔啟用了自動批准(YOLO 模式)。", + "onboardingAgentsHelp": "展開代理程式以設定其模型與權限。繼續時會儲存更改。之後也可在「設定 > 代理程式」中新增自訂 TUI 代理程式。", + "onboardingStepAgentsDescription": "管理已發現的代理程式並安裝新代理程式。", + "onboardingStepAgentsTitle": "AI 代理程式", + "onboardingStepCommandPanelDescription": "通過鍵盤快捷鍵隨時快速存取操作。", + "onboardingStepCommandPanelTitle": "命令面板", + "onboardingStepExecutorsDescription": "代理程式可在不同執行器環境中執行;本地、容器或遠端。", + "onboardingStepExecutorsTitle": "執行器", + "onboardingStepWorkflowsDescription": "工作流程定義任務的步驟與自動化。", + "onboardingStepWorkflowsTitle": "代理式工作流程", + "open": "開啟", + "openFullPage": "開啟完整頁面", + "openNavigationMenu": "開啟導覽選單", + "openNavigationMenuWithConnectionIssue": "{{description}} 開啟導覽選單", + "openingLastTask": "正在開啟上次任務…", + "openIssue": "開啟議題", + "optionalTheRepositoryTheAgentWorks": "可選;代理程式工作的儲存庫。", + "panels": "面板", + "parentDirectory": "上級目錄", + "pending": "待處理", + "permitTheCliToUploadCode": "允許 CLI 上傳程式碼以進行雲端索引(auggie / 類似工具)。", + "pickACliClient": "選擇 CLI 用戶端", + "pickACliClientToLoad": "選擇 CLI 用戶端以載入其可用模型和模式。", + "pluginPanelFailedToLoad": "此外掛面板載入失敗。", + "pluginPanelUnavailable": "此面板已不可用。", + "plugins": "外掛", + "prDetails": "PR 詳情", + "preparingKandevRepository": "正在準備 Kandev 儲存庫…", + "preparingKandevRepositoryInBackground": "正在後台準備 Kandev 儲存庫。填寫詳情後即可提交。", + "presetIconBug": "缺陷", + "presetIconCheck": "勾選", + "presetIconCode": "程式碼", + "presetIconEye": "眼睛", + "presetIconMessage": "訊息", + "presetIconSearch": "搜尋", + "presetIconSparkle": "閃光", + "presetIconTool": "工具", + "pressCmdKToOpenItAnytime": "<0>按<1><2>隨時開啟", + "pressEnterToConfirm": "按 Enter 確認", + "previousShiftEnter": "上一步(Shift+Enter)", + "probing": "正在探測", + "profile": "設定", + "profileName": "設定名稱", + "prompts": "提示詞", + "reference": "引用", + "refreshAriaLabel": "重新整理 {{label}}", + "refreshBranchesGitFetch": "重新整理分支(git fetch)", + "refreshingLabel": "正在重新整理 {{label}}…", + "refreshLabelLastFetched": "重新整理 {{label}}(上次擷取 {{time}})", + "regularExpression": "正規表示式", + "releasedOn": "釋出於 {{date}}", + "reload": "重新載入", + "reloadTheApplicationToTryAgain": "重新載入應用以重試。", + "rename": "重新命名", + "repository": "儲存庫", + "noRepositoryOption": "(無儲存庫)", + "repositoryDefaultBranchOption": "(儲存庫預設分支)", + "repositoryName": "儲存庫名稱", + "requestFailed": "請求失敗", + "reset": "重置", + "resetting": "正在重置…", + "resetWatchChecking": "正在檢查將刪除多少任務…", + "resetWatchDeleteAllTasks": "這會刪除此前由此監控建立的所有任務,包括已歸檔任務。監控的輪詢游標也會被清除,因此下次檢查會重新匯入目前所有匹配項。此操作無法撤銷。", + "resetWatchDeleteTasks_one": "這會刪除此前由此監控建立的 {{count}} 個任務,包括已歸檔任務。監控的輪詢游標也會被清除,因此下次檢查會重新匯入目前所有匹配項。此操作無法撤銷。", + "resetWatchDeleteTasks_other": "這會刪除此前由此監控建立的 {{count}} 個任務,包括已歸檔任務。監控的輪詢游標也會被清除,因此下次檢查會重新匯入目前所有匹配項。此操作無法撤銷。", + "resetWatchNoTasks": "此監控尚未建立任何任務,將只清除輪詢狀態。監控的輪詢游標也會被清除,因此下次檢查會重新匯入目前所有匹配項。此操作無法撤銷。", + "resetWatchPreviewFailedRequired": "無法載入受影響的任務數量。請重新預覽後再重置此監控。", + "resetWatchTitle": "重置 {{label}}?", + "resizeTableColumns": "調整表格列 {{left}} 與 {{right}} 的寬度", + "results": "結果", + "retryPreview": "重新預覽", + "reviewSubmoduleBoundary": "子模組:{{scope}}", + "rowsPerPage": "每頁行數", + "runsFormatTypecheckTestAndLint": "在 monorepo 中執行格式化、型別檢查、測試和 lint。", + "runtimeDocker": "Docker", + "runtimeDockerDescription": "容器化執行,實現完全隔離與可復現。", + "runtimeGitWorktree": "Git 工作樹", + "runtimeGitWorktreeDescription": "在工作樹根目錄下隔離的分支環境,便於並行工作。", + "runtimeLocal": "本地", + "runtimeLocalDescription": "直接在本機執行代理程式,可完整存取本地檔案系統。", + "runtimeSprites": "Sprites(遠端 sprites.dev)", + "runtimeSpritesDescription": "面向任意程式碼的硬體隔離執行環境。", + "save": "儲存", + "scopeCommands": "命令", + "scopeContents": "內容", + "scopeFiles": "檔案", + "scopeTitleWithShortcut": "{{label}}({{shortcut}})", + "scratchWorkspace": "臨時工作區", + "script": "指令碼", + "searchEllipsis": "搜尋…", + "searchFailedEditTheQueryOr": "搜尋失敗。請修改查詢或重新開啟搜尋後重試。", + "searchForFiles": "搜尋檔案…", + "searchForTasks": "搜尋任務…", + "searchingTaskWorkspace": "正在搜尋任務工作區…", + "searchQueriesAreLimitedTo200": "搜尋查詢限制為 200 個字元。", + "searchTaskContents": "搜尋任務內容…", + "select": "選擇", + "sessionStateCancelled": "已取消", + "sessionStateCompleted": "已完成", + "sessionStateCreated": "已建立", + "sessionStateFailed": "失敗", + "sessionStateIdle": "空閒", + "sessionStateRunning": "執行中", + "sessionStateStarting": "啟動中", + "sessionStateWaitingForInput": "等待輸入", + "settings": "設定", + "shell": "命令直譯器", + "shellCommandPlusSlashCommandSkills": "可在次要實例中執行的 Shell 命令,以及工作流程期間可讓代理程式執行的斜槓命令 <2>skills。", + "showAdvancedOptions": "顯示進階選項", + "showCode": "顯示程式碼", + "showDiagram": "顯示圖表", + "showingRange_one": "顯示第 {{from}}–{{to}} 條,共 {{count}} 條結果", + "showingRange_other": "顯示第 {{from}}–{{to}} 條,共 {{count}} 條結果", + "showMoreBreadcrumbs": "顯示更多路徑層級", + "skip": "跳過", + "stagesAndCommitsChangesUsingConventional": "暫存並用 Conventional Commits 提交更改。", + "status": "狀態", + "statusWithConnectionIssue": "{{description}} 狀態", + "step": "步驟", + "subtaskTitle": "子任務標題", + "switchMode": "切換模式", + "system": "系統", + "task": "任務", + "terminal": "終端", + "todos": "待辦", + "taskLoading": "正在載入任務…", + "tasks": "任務", + "taskStateBlocked": "已阻塞", + "taskStateCancelled": "已取消", + "taskStateCompleted": "已完成", + "taskStateCreated": "已建立", + "taskStateFailed": "失敗", + "taskStateInProgress": "進行中", + "taskStateNotStarted": "未開始", + "taskStateReview": "審查", + "taskStateScheduling": "排程中", + "taskStateTodo": "待辦", + "taskStateWaitingForInput": "等待輸入", + "taskUnavailable": "任務不可用", + "taskUnavailableDescription": "無法載入此任務。它可能已被刪除,或者你沒有存取權限。", + "theAgentForksKandevToYourAccount": "代理程式會將 <1>{{repo}} fork 到你的 GitHub 帳戶,並從你的 fork 開啟 PR,貢獻記在你名下", + "theBaseBranchTheAgentStarts": "代理程式起始的基礎分支。", + "theFinalStepOpensAPullRequest": "此工作流程的最後一步會開啟提取要求,需要 <1>{{binary}} CLI 已通過身分驗證。{{message}}", + "thisEmptyRepositoryWillRunWith": "此空儲存庫將在本機以「{{profile}}」執行。", + "thisGithubAccountCannotForkKdlbs": "此 GitHub 帳戶無法 fork kdlbs/kandev。", + "thisPageCouldNotLoad": "此頁面無法載入。", + "thisWorkflowWillOnlyCreateA": "此工作流程只會根據儲存庫模板建立 GitHub 議題。代理程式會詢問缺失細節並請求釋出批准;它不會實現改動或開啟提取要求。", + "title": "標題", + "toastRegionLabel": "通知", + "typeACommand": "輸入命令…", + "typeToSearchFiles": "輸入以搜尋檔案…", + "typeToSearchTaskContents": "輸入以搜尋任務內容…", + "unavailable": "不可用", + "unknown": "未知", + "unknownError": "未知錯誤", + "unknownPanel": "未知面板:{{component}}", + "unsavedChanges": "未儲存的更改", + "untitledTask": "未命名任務", + "usefulCommandsAgentSkills": "實用命令與代理程式技能", + "useScratchInstead": "改用臨時工作區", + "useStepDefaultOption": "(使用步驟預設值)", + "watcherLoadingBranchesPlaceholder": "載入中…", + "watcherPickRepositoryPlaceholder": "請先選擇儲存庫", + "useThisFolder": "使用此資料夾", + "utilities": "實用工具", + "viewFullReleaseOnGithub": "在 GitHub 上檢視完整發行說明", + "waitsForCiAndAutomatedReviews": "等待 CI 與自動審閱,然後修復失敗並處理評論。", + "walkthrough": "導覽", + "whatSNew": "新功能", + "whenItsDoneTheAgentOpensAPr": "完成後,代理程式會向 <2>{{repo}} 開啟提取要求供維護者審閱,節省他們的時間,並把改進帶給所有人。", + "workflow": "工作流程", + "workflowsControlTheStepsAutomationAnd": "工作流程控制任務的步驟、自動化與代理程式行為。可在設定中新增更多工作流程。", + "workspace": "工作區", + "workspaces": "工作區", + "you": "您", + "youCanUseTheNavigationOr": "你可以使用導覽或重新載入以重試。", + "yourAgentImplementsItInThe": "你的代理程式在 Kandev 儲存庫中實現它,並附帶測試", + "youVerifyAndTestTheChange": "你在第二個 Kandev 實例中驗證並測試該改動" +} diff --git a/apps/web/src/locales/zh-tw/configChat.json b/apps/web/src/locales/zh-tw/configChat.json new file mode 100644 index 0000000000..eb865b0b3e --- /dev/null +++ b/apps/web/src/locales/zh-tw/configChat.json @@ -0,0 +1,21 @@ +{ + "agentProfileHeading": "設定聊天代理程式", + "agentProfileHelp": "選擇可存取設定工具的代理程式。這將成為工作區預設值。", + "closePanel": "關閉設定聊天", + "dialogDescription": "讓代理程式管理你的工作流程、代理程式設定檔與 MCP 設定。", + "noAgentProfiles": "暫無可用的代理程式設定檔。請先在代理程式設定中建立一個。", + "openInQuickChat": "在快速聊天中開啟", + "profileUnavailable": "所選代理程式設定檔尚不可用。請稍後再試。", + "promptHeading": "你想設定什麼?", + "promptPlaceholder": "詢問任何與設定相關的問題…", + "startChat": "開始聊天", + "startChatAria": "開始設定聊天", + "startingChat": "正在開始聊天…", + "suggestionAddReviewStep": "為我的工作流程新增一個「程式碼審閱」步驟", + "suggestionCreateProfile": "建立一個啟用自動批准的新代理程式設定檔", + "suggestionShowWorkflow": "顯示目前工作流程設定", + "suggestionUpdateMcp": "更新預設代理程式設定檔的 MCP 伺服器", + "tagline": "用自然語言設定 Kandev", + "tryAsking": "試著問", + "unknownError": "未知錯誤" +} diff --git a/apps/web/src/locales/zh-tw/diff.json b/apps/web/src/locales/zh-tw/diff.json new file mode 100644 index 0000000000..a06603f542 --- /dev/null +++ b/apps/web/src/locales/zh-tw/diff.json @@ -0,0 +1,50 @@ +{ + "add": "新增", + "addAComment": "新增評論…", + "addComment": "新增評論", + "closeWalkthrough": "關閉導覽", + "collapseUnchangedLines": "摺疊未更改的行", + "copyDiff": "複製 diff", + "deleteComment": "刪除評論", + "dismiss": "關閉", + "editComment": "編輯評論", + "enterToAdd": "{{modKey}}+Enter 新增", + "enterToAddShiftEnterToRun": "{{modKey}}+Enter 新增,{{modKey}}+Shift+Enter 執行", + "expandAllLines": "展開所有行", + "failedToSendWalkthroughNote": "傳送導覽備註失敗", + "lineLabel": "第 {{line}} 行", + "lineRangeLabel": "第 {{start}}–{{end}} 行", + "new": "新", + "next": "下一個", + "noActiveSessionForWalkthroughNote": "沒有可用於導覽備註的活動工作階段", + "noDiffAvailable": "無可用 diff", + "old": "舊", + "openFileAtLine": "開啟 {{file}}:{{line}}", + "previewMarkdown": "預覽 Markdown", + "previous": "上一個", + "reopen": "重新開啟", + "resolve": "解決", + "revertChanges": "還原更改", + "run": "執行", + "runComment": "執行評論", + "saveAndSendToAgent": "儲存併傳送給代理程式({{modKey}}+Shift+Enter)", + "saveCommentForReview": "儲存評論以供審閱({{modKey}}+Enter)", + "sendToAgent": "傳送給代理程式", + "stale": "已過期", + "staleFindingsForThisFile_one": "此檔案有 {{count}} 條過期發現", + "staleFindingsForThisFile_other": "此檔案有 {{count}} 條過期發現", + "stepProgress": "步驟 {{current}} / {{total}} · {{lineLabel}}", + "suggestedChangeNotAppliedAutomatically": "建議的更改;不會自動應用", + "switchToSplitView": "切換到分欄檢視", + "switchToUnifiedView": "切換到統一檢視", + "theDiffChangedAfterThisReview": "此審閱之後 diff 已變化,該發現所描述的程式碼已不在其中。", + "theDiffChangedAfterThisReviewRelocated": "此審閱之後 diff 已變化;該發現已重新錨定到其描述的程式碼。", + "toggleWordWrap": "切換自動換行", + "unableToRenderDiffForThis": "無法渲染此檔案的 diff。快取的 diff 可能與工作區不同步;請重新整理後重試。", + "undo": "撤銷", + "update": "更新", + "walkthrough": "導覽", + "walkthroughNoteAdded": "已新增導覽備註", + "walkthroughNoteQueued": "導覽備註已排隊", + "walkthroughNoteSent": "導覽備註已傳送" +} diff --git a/apps/web/src/locales/zh-tw/editors.json b/apps/web/src/locales/zh-tw/editors.json new file mode 100644 index 0000000000..3f8e313061 --- /dev/null +++ b/apps/web/src/locales/zh-tw/editors.json @@ -0,0 +1,89 @@ +{ + "apply": "應用", + "applyLatestAgentChangesToFile": "將代理程式的最新更改應用到此檔案", + "boldCmdB": "粗體(Cmd+B)", + "comment": "評論", + "commentAdded": "評論已新增", + "commentCmdShiftC": "評論(Cmd+Shift+C)", + "commentCount_one": "{{count}} 條評論", + "commentCount_other": "{{count}} 條評論", + "commentDeleted": "評論已刪除", + "commentMarkerTitle_one": "{{count}} 條評論;點選檢視", + "commentMarkerTitle_other": "{{count}} 條評論;點選檢視", + "commentSent": "評論已傳送", + "commentUpdated": "評論已更新", + "commentWillBeSentWithNextMessage": "你的評論將隨下一條訊息傳送。", + "copyAllChangedLines": "複製所有更改行", + "copyCode": "複製程式碼", + "copyDiff": "複製 diff", + "copyLine": "複製第 {{lineNumber}} 行", + "copyPath": "複製路徑", + "default": "預設", + "deleteFailed": "刪除失敗", + "deleteFile": "刪除檔案", + "disableWordWrap": "關閉自動換行", + "enableWordWrap": "開啟自動換行", + "errorWhileDeletingFile": "刪除檔案時發生錯誤", + "errorWhileSavingFile": "儲存檔案時發生錯誤", + "failedToDeleteFile": "無法刪除檔案", + "failedToSaveFile": "無法儲存檔案", + "failedToSendComment": "傳送評論失敗", + "fileSavedOverwritten": "檔案已儲存(已覆蓋)", + "fileSavedOverwrittenDescription": "該檔案已被外部修改。已儲存您的版本。", + "foldUnchangedLines": "摺疊未更改的行", + "hideDiffIndicators": "隱藏 diff 指示器", + "highlight": "高亮", + "inlineCode": "行內程式碼", + "insertBlock": "插入程式碼塊", + "italicCmdI": "斜體(Cmd+I)", + "link": "連結", + "loadingDiff": "正在載入 diff…", + "loadingEditor": "正在載入編輯器…", + "noDiffAvailable": "無可用 diff", + "noEditorsConfigured": "未設定編輯器", + "openFolder": "開啟資料夾", + "openTaskSessionBeforeSending": "傳送給代理程式前請先開啟任務工作階段。", + "openWith": "開啟方式…", + "pasteLink": "貼上連結…", + "pleaseTryAgain": "請重試。", + "previewMarkdown": "預覽 Markdown", + "queuedForTheAgent": "已排隊等待代理程式。", + "reload": "重新載入", + "revertAllChanges": "還原全部更改", + "revertChanges": "還原更改", + "saveFailed": "儲存失敗", + "saving": "正在儲存…", + "sentToTheAgent": "已傳送給代理程式。", + "showAllLines": "顯示全部行", + "showDiffIndicators": "顯示 diff 指示器", + "slashBlockquote": "引用", + "slashBlockquoteDescription": "引用文字", + "slashBulletList": "無序清單", + "slashBulletListDescription": "無序清單", + "slashCategoryBlocks": "塊", + "slashCategoryLists": "清單", + "slashCategoryText": "文字", + "slashCodeBlock": "程式碼塊", + "slashCodeBlockDescription": "圍欄程式碼", + "slashDivider": "分隔線", + "slashDividerDescription": "水平線", + "slashHeading1": "標題 1", + "slashHeading1Description": "大標題", + "slashHeading2": "標題 2", + "slashHeading2Description": "中標題", + "slashHeading3": "標題 3", + "slashHeading3Description": "小標題", + "slashNumberedList": "有序清單", + "slashNumberedListDescription": "有序清單", + "slashTable": "表格", + "slashTableDescription": "3×3 表格", + "slashTaskList": "任務清單", + "slashTaskListDescription": "清單項", + "startTyping": "開始輸入…", + "strikethroughCmdShiftX": "刪除線(Cmd+Shift+X)", + "switchToSplitView": "切換到分欄檢視", + "switchToUnifiedView": "切換到統一檢視", + "toggleCode": "切換程式碼", + "toggleWordWrap": "切換自動換行", + "underlineCmdU": "下劃線(Cmd+U)" +} diff --git a/apps/web/src/locales/zh-tw/executors.json b/apps/web/src/locales/zh-tw/executors.json new file mode 100644 index 0000000000..274a3f8f14 --- /dev/null +++ b/apps/web/src/locales/zh-tw/executors.json @@ -0,0 +1,262 @@ +{ + "action": "操作", + "add": "新增", + "addASpritesApiKeyBeforeCreating": "建立設定前請先新增 Sprites API 金鑰。", + "addDockerfileContentBeforeCreating": "建立設定前請先新增 Dockerfile 內容。", + "addRule": "新增規則", + "advanced": "高階", + "agent": "代理程式", + "allow": "允許", + "allowlistGithubPlaywright": "白名單 GitHub + Playwright", + "apiKey": "API 金鑰", + "areYouSureThisActionCannot": "確定嗎?此操作無法撤銷。", + "areYouSureYouWantTo": "確定要刪除此設定嗎?此操作無法撤銷。", + "authFilesNotFoundOnThisMachine": "{{files}};本機未找到這些檔案", + "backToExecutor": "返回執行器", + "backToExecutors": "返回執行器", + "buildFailedWithMessage": "構建失敗:{{message}}", + "buildFailedWithStatus": "構建失敗({{status}}):{{text}}", + "buildImage": "構建映象", + "buildThisDockerImageBeforeCreating": "建立設定前請先構建此 Docker 映象。", + "building": "正在構建…", + "checking": "正在檢查…", + "chooseAnExecutorTypeToRun": "選擇一種執行器型別,以在你的基礎設施上執行環境。", + "cleanupScript": "清理指令碼", + "configureAuthenticationForToolsAndAgents": "為遠端環境中的工具和代理程式設定檔身分驗證。", + "configured": "已設定", + "confirmDelete": "確認刪除", + "connected": "已連線", + "connectedActiveSprites_one": "已連線。{{count}} 個活動 sprite。", + "connectedActiveSprites_other": "已連線。{{count}} 個活動 sprite。", + "connection": "連線", + "connectionSettings": "連線設定", + "connectionTestFailed": "連線測試失敗", + "connectionTestPassed": "連線測試通過", + "connectsToARemoteDockerHost": "連線到遠端 Docker 主機。儲存庫將在容器內複製。", + "copyAuthFiles": "複製驗證檔案", + "createANewProfileForThis": "為此執行器建立新設定。可在設定頁設定指令碼和環境變數。", + "createExecutor": "建立執行器", + "createNewProfile": "建立新設定", + "createNewSecret": "建立新金鑰…", + "createProfile": "建立設定", + "creating": "正在建立…", + "creatingProfile": "正在建立設定…", + "defaultNoTls": "預設(無 TLS)", + "defineNetworkAccessRulesAppliedWhen": "定義為此設定建立 sprite 時應用的網路存取規則。", + "defineTheDockerImageBuildAnd": "定義 Docker 映象。可在此構建並測試。", + "delete": "刪除", + "deleteExecutor": "刪除執行器", + "deleteProfile": "刪除設定", + "deleteProfileConfirm": "確定要刪除「{{name}}」嗎?此操作無法撤銷。", + "deleting": "正在刪除…", + "deny": "拒絕", + "descriptionCustom": "自訂執行器。", + "descriptionLocalDocker": "在本機執行 Docker 容器。", + "descriptionLocalPc": "直接在儲存庫資料夾中執行代理程式。", + "descriptionRemoteDocker": "連線到遠端 Docker 主機。", + "descriptionSprites": "在 Sprites.dev 雲沙箱中執行代理程式。", + "descriptionSsh": "通過 SSH 在受信任的 Linux amd64 或 macOS 主機上執行代理程式。", + "descriptionSshCreate": "通過 SSH 連線到遠端主機並在其上執行 agentctl。", + "descriptionWorktree": "建立 Git 工作樹,用於隔離代理程式工作階段。", + "differentConfigurationsForThisExecutorEach": "此執行器的不同設定。每個設定可擁有自己的準備指令碼、環境變數和設定。", + "disabled": "已停用", + "disconnected": "已斷開", + "dockerContainers": "Docker 容器", + "dockerContainersCreatedByThisProfile": "由此設定建立的 Docker 容器。", + "dockerHost": "Docker 主機", + "dockerHostRemotePlaceholder": "{{tcp}} 或 {{ssh}}", + "dockerfile": "Dockerfile", + "dockerfileContent": "Dockerfile 內容", + "domain": "域名", + "eGMyApiToken": "例如 {{example}}", + "eGProductionDevelopment": "例如 {{example}}", + "enabled": "已啟用", + "enterAProfileName": "請輸入設定名稱。", + "enterAnImageTagBeforeCreating": "建立設定前請先輸入映象標籤。", + "envVarsConfiguredCount_one": "已設定 {{count}} 個", + "envVarsConfiguredCount_other": "已設定 {{count}} 個", + "environmentVariables": "環境變數", + "executorName": "執行器名稱", + "executorNotFound": "未找到執行器", + "executorType": "執行器型別", + "failed": "失敗", + "failedToConnectToBackend": "連線後端失敗", + "failedToCreateProfile": "建立設定失敗", + "failedToCreateSecret": "建立金鑰失敗", + "failedToLoadExecutor": "載入執行器失敗", + "missingSecretReference": "缺少金鑰引用", + "failedToSaveProfile": "儲存設定失敗", + "filesSelected": "已選檔案", + "gitIdentity": "Git 身分", + "gitIdentityAutoDetect": "自動檢測", + "gitIdentityCustom": "自訂", + "gitTokenOptional": "Git token(可選)", + "gitUserEmail": "Git 使用者電子郵件地址", + "gitUserName": "Git 使用者名稱", + "goToExecutors": "前往執行器", + "host": "主機", + "hubDescription": "執行器設定檔定義代理程式如何以及在何處執行。每個設定會設定執行環境的指令碼、環境變數和 MCP 策略。", + "hubDescriptionDocker": "在本機執行 Docker 容器。", + "hubDescriptionLocal": "直接在儲存庫資料夾中執行代理程式。", + "hubDescriptionSprites": "在 Sprites.dev 雲沙箱中執行代理程式。", + "hubDescriptionSsh": "通過 SSH 連線遠端主機並在其上執行 agentctl。", + "hubDescriptionWorktree": "建立 Git 工作樹,用於隔離代理程式工作階段。", + "image": "映象", + "imageTag": "映象標籤", + "include": "包含", + "injectedIntoTheExecutionEnvironmentUse": "注入到執行環境。權杖和 API 金鑰請使用金鑰模式;字面值儲存在設定 JSON 中。", + "injectedIntoTheExecutionEnvironmentVariables": "注入到執行環境。變數可引用金鑰以存放敏感值。", + "invalidJson": "無效的 JSON", + "janeDeveloper": "Jane Developer", + "key": "鍵", + "loading": "載入中…", + "loadingEditor": "正在載入編輯器…", + "loadingExecutor": "正在載入執行器…", + "localDocker": "本地 Docker", + "localDockerExecutor": "本地 Docker 執行器", + "localGitIdentityNotDetected": "本機未檢測到本地 git user.name/user.email", + "mcpPolicy": "MCP 策略", + "mcpPolicyJson": "MCP 策略 JSON", + "mcpPolicyMustBeAJsonObject": "MCP 策略必須是 JSON 物件", + "mcpPolicyOverridesForExecutor": "此執行器上 MCP 伺服器的 JSON 策略覆蓋。", + "mcpPolicyOverridesForProfile": "此設定上 MCP 伺服器的 JSON 策略覆蓋。", + "mode": "模式", + "name": "名稱", + "networkPolicies": "網路策略", + "newProfile": "新設定", + "newSshExecutor": "新建 SSH 執行器", + "newTypeProfile": "新建 {{type}} 設定", + "noDockerContainers": "沒有 Docker 容器。", + "noEnvironmentVariablesConfigured": "未設定環境變數。", + "noEnvironmentVariablesConfiguredAddOne": "未設定環境變數。請在下方新增。", + "noNetworkPolicyRulesConfigured": "未設定網路策略規則。", + "noProfilesConfigured": "尚未建立任何執行器設定檔。", + "noResponseBody": "無回應正文", + "noTransferableCredentialsFound": "未找到可傳輸的認證資訊。", + "none": "無", + "notAnSshExecutor": "執行器 {{id}} 不是 SSH 執行器", + "notConfigured": "未設定", + "onlyHttpSse": "僅 HTTP/SSE", + "onlyStdio": "僅 stdio", + "optionalAuthorIdentityAppliedInRemote": "應用於遠端執行器環境的可選作者身分。", + "optionalPattern": "可選模式", + "overrideIdentity": "覆蓋身分", + "pasteYourSecretValue": "貼上你的金鑰值…", + "pathToTlsCertificatesForThe": "Docker 主機的 TLS 證書路徑。", + "personalAccessTokenForCloningRepositories": "在容器內複製儲存庫用的個人存取權杖。未設定時從主機環境自動檢測。", + "port": "埠", + "prepareScript": "準備指令碼", + "prepareScriptBadge": "準備指令碼", + "prepareScriptDescriptionLocal": "在代理程式啟動前於主機上執行。", + "prepareScriptDescriptionRemote": "在代理程式啟動前於執行環境內執行。輸入 {{trigger}} 檢視可用佔位符。", + "profileDetails": "設定詳情", + "profileForExecutor": "{{name}} 的設定", + "profileNameIsRequired": "設定名稱為必填項。", + "profileNotFound": "未找到設定", + "profileSaved": "設定已儲存", + "profiles": "設定", + "provideSecret": "提供金鑰", + "quickPresets": "快速預設", + "refresh": "重新整理", + "relatedDockerContainersRemoved_one": "還將移除 {{count}} 個相關 Docker 容器。", + "relatedDockerContainersRemoved_other": "還將移除 {{count}} 個相關 Docker 容器。", + "remoteAuthMethod": "遠端驗證方式", + "remoteCredentials": "遠端認證資訊", + "remoteDocker": "遠端 Docker", + "remoteDockerExecutor": "遠端 Docker 執行器", + "remove": "移除", + "removeEnvVar": "移除環境變數", + "removeEnvVarNamed": "移除 {{key}}", + "removeRelatedDockerContainers": "移除相關 Docker 容器", + "removeThisExecutor": "移除此執行器", + "repositoriesWillBeMountedAsVolumes": "儲存庫將在執行時以卷形式掛載。", + "rewriteLocalhostForDocker": "為 Docker 重寫 localhost", + "runsAfterTheAgentSessionEnds": "在代理程式工作階段結束後執行,用於清理任務。", + "save": "儲存", + "secret": "金鑰", + "selectASecret": "選擇金鑰…", + "selectOrCreateASecret": "選擇或建立金鑰…", + "selectSecret": "選擇金鑰…", + "selectTheSecretContainingYourSprites": "選擇包含 Sprites.dev API token 的金鑰。", + "session": "工作階段", + "setACustomNameAndEmail": "為遠端 git 提交設定自訂名稱和電子郵件地址。", + "setEnvVarViaStoredSecret": "通過已存金鑰設定 <1>{{envVar}}", + "spritesApiKeyIsRequired": "Sprites API 金鑰為必填項。", + "spritesTokenIsRequired": "Sprites token 為必填項。", + "sshActiveSessions": "活動工作階段", + "sshActiveSessionsDescription": "目前在此 SSH 主機上執行的工作階段。每 90 秒重新整理一次。", + "sshAvailableAgents": "此主機上的可用代理程式", + "sshAvailableAgentsDescription": "在所選登入 shell 下,探測遠端 {{pathVar}} 中每個已啟用的代理程式。代理程式缺失時,可複製安裝提示並在遠端主機上執行。", + "sshBinary": "二進位制檔案", + "sshConfirmRunningSessions_one": "此執行器有 {{count}} 個正在執行的工作階段。它們會繼續在目前主機上執行。僅儲存後新啟動的工作階段會使用更新後的設定。是否繼續?", + "sshConfirmRunningSessions_other": "此執行器有 {{count}} 個正在執行的工作階段。它們會繼續在目前主機上執行。僅儲存後新啟動的工作階段會使用更新後的設定。是否繼續?", + "sshConnectionDescription": "在可通過 SSH 存取的 Linux amd64 或 macOS 主機上執行代理程式。", + "sshConnectionTestFailed": "連線測試失敗", + "sshConnectionTestPassed": "連線測試通過", + "sshCopyInstallHint": "複製安裝提示", + "sshCreateDescription": "連線到遠端 Linux amd64 或 macOS 主機並在其上執行 agentctl。", + "sshExecutorPageDescription": "編輯連線設定或重新信任主機。現有工作階段會保留先前設定的快照。", + "sshFailedToLoadSessions": "載入工作階段失敗", + "sshFailedToProbeAgents": "探測代理程式失敗", + "sshFailedToReachBackend": "無法連線後端", + "sshFailedToSaveExecutor": "儲存執行器失敗", + "sshFailedToSaveShell": "儲存 shell 失敗", + "sshFingerprintChanged": "警告:此指紋與目前固定的指紋不同(<1>{{fingerprint}})。信任後將覆蓋已固定的金鑰。若你未預期主機重新產生金鑰,請停止操作。", + "sshFingerprintObserved": "觀察到的主機指紋:", + "sshHostAliasHint": "若已設定,將從設定繼承 HostName / Port / User / IdentityFile / ProxyJump。", + "sshHostAliasLabel": "來自 {{path}} 的主機別名(可選)", + "sshIdentityFileHint": "受密碼保護的金鑰須先載入到 ssh-agent。", + "sshIdentityFilePath": "身分檔案路徑", + "sshIdentitySource": "身分來源", + "sshIdentitySourceAgent": "{{program}}({{envVar}})", + "sshIdentitySourceFile": "身分檔案(私鑰路徑)", + "sshInstallHint": "安裝提示", + "sshInstallHintCopied": "已複製安裝提示", + "sshInstalled": "已安裝", + "sshLocalForward": "本地轉發", + "sshLoginShell": "登入 shell", + "sshMissing": "缺失", + "sshNamePlaceholder": "我的 VPS", + "sshNoActiveSessions": "暫無活動工作階段。", + "sshNoEnabledAgents": "沒有可探測的已啟用代理程式。", + "sshNoHintAvailable": "無可用提示", + "sshPinnedFingerprint": "已固定指紋:", + "sshProbeAgents": "探測代理程式", + "sshProbeError": "探測錯誤", + "sshProbeHint": "點選「{{button}}」檢查遠端主機上已安裝哪些代理程式。", + "sshProxyJumpHint": "僅支援單跳堡壘。不支援鏈式跳轉。", + "sshProxyJumpLabel": "ProxyJump(可選)", + "sshRemotePort": "遠端埠", + "sshReprobe": "重新探測", + "sshShellNotDetected": "(未檢測到)", + "sshTestAndTrustToSave": "請先測試連線並信任其指紋後再儲存。", + "sshTestConnection": "測試連線", + "sshTestResultStale": "測試執行後你更改了連線欄位。請在信任並儲存前重新執行連線測試。", + "sshTrustThisHost": "<0>信任此主機。 我已確認上方指紋與我的伺服器匹配。之後若報告不同指紋的連線將被拒絕。", + "sshTrusted": "已信任", + "sshUnverified": "未驗證", + "status": "狀態", + "stop": "停止", + "success": "成功", + "task": "任務", + "testConnection": "測試連線", + "theRemoteDockerHostUrlTcp": "遠端 Docker 主機 URL({{schemes}})。", + "thisActionCannotBeUndone": "此操作無法撤銷。", + "tlsCertificatePath": "TLS 證書路徑", + "tlsVerify": "TLS 驗證", + "tokenConfiguredButUnableToConnect": "已設定 token,但無法連線。", + "typeLocal": "本地", + "typeTokenToConfirmDeletion": "輸入「{{token}}」以確認刪除。此操作無法撤銷。", + "typeWorktree": "工作樹", + "unknownError": "未知錯誤", + "unknownExecutorType": "未知執行器型別", + "untrackedTask": "未跟蹤", + "uptime": "執行時間", + "useDefaults": "使用預設值", + "useLocalGitConfig": "使用本地 git 設定", + "usedByRemoteExecutorsForCommit": "由遠端執行器用於提交作者設定。", + "user": "使用者", + "usesTheLocalDockerDaemonOn": "使用本機上的本地 Docker 守護處理程序。", + "value": "值", + "verifyingConnection": "正在驗證連線…" +} diff --git a/apps/web/src/locales/zh-tw/github.json b/apps/web/src/locales/zh-tw/github.json new file mode 100644 index 0000000000..e64a5e4af2 --- /dev/null +++ b/apps/web/src/locales/zh-tw/github.json @@ -0,0 +1,572 @@ +{ + "aRegistrationCanBeReusedAcross": "一個註冊可跨工作區複用,也可將工作和個人應用分開。每個工作區自行選擇並安裝認證資訊。", + "accountsUnavailable": "帳戶不可用", + "actionPromptPlaceholderHelp": "輸入 {{token}} 可檢視可用佔位符。執行操作時會替換 <4>{{url}} 和 <7>{{title}}。", + "actions": "操作", + "active": "活躍", + "addAll": "全部新增", + "addAllCommentsToChatContext": "將全部評論新增到對話上下文", + "addAllFailedChecksToChat": "將全部失敗檢查新增到對話上下文", + "addAllReviewsToChatContext": "將全部審閱新增到對話上下文", + "addAllToChatContext": "全部新增到對話上下文", + "addAnExistingGithubApp": "新增現有 GitHub 應用", + "addExistingApp": "新增現有應用", + "addFailuresToChatContext": "將 {{workflow}} 失敗項新增到對話上下文", + "addIssueAction": "新增議題操作", + "addIssueQuery": "新增議題查詢", + "addPrAction": "新增 PR 操作", + "addPrQuery": "新增 PR 查詢", + "addRepository": "新增儲存庫", + "addToChatContext": "新增到對話上下文", + "addWatch": "新增監控", + "addWholeThreadToChatContext": "將整個討論串新增到對話上下文", + "addedToChatContext": "已新增到對話上下文", + "agentProfile": "代理程式設定檔", + "allRepos": "所有儲存庫", + "allRepositories": "所有儲存庫", + "allRepositoriesAllowedByThisWorkspace": "此工作區允許的所有儲存庫", + "allowsInstallationElsewhereItDoesNot": "允許在其他位置安裝。不會發布到 Marketplace,也不會授予儲存庫權限。", + "anErrorOccurred": "發生錯誤", + "anExecutorProfileGhTokenOr": "執行器設定檔中的 {{ghToken}} 或 {{githubToken}} 會覆蓋該任務的工作區託管認證資訊。", + "anImportedAppMustHaveAt": "匯入的應用至少必須具備以下儲存庫權限和訂閱事件。", + "apiRateLimit": "API 速率限制", + "appId": "應用 ID", + "appInstallationFailed": "應用安裝失敗", + "approvalRate": "通過率", + "approveAs": "以 {{mutationActor}} 身分批准", + "approved": "已批准", + "approving": "正在批准…", + "authenticationUnavailable": "驗證不可用", + "auto": "自動", + "autoFix": "自動修復", + "autoFixEnabledAria": "自動修復已啟用", + "autoFixEnabledWithRoundsAria": "自動修復已啟用,已使用 {{current}} / {{max}} 輪", + "autoFixExhausted": "自動修復已暫停", + "autoFixExhaustedAria": "達到 {{current}} / {{max}} 輪後,自動修復已暫停", + "autoFixCiAndAddressComments": "自動修復 CI 並處理評論", + "autoFixPrompt": "自動修復提示詞", + "autoFixPromptDescription": "此提示詞僅用於本任務。留空則使用預設提示詞。若希望 Kandev 附上 PR 意見回饋快照,請新增 <0>{{placeholder}}。", + "autoFixRoundExplanation": "自動修復已為該 PR 使用 {{current}} / {{max}} 輪。Kandev 每次傳送或排隊一條 CI 自動修復訊息即計為一輪。Kandev 會等待全部 PR 檢查完成後再開始新一輪自動修復,以便代理程式同時獲得最終的失敗檢查與目前評論。更新已排隊的自動修復訊息不會額外消耗輪次。當已達 {{max}}/{{max}} 且沒有待更新的自動修復訊息時,Kandev 會暫停該 PR 的自動修復,避免無限迴圈。人工審閱後,請關閉並重新啟用自動修復以重新開始。", + "autoMerge": "自動合併", + "autoMergeEnabledAria": "自動合併已啟用", + "autoMergeWhenReady": "就緒時自動合併", + "automaticallyCreateTasksForGithubIssues": "為符合條件的 GitHub 議題自動建立任務。", + "automaticallyCreateTasksForPrsThat": "自動為需要你審閱的 PR 建立任務。", + "automaticallyCreateTasksWhenNewGithub": "當新的 GitHub 議題符合條件時自動建立任務。", + "automaticallyCreateTasksWhenNewPull": "當新的提取要求需要你審閱時自動建立任務。", + "automation": "自動化", + "automationForPr": "僅適用於 PR #{{number}}", + "available": "可用", + "availablePlaceholders": "可用佔位符:", + "avgTimeToMerge": "平均合併時間", + "backToRegisteredApps": "返回已註冊應用", + "behindBase": "落後於基線分支", + "bestForPersonalOrCompanyInternal": "最適合個人或公司內部自動化。", + "blocked": "已阻止", + "blockedByBranchProtection": "被分支保護規則阻止", + "blockedGeneric": "仍需滿足必需審閱、程式碼所有者或儲存庫規則後才能繼續。", + "blockedNeedsApprovals_one": "還需 {{count}} 個批准後才能合併。", + "blockedNeedsApprovals_other": "還需 {{count}} 個批准後才能合併。", + "blockedStatusCheck": "有必需的狀態檢查尚未通過。", + "botComments": "機器人評論(", + "byAuthor": "由 <1>", + "byAuthorOpenedAgo": "由 {{author}} · 建立於 {{time}}", + "changeConnection": "更改連線", + "changeGithubConnection": "更改 GitHub 連線", + "changesRequested": "已請求更改", + "checkBucketFailed": "失敗", + "checkBucketInProgress": "進行中", + "checkBucketPassed": "已通過", + "checkNow": "立即檢查", + "checkingForNewIssues": "正在檢查新議題…", + "checkingForNewPrs": "正在檢查新 PR…", + "checkingGithubConnection": "正在檢查 GitHub 連線…", + "checkingGithubStatus": "正在檢查 GitHub 狀態…", + "checksFailed": "檢查失敗", + "checksFailedCount_one": "{{count}} 個失敗", + "checksFailedCount_other": "{{count}} 個失敗", + "checksPassed": "檢查通過", + "checksPassedCount_one": "{{count}} 個通過", + "checksPassedCount_other": "{{count}} 個通過", + "checksPendingCount_one": "{{count}} 個進行中", + "checksPendingCount_other": "{{count}} 個進行中", + "checksRunning": "檢查執行中", + "chooseAGithubApp": "選擇 GitHub 應用", + "chooseHowNewlyLaunchedTasksAuthenticate": "選擇新啟動任務向 GitHub 驗證的方式。這不會改變上方的工作區自動化連線。", + "chooseMergeMethod": "選擇合併方式", + "chooseTheAutomationAndPersonalIdentities": "選擇此工作區使用的自動化身分和個人身分。", + "chooseTheExactAccountKandevDoes": "選擇確切帳戶。Kandev 不會在 CLI 活躍帳戶改變時靜默跟隨。", + "ciChecks": "CI 檢查{{summary}}", + "ciPassRate": "CI 通過率", + "cleanUpClosed": "清理已關閉項", + "cleanUpMerged": "清理已合併項", + "cleaning": "正在清理…", + "cleanupBehavior": "清理行為", + "cleanupFailed": "清理失敗", + "cleanupPolicyAlways": "始終刪除", + "cleanupPolicyAlwaysDescription": "「始終刪除」優先於保留規則:即使任務有使用者參與或啟用了 PR 生命週期提示,也會在合併或關閉時刪除。", + "cleanupPolicyAuto": "自動(推薦)", + "cleanupPolicyAutoDescription": "當已合併或關閉的 PR 任務有使用者參與或啟用了 PR 生命週期提示時保留,否則刪除。", + "cleanupPolicyNever": "從不自動刪除", + "cleanupPolicyNeverDescription": "保留所有任務。請從任務清單手動刪除。", + "cliAccountActiveSuffix": ";目前", + "clientId": "用戶端 ID", + "clientSecret": "用戶端金鑰", + "closePrStatus": "關閉 PR 狀態", + "closed": "已關閉", + "closedAgo": "關閉於 {{time}}", + "commentCount_one": "{{count}} 條評論", + "commentCount_other": "{{count}} 條評論", + "comments": "評論", + "configureTheExistingAppOnGithub": "在 GitHub 上設定現有應用", + "conflicts": "衝突", + "connectGithub": "連線 GitHub", + "connectIdentity": "連線身分", + "connectYourPersonalGithubIdentityTo": "連線你的個人 GitHub 身分,以檢視分配給你的提取要求和議題。", + "connectionMethod": "連線方式", + "continueOnGithub": "在 GitHub 上繼續", + "controlsHowNewlyLaunchedTasksAuthenticate": "控制新啟動任務如何使用 Git HTTPS 和 gh 命令向 GitHub 驗證。託管工作區認證資訊使用 Kandev 的工作區連線;執行器認證資訊使用所選執行器的 Git 或 SSH 設定。", + "copy": "複製 {{label}}", + "couldNotLoadGithubCliAccounts": "無法載入 GitHub CLI 帳戶。{{error}}", + "create": "建立", + "createAGithubApp": "建立 GitHub 應用", + "createIssueWatch": "建立議題監控", + "createNewApp": "新建應用", + "createReviewWatch": "建立審閱監控", + "created": "已建立", + "createdByKandev": "由 Kandev 建立", + "credentialUsedForRepositorySyncWatches": "用於儲存庫同步、監控,以及託管代理程式的 git 和 gh 命令的認證資訊。執行器設定檔權杖優先。", + "currentGithubApiRateAndQuery": "此工作區連線目前的 GitHub API 速率和查詢限制。", + "customQuery": "自訂查詢", + "customQueryPressEnterEG": "自訂查詢;按 Enter。例如 \"is:open review-requested:@me\"", + "defaultQueries": "預設查詢", + "defaultQueriesAreStillLoading": "預設查詢仍在載入。", + "defaultQueriesSaved": "預設查詢已儲存", + "defaultRepository": "預設儲存庫", + "delete": "刪除", + "deletedTasks_one": "已刪除 {{count}} 個任務", + "deletedTasks_other": "已刪除 {{count}} 個任務", + "description": "描述", + "disconnect": "斷開連線", + "disconnectFailed": "斷開連線失敗", + "draft": "草稿", + "eGBugEnhancementPriorityHigh": "例如 {{examples}}", + "eGNeedsMyReview": "例如:需要我審閱", + "editAutoFixPromptForThis": "編輯此任務的自動修復提示詞", + "editDefaultPrompt": "編輯預設提示詞", + "editDetails": "編輯詳情", + "editIssueWatch": "編輯議題監控", + "editPrompt": "編輯提示詞", + "editReviewWatch": "編輯審閱監控", + "enable": "啟用", + "enabled": "已啟用", + "enterANameUpTo100Characters": "請輸入不超過 100 個字元的名稱。", + "enterAPublicHostNotLocalhost": "請輸入公共主機,不能是 localhost。", + "enterAPublicHttpsOrigin": "請輸入公共 HTTPS 源。", + "enterAValidGithubAccountLogin": "請輸入有效的 GitHub 帳戶登入名。", + "enterAnOriginWithoutAPath": "請輸入不含路徑、查詢引數或片段的源。", + "enterTheAppClientId": "請輸入應用用戶端 ID。", + "enterTheAppClientSecret": "請輸入應用用戶端金鑰。", + "enterTheGithubAppSlug": "請輸入 GitHub 應用標識。", + "enterTheNumericGithubAppId": "請輸入數字形式的 GitHub 應用 ID。", + "enterTheWebhookSecret": "請輸入網路鉤子金鑰。", + "executorProfile": "執行器設定檔", + "explainAutoFixRounds": "說明自動修復輪次", + "explainCiAutomationOptions": "說明 CI 自動化選項", + "explainFinalPrStateNotifications": "說明 PR 最終狀態通知", + "explainHowManagedTaskCredentialsWork": "說明託管任務認證資訊的工作方式", + "explainRepositoryScope": "說明儲存庫範圍", + "explainReviewRequestNotifications": "說明審閱請求通知", + "explainTaskGitAccess": "說明任務 Git 存取方式", + "explainWorkspaceGithubIdentity": "說明工作區 GitHub 身分", + "failedToApprove": "批准失敗", + "failedToCheckForIssues": "檢查議題失敗", + "failedToCheckForPrs": "檢查 PR 失敗", + "failedToDeleteIssueWatch": "刪除議題監控失敗", + "failedToDeleteReviewWatch": "刪除審閱監控失敗", + "failedToLoadGithubWorkspaceSettings": "載入 GitHub 工作區設定失敗", + "failedToMerge": "合併失敗", + "failedToReRequestReview": "無法重新請求審查", + "failedToResetIssueWatch": "重置議題監控失敗", + "failedToResetReviewWatch": "重置審閱監控失敗", + "failedToSaveDefaultQueries": "儲存預設查詢失敗", + "failedToSaveGithubWorkspaceSettings": "儲存 GitHub 工作區設定失敗", + "failedToSaveQuickActions": "儲存快捷操作失敗", + "failedToUnlinkPullRequest": "取消關聯提取要求失敗", + "filter": "篩選", + "filterGithubResultsByRepository": "按儲存庫篩選 GitHub 結果", + "filterRepositories": "篩選儲存庫…", + "filters": "篩選", + "forWebhooksChooseContentType": "對於網路鉤子,請選擇 <1>{{contentType}} 作為內容型別,並保持 SSL 驗證啟用。", + "foundNewIssues_one": "發現 {{count}} 個新議題", + "foundNewIssues_other": "發現 {{count}} 個新議題", + "foundNewPrs_one": "發現 {{count}} 個新 PR", + "foundNewPrs_other": "發現 {{count}} 個新 PR", + "general": "(常規)", + "generateSetupInstructions": "產生設定說明", + "githubAccessSettingsSaved": "GitHub 存取設定已儲存", + "githubApiAccessIsExhaustedFor": "{{resources}} 的 GitHub API 配額已耗盡。後台 PR 和議題檢查將暫停,直至最近一次限額在 {{reset}} 重置。", + "githubApiLimits": "GitHub API 限制", + "githubApp": "GitHub 應用", + "githubAppAdded": "已新增 GitHub 應用", + "githubAppConfigurationInstructions": "GitHub 應用設定說明", + "githubAppConnected": "GitHub 應用已連線", + "githubAppCouldNotBeImported": "無法匯入 GitHub 應用", + "githubAppImportedItIsReady": "已匯入 GitHub 應用,可以安裝。", + "githubAppPermissions": "GitHub 應用權限", + "githubAppSetupCancelled": "已取消 GitHub 應用設定", + "githubAppSetupCouldNotStart": "無法啟動 GitHub 應用設定", + "githubAppSlug": "GitHub 應用標識", + "githubAuthenticationLost": "GitHub 驗證已失效。", + "githubCli": "GitHub CLI", + "githubCliAccount": "GitHub CLI 帳戶", + "githubDidNotReturnARedirectUrl": "GitHub 未返回重定向 URL", + "githubDidNotReturnAnInstallationUrl": "GitHub 未返回安裝 URL", + "githubIdentityConnected": "GitHub 身分已連線", + "githubIntegration": "GitHub 整合", + "githubIsNotConnectedConfigureWorkspace": "GitHub 未連線。請使用 gh CLI 或個人存取權杖設定工作區自動化。", + "githubIsReadyToCreateThe": "GitHub 已準備好建立應用", + "githubMustReachThisHttpsOrigin": "GitHub 必須能夠存取此 HTTPS 源,以傳送簽名網路鉤子和回撥。", + "githubOwnerLogin": "GitHub 所有者登入名", + "githubSearchQuerySupportsFullGithub": "GitHub 搜尋查詢。支援完整的 GitHub 搜尋語法,提供最大的靈活性。", + "githubSearchQueryWhenSetOverrides": "GitHub 搜尋查詢。設定後將覆蓋上方的標籤篩選條件。", + "githubSetupWasNotCompleted": "GitHub 設定未完成", + "githubWillShowTheGeneratedPermissions": "GitHub 會顯示產生的權限並要求你確認。從 GitHub 返回後會新增註冊;仍需明確執行安裝,才能將其用於此工作區。", + "githubWorkspaceSettingsSaved": "GitHub 工作區設定已儲存", + "graphqlQueryLimit": "GraphQL 查詢限制", + "group": "分組", + "hidePrompt": "隱藏提示詞", + "hideToken": "隱藏權杖", + "hint": "提示", + "hintOptional": "提示(可選)", + "howManagedTaskCredentialsWork": "託管任務認證資訊的工作方式", + "howOftenToCheckForNew": "檢查新議題的頻率。最短 60 秒,最長 3600 秒。", + "howOftenToCheckForNew2": "檢查新 PR 的頻率。最短 60 秒,最長 3600 秒。", + "icon": "圖示", + "identityConnectionFailed": "身分連線失敗", + "importSetupCouldNotStart": "無法啟動匯入設定", + "imported": "已匯入", + "inUse": "使用中", + "inbox": "收件箱", + "inheritExecutorGitCredentials": "繼承執行器 Git 認證資訊", + "initialStepForNewTasks": "新任務的初始步驟。", + "initialStepForNewTasksAuto": "新任務的初始步驟。自動啟動由該步驟設定。", + "insertPrFeedback": "插入 PR 意見回饋", + "installAGithubAppAboveTo": "請先安裝上方的 GitHub 應用以更改工作區連線。安裝完成後即可儲存任務存取設定。", + "installForThisWorkspace": "為此工作區安裝", + "interval": "間隔", + "issue": "議題 #{{number}}", + "issue2": "議題 #", + "issueCleanupPolicyAlwaysDescription": "關閉時刪除,即使你參與過該任務。", + "issueCleanupPolicyAutoDescription": "刪除已關閉議題的任務,但保留你曾在其中輸入訊息的任務。", + "issueWatch": "議題監控", + "issueWatchCreated": "議題監控已建立", + "issueWatchDeleted": "議題監控已刪除", + "issueWatchNotFound": "未找到議題監控", + "issueWatchPromptHelp": "為每個新議題傳送給代理程式的提示詞。輸入 {{token}} 可插入佔位符。", + "issueWatchUpdated": "議題監控已更新", + "issueWatches": "議題監控", + "issues": "議題", + "kandevBrokersTheWorkspacePatNamed": "Kandev 將工作區 PAT、指定的 GitHub CLI 帳戶或應用身分提供給此任務,用於 GitHub HTTPS 和 gh。", + "kandevFirstReservesExactCallbackAnd": "Kandev 會先預留準確的回撥和網路鉤子 URL,再引導你完成 GitHub 應用設定。在安裝匯入的應用前,現有工作區存取保持不變。", + "kandevGeneratesTheExactAppPolicy": "Kandev 會產生準確的應用策略。你在 GitHub 上確認建立後,Kandev 將儲存此註冊,供工作區選擇。", + "kandevManagedOperationsActAs": "Kandev 託管的操作以 {{actor}} 身分執行。", + "kandevManagedOperationsUseTheGithub": "Kandev 託管的操作使用為 {{actor}} 安裝的 GitHub 應用。", + "kandevStoresThisTokenForThis": "Kandev 會為此工作區儲存該權杖。GitHub 會將操作記錄為權杖所有者執行。", + "kandevUsesThisWorkspaceConnectionFor": "Kandev 使用此工作區連線執行儲存庫同步、監控、後台任務和託管代理程式的 GitHub 命令。使用 PAT 或 GitHub CLI 帳戶時,「我的 GitHub」和你觸發的操作會使用同一個真人身分。", + "kindIssue": "議題", + "kindPullRequest": "提取要求", + "label": "標籤", + "labels": "標籤", + "labelsCommaSeparated": "標籤(逗號分隔)", + "lastPolled": "上次輪詢", + "lastSynced": "上次同步", + "legacySharedConnection": "舊版共享連線", + "limitsGithubPullRequestsAndIssues": "限制此工作區中顯示或匯入的 GitHub 提取要求和議題。", + "loadingAccounts": "正在載入帳戶…", + "loadingOrganizations": "正在載入組織…", + "loadingRegisteredApps": "正在載入已註冊應用…", + "loadingTaskAccess": "正在載入任務存取設定…", + "localAndWorktreeTasksUseHost": "本地和工作樹任務使用主機可見的 Git 或 SSH 認證資訊。Docker、SSH 和雲端任務使用對應執行器中設定的認證資訊。", + "managedWorkspaceCredentials": "託管工作區認證資訊", + "me": "我", + "meMyTeams": "我和我的團隊", + "mergeable": "可合併", + "mergeConflictsWith": "與以下內容存在合併衝突", + "mergeMethodDefault": "合併 PR", + "mergeMethodMergeCommit": "建立合併提交", + "mergeMethodMergeCommitShort": "合併提交", + "mergeMethodRebase": "變基併合並", + "mergeMethodRebaseShort": "變基", + "mergeMethodSquash": "壓縮併合並", + "mergeMethodSquashShort": "壓縮", + "merged": "已合併", + "mergedAgo": "合併於 {{time}}", + "merging": "正在合併…", + "missing": "缺失", + "mode": "模式", + "myGithubIdentity": "我的 GitHub 身分", + "myGithubNowUsesYourVerified": "「我的 GitHub」現在使用你已驗證的個人身分。", + "name": "名稱", + "nameInKandev": "Kandev 中的名稱", + "needsAttention": "需要處理", + "never": "從不", + "noAutomationConnection": "無自動化連線", + "noChecks": "無檢查", + "noChecksHaveStarted": "尚未開始任何檢查", + "noCommentsYet": "暫無評論", + "noGhAccountsFound": "未找到 gh 帳戶", + "noGithubAppsAreRegisteredYet": "尚未註冊 GitHub 應用。請新增現有應用或在下方新建。", + "noIssueWatchesConfiguredCreateOne": "尚未設定議題監控。建立一個即可開始監控 GitHub 議題。", + "noIssuesMatchThisFilter": "沒有符合此篩選條件的議題。", + "noNewIssuesFound": "未發現新議題", + "noNewPrsFound": "未發現新 PR", + "noPullRequestLinkedToThis": "此工作階段未關聯提取要求。", + "noPullRequestsMatchThisFilter": "沒有符合此篩選條件的提取要求。", + "noReposFoundFor": "未找到「{{org}}」的儲存庫", + "noRepositoriesFound": "未找到儲存庫。", + "noReviewWatchesConfiguredCreateOne": "尚未設定審閱監控。建立一個即可開始監控 PR。", + "noReviewsYet": "暫無審閱", + "noSavedQueriesYet": "尚無已儲存的查詢。", + "noStatsAvailableYet": "暫無統計資料。", + "noTaskCreatedYet": "尚未建立任務", + "noTasksToCleanUp": "沒有需要清理的任務", + "noWorkspaceConfiguredCreateAWorkspace": "尚未設定工作區。請先建立工作區,才能從 PR/議題啟動任務。", + "notMergeable": "不可合併", + "omitThePlaceholderIfYouWant": "若希望代理程式自行拉取分支並檢查 GitHub,而不是接收 Kandev 的快照,請省略該佔位符。", + "onlyMatchIssuesWithTheseLabels": "僅匹配帶有這些標籤的議題。留空則匹配所有議題。", + "onlyPrsWhereYouAreExplicitly": "僅匹配明確請求你審閱的 PR(不包括通過團隊成員身分請求)", + "onlyTheAppOwner": "僅應用所有者", + "openDetails": "開啟 {{title}} 詳情", + "openGithubAppSettings": "開啟 GitHub 應用設定", + "openGithubFilters": "開啟 GitHub 篩選", + "openOnGithub": "在 GitHub 上開啟 {{workflow}}", + "openSettingsToSeePrsAndIssues": "<0>開啟 GitHub 設定 以檢視你的提取要求和議題。", + "openedAgo": "建立於 {{time}}", + "optionalFallsBackToStepDefault": "可選,留空則使用步驟預設值。", + "optionalFallsBackToStepDefault2": "可選,留空則使用步驟預設值。代理程式將在該執行器環境中執行。", + "optionallyConnectYourGithubUserFor": "你可以選擇連線 GitHub 使用者,用於「我的 GitHub」和歸屬於真人的操作。此身分絕不會提供給託管代理程式;工作區自動化仍以應用身分執行。", + "or": "或", + "organization": "組織", + "organizations": "組織", + "otherGithubAccounts": "其他 GitHub 帳戶", + "overallLabel": "總體:", + "passRate": "通過率", + "pasteTheAppPrivateKey": "請貼上應用私鑰。", + "pause": "暫停", + "pauseOrResumePolling": "暫停或恢復輪詢。", + "paused": "已暫停", + "pending": "{{pending}} 個待處理", + "pendingReview": "待審閱", + "pendingReviewCount_one": "({{count}} 個待處理)", + "pendingReviewCount_other": "({{count}} 個待處理)", + "pendingReviews_one": "{{count}} 條待審閱", + "pendingReviews_other": "{{count}} 條待審閱", + "permissionsAvailableToKandevThroughThis": "Kandev 通過此工作區安裝的 GitHub 應用獲得的權限。", + "personalAccessToken": "個人存取權杖", + "personalAccount": "個人帳戶", + "personalGithubIdentityDisconnected": "個人 GitHub 身分已斷開連線", + "personalOauth": "個人 OAuth", + "placeholderActionTitle": "PR 或議題標題", + "placeholderActionUrl": "PR 或議題 URL", + "placeholderCommaSeparatedLabels": "逗號分隔的標籤", + "placeholderIssueAuthor": "議題作者使用者名稱", + "placeholderIssueBody": "議題正文", + "placeholderIssueNumber": "議題編號", + "placeholderIssueTitle": "議題標題", + "placeholderIssueUrl": "議題 URL", + "placeholderPrAuthor": "PR 作者使用者名稱", + "placeholderPrNumber": "PR 編號", + "placeholderPrTitle": "PR 標題", + "placeholderPrUrl": "PR 地址", + "placeholderRepository": "儲存庫", + "placeholderSourceBranch": "源分支", + "placeholderTargetBranch": "目標分支", + "pollIntervalSeconds": "輪詢間隔(秒)", + "pr": "PR #", + "prAnalytics": "PR 分析", + "prApproved": "PR 已批准", + "prClosedWithoutMerging": "PR 已關閉且未合併", + "prEvents": "PR 事件", + "reviewFollowUp": "審查跟進", + "prMerged": "PR 已合併", + "prTaskStatusCi": "CI", + "prTaskStatusMerge": "合併", + "prTaskStatusNumber": "PR #{{number}}", + "prTaskStatusReview": "審閱", + "prTaskStatusState": "狀態", + "prepareAppOnGithub": "在 GitHub 上準備應用", + "presetIconBug": "缺陷", + "presetIconCheck": "檢查", + "presetIconCode": "程式碼", + "presetIconEye": "眼睛", + "presetIconMessage": "訊息", + "presetIconSearch": "搜尋", + "presetIconSparkle": "閃光", + "presetIconTool": "工具", + "pressEnter": "按 Enter", + "private": "私有", + "privateKeyPem": "私鑰({{extension}})", + "promptsShownOnGithubWhenStarting": "從 PR 或議題啟動任務時在 {{route}} 上顯示的提示詞。", + "prs": "PR", + "prsByDay": "按天統計 PR", + "prsCreated": "已建立 PR", + "prsOnDay_one": "{{date}}:{{count}} 個 PR", + "prsOnDay_other": "{{date}}:{{count}} 個 PR", + "prsReviewed": "已審閱 PR", + "prsWhereYouOrAnyOf": "請求你或你的任一團隊審閱的 PR", + "publicKandevUrl": "公共 Kandev URL", + "pullRequestActivityForThisWorkspace": "此工作區的提取要求活動。", + "pullRequestCiStatusAria": "提取要求 #{{number}} CI 狀態{{automation}}", + "pullRequestCiStatusReviewsAnd": "提取要求的 CI 狀態、審閱與檢查摘要。", + "pullRequestCount_one": "{{count}} 個提取要求", + "pullRequestCount_other": "{{count}} 個提取要求", + "pullRequestCountCiStatusAria_one": "{{count}} 個提取要求 CI 狀態{{automation}}", + "pullRequestCountCiStatusAria_other": "{{count}} 個提取要求 CI 狀態{{automation}}", + "pullRequestStatus": "提取要求 #{{number}} 狀態", + "pullRequestStatuses_one": "{{count}} 個提取要求狀態", + "pullRequestStatuses_other": "{{count}} 個提取要求狀態", + "pullRequests": "提取要求", + "pullRequestsAndIssuesAcrossYour": "跨你的儲存庫的提取要求與議題。", + "pullRequestsLinkedToTask_one": "此任務已關聯 {{count}} 個提取要求;開啟其中一個", + "pullRequestsLinkedToTask_other": "此任務已關聯 {{count}} 個提取要求;開啟其中一個", + "query": "查詢", + "queryExample": "例如 {{query}}", + "quickActions": "快捷操作", + "quickActionsAreStillLoading": "快捷操作仍在載入。", + "quickActionsSaved": "快捷操作已儲存", + "rateLimitRemaining": "剩餘 {{remaining}} / {{limit}} {{unit}}", + "rateLimitUnitPoints": "點數", + "rateLimitUnitRequests": "次請求", + "rateLimitUnknown": "未知", + "readyToMerge": "可以合併", + "reRequestReview": "重新請求審閱", + "reRequestReviewFrom": "向 {{author}} 重新請求審閱", + "reconnectGithub": "重新連線 GitHub", + "reconnectIdentity": "重新連線身分", + "refresh": "重新整理", + "refreshGithubConnection": "重新整理 GitHub 連線", + "remove": "移除", + "removeFromTask": "從任務中移除 {{repo}} #{{prnumber}}", + "repositories": "儲存庫", + "repository": "儲存庫", + "repositoryPermissions": "儲存庫權限", + "repositoryScope": "儲存庫範圍", + "repositoryScopeHelp": "限制 Kandev 為此工作區發現的 GitHub 提取要求和議題,包括「我的 GitHub」結果、審閱監控和議題監控。它不會更改 GitHub 權限或儲存庫存取權限。", + "requesting": "正在請求…", + "requiredGithubAppPolicy": "必需的 GitHub 應用策略", + "resetCompleteDeletedTasks_one": "重置完成,已刪除 {{count}} 個任務;下次輪詢將重新匯入。", + "resetCompleteDeletedTasks_other": "重置完成,已刪除 {{count}} 個任務;下次輪詢將重新匯入。", + "resetCompleteNextPollWillRe": "重置完成,下次輪詢將重新匯入匹配項。", + "resetWatch": "重置監控", + "resets": "· 於 {{reset}} 重置", + "resolveConflicts": "解決衝突", + "resolvedFromOneNamedHostAccount": "需要時從一個指定的主機帳戶解析。受管理任務會取得限定範圍的中介身分;除非在下方選取,否則不會繼承主機 Git。", + "retry": "重試", + "reviewCount_one": "{{count}} 條審閱", + "reviewCount_other": "{{count}} 條審閱", + "reviewPermissions": "審閱權限", + "reviewReRequestedFrom": "已重新向 {{reviewer}} 請求審查", + "reviewWatch": "審閱監控", + "reviewWatchCreated": "審閱監控已建立", + "reviewWatchDeleted": "審閱監控已刪除", + "reviewWatchNotFound": "未找到審閱監控", + "reviewWatchPromptHelp": "為每個新 PR 傳送給代理程式的提示詞。輸入 {{token}} 可插入佔位符,或使用 {{mention}} 按名稱引用已儲存的提示詞。它的展開方式與工作流程步驟提示詞相同,因為此提示詞會成為通過同一組裝流程傳遞的任務描述。", + "reviewWatchUpdated": "審閱監控已更新", + "reviewWatches": "審閱監控", + "reviews": "審閱{{summary}}", + "saveChanges": "儲存更改", + "saveCurrentQuery": "儲存目前查詢", + "savePresetDescription": "將此 {{kind}} 查詢儲存到側邊欄,以便日後快速存取。", + "savePrompt": "儲存提示詞", + "saveQuery": "儲存查詢", + "saved": "已儲存", + "savedQueryFallback": "已儲存的查詢", + "saving": "正在儲存…", + "savingChanges": "正在儲存更改…", + "searchLimit": "搜尋限制", + "searchQuery": "搜尋查詢", + "searching": "正在搜尋…", + "selectWorkflow": "選擇工作流程", + "selectWorkspace": "選擇工作區", + "selectedRepositories": "已選儲存庫", + "selectWorkspaceBeforeRequestingReview": "請求審查前請先選擇工作區。", + "setTheseExactUrlsCreateAClientSecret": "設定這些準確的 URL,建立用戶端金鑰和網路鉤子金鑰,並下載私鑰。此一次性設定於 {{expiresAt}} 過期。", + "showGithubApiLimits": "顯示 GitHub API 限制", + "showLess": "收起", + "showMore": "展開更多", + "showToken": "顯示權杖", + "sidebarQueriesShownOnGithubFor": "在 {{route}} 上為提取要求和議題顯示的側邊欄查詢。", + "signInWithGhAuthLogin": "使用 <1>{{command}} 登入,然後重新開啟此對話方塊。", + "someSettingsWereSavedButAnother": "部分設定已儲存,但另一項更改失敗:{{detail}}", + "startOver": "重新開始", + "stepLabelled": "步驟:{{stepTitle}}", + "storedAppCredentialsMintShortLived": "儲存的應用程式認證會簽發短效安裝權杖。受管理任務會針對允許的儲存庫取得限定範圍的應用程式中介身分。", + "storedEncryptedByKandevWorkspaceAutomation": "由 Kandev 加密儲存。工作區自動化和託管任務的 GitHub HTTPS/gh 操作將以你的帳戶身分執行。", + "subscribedEvents": "訂閱的事件", + "task": "任務", + "taskAccess": "任務存取:", + "taskAccessUnavailable": "任務存取不可用", + "taskAutoFixPrompt": "任務自動修復提示詞", + "taskGitAccess": "任務 Git 存取", + "taskLabelled": "任務:{{title}}", + "taskPrompt": "任務提示詞", + "tasks": "任務", + "tasksCreatedByThisWatcherLand": "此監控建立的任務會進入所選工作區。", + "theAppIsReadyToSelect": "該應用已可供此工作區選擇和安裝。", + "theExistingWorkspaceConnectionWasNot": "現有工作區連線未更改。", + "theGithubResponseCouldNotBe": "無法驗證 GitHub 回應。請檢查連線後重試。", + "thePlaceholderInsertsTheCurrentPr": "該佔位符會插入目前 PR 標識、新增或變更的失敗檢查(含 GitHub 作業連結),以及新增或變更的審閱評論(含檔案、行號和正文)。", + "thePullRequestIsStillLinked": "提取要求仍保持關聯。", + "theRepositoryWillBeAutomaticallyCloned": "如果工作區中尚無此儲存庫,將自動複製到 {{path}}。", + "theSettingsCouldNotBeSaved": "無法儲存設定", + "theStoredAppCredentialsAreUnavailable": "儲存的應用認證資訊不可用。", + "theWorkflowToCreateTasksIn": "用於建立任務的工作流程。", + "theWorkspaceChangedBeforeTaskAccess": "儲存任務存取設定前工作區已發生變化", + "thisAccountAlsoPowersMyGithub": "此帳戶也用於「我的 GitHub」和使用者觸發的操作。", + "thisAppRegistrationIsShared_one": "此應用註冊由 {{count}} 個工作區共享。註冊更改會影響所有使用它的工作區;安裝存取權限仍按工作區隔離。", + "thisAppRegistrationIsShared_other": "此應用註冊由 {{count}} 個工作區共享。註冊更改會影響所有使用它的工作區;安裝存取權限仍按工作區隔離。", + "thisBranchCanTBeMerged": "此分支無法自動合併。請先解決衝突再合併。", + "thisRepositoryOpensByDefaultYou": "預設開啟此儲存庫。開啟查詢後仍可更改篩選條件。", + "thisWorkspaceUsesOneCredentialFor": "此工作區使用一個認證資訊執行儲存庫同步、監控、後台任務和託管代理程式的 GitHub 存取。執行器設定檔認證資訊仍可優先使用。", + "titleIssues": "議題", + "titlePullRequests": "提取要求", + "toggleReviewFollowUpAutomation": "切換審查跟進自動化", + "typeACustomQueryFirst": "請先輸入自訂查詢", + "typeOwnerRepoToSearch": "輸入 {{format}} 進行搜尋", + "unableToLoadTheCurrentTask": "無法載入目前任務存取設定。", + "unexpectedResponseFromTheServer": "伺服器返回了意外回應", + "unresolvedComments_one": "{{count}} 條未解決評論", + "unresolvedComments_other": "{{count}} 條未解決評論", + "untitledPr": "未命名 PR", + "update": "更新", + "updated": "已更新 ", + "updatedAgo": "{{elapsed}} 前更新", + "updatedJustNow": "剛剛更新", + "updatingStatus": "更新中…", + "useAnAppWhenAutomationNeeds": "當自動化需要獨立身分、短期權杖和儲存庫級安裝控制時,請使用應用。設定過程更復雜,並且需要可公開存取的 HTTPS URL。", + "useCommaSeparatedOwnerRepoValues": "使用逗號分隔的 owner/repo 值。", + "useDefault": "使用預設", + "usedByWorkspaces_one": "由 {{count}} 個工作區使用。編輯或刪除會影響所有這些工作區。", + "usedByWorkspaces_other": "由 {{count}} 個工作區使用。編輯或刪除會影響所有這些工作區。", + "verifyAndImportApp": "驗證並匯入應用", + "viewPermissions": "檢視權限", + "viewPullRequestOnGithub": "在 GitHub 上檢視提取要求", + "waitingOnBranchProtection": "等待分支保護", + "wakeAgentOnReviewRequest": "收到任何新的審查請求時喚醒代理程式,包括修改後的重新審查。", + "wakeAgentOnTerminalPrState": "審查工作結束時喚醒代理程式。可選擇其中一種或兩種結果。", + "watchesThisTaskSLinkedPull": "在 1 分鐘 PR 重新整理迴圈中監視此任務關聯的提取要求。自動修復會為新觀察到的意見回饋排隊任務提示詞,自動合併會等待 PR 就緒,通知開關會在工作區連線的 GitHub 帳戶被請求審閱或 PR 到達終態時喚醒任務代理程式。審閱請求會先靜默建立該帳戶目前請求狀態的基線,再在後續請求時通知。", + "webhook": "網路鉤子", + "webhookSecret": "網路鉤子金鑰", + "whichAllowedGithubRepositoriesToMonitor": "此監控要監測哪些允許存取的 GitHub 儲存庫。", + "whoCanInstallThisApp": "誰可以安裝此應用?", + "withManagedWorkspaceCredentialsKandevConfigures": "使用受管理的工作區認證資訊時,Kandev 會在新啟動的任務處理程序中,將 agentctl 設為 Git 的認證輔助程式。當 Git 要求取得已附加 GitHub HTTPS 儲存庫的認證資訊時,輔助程式會兌換僅適用於該任務與儲存庫的 broker 租約。認證資訊會在需要時傳回 Git,且不會寫入儲存庫或 Git 設定。gh 命令會使用 Kandev 支援 broker 的轉接程式。繼承執行器設定則會略過這兩者,改用所選執行器可見的認證資訊。變更會套用至新啟動的任務及下次繼續執行,不會影響已在執行的處理程序。", + "workflow": "工作流程", + "workflowStep": "工作流程步驟", + "workflowStepPromptWrapHelp": "工作流程步驟提示詞會包裹此提示詞。例如,如果步驟提示詞為 <2>{{stepPrompt}},最終提示詞將變為 <5>{{finalPrompt}}", + "workspaceAutomationNowUsesTheVerified": "工作區自動化現在使用已驗證的應用安裝。", + "workspaceGithubAccess": "工作區 GitHub 存取", + "workspaceGithubConnectionRemoved": "工作區 GitHub 連線已移除", + "workspaceGithubIdentity": "工作區 GitHub 身分", + "yourReviewIsRequested": "已請求你的審閱" +} diff --git a/apps/web/src/locales/zh-tw/gitlab.json b/apps/web/src/locales/zh-tw/gitlab.json new file mode 100644 index 0000000000..93a3ec548d --- /dev/null +++ b/apps/web/src/locales/zh-tw/gitlab.json @@ -0,0 +1,351 @@ +{ + "actionApprove": "批准", + "actionAssignees": "負責人", + "actionFailed": "{{action}} 失敗", + "actionHint": "操作提示 {{index}}", + "actionLabel": "操作標籤 {{index}}", + "actionLabels": "標籤", + "actionMerge": "合併", + "actionPrompt": "操作提示詞 {{index}}", + "actionReply": "回覆", + "actionResolve": "解決", + "actionReviewers": "審閱者", + "actionUnapprove": "取消批准", + "actionUnlink": "取消關聯", + "actions": "操作", + "active": "活躍", + "addAllDiscussionsToTaskContext": "將全部討論新增到任務上下文", + "addDiscussionToTaskContext": "將討論新增到任務上下文", + "addIssueAction": "新增議題操作", + "addMrAction": "新增合併請求操作", + "agentProfile": "代理程式設定檔", + "allProjects": "所有專案", + "alwaysDelete": "始終刪除", + "apply": "應用", + "approvalRemoved": "已移除批准", + "approvals": "批准", + "approve": "批准", + "approvedCount_one": "{{count}} 人已批准", + "approvedCount_other": "{{count}} 人已批准", + "assignees": "負責人", + "assigneesUpdated": "負責人已更新", + "authenticationMethod": "身分驗證方式", + "auto": "自動", + "autoKeepEngagedTasks": "自動;保留進行中的任務", + "between60And3600Seconds": "必須介於 60 到 3600 秒之間。", + "bugBackend": "bug, backend", + "byAuthorOpenedAgo": "由 {{author}} · 建立於 {{time}}", + "checkNow": "立即檢查", + "checkingGitlabStatus": "正在檢查 GitLab 狀態…", + "chooseAWorkspacePatTheLocal": "請選擇工作區 PAT、本地 glab CLI 登入認證資訊或環境提供的權杖。CLI 和環境認證資訊必須已可供 Kandev 後端使用。", + "chooseWhetherToIncludeOnlyDirect": "選擇僅包含直接審閱請求,還是包含範圍更廣的相容請求。", + "cleanupPolicy": "清理策略", + "clearToken": "清除權杖", + "commits": "提交", + "conflicts": "衝突", + "connectAGitlabAccountSoKandev": "連線 GitLab 帳戶,以便 Kandev 代表你開啟合併請求、讀取審閱討論,以及回覆或解決討論。", + "connected": "已連線", + "controlsTaskDeletionWhenTheGitlab": "控制 GitLab 條目關閉時是否刪除任務。", + "couldNotReachHost": "無法連線 <1>{{host}}:{{error}}", + "createIssueWatch": "建立 GitLab 議題監控", + "createReviewWatch": "建立 GitLab 審閱監控", + "createTask": "建立任務", + "createWatch": "建立監控", + "created": "已建立", + "customQueryPressEnterEG": "自訂查詢;按 Enter。例如 \"labels=bug&state=opened\"", + "deleteSavedQuery": "刪除已儲存查詢", + "deleteSavedQuery2": "刪除已儲存查詢 {{label}}", + "deleteWatch": "刪除監控", + "deleteWatchTitle": "刪除 {{label}}?", + "deleting": "正在刪除…", + "description": "描述", + "directAndGroupCompatibleRequests": "直接請求及與群組相容的請求", + "directRequests": "直接請求", + "discussionReply": "討論回覆", + "discussionResolved": "討論已解決", + "discussions": "討論", + "draft": "草稿", + "eGNeedsMyReview": "例如:需要我審閱", + "editIssueWatch": "編輯 GitLab 議題監控", + "editReviewWatch": "編輯 GitLab 審閱監控", + "editWatch": "編輯監控", + "enableThisWatchBeforeCheckingNow": "請先啟用此監控,再立即檢查", + "enableWatch": "啟用監控", + "enterAPersonalAccessTokenToSwitch": "請輸入個人存取權杖以切換到 PAT。", + "enterAValidHttpOrHttpsGitlabHost": "請輸入有效的 HTTP 或 HTTPS GitLab 主機 URL。", + "environmentToken": "環境權杖", + "everyQuickActionNeedsALabel": "每個快捷操作都需要標籤和提示詞。", + "executorProfile": "執行器設定檔", + "failedToClearToken": "清除權杖失敗", + "failedToLinkMergeRequest": "關聯合並請求失敗", + "failedToResetQuickActions": "重置快捷操作失敗", + "failedToSaveQuickActions": "儲存快捷操作失敗", + "failedToUnlinkMergeRequest": "取消關聯合並請求失敗", + "failedToUpdateAuthenticationMethod": "更新身分驗證方式失敗", + "files": "檔案", + "filters": "篩選", + "foundMatchingIssues_one": "找到 {{count}} 個匹配的議題", + "foundMatchingIssues_other": "找到 {{count}} 個匹配的議題", + "foundMatchingMergeRequests_one": "找到 {{count}} 個匹配的合併請求", + "foundMatchingMergeRequests_other": "找到 {{count}} 個匹配的合併請求", + "gitlabAuthenticationMethodUpdated": "GitLab 身分驗證方式已更新", + "gitlabCredentialsAreConfiguredButAuthentication": "已設定 GitLab 認證資訊,但身分驗證失敗。請在以下位置重新連線:", + "gitlabHostUrlOverrideForSelf": "GitLab 主機 URL。自託管實例可覆蓋此值;使用 {{host}} 時請保留預設值。", + "gitlabIsNotConnectedConfigureGitlab": "GitLab 未連線。請在以下位置設定 GitLab 身分驗證:", + "gitlabIssueWatch": "GitLab 議題監控", + "gitlabMergeRequest": "GitLab 合併請求 !{{mriid}}", + "gitlabMergeRequests": "{{length}} 個 GitLab 合併請求", + "gitlabQueryParameters": "GitLab 查詢引數", + "gitlabQuickActionsReset": "GitLab 快捷操作已重置", + "gitlabQuickActionsSaved": "GitLab 快捷操作已儲存", + "gitlabRejectedAction": "GitLab 拒絕了該操作。", + "gitlabRejectedTheAction": "GitLab 拒絕了該操作。", + "gitlabRejectedTheMergeRequestLink": "GitLab 拒絕了合併請求關聯。", + "gitlabRejectedTheRequest": "GitLab 拒絕了該請求。", + "gitlabReviewWatch": "GitLab 審閱監控", + "gitlabTokenCleared": "GitLab 權杖已清除", + "gitlabWatchCouldNotBeSaved": "無法儲存 GitLab 監控", + "gitlabWillMergeDescription": "GitLab 將使用專案預設方式把 {{mr}} 合併到 {{baseBranch}}。", + "glabCli": "glab CLI", + "hideToken": "隱藏權杖", + "inbox": "收件箱", + "initialStepForEachNewTask": "每個新任務的初始步驟。", + "interval": "間隔", + "intervalMinutesLabel_one": "間隔 {{count}} 分鐘", + "intervalMinutesLabel_other": "間隔 {{count}} 分鐘", + "intervalMinutes_one": "{{count}} 分鐘", + "intervalMinutes_other": "{{count}} 分鐘", + "into": "合併到", + "issueWatchCheckFailed": "議題監控檢查失敗", + "issueWatchCreated": "議題監控已建立", + "issueWatchCreationFailed": "建立議題監控失敗", + "issueWatchDeleted": "議題監控已刪除", + "issueWatchDeletionFailed": "刪除議題監控失敗", + "issueWatchDialogDescription": "為新匹配的 GitLab 議題自動建立工作區任務。", + "issueWatchResetFailed": "重置議題監控失敗", + "issueWatchReset_one": "議題監控已重置;已刪除 {{count}} 個任務", + "issueWatchReset_other": "議題監控已重置;已刪除 {{count}} 個任務", + "issueWatchUpdateFailed": "更新議題監控失敗", + "issueWatchUpdated": "議題監控已更新", + "issueWatches": "議題監控", + "issues": "議題", + "kindIssue": "議題", + "kindMergeRequest": "合併請求", + "label": "標籤", + "labels": "標籤", + "labelsUpdated": "標籤已更新", + "lastChecked": "上次檢查", + "lastCheckedAt": "上次檢查時間:{{value}}", + "leaveEmptyToMatchMergeRequests": "留空以匹配請求你審閱的合併請求。新增引數會明確替換該審閱人約束。", + "linkAnotherMergeRequest": "關聯另一個合併請求", + "linkGitlabMergeRequest": "關聯 GitLab 合併請求", + "linkMergeRequest": "關聯合並請求", + "linkedMergeRequest": "已關聯的合併請求", + "linking": "正在關聯…", + "loadingMergeRequest": "正在載入合併請求", + "loggedInAs": "登入身分:<1>{{username}}", + "match": "匹配", + "maximumInFlightTasks": "最大進行中任務數", + "merge": "合併", + "merging": "合併中…", + "mergeRequest": "合併請求 !{{mriid}}", + "mergeRequestApproved": "合併請求已批准", + "mergeRequestLabels": "合併請求標籤", + "mergeRequestMerged": "合併請求已合併", + "mergeRequestReviewWatches": "合併請求審閱監控", + "mergeRequestUnlinked": "合併請求已取消關聯", + "mergeRequestUrl": "合併請求 URL", + "mergeRequests": "合併請求", + "mergeRequestsAndIssues": "{{host}} · 合併請求與議題", + "mergeThisMergeRequest": "合併此合併請求?", + "mergeability": "可合併性", + "mockTest": "模擬(測試)", + "mrs": "MR", + "name": "名稱", + "never": "從不", + "neverDelete": "永不刪除", + "newWatch": "新建監控", + "noChangedFiles": "無變更檔案", + "noCommits": "無提交", + "noDiscussionsYet": "暫無討論", + "noIssuesMatchThisFilter": "沒有符合此篩選條件的議題。", + "noLimit": "無限制", + "noMergeRequestLinked": "此工作階段未關聯合並請求。", + "noMergeRequestsMatchThisFilter": "沒有符合此篩選條件的合併請求。", + "noNewIssuesMatched": "沒有匹配到新議題", + "noNewMergeRequestsMatched": "沒有匹配到新的合併請求", + "noPipeline": "無流水線", + "noSavedQueriesYet": "尚無已儲存的查詢。", + "noTaskCreatedYet": "尚未建立任務", + "noWatchesConfigured": "尚未設定監控。", + "noneAssigned": "未分配", + "notConfigured": "未設定", + "notConnected": "未連線", + "notificationStatusUnavailable": "通知狀態不可用", + "notificationUpdateFailed": "更新通知失敗", + "openGitlabFilters": "開啟 GitLab 篩選", + "openInGitlab": "在 GitLab 中開啟", + "openMergeRequestInGitlab": "在 GitLab 中開啟合併請求", + "openSettingsToSeeMrsAndIssues": "<0>設定 → GitLab 以檢視你的合併請求和議題。", + "optionalCapPollingResumesWhenActive": "可選上限;當活躍任務數低於此值時恢復輪詢。", + "optionalCommaSeparatedGitlabLabelsThat": "可選的以逗號分隔的 GitLab 標籤;匹配的議題必須包含這些標籤。", + "optionalCommaSeparatedNamespaceProjectPaths": "可選的以逗號分隔的名稱空間/專案路徑。留空將監控所有可存取的專案。", + "optionalGitlabApiQueryParametersSuch": "可選的 GitLab API 查詢引數,例如 {{example}}。", + "optionalOtherwiseUsesTheWorkflowStep": "可選;否則使用工作流程步驟的預設值。", + "pasteAMergeRequestUrlFrom": "貼上來自此工作區所設定 GitLab 主機的合併請求 URL。", + "pauseWatch": "暫停監控", + "paused": "已暫停", + "personalAccessToken": "個人存取權杖", + "pipeline": "流水線", + "pollGitlabForMergeRequestsAwaiting": "輪詢 GitLab 中等待審閱的合併請求,併為每個新的匹配項建立一個任務。", + "pollGitlabIssuesAndCreateOne": "輪詢 GitLab 議題,併為每個新的匹配項建立一個任務。", + "pollIntervalSeconds": "輪詢間隔(秒)", + "pollingAndCleanup": "輪詢與清理", + "pressEnter": "按 Enter", + "project": "專案", + "projectPaths": "專案路徑", + "projects": "專案", + "promptSentToTheSelectedAgent": "為每個新匹配項傳送給所選代理程式設定檔的提示詞。", + "promptUsingUrlAndTitle": "使用 {{url}} 和 {{title}} 的提示詞", + "query": "查詢", + "quickActions": "快捷操作", + "reconnectRequired": "需要重新連線", + "refresh": "重新整理", + "refreshFailed": "重新整理失敗:{{error}}", + "refreshFailedShowingCached": "GitLab 重新整理失敗:{{error}}。正在顯示上次成功載入的審閱資料。", + "refreshMergeRequest": "重新整理合併請求", + "remove": "移除 {{label}}", + "removeFromAssignees": "將 {{username}} 從負責人中移除", + "removeFromReviewers": "將 {{username}} 從審閱者中移除", + "reply": "回覆", + "replyAdded": "已新增回復", + "replyToThisDiscussion": "回覆此討論", + "resetQuickActionsToDefaults": "將快捷操作重置為預設值", + "resetWatch": "重置監控", + "resolve": "解決", + "resolved": "已解決", + "retry": "重試", + "review": "審閱", + "reviewScope": "審閱範圍", + "reviewWatchCheckFailed": "審閱監控檢查失敗", + "reviewWatchCreated": "審閱監控已建立", + "reviewWatchCreationFailed": "建立審閱監控失敗", + "reviewWatchDeleted": "審閱監控已刪除", + "reviewWatchDeletionFailed": "刪除審閱監控失敗", + "reviewWatchDialogDescription": "為新匹配的 GitLab 合併請求自動建立工作區任務。", + "reviewWatchResetFailed": "重置審閱監控失敗", + "reviewWatchReset_one": "審閱監控已重置;已刪除 {{count}} 個任務", + "reviewWatchReset_other": "審閱監控已重置;已刪除 {{count}} 個任務", + "reviewWatchUpdateFailed": "更新審閱監控失敗", + "reviewWatchUpdated": "審閱監控已更新", + "reviewers": "審閱者", + "reviewersUpdated": "審閱者已更新", + "saveChangesBeforeCheckingNow": "立即檢查前請先儲存更改", + "saveCurrentQuery": "儲存目前查詢", + "saveGitlabQuery": "儲存 GitLab 查詢", + "savePresetDescription": "將此 {{kind}} 查詢儲存到側邊欄,以便日後快速存取。", + "saved": "已儲存", + "savedQueryFallback": "已儲存的查詢", + "saving": "正在儲存…", + "searchAssignees": "搜尋負責人", + "searchProjectMembers": "搜尋專案成員", + "searchReviewers": "搜尋審閱者", + "selectWorkflow": "選擇工作流程", + "shortHint": "簡短提示", + "showToken": "顯示權杖", + "subscribe": "訂閱", + "subscribeToNotifications": "訂閱 GitLab 通知", + "subscribedToGitlabNotifications": "已訂閱 GitLab 通知", + "task": "任務", + "taskAutomation": "任務自動化", + "taskPrompt": "任務提示詞", + "taskPromptsShownOnTheGitlab": "顯示在 GitLab 瀏覽頁面上、用於合併請求和議題的任務提示詞。", + "taskRepository": "任務儲存庫", + "theMergeRequestIsStillLinked": "合併請求仍保持關聯。", + "thisMergeRequestBelongsToA": "此合併請求屬於與目前工作區連線不同的 GitLab 主機。", + "thisWillDeleteEveryTaskCreated": "這會刪除由此監控建立的所有任務,包括已歸檔任務,並移除其輪詢歷史。此操作無法撤銷。", + "titleIssues": "議題", + "titleMergeRequests": "合併請求", + "typeACustomQueryFirst": "請先輸入自訂查詢", + "unapprove": "取消批准", + "unlink": "取消關聯 !", + "unlinkMergeRequest": "取消關聯合並請求", + "unreachable": "無法存取", + "unsubscribe": "取消訂閱", + "unsubscribeFromNotifications": "取消訂閱 GitLab 通知", + "unsubscribedFromGitlabNotifications": "已取消訂閱 GitLab 通知", + "updateWatch": "更新監控", + "updated": "已更新 ", + "verifyingGitlabConnection": "正在驗證 GitLab 連線", + "watchDeletionFailed": "刪除監控失敗", + "workflow": "工作流程", + "workflowStep": "工作流程步驟", + "workflowThatReceivesNewTasks": "接收新任務的工作流程。", + "yourTokenMayStillBeValid": "你的權杖可能仍然有效--這看起來是網路或上游服務問題。", + "mrAutomationClosedLabel": "MR 已關閉未合併", + "mrAutomationDescription": "當關聯的合併請求請求你的審閱,或該合併請求被合併、關閉時,喚醒此任務的代理程式。通知會傳送到該任務目前處於活動狀態的工作階段佇列。", + "mrAutomationMergedLabel": "MR 已合併", + "mrAutomationRetry": "重試", + "mrAutomationReviewRequestedHelp": "當工作區連線的 GitLab 帳戶被新增為審閱者時喚醒代理程式。移除後重新新增算作新的請求;在 MR 更新過程中保持指派狀態則不算。", + "mrAutomationReviewRequestedHelpAriaLabel": "說明審閱請求通知", + "mrAutomationReviewRequestedLabel": "已請求你的審閱", + "mrAutomationTerminalHelp": "當審閱工作結束時喚醒代理程式。可以選擇其中一種或兩種結果。", + "mrAutomationTerminalHelpAriaLabel": "說明 MR 最終狀態通知", + "mrAutomationToggleAriaLabel": "切換審閱跟進自動化", + "mrAutomationTriggerLabel": "審閱跟進", + "mrAutomationUpdateFailedDescription": "設定未儲存。", + "mrAutomationUpdateFailedTitle": "更新 MR 自動化失敗", + "mrAutomation": "自動化", + "mrAutoFixCiAndAddressComments": "自動修復 CI 並處理評論", + "mrAutoFixPrompt": "自動修復提示詞", + "mrAutoFixPromptDescription": "此提示詞僅用於本任務。留空則使用預設提示詞。若希望 Kandev 附帶其 MR 意見回饋快照,請加入 <0>{{placeholder}}。", + "mrAutoFixRoundExplanation": "自動修復已為此 MR 使用 {{max}} 輪中的 {{current}} 輪。每當 Kandev 傳送或排入一條 MR 自動修復訊息時計為一輪。Kandev 會等待流水線結束後再開始新的自動修復輪次,以便代理程式同時獲得最終失敗的作業和目前的討論評論。更新已排隊的自動修復訊息不會消耗額外輪次。當達到 {{max}}/{{max}} 且沒有待更新的自動修復訊息時,Kandev 會暫停此 MR 的自動修復,以免無限迴圈。人工審查後先停用再重新啟用自動修復即可重新開始。", + "mrAutoMergeWhenReady": "就緒時自動合併", + "mrAutomationExplainAutoMerge": "說明自動合併就緒條件", + "mrAutoMergeReadyExplanation": "一旦此 MR 完全就緒,Kandev 會立即自動合併:處於開啟狀態且非草稿、流水線已成功、沒有未解決的討論,並且 GitLab 自身的合併就緒檢查也通過。如果您的專案需要審批,該條件已包含在 GitLab 的檢查中。MR 獲得批准且滿足其他所有條件後,Kandev 會立即合併,不再另行確認。", + "mrAutomationExplainOptions": "說明自動化選項", + "mrAutomationWatchesLinkedMergeRequest": "在 1 分鐘同步迴圈中監視此任務關聯的合併請求。自動修復會為新觀察到的流水線失敗或討論評論排入任務提示詞,自動合併會等待 MR 就緒,而通知開關會在工作區已連線的 GitLab 帳戶被請求審查或 MR 進入終態時喚醒該任務的代理程式。審查請求會先靜默記錄該帳戶的目前請求狀態,之後再有請求時才通知。", + "mrAutoFixInsertMrFeedback": "插入 MR 意見回饋", + "mrAutomationEditDefaultPrompt": "編輯預設提示詞", + "mrAutomationTaskAutoFixPrompt": "任務自動修復提示詞", + "mrAutomationPlaceholderExplanation": "該佔位符會插入目前 MR 識別符號、新增或變更的失敗流水線作業及其連結,以及新增或變更的未解決討論評論(含檔案、行號和正文)。", + "mrAutomationOmitPlaceholderExplanation": "如果您希望代理程式自行拉取或擷取分支並直接檢視 GitLab,而不是接收 Kandev 的快照,請省略該佔位符。", + "mrAutomationUseDefault": "使用預設值", + "mrAutomationSavePrompt": "儲存提示詞", + "mrAutomationEditAutoFixPromptForThis": "編輯此任務的自動修復提示詞", + "mrAutomationExplainAutoFixRounds": "說明自動修復輪次", + "mrAutomationAutoFixPromptSaveFailed": "無法儲存自動修復提示詞。", + "mrAutomationAutoFixPromptResetFailed": "無法重置自動修復提示詞。", + "mrPopoverOpenInGitlab": "在 GitLab 中開啟 !{{mriid}}", + "mrPopoverUnlink": "取消關聯 !{{mriid}}", + "mrPopoverPassRate": "通過率", + "mrPopoverNoPipeline": "尚未啟動流水線", + "mrPopoverApproved": "已批准", + "mrPopoverAwaitingReview": "等待審查", + "mrPopoverAwaitingCount_one": "{{count}} 項待處理", + "mrPopoverAwaitingCount_other": "{{count}} 項待處理", + "mrPopoverUnresolvedComments_one": "{{count}} 條未解決的評論", + "mrPopoverUnresolvedComments_other": "{{count}} 條未解決的評論", + "mrPopoverUpdatedJustNow": "剛剛更新", + "mrPopoverUpdatedAgo": "{{elapsed}}前更新", + "mrTooltipState": "狀態:{{state}}", + "mrTooltipReview": "審查:{{state}}", + "mrTooltipPipeline": "流水線:{{state}}", + "mrTooltipReadyToMerge": "可以合併", + "mrChipAriaLabelSingle": "合併請求 !{{mriid}},{{status}}", + "mrChipAriaLabelMulti_one": "{{count}} 個合併請求,{{status}}", + "mrChipAriaLabelMulti_other": "{{count}} 個合併請求,{{status}}", + "mrChipStatusMerged": "已合併", + "mrChipStatusClosed": "已關閉", + "mrChipStatusFailed": "流水線失敗", + "mrChipStatusDraft": "草稿", + "mrChipStatusReady": "可以合併", + "mrChipStatusAwaitingApproval": "等待批准", + "mrChipStatusRunning": "流水線執行中", + "mrChipStatusNeutral": "無流水線", + "mrChipAutoFix": "自動修復", + "mrChipAutoMerge": "自動合併", + "mrChipDrawerTitle": "合併請求 !{{mriid}}", + "mrChipDrawerDescription": "流水線狀態、審閱狀態和合並請求操作。", + "mrChipDrawerClose": "關閉合並請求狀態面板" +} diff --git a/apps/web/src/locales/zh-tw/integrations.json b/apps/web/src/locales/zh-tw/integrations.json new file mode 100644 index 0000000000..e4e5de7e31 --- /dev/null +++ b/apps/web/src/locales/zh-tw/integrations.json @@ -0,0 +1,91 @@ +{ + "addDetailsAboutThisChange": "新增有關此更改的詳細資訊…", + "allRepos": "全部儲存庫", + "anErrorOccurred": "發生錯誤", + "authenticated": "已驗證", + "authenticationFailed": "身分驗證失敗:{{error}}", + "authRequiredHeading": "需要 {{name}} 身分驗證", + "authRequiredInline": "需要 {{name}} 身分驗證。", + "branchPushedNotCreated": "分支已推送;未建立 {{shortName}}", + "branchWasPushedRetryCreation": "分支已推送;請重試建立 {{longName}}。", + "checkedRelative": "· 檢查於 {{relative}}", + "commit": "提交", + "commitChangedFiles_one": "提交 {{count}} 個已更改檔案", + "commitChangedFiles_other": "提交 {{count}} 個已更改檔案", + "commitChanges": "提交更改", + "commitChangesScoped": "提交更改;{{scopedRepo}}", + "commitsAheadAriaLabel": "領先 {{value}} 個提交", + "commitsBehindAriaLabel": "落後 {{value}} 個提交", + "committingEllipsis": "正在提交…", + "configureAUtilityAgentInSettings": "在設定中設定輔助代理程式以啟用 AI 產生", + "copiedConfigTo": "已將 {{label}} 設定複製到 {{targetName}}。", + "copyConfig": "複製設定", + "copyConfigSettingsOnly": "將 <4>{{sourceName}} 的 {{label}} 設定複製到另一個工作區。這將覆蓋目標工作區目前的 {{label}} 設定。不會複製監控與自動化。", + "copyConfigToAnotherWorkspace": "複製設定到另一個工作區", + "copyConfiguration": "複製 {{label}} 設定", + "copyConfigWithCredentials": "將 <4>{{sourceName}} 的 {{label}} 設定與認證資訊複製到另一個工作區。這將覆蓋目標工作區目前的 {{label}} 設定。不會複製監控與自動化。", + "copyingConfigTo": "正在將 {{label}} 設定複製到 {{targetName}}…", + "createAsDraft": "建立為草稿", + "createdSuccessfully": "{{longName}} 建立成功", + "createFailed": "建立 {{shortName}} 失敗", + "createLongName": "建立 {{longName}}", + "createPr": "建立 PR", + "createPrCommitsAhead_one": "建立 PR(領先 {{count}} 個提交)", + "createPrCommitsAhead_other": "建立 PR(領先 {{count}} 個提交)", + "createScoped": "建立 {{longName}};{{scopedRepo}}", + "createShortName": "建立 {{shortName}}", + "creatingEllipsis": "正在建立…", + "creatingFrom": "正在從 <4>{{displayBranch}} 建立 {{shortName}}", + "creatingFromInto": "正在從 <4>{{displayBranch}} → <6>{{baseBranch}} 建立 {{shortName}}", + "deleteSavedQueryNamed": "刪除已儲存的查詢「{{label}}」", + "describeYourChanges": "描述你的更改…", + "description": "描述", + "draftCreated": "草稿 {{shortName}} 已建立", + "enableIntegrationNamed": "啟用 {{name}}", + "enterCommitMessage": "輸入提交資訊…", + "failedToCopyConfig": "複製設定失敗:{{err}}", + "failedToDeleteSavedQuery": "刪除已儲存的查詢失敗", + "failedToSaveSavedQuery": "儲存查詢失敗", + "failedToUpdateDefaultView": "更新預設檢視失敗", + "filesChanged_one": "已更改 <0>{{count}} 個檔案", + "filesChanged_other": "已更改 <0>{{count}} 個檔案", + "forcePush": "強制推送", + "fromBranch": "來自 {{branch}}", + "generateCommitDescriptionWithAi": "用 AI 產生提交描述", + "generateCommitMessageWithAi": "用 AI 產生提交資訊", + "generateDescriptionWithAi": "用 AI 產生 {{shortName}} 描述", + "generateTitleWithAi": "用 AI 產生 {{shortName}} 標題", + "loading": "載入中…", + "longNameTitle": "{{longName}} 標題", + "longNameTitlePlaceholder": "{{longName}} 標題…", + "merge": "合併", + "noChangesToCommit": "沒有可提交的更改", + "noSavedQueriesYet": "暫無已儲存的查詢", + "ontoBranch": "到 {{branch}}", + "openVcsOptions": "開啟 VCS 選項", + "pickActionThenRepo": "先選操作,再選儲存庫", + "pickARepositoryForCommit": "選擇用於提交的儲存庫", + "pickARepositoryForCreatePr": "選擇用於建立 PR 的儲存庫", + "pickARepositoryForPush": "選擇用於推送的儲存庫", + "pickARepositoryForRebase": "選擇用於變基的儲存庫", + "pull": "拉取", + "push": "推送", + "pushCommitsToRemote_one": "推送 {{count}} 個提交到遠端", + "pushCommitsToRemote_other": "推送 {{count}} 個提交到遠端", + "rebase": "變基", + "rebaseOntoBranchBehind": "變基到 {{branch}}(落後 {{behind}})", + "reconnectProvider": "重新連線 {{name}}", + "repository": "儲存庫", + "retryShortName": "重試 {{shortName}}", + "saveCurrentQuery": "儲存目前查詢", + "savedQueries": "已儲存", + "savedQueryDefaultUpdateInProgress": "正在更新預設檢視…{{action}}", + "setSavedQueryAsDefaultView": "將 {{label}} 設為預設檢視", + "clearSavedQueryAsDefaultView": "取消將 {{label}} 設為預設檢視", + "selectAWorkspace": "選擇工作區…", + "shortNameCreated": "{{shortName}} 已建立", + "stageAllChangesBeforeCommitting": "提交前暫存所有更改", + "targetWorkspace": "目標工作區", + "unknownError": "未知錯誤", + "waitingForTheNextBackendHealth": "正在等待下一次後端健康檢查…" +} diff --git a/apps/web/src/locales/zh-tw/jira.json b/apps/web/src/locales/zh-tw/jira.json new file mode 100644 index 0000000000..b581004702 --- /dev/null +++ b/apps/web/src/locales/zh-tw/jira.json @@ -0,0 +1,212 @@ +{ + "aCredentialIsRequired": "必須提供認證資訊。", + "actions": "操作", + "active": "活動", + "addPreset": "新增預設", + "agentProfile": "代理程式設定檔", + "aJiraSiteUrlIsRequired": "必須提供 Jira 站點 URL。", + "anEmailAddressIsRequired": "必須填寫電子郵件地址。", + "apiToken": "API 權杖", + "apiTokenRecommended": "API 權杖(推薦)", + "apply": "應用", + "assignee": "經辦人", + "assigneeAnyone": "任何人", + "assigneeMe": "我", + "assigneeUnassigned": "未分配", + "atlassianCloud": "Atlassian Cloud", + "atlassianJqlHelp": "Atlassian JQL。監控會輪詢此查詢,併為每個新匹配的工單建立一個任務。", + "authenticationMethod": "身分驗證方式", + "availablePlaceholders": "可用佔位符:", + "browserSessionCookie": "瀏覽器工作階段 Cookie", + "builtIn": "內建", + "capOnOpenTasksCreatedBy": "限制此監控建立的進行中任務數量。留空表示不限制。達到上限後,新匹配項會推遲到下次輪詢。", + "checkFailed": "檢查失敗:{{error}}", + "checkingJiraStatus": "正在檢查 Jira 狀態…", + "checkNow": "立即檢查", + "clear": "清除{{lowerCase}}", + "clearFilters": "清除篩選條件", + "connectedAs": "已連線為 {{name}}", + "connectThisWorkspaceToAtlassianCloud": "將此工作區連線到 Atlassian Cloud 或自託管的 Jira Server / Data Center 實例。認證資訊會在伺服器端加密儲存,並僅用於所選工作區。", + "cookieExpired": "Cookie 已過期--請貼上新的 Cookie", + "cookieExpiresInDays_one": "Cookie 將在 {{count}} 天后過期", + "cookieExpiresInDays_other": "Cookie 將在 {{count}} 天后過期", + "cookieExpiresInHours_one": "Cookie 將在 {{count}} 小時後過期", + "cookieExpiresInHours_other": "Cookie 將在 {{count}} 小時後過期", + "cookieInstructions": "在 Atlassian 標籤頁中開啟開發者工具({{shortcut}})→\n應用程式標籤頁 → 儲存 → Cookie → {{host}} →\n找到名為「{{cookieName}}」的行(SSO 租戶中可能名為\n「{{ssoCookieName}}」)→ 複製「值」單元格 → 貼上到下方。\n請勿包含 Cookie 名稱或任何「=」符號,只貼上權杖值。", + "create": "建立", + "createATokenAt": "在 <2>{{url}} 建立權杖", + "createFailed": "建立失敗:{{error}}", + "createJiraWatcher": "建立 Jira 監控", + "createPatNoProfileLink": "在 Jira 個人資料 → 個人存取權杖中建立個人存取權杖。所需範圍:讀取和寫入。", + "createPatWithProfileLink": "在 Jira 個人資料(<1>{{url}})→ 個人存取權杖中建立個人存取權杖。所需範圍:讀取和寫入。", + "customJqlOverridePillFiltersAre": "自訂 JQL 覆蓋--篩選膠囊已暫停。", + "defaultProjectKeyOptional": "預設專案鍵(可選)", + "delete": "刪除", + "deleteFailed": "刪除失敗:{{error}}", + "deleteThisJiraWatcher": "刪除此 Jira 監控?", + "deleteView": "刪除檢視", + "description": "描述", + "details": "詳情", + "editJiraWatcher": "編輯 Jira 監控", + "editPrompt": "編輯提示詞", + "email": "電子郵件地址", + "enable": "啟用", + "enabled": "已啟用", + "enterAPositiveIntegerOrLeave": "請輸入正整數或留空。", + "executorProfile": "執行器設定檔", + "expiryUnknown": "過期時間未知", + "failedToLoadJiraConfig": "載入 Jira 設定失敗:{{error}}", + "failedToSaveTaskPresets": "儲存任務預設失敗", + "fallbackTicket": "Jira 工單", + "filterDisabled": "{{label}} 篩選已停用", + "foundNewTickets_one": "發現 {{count}} 個新工單,任務即將顯示。", + "foundNewTickets_other": "發現 {{count}} 個新工單,任務即將顯示。", + "hidePrompt": "隱藏提示詞", + "hideSessionTokenHelp": "隱藏工作階段權杖複製說明", + "hint": "提示", + "hintOptional": "提示(可選)", + "howOftenToReRunThe": "重新執行 JQL 的頻率。最短 60 秒,最長 3600 秒。", + "icon": "圖示", + "import": "匯入", + "importFromJira": "從 Jira 匯入", + "importFromJiraTicketUrlOr": "從 Jira 工單 URL 或鍵匯入", + "importJiraTicket": "匯入 Jira 工單", + "initialStepForNewTasks": "新任務的初始步驟。", + "instanceType": "實例型別", + "interval": "間隔", + "intervalMinutes_one": "{{count}} 分鐘", + "intervalMinutes_other": "{{count}} 分鐘", + "jiraConfigurationRemoved": "已移除 Jira 設定", + "jiraConfigurationSaved": "已儲存 Jira 設定", + "jiraIntegration": "Jira 整合", + "jiraWatcher": "Jira 監控", + "jiraWatchers": "Jira 監控", + "jiraWatchersDescription": "輪詢 JQL 查詢,併為每個新匹配的工單自動建立一個 Kandev 任務。", + "jqlError": "JQL 錯誤:{{error}}", + "jqlIsGeneratedFromThePills": "JQL 由上方篩選膠囊產生。編輯可覆蓋。", + "label": "標籤", + "lastPolled": "上次輪詢", + "loading": "載入中…", + "loading2": "載入中…", + "loadingTicket": "正在載入工單…", + "matchedTickets_one": "本頁匹配 {{count}} 個工單。", + "matchedTickets_other": "本頁匹配 {{count}} 個工單。", + "maxInFlightTasks": "最大進行中任務數", + "myOpenBugs": "我的未解決缺陷", + "never": "從不", + "newWatcher": "新建監控", + "noCap": "(不限制)", + "noDescription": "暫無描述。", + "noJiraWatchersConfiguredCreateOne": "尚未設定 Jira 監控。建立一個監控,即可根據 JQL 查詢自動建立任務。", + "noNewTicketsMatched": "沒有匹配的新工單。", + "noProjectsMatch": "無匹配專案。", + "noResults": "無結果", + "noStatusesForProject": "所選專案沒有可用狀態", + "noStatusesMatch": "無匹配狀態。", + "notConfiguredNotice": "尚未設定 Jira。<2>設定 Jira 以在此檢視工單。", + "noTicketsFound": "未找到工單。", + "noView": "無檢視", + "openInAtlassian": "在 Atlassian 中開啟", + "openJiraTicket": "開啟 Jira 工單", + "openTicketDetails": "開啟工單詳情", + "optionalFallsBackToStepDefault": "可選--留空時使用步驟預設值。", + "pageNumber": "第 {{page}} 頁", + "pasteAJiraTicketUrlOr": "貼上 Jira 工單 URL 或鍵(PROJ-123)", + "pasteApiTokenHere": "在此貼上 API 權杖", + "pasteATokenToTestTheConnection": "貼上權杖以測試連線", + "pastePersonalAccessTokenHere": "在此貼上個人存取權杖", + "pasteSessionTokenValue": "貼上 {{cookieName}} 值", + "pause": "暫停", + "paused": "已暫停", + "pauseOrResumePolling": "暫停或恢復輪詢。", + "personalAccessToken": "個人存取權杖", + "placeholderAssigneeDisplayName": "經辦人顯示名稱", + "placeholderIssueType": "問題型別", + "placeholderPriority": "優先順序", + "placeholderProjectKey": "專案鍵", + "placeholderReporterDisplayName": "報告者顯示名稱", + "placeholderStatusName": "狀態名稱", + "placeholderTicketDescription": "工單描述", + "placeholderTicketKey": "工單鍵", + "placeholderTicketSummary": "工單摘要", + "placeholderTicketUrl": "工單 URL", + "pollIntervalSeconds": "輪詢間隔(秒)", + "presetIconBug": "缺陷", + "presetIconCheck": "勾選", + "presetIconCode": "程式碼", + "presetIconEye": "眼睛", + "presetIconMessage": "訊息", + "presetIconSearch": "搜尋", + "presetIconSparkle": "閃光", + "presetIconTool": "工具", + "presetPlaceholderTicketDescription": "工單描述", + "presetPlaceholderTicketKey": "Jira 工單鍵", + "presetPlaceholderTicketSummary": "工單摘要", + "presetPlaceholderTicketUrl": "Jira 工單的 URL", + "presetPromptPlaceholderHelp": "輸入 {{token}} 可檢視可用佔位符。執行操作時會替換 <4>{{key}}、<7>{{url}}、<10>{{title}} 和 <13>{{description}}。", + "proj123OrPasteTicketUrl": "PROJ-123 或貼上工單 URL", + "project": "專案", + "promptFieldHelp": "為每個新工單傳送給代理程式的提示詞。輸入 {{token}} 可插入佔位符。", + "refresh": "重新整理", + "remove": "移除", + "removeConfiguration": "移除設定", + "removeJiraConfiguration": "移除 Jira 設定?", + "reporter": "報告者", + "resetCompleteDeletedTasks_one": "重置完成--已刪除 {{count}} 個任務;下次輪詢將重新匯入匹配項。", + "resetCompleteDeletedTasks_other": "重置完成--已刪除 {{count}} 個任務;下次輪詢將重新匯入匹配項。", + "resetCompleteNoTasksDeleted": "重置完成--下次輪詢將重新匯入匹配項。", + "resetFailed": "重置失敗:{{error}}", + "resetToPills": "重置為篩選膠囊", + "resetWatch": "重置監控", + "saveCurrentFiltersAs": "將目前篩選條件另存為…", + "saveCurrentFiltersAsAView": "將目前篩選條件儲存為檢視", + "saved": "已儲存", + "savedLeaveBlank": "(已儲存--留空可保持目前值)", + "saveFailed": "儲存失敗:{{error}}", + "saveView": "儲存檢視", + "saving": "正在儲存…", + "searchProjects": "搜尋專案…", + "searchStatuses": "搜尋狀態…", + "searchTicketKeyOrText": "搜尋工單鍵或文字…", + "selectProjectToFilterStatus": "選擇專案以按狀態篩選", + "selectWorkflow": "選擇工作流程", + "selectWorkspace": "選擇工作區", + "selfHostedJiraServerOrDataCenter": "自託管 Jira(Server 或 Data Center)。", + "serverDataCenter": "Server / Data Center", + "sessionTokenValue": "工作階段權杖值", + "showSessionTokenHelp": "顯示工作階段權杖複製說明", + "sitesHostedAt": "託管在 {{domain}} 的站點。", + "siteUrl": "站點 URL", + "sortCreated": "建立時間", + "sortLabelled": "排序:{{label}}", + "sortPriority": "優先順序", + "sortUpdated": "更新時間", + "startTask": "啟動任務", + "taskPresets": "任務預設", + "taskPresetsDescription": "從工單啟動任務時,在 {{route}} 上顯示的提示詞。", + "taskPresetsSaved": "已儲存任務預設", + "taskPrompt": "任務提示詞", + "tasksAreCreatedInThisWorkflow": "任務將在此工作流程中建立。", + "tasksCreatedByThisWatcherLand": "此監控建立的任務會進入所選工作區。", + "testConnection": "測試連線", + "testFailed": "失敗:{{error}}", + "testingConnection": "正在測試…", + "testingJql": "正在測試…", + "testJql": "測試 JQL", + "ticketOnThisPage_one": "本頁 {{count}} 個工單", + "ticketOnThisPage_other": "本頁 {{count}} 個工單", + "ticketsAcrossYourAtlassianProjects": "你 Atlassian 專案中的工單。", + "toggleRawJqlEditor": "切換原始 JQL 編輯器", + "unassigned": "未分配", + "update": "更新", + "updatedAgo": "· 更新於 {{time}}", + "updatedTime": "更新於 {{time}}", + "updateFailed": "更新失敗:{{error}}", + "watchDialogDescription": "輪詢 JQL 查詢,併為每個新匹配的工單自動建立一個 Kandev 任務。可以繫結儲存庫,讓每個任務在該程式碼庫中執行;也可以留空,讓任務在無儲存庫的情況下執行。", + "watcherCreated": "已建立監控", + "watcherDeleted": "已刪除監控", + "watcherUpdated": "已更新監控", + "workflow": "工作流程", + "workflowStep": "工作流程步驟", + "yourJiraSessionExpiredOrNeeds": "你的 Jira 工作階段已過期或需要二次驗證。請重新連線以檢視此工單。" +} diff --git a/apps/web/src/locales/zh-tw/kanban.json b/apps/web/src/locales/zh-tw/kanban.json new file mode 100644 index 0000000000..730d08b804 --- /dev/null +++ b/apps/web/src/locales/zh-tw/kanban.json @@ -0,0 +1,95 @@ +{ + "addRepositoryPullRequestSessionParent": "在清單行中新增儲存庫、提取要求、工作階段、父任務與審閱上下文。", + "addTask": "新增任務", + "allRepositories": "全部儲存庫", + "allWorkflows": "全部工作流程", + "allWorkflowsTitleCase": "全部工作流程", + "allWorkspaces": "所有工作區", + "approvalRequired": "需要審批", + "archive": "歸檔", + "archiveCount_one": "歸檔 {{count}} 項", + "archiveCount_other": "歸檔 {{count}} 項", + "archiveTask": "歸檔任務", + "autoStart": "自動啟動", + "boardNavigator": "看板導覽", + "cannotMoveTasksFromDifferentWorkflows": "無法移動來自不同工作流程的任務", + "changesRequested": "已請求更改", + "chooseHowTasksAreOrderedIn": "選擇此清單中任務的排序方式。", + "chooseStep": "{{stepLabel}}。選擇步驟。", + "chooseWorkflowAndStepShownOn": "選擇看板上顯示的工作流程與步驟。", + "chooseWorkflowOrStep": "{{name}},{{stepLabel}}。選擇工作流程或步驟。", + "clearSelection": "清除選擇", + "closePreview": "關閉預覽", + "current": "目前", + "delete": "刪除", + "deleteCount_one": "刪除 {{count}} 項", + "deleteCount_other": "刪除 {{count}} 項", + "deleteTask": "刪除任務", + "detachFromParent": "從父任務分離", + "dismiss": "關閉", + "displayOptions": "顯示選項", + "dropOnAColumnToMove": "拖放到列上以移動任務", + "githubIssue": "GitHub 議題", + "githubPullRequest": "GitHub 提取要求", + "gitlabMergeRequest": "GitLab 合併請求", + "goToTask": "轉到任務", + "group": "分組", + "groupTasksIntoSectionsByState": "按狀態、工作流程、儲存庫或無分組將任務歸入分割槽。", + "healthIssues": "健康問題", + "improveKandev": "改進 Kandev", + "jiraTicket": "Jira 工單", + "kanban": "看板", + "kandevHome": "Kandev 主頁", + "linearIssue": "Linear 議題", + "link": "連結", + "list": "清單", + "listRows": "清單行", + "loadingRepositories": "正在載入儲存庫…", + "menu": "選單", + "moreOptions": "更多選項", + "moveTo": "移動到", + "multiSelect": "多選", + "nextCapacity": "下一容量", + "nextStep": "下一步", + "noRepositories": "無儲存庫", + "noSteps": "無步驟", + "noStepsConfigured": "未設定步驟。", + "noStepsConfiguredChooseAnotherWorkflow": "未設定步驟。請選擇其他工作流程,或在設定中新增步驟。", + "noTasks": "無任務", + "openMenu": "開啟選單", + "openMenuWithStatus": "{{description}} 開啟選單", + "openPreviewOnClick": "點選時開啟預覽", + "overWipLimit": "超出 WIP 限制", + "pipeline": "流水線", + "previewPanel": "預覽面板", + "previousStep": "上一步", + "queuedForStep": "已排隊等待 {{step}}", + "repository": "儲存庫", + "searchPlaceholder": "搜尋…", + "searchSection": "搜尋", + "searchTasks": "搜尋任務", + "searchTasksPlaceholder": "搜尋任務…", + "selectRepository": "選擇儲存庫", + "selectTask": "選擇任務 {{title}}", + "selectWorkflow": "選擇工作流程", + "sendToWorkflow": "傳送到工作流程", + "sentryIssue": "Sentry 議題", + "sessionCount_one": "{{count}} 個工作階段", + "sessionCount_other": "{{count}} 個工作階段", + "showArchived": "顯示已歸檔", + "showTaskDetails": "顯示任務詳情", + "sort": "排序", + "step": "步驟", + "subtaskOf": "子任務,父任務為", + "taskList": "任務清單", + "tasksOverWipLimit": "{{label}} 個任務,超出 WIP 限制", + "theseOptionsAffectThisTaskList": "這些選項僅影響此任務清單。", + "utilities": "實用工具", + "view": "檢視", + "whenEnabledClickingATaskOpens": "啟用後,點選任務會開啟預覽面板;停用後,點選會直接進入工作階段。", + "wipTaskCount": "{{label}} 個任務", + "workflow": "工作流程", + "workflowStepFallback": "工作流程步驟 {{stepId}}", + "columns": "列", + "columnsForWorkflow": "{{name}} 的列" +} diff --git a/apps/web/src/locales/zh-tw/linear.json b/apps/web/src/locales/zh-tw/linear.json new file mode 100644 index 0000000000..a3fbbe8904 --- /dev/null +++ b/apps/web/src/locales/zh-tw/linear.json @@ -0,0 +1,174 @@ +{ + "actions": "操作", + "active": "活動", + "agentProfile": "代理程式設定檔", + "allTeams": "全部團隊", + "anApiKeyIsRequired": "必須提供 API 金鑰。", + "any": "(任意)", + "anyAssignee": "任意經辦人", + "anyTeam": "(任意團隊)", + "apiKey": "API 金鑰", + "assignedToMe": "分配給我", + "assignee": "經辦人", + "assigneeHelp": "按議題分配給誰進行篩選。", + "availablePlaceholders": "可用佔位符:", + "checkFailed": "檢查失敗:{{error}}", + "checkNow": "立即檢查", + "chooseATeam": "選擇團隊", + "configurationRemoved": "已移除 Linear 設定", + "configurationSaved": "已儲存 Linear 設定", + "connectedAs": "已連線為 {{name}}", + "connectedAsWithOrg": "已連線為 {{name}}({{org}})", + "create": "建立", + "createFailed": "建立失敗:{{error}}", + "createLinearWatcher": "建立 Linear 監控", + "createPersonalApiKeyAt": "建立個人 API 金鑰:", + "creator": "建立者", + "creatorHelp": "匹配由某位使用者建立的議題。", + "defaultTeamOptional": "預設團隊(可選)", + "delete": "刪除", + "deleteFailed": "刪除失敗:{{error}}", + "deleteThisLinearWatcher": "刪除此 Linear 監控?", + "description": "描述", + "details": "詳情", + "dispatchOrder": "分派順序", + "dispatchOrderHelp": "達到進行中任務上限後,將按此順序分派議題,以便最重要的議題優先執行。", + "editLinearWatcher": "編輯 Linear 監控", + "enable": "啟用", + "enabled": "已啟用", + "enabledHelp": "暫停或恢復輪詢。", + "eng123OrPasteIssueUrl": "ENG-123 或貼上議題 URL", + "enterAPositiveIntegerOrBlank": "請輸入正整數或留空。", + "estimateMax": "最大估算值", + "estimateMaxHelp": "點數上限(可選)。", + "estimateMaxPlaceholder": "例如 5", + "estimateMin": "最小估算值", + "estimateMinHelp": "點數下限(可選)。", + "estimateMinPlaceholder": "例如 1", + "executorProfile": "執行器設定檔", + "failedToLoadConfig": "載入 Linear 設定失敗:{{error}}", + "fallbackIssue": "Linear 議題", + "fallsBackToStepDefault": "可選--留空時使用步驟預設值。", + "filter": "篩選條件", + "foundNewIssues_one": "發現 {{count}} 個新議題,任務即將顯示。", + "foundNewIssues_other": "發現 {{count}} 個新議題,任務即將顯示。", + "import": "匯入", + "importFromLinear": "從 Linear 匯入", + "importFromLinearIssueUrlOr": "從 Linear 議題 URL 或識別符號匯入", + "importLinearIssue": "匯入 Linear 議題", + "integrationDisabled": "Linear 整合已停用。", + "interval": "間隔", + "intervalMinutes_one": "{{count}} 分鐘", + "intervalMinutes_other": "{{count}} 分鐘", + "labels": "標籤", + "labelsHelp": "單擊可切換。匹配包含任意一個所選標籤的議題。", + "labelsHelpNoTeam": "請先選擇團隊,再選擇具體標籤。", + "lastPolled": "上次輪詢", + "linearIntegration": "Linear 整合", + "linearIntegrationDescription": "使用個人 API 金鑰將此工作區連線到 Linear。認證資訊會在伺服器端加密儲存,並僅用於所選工作區。", + "linearWatcher": "Linear 監控", + "linearWatchers": "Linear 監控", + "linearWatchersDescription": "輪詢 Linear 篩選條件,併為每個新匹配的議題自動建立一個 Kandev 任務。", + "loading": "載入中…", + "loadingEllipsis": "正在載入…", + "loadingIssue": "正在載入議題…", + "loadingIssues": "正在載入議題…", + "loadingLabels": "正在載入標籤…", + "loadingStates": "正在載入狀態…", + "loadingTeams": "正在載入團隊…", + "maxInflightTasks": "最大進行中任務數", + "maxInflightTasksHelp": "限制此監控建立的進行中任務數量。留空表示不限制。達到上限後,新匹配項會推遲到下次輪詢。", + "me": "我", + "never": "從不", + "newWatcher": "新建監控", + "noCap": "(不限制)", + "noDefault": "無預設值", + "noDescription": "無描述。", + "noIssuesMatchYourFilters": "沒有與篩選條件匹配的議題。", + "noLabelsAvailableForThisTeam": "此團隊沒有可用標籤。", + "noLinearWatchersConfiguredCreateOne": "尚未設定 Linear 監控。建立一個監控後,即可根據篩選的議題自動建立任務。", + "noNewIssuesMatched": "沒有匹配的新議題。", + "noResults": "無結果", + "notConfiguredNotice": "未設定 Linear。<2>設定 Linear 後即可在此檢視你的議題。", + "noWorkflowStatesAvailable": "沒有可用的工作流程狀態。", + "openInLinear": "在 Linear 中開啟", + "openIssueDetails": "開啟議題詳情", + "openLinearIssue": "開啟 Linear 議題", + "page": "頁面", + "pasteALinearIssueUrlOr": "貼上 Linear 議題 URL 或識別符號(ENG-123)", + "pasteAnApiKeyToTest": "貼上 API 金鑰以測試連線", + "pause": "暫停", + "paused": "已暫停", + "pickATeamFirst": "請先選擇團隊", + "placeholderAssigneeDisplayName": "經辦人顯示名稱", + "placeholderCreatorDisplayName": "議題建立者顯示名稱", + "placeholderIssueDescription": "議題描述正文", + "placeholderIssueIdentifier": "議題識別符號", + "placeholderIssueTitle": "議題標題", + "placeholderIssueUrl": "Linear 議題 URL", + "placeholderPriorityLabel": "優先順序標籤", + "placeholderTeamKey": "團隊鍵", + "placeholderWorkflowStateName": "工作流程狀態名稱", + "pollIntervalHelp": "重新執行搜尋的頻率。最短 60 秒,最長 3600 秒。", + "pollIntervalSeconds": "輪詢間隔(秒)", + "priority": "優先順序", + "priorityHelp": "單擊可切換。匹配任意一個所選優先順序的議題。", + "priorityHigh": "高", + "priorityLow": "低", + "priorityMedium": "中", + "priorityNone": "無優先順序", + "priorityUrgent": "緊急", + "promptFieldHelp": "為每個新議題傳送給代理程式的提示詞。輸入 {{token}} 可插入佔位符。", + "query": "查詢", + "queryHelp": "在標題和描述中做自由文字匹配(可選)。", + "queryPlaceholder": "身分驗證缺陷", + "reEnableItInSettings": "在設定中重新啟用", + "refresh": "重新整理", + "removeConfiguration": "移除設定", + "removeLinearConfigurationConfirm": "移除 Linear 設定?", + "resetCompleteDeletedTasks_one": "重置完成--已刪除 {{count}} 個任務;下次輪詢將重新匯入匹配項。", + "resetCompleteDeletedTasks_other": "重置完成--已刪除 {{count}} 個任務;下次輪詢將重新匯入匹配項。", + "resetCompleteNoTasksDeleted": "重置完成--下次輪詢將重新匯入匹配項。", + "resetFailed": "重置失敗:{{error}}", + "resetWatch": "重置監控", + "savedLeaveBlank": "(已儲存--留空可保持目前值)", + "saveFailed": "儲存失敗:{{error}}", + "saving": "正在儲存…", + "searchByIdTitleOrDescription": "按 ID、標題或描述搜尋", + "selectWorkflow": "選擇工作流程", + "selectWorkspace": "選擇工作區", + "sortCreatedAsc": "建立時間(最早優先)", + "sortCreatedDesc": "建立時間(最新優先)", + "sortDefault": "預設(Linear 順序)", + "sortPriorityAsc": "優先順序(從低到高)", + "sortPriorityDesc": "優先順序(從高到低)", + "sortUpdatedAsc": "更新時間(最早更新優先)", + "sortUpdatedDesc": "更新時間(最近更新優先)", + "startTask": "開始任務", + "states": "狀態", + "statesHelp": "單擊狀態可切換。未選擇時匹配團隊中的所有狀態。", + "statesHelpNoTeam": "請先選擇團隊,再選擇具體工作流程狀態。", + "taskPrompt": "任務提示詞", + "team": "團隊", + "teamHelp": "將匹配範圍限制為一個團隊。", + "testConnection": "測試連線", + "testFailed": "失敗:{{error}}", + "testing": "正在測試…", + "unassigned": "未分配", + "unknownAccount": "未知帳戶", + "unknownError": "未知錯誤", + "update": "更新", + "updatedAgo": "· 更新於 {{time}}", + "updatedTime": "更新於 {{time}}", + "updateFailed": "更新失敗:{{error}}", + "watchDialogDescription": "使用結構化篩選條件輪詢 Linear,併為每個新匹配的議題自動建立一個 Kandev 任務。可以繫結儲存庫,讓每個任務在該程式碼庫中執行;也可以留空,讓任務在無儲存庫的情況下執行。", + "watcherCreated": "已建立監控", + "watcherDeleted": "已刪除監控", + "watcherUpdated": "已更新監控", + "workflow": "工作流程", + "workflowHelp": "任務將在此工作流程中建立。", + "workflowStep": "工作流程步驟", + "workflowStepHelp": "新任務的初始步驟。", + "workspaceHelp": "此監控建立的任務會進入所選工作區。", + "yourLinearApiKeyIsInvalid": "你的 Linear API 金鑰無效或已吊銷。請重新連線以檢視此議題。" +} diff --git a/apps/web/src/locales/zh-tw/lsp.json b/apps/web/src/locales/zh-tw/lsp.json new file mode 100644 index 0000000000..cff601b297 --- /dev/null +++ b/apps/web/src/locales/zh-tw/lsp.json @@ -0,0 +1,78 @@ +{ + "activeWorkItems_one": "{{count}} 個工作項正在進行", + "activeWorkItems_other": "{{count}} 個工作項正在進行", + "applicationStatusBar": "應用狀態列", + "applicationStatusBarDescription": "在可重新排序的應用狀態列中顯示 LSP 狀態。如果該狀態列已停用或目前為觸控佈局,則改用編輯器工具欄。", + "autoInstallUnsupported": "此任務主機不支援自動安裝", + "chooseStatusLocation": "選擇 LSP 啟動、索引和連線詳情的顯示位置。", + "closeLanguageServerStatus": "關閉語言伺服器狀態", + "connected": "已連線", + "connecting": "正在連線", + "connection": "連線", + "connectionAndProjectAnalysis": "連線和專案分析", + "connectionClosed": "連線已關閉", + "crossFileDefinitionsMayBeIncomplete": "此工作進行期間,跨檔案定義和引用可能不完整。", + "crossFileFeaturesAfterInitialization": "初始化完成後即可使用跨檔案功能。", + "crossFileFeaturesUnavailable": "初始化完成前,跨檔案功能仍不可用。", + "editorToolbar": "編輯器工具欄", + "editorToolbarDescription": "在目前檔案的編輯器操作旁顯示 LSP 狀態。", + "elapsed": "已用時間 {{elapsed}}", + "elapsedDurationParts": "{{major}} {{minor}}", + "elapsedHours_one": "{{value}} 小時", + "elapsedHours_other": "{{value}} 小時", + "elapsedMinutes_one": "{{value}} 分鐘", + "elapsedMinutes_other": "{{value}} 分鐘", + "elapsedSeconds_one": "{{value}} 秒", + "elapsedSeconds_other": "{{value}} 秒", + "enableAutoInstall": "在「設定」→「編輯器」中啟用自動安裝。", + "error": "錯誤", + "initializationLongRunning": "初始化所需時間比平常更長", + "installFailed": "安裝失敗", + "installKotlinLsp": "請在任務主機上安裝 kotlin-lsp,然後重啟任務。", + "installLanguageServerManually": "請在任務主機上手動安裝語言伺服器,然後重試。", + "installingLanguageServer": "正在安裝語言伺服器", + "kotlinInitializationGuidance": "Kotlin LSP 可能正在匯入 Gradle 專案。初始化完成前,跨檔案功能仍不可用。", + "languageServer": "語言伺服器", + "languageServerConnection": "語言伺服器:{{summary}}", + "languageServerDescription": "{{language}} 語言伺服器:{{summary}}", + "languageServerError": "LSP 錯誤", + "languageServerExited": "語言伺服器已退出", + "languageServerFailedToStart": "語言伺服器啟動失敗", + "languageServerIsOff": "語言伺服器已關閉", + "languageServerNotFound": "未找到語言伺服器", + "languageServerOpenStatus": "語言伺服器:{{summary}}。開啟狀態", + "languageServerStatus": "語言伺服器狀態", + "languageServerUnavailable": "語言伺服器不可用", + "noActiveWorkspace": "沒有活動工作區", + "noBackgroundWorkReported": "未報告後台工作", + "noBackgroundWorkReportedDescription": "語言伺服器尚未報告正在進行的專案分析。跨檔案結果可能仍在準備中。", + "noPercentage": "伺服器未提供百分比。", + "off": "關閉", + "openStatus": "{{description}}。開啟狀態", + "progressAppearsDuringInitialization": "語言伺服器開始初始化後會顯示專案進度。", + "progressPercentage": "{{title}}:{{percentage}}%", + "progressUnavailable": "專案進度不可用", + "progressUnavailableDescription": "請重試連線以接收專案進度。", + "progressWillClear": "語言伺服器停止後,專案進度將被清除。", + "projectAnalysis": "專案分析", + "reportedWorkDisclaimer": "這僅確認已報告的工作項完成,並不表示整個專案已完成索引。", + "retryLanguageServer": "重試語言伺服器", + "serverProcessStarted": "伺服器處理程序已啟動", + "serverStillInitializing": "伺服器處理程序仍在執行,Kandev 正在等待 LSP 初始化。", + "serverWorkFinished": "伺服器報告的工作已完成", + "startLanguageServer": "啟動語言伺服器", + "startServerForProgress": "啟動語言伺服器以接收專案進度。", + "startingLanguageServer": "正在啟動語言伺服器", + "statusLocation": "狀態位置", + "statusLocationAria": "LSP 狀態位置", + "stopLanguageServer": "停止語言伺服器", + "stopping": "正在停止", + "stoppingLanguageServer": "正在停止語言伺服器", + "taskExecutorUnsupported": "此任務執行器不支援語言伺服器", + "thisMayTakeAMoment": "這可能需要一點時間…", + "tooManyLanguageServers": "活動的語言伺服器過多", + "unavailable": "不可用", + "waitingForInitializeResponse": "正在等待語言伺服器回應 LSP 初始化請求。", + "waitingForLanguageServer": "正在等待語言伺服器", + "webSocketError": "WebSocket 錯誤" +} diff --git a/apps/web/src/locales/zh-tw/office.json b/apps/web/src/locales/zh-tw/office.json new file mode 100644 index 0000000000..d93ce1d5f5 --- /dev/null +++ b/apps/web/src/locales/zh-tw/office.json @@ -0,0 +1,898 @@ +{ + "aCronScheduleExample": "Cron 計劃(例如 <1>{{cron}} 表示工作日上午 9 點)", + "actionOnExceed": "超出時的操作", + "actions": "操作", + "actionsByAgentsAndUsersAre": "代理程式與使用者的操作會記錄在此。", + "actionValue": "操作:{{action}}", + "activeAgents": "活動代理程式", + "activeSessionCount_one": "{{count}} 個活動工作階段", + "activeSessionCount_other": "{{count}} 個活動工作階段", + "activity": "活動", + "activityFilterAll": "全部型別", + "activityFilterBudget": "預算", + "activityFilterTask": "任務", + "activityStatusChangedTo": "狀態已更改為 {{status}}", + "adapter": "介面卡", + "add": "新增", + "addADescription": "新增描述…", + "addApprover": "新增審批人", + "addApprovers": "新增審批人", + "addAsLocalPath": "新增為本地路徑", + "addAsRemoteUrl": "新增為遠端 URL", + "addATitleToCreateATask": "新增標題以建立任務", + "addChannel": "新增渠道", + "addCustom": "新增自訂", + "addDescription": "新增描述…", + "addPolicy": "新增策略", + "addProvider": "新增提供者…", + "addRepository": "新增儲存庫", + "addReviewer": "新增審閱人", + "addReviewers": "新增審閱人", + "addToOrder": "加入順序", + "advanced": "高階", + "agent": "代理程式", + "agentAutoPaused": "代理程式已自動暫停", + "agentAwaitingApproval": "代理程式等待審批", + "agentConfigurationUpdated": "代理程式設定檔已更新", + "agentCount_one": "{{count}} 個代理程式", + "agentCount_other": "{{count}} 個代理程式", + "agentCreated": "代理程式已建立", + "agentCreatedSkillsMustBeApproved": "代理程式建立的技能須經批准後才能啟用", + "agentError": "代理程式錯誤", + "agentFinishedWorkspaceReadyForReview": "代理程式已完成;工作區可供審閱", + "agentIsActivelyWorkingOnThis": "代理程式正在處理此任務", + "agentIsWorkingMessageWillBe": "代理程式工作中…訊息將排隊", + "agentName": "代理程式名稱", + "agentNotFound": "未找到代理程式。", + "agentRecentTasks": "最近任務", + "agentRunActivity": "執行活動", + "agentRunFailed": "代理程式執行失敗", + "agents": "代理程式", + "agentSections": "代理程式分割槽", + "agentsEnabled": "已啟用代理程式", + "agentSessionEnded": "代理程式工作階段已結束", + "agentsInheritThisTierUnlessThey": "代理程式繼承此層級,除非自行覆蓋。每個路由提供者都必須將此層級對映到一個模型。", + "agentsThatHaveThisSkillAssigned": "已分配此技能的代理程式", + "agentSuccessRate": "成功率", + "agentThatPicksUpRunsTriggered": "接收此例行程式觸發執行的代理程式", + "agentTierProfiles": "代理程式層級設定", + "agentUpdated": "代理程式已更新", + "agentWillUseThisStarterTask": "{{name}} 將使用此啟動任務檢查儲存庫、組建團隊,並提出下一步工作供審批。", + "agentWorkedForSeconds": "{{agent}} 工作了 {{seconds}} 秒", + "agentWorkedForSecondsRanCommands_one": "{{agent}} 工作了 {{seconds}} 秒 · 執行了 {{count}} 條命令", + "agentWorkedForSecondsRanCommands_other": "{{agent}} 工作了 {{seconds}} 秒 · 執行了 {{count}} 條命令", + "agentWorkingForSeconds": "{{agent}} 工作中({{seconds}} 秒)", + "agentWorkingForSecondsRanCommands_one": "{{agent}} 工作中({{seconds}} 秒)· 已執行 {{count}} 條命令", + "agentWorkingForSecondsRanCommands_other": "{{agent}} 工作中({{seconds}} 秒)· 已執行 {{count}} 條命令", + "alertPercent": "告警:{{percent}}%", + "alertThreshold": "告警閾值(%)", + "all": "全部", + "allClear": "一切正常。", + "allMemoryCleared": "全部記憶已清除", + "allProvidersHealthy": "所有提供者均正常。", + "alwaysCreate": "始終建立", + "aNameEGDailyStandup": "名稱(例如「每日站會」)", + "aNameForYourWorkspaceYou": "工作區名稱。之後可以更改。", + "appearance": "外觀", + "appearanceSettingsSaved": "外觀設定已儲存", + "applying": "正在應用…", + "applyOnDiskYamlFilesTo": "將磁碟上的 YAML 檔案應用到資料庫。", + "approval": "審批", + "approvalsAlertsAndItemsNeedingYour": "審批、告警以及需要你關注的事項會顯示在此。", + "approve": "批准", + "approved": "已批准", + "approver": "審批人", + "asc": "升序", + "aSkillWithThisNameAlready": "已存在同名技能", + "assembledPrompt": "組裝後的提示詞", + "assignATaskToThisAgent": "向此代理程式分配任務以檢視執行歷史。", + "assignee": "負責人", + "aTaskTitleDescriptionWhatThe": "任務標題 + 描述(代理程式每次執行應執行的內容)", + "aUniqueNameForThisAgent": "此代理程式的唯一名稱(例如 CEO、前端工作者)", + "autoCommitAfterApproval": "批准後自動提交", + "automaticProviderFallback": "提供者自動備援", + "backToTasks": "返回任務", + "barTotal": "{{label}}:{{total}}", + "beingWorkedOn": "處理中", + "beyondThisCountMissedTicksAre": "超過此數量後,錯過的觸發會被丟棄(預設 25)", + "blockedActionRequired": "已阻塞;需要操作", + "blockNewTasks": "阻止新任務", + "boardView": "看板檢視", + "botTokenChatId": "{\"bot_token\": \"...\", \"chat_id\": \"...\"}", + "branch": "分支", + "browseSkillsSh": "瀏覽 skills.sh", + "budgetActionBlockNewTasks": "阻止新任務", + "budgetActionNotifyOnly": "僅通知", + "budgetActionPauseAgent": "暫停代理程式", + "budgetAlert": "預算告警", + "budgetAmount": "預算:{{amount}}", + "budgetCapConcurrencyAndExecutionEnvironment": "預算上限、併發與執行環境。", + "budgetLimitsConcurrencyAndExecutionEnvironment": "預算限制、併發與執行環境。", + "budgetPeriodMonthly": "每月", + "budgetPeriodTotal": "總計", + "budgetPolicies": "預算策略", + "budgetPolicyCreated": "預算策略已建立", + "budgetPolicyDeleted": "預算策略已刪除", + "budgets": "預算", + "bundledWithKandev": "隨 Kandev 捆綁", + "bundledWithKandevVersion": "隨 Kandev v{{version}} 捆綁", + "byAgent": "按代理程式", + "byModel": "按模型", + "byProject": "按專案", + "byProvider": "按提供者", + "cached": "已快取:", + "cachedTokens": "快取權杖", + "cancelReasonAssigneeChanged": "負責人已更改", + "cancelReasonReviewParticipantChanged": "審閱人已更改", + "cancelReasonTaskNotFound": "未找到任務", + "cancelReasonTaskTerminal": "任務已完成", + "capabilities": "能力", + "capabilityCreateAgent": "建立代理程式", + "capabilityCreateSubtask": "建立子任務", + "capabilityDeleteSkills": "刪除技能", + "capabilityListSkills": "列出技能", + "capabilityModifyAgents": "修改代理程式", + "capabilityPostComment": "發表評論", + "capabilityReadMemory": "讀取記憶", + "capabilityRequestApproval": "請求審批", + "capabilitySpawnAgentRun": "啟動執行", + "capabilityUpdateTaskStatus": "更新任務狀態", + "capabilityWriteMemory": "寫入記憶", + "catchUpMax": "追趕上限", + "catchUpPolicy": "追趕策略", + "ceoManagesOtherAgentsWorkersExecute": "CEO 管理其他代理程式,工作者執行任務", + "changesPushed": "更改已推送", + "channelAdded": "渠道已新增", + "channelDeleted": "渠道已刪除", + "chooseTheProfileFamilyOfficeShould": "選擇辦公室在代理程式被分配 Frontier、Balanced 或 Economy 工作時使用的設定系列。", + "clearAll": "全部清除", + "clearAllMemory": "清除全部記憶?", + "clearFilters": "清除篩選", + "cliAgentProfile": "CLI 代理程式設定檔", + "clickToOpenRoutines": "點選開啟例行程式。", + "clone": "複製", + "cloneFailed": "複製失敗", + "cloning": "正在複製…", + "coalesce": "合併", + "coalesceIfActive": "活動時合併", + "collapse": "摺疊", + "color": "顏色", + "comingSoonOnlyLocalIsSupported": "即將推出;目前僅支援本地。", + "commitMessage": "提交說明", + "compareWorkspaceDatabaseWithOnDisk": "比較工作區資料庫與磁碟上的設定檔。", + "concurrency": "併發", + "concurrencyPolicy": "併發策略", + "configJson": "設定(JSON)", + "configuration": "設定", + "configure": "設定", + "configured": "已設定", + "configuredRouteTooltip": "來自工作區 + 代理程式覆蓋的主路由。", + "confirmTheDetailsBelowEverythingCan": "請確認以下詳情。之後均可更改。", + "connectAGitRepositoryToVersion": "連線 git 儲存庫以版本控制此工作區設定。", + "controlWhatThisAgentIsAllowed": "控制此代理程式允許執行的操作。預設值基於代理程式角色。", + "coordinatorAgent": "協調代理程式", + "copied": "已複製!", + "copySlug": "複製 slug", + "cost": "費用", + "costs": "費用", + "countAvailable_one": "{{count}} 個可用", + "countAvailable_other": "{{count}} 個可用", + "countDone_one": "{{count}} 個已完成", + "countDone_other": "{{count}} 個已完成", + "countInProgress_one": "{{count}} 個進行中", + "countInProgress_other": "{{count}} 個進行中", + "countLive_one": "{{count}} 個執行中", + "countLive_other": "{{count}} 個執行中", + "cpuCores": "CPU 核心", + "create": "建立", + "createACeoAgentToStart": "建立 CEO 代理程式,開始在各專案間編排工作。", + "createAgent": "建立代理程式", + "createAgentsAndSetTheirReporting": "建立代理程式並設定彙報結構以檢視組織圖。", + "createANewCliProfile": "+ 建立新的 CLI 設定", + "createATaskOrLetAgents": "建立任務,或讓代理程式從例行程式產生。", + "createLaunch": "建立並啟動", + "createNewSkill": "建立新技能", + "createOneInline": "內聯建立一個", + "createPolicy": "建立策略", + "createProject": "建立專案", + "createRoutine": "建立例行程式", + "createSkill": "建立技能", + "createTask": "建立任務", + "createYourCoordinatorAgent": "建立協調代理程式", + "createYourFirstProject": "建立第一個專案", + "creating": "正在建立…", + "cron": "Cron", + "cronExpression": "Cron 表示式", + "cronExpressionTitleCase": "Cron 表示式", + "current": "目前", + "currentlyMapsTo": "目前對映到", + "currentRouteTooltip": "反映下次啟動的選擇。進行中的工作階段詳情見各次執行。", + "currentUtilizationOfSubscriptionRateLimit": "訂閱速率限制視窗的目前利用率。", + "dailyDepUpdate": "每日依賴更新", + "dailySuccessRate": "每日成功率", + "dangerZone": "危險區域", + "dashboard": "儀表盤", + "date": "日期", + "defaultFor": "預設用於", + "defaultForRole": "{{role}} 的預設值", + "defaultTier": "預設層級", + "defaultWorkspace": "預設工作區", + "degraded": "降級", + "delete": "刪除", + "deleteChannel": "刪除渠道", + "deleted": "已刪除 {{filename}}", + "deleteEntry": "刪除條目", + "deletePolicy": "刪除策略", + "deleteProject": "刪除專案", + "deleteWorkspace": "刪除工作區", + "deleteWorkspaceSummary": "將永久刪除 {{agents}} 個代理程式、{{tasks}} 個任務、{{skills}} 個技能以及工作區資料夾。", + "deleting": "正在刪除…", + "desc": "降序", + "description": "描述", + "directoryPath": "目錄路徑", + "dirty": "有未提交更改", + "discardDraft": "丟棄草稿", + "discord": "Discord", + "dockerImage": "Docker 映象", + "dockerImageExample": "例如 node:20-slim", + "dockerImageWithExample": "Docker 映象(例如 node:20-slim)", + "duration": "時長", + "editable": "可編輯", + "editOrgChartFromTheAgents": "從代理程式清單編輯組織圖。", + "editRoutine": "編輯例行程式", + "effectiveActionsThisAgentCanRequest": "此代理程式在辦公室執行期間可請求的有效操作。", + "eGCodeReview": "例如 code-review", + "eGFrontendWorker": "例如 Frontend Worker", + "enqueueMissedWithCap": "將錯過的加入佇列(有上限)", + "entityId": "實體 ID", + "events": "事件", + "exceeded": "已超出", + "executor": "執行器", + "executorConfiguration": "執行器設定檔", + "executorConfigurationSaved": "執行器設定檔已儲存", + "executorPreference": "執行器偏好", + "executorType": "執行器型別", + "existingConfigurationFound": "發現現有設定", + "expand": "展開", + "export": "匯出", + "exportedToFilesystem": "已匯出到檔案系統", + "exportFilesCount_one": "匯出 {{count}} 個檔案", + "exportFilesCount_other": "匯出 {{count}} 個檔案", + "exportSelectionSummary": "{{workspace}} 匯出 · 已選 {{selected}} / {{total}} 個檔案", + "exportSvg": "匯出 SVG", + "exportToFilesystem": "匯出到檔案系統", + "failed": "失敗", + "failedToAddChannel": "新增渠道失敗", + "failedToAddRepository": "新增儲存庫失敗", + "failedToApprove": "批准失敗", + "failedToClearMemory": "清除記憶失敗", + "failedToCompleteSetup": "完成設定失敗", + "failedToCreateAgent": "建立代理程式失敗", + "failedToCreateBudgetPolicy": "建立預算策略失敗", + "failedToCreateFile": "建立檔案失敗", + "failedToCreateIssue": "建立議題失敗", + "failedToCreateProject": "建立專案失敗", + "failedToCreateRoutine": "建立例行程式失敗", + "failedToCreateSkill": "建立技能失敗", + "failedToDelete": "刪除失敗", + "failedToDeleteBudgetPolicy": "刪除預算策略失敗", + "failedToDeleteChannel": "刪除渠道失敗", + "failedToDeleteMemoryEntry": "刪除記憶條目失敗", + "failedToDeleteProject": "刪除專案失敗", + "failedToDeleteRoutine": "刪除例行程式失敗", + "failedToDeleteWorkspace": "刪除工作區失敗", + "failedToExportToFilesystem": "匯出到檔案系統失敗", + "failedToImportFromFilesystem": "從檔案系統匯入失敗", + "failedToImportSettings": "匯入設定失敗", + "failedToImportSkill": "匯入技能失敗:{{msg}}", + "failedToLoad": "載入失敗", + "failedToLoadActivity": "載入活動失敗", + "failedToLoadBudgets": "載入預算失敗", + "failedToLoadChannels": "載入渠道失敗", + "failedToLoadCostData": "載入費用資料失敗", + "failedToLoadDeletionSummary": "載入刪除摘要失敗", + "failedToLoadDiffs": "載入差異失敗", + "failedToLoadExportBundle": "載入匯出包失敗", + "failedToLoadInstructions": "載入說明失敗", + "failedToLoadMemory": "載入記憶失敗", + "failedToLoadMoreTasks": "載入更多工失敗", + "failedToLoadProject": "載入專案失敗", + "failedToLoadTask": "載入任務失敗", + "failedToLoadTasks": "載入任務失敗", + "failedToRefreshTasks": "重新整理任務失敗", + "failedToRefreshUtilization": "重新整理利用率失敗", + "failedToReject": "拒絕失敗", + "failedToRemoveRepository": "移除儲存庫失敗", + "failedToRunRoutine": "執行例行程式失敗", + "failedToSave": "儲存失敗", + "failedToSaveExecutorConfiguration": "儲存執行器設定檔失敗", + "failedToSaveProject": "儲存專案失敗", + "failedToSaveRoutine": "儲存例行程式失敗", + "failedToSaveSettings": "儲存設定失敗", + "failedToUpdateAgent": "更新代理程式失敗", + "failedToUpdateRoutine": "更新例行程式失敗", + "failedToUpdateSkills": "更新技能失敗", + "fallback": "備援", + "filter": "篩選", + "filterSkills": "篩選技能…", + "finished": "已完成", + "finishedAgo": "完成於 {{ago}}", + "firesNow": "即將觸發", + "firstTask": "首個任務", + "fitToScreen": "適應螢幕", + "forAgentInProject": "<0>對於 <1> <2>在 <3>", + "foundWorkspacesOnFilesystem_one": "在檔案系統上找到 {{count}} 個工作區。要匯入設定以開始嗎?", + "foundWorkspacesOnFilesystem_other": "在檔案系統上找到 {{count}} 個工作區。要匯入設定以開始嗎?", + "general": "通用", + "gitUrlsOrLocalPathsWhere": "代理程式將在此專案上工作的 Git URL 或本地路徑。", + "gitUrlsOrLocalPathsWhereShort": "代理程式工作所用的 Git URL 或本地路徑", + "giveAgentSomethingToDo": "給 {{name}} 分配一些工作", + "groupBy": "分組依據", + "healthy": "正常", + "hideApprover": "隱藏審批人", + "hideReviewer": "隱藏審閱人", + "highestUtilizationAcrossSubscriptionAgents": "訂閱代理程式中的最高利用率", + "hours": "小時", + "howAgentSessionsRunForThis": "此專案的代理程式工作階段執行方式。", + "howAgentSessionsRunInheritProject": "代理程式工作階段執行方式(繼承使用專案/工作區預設值)", + "howAgentSessionsRunInheritUses": "代理程式工作階段執行方式(繼承使用工作區預設值)", + "howFarBackToLookFor": "恢復掃描時向前查詢未開始任務的時間範圍", + "howManyTasksThisAgentCan": "此代理程式可同時執行的任務數", + "identifier": "識別符號", + "identity": "身分", + "importContinue": "匯入並繼續", + "importedConfigEntries": "已匯入 {{importedCount}} 條設定", + "importedFromFilesystemCreatedUpdated": "已從檔案系統匯入(建立 {{created}},更新 {{updated}})", + "importFromFilesystem": "從檔案系統匯入", + "importing": "正在匯入…", + "in": "在:", + "inbox": "收件箱", + "incomingFilesystemDatabase": "傳入(檔案系統 → 資料庫)", + "inFlight": "進行中", + "inherit": "繼承", + "inheritFromProjectWorkspace": "從專案/工作區繼承", + "inheritFromWorkspace": "從工作區繼承", + "inheritsTierFromWorkspace": "從工作區繼承 <1>{{tier}}。", + "inheritsWorkspacePolicyList": "繼承工作區策略:{{list}}。", + "inheritsWorkspacePolicyNoneSet": "繼承工作區策略(尚未設定喚醒原因層級)。", + "injectedContinuationSummary": "注入的續寫摘要", + "inProgress": "進行中", + "input": "輸入", + "inputTokens": "輸入權杖", + "inReview": "審閱中", + "instructionFileCompletionDetail": "說明檔案", + "instructionsTheAgentReceivesWhenThis": "此例行程式觸發時代理程式收到的說明", + "intended": "預期", + "itemsWaitingForYourReview": "等待你審閱的專案", + "kind": "型別", + "last14Days": "最近 14 天", + "last30Days": "最近 30 天", + "lastFired": "上次觸發:{{when}}", + "lastRun": "上次執行", + "lastRunFailedAgo": "上次執行失敗於 {{ago}}", + "lastRunNever": "從未", + "latestRun": "最近執行", + "leadAgent": "主導代理程式", + "leadAgentName": "主導:{{name}}", + "limit": "限額($)", + "linked": "已關聯", + "listView": "清單檢視", + "live": "即時", + "liveNow": "目前即時", + "loadingExportBundle": "正在載入匯出包…", + "loadingInstructions": "正在載入說明…", + "loadingProject": "正在載入專案…", + "loadingRuns": "正在載入執行…", + "loadingTasks": "正在載入任務…", + "loadMore": "載入更多", + "localDocker": "本地 Docker", + "localStandalone": "本地(獨立)", + "logo": "圖示", + "main": "main", + "manage": "管理", + "manageSkillsInCompany": "在公司中管理技能", + "mapOfficeAgentsToProvidersAnd": "將辦公室代理程式對映到提供者與層級,並控制備援。高階功能;預設關閉。", + "markFixed": "標記為已修復", + "marking": "正在標記…", + "maxConcurrent": "最大併發", + "maxConcurrentSessions": "最大併發工作階段", + "memoryEntryDeleted": "記憶條目已刪除", + "memoryIsAccumulatedAsTheAgent": "代理程式處理任務時會累積記憶。", + "memoryMb": "記憶體(MB)", + "metaKey": "鍵", + "metaMode": "模式", + "metaSource": "來源", + "mine": "我的", + "missingCount_one": "缺少 {{count}} 個", + "missingCount_other": "缺少 {{count}} 個", + "modelsUsed": "使用的模型", + "monthly": "每月", + "monthlyBudget": "月度預算($)", + "monthlySpendingLimit0Unlimited": "月度支出限額($0 = 無限制)", + "monthSpend": "本月支出", + "moreInfoAbout": "關於 {{label}} 的更多資訊", + "moreOptions": "更多選項", + "moveDown": "下移", + "moveUp": "上移", + "name": "名稱", + "nameRoleAndReportingStructureFor": "此代理程式的名稱、角色與彙報結構。", + "needsAction": "需要操作", + "never": "從未", + "neverRun": "從未執行", + "newAgent": "新建代理程式", + "newAgentHiresMustBeApproved": "新僱傭的代理程式須經批准後才能啟用", + "newAgentsMatchingTheseRolesGet": "匹配這些角色的新代理程式會自動附加此技能", + "newIssue": "新建議題", + "newProject": "新建專案", + "newRoutine": "新建例行程式", + "newSkill": "新建技能", + "newTask": "新建任務", + "nextFire": "下次觸發:{{when}}", + "nextIn": "{{when}} 後觸發", + "noActiveExecutionProfilesAreAvailable": "此提供者沒有可用的活動執行設定。", + "noActiveSessionForThisTask": "此任務沒有活動工作階段。", + "noActivityYet": "尚無活動。", + "noAgentProfileConfigured": "未設定代理程式設定檔", + "noAgentsAttached": "未附加代理程式", + "noAgentsInThisWorkspaceYet": "此工作區尚無代理程式。", + "noAgentsToDisplay": "無可顯示的代理程式。", + "noAgentsYet": "尚無代理程式。", + "noBudget": "無預算", + "noBudgetPoliciesConfiguredAddOne": "未設定預算策略。新增一個以強制執行支出限制。", + "noChangesDetected": "未檢測到更改。", + "noChannelsConfiguredAddAChannel": "未設定渠道。新增渠道以啟用外部訊息。", + "noCliAgentProfilesAvailableYet": "尚無可用的 CLI 代理程式設定檔。", + "noConversationLinkedToThisRun": "此執行未關聯對話。", + "noCostDataYetCostsAre": "尚無費用資料。代理程式執行任務時會記錄費用。", + "noEventsRecordedForThisRun": "此執行尚無事件記錄。", + "noGrouping": "不分組", + "noInitialTask": "無初始任務", + "noInstructionFilesYet": "尚無說明檔案。", + "noMatches": "無匹配。", + "noMatchingSkills": "無匹配技能", + "noMemoryEntriesYet": "尚無記憶條目。", + "noMoreRuns": "沒有更多執行", + "none": "無", + "noneLower": "無", + "noneTopLevel": "無(頂層)", + "noProject": "無專案", + "noProjectsYet": "尚無專案。", + "noProviderHasTierMapped": "沒有提供者映射了 {{tier}} 層級;請在下方「提供者層級對映」中為 {{tier}} 設定模型。", + "noProviderInOrderHasTierMapped": "有效順序中沒有任何提供者映射了 {{tier}}。", + "noProviderMappedForTierHelp": "有效順序中沒有任何提供者映射了 {{tier}} 層級。請在「工作區 → 提供者路由」中至少為一個提供者選擇 {{tier}} 的執行設定。", + "noProvidersConfigured": "未設定提供者。", + "noProvidersSelected": "未選擇提供者。", + "noRecentActivityActionsByAgents": "暫無最近活動。代理程式與使用者的操作將顯示在此。", + "noRecentTasks": "暫無最近任務。", + "noRepositoriesAddedYet": "尚未新增儲存庫。", + "noRoute": "無路由", + "noRoutinesYet": "尚無例行程式。", + "noRuns": "無執行", + "noRunsWithCostDataYet": "尚無含費用資料的執行。", + "noRunsYet": "尚無執行。", + "noRunsYetShort": "尚無執行", + "noScheduledWakeUpsManageRoutines": "無計劃喚醒;管理例行程式", + "noSkillsRegisteredYet": "尚未註冊技能。", + "noSkillsYetImportFromGithub": "尚無技能。可從 GitHub 匯入或自行建立。", + "noTasksFound": "未找到任務。", + "noTasksInThisProjectYet": "此專案尚無任務。", + "noTasksTouchedYet": "尚未處理任何任務。", + "noTasksWereModifiedDuringThis": "此執行期間未修改任何任務。", + "notConfigured": "未設定", + "notifyOnly": "僅通知", + "noUtilizationDataAvailable": "無可用利用率資料。", + "noUtilizationDataClickRefreshTo": "無利用率資料。點選重新整理以擷取目前用量。", + "observed": "觀測到", + "off": "關", + "officeTurnsYourBacklogIntoAutonomous": "辦公室將待辦轉化為自主工作。協調代理程式會拆解每個任務、委派給專業工作者代理程式,並向你彙報進度。接下來你將命名此工作區、建立協調代理程式,並可選擇交給它第一個任務以啟動。", + "on": "開", + "onDisk": "磁碟上", + "onDiskBadge": "磁碟上", + "oneLineSummary": "一行摘要", + "openAgent": "開啟 {{name}}", + "openBlocked": "{{open}} 個進行中,{{blocked}} 個已阻塞", + "openInAdvancedView": "在高階檢視中開啟", + "optional": "可選", + "optionalDescription": "可選描述", + "orchestration": "編排", + "orgChart": "組織圖", + "other": "其他", + "out": "輸出:", + "outgoingDatabaseFilesystem": "傳出(資料庫 → 檔案系統)", + "output": "輸出", + "outputTokens": "輸出權杖", + "overrideTheWorkspaceTierOrProvider": "覆蓋此代理程式的工作區層級或提供者順序。", + "overrideWakeReasonTiers": "覆蓋喚醒原因層級", + "overrideWakeReasonTiersHelp": "較少使用。僅當此代理程式的後台工作需要不同行為時覆蓋;例如安全關鍵代理程式即使例行檢查也必須使用 Frontier。多數代理程式應繼承工作區策略。", + "overrideWhichModelTierRunsFor": "覆蓋特定型別代理程式工作使用的模型層級。多數使用者保留工作區預設;後台任務用 Economy,常規執行用 Balanced。心跳、計劃例行程式與預算告警會在後台持續執行,因此在此使用更便宜的層級可大幅降低成本,而不影響關鍵工作。", + "overrideWorkspacePolicyForThisAgent": "為此代理程式覆蓋工作區策略", + "overrideWorkspaceProviderOrder": "覆蓋工作區提供者順序", + "overrideWorkspaceTier": "覆蓋工作區層級", + "overRuns": "{{overall}}% · 共 {{total}} 次執行", + "overview": "概覽", + "parent": "父級", + "parseErrors": "解析錯誤(", + "participantsSelected_one": "已選 {{count}} 個", + "participantsSelected_other": "已選 {{count}} 個", + "pathGithubUrlOrSkillsSh": "路徑、GitHub URL 或 skills.sh", + "pauseAgent": "暫停代理程式", + "pausedConsecutiveFailures_one": "已暫停;連續失敗 {{count}} 次", + "pausedConsecutiveFailures_other": "已暫停;連續失敗 {{count}} 次", + "pendingApproval": "待審批", + "pendingApprovals": "待審批", + "period": "週期", + "periodValue": "週期:{{period}}", + "permissions": "權限", + "permissionSettingsSaved": "權限設定已儲存", + "permissionsUpdated": "權限已更新", + "pickAWorkspaceRepoADiscovered": "選擇工作區儲存庫、已發現的本地路徑,或貼上 URL。", + "picksTheCliClientModelMode": "選擇此代理程式將使用的 CLI 用戶端、模型、模式與旗標。", + "platform": "平臺", + "preferences": "偏好", + "primary": "主要", + "priority": "優先順序", + "priorityCritical": "緊急", + "priorityHigh": "高", + "priorityLow": "低", + "priorityMedium": "中", + "project": "專案", + "projectCreated": "專案已建立", + "projectDeleted": "專案已刪除", + "projectDescription": "專案描述…", + "projectName": "專案名稱", + "projects": "專案", + "projectSaved": "專案已儲存", + "projectsGroupRelatedTasksAndRepositories": "專案將相關任務與儲存庫歸組在一起。", + "projectStatusActive": "進行中", + "projectStatusArchived": "已歸檔", + "projectStatusCompleted": "已完成", + "projectStatusOnHold": "已擱置", + "prompt": "提示詞", + "provider": "提供者", + "providerCandidatesTriedForThisRun": "此執行嘗試的提供者候選,按順序。", + "providerDegraded": "提供者已降級", + "providerHealth": "提供者健康狀況", + "providerOrder": "提供者順序", + "providerRouting": "提供者路由", + "providerRoutingHeading": "提供者路由", + "providers": "提供者", + "pulledLatestChanges": "已拉取最新更改", + "pullFailed": "拉取失敗", + "pulling": "正在拉取…", + "push": "推送", + "pushFailed": "推送失敗", + "pushing": "正在推送…", + "readOnly": "只讀", + "readOnlyReasonGit": "GitHub 管理的技能為只讀", + "readOnlyReasonLocalPath": "本地路徑技能為只讀", + "readOnlyReasonSkillsSh": "skills.sh 管理的技能為只讀", + "ready": "就緒", + "reason": "原因", + "recent": "最近", + "recentActivity": "最近活動", + "recentRuns": "最近執行", + "recentTasks": "最近任務", + "reconnect": "重新連線", + "recovery": "恢復", + "recoveryLookbackWindow": "恢復回看視窗", + "recoverySettingsSaved": "恢復設定已儲存", + "refresh": "重新整理", + "refreshSkills": "重新整理技能", + "refreshUtilization": "重新整理利用率", + "reject": "拒絕", + "rejected": "已拒絕", + "remainingAmount": "剩餘:{{amount}}", + "remoteDocker": "遠端 Docker", + "remove": "移除", + "removeApprover": "移除審批人", + "removeRepository": "移除儲存庫", + "removeReviewer": "移除審閱人", + "removeSkill": "移除技能", + "repoCount_one": "{{count}} 個儲存庫", + "repoCount_other": "{{count}} 個儲存庫", + "reportsTo": "彙報給", + "repositories": "儲存庫", + "repositoryAdded": "儲存庫已新增", + "repositoryCloned": "儲存庫已複製", + "repositoryRemoved": "儲存庫已移除", + "repositoryUrl": "儲存庫 URL", + "requested": "已請求", + "requireApprovalForNewAgents": "新代理程式需審批", + "requireApprovalForSkillChanges": "技能變更需審批", + "requireApprovalForTaskCompletion": "任務完成需審批", + "required": "必填", + "resetsInHoursMinutes": "{{hours}} 小時 {{minutes}} 分鐘後重置", + "resetsInMinutes": "{{minutes}} 分鐘後重置", + "resettingSoon": "即將重置", + "resolved": "已解析", + "resolvedRoutes": "已解析路由", + "resumeSession": "恢復工作階段", + "retry": "重試", + "retryAtSuffix": "· 重試 {{retryAt}}", + "retryAtWhen": "於 {{when}} 重試", + "retryCancelledReassigned": "重試已取消;已重新分配", + "retrying": "正在重試…", + "retryNow": "立即重試", + "shortRetry": "即將重試", + "reviewAndLaunch": "審閱並啟動", + "reviewer": "審閱人", + "reviewers": "審閱人", + "reviewRequest": "審閱請求", + "reviewStages": "審閱階段", + "role": "角色", + "roleAssistant": "助手", + "roleCeo": "CEO", + "roleDefault": "角色預設", + "roleDevops": "DevOps", + "roleQa": "QA", + "roleSecurity": "安全", + "roleSpecialist": "專家", + "roleWorker": "工作者", + "routeAttempts": "路由嘗試", + "routeBlocked": "已阻塞", + "routeOutcomeFailedOther": "失敗(其他)", + "routeOutcomeFailedProviderUnavailable": "失敗(提供者不可用)", + "routeOutcomeLaunched": "已啟動", + "routeOutcomeRetryScheduled": "已安排重試", + "routeOutcomeSkippedDegraded": "已跳過(降級)", + "routeOutcomeSkippedMaxAttempts": "已跳過(達最大嘗試次數)", + "routeOutcomeSkippedMissingMapping": "已跳過(缺少對映)", + "routeOutcomeSkippedUserAction": "已跳過(使用者操作)", + "routineActivated": "例行程式已啟用", + "routineCreated": "例行程式已建立", + "routineDeleted": "例行程式已刪除", + "routineFired": "例行程式已觸發", + "routinePaused": "例行程式已暫停", + "routines": "例行程式", + "routinesAutomaticallyCreateTasksOnA": "例行程式按計劃或 webhook 觸發自動建立任務。", + "routineSaved": "例行程式已儲存", + "routineStarted": "例行程式已啟動", + "routineStatusActive": "活動", + "routineStatusArchived": "已歸檔", + "routineStatusPaused": "已暫停", + "routingOverridesSaved": "路由覆蓋已儲存", + "routingSettingsSaved": "路由設定已儲存", + "run": "執行", + "runActivity": "執行活動", + "runCancelAssigneeChanged": "負責人已更改", + "runCancelRetryStale": "重試已過期", + "runCancelReviewParticipantChanged": "審閱人已更改", + "runCancelTaskCancelled": "任務已取消", + "runCancelTaskNotFound": "未找到任務", + "runCancelTaskTerminal": "任務已完成", + "runCount_one": "{{count}} 次執行", + "runCount_other": "{{count}} 次執行", + "runInALocalDockerContainer": "在本地 Docker 容器中執行", + "runInASpritesCloudEnvironment": "在 Sprites 雲環境中執行", + "runningPausedErrors": "{{running}} 執行中,{{paused}} 已暫停,{{errors}} 個錯誤", + "runNow": "立即執行", + "runNowTitleCase": "立即執行", + "runOnHostMachine": "在主機上執行", + "runs": "執行", + "runsAppearHereWhenARoutine": "例行程式觸發時,執行會顯示在此。", + "runStatusCancelled": "已取消", + "runStatusCoalesced": "已合併", + "runStatusDone": "完成", + "runStatusFailed": "失敗", + "runStatusReceived": "已接收", + "runStatusSkipped": "已跳過", + "runStatusTaskCreated": "任務已建立", + "runtime": "執行時", + "runtimeCapabilities": "執行時能力", + "saveChanges": "儲存更改", + "saveConfiguration": "儲存設定", + "saved": "已儲存 {{filename}}", + "saveOverrides": "儲存覆蓋", + "savePermissions": "儲存權限", + "saveSkills": "儲存技能", + "saving": "正在儲存…", + "savingEllipsis": "正在儲存…", + "schedule": "計劃", + "scopeId": "範圍 ID", + "scopeType": "範圍型別", + "search": "搜尋…", + "searchFiles": "搜尋檔案…", + "searchingYourMachine": "正在搜尋本機…", + "searchMemory": "搜尋記憶…", + "searchOrPasteAUrlOr": "搜尋或貼上 URL 或路徑…", + "searchTasks": "搜尋任務…", + "selectAFileToPreview": "選擇要預覽的檔案", + "selectAFileToViewOr": "選擇要檢視或編輯的檔案。", + "selectAgent": "選擇代理程式", + "selectAgentOptional": "選擇代理程式(可選)", + "selectAnAgentProfile": "選擇代理程式設定檔…", + "selectApprover": "選擇審批人", + "selectAProjectToCreateATask": "選擇專案以建立任務", + "selectASkillToView": "選擇要檢視的技能", + "selectAWorkspaceToViewActivity": "選擇工作區以檢視活動。", + "selectAWorkspaceToViewCosts": "選擇工作區以檢視費用。", + "selectExecutionProfile": "選擇執行設定", + "selectExecutor": "選擇執行器…", + "selectProfile": "選擇設定…", + "sendAMessage": "傳送訊息…", + "sendAMessageToStartA": "傳送訊息以開始工作階段…", + "sendMessage": "傳送訊息", + "session": "工作階段", + "sessionId": "工作階段 ID", + "sessionIdAfter": "工作階段 ID(之後)", + "sessionIdBefore": "工作階段 ID(之前)", + "setSpendingLimitsPerAgentOr": "按代理程式或專案設定支出限額。超出限額時代理程式會暫停。", + "setupTierAgentProfiles": "設定層級代理程式設定檔", + "setUpYourOfficeWorkspace": "設定你的辦公室工作區", + "ship": "釋出", + "showSystemTasks": "顯示系統任務", + "skillAutoAttachedToRole": "此技能會自動附加到新的 {{role}} 代理程式。你仍可為此代理程式取消勾選。", + "skillCount_one": "{{count}} 個技能", + "skillCount_other": "{{count}} 個技能", + "skillMdContent": "SKILL.md 內容", + "skillNameInstructionsForTheAgent": "# 技能名稱\n\n給代理程式的說明…", + "skills": "技能", + "skillSourceGithub": "GitHub", + "skillSourceGitRepository": "Git 儲存庫", + "skillSourceInline": "內聯", + "skillSourceInlineEditable": "內聯(在瀏覽器中編輯)", + "skillSourceKandev": "Kandev", + "skillSourceLocal": "本地", + "skillSourceLocalPath": "本地路徑", + "skillSourceSkillsSh": "skills.sh", + "skillSourceUserHome": "使用者主目錄", + "skillsTeachAgentsHowToPerform": "技能教代理程式如何執行特定任務。可從 GitHub 匯入或自行建立。", + "skillsThisAgentOwnsSkillsAre": "此代理程式擁有的技能。工作階段開始時技能會注入代理程式的系統提示詞。", + "skillsUpdated": "技能已更新", + "skipIfActive": "活動時跳過", + "skipMissed": "跳過錯過的", + "sort": "排序", + "sortBy": "排序依據", + "sortCreated": "建立時間", + "sortUpdated": "更新時間", + "sourceType": "來源型別", + "spritesRemoteSandbox": "Sprites(遠端沙箱)", + "staleRunCancelled": "過期執行已取消", + "standardCronExpressionExample": "標準 cron 表示式(例如 {{cron}} 表示每週一上午 9 點)", + "startASessionOrSendA": "啟動工作階段或傳送訊息以開始。", + "started": "已開始", + "startFresh": "全新開始", + "startFreshSentence": "全新開始", + "starting": "正在啟動…", + "startSession": "啟動工作階段", + "statusBacklog": "待辦池", + "statusBlocked": "已阻塞", + "statusCancelled": "已取消", + "statusChanged": "狀態已更改", + "statusDone": "完成", + "statusInProgress": "進行中", + "statusInReview": "審閱中", + "statusTodo": "待辦", + "stepDetails": "詳情", + "stepNumberTitle": "步驟 {{number}}:{{title}}", + "stepSchedule": "計劃", + "stepTaskTemplate": "任務模板", + "stepXOfYTitle": "步驟 {{number}} / {{total}};{{title}}", + "structuredResult": "結構化結果", + "subIssueOfParent": "{{parent}} 的子議題", + "subscriptionQuota": "訂閱配額", + "succeeded": "成功", + "successRate": "成功率", + "sync": "同步", + "syncTheWorkspaceDatabaseWithOn": "將工作區資料庫與磁碟上的 YAML 同步,或下載可移植匯出包。", + "system": "系統", + "tabChannels": "渠道", + "tabConfiguration": "設定", + "tabInstructions": "說明", + "tabMemory": "記憶", + "tabPermissions": "權限", + "taskCount_one": "{{count}} 個任務", + "taskCount_other": "{{count}} 個任務", + "taskCreated": "任務已建立", + "taskDescription": "任務描述", + "taskDescriptionTemplate": "任務描述模板", + "taskNotFound": "未找到任務", + "taskPrefix": "任務字首", + "taskReview": "任務審閱", + "tasks": "任務", + "tasksByPriority": "按優先順序的任務", + "tasksByStatus": "按狀態的任務", + "tasksInProgress": "進行中的任務", + "tasksMustBeReviewedBeforeThey": "任務須經審閱後才能標記為完成", + "tasksTouched": "涉及的任務", + "tasksWillBeNumbered": "任務將編號為 {{prefix}}-1、{{prefix}}-2 等。", + "tasksWorkedOnByPriority": "按優先順序處理的任務", + "tasksWorkedOnByStatus": "按狀態處理的任務", + "taskTitle": "任務標題", + "taskTitleTemplate": "任務標題模板", + "telegram": "Telegram", + "theAgentResponsibleForManagingThis": "負責管理此專案的代理程式", + "theCoordinatorCanCreateWorkerAgents": "協調代理程式可建立工作者代理程式併為每個選擇層級。每個層級會解析為這裡選擇的設定,之後可在工作區路由中更改。", + "theCoordinatorManagesOtherAgentsDelegates": "協調代理程式管理其他代理程式、委派任務並監控進度。", + "thisAgentAsTheAssignee": "以此代理程式為負責人", + "thisCoordinatorHasNoScheduledWake": "此協調代理程式無計劃喚醒;僅在評論、錯誤或手動觸發時執行。", + "thisPermanentlyDeletesAgentsTasksSkills": "將永久刪除代理程式、任務、技能、例行程式與設定。", + "thisProvider": "此提供者", + "thisWillPermanentlyDeleteAllMemory": "將永久刪除此代理程式的全部記憶條目。此操作無法撤銷。", + "thisWillPermanentlyDeleteThisInstruction": "將永久刪除此說明檔案。此操作無法撤銷。", + "tier": "層級", + "tierBalanced": "Balanced", + "tierBalancedDescription": "當協調代理程式分配 Balanced 層級時,用於一般工作者代理程式。", + "tierBalancedHint": "標準能力", + "tierBalancedQualified": "Balanced(標準)", + "tierBalancedUsage": "Balanced 層級用量", + "tierEconomy": "Economy", + "tierEconomyDescription": "當協調代理程式分配 Economy 層級時,用於 QA、例行與低成本代理程式。", + "tierEconomyHint": "最便宜的可用模型", + "tierEconomyQualified": "Economy(最便宜)", + "tierEconomyUsage": "Economy 層級用量", + "tierFrontier": "Frontier", + "tierFrontierDescription": "當協調代理程式建立最高能力工作的代理程式或分配 Frontier 層級時使用。", + "tierFrontierHint": "各提供者的最強能力", + "tierFrontierQualified": "Frontier(最強能力)", + "tierFrontierUsage": "Frontier 層級用量", + "tierNameBalanced": "balanced", + "tierNameEconomy": "economy", + "tierNameFrontier": "frontier", + "timezone": "時區", + "title": "標題", + "titleForAutoCreatedTasksUse": "自動建立任務的標題。可用 {{name}} 與 {{date}} 作為佔位符。", + "toggleNesting": "切換巢狀", + "topToBottomFallbackOrderAgents": "自上而下的備援順序。除非覆蓋,代理程式會嘗試第一個健康的提供者。", + "toSetUpARoutineYou": "設定例行程式需要:", + "total": "合計", + "totalApiCostsThisBillingPeriod": "本計費週期的 API 總費用", + "totalCost": "總費用", + "totalSpend": "總支出", + "trigger": "觸發器", + "triggerComment": "評論", + "triggerRoutine": "例行程式", + "triggerTask": "任務", + "triggerType": "觸發型別", + "type": "型別", + "typeNameToConfirm": "輸入 {{name}} 以確認", + "typicalMappingAtLaunchTimeThe": "典型對映。啟動時路由會按提供者順序遍歷並選擇第一個健康提供者,因此主提供者降級時,此執行可能使用與此處顯示不同的提供者/模型。", + "unassigned": "未分配", + "unassignedParen": "(未分配)", + "unknownError": "未知錯誤", + "unstartedTaskRecovered": "未開始的任務已恢復", + "untitled": "(無標題)", + "updateWorkspaceConfiguration": "更新工作區設定", + "upload": "上傳", + "uploadLogo": "上傳圖示", + "useAgentSNormalTier": "使用代理程式的常規層級", + "usedBy": "使用者", + "useQuery": "使用「{{query}}」", + "usingThisAgentsWakeReasonOverrides": "正在使用此代理程式的喚醒原因覆蓋。", + "variables": "變數", + "waiting": "等待中…", + "waitingForCapacity": "等待容量", + "wakeBudgetAlert": "預算告警", + "wakeBudgetAlertLong": "預算告警是快速確認工作;代理程式讀取告警、決定是否暫停工作或通知人工,然後繼續休眠。幾乎不涉及重推理,因此最便宜的層級幾乎總是夠用。", + "wakeBudgetAlertRecommendation": "快速確認工作 → 更便宜的層級即可。", + "wakeBudgetAlertShort": "當工作區或專案預算接近限額、可能需要限流或上報時通知代理程式。", + "wakeHeartbeat": "心跳", + "wakeHeartbeatLong": "心跳保持代理程式反應靈敏:快速掃描收件箱、未完成任務與預算告警。它們在後台持續觸發,因此在此使用更便宜的層級可大幅降低月度支出,而不影響關鍵工作。", + "wakeHeartbeatRecommendation": "非常頻繁 → 建議使用更便宜的層級。", + "wakeHeartbeatShort": "代理程式按計劃(每隔幾分鐘)執行的定期檢查,檢視是否有需要關注的新事項。", + "wakeReasonTierPolicy": "喚醒原因層級策略", + "wakeRoutineTrigger": "例行程式觸發", + "wakeRoutineTriggerLong": "例行程式觸發按你控制的 cron 計劃執行。工作負載可預期且很少時間關鍵,因此更便宜的層級通常足夠。若特定例行程式需要更強模型,可按代理程式覆蓋。", + "wakeRoutineTriggerRecommendation": "可預期的工作負載 → 更便宜的層級通常足夠。", + "wakeRoutineTriggerShort": "你在「例行程式」下設定的計劃任務(例如「每週一上午彙總 PR」)。", + "warning": "警告", + "webhook": "Webhook", + "whatEachAgentWouldLaunchWith": "在目前設定下每個代理程式將如何啟動。", + "whatHappensIfThePreviousRun": "若上一次執行仍在進行,會發生什麼", + "whatHappensToTicksMissedWhile": "後端離線期間錯過的觸發如何處理", + "whatTheAgentReceivedAndProduced": "代理程式接收與產生的內容。", + "whenEnabledProviderLimitsCanMove": "啟用後,提供者限制可將執行移至下一個已設定的執行設定。停用後,辦公室僅對所選層級使用第一個提供者。", + "whetherThisSkillSContentCan": "此技能內容是否可在 Kandev 中編輯", + "whichAgentManagesThisOne": "管理此代理程式的上級代理程式", + "workingDir": "工作目錄", + "workspaceCreatedSuccessfully": "工作區建立成功", + "workspaceDefaultForThisReason": "此原因的工作區預設:", + "workspaceDefaultTier": "工作區預設層級", + "workspaceDefaultTierHint": "我們將把 <1>{{model}} 作為 {{provider}} 的 {{tier}} 層級。之後可在「工作區 → 提供者路由」中更改。", + "workspaceDeleted": "工作區已刪除", + "workspaceName": "工作區名稱", + "writeTheDatabaseStateToOn": "將資料庫狀態寫入磁碟上的 YAML 檔案。", + "yourModel": "你的模型", + "zoomIn": "放大", + "zoomOut": "縮小" +} diff --git a/apps/web/src/locales/zh-tw/plugins.json b/apps/web/src/locales/zh-tw/plugins.json new file mode 100644 index 0000000000..be68a56421 --- /dev/null +++ b/apps/web/src/locales/zh-tw/plugins.json @@ -0,0 +1,117 @@ +{ + "add": "新增", + "allCategories": "全部分類", + "autoUpdate": "自動更新", + "autoUpdateDescription": "定期檢查市場併為已啟用外掛安裝較新版本。適用於每個外掛,除非在下方單獨覆蓋。", + "autoUpdateFor": "{{name}} 的自動更新", + "autoUpdateTitle": "自動更新外掛", + "byAuthor": "作者 {{author}}", + "cancel": "取消", + "category": "分類", + "confirmUninstall": "確認解除安裝", + "disable": "停用", + "dropzoneHint": "將 {{extension}} 包拖放到此處,或點選瀏覽", + "enable": "啟用", + "failedToAddSource": "新增來源失敗", + "failedToDisable": "停用 {{name}} 失敗", + "failedToEnable": "啟用 {{name}} 失敗", + "failedToInstallPlugin": "安裝外掛失敗", + "failedToLoadMarketplace": "載入市場失敗", + "failedToLoadPlugins": "載入外掛失敗", + "failedToLoadSettings": "載入外掛設定失敗", + "failedToRemoveSource": "移除來源失敗", + "failedToSaveSettings": "儲存外掛設定失敗", + "failedToSetAutoUpdateFor": "更新 {{name}} 的自動更新設定失敗", + "failedToSyncPlugins": "同步外掛失敗", + "failedToUninstall": "解除安裝 {{name}} 失敗", + "failedToUpdateAutoUpdate": "更新自動更新設定失敗", + "failedToUpdateSource": "更新來源失敗", + "fromUrl": "來自 URL", + "hideRaw": "隱藏原始內容", + "install": "安裝", + "installPlugin": "安裝外掛", + "installPluginDescription": "從 URL 安裝外掛包,或直接上傳 {{extension}} 檔案。", + "installed": "已安裝", + "installedPlugins": "已安裝的外掛", + "installing": "正在安裝…", + "loadingMarketplace": "正在載入市場…", + "loadingPlugins": "正在載入外掛…", + "loadingSelectedUtilityAgent": "正在載入所選輔助代理程式…", + "loadingSettings": "正在載入設定…", + "loadingUtilityAgents": "正在載入輔助代理程式…", + "manifest": "清單", + "manifestApiVersion": "API 版本", + "manifestAuthor": "作者", + "manifestCapabilities": "能力", + "manifestId": "ID", + "manifestInstalled": "已安裝", + "manifestSigned": "已簽名", + "manifestVersion": "版本", + "manifestWebhooks": "Webhooks", + "marketplaceSources": "市場來源", + "marketplaceSourcesDescription": "新增團隊或企業登入檔,以便與官方目錄一起瀏覽其外掛。每個來源提供一份 {{document}} 檔案。", + "no": "否", + "noDeclaredSettings": "此外掛未宣告任何設定(清單中無 <1>config_schema)。", + "noInstalledPluginWithId": "沒有 id 為 <1>{{id}} 的已安裝外掛。", + "noPluginsAvailable": "暫無可用外掛。請稍後再來,或新增包含自有外掛的市場來源。", + "noPluginsMatchSearch": "沒有與搜尋匹配的外掛。請嘗試清除篩選條件。", + "noPluginsYet": "還沒有外掛。從「瀏覽」標籤安裝,或上傳一個包。", + "notSet": "未設定", + "override": "覆蓋", + "packageUrl": "包 URL", + "pluginInstalled": "{{name}} 已安裝", + "pluginPageFailedToLoad": "此外掛頁面載入失敗。", + "pluginsAvailable_one": "{{count}} 個可用外掛", + "pluginsAvailable_other": "{{count}} 個可用外掛", + "refresh": "重新整理", + "removeSource": "移除 {{name}}", + "repo": "儲存庫", + "requiredFields": "必填:{{fields}}", + "reset": "重置", + "resetAutoUpdateFor": "將 {{name}} 的自動更新重置為預設", + "savingRestartsPlugin": "儲存後將重啟外掛以使新設定生效。", + "searchPlugins": "搜尋外掛…", + "selectAUtilityAgent": "選擇輔助代理程式…", + "selectPlaceholder": "選擇…", + "selectedUtilityAgentUnavailable": "所選輔助代理程式不可用", + "settings": "設定", + "settingsDescription": "瀏覽市場,然後安裝、啟用、停用和解除安裝 Kandev 外掛。", + "settingsSaved": "外掛設定已儲存", + "settingsSavedReloadFailed": "設定已儲存,但重新載入失敗;請重新整理以確認。", + "sortMostStars": "星標最多", + "sortName": "名稱", + "sortRecentlyUpdated": "最近更新", + "sourceNamePlaceholder": "來源名稱(例如 Acme Internal)", + "sourceOfficial": "官方", + "sourceUnreachable": "無法存取", + "sourceUnreachableDetail": "<0>{{name}} 無法存取{{detail}};其外掛已隱藏。", + "sources": "來源", + "statusActive": "活躍", + "statusDisabled": "已停用", + "statusError": "錯誤", + "statusRegistered": "已註冊", + "statusUninstalled": "已解除安裝", + "sync": "同步", + "syncInstalled_one": "已安裝 {{count}} 個", + "syncInstalled_other": "已安裝 {{count}} 個", + "syncMissing_one": "缺失 {{count}} 個", + "syncMissing_other": "缺失 {{count}} 個", + "syncSideloaded_one": "旁載入 {{count}} 個", + "syncSideloaded_other": "旁載入 {{count}} 個", + "syncSummary": "同步:{{parts}}", + "syncUpToDate": "全部已是最新", + "tabBrowse": "瀏覽", + "tabInstalled": "已安裝", + "thisPlugin": "此外掛", + "uninstall": "解除安裝", + "uninstallConfirm": "這將永久移除 <2>{{name}} 並吊銷其 API 金鑰。此操作無法撤銷。", + "uninstallPlugin": "解除安裝外掛", + "unsigned": "未簽名", + "update": "更新", + "updateToVersion": "更新到 v{{version}}", + "updating": "正在更新…", + "uploadFile": "上傳檔案", + "utilityAgentsUnavailable": "輔助代理程式不可用", + "viewRaw": "檢視原始內容", + "yes": "是" +} diff --git a/apps/web/src/locales/zh-tw/review.json b/apps/web/src/locales/zh-tw/review.json new file mode 100644 index 0000000000..c9a35ba26f --- /dev/null +++ b/apps/web/src/locales/zh-tw/review.json @@ -0,0 +1,82 @@ +{ + "acrossFileCount_one": "涉及 {{count}} 個檔案", + "acrossFileCount_other": "涉及 {{count}} 個檔案", + "actionsFor": "{{filePath}} 的操作", + "autoMarkReviewedOnScroll": "滾動時自動標記為已審閱", + "changedSection": "更改區塊 {{index}}", + "closeReview": "關閉審閱", + "collapseFile": "摺疊 {{path}}", + "collapseUnchanged": "摺疊未更改部分", + "commentSent": "評論已傳送", + "copyDiff": "複製 diff", + "diffLoading": "正在載入 diff…", + "diffSkipBinary": "二進位制檔案;無法比較 diff", + "diffSkipBudgetExceeded": "已跳過 diff;更改檔案過多", + "diffSkipTooLarge": "檔案過大,無法比較 diff(>10 MB)", + "diffSkipTruncated": "diff 已截斷(>256 KB)", + "diffTruncated": "diff 已截斷;僅顯示前 256 KB", + "discardWalkthrough": "丟棄導覽", + "discardWalkthroughDescription": "這將移除此任務上已儲存的導覽。代理程式之後可以再建立新的。", + "discardWalkthroughTitle": "丟棄導覽?", + "editFile": "編輯檔案", + "expandAll": "全部展開", + "expandFile": "展開 {{path}}", + "expandUnchangedLines": "展開未更改的行", + "failedToDiscardWalkthrough": "丟棄導覽失敗", + "failedToSendComment": "傳送評論失敗", + "filesReviewed": "已審閱 {{reviewedCount}} / {{totalCount}} 個檔案", + "filterChangedFiles": "篩選已更改檔案", + "findingCount_one": "{{count}} 條發現", + "findingCount_other": "{{count}} 條發現", + "fixComments": "修復評論", + "goToFindings_one": "轉到 {{count}} 條審閱發現", + "goToFindings_other": "轉到 {{count}} 條審閱發現", + "loadingChangedFiles": "正在載入已更改檔案…", + "loadingPRChanges": "正在載入 {{repo}} #{{prNumber}} 的更改…", + "markdownPreviewPartialNotice": "正在顯示已更改的 Markdown 片段。未更改的內容不包含在此 diff 中。", + "moreActionsFor": "{{filePath}} 的更多操作", + "new": "新", + "newWalkthrough": "新建導覽", + "noChangesToReview": "沒有可審閱的更改", + "noChangesToReviewYet": "尚無可審閱的更改。", + "noCommentsToFixYet": "尚無可修復的評論。", + "noFilesMatchTheFilter": "沒有與篩選匹配的檔案", + "noOpenFindings": "沒有未解決的發現。", + "noTextualDiffAdded": "新增檔案沒有文字 diff", + "noTextualDiffDeleted": "已刪除檔案沒有文字 diff", + "noTextualDiffModified": "無可用文字 diff", + "noTextualDiffMoved": "檔案已移動;無文字更改", + "noTextualDiffMovedFrom": "從 {{oldPath}} 移動;無文字更改", + "noTextualDiffUntracked": "未跟蹤檔案沒有文字 diff", + "old": "舊", + "openFindingCount_one": "{{count}} 條未解決發現", + "openFindingCount_other": "{{count}} 條未解決發現", + "pendingCommentCount_one": "{{count}} 條待處理審閱評論", + "pendingCommentCount_other": "{{count}} 條待處理審閱評論", + "pleaseTryAgain": "請重試。", + "previewMarkdown": "預覽 Markdown", + "queuedForTheAgent": "已排隊等待代理程式。", + "resizeFileList": "調整檔案清單大小", + "retry": "重試", + "revertChanges": "還原更改", + "reviewAgentUnavailableNotice": "未設定可用於審閱的推理代理程式。<2>設定 → 輔助代理程式", + "reviewChanges": "審閱更改", + "reviewChangesTitle": "審閱更改", + "reviewInProgress": "審閱進行中", + "reviewPullRequest": "審閱提取要求", + "reviewPullRequestFor": "審閱提取要求 {{repo}} #{{prNumber}}", + "reviewTheseChangesWithAnAgent": "使用代理程式審閱這些更改", + "sentToTheAgent": "已傳送給代理程式。", + "showDiff": "顯示 diff", + "staleChanged": "已更改", + "switchToSplitView": "切換到分欄檢視", + "switchToUnifiedView": "切換到統一檢視", + "theReviewFailed": "審閱失敗", + "toggleWordWrap": "切換自動換行", + "view": "檢視", + "walkMeThroughTheseChanges": "帶我瀏覽這些更改", + "walkMeThroughTheseReviewChanges": "帶我瀏覽這些審閱更改", + "walkthrough": "導覽", + "walkthroughDiscarded": "導覽已丟棄", + "wrapLongLines": "長行自動換行" +} diff --git a/apps/web/src/locales/zh-tw/sentry.json b/apps/web/src/locales/zh-tw/sentry.json new file mode 100644 index 0000000000..4e3e9d03b9 --- /dev/null +++ b/apps/web/src/locales/zh-tw/sentry.json @@ -0,0 +1,176 @@ +{ + "actions": "操作", + "active": "活動", + "addInstance": "新增實例", + "agentProfile": "代理程式設定檔", + "allProjects": "全部專案", + "any": "(任意)", + "authToken": "身分驗證權杖", + "availablePlaceholders": "可用佔位符:", + "browseSentryIssues": "瀏覽 Sentry 議題", + "cantDeleteInstanceInUse_one": "無法刪除「{{name}}」:仍有 {{count}} 個監控繫結到該實例。請先重新分配或移除這些監控。", + "cantDeleteInstanceInUse_other": "無法刪除「{{name}}」:仍有 {{count}} 個監控繫結到該實例。請先重新分配或移除這些監控。", + "checkFailed": "檢查失敗:{{error}}", + "checkNow": "立即檢查", + "connectedAs": "已連線為 {{name}}", + "create": "建立", + "createFailed": "建立失敗:{{error}}", + "createSentryWatcher": "建立 Sentry 監控", + "delete": "刪除", + "deleteFailed": "刪除失敗:{{error}}", + "deleteInstanceAria": "刪除 {{name}} Sentry 實例", + "deleteThisSentryWatcher": "刪除此 Sentry 監控?", + "edit": "編輯", + "editInstanceAria": "編輯 {{name}} Sentry 實例", + "editSentryWatcher": "編輯 Sentry 監控", + "enable": "啟用", + "enabled": "已啟用", + "enabledHelp": "暫停或恢復輪詢。", + "enterAPositiveIntegerOrBlank": "請輸入正整數或留空。", + "enterNameAndTokenBeforeSaving": "儲存前請輸入實例名稱和身分驗證權杖。", + "environment": "環境", + "environmentHelp": "可選--限制為一個環境。", + "eventsCount_one": "事件 {{count}}", + "eventsCount_other": "事件 {{count}}", + "executorProfile": "執行器設定檔", + "failedToLoadInstances": "載入 Sentry 實例失敗:{{error}}", + "fallsBackToStepDefault": "可選--留空時使用步驟預設值。", + "filter": "篩選條件", + "foundNewIssues_one": "發現 {{count}} 個新議題,任務即將顯示。", + "foundNewIssues_other": "發現 {{count}} 個新議題,任務即將顯示。", + "grantReadAccess": "為以下範圍授予讀取權限:", + "instance": "實例", + "instanceNameTaken": "此工作區中已存在名為「{{name}}」的實例。", + "instanceRemoved": "已移除 Sentry 實例", + "instanceSaved": "已儲存 Sentry 實例", + "instanceUnavailable": "(不可用)", + "instanceUrl": "實例 URL", + "instanceUrlHelp": "Sentry 實例的基礎 URL。使用 Sentry SaaS 時保留 {{defaultUrl}};使用自託管安裝時,請改為對應地址(例如 {{exampleUrl}})。", + "instances": "實例", + "interval": "間隔", + "intervalMinutes_one": "{{count}} 分鐘", + "intervalMinutes_other": "{{count}} 分鐘", + "lastPolled": "上次輪詢", + "lastSeen": "上次出現", + "level": "級別", + "levelDebug": "除錯", + "levelError": "錯誤", + "levelFatal": "致命", + "levelInfo": "資訊", + "levelWarning": "警告", + "levels": "級別", + "levelsHelp": "單擊可切換。匹配任意一個所選級別的議題。", + "loadMore": "載入更多", + "loadingEllipsis": "正在載入…", + "maxInflightTasks": "最大進行中任務數", + "maxInflightTasksHelp": "限制此監控建立的進行中任務數量。留空表示不限制。達到上限後,新匹配項會推遲到下次輪詢。", + "name": "名稱", + "nameHelp": "此實例的標籤,在工作區內必須唯一。", + "namePlaceholder": "生產環境、自託管等", + "never": "從不", + "newInstance": "新建實例", + "newWatcher": "新建監控", + "noCap": "(不限制)", + "noHealthySentryInstanceCheckThe": "沒有健康的 Sentry 實例;請檢查整合設定。", + "noInstancesInWorkspace": "此工作區中沒有 Sentry 實例", + "noInstancesYet": "尚無 Sentry 實例。新增一個實例以連線此工作區。", + "noIssuesYetRunASearch": "暫無議題。執行搜尋以開始。", + "noNewIssuesMatched": "沒有匹配的新議題。", + "noOrganizationsAvailable": "沒有可用組織", + "noProjectsAvailable": "沒有可用專案", + "noProjectsAvailableSentence": "沒有可用專案。", + "noSentryInstancesConfiguredForThis": "此工作區未設定 Sentry 實例。", + "noWatchersConfigured": "尚未設定 Sentry 監控。建立一個監控後,即可根據篩選的議題自動建立任務。", + "orgSlugRequired": "必須填寫組織 slug", + "organization": "組織", + "organizationSlug": "組織短名稱", + "organizationSlugHelp": "要輪詢的 Sentry 組織。", + "pasteAnAuthTokenToTest": "貼上身分驗證權杖以測試連線", + "pause": "暫停", + "paused": "已暫停", + "period": "時間範圍", + "placeholderAssigneeDisplayName": "經辦人顯示名稱", + "placeholderCulprit": "問題源(函式或檔案)", + "placeholderEventCount": "事件總數", + "placeholderFirstSeen": "首次發現議題的時間", + "placeholderIssueLevel": "議題級別", + "placeholderIssueStatus": "議題狀態", + "placeholderIssueTitle": "議題標題", + "placeholderIssueUrl": "Sentry 議題永久連結", + "placeholderLastSeen": "最近發現議題的時間", + "placeholderProjectSlug": "Sentry 專案短名稱", + "placeholderShortId": "Sentry 短 ID", + "placeholderUserCount": "受影響的獨立使用者數", + "pollIntervalHelp": "重新執行搜尋的頻率。最短 60 秒,最長 3600 秒。", + "pollIntervalSeconds": "輪詢間隔(秒)", + "production": "production", + "project": "專案", + "projectSlug": "專案短名稱", + "projectSlugHelp": "要輪詢的 Sentry 專案。可選擇一個或多個。", + "projectsSelected_one": "已選擇 {{count}} 個專案", + "projectsSelected_other": "已選擇 {{count}} 個專案", + "promptFieldHelp": "為每個新議題傳送給代理程式的提示詞。輸入 {{token}} 可插入佔位符。", + "query": "查詢", + "queryExample": "例如 {{query}}", + "queryHelp": "自由文字 Sentry 搜尋查詢(可選)。", + "removeInstanceConfirm": "移除 Sentry 實例「{{name}}」?", + "requiredTokenScopes": "所需權杖範圍", + "resetCompleteDeletedTasks_one": "重置完成--已刪除 {{count}} 個任務;下次輪詢將重新匯入匹配項。", + "resetCompleteDeletedTasks_other": "重置完成--已刪除 {{count}} 個任務;下次輪詢將重新匯入匹配項。", + "resetCompleteNoTasksDeleted": "重置完成--下次輪詢將重新匯入匹配項。", + "resetFailed": "重置失敗:{{error}}", + "resetWatch": "重置監控", + "saveFailed": "儲存失敗:{{error}}", + "savedLeaveBlank": "(已儲存--留空可保持目前值)", + "saving": "正在儲存…", + "scopeEventRead": "議題和事件--瀏覽議題並執行監控", + "scopeOrgRead": "組織--解析組織並列出議題", + "scopeProjectRead": "專案--列出專案並限定搜尋範圍", + "searchProjects": "搜尋專案…", + "selectASentryInstanceToBrowse": "選擇一個 Sentry 實例以瀏覽其議題。", + "selectAnInstance": "選擇實例", + "selectAnInstanceToBrowse": "選擇要瀏覽的實例", + "selectInstanceToSearch": "選擇要搜尋的 Sentry 實例", + "selectOrganization": "選擇組織", + "selectProjects": "選擇專案", + "selectWorkflow": "選擇工作流程", + "selectWorkspace": "選擇工作區", + "sentryInstance": "Sentry 實例", + "sentryInstanceHelp": "此監控輪詢的 Sentry 實例。建立後無法更改。", + "sentryIntegration": "Sentry 整合", + "sentryIntegrationDescription": "將此工作區連線到 Sentry。為每個 Sentry 組織或自託管主機新增一個命名實例;認證資訊會在伺服器端加密儲存。", + "sentryWatcher": "Sentry 監控", + "sentryWatchers": "Sentry 監控", + "sentryWatchersDescription": "輪詢 Sentry 篩選條件,併為每個新匹配的議題自動建立一個 Kandev 任務。", + "statsPeriod": "統計週期", + "statsPeriodHelp": "向前追溯多長時間查詢匹配的議題。", + "statsPeriodLast14Days": "過去 14 天", + "statsPeriodLast24Hours": "過去 24 小時", + "statsPeriodLast30Days": "過去 30 天", + "statsPeriodLast7Days": "過去 7 天", + "statsPeriodLastHour": "過去 1 小時", + "statusIgnored": "已忽略", + "statusResolved": "已解決", + "statusUnresolved": "未解決", + "statuses": "狀態", + "statusesHelp": "單擊可切換。匹配任意一個所選狀態的議題。", + "taskPrompt": "任務提示詞", + "testConnection": "測試連線", + "testFailed": "失敗:{{error}}", + "testing": "正在測試…", + "update": "更新", + "updateFailed": "更新失敗:{{error}}", + "useStepDefault": "(使用步驟預設值)", + "usersCount_one": "使用者 {{count}}", + "usersCount_other": "使用者 {{count}}", + "watchDialogDescription": "使用結構化篩選條件輪詢 Sentry,併為每個新匹配的議題自動建立一個 Kandev 任務。可以繫結儲存庫,讓每個任務在該程式碼庫中執行;也可以留空,讓任務在無儲存庫的情況下執行。", + "watcherCreated": "已建立監控", + "watcherDeleted": "已刪除監控", + "watcherUpdated": "已更新監控", + "workflow": "工作流程", + "workflowHelp": "任務將在此工作流程中建立。", + "workflowStep": "工作流程步驟", + "workflowStepHelp": "新任務的初始步驟。", + "workspaceHelp": "此監控建立的任務會進入所選工作區。", + "yourSentryAuthTokenIsInvalid": "你的 Sentry 驗證權杖無效或已吊銷。請重新連線以檢視此議題。" +} diff --git a/apps/web/src/locales/zh-tw/settings.json b/apps/web/src/locales/zh-tw/settings.json new file mode 100644 index 0000000000..62b825bfdd --- /dev/null +++ b/apps/web/src/locales/zh-tw/settings.json @@ -0,0 +1,696 @@ +{ + "aSecretNameAndValueAreRequired": "需要填寫金鑰名稱和值。", + "aSecretNameIsRequired": "需要填寫金鑰名稱。", + "aboutAffectedKandevMcpTools": "關於受影響的 Kandev MCP 工具", + "accessControl": "存取控制", + "actionsFor": "{{target}} 的操作", + "activeKandevSpritesSpritesAreDestroyed": "活躍的 Kandev 雲沙盒。代理程式停止時會銷燬這些雲沙盒。", + "activeSessions": "活動工作階段", + "activeSprites_one": "{{count}} 個活躍雲沙盒。", + "activeSprites_other": "{{count}} 個活躍雲沙盒。", + "addAMissingToolTabBeside": "在所選拆分割槽域旁新增缺少的工具標籤頁。", + "addAppriseProvider": "新增 Apprise 提供者", + "addCustomEditor": "新增自訂編輯器", + "addEditor": "新增編輯器", + "addPanel": "新增面板", + "addProvider": "新增提供者", + "addSecret": "新增金鑰", + "addTheTabToTheSelected": "將 {{panel}} 標籤頁新增到所選拆分割槽域。", + "affectedKandevMcpTool": "受影響的 Kandev MCP 工具", + "agent": "代理程式", + "agentFallback": "代理程式備援", + "agentFallbackAria": "代理程式備援模型設定", + "agentFallbackDisabledHelper": "已啟用自動備援。關閉後才能選擇一個指定的備援模型。", + "agentFallbackHelper": "如果啟動模型不可用,則自動切換到此模型。", + "agentFallbackHelp": "如果啟動模型不可用,Kandev 只會嘗試此模型。如果此模型也不可用,工作階段將失敗。需要可預測的備援行為時使用此選項。", + "agentFallbackHelpTitle": "代理程式備援", + "agentFallbackInfoLabel": "說明代理程式備援", + "agentFallbackPlaceholder": "選擇備援模型…", + "agentGeneratedTaskTitles": "由代理程式產生任務標題", + "agentGeneratedTaskTitlesDescription": "啟用後,新建任務和子任務表單會隱藏手動標題欄位,並要求填寫提示詞。Kandev 會立即使用提示詞的前六個詞產生臨時標題,然後讓代理程式將其替換為約三個詞的簡潔標題。如果代理程式無法重新命名任務,你仍可編輯臨時標題。現有任務和經過編輯的任務會繼續顯示常規標題欄位。", + "agentGeneratedTaskTitlesDisabledHint": "預設關閉;請先儲存此設定,再開啟建立對話方塊。", + "apiTokenIsConfigured": "API 權杖已設定。", + "appearance": "外觀", + "appriseNotInstalled": "Apprise 尚未安裝。你可以稍後新增它,以啟用遠端通知。<2>檢視安裝說明。", + "appriseProvider": "Apprise 提供者", + "appriseServiceUrls": "服務 URL", + "appriseUrlRequired": "至少需要一個 Apprise 服務 URL。", + "archiveConfirmation": "歸檔確認", + "preventAutoStartAgentOnOpen": "開啟任務時不自動啟動代理程式", + "preventAutoStartAgentOnOpenHelp": "重新啟動後,或從工作流程最後一步開啟任務時,不會自動啟動代理程式,改為顯示「啟動代理程式」按鈕。", + "arrangeSplit": "調整拆分佈局", + "autoApprove": "自動批准", + "autoInstallIfNotFound": "未找到時自動安裝", + "autoStart": "自動啟動", + "autoStartLanguageServersWhenOpening": "開啟檔案時自動啟動語言伺服器,以擷取診斷、懸停資訊和轉到定義功能。你也可以按檔案分別開關每個伺服器。", + "autoFallback": "自動備援到下一個模型", + "autoFallbackHelper": "啟動模型不可用時,讓代理程式選擇下一個可用模型,而不是直接失敗。啟用後會停用明確指定的備援模型。", + "autoFallbackHelp": "如果啟動模型不可用,Kandev 會讓代理程式從其餘已公佈的模型中選擇。可用性變化時,所選模型也可能變化。", + "autoFallbackHelpTitle": "自動備援", + "autoFallbackInfoLabel": "說明自動備援", + "autoStartLanguageServer": "自動啟動 {{language}} 語言伺服器", + "builtIn": "內建", + "builtInBrowserPanel": "內建瀏覽器面板", + "cancel": "取消", + "changelogNotificationsDescription": "控制頂欄中的釋出說明通知", + "changelogPageDescription": "檢視所有釋出並管理通知偏好", + "changelogReleaseHistory": "釋出歷史", + "changelogReleaseHistoryDescription": "所有版本及其釋出說明", + "changelogResetSeenDescription": "清除上次檢視的版本,使頂欄通知再次出現", + "changelogResetSeenLabel": "重置已檢視釋出", + "changelogTopbarDescription": "啟用後,有新版本釋出時頂欄會顯示閃光圖示", + "changelogTopbarLabel": "有新發布時顯示通知", + "changelogTopbarTitle": "頂欄釋出通知", + "changesPanel": "變更面板", + "changesPanelLayout": "變更面板佈局", + "changesTheLanguageOfTheKandev": "更改 Kandev 介面的語言。更改會立即生效,並記住在此裝置上。任務標題、聊天以及你建立的其他內容不會翻譯。", + "chatInput": "聊天輸入", + "chooseAMonospaceFontForThe": "為終端選擇等寬字型。Nerd Fonts 包含 CLI 工具所需的圖示。", + "chooseHowDeepTheSettingsMenuGoes": "選擇設定選單僅列出頁面,還是將工作區、代理程式和執行器展開為其中的具體內容。", + "chooseTheLanguageUsedAcrossThe": "選擇 Kandev 介面使用的語言", + "chooseWhatOpensWhenKandevStarts": "選擇 Kandev 啟動時或存取其不帶路徑的主頁時開啟的內容", + "chooseWhichTranscriptNavigationControls": "選擇要顯示的對話記錄導覽控制項,包括僅限桌面的固定提示欄", + "clearSettingsSearch": "清除設定搜尋", + "clearShortcut": "清除快捷鍵", + "clickAShortcutToRecordA": "點選快捷鍵以錄製新的按鍵組合。", + "clickAUrlInTheTerminal": "在終端中點選 URL 即可開啟。", + "cmdCtrlEnterToSend": "按 Cmd/Ctrl+Enter 傳送", + "collectExecutionEnvironmentMetrics": "收集執行環境指標", + "colorTheme": "顏色主題", + "command": "命令", + "completeTheRequiredEditorFieldsBefore": "儲存前請填寫必需的編輯器欄位。", + "configChatAgentDescription": "選擇用於設定聊天的代理程式設定檔。此代理程式可管理你的工作流程、代理程式設定檔與 MCP 設定。", + "configChatAgentNoDefault": "無預設", + "configChatAgentTitle": "設定聊天代理程式", + "configureArchiveSafeguardsAndDefaultsFor": "設定代理程式建立任務時的歸檔保護和預設設定", + "configureBackendAndExecutionResourceSampling": "設定後端和執行資源取樣", + "configureStatusBarVisibility": "選擇是否顯示 Kandev 的狀態區域", + "configureChatInputBehavior": "設定聊天輸入行為", + "configureSpritesApiToken": "在執行器設定檔中設定 <1>{{envVar}} 環境變數,並引用儲存 Sprites.dev API 權杖的金鑰。", + "configureTerminalAppearanceAndBehavior": "設定終端外觀和行為", + "configureTheIncludedCodeEditorAnd": "設定內建程式碼編輯器和外部編輯器", + "configureTheInitialDesktopTaskWorkbench": "設定桌面任務工作區的初始佈局。", + "confirmBeforeArchivingTasks": "歸檔任務前確認", + "connectKandevToThirdPartyServices": "將 Kandev 連線到第三方服務。連線範圍與可用設定顯示在各整合頁面上。", + "connected": "已連線", + "connection": "連線", + "connectionTestFailed": "連線測試失敗", + "connectionTestPassed": "連線測試通過", + "continueEditing": "繼續編輯", + "couldnTSave": "<0> 無法儲存", + "couldnTSave2": "無法儲存", + "couldnTReset": "<0> 無法重置", + "couldnTReset2": "無法重置", + "cpu": "CPU %", + "cpuTemp": "CPU 溫度", + "createANewEditableLayoutBased": "基於「預設」新建可編輯佈局。", + "createANewSplitOfThe": "在所選拆分割槽域的{{direction}}新建拆分割槽域。", + "createASeparateCustomCopyOf": "為所選佈局建立獨立的自訂副本。", + "custom": "自訂", + "customEditorType": "自訂", + "customEditors": "自訂編輯器", + "customEllipsis": "自訂…", + "customFontExample": "例如 \"我的自訂字型\"", + "customizeHowChangedFilesAreDisplayed": "自訂變更檔案的顯示方式", + "customizeHowTheApplicationLooks": "自訂應用外觀", + "customizeKeyboardShortcutsForTheCommand": "自訂命令面板的鍵盤快捷鍵", + "customized": "已自訂", + "dark": "深色", + "decreaseHeight": "減小高度", + "decreaseWidth": "減小寬度", + "default": "預設", + "defaultMenloMonaco": "預設(Menlo / Monaco)", + "defaults": "預設值:", + "delete": "刪除", + "deleteLayoutProfile": "刪除佈局設定", + "deleteLayoutProfileNamed": "刪除 {{name}}?", + "deleteSecret": "刪除金鑰", + "deleteThisCustomLayoutAfterConfirmation": "確認後刪除此自訂佈局。", + "desktopNotifications": "桌面通知", + "desktopNotificationsDescription": "當選定的代理程式回合、問題或辦公室事件發生時通知此裝置。", + "desktopOnlyWhileYouScrollPast": "僅限桌面端。滾動越過最後一條提示時,將縮短後的副本固定到記錄頂部,並提供展開開關。", + "destroyAll": "全部銷燬", + "diagnosticACPNoSessions": "除錯模式下可以下載 ACP 資料,但此帳戶沒有可包含的合格工作階段。", + "diagnosticACPSelectionLimit": "ACP 工作階段最多可選擇十個。", + "diagnosticACPSelectionRequired": "請至少選擇一個符合條件的 ACP 工作階段。", + "diagnosticACPWarning": "ACP 除錯訊息可能包含提示詞、回應、工具呼叫、檔案內容、MCP 資料、從環境中獲得的值以及金鑰。分享前請仔細檢查此 ZIP。", + "diagnosticBackendEvents": "後端日誌包含 Kandev 記錄的啟動、生命週期、API、執行器和錯誤事件。", + "diagnosticBundleCancel": "取消", + "diagnosticBundleCreate": "建立診斷包", + "diagnosticBundleDescription": "Kandev 會向已連線的瀏覽器標籤頁請求其最多三天且數量受限的控制台歷史記錄,將其與保留的後端日誌檔案合併,並下載為一個 ZIP。", + "diagnosticBundleFailed": "診斷包建立失敗。", + "diagnosticBundlePrepareError": "無法準備診斷包。", + "diagnosticBundleTitle": "前端和後端診斷日誌", + "diagnosticBusy": "診斷功能正忙。請在 {{seconds}} 秒後重試。", + "diagnosticClearACPSelection": "清除 ACP 選擇", + "diagnosticCollectingFrontendLogs": "正在收集前端日誌…", + "diagnosticCustomize": "自訂診斷包", + "diagnosticCustomizerDescription": "選擇要包含的證據。預設選擇後端和前端日誌,且不會將任何選擇儲存為偏好設定。", + "diagnosticCustomizerTitle": "自訂診斷包", + "diagnosticFrontendEvents": "前端日誌包含此瀏覽器設定中記錄的控制台錯誤、警告和診斷通知報告。", + "diagnosticIncidentalText": "日誌條目中已寫入的附帶文字不會自動脫敏。分享前請檢查 ZIP。", + "diagnosticNoMessages": "標準診斷包不包含聊天記錄、工作階段訊息或代理程式訊息。", + "diagnosticOpenTask": "在新標籤頁中開啟任務 {{title}}", + "diagnosticPartialZipDownloading": "正在下載部分診斷 ZIP:{{warnings}}", + "diagnosticPartialZipUnavailable": "正在下載部分診斷 ZIP;部分前端日誌不可用。", + "diagnosticPreparingZip": "正在準備 ZIP…", + "diagnosticReviewBeforeSharing": "分享前請檢查", + "diagnosticReviewDescription": "此 ZIP 包含最多三天的後端日誌,以及所連線瀏覽器在本地保留的前端控制台事件。其中可能包含 URL、控制台引數、堆疊、路徑、執行時後設資料和使用者可見錯誤。", + "diagnosticSelectAllACPSessions": "選擇所有 ACP 工作階段", + "diagnosticSelectSessions": "選擇 ACP 工作階段", + "diagnosticSelectedSessions_one": "已選擇 {{count}} 個工作階段", + "diagnosticSelectedSessions_other": "已選擇 {{count}} 個工作階段", + "diagnosticSessionReachable": "可存取", + "diagnosticSessionRetained": "主機已保留", + "diagnosticSessionUnavailable": "不可用", + "diagnosticSessionsDescription_one": "最多選擇 {{count}} 個符合條件的工作階段。無法收集不可用的工作階段。", + "diagnosticSessionsDescription_other": "最多選擇 {{count}} 個符合條件的工作階段。無法收集不可用的工作階段。", + "diagnosticSessionsLoading": "正在載入符合條件的工作階段…", + "diagnosticSourceACP": "ACP 除錯訊息", + "diagnosticSourceACPDescription": "所選工作階段的原始及標準化代理程式協議幀。", + "diagnosticSourceBackend": "後端日誌", + "diagnosticSourceBackendDescription": "最多三天的 Kandev 後端保留日誌檔案。", + "diagnosticSourceFrontend": "前端日誌", + "diagnosticSourceFrontendDescription": "來自已連線瀏覽器標籤頁、數量受限的控制台事件。", + "diagnosticSourceRequired": "請至少選擇一個證據來源。", + "diagnosticSourceRuntime": "執行時索引", + "diagnosticSourceRuntimeDescription": "白名單內的工作階段狀態和執行器後設資料;不包含訊息或提示詞。", + "diagnosticSourcesTitle": "證據來源", + "diagnosticZipDownloading": "診斷 ZIP 正在下載。", + "discardAndLeave": "放棄更改並離開", + "discarding": "正在放棄…", + "disconnected": "已斷開連線", + "discoveryAliasesAgentTaskProfile": "MCP 任務設定,代理程式任務預設", + "discoveryAliasesArchiveConfirmation": "歸檔警告,確認歸檔", + "discoveryAliasesColorTheme": "主題,淺色模式,深色模式,外觀", + "discoveryAliasesDesktopNotifications": "桌面提醒,系統通知", + "discoveryAliasesDisplayLanguage": "語言,翻譯,介面語言", + "discoveryAliasesExternalMcpEndpoints": "MCP URL,HTTP 端點,SSE 端點", + "discoveryAliasesFileEditor": "語言伺服器,LSP,預設編輯器", + "discoveryAliasesKeyboardShortcuts": "快捷鍵,鍵位繫結,鍵盤命令", + "discoveryAliasesLayoutProfiles": "工作區佈局,面板,任務工作臺", + "discoveryAliasesNotificationSound": "通知音,提示音,警報音", + "discoveryAliasesPreferredShell": "shell,zsh,bash,終端 shell", + "discoveryAliasesResourceMetrics": "指標,CPU,記憶體,磁碟,狀態列", + "discoveryAliasesSettingsMenu": "側邊欄,導覽,樹形選單,單分支展開,保留展開,選單", + "discoveryAliasesStartupPage": "主頁,起始頁,啟動頁", + "discoveryAliasesStatusBar": "底欄,狀態面板,連線狀態,外觀", + "discoveryAliasesSubmitShortcut": "傳送鍵,回車傳送,Command Enter", + "discoveryAliasesTerminalFont": "字體系列,字型,等寬", + "discoveryAliasesTerminalFontSize": "文字大小,終端文字", + "discoveryAliasesTerminalLinks": "URL,開啟連結,瀏覽器", + "discoveryAliasesTranscriptNavigation": "錨定提示欄,滾動到提示,記錄自動滾動", + "discoveryAliasesUtilityActions": "標題產生,分支命名,提交資訊,PR 描述", + "discoveryAliasesUtilityDefaultModel": "實用模型,推理模型,預設 AI 模型", + "disk": "磁碟 %", + "diskPath": "磁碟路徑", + "displayChangedFilesAsAFlat": "將變更檔案顯示為包含完整路徑的單層清單,或顯示為資料夾樹。", + "displayLanguage": "顯示語言", + "done": "完成", + "duplicate": "複製", + "duplicateLayout": "複製佈局", + "edit": "編輯", + "editEditor": "編輯 {{name}}", + "editSecret": "編輯金鑰", + "editorName": "編輯器名稱", + "editorType": "編輯器型別", + "editors": "編輯器", + "enableDesktopNotifications": "啟用桌面通知", + "enableNotificationSound": "啟用通知聲音", + "enterAShellPathOrCommand": "輸入代理程式環境中可用的命令直譯器路徑或命令。", + "enterToSend": "按 Enter 傳送", + "externalMcpAvailableTools": "可用工具", + "externalMcpCategoryCount_one": "{{count}} 個類別", + "externalMcpCategoryCount_other": "{{count}} 個類別", + "externalMcpConfigPathOrCli": "{{path}};或執行下方 CLI 命令", + "externalMcpCopied": "已複製", + "externalMcpCopyToClipboard": "複製到剪貼簿", + "externalMcpCopyUrl": "複製 URL", + "externalMcpEndpoints": "端點", + "externalMcpEndpointsDescription": "與 Kandev 使用相同主機與埠。本機代理程式使用 {{localhostHost}};LAN、VPN 與反向代理用戶端使用可達的 Kandev URL。", + "externalMcpGroupAgentProfiles": "代理程式設定檔與 MCP 設定", + "externalMcpGroupAgentProfilesDescription": "管理設定級 MCP 伺服器設定。", + "externalMcpGroupAgents": "代理程式", + "externalMcpGroupAgentsDescription": "檢查並設定代理程式目錄。", + "externalMcpGroupExecutors": "執行器", + "externalMcpGroupExecutorsDescription": "對執行器設定檔進行 CRUD(Docker、獨立、Sprites…)。", + "externalMcpGroupTaskCreation": "任務建立", + "externalMcpGroupTaskCreationDescription": "從外部代理程式建立新的頂層任務或子任務。", + "externalMcpGroupTasks": "任務", + "externalMcpGroupTasksDescription": "列出、移動、歸檔並更新任務狀態。", + "externalMcpGroupWorkflowSteps": "工作流程步驟(列)", + "externalMcpGroupWorkflowStepsDescription": "管理構成工作流程的列。", + "externalMcpGroupWorkspaces": "工作區與工作流程", + "externalMcpGroupWorkspacesDescription": "發現工作區並對工作流程進行 CRUD。", + "externalMcpIntro": "若要從執行在 Kandev <2>外部 的編碼代理程式(例如主機上的 Claude Code、Cursor 或 Codex)管理 Kandev,或從 Kandev 內的 <4>透傳代理程式 管理,請使用此功能。", + "externalMcpIntroPassthrough": "在 Kandev 內以正常模式啟動的代理程式已自動接入 Kandev MCP,無需額外設定。", + "externalMcpOneLiner": "一行命令(寫入 {{path}})", + "externalMcpOpenCodePaths": "{{projectPath}}(專案)或 {{globalPath}}(全域)", + "externalMcpSnippets": "設定片段", + "externalMcpSnippetsDescription": "貼上到代理程式的全域 MCP 設定中。", + "externalMcpSse": "Server-Sent Events(SSE)", + "externalMcpSseHint": "相容舊版 MCP 用戶端的傳輸方式。", + "externalMcpStreamableHttp": "Streamable HTTP", + "externalMcpStreamableHttpHint": "推薦用於 Claude Code、Cursor 和 Codex。", + "externalMcpToolArchiveTask": "歸檔任務。", + "externalMcpToolCount_one": "{{count}} 個工具", + "externalMcpToolCount_other": "{{count}} 個工具", + "externalMcpToolCreateAgentProfile": "建立新代理程式設定檔(模型、自動批准)。", + "externalMcpToolCreateExecutorProfile": "建立帶設定、準備/清理指令碼的設定。", + "externalMcpToolCreateTask": "建立頂層任務,或在明確指定的 {{parentIdParam}} 下建立子任務。", + "externalMcpToolCreateWorkflow": "建立工作流程。", + "externalMcpToolCreateWorkflowStep": "新增帶提示詞、顏色與事件鉤子的新列。", + "externalMcpToolDeleteAgentProfile": "刪除代理程式設定檔。", + "externalMcpToolDeleteExecutorProfile": "刪除執行器設定檔。", + "externalMcpToolDeleteTask": "永久刪除任務。", + "externalMcpToolDeleteWorkflow": "刪除工作流程及其所有步驟(破壞性)。", + "externalMcpToolDeleteWorkflowStep": "刪除步驟(破壞性)。", + "externalMcpToolGetMcpConfig": "讀取設定的 MCP 伺服器對映。", + "externalMcpToolListAgentProfiles": "列出代理程式的設定。", + "externalMcpToolListAgents": "列出已設定的代理程式及其設定。", + "externalMcpToolListExecutorProfiles": "列出執行器的設定。", + "externalMcpToolListExecutors": "列出所有執行器。", + "externalMcpToolListTasks": "列出工作流程中的任務。", + "externalMcpToolListWorkflowSteps": "列出工作流程中的所有步驟。", + "externalMcpToolListWorkflows": "列出工作區中的工作流程。", + "externalMcpToolListWorkspaces": "列出所有工作區。", + "externalMcpToolMoveTask": "將任務移到其他步驟或位置。", + "externalMcpToolReorderWorkflowSteps": "設定步驟 ID 的完整有序清單。", + "externalMcpToolUpdateAgent": "切換 MCP 支援或指定設定檔路徑。", + "externalMcpToolUpdateAgentProfile": "更新名稱、模型或自動批准。", + "externalMcpToolUpdateExecutorProfile": "更新執行器設定檔。", + "externalMcpToolUpdateMcpConfig": "替換設定的 MCP 伺服器對映。", + "externalMcpToolUpdateTaskState": "設定任務狀態:{{states}}。", + "externalMcpToolUpdateWorkflow": "重新命名或更新工作流程。", + "externalMcpToolUpdateWorkflowStep": "編輯步驟設定或事件。", + "externalMcpToolsSummary": "{{tools}},共 {{categories}};展開可預覽外部代理程式能做什麼。", + "externalProviders": "外部提供者", + "externalProvidersDescription": "設定用於遠端通知的外部提供者。", + "failedToConnectToBackend": "無法連線到後端", + "failedToSaveLayoutProfiles": "無法儲存佈局設定", + "fileEditor": "檔案編輯器", + "fileListView": "檔案清單檢視", + "fixInvalidLspServerConfigurationBefore": "儲存前請修復無效的 LSP 伺服器設定。", + "flatList": "單層清單", + "fontFamily": "字型", + "fontSize": "字號", + "frequencySeconds": "頻率(秒)", + "fallbackModelUnavailable": "備用模型已不可用,請另選一個", + "fallbackSettings": "備援設定", + "fallbackSettingsSummaryAutomatic": "已啟用自動備援", + "fallbackSettingsSummaryExplicit": "明確指定的備援:{{model}}", + "fallbackSettingsSummaryStrict": "未設定備援", + "fallbackNoteLive": "此工作階段因設定的模型不可用而以備用模型啟動。(備用)標記僅反映目前工作階段,重新載入後不再顯示。", + "modelFallbackSuffix": "(備用)", + "globalSecrets": "全域金鑰", + "health": "執行狀況", + "hostedUrl": "託管 URL", + "icons": "圖示", + "increaseHeight": "增大高度", + "increaseWidth": "增大寬度", + "inferenceAgentAuthRequired": "登入 {{name}} 以載入模型。", + "inferenceAgentNoModels": "{{name}} 未公佈任何模型。", + "inferenceAgentNotConfigured": "{{name}} 未設定為推理用途。", + "inferenceAgentNotInstalled": "本機未安裝 {{name}} CLI。", + "inferenceAgentProbeFailed": "{{name}} 探測失敗。", + "inferenceAgentProbing": "正在設定 {{name}}…", + "inferenceAgentRefresh": "重新整理", + "inferenceAgentRefreshing": "正在重新整理…", + "inferenceAgentThisAgent": "此代理程式", + "inferenceAgentUnavailable": "{{name}} 已不可用。", + "installed": "已安裝", + "integrationDescriptionAzureDevops": "Azure Boards 工作項與 Azure Repos 提取要求。", + "integrationDescriptionGithub": "PR 審閱佇列、議題監控與 OAuth 認證資訊。", + "integrationDescriptionGitlab": "合併請求建立、討論回覆與自託管主機。", + "integrationDescriptionJira": "Atlassian Cloud 認證資訊與 JQL 議題監控。", + "integrationDescriptionLinear": "個人 API 金鑰與團隊預設值。", + "integrationDescriptionSentry": "驗證權杖、組織/專案預設值與議題瀏覽。", + "hideDisabledAgentProfilesFromNav": "在左側導覽中隱藏已停用的代理程式設定檔", + "hideDisabledAgentProfilesFromNavDescription": "開啟後,已停用但仍保留的代理程式設定檔也會從左側導覽中移除。", + "hideDisabledIntegrationsFromNav": "在左側導覽中隱藏已停用的整合", + "hideDisabledIntegrationsFromNavDescription": "開啟後,即使整合仍已設定,已停用的整合也會從側邊欄和移動選單中移除。", + "invalidJson": "無效 JSON", + "keyboardShortcuts": "鍵盤快捷鍵", + "language": "語言", + "languageServers": "語言伺服器", + "lastVisitedTask": "上次存取的任務", + "layout": "佈局", + "layoutDirectionAbove": "上方", + "layoutDirectionAboveInline": "上方", + "layoutDirectionBelow": "下方", + "layoutDirectionBelowInline": "下方", + "layoutDirectionLeft": "左側", + "layoutDirectionLeftInline": "左側", + "layoutDirectionOfTarget": "{{direction}}(相對於 {{target}})", + "layoutDirectionRight": "右側", + "layoutDirectionRightInline": "右側", + "layoutEditorForProfile": "{{name}} 編輯器", + "layoutProfile": "佈局設定", + "layoutProfileCopyName": "{{name}} 副本", + "layoutProfileDefault": "預設", + "layoutProfileDefaultDescription": "代理程式,並附帶檔案、更改和終端", + "layoutProfileName": "佈局設定名稱", + "layoutProfileNamesMustNotBe": "佈局設定名稱不能為空", + "layoutProfilePlanMode": "計劃模式", + "layoutProfilePlanModeDescription": "代理程式與計劃並排顯示", + "layoutProfilePreviewMode": "預覽模式", + "layoutProfilePreviewModeDescription": "代理程式與瀏覽器並排顯示", + "layoutProfiles": "佈局設定", + "layoutProfilesWereNotSaved": "佈局設定未儲存", + "layoutProfileVsCodeDescription": "代理程式與 VS Code 並排顯示", + "layouts": "佈局", + "ligatures": "連字", + "light": "淺色", + "loading": "載入中…", + "loadingSecrets": "正在載入金鑰…", + "logsPageDescription": "下載一個大小受限的診斷 ZIP,其中包含前端和後端日誌。", + "lspConfigCustomBadge": "自訂", + "lspInstallHintGo": "執行「{{command}}」。需要安裝 Go。", + "lspInstallHintKotlin": "請手動將 {{binary}} 安裝到任務主機的 {{path}} 中。對於本地 Docker 任務,請將其安裝在任務容器內。", + "lspInstallHintPython": "安裝 {{package}}(通過 {{manager}})到 {{dir}}", + "lspInstallHintRust": "從 GitHub Releases 將 {{binary}} 二進位制檔案下載到 {{dir}}", + "lspInstallHintTypescript": "安裝 {{server}} 和 {{runtime}}(通過 {{manager}})到 {{dir}}", + "lspLanguageExperimental": "{{language}}(實驗性)", + "makeTheOriginalDefaultLayoutThe": "將原始「預設」佈局設為新任務的起始佈局。", + "makeTheSelectedSplit40Pixels": "使所選拆分割槽域縮窄 40 畫素。", + "makeTheSelectedSplit40Pixels2": "使所選拆分割槽域加寬 40 畫素。", + "makeTheSelectedSplit40Pixels3": "使所選拆分割槽域縮短 40 畫素。", + "makeTheSelectedSplit40Pixels4": "使所選拆分割槽域增高 40 畫素。", + "makesAgentctlValuesAvailableToPlugins": "使 agentctl 的值可供外掛和其他使用方使用。內建狀態列仍僅由宿主使用。", + "manageApiKeysAndCredentialsSecrets": "管理 API 金鑰和認證資訊。金鑰會以加密形式儲存,並通過執行器設定檔的環境變數注入代理程式環境。", + "globalScope": "全域", + "modelWithValue": "模型:{{model}}", + "settingsMenu": "設定選單", + "settingsMenuAccordion": "單分支展開", + "settingsMenuAccordionDescription": "工作區、代理程式和執行器可逐級展開到其中的內容。開啟一個分支會關閉其他分支,因此選單僅保留目前頁面所在的路徑。", + "settingsMenuFlat": "單層清單", + "settingsMenuFlatDescription": "每個設定頁面顯示為單獨一行,不展開子項。具體工作區、代理程式和執行器需從各自頁面進入。這是預設選項,也是最精簡的選單。", + "settingsMenuPersistent": "保留展開狀態", + "settingsMenuPersistentDescription": "採用相同的樹形結構,但可同時展開多個分支,並在重新整理後保留展開狀態。適合同時檢視多個工作區或代理程式;內容較多時選單會更長。", + "settingsMenuShape": "選單佈局", + "settingsMenuShapePerDevice": "僅適用於此裝置。其他裝置和瀏覽器保留各自的選擇。", + "temperatureWithValue": "溫度:{{temperature}}", + "workspaceScope": "工作區", + "workspaceSecretsDescription": "管理工作區中儲存庫可用的金鑰。共享代理程式設定檔與執行器設定檔只能使用全域金鑰。", + "workspacesAndAccess": "工作區與存取", + "revealSecretNamed": "顯示金鑰 {{name}}", + "hideSecretNamed": "隱藏金鑰 {{name}}", + "editSecretNamed": "編輯金鑰 {{name}}", + "deleteSecretNamed": "刪除金鑰 {{name}}", + "manageSpritesDevRemoteSandboxIntegration": "管理 Sprites.dev 遠端沙盒整合,以便在隔離的雲環境中執行代理程式。", + "manualInstallRequired": "需要手動安裝", + "markMessagesThatArrivedWhileA": "標記任務不可見期間收到的訊息。立即生效。", + "mcpAffectedToolsHelp": "<0>create_task_kandev 會建立單獨任務。<3>spawn_session_kandev 會向目前任務新增工作階段,因此不使用此偏好設定。", + "mcpCreateTaskScope": "<0>create_task_kandev 會建立新任務和子任務。該設定僅在呼叫時未提供 <4>agent_profile_id 時生效。", + "mcpSpawnSessionScope": "<0>spawn_session_kandev 和你自行建立的任務不受影響。明確選擇的設定始終優先。", + "mcpTaskProfileCurrentTask": "目前任務設定", + "mcpTaskProfileCurrentTaskDescription": "新任務使用建立它的任務所用的相同設定。若後續工作需要相同模型和代理程式設定,請選擇此項。這可能會複用費用更高的設定。", + "mcpTaskProfileWorkspaceDefault": "工作區預設代理程式設定檔", + "mcpTaskProfileWorkspaceDefaultDescription": "設定了工作流程代理程式設定檔時,新任務會使用該設定;否則使用接收任務的工作區預設代理程式設定檔。選擇此項可讓代理程式建立的任務使用標準工作區模型,避免意外複用費用較高的代理程式設定檔。", + "memory": "記憶體 %", + "mergeThisSplitIntoTheSplit": "將此拆分割槽域合併到包含 {{target}} 的拆分割槽域。", + "mergeWithTarget": "與 {{target}} 合併", + "messageSubmitKey": "訊息提交快捷鍵", + "metrics": "指標", + "moveTabLeft": "左移標籤頁", + "moveTabRight": "右移標籤頁", + "moveTabToSplit": "將標籤頁移至拆分割槽域", + "moveThisSplitOf": "按{{direction}}移動此拆分割槽域,目標為 {{target}}。", + "moveThisTabIntoANewSplit": "將此標籤頁移到目前拆分割槽域旁的新拆分割槽域中。", + "moveThisTabIntoAnotherExisting": "將此標籤頁移到另一個現有拆分割槽域中。", + "moveThisTabIntoTheSplit": "將此標籤頁移到包含 {{target}} 的拆分割槽域中。", + "moveThisTabOnePositionLeft": "在所在拆分割槽域中將此標籤頁左移一個位置。", + "moveThisTabOnePositionRight": "在所在拆分割槽域中將此標籤頁右移一個位置。", + "mustBeAJsonObject": "必須是 JSON 物件", + "name": "名稱", + "nameEGOpenaiProductionKey": "名稱(例如 OpenAI 生產金鑰)", + "nerdFonts": "Nerd Fonts", + "new": "新建", + "newBrowserTab": "新建瀏覽器標籤頁", + "newCustomEditor": "新建自訂編輯器", + "newLayout": "新建佈局", + "newSecret": "新建金鑰", + "newTaskSessionsWillUseThis": "新的任務工作階段將使用此命令直譯器。現有工作階段繼續使用目前命令直譯器。", + "noActiveSprites": "目前沒有活躍的雲沙盒。", + "noAppriseProviders": "尚未設定 Apprise 提供者。", + "noCustomEditorsYet": "還沒有自訂編輯器。", + "noCustomProfiles": "暫無自訂設定", + "noEditorFound": "未找到編輯器。", + "noMatchingSettings": "沒有匹配的設定", + "noProvidersConfiguredYet": "還沒有設定提供者。", + "noSecretsYetAddYourFirst": "還沒有金鑰。新增第一個金鑰即可開始。", + "notConfigured": "未設定", + "notInstalled": "未安裝", + "notificationEventClarificationRequested": "代理程式需要回答", + "notificationEventClarificationRequestedDescription": "代理程式明確提出問題時通知。", + "notificationEventOfficeInboxItem": "辦公室收件箱專案", + "notificationEventOfficeInboxItemDescription": "有新的收件箱專案需要你處理時通知。", + "notificationEventToggle": "{{event}}({{name}})", + "notificationEventTurnFinished": "代理程式回合已完成", + "notificationEventTurnFinishedDescription": "每個代理程式回合完成後通知。", + "notificationEventUpdateAvailable": "Kandev 有可用更新", + "notificationEventUpdateAvailableDescription": "有更新版本的 Kandev 釋出時通知。", + "notificationEvents": "通知事件", + "notificationEventsDescription": "選擇每種通知型別應接收通知的提供者。", + "notificationPermissionCheckFailed": "Kandev 無法檢查通知權限。請重試,然後檢查瀏覽器或作業系統的通知設定。", + "notificationPermissionEnable": "啟用", + "notificationPermissionEnabled": "已啟用", + "notificationPermissionRetry": "重試", + "notificationSound": "通知聲音", + "notificationSoundDescription": "當選定的代理程式回合、問題或辦公室事件發生時在此裝置上播放聲音。", + "notificationSoundSelect": "通知聲音", + "notificationType": "通知型別", + "notifications": "通知", + "notificationsBlockedInBrowser": "瀏覽器已阻止通知。請在網站設定中啟用通知,然後點選重新整理。", + "notificationsBlockedInOs": "作業系統的應用通知設定已阻止通知。請在那裡啟用通知,然後點選重新整理。", + "notificationsDescription": "設定提供者,並選擇哪些事件應觸發提醒。", + "notificationsNotShowingHint": "如果看不到通知,請檢查作業系統設定並允許此瀏覽器傳送通知。", + "notificationsUnsupported": "此瀏覽器不支援桌面通知。", + "notifyWhenThisEventOccurs": "此事件發生時通知。", + "openKandevTo": "預設檢視", + "openLinksIn": "開啟連結的方式", + "opensAVsCodeRemoteSsh": "使用該協議開啟 VS Code Remote SSH URL(示例:{{example}})。", + "optionalScheme": "可選協議({{schemes}})", + "optionalUsername": "可選使用者名稱", + "overrideSettingsSentToEachLanguage": "通過 <2>{{method}} 覆蓋傳送給每個語言伺服器的設定。JSON 格式。", + "password": "密碼", + "pickTheDefaultShellForTask": "選擇任務工作階段的預設命令直譯器", + "pinTheAgentsLiveTodoChecklistAs": "自動將代理程式的即時待辦清單固定為右側面板中的 Todos 標籤頁。即使關閉此選項,您也可以隨時手動新增 Todos 標籤頁。", + "onlyPinWhenTodoListIsNotEmpty": "僅在待辦清單不為空時固定", + "onlyPinWhenTodoListIsNotEmptyDescription": "僅在工作階段有待辦條目時自動固定。手動新增的 Todos 標籤頁不受影響。", + "pluginShortcuts": "外掛快捷鍵", + "preferredShell": "首選命令直譯器", + "preferences": "偏好設定", + "pressAKeyCombo": "按下按鍵組合…", + "pressCmdCtrlEnterToSend": "按 Cmd/Ctrl+Enter 傳送訊息。按 Enter 換行。", + "pressEnterToSendMessagesPress": "按 Enter 傳送訊息。按 Shift+Enter 換行。", + "previewSound": "試聽聲音", + "profileForTasksCreatedByAgents": "代理程式建立任務時使用的設定", + "programming": "程式設計", + "profileFallbackWillBeUsed": "起始模型 {{model}} 已不可用,將使用備用模型 {{fallback}}。", + "profileStartModelUnavailable": "起始模型 {{model}} 已不可用,請在代理程式設定檔中更改。", + "promptAdd": "新增提示詞", + "promptContentPlaceholder": "提示詞內容", + "promptCreateFailed": "無法建立提示詞", + "promptDelete": "刪除提示詞", + "promptDeleteDescription": "這將永久移除 <2>{{name}}。此操作無法撤銷。", + "promptDeleteFailed": "無法刪除提示詞", + "promptDeleteThisPrompt": "此提示詞", + "promptMentionHelp": "在聊天輸入中使用 <1>{{token}} 可插入提示詞內容。按名稱匹配提示詞並就地展開。", + "promptNamePlaceholder": "提示詞名稱", + "promptSaveFailed": "無法儲存提示詞", + "promptsCustomHeading": "自訂提示詞", + "promptsEmpty": "尚無提示詞。新增第一個提示詞以開始使用。", + "promptsInvalidReason": "提示詞名稱與內容為必填項。", + "promptsLoading": "正在載入提示詞…", + "promptsPageDescription": "為聊天輸入建立可複用的提示詞片段。", + "providerName": "提供者名稱", + "pxRange": "px(8-24)", + "refreshNotificationPermission": "重新整理通知權限", + "refreshPermissionStatus": "重新整理權限狀態", + "remove": "移除", + "removePanel": "移除面板", + "removeThisTabFromTheSaved": "從已儲存佈局中移除此標籤頁。", + "removesTheHostMarkerAndProgress": "移除主機標記和進度條,同時保留指標圖示和值。", + "reset": "重置", + "resetBuiltInLayout": "重置內建佈局", + "resetClearShortcut": "重置(清除快捷鍵)", + "resetToDefault": "恢復預設設定", + "resizeRepositionOrMergeTheSelected": "調整所選拆分割槽域的大小、位置或合併它。", + "resourceMetrics": "資源指標", + "restoreTheOriginalBuiltInLayout": "恢復原始內建佈局並捨棄其覆蓋設定。", + "resumeTheMostRecentlyOpenedTask": "在此裝置上恢復此工作區中最近開啟的任務。", + "retrySave": "重試儲存", + "retryReset": "重試重置", + "runningSprites": "執行中的雲沙盒", + "sameShortcutAs": "與以下項使用相同快捷鍵:{{shortcuts}}", + "saveAndLeave": "儲存並離開", + "saveChanges": "儲存更改", + "saveChangesBeforeLeaving": "離開前儲存更改?", + "saved": "已儲存", + "saving": "正在儲存…", + "savingChanges": "正在儲存更改", + "searchEditors": "搜尋編輯器…", + "searchSettings": "搜尋設定", + "secretValue": "金鑰值", + "secrets": "金鑰", + "security": "安全", + "selectADefaultEditor": "選擇預設編輯器", + "selectAShell": "選擇命令直譯器", + "selectAModel": "選擇模型…", + "sendTestNotification": "傳送測試通知", + "sendTestNotificationFor": "傳送測試通知給 {{name}}", + "serverConfiguration": "伺服器設定", + "setTheFontSizeForThe": "設定終端字號。預設值為 13px。", + "settings": "設定", + "settingsSearchResults_one": "{{count}} 個匹配的設定", + "settingsSearchResults_other": "{{count}} 個匹配的設定", + "shellOptionsUnavailable": "命令直譯器選項不可用", + "showAgentTodoListPanel": "顯示代理程式待辦清單面板", + "showAnchoredPromptBar": "顯示固定提示欄", + "showCleanupDetailsAndSubtaskOptions": "歸檔開始前顯示清理詳情和子任務選項。", + "showHostMetricsInStatusBar": "在狀態列顯示主機指標", + "showNewDividerInTranscripts": "在記錄中顯示「新訊息」分隔線", + "showScrollToLastPrompt": "顯示滾動到最後一條提示按鈕", + "showScrollToStart": "顯示滾動到開頭按鈕", + "showStatusBar": "顯示狀態列", + "showStatusBarDescription": "在 Kandev 底部顯示狀態詳情。在手機上,它們會出現在「狀態」抽屜中。關閉此選項時,連線警告仍會顯示。", + "showTheControlThatJumpsTo": "顯示跳轉到記錄開頭的控制項。", + "showTheJumpControlAfterYour": "當最新提示滾動到記錄上方後顯示跳轉控制項。", + "showThePerSessionButtonThat": "顯示每個工作階段的按鈕,用於臨時開關記錄自動滾動。隱藏該按鈕不會改變預設行為:新記錄仍會自動滾動。", + "showTranscriptAutoScrollControl": "顯示記錄自動滾動控制項", + "showsKandevHostValuesOnlyCollection": "僅顯示 Kandev 主機值。用戶端顯示這些值時才開始收集。", + "simplifiedMetrics": "簡化指標", + "sleepInhibitionActive": "任務正在啟動或執行時處於活動狀態。", + "sleepInhibitionAdminOnly": "只有管理員可以更改此安裝範圍的設定。", + "sleepInhibitionAvailable": "可用;目前沒有活動請求。", + "sleepInhibitionCaveat": "容器、Kubernetes、遠端執行器和常開部署通常應保持關閉。它不會讓顯示器保持喚醒,也不會覆蓋使用者明確執行的休眠操作。", + "sleepInhibitionDescription": "任務正在啟動或執行時,讓 Kandev 後端主機保持可用。", + "sleepInhibitionInfoLabel": "主機休眠防護工作方式", + "sleepInhibitionInfoLinux": "Linux 通過 D-Bus 使用 <0>{{method}} 請求 systemd-logind。沒有正在工作的任務時,Kandev 會關閉返回的檔案。", + "sleepInhibitionInfoMacos": "macOS 執行 <0>{{command}}。<1>{{idleOption}} 選項可防止系統空閒休眠。<2>{{waitOption}} 選項會在後端退出時停止輔助處理程序。", + "sleepInhibitionInfoRelease": "該請求不會讓顯示器保持喚醒,也不會覆蓋使用者明確執行的休眠操作。", + "sleepInhibitionInfoTitle": "Kandev 如何防止主機休眠", + "sleepInhibitionInfoTrigger": "當任一任務正在啟動或執行時,後端會保持一個防休眠請求。", + "sleepInhibitionInfoWindows": "Windows 使用帶系統休眠旗標的 <0>{{api}}。沒有正在工作的任務時,Kandev 會清除該請求。", + "sleepInhibitionLoadFailed": "無法載入主機休眠設定。", + "sleepInhibitionLoading": "正在載入主機休眠設定…", + "sleepInhibitionRequestFailed": "主機休眠請求失敗;任務會正常繼續。", + "sleepInhibitionRetry": "重試載入主機休眠設定", + "sleepInhibitionSaveFailed": "儲存主機休眠設定失敗。", + "sleepInhibitionServiceUnavailable": "主機休眠服務不可用。", + "sleepInhibitionStatusLabel": "主機休眠狀態", + "sleepInhibitionSwitchHint": "預設關閉。此功能可能增加電池或電力消耗,並且隻影響後端主機。", + "sleepInhibitionSwitchLabel": "防止系統空閒休眠", + "sleepInhibitionTitle": "任務執行時防止主機休眠", + "sleepInhibitionUnsupported": "此後端平臺不可用。", + "soundPresetChime": "鐘聲", + "soundPresetDing": "叮聲", + "soundPresetPlim": "輕響", + "soundPresetPop": "啵聲", + "splitTab": "拆分標籤頁", + "spriteHealthCold": "冷卻", + "spriteHealthFailed": "失敗", + "spriteHealthHealthy": "健康", + "spriteHealthRunning": "執行中", + "spriteHealthStarting": "正在啟動", + "spriteHealthStopped": "已停止", + "spriteHealthStopping": "正在停止", + "spriteHealthUnhealthy": "異常", + "spriteHealthUnknown": "未知", + "spritesDevProvidesEphemeralCloudSandboxes": "Sprites.dev 提供臨時雲沙盒,用於遠端執行代理程式。", + "startOnYourSavedKanbanPipelineOrList": "從儲存的看板、流水線或清單檢視開始。", + "startupPage": "啟動頁面", + "statusBar": "狀態列", + "submitShortcut": "提交快捷鍵", + "supportedEditors": "支援的編輯器", + "supportsPlaceholders": "支援佔位符:{{placeholders}}", + "systemDefault": "系統預設", + "systemLoad1Min": "系統負載(1 分鐘)", + "taskActions": "任務操作", + "taskBehavior": "任務行為", + "taskOverview": "任務概覽", + "startModelUnavailable": "已不可用,請另選模型", + "startModelAria": "設定起始模型設定", + "terminal": "終端", + "terminalFont": "終端字型", + "terminalAndEditors": "終端與編輯器", + "terminalFontSize": "終端字號", + "terminalFontSizeMustBeA": "終端字號必須是 8 到 24 之間的數字。", + "terminalLinks": "終端連結", + "testConnection": "測試連線", + "testNotificationBody": "如果你能讀到這條訊息,說明瀏覽器通知正常工作。", + "testNotificationTitle": "測試通知", + "theBuiltInDefaultLayoutWill": "內建「預設」佈局將成為預設佈局。", + "thisAppliesWhenKandevStarts": "這適用於 Kandev 啟動或開啟不帶路徑的主頁時。主頁、返回和工作流程導覽始終開啟任務概覽。", + "thisLayoutIsUsedAsThe": "此佈局將用作新任務的起始佈局。", + "thisPageHasUnsavedChangesSave": "此頁面有未儲存的更改。請儲存、放棄或繼續編輯。", + "thisProfileWillBeRemovedWhen": "儲存時將移除此設定。", + "thisSecret": "此金鑰", + "thisWillPermanentlyRemoveSecret": "此操作將永久移除 <2>{{name}}。此操作無法撤銷。", + "todoListPanel": "待辦清單面板", + "tokens": "權杖", + "transcriptNavigation": "對話記錄導覽", + "tree": "檔案樹", + "unableToConnect": "無法連線。", + "unavailable": "不可用", + "unbound": "未繫結", + "unreadMessages": "未讀訊息", + "untitledLayout": "未命名佈局", + "updateChannel": "更新通道", + "updateChannelDescription": "選擇此託管服務檢查並應用的釋出版本。", + "updateChannelLatestNightly": "最新 Nightly", + "updateChannelLatestRelease": "最新正式版", + "updateChannelNightly": "Nightly", + "updateChannelNightlyDescription": "通過 npm 從 main 擷取的安裝級預釋出構建。應用使用顯示的確切版本。", + "updateChannelRequiresManagedService": "Nightly 更新需要 Kandev 管理的 npm 或 npx 使用者服務。", + "updateChannelRequiresNpmInstallation": "Nightly 更新僅適用於 npm 或 npx 安裝。", + "updateChannelRequiresServiceMetadata": "Nightly 更新需要有效的 Kandev 服務後設資料。", + "updateChannelRequiresUserService": "Nightly 更新僅適用於使用者服務。", + "updateChannelSaveFailed": "無法儲存更新通道。請重試。", + "updateChannelSavingNotice": "在檢查或應用更新前正在儲存通道更改。", + "updateChannelSettingsUnavailable": "更新通道設定不可用。", + "updateChannelStable": "穩定版", + "updateChannelStableDescription": "已簽名的 GitHub 釋出。推薦大多數使用者使用。", + "updateChannelUnavailable": "此安裝無法使用 Nightly 更新通道。", + "updateChannelUnsavedNotice": "檢查或應用更新前請先儲存通道更改。", + "updateChannelUnsupportedServiceManager": "此服務管理器不支援 nightly 更新。", + "uptime": "執行時間", + "useAgentForNewTaskTitles": "使用代理程式產生新任務標題", + "useAsDefault": "設為預設", + "useBuiltInDefault": "使用內建「預設」佈局", + "useThisLayoutAsTheStarting": "將此佈局用作新任務的起始佈局。", + "useThisSettingWhenAnAgent": "當代理程式呼叫會建立任務的 Kandev MCP 工具時使用此設定。如果呼叫未選擇設定,Kandev 必須為新任務分配代理程式設定檔。該設定控制任務的代理程式、模型和設定。", + "usefulWhenKandevIsSelfHosted": "如果 Kandev 部署在遠端伺服器上,這項設定很有用:你可以從全域狀態列或手機端的狀態面板檢視機器資源的簡要資訊。", + "utilityActionsTitle": "操作", + "utilityActionsDescription": "為特定的 Kandev 介面操作覆蓋代理程式設定檔。這些操作不會設定在任務工作階段中執行的代理程式。", + "utilityAddCustomAgent": "新增", + "utilityAgentDescriptionLabel": "描述", + "utilityAgentDescriptionPlaceholder": "簡要描述此代理程式的作用", + "utilityAgentDialogCreate": "建立代理程式", + "utilityAgentDialogCreateTitle": "建立輔助代理程式", + "utilityAgentDialogEditTitle": "編輯輔助代理程式", + "utilityAgentDialogSave": "儲存更改", + "utilityAgentNamePlaceholder": "例如 commit-message", + "utilityAgentPromptHint": "輸入 <1>{{sigil}} 可檢視可用變數並自動完成", + "utilityAgentPromptTemplate": "提示詞模板", + "utilityAgents": "輔助代理程式", + "utilityAgentsPageDescription": "一次性助手執行 Kandev 介面操作,例如產生提交和 PR 文字或增強提示詞。它們與任務工作階段中的代理程式分開。", + "utilityCustomAgentsDescription": "使用自訂提示詞建立你自己的輔助代理程式。", + "utilityCustomAgentsEmpty": "無自訂輔助代理程式。", + "utilityCustomAgentsTitle": "自訂輔助代理程式", + "utilityDefaultModelDescription": "選擇內建實用操作使用的設定。設定包含模型、權限和啟動設定。", + "utilityDefaultModelTitle": "預設輔助代理程式模型", + "utilityAgentProfile": "代理程式設定檔", + "utilitySelectProfile": "選擇設定…", + "utilitySearchProfiles": "搜尋代理程式設定檔…", + "utilityNoProfilesFound": "沒有匹配的代理程式設定檔。", + "utilityNoDefaultProfile": "無預設代理程式設定檔", + "utilityUnavailableProfile": "不可用:{{name}}", + "utilityProfileNeedsRepair": "此設定不可用。請選擇啟用的推理設定。", + "viewAvailableSettings": "檢視可用設定", + "visualEditorUnavailable": "視覺化編輯器不可用", + "vsCodeRemoteSsh": "VS Code Remote SSH", + "whenEnabledInstallYourProjectS": "啟用後,會通過儲存庫設定指令碼安裝專案依賴(例如執行 <2>{{command}}),以避免缺少型別錯誤。", + "externalMcpToolListTaskSessions": "按最近啟動的順序列出任務的所有代理程式工作階段,以便其他工具通過 ID 定位工作階段。" +} diff --git a/apps/web/src/locales/zh-tw/sidebar.json b/apps/web/src/locales/zh-tw/sidebar.json new file mode 100644 index 0000000000..e3ec49bdfc --- /dev/null +++ b/apps/web/src/locales/zh-tw/sidebar.json @@ -0,0 +1,110 @@ +{ + "archivedLoadFailed": "無法載入已歸檔任務", + "collapseAllBranches": "全部摺疊", + "orgChart": "組織架構", + "retry": "重試", + "activeWorkspaceBadge": "活動", + "activity": "活動", + "addAgent": "新增代理程式", + "addProject": "新增專案", + "addWorkspace": "新增工作區", + "agentTopology": "代理程式拓撲", + "apiTokens": "API 權杖", + "applicationStatus": "應用狀態", + "applicationStatusItems": "應用狀態項", + "bulkArchiveFailed_one": "歸檔 {{count}} 個任務失敗", + "bulkArchiveFailed_other": "歸檔 {{count}} 個任務失敗", + "bulkDeleteFailed_one": "刪除 {{count}} 個任務失敗", + "bulkDeleteFailed_other": "刪除 {{count}} 個任務失敗", + "closeSettings": "關閉設定", + "collapseGroup": "摺疊 {{label}}", + "collapseSidebar": "摺疊側邊欄", + "connected": "已連線", + "connectedToKandev": "已連線到 Kandev", + "connecting": "正在連線", + "connectingToKandev": "正在連線到 Kandev", + "connection": "連線", + "connectionError": "連線錯誤", + "connectionErrorDetail": "連線錯誤:{{error}}", + "connectionLost": "連線已斷開", + "connectionLostDescription": "連線已斷開至少 10 秒。即時更新可能已過期。", + "connectionUnavailable": "連線不可用", + "connectionUnstable": "連線不穩定", + "connectionUnstableDescription": "連線不穩定。正在重新連線到 Kandev。", + "costs": "費用", + "disabledBadge": "已停用", + "enabledBadge": "已啟用", + "expandGroup": "展開 {{label}}", + "expandSidebar": "展開側邊欄", + "filtersAndSort": "篩選與排序", + "groupAll": "全部", + "groupMultiRepo": "多儲存庫", + "groupUnassigned": "未分配", + "home": "首頁", + "improveKandev": "完善 Kandev", + "inbox": "收件箱", + "kanban": "看板", + "kandevHome": "Kandev 首頁", + "logOut": "登出", + "maxViews_one": "最多 {{count}} 個", + "maxViews_other": "最多 {{count}} 個", + "nestUnder": "巢狀到「{{title}}」下", + "newKanbanWorkspace": "新建看板工作區", + "newOfficeWorkspace": "新建辦公室工作區", + "newTask": "新建任務", + "newView": "新建檢視", + "newViewUnavailable": "無法新建檢視。{{reason}}", + "noAgentsYet": "尚無代理程式", + "noProjectsYet": "尚無專案", + "noTasksYet": "暫無任務", + "noWorkspaces": "無工作區", + "office": "辦公室", + "offline": "離線", + "openStatus": "開啟狀態", + "pausedBadge": "已暫停", + "pollModeFastLabel": "已聚焦,2 秒輪詢", + "pollModePausedLabel": "無訂閱者", + "pollModeSlowLabel": "已訂閱,30 秒輪詢", + "preferences": "偏好", + "profileAndPassword": "個人資料與密碼", + "projects": "專案", + "queuedPromptCount_one": "{{count}} 條排隊提示", + "queuedPromptCount_other": "{{count}} 條排隊提示", + "quickChat": "快速聊天", + "quickTerminal": "快速終端", + "quickChatTerminals": "終端", + "quickChatNewAgent": "新建代理程式", + "quickChatNewTerminal": "新建終端", + "quickChatClose": "關閉快速聊天", + "quickChatTerminalTab_one": "終端 {{count}}", + "quickChatTerminalTab_other": "終端 {{count}}", + "quickChatCloseTerminal_one": "關閉終端 {{count}}", + "quickChatCloseTerminal_other": "關閉終端 {{count}}", + "quickChatTerminalError": "終端錯誤:{{error}}", + "quickChatTerminalUnknownError": "終端無法啟動。", + "quickChatTerminalConnecting": "正在連線終端…", + "quickChatTerminalExited": "終端已退出。", + "quickChatTerminalExitedWithCode": "終端已退出,程式碼為 {{code}}。", + "quickChatAdd": "新增或切換標籤頁", + "reconnecting": "正在重連", + "reconnectingToKandev": "正在重新連線到 Kandev", + "repositories": "儲存庫", + "resizeSidebar": "調整側邊欄大小", + "routines": "例行程式", + "routing": "路由", + "runErrors_one": "{{count}} 個錯誤", + "runErrors_other": "{{count}} 個錯誤", + "saveDiscardFirst": "請先儲存/丟棄", + "skills": "技能", + "stats": "統計", + "switchWorkspace": "切換工作區", + "tasks": "任務", + "toggleTheme": "切換主題", + "unsavedFilterChanges": "未儲存的篩選更改", + "viewAll": "全部", + "viewAllTasks": "所有任務", + "viewLabel": "檢視:{{name}}", + "whatsNew": "新功能", + "work": "工作", + "workspaceFallback": "工作區" +} diff --git a/apps/web/src/locales/zh-tw/stats.json b/apps/web/src/locales/zh-tw/stats.json new file mode 100644 index 0000000000..b3d08acadd --- /dev/null +++ b/apps/web/src/locales/zh-tw/stats.json @@ -0,0 +1,83 @@ +{ + "activity": "活動", + "activityRange": "活動({{range}})", + "averages": "平均值", + "avgPerTask": "每任務平均 {{duration}}", + "bestMonth": "最佳月份", + "bestWeekday": "最佳工作日", + "bestYear": "最佳年份", + "bucket": "時間桶", + "bucketDay": "天", + "bucketMonth": "月", + "bucketWeek": "周", + "completedCount_one": "已完成 {{count}}", + "completedCount_other": "已完成 {{count}}", + "completedTasksOverTime": "隨時間完成的任務", + "completion": "完成情況", + "completionRate": "完成率", + "copied": "已複製", + "copyStats": "複製統計", + "durationSpan": "跨度 {{duration}}", + "errorLoadingStats": "載入統計失敗:{{error}}", + "filesChangedCount_one": "已更改 {{count}} 個檔案", + "filesChangedCount_other": "已更改 {{count}} 個檔案", + "gitActivity": "Git 活動", + "inProgressCount_one": "進行中 {{count}}", + "inProgressCount_other": "進行中 {{count}}", + "less": "更少", + "longestTasks": "耗時最長的任務", + "meanDurationOfCompletedTurnsExcluding": "已完成回合的平均時長,排除 <1 秒、≥1 小時或無訊息的回合", + "meanMessageCountPerTurnSame": "每回合平均訊息數,排除規則與回合時長相同", + "messagesPerTask": "每任務訊息數", + "messagesPerTurn": "每回合訊息數", + "more": "更多", + "mostCommits": "提交最多", + "mostProductive": "最高產", + "mostTasks": "任務最多", + "mostTime": "耗時最多", + "noCompletedTaskDataYet": "暫無已完成任務資料。", + "noCompletedTasksYet": "暫無已完成任務。", + "noDataYet": "暫無資料。", + "noGitActivityYet": "暫無 Git 活動。", + "noModelUsageDataYet": "暫無模型使用資料。", + "noRepositoryStatsYet": "暫無儲存庫統計。", + "overview": "概覽", + "quickestTasks": "最快的任務", + "rangeAllTime": "全部時間", + "rangeLastMonth": "上個月", + "rangeLastWeek": "上週", + "rankedByActiveDuration": "按活動時長排序", + "repoLeaders": "儲存庫排行", + "repoMessagesCount_one": "{{count}} 條訊息", + "repoMessagesCount_other": "{{count}} 條訊息", + "repoSessionsCount_one": "{{count}} 個工作階段", + "repoSessionsCount_other": "{{count}} 個工作階段", + "repoTasksCount_one": "{{count}} 個任務", + "repoTasksCount_other": "{{count}} 個任務", + "repoTurnsCount_one": "{{count}} 個回合", + "repoTurnsCount_other": "{{count}} 個回合", + "repositoryActivity": "儲存庫活動", + "selectAWorkspaceToViewStatistics": "選擇一個工作區以檢視統計。", + "sessions": "工作階段", + "signal": "訊號", + "statistics": "統計", + "tasks": "任務", + "telemetry": "遙測", + "timeSpent": "耗時", + "toolCalls": "工具呼叫", + "toolShare": "工具佔比", + "topByMessages": "按訊息數", + "topByTurns": "按回合數", + "topModels": "熱門模型", + "topRepositories": "熱門儲存庫", + "totalMessages": "訊息總數", + "totalTurns": "回合總數", + "turnDuration": "回合時長", + "turnsMessagesCount": "{{turns}} 個回合,{{messages}} 條訊息", + "turnsMessagesMiddot": "{{turns}} 個回合 · {{messages}} 條訊息", + "turnsMessagesPerSession": "每工作階段 {{turns}} 個回合 · {{messages}} 條訊息", + "turnsPerTask": "每任務回合數", + "userMsgs": "使用者訊息", + "userShare": "使用者佔比", + "workload": "工作負載" +} diff --git a/apps/web/src/locales/zh-tw/system.json b/apps/web/src/locales/zh-tw/system.json new file mode 100644 index 0000000000..6dd3a98cf6 --- /dev/null +++ b/apps/web/src/locales/zh-tw/system.json @@ -0,0 +1,513 @@ +{ + "aboutArch": "架構", + "aboutBuildTime": "構建時間", + "aboutCommit": "提交", + "aboutDocumentation": "檔案", + "aboutGoVersion": "Go 版本", + "aboutLoading": "載入中…", + "aboutOs": "作業系統", + "aboutPageDescription": "版本、構建後設資料與連結。", + "aboutReportIssue": "報告問題", + "aboutTitle": "關於 Kandev", + "aboutVersion": "版本", + "actionDone": "完成", + "actionFailed": "失敗", + "actionRunning": "執行中…", + "backupsColumnActions": "操作", + "backupsColumnCreated": "建立時間", + "backupsColumnKind": "型別", + "backupsColumnName": "名稱", + "backupsColumnSize": "大小", + "backupsCreate": "建立快照", + "backupsCreateFailed": "建立快照失敗", + "backupsCreateTimeout": "建立快照未在 {{seconds}} 秒內完成", + "backupsCreating": "正在建立…", + "backupsDeleteFailed": "刪除失敗", + "backupsDeleteLabel": "刪除 {{name}}", + "backupsDownloadLabel": "下載 {{name}}", + "backupsEmpty": "尚無備份。版本升級時自動建立,或通過上方按鈕手動建立的快照會顯示在這裡。", + "backupsHelp": "備份是 Kandev 資料庫(任務、工作階段、設定)的完整副本。每次版本升級前 Kandev 會自動建立一份,以便出錯時回滾。你也可以在出廠重置等風險操作前手動建立。", + "backupsKindAuto": "自動", + "backupsKindManual": "手動", + "backupsLoading": "正在載入備份…", + "backupsPageDescription": "儲存在 {{path}} 下的 {{command}} 快照。", + "backupsRestoreLabel": "恢復 {{name}}", + "backupsRetention_one": "磁碟上僅保留最新一份備份。", + "backupsRetention_other": "磁碟上僅保留最新 {{count}} 份備份。", + "backupsTitle": "備份", + "changelogEmpty": "暫無更新日誌條目。", + "changelogViewOnGitHub": "在 GitHub 上檢視", + "close": "關閉", + "createUserDescription": "使用你設定的密碼直接建立帳戶。若希望使用者自選密碼,請改用邀請連結。", + "createUserDisplayName": "顯示名稱", + "createUserEmail": "電子郵件地址", + "createUserFailed": "無法建立使用者。", + "createUserPassword": "密碼", + "createUserRole": "角色", + "createUserSubmit": "建立使用者", + "createUserSubmitting": "正在建立…", + "createUserTitle": "新增使用者", + "databaseDriver": "驅動", + "databaseFactoryReset": "出廠重置", + "databaseFactoryResetHelp": "清除全部 Kandev 資料:任務、工作階段、設定、儲存庫與工作樹。無法撤銷。重置前會先建立備份,但恢復需在重置後使用備份頁面。僅在你希望從頭開始時使用。", + "databaseLastBackup": "上次備份", + "databaseLoading": "正在載入資料庫統計…", + "databaseMaintenanceUnavailable": "SQLite 維護操作對 {{driver}} 不可用。", + "databaseNever": "從未", + "databaseOptimize": "最佳化", + "databaseOptimizeHelp": "讓資料庫重新整理內部索引,使常見查詢保持快速。大量刪除資料後或應用感覺變慢時執行。快速且安全;不更改任何資料。", + "databasePageDescription": "資料庫驅動、大小與可用維護控制項。", + "dataStoragePageDescription": "資料庫統計、備份、磁碟清理和伺服器日誌。", + "databasePath": "路徑", + "databaseRunOptimize": "執行最佳化", + "databaseRunVacuum": "執行 vacuum", + "databaseSchemaVersion": "架構版本", + "databaseSize": "大小", + "databaseSizeLong": "資料庫大小", + "databaseTitle": "資料庫", + "databaseVacuum": "Vacuum", + "databaseVacuumHelp": "回收資料庫檔案中的未用空間。刪除任務或工作階段後檔案可能隨時間增大;vacuum 會將其壓縮。隨時可安全執行;不更改任何資料。若資料庫看起來很大,可偶爾執行一次。", + "databaseWal": "WAL", + "databaseWalHelp": "預寫日誌。SQLite 先將新更改寫入此附屬檔案,再隨時間合併到主資料庫。非零 WAL 大小是正常的;負載下會暫時增大,檢查點時會縮小。執行 vacuum 會將其重置。", + "databaseWhatIs": "什麼是 {{label}}?", + "desktopUpdateFailed": "桌面更新失敗", + "diskCalculating": "正在計算…", + "diskColumnPath": "路徑", + "diskColumnSize": "大小", + "diskComputedAt": "計算於 {{at}}", + "diskOpen": "開啟", + "diskRefresh": "重新整理", + "diskRefreshed": "已重新整理", + "diskRefreshHelp": "遍歷 Kandev 資料目錄內的所有子目錄並累計檔案大小。結果會快取幾小時;點選可立即重新計算。大型工作區可能需要幾秒。", + "diskRefreshing": "正在重新整理…", + "diskRowBackups": "備份", + "diskRowDataDir": "資料目錄", + "diskRowQuickChat": "快速聊天", + "diskRowRepos": "儲存庫", + "diskRowSessions": "工作階段", + "diskRowTasks": "任務", + "diskRowWorktrees": "工作樹", + "diskTotal": "總計", + "diskUnmeasuredDirs": "部分目錄無法測量:", + "diskUsageTitle": "磁碟用量", + "dismiss": "關閉", + "factoryResetCompleteBody": "Kandev 資料已清除。請退出並重新啟動應用以全新開始;正在執行的後端仍持有現已清空資料庫的連線,在重啟前不會重建快取。若需回滾,可在備份頁面使用重置前快照。", + "factoryResetCompleteTitle": "出廠重置完成", + "factoryResetFailed": "重置失敗", + "factoryResetPlaceholder": "輸入 {{token}} 以確認", + "factoryResetRequestFailed": "重置請求失敗", + "factoryResetSnapshot": "擦除前會自動在 <1>{{path}} 下建立快照,若改變主意可從備份頁面恢復。", + "factoryResetTitle": "出廠重置", + "factoryResetTypeToConfirm": "輸入 <1>{{token}} 以啟用確認按鈕。擦除完成後需要你退出並重新啟動 Kandev;後端不會自動重啟。", + "factoryResetWipes": "這將清除整個 Kandev 安裝:資料庫、工作樹、儲存庫複製、工作階段、任務與快速聊天工作階段。", + "factoryResetWiping": "正在清除資料…", + "featureToggleDebug": "除錯", + "featureToggleEnv": "環境變數:{{envVar}}", + "featureToggleEnvControlled": "由啟動環境控制", + "featureToggleExperimental": "實驗性", + "featureTogglePendingRestart": "待重啟", + "featureToggleRequiresRestart": "需要重啟", + "featureTogglesLoadError": "無法載入功能開關。", + "featureTogglesLoadFailed": "載入功能開關失敗", + "featureTogglesLoading": "正在載入功能開關…", + "featureToggleSource": "來源:{{source}}", + "featureToggleSourceDefault": "預設", + "featureToggleSourceEnv": "環境變數", + "featureToggleSourceOverride": "已儲存的覆蓋", + "featureTogglesPageDescription": "管理 Kandev 功能與診斷開關。", + "featureTogglesRetry": "重試", + "featureTogglesSaved": "功能開關已儲存", + "featureToggleSwitchLabel": "切換 {{label}}", + "featureToggleUseDefault": "使用預設值", + "healthAllPass": "所有系統檢查通過。", + "healthHealthy": "健康", + "healthIssue": "問題", + "healthIssueCount_one": "{{count}} 個問題", + "healthIssueCount_other": "{{count}} 個問題", + "healthLoading": "正在載入健康檢查…", + "healthPassing": "通過", + "healthSeverityError": "錯誤", + "healthSeverityInfo": "資訊", + "healthSeverityWarning": "警告", + "healthSystemChecks": "系統檢查", + "healthTitle": "健康狀態", + "healthWhatsMonitored": "監控內容", + "host": "主機", + "hostMetrics": "主機指標", + "hostWithLabel": "主機:{{label}}", + "inviteCopied": "邀請連結已複製", + "inviteCopy": "複製邀請連結", + "inviteCreate": "建立邀請連結", + "inviteCreating": "正在建立…", + "inviteDescription": "產生一次性邀請連結。電子郵件地址留空則任何人可用所選角色註冊;填寫電子郵件地址則將邀請繫結到該地址。", + "inviteDone": "完成", + "inviteEmailOptional": "電子郵件地址(可選)", + "inviteFailed": "無法建立邀請。", + "inviteReadyDescription": "將此連結分享給受邀者。僅顯示一次;請立即複製。", + "inviteReadyTitle": "邀請連結已就緒", + "inviteTitle": "邀請使用者", + "inviteUrlLabel": "邀請連結", + "ioLoadHelp": "過去一分鐘內正在執行或等待 CPU 的平均任務數。請將該值與主機的 CPU 核心數進行比較。", + "issuesNeedAttention_one": "{{count}} 個問題需要你關注", + "issuesNeedAttention_other": "{{count}} 個問題需要你關注", + "jobStateDone": "完成", + "jobStateFailed": "失敗", + "jobStateQueued": "已排隊", + "jobStateRunning": "執行中", + "lastUpdateUnknown": "上次更新時間未知", + "licensesCount": "{{visible}} / {{total}}", + "licensesEmpty": "沒有匹配篩選的條目。", + "licensesFilterPlaceholder": "按名稱、許可證或生態篩選…", + "licensesPageDescription": "隨 Kandev 釋出的每個 npm 與 Go 依賴的開源許可證。", + "licensesSource": "來源", + "licensesStaleWarning": "因產生失敗,Go 許可證條目複用了已提交的清單。在 go-licenses 正常時請重新產生以重新整理 Go 依賴資料。", + "licensesTitle": "第三方許可證", + "licensesToggleLabel": "顯示 {{name}} 的許可證文字", + "messageQueueAdminOnly": "只有管理員可以更改此設定。", + "messageQueueConfigured": "已設定:", + "messageQueueDescription": "控制每個工作階段在新工作被拒絕前可以容納多少條待處理訊息。", + "messageQueueEffective": "目前生效:", + "messageQueueEffectiveHelp": "目前生效值會立即用於新的接納操作。降低此值不會清理已有的排隊條目。", + "messageQueueEnvironmentLockTitle": "由環境管理", + "messageQueueEnvironmentLocked": "{{variable}} 會覆蓋已儲存的設定。請更改環境值並重啟 Kandev,之後才能在此處再次編輯。", + "messageQueueLimitDescription": "此限制會立即應用於新接納的訊息。降低限制不會移除已在等待的訊息,已接受的投遞重試仍然安全。", + "messageQueueLimitTitle": "每工作階段佇列上限", + "messageQueueLoadFailed": "無法載入訊息佇列設定。", + "messageQueueLoading": "正在載入訊息佇列設定…", + "messageQueueMaximumLabel": "每個工作階段的最大訊息數", + "messageQueueMergeDescription": "可在代理程式取用前,將一條排隊訊息合併到正上方的訊息中,把連續相關的跟進內容合成一輪。", + "messageQueueMergeNotice": "僅同一傳送方的相鄰訊息可合併:你自己的排隊訊息可互相合並;另一任務的代理程式排隊的訊息僅在來源任務相同時可合併。工作流程、系統與進行中的訊息永遠不可合併。若兩條訊息合併後、去重後的實體引用合計超過 100(每條訊息的共享上限),合併也會被拒絕。關閉後會立即隱藏合併控制項,不影響已合併的訊息。", + "messageQueueMergeToggleLabel": "啟用排隊訊息合併", + "messageQueueRetry": "重試", + "messageQueueSaveFailed": "儲存訊息佇列設定失敗。", + "messageQueueSourceDefault": "預設值", + "messageQueueSourceEnvironment": "環境", + "messageQueueSourceSetting": "已儲存的設定", + "messageQueueTitle": "訊息佇列", + "messageQueueUnlimited": "無限制", + "messageQueueUnlimitedHelp": "設定為 0 表示無限制。正整數表示一個工作階段中待處理訊息達到該數量後拒絕新訊息。", + "messageQueueValidation": "請輸入大於或等於 0 的整數。", + "metricCpuPercent": "CPU", + "metricCpuTemp": "CPU 溫度", + "metricDiskPercent": "磁碟", + "metricIoLoad": "系統負載(1 分鐘)", + "metricMemoryPercent": "記憶體", + "metricsUnavailable": "指標不可用", + "navAbout": "關於", + "navBackups": "備份", + "navDatabase": "資料庫", + "navDataStorage": "資料與日誌", + "navFeatureToggles": "功能開關", + "navLicenses": "許可證", + "navLogs": "日誌", + "navUpdates": "更新", + "navUsers": "使用者", + "reloadPage": "重新載入頁面", + "restartAction": "重啟", + "agentRuntimeUnavailableTitle": "本地代理程式執行時已停止", + "agentRuntimeUnavailableBody": "本地執行時停止後,代理程式操作和工作區工具可能不會更新。你儲存的資料仍然安全。", + "agentRuntimeUnavailableRestartRequired": "請完全重啟 Kandev 以恢復執行。", + "agentRuntimeUnavailableRestart": "重啟 Kandev", + "agentRuntimeUnavailableManual": "請從終端或服務管理器重啟 Kandev。", + "agentRuntimeCheckingRestart": "正在檢查重啟支援…", + "restartManualHint": "方便時從終端或服務管理器重啟。", + "restartPendingChanges": "已儲存的開關更改將在下次啟動 Kandev 時生效。", + "restartPhaseDoneBody": "後端已重新執行。請重新載入頁面以使用最新功能開關狀態重新連線。", + "restartPhaseDoneTitle": "Kandev 已重啟", + "restartPhaseErrorBody": "無法完成重啟。", + "restartPhaseErrorTitle": "重啟失敗", + "restartPhaseRestartingBody": "Kandev 正在停止並重新啟動。此頁面會自動檢測新處理程序。", + "restartPhaseRestartingTitle": "正在重啟 Kandev", + "restartPhaseStartingBody": "正在準備本地監督程式重啟請求。", + "restartPhaseStartingTitle": "請求重啟", + "restartRequired": "需要重啟", + "restartStartFailed": "重啟 Kandev 失敗", + "restartSupportDetails": "重啟支援詳情", + "restartSupportedHelp": "當 Kandev 在受支援的本地監督程式下執行時,可從此頁面重啟。", + "restartTimedOut": "重啟耗時超過預期。請重新整理以檢視目前狀態。", + "restartUnsupportedHelp": "在部署預覽、非託管終端執行或不含重啟監督程式的啟動模式下,自動重啟不可用。", + "restoreAction": "恢復", + "restoreBody": "將 <1>{{name}} 覆蓋到目前資料庫。暫存副本就緒後,需要你退出並重新啟動 Kandev 以載入新資料;後端不會自動重啟。", + "restoreCompleteBody": "<0>{{name}} 已寫入目前資料庫。請退出並重新啟動 Kandev 以載入恢復的資料;正在執行的後端仍持有舊版本連線,重啟前會提供過期行。", + "restoreCompleteTitle": "恢復完成", + "restoreFailed": "恢復失敗", + "restorePlaceholder": "輸入 {{token}} 以確認", + "restoreRequestFailed": "恢復請求失敗", + "restoreTitle": "恢復快照", + "restoreTypeToConfirm": "輸入 <1>{{token}} 以啟用確認按鈕。", + "restoreWriting": "正在將快照寫入即時資料庫…", + "selfUpdateDone": "已更新到 {{version}}。", + "selfUpdateDoneUnknown": "已更新到最新版本。", + "selfUpdateFailed": "更新失敗。", + "selfUpdateHelperFailed": "更新助手未能啟動。請檢查服務日誌。", + "selfUpdateInstalling": "正在下載並安裝 {{version}}…", + "selfUpdateInstallingUnknown": "正在下載並安裝新版本…", + "selfUpdateKeepOpen": "請保持此頁面開啟。更新完成後會自動重新整理。", + "selfUpdateRestarting": "正在重啟 Kandev;最多可能需要一分鐘。", + "selfUpdateStartFailed": "啟動更新失敗", + "selfUpdateStarting": "正在開始更新到 {{version}}…", + "selfUpdateStartingUnknown": "正在開始更新到新版本…", + "selfUpdateTimedOut": "更新耗時超過預期。請重新整理以檢視目前版本。", + "settingsRouteNotPorted": "此設定路由由 SPA shell 處理,但其專用用戶端頁面仍在移植中:<1>{{pathname}}", + "setupIssues": "設定問題", + "statusPageDescription": "健康檢查、磁碟用量與版本摘要。", + "storageAcknowledgeDaemon": "確認守護處理程序", + "storageAcknowledgeDedicatedFirst": "請先確認專用 Docker 守護處理程序。", + "storageActionFailed": "儲存操作失敗", + "storageActionPending": "請等待目前儲存操作完成。", + "storageActionsDescription": "分析可得到只讀快照;若要立即回收空間,可執行已啟用的清理規則。", + "storageActionsTitle": "安全回收磁碟空間", + "storageAdoptCache": "接管快取", + "storageAdoptDialogDescription": "將允許 Kandev 輪換並隔離位於 {{path}} 的現有快取。路徑必須為絕對路徑,且與 Kandev 回收站位於同一檔案系統。", + "storageAdoptDialogFallbackPath": "所選路徑", + "storageAdoptDialogTitle": "接管外部 Go 構建快取", + "storageAdoptionPending": "請等待 Go 快取接管完成。", + "storageAnalysisComplete": "分析完成", + "storageAnalysisDescription": "目前用量與可回收空間的只讀分解。偶爾執行「分析」以重新整理估算;它從不刪除或移動任何內容。", + "storageAnalysisFailed": "分析失敗", + "storageAnalysisRunning": "儲存分析仍在執行。", + "storageAnalysisTitle": "儲存分析", + "storageAnalyze": "分析", + "storageAnalyzing": "正在分析…", + "storageBuildCacheKeepHelp": "清理符合條件的記錄時,Docker 大約保留這麼多構建快取。值越大可保留更多可複用層,但回收空間更少。", + "storageBuildCacheKeepLabel": "保留的構建快取(GB)", + "storageBuildCacheUnusedHelp": "僅未使用時長超過此閾值的構建快取記錄符合條件。增大該值可更久地保護近期構建層。", + "storageBuildCacheUnusedLabel": "構建快取須未使用(小時)", + "storageBusyForceHint": "仍執行清理可能會中斷這些活動工作。", + "storageBusyIntro": "清理可能會中斷以下工作:", + "storageBusyTitle": "儲存清理發現活動中的 Kandev 工作", + "storageCheckIntervalHelp": "Kandev 檢查是否應執行計劃維護的頻率。發現 Kandev 忙碌的檢查會被跳過,並在下一間隔重試。", + "storageCheckIntervalLabel": "檢查間隔(小時)", + "storageCleanContainersAria": "清理 Kandev 容器", + "storageCleanDockerBuildCacheAria": "清理 Docker 構建快取", + "storageCleanGoCache": "清理 Go 快取", + "storageCleanTemporaryArtifacts": "清理過期臨時檔案", + "storageCleaning": "正在清理…", + "storageCleanOrphanWorkspacesAria": "清理孤立任務工作區", + "storageCleanUnusedImagesAria": "清理未使用的 Docker 映象", + "storageCleanupComplete": "清理完成", + "storageCleanupFailed": "清理失敗", + "storageCleanupRunning": "儲存清理仍在執行。", + "storageClearEligible": "清除符合條件的項", + "storageClearEligibleDialogTitle": "清除符合條件的隔離項", + "storageContainersDescription": "移除由 Kandev 建立並標記、且已停止未使用的容器。", + "storageContainersHelp": "僅考慮標記為 Kandev 管理的已停止容器,且清單須確認不再需要。執行中的容器與無關 Docker 容器絕不會被此選項移除。", + "storageDedicatedDaemon": "專用 Docker 守護處理程序", + "storageDedicatedDaemonDescription": "確認無關工作負載不共享此 Docker 守護處理程序。", + "storageDedicatedDaemonHelp": "構建快取與映象所有權無法可靠歸屬到 Kandev。此確認會解鎖守護處理程序範圍的清理,僅當設定的 Docker 守護處理程序專用於 Kandev 時才應啟用。Kandev 從不執行卷範圍的 prune。", + "storageDedicatedDialogDescription": "構建快取與未使用映象清理會影響整個設定的守護處理程序,包括 Kandev 以外建立的資源。僅在守護處理程序專用於此安裝時確認。", + "storageDedicatedDialogTitle": "使用此專用 Docker 守護處理程序", + "storageDefaultDockerHost": "預設 Docker 主機", + "storageDelete": "刪除", + "storageDeleteDialogDescription": "此操作無法撤銷。Kandev 將永久移除 {{path}}。", + "storageDeleteDialogFallbackPath": "所選隔離條目", + "storageDeleteDialogTitle": "永久刪除隔離資料", + "storageDeletePermanently": "永久刪除", + "storageDeletionComplete": "刪除完成", + "storageDescription": "檢視磁碟用量,並在安裝需要時從 Kandev 擁有的工作區、快取與 Docker 資源回收空間。", + "storageDockerBuildCache": "Docker 構建快取", + "storageDockerBuildCacheDescription": "移除舊構建快取,同時保留設定的量。", + "storageDockerBuildCacheHelp": "使用 Docker 的年齡與儲存過濾器移除舊構建快取。不會執行 docker system prune,不會全域移除卷,且在確認專用守護處理程序前保持停用。", + "storageDockerDescription": "可選的守護處理程序範圍清理。僅當此 Docker 守護處理程序專用於 Kandev 時啟用。", + "storageDockerImageLayers": "Docker 映象層", + "storageDockerTitle": "Docker 清理", + "storageDockerUnavailable": "設定主機上 Docker 不可用。", + "storageDockerUnavailableBadge": "Docker 不可用", + "storageDockerUnavailableNotice": "Docker 不可用;此主機無法執行 Docker 清理選項。", + "storageDockerUnmeasured": "無法測量 Docker 用量", + "storageDiskTitle": "磁碟容量", + "storageDiskDescription": "包含 Kandev 儲存的檔案系統目前使用情況。", + "storageDiskLoading": "正在載入磁碟容量…", + "storageDiskUnavailable": "磁碟容量暫時不可用。", + "storageDiskUsed": "已滿 {{percent}}%", + "storageDiskUsedSize": "已使用 {{size}}", + "storageDiskCapacitySummary": "可用 {{available}} · 總計 {{total}}", + "storageDiskPath": "儲存路徑", + "storageDiskProgressAria": "磁碟使用率:已滿 {{percent}}%", + "storageDiskHighWarning": "此檔案系統正在變滿(已使用 80% 或更多)。", + "storageDiskCriticalWarning": "此檔案系統已嚴重滿載(已使用 90% 或更多)。", + "storageEligibleNow": "目前符合條件", + "storageEnableGoCacheFirst": "請先啟用託管的 Go 快取。", + "storageEnableManagedGoCacheAria": "啟用託管 Go 快取", + "storageEnterCachePathFirst": "請先輸入絕對快取路徑。", + "storageExternalGoCache": "外部 Go 快取", + "storageExternalGoCacheDescription": "可選允許 Kandev 維護託管路徑外的現有主機快取。", + "storageExternalGoCacheHelp": "接管授予 Kandev 輪換此現有快取的明確權限。除非你接管該精確絕對路徑並確認破壞性存取,Kandev 從不清掃預設使用者快取或其他路徑。", + "storageForceClearAll": "強制全部清除", + "storageForceClearDescription": "嘗試立即永久移除每個隔離項,成功的條目無法撤銷。失敗的條目可能仍可見並可重試。", + "storageForceClearDialogTitle": "強制清除全部隔離", + "storageGoBuildCache": "Go 構建快取", + "storageGoCacheBelowLimit": "Go 構建快取低於設定的大小限制。", + "storageGoCacheMaxHelp": "這是清理觸發閾值,不是硬配額。任務活動時快取可能超過此大小。維護會在超過限制後將所屬快取輪換到隔離區並重建空快取。", + "storageGoCacheMaxLabel": "最大快取大小(GB)", + "storageGoCacheNotOwned": "僅可清理 Kandev 擁有的 Go 構建快取。", + "storageGoCacheSectionDescription": "為新的主機本地執行使用並修剪 Kandev 擁有的快取。", + "storageHistoryEmpty": "尚無儲存維護執行記錄。", + "storageHistoryLoading": "正在載入維護記錄…", + "storageIdleHelp": "計劃清理僅在沒有任何任務、shell 命令、測試、設定、清理或映象構建使用託管資源這麼久之後才啟動。「立即執行」不等待此計時器,但資源活動時仍會拒絕執行。", + "storageIdleLabel": "要求空閒(分鐘)", + "storageKandevContainers": "Kandev 容器", + "storageLastAnalyzed": "上次分析 {{time}}", + "storageLoadingData": "正在載入儲存資料…", + "storageMaintenanceHistory": "維護歷史", + "storageManagedContainerCount_one": "{{count}} 個託管容器", + "storageManagedContainerCount_other": "{{count}} 個託管容器", + "storageManagedGoCache": "託管 Go 快取", + "storageManagedGoCacheDescription": "新的主機本地執行使用 {{path}}。", + "storageManagedGoCacheHelp": "啟用後,Kandev 為新的本地任務處理程序提供專用 Go 構建快取,並在超過最大值時於維護期間輪換。關閉後新執行不再使用託管快取,但不會刪除它。", + "storageMoreInformationAbout": "關於 {{label}} 的更多資訊", + "storageNoEligibleEntries": "尚無符合條件的隔離條目。", + "storageOrphanGraceHelp": "工作區須至少閒置這麼久才可歸類為孤立。增大該值會讓舊工作區在進入隔離前保留更久。", + "storageOrphanGraceLabel": "孤立前等待(小時)", + "storageOrphanWorkspaces": "孤立任務工作區", + "storageOrphanWorkspacesDescription": "將已確認的孤立工作區移至隔離區。", + "storageOrphanWorkspacesHelp": "僅當清單確認沒有活動任務、環境、工作階段或受保護工作樹使用時,Kandev 才選擇任務工作區。工作區先移至隔離區,可在永久刪除前恢復。", + "storagePolicyDescription": "選擇 Kandev 可自動回收的內容及其須遵守的安全限制。", + "storagePolicyLoadingBlock": "請等待儲存設定載入完成。", + "storagePolicyTitle": "維護策略", + "storageProtectedUntil": "保護至 <1>{{deadline}}", + "storagePurgeEligibleCount_one": "這將永久移除 {{count}} 個符合條件的項。", + "storagePurgeEligibleCount_other": "這將永久移除 {{count}} 個符合條件的項。", + "storagePurgeProtectedCount_one": "{{count}} 個受保護項在保留期限前仍會保留。", + "storagePurgeProtectedCount_other": "{{count}} 個受保護項在保留期限前仍會保留。", + "storageQuarantineCardDescription": "清理會先將可恢復資料移到此處,而不是立即刪除。若仍需要可恢復,確定不需要時可永久刪除。", + "storageQuarantineCleanupRunning": "隔離清理仍在執行。", + "storageQuarantinedResources": "已隔離資源", + "storageQuarantineEligibleCount_one": "目前符合條件 {{count}} 項", + "storageQuarantineEligibleCount_other": "目前符合條件 {{count}} 項", + "storageQuarantineEmpty": "沒有可恢復的隔離資源。", + "storageQuarantineHeading": "隔離區", + "storageQuarantineHelp": "隔離區是 Kandev 的可恢復暫存區。孤立任務工作區與輪換的 Go 快取在刪除前會移到這裡。保留期內可恢復;期限過後,後續維護可能會永久刪除。", + "storageQuarantineLoading": "正在載入隔離區…", + "storageQuarantineMovedAside_one": "{{count}} 項已暫存以便在永久刪除前恢復", + "storageQuarantineMovedAside_other": "{{count}} 項已暫存以便在永久刪除前恢復", + "storageQuarantineProtectedCount_one": "{{count}} 項受保護", + "storageQuarantineProtectedCount_other": "{{count}} 項受保護", + "storageQuarantineRetentionHelp": "清理會先將孤立工作區與輪換的 Go 快取移入 Kandev 回收站,而不是立即刪除。保留期內可恢復;期限過後,後續維護可能會永久刪除。", + "storageQuarantineRetentionLabel": "隔離項保留(小時)", + "storageQuarantineSafetyDescription": "在永久刪除前,將可恢復資源保留一段寬限期。", + "storageQuarantineSafetyTitle": "隔離安全", + "storageQuarantineScheduleOff": "自動隔離清理已關閉。準備好時請手動執行維護或使用隔離操作。", + "storageQuarantineScheduleOn_one": "符合條件的條目會在期限後的首次成功維護中移除(空閒門控允許時每 {{count}} 小時)。", + "storageQuarantineScheduleOn_other": "符合條件的條目會在期限後的首次成功維護中移除(空閒門控允許時每 {{count}} 小時)。", + "storageQuarantineTotal": "隔離區總量:{{size}}", + "storageQuarantineUnmeasured": "無法測量隔離區用量", + "storageRefreshFailed": "重新整理儲存資料:{{message}}", + "storageResourceTypeGoCache": "go 快取", + "storageResourceTypeTaskWorkspace": "任務工作區", + "storageResourceTypeTemporaryArtifact": "臨時檔案", + "storageRestore": "恢復", + "storageRetentionEnds": "保留期結束於 {{deadline}}。", + "storageRunAnyway": "仍然執行", + "storageRunNow": "立即執行", + "storageScheduleDescription": "控制何時允許啟動自動維護。計劃關閉時手動操作仍可用。", + "storageScheduledMaintenance": "計劃維護", + "storageScheduledMaintenanceDescription": "使用已啟用的資源規則定期回收磁碟空間。", + "storageScheduledMaintenanceHelp": "啟用後,Kandev 按設定間隔檢查此策略,並僅在空閒達到要求後啟動。關閉不會停用「分析」或「立即執行」。", + "storageScheduleTitle": "計劃", + "storageSectionUnavailable": "無法載入此儲存區域", + "storageTaskWorkspaces": "任務工作區", + "storageTemporaryArtifacts": "Kandev 臨時檔案", + "storageTemporaryArtifactsActiveCount_one": "{{count}} 個活動中", + "storageTemporaryArtifactsActiveCount_other": "{{count}} 個活動中", + "storageTemporaryArtifactsDialogAction": "移入隔離區", + "storageTemporaryArtifactsDialogDescription": "符合條件的已登記臨時檔案會先移入隔離區,並可在保留期內恢復。活動中或最近建立的檔案會受到保護。", + "storageTemporaryArtifactsDialogTitle": "清理過期的 Kandev 臨時檔案?", + "storageTemporaryArtifactsNoStale": "沒有超過 24 小時的已登記臨時檔案。", + "storageTemporaryArtifactsProtectedCount_one": "{{count}} 個受保護", + "storageTemporaryArtifactsProtectedCount_other": "{{count}} 個受保護", + "storageTemporaryArtifactsStaleCount_one": "{{count}} 個過期可清理", + "storageTemporaryArtifactsStaleCount_other": "{{count}} 個過期可清理", + "storageTemporaryArtifactsStaleBytes": "{{value}} 可清理", + "storageTemporaryArtifactsUnavailable": "無法測量臨時檔案的所有權", + "storageTitle": "儲存", + "storageToastAnalysisStarted": "已開始儲存分析", + "storageToastCacheAdopted": "已接管 Go 構建快取", + "storageToastDeletionStarted": "已開始永久刪除", + "storageToastEligiblePurgeStarted": "已開始符合條件的隔離清理", + "storageToastForcedPurgeStarted": "已開始強制隔離清理", + "storageToastMaintenanceStarted": "已開始儲存維護", + "storageToastPolicySaved": "儲存策略已儲存", + "storageToastQuarantineRestored": "已恢復隔離資源", + "storageTotalCounted": "已統計總量:{{size}}", + "storageTotalPartial": "部分測量結果", + "storageTrashPath": "回收站:{{path}}", + "storageTypeToConfirm": "輸入 <1>{{phrase}} 以繼續。", + "storageTypeToConfirmAria": "輸入 {{phrase}} 以確認", + "storageUnavailableValue": "不可用", + "storageUnusedDockerImages": "未使用的 Docker 映象", + "storageUnusedImagesDescription": "移除沒有任何容器使用的舊映象。", + "storageUnusedImagesDetail": "無任何容器使用且超過設定年齡", + "storageUnusedImagesHelp": "僅當沒有執行中或已停止的容器引用該映象,且其年齡超過設定值時才移除。這是守護處理程序範圍的操作,因此需要專用守護處理程序確認。", + "storageUnusedImagesHoursHelp": "映象須對所有容器未使用且超過此年齡後,Kandev 才可移除。增大該值會更久保留舊映象。", + "storageUnusedImagesHoursLabel": "映象須未使用(小時)", + "storageUserGoBuildCache": "使用者 Go 構建快取", + "storageWorkspacesDescription": "回收 Kandev 能明確識別為不再使用的資源。", + "storageWorkspacesDetail": "寬限期後可回收 {{reclaimable}} · 活動 {{active}}", + "storageWorkspacesTitle": "工作區與容器", + "storageWorkspaceDependencies": "刪除已歸檔或已刪除工作區中的依賴項", + "storageWorkspaceDependenciesDescription": "選擇加入後可刪除依賴目錄,同時保留工作區原始碼和恢復後設資料。", + "storageWorkspaceDependenciesHelp": "啟用並儲存後,Kandev 只會在已歸檔或已刪除且未受保護的 Kandev 任務工作區中遞迴檢查下列目錄。缺失目錄、符號連結、活動或受保護工作區,以及 vendor、target、build、dist、.cache 和 .git 等含義不明確的目錄都會跳過。恢復清理過的工作區後可能需要重新安裝依賴項。", + "storageDependencyFoldersTitle": "Kandev 將檢查的資料夾", + "storageDependencyFoldersDescription": "這些確切的目錄名稱構成完整的清理允許清單。", + "storageDependencyFoldersHelp": "Kandev 會遞迴搜尋這些目錄名稱。缺失目錄會跳過。Kandev 永遠不會處理排除的含義不明確名稱、跟隨符號連結或接受自訂路徑。只有已歸檔或已刪除且未受保護的 Kandev 工作區符合條件,恢復後可能需要重新安裝依賴項。", + "storageCleanWorkspaceDependencies": "清理工作區依賴項", + "storageEnableWorkspaceDependenciesAndSave": "請先啟用並儲存依賴清理設定,再執行清理。", + "systemMetrics": "系統指標", + "uiStateHelp": "清除儲存在瀏覽器中的佈局與 UI 偏好(面板大小、固定任務、展開分組等)。若應用顯示異常、面板卡住或佈局不對,可使用此選項。任務、工作階段與伺服器資料不受影響;僅影響目前瀏覽器儲存的 UI 狀態。重置後頁面會重新載入。", + "uiStateReset": "重置", + "uiStateResetLabel": "重置瀏覽器佈局", + "uiStateTitle": "UI 狀態", + "updateAvailable": "有可用更新", + "updatedRelative": "更新於 {{relative}}", + "updatesApply": "應用更新", + "updatesApplyConfirmDesktop": "Kandev 將安裝 {{version}} 並重啟桌面應用。", + "updatesApplyConfirmService": "Kandev 將更新到 {{version}},重新安裝使用者服務並重啟。", + "updatesApplyConfirmTitle": "應用更新?", + "updatesCheckNow": "立即檢查", + "updatesCurrentVersion": "目前版本", + "updatesDownloading": "正在下載更新({{downloaded}} 位元組)…", + "updatesDownloadingOfTotal": "正在下載更新({{downloaded}} / {{total}} 位元組)…", + "updatesInstalling": "正在安裝更新…", + "updatesLastChecked": "上次檢查 {{at}}", + "updatesLatestRelease": "最新發布", + "updatesNever": "從未", + "updatesNotificationsHint": "通知偏好在 <2>通知 中管理。", + "updatesPageDescription": "目前版本、最新發布以及完整的 Kandev 更新日誌。", + "updatesReleaseNotes": "釋出說明", + "updatesRetryAfter_one": "已檢查過。請在 {{count}} 秒後重試。", + "updatesRetryAfter_other": "已檢查過。請在 {{count}} 秒後重試。", + "updatesTitle": "更新", + "updatesUpToDate": "Kandev 已是最新。", + "usersAddUser": "新增使用者", + "usersColumnActions": "操作", + "usersColumnEmail": "電子郵件地址", + "usersColumnName": "名稱", + "usersColumnRole": "角色", + "usersColumnStatus": "狀態", + "usersConfirm": "確認", + "usersConfirmDisable": "停用 {{email}}?他們將在所有位置被登出。", + "usersConfirmEnable": "重新啟用 {{email}}?", + "usersConfirmRoleChange": "將 {{email}} 改為 {{role}}?", + "usersDisable": "停用", + "usersEmpty": "尚無使用者。", + "usersEnable": "啟用", + "usersInviteLink": "邀請連結", + "usersLastAdminGuard": "此部署必須至少保留一名活動管理員。", + "usersLoadFailed": "載入使用者失敗。", + "usersLoading": "正在載入使用者…", + "usersMakeAdmin": "設為管理員", + "usersMakeMember": "設為成員", + "usersPageDescription": "管理此實例的帳戶、角色與邀請連結。", + "usersRoleAdmin": "管理員", + "usersRoleMember": "成員", + "usersStatusActive": "活動", + "usersStatusDisabled": "已停用", + "usersTakesEffectImmediately": "{{email}};立即生效。", + "usersTitle": "使用者", + "usersUpdateFailed": "無法更新使用者", + "versionCurrent": "目前", + "versionLatest": "最新", + "versionTitle": "版本", + "versionViewUpdates": "檢視更新" +} diff --git a/apps/web/src/locales/zh-tw/task.json b/apps/web/src/locales/zh-tw/task.json new file mode 100644 index 0000000000..7bf121ab18 --- /dev/null +++ b/apps/web/src/locales/zh-tw/task.json @@ -0,0 +1,1518 @@ +{ + "agentCliNotInstalled": "未安裝代理程式 CLI", + "agentProbeFailed": "代理程式探測失敗", + "aPullRequestAlreadyExistsFor": "此任務已存在提取要求", + "archivedTask": "已歸檔任務", + "aSharedDocumentForYouAnd": "供你與代理程式協作制定方案的共享檔案", + "aboutContextWindowSource": "關於上下文視窗來源", + "activeBadge": "活躍", + "activeSessionRepositoryTapToSwitch": "目前工作階段:{{agentLabel}}。儲存庫:{{repositoryLabel}}。點按以切換。", + "activeSessionTapToSwitch": "目前工作階段:{{agentLabel}}。點按以切換。", + "activeSharesForThisSession": "此工作階段的有效分享", + "activeTerminalTapToSwitch": "目前終端:{{label}}。點按以切換。", + "activity": "動態", + "add": "新增", + "addAComment": "新增評論…", + "addACommentFromTheDiff": "從差異或檔案檢視新增評論,然後回到此處審閱併傳送。", + "addAPortThatIsnT": "新增未自動檢測的埠。適用於尚未啟動的服務。", + "addAgent": "新增代理程式", + "addAnOptionalComment": "新增可選評論", + "addAnotherRemoteRepository": "新增另一個遠端儲存庫", + "addAnotherRepository": "新增另一個儲存庫", + "addApprover": "+ 新增審批人", + "addAtLeastOneSource": "請至少新增一個來源。", + "addBlocker": "+ 新增阻塞項", + "addDetailsAboutThisChange": "新增此變更的詳細說明…", + "addFolder": "新增資料夾", + "addLabel": "新增標籤", + "addLabels": "+ 新增標籤", + "addMore": "新增更多", + "addPanel": "新增面板", + "addPortManually": "手動新增埠", + "addRemoteRepository": "新增遠端儲存庫", + "addRepositoriesToWorkspace": "向工作區新增儲存庫", + "addRepository": "新增儲存庫", + "addReviewer": "+ 新增審閱人", + "addShort": "+ 新增", + "addSubIssue": "新增子議題", + "addToWorkspace": "新增到工作區", + "addYourCommentOrInstruction": "新增你的評論或指示…", + "addedRemoved": "新增 {{added}} · 刪除 {{removed}}", + "adding": "正在新增…", + "advanced": "高階", + "afterDuration": ",耗時 {{duration}}", + "agent": "代理程式", + "agentBootFailedToResume": "恢復代理程式 {{agentName}} 失敗", + "agentBootFailedToStart": "啟動代理程式 {{agentName}} 失敗", + "agentBootResumed": "已恢復代理程式 {{agentName}}", + "agentBootResuming": "正在恢復代理程式 {{agentName}}", + "agentBootStarted": "已啟動代理程式 {{agentName}}", + "agentBootStarting": "正在啟動代理程式 {{agentName}}", + "agentCount_one": "{{count}} 個代理程式", + "agentCount_other": "{{count}} 個代理程式", + "agentFallbackName": "代理程式", + "agentHasEncounteredAnError": "代理程式遇到錯誤", + "agentImage": "代理程式映象", + "agentIsRunning": "代理程式執行中", + "agentIsStarting": "代理程式正在啟動", + "agentOutput": "代理程式輸出", + "agentPermissionMode": "代理程式權限模式", + "agentPlan": "代理程式計劃", + "agentProfile": "代理程式設定檔", + "agentProfile2": "代理程式設定檔", + "agentProfileNoLongerExists": "代理程式設定檔已不存在", + "agentRunning": "代理程式執行中", + "agentSetByWorkflow": "由工作流程設定的代理程式", + "agentctl": "Agentctl", + "allChanges": "全部更改", + "allChangesTitle": "全部變更", + "allWorkspaceRepositoriesAdded": "工作區儲存庫均已新增", + "alreadyAdded": "已新增", + "alsoArchiveSubtasks_one": "同時歸檔 {{count}} 個子任務", + "alsoArchiveSubtasks_other": "同時歸檔 {{count}} 個子任務", + "alsoDeleteSubtasks_one": "同時刪除 {{count}} 個子任務", + "alsoDeleteSubtasks_other": "同時刪除 {{count}} 個子任務", + "alwaysAllow": "始終允許", + "amend": "修訂", + "amendCommitMessage": "修訂提交說明", + "amendCommitMessage2": "修訂提交說明", + "amendMessage": "修訂說明", + "amending": "正在修訂…", + "anEnvironmentIsCreatedWhenYou": "在此任務上啟動工作階段時會建立環境。", + "anErrorOccurred": "發生錯誤", + "anUnexpectedErrorOccurred": "發生意外錯誤", + "andMoreFilesTruncated": "…還有更多檔案(已截斷)", + "annotationArea": "區域", + "annotationAreaSized": "區域 {{w}}x{{h}}", + "annotationCount_one": "{{count}} 個標註", + "annotationCount_other": "{{count}} 個標註", + "annotationPin": "圖釘", + "answer": "回答", + "anyUncommittedOrUnpushedChangesAre": "任何未提交或未推送的更改都會丟失。", + "anyUncommittedOrUnpushedChangesIn": "工作區中任何未提交或未推送的更改都會丟失。", + "anyoneWithThisLinkCanView": "任何擁有此連結的人都可以檢視此對話。釋出前請仔細檢查預覽;釋出後,快照會上傳到你帳戶的 GitHub Gist。", + "approve": "批准", + "approveAndContinue": "批准並繼續", + "approveThisAction": "批准此操作?", + "approved": "已批准", + "approvedLowercase": "已批准", + "approvedThisTask": "{{who}} 批准了此任務", + "approvedVerb": "已批准", + "approvers": "審批人", + "archive": "歸檔", + "archiveTaskConfirm": "確定要歸檔「{{taskTitle}}」嗎?", + "archiveTaskTitle": "歸檔任務?", + "archiveTasksConfirm_one": "確定要歸檔 {{count}} 個任務嗎?", + "archiveTasksConfirm_other": "確定要歸檔 {{count}} 個任務嗎?", + "archiveTasksTitle_one": "歸檔 {{count}} 個任務?", + "archiveTasksTitle_other": "歸檔 {{count}} 個任務?", + "archiveTasks_one": "歸檔 {{count}} 個任務", + "archiveTasks_other": "歸檔 {{count}} 個任務", + "askToMakeChanges": "請求修改,@提及檔案", + "askToMakeChangesWithCommands": "請求修改,@提及檔案,執行 /commands", + "assignee": "負責人", + "attachFiles": "附加檔案", + "attachment": "附件", + "attachmentIndexed": "附件 {{index}}", + "attachmentIsTooLarge": "附件過大", + "attachmentLimitReached": "已達附件數量上限", + "attachmentPreview": "附件預覽", + "attachmentSizeKb": "({{size}} KB)", + "attachmentsCanTotalUpTo": "附件總大小最多 {{bytes}}。", + "authentication": "身分驗證", + "authenticationRequiredLogInBeforeResuming": "需要身分驗證,請先登入再恢復", + "authenticationRequiredPleaseLogInVia": "需要身分驗證;請通過終端登入", + "autoMarkReviewedOnScroll": "滾動時自動標記為已審閱", + "autoStart": "自動啟動", + "availableModes": "可用模式", + "awaitingApprovalFromAgents_one": "等待 {{count}} 個代理程式批准", + "awaitingApprovalFromAgents_other": "等待 {{count}} 個代理程式批准", + "awaitingUserResponse": "等待使用者回應 (pending_id={{pendingId}})", + "back": "返回", + "backendRejectedSessionRequest": "後端拒絕了工作階段請求。", + "background": "後台", + "backgroundWorkIsRunning": "後台工作正在執行", + "baseBranch": "基準分支", + "baseBranch2": "基礎分支", + "behindCount": "落後 {{behind}}", + "binaryFile": "二進位制檔案", + "binaryOrEmptyDiff": "{{path}};二進位制或空差異", + "blank": "空白", + "blocked": "已阻塞", + "blockedBy": "被阻塞於", + "blocking": "阻塞中", + "blocks": "阻塞", + "bothVersionsAreEmpty": "(兩個版本均為空)", + "branch": "分支", + "branchBasedOn": "分支 <1>{{branch}},基於 <3>{{base}}", + "branchComparisonAndTaskGitCredentials": "分支比較與任務 Git 認證資訊。", + "branchDetails": "分支詳情", + "branchIsNoLongerAvailable": "分支已不可用", + "branchName": "分支名稱", + "browser": "瀏覽器", + "browserPreview": "瀏覽器預覽", + "buildingPreview": "正在產生預覽…", + "byAuthor": "由 {{author}}", + "byDefaultTheLocalExecutorUses": "預設情況下,本地執行器使用儲存庫的目前檢出。點選可改為從基礎分支建立新分支,從而不改動你的工作樹。", + "cachedInput": "快取輸入", + "cancelAgent": "取消代理程式", + "cancelLeavesWorkspaceUnchangedDetail": "<0>取消會使工作區保持不變。若繼續,該批處理為全有或全無:任一來源失敗時,不會附加任何新來源。", + "cancelTaskTree": "取消任務樹", + "cancelTree": "取消任務樹", + "cancelled": "已取消", + "cancelledTree": "已取消(任務樹)", + "cancelling": "正在取消…", + "cannotMarkDoneAwaitingApprovalFrom": "無法標記為完成:正在等待 {{names}} 的批准", + "cannotMarkDoneAwaitingApprovals": "無法標記為完成:正在等待批准", + "cannotPreviewThisFile": "無法預覽此檔案", + "changeGithubIssue": "更改 GitHub 議題", + "changes": "變更", + "changesDiscarded": "更改已丟棄", + "changesHiddenBanner_one": "另有 {{formattedCount}} 個更改檔案已隱藏;變更集過大,無法完整渲染。", + "changesHiddenBanner_other": "另有 {{formattedCount}} 個更改檔案已隱藏;變更集過大,無法完整渲染。", + "chat": "聊天", + "chooseALinkedPullRequestOr": "選擇已關聯的提取要求或合併請求,在其提供者處開啟。", + "chooseFromSavedOrDiscoveredRepositories": "從已儲存或已發現的儲存庫中選擇。", + "chooseLocalFolder": "選擇本地資料夾", + "chooseLocalGitRepository": "選擇本地 Git 儲存庫", + "chooseRepositoriesOrFoldersToMake": "選擇要在此任務中可用的儲存庫或資料夾。", + "cleanup": "清理", + "clearAllAnnotations": "清除全部標註", + "clickAnywhereToStartWriting": "點選任意位置開始編寫", + "clickRefreshToDetectListeningPorts": "點選重新整理以檢測監聽埠。", + "cloneFromAProviderOrGit": "從提供者或 Git URL 複製。", + "close": "關閉", + "close2": "關閉 {{label}}", + "closeComposeBoxHelp": "關閉編寫框(或在其中按 <1>Esc)。CLI 代理程式終端保持焦點。", + "closeGroup": "關閉分組", + "closeOthers": "關閉其他", + "closePreview": "關閉預覽", + "closeTerminal": "關閉終端?", + "closeTerminal2": "關閉終端", + "closingTerminal": "正在關閉終端", + "cmdEnterToAdd": "⌘+Enter 新增", + "cmdEnterToUpdate": "⌘+Enter 更新", + "codeLanguagePlain": "純文字", + "collapse": "摺疊", + "collapseAll": "全部摺疊", + "collapseLastPrompt": "摺疊上一條提示詞", + "collapsePlan": "摺疊計劃", + "collapseSubtasks": "摺疊子任務", + "collapseToolbar": "摺疊工具欄", + "color": "顏色", + "colorBlue": "藍色", + "colorGreen": "綠色", + "colorOrange": "橙色", + "colorPink": "粉色", + "colorPurple": "紫色", + "colorRed": "紅色", + "colorYellow": "黃色", + "command": "命令", + "commandCopied": "命令已複製", + "commandFailed": "命令失敗", + "commandOutputUnavailable": "命令輸出不可用。", + "commandRunning": "命令執行中", + "commandSucceeded": "命令成功", + "comment": "評論", + "commentCmdShiftC": "評論 (Cmd+Shift+C)", + "commentCount_one": "{{count}} 條評論", + "commentCount_other": "{{count}} 條評論", + "commentOnAgentResponse": "對代理程式回覆發表評論", + "commentOnSelection": "對選中內容發表評論", + "comments": "評論", + "commentsOnFiles_one": "{{files}} 上有 {{count}} 條評論", + "commentsOnFiles_other": "{{files}} 上有 {{count}} 條評論", + "commit": "提交", + "commitChanges": "提交變更", + "commitChangesTitle": "提交變更", + "commits": "提交", + "committed": "已提交", + "committingEllipsis": "正在提交…", + "compare": "比較", + "compareRevisions": "比較 v{{before}} → v{{after}}", + "compareWithCurrent": "與目前比較", + "compareWithPrevious": "與上一個比較", + "comparingAgainstLabel": "比較物件:", + "completed": "已完成", + "completedSuccessfully": "{{operationName}} 已成功完成", + "configureCredentials": "設定認證資訊", + "connectAHealthySentryInstanceIn": "在「設定 → 整合 → Sentry」中連線健康的 Sentry 實例以關聯議題。", + "connectProviderBanner": "在 <2>設定 中連線原始碼控制提供者,以便從你的儲存庫中選擇。", + "connectingTerminal": "正在連線終端…", + "container": "容器", + "contentMarkdownSupported": "內容(支援 Markdown)", + "context": "上下文", + "contextFieldLabel": "上下文", + "contextWindow": "上下文視窗", + "contextWindowNotMeasured": "上下文視窗:未測量使用量", + "contextWindowUsagePendingExplain": "使用資料將在第一輪完成後顯示。", + "contextWindowUsagePendingPercent": "N/A%", + "contextWindowUsagePendingTokens": "N/A / {{size}} 個 token", + "contextWindowUsed": "上下文視窗:已使用 {{percent}}%", + "contextWindowUsedTokens": "{{used}} / {{size}} 個 token", + "control": "Control", + "controlC": "Control C", + "controlD": "Control D", + "copied": "已複製!", + "copied2": "已複製", + "copied3": "已複製 {{label}}", + "copy": "複製", + "copy2": "複製 {{label}}", + "copyAnnotations": "複製標註", + "copyAnnotationsToClipboard": "複製標註到剪貼簿", + "copyCommand": "複製命令", + "copyIdentifier": "複製識別符號", + "copyInitialPrompt": "複製初始提示詞", + "copyMessage": "複製訊息", + "copyMessageToClipboard": "複製訊息到剪貼簿", + "copyPath": "複製路徑", + "copyToClipboard": "複製到剪貼簿", + "copyUrl": "複製 URL", + "copyWorkspacePath": "複製工作區路徑", + "couldNotAddSources": "無法新增來源。你的條目仍保留在此以便重試。", + "couldNotLoadRepositories": "無法載入儲存庫:{{message}}", + "couldNotResolveRemoteRepository": "無法解析遠端儲存庫:{{message}}", + "couldNotSaveStatusBarOrder": "無法儲存狀態列順序", + "couldnTStartASession": "無法啟動工作階段", + "create": "建立", + "createANewBranch": "建立新分支", + "createAsDraft": "建立為草稿", + "createChangeRequest": "建立 {{shortName}}", + "createChangeRequestLong": "建立 {{longName}}", + "createFailed": "建立 {{shortName}} 失敗", + "createNewRepository": "建立新儲存庫", + "createNewTask": "建立新任務", + "createNewWorkspace": "建立新工作區", + "createOnly": "僅建立", + "createSession": "建立工作階段", + "createSubtask": "建立子任務", + "createWithoutStartingAgent": "建立但不啟動代理程式", + "created": "已建立", + "created2": "已建立 {{longName}}", + "createdBy": "建立者", + "createdSuccessfully": "{{longName}} 建立成功", + "creatingEllipsis": "正在建立…", + "creatingFrom": "正在從 <4>{{displayBranch}} 建立 {{shortName}}", + "creatingFromTo": "正在從 <4>{{displayBranch}} 到 <7>{{baseBranch}} 建立 {{shortName}}", + "credentialsAvailableInExecutor": "所選執行器中已提供認證資訊", + "ctrl": "Ctrl", + "current": "目前", + "current2": "目前", + "currentStep": "目前步驟", + "customPrompt": "自訂提示詞", + "customPromptNamed": "自訂提示詞:{{name}}", + "cwd": "cwd:", + "dedicatedPortTunnelAppIsServed": "專用埠隧道。應用在 / 提供,因此資源與路由可正常工作。", + "defaultSubtaskTitle": "{{parent}} / 子任務 {{index}}", + "delete": "刪除", + "delete2": "刪除 {{name}}", + "deleteAgent": "刪除代理程式", + "deleteComment": "刪除評論", + "deleteFolderConfirm": "將永久刪除 <1>{{name}}。此操作無法撤銷。", + "deleteFolderTitle": "刪除資料夾?", + "deleteFolderWithFilesConfirm_one": "將永久刪除 <1>{{name}} 及其內的 <4>{{count}} 個檔案。此操作無法撤銷。", + "deleteFolderWithFilesConfirm_other": "將永久刪除 <1>{{name}} 及其內的 <4>{{count}} 個檔案。此操作無法撤銷。", + "deleteItemsLabel_one": "刪除 {{count}} 項", + "deleteItemsLabel_other": "刪除 {{count}} 項", + "deleteItemsTitle_one": "刪除 {{count}} 項?", + "deleteItemsTitle_other": "刪除 {{count}} 項?", + "deleteLayoutConfirm": "刪除 {{name}}?", + "deleteSession": "刪除工作階段?", + "deleteTaskConfirm": "確定要刪除「{{taskTitle}}」嗎?此操作無法撤銷。", + "deleteTaskTitle": "刪除任務", + "deleteTasksConfirm_one": "確定要刪除 {{count}} 個任務嗎?此操作無法撤銷。", + "deleteTasksConfirm_other": "確定要刪除 {{count}} 個任務嗎?此操作無法撤銷。", + "deleteTasksCount_one": "刪除 {{count}} 個任務", + "deleteTasksCount_other": "刪除 {{count}} 個任務", + "deleteTasksTitle_one": "刪除 {{count}} 個任務", + "deleteTasksTitle_other": "刪除 {{count}} 個任務", + "deletesTheCurrentTaskEnvironmentContainer": "刪除目前任務環境(容器、沙箱和/或工作樹),並在下次執行時強制建立新環境。", + "deleting": "正在刪除…", + "deliverTheseCommentsToTheCli": "將這些評論作為單條訊息投遞到 CLI 代理程式的 stdin;無需開啟聊天框。代理程式收到的 markdown 與在輸入訊息前附加評論時相同。", + "deny": "拒絕", + "describeWhatNeedsToChange": "描述需要變更的內容", + "describeWhatYouWantTheAgent": "描述你希望代理程式做什麼…(@ 插入已儲存的提示詞)", + "describeYourChanges": "描述你的變更…", + "description": "描述", + "description2": "描述", + "destroyTerminalConfirm": "銷燬「{{label}}」?這將終止 PTY 並移除它。", + "detach": "分離", + "detachFromParent": "從父任務分離", + "detachTaskFromParent": "從父任務分離任務?", + "detachWillBecomeTopLevel": "「{{taskTitle}}」將成為頂層任務。其工作流程、子任務與狀態不會改變。", + "detachingChangesTheHierarchyOnlyAccess": "分離僅更改層級。對任何共享工作區的存取保持不變。", + "details": "詳情", + "detected": "已檢測", + "devServer": "開發伺服器", + "diff": "Diff", + "diffSideNew": "新", + "diffSideOld": "舊", + "discard": "丟棄", + "discardAllChangesPermanentlyThisCannot": "永久丟棄全部更改。此操作無法撤銷。", + "discardAllChangesToFiles_one": "將永久丟棄對 {{count}} 個檔案的全部更改。此操作無法撤銷。", + "discardAllChangesToFiles_other": "將永久丟棄對 {{count}} 個檔案的全部更改。此操作無法撤銷。", + "discardChanges": "丟棄更改?", + "discardChanges2": "丟棄更改", + "discardChangesToFile": "將永久丟棄對 <2>{{file}} 的全部更改。此操作無法撤銷。", + "discardCount": "丟棄 {{selectionCount}}", + "discardFailed": "丟棄失敗", + "dismiss": "關閉", + "displayNameOptional": "顯示名稱(可選)", + "documentCount_one": "{{count}} 個檔案", + "documentCount_other": "{{count}} 個檔案", + "documentDeleted": "檔案已刪除", + "documentSaved": "檔案已儲存", + "documents": "檔案", + "documentsAvailable": "可用檔案", + "documentSummary_one": "{{count}} 行 · {{chars}} 個字元", + "documentSummary_other": "{{count}} 行 · {{chars}} 個字元", + "documentSummaryEmpty": "空", + "done": "完成", + "doubleClickToEditOrPress": "雙擊編輯(或按 Enter)", + "doubleClickToKeepThisTab": "雙擊以保持此標籤頁開啟", + "download": "下載", + "downloadingPercent": "正在下載 {{modelLabel}},{{pct}} 百分比", + "draftCreated": "草稿 {{longName}} 已建立", + "dropFilesHere": "將檔案拖放到此處", + "duration": "時長", + "durationValue": "時長:{{duration}}", + "earlierUpdates_one": "更早的更新({{count}})", + "earlierUpdates_other": "更早的更新({{count}})", + "editBranch": "編輯分支 {{branch}}", + "editBranch2": "編輯分支", + "editComment": "編輯評論", + "editMarkdownComment": "編輯 markdown 評論", + "editSummaryLines_one": "{{summary}}({{count}} 行)", + "editSummaryLines_other": "{{summary}}({{count}} 行)", + "editTheMessageForTheMost": "編輯最近一次提交的說明。", + "empty": "(空)", + "emptyGroup": "空分組", + "emptyPlan": "(空計劃)", + "enhancedPromptApplied": "已應用增強提示詞。", + "enhancedPromptInserted": "已插入增強後的提示詞。", + "enterAUrlAboveOrStart": "在上方輸入 URL 或啟動開發伺服器", + "enterAValidPort165535": "輸入有效埠(1-65535),或留空以隨機分配", + "enterAValidPort1655352": "輸入有效埠(1-65535)", + "enterCommitMessage": "輸入提交說明…", + "enterGithubIssueUrlOrNumber": "輸入 GitHub 議題 URL 或編號。", + "enterGithubPrUrlOrNumber": "輸入 GitHub 提取要求 URL 或編號。", + "enterInspectMode": "進入檢查模式", + "enterMessageContent": "輸入訊息內容…", + "enterNewCommitMessage": "輸入新的提交說明…", + "enterRepositoryUrl": "輸入 GitHub、GitLab 或 Azure DevOps 儲存庫 URL。", + "environment": "環境 {{label}}", + "environmentPreparationFailed": "環境準備失敗", + "environmentPrepared": "環境已準備", + "environmentPreparedOnFreshSandbox": "已在全新沙箱上準備環境", + "environmentPreparedWithWarnings": "環境已準備(有警告)", + "environmentReset": "環境已重置", + "environmentResetFailed": "重置失敗:{{error}}", + "environmentSetupFailed": "環境設定失敗", + "environmentSetupFinishedWithErrors": "環境設定完成但有錯誤", + "environmentStateCurrent": "目前狀態:{{state}}", + "error": "錯誤", + "errorData": "錯誤資料", + "eventCount_one": "{{count}} 個事件", + "eventCount_other": "{{count}} 個事件", + "executor2": "執行器", + "executorEnvironmentIsUnavailable": "執行器環境不可用。", + "executorEnvironmentRunning": "執行器環境執行中", + "executorEnvironmentStopped": "執行器環境已停止", + "executorHintDocker": "將從所選基礎分支建立 Docker 容器,並在任務分支上檢出。", + "executorHintLocal": "代理程式將直接在儲存庫上執行。", + "executorHintWorktreeMulti": "將在父資料夾中為每個儲存庫建立 Git 工作樹。代理程式在該父資料夾中執行,以便並排檢視所有工作樹。", + "executorHintWorktreeSingle": "將從基礎分支建立 Git 工作樹。", + "executorProfile2": "執行器設定檔", + "executorSettings": "執行器設定", + "executorSettingsPreparing": "執行器設定,正在準備環境", + "executorSettingsWithStatus": "執行器設定,環境 {{status}}", + "executorTypeLocalDocker": "本地 Docker", + "executorTypeLocalWorktree": "本地(工作樹)", + "executorTypeRemoteDocker": "遠端 Docker", + "executorTypeSpritesSandbox": "Sprites 沙箱", + "executorTypeUnknown": "未知執行器", + "exitCodeShell": "退出碼 {{exitCode}}", + "exitCodeUnavailable": "退出碼不可用", + "exitCodeValue": "退出碼:{{exitCode}}", + "exitInspectMode": "退出檢查模式", + "expandLastPrompt": "展開上一條提示詞", + "expandPlan": "展開計劃", + "expandReview": "展開審閱", + "expandSubtasks": "展開子任務", + "expired": "已過期", + "failed": "失敗", + "failed2": "{{operationName}} 失敗", + "failedAtStep": "失敗於:{{step}}", + "failedToArchiveTask": "歸檔任務失敗", + "failedToChangeCompareBranch": "更改比較分支失敗", + "failedToChangeModel": "更改模型失敗", + "failedToDeleteDocument": "刪除檔案失敗", + "failedToDeleteLayout": "刪除佈局失敗", + "failedToDiscardChanges": "無法放棄更改", + "failedToGenerateContent": "無法產生內容", + "failedToLinkGithubIssue": "關聯 GitHub 議題失敗。", + "failedToLinkGithubPullRequest": "關聯 GitHub 提取要求失敗。", + "failedToLinkTarget": "關聯 {{target}} 失敗。", + "failedToLoad": "{{modelLabel}} 載入失敗", + "failedToLoadDocuments": "載入檔案失敗", + "failedToLoadPreview": "載入預覽失敗。", + "failedToLoadRevision": "載入修訂失敗", + "failedToLoadRevisionContent": "載入修訂內容失敗", + "failedToOpenFile": "開啟檔案失敗", + "failedToPublishShare": "釋出分享失敗。", + "failedToRead": "讀取 {{name}} 失敗", + "failedToRenameBranch": "重新命名分支失敗", + "failedToRenameItem": "重新命名專案失敗", + "failedToRenameTask": "重新命名任務失敗", + "failedToRestorePlan": "恢復計劃失敗", + "failedToResumeSession": "無法恢復工作階段", + "failedToRevokeShare": "撤銷分享失敗。", + "failedToSaveDocument": "儲存檔案失敗", + "failedToSaveLayout": "儲存佈局失敗", + "failedToSendComment": "傳送評論失敗", + "failedToSendComments": "傳送評論失敗", + "failedToSendMessage": "傳送訊息失敗", + "failedToStartTunnel": "無法啟動隧道:{{error}}", + "failedToStartVsCode": "啟動 VS Code 失敗", + "failedToStopTunnel": "無法停止隧道:{{error}}", + "failedToUnarchiveTask": "取消歸檔任務失敗", + "failedToUnlinkGithubIssue": "取消關聯 GitHub 議題失敗。", + "failedToUpload": "上傳 {{name}} 失敗", + "file": "檔案", + "fileChangesTitle": "檔案變更", + "fileCountLabel_one": "{{count}} 個檔案", + "fileCountLabel_other": "{{count}} 個檔案", + "fileNamesCannotContainPathSeparators": "檔名不能包含路徑分隔符", + "filename": "檔名…", + "files": "檔案", + "filesChanged_one": "已更改 <0>{{count}} 個檔案", + "filesChanged_other": "已更改 <0>{{count}} 個檔案", + "filesReviewedCount": "已審閱 {{reviewedCount}} / {{totalFileCount}} 個檔案", + "filterBranches": "篩選分支…", + "filterDimensionArchived": "已歸檔", + "filterDimensionExecutorType": "執行器型別", + "filterDimensionHasDiff": "有 diff", + "filterDimensionHasPr": "有 PR", + "filterDimensionIssueWatch": "議題監控", + "filterDimensionPrReview": "PR 審閱", + "filterDimensionRepository": "儲存庫", + "filterDimensionState": "狀態", + "filterDimensionTitle": "標題", + "filterDimensionWorkflow": "工作流程", + "filterDimensionWorkflowStep": "工作流程步驟", + "filterOpContains": "包含", + "filterOpDoesNotContain": "不包含", + "filterOpHide": "隱藏", + "filterOpIn": "屬於", + "filterOpIs": "是", + "filterOpIsNot": "不是", + "filterOpNotIn": "不屬於", + "filterOpShow": "顯示", + "filterStateBacklog": "待辦池", + "filterStateInProgress": "進行中", + "filterStateReview": "審閱", + "filterTitlePlaceholder": "子字串…", + "filters": "篩選", + "fingerprint": "指紋", + "fix": "修復", + "fixTheMarkedSources": "新增前請先修復標記的來源。", + "folder": "資料夾", + "folderDisplayName": "資料夾顯示名稱", + "forcePush": "強制推送", + "forkANewBranchFromA": "從基礎分支建立新分支(關閉則使用目前檢出)", + "forkANewBranchFromA2": "從基礎分支建立新分支,而非使用目前檢出", + "forkModeANewBranchWill": "分支模式:代理程式執行前將從所選基礎建立新分支。點選可關閉並改用儲存庫的目前檢出。", + "foundFiles_one": "找到 {{count}} 個檔案", + "foundFiles_other": "找到 {{count}} 個檔案", + "freshBranchTooltip": "從所選基礎建立新分支。本地複製中任何未提交更改將被丟棄;若有更改會要求確認。", + "fromAgent": "來自代理程式", + "fromAgentInTask": "來自任務 <1>「{{fullTitle}}」 中的代理程式", + "fromBranch": "來自 {{branch}}", + "fromSessionInTask": "來自工作階段 <1>「{{sessionName}}」,任務 <3>「{{fullTitle}}」", + "fromTask": "來自 {{title}}", + "fullImpactDetails": "完整影響詳情", + "fullSize": "全尺寸 {{alt}}", + "generatingSummary": "正在產生摘要…", + "generationFailed": "產生失敗", + "gitActions": "Git 操作", + "gitPollMode": "Git 輪詢:{{mode}}({{label}})", + "githubIssue": "GitHub 議題", + "githubIssue2": "GitHub 議題", + "githubIssueLinked": "已關聯 GitHub 議題", + "githubIssueNumbered": "GitHub 議題 #{{number}}", + "githubIssueRefPlaceholder": "#1470 或 {{example}}", + "githubIssueUnlinked": "已取消關聯 GitHub 議題", + "githubPrRefPlaceholder": "#1471 或 {{example}}", + "githubPullRequest": "GitHub 提取要求", + "githubPullRequestLinked": "已關聯 GitHub 提取要求", + "gitlabMergeRequest": "GitLab 合併請求", + "goToNextMessage": "轉到下一條訊息", + "goToPreviousMessage": "轉到上一條訊息", + "groupBy": "分組依據", + "groupExecutorType": "執行器型別", + "groupNone": "無", + "groupRepository": "儲存庫", + "groupState": "狀態", + "groupStatusRateLimited": "暫時受到速率限制", + "groupStatusTimeout": "搜尋超時", + "groupStatusUnauthorized": "需要登入", + "groupStatusUnsupportedScope": "此工作區不可用", + "groupStatusUpstreamError": "提供者不可用", + "groupWorkflow": "工作流程", + "groupWorkflowStep": "工作流程步驟", + "handOffToTarget": "移交給 <1>{{label}}", + "handoff": "移交", + "hardReset": "硬重置", + "helpsPreserveCommittedWorkUncommittedChanges": "有助於保留已提交的工作。未提交的更改無法推送。", + "hiddenMessagesInPreview_one": "… 此預覽中還有 {{count}} 條訊息被隱藏(仍包含在分享中)…", + "hiddenMessagesInPreview_other": "… 此預覽中還有 {{count}} 條訊息被隱藏(仍包含在分享中)…", + "hideCommandOutput": "隱藏命令輸出", + "hideDebugInfo": "隱藏除錯資訊", + "hideDetails": "隱藏詳情", + "hideErrorDetails": "隱藏錯誤詳情:{{displayLabel}}", + "hidePreparationDetails": "隱藏準備詳情", + "hidePreviousAgentError": "隱藏先前的代理程式錯誤", + "hideRightPanel": "隱藏右側面板", + "hideRightPanels": "隱藏右側面板", + "hideSidebar": "隱藏側邊欄", + "hideTheCommentListTheComments": "隱藏評論清單。評論仍會排隊,下次提交時仍會傳送(在此處或從聊天框)。", + "host": "主機", + "isolatedWorktreeAt": "隔離工作樹位於 <1>{{path}}", + "iUnderstandAnyUncommittedChangesWill": "我了解任何未提交的更改都將丟失。", + "image": "圖片", + "imagePreview": "圖片預覽", + "imageWithSize": "圖片({{bytes}})", + "implement": "實現", + "implementInFreshAgent": "在新代理程式中實現", + "implementThePlanInThisSession": "在此工作階段中實現計劃", + "includeThePlanAsContext": "將計劃作為上下文包含", + "inheritParentWorkspace": "繼承父任務工作區", + "inputTokens": "輸入 token", + "inspectClickToPinOrDrag": "檢查:點選固定,或拖動以選擇預覽區域", + "inspectingClickToPin": "檢查中;點選固定,拖動選擇區域,Esc 退出", + "invalidName": "無效名稱", + "isTheMaximumFileSizeIs": "{{name}} 大小為 {{size}}。最大檔案大小為 {{maxSize}}。", + "issue": "議題", + "jiraTicket": "Jira 工單", + "jiraTicketLinked": "已關聯 Jira 工單", + "jiraTicketPlaceholder": "PROJ-123 或貼上工單 URL", + "jiraTicketValidationHint": "貼上 Jira 工單 URL 或鍵(PROJ-123)。", + "kandevAskUserQuestion": "Kandev:向使用者提問", + "kandevCreateTask": "Kandev:建立任務", + "kandevCreateTaskPlan": "Kandev:建立任務計劃", + "kandevDeleteTaskPlan": "Kandev:刪除任務計劃", + "kandevGetTaskConversation": "Kandev:擷取任務對話", + "kandevGetTaskDocument": "Kandev:擷取任務檔案", + "kandevGetTaskPlan": "Kandev:擷取任務計劃", + "kandevListAgents": "Kandev:列出代理程式", + "kandevListExecutorProfiles": "Kandev:列出執行器設定檔", + "kandevListRelatedTasks": "Kandev:列出相關任務", + "kandevListTaskDocuments": "Kandev:列出任務檔案", + "kandevListTasks": "Kandev:列出任務", + "kandevListWorkflowSteps": "Kandev:列出工作流程步驟", + "kandevListWorkflows": "Kandev:列出工作流程", + "kandevListWorkspaces": "Kandev:列出工作區", + "kandevMessageTask": "Kandev:向任務傳送訊息", + "kandevMoveTask": "Kandev:移動任務", + "kandevUpdateAvailable": "Kandev 有可用更新", + "kandevUpdateTask": "Kandev:更新任務", + "kandevUpdateTaskPlan": "Kandev:更新任務計劃", + "kandevWriteTaskDocument": "Kandev:寫入任務檔案", + "keepOpen": "保持開啟", + "keepRunning": "繼續執行", + "keyAndContentAreRequired": "鍵與內容為必填", + "keyArrowDown": "向下箭頭", + "keyArrowLeft": "向左箭頭", + "keyArrowRight": "向右箭頭", + "keyArrowUp": "向上箭頭", + "keyDash": "連字元", + "keyEGPlanNotes": "鍵(例如 plan、notes)", + "keyEnd": "End", + "keyEscape": "Escape", + "keyHome": "Home", + "keyPageDown": "Page Down", + "keyPageUp": "Page Up", + "keyPipe": "豎線", + "keySlash": "斜槓", + "keyTab": "Tab", + "keyTilde": "波浪號", + "keyUnderscore": "下劃線", + "labelAlreadyExists": "標籤已存在", + "labelColor": "標籤顏色", + "labelName": "標籤名稱", + "labels": "標籤", + "layoutPresets": "佈局預設", + "lineLevelDiffBetweenTheTwo": "兩個所選版本之間的行級差異。", + "lineNumber": "第 {{line}} 行", + "lineRange": "第 {{start}}-{{end}} 行", + "linearIssue": "Linear 議題", + "linearIssueLinked": "已關聯 Linear 議題", + "linearIssuePlaceholder": "ENG-123 或貼上議題 URL", + "linearIssueValidationHint": "貼上 Linear 議題 URL 或識別符號(ENG-123)。", + "link": "關聯", + "linkGithubIssue": "關聯 GitHub 議題", + "linkGithubPullRequest": "關聯 GitHub 提取要求", + "linkJiraTicket": "關聯 Jira 工單", + "linkJiraTicketDescription": "為此任務使用 Jira 工單鍵或 URL。", + "linkLinearIssue": "關聯 Linear 議題", + "linkLinearIssueDescription": "為此任務使用 Linear 議題識別符號或 URL。", + "linkSentryIssue": "關聯 Sentry 議題", + "linkSentryIssueDescription": "為此任務使用 Sentry 短 ID 或 URL。", + "linkedIssue": "已關聯議題", + "listeningPorts": "監聽埠", + "liveUpdateConsequenceSessionAndProcesses": "<0>工作階段與處理程序:在 Kandev 重新掃描工作區期間,代理程式與正在執行的工作區處理程序會繼續執行。任務、工作階段、任務狀態、訊息、計劃、已附加來源、模型與模式均保持不變。", + "liveUpdateConsequenceWorkspace": "<0>工作區:儲存庫會以命名的頂層條目複製到目前遠端工作區下。代理程式的工作目錄不會改變,現有檔案與 Git 變更不會被移動或丟棄。", + "loadOlderMessages": "載入更早的訊息", + "loading": "載入中…", + "loading2": "載入中…", + "loadingAgentProfiles": "正在載入代理程式設定檔…", + "loadingAgents": "正在載入代理程式…", + "loadingBranches": "正在載入分支…", + "loadingBranches2": "正在載入分支…", + "loadingBranches3": "正在載入分支…", + "loadingChangedFiles": "正在載入已更改檔案…", + "loadingChanges": "正在載入更改…", + "loadingCommandOutput": "正在載入命令輸出…", + "loadingCommit": "正在載入提交…", + "loadingConversation": "正在載入對話…", + "loadingEditor": "正在載入編輯器…", + "loadingFile": "正在載入檔案…", + "loadingFiles": "正在載入檔案…", + "loadingOlder": "正在載入更早內容…", + "loadingOlderMessages": "正在載入更早的訊息…", + "loadingPlan": "正在載入計劃…", + "loadingPreview": "正在載入預覽…", + "loadingProfiles": "正在載入設定…", + "loadingRepositories": "正在載入儲存庫…", + "loadingSessions": "正在載入工作階段…", + "loadingStatus": "正在載入狀態…", + "localCommitNotYetPushed": "本地提交(尚未推送)", + "localCheckoutCommit": "本地檢出提交", + "localCheckoutCommits": "本地檢出提交", + "localGitRepository": "本地 Git 儲存庫", + "login": "登入", + "loginRequired": "需要登入", + "manual": "手動", + "markAsFavorite": "標為收藏", + "markMessageAsFavorite": "將訊息標為收藏", + "maximize": "最大化", + "mcpConnectionStatus": "MCP 連線狀態", + "mcpPolicyLabel": "mcp:", + "mcpServers": "MCP 伺服器", + "mentionTasksFilesPrompts": "提及任務、檔案、提示詞", + "merge": "合併", + "mergeRequest": "合併請求 !{{mriid}}", + "mergeRequestLabel": "合併請求", + "messageCommentCount_one": "{{count}} 條訊息評論", + "messageCommentCount_other": "{{count}} 條訊息評論", + "messageCount_one": "{{count}} 條訊息", + "messageCount_other": "{{count}} 條訊息", + "messageMetadata": "訊息後設資料", + "messageMetadataTitle": "訊息後設資料", + "messageNotSent": "訊息未傳送", + "messageSendStatusUnknown": "訊息傳送狀態未知", + "messageTime": "訊息時間", + "modKeyEnterToAdd": "{{modKey}}+Enter 新增", + "model": "模型", + "monitor": "監控", + "monitorCommand": "監控:{{command}}", + "moreActions": "更多操作", + "moreImplementOptions": "更多實現選項", + "moreNotShown_one": "+ 另有 {{count}} 項未顯示", + "moreNotShown_other": "+ 另有 {{count}} 項未顯示", + "moreToolbarActions": "更多工具欄操作", + "moveFailed": "移動失敗", + "moveFailedFiles": "部分檔案無法移動", + "moveFailedUnexpected": "移動檔案時發生錯誤", + "moveHeadToThisCommitKeep": "將 HEAD 移至此提交。保留所有已暫存更改。", + "moveHere": "移到此處", + "moveTaskToTheNextWorkflow": "將任務移至下一工作流程步驟", + "moveTo": "移動到", + "moving": "正在移動…", + "myLayout": "我的佈局", + "name": "名稱", + "needsInput": "需要輸入", + "nestUnder": "巢狀到", + "new": "新建", + "newAgent": "新建代理程式", + "newAgentInTask": "在 <1>{{title}} 中新建代理程式", + "newDocument": "新建檔案", + "newFile": "新建檔案", + "newMessages": "新訊息", + "newSession": "新工作階段", + "newSession2": "新工作階段", + "newSubTask": "新建子任務", + "newSubtaskFor": "新建子任務:", + "newTask": "新建任務", + "newTerminal": "新建終端", + "newTerminal2": "新建終端", + "newView": "新建檢視", + "newViewName": "新檢視名稱", + "newViewUnavailable": "無法新建檢視。{{newViewDisabledReason}}", + "newline": "⇧↵ 換行", + "next": "下一步", + "nextMessage": "下一條訊息", + "nextQuestion": "下一個問題", + "noActiveSession": "無活動工作階段", + "noActiveSessionDescription": "請先啟動工作階段再使用 AI 產生", + "noActiveTask": "無活動任務", + "noActivityYet": "暫無動態", + "noAgentFound": "未找到代理程式。", + "noAgentProfileConfigured": "未設定代理程式設定檔", + "noAgentProfileConfiguredDetail": "此任務沒有代理程式設定檔,且工作區、工作流程與工作流程步驟均未設定預設值。請選擇預設代理程式設定檔,以便新任務能夠啟動工作階段。", + "noAgentProfileConfiguredFor": "未為 <2>「{{name}}」 設定代理程式設定檔。請在「設定 → 執行器」中設定認證資訊。", + "noAgentProfilesConfigured": "未設定代理程式設定檔", + "noAgentProfilesConfiguredAddOne": "未設定代理程式設定檔。請先在「設定 → 代理程式」中新增。", + "noAgentRunning": "無代理程式執行中", + "noAgentsFound": "未找到代理程式。", + "noAgentsFound2": "未找到代理程式", + "noAgentsYet": "尚無代理程式", + "noAgentsYet2": "尚無代理程式。", + "noAssignee": "無負責人", + "noBranches": "無分支", + "noBranchesForUrl": "此 URL 沒有可用分支。", + "noBranchesFound": "未找到分支", + "noChanges": "無更改", + "noChangesToCommit": "沒有可提交的變更", + "noCommandOutput": "無命令輸出。", + "noCommandOutputYet": "尚無命令輸出。", + "noCommentsYet": "暫無評論", + "noCompatibleAgentProfileFor": "未為 {{target}} 設定相容的代理程式設定檔。請在「設定 → 執行器」中設定代理程式認證資訊。", + "noCompatibleAgentProfilesFor": "沒有適用於 {{target}} 的相容代理程式設定檔。", + "noContent": "無內容", + "noDecisionYet": "尚未決定", + "noDocumentsFound": "未找到檔案。", + "noDocumentsYet": "暫無檔案。", + "noEditorsAvailable": "無可用編輯器", + "noEnvironmentYet": "尚無環境", + "noExecutorFound": "未找到執行器。", + "noFilesFound": "未找到檔案", + "noFilesInThisCommit": "此提交中無檔案", + "noItemsFound": "未找到專案。", + "noLabelsYet": "暫無標籤", + "noListeningPortsDetected": "未檢測到監聽埠。", + "noMatches": "無匹配項", + "noMatchingBranches": "無匹配分支", + "noMessagesFound": "未找到訊息。", + "noMessagesYetStartTheConversation": "暫無訊息。開始對話吧!", + "noOptions": "無選項", + "noOptions2": "無選項。", + "noOtherTasks": "無其他任務", + "noParent": "無父項", + "noPendingReviewComments": "無待傳送的審閱評論。", + "noPlan": "無計劃", + "noPlanFound": "未找到計劃。", + "noProfileFound": "未找到設定。", + "noProfilesFound": "未找到代理程式設定檔。", + "noProject": "無專案", + "noProjectsFound": "未找到專案。", + "noQuestionsFound": "未找到問題。", + "noRecentTasksYet": "尚無最近任務", + "noRelatedTasksFound": "未找到相關任務。", + "noRepositories": "無儲存庫", + "noRepositoriesAvailableInWorkspace": "此工作區中沒有可用儲存庫", + "noRepositoriesFound": "未找到儲存庫。", + "noResourceDetailsAvailable": "無可用資源詳情。", + "noResultsFound": "未找到結果", + "noRevisionsYetEditsWillAppear": "尚無修訂。編輯將顯示在此。", + "noSavedLayouts": "無已儲存佈局", + "noSessionsYetLaunchOneTo": "暫無工作階段。啟動一個以開始。", + "noSteps": "無步驟", + "noStepsConfigured": "未設定步驟", + "noStepsFound": "未找到步驟。", + "noSubIssues": "無子議題", + "noTaskSelected": "未選擇任務", + "noTasksFound": "未找到任務。", + "noTerminalsYet": "暫無終端。", + "noTextualChangesBetweenTheseVersions": "這些版本之間沒有文字更改。", + "noWorkItemsFound": "未找到工作項", + "noWorkflowsFound": "未找到工作流程。", + "noWorkspacesFound": "未找到工作區。", + "none": "無", + "notConfiguredForThisExecutor": "未為此執行器設定檔", + "onBranch": "位於分支 <1>{{branch}}", + "onDisk": "磁碟上", + "ontoBranch": "到 {{branch}}", + "openBrowserPreview": "開啟瀏覽器預覽", + "openCodeReview": "開啟程式碼審閱", + "openComposeBoxHelp": "在終端上方開啟由 Kandev 控制的編寫框以輸入跟進訊息。按 <1>Enter 傳送,<3>Shift+Enter 換行。", + "openEditor": "開啟編輯器", + "openEntityReference": "開啟 {{label}}:{{title}}", + "openFile": "開啟檔案", + "openImage": "開啟 {{alt}}", + "openInAdvancedView": "在高階檢視中開啟", + "openInBrowserPanel": "在瀏覽器面板中開啟", + "openInBrowserTab": "在瀏覽器標籤頁中開啟", + "openInEditorNamed": "在 {{name}} 中開啟", + "openInNewTab": "在新標籤頁中開啟", + "openInOfficeView": "在辦公室檢視中開啟", + "openInOtherEditor": "在其他編輯器中開啟", + "openMarkdownPreview": "開啟 Markdown 預覽", + "openPlanDetails": "開啟計劃詳情", + "openPullRequest": "開啟提取要求", + "openSidebarFilters": "開啟側邊欄篩選", + "openSourceTask": "開啟來源任務 {{fullTitle}}", + "openTaskSwitcher": "開啟任務切換面板", + "openTerminal": "開啟終端", + "openTheBottomTerminalAndPaste": "開啟底部終端並貼上此命令", + "openWorkspaceFolder": "開啟工作區資料夾", + "openWorkspaceSettings": "開啟工作區設定", + "option": "選項 {{index}}", + "orTypeACustomAnswer": "或輸入自訂回答…", + "otherChanges": "其他更改", + "output": "輸出", + "outputTokens": "輸出 token", + "outputTruncated": "輸出已截斷", + "panelAgent": "代理程式", + "panelChanges": "更改", + "panelDiffViewer": "差異檢視器", + "panelFileDiff": "差異 [{{file}}]", + "panelFiles": "檔案", + "panelMergeRequest": "合併請求", + "panelPlan": "計劃", + "panelPrDetails": "PR 詳情", + "panelPullRequest": "提取要求", + "panelTerminal": "終端", + "parent": "父項", + "parkedCount": "已停放({{parked}})", + "parkedTerminals": "已停放的終端", + "pastedImageCouldnTBeAttached": "貼上的圖片無法附加", + "pathBasedProxyWorksForApis": "路徑型代理伺服器。適用於 API,但可能導致預期由 / 提供服務的 Web 應用程式無法正常運作。", + "pauseTree": "暫停任務樹", + "paused": "已暫停", + "pendingApproval": "待批准", + "pendingReviewCommentsHelp_one": "{{count}} 條待傳送的審閱評論。點選展開清單;可編輯每條評論、點選檔案路徑跳轉到原始碼,或用垃圾桶圖示移除評論。", + "pendingReviewCommentsHelp_other": "{{count}} 條待傳送的審閱評論。點選展開清單;可編輯每條評論、點選檔案路徑跳轉到原始碼,或用垃圾桶圖示移除評論。", + "permissionRequested": "已請求權限", + "permissionRequired": "需要權限", + "pickADifferentRepoLocalFolder": "選擇其他儲存庫、本地資料夾或遠端 URL", + "pickAStartingFolderOptional": "選擇起始資料夾(可選)", + "pickOrPasteARepo": "選擇或貼上儲存庫", + "pinTasksCount_one": "固定 {{count}} 個任務", + "pinTasksCount_other": "固定 {{count}} 個任務", + "plan": "計劃", + "planCommentCount_one": "{{count}} 條計劃評論", + "planCommentCount_other": "{{count}} 條計劃評論", + "planHistory": "計劃歷史", + "planIsEmpty": "計劃為空", + "planMode": "計劃模式", + "planRestoredToV": "計劃已恢復到 v{{revisionnumber}}", + "planYourImplementation": "規劃你的實現", + "pleaseTryAgain": "請重試。", + "pluginTopBarActions": "外掛頂欄操作", + "portAlreadyAdded": "埠已新增", + "portForwarding": "埠轉發", + "portForwardingPreferenceUpdateFailed": "無法更新埠轉發可見性", + "portForwardingTunnelActive_one": "埠轉發({{count}} 個隧道活動)", + "portForwardingTunnelActive_other": "埠轉發({{count}} 個隧道活動)", + "portNumber": "埠號", + "position": "位置 {{positionLabel}}", + "prChanges": "PR 更改", + "preparingEllipsis": "正在準備…", + "preparingEnvironment": "正在準備環境", + "preparingEnvironmentEllipsis": "正在準備環境…", + "preparingWorkspace": "正在準備工作區…", + "preparingWorkspace2": "正在準備工作區…", + "presets": "預設", + "pressEnterToUpdateYourAnswer": "按 Enter 更新你的回答…", + "pressEscToCancelCmdEnter": "按 Esc 取消,Cmd+Enter 儲存", + "preview": "預覽", + "previous": "上一個", + "previousAgentError": "先前的代理程式錯誤", + "previousMessage": "上一條訊息", + "previousQuestion": "上一個問題", + "priority": "優先順序", + "priorityCritical": "緊急", + "priorityHigh": "高", + "priorityLow": "低", + "priorityMedium": "中", + "private": "私有", + "profileCount_one": "{{count}} 個設定", + "profileCount_other": "{{count}} 個設定", + "progress": "進度", + "project": "專案", + "prompt": "提示詞", + "promptFieldLabel": "提示詞", + "providerPrivateContextThatKandevDid": "Kandev 未記錄的提供者私有上下文可能不會保留。已開啟的終端、開發伺服器及其他工作區處理程序會停止,包括任務編輯器伺服器。", + "providerUnavailable": "提供者不可用", + "providerHistoryUnavailable": "目前 PR 歷史不可用。顯示檢出歷史,但不假定發生了重寫。", + "proxy": "代理伺服器", + "publishARedactedSnapshotOfThis": "將此已完成任務的脫敏快照發布為你帳戶上的私密 GitHub Gist。", + "publishToGithubGist": "釋出到 GitHub Gist", + "publishedAnyoneWithThisLinkCan": "已釋出。任何擁有此連結的人都可以檢視對話。", + "publishing": "正在釋出…", + "pull": "拉取", + "pullRequest": "提取要求", + "pullRequest2": "提取要求", + "pullRequests": "提取要求", + "push": "推送", + "pushCurrentBranchBeforeResetting": "重置前將目前分支推送到其遠端。", + "pushYourBranchToItsRemote": "在確認對話方塊中將分支推送到遠端,以在重置前保留已提交的工作。", + "pushedCommit": "已推送的提交", + "pushedToRemote": "已推送到遠端", + "questionCount_one": "{{count}} 個問題", + "questionCount_other": "{{count}} 個問題", + "questionOfTotal": "問題 {{index}} / {{total}}", + "questionOfTotalAnswered": "問題 {{index}} / {{total}}(已回答)", + "queueMoreInstructions": "排隊更多指示…", + "queued": "已排隊", + "ranCommands_one": "· 執行了 {{count}} 條命令", + "ranCommands_other": "· 執行了 {{count}} 條命令", + "random": "隨機", + "read": "讀取", + "readLines_one": "讀取 {{count}} 行", + "readLines_other": "讀取 {{count}} 行", + "reasonAddSessionDescription": "新增工作階段描述", + "reasonAddTaskPrompt": "新增任務提示詞", + "reasonAddTaskTitle": "新增任務標題", + "reasonSelectAgent": "選擇代理程式", + "reasonSelectBranch": "選擇分支", + "reasonSelectRepository": "選擇儲存庫", + "reasonSelectWorkflow": "選擇工作流程", + "reasonSelectWorkspace": "選擇工作區", + "rebase": "變基", + "recentTasks": "最近任務", + "reconnectingToTheExistingEnvironment": "正在重新連線到現有環境…", + "redactedRules": "已脫敏:{{rules}}", + "referenceWorkItems": "引用工作項", + "refresh": "重新整理", + "rejected": "已拒絕", + "relatedBlockedBy": "被阻塞於", + "relatedBlockers": "阻塞項", + "relatedChildren": "子項", + "relatedParents": "父項", + "relatedSiblings": "同級項", + "relatedTaskCount_one": "{{count}} 個相關任務", + "relatedTaskCount_other": "{{count}} 個相關任務", + "relatedTasks": "相關任務", + "remote": "遠端", + "remoteContributionChangedTitle": "PR 分支已更改", + "remoteContributionChangedBody": "你的任務版本未更改。準備好後,選擇要使用的版本。", + "remoteContributionChangedTooltip": "PR 分支在任務開始後發生了更改。任務工作區未更改。", + "replacePRBranch": "替換 PR 分支", + "usePRVersion": "使用 PR 版本", + "prNumberVersion": "PR #{{number}} 版本", + "remoteContributionReplaceDescription": "用未更改的任務版本替換已釋出的 PR 分支。需要確認,並且提供者的最新提交必須完全匹配。", + "remoteContributionUseDescription": "在此任務中使用目前 PR 版本。Kandev 會先建立恢復分支,並且工作區必須乾淨。", + "remoteContributionViewDescription": "開啟 PR #{{number}} 版本,不更改任務工作區。", + "replacePRBranchConfirmation": "要用任務版本替換 {{repository}} 在 {{head}} 的已釋出 PR 分支嗎?這會讓提供者分支與任務版本一致。", + "usePRVersionConfirmation": "要使用 {{head}} 的 PR 版本嗎?Kandev 會先為目前任務版本建立恢復分支。工作區必須乾淨。", + "remoteContributionProviderChangedAgain": "PR 再次發生更改。請重新整理提供者版本後重試。", + "remoteContributionCleanWorktreeRequired": "使用 PR 版本前,請先提交或丟棄本地更改。", + "remoteContributionResolutionFailed": "Kandev 無法更改貢獻分支。請檢查 Git 錯誤後重試。", + "remoteContributionReplaced": "PR 分支已替換為任務版本。", + "remoteContributionUsed": "已採用 PR 版本。恢復分支:{{branch}}", + "remoteCreatedLine": "建立:{{createdAt}}", + "remoteExecutor": "遠端執行器", + "remoteLastCheckLine": "上次檢查:{{checkedAt}}", + "remoteRepository": "遠端儲存庫", + "remoteStateLine": "狀態:{{state}}", + "remoteStatusFailedLine": "狀態失敗:{{error}}", + "currentPRCommit": "目前 PR 提交", + "remoteUrlPressEnter": "<0>遠端 URL;按 Enter 提交。", + "remove": "移除", + "remove2": "移除 {{name}}", + "remove3": "移除 {{identifier}}", + "removeAnnotation": "移除標註 {{number}}", + "removeComment": "移除評論", + "removeFile": "移除檔案", + "removeFilter": "移除篩選", + "removeFromFavorites": "從收藏中移除", + "removeImage": "移除圖片", + "removeLabeled": "移除 {{label}}", + "removeMessageFromFavorites": "將訊息從收藏中移除", + "removeRepository": "移除儲存庫", + "removeSource": "移除來源", + "rename": "重新命名", + "rename2": "重新命名…", + "renameTask": "重新命名任務", + "renameTerminalLeaveEmptyToReset": "重新命名終端(留空以重置,輸入「{{token}}」以移除並停止 PTY)。", + "repeatedTerminalCommandsHidden_one": "已隱藏 {{count}} 條重複的相同終端命令", + "repeatedTerminalCommandsHidden_other": "已隱藏 {{count}} 條重複的相同終端命令", + "repeatedTerminalCommandsShown_one": "已顯示 {{count}} 條重複的相同終端命令", + "repeatedTerminalCommandsShown_other": "已顯示 {{count}} 條重複的相同終端命令", + "repo": "儲存庫", + "repositoriesAreAddedAsTopLevel": "儲存庫會作為目前遠端工作區中的頂層條目新增。代理程式的工作目錄不會改變。", + "repository": "儲存庫", + "repository2": "儲存庫", + "repositoryWithPath": "儲存庫 · {{path}}", + "requestChanges": "請求更改", + "requestedChanges": "已請求更改", + "requestedChangesPlain": "{{who}} 請求了更改", + "requestedChangesVerb": "已請求更改", + "requestedChangesWithComment": "{{who}} 請求了更改:'{{comment}}'", + "resetAgentContext": "重置代理程式上下文?", + "resetAgentContextClearsConversationHistory": "重置代理程式上下文;清除對話歷史,保留工作區", + "resetContext": "重置上下文", + "resetEnvironment": "重置環境?", + "resetEnvironment2": "重置環境", + "resetLayout": "重置佈局", + "resetToCommitSha": "重置到提交 {{shortSha}}", + "resetToThisCommit": "重置到此提交", + "resetting": "正在重置…", + "resize": "調整大小", + "restart": "重啟", + "restartConsequenceRunningProcesses": "<0>執行中的處理程序:已開啟的終端、開發伺服器及其他工作區處理程序會停止,包括任務編輯器伺服器。請先儲存未儲存的工作,在來源附加完成後再重新開啟或重啟這些處理程序。", + "restartConsequenceSessionContext": "<0>工作階段上下文:Kandev 會在保留任務、工作階段、任務狀態、訊息、計劃、已附加來源以及所選模型與模式的同時重啟空閒代理程式。支援跨目錄恢復的提供者會保留其原生工作階段。其他提供者會啟動新工作階段,並在下一次提示時收到 Kandev 已記錄的對話。Kandev 未記錄的提供者私有上下文可能不會保留。", + "restartConsequenceWorkspace": "<0>工作區:任務根目錄將成為代理程式的工作目錄。對於單儲存庫任務,這會將 CWD 上移一級,並將每個來源顯示為命名的頂層條目。現有檔案與 Git 變更不會被移動或丟棄。", + "restarting": "正在重啟…", + "restore": "恢復", + "restoreThisVersion": "恢復此版本", + "restoreToVersionConfirm": "恢復到版本 {{version}}?", + "restoreToVersionDescription": "將建立包含 v{{version}} 內容的新版本。不會丟失任何內容;目前版本仍保留在歷史中。", + "restoreTree": "恢復任務樹", + "restoreVersion": "恢復 v{{version}}", + "restoredFromEarlierVersion": "從更早版本恢復", + "restoring": "正在恢復…", + "restoringThisTaskSMaterializedWorkspace": "恢復此任務的具體化工作區失敗。啟動前請重新設定工作區。", + "resume": "恢復", + "resumeAgent": "恢復代理程式", + "resumeSession": "恢復工作階段", + "resumeTree": "恢復任務樹", + "resumingSession": "正在恢復工作階段", + "retry": "重試", + "retryChangeRequest": "重試 {{shortName}}", + "retryRemoteRepositoryResolution": "重試遠端儲存庫解析", + "retrying": "正在重試…", + "reverseISearch": "(reverse-i-search)", + "revertCommit": "還原提交", + "review": "審閱", + "reviewComments": "審閱評論", + "reviewCommentsReadyToSend_one": "{{count}} 條審閱評論待傳送", + "reviewCommentsReadyToSend_other": "{{count}} 條審閱評論待傳送", + "reviewCommentsTitle": "審閱評論", + "reviewTheseChangesBeforeAddingSources": "新增來源前請審閱這些變更。在操作完成前任務必須保持空閒。", + "reviewed": "已審閱", + "reviewers": "審閱人", + "revoke": "撤銷", + "revokeShare": "撤銷分享", + "revoking": "正在撤銷…", + "roleApprover": "審批人", + "roleReviewer": "審閱人", + "run": "執行", + "runCommand": "執行 /{{name}} 命令", + "runInTerminal": "在終端中執行", + "runInTheParentSMaterialized": "在父任務的具體化工作區中執行", + "runInTheParentSWorktree": "在父任務的工作樹中執行({{worktreeBranch}})", + "runRepositorySetupScript": "執行儲存庫設定指令碼", + "runScript": "執行指令碼", + "running": "執行中", + "sameBranchAsCurrentSession": "與目前工作階段相同的分支", + "sameEnvironmentAsCurrentSession": "與目前工作階段相同的環境", + "saveAndSendToAgent": "儲存併傳送給代理程式", + "saveAndSendToAgentShortcut": "儲存併傳送給代理程式({{modKey}}+Shift+Enter)", + "saveAs": "另存為:", + "saveAs2": "另存為…", + "saveCommentForReview": "儲存評論以供審閱", + "saveCommentForReviewShortcut": "儲存評論以供審閱({{modKey}}+Enter)", + "saveCurrentLayout": "儲存目前佈局", + "saveCurrentLayout2": "儲存目前佈局…", + "saveOrDiscardBeforeNewView": "建立新檢視前請先儲存或丟棄更改。", + "saveYourCurrentPanelArrangementAs": "將目前面板排列儲存為可複用佈局。", + "savedAndLocalGitRepositoriesMust": "對於此執行器,已儲存與本地 Git 儲存庫必須具有可複製的 origin。本地資料夾不可用。", + "savedLayout": "已儲存佈局", + "savedLayouts": "已儲存佈局", + "saving": "正在儲存…", + "scriptExecutionMetadataUnavailable": "指令碼執行(後設資料不可用)", + "scriptExitedWithCode": "指令碼以程式碼 {{code}} 退出", + "scriptFailed": "指令碼失敗", + "scripts": "指令碼", + "scrollToActiveSession": "滾動到活動工作階段", + "scrollToLastPrompt": "滾動到上一條提示詞", + "scrollToStartOfTranscript": "滾動到記錄開頭", + "searchAgents": "搜尋代理程式…", + "searchBranches": "搜尋分支…", + "searchEllipsis": "搜尋…", + "searchEllipsis2": "搜尋…", + "searchFiles": "搜尋檔案", + "searchFiles2": "搜尋檔案…", + "searchFilesAndPrompts": "搜尋檔案與提示詞…", + "searchProfiles": "搜尋設定…", + "searchProjects": "搜尋專案…", + "searchRepositories": "搜尋儲存庫…", + "searchRepositoriesOrPasteARemote": "搜尋儲存庫或貼上遠端 URL", + "searchTasks": "搜尋任務…", + "searching": "正在搜尋…", + "searchingWorkItems": "正在搜尋工作項…", + "selectASessionToOpenIts": "選擇工作階段以開啟其工作樹", + "selectATaskToStartChatting": "選擇任務以開始聊天", + "selectAgent": "選擇代理程式", + "selectAgentProfile": "選擇代理程式設定檔", + "selectAnInstance": "選擇實例", + "selectBranch": "選擇分支", + "selectExecutorProfile": "選擇執行器設定檔", + "selectFilesAndPromptsToInclude": "· 選擇要包含的檔案與提示詞", + "selectOrEnterRemoteRepoFirst": "請先選擇或輸入遠端儲存庫。", + "selectProfile": "選擇設定", + "selectRepositoryFirst": "請先選擇儲存庫", + "selectSentryInstanceToLink": "選擇要關聯的 Sentry 實例。", + "selectTextAndPressToComment": "選擇文字並按 <2>⌘⇧C 新增評論", + "selectValue": "選擇值", + "selectValues": "選擇多個值", + "selectWorkflow": "選擇工作流程", + "selectWorkspaceBeforeLinkingPr": "關聯 GitHub 提取要求前請先選擇工作區。", + "selected": "已選擇", + "send": "傳送", + "sendAnswer": "傳送回答", + "sendComment": "傳送評論", + "sendToAgent": "傳送給代理程式", + "sendToAgentHelp": "在面板內點選 <1>傳送給代理程式 立即投遞給 CLI 代理程式,或開啟聊天框輸入跟進;評論會自動前置。", + "sendToWorkflow": "傳送到工作流程", + "senderWithSession": "{{base}} · {{sessionName}}", + "sentAsNewMessage": "· 已作為新訊息傳送", + "sentryInstance": "Sentry 實例", + "sentryIssue": "Sentry 議題", + "sentryIssueLinked": "已關聯 Sentry 議題", + "sentryIssuePlaceholder": "PROJ-123 或貼上議題 URL", + "sentryIssueValidationHint": "貼上 Sentry 議題 URL 或短 ID(PROJ-123)。", + "session": "工作階段", + "sessionActions": "工作階段操作", + "sessionContext": "工作階段上下文", + "sessionCount_one": "{{count}} 個工作階段", + "sessionCount_other": "{{count}} 個工作階段", + "sessionFallbackLabel": "工作階段", + "sessionModelSettings": "工作階段模型設定", + "sessionNotReady": "工作階段未就緒", + "sessionStatusBackgroundRunning": "後台執行中", + "sessionStatusCancelled": "已取消", + "sessionStatusComplete": "已完成", + "sessionStatusFailed": "失敗", + "sessionStatusPermissionRequested": "請求權限", + "sessionStatusRunning": "執行中", + "sessionStatusWaitingForInput": "等待輸入", + "sessions": "工作階段", + "setAsDefaultLayout": "設為預設佈局", + "setAsPrimary": "設為主工作階段", + "setup": "設定", + "share": "分享", + "shareThisTask": "分享此任務", + "shareThisTaskConversationAsA": "將此任務對話分享為公開連結", + "sharedWorkspaceMembers_one": "共享工作區 · {{count}} 位成員", + "sharedWorkspaceMembers_other": "共享工作區 · {{count}} 位成員", + "shift": "Shift", + "shiftEnterToRun": ",⌘+Shift+Enter 執行", + "shiftEnterToRun2": ",{{modKey}}+Shift+Enter 執行", + "shortcutTogglesChatInput": "快捷鍵:<1>{{shortcut}} 切換此聊天輸入。", + "showBranchAndGitCredentialDetails": "顯示分支與 Git 認證資訊詳情", + "showCode": "顯示程式碼", + "showCommandOutput": "顯示命令輸出", + "showDebugInfo": "顯示除錯資訊", + "showDetails": "顯示詳情", + "showErrorDetails": "顯示錯誤詳情:{{displayLabel}}", + "showFormatted": "顯示格式化內容", + "showFormattedMessage": "顯示格式化訊息", + "showFullTimestamp": "顯示完整時間戳:{{absoluteTime}}", + "showMcpConnectionStatus": "顯示 MCP 連線狀態", + "showMessageMetadata": "顯示訊息後設資料", + "showOlderSessions_one": "顯示 {{count}} 個更早的工作階段", + "showOlderSessions_other": "顯示 {{count}} 個更早的工作階段", + "showPreparationDetails": "顯示準備詳情", + "showRawText": "顯示原始文字", + "showRightPanel": "顯示右側面板", + "showSidebar": "顯示側邊欄", + "sibling": "同級", + "sidebarFilters": "側邊欄篩選", + "skipAllQuestions": "跳過全部問題", + "skipped": "已跳過", + "snapshotMessageCount_one": "{{count}} 條訊息", + "snapshotMessageCount_other": "{{count}} 條訊息", + "softReset": "軟重置", + "someone": "某人", + "sort": "排序", + "sortCreated": "建立時間", + "sortCustom": "自訂", + "sortDirection": "排序方向 {{direction}}", + "sortStatus": "狀態", + "sortTitle": "標題", + "sortUpdated": "更新時間", + "source": "來源", + "sourceChangesTitle": "{{source}} 變更", + "specifyALocalPortOrLeave": "指定本地埠,或留空以隨機分配。對於 Docker/K8s,請使用已預先暴露的埠。", + "split": "拆分", + "splitDown": "向下拆分", + "splitRight": "向右拆分", + "splitView": "拆分檢視", + "sprite": "Sprite", + "stageAll": "全部暫存", + "stageAllChangesBeforeCommitting": "提交前暫存全部變更", + "stageApproval": "批准", + "stageCount": "暫存 {{selectionCount}}", + "stageFile": "暫存檔案", + "stageImplement": "實現", + "stageReview": "審閱", + "stageShip": "釋出", + "start": "開始", + "start2": "開始", + "startAgent": "啟動代理程式", + "startAgent2": "啟動代理程式", + "startDevServerPreview": "啟動開發伺服器預覽", + "startFreshSession": "開始全新工作階段", + "startPlanMode": "啟動計劃模式", + "startTask": "啟動任務", + "startTaskInPlanMode": "以計劃模式啟動任務", + "startTunnel": "啟動隧道", + "startTypingYourPlan": "開始輸入你的計劃…", + "started": "已啟動", + "starting": "正在啟動…", + "startingAgent": "正在啟動 {{agentLabel}}", + "startingEllipsis": "正在啟動…", + "startingTerminal": "正在啟動終端…", + "startingVsCodeServer": "正在啟動 VS Code Server", + "startsANewSessionWithA": "使用乾淨的上下文視窗開始新工作階段", + "state": "狀態", + "status": "狀態", + "statusBacklog": "待辦池", + "statusBlocked": "已阻塞", + "statusCancelled": "已取消", + "statusChangedFromTo": "狀態從 <1>{{from}} 變更為 <3>{{to}}", + "statusDone": "已完成", + "statusInProgress": "進行中", + "statusInReview": "審閱中", + "statusTodo": "待辦", + "statusUpdate": "狀態更新", + "stepCount_one": "{{count}} 個步驟", + "stepCount_other": "{{count}} 個步驟", + "stepFieldLabel": "步驟", + "stepNumber": "步驟 {{index}}", + "stepOf": "步驟 {{stepNumber}} / {{totalSteps}}:{{stepLabel}}", + "stillWorkingSubjectMany": "其中一個或多個任務仍在工作", + "stillWorkingSubjectOne": "此任務仍在工作", + "stillWorkingWarning": "{{subject}};代理程式正在產生或執行後台工作。現在繼續將丟棄仍在進行的工作。", + "stop": "停止", + "stopTunnel": "停止隧道", + "stoppedWithAnError": "因錯誤而停止", + "stopping": "正在停止…", + "subagent": "子代理程式", + "subIssues": "子議題", + "subTasks": "子任務", + "submit": "提交", + "submitAnswers": "提交回答", + "submitUnavailable": "無法提交", + "submitting": "正在提交…", + "subtask": "子任務", + "subtasksBecomeRootTasksUnlessYou": "除非勾選此項,否則子任務將成為根任務。它們可能仍在進行中。", + "subtasksStayActiveUnlessYouTick": "除非勾選此項,否則子任務保持活動。它們可能仍在進行中。", + "successful": "{{operationName}} 成功", + "summarize": "總結", + "summarizeReturnedNoResult": "摘要工具未返回任何結果", + "summarizeSession": "總結工作階段", + "summarizeSessionNamed": "總結 {{label}}", + "summarizing": "正在總結…", + "switchRecentTasks": "切換最近任務。", + "switchSidebarView": "切換側邊欄檢視:{{name}}", + "switchWorkflows": "切換工作流程", + "switchWorkspace": "切換工作區", + "system": "系統", + "systemSender": "系統", + "targetAlreadyExists": "目標已存在:{{newPath}}", + "task": "任務", + "taskActions": "任務操作", + "taskChat": "任務聊天", + "taskCount_one": "{{count}} 個任務", + "taskCount_other": "{{count}} 個任務", + "taskDebug": "任務除錯", + "taskDetails": "任務詳情", + "taskHasAnAgentError": "任務存在代理程式錯誤", + "taskName": "任務名稱", + "taskNeedsRepositoryForSources": "新增來源前,此任務需要一個儲存庫。", + "taskOverview": "任務概覽", + "taskStatusAndAttention": "任務狀態與關注事項", + "taskTitle": "任務標題", + "taskTools": "任務工具", + "taskTreeCancelled": "任務樹已取消", + "taskTreePaused": "任務樹已暫停", + "taskTreeRestored": "任務樹已恢復", + "taskTreeResumed": "任務樹已繼續", + "tasks": "任務", + "tasksAffected_one": "影響 {{count}} 個任務", + "tasksAffected_other": "影響 {{count}} 個任務", + "tcpPortsWithActiveListenersInside": "遠端執行器內有活動監聽器的 TCP 埠。點選重新整理以重新掃描。", + "technicalDetails": "技術詳情", + "terminal": "終端", + "terminalCount_one": "{{count}} 個終端", + "terminalCount_other": "{{count}} 個終端", + "terminalNotAvailableThisTaskIs": "終端不可用;此任務已歸檔", + "terminalNumbered": "終端 #{{seq}}", + "terminalPromptInputAreDisabledUntil": "終端與提示詞輸入在下次執行開始前已停用。", + "terminalSessionEnded": "此工作階段已結束。沒有可用的終端。", + "terminalUnavailableNoActiveSession": "終端不可用;無活動工作階段。", + "terminalWithSeq": "終端 {{seq}}", + "terminals": "終端", + "terminate": "終止", + "terminateTerminal": "終止終端 #{{seq}}", + "terminateThisKillsTheRunningPty": "終止 {{label}}?這將終止正在執行的 PTY。", + "theAgentAndRunningWorkspaceProcesses": "代理程式與正在執行的工作區處理程序會繼續。現有檔案、Git 變更以及已記錄的任務與工作階段上下文會保留。", + "theAgentCanWriteAndUpdate": "代理程式可在工作過程中編寫並更新計劃", + "theAgentHasFinishedItsLast": "代理程式已完成上一輪,正在等待下一個符合條件的觸發。下方檔案樹從磁碟上的工作樹讀取;之前的聊天歷史會保留。", + "theAgentHasMovedOn": "代理程式已繼續推進。你的回應將作為新訊息傳送。", + "theAgentStoppedWithAnError": "代理程式因錯誤而停止。恢復可重試同一對話,或開始全新工作階段。", + "theBrowserDidnTProvideImage": "瀏覽器未提供圖片資料。請先儲存圖片,再以檔案形式附加。", + "theBuiltInDefaultLayoutWill": "內建預設佈局將成為預設。", + "theConnectionDroppedOrTimedOut": "連線斷開或超時。請重新整理任務以確認是否已成功。", + "theIdleAgentRestartsAtThe": "空閒代理程式會在任務根目錄重啟。現有檔案、Git 變更、任務與工作階段歷史、訊息、計劃、已附加來源、模型與模式均會保留。", + "theTextIsDeliveredStraightTo": "文字直接投遞到 CLI 代理程式的 stdin;待傳送的審閱評論(如有)會自動前置。", + "theseAreTheSameVersionNothing": "這些是相同版本;無需比較。", + "thinking": "思考中", + "thisConversationHasNoShareableContent": "此對話沒有可分享的內容。", + "thisExecutor": "此執行器", + "thisIsTheOnlySessionFor": "這是此任務的唯一工作階段,但任務工作區和其中的檔案會保留給未來的工作階段。", + "thisIsThePrimarySessionAnother": "這是主工作階段。將有另一個工作階段被設為主工作階段。", + "thisRepositoryMustHaveACloneable": "此儲存庫必須具有可複製的 origin;Kandev 會在新增前進行驗證。", + "thisRestartsTheTaskWorkspace": "這將重啟任務工作區", + "thisSavedLayoutWillBePermanently": "此已儲存佈局將被永久移除。", + "thisSessionDidNotFinishSetting": "此工作階段未完成工作區設定。", + "thisStopsTheShellAndAny": "這將停止「{{terminalName}}」shell 及其正在執行的任何命令。", + "thisTask": "此任務", + "thisTask2": "此任務", + "thisTaskHasLinkedPullRequests": "此任務有 {{length}} 個已關聯的提取要求。選擇一個在 GitHub 上開啟。", + "thisTaskIsArchivedAndRead": "此任務已歸檔且為只讀。", + "thisTaskPointsToBranch": "此任務指向 <1>{{branch}},但在遠端儲存庫中找不到該分支。它可能已被合併或刪除。", + "thisTaskSharesItsParentS": "此任務共享其父任務的工作區。目前與未來工作階段將繼續使用該共享工作區。", + "thisTearsDownTheCurrentContainer": "這將拆除此任務的目前容器、沙箱和/或工作樹,以便下一工作階段以全新環境開始。", + "thisTerminal": "此終端", + "thisUpdatesTheLiveTaskWorkspace": "這將更新活動的任務工作區", + "thisWillClearTheAgentS": "這將清除代理程式的對話歷史並開始全新上下文。你的工作區、檔案與 git 狀態會保留。", + "thisWillPermanentlyDeleteSelectedItems": "將永久刪除 {{selectedCount}} 個所選專案。此操作無法撤銷。", + "thisWillPermanentlyDeleteTheConversation": "這將永久刪除與此工作階段的對話歷史。任務工作區和其中的檔案會被保留。", + "ticket": "工單", + "timedOutAgentMovedOn": "已超時(代理程式已繼續)", + "title": "標題", + "title2": "{{longName}} 標題", + "title3": "{{longName}} 標題…", + "titleOptional": "標題(可選)", + "toFocus": "以聚焦", + "todos": "待辦事項", + "todosCompleted": "已完成 {{completed}}/{{total}}", + "toggleWordWrap": "切換自動換行", + "tokenCount_one": "{{formatted}} 個 token", + "tokenCount_other": "{{formatted}} 個 token", + "tokens": "token", + "tool": "工具", + "toolCall": "工具呼叫", + "toolCallCount_one": "{{count}} 次工具呼叫", + "toolCallCount_other": "{{count}} 次工具呼叫", + "toolCount_one": "{{count}} 個工具", + "toolCount_other": "{{count}} 個工具", + "tools": "工具", + "toolSearching": "正在搜尋", + "treeActionFailed": "任務樹操作失敗", + "treeCancelDescription": "將取消 {{taskCount}} 個任務並中斷 {{activeRunCount}} 個活動代理程式工作階段。可用「恢復」撤銷此操作。", + "treeCost": "任務樹成本", + "treeTasks": "任務樹中的任務", + "truncated": "已截斷", + "truncatedParen": "(已截斷)", + "tryAgain": "重試", + "tunnel": "隧道", + "tunnelStartedOnPort": "隧道已在埠 {{port}} 上啟動", + "tunnelStopped": "隧道已停止", + "turnForDuration": ",耗時 {{duration}}", + "turnMessageCount_one": "· {{count}} 條訊息", + "turnMessageCount_other": "· {{count}} 條訊息", + "turnWorked": "已完成工作", + "turnWorking": "工作中", + "typeAMessageMentionFilesOr": "輸入訊息,@ 提及檔案或提示詞,Shift+Enter 換行", + "typeShaToConfirm": "輸入 <1>{{shortSha}} 以確認:", + "typeToSearch": "輸入以搜尋…", + "typeToSearchPreviousMessages": "輸入以搜尋先前的訊息…", + "typeToSearchWorkItems": "輸入以搜尋工作項", + "unNestRemoveParent": "取消巢狀(移除父任務)", + "unarchive": "取消歸檔", + "unarchiveTask": "取消歸檔任務", + "uncommitted": "未提交", + "unified": "統一", + "unifiedView": "統一檢視", + "unknown": "未知", + "unknownAgent": "未知代理程式", + "unknownError": "未知錯誤", + "unknownError2": "未知錯誤", + "unlink": "取消關聯", + "unnamed": "(未命名)", + "unpin": "取消固定", + "unpinTasksCount_one": "取消固定 {{count}} 個任務", + "unpinTasksCount_other": "取消固定 {{count}} 個任務", + "unpinWillBeRemovedAfterSend": "取消固定(傳送後將移除)", + "unpushedCommit": "未推送的提交", + "unstageAll": "全部取消暫存", + "unstageCount": "取消暫存 {{selectionCount}}", + "unstageFile": "取消暫存檔案", + "untitled": "(無標題)", + "update": "更新", + "updateComment": "更新評論", + "updateTask": "更新任務", + "updated": "已更新", + "updatedTodos": "已更新的待辦事項", + "updating": "正在更新…", + "updating2": "正在更新…", + "uploadFailed": "上傳失敗", + "uploaded": "已上傳 {{name}}", + "uptime": "執行時間", + "useAFullGithubIssueUrl": "為此任務使用完整的 GitHub 議題 URL。", + "useAFullGithubPullRequest": "為此任務使用完整的 GitHub 提取要求 URL。", + "useAFullIssueUrlOr": "為 {{owner}}/{{repo}} 使用完整議題 URL 或編號。", + "useAFullPullRequestUrl": "為 {{owner}}/{{repo}} 使用完整提取要求 URL 或編號。", + "useAnExistingCheckoutOnThis": "使用本機上的現有檢出。", + "usesCurrentBranch": "使用目前分支", + "usesTheCurrentCheckoutKandevDoes": "使用目前檢出。Kandev 不會切換你的本地儲存庫分支。", + "value": "值", + "verbIsDormant": "{{verb}} 處於休眠", + "versionNumber": "版本 {{version}}", + "viaSession": "通過工作階段", + "view": "檢視:", + "viewLimitReached_one": "最多可儲存 {{count}} 個檢視。", + "viewLimitReached_other": "最多可儲存 {{count}} 個檢視。", + "viewName": "檢視名稱", + "viewPlanHistory": "檢視計劃歷史", + "vsCode": "VS Code", + "vsCodeServer": "VS Code Server", + "waitForActiveTurnToFinish": "請等待目前回合或工具呼叫完成後再新增來源。", + "waitForTaskSourcesToLoad": "請等待任務來源載入完成後再新增來源。", + "waitingForAnActiveSession": "正在等待活動工作階段…", + "walkMeThroughTheseChanges": "帶我了解這些更改", + "walkMeThroughTheseReviewChanges": "帶我了解這些審閱更改", + "walkthrough": "演練:{{title}}", + "walkthrough2": "演練", + "walkthroughNoteCount_one": "{{count}} 條演練備註", + "walkthroughNoteCount_other": "{{count}} 條演練備註", + "websocketClientNotAvailable": "WebSocket 用戶端不可用", + "whatShouldTheAgentWorkOn": "代理程式應處理什麼?", + "workdir": "工作目錄", + "workedRanCommands_one": "已工作;執行了 {{count}} 條命令", + "workedRanCommands_other": "已工作;執行了 {{count}} 條命令", + "workflow": "工作流程", + "workflowCount_one": "{{count}} 個工作流程", + "workflowCount_other": "{{count}} 個工作流程", + "workflowLabel": "工作流程:{{label}}", + "workflowSender": "工作流程", + "workflowStepMessageFrom": "來自 {{label}} 的工作流程步驟訊息", + "working": "工作中…", + "working3": "工作中", + "working4": "工作中…", + "workingIn": "工作於 <1>{{path}}", + "workingInBackground": "在後台工作", + "workspaceActions": "工作區操作", + "workspaceCount_one": "{{count}} 個工作區", + "workspaceCount_other": "{{count}} 個工作區", + "workspaceIsStillStarting": "工作區仍在啟動。", + "workspaceMode": "工作區模式", + "workspaceModeLabel": "模式:{{mode}}", + "workspaceRepository": "工作區儲存庫", + "workspaceRequiresConfiguration": "工作區需要設定", + "workspaceUnavailable": "工作區不可用", + "unknownTaskFallback": "(未知任務)", + "worktree": "工作樹", + "wouldCreateABlockerCycle": "會形成阻塞迴圈:{{cycle}}", + "writeAComment": "撰寫評論…", + "writeAPromptForTheAgent": "為代理程式撰寫提示詞…(@ 插入已儲存的提示詞)", + "writeYourChangesHere": "在此寫下你的變更", + "you": "你", + "youCanAttachUpToFiles": "最多可附加 {{maxFiles}} 個檔案。", + "yourBranchesLabel": "你的分支:", + "yourChangedFilesWillAppearHere": "你更改的檔案將顯示在此", + "yourCodeLivesInLabel": "你的程式碼位於:", + "yourReviewIsRequestedOnThis": "請求你審閱此任務。", + "autopilot": "自動駕駛", + "autopilotDescription": "代理程式會自主工作,只有在關鍵決策阻礙進展時才會向父任務詢問,然後等待答覆再繼續。", + "autopilotInfoLabel": "了解自動駕駛模式", + "autopilotSidebarDescription": "自動駕駛任務", + "autopilotChatDescription": "自動駕駛已啟用。代理程式只會向父任務詢問關鍵決策。" +} diff --git a/apps/web/src/locales/zh-tw/tasks.json b/apps/web/src/locales/zh-tw/tasks.json new file mode 100644 index 0000000000..392795c056 --- /dev/null +++ b/apps/web/src/locales/zh-tw/tasks.json @@ -0,0 +1,54 @@ +{ + "approvalRequired": "需要審批", + "archive": "歸檔", + "archived": "已歸檔", + "archiveTask": "歸檔任務", + "changesRequested": "已請求更改", + "columnStep": "步驟", + "columnTask": "任務", + "columnUpdated": "更新時間", + "columnWorkflow": "工作流程", + "delete": "刪除", + "deleteTask": "刪除任務", + "failedToArchiveTask": "無法歸檔任務", + "failedToDeleteTask": "無法刪除任務", + "failedToLoadTasks": "無法載入任務", + "failedToUnarchiveTask": "無法取消歸檔任務", + "goToFirstPage": "轉到第一頁", + "goToLastPage": "轉到最後一頁", + "goToNextPage": "轉到下一頁", + "goToPreviousPage": "轉到上一頁", + "group": "分組", + "groupByNone": "無", + "groupByRepository": "儲存庫", + "groupByState": "狀態", + "groupByWorkflow": "工作流程", + "loading": "載入中…", + "loadingTasks": "正在載入任務…", + "noRepository": "無儲存庫", + "noTasksFound": "未找到任務。", + "noWorkflow": "無工作流程", + "openInAdvancedView": "在高階檢視中開啟", + "openInOfficeView": "在辦公檢視中開啟", + "rowsPerPage": "每頁行數", + "showArchived": "顯示已歸檔", + "showingRange_one": "顯示第 {{start}}–{{end}} 條,共 {{count}} 條結果", + "showingRange_other": "顯示第 {{start}}–{{end}} 條,共 {{count}} 條結果", + "simpleViewForKanbanTasksShows": "看板任務的簡單檢視顯示面板中已有的聊天。若要完整體驗(評論、屬性、活動時間線,類似 Linear),請在辦公檢視中開啟此任務。", + "simpleViewShowsTheChatThat": "簡單檢視顯示面板中已有的聊天。使用 {{simpleQuery}} 可切回高階佈局。", + "sort": "排序", + "sortCreatedNewest": "建立時間(最新)", + "sortCreatedOldest": "建立時間(最早)", + "sortTitleAZ": "標題 A-Z", + "sortTitleZA": "標題 Z-A", + "sortUpdatedNewest": "更新時間(最新)", + "sortUpdatedOldest": "更新時間(最早)", + "taskArchived": "任務已歸檔", + "taskArchivedDescription": "任務已成功歸檔。", + "taskUnarchived": "任務已取消歸檔", + "unarchive": "取消歸檔", + "unarchivedBranchesMissing_one": "分支 {{branches}} 在本地和遠端都已不存在。下一個工作階段將從基礎分支重新開始。", + "unarchivedBranchesMissing_other": "分支 {{branches}} 在本地和遠端都已不存在。下一個工作階段將從基礎分支重新開始。", + "unarchivedTaskRestored": "任務已恢復。", + "unarchiveTask": "取消歸檔任務" +} diff --git a/apps/web/src/locales/zh-tw/workflows.json b/apps/web/src/locales/zh-tw/workflows.json new file mode 100644 index 0000000000..caa7121083 --- /dev/null +++ b/apps/web/src/locales/zh-tw/workflows.json @@ -0,0 +1,264 @@ +{ + "aConfiguredRepository": "已設定的儲存庫", + "addCondition": "新增條件", + "adding": "正在新增…", + "addWorkflow": "新增工作流程", + "agentProfile": "代理程式設定檔", + "agentProfileHelp": "此工作流程中任務的預設代理程式設定檔。設定後,任務建立對話方塊中的代理程式選擇器將被鎖定。", + "allowManualMove": "允許手動移動", + "allowManualMoveHelp": "允許在看板上將任務拖入此步驟。", + "applyAnyway": "仍然應用", + "autoArchive": "自動歸檔", + "autoArchiveAfter": "在", + "autoArchiveHelp": "任務在此步驟停留設定小時數後自動歸檔。適用於工作流程最後一步(例如 Done),以保持看板整潔。", + "autoArchiveHours": "小時後", + "automaticWorkflowCycle": "自動工作流程迴圈", + "autoStartAgent": "自動啟動代理程式", + "autoStartAgentHelp": "任務進入此步驟時自動啟動代理程式。", + "autoSync": "自動同步", + "autoSyncOff": "自動同步已關閉", + "autoTransition": "自動流轉", + "branchLabel": "分支", + "childrenCompletedHelp": "用於父任務步驟。當每個活動的直接子任務均為 COMPLETED、FAILED 或 CANCELLED 時,Kandev 執行此流轉一次。已歸檔與臨時子任務會被忽略。孫任務不計入;若父任務沒有子任務則不執行。", + "childrenCompletedHelpAria": "子任務完成流轉的工作方式", + "chooseAgentFamily": "選擇代理程式系列", + "chooseModelAndSessionSettings": "選擇模型和工作階段設定", + "close": "關閉", + "color": "顏色", + "colorBlue": "藍色", + "colorCyan": "青色", + "colorGray": "灰色", + "colorGreen": "綠色", + "colorIndigo": "靛色", + "colorOrange": "橙色", + "colorPurple": "紫色", + "colorRed": "紅色", + "colorYellow": "黃色", + "configureOriginalSessionOptions": "設定原工作階段設定選項", + "configureOriginalSessionOptionsDescription": "僅當現有對話標籤頁的初始代理程式系列與某條規則匹配時,才更改該標籤頁。", + "confirmWorkflowCycle": "確認工作流程迴圈", + "confirmWorkflowCycleDescription": "繼續前請審閱重複的代理程式執行。", + "copied": "已複製", + "copy": "複製", + "createAnyway": "仍然建立", + "customAgentProfile": "自訂代理程式設定檔", + "customTemplate": "自訂", + "customTemplateDescription": "從零建立你自己的代理式工作流程。", + "cycle": "迴圈", + "delete": "刪除", + "deleteAndArchiveTasks": "刪除並歸檔任務", + "deleteStep": "刪除步驟", + "deleteStepAffectsTasks_one": "刪除 {{stepName}} 還將影響其 {{count}} 個任務。", + "deleteStepAffectsTasks_other": "刪除 {{stepName}} 還將影響其 {{count}} 個任務。", + "deleteStepAndTasks": "刪除步驟及任務", + "deleteStepDialogTitle": "刪除步驟", + "deleteStepNoTasks": "這將永久刪除 {{stepName}} 工作流程步驟。", + "deleteStepWithMigration_one": "{{stepName}} 有 {{count}} 個任務。選擇遷移目標,或刪除該步驟及其任務。", + "deleteStepWithMigration_other": "{{stepName}} 有 {{count}} 個任務。選擇遷移目標,或刪除該步驟及其任務。", + "deleteWorkflow": "刪除工作流程", + "deleteWorkflowDialogTitle": "刪除工作流程", + "deleteWorkflowNoTasks": "這將永久刪除工作流程及其所有步驟。", + "deleteWorkflowWithTasks_one": "此工作流程有 {{count}} 個任務。選擇遷移目標,或刪除工作流程並歸檔任務。", + "deleteWorkflowWithTasks_other": "此工作流程有 {{count}} 個任務。選擇遷移目標,或刪除工作流程並歸檔任務。", + "directoryLabel": "目錄", + "directoryLine": "目錄 {{path}}", + "disablePlanMode": "停用計劃模式", + "disablePlanModeOnComplete": "完成時停用計劃模式", + "disablePlanModeOnCompleteHelp": "代理程式完成一輪後關閉計劃模式,即使任務仍留在此步驟。", + "disablePlanModeOnExitHelp": "在此步驟的每一輪保持計劃模式開啟,僅當任務移到其他步驟時關閉。", + "doNothing": "不執行任何操作", + "doNothingWaitForUser": "不執行任何操作(等待使用者)", + "duplicateUnavailableInImproveKandev": "無法複製此工作區中的工作流程。", + "duplicateWorkflow": "複製", + "duplicatingWorkflow": "正在複製…", + "everySeconds_one": "每 {{count}} 秒", + "everySeconds_other": "每 {{count}} 秒", + "export": "匯出", + "exportAll": "全部匯出", + "exportWorkflowsTitle": "匯出工作流程", + "exportWorkflowTitle": "匯出工作流程", + "failedToAddWorkflowStep": "新增工作流程步驟失敗", + "failedToCheckWorkflowStepTasks": "檢查工作流程步驟任務失敗", + "failedToCheckWorkflowTasks": "檢查工作流程任務失敗", + "failedToDeleteStep": "刪除步驟失敗", + "failedToDeleteWorkflow": "刪除工作流程失敗", + "failedToDuplicateWorkflow": "複製工作流程失敗", + "failedToExportWorkflow": "匯出工作流程失敗", + "failedToExportWorkflows": "匯出工作流程失敗", + "failedToImportWorkflows": "匯入工作流程失敗", + "failedToLoadSyncConfig": "載入工作流程同步設定失敗:{{error}}", + "failedToLoadWorkflowSteps": "載入工作流程步驟失敗", + "failedToMigrateTasks": "遷移任務失敗", + "failedToSaveWorkflowChanges": "儲存工作流程更改失敗", + "failedToUpdateWorkflowStep": "更新工作流程步驟失敗", + "hopNumber": "躍點 {{index}}", + "import": "匯入", + "importCompleteTitle": "匯入完成", + "importCreated": "已建立:{{names}}", + "importing": "正在匯入…", + "importSkipped": "已跳過(已存在):{{names}}", + "importWorkflowsTitle": "匯入工作流程", + "invalidYaml": "無效的 YAML", + "keepCurrent": "保留目前設定", + "lastAttempt": "上次嘗試 {{when}}", + "lastSynced": "上次同步 {{when}}", + "loadingWorkflowSteps": "正在載入工作流程步驟…", + "migrateAndDelete": "遷移並刪除", + "migrateAndDeleteStep": "遷移並刪除步驟", + "migrating": "正在遷移…", + "moreInformation": "更多資訊", + "moveToNextStep": "移至下一步", + "moveToPreviousStep": "移至上一步", + "moveToSpecificStep": "移至指定步驟", + "name": "名稱", + "noFeederStep": "無饋送步驟", + "noneUseTaskDefault": "無(使用任務預設)", + "noProfileOverride": "無設定覆蓋", + "notARecognizedRepositoryLink": "無法識別的 {{provider}} 儲存庫連結。", + "notSyncedYet": "尚未同步;請使用「立即同步」", + "onExit": "退出時", + "onExitActions": "退出時操作", + "onExitHelp": "離開此步驟時執行(進入下一步之前)。", + "onTurnCompleteHelp": "代理程式完成一輪後執行。可用於自動推進流水線中的任務。", + "onTurnCompleteLabel": "輪次完成時", + "onTurnCompleteTrigger": "輪次完成時", + "onTurnStartHelp": "使用者傳送訊息時執行。可用於審閱迴圈(例如收到意見回饋後移回進行中)。", + "onTurnStartLabel": "輪次開始時", + "onTurnStartTrigger": "輪次開始時", + "onUserMessage": "使用者訊息時", + "orPasteYaml": "或貼上 YAML", + "overrideAgentProfileHelp": "覆蓋此步驟的代理程式設定檔。進入此步驟時,如果使用其他設定,將建立具有全新上下文的新工作階段。", + "overrideOriginalSessionOptions": "覆蓋原工作階段選項", + "overrideOriginalSessionOptionsHelp": "保留原對話標籤頁,同時更改其在此步驟中的工作階段設定。例如,先使用 5.6 Sol 模型,再切換到 5.6 Luna 進行實現工作。", + "pasteGitLabPathHint": "貼上任意 GitLab 連結(也支援自行託管的實例;只會使用其中的路徑),或直接輸入路徑。然後在下方設定分支和目錄。", + "pasteRepositoryLinkHint": "貼上 {{provider}} 連結或直接輸入路徑,然後在下方設定分支和目錄。", + "planMode": "計劃模式", + "planModeHelp": "代理程式提出計劃,而不是直接做更改。", + "pollDisabledHint": "僅在你按下「立即同步」時執行同步。", + "pollEnabledHint": "按此間隔檢查儲存庫(最短 60 秒)。", + "pollIntervalSeconds": "輪詢間隔(秒)", + "potentialRepeatedAgentRun": "可能重複的代理程式執行", + "projectPathOrLink": "專案路徑或連結", + "promptSourceStepPrompt": "重新進入「{{stepName}}」會傳送其步驟提示詞,而不是任務描述。", + "promptSourceStepPromptWithTaskDescription": "重新進入「{{stepName}}」會傳送已渲染的步驟提示詞(含任務描述)。", + "promptSourceTaskDescription": "「{{stepName}}」沒有步驟提示詞,因此重新進入時會傳送任務描述。", + "pullFrom": "拉取自", + "pullFromHelp": "當此步驟有容量時,可選的饋送步驟用於拉取排隊中的工作。", + "readOnlyManagedBySync": "只讀;由工作流程同步管理", + "readOnlyManagedByImproveKandev": "只讀;由 Improve Kandev 管理", + "remove": "移除", + "removeAgentCondition": "移除代理程式條件 {{index}}", + "removeConditionalSessionConfigBeforeProfile": "請先移除條件工作階段設定,再為此步驟選擇固定代理程式設定檔。", + "removeSyncConfirm": "移除工作流程同步設定?這不會刪除已同步的工作流程。", + "repositoryLink": "儲存庫連結", + "repositoryRoot": "(儲存庫根目錄)", + "resetAgentContext": "重置代理程式上下文", + "resetAgentContextHelp": "進入此步驟時用全新對話上下文重啟代理程式。適用於需要無偏見視角的審閱步驟。", + "resetAgentContextHelpWithProfile": "無需此操作;切換代理程式設定檔已會建立帶全新上下文的新工作階段。", + "restoreOriginal": "恢復原始設定", + "retryPartialSaveBeforeLeaving": "離開前請重試未完成的工作流程儲存", + "returnToWorkflow": "返回工作流程", + "runCompletionActionsWhenTurnCancelled": "取消輪次時執行完成操作", + "runCompletionActionsWhenTurnCancelledHelp": "僅在使用者明確取消輪次時適用。目標步驟的進入操作可能會立即啟動另一輪代理程式。", + "save": "儲存", + "saveBeforeDuplicating": "複製前請先儲存工作流程。", + "saveBeforeExporting": "匯出前請先儲存工作流程。", + "saveFailed": "儲存失敗:{{error}}", + "saveWorkflowsBeforeOrdering": "排序前請先儲存工作流程", + "saving": "正在儲存…", + "seconds": "秒", + "selectAction": "選擇操作", + "selectedStepFallback": "已選", + "selectStep": "選擇步驟", + "selectWorkflow": "選擇工作流程", + "sessionConfigCarryForwardWarning": "由於複用原對話標籤頁,之前的工作流程設定可能會沿用到此步驟。", + "sessionConfigCarryForwardWarningMessage": "{{stepName}} 中更改的設定可能會沿用到此步驟的 {{agentName}}。請選擇保留、恢復原始或設定新值。", + "sessionConfigEmptyRules": "新增條件,以選擇哪些初始代理程式接收這些設定。", + "sessionConfigFixedProfileWarning": "請先移除固定設定覆蓋,再設定原工作階段。這兩種行為不能同時使用。", + "sessionConfigKeep": "保留", + "sessionConfigModelOptionsUnavailable": "此代理程式的模型選項不可用。請重新整理代理程式能力後再儲存此條件。", + "sessionConfigRestore": "恢復", + "sessionConfigRulesHelp": "規則應用於任務的第一個代理程式工作階段,不會建立或切換對話標籤頁。", + "sessionConfigSetNew": "重新設定", + "setSettings": "設定選項", + "settingsForAgent": "{{agent}} 的設定", + "showInCommandPanel": "在命令面板中顯示", + "showInCommandPanelHelp": "開啟命令面板(Cmd+K)時顯示此步驟中的任務。可用於從快速存取中隱藏待辦或完成步驟。", + "startStep": "起始步驟", + "startStepHelp": "新任務從此步驟開始。每個工作流程只能有一個起始步驟。", + "stepIsPartOfReplayCycle": "{{stepName}} 屬於回放迴圈", + "stepNamePlaceholder": "步驟名稱", + "workflowPrompt": "工作流程提示詞", + "workflowPromptHelp": "可選說明,會在每一步進入時、步驟提示詞之前加入。支援 {task_id} 與 @saved-prompt 引用(展開方式與步驟提示詞相同)。{{taskPrompt}} 僅用於步驟。留空即停用。對代理程式可見,並在聊天中摺疊顯示。", + "workflowPromptPlaceholder": "若 PR 已合併或關閉,將任務移至 Done。\n若需要建立多個提取要求,優先通過子任務編排。", + "workflowPromptCollapsedHint": "可選;展開以新增共享的步驟入口說明", + "workflowPromptSetHint": "已設定;展開以編輯", + "workflowInstructionsCollapsed": "工作流程說明", + "stepPrompt": "步驟提示詞", + "stepPromptHelp": "為此步驟中的代理程式提供自訂指令。使用 {{taskPrompt}} 可插入任務描述。", + "stepPromptPlaceholderExample": "使用 OAuth2 實現使用者身分驗證", + "stepPromptPlaceholderTaskPrompt": "使用者提供的原始任務描述", + "stepPromptUsageHint": "輸入 {{open}} 可使用佔位符({{taskPrompt}} 會插入任務描述),或輸入 @ 引用已儲存的提示詞。其內容會作為隱藏上下文附加;編輯已儲存的提示詞時,所有引用該提示詞的步驟都會更新。注意:{{taskPrompt}} 只會在步驟提示詞本身展開,不會在所引用的已儲存提示詞中展開。", + "switchProviderWarning": "切換來源後,所有已同步工作流程都會替換為新儲存庫中的版本;新儲存庫中不存在的工作流程將被移除。", + "syncCompletedWithWarnings": "同步完成,但有警告", + "syncConfigSaved": "工作流程同步設定已儲存", + "syncDescription": "自動將儲存庫中的工作流程定義同步到此工作區。", + "syncDirectoryHelp": "目錄應包含 {{format}} 格式的工作流程匯出檔案({{extensions}})- 與工作流程匯出產生的格式相同。", + "synced": "已同步", + "syncedBadgeTooltip": "只讀;由 {{source}} 的工作流程同步管理。請在同步儲存庫中編輯或移除。", + "syncedReadOnlyReason": "由工作流程同步管理;請在同步儲存庫中編輯或移除", + "syncFailed": "同步失敗", + "syncFailedWithError": "同步失敗:{{error}}", + "syncingFromRepository": "正在從 <1>{{repository}} 同步", + "syncNow": "立即同步", + "syncProviderLabel": "同步來源", + "syncRemoved": "已移除工作流程同步;已同步的工作流程可再次編輯", + "syncRemoveFailed": "刪除失敗:{{error}}", + "syncResolvedTarget": "正在同步 {{owner}}/{{repo}} @ {{branch}};目錄 {{directory}}。", + "syncResolvedTargetGitLab": "正在同步 {{projectPath}} @ {{branch}};目錄 {{directory}}。", + "syncTitle": "工作流程同步", + "targetStep": "目標步驟", + "targetWorkflow": "目標工作流程", + "template": "模板", + "templateCodeReview": "程式碼審閱", + "templatePlan": "計劃", + "templates": "模板:", + "templateSecurityAudit": "安全審計", + "transitionAuto": "自動", + "transitionBack": "返回", + "transitionGoto": "跳轉", + "transitionManual": "手動", + "transitions": "流轉", + "unsavedStepChangesDiscarded": "未儲存的步驟更改將被丟棄。", + "unsavedWorkflowChangesDiscarded": "未儲存的工作流程更改將被丟棄。", + "update": "更新", + "uploadYamlFile": "上傳 YAML 檔案", + "userActionRequired": "需要使用者操作", + "waitForAgentCompletionSignal": "等待代理程式完成訊號", + "waitForAgentCompletionSignalHelp": "僅在代理程式呼叫 {{tool}} 後才自動推進。否則將輪次結束視為完成。", + "waitingForFirstSync": "等待首次同步…", + "waitingForRetry": "正在等待重試失敗的更改。", + "whenAgentIs": "當代理程式為", + "whenChildTasksComplete": "當子任務完成時", + "wipLimit": "在製品限制", + "wipLimitHelp": "此步驟中允許的最大活動任務數。溢位的任務在佇列中可見。使用 0 表示無限制。", + "wipLimitsNote": "在製品限制約束的是活動工作,而非可見性。溢位任務會留在看板上直到有容量;若所選饋送步驟也已滿,則拒絕建立新任務。", + "workflow": "工作流程", + "workflowCycleBlocked": "工作流程迴圈已阻止", + "workflowCycleBlockedDescription": "繼續前請更改工作流程步驟以消除自動迴圈。", + "workflowCycleBlockingBody": "此路徑會重新進入「{{stepName}}」,並可能在沒有使用者再次操作的情況下重新啟動代理程式。", + "workflowCycleReplayPathFor": "{{stepName}} 的回放路徑", + "workflowCycleWarningBody": "此路徑可能重新進入「{{stepName}}」,並在使用者操作後再次啟動代理程式。", + "workflowDescription": "描述", + "workflowDescriptionPlaceholder": "可選描述", + "workflowDetails": "工作流程詳情", + "workflowName": "工作流程名稱", + "workflowsReadOnlyImprove": "此工作區中的工作流程由 Improve Kandev 管理,無法更改。", + "workflowNameIsRequired": "工作流程名稱為必填項", + "workflowNamePlaceholder": "我的專案工作流程", + "workflowMutationInProgress": "請等待目前工作流程更改完成。", + "workflows": "工作流程", + "workflowsSectionDescription": "建立帶自動流轉的自主流水線,或由你手動移動任務的手動工作流程", + "workflowSteps": "工作流程步驟", + "workflowSyncCompleted": "工作流程同步完成" +} diff --git a/apps/web/src/locales/zh-tw/workspaces.json b/apps/web/src/locales/zh-tw/workspaces.json new file mode 100644 index 0000000000..ad40d57226 --- /dev/null +++ b/apps/web/src/locales/zh-tw/workspaces.json @@ -0,0 +1,122 @@ +{ + "addLocalRepository": "新增本地儲存庫", + "addScript": "新增指令碼", + "addWorkspace": "新增工作區", + "alwaysPullBeforeWorktree": "建立新工作樹前始終拉取", + "backToWorkspaces": "返回工作區", + "branchTemplateIssueKey": "ticket 的別名。按模板可讀性任選其一。", + "branchTemplateLiteralPrefix": "直接寫字面字首,例如 <0>{{example}}。", + "branchTemplatePlaceholders": "分支模板佔位符", + "branchTemplateSuffix": "短隨機字尾。可選,但建議使用以避免分支名衝突。示例:{{example}}。", + "branchTemplateTaskId": "Kandev 任務 UUID,已清理為適合分支名。示例:{{example}}。", + "branchTemplateTicket": "優先使用任務標識;否則使用 Jira、Linear、GitHub 議題或 GitHub PR 後設資料。示例:{{example}}。", + "branchTemplateTitle": "任務標題清理為小寫 ASCII、連字元分隔,最長 20 字元。示例:{{example}}。", + "branchTemplateTitleFull": "與 title 相同的清理規則,但最長 80 字元。示例:{{example}}。", + "buildScriptChip": "構建指令碼", + "checking": "正在檢查…", + "cleanupScript": "清理指令碼", + "cleanupScriptChip": "清理指令碼", + "cleanupScriptHelp": "任務完成時執行,用於清理工作區。", + "close": "關閉", + "closeRepositoryEditor": "關閉儲存庫編輯器", + "confirmDelete": "確認刪除", + "copyFiles": "複製檔案", + "copyFilesHelp": "複製到新工作樹的 gitignored 路徑。在條目後追加 <0>{{symlink}} 可連結回主儲存庫。使用 <1>{{escapedSymlink}} 表示以 <2>{{symlink}} 結尾的字面檔名。", + "copyFilesPathsResolved": "路徑相對於儲存庫根解析,並植入每個新工作樹,保持相對位置。工作樹中已有檔案不會被覆蓋。", + "copyFilesPatternBraces": "<0>{{braces}} 大括號交替,例如 <1>{{example}}", + "copyFilesPatternGlobstar": "<0>{{globstar}} 匹配任意層目錄,例如 <1>{{example}}", + "copyFilesPatternLiteral": "<0>{{pattern}} 字面檔案或目錄(目錄會遞迴複製)", + "copyFilesPatternWildcards": "<0>{{star}}、<1>{{question}}、<2>{{charClass}} 單段萬用字元", + "copyFilesRemoteFallback": "遠端執行器複製檔案內容,而不是建立符號連結。", + "copyFilesSizeLimit": "複製到遠端執行器時,超過 {{limit}} 的檔案會被跳過。本地工作樹複製無大小上限。", + "customScriptsLabel": "自訂指令碼", + "customScripts_one": "{{count}} 個自訂指令碼", + "customScripts_other": "{{count}} 個自訂指令碼", + "defaultAgentProfile": "預設代理程式設定檔", + "defaultExecutor": "預設執行器", + "delete": "刪除", + "deleteRepository": "刪除儲存庫", + "deleteRepositoryConfirm": "這將移除儲存庫及其指令碼。此操作無法撤銷。", + "deleteRepositoryTitle": "刪除儲存庫", + "deleteRepositoryActiveSessions_one": "此儲存庫正被 {{count}} 個活動代理程式工作階段使用。請先停止或完成後再刪除儲存庫。", + "deleteRepositoryActiveSessions_other": "此儲存庫正被 {{count}} 個活動代理程式工作階段使用。請先停止或完成後再刪除儲存庫。", + "deleteThisWorkspace": "刪除此工作區", + "deleteWorkspace": "刪除工作區", + "devScript": "開發指令碼", + "devScriptChip": "開發指令碼", + "devScriptHelp": "用於啟動此儲存庫的預覽開發伺服器。使用 <0>{{port}} 自動分配埠。", + "discoverRepositoryDescription": "選擇已發現的儲存庫,或提供絕對路徑進行驗證。", + "discoveredRepositories": "已發現的儲存庫", + "edit": "編輯", + "environmentSecrets": "環境金鑰", + "environmentSecretsDescription": "將已儲存的金鑰繫結到使用此儲存庫的任務的環境變數鍵。金鑰值不會在此顯示。", + "environmentSecretKey": "環境變數鍵", + "environmentSecretKeyPlaceholder": "NPM_TOKEN", + "environmentSecretValue": "已儲存金鑰", + "selectEnvironmentSecret": "選擇金鑰", + "missingSecretReference": "缺少金鑰引用", + "noEnvironmentSecrets": "未設定環境金鑰。", + "noAvailableEnvironmentSecrets": "沒有可用的全域或工作區金鑰。", + "addEnvironmentSecret": "新增環境金鑰", + "removeEnvironmentSecret": "移除環境金鑰 {{key}}", + "environmentSecretKeyInvalid": "請使用有效的 POSIX 環境變數鍵。", + "environmentSecretKeyDuplicate": "每個環境變數鍵只能繫結一次。", + "environmentSecretKeyReserved": "此環境變數鍵由 Kandev 保留。", + "environmentSecretRequired": "請為每個環境變數鍵選擇一個已儲存金鑰。", + "globalSecretScope": "全域", + "workspaceSecretScope": "工作區", + "failedToCheckRepositorySessions": "檢查儲存庫工作階段失敗", + "failedToCreateWorkspace": "建立工作區失敗", + "failedToDeleteRepository": "刪除儲存庫失敗", + "failedToDeleteWorkspace": "刪除工作區失敗", + "failedToDiscoverRepositories": "發現儲存庫失敗", + "failedToSaveRepository": "無法儲存此儲存庫", + "failedToSaveWorkspace": "儲存工作區失敗", + "filterRepositories": "篩選儲存庫…", + "invalidRepositoryPath": "無效的儲存庫路徑", + "localPath": "本地路徑", + "localPathNotSet": "未設定本地路徑", + "repositoriesReadOnlyImprove": "此工作區中的儲存庫由 Improve Kandev 管理,無法更改。", + "manageWorkspaceDetails": "管理工作區詳情,並跳轉到工作流程或儲存庫。", + "manageYourWorkspacesAndWorkflows": "管理你的工作區與工作流程", + "manualPath": "手動路徑", + "name": "名稱", + "noAgentProfilesAvailable": "無可用代理程式設定檔", + "overview": "概覽", + "noCustomScripts": "無自訂指令碼", + "noDefault": "無預設", + "noExecutorsAvailable": "無可用執行器", + "noRepositoriesFound": "未找到儲存庫。", + "noScriptsYet": "尚無指令碼。", + "noWorkspacesConfigured": "未設定工作區。新增第一個工作區以開始使用。", + "patternSyntax": "模式語法", + "remoteRepository": "遠端儲存庫", + "repositories": "儲存庫", + "resourceCount_one": "{{count}} 個資源", + "resourceCount_other": "{{count}} 個資源", + "repositoriesInThisWorkspace": "此工作區中的儲存庫", + "repository": "儲存庫", + "repositoryName": "儲存庫名稱", + "scanningRepositories": "正在掃描儲存庫…", + "scriptName": "指令碼名稱", + "selectDefaultAgentProfile": "選擇預設代理程式設定檔", + "selectDefaultExecutor": "選擇預設執行器", + "setupScript": "設定指令碼", + "setupScriptHelp": "在複製儲存庫或建立 Git 工作樹時執行。", + "sourceLocal": "本地", + "sourceRemote": "遠端", + "supportedPatterns": "支援的模式:", + "thisActionCannotBeUndone": "此操作無法撤銷。", + "typeWorkspaceNameToConfirm": "輸入工作區名稱 <0>{{name}} 以確認刪除。此操作無法撤銷。", + "untitledRepository": "未命名儲存庫", + "useRepository": "使用儲存庫", + "validGitRepository": "有效的 git 儲存庫", + "validate": "驗證", + "workspaceName": "工作區名稱", + "workspaceNameIsRequired": "工作區名稱為必填項。", + "workspaceNamePlaceholder": "我的工作區", + "workspaceNotFound": "未找到工作區", + "workspaceSettings": "工作區設定", + "worktreeBranchTemplate": "工作樹分支模板", + "worktreeSync": "工作樹同步" +} diff --git a/docs/i18n.md b/docs/i18n.md index 2389a984b9..02b117d0e0 100644 --- a/docs/i18n.md +++ b/docs/i18n.md @@ -2,9 +2,13 @@ Kandev's web UI is internationalized with [i18next](https://www.i18next.com) + [react-i18next](https://react.i18next.com). English is the source locale, -European Portuguese (`pt-pt`) and Simplified Chinese (`zh-cn`) are the shipped +European Portuguese (`pt-pt`), Simplified Chinese (`zh-cn`), Traditional Chinese +Taiwan (`zh-tw`), and Traditional Chinese Hong Kong (`zh-hk`) are the shipped human locales, and a generated **pseudo-locale** is used for QA. Requirements live in -[`docs/specs/platform/i18n.md`](specs/platform/i18n.md). +[`docs/specs/platform/i18n.md`](specs/platform/i18n.md). Traditional Chinese +catalogs are derived from `zh-cn` via OpenCC plus a product glossary; see +[`docs/specs/platform/traditional-chinese-locales.md`](specs/platform/traditional-chinese-locales.md) +and [`docs/plans/traditional-chinese-locales/`](plans/traditional-chinese-locales/). The migration is **complete**. Every routed web UI surface renders through `t()` / ``, and `i18nGuardFiles` now enumerates the directories that hold them. @@ -1073,14 +1077,21 @@ Do it in its own PR, not inside a copy-only migration. Use a canonical lowercase locale id such as `zh-cn`. Locale negotiation accepts case variants such as `zh-CN`, but cookies and `` use the canonical id. +For Traditional Chinese Taiwan / Hong Kong specifically, prefer converting from +`zh-cn` with `node scripts/convert-zh-cn-to-zh-hant.mjs --write` (OpenCC + +`scripts/lib/zh-hant-glossary.json`) rather than re-translating from English. +See `docs/plans/traditional-chinese-locales/glossary.md`. + 1. Add the locale to `SUPPORTED_LOCALES` and give it a fixed endonym in `LOCALE_LABELS` in `apps/web/lib/i18n/index.ts`. Add the same id to `supportedLocales` in `apps/backend/internal/i18n/i18n.go`. Keep the frontend - and backend lists synchronized. + and backend lists synchronized. Also wire `date-locale.ts` when the locale + needs a non-English date-fns pack. 2. Copy every `apps/web/src/locales/en/*.json` namespace into - `apps/web/src/locales//`. Translate values only: never rename keys, - plural suffixes, interpolation placeholders, `` tags, command tokens, - shortcuts, filenames, URLs, or brand names. + `apps/web/src/locales//` (or generate from `zh-cn` for Traditional + Chinese). Translate values only: never rename keys, plural suffixes, + interpolation placeholders, `` tags, command tokens, shortcuts, + filenames, URLs, or brand names. 3. Add `apps/backend/internal/i18n/locales/.json` with exactly the same keys as the backend `en.json` and translate its values. 4. Add focused frontend tests for registration, selection, activation, cookie diff --git a/docs/plans/traditional-chinese-locales/glossary.md b/docs/plans/traditional-chinese-locales/glossary.md new file mode 100644 index 0000000000..0c549e871e --- /dev/null +++ b/docs/plans/traditional-chinese-locales/glossary.md @@ -0,0 +1,227 @@ +# Chinese UI glossary: zh-cn → zh-tw / zh-hk + +Source of truth for **product vocabulary** when converting Simplified Chinese +catalogs to Traditional Chinese (Taiwan / Hong Kong). Character conversion +(OpenCC `s2twp` / `s2hk`) handles most glyphs; this file covers terms where: + +- region software norms differ from bare conversion; +- Taiwan and Hong Kong diverge from each other; +- Kandev product nouns must stay consistent across namespaces. + +## How to apply + +1. Convert each `zh-cn` string with OpenCC (`s2twp` → `zh-tw`, `s2hk` → `zh-hk`). +2. Apply **exact whole-word / phrase replacements** from the tables below + (longest match first) on the converted text. +3. Do **not** rewrite brand names, code identifiers, URLs, `{{interpolation}}` + placeholders, or HTML-ish `` Trans tags. +4. When a new product term appears in `zh-cn`, add a row here in the same PR + that introduces the Traditional update. + +Priority when rows conflict: **longer phrase wins**, then **more specific +domain table** over general UI. + +--- + +## Brands and never-translate + +| Keep as-is | +| -------------------------------------------------------------- | +| Kandev | +| GitHub / GitLab / Jira / Linear / Azure DevOps / Sentry | +| PR / MR (when used as Latin abbreviations next to full forms) | +| JSON / YAML / CLI / API / URL / SSH / HTTP / MCP / ACP | +| Type-to-confirm tokens compared with `===` (e.g. `DELETE ALL`) | + +--- + +## Core product nouns + +| English concept | zh-cn | zh-tw | zh-hk | Notes | +| ----------------- | --------------- | ---------------- | ---------------- | ----------------------------------------------------------------- | +| workspace | 工作区 | 工作區 | 工作區 | OpenCC usually enough | +| task | 任务 | 任務 | 任務 | | +| session | 会话 | 工作階段 | 工作階段 | Prefer 工作階段 over 會話 for UI | +| agent | 智能体 / Agent | 代理程式 / Agent | 代理程式 / Agent | In zh-cn, reserve 代理 for network proxies or delegated authority | +| executor | 执行器 | 執行器 | 執行器 | | +| agent profile | 智能体配置 | 代理程式設定檔 | 代理程式設定檔 | | +| utility agent | 辅助智能体 | 輔助代理程式 | 輔助代理程式 | Avoid the literal 實用代理程式 | +| executor profile | 执行器配置 | 執行器設定檔 | 執行器設定檔 | | +| workflow | 工作流 | 工作流程 | 工作流程 | Prefer 工作流程 in UI | +| agentic workflow | 智能体工作流 | 代理式工作流程 | 代理式工作流程 | Describes an agent-driven workflow, not an agent program | +| automation | 自动化 | 自動化 | 自動化 | | +| repository / repo | 仓库 | 儲存庫 | 儲存庫 | Avoid 倉庫 for git repos | +| worktree | 工作树 | 工作樹 | 工作樹 | Translate the UI term; keep code identifiers unchanged | +| pull request | 拉取请求 | 提取要求 | 拉取要求 | GitHub TW often 提取要求; HK 拉取要求 | +| merge request | 合并请求 | 合併請求 | 合併請求 | GitLab | +| branch | 分支 | 分支 | 分支 | | +| commit | 提交 | 提交 | 提交 | Noun/verb both 提交 in git UI | +| diff / changes | 变更 / 更改 | 變更 / 更改 | 變更 / 更改 | | +| review | 审查 / 评审 | 審查 / 評審 | 審查 / 評審 | Prefer 審查 for code review | +| plugin | 插件 | 外掛 | 外掛程式 | TW 外掛; HK often 外掛程式 | +| office | 办公室 / Office | 辦公室 / Office | 辦公室 / Office | Product area name | +| kanban | 看板 | 看板 | 看板 | | + +--- + +## General software UI + +| English concept | zh-cn | zh-tw | zh-hk | Notes | +| ---------------------------- | --------------- | --------------- | --------------- | --------------------------------------------------------------------- | +| software | 软件 | 軟體 | 軟件 | Classic TW/HK split | +| network | 网络 | 網路 | 網絡 | | +| information | 信息 | 資訊 | 資訊 | | +| data | 数据 | 資料 | 數據 | HK often keeps 數據 | +| file | 文件 | 檔案 | 檔案 | When meaning filesystem file | +| document | 文档 | 文件 | 文件 | When meaning written doc | +| folder | 文件夹 | 資料夾 | 資料夾 | | +| configuration / config | 配置 | 設定 | 設定 | Use 設定檔 when it means a profile or file | +| configuration file / profile | 配置文件 | 設定檔 | 設定檔 | | +| source code | 源代码 | 原始碼 | 原始碼 | | +| code | 代码 | 程式碼 | 程式碼 | | +| settings | 设置 | 設定 | 設定 | | +| default | 默认 | 預設 | 預設 | | +| user | 用户 | 使用者 | 用戶 | TW UI often 使用者 | +| account | 账户 / 账号 | 帳戶 | 帳戶 | | +| quoted UI label | “标签” | 「標籤」 | 「標籤」 | Keep straight quotes inside code and query examples | +| login / sign in | 登录 | 登入 | 登入 | | +| logout / sign out | 退出登录 / 登出 | 登出 | 登出 | | +| save | 保存 | 儲存 | 儲存 | | +| create | 创建 | 建立 | 建立 | Prefer 建立 over 創建 in buttons | +| add | 添加 | 新增 | 新增 | Prefer 新增 for UI actions | +| send | 发送 | 傳送 | 傳送 | | +| run / execute | 运行 | 執行 | 執行 | | +| current | 当前 | 目前 | 目前 | | +| message | 消息 | 訊息 | 訊息 | Product UI message, not news | +| queue | 队列 | 佇列 | 佇列 | | +| control / widget | 控件 | 控制項 | 控制項 | | +| link | 链接 | 連結 | 連結 | | +| generate | 生成 | 產生 | 產生 | | +| text | 文本 | 文字 | 文字 | | +| list | 列表 | 清單 | 列表 | | +| view | 查看 | 檢視 | 查看 | | +| feedback | 反馈 | 意見回饋 | 反饋 | | +| disable | 禁用 | 停用 | 停用 | | +| component | 组件 | 元件 | 組件 | | +| screen | 屏幕 | 螢幕 | 屏幕 | | +| email address | 邮箱 | 電子郵件地址 | 電郵地址 | | +| field | 字段 | 欄位 | 欄位 | | +| variable | 变量 | 變數 | 變量 | | +| interface | 界面 | 介面 | 介面 | | +| reply | 回复 | 回覆 | 回覆 | | +| explanation / instructions | 说明 | 說明 | 說明 | | +| identity | 身份 | 身分 | 身份 | | +| access | 访问 | 存取 | 存取 | | +| support | 支持 | 支援 | 支援 | | +| navigation | 导航 | 導覽 | 導航 | | +| menu | 菜单 | 選單 | 菜單 | | +| global | 全局 | 全域 | 全局 | | +| delete | 删除 | 刪除 | 刪除 | OpenCC | +| search | 搜索 | 搜尋 | 搜尋 | | +| load / loading | 加载 | 載入 | 載入 | | +| upload | 上传 | 上傳 | 上傳 | | +| download | 下载 | 下載 | 下載 | | +| server | 服务器 | 伺服器 | 伺服器 | | +| proxy server | 代理服务器 | 代理伺服器 | 代理伺服器 | Do not expand proxy to 代理程式 | +| reverse proxy client | 反向代理客户端 | 反向代理用戶端 | 反向代理用戶端 | | +| provider | 提供商 | 提供者 | 提供者 | Software/service abstraction rather than a commercial vendor | +| credentials | 凭据 | 認證資訊 | 認證資料 | | +| process | 进程 | 處理程序 | 程序 | | +| disk | 磁盘 | 磁碟 | 磁碟 | | +| flag | 标志 | 旗標 | 旗標 | CLI or system flag | +| fallback | 回退 | 備援 | 後備 | Model/provider fallback | +| explicit | 显式 | 明確指定的 | 明確指定的 | Prefer natural UI wording over the literal 顯式 | +| invoke / call | 调用 | 呼叫 | 呼叫 | API, tool, or function call | +| response | 响应 | 回應 | 回應 | | +| customize | 自定义 | 自訂 | 自訂 | | +| review (verb) | 审阅 | 審閱 | 審閱 | | +| project | 项目 | 專案 | 項目 | TW 專案 / HK 項目 | +| quality | 质量 | 品質 | 質素 / 品質 | Prefer 品質 in product UI for both unless copy is about media quality | +| video | 视频 | 影片 | 影片 | Prefer 影片 in both product UIs | +| memory (RAM) | 内存 | 記憶體 | 記憶體 | | +| cache | 缓存 | 快取 | 快取 | | +| paste | 粘贴 | 貼上 | 貼上 | | +| copy | 复制 | 複製 | 複製 | | +| clone | 克隆 | 複製 | 複製 | Git operation; distinguish from duplicating a profile by context | +| history | 历史 | 歷史 | 歷史 | Never use calendar-specific 曆史 | +| background | 后台 | 後台 | 後台 | Use 台, not 臺, for UI/background processing | +| understand | 了解 | 了解 | 了解 | Avoid literary 瞭解 in concise UI copy | +| print | 打印 | 列印 | 列印 | | +| email | 邮件 / 邮箱 | 電子郵件 / 電郵 | 電郵 / 電郵地址 | Prefer 電子郵件 for formal; 電郵 OK short | +| permission | 权限 | 權限 | 權限 | | +| role | 角色 | 角色 | 角色 | | +| token | 令牌 / Token | 權杖 / Token | 權杖 / Token | Prefer keeping `Token` where API-facing | +| password | 密码 | 密碼 | 密碼 | | +| error | 错误 | 錯誤 | 錯誤 | | +| warning | 警告 | 警告 | 警告 | | +| success | 成功 | 成功 | 成功 | | +| failed / failure | 失败 | 失敗 | 失敗 | | +| cancel | 取消 | 取消 | 取消 | | +| confirm / OK | 确定 | 確定 | 確定 | | +| close | 关闭 | 關閉 | 關閉 | | +| open | 打开 | 開啟 | 開啟 | Prefer 開啟 for actions | +| edit | 编辑 | 編輯 | 編輯 | | +| export | 导出 | 匯出 | 匯出 | | +| import | 导入 | 匯入 | 匯入 | | +| language | 语言 | 語言 | 語言 | | +| display language | 显示语言 | 顯示語言 | 顯示語言 | | + +--- + +## Git / VCS chrome (high visibility) + +| English concept | zh-cn | zh-tw | zh-hk | +| --------------- | ------------ | ------------ | ------------ | +| stage | 暂存 | 暫存 | 暫存 | +| unstage | 取消暂存 | 取消暫存 | 取消暫存 | +| stash | 贮藏 / Stash | 收藏 / Stash | 貯存 / Stash | +| push | 推送 | 推送 | 推送 | +| pull | 拉取 | 拉取 | 拉取 | +| fetch | 获取 | 擷取 | 擷取 | +| force push | 强制推送 | 強制推送 | 強制推送 | +| upstream | 上游 | 上游 | 上游 | +| remote | 远程 | 遠端 | 遠端 | +| conflict | 冲突 | 衝突 | 衝突 | +| resolve | 解决 | 解決 | 解決 | + +--- + +## Auth and identity + +| English concept | zh-cn | zh-tw | zh-hk | +| --------------------- | --------------- | ------------ | ------------ | +| authentication | 身份验证 / 认证 | 驗證 | 驗證 | +| authorization | 授权 | 授權 | 授權 | +| personal access token | 个人访问令牌 | 個人存取權杖 | 個人存取權杖 | +| OAuth | OAuth | OAuth | OAuth | + +--- + +## Application rules for the generator + +1. **Whole-phrase table first** (product nouns, multi-character UI verbs), then + single-token rows. +2. After glossary pass, assert no Simplified-only code points remain in + `zh-tw` / `zh-hk` values (except Latin/brands/placeholders). Use a Unicode + script check in the conversion script. +3. Plurals: Chinese uses the same form for `_one` / `_other` in most UI + strings; keep both keys and convert both values. +4. Interpolation: never translate or break `{{name}}`, `$t(...)`, or `<1>…`. +5. When TW and HK share a value, still write both catalogs explicitly (no + runtime aliasing). +6. Apply reviewed per-key overrides after glossary conversion. Reject an + override whose key is absent from the source namespace, and validate the + complete output before writing any catalog. + +--- + +## Known residual judgment calls + +These may need human review after conversion rather than hard rules: + +- 「信息」in non-UI error dumps that should stay technical. +- 「文件」when the English source means "document" vs "file" — check `en` key. +- 「项目」in Azure DevOps / Jira "Project" vs generic "item". +- Length of Traditional strings in dense toolbars (truncation risk). + +Record any new judgment in this file when resolved. diff --git a/docs/plans/traditional-chinese-locales/plan.md b/docs/plans/traditional-chinese-locales/plan.md new file mode 100644 index 0000000000..b7822bb6f3 --- /dev/null +++ b/docs/plans/traditional-chinese-locales/plan.md @@ -0,0 +1,144 @@ +--- +spec: docs/specs/platform/traditional-chinese-locales.md +created: 2026-08-12 +status: done +--- + +# Implementation Plan: Traditional Chinese locales (zh-tw / zh-hk) + +## Overview + +Ship Traditional Chinese for Taiwan (`zh-tw`) and Hong Kong (`zh-hk`) by +registering the locales end-to-end (frontend runtime, date-fns, backend +negotiation), then generating catalogs from current `zh-cn` via OpenCC-class +conversion plus the product [glossary](glossary.md). High-traffic namespaces +get a human review pass before ship. Real-locale parity stays advisory. + +Order: contracts and tooling first (so catalogs can be generated and checked), +then full catalog materialization, then switcher/docs/E2E polish. + +--- + +## Backend + +### Locale support map + +- `apps/backend/internal/i18n/i18n.go`: add `"zh-tw": true`, `"zh-hk": true` to + `supportedLocales` (keep comment sync with frontend `SUPPORTED_LOCALES`). +- `apps/backend/internal/i18n/locales/zh-tw.json` and `zh-hk.json`: convert from + `zh-cn.json` with the same pipeline/glossary as the web catalogs. +- Tests in `i18n_test.go` and `shell_test.go`: cookie + Accept-Language + normalization for both tags; message lookup differs from `en`. + +--- + +## Frontend + +### Runtime registration + +- `apps/web/lib/i18n/index.ts`: extend `SUPPORTED_LOCALES` and `LOCALE_LABELS` + (`繁體中文(台灣)`, `繁體中文(香港)`). Lazy globs already discover + `src/locales/*/*.json` — no bundling change beyond the new directories. +- `apps/web/lib/i18n/date-locale.ts`: lazy loaders for date-fns `zhTW` / `zhHK`. +- Unit tests: `index.test.ts`, `date-locale.test.ts`, `formats.test.ts`, + `boot.test.ts`, `lazy-catalogs.test.ts` updated for the two locales. + +### Catalogs + +- Create `apps/web/src/locales/zh-tw/` and `zh-hk/` with the same 30 namespace + files as `zh-cn`. +- Generator script (devDependency OpenCC or equivalent CLI): + `apps/web/scripts/convert-zh-cn-to-zh-hant.mjs` + - Input: `src/locales/zh-cn/*.json` (+ backend `zh-cn.json`). + - Modes: `--locale zh-tw|zh-hk|all`, `--write`, dry-run diff summary. + - Steps: OpenCC (`s2twp` / `s2hk`) → glossary phrase replace (longest first) + from `docs/plans/traditional-chinese-locales/glossary.md` or a machine + sibling JSON derived from it → preserve placeholders / Trans tags / brands. + - Optional: fail if residual Simplified-only characters remain. +- Check in generated JSON (same model as hand-maintained `zh-cn`). Re-run the + script when `zh-cn` is bulk-updated; do not invent a runtime converter. + +### Language switcher / settings + +- Any hard-coded locale list outside `SUPPORTED_LOCALES` / `selectableLocales` + must pick up the new tags (search settings appearance UI tests). +- Endonyms come only from `LOCALE_LABELS` (not catalog keys), matching `zh-cn`. + +### Docs + +- `docs/i18n.md` and `docs/specs/platform/i18n.md`: shipped locale list includes + `zh-tw` / `zh-hk`. +- Keep this plan's [glossary](glossary.md) as the living term table. + +--- + +## Tests + +| What | File | How | +| ------------------------------ | -------------------------------------------------------------- | ----------------------------------------------------------------------- | +| Supported + normalize + labels | `apps/web/lib/i18n/index.test.ts` | Expect both locales in `SUPPORTED_LOCALES`, labels, `selectableLocales` | +| Date locale mapping | `apps/web/lib/i18n/date-locale.test.ts` | `zh-tw` → zh-TW, `zh-hk` → zh-HK | +| Intl formatting | `apps/web/lib/i18n/formats.test.ts` | activate each locale; number/date path uses tag | +| Catalog load | `apps/web/lib/i18n/lazy-catalogs.test.ts` / `index.test.ts` | resolve a known key (e.g. `settings:displayLanguage`) | +| Glossary-critical terms | new `apps/web/scripts/zh-hant-glossary.test.ts` or `.mjs` test | sample keys differ TW vs HK where glossary requires | +| Backend Supported/FromRequest | `apps/backend/internal/i18n/i18n_test.go` | cookie + Accept-Language | +| Shell lang attribute | `apps/backend/internal/webapp/shell_test.go` | `lang="zh-tw"` / `zh-hk` | +| Conversion script integrity | unit test next to script | placeholders and brands preserved on fixture strings | + +--- + +## E2E Tests + +- **Scenario:** select 繁體中文(台灣)/ 繁體中文(香港)in Settings → Appearance; + UI shows Traditional copy; reload keeps cookie. +- **File:** extend existing locale switcher coverage if present, else + `apps/web/e2e/tests/settings/locale-switcher-zh-hant.spec.ts` (name may + match the existing appearance/locale spec pattern). +- **What to verify:** language option labels, a stable chrome string (sidebar + or settings heading) is Traditional, `document.documentElement.lang`. + +--- + +## Verification Results + +- `node --test scripts/convert-zh-cn-to-zh-hant.test.mjs` — 19 passed +- Full converter dry-run — 15,878 web messages; web/backend residual warnings = 0 +- `pnpm run i18n:parity` — pass; zh-cn / zh-tw / zh-hk share 11 current en-gap keys +- `pnpm run i18n:check` — pass with 139 advisory baseline parity findings +- Focused i18n/runtime Vitest — 5 files, 84 tests passed +- `pnpm run typecheck` — pass +- Focused ESLint for changed source/tests — pass; full lint retains one + pre-existing `formats.test.ts` duplicate-string warning +- Prettier check for changed source, catalogs, and docs — pass +- `go test ./internal/i18n/... ./internal/webapp/ -count=1` — pass +- Managed production-build E2E `tests/i18n/language-switch.spec.ts` — 5 passed + +--- + +## Implementation Waves And Parallel Candidates + +``` +Wave 1: +- [x] [task-01-glossary-and-converter](task-01-glossary-and-converter.md) +- [x] [task-02-register-locales-runtime](task-02-register-locales-runtime.md) + +Wave 2 (after wave 1): +- [x] [task-03-generate-web-catalogs](task-03-generate-web-catalogs.md) +- [x] [task-04-backend-catalogs](task-04-backend-catalogs.md) + +Wave 3: +- [x] [task-05-high-traffic-review](task-05-high-traffic-review.md) +- [x] [task-06-docs-and-e2e](task-06-docs-and-e2e.md) +``` + +Wave 1 tasks touch disjoint areas (script/docs vs runtime registration) and +are parallel-safe if the user authorizes subagents. Wave 2 depends on the +converter. Wave 3 depends on generated catalogs. + +Default execution is sequential in the primary conversation. + +--- + +## Open Questions + +(None — defaults fixed in the spec.) diff --git a/docs/plans/traditional-chinese-locales/task-01-glossary-and-converter.md b/docs/plans/traditional-chinese-locales/task-01-glossary-and-converter.md new file mode 100644 index 0000000000..183cc70f76 --- /dev/null +++ b/docs/plans/traditional-chinese-locales/task-01-glossary-and-converter.md @@ -0,0 +1,82 @@ +--- +id: "01-glossary-and-converter" +title: "Glossary machine form and zh-cn→zh-hant converter" +status: done +wave: 1 +depends_on: [] +plan: "plan.md" +spec: "../../specs/platform/traditional-chinese-locales.md" +--- + +# Task 01: Glossary machine form and zh-cn→zh-hant converter + +## Intent + +Make the product [glossary](glossary.md) executable: a checked-in machine-readable +term table plus a script that converts `zh-cn` JSON catalogs to `zh-tw` / `zh-hk` +via OpenCC (`s2twp` / `s2hk`) and glossary overrides, preserving placeholders, +Trans tags, and brands. + +## Acceptance + +- A machine glossary (JSON or structured data next to the plan/script) encodes + at least the core product and general UI rows from `glossary.md`, with + distinct `zh-tw` / `zh-hk` values where the regions diverge (e.g. 軟體/軟件, + 網路/網絡, 專案/項目). +- `apps/web/scripts/convert-zh-cn-to-zh-hant.mjs` (name may match repo script + conventions) accepts `--locale zh-tw|zh-hk|all`, dry-run by default, and + `--write` to emit namespace JSON; it never mutates `en`, `pseudo`, or `zh-cn`. +- Unit coverage proves: placeholder `{{x}}` and `<1>…` survive; brand + `GitHub` unchanged; a glossary override beats bare OpenCC for at least one + TW/HK diverging pair. + +## Verification + +```bash +cd apps && pnpm install --frozen-lockfile +cd apps/web && pnpm exec node --test scripts/convert-zh-cn-to-zh-hant.test.mjs +# or the project's equivalent vitest path if the test is co-located as .test.ts +``` + +Also dry-run once against a single small namespace: + +```bash +cd apps/web && node scripts/convert-zh-cn-to-zh-hant.mjs --locale all --namespace common +``` + +## Files likely touched + +- `docs/plans/traditional-chinese-locales/glossary.md` (only if terms need edit) +- `apps/web/scripts/convert-zh-cn-to-zh-hant.mjs` (or similar) +- `apps/web/scripts/convert-zh-cn-to-zh-hant.test.mjs` (or `.test.ts`) +- `apps/web/scripts/lib/zh-hant-glossary.json` (or embedded table) +- `apps/web/package.json` (devDependency for OpenCC if required) + +## Dependencies + +- None. + +## Parallelism + +`parallel-safe` with task 02 (disjoint files: scripts/docs vs runtime). + +## Inputs + +- Spec: conversion base `zh-cn`, tags `zh-tw`/`zh-hk`, no `zh-cn` fallback. +- Plan: Frontend → Catalogs; [glossary](glossary.md). +- Pattern: existing `apps/web/scripts/i18n-*.mjs` for locales dir discovery. + +## Output contract + +- Converter + tests land; dry-run works; task/plan status updated. + +## Results + +- Converter now performs one OpenCC pass followed by one compiled glossary + pass. Source, base-Traditional, and target forms are matched so surrounding + text cannot bypass a product term, while longer target phrases remain + idempotent. +- Reviewed per-key overrides are applied last. Unknown override keys and + residual Simplified or malformed output fail before a catalog is written. +- `node --test scripts/convert-zh-cn-to-zh-hant.test.mjs`: 19 passed. +- Full dry-run: 15,878 web messages, 0 web/backend residual warnings. diff --git a/docs/plans/traditional-chinese-locales/task-02-register-locales-runtime.md b/docs/plans/traditional-chinese-locales/task-02-register-locales-runtime.md new file mode 100644 index 0000000000..547ff86ade --- /dev/null +++ b/docs/plans/traditional-chinese-locales/task-02-register-locales-runtime.md @@ -0,0 +1,75 @@ +--- +id: "02-register-locales-runtime" +title: "Register zh-tw and zh-hk in FE/BE runtime" +status: done +wave: 1 +depends_on: [] +plan: "plan.md" +spec: "../../specs/platform/traditional-chinese-locales.md" +--- + +# Task 02: Register zh-tw and zh-hk in FE/BE runtime + +## Intent + +Teach the SPA and Go shell that `zh-tw` and `zh-hk` are supported locales: +switcher labels, normalization, date-fns mapping, backend cookie / +Accept-Language negotiation. Empty or partial catalogs are OK at this step; +loading must not throw. + +## Acceptance + +- `SUPPORTED_LOCALES` includes `zh-tw` and `zh-hk`; `LOCALE_LABELS` are + `繁體中文(台灣)` and `繁體中文(香港)`; production `selectableLocales` + lists both and still hides `pseudo`. +- `date-locale` maps `zh-tw` → date-fns `zhTW`, `zh-hk` → `zhHK`. +- Backend `supportedLocales` accepts both tags; `FromRequest` honors cookie and + `Accept-Language: zh-TW` / `zh-HK` (and case variants). +- Existing unit tests updated; new cases cover activation without requiring + full catalog content (missing keys may fall back to `en`). + +## Verification + +```bash +cd apps && pnpm install --frozen-lockfile +cd apps && pnpm --filter @kandev/web test -- lib/i18n/index.test.ts lib/i18n/date-locale.test.ts lib/i18n/formats.test.ts lib/i18n/lazy-catalogs.test.ts lib/i18n/boot.test.ts +cd apps/backend && go test ./internal/i18n/... ./internal/webapp/ -count=1 +``` + +## Files likely touched + +- `apps/web/lib/i18n/index.ts` +- `apps/web/lib/i18n/index.test.ts` +- `apps/web/lib/i18n/date-locale.ts` +- `apps/web/lib/i18n/date-locale.test.ts` +- `apps/web/lib/i18n/formats.test.ts` +- `apps/web/lib/i18n/lazy-catalogs.test.ts` +- `apps/web/lib/i18n/boot.test.ts` +- `apps/backend/internal/i18n/i18n.go` +- `apps/backend/internal/i18n/i18n_test.go` +- `apps/backend/internal/webapp/shell_test.go` + +## Dependencies + +- None (catalog directories may be empty until task 03/04). + +## Parallelism + +`parallel-safe` with task 01. + +## Inputs + +- Spec: What + Scenarios for switcher, cookie, Accept-Language, formatting. +- Pattern: existing `zh-cn` / `pt-pt` registration. + +## Output contract + +- Runtime accepts both locales; tests green; task/plan status updated. + +## Results + +- Focused i18n/runtime Vitest suite: 5 files, 84 tests passed. +- Runtime catalog assertions now verify both reviewed local terminology and + the Taiwan/Hong Kong pull-request wording difference. +- Backend locale negotiation and shell tests passed via + `go test ./internal/i18n/... ./internal/webapp/ -count=1`. diff --git a/docs/plans/traditional-chinese-locales/task-03-generate-web-catalogs.md b/docs/plans/traditional-chinese-locales/task-03-generate-web-catalogs.md new file mode 100644 index 0000000000..503abf8106 --- /dev/null +++ b/docs/plans/traditional-chinese-locales/task-03-generate-web-catalogs.md @@ -0,0 +1,75 @@ +--- +id: "03-generate-web-catalogs" +title: "Generate web zh-tw and zh-hk catalogs from zh-cn" +status: done +wave: 2 +depends_on: + - "01-glossary-and-converter" + - "02-register-locales-runtime" +plan: "plan.md" +spec: "../../specs/platform/traditional-chinese-locales.md" +--- + +# Task 03: Generate web zh-tw and zh-hk catalogs from zh-cn + +## Intent + +Materialize full SPA catalogs under `apps/web/src/locales/zh-tw/` and +`zh-hk/` by running the converter against every `zh-cn` namespace, then spot-check +glossary-critical keys. + +## Acceptance + +- Both locale directories contain the same set of `*.json` namespace files as + `zh-cn` (currently 30). +- `pnpm run i18n:parity` lists `zh-tw` and `zh-hk` with missing counts comparable + to `zh-cn` (ideally 0 missing relative to `en` if `zh-cn` is complete). +- Sample assertions: diverging glossary terms render differently for TW vs HK + on at least software/network/project-class strings when present in catalogs; + `settings:displayLanguage` (or current key) is Traditional in both. +- No Simplified-only CJK remains in values except intentional exceptions + documented by the converter (should be none). + +## Verification + +```bash +cd apps && pnpm install --frozen-lockfile +cd apps/web && node scripts/convert-zh-cn-to-zh-hant.mjs --locale all --write +cd apps/web && pnpm run i18n:parity +cd apps/web && pnpm run i18n:check +cd apps && pnpm --filter @kandev/web test -- lib/i18n/index.test.ts +``` + +## Files likely touched + +- `apps/web/src/locales/zh-tw/*.json` (all namespaces) +- `apps/web/src/locales/zh-hk/*.json` (all namespaces) +- Optional glossary-assertion test file + +## Dependencies + +- Task 01 (converter). +- Task 02 (runtime must accept locales for load tests). + +## Parallelism + +Sequential with task 04 preferred if sharing the converter CLI; may run after +task 01 alone for generation, but verification that loads locales needs task 02. + +## Inputs + +- Current `apps/web/src/locales/zh-cn/**` (complete vs `en` as of main). +- Glossary + converter from task 01. + +## Output contract + +- Checked-in Traditional catalogs; parity/check commands run; status updated. + +## Results + +- Regenerated all 30 namespaces for each of `zh-tw` and `zh-hk` from the + current `zh-cn` source with the reviewed glossary and override layer. +- `i18n:parity` confirms both Traditional catalogs match the `zh-cn` coverage: + each has the same 11 keys missing from `en` as the source catalog. +- `i18n:check` passed; its 139 real-locale parity findings remain advisory + baseline gaps across `pt-pt` and the three Chinese catalogs. diff --git a/docs/plans/traditional-chinese-locales/task-04-backend-catalogs.md b/docs/plans/traditional-chinese-locales/task-04-backend-catalogs.md new file mode 100644 index 0000000000..ae8af890d1 --- /dev/null +++ b/docs/plans/traditional-chinese-locales/task-04-backend-catalogs.md @@ -0,0 +1,67 @@ +--- +id: "04-backend-catalogs" +title: "Backend zh-tw and zh-hk message catalogs" +status: done +wave: 2 +depends_on: + - "01-glossary-and-converter" + - "02-register-locales-runtime" +plan: "plan.md" +spec: "../../specs/platform/traditional-chinese-locales.md" +--- + +# Task 04: Backend zh-tw and zh-hk message catalogs + +## Intent + +Provide Traditional Chinese for the small backend browser-facing catalog +(shell errors / shared-task artifacts), converted from `zh-cn.json` with the +same OpenCC + glossary pipeline. + +## Acceptance + +- `apps/backend/internal/i18n/locales/zh-tw.json` and `zh-hk.json` exist, key + sets match `zh-cn.json` / `en.json` shape. +- `T("zh-tw", …)` and `T("zh-hk", …)` return Traditional strings distinct from + `en` for a known key (e.g. `webapp.shellUnavailable`). +- Glossary overrides apply where those short strings contain product UI terms. + +## Verification + +```bash +cd apps/backend && go test ./internal/i18n/... -count=1 +# if converter writes backend files: +cd apps/web && node scripts/convert-zh-cn-to-zh-hant.mjs --locale all --backend --write +``` + +## Files likely touched + +- `apps/backend/internal/i18n/locales/zh-tw.json` +- `apps/backend/internal/i18n/locales/zh-hk.json` +- `apps/backend/internal/i18n/i18n_test.go` +- Converter script flags if backend output is added in task 01/03 + +## Dependencies + +- Task 01 for conversion path. +- Task 02 for `Supported` map (already done). + +## Parallelism + +`parallel-safe` with task 03 if the converter supports simultaneous writes to +disjoint trees; otherwise sequential after shared converter flags stabilize. + +## Inputs + +- `apps/backend/internal/i18n/locales/zh-cn.json` as source. +- Spec backend catalog requirement. + +## Output contract + +- Backend catalogs committed; Go tests green; status updated. + +## Results + +- Regenerated both 34-key backend catalogs through the same glossary and + override-aware converter; residual warning count is zero. +- `go test ./internal/i18n/... ./internal/webapp/ -count=1` passed. diff --git a/docs/plans/traditional-chinese-locales/task-05-high-traffic-review.md b/docs/plans/traditional-chinese-locales/task-05-high-traffic-review.md new file mode 100644 index 0000000000..4fff725db4 --- /dev/null +++ b/docs/plans/traditional-chinese-locales/task-05-high-traffic-review.md @@ -0,0 +1,82 @@ +--- +id: "05-high-traffic-review" +title: "Human review high-traffic Traditional namespaces" +status: done +wave: 3 +depends_on: + - "03-generate-web-catalogs" +plan: "plan.md" +spec: "../../specs/platform/traditional-chinese-locales.md" +--- + +# Task 05: Human review high-traffic Traditional namespaces + +## Intent + +Mechanical conversion will miss nuance. Review and hand-edit the highest-traffic +namespaces so Taiwan and Hong Kong product vocabulary matches the glossary and +reads naturally in chrome users see first. + +## Acceptance + +- Reviewed (and fixed where needed) at least: + `common`, `sidebar`, `settings`, `task`, `tasks`, `auth`, `github`, + `workspaces`, `system` for both `zh-tw` and `zh-hk`. +- Glossary divergences are correct in those files (soft/hard TW vs HK pairs + where the English concept appears). +- No type-to-confirm tokens or brands altered; interpolation/`Trans` indices + intact (`i18n:check` still passes). +- Brief review notes appended to this task's Results (what was fixed, residual + follow-ups). + +## Verification + +```bash +cd apps && pnpm install --frozen-lockfile +cd apps/web && pnpm run i18n:check +cd apps/web && pnpm run i18n:parity +# Manual: activate zh-tw / zh-hk in dev and scan Settings + task chrome +``` + +## Files likely touched + +- `apps/web/src/locales/zh-tw/{common,sidebar,settings,task,tasks,auth,github,workspaces,system}.json` +- `apps/web/src/locales/zh-hk/{common,sidebar,settings,task,tasks,auth,github,workspaces,system}.json` +- Possibly `docs/plans/traditional-chinese-locales/glossary.md` if new terms found + +## Dependencies + +- Task 03 generated catalogs. + +## Parallelism + +Sequential (shared catalog edits; review judgment). + +## Inputs + +- [glossary](glossary.md) +- Spec high-traffic review note in Out of scope / What + +## Output contract + +- Hand fixes committed; Results list residual risks; status updated. + +## Results + +- Reviewed both regions across `common`, `sidebar`, `settings`, `task`, + `tasks`, `auth`, `github`, `workspaces`, and `system` using targeted term + scans plus representative copy inspection. +- Fixed glossary expansion (`工作流程程`), mainland-oriented software terms, + and contextual OpenCC misses. Examples include `設定檔`, `新增`, `訊息`, + `佇列`, `控制項`, `執行`, `程式碼`, plus Taiwan-specific `清單`, `檢視`, + `螢幕`, and `意見回饋`. +- Added a reviewed per-key correction for the data-directory help text where a + global token rule would be unsafe. +- Critical malformed/mainland marker scan is empty. The nine reviewed + namespaces retain 891 TW/HK value differences. +- Residual risk: production E2E proves switching and persistence, but a final + native-speaker visual pass on dense layouts remains a release acceptance + step rather than an automated guarantee. +- Follow-up UI terminology review replaced opaque component calques such as + `手风琴树`, `持久树`, `菜单形态`, `面包屑`, and `状态抽屉` with labels that + describe their visible behavior. diff --git a/docs/plans/traditional-chinese-locales/task-06-docs-and-e2e.md b/docs/plans/traditional-chinese-locales/task-06-docs-and-e2e.md new file mode 100644 index 0000000000..3d95a5a115 --- /dev/null +++ b/docs/plans/traditional-chinese-locales/task-06-docs-and-e2e.md @@ -0,0 +1,75 @@ +--- +id: "06-docs-and-e2e" +title: "Docs update and locale switcher E2E" +status: done +wave: 3 +depends_on: + - "02-register-locales-runtime" + - "03-generate-web-catalogs" + - "04-backend-catalogs" + - "05-high-traffic-review" +plan: "plan.md" +spec: "../../specs/platform/traditional-chinese-locales.md" +--- + +# Task 06: Docs update and locale switcher E2E + +## Intent + +Document the new shipped locales and prove Settings language switching to +`zh-tw` / `zh-hk` works end-to-end (label, Traditional chrome, `lang`, cookie +reload). + +## Acceptance + +- `docs/i18n.md` and `docs/specs/platform/i18n.md` list `zh-tw` and `zh-hk` as + shipped human locales (and switcher endonyms). +- E2E covers selecting each Traditional locale, asserting + `document.documentElement.lang`, and at least one stable Traditional UI + string (not English fallback for a known complete key). +- Spec status for `traditional-chinese-locales.md` can move to `building` or + `shipped` when this task completes with the rest; `docs/specs/INDEX.md` + already lists the feature. + +## Verification + +```bash +cd apps && pnpm install --frozen-lockfile +cd apps/web && pnpm run i18n:check +cd apps/web && pnpm e2e:run tests/settings/locale-switcher-zh-hant.spec.ts +# adjust path if the suite extends an existing appearance/locale spec instead +``` + +## Files likely touched + +- `docs/i18n.md` +- `docs/specs/platform/i18n.md` +- `docs/specs/platform/traditional-chinese-locales.md` (status) +- `apps/web/e2e/tests/settings/*locale*` (new or extended) +- Possibly settings appearance component test if pure unit coverage is added + +## Dependencies + +- Runtime registration, catalogs, and high-traffic review so E2E does not + assert English fallbacks for chrome strings. + +## Parallelism + +Sequential (final gate). + +## Inputs + +- Spec scenarios for switcher + cookie. +- Existing e2e patterns under `apps/web/e2e/tests/settings/`. + +## Output contract + +- Docs aligned; E2E green; plan Verification Results filled; status updated. + +## Results + +- Glossary documentation now records the reviewed regional software terms and + the final override/validation contract. +- Managed host E2E rebuilt backend and Vite production assets, then passed all + 5 language-switch scenarios, including `zh-tw` and `zh-hk` reload + persistence. diff --git a/docs/specs/INDEX.md b/docs/specs/INDEX.md index 69a85c9dd2..354a85506e 100644 --- a/docs/specs/INDEX.md +++ b/docs/specs/INDEX.md @@ -43,6 +43,7 @@ Product-wide capabilities that are not tied to a single feature area. | [setup-launch-timeout](platform/setup-launch-timeout.md) | approved | | [task-sleep-inhibition](platform/task-sleep-inhibition.md) | building | | [i18n](platform/i18n.md) | building | +| [traditional-chinese-locales](platform/traditional-chinese-locales.md) | building | | [mid-turn-steering](platform/mid-turn-steering.md) | shipped | | [plugins](plugins/spec.md) | draft | | [plugins — authoring experience](plugins/authoring-experience.md) | draft | diff --git a/docs/specs/platform/i18n.md b/docs/specs/platform/i18n.md index f8b5b826b7..972cfb1ff6 100644 --- a/docs/specs/platform/i18n.md +++ b/docs/specs/platform/i18n.md @@ -27,11 +27,14 @@ language and the pseudo-locale as the migration QA oracle. locale through imperative and reactive scoped translation APIs, and remove their resources with the plugin lifecycle. Plugin catalogs SHALL NOT mutate built-in or sibling-plugin namespaces. - English SHALL remain the source locale. The shipped human locales SHALL be - `en`, `pt-pt`, and `zh-cn`; copy lives in per-namespace JSON catalogs keyed by - stable ids. The `pseudo` catalog is generated from `en`, never hand-edited. + `en`, `pt-pt`, `zh-cn`, `zh-tw`, and `zh-hk`; copy lives in per-namespace JSON + catalogs keyed by stable ids. The `pseudo` catalog is generated from `en`, + never hand-edited. Traditional Chinese details live in + [`traditional-chinese-locales.md`](traditional-chinese-locales.md). - The app SHALL expose a **language switcher** in Settings. It lists English, - European Portuguese, and Simplified Chinese by their fixed endonyms. Selecting - a locale re-renders the UI without a full reload and persists the choice across + European Portuguese, Simplified Chinese, Traditional Chinese (Taiwan), and + Traditional Chinese (Hong Kong) by their fixed endonyms. Selecting a locale + re-renders the UI without a full reload and persists the choice across restarts. Development and E2E builds additionally list the **pseudo-locale** (see below). - The app SHALL ship a **pseudo-locale** (`pseudo`) that transforms every @@ -103,17 +106,19 @@ i18n adds no server-side persistent entities. It introduces: - **Message catalogs** — checked-in JSON under `apps/web/src/locales//.json` for `en`, `pt-pt`, `zh-cn`, - and `pseudo`. `en` is hand-authored (keys are stable ids; the English copy - lives only here); `pt-pt` and `zh-cn` are human-maintained translations, - maintained out of band, whose namespace and key sets aim to mirror `en` but may - lag it — a gap warns rather than failing, and i18next falls back to `en` at - runtime; `pseudo` is generated from `en` by - `scripts/generate-pseudo-locale.mjs` and is never hand-edited. Catalogs load at - runtime via Vite glob import — no build plugin. Only `en` is bundled into the - initial download: it is the fallback locale, so it has to be in memory the - moment i18next initializes or every key paints as its own name. Every other - locale is one lazily-fetched chunk, and the boot awaits exactly the active - one — resolved by the Go shell into the boot payload — before React mounts. + `zh-tw`, `zh-hk`, and `pseudo`. `en` is hand-authored (keys are stable ids; the + English copy lives only here); `pt-pt` and `zh-cn` are human-maintained + translations; `zh-tw` / `zh-hk` are derived from `zh-cn` (OpenCC + product + glossary) and then human-reviewed for high-traffic namespaces. Real-locale + namespace and key sets aim to mirror `en` but may lag it — a gap warns rather + than failing, and i18next falls back to `en` at runtime; `pseudo` is generated + from `en` by `scripts/generate-pseudo-locale.mjs` and is never hand-edited. + Catalogs load at runtime via Vite glob import — no build plugin. Only `en` is + bundled into the initial download: it is the fallback locale, so it has to be + in memory the moment i18next initializes or every key paints as its own name. + Every other locale is one lazily-fetched chunk, and the boot awaits exactly the + active one — resolved by the Go shell into the boot payload — before React + mounts. - **Locale preference** — the user's chosen locale, one value from the supported set. A dedicated `kandev_locale` cookie is the authoritative persisted value read by the Go shell so the initial `` and first paint match the @@ -192,8 +197,8 @@ Frontend module contract (new): the locale changes, **THEN** each receives only its own message and reactive plugin surfaces rerender. **WHEN** one plugin is disabled, **THEN** only its catalog is removed. - **GIVEN** a production build, **WHEN** the language switcher renders, **THEN** - English, Português (Portugal), and 简体中文 are offered and the pseudo-locale - is not. + English, Português (Portugal), 简体中文, 繁體中文(台灣), and 繁體中文(香港) + are offered and the pseudo-locale is not. - **GIVEN** an English namespace or key changes, **WHEN** `i18n:check` runs, **THEN** every real locale missing or adding a namespace or key is reported as a warning naming the locale, namespace, and missing or extra entries, **AND** diff --git a/docs/specs/platform/traditional-chinese-locales.md b/docs/specs/platform/traditional-chinese-locales.md new file mode 100644 index 0000000000..e497490dc4 --- /dev/null +++ b/docs/specs/platform/traditional-chinese-locales.md @@ -0,0 +1,139 @@ +--- +status: building +created: 2026-08-12 +updated: 2026-08-12 +owner: chen +--- + +# Traditional Chinese locales (Taiwan and Hong Kong) + +## Why + +Kandev already ships Simplified Chinese (`zh-cn`) for Chinese-speaking users, +but Taiwan and Hong Kong users read Traditional characters and expect local +software vocabulary (for example 軟體 vs 軟件, 設定 vs 設置, 登入 vs 登录). +Without dedicated catalogs they either stay on Simplified Chinese or fall back +to English. Adding `zh-tw` and `zh-hk` makes the already-localized surface usable +for those regions while keeping English as the source locale and `zh-cn` as the +conversion base for Chinese copy. + +## What + +- The shipped human locales SHALL include `zh-tw` (Traditional Chinese, Taiwan) + and `zh-hk` (Traditional Chinese, Hong Kong), in addition to the existing + `en`, `pt-pt`, and `zh-cn`. Locale ids stay BCP-47-style lowercase tags + consistent with `zh-cn` / `pt-pt`. +- The Settings language switcher SHALL list both new locales by fixed endonyms: + - `zh-tw` → `繁體中文(台灣)` + - `zh-hk` → `繁體中文(香港)` + Selecting either re-renders the UI without a full reload, persists via the + existing `kandev_locale` cookie, and sets `` to the active tag. +- Frontend catalogs SHALL live at + `apps/web/src/locales/zh-tw/*.json` and + `apps/web/src/locales/zh-hk/*.json`, with the same namespaces and key set as + `en` (parity remains advisory for real locales, same as `zh-cn` / `pt-pt`). +- Backend browser-facing catalogs SHALL add + `apps/backend/internal/i18n/locales/zh-tw.json` and + `zh-hk.json`, and both tags SHALL be accepted by `Supported` / `Normalize` / + `FromRequest` (cookie and `Accept-Language`). +- Chinese Traditional catalogs SHALL be **derived from `zh-cn`**, not + re-translated from English. Pipeline: + 1. Character/phrase conversion (OpenCC-class `s2twp` for Taiwan, + `s2hk` for Hong Kong). + 2. Product glossary overrides for UI terms that conversion alone gets wrong + or that must differ between Taiwan and Hong Kong (see plan glossary). + 3. Human review for high-traffic namespaces before shipping. +- Region vocabulary SHALL differ where product terms diverge. At minimum the + glossary covers: software/network/data/file/folder/settings/default/login/ + save/search/load/session/repository/project/user/server/PR wording, and any + other pairs recorded in the plan glossary. Brand nouns (Kandev, GitHub, Jira, + …) stay untranslated. +- Date, time, relative-time, and number formatting SHALL use locale-aware + formatters with `zh-tw` → date-fns `zhTW` / Intl `zh-TW`, and `zh-hk` → + date-fns `zhHK` / Intl `zh-HK`. +- Missing keys in `zh-tw` / `zh-hk` SHALL fall back to English (`en`), not to + `zh-cn`. Showing Simplified fallback under a Traditional language label is + worse UX than English fallback (same contract as other real locales). +- Real-locale parity for the new catalogs SHALL remain **advisory** + (`i18n:check` / `i18n:parity` warn, do not fail). `en` ↔ `pseudo` stays the + hard gate. +- Docs that enumerate shipped locales (`docs/i18n.md`, + `docs/specs/platform/i18n.md`) SHALL be updated when the locales ship. + +## Data model + +No new persistent entities. Extends existing locale preference: + +| Field | Store | Values after this feature | +|---|---|---| +| `kandev_locale` cookie | browser cookie | `en` \| `pt-pt` \| `zh-cn` \| `zh-tw` \| `zh-hk` \| `pseudo` (dev/e2e only) | + +Catalogs remain checked-in JSON under the existing layout. + +## API surface + +No new HTTP/WS endpoints. Contract extensions: + +- Frontend: `SUPPORTED_LOCALES` and `LOCALE_LABELS` in + `apps/web/lib/i18n/index.ts` gain `zh-tw` and `zh-hk`. Lazy catalog loading + continues via the existing Vite glob over `src/locales/*/*.json`. +- Frontend date locale map in `apps/web/lib/i18n/date-locale.ts` gains loaders + for `zh-tw` and `zh-hk`. +- Backend: `supportedLocales` in `apps/backend/internal/i18n/i18n.go` gains both + tags; embedded `locales/zh-tw.json` and `locales/zh-hk.json` supply + server-rendered browser strings. + +## Scenarios + +- **GIVEN** Settings → language switcher in a production build, **WHEN** the + user opens the list, **THEN** it includes English, Português (Portugal), + 简体中文, 繁體中文(台灣), and 繁體中文(香港), and does not include Pseudo. +- **GIVEN** the user selects 繁體中文(台灣), **WHEN** the UI re-renders, + **THEN** messages present in `zh-tw` resolve from that catalog, missing keys + fall back to `en` (not `zh-cn`), `` is `zh-tw`, and + `kandev_locale=zh-tw` is written. +- **GIVEN** the user selects 繁體中文(香港), **WHEN** the UI re-renders, + **THEN** the same contract holds with `zh-hk` / `kandev_locale=zh-hk`. +- **GIVEN** no locale cookie and `Accept-Language: zh-TW` (or `zh-HK`), + **WHEN** the Go shell resolves locale, **THEN** it selects `zh-tw` (or + `zh-hk`), emits the matching ``, and uses that backend catalog for + shell error pages. +- **GIVEN** `zh-tw` is active, **WHEN** number/date helpers format a value, + **THEN** they use `zh-TW` Intl / date-fns `zhTW` data; **AND GIVEN** `zh-hk` + is active, **THEN** they use `zh-HK` / `zhHK`. +- **GIVEN** a product glossary entry that maps 简体「设置」→ 台灣「設定」and + 香港「設定」, **WHEN** catalogs are generated/reviewed, **THEN** both + Traditional catalogs use the region form rather than a bare character + conversion that leaves 設置 where the glossary requires 設定. +- **GIVEN** a Taiwan vs Hong Kong diverging term (for example 軟體 vs 軟件, + 網路 vs 網絡), **WHEN** the same English key is rendered under each locale, + **THEN** the visible strings differ according to the glossary. +- **GIVEN** brand nouns and type-to-confirm tokens, **WHEN** Traditional + catalogs are produced, **THEN** brands stay Latin and confirm tokens that are + compared with `===` remain untranslated English. +- **GIVEN** `i18n:check` after the locales land, **WHEN** `zh-tw` or `zh-hk` + lags `en` keys, **THEN** the command warns and still exits 0; **AND WHEN** + `pseudo` drifts from `en`, **THEN** it still fails. + +## Out of scope + +- Re-translating Chinese catalogs from English instead of converting from + `zh-cn`. +- Shipping other Chinese variants (`zh-mo`, `zh-sg`, generic `zh-hant` without + region). +- Forcing hard CI failure on real-locale parity for the new catalogs. +- Translating agent output, API diagnostic strings, task titles, diffs, or + other non-UI domain data. +- Changing the English source catalogs or the pseudo generation pipeline beyond + registering the new locales where discovery already covers them. +- Full professional L10n vendor review of every string in the first ship (first + ship is conversion + glossary + review of high-traffic namespaces; remaining + strings may be refined later). + +## Open questions + +- None material for planning. Defaults locked for implementation: + - Tags: `zh-tw`, `zh-hk`. + - Conversion base: `zh-cn`. + - Fallback: `en` only (not via `zh-cn`). + - Tooling: OpenCC-class conversion + checked-in product glossary overrides.