feat(i18n): add Japanese locale catalogs and negotiation (#3841)

Co-authored-by: Y.anbe <yoshitaka.anbe@aot.it.com>
Co-authored-by: Carlos Florencio <carlosmflorencio@gmail.com>
This commit is contained in:
Y.anbe
2026-09-22 07:18:37 +09:00
committed by GitHub
parent ecbe2c6b03
commit cd08c50ca6
63 changed files with 11978 additions and 88 deletions
+2 -2
View File
@@ -132,10 +132,10 @@ line-anchored and will not see one buried in a `/** */` block. The pseudo-locale
(Settings → General → Appearance, dev/e2e builds) is still the completeness check
for copy no literal scan can see.
**Translations gate the build.** `pt-pt`, `zh-cn`, `zh-hk` and `zh-tw` are
**Translations gate the build.** `pt-pt`, `zh-cn`, `zh-hk`, `zh-tw` and `ja` are
complete, and `check-i18n-keys.mjs` now fails on a missing key, an extra key, a
dropped placeholder, or a value left identical to English. Adding user-facing
copy means adding it in five languages; for the Traditional Chinese pair run
copy means adding it in six languages; for the Traditional Chinese pair run
`pnpm run i18n:zh-hant` rather than hand-translating. When the correct
translation genuinely IS the English word, declare it in
`src/locales/<locale>/_verbatim.json` with a reason — brand nouns, acronyms and
+39 -8
View File
@@ -50,6 +50,7 @@ var supportedLocales = map[string]bool{
"zh-cn": true,
"zh-tw": true,
"zh-hk": true,
"ja": true,
"pseudo": true,
}
@@ -82,23 +83,45 @@ func load() {
})
}
// Supported reports whether locale has a committed catalog.
func Supported(locale string) bool { return supportedLocales[canonicalLocale(locale)] }
// Normalize returns locale when it is supported, otherwise DefaultLocale. Used
// for both `<html lang>` and message lookup so they can never disagree.
func Normalize(locale string) string {
canonical := canonicalLocale(locale)
if supportedLocales[canonical] {
return canonical
if Supported(locale) {
return canonicalLocale(locale)
}
// A region-suffixed variant of a supported base collapses onto it when the
// base is unambiguous ("ja-JP" → "ja"). Multi-variant bases stay exact.
if collapsed := normalizeRegion(locale); supportedLocales[collapsed] {
return collapsed
}
return DefaultLocale
}
// Supported reports whether locale has a committed catalog.
func Supported(locale string) bool {
return supportedLocales[canonicalLocale(locale)]
}
func canonicalLocale(locale string) string {
return strings.ToLower(strings.TrimSpace(locale))
}
// normalizeRegion collapses a region-suffixed locale onto its base when the base
// is unambiguous: "ja-JP" → "ja", "pt-BR" → "pt" (unsupported here, falls
// through to en via Normalize). Multi-variant bases like "zh" stay exact —
// "zh-CN"/"zh-TW"/"zh-HK" must not collapse to a shared "zh".
func normalizeRegion(locale string) string {
canonical := canonicalLocale(locale)
base, _, hasRegion := strings.Cut(canonical, "-")
if !hasRegion {
return canonical
}
if supportedLocales[base] && base != "zh" && base != "pt" {
return base
}
return canonical
}
// FromRequest resolves the active locale: the kandev_locale cookie first (the
// SPA's explicit user choice), then the browser's Accept-Language, then the
// default. Unknown values coerce to DefaultLocale rather than erroring.
@@ -106,8 +129,16 @@ func FromRequest(r *http.Request) string {
if r == nil {
return DefaultLocale
}
if cookie, err := r.Cookie(LocaleCookie); err == nil && Supported(cookie.Value) {
return Normalize(cookie.Value)
if cookie, err := r.Cookie(LocaleCookie); err == nil {
if Supported(cookie.Value) {
return Normalize(cookie.Value)
}
// Unambiguous region suffixes such as ja-JP collapse onto a shipped
// base. Supported() is exact, so Normalize() is not used here: it
// would turn an unknown cookie into en and skip Accept-Language.
if collapsed := normalizeRegion(cookie.Value); supportedLocales[collapsed] {
return collapsed
}
}
for _, tag := range parseAcceptLanguage(r.Header.Get("Accept-Language")) {
if Supported(tag) {
+54 -1
View File
@@ -21,6 +21,8 @@ func TestNormalize(t *testing.T) {
{"zh-TW", "zh-tw"},
{"zh-hk", "zh-hk"},
{"zh-HK", "zh-hk"},
{"ja", "ja"},
{"ja-JP", "ja"},
{localePtPT, localePtPT},
{"pt-PT", localePtPT},
{"pseudo", "pseudo"},
@@ -54,6 +56,9 @@ func TestTranslatesAndFallsBack(t *testing.T) {
if hongKong := T("zh-hk", "webapp.shellUnavailable"); hongKong == en {
t.Fatalf("zh-hk message should differ from en, both %q", en)
}
if japanese := T("ja", "webapp.shellUnavailable"); japanese == en {
t.Fatalf("ja 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)
}
@@ -137,7 +142,7 @@ func TestCatalogsHaveMatchingKeys(t *testing.T) {
t.Parallel()
load()
source := catalogs[DefaultLocale]
for _, locale := range []string{"pseudo", "zh-cn", "zh-tw", "zh-hk", localePtPT} {
for _, locale := range []string{"pseudo", "zh-cn", "zh-tw", "zh-hk", "ja", localePtPT} {
translated := catalogs[locale]
if len(translated) != len(source) {
t.Fatalf("%s catalog has %d keys, want %d", locale, len(translated), len(source))
@@ -187,6 +192,16 @@ func TestFromRequest(t *testing.T) {
}
})
t.Run("invalid cookie does not skip accept-language", func(t *testing.T) {
t.Parallel()
r := httptest.NewRequest(http.MethodGet, "/", nil)
r.AddCookie(&http.Cookie{Name: LocaleCookie, Value: "klingon"})
r.Header.Set("Accept-Language", "ja;q=1.0, en;q=0.5")
if got := FromRequest(r); got != "ja" {
t.Fatalf("got %q, want ja", got)
}
})
t.Run("accept-language honored by q-value", func(t *testing.T) {
t.Parallel()
r := httptest.NewRequest(http.MethodGet, "/", nil)
@@ -223,6 +238,44 @@ func TestFromRequest(t *testing.T) {
}
})
t.Run("ja cookie wins over accept-language", func(t *testing.T) {
t.Parallel()
r := httptest.NewRequest(http.MethodGet, "/", nil)
r.AddCookie(&http.Cookie{Name: LocaleCookie, Value: "ja"})
r.Header.Set("Accept-Language", "en")
if got := FromRequest(r); got != "ja" {
t.Fatalf("got %q, want ja", got)
}
})
t.Run("ja-JP cookie collapses onto ja", func(t *testing.T) {
t.Parallel()
r := httptest.NewRequest(http.MethodGet, "/", nil)
r.AddCookie(&http.Cookie{Name: LocaleCookie, Value: "ja-JP"})
r.Header.Set("Accept-Language", "en")
if got := FromRequest(r); got != "ja" {
t.Fatalf("got %q, want ja", got)
}
})
t.Run("accept-language selects ja", func(t *testing.T) {
t.Parallel()
r := httptest.NewRequest(http.MethodGet, "/", nil)
r.Header.Set("Accept-Language", "ja;q=1.0, en;q=0.5")
if got := FromRequest(r); got != "ja" {
t.Fatalf("got %q, want ja", got)
}
})
t.Run("accept-language ja-JP collapses onto ja", func(t *testing.T) {
t.Parallel()
r := httptest.NewRequest(http.MethodGet, "/", nil)
r.Header.Set("Accept-Language", "ja-JP,en;q=0.8")
if got := FromRequest(r); got != "ja" {
t.Fatalf("got %q, want ja", got)
}
})
t.Run("zh-tw cookie wins over accept-language", func(t *testing.T) {
t.Parallel()
r := httptest.NewRequest(http.MethodGet, "/", nil)
@@ -0,0 +1,74 @@
{
"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": "無題のタスク",
"startup.duration.minutes_one": "{{count}} 分",
"startup.duration.minutes_other": "{{count}} 分",
"startup.duration.seconds_one": "{{count}} 秒",
"startup.duration.seconds_other": "{{count}} 秒",
"startup.page.countedProgress": "{{total}} 中 {{done}} {{unit}}",
"startup.page.countingProgress": "{{done}} {{unit}}",
"startup.page.elapsed": "経過時間 {{duration}}",
"startup.page.eta": "残り約 {{duration}}",
"startup.page.lastKnown": "最終確認",
"startup.page.progressUnavailable": "このステップの進捗は測定できません。",
"startup.page.stalled": "{{duration}} 停滞中",
"startup.page.title": "Kandev を起動しています",
"startup.page.waiting": "Kandev を起動中で、まだ到達できません。",
"startup.phase.applying_migrations": "マイグレーションを適用中",
"startup.phase.backing_up_database": "データベースをバックアップ中",
"startup.phase.initializing_services": "サービスを初期化中",
"startup.phase.opening_database": "データベースを開いています",
"startup.phase.ready": "準備完了",
"startup.phase.recovering_sessions": "セッションを復元中",
"startup.step.database_backup": "データベースのバックアップ",
"startup.step.message_timestamps": "メッセージのタイムスタンプ",
"startup.step.prompt_seq": "プロンプトのシーケンス番号",
"startup.step.session_recovery": "セッションの復元",
"startup.step.stores_repositories": "リポジトリストア",
"startup.step.stores_services": "サービスストア",
"startup.step.subagent_context": "サブエージェントのコンテキスト",
"startup.unit.bytes_one": "バイト",
"startup.unit.bytes_other": "バイト",
"startup.unit.messages_one": "件",
"startup.unit.messages_other": "件",
"startup.unit.rows_one": "行",
"startup.unit.rows_other": "行",
"startup.unit.sessions_one": "セッション",
"startup.unit.sessions_other": "セッション",
"startup.unit.stores_one": "ストア",
"startup.unit.stores_other": "ストア",
"startup.unit.turns_one": "ターン",
"startup.unit.turns_other": "ターン",
"webapp.assetReadFailed": "Web アセットを読み込めませんでした。",
"webapp.devServerUnavailable": "Vite 開発サーバーを利用できません。",
"webapp.shellUnavailable": "Kandev Web アプリを利用できません。"
}
@@ -113,6 +113,7 @@ func TestRenderShellSetsHTMLLangFromLocale(t *testing.T) {
{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 japanese", locale: "ja", wantLang: `lang="ja"`},
{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"`},
@@ -240,6 +241,8 @@ func TestNormalizeLocale(t *testing.T) {
{"zh-TW", "zh-tw"},
{"zh-hk", "zh-hk"},
{"zh-HK", "zh-hk"},
{"ja", "ja"},
{"ja-JP", "ja"},
{"pt-pt", "pt-pt"},
{"pt-PT", "pt-pt"},
{"pseudo", "pseudo"},
+1 -1
View File
@@ -234,7 +234,7 @@ Silence a legitimate one with `// i18n-exempt: <reason>` (required) as a `//`
LINE comment — the detector's pattern is line-anchored, so a marker inside a
`/** */` block is silently ignored.
**Real-locale catalogs gate.** `pt-pt`, `zh-cn`, `zh-hk`, `zh-tw` are complete;
**Real-locale catalogs gate.** `pt-pt`, `zh-cn`, `zh-hk`, `zh-tw`, `ja` are complete;
`check-i18n-keys.mjs` fails on a missing/extra key, a dropped `{{placeholder}}`
or `<n>` tag, an empty value, or a value identical to English. Untranslatable
values are handled in two tiers: those `looksLikeCopy` rejects as non-copy need
@@ -84,6 +84,13 @@ test.describe("i18n language switcher", () => {
screenshot: "traditional-chinese-hong-kong-locale-desktop",
caption: "Settings > General > Appearance with Traditional Chinese (Hong Kong) active",
},
{
id: "ja",
option: "日本語",
displayLanguage: "表示言語",
screenshot: "japanese-locale-desktop",
caption: "Settings > General > Appearance with Japanese active",
},
] as const) {
test(`switching to ${locale.option} persists through reload and can restore English`, async ({
testPage,
@@ -32,4 +32,34 @@ test.describe("mobile i18n language switcher", () => {
await expect(testPage.locator("html")).toHaveAttribute("lang", "en", { timeout: 10_000 });
await expect(testPage.getByLabel("Display language")).toBeVisible({ timeout: 10_000 });
});
test("switches to Japanese, persists through reload, and restores English", async ({
testPage,
}) => {
await testPage.goto(APPEARANCE_URL);
const select = testPage.getByLabel("Display language");
await expect(select).toBeVisible({ timeout: 10_000 });
await select.tap();
await testPage.getByRole("listbox").getByRole("option", { name: "日本語" }).tap();
await expect(testPage.locator("html")).toHaveAttribute("lang", "ja", { timeout: 10_000 });
await expect(testPage.getByLabel("表示言語")).toBeVisible({ timeout: 10_000 });
await expect
.poll(async () => {
const cookies = await testPage.context().cookies();
return cookies.find((cookie) => cookie.name === "kandev_locale")?.value;
})
.toBe("ja");
await testPage.reload();
await expect(testPage.locator("html")).toHaveAttribute("lang", "ja", { timeout: 10_000 });
await expect(testPage.getByLabel("表示言語")).toBeVisible({ timeout: 10_000 });
const selectAfter = testPage.getByLabel("表示言語");
await selectAfter.tap();
await testPage.getByRole("listbox").getByRole("option", { name: "English" }).tap();
await expect(testPage.locator("html")).toHaveAttribute("lang", "en", { timeout: 10_000 });
await expect(testPage.getByLabel("Display language")).toBeVisible({ timeout: 10_000 });
});
});
+5
View File
@@ -26,6 +26,11 @@ describe("resolveInitialLocale", () => {
expect(resolveInitialLocale(payloadWithLocale())).toBe("zh-cn");
});
it("restores ja from the locale cookie", () => {
document.cookie = `${LOCALE_COOKIE}=ja; path=/`;
expect(resolveInitialLocale(payloadWithLocale())).toBe("ja");
});
it("defaults to en when neither payload nor cookie is present", () => {
expect(resolveInitialLocale(undefined)).toBe("en");
});
+12
View File
@@ -72,6 +72,7 @@ describe("resolveDateLocale", () => {
["zh-cn", "zh-CN"],
["zh-tw", "zh-TW"],
["zh-hk", "zh-HK"],
["ja", "ja"],
])("maps %j to the %j date-fns locale", async (locale, code) => {
const resolved = await resolveDateLocale(locale as "en");
expect(resolved.code).toBe(code);
@@ -115,4 +116,15 @@ describe("dateLocale", () => {
expect(formatTimeDistance(ago(HOUR))).toBe("há aproximadamente 1 hora");
expect(formatTimeDistance(ago(3 * DAY))).toBe("há 3 dias");
});
it("renders Japanese distances once ja is active", async () => {
vi.useFakeTimers();
vi.setSystemTime(NOW);
await activateLocale("ja");
await primeDateLocale("ja");
expect(dateLocale().code).toBe("ja");
expect(formatTimeDistance(ago(HOUR))).toBe("約1時間前");
expect(formatTimeDistance(ago(3 * DAY))).toBe("3日前");
});
});
+1
View File
@@ -40,6 +40,7 @@ const LAZY_LOCALES: Partial<Record<SupportedLocale, () => Promise<Locale>>> = {
"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),
ja: () => import("date-fns/locale/ja").then((m) => m.ja),
};
const loaded = new Map<SupportedLocale, Locale>([
+49
View File
@@ -38,6 +38,23 @@ describe("formatRelative (en, timeAgo-compatible)", () => {
});
});
describe("formatRelative (ja)", () => {
const now = new Date(FORMAT_NOW).getTime();
const ago = (ms: number) => new Date(now - ms).toISOString();
afterAll(async () => {
await activateLocale("en");
});
it("uses Japanese catalog buckets", async () => {
await activateLocale("ja");
expect(formatRelative(ago(30_000), now)).toBe("たった今");
expect(formatRelative(ago(5 * 60_000), now)).toBe("5分前");
expect(formatRelative(ago(3 * 3_600_000), now)).toBe("3時間前");
expect(formatRelative(ago(2 * 86_400_000), now)).toBe("2日前");
});
});
describe("formatSidebarElapsedTime", () => {
const now = new Date(FORMAT_NOW).getTime();
const ago = (seconds: number) => new Date(now - seconds * 1000).toISOString();
@@ -75,6 +92,7 @@ describe("formatSidebarElapsedTime", () => {
["zh-cn", "3周"],
["zh-hk", "3週"],
["zh-tw", "3週"],
["ja", "3週間"],
["pseudo", "3ŵ"],
] as const)("uses the %s compact unit catalog", async (locale, expected) => {
await activateLocale(locale);
@@ -151,6 +169,30 @@ describe("locale-aware Intl wrappers", () => {
await activateLocale("en");
});
it("passes ja to number and date formatters", async () => {
await activateLocale("ja");
const numberOptions: Intl.NumberFormatOptions = {
style: "currency",
currency: "JPY",
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("ja", numberOptions).format(1234.5),
);
expect(formatDate(date, dateOptions)).toBe(
new Intl.DateTimeFormat("ja", 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 = {
@@ -286,4 +328,11 @@ describe("formatRelativeTime (locale awareness)", () => {
expect(portuguese).toContain("3");
expect(portuguese).toMatch(/horas/i);
});
it("renders Japanese relative time once ja is active", async () => {
await activateLocale("ja");
const japanese = formatRelativeTime(threeHoursAgo, now);
expect(japanese).toContain("3");
expect(japanese).toMatch(/時間/);
});
});
+36 -3
View File
@@ -16,6 +16,7 @@ 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 JA_LOCALE = "ja";
const DISPLAY_LANGUAGE_KEY = "settings:displayLanguage";
afterEach(async () => {
@@ -37,6 +38,9 @@ describe("locale predicates", () => {
expect(isSupportedLocale("zh-HK")).toBe(true);
expect(isSupportedLocale(PT_PT_LOCALE)).toBe(true);
expect(isSupportedLocale("pt-PT")).toBe(true);
expect(isSupportedLocale(JA_LOCALE)).toBe(true);
expect(isSupportedLocale("ja-JP")).toBe(true);
expect(isSupportedLocale(" JA ")).toBe(true);
expect(isSupportedLocale("pseudo")).toBe(true);
expect(isSupportedLocale("fr")).toBe(false);
expect(isSupportedLocale(42)).toBe(false);
@@ -49,6 +53,8 @@ describe("locale predicates", () => {
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("ja")).toBe(JA_LOCALE);
expect(normalizeLocale("ja-JP")).toBe(JA_LOCALE);
expect(normalizeLocale("pseudo")).toBe("pseudo");
expect(normalizeLocale("nope")).toBe(DEFAULT_LOCALE);
expect(normalizeLocale(undefined)).toBe(DEFAULT_LOCALE);
@@ -56,7 +62,15 @@ 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", "zh-tw", "zh-hk", "pseudo"]);
expect([...SUPPORTED_LOCALES]).toEqual([
"en",
"pt-pt",
"zh-cn",
"zh-tw",
"zh-hk",
"ja",
"pseudo",
]);
});
// Only the `isProd` half of the contract. `selectableLocales` also requires
@@ -64,8 +78,16 @@ 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", "zh-tw", "zh-hk", "pseudo"]);
expect(selectableLocales(true)).toEqual(["en", "pt-pt", "zh-cn", "zh-tw", "zh-hk"]);
expect(selectableLocales(false)).toEqual([
"en",
"pt-pt",
"zh-cn",
"zh-tw",
"zh-hk",
"ja",
"pseudo",
]);
expect(selectableLocales(true)).toEqual(["en", "pt-pt", "zh-cn", "zh-tw", "zh-hk", "ja"]);
});
/**
@@ -179,6 +201,17 @@ describe("activateLocale", () => {
expect(i18n.t(DISPLAY_LANGUAGE_KEY)).toBe("顯示語言");
});
it("activates Japanese and resolves its real catalog", async () => {
const result = await activateLocale("ja");
expect(result).toBe(JA_LOCALE);
expect(i18n.language).toBe(JA_LOCALE);
expect(document.documentElement.lang).toBe(JA_LOCALE);
expect(readLocaleCookie()).toBe(JA_LOCALE);
expect(i18n.hasResourceBundle(JA_LOCALE, "settings")).toBe(true);
expect(i18n.getResource(JA_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("新增編輯器");
+41 -8
View File
@@ -18,7 +18,15 @@ import { writeLocaleCookie } from "./cookie";
*/
export const DEFAULT_LOCALE = "en";
export const DEFAULT_NAMESPACE = "common";
export const SUPPORTED_LOCALES = ["en", "pt-pt", "zh-cn", "zh-tw", "zh-hk", "pseudo"] as const;
export const SUPPORTED_LOCALES = [
"en",
"pt-pt",
"zh-cn",
"zh-tw",
"zh-hk",
"ja",
"pseudo",
] as const;
export type SupportedLocale = (typeof SUPPORTED_LOCALES)[number];
/** Human-readable labels for the language switcher. */
@@ -29,6 +37,7 @@ export const LOCALE_LABELS: Record<SupportedLocale, string> = {
"zh-cn": "简体中文",
"zh-tw": "繁體中文(台灣)",
"zh-hk": "繁體中文(香港)",
ja: "日本語",
pseudo: "Pseudo (QA)",
};
@@ -37,25 +46,49 @@ function canonicalLocale(value: string): string {
return value.trim().toLowerCase();
}
/**
* Collapse a region-suffixed locale onto its base when the base is unambiguous
* (`ja-JP` → `ja`). `zh` and `pt` stay exact: those bases have multiple
* shipped variants and must not share a catalog.
*/
function collapseRegion(canonical: string): string {
const dash = canonical.indexOf("-");
if (dash < 0) return canonical;
const base = canonical.slice(0, dash);
if ((SUPPORTED_LOCALES as readonly string[]).includes(base) && base !== "zh" && base !== "pt") {
return base;
}
return canonical;
}
function resolveSupportedLocale(canonical: string): SupportedLocale | null {
if ((SUPPORTED_LOCALES as readonly string[]).includes(canonical)) {
return canonical as SupportedLocale;
}
const collapsed = collapseRegion(canonical);
return (SUPPORTED_LOCALES as readonly string[]).includes(collapsed)
? (collapsed as SupportedLocale)
: null;
}
/**
* Whether `value` names a shipped locale. Accepts case variants such as
* `zh-CN`; prefer `normalizeLocale` when you need the canonical id to pass on.
* `zh-CN` and unambiguous region suffixes such as `ja-JP`; prefer
* `normalizeLocale` when you need the canonical id to pass on.
*/
export function isSupportedLocale(value: unknown): boolean {
if (typeof value !== "string") return false;
return (SUPPORTED_LOCALES as readonly string[]).includes(canonicalLocale(value));
return resolveSupportedLocale(canonicalLocale(value)) !== null;
}
/**
* Coerce any value to a supported canonical locale, defaulting to `en`.
* Case-insensitive so a hand-edited `zh-CN` cookie matches the backend.
* Case-insensitive so a hand-edited `zh-CN` cookie matches the backend;
* `ja-JP` collapses onto `ja` the same way Go does.
*/
export function normalizeLocale(value: unknown): SupportedLocale {
if (typeof value !== "string") return DEFAULT_LOCALE;
const canonical = canonicalLocale(value);
return (SUPPORTED_LOCALES as readonly string[]).includes(canonical)
? (canonical as SupportedLocale)
: DEFAULT_LOCALE;
return resolveSupportedLocale(canonicalLocale(value)) ?? DEFAULT_LOCALE;
}
/**
+5 -4
View File
@@ -22,10 +22,11 @@
* expect: pt-pt was 312 keys short and zh-hk/zh-tw 415, none of it visible in a
* green build.
*
* The four catalogs are now complete, so the failure mode is the other one: a
* PR that adds an `en` key and no translation silently re-opens the gap. This
* gates, and the cost is that adding user-facing copy means adding it in five
* languages. That is the actual cost of shipping five languages.
* The real-locale catalogs are now complete (`pt-pt`, `zh-cn`, `zh-hk`,
* `zh-tw`, `ja`), so the failure mode is the other one: a PR that adds an
* `en` key and no translation silently re-opens the gap. This gates, and the
* cost is that adding user-facing copy means adding it in six languages. That
* is the actual cost of shipping those languages.
*
* ## The identical-to-English check
*
+53
View File
@@ -0,0 +1,53 @@
{
"actions": "操作",
"activeSessions": "アクティブなセッション",
"absoluteTime": "絶対時間",
"apiTokens": "APIトークン",
"apiTokensBlurb": "個人アクセストークンで、スクリプトやCLIをあなたとして認証。漏れた可能性あるなら、すぐトークン失効。",
"cancel": "キャンセル",
"changePassword": "パスワード変更",
"couldNotChangePassword": "パスワード変更できませんでした。",
"couldNotUpdateHostnameResolution": "ホスト名解決を更新できませんでした。",
"couldNotCreateToken": "トークン作成できませんでした。",
"createApiToken": "APIトークン作成",
"createApiTokenDescription": "使うスクリプトやCLIに、アカウントと同じアクセス権を付与。あとで見分けやすいよう、名前を付けてください。",
"createToken": "トークン作成",
"created": "作成済み",
"creating": "作成中...",
"currentPassword": "現在のパスワード",
"device": "デバイス",
"done": "完了",
"failedToLoadSessions": "セッションの読み込みに失敗。",
"failedToLoadTokens": "トークンの読み込みに失敗。",
"failedToSaveLastSeenDisplay": "最終表示の保存に失敗。",
"failedToRevokeSession": "セッションの失効に失敗。",
"ipAddress": "IP",
"hostname": "ホスト名",
"hostnameNotAvailable": "N/A",
"lastSeen": "最終確認",
"lastSeenDisplay": "最終確認表示",
"lastSeenDisplayDescription": "セッションのアクティビティ時刻の表示方法を選択。",
"lastUsed": "最終使用",
"loadingSessions": "セッション読み込み中...",
"loadingTokens": "トークン読み込み中...",
"name": "名前",
"never": "なし",
"newPassword": "新しいパスワード",
"newToken": "新しいトークン",
"noTokensYet": "まだトークンなし。",
"password": "パスワード",
"passwordUpdated": "パスワード更新済み。",
"relativeTime": "相対時間",
"revoke": "失効",
"saving": "保存しています...",
"securityPageDescription": "パスワードを変更し、アカウントにサインインしているデバイスを確認します。",
"securityPageTitle": "プロフィールとパスワード",
"resolveDeviceHostnames": "デバイスのホスト名を解決",
"resolveDeviceHostnamesDescription": "サインインしているデバイスの IP アドレスに対して、システムの DNS リゾルバーを使用します。",
"signOut": "サインアウト",
"thisDevice": "このデバイス",
"tokenCreated": "トークンが作成されました",
"tokenShownOnlyOnce": "これは一度だけ表示されます。今すぐコピーして、安全な場所に保管してください。",
"tokensPageDescription": "スクリプトや CLI があなたとして動作するための個人用アクセストークンです。",
"tokensPageTitle": "API トークン"
}
+321
View File
@@ -0,0 +1,321 @@
{
"actionCannotBeUndone": "この操作は元に戻せません。",
"add": "追加",
"addProfile": "プロファイルを追加",
"addTuiAgent": "TUI エージェントを追加",
"addTuiAgentDescription": "CLI ツールを TUI エージェントとして登録します。エージェント一覧に、デフォルトのパススループロファイル付きで表示されます。",
"agentCliFlags": "エージェントの CLI フラグ",
"agentCliFlagsDescription": "起動時にエージェントの CLI に渡すフラグです。有効になっている項目のみが適用されます。",
"agentInstallAlreadyInProgress": "エージェントのインストールはすでに進行中です。",
"agentInstallationInProgress": "エージェントのインストールを進行中です",
"agentNotFound": "エージェントが見つかりません。",
"agentProfileSettings": "{{name}} のプロファイル設定",
"agentProfilesTitle": "{{name}} のプロファイル",
"authRequiredOpenLoginTerminal": "認証が必要です。クリックしてログイン用ターミナルを開く",
"authRequiredOpenShell": "認証が必要です。クリックしてシェルを開き、サインインしてください",
"authenticationRequired": "認証が必要です",
"automaticallyAvailable": "自動的に利用可能",
"availableCommandsCount_one": "利用可能なコマンド({{count}})",
"availableCommandsCount_other": "利用可能なコマンド({{count}})",
"availableSlashCommands": "利用可能なスラッシュコマンド",
"availableSlashCommandsHelp": "セッションチャット中にこれらを入力して実行します。例: <0>{{example}}</0>。",
"availableToInstallDescription": "インストールをクリックすると、kandev ホスト上でエージェントのインストールスクリプトを実行します。進行状況はリアルタイムで流れます。複数のインストールを同時に開始できます。",
"backToAgents": "エージェントに戻る",
"backToModelSettings": "{{name}} のモデル設定に戻る",
"browseAvailableAgents": "利用可能なエージェントを表示",
"builtIn": "組み込み",
"cannotDeleteAgentProfile": "エージェントのプロファイルを削除できません",
"capabilityAuthRequired": "認証が必要です。端末でエージェントの CLI を実行して認証し、その後更新してください。",
"capabilityNotInstalled": "エージェントの CLI がインストールされていません。",
"capabilityProbeFailed": "確認に失敗しました。詳細はエージェントのログを確認してください。",
"capabilityProbing": "エージェント機能を確認中…",
"changeTierMappingsFirst": "このプロファイルを削除する前に、このワークスペースのティアマッピングを変更してください。",
"everythingInstalled": "利用可能なエージェントとツールはすべてインストール済みです。",
"expandAgentProfiles": "{{name}} のプロファイルを展開",
"checkingAuthentication": "認証を確認中",
"checkingCapabilitiesAndAuth": "エージェント機能と認証を確認中...",
"checkingLatestRuntimeVersion": "最新ランタイム版を確認中…",
"cliFlagsEnabledCount_one": "有効 {{enabled}} / {{count}}",
"cliFlagsEnabledCount_other": "有効 {{enabled}} / {{count}}",
"collapseAgentProfiles": "{{name}} のプロファイルを折りたたむ",
"command": "コマンド",
"commandPrefix": "コマンド接頭辞",
"commandPrefixHelp": "エージェント起動コマンドの前に付くトークン。サンドボックス起動ツール下で実行されるようになる (例: <0>{{example}}</0>)。値はシェルトークンとして分割される。空ならエージェントを直接実行。ACP セッションのみ適用。プロファイルが TUI パススルーを使う場合は無効。",
"commandPreview": "コマンドプレビュー",
"commandPreviewHelp": "現在の設定に基づいて実行される CLI コマンド。",
"commandRequired": "コマンド必須",
"commandThatWillRun": "実行されるコマンド",
"configureProfilesIntro": "このエージェントのプロファイルとデフォルトを設定。",
"configured": "設定済み",
"conflictAutomationRow": "<0>{{name}}</0> が {{workspace}} 内",
"conflictAutomationsTitle": "自動化:",
"conflictQuickChatsTitle": "クイックチャット:",
"conflictTasksTitle": "タスク:",
"conflictTierMappingRow": "{{provider}} の {{workspace}} にある <0>{{tier}}</0> ティア",
"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 ホスト上でシェルを実行。エージェントの手動インストールや設定に使う。",
"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 定義は DB に保存され、実行時に executor ごとに解決される。ローカルのエージェント設定は上書きしない。",
"mcpServersJson": "MCP サーバー (JSON)",
"mcpStrategy": "Kandev MCP ツール",
"mcpStrategyHelp": "Kandev はこのエージェントに自分のツールを渡せる (タスクタイトル設定、ユーザーへの質問、プラン更新、ステップ完了)。そのため CLI が読む形式で MCP 設定を書く必要あり。合う方を選ぶ。違う形式を選ぶと静かに失敗する。設定は書かれるが、CLI は無視し、エラーも出ない。コマンドが MCP 対応コーディングエージェントでないなら、これをオフに。",
"mcpStrategyNone": "オフ: Kandev ツールなし",
"mcpStrategyOption": "{{name}}: {{mechanism}}",
"model": "モデル",
"modelHeading": "モデル",
"fallbackNone": "フォールバック: なし",
"fallbackExact": "フォールバック: exact",
"fallbackNext": "フォールバック: next",
"fallbackModel": "フォールバック: {{model}}",
"modelRequiredForAllProfiles": "すべてのプロフィールにモデル必須。",
"noAuthHintLogin": "サインインするには Open terminal をクリック、その後更新。",
"noAuthHintNotInstalled": "エージェント CLI をインストールし、その後 Refresh をクリック。",
"noAuthHintShell": "シェル起動するには Open terminal をクリック、エージェントのサインインコマンドを実行し、その後更新。",
"noAuthLoginRequired": "認証なし, ログイン必要",
"newProfile": "新しいプロファイル",
"noCliFlagsConfigured": "CLI フラグ未設定。下に1つ追加。",
"noCommandPreview": "コマンドプレビューなし。",
"noInstalledAgentsDetected": "インストール済みエージェント見つからない。下に1つインストールしてから、再スキャンをクリック。",
"noModeFound": "モード見つからない。",
"noModelFound": "モデル見つからない。",
"noModelsFound": "モデル見つからない。",
"noProfilesYetShort": "まだプロファイルなし",
"notInstalled": "未インストール",
"openTerminal": "ターミナルを開く",
"pageDescription": "インストール済みエージェントを見つけ、新規インストールし、プロファイルを管理。",
"popularServers": "人気サーバー",
"probingCapabilities": "エージェント機能を確認中… たいてい数秒かかる。",
"profileActions": "プロファイル操作",
"profileInUseIntro": "このプロファイルは現在使用中。削除すると次に影響:",
"profileName": "プロファイル名",
"profileNameRequired": "プロファイル名必須。",
"profileNameRequiredDescription": "保存前にプロファイル名を入力。",
"profileNameRequiredTitle": "プロファイル名必須",
"profileNotFound": "プロファイル見つからない。",
"profileExternalChangeTitle": "別場所でプロファイル変更",
"profileExternalChangeDescription": "編集中にこのプロファイルが変更された。下書きは保持済み。再保存前に破棄して最新保存値を読み込み。",
"profileExternalChangeDiscard": "最新プロファイルを読み込む",
"profileExternalChangeInvalidReason": "保存前に最新プロファイルを読み込む。",
"profileSettings": "プロファイル設定",
"promptTokenHint": "<0>{{token}}</0> はタスク説明かフォローアップメッセージに置き換わる。",
"ptyConnectionError": "接続エラー",
"refresh": "更新",
"refreshCapabilitiesTooltip": "エージェント機能を更新 (models + modes)",
"remove": "削除",
"removeCliFlag": "{{name}} を削除",
"removeThisProfile": "このプロファイルを削除",
"requestFailed": "リクエスト失敗",
"rescan": "再スキャン",
"retry": "再試行",
"retryUpdate": "更新を再試行",
"retryVersionCheck": "バージョン確認を再試行",
"reviewUpdateBeforeApplying": "Kandev がこのホスト runtime を変更する前に更新を確認。",
"runtimeAlreadyUpToDate": "runtime はすでに最新。",
"runtimeUpdateExplainer": "このKandevホストの管理対象ランタイムを更新し、モデルと機能を再読み込みする。",
"runtimeUpdateFailed": "ランタイム更新に失敗した。",
"runtimeUpdateSessionsNote": "アクティブなセッションはそのまま動く。あとで行うプローブと起動だけ、新しいランタイムを使う。",
"runtimeUpdatedRefreshFailed": "ランタイム更新したが、機能を再読み込みできなかった: {{error}}",
"runtimeUpdatedSuccess": "ランタイム更新成功。",
"runtimeVersionQuickChoices": "クイック選択",
"browseRuntimeVersions": "すべてのバージョンを表示",
"searchRuntimeVersions": "バージョンを検索",
"noMatchingRuntimeVersions": "検索に一致するバージョンなし。",
"activeRuntimeVersion": "アクティブ版: {{version}}",
"activeRuntimeVersionMarker": "アクティブ",
"effectiveRuntimeVersion": "有効版: {{version}}",
"kandevDefaultVersion": "Kandevデフォルト: {{version}}",
"kandevDefaultRuntimeVersionMarker": "Kandevデフォルト",
"latestRuntimeVersion": "最新",
"runtimeUpdateStatusUnknown": "{{name}} の最新バージョンは不明。更新操作は引き続き使える。",
"runtimeVersionMarkerGroup": "({{markers}})",
"runtimeVersionOption": "{{version}} {{markers}}",
"selectRuntimeVersion": "有効にするバージョン",
"updateAvailableWithVersions": "{{name}} を {{current}} から {{latest}} に更新",
"updateRuntime": "ランタイムを更新",
"rollBackRuntime": "ランタイムをロールバック",
"repairRuntime": "ランタイムを修復",
"upToDateRuntime": "最新",
"useKandevDefault": "Kandevデフォルトを使う",
"useKandevDefaultVersion": "Kandevデフォルトを使う ({{version}})",
"scanningForInstalledAgents": "インストール済みエージェントをスキャン中...",
"searchModels": "モデルを検索...",
"searchModes": "モードを検索...",
"selectAModelShort": "モデルを選択",
"selectModel": "モデルを選択...",
"sessionEnded": "セッション終了。",
"sessionEndedWithCode": "セッション終了 (exit {{code}})。",
"sessionUnavailable": "セッションはもう使えない。",
"setupProfile": "プロファイルを設定",
"signInToAgent": "サインイン: {{name}}",
"startMode": "開始モード",
"startModel": "開始モデル",
"startingSession": "セッション開始中…",
"terminal": "ターミナル",
"tuiCommandHelp": "バイナリ名は PATH で検索。モデル値入れるには <0>{{token}}</0> 使う。",
"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": "プロファイル複製失敗",
"dynamicAgents": "動的エージェント",
"dynamicAgentsDescription": "1 つの論理プロファイルを、順番つきの具体的なエージェントプロファイル一覧へルーティング。",
"dynamicProfileDisabled": "動的エージェントルーティング無効。",
"dynamicProfileDescription": "フォールバック実行用に、順番つき具体的プロファイル一覧を選択。",
"dynamicProfileSettings": "動的プロファイル設定",
"dynamicCandidates": "候補",
"dynamicCandidatesDescription": "候補は順番に実行。次の候補は、設定済みエラー動作が許可した場合のみ使う。",
"dynamicRoutingPolicyTitle": "Kandev が候補切り替える時",
"dynamicRoutingPolicySwitchable": "切り替え対象は、認証またはサブスクリプション問題、認証情報または設定不足、クォータまたはレート制限、モデル利用不可、容量、ネットワーク、プロバイダー可用性または過負荷など、分類済みプロバイダー障害。",
"dynamicRoutingPolicyExcluded": "Kandev は、タスク、リポジトリ、権限、ツールまたはランタイムエラー、転送損失、あいまいなターン途中結果では切り替えない。そこは手動復旧で止める。作業繰り返し防ぐため。",
"dynamicRoutingPolicyRecovery": "切り替え後、失敗したプロバイダーは 1 分停止、または提供されていればリセット時刻まで停止。Kandev は再利用前に専用ヘルスプローブ実行。",
"dynamicPolicyWaitExplanation": "リセット待機は、各候補とエラー種別ごとに 1 回だけ、最大待機内なら信頼できる将来リセット時刻を使う。その待機後、Kandev は retry policy 適用前に 1 回だけ新規試行する。",
"dynamicTransientErrors": "一時エラー",
"dynamicTransientErrorsDescription": "容量不足、レート制限、ネットワーク障害、タイムアウト、プロバイダー停止、転送中断などの一時条件。",
"dynamicHardErrors": "重大エラー",
"dynamicHardErrorsDescription": "サブスクリプション制限、クレジット枯渇、認証、認証情報不足、利用不可モデル、プロバイダー設定などのアカウントまたは設定条件。",
"dynamicPolicyRetry": "この候補を再試行",
"dynamicPolicyWaitForReset": "プロバイダーのリセットまで待機",
"dynamicPolicyAfterExhausted": "リカバリ消費後",
"dynamicPolicyMaxRetries": "最大再試行回数",
"dynamicPolicyInitialInterval": "初回間隔(秒)",
"dynamicPolicyMaxWait": "最大リセット待機(秒)",
"dynamicPolicyValidation": "保存前にハイライトしたポリシー値を修正してください。",
"dynamicPolicyMaxRetriesValidation": "再試行回数を 1 から 10 の間で入力してください。",
"dynamicPolicyInitialIntervalValidation": "初回間隔を 1 秒から 1 時間の間で入力してください。",
"dynamicPolicyMaxWaitValidation": "リセット待機を 1 秒から 7 日の間で入力してください。",
"dynamicPolicySchedule": "{{retries}} 回まで再試行。最初の再試行は {{first}} 秒待機し、その後は間隔が倍増します。",
"dynamicPolicyNoRetry": "同一候補の再試行なし。Kandev は選択結果を即時適用します。",
"dynamicPolicyWaitDescription": "最大待機内なら、信頼できる将来のリセット日または再試行日を使います。",
"dynamicPolicySkip": "候補をスキップ",
"dynamicPolicyStop": "手動リカバリで停止",
"dynamicPolicyRetryHelp": "選択結果の前に、指数バックオフで同一候補を再試行します。",
"dynamicPolicyWaitHelp": "信頼できる将来のプロバイダーリセット日または再試行日を待ちます。待機は上限あり。候補とクラスごとに 1 回使います。",
"dynamicPolicyOutcomeHelp": "リセット待機と同一候補の再試行をすべて使い切った後に Kandev が行う動作を制御します。",
"dynamicPolicyOptionInfo": "{{option}} ポリシーを説明",
"addDynamicCandidate": "候補を追加",
"noDynamicCandidates": "少なくとも 1 つ具体プロファイルを追加してください。",
"moveDynamicCandidateUp": "候補を上へ移動",
"moveDynamicCandidateDown": "候補を下へ移動",
"removeDynamicCandidate": "候補を削除",
"dynamicCandidatePickerDescription": "動的ルーティング対象の具体プロファイルを選択してください。",
"searchDynamicCandidates": "エージェントプロファイルを検索...",
"noDynamicCandidatesFound": "対象エージェントプロファイルなし。",
"dynamicRouteAction": "プロバイダーエラー時",
"dynamicRouteActionInfo": "{{action}} ルーティング動作を説明",
"dynamicRouteRetryDescription": "プロバイダーエラー後に同一候補を再試行。一時的失敗ならこれを使う。",
"dynamicRouteTryNextDescription": "この候補を現在のターンでスキップし、次の対象プロファイルへ進む。",
"dynamicRouteStopDescription": "この候補が失敗したらルーティング停止。タスクは手動リカバリ操作待ち。",
"dynamicProfileSaved": "動的プロファイルを保存しました。",
"savingProfile": "保存中...",
"saveProfile": "プロファイルを保存",
"createProfile": "プロファイルを作成",
"creatingProfile": "作成中...",
"adminOnly": "管理者のみ agents と agent profiles を変更できます。",
"providerSectionTitle": "AI プロバイダー",
"providerSectionDescription": "このプロファイルのモデル呼び出しを、エージェント内蔵プロバイダーではなく、セルフホストの OpenAI-compatible router 経由でルーティングします。",
"providerKindLabel": "プロバイダー",
"providerKindNative": "ネイティブ (エージェントのデフォルト)",
"providerKindOpenAICompatible": "OpenAI互換プロバイダ",
"providerKindHelp": "ネイティブは agent CLI 自身のプロバイダ設定を使う。OpenAI互換は、選んだキーで下の base URL にリクエスト送る。9router, LiteLLM, vLLM, self-hosted OpenRouter で動く。",
"providerBaseUrlLabel": "ベースURL",
"providerBaseUrlHelp": "router の絶対 http または https ルート。agent は /chat/completions など OpenAI互換 route path を追加する。",
"providerBaseUrlInvalid": "絶対 http または https URL を入れる。",
"providerApiKeyLabel": "APIキー",
"providerApiKeyHelp": "Kandev secret。provider に送る bearer token を持つ。認証不要 router なら未設定のまま。",
"providerModelSlash": "model 名のスラッシュを外す。OpenAI互換 provider は bare な model id を期待する。",
"providerPassthroughUnsupported": "OpenAI互換 provider を使うには CLI passthrough を無効にする。"
}
+30
View File
@@ -0,0 +1,30 @@
{
"acceptInvite": "招待を承諾",
"atLeast8Characters": "8文字以上。",
"authenticationIsEnabledForThisDeployment": "この deployment では認証が有効。下で最初の account を作成する。admin になり、追加 user を招待できる。",
"checkingInvite": "招待を確認中...",
"continueWithProvider": "{{provider}}で続行",
"couldNotAcceptInvite": "この招待を承諾できなかった。",
"couldNotLoadInvite": "この招待を読み込めなかった。もう一度試す。",
"createAdminAccount": "admin account を作成",
"creatingAdminAccount": "admin account を作成中...",
"displayName": "表示名",
"email": "メール",
"invalidEmailOrPassword": "無効な email または password。",
"inviteLinkInvalidOrExpired": "この invite link は無効か期限切れ。admin に新しい link を頼む。",
"inviteLinkMissingToken": "この invite link には token がない。",
"joinThisKandevDeployment": "この Kandev deployment に参加",
"joining": "参加中...",
"orContinueWith": "または続行:",
"organizationUnavailable": "organization が現在使えない。Kandev administrator に連絡。",
"password": "パスワード",
"setUpKandev": "Kandev をセットアップ",
"setupFailed": "セットアップ失敗。もう一度試す。",
"setupNoLongerAvailable": "セットアップはもう使えない。すでに account がある。",
"signIn": "サインイン",
"signInToYourKandevAccount": "続行するには Kandev account にサインイン。",
"signingIn": "サインイン中...",
"somethingWentWrong": "問題発生。もう一度試す。",
"tooManyAttempts": "試行回数が多すぎる。少し待ってからもう一度。",
"youVeBeenInvitedAs": "{{role}}として招待された。"
}
+301
View File
@@ -0,0 +1,301 @@
{
"aboutSchedulePolling": "スケジュール polling について",
"addCondition": "条件を追加",
"addFilter": "フィルターを追加",
"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": "完了",
"contextBetweenRunsConcurrencyLock": "このオプションは同時に1件のアクティブ実行のみ対応。",
"contextBetweenRunsDescription": "各実行を新規開始するか、同じ会話とファイルを続けるか選んで。",
"contextBetweenRunsNewTask": "各実行ごとに新しいタスクを開始",
"contextBetweenRunsNewTaskDescription": "各実行は別の会話とファイルで始まる。このタスクはカンバンやサイドバーに表示されない。独立ジョブと並列実行に使う。",
"contextBetweenRunsNewTaskNormalDescription": "各実行は別の会話とファイルで始まる。このタスクはカンバンとサイドバーに表示される。独立ジョブと並列実行に使う。",
"contextBetweenRunsReuseThread": "前のセッションを続ける",
"contextBetweenRunsReuseThreadDescription": "実行は同じ会話とファイルを続ける。なのでエージェントは前のコンテキストと変更を保持する。実行は1件ずつ動く。",
"contextBetweenRunsTitle": "実行間のコンテキスト",
"configurationLabel": "設定",
"couldNotLoadWorkflows": "ワークフローを読み込めませんでした",
"couldNotRefreshRuns": "実行履歴を更新できませんでした。ローカルキャッシュから復元しました",
"couldNotTrigger": "自動化を起動できませんでした",
"createAnAutomation": "自動化を作成",
"cronEveryDay": "毎日",
"cronEveryHour": "毎時",
"cronEveryWeek": "毎週",
"cronExpressionLabel": "Cron式",
"cronHelp": "標準の5フィールドcron、またはショートカット ({{shortcuts}})",
"delete": "削除",
"deleteAutomationTitle": "自動化を削除しますか?",
"deleteAutomationDescription": "{{name}} を完全に削除します。この操作は元に戻せません。",
"deleteAll": "すべて削除",
"deleteAllRuns": "すべての実行を削除",
"deleteAllRunsDescription": "この自動化のすべての実行レコード, まだ読み込まれていないものも含めて, および関連するタスクを完全に削除します。元に戻せません。",
"deleteAllRunsScoped": "{{status}} の実行をすべて削除",
"deleteAllRunsScopedDescription": "このビューに表示されている {{status}} の実行と関連するタスクを完全に削除します。元に戻せません。",
"deleteAllRunsScopedTitle": "{{status}} の実行をすべて削除しますか?",
"deleteAllRunsTitle": "すべての実行を削除しますか?",
"deleteRun": "実行を削除",
"details": "詳細",
"done": "完了",
"emptyListBody": "自動化はスケジュールまたはWebhookで実行され、見つけた内容を書き戻します。作成すると、レポートはここに表示されます。",
"emptyListTitle": "このワークスペースにはまだ自動化がありません",
"emptyRunsTitle": "まだどの自動化からも報告がありません",
"enabledLabel": "有効",
"eventsLabel": "イベント",
"excludeDraftPrs": "下書きPRを除外",
"executorProfileLabel": "実行プロファイル",
"executorProfilePlaceholder": "実行者を選択",
"exportFailed": "自動化をエクスポートできませんでした",
"exportZip": "エクスポート",
"failedToDeleteAutomation": "自動化の削除に失敗しました",
"failedToDeleteRun": "実行の削除に失敗しました",
"failedToDeleteRuns": "実行の削除に失敗しました",
"failedToLoadWebhookSecret": "Webhookシークレットの読み込みに失敗しました: {{error}}",
"failedToSaveAutomation": "自動化の保存に失敗しました: {{error}}",
"failedToStopRun": "この実行を停止できませんでした: {{error}}",
"hasNotRunYet": "この自動化はまだ実行されていません。",
"hideRunDetail": "実行詳細を隠す",
"instructionsLabel": "指示",
"interpretedAsUtcSetTimezone": "UTCとして解釈済み。タイムゾーン設定して",
"lastRan": "最後の実行 {{when}}",
"listDescription": "エージェントタスクを自動で起動するルール作成。",
"loading": "読み込み中...",
"loadingActivity": "アクティビティ読み込み中…",
"loadingAutomations": "自動化読み込み中...",
"loadingRuns": "実行読み込み中…",
"maxConcurrentRuns": "最大同時実行数",
"nameHelp": "保存有効にするには、自動化名入力して",
"nameLabel": "名前",
"namePlaceholder": "自動化名",
"neverTriggered": "なし",
"newAutomation": "新規自動化",
"nextRun": "次回実行",
"noAutomationsYet": "まだ自動化なし",
"noConversationForRun": "この実行、読む会話なし。",
"noRunsMatchFilters": "このフィルターに一致する実行なし。",
"noRunsYet": "まだ実行なし",
"noSchedule": "スケジュールなし。この自動化、自力では実行されない。",
"noStep": "ステップなし",
"noTimezoneFound": "タイムゾーン見つからず。",
"noTriggers": "なし",
"noWorkflow": "ワークフローなし",
"nothingHasRunYet": "まだ何も実行なし。",
"openAutomations": "自動化を開く",
"orUseWebhookInstead": "代わりに webhook 使用",
"outcome": "結果",
"pickAWorkflowFirst": "先にワークフロー選択",
"prMergedDeadConfigWarning": "リポジトリ未選択。このトリガー発火しない。'All repositories'有効化するか、少なくとも1つリポジトリ追加して。",
"prEventOpened": "オープン",
"prEventOpenedTooltip": "新しいオープンPR検出時に1回だけ発火。各PR番号は重複排除される。同じPRは再トリガーされない。",
"prTriggerRepositoryHelp": "PRトリガー、常にPR自身のリポジトリ使う。",
"pushTriggerHelp": "コードが一致ブランチにプッシュされたとき発火",
"recentRuns": "最近の実行",
"recentRuns_one": "最近の実行 ({{count}})",
"recentRuns_other": "最近の実行 ({{count}})",
"refresh": "更新",
"removeFilter": "フィルターを削除",
"removeRepository": "リポジトリを削除",
"replyToThisRun": "この実行に返信…",
"repositoryLabel": "リポジトリ",
"repositoryNone": "なし。リポジトリなし",
"repositoryModeTitle": "リポジトリアクセス",
"repositoryModeDescription": "1つ以上のリポジトリとベースブランチの組を追加するか、リポジトリなしで実行。",
"repositoryModeNoneDescription": "タスク専用の一時ワークスペースで、リポジトリファイルなしで実行。",
"repositoryPlaceholderAuto": "自動",
"required": "必須",
"resizeRuns": "実行をサイズ変更",
"run": "実行",
"runAll": "すべて",
"runArchived": "アーカイブ済み",
"runCancelled": "キャンセル済み",
"runFailed": "失敗",
"runNow": "今すぐ実行",
"runRunning": "実行中",
"runSkipped": "スキップ済み",
"runReasonDedupUnresolved": "重複チェックで、この配信の値を解決できなかった",
"runReasonRepositoryContinuationReused": "継続したタスクからリポジトリを継承",
"runReasonRepositoryLoadFailed": "リポジトリ選択を確認できなかった",
"runReasonRepositoryNoneConfigured": "この自動化にリポジトリ未設定",
"runReasonSelectorAmbiguous": "リポジトリセレクタが複数のリポジトリに一致: {{value}}",
"runReasonSelectorNoMatch": "リポジトリセレクタが設定済みリポジトリに一致しない: {{value}}",
"runReasonSelectorUnresolved": "リポジトリセレクタがこの配信の値を解決できなかった",
"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 実行中のみ動作。閉じている間に発火を逃した場合は、次のティックで 1 回だけ実行。逃した各発火ごとに 1 回ではない。",
"searchConditions": "条件を検索...",
"searchTimezones": "タイムゾーンを検索…",
"selectRepositoryPlaceholder": "リポジトリを選択",
"selectStepOptional": "ステップを選択(任意)",
"selectWorkflowOptional": "ワークフローを選択(任意)",
"setUpAnAutomation": "自動化を設定",
"showLess": "表示を減らす",
"showMore": "もっと表示",
"showRunDetail": "実行詳細",
"skipped": "スキップ済み。{{reason}}",
"skippedAlreadyRunning": "スキップ済み。すでに実行中",
"starting": "開始中…",
"stopCurrentRun": "現在の実行を停止",
"stopping": "停止中…",
"stateIdle": "待機中",
"statePaused": "一時停止",
"stateRunning": "実行中",
"summaryCiCompleted": "CI 完了",
"summaryPrMerged": "PR マージ済み",
"summaryCustomSchedule": "カスタムスケジュール",
"summaryPrEvents": "PR: {{events}}",
"summaryPullRequestEvent": "プルリクエストイベント",
"summaryPushToBranch": "ブランチへプッシュ",
"summaryWebhook": "Webhook",
"switchToScheduled": "スケジュール実行に切り替え",
"taskTitleHelp": "空欄なら既定を使用。プレースホルダ対応。",
"taskTitleLabel": "タスクタイトル",
"taskTitlePlaceholder": "[自動] 自動化名",
"taskModeTitle": "実行先",
"taskModeDescription": "各発火を自動化履歴に残すか、通常タスクを作るか選択。",
"taskModeAutomationRun": "自動化履歴のみで実行",
"taskModeAutomationRunDescription": "各実行は個別のタスクと会話を使う。これらのタスクは Kanban やサイドバーに表示されない。",
"taskModeNormalTask": "通常タスクを作成",
"taskModeNormalTaskDescription": "各実行で、選択したワークフローに通常タスクを作成。Kanban とサイドバーに表示。",
"workflowRequiredLabel": "ワークフロー (必須)",
"selectWorkflowRequired": "ワークフローを選択",
"normalTaskWorkflowHelp": "ワークフローを選ぶと、このタスクが Kanban とサイドバーに表示。",
"thenDescription": "この自動化がトリガーされるたび、新しいタスクを作成",
"thenTitle": "次へ",
"triggerCategoryGithub": "GitHub",
"triggerCategoryWebhook": "Webhook",
"triggerInfoGithubPr": "スケジュールごとに GitHub API をポーリングし、フィルターに合う PR を探す。",
"triggerInfoGithubPrMerged": "Kandev の PR ポーラーが、リンクされた PR のマージを検知したときに発火。検知は最大 1 分遅れることあり。",
"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": "外部システムを設定し、この URL に POST。シークレットは <0>{{header}}</0> ヘッダーに入れる。この自動化に戻れば、いつでも値を再コピーできる。",
"webhookDedupKeyHelp": "payload 内のドットパス。例: issue.id。解決した値が前回の発火と重なる配信は重複として記録され、新しいタスクは作成されない。空欄なら配信ごとに発火。",
"webhookDedupKeyLabel": "重複排除キー",
"webhookFilterOpContains": "含む",
"webhookFilterOpEq": "等しい",
"webhookFilterOpExists": "存在する",
"webhookFilterOpIn": "リスト内",
"webhookFilterOpNe": "等しくない",
"webhookFilterOpNotExists": "存在しない",
"webhookFilterOpNotIn": "リスト外",
"webhookFiltersHelp": "発火には、すべてのフィルター通過が必要。拒否された配信は成功を返し、タスクは作らず、スキップ済みとして記録。",
"webhookFiltersLabel": "フィルター",
"webhookRepositorySelectorHelp": "payload 内のドットパス。解決した値を、設定済みリポジトリ名と完全一致で照合。空欄なら今までどおり自動化の設定リポジトリを使う。",
"webhookRepositorySelectorLabel": "リポジトリセレクタ",
"webhookSecretLabel": "Webhook シークレット",
"webhookSecretLoading": "読み込み中…",
"webhookUrlAfterSave": "自動化を保存すると、Webhook URL を使える。",
"webhookUrlLabel": "Webhook URL",
"webhookUsageHelp": "JSON 本文付きの POST リクエスト送る。secret は <0>{{header}}</0> ヘッダーに入れる。ペイロードのフィールドは <1>{{placeholder}}</1> で参照する。例: <2>{{example}}</2>。",
"whenDescription": "この自動化が実行される条件",
"whenTitle": "いつ",
"workflowLabel": "ワークフロー",
"workflowLoadError": "ワークフローを読み込めなかった。",
"scheduleNone": "スケジュールなし",
"scheduleIntervalEvery5Minutes": "5分ごと",
"scheduleIntervalEvery15Minutes": "15分ごと",
"scheduleIntervalEvery30Minutes": "30分ごと",
"scheduleIntervalEvery6Hours": "6時間ごと",
"scheduleEveryHourAt": "毎時 :{{minute}}",
"scheduleEveryDayAt": "毎日 {{time}} {{zone}}",
"scheduleEveryWeekdayAt": "毎 {{weekday}} {{time}} {{zone}}",
"frequencyEvery5Minutes": "5分ごと",
"frequencyEvery15Minutes": "15分ごと",
"frequencyEvery30Minutes": "30分ごと",
"frequencyEveryHour": "1時間ごと",
"frequencyEvery6Hours": "6時間ごと",
"frequencyEveryDay": "毎日",
"frequencyEveryWeek": "毎週",
"frequencyCustom": "カスタムスケジュール",
"scheduleUnparseable": "そのスケジュールは読めない。0 9 * * 1-5 みたいな 5 フィールド cron 試す。",
"scheduleAtSeparator": "時刻",
"failedToLoadAutomationActivity": "自動化アクティビティの読み込み失敗",
"failedToLoadAutomations": "自動化の読み込み失敗",
"failedToLoadRuns": "実行の読み込み失敗",
"failedToLoadThisAutomation": "この自動化の読み込み失敗",
"nextFiringConcurrencyPaused": "一時停止中。まだ実行中のものある (同時最大 {{max}} 件)",
"nextFiringNoSchedule": "スケジュールなし。トリガーしたときだけ実行",
"nextFiringScheduleOff": "スケジュールトリガーはオフ",
"nextFiringSwitchedOff": "オフ。発火しない",
"runNoReportRecorded": "レポート未記録。",
"runStillRunningNoReport": "まだ実行中。レポートまだなし。",
"pluginWebhookHelp": "条件保存してから webhook 設定する。フィルター変えたら再設定必要。ローテーションで旧署名 secret は即無効。",
"pluginWebhookUnavailable": "このプラグイン条件は使えない。プラグインとワークスペース接続確認。",
"pluginWebhookChoose": "値を選択",
"pluginWebhookError": "Webhook 操作失敗。保存済み条件とプラグイン接続確認。",
"pluginWebhookConfigure": "Webhook を設定",
"pluginWebhookReveal": "シークレットを表示",
"pluginWebhookRotate": "シークレットをローテーション",
"pluginWebhookRevoke": "Webhook を取り消す",
"pluginWebhookURL": "Webhook の URL",
"pluginWebhookCopy": "URL をコピー",
"pluginWebhookSecret": "署名用シークレット",
"pluginWebhookHide": "シークレットを非表示",
"pluginWebhookDeliveries": "配信を更新",
"pluginWebhookState_pending": "保留中",
"pluginWebhookState_dispatch": "送信待ち",
"pluginWebhookState_processing": "処理中",
"pluginWebhookState_admitted": "承認済み",
"pluginWebhookState_failed": "失敗",
"pluginWebhookState_cancelled": "キャンセル済み",
"pluginWebhookState_skipped": "スキップ済み",
"pluginWebhookState_ignored": "無視済み"
}
+293
View File
@@ -0,0 +1,293 @@
{
"actionHintAria": "{{kind}} アクションヒント {{index}}",
"actionLabelAria": "{{kind}} アクションラベル {{index}}",
"addPrAction": "PR アクションを追加",
"addPrQuery": "PR クエリを追加",
"addPrWatch": "PR ウォッチを追加",
"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": "例:プラットフォームトリアージ",
"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}} または ID",
"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 を設定</2>",
"noWorkItemWatches": "作業項目ウォッチはまだありません。",
"openAzureDevopsFilters": "Azure DevOps フィルターを開く",
"openPullRequestInAzureDevops": "Azure DevOps でプルリクエスト {{id}} を開く",
"openWorkItemInAzureDevops": "Azure DevOps で作業項目 {{id}} を開く",
"openWorkItemInAzureDevops2": "Azure DevOps で作業項目を開く",
"optional": "任意",
"organizationUrl": "組織 URL",
"pastePat": "PAT を貼り付け",
"patHelpTitle": "ボード編集用の個人用アクセストークンを作成",
"patStepCheckScopes": "<1>{{workItems}}</1> で Read &amp; write を選択し、<4>{{code}}</4> で Read を選択してください。その他すべてのスコープは選択しないでください。",
"patStepChooseScopes": "この組織、短い有効期限、Custom defined スコープを選択してください。",
"patStepCreateAndPaste": "トークンを作成してコピーし、このフィールドに貼り付けます。",
"patStepOpenTokenSettings": "トークン設定を開き、New Token を選択します。",
"pending": "保留中",
"personalAccessToken": "個人用アクセストークン",
"placeholderTitleDescription": "Azure DevOps の作業項目またはプルリクエストのタイトル",
"placeholderUrlDescription": "Azure DevOps の作業項目またはプルリクエストの URL",
"placeholderDescriptionBody": "説明本文",
"placeholderIdDescription": "作業項目またはプルリクエストの ID",
"placeholderProjectDescription": "プロジェクト名",
"placeholderSourceBranchDescription": "ソースブランチ",
"placeholderStateDescription": "現在の状態",
"placeholderTargetBranchDescription": "ターゲットブランチ",
"placeholderTypeDescription": "作業項目の種類",
"planningAndEffort": "計画と工数",
"policiesLabelled": "ポリシー:{{state}}",
"pollIntervalSeconds": "ポーリング間隔(秒)",
"previousBoardColumn": "前のボード列",
"previousPullRequestPage": "前のプルリクエストページ",
"project": "プロジェクト",
"prompt": "プロンプト",
"promptPlaceholdersHint": "{{open}} と入力すると利用可能なプレースホルダーが表示されます。<4>{{url}}</4> と <6>{{title}}</6> はアクション実行時に置き換えられます。",
"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、リポジトリ、ワークフロー、ステップ、エージェント、実行プロファイルが必要です。",
"prStatusAbandoned": "破棄済み",
"prStatusActive": "アクティブ",
"prStatusChangesRequested": "変更が要求されました",
"prStatusCompleted": "完了",
"prStatusDraft": "下書き",
"prStatusPolicyFailed": "ポリシー失敗",
"prStatusPolicyRunning": "ポリシー実行中",
"prStatusReady": "準備完了",
"prStatusWaitingForReview": "レビュー待ち",
"pullRequestStatusAria": "Azure PR {{id}}:{{status}}{{suffix}}",
"defaultActionAddressFeedback": "フィードバックに対応",
"defaultActionAddressFeedbackHint": "レビューコメントを反映",
"defaultActionFixCi": "CI を修正",
"defaultActionFixCiHint": "失敗しているチェックを診断",
"defaultActionImplement": "実装",
"defaultActionImplementHint": "実装して PR を開く",
"defaultActionInvestigate": "調査",
"defaultActionInvestigateHint": "根本原因を特定",
"defaultActionReproduce": "再現",
"defaultActionReproduceHint": "再現手順を記録",
"defaultActionReview": "レビュー",
"defaultActionReviewHint": "差分を確認して問題を指摘",
"defaultQueryActive": "アクティブ",
"defaultQueryAssignedToMe": "自分に割り当て",
"defaultQueryCompleted": "完了",
"defaultQueryCreatedByMe": "自分が作成",
"defaultQueryOpen": "オープン",
"defaultQueryRecentlyUpdated": "最近更新されたもの",
"defaultQueryReviewRequested": "レビュー依頼中"
}
+151
View File
@@ -0,0 +1,151 @@
{
"canvas": "キャンバス",
"canvases": "キャンバス",
"openWorkspaceSettings": "キャンバス設定を開く",
"setUpCanvas": "キャンバスをセットアップ",
"createCanvas": "キャンバスを作成",
"createCanvasTaskTitle": "キャンバスを作成",
"createCanvasTaskPrompt": "既存のタスクを一覧表示するコーディネータービュー付きの新しい Kandev キャンバスを作成します。",
"loadingCanvas": "キャンバスを読み込み中",
"loadingCanvasDescription": "キャンバスのメタデータを読み込み中です。",
"pendingFirstRelease": "最初のリリースを待機中",
"pendingFirstReleaseDescription": "このキャンバスには公開済みのリリースがまだありません。",
"pendingPermission": "権限のレビューが必要です",
"pendingPermissionDescription": "アクティブなリリースは、開く前に権限の承認が必要です。",
"loadingRuntime": "キャンバスランタイムを読み込み中",
"loadingRuntimeDescription": "公開済みのキャンバスアプリケーションを準備中です。",
"ready": "準備完了",
"readyDescription": "キャンバスアプリケーションの準備ができました。",
"offline": "キャンバスはオフラインです",
"offlineDescription": "キャンバスランタイムに接続できませんでした。接続を確認して再度お試しください。",
"invalidRelease": "無効なリリース",
"invalidReleaseDescription": "アクティブなリリースが検証に失敗しました。リリースを確認するか、キャンバスを編集してください。",
"unavailable": "キャンバスを利用できません",
"unavailableDescription": "アクティブなキャンバスリリースを利用できません。",
"archived": "キャンバスはアーカイブ済みです",
"archivedDescription": "再度開くには、ワークスペース設定からこのキャンバスを復元してください。",
"loadFailed": "キャンバスの読み込みに失敗しました。",
"actionFailed": "キャンバスアクションに失敗しました。",
"canvasActions": "キャンバスアクション",
"editCanvas": "キャンバスを編集",
"editCanvasHelp": "キャンバス作成タスクを開きます。",
"promoteCanvas": "キャンバスを昇格",
"promoteCanvasHelp": "このタスクキャンバスをワークスペースのナビゲーションで利用できるようにします。",
"promoteCanvasUnavailable": "有効なリリース後に昇格できます。",
"openInNewTab": "新しいタブで開く",
"openInNewTabHelp": "このキャンバスを専用のブラウザータブで開きます。",
"promoteCanvasDescription": "{{title}} をワークスペーススコープに移動する前に権限を確認してください。",
"loadingPermissions": "要求された権限を読み込み中",
"promotionScopeChange": "昇格すると、このキャンバスがワークスペースのナビゲーションで利用できるようになります。",
"noAdditionalPermissions": "追加の権限は要求されていません。",
"sharedState": "共有状態",
"promotingCanvas": "キャンバスを昇格中",
"confirmPromotion": "昇格を確認",
"releasesAndPermissions": "リリースと権限",
"releasesAndPermissionsHelp": "リリースを確認し、要求された権限を承認します。",
"releasesDescription": "このキャンバスの保留中の権限と保持されているリリースを確認します。",
"loadingReleases": "リリースを読み込み中",
"noReleases": "利用可能なリリースはありません。",
"approveRelease": "リリースを承認",
"rejectRelease": "リリースを却下",
"rollbackRelease": "リリースをロールバック",
"permissionDeclaration": "宣言済みの権限",
"missingPermissions": "まだ必要な権限",
"retry": "もう一度試す",
"refresh": "更新",
"statusActive": "アクティブ",
"statusArchived": "アーカイブ済み",
"statusPending": "保留中",
"statusDisabled": "無効",
"statusError": "エラー",
"workspaceCanvases": "ワークスペースのキャンバス",
"workspaceCanvasesDescription": "{{workspace}} で利用できるキャンバスを管理します。",
"loadingCanvases": "ワークスペースのキャンバスを読み込み中",
"noWorkspaceCanvases": "ワークスペースのキャンバスはまだありません。",
"activeCanvases": "アクティブなキャンバス",
"archivedCanvases": "アーカイブ済みのキャンバス",
"permissionsAndReleases": "権限とリリース",
"openCanvas": "キャンバスを開く",
"restoreCanvas": "復元",
"archiveCanvas": "アーカイブ",
"removeCanvas": "削除",
"removeCanvasDescription": "{{title}} とそのキャンバスリリースを削除しますか?この操作は元に戻せません。",
"runtimeTokenExpired": "ランタイムトークンの有効期限が切れました。もう一度お試しください。",
"promotionSourceScope": "ソーススコープ",
"promotionSourceActor": "ソースアクター",
"promotionSourceTask": "ソースタスク",
"promotionSourceSession": "ソースセッション",
"promotionTargetScope": "ターゲットスコープ",
"promotionPlacement": "ワークスペース内の配置",
"permissionReads": "API 読み取り",
"permissionWrites": "API 書き込み",
"permissionEvents": "イベント",
"permissionExternalOrigins": "外部オリジン",
"permissionExternalOrigin": "外部 HTTPS オリジン",
"permissionSharedState": "共有キャンバス状態の読み書き",
"permissionReadTasks": "タスクデータの読み取り",
"permissionReadWorkflows": "ワークフローデータの読み取り",
"permissionWriteTasks": "タスクデータの書き込み",
"permissionWriteMessages": "タスクメッセージの書き込み",
"permissionEventTaskUpdated": "タスク更新イベントの受信",
"permissionEventWorkflowUpdated": "ワークフロー更新イベントの受信",
"unsupportedPermission": "サポートされていない権限:{{value}}",
"selectRelease": "確認するリリースを選択",
"releaseOption": "{{date}}({{status}})",
"releaseDate": "作成日時",
"releaseStatus": "ステータス",
"newPermission": "新規",
"statusPrevious": "以前",
"unsupportedReleaseStatus": "サポートされていないリリースステータス:{{status}}",
"dateUnavailable": "日付を利用できません",
"sourceUnavailable": "ソースを利用できません",
"sourceActorTaskAgent": "タスクエージェント",
"sourceActorUser": "ユーザー",
"sourceActorSystem": "Kandev",
"sourceActorUnknown": "不明な作成者",
"archivedCanvasActionHelp": "このキャンバスはアーカイブ済みです。変更するにはワークスペース設定から復元してください。",
"disabledCanvasActionHelp": "このキャンバスは無効です。変更するには有効にしてください。",
"shareCanvas": "キャンバスを共有",
"shareCanvasDescription": "確認・共有用に検証済みのバンドルまたはソースアーカイブを準備します。",
"prepareDownloads": "ダウンロードを準備",
"prepareDownloadsDescription": "Kandev は選択したアクティブなリリースから制限付きアーカイブを作成します。共有にはスクリーンショットは含まれません。",
"downloadsReady": "ダウンロードの準備ができました",
"packageId": "パッケージ ID",
"packageVersion": "パッケージバージョン",
"distributionMetadata": "配布メタデータ",
"distributionMetadataHelp": "ダウンロードを準備する前にパッケージ情報を確認・入力してください。",
"displayName": "表示名",
"description": "説明",
"author": "作成者",
"license": "ライセンス",
"sourceMode": "ソースモード",
"sourceModeStatic": "静的アプリケーション",
"sourceModeProject": "プロジェクトソース",
"minKandevVersion": "最小 Kandev バージョン",
"repositoryUrl": "リポジトリ URL",
"fileInventory": "ファイル一覧",
"fileCount_one": "{{count}} ファイル",
"fileCount_other": "{{count}} ファイル",
"bundleSize": "バンドルサイズ",
"sourceSize": "ソースサイズ",
"downloadSize": "{{size}} バイト",
"downloadBundle": "バンドルをダウンロード",
"downloadSource": "ソースをダウンロード",
"privateContentReminder": "共有する前に、アーカイブ内に非公開のコンテンツがないか確認してください。",
"howToShare": "共有方法",
"shareStepDownload": "インストール用のバンドル、または確認用のソースアーカイブをダウンロードします。",
"shareStepRepository": "保守を始める準備ができたら、ソースをリポジトリに公開します。",
"shareStepRelease": "レビュー済みのリリースを作成し、パッケージダイジェストを記録します。",
"shareStepSend": "パッケージまたはレビュー済みのレジストリエントリを宛先に送信します。",
"sharing": "ダウンロードを準備中…",
"shareFailed": "キャンバスのダウンロードを準備できませんでした。",
"shareNoRelease": "このキャンバスには共有できる有効なアクティブリリースがありません。",
"registryExample": "レジストリエントリの例(任意)",
"copyRegistryExample": "レジストリの例をコピー",
"registryExampleCopied": "レジストリの例をコピーしました",
"examplePackageId": "my-canvas",
"exampleRepository": "your-org/my-canvas",
"examplePreviewUrl": "https://cdn.example.com/my-canvas-cover.webp",
"examplePreviewAlt": "キャンバス概要",
"yes": "はい"
}
+156
View File
@@ -0,0 +1,156 @@
{
"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": "キュー内のメッセージを並べ替えできませんでした。",
"failedToSetQueueAutoRun": "キューの自動実行設定を更新できませんでした。",
"failedToSetQueueAutoMerge": "キューの自動マージ設定を更新できませんでした。",
"failedToStartQuickChat": "クイックチャットを開始できませんでした",
"fileTreeActions": "ファイルアクション",
"loadingRepositories": "リポジトリを読み込み中",
"failedToSendQueuedMessageNow": "キュー内のメッセージを今すぐ送信できませんでした。",
"mergeReferenceOverflow": "エンティティ参照が多すぎて、これらのキュー内メッセージをマージできません。",
"mergeWithAbove": "上とマージ",
"moveQuickChatTabLeft": "{{name}} を左に移動",
"moveQuickChatTabRight": "{{name}} を右に移動",
"quickChatTabActions": "{{name}} のアクション",
"reorderQuickChatTab": "{{name}} を並べ替え",
"noTodosYet": "TODO はまだありません。",
"newChatTab": "新しいチャット",
"newQuickChat": "新しいクイックチャット",
"noAgentsAvailable": "利用可能なエージェントがありません",
"noRepositoriesAvailableInWorkspace": "このワークスペースで利用可能なリポジトリがありません",
"noRepository": "リポジトリなし",
"openProviderPage": "プロバイダーページを開く",
"optional": "(任意)",
"pinQueuedMessages": "メッセージキューを固定",
"providerQuotaModel": "モデル:{{model}}",
"providerQuotaProviderFallback": "プロバイダー",
"providerQuotaReset": "容量は {{resetAt}} にリセットされます。",
"providerQuotaResetUnknown": "プロバイダーが容量を利用可能にしたら再度お試しください。",
"providerQuotaTitle": "{{provider}} の使用量上限に達しました",
"transientRetryReasonModelCapacity": "モデルが満杯",
"transientRetryReasonNetworkUnavailable": "ネットワークを利用できません",
"transientRetryReasonProviderOverloaded": "プロバイダーが過負荷",
"transientRetryReasonProviderUnavailable": "プロバイダーが一時的に利用不可",
"transientRetryReasonRateLimited": "レート制限中",
"transientRetryReasonAgentTransportLost": "エージェント接続が切断されました",
"transientRetryReasonGeneric": "プロバイダーエラー",
"transientRetryIn": "{{countdown}} 後に再試行",
"transientRetryNow": "再試行中…",
"transientRetryCountdownLabel": "再試行までのカウントダウン",
"transientRetryAttempt": "試行 {{attempt}} / {{maxAttempts}}",
"transientRetryProviderModel": "{{provider}}・{{model}}",
"transientRetryProvider": "プロバイダー:{{provider}}",
"transientRetryModel": "モデル:{{model}}",
"unpinQueuedMessages": "メッセージキューの固定を解除",
"queueCapacity_one": "{{count}} / {{max}}",
"queueCapacity_other": "{{count}} / {{max}}",
"queueCapacityFull_one": "{{count}} / {{max}} · 満杯",
"queueCapacityFull_other": "{{count}} / {{max}} · 満杯",
"queueAutoRun": "自動実行",
"queueAutoMerge": "自動マージ",
"queueAutoRunOffHelp": "現在の応答を終了すると、キュー内のメッセージは待機します。",
"queueAutoRunOnHelp": "キュー内のメッセージを 1 件ずつ実行します。",
"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": "クイックチャットはタスクボードの外に保持されます。",
"quickChatTabOrderSaveFailed": "クイックチャットのタブ順序を保存できませんでした。",
"quickChatTabOrderSaveFailedDescription": "現在の順序はここに保持されます。再読み込みすると最後に保存された順序に戻ります。",
"removeQueuedMessage": "キュー内のメッセージを削除",
"renameChat": "チャット名を変更",
"reorderQueuedMessage": "キュー内のメッセージを並べ替え",
"renameSavedOnThisDeviceOnly": "名前の変更はこのデバイスのみに保存されます",
"renameSyncFailedDescription": "新しい名前を他のデバイスに同期できませんでした。",
"repositories": "リポジトリ",
"repositoriesHelp": "特定のコードやブランチに焦点を当てるために、リポジトリコンテキストを追加します。",
"repositoryContextHelp": "Kandev は選択したブランチから分離されたワークツリーを使用します。コミットされていないローカルの変更は含まれません。",
"repositoryOptional": "リポジトリ(任意)",
"resizeQuickChatFromLeft": "クイックチャットを左からリサイズ",
"resizeQuickChatFromRight": "クイックチャットを右からリサイズ",
"retryAttachmentUpload": "添付ファイルのアップロードを再試行",
"selectAgent": "エージェントを選択",
"selectARepository": "リポジトリを選択…",
"startChat": "チャットを開始",
"startChatAction": "チャットを開始",
"starting": "開始中…",
"startingChat": "チャットを開始中…",
"sendNowQueuedMessage": "キュー内のメッセージを今すぐ送信",
"sendNowEntryAlreadySent": "メッセージはすでに送信済みです。今すぐ送信が開始される前にエージェントが取得しました。",
"sendNowQueueEmpty": "キューは空です。",
"sendNowQueueChanged": "今すぐ送信が開始される前にキューが変更されました。",
"sendNowConflict": "別のキャンセルまたは今すぐ送信の操作が進行中です。",
"sendNowTurnChanged": "今すぐ送信が開始される前にアクティブなターンが変更されました。",
"sendNowAttachmentOverflow": "添付ファイルの合計がメッセージの上限を超えています。",
"sendNowReferenceOverflow": "エンティティ参照の合計がメッセージの上限を超えています。",
"sortable": "並べ替え可能",
"technicalDetails": "技術的な詳細",
"managedRuntimeNpmTitle": "npm がランタイムを準備できませんでした",
"managedRuntimeNpmBody": "Kandev はパッケージデータを更新し、同じランタイムをもう一度試しました。",
"managedRuntimeRetry": "ランタイムを再試行",
"theAssociatedWorktree": "関連付けられたワークツリー",
"theTaskAndItsData": "タスクとそのデータ",
"thisActionCannotBeUndone": "この操作は元に戻せません。",
"turnGroupToolCalls_one": "{{count}} 件のツール呼び出し",
"turnGroupToolCalls_other": "{{count}} 件のツール呼び出し",
"composerSteerPlaceholder": "今すぐ送信:実行中のターンに配信されます",
"unknownError": "不明なエラー",
"useWorkspaceDefault": "ワークスペースの既定を使用…",
"useWorkspaceDefaultOption": "ワークスペースの既定を使用",
"emptyTurnKnownCommand": "`/{{command}}` は実行されましたが、出力はありませんでした。{{hint}}",
"emptyTurnNoOutput": "エージェントは出力を生成せずに終了しました。",
"emptyTurnResendHint": "先頭のスラッシュなしで、通常のメッセージとしてリクエストを再送信してください。",
"emptyTurnUnknownCommand": "`/{{command}}` はこのエージェントが認識するコマンドではないため、出力はありませんでした。{{hint}}"
}
+547
View File
@@ -0,0 +1,547 @@
{
"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": "自動化",
"autoStartFailed": "自動開始失敗",
"availableTemplates": "利用可能テンプレート",
"back": "戻る",
"backToTaskOverview": "タスク概要に戻る",
"baseBranch": "ベースブランチ",
"bootsASecondaryKandevDevInstance": "クリーンな DB で二次 kandev dev インスタンスを起動。メインを触らず変更確認できる。",
"bootstrapFailed": "ブートストラップ失敗",
"bootstrapFailedCloseAndReopen": "ブートストラップ失敗。閉じて再度開いて再試行。",
"breadcrumb": "パンくず",
"browseParentDirectory": "親ディレクトリを参照",
"bugFix": "バグ修正",
"cancel": "キャンセル",
"cancelNewFolder": "新規フォルダ作成をキャンセル",
"changelog": "変更履歴",
"checkingGithubAuthentication": "GitHub 認証確認中…",
"chooseAFolderOrEnterA": "フォルダを選ぶか、このマシン上の新しいパスを入力。",
"cliClient": "CLI クライアント",
"cliModeYourPromptWillBe": "CLI モード。プロンプトはターミナルへ自動注入される",
"cliPassthrough": "CLIパススルー",
"close": "閉じる",
"closeEsc": "閉じる (Esc)",
"commandAddBrowserPanel": "ブラウザパネルを追加",
"commandAddBrowserPanelKeywords": "ブラウザ, プレビュー, Web, ブラウザプレビューを開く, Webプレビュー, アプリプレビュー",
"commandAddChangesPanel": "変更パネルを追加",
"commandAddChangesPanelKeywords": "変更, 差分, git の変更, 変更されたファイル, ソース管理, git diff, 変更のレビュー",
"commandAddPlanPanel": "プランパネルを追加",
"commandAddPlanPanelKeywords": "計画, ドキュメント, タスク計画, 実装計画, 計画の詳細",
"commandAddTerminalPanel": "ターミナルパネルを追加",
"commandAddTerminalPanelKeywords": "ターミナル, シェル, コンソール, 新しいターミナル, ターミナルを開く, コマンドライン",
"commandAgentsSettingsKeywords": "エージェント, エージェント設定, エージェントプロファイル, インストール済みエージェント, Claude",
"commandArchiveTaskKeywords": "アーカイブ、タスクをアーカイブ、現在のタスクをアーカイブ、タスクを閉じる、タスクを完了、片付ける",
"commandCancelTurn": "ターンをキャンセル",
"commandCancelTurnKeywords": "キャンセル, 停止, ターン, エージェントをキャンセル, エージェントを停止, エージェントを中断",
"commandCommitChanges": "変更をコミット",
"commandCommitChangesKeywords": "コミット, git, 変更を保存, git commit",
"commandConfigChatKeywords": "設定チャット, 設定モード, Kandev を設定, ワークフロー設定, MCP 設定",
"commandCreateFile": "ファイルを作成",
"commandCreateFileKeywords": "作成, 新規, ファイル, 追加",
"commandCreateFilePlaceholder": "ワークスペースルートからの相対パスを入力...",
"commandCreateNewTask": "新規タスクを作成",
"commandCreateNewTaskKeywords": "新規, 作成, タスク, 追加",
"commandCreatePr": "PRを作成",
"commandCreatePrKeywords": "プルリクエスト, pr, プルリクエストを開く, プルリクエストを送信する, git",
"commandCreateSubtask": "サブタスクを作成",
"commandCreateSubtaskKeywords": "サブタスク, 作成, 新しいサブタスク, 新しいサブタスク, 子タスク",
"commandExecutorsSettingsKeywords": "実行器, 実行器プロファイル, 実行環境, 環境変数, ランタイム, 計算資源",
"commandGoToAllTasks": "すべてのタスクへ移動",
"commandGoToAllTasksKeywords": "タスク, 一覧, すべて",
"commandGoToGitHubDashboard": "GitHubダッシュボードへ移動",
"commandGoToGitHubDashboardKeywords": "GitHub, ダッシュボード, PR, プルリクエスト, コードレビュー, issue, レビュー",
"commandGoToHome": "ホームへ移動",
"commandGoToHomeKeywords": "ホーム, カンバン, ボード",
"commandGoToSettings": "設定へ移動",
"commandGoToSettingsKeywords": "設定, preferences, 設定ファイル, 一般設定",
"commandGoToStats": "統計へ移動",
"commandGoToStatsKeywords": "統計, statistics, 分析, analytics, メトリクス, metrics",
"commandGoToThreads": "スレッドへ移動",
"commandGoToThreadsKeywords": "スレッド, エージェント, ライブ, 列",
"commandGroupActions": "アクション",
"commandGroupAgent": "エージェント",
"commandGroupCommands": "コマンド",
"commandGroupGit": "Git",
"commandGroupNavigation": "ナビゲーション",
"commandGroupPanels": "パネル",
"commandGroupPreferences": "設定項目",
"commandGroupSettings": "設定",
"commandGroupTasks": "タスク",
"commandGroupView": "表示",
"commandGroupWorkspace": "ワークスペース",
"commandMergeKeywords": "マージ, git, ブランチ",
"commandNewAgent": "新しいエージェント",
"commandNewAgentKeywords": "新規, エージェント, セッション, エージェントを開始, 新しいセッション",
"commandOpenRecentTaskSwitcher": "最近のタスク切り替えを開く",
"commandOpenRecentTaskSwitcherKeywords": "最近, タスク, スイッチャー, 履歴, 最近のタスク, タスクを切り替え, 最近のタスクを切り替え",
"commandPaletteMode": "コマンドパレットモード",
"commandPreviewAddTerminalPanel": "ターミナルパネルを追加",
"commandPreviewCommitChanges": "変更をコミット",
"commandPreviewGoToHome": "ホームへ移動",
"commandPreviewPull": "Pull",
"commandPreviewSearchTasks": "タスクを検索",
"commandPromptsSettingsKeywords": "プロンプト、プロンプト設定、カスタムプロンプト、プロンプトスニペット、プロンプトテンプレート",
"commandPullKeywords": "プル, git, 変更をプル, 変更をダウンロード",
"commandPushKeywords": "push, git, 変更を push, リモートへ push, 変更をアップロード",
"commandQuickChat": "クイックチャット",
"commandQuickChatKeywords": "クイックチャット, 新規クイックチャット, クイック質問, エージェントに質問",
"commandRebaseKeywords": "リベース, git, ブランチ",
"commandSwitchToDarkMode": "ダークモードに切り替え",
"commandSwitchToKanbanView": "カンバン表示に切り替え",
"commandSwitchToKanbanViewKeywords": "カンバン, ボード, 表示",
"commandSwitchToLightMode": "ライトモードに切り替え",
"commandSwitchToListView": "リスト表示に切り替え",
"commandSwitchToListViewKeywords": "リスト, テーブル, 表示",
"commandSwitchToPipelineView": "パイプライン表示に切り替え",
"commandSwitchToPipelineViewKeywords": "パイプライン, グラフ, 表示",
"commandThemeKeywords": "テーマ, カラーテーマ, 外観",
"commandWorkspaceSettingsKeywords": "ワークスペース, workspaces",
"commitsAndPushesToTheCurrent": "現在のブランチにコミットしてプッシュします。",
"commitsPushesAndOpensAPull": "コミットしてプッシュし、プルリクエストを開きます。",
"configurationChat": "設定チャット",
"configureAUtilityAgentToEnhance": "設定でユーティリティエージェントを構成すると、AIによる強化を有効にできます",
"configureExecutorsInSettingsToControl": "Settings で実行エンジンを構成して、エージェントの実行場所を制御します。",
"configureGithub": "GitHub を構成",
"confirm": "確認",
"contents": "内容",
"contentSearchNeedsAnActiveTask": "コンテンツ検索にはアクティブなタスクセッションが必要です。",
"contextCompactionCountHelp": "Kandev は、観測されたコンテキスト使用量の減少からこの回数を推定します。サンプルの不足やプロバイダーのリセットにより、概算になる場合があります。",
"contextCompactions": "圧縮",
"contribute": "貢献する",
"contributingAsLogin": "<1>@{{login}}</1> として貢献中。{{access}}",
"contributingAsYourGithubAccount": "GitHub アカウントとして貢献中。{{access}}",
"copy": "コピー",
"couldNotPrepareImproveKandev": "Improve Kandev の準備ができませんでした",
"createATaskDescribingYourBug": "不具合や機能要望を説明するタスクを作成します",
"createAWorkspaceToConfigureThisIntegration": "この統合を設定するには、ワークスペースを作成してください。",
"createFolder": "フォルダを作成",
"createNewRepository": "新しいリポジトリを作成",
"createRepository": "リポジトリを作成",
"createsAnEmptyGitRepository": "空の Git リポジトリを作成し、このワークスペースに登録します。",
"creating": "作成中…",
"dAgo": "{{diffDay}}日前",
"dShort": "{{diffDay}}日",
"default": "デフォルト",
"defaultBadge": "デフォルト",
"delete": "削除",
"deleteSavedTaskViewAction": "{{name}} を削除",
"deleteSavedTaskViewDescription": "これは保存されたフィルターと表示設定のみを削除します。接続されたサービスのタスクやデータは削除しません。",
"deleteSavedTaskViewTitle": "{{name}} を削除しますか?",
"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": "ディレクトリ読み込み失敗",
"nativeFolderPickerFailed": "ネイティブのフォルダ選択ダイアログを開けなかった。",
"nativeFolderPickerUnavailable": "ネイティブのフォルダ選択ダイアログは使えない。Kandev を再読み込みしてもう一度試せ。",
"failedToLoadRoutine": "ルーチン読み込み失敗",
"failedToLoadSetup": "セットアップ読み込み失敗",
"failedToRenderDiagram": "図の描画失敗",
"featureRequest": "機能リクエスト",
"files": "ファイル",
"folderName": "フォルダ名",
"folders": "フォルダ",
"forwardStdinStdoutStraightToThe": "stdin/stdout を CLI 子プロセスへそのまま転送。ACP 無効化。",
"getStarted": "始める",
"githubCliNotAuthenticated": "GitHub CLI 未認証",
"gitOpAmendCommit": "コミット修正",
"gitOpCommit": "コミット",
"emptyRemoteRemoteChanged": "ベースブランチ公開前にリモートが変わった。タスクを更新して再試行。",
"emptyRemoteBasePublishFailed": "空のリモートベースブランチを公開できなかった。Git アクセス確認して再試行。",
"emptyRemoteBranchPublishFailed": "ベースブランチは公開されたが、タスクブランチは公開できなかった。もう一度 Push。",
"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}}時間前",
"hShort": "{{diffHr}}時間",
"healthIssues": "ヘルス問題",
"hideAdvancedOptions": "詳細オプションを隠す",
"howLogContextWorks": "ログコンテキストの仕組み",
"improveKandev": "Kandevを改善",
"createImproveWorkspaceCheckbox": "改善タスクを通常作業から分離するため、専用の{{workspace}}ワークスペースを作成する",
"improveWorkspaceDoesNotExistYet": "専用のImprove Kandevワークスペースはまだ存在しません。改善タスクは自分専用のワークスペースで通常作業から分離して管理されます。",
"continue": "続行",
"improveKandevBugPlaceholder": "例: カンバンボードを開くと、1200px未満の画面で列ヘッダーの文字がタスク数バッジに重なる...",
"improveKandevFeaturePlaceholder": "例: タスク詳細画面からタスクをDoneにするキーボードショートカットを追加し、タスク操作メニューにそのショートカットを表示する...",
"improveKandevDirectPushAccess": "kdlbs/kandevへの書き込み権限あり。エージェントは上流リポジトリのブランチへ直接プッシュする。",
"improveKandevExistingForkPrepared": "Kandevがこのタスク用の書き込み可能フォークを見つけた。エージェントはそこへブランチをプッシュし、kdlbs/kandevに対してプルリクエストを開く。",
"improveKandevExecutorForkAtPr": "エージェントはPR手順中に実行者の認証情報でフォークを作成し、そこからプルリクエストを開く。",
"improveKandevIssueNoForkAccess": "Issueを開くのにフォークやプッシュ権限は不要。",
"improveKandevIssuePlaceholder": "公開したい問題や依頼を説明してください。エージェントは対応するGitHub issueテンプレートに必要な詳細を尋ねます...",
"improveKandevManagedForkPrepared": "Kandevが、エージェント開始前にこのタスク用の書き込み可能フォークを用意する。エージェントはそこへブランチをプッシュし、kdlbs/kandevに対してプルリクエストを開く。",
"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}}分前",
"mShort": "{{diffMin}}分",
"matchCase": "大文字小文字を区別",
"menu": "メニュー",
"mode": "モード",
"model": "モデル",
"multiRepoUnavailableLocal": "マルチリポジトリタスクは、Local の初回起動パスが隣接リポジトリを投影できるまで使えない。",
"multiRepoUnavailableRemoteDocker": "マルチリポジトリタスクは、Remote Docker がタスクインスタンス作成に対応するまで使えない。",
"multiRepoUnsupportedExecutor": "この executor はマルチリポジトリタスク非対応。",
"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": "結果なし。",
"noTasksFound": "タスク見つからず。",
"notificationClarificationBody": "エージェントが質問した。",
"notificationClarificationTitle": "エージェントが返答待ち",
"notificationInboxItemBody": "新しい項目に対応必要。",
"notificationInboxItemTitle": "新しい受信トレイ項目",
"notificationTurnFinishedBody": "エージェントのターン終了。",
"notificationTurnFinishedTitle": "エージェントのターン終了",
"notInstalled": "未インストール",
"notYetInstalled": "まだ未インストール",
"officeIsNotEnabledForThis": "このランタイムでは Office は有効じゃない。",
"officeRouteNotPortedYet": "この Office ルートは SPA シェルで処理されるが、専用クライアントページはまだ移植中: <1>{{pathname}}</1>",
"onboardingAgentsAutoApproveWarning": "<0>注意:</0> デフォルトの Agent Profiles は Auto Approve 有効で動く。YOLO モード。",
"onboardingAgentsHelp": "エージェント開いて、モデルと権限を設定。先に進むと変更は保存。あとで Settings > Agents でカスタム TUI agents も追加できる。",
"onboardingStepAgentsDescription": "検出済み agent 管理、新規 install。",
"onboardingStepAgentsTitle": "AIエージェント",
"onboardingStepCommandPanelDescription": "キーボードショートカットで、どこからでも action にすぐアクセス。",
"onboardingStepCommandPanelTitle": "コマンドパネル",
"onboardingStepExecutorsDescription": "Agents は実行環境を分けられる。local, containerized, remote。",
"onboardingStepExecutorsTitle": "実行者",
"onboardingStepWorkflowsDescription": "Workflows で task の手順と自動化を定義。",
"onboardingStepWorkflowsTitle": "エージェント型ワークフロー",
"open": "開く",
"openFullPage": "全画面で開く",
"openNavigationMenu": "ナビゲーションメニューを開く",
"openNavigationMenuWithConnectionIssue": "{{description}} ナビゲーションメニューを開く",
"openingLastTask": "最後の task を開く…",
"openIssue": "issue を開く",
"optionalTheRepositoryTheAgentWorks": "任意。agent が作業する repository。",
"managedGithubForkUnavailable": "Managed GitHub access で、この task 用 verified fork を準備できなかった。workspace の GitHub 接続を確認するか、代わりに issue を開く。",
"panels": "パネル",
"parentDirectory": "親 directory",
"pending": "保留中",
"permitTheCliToUploadCode": "CLI に cloud indexing 用 code upload を許可する (auggie / similar)。",
"pickACliClient": "CLI client を選ぶ",
"pickACliClientToLoad": "CLI client を選んで、使える model と mode を読み込む。",
"pluginPanelFailedToLoad": "この plugin panel の読み込み失敗。",
"pluginPanelUnavailable": "この panel はもう使えない。",
"plugins": "Plugins",
"prDetails": "PR 詳細",
"preparingKandevRepository": "Kandev repository 準備中…",
"preparingKandevRepositoryInBackground": "Kandev repository をバックグラウンドで準備中。詳細を入力して、準備できたら送信。",
"presetIconBug": "Bug",
"presetIconCheck": "確認",
"presetIconCode": "コード",
"presetIconEye": "Eye",
"presetIconMessage": "メッセージ",
"presetIconSearch": "検索",
"presetIconSparkle": "きらめき",
"presetIconTool": "ツール",
"pressCmdKToOpenItAnytime": "<0>押して</0><1></1><2>いつでも開けます</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": "これにより、watchによって以前作成されたすべてのタスクが、アーカイブ済みタスクを含めて削除されます。watchのポーリングカーソルも消去されるため、次回のチェックでは現在一致している項目がすべて再インポートされます。これは元に戻せません。",
"resetWatchDeleteTasks_one": "これにより、watchによって以前作成された{{count}}件のタスクが、アーカイブ済みタスクを含めて削除されます。watchのポーリングカーソルも消去されるため、次回のチェックでは現在一致している項目がすべて再インポートされます。これは元に戻せません。",
"resetWatchDeleteTasks_other": "これにより、watchによって以前作成された{{count}}件のタスクが、アーカイブ済みタスクを含めて削除されます。watchのポーリングカーソルも消去されるため、次回のチェックでは現在一致している項目がすべて再インポートされます。これは元に戻せません。",
"resetWatchNoTasks": "このwatchでまだ作成されたタスクはありません。ポーリング状態のみが消去されます。watchのポーリングカーソルも消去されるため、次回のチェックでは現在一致している項目がすべて再インポートされます。これは元に戻せません。",
"resetWatchPreviewFailedRequired": "影響を受けるタスク数を読み込めませんでした。watchをリセットする前にプレビューを再試行してください。",
"resetWatchTitle": "{{label}}をリセットしますか?",
"resizeTableColumns": "表の列 {{left}} と {{right}} の幅を変更",
"results": "結果",
"retryPreview": "プレビューを再試行",
"reviewSubmoduleBoundary": "サブモジュール: {{scope}}",
"rowsPerPage": "1ページあたりの行数",
"runsFormatTypecheckTestAndLint": "モノレポ全体で format, typecheck, test, lint 実行。",
"runtimeDocker": "Docker",
"runtimeDockerDescription": "完全分離と再現性のためのコンテナ実行。",
"runtimeGitWorktree": "Git Worktree",
"runtimeGitWorktreeDescription": "worktree root 配下の分離ブランチ環境。並列作業向け。",
"runtimeLocal": "ローカル",
"runtimeLocalDescription": "エージェントを自分のマシンで直接実行。ローカルファイルシステムへフルアクセス。",
"runtimeSprites": "スプライト(Remote sprites.dev)",
"runtimeSpritesDescription": "任意コード向けのハードウェア分離実行環境。",
"save": "保存",
"scopeCommands": "コマンド",
"scopeContents": "内容",
"scopeFiles": "ファイル",
"scopeTasks": "タスク",
"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": "セカンダリインスタンスで実行できるシェルコマンド。加えて、ワークフロー中にエージェントへ実行させるスラッシュコマンド <2>skills</2>。",
"showAdvancedOptions": "詳細オプションを表示",
"showCode": "コードを表示",
"showDiagram": "図を表示",
"showingRange_one": "{{count}}件中{{from}}から{{to}}を表示",
"showingRange_other": "{{from}} から {{to}} まで、全 {{count}} 件の結果を表示中",
"showMoreActions": "さらにアクションを表示",
"showMoreBreadcrumbs": "さらにパンくずを表示",
"skip": "スキップ",
"stagesAndCommitsChangesUsingConventional": "Conventional Commits で変更をステージしてコミット。",
"status": "ステータス",
"statusWithConnectionIssue": "{{description}} ステータス",
"step": "ステップ",
"subtaskTitle": "サブタスクのタイトル",
"switchMode": "モードを切り替え",
"system": "システム",
"task": "タスク",
"terminal": "ターミナル",
"todos": "ToDo",
"taskLoading": "タスクを読み込み中...",
"taskRemovalInProgress": "このタスクから離脱中...",
"tasks": "タスク",
"taskStateBlocked": "ブロック中",
"taskStateCancelled": "キャンセル済み",
"taskStateCompleted": "完了",
"taskStateCreated": "作成済み",
"taskStateFailed": "失敗",
"taskStateInProgress": "進行中",
"taskStateNotStarted": "未開始",
"taskStateReview": "レビュー",
"taskStateScheduling": "スケジュール中",
"taskStateTodo": "対応待ち",
"taskStateWaitingForInput": "入力待ち",
"taskUnavailable": "タスク使用不可",
"taskUnavailableDescription": "このタスクを読み込めなかった。削除済みか、アクセス権がない可能性あり。",
"theAgentForksKandevToYourAccount": "エージェントが <1>{{repo}}</1> を GitHub アカウントに fork し、fork から PR を開く。あなたにクレジット付き",
"theBaseBranchTheAgentStarts": "エージェントの起点になるベースブランチ。",
"theFinalStepOpensAPullRequest": "このワークフローの最終ステップで pull request を開く。<1>{{binary}}</1> CLI の認証が必要。{{message}}",
"thisEmptyRepositoryWillRunWith": "この空リポジトリは、このマシンで “{{profile}}” で実行される。",
"thisGithubAccountCannotForkKdlbs": "この GitHub アカウントは kdlbs/kandev を fork できない。",
"thisPageCouldNotLoad": "このページを読み込めなかった。",
"thisWorkflowWillOnlyCreateA": "このワークフローは、リポジトリテンプレートから GitHub issue を作るだけ。エージェントは不足情報と公開承認を求める。変更の実装も pull request の作成もしない。",
"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}}</2>にプルリクエストを開き、メンテナーがレビューできるようにして、時間を節約しながら改善を全員に届けます。",
"workflow": "ワークフロー",
"workflowsControlTheStepsAutomationAnd": "ワークフローは、タスクの手順、自動化、エージェントの動作を制御します。設定からさらにワークフローを追加できます。",
"workspace": "ワークスペース",
"workspaceOrphaned": "ワークスペースが孤立しています",
"workspaces": "ワークスペース",
"you": "あなた",
"youCanUseTheNavigationOr": "ナビゲーションを使うか、再読み込みしてもう一度お試しください。",
"yourAgentImplementsItInThe": "あなたのエージェントが、テスト付きで kandev リポジトリに実装します",
"youVerifyAndTestTheChange": "あなたが別の kandev インスタンスで変更を確認し、テストします",
"demoAgentMessagesDescription": "エージェントメッセージの正規化を目視確認します。各カードには、レンダリングされた出力と生の JSON を並べて表示します。",
"demoAgentMessagesQa": "エージェントメッセージ QA",
"demoErrorLoading": "{{mode}} の読み込みエラー",
"demoEventFile": "イベントファイル:",
"demoEvents": "イベント",
"demoFailedToLoadFiles": "ファイルの読み込みに失敗しました",
"demoFailedToLoadFixtures": "フィクスチャの読み込みに失敗しました",
"demoFailedToLoadMessages": "メッセージの読み込みに失敗しました",
"demoFileOption_one": "{{protocol}} - {{agent}} ({{count}} メッセージ)",
"demoFileOption_other": "{{protocol}} - {{agent}} ({{count}} メッセージ)",
"demoFixtureFile": "フィクスチャファイル:",
"demoFixtures": "フィクスチャ",
"demoMessageData": "メッセージデータ",
"demoMessageTypes": "メッセージタイプのデモ",
"demoMessageTypesDescription": "スタイルとテスト用に全メッセージタイプを表示",
"demoNoFilesFound": "ファイルなし",
"demoNoFixtures": "フィクスチャなし。上のドロップダウンからフィクスチャファイルを選択。",
"demoNoNormalizedEvents": "正規化イベントファイルなし。KANDEV_DEBUG_AGENT_MESSAGES=1 でエージェントを実行してイベントログを生成。",
"demoNormalizedEvents": "正規化イベント",
"demoNormalizedPayload": "正規化ペイロード",
"demoRawInput": "生入力",
"demoRenderedOutput": "レンダリング結果:",
"demoShowingFixtures_one": "{{count}} / {{total}} フィクスチャを表示",
"demoShowingFixtures_other": "{{count}} / {{total}} フィクスチャを表示",
"demoShowingMessages_one": "{{count}} / {{total}} メッセージを表示",
"demoShowingMessages_other": "{{count}} / {{total}} メッセージを表示",
"demoTestFixtures": "テスト用フィクスチャ",
"demoToolType": "ツール種別:",
"weekdaySunday": "日曜日",
"weekdayMonday": "月曜日",
"weekdayTuesday": "火曜日",
"weekdayWednesday": "水曜日",
"weekdayThursday": "木曜日",
"weekdayFriday": "金曜日",
"weekdaySaturday": "土曜日",
"checking": "確認中",
"configured": "設定済み",
"connected": "接続済み",
"debug": "デバッグ",
"failedToLoadRoute": "ルートの読み込みに失敗",
"improveStepImprove": "エージェントがレポートを読み、コードベースを調べ、TDDで変更を実装。make fmt, typecheck, test, lint を実行し、その後コミット。",
"improveStepOpenIssue": "エージェントがリポジトリのテンプレートから必要な全項目を集め、公開ドラフトを確認後、GitHub issue を公開。",
"improveStepPr": "エージェントが pr スキルを実行. ブランチを push して kdlbs/kandev に pull request を開き、メンテナがレビュー。",
"improveStepTest": "エージェントが make dev で第2の kandev インスタンスを起動し、確認項目を案内。実行中アプリで変更が動くか確認。",
"noOptionFound": "オプションなし。",
"searchPlaceholder": "検索...",
"selectOption": "オプションを選択...",
"terminalNumbered": "ターミナル {{seq}}",
"preciseDated": "{{date}}、{{time}}",
"preciseToday": "今日、{{time}}",
"preciseYesterday": "昨日、{{time}}",
"relativeDaysAgo_one": "{{count}}日前",
"relativeDaysAgo_other": "{{count}}日前",
"relativeHoursAgo_one": "{{count}}時間前",
"relativeHoursAgo_other": "{{count}}時間前",
"relativeMinutesAgo_one": "{{count}}分前",
"relativeMinutesAgo_other": "{{count}}分前",
"relativeSecondsAgo_one": "{{count}}秒前",
"relativeSecondsAgo_other": "{{count}}秒前",
"relativeYesterday": "昨日",
"sidebarSeconds_one": "{{count}}秒",
"sidebarSeconds_other": "{{count}}秒",
"sidebarMinutes_one": "{{count}}分",
"sidebarMinutes_other": "{{count}}分",
"sidebarHours_one": "{{count}}時間",
"sidebarHours_other": "{{count}}時間",
"sidebarDays_one": "{{count}}日",
"sidebarDays_other": "{{count}}日",
"sidebarWeeks_one": "{{count}}週間",
"sidebarWeeks_other": "{{count}}週間",
"sidebarYears_one": "{{count}}年",
"sidebarYears_other": "{{count}}年",
"sidebarYearsMax": "99年以上",
"integrationSettings": "統合設定",
"pageNavigation": "このページ",
"viewOptions": "表示オプション"
}
+21
View File
@@ -0,0 +1,21 @@
{
"agentProfileHeading": "設定エージェントプロファイル",
"agentProfileHelp": "設定ツールにアクセスできるエージェントを選ぶ。これがワークスペースのデフォルトになる。",
"closePanel": "設定チャットを閉じる",
"dialogDescription": "エージェントにワークフロー、エージェントプロファイル、MCP設定の管理を頼む。",
"noAgentProfiles": "使えるエージェントプロファイルなし。先にAgent settingsで作成。",
"openInQuickChat": "Quick Chatで開く",
"profileUnavailable": "選択したエージェントプロファイル、まだ使えない。少し待って再試行。",
"promptHeading": "何を設定したい?",
"promptPlaceholder": "設定について何でも聞いて...",
"startChat": "チャット開始",
"startChatAria": "設定チャットを開始",
"startingChat": "チャット開始中...",
"suggestionAddReviewStep": "ワークフローに「Code Review」ステップ追加",
"suggestionCreateProfile": "自動承認有効で新しいエージェントプロファイル作成",
"suggestionShowWorkflow": "現在のワークフロー設定を表示",
"suggestionUpdateMcp": "デフォルトのエージェントプロファイルのMCPサーバー更新",
"tagline": "自然言語でKandevを設定",
"tryAsking": "聞いてみる",
"unknownError": "不明なエラー"
}
+56
View File
@@ -0,0 +1,56 @@
{
"add": "追加",
"addAComment": "コメントを追加...",
"addComment": "コメントを追加",
"closeWalkthrough": "ウォークスルーを閉じる",
"collapseUnchangedLines": "変更のない行を折りたたむ",
"copyDiff": "差分をコピー",
"deleteComment": "コメントを削除",
"dismiss": "閉じる",
"editComment": "コメントを編集",
"enterToAdd": "追加するには{{modKey}}+Enter",
"enterToAddShiftEnterToRun": "追加するには{{modKey}}+Enter、実行するには{{modKey}}+Shift+Enter",
"expandAllLines": "すべての行を展開",
"failedToSendWalkthroughNote": "ウォークスルーのメモを送信できませんでした",
"lineLabel": "{{line}}行目",
"lineRangeLabel": "{{start}}行目から{{end}}行目",
"new": "新規",
"next": "次へ",
"noActiveSessionForWalkthroughNote": "ウォークスルーのメモに対するアクティブなセッションがありません",
"noDiffAvailable": "差分がありません",
"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": "このレビューの後に差分が変更され、この指摘が示すコードはもはや含まれていません。",
"theDiffChangedAfterThisReviewRelocated": "このレビュー後に diff が変わった。指摘は、説明するコードへ付け直した。",
"toggleWordWrap": "折り返し切り替え",
"unableToRenderDiffForThis": "このファイルの diff を表示できない。キャッシュ済み diff が作業ツリーとずれてる可能性あり。更新して再試行。",
"undo": "元に戻す",
"update": "更新",
"walkthrough": "ウォークスルー",
"walkthroughNoteAdded": "ウォークスルー ノート追加",
"walkthroughNoteQueued": "ウォークスルー ノートをキューに追加",
"walkthroughNoteSent": "ウォークスルー ノート送信済み",
"fileStatusAdded": "追加済み",
"fileStatusDeleted": "削除済み",
"fileStatusModified": "変更済み",
"fileStatusMoved": "移動済み",
"fileStatusMovedFrom": "{{oldPath}} から移動",
"fileStatusUntracked": "追跡外"
}
+98
View File
@@ -0,0 +1,98 @@
{
"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": "差分をコピー",
"copyLine": "{{lineNumber}}行目をコピー",
"copyPath": "パスをコピー",
"default": "デフォルト",
"deleteFailed": "削除に失敗しました",
"deleteFile": "ファイルを削除",
"disableWordWrap": "折り返しを無効にする",
"enableWordWrap": "折り返しを有効にする",
"errorWhileDeletingFile": "ファイルの削除中にエラーが発生しました",
"errorWhileSavingFile": "ファイルの保存中にエラーが発生しました",
"failedToDeleteFile": "ファイルの削除に失敗しました",
"failedToSaveFile": "ファイルの保存に失敗しました",
"failedToSendComment": "コメントの送信に失敗しました",
"fileSavedOverwritten": "ファイルを保存しました (上書き済み)",
"fileSavedOverwrittenDescription": "ファイルは外部で変更されました。あなたのバージョンを保存しました。",
"foldUnchangedLines": "変更のない行を折りたたむ",
"hideDiffIndicators": "差分インジケーターを非表示にする",
"highlight": "ハイライト",
"inlineCode": "インラインコード",
"insertBlock": "ブロックを挿入",
"italicCmdI": "斜体 (Cmd+I)",
"link": "リンク",
"loadingDiff": "差分を読み込んでいます...",
"loadingEditor": "エディターを読み込んでいます...",
"noDiffAvailable": "差分なし",
"noEditorsConfigured": "エディタ未設定",
"openFolder": "フォルダを開く",
"openTaskSessionBeforeSending": "送信前にタスクセッションを開く。",
"openWith": "で開く...",
"pasteLink": "リンクを貼り付け...",
"planFormattingToolbar": "計画整形ツールバー",
"pleaseTryAgain": "もう一度試す。",
"previewHtml": "HTMLをプレビュー",
"previewMarkdown": "Markdownをプレビュー",
"queuedForTheAgent": "エージェント待ち。",
"reload": "再読み込み",
"revertAllChanges": "変更をすべて元に戻す",
"revertChanges": "変更を元に戻す",
"saveFailed": "保存失敗",
"saving": "保存中...",
"sentToTheAgent": "エージェントに送信済み。",
"showAllLines": "全行を表示",
"showDiffIndicators": "差分インジケーターを表示",
"slashBlockquote": "引用",
"slashBlockquoteDescription": "引用文",
"slashBulletList": "箇条書き",
"slashBulletListDescription": "順序なしリスト",
"slashCategoryBlocks": "ブロック",
"slashCategoryLists": "リスト",
"slashCategoryText": "テキスト",
"slashCodeBlock": "コードブロック",
"slashCodeBlockDescription": "フェンス付きコード",
"slashDivider": "区切り線",
"slashDividerDescription": "水平線",
"slashHeading1": "見出し1",
"slashHeading1Description": "大見出し",
"slashHeading2": "見出し2",
"slashHeading2Description": "中見出し",
"slashHeading3": "見出し3",
"slashHeading3Description": "小見出し",
"slashNumberedList": "番号付きリスト",
"slashNumberedListDescription": "順序付きリスト",
"slashTable": "表",
"slashTableDescription": "3x3表",
"slashTaskList": "タスクリスト",
"slashTaskListDescription": "チェックリスト項目",
"startTyping": "入力を開始...",
"strikethroughCmdShiftX": "取り消し線 (Cmd+Shift+X)",
"switchToSplitView": "分割表示に切り替え",
"switchToUnifiedView": "統合表示に切り替え",
"toggleCode": "コードの切り替え",
"toggleWordWrap": "折り返しの切り替え",
"underlineCmdU": "下線 (Cmd+U)",
"failedToOpenEditor": "エディタを開けませんでした",
"downloadFile": "ファイルをダウンロード",
"symlink": "シンボリックリンク",
"failedToOpenFolder": "フォルダを開けませんでした",
"openFolderOnHost": "Kandevが動作しているマシンでフォルダを開く",
"chooseFolder": "フォルダを選択",
"openingFolder": "フォルダを開いています..."
}
+432
View File
@@ -0,0 +1,432 @@
{
"action": "アクション",
"add": "追加",
"addASpritesApiKeyBeforeCreating": "プロファイルを作成する前に Sprites の API キーを追加してください。",
"addDockerfileContentBeforeCreating": "プロファイルを作成する前に Dockerfile の内容を追加してください。",
"addRule": "ルールを追加",
"advanced": "詳細設定",
"agent": "エージェント",
"allow": "許可",
"allowlistGithubPlaywright": "GitHub + Playwright を許可リストに追加",
"apiKey": "API キー",
"areYouSureThisActionCannot": "本当に実行しますか? この操作は元に戻せません。",
"areYouSureYouWantTo": "本当にこのプロファイルを削除しますか? この操作は元に戻せません。",
"authFilesNotFoundOnThisMachine": "{{files}}; このマシンではファイルが見つかりませんでした",
"backToExecutor": "Executor に戻る",
"backToExecutors": "Executors に戻る",
"buildFailedWithMessage": "ビルドに失敗しました: {{message}}",
"buildFailedWithStatus": "ビルドに失敗しました ({{status}}): {{text}}",
"buildImage": "イメージをビルド",
"buildImageAdminOnly": "イメージをビルドできるのは管理者のみです。",
"buildThisDockerImageBeforeCreating": "プロファイルを作成する前に、この Docker イメージをビルドしてください。",
"building": "ビルド中...",
"checking": "確認中...",
"chooseAnExecutorTypeToRun": "インフラ上で環境を実行するための Executor 種別を選択してください。",
"cleanupScript": "クリーンアップスクリプト",
"configureAuthenticationForToolsAndAgents": "リモート環境でツールとエージェントの認証を設定します。",
"configured": "設定済み",
"confirmDelete": "削除の確認",
"connected": "接続済み",
"connectedActiveSprites_one": "接続済み。アクティブな sprite は {{count}} 件です。",
"connectedActiveSprites_other": "接続済み。アクティブな sprites は {{count}} 件です。",
"connection": "接続",
"connectionSettings": "接続設定",
"connectionTestFailed": "接続テストに失敗しました",
"connectionTestPassed": "接続テストに成功しました",
"connectsToARemoteDockerHost": "リモートの Docker ホストに接続します。リポジトリはコンテナ内にクローンされます。",
"copyAuthFiles": "認証ファイルをコピー",
"createANewProfileForThis": "この executor 用の新しいプロフィールを作成します。プロフィールページでスクリプトと環境変数を設定できます。",
"createExecutor": "Executor を作成",
"createNewProfile": "新しいプロフィールを作成",
"createNewSecret": "新しいシークレットを作成...",
"createProfile": "プロフィールを作成",
"creating": "作成中...",
"creatingProfile": "プロフィールを作成中...",
"defaultNoTls": "デフォルト (TLS なし)",
"defineNetworkAccessRulesAppliedWhen": "このプロフィール用に sprite が作成されるときに適用されるネットワークアクセスルールを定義します。",
"defineTheDockerImageBuildAnd": "Docker イメージを定義します。ここでビルドしてテストできます。",
"delete": "削除",
"deleteExecutor": "Executor を削除",
"deleteProfile": "プロフィールを削除",
"deleteProfileConfirm": "\"{{name}}\" を削除してもよろしいですか?この操作は元に戻せません。",
"deleting": "削除中...",
"deny": "拒否",
"descriptionCustom": "カスタム executor です。",
"descriptionKubernetes": "管理者が設定した Kubernetes Pod でエージェントを実行します。",
"descriptionLocalDocker": "このマシンで Docker コンテナを実行します。",
"descriptionLocalPc": "リポジトリフォルダ内でエージェントを直接実行します。",
"descriptionRemoteDocker": "リモートの Docker ホストに接続します。",
"descriptionSprites": "Sprites.dev のクラウドサンドボックスでエージェントを実行します。",
"descriptionSsh": "信頼された Linux amd64 または macOS ホスト上で、SSH 経由でエージェントを実行します。",
"descriptionSshCreate": "SSH 経由でリモートホストに接続し、そこで agentctl を実行します。",
"descriptionWorktree": "分離されたエージェントセッションのために git worktree を作成します。",
"differentConfigurationsForThisExecutorEach": "この executor には異なる設定があります。各プロフィールには、独自の準備スクリプト、環境変数、設定を持たせることができます。",
"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": "Executor 名",
"executorNotFound": "Executor 見つからない",
"executorType": "Executor 種類",
"failed": "失敗",
"failedToConnectToBackend": "バックエンド接続失敗",
"failedToCreateProfile": "プロファイル作成失敗",
"failedToCreateSecret": "シークレット作成失敗",
"failedToLoadExecutor": "Executor 読み込み失敗",
"missingSecretReference": "シークレット参照なし",
"failedToSaveProfile": "プロファイル保存失敗",
"filesSelected": "選択ファイル",
"gitIdentity": "Git 識別情報",
"gitIdentityAutoDetect": "自動検出",
"gitIdentityCustom": "カスタム",
"gitTokenOptional": "Git トークン(任意)",
"gitUserEmail": "Git ユーザーのメール",
"gitUserName": "Git ユーザー名",
"goToExecutors": "Executors へ移動",
"host": "ホスト",
"hubDescription": "Executor プロファイルは、エージェントがどこでどう動くか定義する。各プロファイルは、スクリプト、環境変数、MCP ポリシーを含む実行環境を設定する。",
"hubDescriptionKubernetes": "管理者設定の Kubernetes Pod でエージェントを動かす。",
"hubDescriptionDocker": "このマシンで Docker コンテナを動かす。",
"hubDescriptionLocal": "リポジトリフォルダ内で直接エージェントを動かす。",
"hubDescriptionSprites": "Sprites.dev クラウドサンドボックスでエージェントを動かす。",
"hubDescriptionSsh": "SSH でリモートホストへ接続し、そこで agentctl を動かす。",
"hubDescriptionWorktree": "分離されたエージェントセッション用の git worktree を作成します。",
"image": "画像",
"imageTag": "画像タグ",
"include": "含める",
"injectedIntoTheExecutionEnvironmentUse": "実行環境に注入済み。トークンと API キーは Secret モードを使う。リテラル値は profile JSON に保存されます。",
"injectedIntoTheExecutionEnvironmentVariables": "実行環境に注入済み。変数は機密値用に secrets を参照できます。",
"invalidJson": "無効な JSON",
"janeDeveloper": "Jane Developer",
"key": "キー",
"loading": "読み込み中...",
"loadingEditor": "エディタ読み込み中...",
"loadingExecutor": "Executor 読み込み中...",
"localDocker": "ローカル Docker",
"localDockerExecutor": "ローカル Docker Executor",
"localGitIdentityNotDetected": "このマシンでローカル git の user.name/user.email が見つかりません",
"mcpPolicy": "MCP ポリシー",
"mcpPolicyJson": "MCP ポリシー JSON",
"mcpPolicyMustBeAJsonObject": "MCP ポリシーは JSON オブジェクトである必要があります",
"mcpPolicyOverridesForExecutor": "この executor の MCP サーバー用 JSON ポリシー上書き。",
"mcpPolicyOverridesForProfile": "この profile の MCP サーバー用 JSON ポリシー上書き。",
"mode": "モード",
"name": "名前",
"networkPolicies": "ネットワークポリシー",
"newProfile": "新しい Profile",
"newSshExecutor": "新しい SSH Executor",
"newTypeProfile": "新しい {{type}} Profile",
"noDockerContainers": "Docker コンテナなし。",
"noEnvironmentVariablesConfigured": "環境変数未設定。",
"noEnvironmentVariablesConfiguredAddOne": "環境変数未設定。下に1つ追加。",
"noNetworkPolicyRulesConfigured": "ネットワークポリシールール未設定。",
"noProfilesConfigured": "Profile 未設定。",
"noResponseBody": "応答本文なし",
"noTransferableCredentialsFound": "転送可能な認証情報なし。",
"none": "なし",
"notAnSshExecutor": "Executor {{id}} は SSH executor ではありません",
"notConfigured": "未設定",
"onlyHttpSse": "HTTP/SSE のみ",
"onlyStdio": "stdio のみ",
"optionalAuthorIdentityAppliedInRemote": "任意の author identity はリモート executor 環境に適用されます。",
"optionalPattern": "任意のパターン",
"overrideIdentity": "ID 上書き",
"pasteYourSecretValue": "シークレット値を貼り付け...",
"pathToTlsCertificatesForThe": "Docker ホスト用 TLS 証明書へのパス。",
"personalAccessTokenForCloningRepositories": "コンテナー内でリポジトリをクローンするための個人アクセストークン。未設定ならホスト環境から自動検出。",
"port": "ポート",
"prepareScript": "準備スクリプト",
"prepareScriptBadge": "準備スクリプト",
"prepareScriptDescriptionLocal": "エージェント開始前にホストマシン上で実行。",
"prepareScriptDescriptionRemote": "エージェント開始前に実行環境内で実行。利用可能なプレースホルダーを見るには {{trigger}} と入力。",
"profileDetails": "プロフィール詳細",
"profileForExecutor": "{{name}} 用プロフィール",
"profileNameIsRequired": "プロフィール名は必須。",
"profileNotFound": "プロフィール見つからず",
"profileSaved": "プロフィール保存済み",
"profiles": "プロフィール",
"portableConfigAvailable": "利用可",
"portableConfigBundleClaudeSettings": "Claude 設定をコピー",
"portableConfigBundleCodexConfig": "Codex 設定をコピー",
"portableConfigBundleGeneric": "エージェント設定 ({{id}})",
"portableConfigBundleMockSettings": "mock-agent 設定をコピー",
"portableConfigBundleOpenCodeConfig": "OpenCode 設定をコピー",
"portableConfigFileMapping": "{{source}} から {{target}} へ",
"portableConfigInfoCopyTiming": "Kandev は、選択したファイルを変更せずにコピーするのは、新規プロビジョニング時か環境リセット時だけ。新しいコピーで既存の対象ファイルを置き換えることあり。ウォーム再開では既存環境をそのまま使う。",
"portableConfigInfoErrors": "不足または読めない任意ファイルは警告付きでスキップ、起動は止めない。ファイルにはシークレットや環境値を含められる。",
"portableConfigInfoLabel": "ポータブルなエージェント設定の詳細",
"portableConfigInfoScope": "コピーするのは許可リスト済みファイルだけ。ファイルでフックやコマンド追加、モデル・権限・MCP サーバー・エンドポイント変更も可能。エグゼキューターで使えないホストパスを含むこともあり。認証ファイルと設定バンドルは別選択。",
"portableConfigInfoSsh": "SSH では、対象は設定済みリモートユーザーの共有ホーム。ほかのプロセスがそのホストで使う設定を上書きする可能性あり。",
"portableConfigInfoTitle": "ポータブルなエージェント設定",
"portableConfigNotFound": "見つからず",
"portableConfigNotFoundHint": "これは編集ヒント。プロフィール保存して、あとでファイル追加できる。",
"portableConfigTitle": "エージェント設定",
"provideSecret": "シークレットを提供",
"provideSecretForEnvVar": "{{envVar}} 用シークレットを提供",
"quickPresets": "クイックプリセット",
"refresh": "更新",
"relatedDockerContainersRemoved_one": "関連 Docker コンテナー {{count}} 個も削除される。",
"relatedDockerContainersRemoved_other": "関連 Docker コンテナー {{count}} 個も削除される。",
"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 トークンを含むシークレットを選択してください。",
"session": "セッション",
"setACustomNameAndEmail": "リモート git コミット用にカスタムの名前とメールアドレスを設定します。",
"setEnvVarViaStoredSecret": "保存済みシークレットを使用して <1>{{envVar}}</1> を設定",
"spritesApiKeyIsRequired": "Sprites API キーが必要です。",
"spritesTokenIsRequired": "Sprites トークンが必要です。",
"kubernetesAccessModeRequired": "管理対象クレームに少なくとも 1 つのアクセスモードを選択してください。",
"kubernetesAccessModeInvalid": "保存された設定にサポートされていないアクセスモードが含まれています。サポートされているモードを選択してください。",
"kubernetesAccessModes": "アクセスモード",
"kubernetesAccessModesHelp": "各管理対象クレームに要求するアクセスモードを選択してください。",
"kubernetesActiveSessions": "アクティブなセッション",
"kubernetesActiveSessionsDescription": "この実行環境を使用しているセッションの、サニタイズされた Pod とワークスペースのステータスです。90 秒ごとに更新されます。",
"kubernetesActiveSessionsGuidance": "停止すると Kubernetes リソースは保持されます。アーカイブまたは削除では管理対象ワークスペースを削除できます。既存のクレームは Kandev によって削除されません。リクエストには実際の使用量ではなく、設定済みのメインコンテナの CPU とメモリが表示されます。",
"kubernetesAdminSaveOnly": "Kubernetes 設定を保存できるのは管理者のみです。",
"kubernetesAdminTestOnly": "この Kubernetes テストを実行できるのは管理者のみです。",
"kubernetesAuthInCluster": "クラスタ内サービスアカウント",
"kubernetesAuthKubeconfig": "Kubeconfig ファイル",
"kubernetesAuthMode": "認証",
"kubernetesClaimName": "既存のクレーム名",
"kubernetesClaimNameHelp": "クレームは実行環境の namespace にすでに存在している必要があります。Kandev はそれを削除しません。",
"kubernetesClaimNameRequired": "既存のクレーム名が必要です。",
"kubernetesConnectionDescription": "Kandev がクラスタに接続する方法を選択し、各セッションを 1 つの namespace に固定します。",
"kubernetesConnectionTitle": "クラスタ接続",
"kubernetesConfirmConnectionSessions_one": "この実行環境には {{count}} 件のアクティブなセッションがあります。保存済みの認証情報、context、タイムアウトは再接続時に適用されます。記録済みの namespace とワークロードのスナップショットは保持され、新しい namespace は新しいセッションにのみ適用されます。続行しますか?",
"kubernetesConfirmConnectionSessions_other": "この実行環境には {{count}} 件のアクティブなセッションがあります。保存済みの認証情報、context、タイムアウトは再接続時に適用されます。記録済みの namespace とワークロードのスナップショットは保持され、新しい namespace は新しいセッションにのみ適用されます。続行しますか?",
"kubernetesConfirmCombinedSessions_one": "この実行環境には {{count}} 件のアクティブなセッションがあります。保存済みの接続設定は再接続時に適用され、記録済みのワークロードスナップショットは変更されません。新しいセッションには両方の変更が適用されます。続行しますか?",
"kubernetesConfirmCombinedSessions_other": "この実行ツールにはアクティブなセッションが {{count}} 件あります。保存された接続設定は再接続時に適用され、記録済みのワークロードスナップショットは変更されません。新しいセッションには両方の変更が適用されます。続行しますか?",
"kubernetesConfirmWorkloadSessions_one": "この実行ツールにはアクティブなセッションが {{count}} 件あります。新しいセッションにはこの変更が適用されます。置き換えられた Pod を含む既存のセッションは、記録済みのワークロードスナップショットを保持します。続行しますか?",
"kubernetesConfirmWorkloadSessions_other": "この実行ツールにはアクティブなセッションが {{count}} 件あります。新しいセッションにはこの変更が適用されます。置き換えられた Pod を含む既存のセッションは、記録済みのワークロードスナップショットを保持します。続行しますか?",
"kubernetesContext": "Kubeconfig コンテキスト",
"kubernetesContextHelp": "省略可能です。空欄のままにすると kubeconfig の現在のコンテキストを使用します。",
"kubernetesCreateDescription": "名前空間付きの Kubernetes 実行ツールと、その最初のワークロードプロファイルを作成します。",
"kubernetesCreateFailed": "Kubernetes 実行ツールの作成に失敗しました。",
"kubernetesCreateRollbackRejected": "サーバーが削除に失敗した結果を返したため、新しい実行ツールがまだ存在する可能性があります。",
"kubernetesCreateRollbackFailed": "プロファイルの作成に失敗しました: {{profileError}}。新しい実行ツールの削除にも失敗しました: {{rollbackError}}",
"kubernetesCreateRollbackUnknown": "エラー詳細なしでクリーンアップに失敗したため、新しい実行ツールがまだ存在する可能性があります。",
"kubernetesCreateTitle": "新しい Kubernetes プロファイル",
"kubernetesCreated": "作成済み",
"kubernetesCreatedValue": "作成日時: {{value}}",
"kubernetesDeleteExecutorDescription": "この実行ツールとすべてのプロファイルを削除します。これは元に戻せません。また、アクティブなセッションがある実行ツールは削除できません。",
"kubernetesDiagnosticsDescription": "設定、検出、名前空間アクセス、RBAC、アドミッション、ストレージ、ストリーミングを因果順に確認します。",
"kubernetesDiagnosticsTitle": "接続と権限のテスト",
"kubernetesDurationMs": "{{duration}} ミリ秒",
"kubernetesEmptyDirWarning": "Empty directory ストレージは、Pod が置き換えられるか削除されると失われます。",
"kubernetesExecutorActionFailed": "Kubernetes 実行ツールの操作に失敗しました。",
"kubernetesExecutorName": "実行ツール名",
"kubernetesExecutorNameHelp": "このクラスタと名前空間を識別しやすい名前です。",
"kubernetesExecutorNameRequired": "実行ツール名は必須です。",
"kubernetesExecutorPageDescription": "クラスタアクセスの編集、権限のテスト、アクティブなセッションの確認を行います。既存のセッションは保存済みの認証情報、コンテキスト、タイムアウトを使用しますが、記録済みの名前空間とワークロードスナップショットは保持されます。",
"kubernetesInClusterAuthHelp": "Kandev バックエンド Pod にマウントされたサービスアカウントを使用します。",
"kubernetesKubeconfigAuthHelp": "Kandev バックエンドホストにすでにマウントされている kubeconfig ファイルを読み取ります。",
"kubernetesKubeconfigPath": "Kubeconfig パス",
"kubernetesKubeconfigPathHelp": "Kandev バックエンドホスト上の絶対パスです。kubeconfig の内容はここに保存されません。",
"kubernetesKubeconfigPathRequired": "絶対パスの kubeconfig が必要です。",
"kubernetesMainContainer": "メインコンテナ",
"kubernetesContainerCompactValue": "コンテナ: {{value}}",
"kubernetesMainContainerHelp": "Kandev の bootstrap を受け取り、agentctl を実行するコンテナです。",
"kubernetesMainContainerRequired": "メインコンテナ名は必須です。",
"kubernetesMainContainerInvalid": "メインコンテナは有効な DNS ラベルである必要があります。",
"kubernetesNamespace": "固定名前空間",
"kubernetesNamespaceHelp": "この実行ツールのすべての Pod と管理対象 claim はこの名前空間に保持されます。",
"kubernetesNamespaceRequired": "名前空間は必須です。",
"kubernetesNoActiveSessions": "アクティブな Kubernetes セッションはありません。",
"kubernetesMainContainerRequests": "メインコンテナの要求",
"kubernetesOpenTask": "タスク {{task}} を開く, セッション {{session}}",
"kubernetesPlatform": "プラットフォーム",
"kubernetesPlatformHelp": "すべての Pod に一致する Kubernetes アーキテクチャのセレクターを追加します。",
"kubernetesPod": "Pod",
"kubernetesPodCompactValue": "Pod: {{value}}",
"kubernetesPodTemplate": "生の PodTemplate YAML",
"kubernetesPodTemplateHelp": "v1 PodTemplate ドキュメントは 1 つのみ、256 KiB まで指定できます。不明なフィールドや競合するフィールドは拒否されます。スターターは {{image}} を使用し、基本ツールとエージェント依存関係が含まれています。本番環境ではリリースタグまたはダイジェストを固定してください。",
"kubernetesPodTemplateRequired": "PodTemplate YAML は必須です。",
"kubernetesPodTemplateTooLarge": "PodTemplate YAML は 256 KiB 以下である必要があります。",
"kubernetesPodTemplateWarning": "新しいセッションではプロファイル設定のスナップショットが保存されます。既存のセッションと置き換えられた Pod は、記録済みのスナップショットを保持します。Kandev はオペレーターのフィールドを保持しますが、予約済みのコマンド、マウント、環境キー、ラベル、namespace、プラットフォームの競合は拒否します。",
"kubernetesProfileDiagnosticsDescription": "保存前のクラスタ、PodTemplate、ワークスペース設定を、ワークロードを保持せずにテストします。",
"kubernetesReadOnlyDescription": "Kubernetes プロファイルとセッションの状態を表示して使用できます。作成、変更、削除、テストは管理者のみが行えます。",
"kubernetesReadOnlyTitle": "Kubernetes 設定は読み取り専用です",
"kubernetesRequestTimeout": "要求タイムアウト (秒)",
"kubernetesRequestTimeoutHelp": "Kubernetes API 要求のタイムアウト。1 から 300 秒です。",
"kubernetesRestarts_one": "再起動: {{count}}",
"kubernetesRestarts_other": "再起動: {{count}}",
"kubernetesRequestCpu": "{{value}} 個の CPU",
"kubernetesRequestMemory": "{{value}} メモリ",
"kubernetesRequests": "要求",
"kubernetesRequestsUnspecified": "メインコンテナーの要求: 未指定",
"kubernetesRequestsUnspecifiedValue": "未指定",
"kubernetesRetentionActive": "アクティブ",
"kubernetesRetentionMissing": "なし",
"kubernetesRetentionRetained": "保持",
"kubernetesRetentionStateValue": "リソース保持: {{value}}",
"kubernetesRetentionTerminal": "終了",
"kubernetesRetentionTerminating": "終了処理中",
"kubernetesRetentionUnknown": "不明",
"kubernetesSessionsFailed": "Kubernetes セッションの読み込みに失敗しました。",
"kubernetesSessionCancelled": "キャンセル済み",
"kubernetesSessionCompleted": "完了",
"kubernetesSessionCreated": "作成済み",
"kubernetesSessionFailed": "失敗",
"kubernetesSessionIdle": "アイドル",
"kubernetesHideSessionDetails": "セッションの詳細を非表示",
"kubernetesSessionRunning": "実行中",
"kubernetesShowSessionDetails": "セッションの詳細を表示",
"kubernetesSessionStarting": "開始中",
"kubernetesSessionStateValue": "セッションの状態: {{value}}",
"kubernetesSessionWaitingForInput": "入力待ち",
"kubernetesStatusFailed": "失敗",
"kubernetesStatusPending": "保留中",
"kubernetesStatusRunning": "実行中",
"kubernetesStatusSucceeded": "成功",
"kubernetesStatusTerminated": "終了",
"kubernetesStatusUnknown": "不明",
"kubernetesStatusWaiting": "待機中",
"kubernetesPodStateValue": "Pod状態: {{value}}",
"kubernetesContainerStateValue": "メインコンテナ状態: {{value}}",
"kubernetesStepConfiguration": "設定",
"kubernetesStepDiscovery": "API検出",
"kubernetesStepExistingClaim": "既存のクレーム",
"kubernetesStepNamespace": "名前空間アクセス",
"kubernetesStepPodAdmission": "Podアドミッション",
"kubernetesStepPvcAdmission": "PVCアドミッション",
"kubernetesStepRbac": "必要な権限",
"kubernetesStepStreaming": "Exec と port-forward のストリーミング",
"kubernetesStorageClass": "ストレージクラス",
"kubernetesStorageClassHelp": "任意。空のままならクラスタ既定を使う。",
"kubernetesTest": "Kubernetesをテスト",
"kubernetesTestFailed": "テスト失敗",
"kubernetesTestPassed": "テスト成功",
"kubernetesTestRequestFailed": "Kubernetesテスト要求が失敗した。",
"kubernetesTesting": "テスト中...",
"kubernetesTimeoutInvalid": "要求タイムアウトは1から300までの整数である必要がある。",
"kubernetesWarnings": "警告",
"kubernetesWorkloadDescription": "Kandevが起動、ID、workspaceフィールドを厳密に管理しつつ、Pod形状を定義する。",
"kubernetesWorkloadTitle": "ワークロードテンプレート",
"kubernetesWorkspace": "ワークスペース",
"kubernetesWorkspaceDescription": "使い捨てPodストレージ、Kandev管理クレーム、既存クレームから選ぶ。",
"kubernetesWorkspaceEmptyDir": "空ディレクトリ",
"kubernetesWorkspaceExistingClaim": "既存のクレーム",
"kubernetesWorkspaceManagedPvc": "管理された永続クレーム",
"kubernetesWorkspaceMode": "ワークスペースストレージ",
"kubernetesWorkspaceModeHelp": "ワークスペースの寿命と、適用するストレージ項目を制御する。",
"kubernetesWorkspaceSize": "クレームサイズ",
"kubernetesWorkspaceSizeHelp": "10Giのような、正のKubernetesストレージ量。",
"kubernetesWorkspaceSizeRequired": "管理クレームのサイズが必要。",
"kubernetesWorkspaceTitle": "ワークスペースストレージ",
"kubernetesWorkspaceValue": "ワークスペース: {{value}}",
"kubernetesWrongExecutorType": "このexecutorはKubernetes executorではない。",
"sshActiveSessions": "アクティブなセッション",
"sshActiveSessionsDescription": "このSSHホストで現在実行中のセッション。90秒ごとに更新。",
"sshAvailableAgents": "このホストで利用可能なエージェント",
"sshAvailableAgentsDescription": "選択したログインシェル下で、有効な各エージェントについてリモートの{{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": "シェル保存失敗",
"sshFingerprintChanged": "警告: このフィンガープリントは現在固定中のもの (<1>{{fingerprint}}</1>) と違う。信頼すると固定済みキーを上書き。予期しないホスト再キー化なら、ここで止める。",
"sshFingerprintObserved": "検出したホストフィンガープリント:",
"sshHostAliasHint": "設定ありなら、config から HostName / Port / User / IdentityAgent / IdentityFile / ProxyJump を継承。",
"sshHostAliasLabel": "{{path}} からのホスト別名 (任意)",
"sshIdentityFileHint": "パスフレーズ保護キーは先に ssh-agent に読み込み必要。",
"sshIdentityFilePath": "Identity file パス",
"sshIdentitySource": "識別元",
"sshIdentitySourceAgent": "{{program}} ({{envVar}})",
"sshIdentitySourceFile": "Identity file (秘密鍵パス)",
"sshInstallHint": "インストールヒント",
"sshInstallHintCopied": "インストールヒントをコピー済み",
"sshInstalled": "インストール済み",
"sshLocalForward": "ローカル転送",
"sshLoginShell": "ログインシェル",
"sshMissing": "見つからない",
"sshNamePlaceholder": "マイVPS",
"sshNoActiveSessions": "アクティブなセッションなし。",
"sshNoEnabledAgents": "検出する有効なエージェントなし。",
"sshNoHintAvailable": "利用可能なヒントなし",
"sshPinnedFingerprint": "固定済みフィンガープリント:",
"sshProbeAgents": "エージェント検出",
"sshProbeError": "検出エラー",
"sshProbeHint": "「{{button}}」をクリックして、リモートにインストールされているエージェントを確認します。",
"sshProxyJumpHint": "単一の踏み台ホップのみ対応しています。連続したジャンプはサポートされていません。",
"sshProxyJumpLabel": "ProxyJump(任意)",
"sshReclaimTaskDirDescription": "{{host}}で実行される各タスクは、終了後もチェックアウトを{{path}}に保持します。そのため、再開したタスクやアーカイブ解除したタスクは、作業を中断した場所から再開できます。",
"sshReclaimTaskDirLabel": "タスクがアーカイブまたは削除されたときに、そのタスクのディレクトリを削除する",
"sshReclaimTaskDirTitle": "リモートのタスクディレクトリ",
"sshReclaimTaskDirWarning": "削除は永続的で、Kandevが所有していないマシンである{{host}}上で行われます。未コミットの変更、未プッシュのコミット、またはスタッシュを含む場合、あるいは別のタスクと共有されている場合は、ディレクトリは常に保持されます。タスクのアーカイブ解除を行うと、リポジトリが再度クローンされます。",
"sshRemotePort": "リモートポート",
"sshReprobe": "再確認",
"sshShellNotDetected": "(検出されませんでした)",
"sshTestAndTrustToSave": "接続をテストし、そのフィンガープリントを信頼して保存してください。",
"sshTestConnection": "接続をテスト",
"sshTestResultStale": "このテストの実行後に接続フィールドを変更しました。信頼して保存する前に、もう一度「接続をテスト」を実行してください。",
"sshTrustThisHost": "<0>このホストを信頼します。</0> 上記のフィンガープリントが自分のサーバーと一致することを確認しました。今後、異なるフィンガープリントを報告する接続は拒否されます。",
"sshTrusted": "信頼済み",
"sshUnverified": "未確認",
"status": "ステータス",
"stop": "停止",
"success": "成功",
"task": "タスク",
"testConnection": "接続をテスト",
"theRemoteDockerHostUrlTcp": "リモートの Docker ホスト URL({{schemes}})。",
"thisActionCannotBeUndone": "この操作は元に戻せません。",
"tlsCertificatePath": "TLS証明書のパス",
"tlsVerify": "TLS検証",
"tokenConfiguredButUnableToConnect": "トークンは設定されていますが、接続できません。",
"typeLocal": "ローカル",
"typeKubernetes": "Kubernetes",
"typeTokenToConfirmDeletion": "削除を確認するには「{{token}}」と入力してください。この操作は元に戻せません。",
"typeWorktree": "ワークツリー",
"unknownError": "不明なエラー",
"unknownExecutorType": "不明な実行タイプ",
"untrackedTask": "未追跡",
"uptime": "稼働時間",
"useDefaults": "デフォルトを使用",
"useLocalGitConfig": "ローカルの git config を使用",
"usedByRemoteExecutorsForCommit": "リモート実行環境のコミット作成者設定に使用されます。",
"user": "ユーザー",
"usesTheLocalDockerDaemonOn": "このマシン上のローカル Docker デーモンを使用します。",
"value": "値",
"verifyingConnection": "接続を確認中...",
"profileNameExample": "本番環境, 開発環境",
"allowUserNamespacesTitle": "ユーザー名前空間サポート",
"allowUserNamespacesDescription": "コンテナ内で権限なしユーザーの名前空間作成と mount 操作を許可。bwrap みたいなサンドボックスツールが使える。",
"allowUserNamespacesNote": "この設定が効くのは新規作成コンテナだけ。変更を反映するには、既存タスク環境をリセットする必要あり。",
"allowUserNamespacesWarning": "有効にすると、Docker のデフォルト AppArmor 制限をオプトイン済みコンテナに対して無効化。user-namespace サンドボックスが必要な信頼済み agent runtime だけで有効にすること。"
}
+18
View File
@@ -0,0 +1,18 @@
{
"tabLabel": "失敗",
"openTask": "タスクを開く",
"reasonUnknown": "失敗理由は記録されていない。",
"unknownFailureTime": "失敗時刻不明",
"originAgentCreated": "agent が作成",
"originRoutine": "routine が作成",
"originOnboarding": "オンボーディング中に作成",
"originAutomationRun": "自動化実行",
"originAutomationTask": "自動化が作成",
"originGeneric": "自動化済み",
"emptyTitle": "{{workspace}} で失敗はない。",
"emptyTitleUnnamedWorkspace": "この workspace で失敗はない。",
"emptyDescription": "失敗タスクはトリアージ用にここへ出る。サイドバー合計には入らない。",
"errorTitle": "失敗タスクを読み込めない",
"errorDescription": "この workspace で失敗したタスクの読み込み中に問題発生。自動で再試行する。",
"truncatedNotice": "最初の失敗タスクだけ表示中。続きは待機中。"
}
+654
View File
@@ -0,0 +1,654 @@
{
"views": "ビュー",
"viewPicker": "ビュー: {{view}}",
"loadingSavedQueries": "保存済みクエリを読み込み中...",
"savedQueriesLoadFailed": "保存済みクエリを読み込めませんでした。",
"pageOf": "{{total}} 件中 {{page}} ページ目",
"choosePage": "結果ページを選択",
"resultRange": "{{total}} 件中 {{start}}–{{end}}",
"previousPage": "前のページ",
"nextPage": "次のページ",
"aRegistrationCanBeReusedAcross": "登録は複数 workspace で再利用できる。仕事用と個人用 Apps を分けてもいい。各 workspace は自分の認証情報を選ぶし、インストールする。",
"accountsUnavailable": "アカウント使用不可",
"actionPromptPlaceholderHelp": "{{token}} を入力すると利用可能なプレースホルダーを表示。アクション実行時に <4>{{url}}</4> と <7>{{title}}</7> が置換される。",
"actions": "アクション",
"active": "有効",
"addAll": "すべて追加",
"addAllCommentsToChatContext": "すべてのコメントを chat context に追加",
"addAllFailedChecksToChat": "失敗したチェックをすべて chat context に追加",
"addAllReviewsToChatContext": "すべてのレビューを chat context に追加",
"addAllToChatContext": "すべてを chat context に追加",
"addAnExistingGithubApp": "既存の GitHub App を追加",
"addExistingApp": "既存 App を追加",
"addIssueAction": "issue アクションを追加",
"addIssueQuery": "issue クエリを追加",
"addPrAction": "PR アクションを追加",
"addPrQuery": "PR クエリを追加",
"addRepository": "リポジトリを追加",
"addToChatContext": "chat context に追加",
"addWatch": "Watch を追加",
"addWholeThreadToChatContext": "スレッド全体を chat context に追加",
"addedToChatContext": "chat context に追加済み",
"agentProfile": "エージェント プロファイル",
"allRepos": "全 repo",
"allRepositories": "全リポジトリ",
"allRepositoriesAllowedByThisWorkspace": "この workspace で許可された全リポジトリ",
"allowsInstallationElsewhereItDoesNot": "別場所へのインストールを許可。Marketplace には公開しないし、repo も付与しない。",
"anErrorOccurred": "エラーが発生",
"anExecutorProfileGhTokenOr": "executor-profile の {{ghToken}} か {{githubToken}} が、その task の managed workspace 認証情報を上書きする。",
"anImportedAppMustHaveAt": "import した App には、少なくともこれらの repository 権限と購読イベントが必要。",
"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": "このプロンプトはこのタスクだけで使う。空欄ならデフォルトプロンプト使う。PRフィードバック、通常のマージ競合コンテキスト、実行可能なキュー削除コンテキスト、利用可能な失敗済みマージグループチェックを含めたい時は <0>{{placeholder}}</0> を追加。",
"autoFixRoundExplanation": "このPRで自動修正は {{current}} / {{max}} ラウンド使用。ラウンド数えるのは、Kandev が CI 自動修正メッセージを送るかキューに入れた時。新しい CI 自動修正ターン始める前に、Kandev は全PRチェック完了まで待つ。だからエージェントは最終失敗チェック、現在コメント、通常マージ競合、実行可能なマージキュー削除をまとめて受け取る。すでにキュー済みの自動修正メッセージ更新では、追加ラウンド消費しない。これが {{max}}/{{max}} で、更新待ち自動修正メッセージがもうなければ、Kandev はこのPRの自動修正を一時停止して無限ループ防ぐ。手動レビュー後に自動修正を無効化して再有効化すると最初からやり直し。ターンが記録済み結果なしで終わった場合、Kandev は同じ確定済みフィードバックを再試行でき、その再試行で別ラウンド使う。アクション実行済み結果後は、Kandev はプロバイダ進行待ってから再試行する。非実行可能またはブロック済み結果は未変更フィードバックを確認するだけで、再試行しない。",
"autoMerge": "自動マージ",
"autoMergeEnabledAria": "自動マージ有効",
"autoMergeWhenReady": "準備でき次第、自動マージ",
"automaticallyCreateTasksForGithubIssues": "条件に合う GitHub issue からタスクを自動作成。",
"automaticallyCreateTasksForPrsThat": "レビューが必要な PR からタスクを自動作成。",
"automaticallyCreateTasksWhenNewGithub": "新しい GitHub issue が条件に合う時、タスクを自動作成。",
"automaticallyCreateTasksWhenNewPull": "新しい pull request にレビュー必要な時、タスクを自動作成。",
"automation": "自動化",
"automationForPr": "PR #{{number}} のみに適用",
"available": "利用可能",
"availablePlaceholders": "利用可能なプレースホルダ:",
"avgTimeToMerge": "平均マージ時間",
"backToRegisteredApps": "登録済み Apps に戻る",
"behindBase": "ベースより遅れ",
"bestForPersonalOrCompanyInternal": "個人用か社内用自動化に最適。",
"blocked": "ブロック中",
"blockedByBranchProtection": "ブランチ保護でブロック中",
"blockedGeneric": "必要なレビュー、コードオーナー、リポジトリルールの確認まだ必要。",
"blockedNeedsApprovals_one": "マージ前にあと {{count}} 件承認必要。",
"blockedNeedsApprovals_other": "マージ前にあと {{count}} 件承認必要。",
"blockedStatusCheck": "必須ステータスチェックまだ通ってない。",
"botComments": "Bot コメント (",
"byAuthorOpenedAgo": "{{author}} 作成 · {{time}}にオープン",
"changeConnection": "接続変更",
"changeGithubConnection": "GitHub接続を変更",
"changesRequested": "変更が要求されています",
"checkBucketFailed": "失敗",
"checkBucketInProgress": "進行中",
"checkBucketPassed": "完了",
"checkNow": "今すぐ確認",
"checkingForNewIssues": "新しい issue を確認しています...",
"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": "チェック実行中",
"checksNotSuccessful": "チェックが成功しませんでした",
"chooseAGithubApp": "GitHub App を選択",
"chooseHowNewlyLaunchedTasksAuthenticate": "新しく起動したタスクが GitHub にどのように認証するかを選択してください。これは上記のワークスペース自動化接続には影響しません。",
"chooseMergeMethod": "マージ方法を選択",
"chooseTheAutomationAndPersonalIdentities": "このワークスペースで使用する自動化用と個人用の ID を選択してください。",
"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": "クローズ済み",
"comments": "コメント",
"configureTheExistingAppOnGithub": "GitHub上の既存アプリを設定する",
"conflicts": "競合",
"connectGithub": "GitHubに接続",
"connectIdentity": "IDを接続",
"connectYourPersonalGithubIdentityTo": "担当のプルリクエストと課題を表示するために、個人のGitHub IDを接続してください。",
"connectionMethod": "接続方法",
"continueOnGithub": "GitHubで続行",
"controlsHowNewlyLaunchedTasksAuthenticate": "新しく起動したタスクが、Git HTTPS と gh コマンドで GitHub に認証する方法を制御します。管理対象ワークスペースの認証情報は Kandev のワークスペース接続を使用し、実行者の認証情報は選択した実行者の Git または SSH 設定を使用します。",
"copy": "{{label}}をコピー",
"couldNotLoadGithubCliAccounts": "GitHub CLI アカウントを読み込めませんでした。{{error}}",
"create": "作成",
"createAGithubApp": "GitHub Appを作成",
"createIssueWatch": "Issue Watchを作成",
"createNewApp": "新しいAppを作成",
"createReviewWatch": "Review Watchを作成",
"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}}件のタスクを削除しました",
"disconnect": "接続を解除",
"disconnectFailed": "接続解除に失敗しました",
"draft": "下書き",
"eGBugEnhancementPriorityHigh": "例: {{examples}}",
"eGNeedsMyReview": "例: レビューが必要",
"editAutoFixPromptForThis": "このタスクの自動修正プロンプトを編集",
"editDefaultPrompt": "既定のプロンプトを編集",
"editDetails": "詳細を編集",
"editIssueWatch": "Issue Watch を編集",
"editPrompt": "プロンプトを編集",
"editReviewWatch": "Review Watch を編集",
"enable": "有効にする",
"enabled": "有効",
"enterANameUpTo100Characters": "100文字以内の名前を入力してください。",
"enterAPublicHostNotLocalhost": "localhost ではなく、公開ホストを入力してください。",
"enterAPublicHttpsOrigin": "公開 HTTPS オリジンを入力してください。",
"enterAValidGithubAccountLogin": "有効な GitHub アカウントのログイン名を入力してください。",
"enterAnOriginWithoutAPath": "パス、クエリ、フラグメントを含まないオリジンを入力してください。",
"enterTheAppClientId": "App のクライアント ID を入力してください。",
"enterTheAppClientSecret": "App のクライアントシークレットを入力してください。",
"enterTheGithubAppSlug": "GitHub App の slug を入力してください。",
"enterTheNumericGithubAppId": "数値の GitHub App ID を入力してください。",
"enterTheWebhookSecret": "Webhook シークレットを入力してください。",
"executorProfile": "実行者プロファイル",
"explainAutoFixRounds": "自動修正ラウンドについて説明",
"explainCiAutomationOptions": "CI 自動化オプションについて説明",
"explainFinalPrStateNotifications": "最終的な PR 状態の通知について説明",
"explainHowManagedTaskCredentialsWork": "管理対象タスクの認証情報の仕組みについて説明",
"explainRepositoryScope": "リポジトリのスコープについて説明",
"explainReviewRequestNotifications": "レビュー依頼通知について説明",
"explainTaskGitAccess": "タスクの Git アクセスについて説明",
"explainWorkspaceGithubIdentity": "ワークスペースの GitHub ID について説明",
"failedToApprove": "承認できませんでした",
"failedToCheckForIssues": "Issue を確認できませんでした",
"failedToCheckForPrs": "PR を確認できませんでした",
"failedToDeleteIssueWatch": "Issue Watch を削除できませんでした",
"failedToDeleteReviewWatch": "Review Watch を削除できませんでした",
"failedToLoadGithubWorkspaceSettings": "GitHub ワークスペース設定を読み込めませんでした",
"failedToMerge": "マージできませんでした",
"failedToReRequestReview": "レビューを再依頼できませんでした",
"failedToResetIssueWatch": "Issue Watch をリセットできませんでした",
"failedToResetReviewWatch": "Review Watch をリセットできませんでした",
"failedToSaveDefaultQueries": "デフォルトのクエリを保存できませんでした",
"failedToSaveGithubWorkspaceSettings": "GitHub ワークスペース設定を保存できませんでした",
"failedToSaveQuickActions": "クイックアクションを保存できませんでした",
"failedToUnlinkPullRequest": "プルリクエストのリンクを解除できませんでした",
"filter": "フィルター",
"filterGithubResultsByRepository": "GitHub の結果をリポジトリで絞り込む",
"filterRepositories": "リポジトリを絞り込み...",
"filters": "フィルター",
"forWebhooksChooseContentType": "Webhook では、コンテンツタイプに <1>{{contentType}}</1> を選び、SSL 検証は有効のままにする。",
"foundNewIssues_one": "{{count}} 件の新しい issue を見つけた",
"foundNewIssues_other": "{{count}} 件の新しい issue を見つけた",
"foundNewPrs_one": "{{count}} 件の新しい PR を見つけた",
"foundNewPrs_other": "{{count}} 件の新しい PR を見つけた",
"general": "(全般)",
"generateSetupInstructions": "セットアップ手順を生成",
"githubAccessSettingsSaved": "GitHub アクセス設定を保存した",
"githubApiAccessIsExhaustedFor": "{{resources}} の GitHub API アクセス上限に達した。バックグラウンドの PR と issue チェックは、最後の上限リセット {{reset}} まで一時停止する。",
"githubApiLimits": "GitHub API 制限",
"prDiscoveryFailed": "PR 検出に失敗",
"prDiscoveryCategory": "理由: {{category}}",
"prDiscoveryCategoryInvalidQuery": "無効なクエリ",
"prDiscoveryCategoryRateLimited": "レート制限",
"prDiscoveryCategoryUnavailable": "利用不可",
"prDiscoveryLastFailure": "最後の失敗: {{time}}",
"prDiscoveryAffectedTargets_one": "影響を受けた対象: {{count}}",
"prDiscoveryAffectedTargets_other": "影響を受けた対象: {{count}}",
"prDiscoveryRetryAt": "{{time}}に再試行",
"prDiscoveryUnknownTime": "不明な時刻",
"githubApp": "GitHub アプリ",
"githubAppAdded": "GitHub App を追加した",
"githubAppConfigurationInstructions": "GitHub App の設定手順",
"githubAppConnected": "GitHub App 接続済み",
"githubAppCouldNotBeImported": "GitHub App をインポートできなかった",
"githubAppImportedItIsReady": "GitHub App をインポートした。インストール準備完了。",
"githubAppPermissions": "GitHub App 権限",
"githubAppSetupCancelled": "GitHub App セットアップをキャンセルした",
"githubAppSetupCouldNotStart": "GitHub App セットアップを開始できなかった",
"githubAppSlug": "GitHub App スラッグ",
"githubAuthenticationLost": "GitHub 認証を失った。",
"githubCli": "GitHub CLI",
"githubCliAccount": "GitHub CLI アカウント",
"githubDidNotReturnARedirectUrl": "GitHub がリダイレクト URL を返さなかった",
"githubDidNotReturnAnInstallationUrl": "GitHub がインストール URL を返さなかった",
"githubIdentityConnected": "GitHub ID を接続した",
"githubIntegration": "GitHub 統合",
"githubIsNotConnectedConfigureWorkspace": "GitHub は未接続。gh CLI か personal access token で workspace 自動化を設定する。",
"githubIsReadyToCreateThe": "GitHub は App を作成する準備ができました",
"githubMustReachThisHttpsOrigin": "GitHub は、署名付き Webhook とコールバックのためにこの HTTPS オリジンへ到達できる必要があります。",
"githubOwnerLogin": "GitHub オーナーのログイン名",
"githubSearchQuerySupportsFullGithub": "GitHub の検索クエリ。最大限の柔軟性のため、GitHub の完全な検索構文に対応しています。",
"githubSearchQueryWhenSetOverrides": "GitHub の検索クエリ。設定すると、上のラベルフィルターより優先されます。",
"githubSetupWasNotCompleted": "GitHub のセットアップは完了しませんでした",
"githubWillShowTheGeneratedPermissions": "GitHub に生成された権限が表示され、確認を求められます。GitHub から戻ると登録が追加されます。このワークスペースへのインストールは、引き続き明示的な手順です。",
"githubWorkspaceSettingsSaved": "GitHub ワークスペースの設定を保存しました",
"graphqlQueryLimit": "GraphQL クエリの上限",
"group": "グループ",
"hidePrompt": "プロンプトを非表示",
"hideToken": "トークンを非表示",
"hint": "ヒント",
"hintOptional": "ヒント(任意)",
"howManagedTaskCredentialsWork": "管理されたタスク認証情報の仕組み",
"howOftenToCheckForNew": "新しい issue を確認する頻度。最小 60 秒、最大 3600 秒。",
"howOftenToCheckForNew2": "新しい PR を確認する頻度。最小 60 秒、最大 3600 秒。",
"icon": "アイコン",
"identityConnectionFailed": "ID 接続に失敗しました",
"importSetupCouldNotStart": "インポートのセットアップを開始できませんでした",
"imported": "インポート済み",
"inUse": "使用中",
"inbox": "受信トレイ",
"inheritExecutorGitCredentials": "実行者の Git 認証情報を継承",
"initialStepForNewTasks": "新しいタスクの初期ステップ。",
"initialStepForNewTasksAuto": "新しいタスクの初期ステップ。ステップに自動開始が設定されています。",
"insertPrFeedback": "PR フィードバックを挿入",
"installAGithubAppAboveTo": "上の GitHub App をインストールして、ワークスペース接続を変更します。タスクへのアクセスは、インストール完了後に保存できます。",
"installForThisWorkspace": "このワークスペースにインストール",
"interval": "間隔",
"issue": "Issue #{{number}}",
"issue2": "Issue #",
"issueCleanupPolicyAlwaysDescription": "タスクに対応していても、クローズ時に削除します。",
"issueCleanupPolicyAutoDescription": "メッセージを入力していない限り、クローズされた issue のタスクを削除します。",
"issueWatch": "issue監視",
"issueWatchCreated": "Issue watch を作成しました",
"issueWatchDeleted": "Issue watch を削除しました",
"issueWatchNotFound": "Issue watch が見つかりませんでした",
"issueWatchPromptHelp": "新しい issue ごとにエージェントへ送信されるプロンプトです。{{token}} を入力するとプレースホルダーを挿入できます。",
"issueWatchUpdated": "Issue watch を更新しました",
"issueWatches": "Issue の監視",
"issues": "Issue",
"kandevBrokersTheWorkspacePatNamed": "Kandev は、このタスク用に workspace PAT、GitHub CLI account という名前、または App identity を仲介する。GitHub HTTPS と gh 用。",
"kandevFirstReservesExactCallbackAnd": "Kandev はまず正確な callback URL と webhook URL を確保し、そのあと GitHub の App 設定へ案内する。既存 workspace access は、import した App を install するまで変わらない。",
"kandevGeneratesTheExactAppPolicy": "Kandev は正確な App policy を生成する。GitHub で作成を確認すると、Kandev がこの registration を保存し、workspace から選べるようにする。",
"kandevManagedOperationsActAs": "Kandev-managed operations は {{actor}} として動く。",
"kandevManagedOperationsUseTheGithub": "Kandev-managed operations は {{actor}} 用に install された GitHub App を使う。",
"kandevStoresThisTokenForThis": "Kandev はこの token をこの workspace に保存する。GitHub は action を token owner として記録する。",
"kandevUsesThisWorkspaceConnectionFor": "Kandev はこの workspace connection を repository sync, watches, background jobs, managed agent GitHub commands に使う。PAT または GitHub CLI account の場合、My GitHub と、あなたが起動した actions は同じ human identity を使う。",
"kindIssue": "issue",
"kindPullRequest": "pull request",
"label": "ラベル",
"labels": "ラベル",
"labelsCommaSeparated": "ラベル(カンマ区切り)",
"lastPolled": "最終ポーリング",
"legacySharedConnection": "旧 shared connection",
"limitsGithubPullRequestsAndIssues": "この workspace で表示または import される GitHub pull request と issue を制限する。",
"loadingAccounts": "アカウントを読み込み中...",
"loadingOrganizations": "organization を読み込み中...",
"loadingRegisteredApps": "登録済み App を読み込み中...",
"loadingTaskAccess": "task access を読み込み中…",
"localAndWorktreeTasksUseHost": "Local と Worktree の task は host から見える Git または SSH credentials を使う。Docker, SSH, cloud task は、その executor で設定された credentials を使う。",
"managedWorkspaceCredentials": "管理対象 workspace credentials",
"me": "自分",
"meMyTeams": "自分と自分の team",
"mergeable": "Merge 可能",
"mergeConflictsWith": "Merge conflict 相手",
"mergeMethodDefault": "PR を merge",
"mergeMethodMergeCommit": "Merge commit を作成",
"mergeMethodMergeCommitShort": "マージコミット",
"mergeMethodRebase": "Rebase して merge",
"mergeMethodRebaseShort": "Rebase",
"mergeMethodSquash": "Squash して merge",
"mergeMethodSquashShort": "Squash",
"merged": "マージ済み",
"merging": "Merging...",
"missing": "なし",
"mode": "モード",
"myGithubIdentity": "自分の GitHub identity",
"myGithubNowUsesYourVerified": "My GitHub は、確認済み personal identity を使うようになった。",
"name": "名前",
"nameInKandev": "Kandevでの名前",
"needsAttention": "対応必要",
"never": "しない",
"noAutomationConnection": "自動化接続なし",
"noChecks": "チェックなし",
"noChecksHaveStarted": "まだチェック開始なし",
"noCommentsYet": "まだコメントなし",
"noGhAccountsFound": "ghアカウント見つからず",
"noGithubAppsAreRegisteredYet": "まだ登録済みGitHub Appなし。既存Appを追加するか、下で新規作成。",
"noIssueWatchesConfiguredCreateOne": "Issue監視なし。1つ作成してGitHub issue監視を開始。",
"noIssuesMatchThisFilter": "このフィルターに一致する issue なし。",
"noNewIssuesFound": "新しい issue なし",
"noNewPrsFound": "新しい PR なし",
"noPullRequestLinkedToThis": "このセッションに紐づく pull request なし。",
"noPullRequestsMatchThisFilter": "このフィルターに一致する pull request なし。",
"noReposFoundFor": "\"{{org}}\" に該当するリポジトリなし",
"noRepositoriesFound": "リポジトリなし。",
"noReviewWatchesConfiguredCreateOne": "レビュー監視なし。1つ作成して PR 監視を開始。",
"noReviewsYet": "まだレビューなし",
"noSavedQueriesYet": "まだ保存済みクエリなし。",
"noStatsAvailableYet": "まだ統計なし。",
"noTaskCreatedYet": "まだタスクなし",
"noTasksToCleanUp": "片付けるタスクなし",
"noWorkspaceConfiguredCreateAWorkspace": "ワークスペース未設定。まずワークスペース作成して、PR/issue からタスク開始。",
"notMergeable": "マージ不可",
"omitThePlaceholderIfYouWant": "エージェントにブランチを pull または fetch させて GitHub 自体を確認させたいなら、プレースホルダー省略。Kandev のスナップショット受け取り不要。",
"onlyMatchIssuesWithTheseLabels": "このラベル付き issue のみ一致。空なら全 issue 対象。",
"onlyPrsWhereYouAreExplicitly": "明示的に reviewer 指名された PR のみ。チーム経由は除外。",
"onlyTheAppOwner": "App オーナーのみ",
"openDetails": "{{title}} の詳細を開く",
"openGithubAppSettings": "GitHub App 設定を開く",
"openGithubFilters": "GitHub フィルターを開く",
"openSettingsToSeePrsAndIssues": "pull request と issue を見るには、<0>GitHub 設定を開く</0>。",
"optionalFallsBackToStepDefault": "任意。step デフォルトにフォールバック。",
"optionalFallsBackToStepDefault2": "任意。step デフォルトにフォールバック。エージェントが実行する executor 環境。",
"optionallyConnectYourGithubUserFor": "My GitHub と人間名義の操作用に、GitHub user を任意で接続。managed agent にこの identity は渡さない。workspace automation は App のまま継続。",
"or": "または",
"organization": "組織",
"organizations": "組織",
"otherGithubAccounts": "他の GitHub アカウント",
"overallLabel": "全体:",
"passRate": "合格率",
"pasteTheAppPrivateKey": "App の秘密鍵を貼り付けてください。",
"pause": "一時停止",
"pauseOrResumePolling": "ポーリングを一時停止、再開する。",
"paused": "一時停止中",
"pending": "保留中 {{pending}}",
"pendingReview": "レビュー待ち",
"pendingReviews_one": "保留中のレビュー {{count}} 件",
"pendingReviews_other": "保留中のレビュー {{count}} 件",
"permissionsAvailableToKandevThroughThis": "このワークスペースの GitHub App インストール経由で Kandev が使える権限。",
"personalAccessToken": "個人用アクセストークン",
"personalAccount": "個人アカウント",
"personalGithubIdentityDisconnected": "個人 GitHub ID の接続解除済み",
"personalOauth": "個人 OAuth",
"placeholderActionTitle": "PR または issue のタイトル",
"placeholderActionUrl": "PR または issue の URL",
"placeholderCommaSeparatedLabels": "カンマ区切りラベル",
"placeholderIssueAuthor": "issue 作成者のユーザー名",
"placeholderIssueBody": "issue 本文",
"placeholderIssueNumber": "issue 番号",
"placeholderIssueTitle": "issue タイトル",
"placeholderIssueUrl": "issue URL",
"placeholderPrAuthor": "PR 作成者のユーザー名",
"placeholderPrNumber": "PR 番号",
"placeholderPrTitle": "PR タイトル",
"placeholderPrUrl": "PR URL",
"placeholderRepository": "リポジトリ",
"placeholderSourceBranch": "ソースブランチ",
"placeholderTargetBranch": "ターゲットブランチ",
"pollIntervalSeconds": "ポーリング間隔(秒)",
"pr": "PR #",
"prAnalytics": "PR 分析",
"prApproved": "PR 承認済み",
"prClosedWithoutMerging": "PR はマージせずクローズ",
"prEvents": "PR イベント",
"reviewFollowUp": "レビューのフォローアップ",
"prAddedToMergeQueue": "PR をマージキューに追加",
"prMerged": "PR をマージ済み",
"prTaskStatusCi": "CI",
"prTaskStatusMerge": "マージ",
"prTaskStatusNumber": "PR #{{number}}",
"prTaskStatusRepositoryNumber": "{{repository}} PR #{{number}}",
"prTaskStatusReview": "レビュー",
"prTaskStatusState": "状態",
"prepareAppOnGithub": "GitHubでAppを準備",
"presetIconBug": "バグ",
"presetIconCheck": "チェック",
"presetIconCode": "コード",
"presetIconEye": "目",
"presetIconMessage": "メッセージ",
"presetIconSearch": "検索",
"presetIconSparkle": "きらめき",
"presetIconTool": "ツール",
"pressEnter": "Enterを押す",
"private": "非公開",
"privateKeyPem": "秘密鍵({{extension}})",
"promptsShownOnGithubWhenStarting": "PRかissueからタスク開始時、{{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": "自分のリポジトリ全体のプルリクエストとissue。",
"pullRequestsLinkedToTask_one": "このタスクにリンクされたプルリクエスト{{count}}件。1件開く",
"pullRequestsLinkedToTask_other": "{{count}} 件のプルリクエストがこのタスクにリンク済み。1件開く",
"query": "クエリ",
"queryExample": "例: {{query}}",
"quickActions": "クイック操作",
"quickActionsAreStillLoading": "クイック操作、まだ読み込み中。",
"quickActionsSaved": "クイック操作、保存済み",
"rateLimitRemaining": "残り {{remaining}} / {{limit}} {{unit}}",
"rateLimitUnitPoints": "ポイント",
"rateLimitUnitRequests": "リクエスト",
"rateLimitUnknown": "不明",
"readyToMerge": "マージ準備完了",
"reRequestReview": "レビュー再依頼",
"reRequestReviewFrom": "{{author}} にレビュー再依頼",
"reconnectGithub": "GitHub を再接続",
"reconnectIdentity": "ID を再接続",
"refresh": "更新",
"refreshGithubConnection": "GitHub 接続を更新",
"remove": "削除",
"removeFromTask": "タスクから {{repo}} #{{prnumber}} を削除",
"repositories": "リポジトリ",
"repository": "リポジトリ",
"repositoryPermissions": "リポジトリ権限",
"repositoryScope": "リポジトリ範囲",
"repositoryScopeHelp": "このワークスペースで Kandev が検出する GitHub のプルリクエストと issue を制限。My GitHub の結果、レビューと issue の監視も含む。GitHub 権限やリポジトリアクセスは変更しない。",
"requesting": "要求中...",
"requiredGithubAppPolicy": "必須の GitHub App ポリシー",
"resetCompleteDeletedTasks_one": "リセット完了。{{count}} 件のタスクを削除。次回ポーリングで再インポート。",
"resetCompleteDeletedTasks_other": "リセット完了。{{count}} 件のタスクを削除。次回ポーリングで再インポート。",
"resetCompleteNextPollWillRe": "リセット完了。次回ポーリングで一致項目を再インポート。",
"resetWatch": "監視をリセット",
"resets": "· リセット {{reset}}",
"resolveConflicts": "競合を解決",
"resolvedFromOneNamedHostAccount": "必要時、1つの名前付きホストアカウントから解決。管理タスクはスコープ付き仲介 ID を受け取る。下で選択しない限り、ホスト Git は継承しない。",
"retry": "再試行",
"reviewPermissions": "レビュー権限",
"reviewReRequestedFrom": "{{reviewer}} にレビュー再依頼済み",
"reviewWatch": "レビュー監視",
"reviewWatchCreated": "レビュー監視を作成",
"reviewWatchDeleted": "レビュー監視を削除",
"reviewWatchNotFound": "レビュー監視が見つからない",
"reviewWatchPromptHelp": "新しい PR ごとにエージェントへ送るプロンプト。{{token}} でプレースホルダー挿入、{{mention}} で保存済みプロンプトを名前で参照。workflow step プロンプトと同じように展開される。これも同じ組み立て経由で task description になる。",
"reviewWatchUpdated": "Review watch 更新済み",
"reviewWatches": "レビュー監視",
"reviews": "Reviews{{summary}}",
"saveChanges": "変更を保存",
"saveCurrentQuery": "現在のクエリを保存",
"savePresetDescription": "この {{kind}} クエリをサイドバーに保存して、あとで素早くアクセス。",
"savePrompt": "プロンプトを保存",
"saveQuery": "クエリを保存",
"saved": "保存済み",
"savedQueryFallback": "保存済みクエリ",
"saving": "保存中...",
"savingChanges": "変更を保存中…",
"searchLimit": "検索上限",
"searchQuery": "検索クエリ",
"searching": "検索中...",
"selectWorkflow": "workflow を選択",
"selectWorkspace": "workspace を選択",
"selectedRepositories": "選択済みリポジトリ",
"selectWorkspaceBeforeRequestingReview": "review をリクエストする前に workspace を選択。",
"setTheseExactUrlsCreateAClientSecret": "表示順で 2 つの user authorization callback URL を追加。残り exact value を設定し、client secret と webhook secret を作成し、private key をダウンロード。この 1 回限りのセットアップは {{expiresAt}} で期限切れ。",
"showGithubApiLimits": "GitHub API 制限を表示",
"showLess": "表示を減らす",
"showMore": "さらに表示",
"showToken": "トークンを表示",
"sidebarQueriesShownOnGithubFor": "{{route}} 上の pull request と issue に表示されるサイドバー query。",
"signInWithGhAuthLogin": "<1>{{command}}</1> でサインインして、このダイアログを再度開く。",
"someSettingsWereSavedButAnother": "一部設定は保存されたが、別の変更が失敗: {{detail}}",
"startOver": "最初からやり直す",
"stepLabelled": "Step: {{stepTitle}}",
"storedAppCredentialsMintShortLived": "保存された App 認証情報は短命の installation token を発行。managed task は、許可済みリポジトリ用のスコープ付き brokered App identity を受け取る。",
"storedEncryptedByKandevWorkspaceAutomation": "Kandev により暗号化して保存。workspace automation と managed task の GitHub HTTPS/gh は自分のアカウントとして動作。",
"subscribedEvents": "購読済みイベント",
"task": "タスク",
"taskAccess": "タスクアクセス:",
"taskAccessUnavailable": "Task access 利用不可",
"taskAutoFixPrompt": "タスク自動修正プロンプト",
"taskGitAccess": "タスク Git アクセス",
"taskLabelled": "Task: {{title}}",
"taskPrDetailsLoading": "pull request 詳細を読み込み中...",
"taskPrDetailsUnavailable": "プルリクエスト詳細は利用不可",
"taskPrompt": "タスクプロンプト",
"tasks": "タスク",
"tasksCreatedByThisWatcherLand": "このウォッチャーが作成したタスクは、選択中ワークスペースに入る。",
"theAppIsReadyToSelect": "このワークスペース向けに選択してインストールできる App が準備できた。",
"theExistingWorkspaceConnectionWasNot": "既存のワークスペース接続は変更されなかった。",
"theGithubResponseCouldNotBe": "GitHub 応答を検証できなかった。接続を確認して、もう一度試す。",
"thePlaceholderInsertsTheCurrentPr": "プレースホルダーは、現在の PR 識別子、キュー削除コンテキスト、正確な merge-group commit がある場合のみ新規または変更された失敗チェック、新規または変更されたレビューコメントを挿入する。",
"thePullRequestIsStillLinked": "プルリクエストはまだリンクされたまま。",
"theRepositoryWillBeAutomaticallyCloned": "リポジトリは、ワークスペースにまだなければ {{path}} に自動でクローンされる。",
"theSettingsCouldNotBeSaved": "設定を保存できなかった",
"theStoredAppCredentialsAreUnavailable": "保存済み App 認証情報は利用不可。",
"theWorkflowToCreateTasksIn": "タスク作成先のワークフロー。",
"theWorkspaceChangedBeforeTaskAccess": "ワークスペースが変わる前にタスクアクセスを保存できなかった",
"thisAccountAlsoPowersMyGithub": "このアカウントは My GitHub とユーザー起点アクションも動かす。",
"thisAppRegistrationIsShared_one": "この App 登録は {{count}} ワークスペースで共有される。登録変更は、これを使う全ワークスペースに影響する。インストールアクセスはワークスペース単位のまま。",
"thisAppRegistrationIsShared_other": "この App 登録は {{count}} ワークスペースで共有される。登録変更は、これを使う全ワークスペースに影響する。インストールアクセスはワークスペース単位のまま。",
"thisBranchCanTBeMerged": "このブランチは自動マージできない。マージ前に競合を解決して。",
"thisRepositoryOpensByDefaultYou": "このリポジトリはデフォルトで開く。クエリを開いたあとでフィルターを変えられる。",
"thisWorkspaceUsesOneCredentialFor": "このワークスペースは、リポジトリ同期、ウォッチ、バックグラウンドジョブ、管理エージェントの GitHub アクセスに 1 つの認証情報を使う。Executor プロファイルの認証情報が優先されることもある。",
"titleIssues": "課題",
"titlePullRequests": "プルリクエスト",
"toggleReviewFollowUpAutomation": "レビューのフォローアップ自動化を切り替え",
"typeACustomQueryFirst": "先にカスタムクエリを入力",
"typeOwnerRepoToSearch": "検索するには {{format}} を入力",
"unableToLoadTheCurrentTask": "現在のタスクアクセス設定を読み込めない。",
"unexpectedResponseFromTheServer": "サーバーから予期しない応答",
"unresolvedComments_one": "未解決コメント {{count}} 件",
"unresolvedComments_other": "未解決コメント {{count}} 件",
"untitledPr": "タイトルなし PR",
"update": "更新",
"updated": "更新済み ",
"updatedAgo": "{{elapsed}} 前に更新",
"updatedJustNow": "たった今更新",
"updatingStatus": "更新中…",
"useAnAppWhenAutomationNeeds": "自動化に専用の ID、短命トークン、リポジトリ単位のインストール制御が必要なら App を使う。設定は少し手間で、外部から到達できる HTTPS URL が必要。",
"useCommaSeparatedOwnerRepoValues": "カンマ区切りの owner/repo 値を使う。",
"useDefault": "デフォルトを使う",
"usedByWorkspaces_one": "{{count}} ワークスペースで使用中。編集や削除はそれら全部に影響する。",
"usedByWorkspaces_other": "{{count}} ワークスペースで使用中。編集や削除はそれら全部に影響する。",
"verifyAndImportApp": "App を確認してインポート",
"viewPermissions": "権限を表示",
"viewPullRequestOnGithub": "GitHub で pull request を表示",
"viewWorkflowOnGithub": "GitHub で workflow を表示",
"waitingOnBranchProtection": "ブランチ保護を待機中",
"wakeAgentOnReviewRequest": "新しいリクエストがあれば agent を起こす。変更後の再レビューも含む。",
"wakeAgentOnTerminalPrState": "レビュー作業が終わったら agent を起こす。どちらか、または両方を選ぶ。",
"watchesThisTaskSLinkedPull": "1 分間の PR 更新ループ中、この task の linked pull request を監視する。Auto-fix は新しく検出した feedback の task prompt を queue し、auto-merge は PR の準備完了を待つ。notification switch は、workspace の connected GitHub account に review が要求されたとき、または PR が terminal state に達したときに task の agent を起こす。review request は、後の request で通知する前に account の現在の request state を静かに baseline 化する。",
"webhook": "Webhook",
"webhookSecret": "Webhook シークレット",
"whichAllowedGithubRepositoriesToMonitor": "この watch で監視する許可済み GitHub repositories を選ぶ。",
"whoCanInstallThisApp": "この App をインストールできるのは誰?",
"withManagedWorkspaceCredentialsKandevConfigures": "Managed workspace credentials では、Kandev が新しく起動した task process 内で agentctl を Git の credential helper として設定する。Git が attached GitHub HTTPS repository の credentials を要求すると、helper は task と repository に scope された broker lease を返す。credential は必要に応じて Git に返され、repository や Git config には書き込まれない。gh command は Kandev の broker-aware shim を使う。Executor inheritance は両方をスキップし、選択した executor で見える credentials を使う。変更は新しい task launch と次回の resume にだけ適用され、すでに動いている process には適用されない。",
"workflow": "ワークフロー",
"workflowApprovalRequired": "承認待ち",
"workflowAttentionStale": "最後に確認した status。GitHub から新しい workflow result を取得できなかった。",
"workflowAttentionWorkflows": "Workflow: {{names}}",
"workflowAwaitingApproval": "maintainer の承認待ち",
"workflowNeedsAttention": "Workflow に対応が必要",
"workflowStatusUnavailable": "Workflow status を取得できない",
"workflowStep": "ワークフローステップ",
"workflowStepPromptWrapHelp": "workflow step prompt はこの prompt を折り返す。たとえば、step prompt が <2>{{stepPrompt}}</2> なら、final prompt は <5>{{finalPrompt}}</5> になる。",
"workspaceAutomationNowUsesTheVerified": "workspace automation は確認済み App installation を使うようになった。",
"workspaceGithubAccess": "Workspace の GitHub アクセス",
"workspaceGithubConnectionRemoved": "Workspace の GitHub 接続を削除した",
"workspaceGithubIdentity": "Workspace の GitHub identity",
"yourReviewIsRequested": "レビュー依頼あり",
"timeAgoJustNow": "たった今",
"timeAgoMinutes_one": "{{count}}分前",
"timeAgoMinutes_other": "{{count}}分前",
"timeAgoHours_one": "{{count}}時間前",
"timeAgoHours_other": "{{count}}時間前",
"timeAgoDays_one": "{{count}}日前",
"timeAgoDays_other": "{{count}}日前",
"timeAgoWeeks_one": "{{count}}週間前",
"timeAgoWeeks_other": "{{count}}週間前",
"timeAgoMonths_one": "{{count}}か月前",
"timeAgoMonths_other": "{{count}}か月前",
"timeAgoYears_one": "{{count}}年前",
"timeAgoYears_other": "{{count}}年前",
"appRegistrationsUnavailable": "GitHub App 登録は利用不可",
"failedToFetchPrCommits": "PR のコミット取得に失敗",
"failedToFetchPrFeedback": "PR フィードバック取得に失敗",
"failedToFetchPrFiles": "PR ファイル取得に失敗",
"failedToLoadCiAutomationOptions": "CI 自動化オプションの読み込みに失敗。",
"failedToResetAutoFixPrompt": "自動修正プロンプトのリセットに失敗。",
"failedToRetryAutoMerge": "自動マージの再試行に失敗。",
"failedToSaveAutoFixPrompt": "自動修正プロンプトの保存に失敗。",
"failedToSearchGitHub": "GitHub 検索に失敗",
"failedToUpdateCiAutomation": "CI 自動化の更新に失敗。",
"pullRequestNumbered": "プルリクエスト #{{number}}",
"mergeQueueEstimate_one": "推定マージ時間: {{count}} 分。",
"mergeQueueEstimate_other": "推定マージ時間: {{count}} 分。",
"mergeQueuePosition": "位置 {{position}}",
"mergeQueuePositionAndEstimate_one": "位置 {{position}}。推定マージ時間: {{count}} 分。",
"mergeQueuePositionAndEstimate_other": "位置 {{position}}。推定マージ時間: {{count}} 分。",
"mergeQueuePositionAndSubMinuteEstimate": "位置 {{position}}。推定マージ時間: 1 分未満。",
"mergeQueueStateAwaitingChecks": "チェック待ち",
"mergeQueueStateLocked": "ロック中",
"mergeQueueStateMergeable": "マージ可能",
"mergeQueueStateQueued": "キュー済み",
"mergeQueueStateUnmergeable": "マージ不可",
"mergeQueueStatus": "マージキュー: {{state}}",
"mergeQueueSubMinuteEstimate": "推定マージ時間: 1 分未満。",
"autoMergeOrRequeueWhenReady": "準備できたら自動マージ、または再キュー",
"autoMergeRetryAccepted": "自動マージの再試行を要求済み。",
"autoFixQueueSupportQueued": "失敗したキューチェックか競合を修復する。",
"autoFixQueueSupportEnable": "有効にすると、この対処可能なキュー失敗をエージェントへ送る。",
"autoFixQueueSupportRequested": "この削除の修復を要求済み。",
"autoFixQueueSupportNotActionable": "この削除に自動修復なし。",
"autoFixQueueSupportNewHead": "修正で新しいコミットが作成された。",
"autoMergeQueueSupportQueued": "現在のキュー試行はすでに有効。",
"autoMergeQueueSupportDisabled": "自動再キューはオフ。",
"autoMergeQueueSupportWaitingForCommit": "再キュー前に新しいコミット待ち。",
"autoMergeQueueSupportWaitingForChecks": "必須チェック待ち。",
"autoMergeQueueSupportNewHead": "新しいコミットがチェック通過後に再キューする。",
"automationForPrQueued": "PR #{{number}} はマージキュー中",
"automationForPrRemoved": "PR #{{number}} は削除された: {{cause}}",
"automationForPrRemovedGeneric": "PR #{{number}} はマージキューから削除された",
"ciAutomationQueueRecoveryHelp": "自動修正は通常のマージ競合と対処可能なキュー削除を直す。自動マージは対象ヘッドを送るか、新しいコミット後に再キューする。両方の制御で修復と再キューループを作る。Kandev は削除後に同じヘッドを再キューしない。",
"mergeQueueAutomation": "マージキュー自動化",
"mergeQueueRecovery": "マージキュー復旧",
"mergeQueueRemovalCauseChecksFailed": "チェック失敗",
"mergeQueueRemovalCauseChecksTimedOut": "チェックタイムアウト",
"mergeQueueRemovalCauseConflict": "マージ競合",
"mergeQueueRecoveryStatusQueued": "マージキュー試行中。自動マージは重複送信しない。",
"mergeQueueRecoveryStatusActionable": "キュー削除に対応必要。自動修復を有効にしてエージェントへ送信。",
"mergeQueueRecoveryStatusNotActionable": "キュー削除を記録。今回削除に自動修復なし。",
"mergeQueueRecoveryStatusRepairRequested": "この削除の修復を要求済み。",
"mergeQueueRecoveryStatusRepairRequestedWaiting": "修復要求済み。再キュー前に新しいコミット待ち。",
"mergeQueueRecoveryStatusWaitingForCommit": "再キュー前に新しいコミット待ち。",
"mergeQueueRecoveryStatusWaitingForChecks": "新しい head 検出。必須チェック待ち。"
}
+384
View File
@@ -0,0 +1,384 @@
{
"actionApprove": "承認",
"actionAssignees": "担当者",
"actionFailed": "{{action}}に失敗しました",
"actionHint": "アクションのヒント {{index}}",
"actionLabel": "アクションラベル {{index}}",
"actionLabels": "ラベル",
"actionMerge": "マージ",
"actionPrompt": "アクションのプロンプト {{index}}",
"actionReply": "返信",
"actionResolve": "解決",
"actionReviewers": "レビュー担当者",
"actionUnapprove": "承認を取り消す",
"actionUnlink": "リンク解除",
"actions": "アクション",
"active": "有効",
"addAllDiscussionsToTaskContext": "すべての議論をタスクコンテキストに追加",
"addDiscussionToTaskContext": "議論をタスクコンテキストに追加",
"addIssueAction": "Issueアクションを追加",
"addMrAction": "MRアクションを追加",
"agentProfile": "エージェントプロフィール",
"allProjects": "すべてのプロジェクト",
"alwaysDelete": "常に削除",
"apply": "適用",
"approvalRemoved": "承認が削除されました",
"approvals": "承認",
"approve": "承認",
"approvedCount_one": "{{count}}件承認済み",
"approvedCount_other": "{{count}}件承認済み",
"assignees": "担当者",
"assigneesUpdated": "担当者を更新しました",
"authenticationMethod": "認証方法",
"auto": "自動",
"autoKeepEngagedTasks": "自動, エンゲージ中のタスクを維持",
"between60And3600Seconds": "60秒から3600秒の間で指定してください。",
"bugBackend": "バグ, バックエンド",
"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}}</1> に接続できませんでした: {{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": "例: 要レビュー",
"eGSprint42": "例: スプリント 42",
"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": "一致する issue が{{count}}件見つかった",
"foundMatchingIssues_other": "一致する issues が{{count}}件見つかった",
"foundMatchingMergeRequests_one": "一致するマージリクエストが{{count}}件見つかった",
"foundMatchingMergeRequests_other": "一致するマージリクエストが{{count}}件見つかった",
"gitlabAuthenticationMethodUpdated": "GitLab 認証方法を更新した",
"gitlabCredentialsAreConfiguredButAuthentication": "GitLab 認証情報は設定済みだが、認証に失敗した。再接続: ",
"gitlabHostUrlOverrideForSelf": "GitLab ホスト URL。セルフマネージド環境では上書き、{{host}} ならデフォルトのままにする。",
"gitlabIsNotConnectedConfigureGitlab": "GitLab は未接続。GitLab 認証を設定: ",
"gitlabIssueWatch": "GitLabのIssueウォッチ",
"gitlabMergeRequest": "GitLab マージリクエスト !{{mriid}}",
"gitlabMergeRequests": "GitLab マージリクエスト {{length}}件",
"gitlabQueryParameters": "GitLab クエリパラメータ",
"gitlabQuickActionsReset": "GitLab クイックアクションをリセットした",
"gitlabQuickActionsSaved": "GitLab クイックアクションを保存した",
"gitlabRejectedAction": "GitLab が操作を拒否した。",
"gitlabRejectedTheAction": "GitLab が操作を拒否した。",
"gitlabRejectedTheMergeRequestLink": "GitLab がマージリクエストのリンクを拒否した。",
"gitlabRejectedTheRequest": "GitLab がリクエストを拒否した。",
"gitlabReviewWatch": "GitLab レビュー watch",
"gitlabTokenCleared": "GitLab トークンを消去した",
"gitlabWatchCouldNotBeSaved": "GitLab watch を保存できなかった",
"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": "issue watch の確認に失敗",
"issueWatchCreated": "issue watch を作成した",
"issueWatchCreationFailed": "Issue watch 作成失敗",
"issueWatchDeleted": "Issue watch 削除済み",
"issueWatchDeletionFailed": "Issue watch 削除失敗",
"issueWatchDialogDescription": "新しく一致した GitLab issue から workspace task を自動作成。",
"issueWatchResetFailed": "Issue watch リセット失敗",
"issueWatchReset_one": "Issue watch リセット。task {{count}} 件削除",
"issueWatchReset_other": "Issue watch リセット。tasks {{count}} 件削除",
"issueWatchUpdateFailed": "Issue watch 更新失敗",
"issueWatchUpdated": "Issue watch 更新済み",
"issueWatches": "Issue watch 一覧",
"issues": "Issue",
"kindIssue": "issue",
"kindMergeRequest": "merge request",
"label": "ラベル",
"labels": "ラベル",
"labelsUpdated": "ラベル更新済み",
"lastChecked": "最終チェック",
"lastCheckedAt": "最終チェック {{value}}",
"leaveEmptyToMatchMergeRequests": "空のままなら、レビュー依頼された merge request に一致。パラメータ追加すると、その reviewer 条件を明示的に置き換え。",
"linkAnotherMergeRequest": "別の merge request をリンク",
"linkGitlabMergeRequest": "GitLab merge request をリンク",
"linkMergeRequest": "merge request をリンク",
"linkedMergeRequest": "リンク済み merge request",
"linking": "リンク中…",
"loadingMergeRequest": "merge request 読み込み中",
"loggedInAs": "<1>{{username}}</1> としてログイン中",
"match": "一致",
"maximumInFlightTasks": "同時進行 task 上限",
"merge": "マージ",
"merging": "マージ中…",
"mergeRequest": "Merge request !{{mriid}}",
"mergeRequestApproved": "merge request 承認済み",
"mergeRequestLabels": "merge request ラベル",
"mergeRequestMerged": "merge request マージ済み",
"mergeRequestReviewWatches": "merge request レビュー watch",
"mergeRequestUnlinked": "merge request リンク解除済み",
"mergeRequestUrl": "マージリクエストURL",
"mergeRequests": "Merge request",
"mergeRequestsAndIssues": "{{host}} · merge request と issue",
"mergeThisMergeRequest": "この merge request をマージ?",
"mergeability": "マージ可否",
"milestoneFilterLabel": "マイルストーンで絞り込む",
"mockTest": "モック(テスト)",
"mrs": "MR",
"name": "名前",
"never": "なし",
"neverDelete": "削除しない",
"newWatch": "新しいウォッチ",
"noChangedFiles": "変更されたファイルはありません",
"noCommits": "コミットはありません",
"noDiscussionsYet": "まだ議論はありません",
"noIssuesMatchThisFilter": "このフィルターに一致する issue はありません。",
"noLimit": "制限なし",
"noMergeRequestLinked": "このセッションにリンクされたマージリクエストはありません。",
"noMergeRequestsMatchThisFilter": "このフィルターに一致するマージリクエストはありません。",
"noNewIssuesMatched": "新しい issue は見つかりませんでした",
"noNewMergeRequestsMatched": "新しいマージリクエストは見つかりませんでした",
"noPipeline": "パイプラインなし",
"noSavedQueriesYet": "保存済みクエリはまだありません。",
"noTaskCreatedYet": "まだタスクは作成されていません",
"noWatchesConfigured": "ウォッチは設定されていません。",
"noneAssigned": "未割り当て",
"notConfigured": "未設定",
"notConnected": "接続されていません",
"notificationStatusUnavailable": "通知ステータスを取得できません",
"notificationUpdateFailed": "通知の更新に失敗しました",
"openGitlabFilters": "GitLab フィルターを開く",
"openInGitlab": "GitLab で開く",
"openMergeRequestInGitlab": "GitLab でマージリクエストを開く",
"openSettingsToSeeMrsAndIssues": "<0>設定 → GitLab</0> で、マージリクエストと issue を表示できます。",
"optionalCapPollingResumesWhenActive": "任意の上限。アクティブなタスクがこの数を下回るとポーリングを再開します。",
"optionalCommaSeparatedGitlabLabelsThat": "一致する issue に含まれている必要がある、任意のカンマ区切りの GitLab ラベル。",
"optionalCommaSeparatedNamespaceProjectPaths": "任意のカンマ区切りの namespace/project パス。空欄の場合は、アクセス可能なすべてのプロジェクトを監視します。",
"optionalGitlabApiQueryParametersSuch": "任意の GitLab API クエリパラメータ。たとえば {{example}} です。",
"optionalOtherwiseUsesTheWorkflowStep": "任意。指定しない場合は、workflow step のデフォルトを使用します。",
"pasteAMergeRequestUrlFrom": "この workspace で設定されている GitLab ホストから、マージリクエスト URL を貼り付けてください。",
"pauseWatch": "ウォッチを一時停止",
"paused": "一時停止中",
"personalAccessToken": "個人アクセストークン",
"pipeline": "パイプライン",
"pollGitlabForMergeRequestsAwaiting": "レビュー待ちの GitLab マージリクエストを取得し、新規一致ごとにタスク1件作成。",
"pollGitlabIssuesAndCreateOne": "GitLab の issue を取得し、新規一致ごとにタスク1件作成。",
"pollIntervalSeconds": "取得間隔 (秒)",
"pollingAndCleanup": "取得とクリーンアップ",
"project": "プロジェクト",
"projectPaths": "プロジェクトパス",
"projects": "プロジェクト",
"promptSentToTheSelectedAgent": "新規一致ごとに、選択したエージェントプロファイルへ送るプロンプト。",
"placeholderActionTitle": "マージリクエストまたは issue のタイトル",
"placeholderActionUrl": "マージリクエストまたは issue の URL",
"placeholderDescription": "説明本文",
"placeholderIssueIid": "課題 IID",
"placeholderMergeRequestIid": "マージリクエスト IID",
"placeholderProjectPath": "プロジェクトパス",
"promptUsingUrlAndTitle": "{{url}} と {{title}} を使ってプロンプト",
"query": "クエリ",
"quickActions": "クイックアクション",
"reconnectRequired": "再接続必要",
"refresh": "更新",
"refreshFailed": "更新失敗: {{error}}",
"refreshFailedShowingCached": "GitLab 更新失敗: {{error}}。最後に正常読み込みしたレビュー data を表示中。",
"refreshMergeRequest": "マージリクエストを更新",
"remove": "{{label}} を削除",
"removeFromAssignees": "{{username}} を担当者から外す",
"removeFromReviewers": "{{username}} をレビュアーから外す",
"reply": "返信",
"replyAdded": "返信追加",
"replyToThisDiscussion": "この discussion に返信",
"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": "監視を更新",
"verifyingGitlabConnection": "GitLab接続を確認中",
"watchDeletionFailed": "監視の削除に失敗",
"workflow": "ワークフロー",
"workflowStep": "ワークフローステップ",
"workflowThatReceivesNewTasks": "新しいタスクを受け取るワークフロー。",
"yourTokenMayStillBeValid": "トークンはまだ有効かも。ネットワークか上流の問題っぽい。",
"mrAutomationClosedLabel": "MRをマージせずにクローズ",
"mrAutomationDescription": "リンク済みマージリクエストでレビュー依頼が来た時、またはマージかクローズされた時に、このタスクのエージェントを起こす。通知先は、このタスクで今アクティブなセッションキュー。",
"mrAutomationMergedLabel": "MRをマージ済み",
"mrAutomationRetry": "再試行",
"mrAutomationReviewRequestedHelp": "workspaceの接続済みGitLabアカウントがレビュアーに追加された時にエージェントを起こす。削除後に再追加された場合は新しい依頼として扱う。MR更新中ずっと割り当てられたままなら依頼扱いにならない。",
"mrAutomationReviewRequestedHelpAriaLabel": "レビュー依頼通知の説明",
"mrAutomationReviewRequestedLabel": "レビュー依頼あり",
"mrAutomationTerminalHelp": "レビュー作業が終わった時にエージェントを起こす。どちらか、または両方を選ぶ。",
"mrAutomationTerminalHelpAriaLabel": "最終MR状態通知の説明",
"mrAutomationToggleAriaLabel": "レビュー追従自動化を切り替え",
"mrAutomationTriggerLabel": "レビュー追従",
"mrAutomationUpdateFailedDescription": "設定は保存されなかった。",
"mrAutomationUpdateFailedTitle": "MR自動化の更新に失敗",
"mrAutomation": "自動化",
"mrAutomationAppliesToMR": "!{{iid}}に適用",
"mrAutoFixCiAndAddressComments": "CIを自動修正してコメント対応",
"mrAutoFixPrompt": "自動修正プロンプト",
"mrAutoFixPromptDescription": "このプロンプトはこのタスク専用。空ならデフォルトプロンプトを使う。KandevにMRフィードバックのスナップショットも入れたい時は<0>{{placeholder}}</0>を追加。",
"mrAutoFixRoundExplanation": "このMRで自動修正は{{current}}/{{max}}ラウンド使った。1ラウンドは、KandevがMR自動修正メッセージを送るかキューに入れた時に数える。Kandevは新しい自動修正を始める前にパイプライン完了を待つので、エージェントは最後の失敗ジョブと今の議論コメントをまとめて受け取れる。すでにキュー済みの自動修正メッセージを更新しても、追加ラウンドは使わない。これが{{max}}/{{max}}で、更新待ちの自動修正メッセージも残っていない時は、KandevはこのMRの自動修正を止める。無限ループ防止。手動レビュー後に無効化してから再有効化すれば最初からやり直し。",
"mrAutoMergeWhenReady": "準備できたら自動マージ",
"mrAutomationExplainAutoMerge": "自動マージ条件を説明",
"mrAutoMergeReadyExplanation": "Kandevは、このMRが完全に準備できた瞬間に自動でマージする。条件は、openでdraftではないこと、パイプライン成功、未解決の議論ゼロ、GitLabのマージ準備チェック一致。プロジェクトで承認が必要なら、それもGitLabのチェックに含まれる。MRが承認され、他条件も全部そろったら、Kandevは追加確認なしで即マージする。",
"mrAutomationExplainOptions": "自動化オプションを説明",
"mrAutomationWatchesLinkedMergeRequest": "1分同期ループ中に、このタスクのリンク済みマージリクエストを監視する。自動修正は新しく見つかったパイプライン失敗や議論コメントのタスクプロンプトを積み、 自動マージはMR準備完了を待つ。通知スイッチは、workspaceの接続済みGitLabアカウントにレビュー依頼が来た時か、MRが終端状態になった時に、このタスクのエージェントを起こす。レビュー依頼は、後の通知前にアカウントの現在の依頼状態を静かに基準化する。",
"mrAutoFixInsertMrFeedback": "MRフィードバックを挿入",
"mrAutomationEditDefaultPrompt": "デフォルトプロンプトを編集",
"mrAutomationTaskAutoFixPrompt": "タスク自動修正プロンプト",
"mrAutomationPlaceholderExplanation": "プレースホルダーは、今のMR識別子、新規または変更された失敗パイプラインジョブのリンク、そしてファイル・行・本文付きの新規または変更された未解決議論コメントを入れる。",
"mrAutomationOmitPlaceholderExplanation": "エージェントにブランチをpullかfetchさせて、KandevのスナップショットなしでGitLab自体を見せたいなら、プレースホルダーを省く。",
"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}} 前に更新",
"mrTaskStatusState": "状態",
"mrTaskStatusReview": "レビュー",
"mrTaskStatusCi": "CI",
"mrTaskStatusMerge": "マージ",
"mrTaskStatusIid": "MR !{{iid}}",
"mergeRequestStatus": "マージリクエスト !{{iid}} の状態",
"mergeRequestStatuses_one": "マージリクエスト {{count}} 件の状態",
"mergeRequestStatuses_other": "マージリクエスト {{count}} 件の状態",
"merged": "マージ済み",
"closed": "クローズ済み",
"approved": "承認済み",
"awaitingApproval": "承認待ち",
"passed": "合格",
"failed": "失敗",
"inProgress": "進行中",
"readyToMerge": "マージ準備完了",
"mergeable": "マージ可能",
"unresolvedDiscussions": "未解決の議論",
"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": "マージリクエスト状況を閉じる",
"gitlabRejectedAssociation": "GitLab が関連付けを拒否した。",
"taskCreatedMrNotLinked": "タスク作成したが、マージリクエストはリンクされなかった",
"taskCreatedMrNotLinkedDescription": "タスクを開いて Link GitLab merge request で再試行。{{error}}",
"memberSearchFailed": "メンバー検索失敗",
"addedMrFeedbackToTaskContext": "マージリクエストのフィードバックをタスクコンテキストに追加した",
"failedToLoadMergeRequest": "マージリクエスト読み込み失敗",
"failedToLoadMrAutomationOptions": "MR 自動化オプションの読み込み失敗。",
"failedToSearchGitLab": "GitLab の検索失敗",
"presetAssigned": "担当",
"presetAuthored": "作成者",
"presetCreated": "作成日",
"presetReviewRequested": "レビュー依頼済み"
}
+25
View File
@@ -0,0 +1,25 @@
{
"tabLabel": "履歴",
"emptyTitle": "{{workspace}} に履歴なし。",
"emptyTitleUnnamedWorkspace": "このワークスペースに履歴なし。",
"emptyDescription": "このタブは、エージェントが聞いたのに誰も答えなかった質問を並べる。後続作業で置き換わったもの、セッション終了で残ったもの、読めないもの。消すためのキューじゃなく、読み取り専用の監査証跡。",
"errorTitle": "履歴を読み込めなかった",
"errorDescription": "このワークスペースの履歴にある質問の読み込みで問題発生。",
"retry": "再試行",
"reasonSuperseded": "後続作業で置き換え",
"reasonSessionEnded": "回答なしでセッション終了",
"reasonUnreadable": "読み取り不可",
"clarificationLabel": "確認質問",
"permissionLabel": "許可リクエスト",
"noContent": "この質問は読めなかった。",
"openTask": "タスクを開く",
"copyId": "識別子をコピー",
"copyIdSuccess": "バンドル識別子をコピーした。",
"copyIdFailed": "バンドル識別子をコピーできなかった。",
"turnAsked": "{{turn}}回目で質問",
"turnSupersededBy": "{{askingTurn}}回で質問済み。{{supersedingTurn}}回で上書き済み",
"stepStartsNoAgent": "このタスクの現在ステップはエージェントを開始しない。",
"truncatedNotice": "過去の質問はさらにある。",
"loadMore": "履歴をさらに読み込む",
"loadMoreError": "履歴をさらに読み込めなかった。もう一度試して。"
}
+200
View File
@@ -0,0 +1,200 @@
{
"addAllCommentsToChatContext": "全コメントをチャット文脈へ追加",
"addAllFailedChecksToChatContext": "失敗したチェックを全部チャット文脈へ追加",
"addAllReviewsToChatContext": "全レビューをチャット文脈へ追加",
"actionFromReviewer": "{{name}}からの{{action}}",
"addFailuresToChatContext": "{{name}} の失敗をチャット文脈へ追加",
"addReviewComment": "レビューコメントを追加",
"addWholeThreadToChatContext": "スレッド全体をチャット文脈へ追加",
"addDetailsAboutThisChange": "この変更の詳細を追加...",
"allRepos": "全リポジトリ",
"anErrorOccurred": "エラー発生",
"authenticated": "認証済み",
"authenticationFailed": "認証失敗: {{error}}",
"authRequiredHeading": "{{name}} の認証が必要",
"authRequiredInline": "{{name}} の認証が必要。",
"approved": "承認済み",
"approvedCount_one": "{{count}}件承認",
"approvedCount_other": "{{count}}件承認",
"actionRequired": "対応必要",
"awaitingReview": "レビュー待ち",
"botComments_one": "ボットコメント ({{count}})",
"botComments_other": "ボットコメント ({{count}})",
"branchPushedNotCreated": "ブランチ push 済み。{{shortName}} は未作成",
"branchWasPushedRetryCreation": "ブランチは push 済み。{{longName}} の作成を再試行。",
"by": "by",
"checkedRelative": "・{{relative}} にチェック済み",
"changesRequested": "変更要求",
"changesRequestedCount_one": "{{count}}件の変更要求",
"changesRequestedCount_other": "{{count}}件の変更要求",
"chooseReview": "レビューを選択",
"chooseReviewToOpen": "開くレビューを選択。",
"ciChecks": "CI チェック{{summary}}",
"closePullRequestStatus": "PR 閉じるステータス",
"commented": "コメント済み",
"comments": "コメント",
"commentCount_one": "{{count}}件のコメント",
"commentCount_other": "{{count}}件のコメント",
"commentUrlCopied": "コメントURLをコピーしました",
"commit": "コミット",
"commitChangedFiles_one": "変更されたファイル{{count}}件をコミット",
"commitChangedFiles_other": "変更されたファイル{{count}}件をコミット",
"commitChanges": "変更をコミット",
"commitChangesScoped": "変更をコミット; {{scopedRepo}}",
"commitsAheadAriaLabel": "先行しているコミット{{value}}件",
"commitsBehindAriaLabel": "遅れているコミット{{value}}件",
"committingEllipsis": "コミット中...",
"configureAUtilityAgentInSettings": "AI生成を有効にするには、設定でユーティリティエージェントを構成してください",
"copiedConfigTo": "{{label}}の設定を{{targetName}}にコピーしました。",
"copyConfig": "設定をコピー",
"copyConfigSettingsOnly": "<4>{{sourceName}}</4> から{{label}}の設定のみを別のワークスペースにコピーします。これにより、コピー先ワークスペースの現在の{{label}}設定は上書きされます。ウォッチャーと自動化はコピーされません。",
"copyConfigToAnotherWorkspace": "設定を別のワークスペースにコピー",
"copyConfiguration": "{{label}}の設定をコピー",
"copyConfigWithCredentials": "<4>{{sourceName}}</4> から{{label}}の設定と認証情報を別のワークスペースにコピーします。これにより、コピー先ワークスペースの現在の{{label}}設定は上書きされます。ウォッチャーと自動化はコピーされません。",
"copyChangeRequestUrl": "プルリクエストURLをコピー",
"copyCommentUrl": "コメントURLをコピー",
"copyingConfigTo": "{{label}}の設定を{{targetName}}にコピーしています...",
"createAsDraft": "下書きとして作成",
"createdSuccessfully": "{{longName}}の作成に成功しました",
"createdLinkNeedsAttention": "{{shortName}}を作成しました。タスクリンクに対応が必要です",
"associationRetryViaTaskMenu": "{{message}}。再試行するには、タスクメニューのリンクを使用してください。",
"taskAssociationCouldNotBeSaved": "タスクの関連付けを保存できませんでした。",
"createFailed": "{{shortName}}の作成に失敗しました",
"createLongName": "{{longName}}を作成",
"createPr": "PRを作成",
"createPrCommitsAhead_one": "PRを作成(先行コミット{{count}}件)",
"createPrCommitsAhead_other": "PRを作成(先行コミット{{count}}件)",
"createScoped": "{{longName}}を作成; {{scopedRepo}}",
"createShortName": "{{shortName}}を作成",
"creatingEllipsis": "作成中...",
"creatingFrom": "<4>{{displayBranch}}</4> から{{shortName}}を作成中",
"creatingFromInto": "<4>{{displayBranch}}</4> から <6>{{baseBranch}}</6> へ{{shortName}}を作成中",
"changeRequestUrlCopied": "プルリクエストURLをコピーしました",
"deleteSavedQueryNamed": "{{label}}の保存済みクエリを削除",
"describeYourChanges": "変更内容を説明してください...",
"description": "説明",
"dismissed": "閉じました",
"draftCreated": "{{shortName}} の下書きが作成されました",
"enableIntegrationNamed": "{{name}} を有効にする",
"enterCommitMessage": "コミットメッセージを入力...",
"failedToCopyConfig": "設定のコピーに失敗しました: {{err}}",
"failed": "失敗",
"failedToUnlinkPullRequest": "プルリクエストのリンク解除に失敗しました",
"failedCount_one": "{{count}} 件失敗",
"failedCount_other": "{{count}} 件失敗",
"failedToDeleteSavedQuery": "保存済みクエリの削除に失敗しました",
"failedToSaveSavedQuery": "保存済みクエリの保存に失敗しました",
"failedToUpdateDefaultView": "デフォルト表示の更新に失敗しました",
"filesChanged_one": "<0>{{count}}</0> ファイルが変更されました",
"filesChanged_other": "<0>{{count}}</0> ファイルが変更されました",
"forcePush": "強制プッシュ",
"fromBranch": "{{branch}} から",
"generateCommitDescriptionWithAi": "AIでコミットの説明を生成",
"generateCommitMessageWithAi": "AIでコミットメッセージを生成",
"generateDescriptionWithAi": "AIで {{shortName}} の説明を生成",
"generateTitleWithAi": "AIで {{shortName}} のタイトルを生成",
"general": "(一般)",
"inProgress": "進行中",
"lastSynced": "最後の同期: {{relative}}",
"loading": "読み込み中…",
"loadingChangeRequest": "変更リクエストを読み込み中",
"longNameTitle": "{{longName}} のタイトル",
"longNameTitlePlaceholder": "{{longName}} のタイトル...",
"merge": "マージ",
"mergedRelative": "{{relative}} にマージ済み",
"noChecks": "チェックなし",
"noChecksHaveStarted": "チェックはまだ開始されていません",
"noChangesToCommit": "コミットする変更はありません",
"noCommentsYet": "コメントはまだありません",
"noReviewsYet": "レビューはまだありません",
"noSavedQueriesYet": "保存済みクエリはまだありません",
"openDetails": "{{title}} の詳細を開く",
"openedRelative": "{{relative}} にオープン",
"openReview": "レビューを開く",
"openReviewNumber": "レビュー #{{number}} を開く",
"ontoBranch": "{{branch}} に",
"other": "その他",
"otherCount_one": "{{count}}件",
"otherCount_other": "{{count}}件",
"overall": "全体",
"passRate": "合格率",
"passed": "合格",
"passedCount_one": "{{count}}件合格",
"passedCount_other": "{{count}}件合格",
"pending": "保留中",
"pendingCount_one": "{{count}}件保留中",
"pendingCount_other": "{{count}}件保留中",
"pendingReview": "レビュー保留中",
"openVcsOptions": "VCSオプションを開く",
"pickActionThenRepo": "操作を選んでからリポジトリ選択",
"pickARepositoryForCommit": "Commit用のリポジトリを選択",
"pickARepositoryForCreatePr": "PR作成用のリポジトリを選択",
"pickARepositoryForPush": "Push用のリポジトリを選択",
"pickARepositoryForRebase": "Rebase用のリポジトリを選択",
"pull": "Pull",
"pullRequest": "プルリクエスト",
"pullRequestCount_one": "{{count}}件のプルリクエスト",
"pullRequestCount_other": "{{count}}件のプルリクエスト",
"pullRequestNumber": "PR #{{number}}",
"pullRequestShortCount_one": "{{count}}件のPR",
"pullRequestShortCount_other": "{{count}}件のPR",
"pullRequestStatusSummary": "プルリクエストのCIステータス、レビュー、チェックの概要。",
"pullRequestUnlinked": "プルリクエストのリンク解除済み",
"linkedProviderPullRequests_one": "{{count}}件の{{provider}}プルリクエストがリンク済み",
"linkedProviderPullRequests_other": "{{count}}件の{{provider}}プルリクエストがリンク済み",
"push": "Push",
"pushCommitsToRemote_one": "{{count}}件のコミットをリモートへPush",
"pushCommitsToRemote_other": "{{count}}件のコミットをリモートへPush",
"rebase": "Rebase",
"rebaseOntoBranchBehind": "{{branch}}にRebase ({{behind}}遅れ)",
"reconnectProvider": "{{name}}を再接続",
"registeredProvider": "登録済みプロバイダ",
"refresh": "更新",
"repository": "リポジトリ",
"replyToThread": "スレッド{{threadId}}に返信",
"requestedCount_one": "{{count}}件リクエスト済み",
"requestedCount_other": "{{count}}件リクエスト済み",
"retry": "再試行",
"reviewUnavailable": "レビュー利用不可。",
"reviewCount_one": "{{count}} 件のレビュー",
"reviewCount_other": "{{count}} 件のレビュー",
"reviewerTeamName": "{{name}} (チーム)",
"reviews": "レビュー{{summary}}",
"running": "実行中",
"retryShortName": "{{shortName}} を再試行",
"saveCurrentQuery": "現在のクエリを保存",
"saving": "保存中",
"savedQueries": "保存済み",
"savedQueryDefaultUpdateInProgress": "既定ビュー更新中… {{action}}",
"setSavedQueryAsDefaultView": "{{label}} を既定ビューに設定",
"clearSavedQueryAsDefaultView": "{{label}} の既定ビューを解除",
"selectAWorkspace": "ワークスペースを選択…",
"shortNameCreated": "{{shortName}} を作成済み",
"closedRelative": "{{relative}}にクローズ",
"stageAllChangesBeforeCommitting": "コミット前にすべての変更をステージ",
"targetWorkspace": "対象ワークスペース",
"timedOut": "タイムアウト",
"untitledPullRequest": "無題の pull request",
"unlinkPullRequestNumber": "pull request #{{number}} のリンク解除",
"unresolvedComments_one": "未解決コメント {{count}} 件",
"unresolvedComments_other": "未解決コメント {{count}} 件",
"unknownError": "不明なエラー",
"updatedAgo": "{{elapsed}} 前に更新",
"updatedJustNow": "たった今更新",
"viewPullRequestExternally": "pull request #{{number}} を外部で表示",
"defaultRepository": "既定リポジトリ",
"filterRepositories": "リポジトリを絞り込み…",
"noRepositoriesFound": "リポジトリなし",
"query": "クエリ",
"queryName": "名前",
"queryNamePlaceholder": "例. Needs my review",
"saveQuery": "クエリを保存",
"waitingForTheNextBackendHealth": "次のバックエンドヘルスチェック待ち…",
"cursorPaginationSummary_one": "ページ {{page}} ・ {{count}} 件の結果",
"cursorPaginationSummary_other": "ページ {{page}} ・ {{count}} 件の結果",
"allRepositories": "すべてのリポジトリ",
"changeRequestCreationFailed": "変更リクエスト作成失敗",
"resultCount_one": "結果 <count>{{count}}</count>",
"resultCount_other": "結果 <count>{{count}}</count>",
"loadingResults": "結果を読み込み中…"
}
+227
View File
@@ -0,0 +1,227 @@
{
"aCredentialIsRequired": "認証情報が必要。",
"actions": "操作",
"active": "有効",
"addPreset": "プリセットを追加",
"agentProfile": "エージェントプロフィール",
"aJiraSiteUrlIsRequired": "JiraサイトURLが必要。",
"anEmailAddressIsRequired": "メールアドレスが必要。",
"apiToken": "APIトークン",
"apiTokenRecommended": "APIトークン(推奨)",
"apply": "適用",
"assignee": "担当者",
"assigneeAnyone": "誰でも",
"assigneeMe": "自分",
"assigneeUnassigned": "未割り当て",
"atlassianCloud": "Atlassian Cloud",
"atlassianJqlHelp": "Atlassian JQL。ウォッチャーはこのクエリをポーリングし、新しく一致したチケットごとに1件タスクを作成。",
"authenticationMethod": "認証方法",
"availablePlaceholders": "利用可能なプレースホルダー:",
"browserSessionCookie": "ブラウザセッションCookie",
"builtinViewAssignedToMe": "自分に割り当て",
"builtinViewUnassigned": "未割り当て",
"connectWithAtlassian": "Atlassianと接続",
"connecting": "接続中...",
"oauth2": "OAuth 2.0",
"oauthConnected": "OAuthで接続済み。トークンは自動更新。",
"oauthDescription": "Atlassian OAuth 2.1 と PKCE で認証。アプリ作成も認証情報も不要。クリックしてブラウザ経由で認可。トークンは期限切れで自動更新。",
"oauthStartFailed": "OAuth開始失敗: {{error}}",
"oauthTokenExpires": "トークン期限: {{date}}",
"oauthPasteInstructions": "新しいタブで認可完了",
"oauthPasteHelp": "Atlassianで承認後、localhost URLへリダイレクトされるが開かない。ブラウザのアドレスバーから完全なURLをコピーして下に貼り付け。",
"oauthPopupBlocked": "ブラウザが認可ウィンドウをブロックした。ポップアップ許可して再試行。",
"oauthComplete": "完了",
"oauthCancel": "キャンセル",
"oauthPasteInvalid": "無効なURL。code と state パラメータ含む完全なリダイレクトURLをコピーしたか確認。",
"builtIn": "組み込み",
"capOnOpenTasksCreatedBy": "このウォッチャーが作成する未完了タスク上限。上限なしなら空欄。上限到達時、新しい一致は次回ポーリングへ延期。",
"checkFailed": "確認失敗: {{error}}",
"checkingJiraStatus": "Jira状態確認中…",
"checkNow": "今すぐ確認",
"clear": "{{lowerCase}}をクリア",
"clearFilters": "フィルターをクリア",
"connectedAs": "{{name}} として接続中",
"connectThisWorkspaceToAtlassianCloud": "このワークスペースを Atlassian Cloud、またはセルフホストの Jira Server / Data Center インスタンスに接続します。資格情報は選択したワークスペースごとにサーバー側で暗号化して保存されます。",
"cookieExpired": "Cookie の有効期限が切れました。新しいものを貼り付けてください",
"cookieExpiresInDays_one": "Cookie の有効期限は {{count}} 日です",
"cookieExpiresInDays_other": "Cookie の有効期限は {{count}} 日です",
"cookieExpiresInHours_one": "Cookie の有効期限は {{count}} 時間です",
"cookieExpiresInHours_other": "Cookie の有効期限は {{count}} 時間です",
"cookieInstructions": "Atlassian タブで DevTools ({{shortcut}}) を開き、→\nApplication タブ → Storage → Cookies → {{host}} →\n\"{{cookieName}}\" という名前の行 (SSO テナントでは \"{{ssoCookieName}}\" ) を見つけて、→ Value 列をコピーし、→ 下に貼り付けてください。\nCookie 名や \"=\" は含めず、トークン値だけを貼り付けてください。",
"create": "作成",
"createATokenAt": "<2>{{url}}</2> でトークンを作成",
"createFailed": "作成に失敗しました: {{error}}",
"createJiraWatcher": "JIRA ウォッチャーを作成",
"createPatNoProfileLink": "Jira プロフィールの「Personal Access Tokens」から Personal Access Token を作成してください。必要なスコープ: read, write。",
"createPatWithProfileLink": "Jira プロフィール (<1>{{url}}</1>) の「Personal Access Tokens」から Personal Access Token を作成してください。必要なスコープ: read, write。",
"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 を再実行する間隔。最小 60s、最大 3600s。",
"icon": "アイコン",
"import": "インポート",
"importFromJira": "Jira からインポート",
"importFromJiraTicketUrlOr": "Jira チケットの URL かキーをインポート",
"importJiraTicket": "Jira チケットをインポート",
"initialStepForNewTasks": "新規タスクの初期ステップ。",
"instanceType": "インスタンスタイプ",
"interval": "間隔",
"intervalMinutes_one": "{{count}}m",
"intervalMinutes_other": "{{count}}m",
"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 を設定</2> してここにチケット表示。",
"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}}</4>, <7>{{url}}</7>, <10>{{title}}</10>, <13>{{description}}</13> が置換される。",
"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セッション期限切れ、またはステップアップ認証必要。再接続してこのチケット表示。"
}
+133
View File
@@ -0,0 +1,133 @@
{
"addRepositoryPullRequestSessionParent": "リスト行にリポジトリ、プルリクエスト、セッション、親、レビュー文脈を追加。",
"addTask": "タスク追加",
"allRepositories": "全リポジトリ",
"allPriorities": "全優先度",
"allWorkflows": "全ワークフロー",
"allWorkflowsTitleCase": "全ワークフロー",
"allWorkspaces": "全ワークスペース",
"approvalRequired": "承認必要",
"archive": "アーカイブ",
"archiveCount_one": "{{count}}件アーカイブ",
"archiveCount_other": "{{count}}件アーカイブ",
"archiveTask": "タスクをアーカイブ",
"autoStart": "自動開始",
"blockedByCount_one": "{{count}}件にブロック中",
"blockedByCount_other": "{{count}}件にブロック中",
"blockedByTasksTitle": "次を待機中: {{tasks}}",
"blockedFailed": "ブロッカーが失敗しました",
"blockedPredecessorFailed": "このタスクが依存しているタスクが失敗しました: {{tasks}}",
"boardNavigator": "ボードナビゲーター",
"cannotMoveTasksFromDifferentWorkflows": "異なるワークフローのタスクは移動できません",
"changesRequested": "変更を要求",
"chooseHowTasksAreOrderedIn": "このリストでタスクをどの順序で並べるか選択してください。",
"chooseStep": "{{stepLabel}}。ステップを選択してください。",
"chooseWorkflowAndStepShownOn": "ボードに表示するワークフローとステップを選択してください。",
"chooseWorkflowOrStep": "{{name}}、{{stepLabel}}。ワークフローまたはステップを選択してください。",
"clearSelection": "選択を解除",
"closePreview": "プレビューを閉じる",
"current": "現在",
"delete": "削除",
"deleteCount_one": "{{count}}件を削除",
"deleteCount_other": "{{count}}件を削除",
"deleteTask": "タスクを削除",
"detachFromParent": "親から切り離す",
"dismiss": "閉じる",
"displayOptions": "表示オプション",
"filters": "フィルター",
"dropOnAColumnToMove": "移動するには列にドロップしてください",
"githubIssue": "GitHubのIssue",
"githubPullRequest": "GitHub プルリクエスト",
"gitlabMergeRequest": "GitLab マージリクエスト",
"goToTask": "タスクへ移動",
"group": "グループ",
"groupTasksIntoSectionsByState": "タスクを状態、ワークフロー、リポジトリ、またはなしでセクションにまとめます。",
"healthIssues": "健康上の問題",
"improveKandev": "Kandev を改善する",
"jiraTicket": "Jira チケット",
"kanban": "カンバン",
"kandevHome": "Kandev ホーム",
"linearIssue": "Linear課題",
"link": "リンク",
"list": "リスト",
"listRows": "リスト行",
"loadingRepositories": "リポジトリを読み込んでいます...",
"menu": "メニュー",
"moreOptions": "その他のオプション",
"moveTo": "移動先",
"moveToStep": "{{step}} に移動",
"multiSelect": "複数選択",
"nextCapacity": "次の容量",
"nextStep": "次のステップ",
"noRepositories": "リポジトリなし",
"noSteps": "ステップなし",
"noStepsConfigured": "ステップ未設定。",
"noStepsConfiguredChooseAnotherWorkflow": "ステップ未設定。別のワークフローを選ぶか、Settings でステップ追加。",
"noTasks": "タスクなし",
"off": "オフ",
"openMenu": "メニューを開く",
"openMenuWithStatus": "{{description}} メニューを開く",
"openPreviewOnClick": "クリックでプレビューを開く",
"on": "オン",
"overWipLimit": "WIP 上限超え",
"pipeline": "パイプライン",
"pipelineRowPosition": "{{title}}、ステップ {{position}} / {{total}}",
"pipelineUnassignedStep": "未割り当て",
"previewPanel": "プレビューパネル",
"previousStep": "前のステップ",
"priority": "優先度",
"priorityCritical": "重大",
"priorityHigh": "高",
"priorityMedium": "中",
"priorityLow": "低",
"priorityIndicatorLabel": "優先度 {{priority}}",
"queuedCount_one": "{{count}} 件キュー",
"queuedCount_other": "{{count}} 件キュー",
"queuedForStep": "{{step}} にキュー",
"queuedSection": "キュー",
"reorderPositionAnnouncement": "{{title}}、位置 {{position}} / {{total}}",
"repository": "リポジトリ",
"searchPlaceholder": "検索...",
"searchSection": "検索",
"searchTasks": "タスクを検索",
"searchTasksPlaceholder": "タスクを検索...",
"selectRepository": "リポジトリを選択",
"selectTask": "タスク {{title}} を選択",
"selectWorkflow": "ワークフローを選択",
"sendToWorkflow": "ワークフローに送信",
"selectedFilterCount_one": "{{label}}: {{count}}件選択",
"selectedFilterCount_other": "{{label}}: {{count}}件選択",
"sentryIssue": "Sentryの問題",
"sessionCount_one": "{{count}}セッション",
"sessionCount_other": "{{count}}セッション",
"showArchived": "アーカイブ表示",
"showTaskDetails": "タスク詳細表示",
"sort": "並び替え",
"step": "ステップ",
"subtaskOf": "親タスク",
"taskList": "タスクリスト",
"tasksInStep": "{{step}}のタスク",
"tasksOverWipLimit": "{{label}}件のタスク。WIP上限超過",
"theseOptionsAffectThisTaskList": "このオプションは、このタスクリストだけに影響します。",
"threads": "スレッド",
"utilities": "ユーティリティ",
"view": "表示",
"whenEnabledClickingATaskOpens": "有効時、タスクをクリックするとプレビューパネルが開く。無効時、クリックでセッションへ直接移動。",
"wipTaskCount": "{{label}}件のタスク",
"workflow": "ワークフロー",
"workflowStepFallback": "ワークフローステップ {{stepId}}",
"columns": "列",
"autoHideEmptyColumns": "空列を自動で隠す",
"allEmptyStepsAutoHidden": "空ステップ全部非表示。列の「空列を自動で隠す」をオフで再表示。",
"columnsForWorkflow": "{{name}}の列",
"needsReassignment": "再割り当て必要",
"noTasksYet": "まだタスクなし",
"noWorkflowsAvailableYet": "まだ利用可能なワークフローなし。",
"pullToRefreshPull": "引いて更新",
"pullToRefreshRefreshing": "タスク更新中",
"pullToRefreshRelease": "離して更新",
"boardSort": "ボードの並び順",
"boardSortCreatedDesc": "新しい順",
"boardSortPriorityDesc": "優先度順",
"priorityFilter": "優先度フィルタ"
}
+174
View File
@@ -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 Watcher を作成",
"createPersonalApiKeyAt": "個人用 APIキーを作成するには",
"creator": "作成者",
"creatorHelp": "特定のユーザーが作成した課題に一致させます。",
"defaultTeamOptional": "デフォルトのチーム (任意)",
"delete": "削除",
"deleteFailed": "削除に失敗しました: {{error}}",
"deleteThisLinearWatcher": "この Linear watcher を削除しますか?",
"description": "説明",
"details": "詳細",
"dispatchOrder": "配信順",
"dispatchOrderHelp": "実行中上限に達したとき、課題はこの順序で配信され、最も重要なものが先に実行されます。",
"editLinearWatcher": "Linear Watcher を編集",
"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 ウォッチャー未設定。1つ作成して、絞り込み済み課題からタスク自動作成。",
"noNewIssuesMatched": "新しい課題に一致なし。",
"noResults": "結果なし",
"notConfiguredNotice": "Linear 未設定。ここで課題見るには、<2>Linear を設定</2>。",
"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": "一致を1チームに絞る。",
"testConnection": "接続をテスト",
"testFailed": "失敗: {{error}}",
"testing": "テスト中…",
"unassigned": "未割り当て",
"unknownAccount": "不明なアカウント",
"unknownError": "不明なエラー",
"update": "更新",
"updatedAgo": "· {{time}}前に更新",
"updatedTime": "{{time}}に更新",
"updateFailed": "更新失敗: {{error}}",
"watchDialogDescription": "構造化フィルターで Linear をポーリングし、新しく一致した issue ごとに Kandev タスクを自動作成する。必要なら repository を紐づけて各タスクをそのコードベースで実行。未設定なら repository なしで実行。",
"watcherCreated": "ウォッチャー作成済み",
"watcherDeleted": "ウォッチャーを削除した",
"watcherUpdated": "ウォッチャーを更新した",
"workflow": "ワークフロー",
"workflowHelp": "このワークフローにタスクを作成する。",
"workflowStep": "ワークフローステップ",
"workflowStepHelp": "新規タスクの初期ステップ。",
"workspaceHelp": "このウォッチャーが作成するタスクは、選択したワークスペースに入る。",
"yourLinearApiKeyIsInvalid": "Linear API キーが無効か、失効した。再接続してこの問題を見る。"
}
+78
View File
@@ -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 プロジェクトを import 中かもしれない。初期化完了まで、ファイル間機能は使えない。",
"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": "language server が LSP initialize リクエストに応答するのを待機中。",
"waitingForLanguageServer": "language server を待機中",
"webSocketError": "WebSocket エラー"
}
@@ -0,0 +1,39 @@
{
"questionFromAgent": "agent からの質問",
"rowActions": "行アクション",
"dismiss": "閉じる",
"dismissFailed": "この質問を閉じられなかった。もう一度試せ。",
"snooze": "後で",
"snoozeDuration1h": "1時間",
"snoozeDuration4h": "4時間",
"snoozeDuration24h": "24時間",
"snoozeFailed": "この質問を後回しにできなかった。もう一度試せ。",
"anotherCallerResolved": "他の人がすでに「{{question}}」に回答済み。",
"anotherCallerRejected": "他の人がすでに「{{question}}」を拒否済み。",
"bundleNoLongerActive": "「{{question}}」はもう回答待ちじゃない。",
"errorTitle": "受信箱を読み込めなかった",
"errorDescription": "待機中の質問の読み込みで問題発生。",
"retry": "再試行",
"emptyTitle": "{{workspace}} で待機中のものはない。",
"emptyDescription": "この一覧は、この workspace で agent をブロックしてる質問だけ対象。他 workspace の bundle、保留中の権限リクエスト、親質問レコード、自分の snooze 済みや dismiss 済み行は数えない。",
"hiddenNotice_one": "{{count}}件の質問が自分の dismiss か snooze で非表示。",
"hiddenNotice_other": "{{count}}件の質問が自分の dismiss か snooze で非表示。",
"showHidden": "非表示を表示",
"hideHidden": "隠す",
"hiddenLoading": "非表示の質問を読み込み中…",
"hiddenLoadFailed": "非表示の質問を読み込めなかった。もう一度試せ。",
"hiddenEmpty": "今は非表示なし。",
"snoozedUntil": "後で表示、{{time}} に再表示",
"dismissed": "閉じた",
"restore": "元に戻す",
"restoreFailed": "この質問を復元できなかった。もう一度試せ。",
"truncatedNotice": "最初の質問だけ表示中。まだ続き待ちあり。",
"openTask": "task を開く",
"questionCount_one": "この bundle に {{count}}件の質問",
"questionCount_other": "この bundle に {{count}}件の質問",
"emptyTitleUnnamedWorkspace": "この workspace で待機中のものはない。",
"tabLabel": "必要事項",
"failedClauseSome_one": "この一覧は失敗した task を数えない。{{count}}件の task も失敗済み。Failed タブを見ろ。",
"failedClauseSome_other": "この一覧は失敗した task を数えない。{{count}}件の task も失敗済み。Failed タブを見ろ。",
"failedClauseNone": "この一覧には失敗タスクは含まれない。今このワークスペースで失敗はない。Failed タブをいつでも確認して。"
}
File diff suppressed because it is too large Load Diff
+38
View File
@@ -0,0 +1,38 @@
{
"addAdmin": "管理者を追加",
"adminCreate": "管理者を作成",
"adminCreated": "管理者を作成しました。",
"adminDescription": "管理者は自分の組織内のアカウントしか作成できません。そのため、新しい組織では最初の管理者をここで作成する必要があります。",
"adminEmail": "メール",
"adminName": "表示名",
"adminPassword": "パスワード",
"adminPasswordHint": "8文字以上にしてください。作成後は相手に共有し、サインイン後に変更してもらってください。",
"adminTitle": "{{name}} の最初の管理者",
"boundaryDescription": "ワークスペース、タスク、セッション、シークレット、アカウントは 1 つの組織に属します。インスタンス運用者として、あなたは組織そのものを管理しますが、自分の組織を含め、いずれの組織の中にもアクセスできません。",
"boundaryTitle": "組織が分けるもの",
"create": "作成",
"createDescription": "まず組織を作成し、その後で最初の管理者を追加してください。以後はその組織が自律的に管理されます。",
"createTitle": "新しい組織",
"created": "組織を作成しました。",
"defaultBadge": "既定",
"delete": "組織を削除",
"deleteConfirm": "組織を削除",
"deleteConfirmLabel": "確認のため {{slug}} を入力",
"deleteTitle": "{{name}} を削除",
"deleteWarning": "この組織にあるすべてのワークスペース、タスク、セッション、アカウントが削除されます。元に戻すことはできません。",
"deleted": "組織を削除しました。",
"description": "各組織は独立したテナントです。ユーザーは 1 つの組織にのみ所属し、組織同士で相手のワークスペース、タスク、シークレットを見ることはできません。",
"genericError": "その変更は保存できませんでした。",
"nameLabel": "組織名",
"namePlaceholder": "Acme Corp",
"navOrganizations": "組織",
"operatorOnly": "組織を管理できるのはインスタンス運用者のみです。",
"renamed": "組織名を変更しました。",
"resume": "再開",
"resumed": "組織を再開しました。",
"statusActive": "有効",
"statusSuspended": "停止中",
"suspend": "停止",
"suspended": "組織を停止しました。",
"title": "組織"
}
+184
View File
@@ -0,0 +1,184 @@
{
"add": "追加",
"allCategories": "すべてのカテゴリ",
"autoUpdate": "自動更新",
"autoUpdateDescription": "マーケットプレイスを定期的に確認し、有効なプラグインの新しいバージョンをインストールします。下記で個別に上書きしない限り、すべてのプラグインに適用されます。",
"autoUpdateFor": "{{name}} の自動更新",
"autoUpdateTitle": "プラグインを自動更新",
"byAuthor": "{{author}} 作",
"cancel": "キャンセル",
"category": "カテゴリ",
"checkForUpdates": "更新を確認",
"checkingForUpdates": "更新を確認中…",
"confirmUninstall": "アンインストールを確認",
"disable": "無効化",
"dropzoneHint": "ここに {{extension}} パッケージをドラッグ&ドロップ、またはクリックして選択",
"enable": "有効化",
"failedToAddSource": "ソースの追加に失敗",
"failedToDisable": "{{name}} の無効化に失敗",
"failedToEnable": "{{name}} の有効化に失敗",
"failedToInstallPlugin": "プラグインのインストールに失敗",
"failedToLoadMarketplace": "マーケットプレイスの読み込みに失敗",
"failedToLoadPlugins": "プラグインの読み込みに失敗",
"failedToLoadSettings": "プラグイン設定の読み込みに失敗",
"failedToRemoveSource": "ソースの削除に失敗",
"failedToSaveSettings": "プラグイン設定の保存に失敗",
"failedToSetAutoUpdateFor": "{{name}} の自動更新の変更に失敗",
"failedToSyncPlugins": "プラグインの同期に失敗",
"failedToUninstall": "{{name}} のアンインストールに失敗",
"failedToUpdateAutoUpdate": "自動更新設定の変更に失敗",
"failedToUpdatePlugin": "{{name}} の更新に失敗",
"failedToUpdateSource": "ソースの更新に失敗",
"fromUrl": "URL から",
"hideRaw": "生表示を隠す",
"install": "インストール",
"installPlugin": "プラグインをインストール",
"installPluginDescription": "URL からプラグインパッケージをインストールするか、{{extension}} ファイルを直接アップロード。",
"installed": "インストール済み",
"installedPlugins": "インストール済みプラグイン",
"installing": "インストール中…",
"latestVersion": "最新 v{{version}}",
"loadingMarketplace": "マーケットプレイスを読み込み中…",
"webAppLoading": "キャンバスを読み込み中…",
"webAppUnavailable": "このキャンバスは利用不可。",
"loadingPlugins": "プラグインを読み込み中...",
"loadingSelectedUtilityAgent": "選択したユーティリティエージェントを読み込み中...",
"loadingSettings": "設定を読み込み中...",
"loadingUtilityAgents": "ユーティリティエージェントを読み込み中...",
"manifest": "マニフェスト",
"manifestApiVersion": "APIバージョン",
"manifestAuthor": "作者",
"manifestCapabilities": "機能",
"manifestId": "ID",
"manifestInstalled": "インストール済み",
"manifestSigned": "署名済み",
"manifestVersion": "バージョン",
"manifestWebhookPublic": "{{key}} (公開)",
"manifestWebhooks": "Webhook",
"marketplaceSources": "マーケットプレイスのソース",
"marketplaceSourcesDescription": "公式カタログと並べてプラグインを見られるよう、チームまたは社内レジストリを追加。各ソースは {{document}} ドキュメントを配信する。",
"no": "いいえ",
"noDeclaredSettings": "このプラグインは設定を宣言していない。マニフェストに <1>config_schema</1> がない。",
"noInstalledPluginWithId": "ID <1>{{id}}</1> のインストール済みプラグインなし。",
"noEnabledSources": "有効なマーケットプレイスのソースがないため、バージョン確認できない。Browse > Sources で1つ有効化。",
"noPluginsAvailable": "まだ利用可能なプラグインなし。あとで確認するか、自分のマーケットプレイスソースを追加。",
"noPluginsMatchSearch": "検索に一致するプラグインなし。フィルターを消して試す。",
"noPluginsYet": "まだプラグインなし。Browse タブからインストールするか、パッケージをアップロード。",
"notInMarketplace": "マーケットプレイス外",
"notSet": "未設定",
"openSettingsFor": "{{name}} の設定を開く",
"override": "上書き",
"packageUrl": "パッケージURL",
"pluginInstalled": "{{name}} をインストール済み",
"pluginDialog": "プラグインダイアログ",
"pluginPageFailedToLoad": "このプラグインページの読み込みに失敗。",
"pluginsAvailable_one": "{{count}} 個のプラグインあり",
"pluginsAvailable_other": "{{count}} 個のプラグインあり",
"refresh": "更新",
"removeSource": "{{name}} を削除",
"repo": "リポジトリ",
"requiredFields": "必須: {{fields}}",
"reset": "リセット",
"resetAutoUpdateFor": "{{name}} の自動更新をデフォルトに戻す",
"savingRestartsPlugin": "保存するとプラグイン再起動。新しい設定が反映される。",
"searchPlugins": "プラグインを検索…",
"shortcuts": "キーボードショートカット",
"shortcutsDescription": "これらのショートカットはあなたのアカウント専用で、このプラグインが有効な間のみ動作します。",
"selectAUtilityAgent": "ユーティリティエージェントを選択してください...",
"selectPlaceholder": "選択...",
"selectedUtilityAgentUnavailable": "選択したユーティリティエージェントは利用できません",
"settings": "設定",
"settingsDescription": "マーケットプレイスを閲覧し、Kandevプラグインをインストール、有効化、無効化、アンインストールします。",
"settingsSaved": "プラグイン設定を保存しました",
"settingsSavedReloadFailed": "設定は保存されましたが、再読み込みに失敗しました。更新して確認してください。",
"setupRequired": "セットアップが必要です",
"sortMostStars": "星が多い順",
"sortName": "名前",
"sortRecentlyUpdated": "最近更新された順",
"sourceNamePlaceholder": "ソース名 (例: Acme Internal)",
"sourceUrlPlaceholder": "https://.../index.json",
"sourceOfficial": "公式",
"sourceUnreachable": "到達不可",
"sourceUnreachableDetail": "<0>{{name}}</0> に到達できません{{detail}}。そのプラグインは非表示になります。",
"sources": "ソース",
"statusActive": "有効",
"statusDisabled": "無効",
"statusError": "エラー",
"statusRegistered": "登録済み",
"statusUninstalled": "アンインストール済み",
"sync": "同期",
"updateCheckDescription": "マーケットプレイスで新しいバージョンを確認します。同期はローカルのプラグインフォルダーのみをスキャンします。",
"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}}</2> が完全に削除され、API キーも無効化されます。この操作は元に戻せません。",
"uninstallPlugin": "プラグインをアンインストール",
"unsigned": "署名なし",
"update": "更新",
"updateAvailableVersion": "更新あり: v{{version}}",
"updateCheckFailed": "更新確認できなかった",
"updateToVersion": "v{{version}} に更新",
"updatesLastChecked": "最終確認 {{time}}",
"updating": "更新中…",
"uploadFile": "ファイルをアップロード",
"utilityAgentsUnavailable": "ユーティリティエージェント利用不可",
"viewRaw": "生データを見る",
"yes": "はい",
"tabCanvases": "キャンバス",
"canvasMarketplaceDescription": "確認済みキャンバスパッケージを見て、インストール前に権限を確認する。",
"searchCanvases": "キャンバスを検索…",
"selectWorkspace": "ワークスペースを選択",
"canvasesAvailable_one": "{{count}}件のキャンバスあり",
"canvasesAvailable_other": "{{count}}件のキャンバスあり",
"noCanvasesAvailable": "まだキャンバスなし。",
"noCanvasesMatchSearch": "検索に合うキャンバスなし。",
"loadingCanvasesMarketplace": "キャンバスマーケットプレイスを読み込み中…",
"canvasSourceUnreachable": "{{name}} に到達できない{{detail}}. キャンバスは非表示。",
"installCanvas": "キャンバスをインストール",
"backToCanvases": "キャンバスへ戻る",
"previewImages": "プレビュー画像",
"previewImageFailed": "このプレビューは読み込めなかった。",
"retry": "再試行",
"enlargePreview": "プレビューを拡大",
"previousPreview": "前のプレビュー",
"nextPreview": "次のプレビュー",
"previewPosition": "プレビュー {{current}} / {{total}}",
"selectPreview": "プレビュー {{position}} を選択",
"license": "ライセンス",
"requiresVersion": "Kandev 必須",
"reviewAndInstall": "確認してインストール",
"permissions": "権限",
"none": "なし",
"installCanvasTitle": "キャンバスをインストール",
"installCanvasDescription": "このワークスペースにインストールする前に、パッケージの識別情報と権限を確認する。",
"uploadBundle": "バンドルをアップロード",
"directLink": "直接リンク",
"chooseBundle": "キャンバスバンドルを選択",
"bundleUrlPlaceholder": "https://example.com/canvas.tar.gz",
"reviewBundle": "バンドルを確認",
"inspectingBundle": "バンドルを検査中…",
"packageVerified": "パッケージ確認済み",
"packagePermissions": "パッケージ権限",
"packageId": "パッケージID",
"packageDigest": "パッケージダイジェスト",
"archiveDigest": "アーカイブダイジェスト",
"source": "ソース",
"destination": "宛先",
"previewInstallIndependent": "プレビュー画像はレジストリのメタデータ。パッケージにも権限にも含まれない。",
"confirmInstall": "インストールを確認",
"installingCanvas": "canvas をインストール中…",
"installedCanvas": "canvas インストール済み",
"openCanvas": "canvas を開く",
"installFailed": "canvas をインストールできなかった。パッケージを確認して、もう一度試す。",
"sourceUnavailable": "選択したマーケットプレイスソースは利用不可。",
"workspace": "ワークスペース"
}
+100
View File
@@ -0,0 +1,100 @@
{
"acrossFileCount_one": "{{count}} ファイルにわたって",
"acrossFileCount_other": "{{count}} ファイルにわたって",
"actionsFor": "{{filePath}} のアクション",
"autoMarkReviewedOnScroll": "スクロールで自動レビュー済みにする",
"changedSection": "変更セクション {{index}}",
"closeReview": "レビューを閉じる",
"collapseFile": "{{path}} を折りたたむ",
"collapseUnchanged": "変更なしを折りたたむ",
"commentSent": "コメント送信済み",
"copyDiff": "差分をコピー",
"diffLoading": "差分を読み込み中...",
"diffSkipBinary": "バイナリファイル。差分不可",
"diffSkipBudgetExceeded": "差分をスキップ。変更ファイル数が多すぎる",
"diffSkipTooLarge": "ファイルが大きすぎて差分不可 (>10 MB)",
"diffSkipTruncated": "差分を切り詰め。256 KB 超",
"diffTruncated": "差分を切り詰め。先頭 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 フラグメントを表示中。変更なし内容はこの差分に含まれない。",
"moreActionsFor": "{{filePath}} のその他の操作",
"new": "新規",
"newWalkthrough": "新しいウォークスルー",
"noChangesToReview": "レビューする変更なし",
"noChangesToReviewYet": "まだレビューする変更なし。",
"noCommentsToFixYet": "まだ修正するコメントなし。",
"noFilesMatchTheFilter": "フィルターに一致するファイルなし",
"noOpenFindings": "未解決の指摘なし。",
"noTextualDiffAdded": "追加ファイルにテキスト差分なし",
"noTextualDiffDeleted": "削除ファイルにテキスト差分なし",
"noTextualDiffModified": "テキスト差分なし",
"noTextualDiffMoved": "ファイル移動済み。テキスト変更なし",
"noTextualDiffMovedFrom": "{{oldPath}} から移動。テキスト変更なし",
"noTextualDiffUntracked": "未追跡ファイルにテキスト差分なし",
"old": "旧",
"openFindingCount_one": "{{count}} 件の未解決指摘",
"openFindingCount_other": "{{count}} 件の未解決指摘",
"pendingCommentCount_one": "{{count}} 件の保留中レビューコメント",
"pendingCommentCount_other": "{{count}} 件の保留中レビューコメント",
"pleaseTryAgain": "もう一度試して。",
"previewMarkdown": "Markdown をプレビュー",
"queuedForTheAgent": "エージェントにキュー済み。",
"resizeFileList": "ファイル一覧のサイズ変更",
"retry": "再試行",
"revertChanges": "変更を元に戻す",
"reviewAgentUnavailableNotice": "レビュー用の推論対応エージェント未設定。<2>Settings → Utility Agents</2>",
"reviewChanges": "変更をレビュー",
"reviewChangesTitle": "変更をレビュー",
"reviewInProgress": "レビュー進行中",
"reviewPullRequest": "プルリクエストをレビュー",
"reviewPullRequestFor": "{{repo}} #{{prNumber}} のプルリクエストをレビュー",
"reviewTheseChangesWithAnAgent": "エージェントでこの変更をレビュー",
"sentToTheAgent": "エージェントに送信済み。",
"showDiff": "差分を表示",
"staleChanged": "変更済み",
"switchToSplitView": "分割表示に切り替え",
"switchToUnifiedView": "統合表示に切り替え",
"theReviewFailed": "レビュー失敗",
"toggleWordWrap": "折り返し切り替え",
"view": "表示",
"walkMeThroughTheseChanges": "この変更を案内",
"walkMeThroughTheseReviewChanges": "このレビュー変更を案内",
"walkthrough": "ウォークスルー",
"walkthroughDiscarded": "ウォークスルー破棄済み",
"wrapLongLines": "長い行を折り返す",
"changesDiscarded": "変更を破棄済み",
"changesStillLoading": "変更まだ読み込み中",
"couldNotSendFinding": "指摘を送信できませんでした",
"couldNotUpdateFinding": "指摘を更新できませんでした",
"discardFailed": "破棄失敗",
"failedToRequestWalkthrough": "ウォークスルー要求失敗",
"findingQueuedForAgent": "指摘をエージェントへキュー追加済み",
"findingSentToAgent": "指摘をエージェントへ送信済み",
"walkthroughRequestQueued": "ウォークスルー要求をキュー追加済み",
"walkthroughRequestSent": "ウォークスルー要求を送信済み",
"couldNotStartReview": "レビューを開始できませんでした",
"severityBlocker": "ブロッカー",
"severityMajor": "重大",
"severityMinor": "軽微",
"severityNit": "細かい指摘",
"commentOnFile": "ファイルにコメント",
"fileComment": "ファイルコメント",
"fileComments": "ファイルコメント"
}
+176
View File
@@ -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": "任意。1つの環境に制限します。",
"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": "debug",
"levelError": "error",
"levelFatal": "fatal",
"levelInfo": "info",
"levelWarning": "warning",
"levels": "レベル",
"levelsHelp": "クリックで切り替え。選択したレベルのどれかに一致する issue を表示。",
"loadMore": "さらに読み込み",
"loadingEllipsis": "読み込み中…",
"maxInflightTasks": "同時実行タスク上限",
"maxInflightTasksHelp": "この watcher が作る未完了タスクの上限。空欄なら上限なし。上限に達した新規一致は次回ポーリングへ回す。",
"name": "名前",
"nameHelp": "このインスタンスのラベル。workspace 内で一意にすること。",
"namePlaceholder": "本番、Self-hosted、…",
"never": "なし",
"newInstance": "新しいインスタンス",
"newWatcher": "新しい watcher",
"noCap": "(上限なし)",
"noHealthySentryInstanceCheckThe": "正常な Sentry インスタンスなし。integration 設定確認。",
"noInstancesInWorkspace": "この workspace に Sentry インスタンスなし",
"noInstancesYet": "まだ Sentry インスタンスなし。追加して workspace 接続。",
"noIssuesYetRunASearch": "まだ issue なし。検索して開始。",
"noNewIssuesMatched": "新しい issue は一致なし。",
"noOrganizationsAvailable": "利用可能な organization なし",
"noProjectsAvailable": "利用可能な project なし",
"noProjectsAvailableSentence": "利用可能な project なし。",
"noSentryInstancesConfiguredForThis": "この workspace 用に設定された Sentry インスタンスなし。",
"noWatchersConfigured": "Sentry watcher 未設定。フィルタ済み issue から task 自動作成するには1つ作成。",
"orgSlugRequired": "organization slug 必須",
"organization": "組織",
"organizationSlug": "組織スラッグ",
"organizationSlugHelp": "ポーリングするSentry組織。",
"pasteAnAuthTokenToTest": "接続テスト用に認証トークンを貼り付け",
"pause": "一時停止",
"paused": "一時停止中",
"period": "期間",
"placeholderAssigneeDisplayName": "担当者表示名",
"placeholderCulprit": "原因箇所 (関数 or ファイル)",
"placeholderEventCount": "イベント総数",
"placeholderFirstSeen": "Issueが最初に見つかった時刻",
"placeholderIssueLevel": "Issueレベル",
"placeholderIssueStatus": "Issueステータス",
"placeholderIssueTitle": "Issueタイトル",
"placeholderIssueUrl": "Sentry issueのパーマリンク",
"placeholderLastSeen": "Issueが最後に見つかった時刻",
"placeholderProjectSlug": "Sentryプロジェクトスラッグ",
"placeholderShortId": "Sentry短縮ID",
"placeholderUserCount": "影響受けた一意ユーザー数",
"pollIntervalHelp": "検索の再実行間隔。最小60秒、最大3600秒。",
"pollIntervalSeconds": "ポーリング間隔 (秒)",
"production": "production",
"project": "プロジェクト",
"projectSlug": "プロジェクトスラッグ",
"projectSlugHelp": "ポーリングするSentryプロジェクト。1つ以上選択。",
"projectsSelected_one": "{{count}}件のプロジェクト選択済み",
"projectsSelected_other": "{{count}}件のプロジェクト選択済み",
"promptFieldHelp": "各新規Issueごとにエージェントへ送るプロンプト。{{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": "Issue と Event。issue を参照し、watcher を実行",
"scopeOrgRead": "Organization。org を解決し、issue を一覧表示",
"scopeProjectRead": "Project。project を一覧表示し、search を絞り込み",
"searchProjects": "Project を検索...",
"selectASentryInstanceToBrowse": "閲覧する Sentry instance を選択",
"selectAnInstance": "Instance を選択",
"selectAnInstanceToBrowse": "閲覧する instance を選択",
"selectInstanceToSearch": "検索する Sentry instance を選択",
"selectOrganization": "Organization を選択",
"selectProjects": "Project を選択",
"selectWorkflow": "Workflow を選択",
"selectWorkspace": "Workspace を選択",
"sentryInstance": "Sentry インスタンス",
"sentryInstanceHelp": "この watcher がポーリングする Sentry instance。作成後は変更不可。",
"sentryIntegration": "Sentry統合",
"sentryIntegrationDescription": "この workspace を Sentry に接続。Sentry org ごと、または self-hosted host ごとに名前付き instance を追加。認証情報は server-side で暗号化保存。",
"sentryWatcher": "Sentry監視",
"sentryWatchers": "Sentry の監視者",
"sentryWatchersDescription": "Sentry filter をポーリングし、新しく一致した issue ごとに Kandev task を自動作成。",
"statsPeriod": "集計期間",
"statsPeriodHelp": "一致 issue をどこまで遡って探すか。",
"statsPeriodLast14Days": "過去 14 日",
"statsPeriodLast24Hours": "過去 24 時間",
"statsPeriodLast30Days": "過去 30 日",
"statsPeriodLast7Days": "過去 7 日",
"statsPeriodLastHour": "過去 1 時間",
"statusIgnored": "ignored",
"statusResolved": "resolved",
"statusUnresolved": "unresolved",
"statuses": "ステータス",
"statusesHelp": "クリックで切り替え。選択したどれかの status に一致する issue を対象。",
"taskPrompt": "タスクプロンプト",
"testConnection": "接続をテスト",
"testFailed": "失敗: {{error}}",
"testing": "テスト中...",
"update": "更新",
"updateFailed": "更新失敗: {{error}}",
"useStepDefault": "(step のデフォルトを使用)",
"usersCount_one": "ユーザー {{count}}",
"usersCount_other": "ユーザー {{count}}",
"watchDialogDescription": "構造化フィルタで Sentry をポーリングし、新しく一致した issue ごとに Kandev task を自動作成。必要なら repository を bind して各 task をその codebase で run。未設定なら repository なしで run。",
"watcherCreated": "Watcher 作成済み",
"watcherDeleted": "Watcher 削除済み",
"watcherUpdated": "Watcher 更新済み",
"workflow": "ワークフロー",
"workflowHelp": "Task はこの workflow に作成。",
"workflowStep": "ワークフローステップ",
"workflowStepHelp": "新しい task の初期 step。",
"workspaceHelp": "この watcher で作成した task は選択 workspace に入る。",
"yourSentryAuthTokenIsInvalid": "Sentry auth token 無効、または revoke 済み。再接続して issue を表示。"
}
+842
View File
@@ -0,0 +1,842 @@
{
"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": "自動フォールバック有効。特定のフォールバックモデルを 1 つ選ぶには、これをオフ。",
"agentFallbackHelper": "開始モデルが使えないと、自動でこのモデルへ切り替え。",
"agentFallbackHelp": "開始モデルが使えない場合、Kandev はこのモデルだけ試す。これも使えないと、セッション失敗。予測可能なフォールバックが欲しいときに使う。",
"agentFallbackHelpTitle": "エージェントフォールバック",
"agentFallbackInfoLabel": "エージェントフォールバックの説明",
"agentFallbackPlaceholder": "フォールバックモデルを選択...",
"agentGeneratedTaskTitles": "エージェント生成タスクタイトル",
"agentGeneratedTaskTitlesDescription": "有効時、新規タスクとサブタスクのフォームから手動タイトル欄を隠し、プロンプト必須にする。Kandev はまずプロンプト先頭 6 語で仮タイトルを即表示し、その後エージェントに約 3 語の簡潔なタイトルへ置き換えさせる。エージェントが変更できない場合、仮タイトルはそのまま編集可能。既存タスクと編集済みタスクは通常のタイトル欄を維持。",
"agentGeneratedTaskTitlesDisabledHint": "既定で無効。作成ダイアログを開く前にこの設定を保存。",
"animateRichOutputCharts": "リッチ出力チャートをアニメーション",
"animateRichOutputChartsDescription": "エージェント表示時に折れ線グラフと棒グラフをアニメーション表示。オフにするとブラウザ負荷を減らせる。チャートデータと操作は使えるまま。OS の軽減動作設定が常に優先。デバイスに保存。",
"apiTokenIsConfigured": "API トークン設定済み。",
"appearance": "外観",
"appriseNotInstalled": "Apprise はまだ未インストール。あとで追加してリモート通知を有効化できる。<2>インストール手順を見る</2>。",
"appriseProvider": "Apprise プロバイダ",
"appriseServiceUrls": "サービス URL",
"appriseUrlRequired": "少なくとも 1 つの Apprise サービス URL が必要。",
"appriseDetected": "Apprise 検出済み。",
"appriseDetectionServer": "検出は Kandev サーバー上で実行。",
"appriseNotDetected": "Apprise が見つかりません。",
"appriseRescanFailed": "Apprise を確認できませんでした。もう一度試してください。",
"rescanApprise": "Apprise を再スキャン",
"archiveConfirmation": "アーカイブ確認",
"preventAutoStartAgentOnOpen": "開いたときのエージェント自動開始を防ぐ",
"preventAutoStartAgentOnOpenHelp": "再起動後、または最終ワークフローステップからタスクを開いたときに、エージェントを自動開始しません。代わりに「Start agent」ボタンを表示します。",
"arrangeSplit": "分割を並べ替え",
"autoApprove": "自動承認",
"autoInstallIfNotFound": "見つからなければ自動インストール",
"autoStart": "自動開始",
"autoStartLanguageServersWhenOpening": "ファイルを開いたときに言語サーバーを自動開始し、診断、ホバー情報、定義へ移動を使えるようにします。サーバーごとにファイル単位でオンオフ切り替えもできます。言語サーバーはデスクトップのファイルエディタで実行されます。モバイルのファイルビューアは開始しません。",
"autoFallback": "次のモデルへ自動的にフォールバック",
"autoFallbackHelper": "開始モデルが使えないとき、失敗せずにエージェントが次の利用可能モデルを選べるようにします。明示的なフォールバックモデルは無効になります。",
"autoFallbackHelp": "開始モデルが使えない場合、Kandev は残っている公開済みモデルからエージェントに選ばせます。選ばれるモデルは、利用可能状況の変化で変わることがあります。",
"autoFallbackHelpTitle": "自動フォールバック",
"autoFallbackInfoLabel": "自動フォールバックを説明",
"requireExactModel": "完全一致モデル必須",
"requireExactModelHelper": "この完全一致モデルが公開され、適用できるときだけセッションを開始します。これをオフにしても、保存済みのフォールバック設定は残ります。",
"requireExactModelInfoLabel": "完全一致モデル要件を説明",
"requireExactModelHelpTitle": "完全一致モデル必須",
"requireExactModelHelp": "設定したモデルが公開されていない、または適用できないとセッションは失敗します。自動フォールバック設定と明示的フォールバック設定は保存されたままですが、無効です。",
"autoStartLanguageServer": "{{language}} の言語サーバーを自動開始",
"builtIn": "内蔵",
"builtInBrowserPanel": "内蔵ブラウザーパネル",
"cancel": "キャンセル",
"changelogNotificationsDescription": "トップバーのリリースノート通知を管理します",
"changelogPageDescription": "すべてのリリースを表示し、通知設定を管理します",
"changelogReleaseHistory": "リリース履歴",
"changelogReleaseHistoryDescription": "すべてのバージョンとリリースノート",
"changelogResetSeenDescription": "最後に見たバージョンを消し、トップバー通知をもう一度表示します",
"changelogResetSeenLabel": "既読リリースをリセット",
"changelogTopbarDescription": "有効にすると、新しいバージョン公開時にトップバーへキラキラのアイコンが表示されます",
"changelogTopbarLabel": "新しいリリースの通知を表示",
"changelogTopbarTitle": "トップバーのリリース通知",
"changesPanel": "変更パネル",
"changesPanelLayout": "変更パネルのレイアウト",
"changesTheLanguageOfTheKandev": "Kandev インターフェースの言語を変更します。すぐ反映され、この端末に記憶されます。タスク名、チャット、ほか自分で作った内容は翻訳されません。",
"chatInput": "チャット入力",
"chooseAMonospaceFontForThe": "ターミナル用の等幅フォントを選びます。Nerd Fonts には CLI ツール用のアイコンが含まれます。",
"chooseHowDeepTheSettingsMenuGoes": "設定メニューでページだけを表示するか、Workspaces, Agents, Executors を中身まで展開するか選びます。",
"chooseTheLanguageUsedAcrossThe": "Kandev インターフェース全体で使う言語を選択",
"chooseWhatOpensWhenKandevStarts": "起動先を選択。Threads を選ぶと Home にも使う。",
"chooseWhichTranscriptNavigationControls": "表示するトランスクリプト移動コントロールを選択。デスクトップ限定の固定プロンプトバーも含む。",
"clearSettingsSearch": "設定検索をクリア",
"clearShortcut": "ショートカットをクリア",
"clickAShortcutToRecordA": "ショートカットをクリックして新しいキー組み合わせを記録。",
"clickAUrlInTheTerminal": "ターミナル内の URL をクリックして開く。",
"cmdCtrlEnterToSend": "送信は Cmd/Ctrl+Enter",
"collectExecutionEnvironmentMetrics": "実行環境メトリクスを収集",
"colorTheme": "カラーテーマ",
"command": "コマンド",
"completeTheRequiredEditorFieldsBefore": "保存前に必須のエディタ項目を入力。",
"configChatAgentDescription": "Configuration Chat に使うエージェントプロファイルを選択。このエージェントはワークフロー、エージェントプロファイル、MCP 設定を管理できる。",
"configChatAgentNoDefault": "デフォルトなし",
"configChatAgentTitle": "Configuration Chat エージェント",
"configureArchiveSafeguardsAndDefaultsFor": "エージェントが作成したタスクのアーカイブ保護とデフォルトを設定",
"configureBackendAndExecutionResourceSampling": "バックエンドと実行リソースのサンプリングを設定",
"configureStatusBarVisibility": "Kandev のステータス表示を出すか選択",
"configureChatInputBehavior": "チャット入力の動作を設定",
"configureSpritesApiToken": "Executor プロファイルで <1>{{envVar}}</1> 環境変数を設定し、Sprites.dev API トークンのシークレットを参照。",
"configureTerminalAppearanceAndBehavior": "ターミナルの見た目と動作を設定",
"configureTheIncludedCodeEditorAnd": "内蔵コードエディタと外部エディタを設定",
"configureTheInitialDesktopTaskWorkbench": "初期デスクトップタスク作業台を設定。",
"confirmBeforeArchivingTasks": "タスクをアーカイブする前に確認",
"connectKandevToThirdPartyServices": "Kandev を外部サービスに接続。接続範囲と使える設定は各統合ページに表示。",
"connected": "接続済み",
"connection": "接続",
"connectionTestFailed": "接続テスト失敗",
"connectionTestPassed": "接続テスト成功",
"continueEditing": "編集を続ける",
"couldnTSave": "<0></0> 保存できない",
"couldnTSave2": "保存できない",
"couldnTReset": "<0></0> リセットできない",
"couldnTReset2": "リセットできない",
"cpu": "CPU %",
"cpuTemp": "CPU 温度",
"createANewEditableLayoutBased": "Default をベースに新しい編集可能レイアウトを作成。",
"createANewSplitOfThe": "選択中の分割の新しい {{direction}} 分割を作成。",
"createASeparateCustomCopyOf": "選択中レイアウトの別カスタムコピーを作成。",
"custom": "カスタム",
"customEditorType": "カスタム",
"customEditors": "カスタムエディター",
"customEllipsis": "カスタム...",
"customFontExample": "例: \"My Custom Font\"",
"customizeHowChangedFilesAreDisplayed": "変更されたファイルの表示方法をカスタマイズします",
"customizeHowTheApplicationLooks": "アプリの外観をカスタマイズします",
"customizeKeyboardShortcutsForTheCommand": "コマンドパネルのキーボードショートカットをカスタマイズします",
"customized": "カスタマイズ済み",
"dark": "ダーク",
"decreaseHeight": "高さを下げる",
"decreaseWidth": "幅を狭める",
"default": "デフォルト",
"defaultMenloMonaco": "デフォルト (Menlo / Monaco)",
"defaults": "デフォルト:",
"delete": "削除",
"deleteLayoutProfile": "レイアウトプロファイルを削除",
"deleteLayoutProfileNamed": "{{name}} を削除しますか?",
"deleteSecret": "シークレットを削除",
"cannotDeleteSecret": "シークレットを削除できません",
"checkingSecretReferences": "このシークレットの使用箇所を確認しています…",
"checkingApprise": "Apprise を確認しています",
"secretReferencesLoadFailed": "このシークレットの使用箇所を確認できませんでした",
"secretDeleteFailed": "シークレットを削除できませんでした",
"secretInUse": "このシークレットは次で使用されています: {{references}}。削除する前に、これらの参照を削除するか置き換えてください。",
"secretInUseUnknown": "このシークレットは使用されています。削除する前に、その参照を削除するか置き換えてください。",
"secretReferenceAgent": "エージェントプロファイル \"{{name}}\" ({{key}})",
"secretReferenceExecutor": "Executor プロファイル \"{{name}}\" ({{key}})",
"secretReferenceRepository": "リポジトリ \"{{name}}\" ({{key}})",
"secretReferenceTypeAgent": "エージェントプロファイル",
"secretReferenceTypeExecutor": "Executor プロファイル",
"secretReferenceTypeRepository": "リポジトリ",
"secretReferenceHidden": "アクセスできないリソース",
"deleteThisCustomLayoutAfterConfirmation": "確認後、このカスタムレイアウトを削除します。",
"desktopNotifications": "デスクトップ通知",
"desktopNotificationsDescription": "選択したエージェントのターン、質問、または Office イベントが発生したときにこのデバイスに通知します。",
"desktopOnlyWhileYouScrollPast": "デスクトップのみ。最後のプロンプトを通過してスクロールすると、短縮版をトランスクリプト上部に固定表示し、展開トグルを付けます。",
"destroyAll": "すべて破棄",
"diagnosticACPNoSessions": "ACP のダウンロードはデバッグモードで利用できますが、このアカウントには含められる対象セッションがありません。",
"diagnosticACPSelectionLimit": "ACP セッションは 10 件まで選択できます。",
"diagnosticACPSelectionRequired": "対象の ACP セッションを少なくとも 1 件選択してください。",
"diagnosticACPWarning": "ACPデバッグメッセージには、プロンプト、応答、ツール呼び出し、ファイル内容、MCPデータ、環境由来の値、秘密情報が含まれる場合あり。このZIP、共有前に注意して確認。",
"diagnosticBackendEvents": "バックエンドログには、Kandevが書く起動、ライフサイクル、API、executor、エラーイベント含む。",
"diagnosticBundleCancel": "キャンセル",
"diagnosticBundleCreate": "バンドル作成",
"diagnosticBundleDescription": "Kandevは接続中ブラウザタブに、範囲内3日分コンソール履歴を要求し、保持済みバックエンドログファイルと結合して、1つの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は、最大3日分バックエンドログと、接続中ブラウザからローカル保持したフロントエンドコンソールイベントをまとめる。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バックエンドログファイル、最大3日分。",
"diagnosticSourceFrontend": "フロントエンドログ",
"diagnosticSourceFrontendDescription": "接続中ブラウザタブからの範囲内コンソールイベント。",
"diagnosticSourceRequired": "少なくとも1つ証拠ソース選択。",
"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": "シェル,zsh,bash,ターミナル シェル",
"discoveryAliasesResourceMetrics": "メトリクス,CPU,メモリ,ディスク,ステータスバー",
"discoveryAliasesRichOutputMotion": "グラフアニメーション,グラフ,パフォーマンス,モーション軽減",
"discoveryAliasesSettingsMenu": "サイドバー,ナビゲーション,ツリー,アコーディオン,メニュー",
"discoveryAliasesStartupPage": "ホームページ,スタートページ,起動ページ,スレッド,既定ホーム,ホーム表示",
"discoveryAliasesStatusBar": "下部バー,ステータス ドロワー,接続状態,外観",
"discoveryAliasesSubmitShortcut": "送信キー,Enter で送信,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, standalone, Sprites...)。",
"externalMcpGroupQuestions": "エージェントの質問への回答",
"externalMcpGroupQuestionsDescription": "任意のエージェントセッションから来た保留中の確認質問を一覧し、回答または拒否。",
"externalMcpGroupTaskCreation": "タスク作成",
"externalMcpGroupTaskCreationDescription": "外部エージェントから新しいトップレベルタスクやサブタスクを作成。",
"externalMcpGroupTaskDependencies": "タスク依存関係",
"externalMcpGroupTaskDependenciesDescription": "別タスクが完了するまでタスクをブロックする、またはそのブロックを解除。",
"externalMcpGroupTasks": "タスク",
"externalMcpGroupTasksDescription": "タスク状態を一覧、移動、アーカイブ、更新。",
"externalMcpGroupWorkflowSteps": "ワークフローステップ (列)",
"externalMcpGroupWorkflowStepsDescription": "ワークフローを構成する列を管理。",
"externalMcpGroupWorkspaces": "ワークスペースとワークフロー",
"externalMcpGroupWorkspacesDescription": "ワークスペースを検出し、ワークフローを CRUD する。",
"externalMcpIntro": "Kandev を、Kandev の <2>外部</2> で動くコーディングエージェント (例: Claude Code、Cursor、またはホスト上の Codex) から、または Kandev 内で動く <4>パススルーエージェント</4> から管理したい場合に使う。",
"externalMcpIntroPassthrough": "Kandev 内で通常モード起動したエージェントには、Kandev MCP が自動で組み込まれる。設定不要。",
"externalMcpOneLiner": "1行コマンド ({{path}} に書き込み)",
"externalMcpOpenCodePaths": "{{projectPath}} (project) または {{globalPath}} (global)",
"externalMcpSnippets": "設定スニペット",
"externalMcpSnippetsDescription": "これをエージェントのグローバル MCP 設定に貼り付け。",
"externalMcpSse": "Server-Sent Events (SSE)",
"externalMcpSseHint": "古い MCP クライアント向けの互換トランスポートです。",
"externalMcpStreamableHttp": "Streamable HTTP",
"externalMcpStreamableHttpHint": "Claude Code、Cursor、Codex に推奨されます。",
"externalMcpToolAddTaskDependency": "別のタスクが正常に完了するまで、タスクをブロックします。",
"externalMcpToolAnswerQuestion": "保留中の clarification bundle を pending_id で回答または却下します。先着順で勝ち、負けた呼び出しにはエラーの代わりに勝者の解決結果が返ります。",
"externalMcpToolArchiveTask": "タスクをアーカイブします。",
"externalMcpToolCount_one": "{{count}} 個のツール",
"externalMcpToolCount_other": "{{count}} 個のツール",
"externalMcpToolCreateAgentProfile": "新しいエージェントプロファイルを作成します。(model、auto-approve)",
"externalMcpToolCreateExecutorProfile": "config、prepare/cleanup スクリプトを含むプロファイルを作成します。",
"externalMcpToolCreateTask": "トップレベルのタスク、または明示的な {{parentIdParam}} の下にサブタスクを作成します。",
"externalMcpToolCreateWorkflow": "ワークフローを作成します。",
"externalMcpToolCreateWorkflowStep": "prompt、color、event hooks を持つ新しい列を追加します。",
"externalMcpToolDeleteAgentProfile": "エージェントプロファイルを削除します。",
"externalMcpToolDeleteExecutorProfile": "executor プロファイルを削除します。",
"externalMcpToolDeleteTask": "タスクを完全に削除します。",
"externalMcpToolDeleteWorkflow": "ワークフローとそのすべてのステップを削除します。(破壊的)",
"externalMcpToolDeleteWorkflowStep": "ステップを削除します。(破壊的)",
"externalMcpToolGetMcpConfig": "プロファイルの MCP サーバーマップを読み取ります。",
"externalMcpToolGetTaskConversation": "タスクの会話履歴を取得します。必要に応じて特定のセッションに対しても取得できます。",
"externalMcpToolImportWorkflow": "移植可能な YAML/JSON エクスポートドキュメントから 1 つ以上のワークフローをインポートします。",
"externalMcpToolExportWorkflow": "1 つのワークフローを移植可能な JSON ドキュメントとしてエクスポートし、別のワークスペースにインポートできるようにします。",
"externalMcpToolListAgentProfiles": "エージェントのプロファイルを一覧表示します。",
"externalMcpToolListAgents": "設定済みのエージェントとそのプロファイルを一覧表示します。",
"externalMcpToolListExecutorProfiles": "executor のプロファイルを一覧表示します。",
"externalMcpToolListExecutors": "すべての executor を一覧表示します。",
"externalMcpToolListPendingQuestions": "まだ回答待ちの clarification bundle を一覧表示します。",
"externalMcpToolListRepositories": "ワークスペース内のリポジトリを一覧表示します。各リポジトリのデフォルトブランチも含みます。",
"externalMcpToolListTasks": "ワークフロー内のタスクを一覧表示します。",
"externalMcpToolListWorkflowSteps": "ワークフロー内のすべてのステップを一覧表示します。",
"externalMcpToolListWorkflows": "ワークスペース内のワークフローを一覧表示します。",
"externalMcpToolListWorkspaces": "すべてのワークスペースを一覧表示します。",
"externalMcpToolMoveTask": "タスクを別のステップまたは位置に移動します。",
"externalMcpToolRemoveTaskDependency": "タスクの依存エッジを削除します。",
"externalMcpToolReorderWorkflowSteps": "ステップ ID の完全な順序リストを設定します。",
"externalMcpToolUpdateAgent": "MCP サポートを切り替えるか、config path を設定します。",
"externalMcpToolUpdateAgentProfile": "name、model、auto-approve を更新します。",
"externalMcpToolUpdateExecutorProfile": "executor プロファイルを更新します。",
"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": "フォールバック未設定",
"fallbackSettingsSummaryExact": "厳密モデル必須",
"fallbackSettingsSummaryExecutorDefault": "Executor デフォルト可",
"requireExactModelValidationTitle": "モデル必須",
"requireExactModelValidation": "厳密モデル要件を有効にする前に、具体的なモデルを選択。",
"fallbackNoteLive": "このセッションは、設定モデルが使えなかったため、フォールバックモデルで開始。 (fallback) マーカーはライブセッションを表し、再読み込み後は表示されない。",
"modelFallbackSuffix": "(fallback)",
"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 の pull request。",
"integrationDescriptionGithub": "PR レビューキュー、issue ウォッチャー、OAuth 認証情報。",
"integrationDescriptionGitlab": "merge request 作成、会話返信、セルフ管理ホスト。",
"integrationDescriptionJira": "Atlassian Cloud 認証情報と JQL issue ウォッチャー。",
"integrationDescriptionLinear": "個人 API キーとチームのデフォルト。",
"integrationDescriptionSentry": "認証トークン、組織とプロジェクトのデフォルト、issue 閲覧。",
"hideDisabledAgentProfilesFromNav": "左パネルナビから無効なエージェントプロファイルを非表示",
"hideDisabledAgentProfilesFromNavDescription": "オンなら、無効なエージェントプロファイルは、設定済みでも左パネルナビから外れる。",
"hideDisabledIntegrationsFromNav": "左パネルナビから無効な連携を非表示",
"hideDisabledIntegrationsFromNavDescription": "オンなら、無効な連携は、設定済みでもサイドバーとモバイルメニューから外れる。",
"invalidJson": "無効な JSON",
"keyboardShortcuts": "キーボードショートカット",
"language": "言語",
"languageServers": "言語サーバー",
"lastVisitedTask": "最後に見たタスク",
"layout": "レイアウト",
"layoutDirectionAbove": "上",
"layoutDirectionAboveInline": "上",
"layoutDirectionBelow": "下",
"layoutDirectionBelowInline": "下",
"layoutDirectionLeft": "左",
"layoutDirectionLeftInline": "左",
"layoutDirectionOfTarget": "{{target}} の {{direction}}",
"layoutDirectionRight": "右",
"layoutDirectionRightInline": "右",
"layoutEditorForProfile": "{{name}} エディタ",
"layoutProfile": "レイアウトプロファイル",
"layoutProfileCopyName": "{{name}} のコピー",
"layoutProfileDefault": "デフォルト",
"layoutProfileDefaultDescription": "Files、Changes、Terminal 付きエージェント",
"layoutProfileName": "レイアウトプロファイル名",
"layoutProfileNamesMustNotBe": "レイアウトプロファイル名は空にできない",
"layoutProfilePlanMode": "プランモード",
"layoutProfilePlanModeDescription": "Agent と Plan を並べる",
"layoutProfilePreviewMode": "プレビューモード",
"layoutProfilePreviewModeDescription": "Agent と Browser を並べる",
"layoutProfiles": "レイアウトプロファイル",
"layoutProfilesWereNotSaved": "レイアウトプロファイルは保存されなかった",
"layoutProfileVsCodeDescription": "Agent と VS Code を並べる",
"layouts": "レイアウト",
"ligatures": "合字",
"light": "ライト",
"loading": "読み込み中...",
"loadingSecrets": "シークレット読み込み中...",
"logsPageDescription": "フロントエンドとバックエンドのログ入り診断 ZIP を作成する。",
"lspConfigCustomBadge": "カスタム",
"lspInstallHintGo": "\"{{command}}\" を実行。Go のインストールが必要。",
"lspInstallHintKotlin": "{{binary}} を task host の {{path}} に手動でインストール。Local Docker tasks なら task container 内に入れる。",
"lspInstallHintPython": "{{manager}} 経由で {{package}} を {{dir}} にインストール",
"lspInstallHintRust": "GitHub releases から {{binary}} バイナリを {{dir}} にダウンロード",
"lspInstallHintTypescript": "{{manager}} 経由で {{server}} と {{runtime}} を {{dir}} にインストール",
"lspLanguageExperimental": "{{language}} (experimental)",
"makeTheOriginalDefaultLayoutThe": "元の Default レイアウトを、新規 task の開始レイアウトにする。",
"makeTheSelectedSplit40Pixels": "選択した split を 40 ピクセル狭くする。",
"makeTheSelectedSplit40Pixels2": "選択した split を 40 ピクセル広くする。",
"makeTheSelectedSplit40Pixels3": "選択した split を 40 ピクセル低くする。",
"makeTheSelectedSplit40Pixels4": "選択した split を 40 ピクセル高くする。",
"makesAgentctlValuesAvailableToPlugins": "agentctl の値を plugins と他の利用先に公開する。組み込み status bar は host 専用のまま。",
"manageApiKeysAndCredentialsSecrets": "API keys と credentials を管理。Secrets は保存時に暗号化され、executor profile の env vars 経由で agent 環境に注入される。",
"globalScope": "グローバル",
"modelWithValue": "モデル: {{model}}",
"settingsMenu": "設定メニュー",
"settingsMenuAccordion": "アコーディオンツリー",
"settingsMenuAccordionDescription": "Workspaces、Agents、Executors は、中身まで展開される。workspace から単一 integration まで。1 つ開くと他は閉じるので、menu は今いる page への道だけを表示する。これがデフォルト menu。",
"settingsMenuFlat": "フラット一覧",
"settingsMenuFlatDescription": "settings page ごとに 1 行だけ。個別の workspaces、agents、executors は各 page から開く。いちばん短い menu。",
"settingsMenuPersistent": "永続ツリー",
"settingsMenuPersistentDescription": "同じ branch だけど、複数を同時に開ける。reload 後も開いたまま。いくつかの record を並べて見たいときに使う。workspace や agent が多いと menu は長くなる。",
"settingsMenuShape": "メニュー形状",
"settingsMenuShapePerDevice": "この device にだけ適用。他の device と browser は別の選択のまま。",
"temperatureWithValue": "Temperature: {{temperature}}",
"workspaceScope": "ワークスペース",
"workspaceSecretsDescription": "この workspace の repositories で使える secrets を管理。共有 agent と executor profiles は Global secrets だけ使える。",
"workspacesAndAccess": "Workspaces と Access",
"revealSecretNamed": "secret {{name}} を表示",
"hideSecretNamed": "secret {{name}} を非表示",
"editSecretNamed": "secret {{name}} を編集",
"deleteSecretNamed": "シークレット {{name}} を削除",
"manageSpritesDevRemoteSandboxIntegration": "実行中のエージェントを分離されたクラウド環境で動かすための、Sprites.dev リモートサンドボックス連携を管理します。",
"manualInstallRequired": "手動インストールが必要です",
"markMessagesThatArrivedWhileA": "タスクが非表示の間に届いたメッセージをマークします。すぐに反映されます。",
"mcpAffectedToolsHelp": "<0>create_task_kandev</0> は個別のタスクを作成します。<3>spawn_session_kandev</3> は現在のタスクにセッションを追加するため、この設定は使用されません。",
"mcpCreateTaskScope": "<0>create_task_kandev</0> は新しいタスクとサブタスクを作成します。この設定は、呼び出しで <4>agent_profile_id</4> が省略された場合にのみ適用されます。ライブの task-mode 呼び出しでは、Creating session profile が検証済みセッションの有効なモデル、モード、オプションをコピーします。",
"mcpSpawnSessionScope": "<0>spawn_session_kandev</0> と、自分で作成したタスクには影響しません。ワークフローで選択されたプロファイルが最優先です。それ以外の場合は明示的なプロファイルが優先されます。Workspace default はセッションとタスクのプロファイルを省略します。外部呼び出しには作成元セッションがないため、current_task には親タスクのフォールバックを使用します。",
"mcpTaskProfileCurrentTask": "セッションプロファイルを作成中",
"mcpTaskProfileCurrentTaskDescription": "ライブの task-mode 呼び出しでは、新しいタスクは検証済みの作成元セッションのプロファイルと、その有効なモデル、モード、動的オプションを使用します。セッション中に加えられた変更も含まれます。ワークフローの起動プロファイルがあれば、それが最優先です。なければ作成元セッションに従います。検証済みセッションのコンテキストがない場合は、元のタスクまたは親タスクのプロファイルにフォールバックし、その後にワークフローとワークスペースのデフォルトを使います。これにより、より高コストな構成が再利用される場合があります。",
"mcpTaskProfileWorkspaceDefault": "ワークスペースのデフォルトプロファイル",
"mcpTaskProfileWorkspaceDefaultDescription": "新しいタスクは作成元セッションと元のタスクまたは親タスクのプロファイルを使用しません。まずワークフローの起動プロファイルを使い、次に対象ワークスペースのデフォルトを使います。作成元セッションのモデル、モード、動的オプションはコピーしません。コスト方針を一貫させたい場合に選択してください。ワークフローとワークスペースのどちらにもプロファイルがない場合、作成は失敗します。",
"memory": "メモリ %",
"mergeThisSplitIntoTheSplit": "この分割を {{target}} を含む分割に統合します。",
"mergeWithTarget": "{{target}} と統合",
"messageSubmitKey": "メッセージ送信キー",
"metrics": "メトリクス",
"moveTabLeft": "タブを左へ移動",
"moveTabRight": "タブを右へ移動",
"moveTabToSplit": "タブを分割へ移動",
"moveThisSplitOf": "この分割を {{target}} の {{direction}} に移動します。",
"moveThisTabIntoANewSplit": "このタブを、現在の分割の隣にある新しい分割へ移動します。",
"moveThisTabIntoAnotherExisting": "このタブを別の既存の分割へ移動します。",
"moveThisTabIntoTheSplit": "このタブを {{target}} を含む分割へ移動します。",
"moveThisTabOnePositionLeft": "このタブを、現在の分割内で 1 つ左へ移動します。",
"moveThisTabOnePositionRight": "このタブを、現在の分割内で 1 つ右へ移動します。",
"mustBeAJsonObject": "JSON オブジェクトである必要があります",
"name": "名前",
"nameEGOpenaiProductionKey": "名前 (例: OpenAI Production Key)",
"nerdFonts": "Nerd Fonts",
"new": "新規",
"newBrowserTab": "新しいブラウザタブ",
"newCustomEditor": "新しいカスタムエディタ",
"newLayout": "新しいレイアウト",
"newSecret": "新しいシークレット",
"newTaskSessionsWillUseThis": "新しいタスクセッションではこのシェルが使用されます。既存のセッションは現在のシェルのままです。",
"noActiveSprites": "アクティブな sprite はありません。",
"noAppriseProviders": "まだ Apprise プロバイダーが設定されていません。",
"noCustomEditorsYet": "カスタムエディタはまだありません。",
"noCustomProfiles": "カスタムプロファイルはありません",
"noEditorFound": "エディタが見つかりません。",
"noMatchingSettings": "一致する設定なし",
"noProvidersConfiguredYet": "まだプロバイダ未設定。",
"noSecretsYetAddYourFirst": "まだシークレットなし。最初のシークレット追加して開始。",
"notConfigured": "未設定",
"notInstalled": "未インストール",
"notificationEventClarificationRequested": "エージェントに回答必要",
"notificationEventClarificationRequestedDescription": "エージェントが明確に質問したとき通知。",
"notificationEventOfficeInboxItem": "Office受信トレイ項目",
"notificationEventOfficeInboxItemDescription": "新しい受信トレイ項目で対応必要なとき通知。",
"notificationEventToggle": "{{name}} の {{event}}",
"notificationEventTurnFinished": "エージェントのターン完了",
"notificationEventTurnFinishedDescription": "各エージェントターン完了後に通知。",
"notificationEventUpdateAvailable": "Kandev 更新あり",
"notificationEventUpdateAvailableDescription": "新しい Kandev リリース利用可能なとき通知。",
"notificationEvents": "通知イベント",
"notificationEventsDescription": "各通知タイプを受け取るプロバイダ選択。",
"notificationPermissionCheckFailed": "Kandev で通知権限を確認できなかった。もう一度試してから、ブラウザか OS の通知設定確認。",
"notificationPermissionEnable": "有効にする",
"notificationPermissionEnabled": "有効",
"notificationPermissionRetry": "再試行",
"notificationSound": "通知音",
"notificationSoundDescription": "選択したエージェントターン、質問、Office イベント発生時にこの端末で音を再生。",
"notificationSoundSelect": "通知音を選択",
"notificationType": "通知タイプ",
"notifications": "通知",
"notificationsBlockedInBrowser": "通知がブラウザでブロックされてる。サイト設定で有効にしてから、更新をクリック。",
"notificationsBlockedInOs": "通知が OS のアプリ通知設定でブロックされてる。そこで有効にしてから、更新をクリック。",
"notificationsDescription": "プロバイダを設定して、どのイベントで通知するか選ぶ。",
"notificationsNotShowingHint": "通知が見えないなら、OS 設定確認してこのブラウザを許可。",
"notificationsUnsupported": "このブラウザはデスクトップ通知非対応。",
"notifyWhenThisEventOccurs": "このイベント発生時に通知。",
"openKandevTo": "Kandev を開く先",
"openLinksIn": "リンクを開く先",
"opensAVsCodeRemoteSsh": "VS Code Remote SSH URL を scheme で開く (例: {{example}})。",
"optionalScheme": "任意の scheme ({{schemes}})",
"optionalUsername": "任意のユーザー名",
"overrideSettingsSentToEachLanguage": "<2>{{method}}</2> 経由で各言語サーバーに送る設定を上書き。JSON 形式。",
"password": "パスワード",
"pickTheDefaultShellForTask": "タスクセッション用のデフォルトシェル選択",
"pinTheAgentsLiveTodoChecklistAs": "エージェントのライブ ToDo チェックリストを右パネルの Todos タブとして自動で固定。これをオフでも、Todos タブはいつでも手動追加できる。",
"onlyPinWhenTodoListIsNotEmpty": "ToDo リストが空でない場合のみピン留めする",
"onlyPinWhenTodoListIsNotEmptyDescription": "自動ピン留めを、ToDo エントリがあるセッションにのみ制限します。手動で追加された Todos タブには影響しません。",
"pluginShortcuts": "プラグインのショートカット",
"preferredShell": "優先するシェル",
"preferences": "設定",
"pressAKeyCombo": "キーの組み合わせを押してください...",
"pressCmdCtrlEnterToSend": "メッセージを送信するには Cmd/Ctrl+Enter を押してください。改行するには Enter を押してください。",
"pressEnterToSendMessagesPress": "メッセージを送信するには Enter を押してください。改行するには Shift+Enter を押してください。",
"previewSound": "音をプレビュー",
"profileForTasksCreatedByAgents": "エージェントが作成したタスク用のプロファイル",
"programming": "プログラミング",
"profileStartModelNotAdvertisedOnHost": "ホストの probe は {{model}} を通知しませんでした。選択された executor が起動時にモデルを決定します。",
"modelVariationAdvisory": "ホストの catalog には {{model}} の候補バリエーションが 1 つあります。{{variation}}。保存されたモデルは起動まで変更されません。",
"promptAdd": "プロンプトを追加",
"promptEditorAriaLabel": "プロンプトエディタ",
"promptEditorBothHint": "利用可能なプレースホルダーには {{placeholder}}、保存済みプロンプトには {{mention}} を入力してください。",
"promptEditorPlaceholderHint": "利用可能なプレースホルダーを見るには {{placeholder}} を入力してください。",
"promptEditorPromptReferenceHint": "保存済みプロンプトを見るには {{mention}} を入力してください。",
"promptCreateFailed": "プロンプトを作成できませんでした",
"promptDelete": "プロンプトを削除",
"promptDeleteDescription": "<2>{{name}}</2> は完全に削除されます。この操作は元に戻せません。",
"promptDeleteFailed": "プロンプトを削除できませんでした",
"promptDeleteThisPrompt": "このプロンプト",
"promptMentionHelp": "チャット入力欄で <1>{{token}}</1> を使うと、プロンプトの内容を挿入できます。プロンプトは名前で一致し、その場で展開されます。",
"promptNamePlaceholder": "プロンプト名",
"promptSaveFailed": "プロンプトを保存できませんでした",
"promptsCustomHeading": "カスタムプロンプト",
"promptsEmpty": "まだプロンプトはありません。まずは最初のプロンプトを追加してください。",
"promptsInvalidReason": "プロンプト名と内容は必須です。",
"promptsLoading": "プロンプトを読み込み中...",
"promptsPageDescription": "チャット入力欄で再利用できるプロンプトのスニペットを作成します。",
"providerName": "プロバイダー名",
"pxRange": "px (8-24)",
"refreshNotificationPermission": "通知の許可を更新",
"refreshPermissionStatus": "許可ステータスを更新",
"remove": "削除",
"removePanel": "パネルを削除",
"removeThisTabFromTheSaved": "このタブを保存済みレイアウトから削除します。",
"removesTheHostMarkerAndProgress": "Host マーカーと進捗バーを削除し、メトリクスのアイコンと値は保持します。",
"reset": "リセット",
"resetBuiltInLayout": "組み込みレイアウトをリセット",
"resetClearShortcut": "リセット(ショートカットをクリア)",
"resetToDefault": "既定に戻す",
"resizeRepositionOrMergeTheSelected": "選択した分割をサイズ変更、再配置、または結合します。",
"resourceMetrics": "リソースメトリクス",
"richOutputChartMotion": "リッチ出力チャートの動き",
"restoreTheOriginalBuiltInLayout": "元の組み込みレイアウトを復元し、上書きを破棄します。",
"resumeTheMostRecentlyOpenedTask": "このデバイスのこのワークスペースで、最後に開いたタスクを起動時に再開します。Home では引き続き記憶された一覧を使用します。",
"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": "エージェントの Todo リストパネルを表示",
"showAnchoredPromptBar": "固定プロンプトバーを表示",
"showCleanupDetailsAndSubtaskOptions": "アーカイブ開始前に、クリーンアップの詳細とサブタスクのオプションを表示します。",
"showHostMetricsInStatusBar": "ステータスバーにホストメトリクスを表示",
"showNewDividerInTranscripts": "トランスクリプトに New 区切り線を表示",
"showScrollToLastPrompt": "最後のプロンプトへスクロールを表示",
"showScrollToStart": "先頭へスクロールを表示",
"showStatusBar": "ステータスバーを表示",
"showStatusBarDescription": "Kandev の下部にステータス詳細を表示。スマホでは Status ドロワーに表示。これをオフでも接続警告は表示されたまま。",
"showTheControlThatJumpsTo": "トランスクリプト先頭へ飛ぶコントロールを表示。",
"showTheJumpControlAfterYour": "最新プロンプトがトランスクリプトより上へスクロールした後に、ジャンプコントロールを表示。",
"showThePerSessionButtonThat": "セッションごとのボタンを表示。これはトランスクリプトの自動スクロールを一時的にオン、オフ切り替え。非表示でも既定は変わらず。新規トランスクリプトは今も自動スクロール。",
"showTranscriptAutoScrollControl": "トランスクリプト自動スクロールを表示",
"showsKandevHostValuesOnlyCollection": "Kandev のホスト値のみ表示。クライアントが表示中に収集開始。",
"simplifiedMetrics": "簡易メトリクス",
"sleepInhibitionActive": "タスク開始中、実行中に有効。",
"sleepInhibitionAdminOnly": "このインストール全体設定を変えられるのは管理者のみ。",
"sleepInhibitionAvailable": "利用可。要求なし。",
"sleepInhibitionCaveat": "Container、Kubernetes、remote-executor、always-on デプロイでは通常これを無効のまま。画面を起こしたり、明示的なユーザーのスリープ操作を上書きしたりはしない。",
"sleepInhibitionDescription": "タスク開始中、実行中の間、Kandev バックエンドホストを利用可能に保つ。",
"sleepInhibitionInfoLabel": "ホストのスリープ防止の仕組み",
"sleepInhibitionInfoLinux": "Linux は D-Bus で systemd-logind に <0>{{method}}</0> を送る。Kandev は作業中タスクがなくなるまで返されたファイルを開いたままにする。",
"sleepInhibitionInfoMacos": "macOS は <0>{{command}}</0> を実行。<1>{{idleOption}}</1> オプションでアイドル時のシステムスリープを防ぐ。<2>{{waitOption}}</2> オプションでバックエンド終了時にヘルパーを停止する。",
"sleepInhibitionInfoRelease": "この要求で画面は起こさないし、明示的なユーザーのスリープ操作も上書きしない。",
"sleepInhibitionInfoTitle": "Kandev がホストのスリープを防ぐ仕組み",
"sleepInhibitionInfoTrigger": "バックエンドは、任意のタスクが開始中、実行中の間、1 件のスリープ防止要求を保持する。",
"sleepInhibitionInfoWindows": "Windows はシステムスリープフラグ付きで <0>{{api}}</0> を呼ぶ。作業中タスクがなくなると 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": "このデバイスで最後に使用したカンバン、パイプライン、リスト、またはスレッドのビューを開きます。",
"openThreadsOnStartupAndHome": "起動時、および選択したワークスペースでホームに移動するたびに、最後の一覧ビューに関係なくスレッドを開きます。",
"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": "この選択はデバイス間であなたのユーザーに引き継がれます。明示的なリンクはリンク先を保持し、Office ワークスペースは Office ホームを保持します。",
"thisLayoutIsUsedAsThe": "このレイアウトは、新しいタスクの開始レイアウトとして使用されます。",
"thisPageHasUnsavedChangesSave": "このページには保存されていない変更があります。保存するか、破棄するか、編集を続けてください。",
"thisProfileWillBeRemovedWhen": "保存すると、このプロフィールは削除されます。",
"thisSecret": "このシークレット",
"thisWillPermanentlyRemoveSecret": "<2>{{name}}</2> を完全に削除します。この操作は元に戻せません。",
"todoListPanel": "ToDo リストパネル",
"tokens": "トークン",
"transcriptNavigation": "トランスクリプトのナビゲーション",
"tree": "ツリー",
"unableToConnect": "接続できない。",
"unavailable": "利用不可",
"unbound": "未バインド",
"unreadMessages": "未読メッセージ",
"untitledLayout": "無題のレイアウト",
"updateChannel": "更新チャンネル",
"updateChannelDescription": "この managed service がどのリリースを確認して適用するか選ぶ。",
"updateChannelLatestNightly": "最新 nightly",
"updateChannelLatestRelease": "最新リリース",
"updateChannelNightly": "nightly",
"updateChannelNightlyDescription": "main から npm 経由で prerelease build を install-wide で入れる。適用時は表示どおりの正確な version を使う。",
"updateChannelRequiresManagedService": "Nightly 更新には、Kandev 管理の npm または npx の user service が必要。",
"updateChannelRequiresNpmInstallation": "Nightly 更新は npm または npx の install でのみ使える。",
"updateChannelRequiresServiceMetadata": "Nightly 更新には有効な Kandev service metadata が必要。",
"updateChannelRequiresUserService": "Nightly 更新は user service でのみ使える。",
"updateChannelSaveFailed": "更新チャンネルを保存できない。もう一度試す。",
"updateChannelSavingNotice": "更新を確認または適用する前に、チャンネル変更を保存中。",
"updateChannelSettingsUnavailable": "更新チャンネル設定は使えない。",
"updateChannelStable": "安定版",
"updateChannelStableDescription": "署名付き GitHub リリース。ほとんどのユーザー向けに推奨。",
"updateChannelUnavailable": "Nightly 更新チャンネルは、このインストールで利用不可。",
"updateChannelUnsavedNotice": "更新の確認か適用前に、チャンネル変更を保存。",
"updateChannelUnsupportedServiceManager": "この service manager は nightly 更新をサポートしない。",
"uptime": "稼働時間",
"useAgentForNewTaskTitles": "新しいタスクタイトルにエージェントを使う",
"useAsDefault": "デフォルトにする",
"useBuiltInDefault": "組み込み Default を使う",
"useThisLayoutAsTheStarting": "このレイアウトを新規タスクの開始レイアウトとして使う。",
"useThisSettingWhenAnAgent": "エージェントが Kandev MCP ツールを呼び出してタスクを作成する時に、この設定を使う。呼び出しで profile を選ばない場合、Kandev が新しいタスクに agent profile を割り当てる。その profile が agent、model、setup を制御する。",
"usefulWhenKandevIsSelfHosted": "Kandev をリモートサーバーで self-host し、グローバルステータスバーか phone Status drawer から機械リソースの軽い表示を見たい時に便利。",
"utilityActionsTitle": "アクション",
"utilityActionsDescription": "特定の Kandev UI action の profile を上書きする。これらの action は、task session 内で動く agent を設定しない。",
"utilityAddCustomAgent": "追加",
"utilityAgentDescriptionLabel": "説明",
"utilityAgentDescriptionPlaceholder": "この agent が何をするかの短い説明",
"utilityAgentDialogCreate": "Agent を作成",
"utilityAgentDialogCreateTitle": "Utility Agent を作成",
"utilityAgentDialogEditTitle": "Utility Agent を編集",
"utilityAgentDialogSave": "変更を保存",
"utilityAgentNamePlaceholder": "例: commit-message",
"utilityAgentPromptHint": "利用可能な変数を見るには <1>{{sigil}}</1> を入力。autocomplete 付き",
"utilityAgentPromptTemplate": "プロンプトテンプレート",
"utilityAgents": "ユーティリティエージェント",
"utilityAgentsPageDescription": "one-shot helper は、commit や PR テキスト生成、prompt 強化などの Kandev UI action を実行する。task session 内で動く agent とは別。",
"utilityCustomAgentsDescription": "custom prompt 付きの独自 utility agent を作成。",
"utilityCustomAgentsEmpty": "custom utility agent なし。",
"utilityCustomAgentsTitle": "カスタムユーティリティエージェント",
"utilityDefaultModelDescription": "組み込み utility action で使う profile を選択。profile が model、permissions、起動設定を制御する。",
"utilityDefaultModelTitle": "デフォルトのユーティリティエージェントモデル",
"utilityAgentProfile": "エージェントプロフィール",
"utilitySelectProfile": "profile を選択...",
"utilitySearchProfiles": "agent profile を検索...",
"utilityNoProfilesFound": "一致する agent profile が見つからない。",
"utilityNoDefaultProfile": "default profile なし",
"utilityUnavailableProfile": "利用不可: {{name}}",
"utilityProfileNeedsRepair": "この profile は利用不可。有効な inference profile を選択。",
"viewAvailableSettings": "利用可能な設定を見る",
"visualEditorUnavailable": "Visual editor 利用不可",
"vsCodeRemoteSsh": "VS Code Remote SSH",
"whenEnabledInstallYourProjectS": "有効時、プロジェクトの依存関係をインストールする。例: <2>{{command}}</2> をリポジトリのセットアップスクリプト経由で実行。型エラーの見落とし防ぐ。",
"externalMcpToolListTaskSessions": "タスクの全エージェントセッションを新しい順で一覧。別ツールがID指定で処理できる。",
"shortcutBottomTerminal": "下部ターミナル切替",
"shortcutCommandPanel": "コマンドパネル",
"shortcutCommandPanelAlt": "コマンドパネル(Alt)",
"shortcutFileSearch": "ファイル検索",
"shortcutFocusChatInput": "チャット入力にフォーカス",
"shortcutFocusCliChatInput": "CLIチャット入力にフォーカス",
"shortcutNewTask": "新規タスク",
"shortcutOpenTaskPullRequest": "タスク Pull Request を開く",
"shortcutOpenWorkspacePicker": "ワークスペースピッカーを開く",
"shortcutQuickChat": "クイックチャット",
"shortcutRecentTaskSwitcher": "最近のタスク切替",
"shortcutRecentTaskSwitcherBackward": "最近のタスク切替(逆)",
"shortcutReverseChatSearch": "チャット逆検索",
"shortcutTaskContentSearch": "タスク内容を検索",
"shortcutTogglePlanMode": "計画モード切替",
"shortcutToggleSidebar": "サイドバー切替",
"copyMove": "コピー/移動",
"copyMoveSecretNamed": "{{name}} をコピーまたは移動",
"copyMoveDialogHint": "シークレットを別スコープへコピーまたは移動。値はサーバー側で転送され、表示されない。",
"copyMoveMode": "コピーまたは移動",
"copySecretAction": "コピー",
"moveSecretAction": "移動",
"copyModeDescription": "宛先にコピー作成。元のシークレットは残る。",
"moveModeWarning": "元のシークレットは {{origin}} から削除される。",
"destination": "宛先",
"secretTargetName": "名前",
"secretNameConflictInDestination": "{{name}} というシークレットがこの宛先に既にある。",
"destinationsLoading": "宛先を読み込み中",
"destinationsLoadFailed": "宛先を読み込めなかった。",
"retryDestinations": "再試行",
"noValidDestinations": "有効な宛先なし。",
"transferFailed": "シークレットをコピーまたは移動できなかった。",
"destinationGlobal": "グローバル",
"secretNameTooLong": "名前は 100 バイト以下。",
"keyValueAddItem": "項目を追加",
"keyValueKeyPlaceholder": "キー",
"keyValueValuePlaceholder": "値",
"externalMcpToolListPendingAgentPermissions": "タスクの実行中コマンドとツール権限リクエストを一覧。安全な操作詳細とエージェントの正確な選択も含む。",
"externalMcpToolResolveAgentPermission": "一覧ツールで返された正確なオプションを選んで、保留中の権限リクエストを1件解決します。",
"navUnits": "組織単位",
"unitsTitle": "組織単位",
"unitsDescription": "単位にはチーム、ワークスペース、ユーザーが含まれます。単位のメンバーになると、その下にあるすべてのワークスペースにアクセスでき、後から作成されたものも含まれます。",
"unitsEmpty": "まだ単位はありません。",
"unitRootBadge": "組織全体",
"unitPersonalBadge": "個人",
"unitAddChild": "単位を追加",
"unitMembers": "メンバー",
"unitDelete": "単位を削除",
"unitCreateTitle": "{{parent}} に新しい単位",
"unitCreateDescription": "部門もチームも単位です。違いは、所属する階層だけです。",
"unitNamePlaceholder": "プラットフォーム",
"unitCreate": "作成",
"unitMembersTitle": "{{unit}} のメンバー",
"unitMembersDescription": "ここにいる全員は、あなたが付与したロールで、この単位配下のすべてのワークスペースにアクセスできます。",
"unitNoMembers": "この単位にはまだ誰もいません。",
"unitAddMember": "追加",
"unitRemoveMember": "メンバーを削除",
"unitPickPerson": "人を選択",
"unitActionFailed": "うまくいきませんでした。",
"sidebarHoverTitle": "サイドバー",
"sidebarHoverEnabled": "ホバーでサイドバーを表示",
"sidebarHoverDelay": "ホバー遅延 (ms)",
"sidebarHoverHelp": "マウスまたはトラックパッドを使って、折りたたまれたサイドバーを表示します。遅延は 0 から 5000 ms の間で設定できます。0 にするとすぐに表示されます。",
"sidebarHoverDelayError": "0 から 5000 の整数を入力してください。",
"discoveryAliasesSidebarHover": "サイドバー ホバー 表示 遅延 待機 マウス トラックパッド",
"autoFocusNewTasks": "新しいタスクを自動でフォーカス",
"autoFocusNewTasksHelp": "新しく作成されたタスクを自動で開きます。現在の画面にとどまりたい場合はオフにしてください。タスクとエージェントは引き続き要求どおりに開始されます。",
"chatAnimations": "チャットのアニメーション",
"chatAnimationsDescription": "このデバイスで、受信テキスト、新しいチャット項目、スクロールをアニメーション表示します。動きを抑える設定を尊重します。",
"discoveryAliasesChatMotion": "チャット アニメーション スムーズスクロール テキスト モーション",
"sidebar": "サイドバー",
"sidebarDescription": "このワークスペースのナビゲーションをカスタマイズします。変更はアカウントに適用され、すべてのクライアントで引き継がれます。",
"sidebarLayout": "サイドバーのレイアウト",
"sectionName": "セクション名",
"sidebarSectionNameError": "セクション名は 1 文字以上 60 文字以内で入力してください。",
"sidebarDuplicateShortcutError": "1 つのセクションに同じショートカットは 1 回しか表示できません。",
"sidebarLayoutLimitError": "サイドバーのレイアウトが上限に達しました。",
"sidebarLayoutInvalidError": "保存する前にサイドバーのレイアウトを確認してください。",
"sidebarToggleVisibility": "表示を切り替え",
"dragToReorder": "ドラッグして並べ替え",
"moveUp": "上へ移動",
"moveDown": "下へ移動",
"moveToSection": "セクションへ移動",
"moveShortcutToSection": "{{label}} をセクションへ移動",
"addShortcutSection": "ショートカットセクションを追加",
"sidebarRestoreDefaults": "既定に戻す",
"sidebarConflict": "このレイアウトは別の場所で変更された。下書きは残っている。",
"sidebarLoadLatest": "最新を読み込む",
"sidebarSaveError": "サイドバーレイアウトを保存できなかった。もう一度試す。",
"sidebarUnsupportedVersion": "このレイアウトは新しいバージョンを使っている。アプリが対応するまで編集は一時停止。",
"sidebarNoWorkspace": "サイドバーをカスタマイズするワークスペースを選択。",
"sidebarPreview": "下書きプレビュー",
"addShortcut": "ショートカットを追加",
"editSection": "セクションを編集",
"sidebarShortcutLoadError": "ショートカットを読み込めなかった。もう一度試す。",
"noMatchingShortcuts": "一致するショートカットなし",
"searchShortcuts": "ショートカットを検索",
"sidebarPreviewEmpty": "表示できるナビゲーション項目なし"
}
+125
View File
@@ -0,0 +1,125 @@
{
"taskViews": "タスクビュー",
"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}}",
"morePluginItems": "プラグイン項目をもっと表示",
"needsYouInbox": "対応必要",
"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}} 件",
"wipQueuePosition": "{{step}} キューの {{total}} 件中 {{position}} 番目",
"quickChat": "クイックチャット",
"quickChatUnseen": "クイックチャット、新しい返信",
"quickChatRunning": "クイックチャット、エージェント作業中",
"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": "ワークスペース",
"taskPreferences": "サイドバーのタスク設定",
"views": "サイドバーの表示",
"failedToLoadArchivedTasks": "アーカイブ済みタスクの読み込みに失敗した",
"failedToSyncSidebarTaskPrefs": "サイドバーのタスク設定を同期できなかった",
"failedToSyncSidebarViews": "サイドバー表示を同期できなかった",
"newViewNumbered": "新しい表示 {{suffix}}",
"untitledView": "名前なしビュー",
"workspaceContextRefreshFailed": "タスクを更新できなかった。",
"workspaceContextAccessDenied": "このワークスペースへのアクセス権がなくなった。"
}
+40
View File
@@ -0,0 +1,40 @@
{
"duration.minutes_one": "{{count}} 分",
"duration.minutes_other": "{{count}} 分",
"duration.seconds_one": "{{count}} 秒",
"duration.seconds_other": "{{count}} 秒",
"page.countedProgress": "{{done}} / {{total}} {{unit}}",
"page.countingProgress": "{{done}} {{unit}}",
"page.elapsed": "{{duration}} 経過",
"page.eta": "残り約 {{duration}}",
"page.lastKnown": "最後に確認した状態",
"page.progressUnavailable": "この手順の進捗は測定できない。",
"page.stalled": "{{duration}} 停滞中",
"page.title": "Kandev を起動中",
"page.waiting": "Kandev を起動中で、まだ到達できない。",
"phase.applying_migrations": "マイグレーション適用中",
"phase.backing_up_database": "データベースをバックアップ中",
"phase.initializing_services": "サービスを初期化中",
"phase.opening_database": "データベースを開いている",
"phase.ready": "準備完了",
"phase.recovering_sessions": "セッションを復元中",
"step.database_backup": "データベースのバックアップ",
"step.message_timestamps": "メッセージのタイムスタンプ",
"step.prompt_seq": "プロンプトのシーケンス番号",
"step.session_recovery": "セッションの復元",
"step.stores_repositories": "リポジトリストア",
"step.stores_services": "サービスストア",
"step.subagent_context": "サブエージェントのコンテキスト",
"unit.bytes_one": "バイト",
"unit.bytes_other": "バイト",
"unit.messages_one": "メッセージ",
"unit.messages_other": "メッセージ",
"unit.rows_one": "行",
"unit.rows_other": "行",
"unit.sessions_one": "セッション",
"unit.sessions_other": "セッション",
"unit.stores_one": "ストア",
"unit.stores_other": "ストア",
"unit.turns_one": "ターン",
"unit.turns_other": "ターン"
}
+107
View File
@@ -0,0 +1,107 @@
{
"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": "1セッションあたり {{turns}} ターン · {{messages}} メッセージ",
"turnsPerTask": "タスクあたりターン",
"userMsgs": "ユーザーメッセージ",
"userShare": "ユーザー共有",
"workload": "作業負荷",
"failedToLoadSection": "セクションの読み込み失敗",
"failedToLoadStats": "統計の読み込み失敗",
"statsAccessDenied": "この統計にアクセス権なし。",
"statsTemporarilyUnavailable": "統計は一時的に利用不可。再試行して。",
"retry": "再試行",
"retrying": "再試行中…",
"loadingStats": "統計を読み込み中…",
"noGitActivity": "git活動なし",
"subtitleReady": "{{tasks}} · {{sessions}} · {{duration}}",
"subtitleSessionCount_one": "{{count}}セッション",
"subtitleSessionCount_other": "{{count}}セッション",
"subtitleTaskCount_one": "{{count}}タスク",
"subtitleTaskCount_other": "{{count}}タスク",
"summaryCompletedInRange": "- 完了済み ({{range}}): {{completed}}",
"summaryGit": "- Git:{{git}}",
"summaryGitActivity_one": "{{count}}コミット, +{{insertions}}/-{{deletions}}",
"summaryGitActivity_other": "{{count}}コミット, +{{insertions}}/-{{deletions}}",
"summaryHeading": "*Kandev 統計 - {{range}}*",
"summaryRepos_one": "- リポジトリ: {{count}}件追跡中 · 最高リポジトリ: {{topRepo}}",
"summaryRepos_other": "- リポジトリ: {{count}}件追跡中 · 最高リポジトリ: {{topRepo}}",
"summaryTasks": "- タスク: 合計{{total}}件 (完了{{done}}件, 進行中{{inProgress}}件) · 完了率{{completion}}",
"summaryTime": "- 時間: 合計{{total}} · 平均{{average}}/タスク",
"summaryTopRepo_one": "{{repository}} ({{count}}タスク)",
"summaryTopRepo_other": "{{repository}} ({{count}}タスク)"
}
+751
View File
@@ -0,0 +1,751 @@
{
"aboutArch": "アーキテクチャ",
"aboutBuildTime": "ビルド時刻",
"aboutCommit": "コミット",
"aboutDocumentation": "ドキュメント",
"aboutGoVersion": "Go バージョン",
"aboutLoading": "読み込み中...",
"aboutOs": "OS",
"aboutPageDescription": "バージョン、ビルドメタデータ、リンク。",
"aboutReportIssue": "問題を報告",
"aboutTitle": "Kandev について",
"aboutVersion": "バージョン",
"actionDone": "完了",
"actionFailed": "失敗しました",
"actionRunning": "実行中...",
"backupsAdminOnly": "バックアップの作成、ダウンロード、復元、削除は管理者のみが行えます。",
"backupsColumnActions": "操作",
"backupsColumnCreated": "作成日時",
"backupsColumnKind": "種類",
"backupsColumnName": "名前",
"backupsColumnSize": "サイズ",
"backupsCreate": "スナップショットを作成",
"backupsCreateFailed": "スナップショットの作成に失敗しました",
"backupsCreateTimeout": "スナップショットの作成が {{seconds}} 秒以内に完了しませんでした",
"backupsCreating": "作成中...",
"backupsDeleteFailed": "削除に失敗しました",
"backupsDeleteLabel": "{{name}} を削除",
"backupsDownloadLabel": "{{name}} をダウンロード",
"backupsEmpty": "まだバックアップはありません。バージョンアップ時に自動作成されたスナップショット、または上のボタンで手動作成したスナップショットがここに表示されます。",
"backupsHelp": "バックアップは、Kandev のデータベースの完全なコピーです (タスク、セッション、設定)。Kandev は各バージョンアップの前に自動で 1 つ作成するため、何か問題が起きても元に戻せます。工場出荷時リセットのような危険な操作の前に、手動で作成することもできます。",
"backupsKindAuto": "自動",
"backupsKindManual": "手動",
"backupsLoading": "バックアップを読み込み中...",
"backupsPageDescription": "{{path}} に保存された {{command}} のスナップショット。",
"backupsRestoreLabel": "{{name}} を復元",
"backupsRetention_one": "最新のバックアップ 1 件のみがディスクに保持されます。",
"backupsRetention_other": "最新のバックアップ {{count}} 件のみがディスクに保持されます。",
"backupsTitle": "バックアップ",
"changelogEmpty": "利用可能な変更履歴はありません。",
"changelogViewOnGitHub": "GitHub で表示",
"close": "閉じる",
"createUserDescription": "パスワードを設定して直接アカウントを作成します。ユーザーに自分でパスワードを選んでもらう場合は、招待リンクを優先してください。",
"createUserDisplayName": "表示名",
"createUserEmail": "メールアドレス",
"createUserFailed": "ユーザーを作成できませんでした。",
"createUserPassword": "パスワード",
"createUserRole": "ロール",
"createUserSubmit": "ユーザーを作成",
"createUserSubmitting": "作成中...",
"createUserTitle": "ユーザーを追加",
"databaseDriver": "ドライバ",
"databaseFactoryReset": "初期化",
"databaseFactoryResetHelp": "タスク、セッション、設定、リポジトリ、ワークツリーを含む、Kandev のすべてのデータを消去します。元に戻すことはできません。まずバックアップが作成されますが、復元するにはリセット後にバックアップページから操作する必要があります。最初からやり直したい場合にのみ使用してください。",
"databaseLastBackup": "最後のバックアップ",
"databaseLoading": "データベースの統計情報を読み込み中...",
"databaseMaintenanceUnavailable": "{{driver}} では SQLite のメンテナンス操作を利用できません。",
"databaseNever": "なし",
"databaseOptimize": "最適化",
"databaseOptimizeHelp": "よく使われるクエリを高速に保つため、内部インデックスを更新するようデータベースに依頼します。大量のデータを削除した後や、アプリの動作が重いと感じるときに実行してください。高速で安全です。データは変更されません。",
"databasePageDescription": "データベースのドライバ、サイズ、利用可能なメンテナンス操作。",
"dataStoragePageDescription": "データベースの統計情報、バックアップ、サーバーログ。",
"databasePath": "パス",
"databaseRunOptimize": "最適化を実行",
"databaseRunVacuum": "VACUUMを実行",
"databaseSchemaVersion": "スキーマバージョン",
"databaseSize": "サイズ",
"databaseSizeLong": "データベースサイズ",
"databaseTitle": "データベース",
"databaseVacuum": "VACUUM",
"databaseVacuumHelp": "データベースファイル内の未使用領域を再利用します。タスクやセッションを削除すると、ファイルは時間とともに大きくなることがあります。VACUUM により圧縮されます。いつ実行しても安全で、データは変更されません。データベースサイズが大きいように見える場合は、時々実行してください。",
"databaseWal": "WAL",
"databaseWalHelp": "Write-Ahead Log です。SQLite は新しい変更をまずこの補助ファイルに書き込み、時間をかけてメインのデータベースに統合します。WAL サイズが 0 でないのは正常です。負荷が高いと一時的に増え、チェックポイント時に元に戻ります。VACUUM を実行するとリセットされます。",
"databaseWhatIs": "{{label}} とは?",
"desktopUpdateFailed": "デスクトップの更新に失敗しました",
"diskCalculating": "計算中...",
"diskColumnPath": "パス",
"diskColumnSize": "サイズ",
"diskComputedAt": "計算日時 {{at}}",
"diskOpen": "開く",
"diskRefresh": "更新",
"diskRefreshed": "更新しました",
"diskRefreshHelp": "データフォルダ内のすべてのディレクトリを走査し、ファイルサイズを合計します。結果は数時間キャッシュされます。今すぐクリックすると最新の数値を計算します。大きなワークスペースでは数秒かかることがあります。",
"diskRefreshing": "更新中...",
"diskRowBackups": "バックアップ",
"diskRowDataDir": "データディレクトリ",
"diskRowQuickChat": "クイックチャット",
"diskRowRepos": "リポジトリ",
"diskRowSessions": "セッション",
"diskRowTasks": "タスク",
"diskRowWorktrees": "ワークツリー",
"diskTotal": "合計",
"diskUnmeasuredDirs": "一部のディレクトリは測定できませんでした:",
"diskUsageTitle": "ディスク使用量",
"dismiss": "閉じる",
"factoryResetCompleteBody": "Kandev のデータは消去されました。アプリを終了して再起動し、最初からやり直してください。現在動作中のバックエンドは、空になったデータベースへの接続を保持しており、再起動するまでキャッシュを再構築しません。必要であれば、リセット前のスナップショットはバックアップページで確認できます。",
"factoryResetCompleteTitle": "初期化が完了しました",
"factoryResetFailed": "リセットに失敗しました",
"factoryResetPlaceholder": "{{token}} と入力して確認",
"factoryResetRequestFailed": "リセット要求に失敗しました",
"factoryResetSnapshot": "消去の前に <1>{{path}}</1> にスナップショットが自動作成されるため、気が変わった場合はバックアップページから復元できます。",
"factoryResetTitle": "初期化",
"factoryResetTypeToConfirm": "確認ボタンを有効にするには <1>{{token}}</1> と入力してください。消去が完了すると、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}} を切り替え",
"featureToggleUnavailable": "利用不可",
"featureToggleUnavailableGeneric": "このインストールでは、今はこの機能を有効化できない。",
"featureToggleUnavailablePlatform": "このOSでは、この機能はサポートされていない。",
"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": "1回限りの招待リンクを生成。メールを空にすると、誰でも使えるリンクを作成し、選択したロールで登録できる。メールを入れると、そのアドレスに招待を固定する。",
"inviteDone": "完了",
"inviteEmailOptional": "メール(任意)",
"inviteFailed": "招待を作成できなかった。",
"inviteReadyDescription": "このリンクを招待相手に共有。このリンクは1回だけ表示。今すぐコピー。",
"inviteReadyTitle": "招待リンクの準備完了",
"inviteTitle": "ユーザーを招待",
"inviteUrlLabel": "招待リンク",
"ioLoadHelp": "直近1分間に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": "この設定を変更できるのは管理者のみ。",
"messageQueueAutoMergeDescription": "全セッションのデフォルトを設定する。各セッションでは、そのセッションのキューで Auto-merge を変更するまでこの値に従う。",
"messageQueueAutoMergeNotice": "メッセージの source が違う、または task, model, mode, metadata, shared limits が非互換なら、別のキュー済みメッセージのままになる。これは新規受け入れだけに適用され、手動の merge control は変わらない。",
"messageQueueAutoMergeToggleLabel": "連続メッセージを自動マージ",
"messageQueueConfigured": "設定済み:",
"messageQueueDescription": "各セッションが新しい作業を拒否される前に保持できる保留メッセージ数を制御する。",
"messageQueueEffective": "実効値:",
"messageQueueEffectiveHelp": "実効値は今の新規受け入れに使われる。この値を下げても、既存の queue エントリは削除されない。",
"messageQueueConfigurationLockTitle": "設定で管理",
"messageQueueConfigurationLocked": "YAML の設定値が保存済み設定を上書きする。config.yaml で値を変えて Kandev を再起動すると、またここで編集できる。",
"messageQueueEnvironmentLockTitle": "環境変数で管理",
"messageQueueEnvironmentLocked": "{{variable}} が保存済み設定を上書きする。環境値を変えて Kandev を再起動すると、またここで編集できる。",
"messageQueueLimitDescription": "この制限は新しく受け入れたメッセージにすぐ適用される。下げても待機中メッセージは消えないし、受け入れ済みの配信再試行も安全なまま。",
"messageQueueLimitTitle": "セッションごとの queue 制限",
"messageQueueLoadFailed": "メッセージ queue 設定を読み込めなかった。",
"messageQueueLoading": "メッセージ queue 設定を読み込み中…",
"messageQueueMaximumLabel": "セッションあたり最大メッセージ数",
"messageQueueMergeDescription": "エージェントが取りに行く前に、queue 済みメッセージを直上のメッセージへまとめられる。関連するフォローアップの連発を1ターンに集約する。",
"messageQueueMergeNotice": "同じ送信者の隣接メッセージだけマージできる。自分の queue 済みメッセージ同士はマージされ、別 task の agent が queue したメッセージは、同じ起点 task を共有するときだけマージされる。workflow, system, in-flight メッセージはマージ不可。2つのメッセージの結合後の重複除去済み entity reference が共有メッセージ上限の100を超える場合も拒否される。これをオフにすると merge control はすぐ隠れ、すでにマージ済みのメッセージには影響しない。",
"messageQueueMergeToggleLabel": "queue 済みメッセージのマージを有効化",
"messageQueueRetry": "再試行",
"messageQueueSaveFailed": "メッセージ queue 設定の保存に失敗した。",
"messageQueueSourceDefault": "デフォルト",
"messageQueueSourceConfiguration": "設定",
"messageQueueSourceEnvironment": "環境変数",
"messageQueueSourceSetting": "保存済み設定",
"messageQueueTitle": "メッセージキュー",
"messageQueueUnlimited": "無制限",
"messageQueueUnlimitedHelp": "0 で無制限。正の整数を入れると、1セッションでその件数ぶん保留後に新規メッセージを拒否する。",
"messageQueueValidation": "0 以上の整数を入力。",
"sessionCapacityAdminOnly": "この設定を変更できるのは管理者のみ。",
"sessionCapacityBehaviorHelp": "この制限は自動開始に適用される。手動開始は超えられる。Workflow WIP は別制限のまま。",
"sessionCapacityCurrent": "現在:",
"sessionCapacityDescription": "全ワークスペースで自動起動を制限。",
"sessionCapacityEnabledDescription": "有効時、上限到達後は自動起動が待機。",
"sessionCapacityEnabledLabel": "インスタンスのセッション上限を有効化",
"sessionCapacityEnvironmentLockTitle": "環境で管理",
"sessionCapacityEnvironmentLocked": "{{variable}} が保存設定を上書き。ここで編集するには、環境値を変更して Kandev を再起動。",
"sessionCapacityLimitDescription": "この Kandev インスタンス内の全ワークスペースに、1つの自動セッション上限を設定。",
"sessionCapacityLimitTitle": "自動セッションを制限",
"sessionCapacityLoadFailed": "セッション上限設定を読み込めなかった。",
"sessionCapacityLoading": "セッション上限設定を読み込み中...",
"sessionCapacityMaximumHelp": "正の整数を入力。手動起動はこの上限を超えられる。",
"sessionCapacityMaximumLabel": "最大自動セッション数",
"sessionCapacityNoLimit": "セッション上限なし",
"sessionCapacityRetry": "再試行",
"sessionCapacitySaveFailed": "セッション上限設定の保存に失敗。",
"sessionCapacityScope": "全ワークスペースの自動起動に適用。Workflow WIP 上限とは別。",
"sessionCapacitySourceDefault": "デフォルト",
"sessionCapacitySourceEnvironment": "環境",
"sessionCapacitySourceSetting": "保存設定",
"sessionCapacityTitle": "セッション上限",
"sessionCapacityUnsaved": "未保存の変更あり",
"sessionCapacityValidation": "正の整数を入力。",
"metricCpuPercent": "CPU",
"metricCpuTemp": "CPU温度",
"metricDiskPercent": "ディスク",
"metricIoLoad": "システム負荷 (1分)",
"metricMemoryPercent": "メモリ",
"metricsUnavailable": "メトリクス利用不可",
"navAbout": "概要",
"navBackups": "バックアップ",
"navDatabase": "データベース",
"navDataStorage": "データとログ",
"navFeatureToggles": "機能トグル",
"navLicenses": "ライセンス",
"navLogs": "ログ",
"navRetention": "Office保持期間",
"navUpdates": "更新",
"navUsers": "ユーザー",
"retentionPageDescription": "Office の実行履歴 (office_routine_runs、runs、および関連テーブル) をデータベースに残す期間を制限。",
"retentionAdminOnly": "保持設定を変更できるのは管理者のみ。",
"retentionLoadFailed": "保持設定を読み込めなかった。",
"retentionSaveFailed": "保持設定を保存できなかった。",
"retentionInvalidFields": "保存前に強調表示された保持項目を直せ。",
"retentionInvalidField": "許可範囲内の値を入れろ。",
"retentionPolicyTitle": "保持ポリシー",
"retentionPolicyDescription": "古い完了履歴と関連実行詳細を自動削除する。アクティブな作業は保護される。",
"retentionEnabledLabel": "自動クリーンアップ",
"retentionEnabledDescription": "オンなら、Kandev が古い完了履歴と関連詳細を削除する。アクティブな作業は保護される。",
"retentionActiveWorkProtection": "クリーンアップは古い完了履歴と関連実行詳細を削除する。アクティブな作業は保護される。",
"retentionAdvancedSettingsTitle": "詳細設定",
"retentionAdvancedSettingsDescription": "クリーンアップの間隔、バッチサイズ、警告しきい値を調整する。",
"retentionSweepIntervalLabel": "スイープ間隔 (時間)",
"retentionSweepIntervalHelp": "スイープ実行頻度。1 から 168 時間 (1 週間) まで。",
"retentionBatchLimitLabel": "スイープごとの削除行数",
"retentionBatchLimitHelp": "1 回のスイープでテーブルごとに削除する最大行数。100 から 100,000 まで。ほかの DB 負荷と競合するなら下げろ。大量の滞留は 1 回でなく複数回のスイープで消える。",
"retentionRoutineRunsSectionTitle": "ルーチン履歴",
"retentionRoutineRunsSectionDescription": "スキップ済み、集約済み実行を含むルーチン活動。",
"retentionRunsSectionTitle": "エージェント実行履歴",
"retentionRunsSectionDescription": "Office agent の実行と完了状態。",
"retentionRoutineHistoryLabel": "ルーチン履歴",
"retentionRoutineHistoryDescription": "スキップ済み、集約済み実行を含むルーチン活動。",
"retentionAgentRunHistoryLabel": "エージェント実行履歴",
"retentionAgentRunHistoryDescription": "Office agent の実行と完了状態。",
"retentionRunEventsLabel": "実行イベント",
"retentionProviderAttemptsLabel": "プロバイダー試行",
"retentionRunSkillRecordsLabel": "実行スキル記録",
"retentionRunEventsSectionTitle": "run_events と関連テーブル",
"retentionRunEventsSectionDescription": "run_events, office_run_route_attempts, office_run_skills の行は、それらを所有する実行と一緒に削除される。独自の保持期間も下限もない。",
"retentionWindowDaysLabel": "保持期間 (日)",
"retentionWindowDaysHelp": "この日数より古い完了行は削除対象になる。1 から 3650 日まで。",
"retentionFloorPerOwnerLabel": "所有者ごとの最小保持数",
"retentionRoutineFloorLabel": "ルーチンごとの最小保持数",
"retentionAgentFloorLabel": "エージェントプロファイルごとの最小保持数",
"retentionFloorPerOwnerHelp": "保持期間を過ぎても、各所有者の最新完了行をこの数だけ必ず残す。0 から 10,000 まで。下限を無効にするなら 0 にする。",
"retentionWarnRowsLabel": "この保持行数を超えたら警告",
"retentionWarnRowsHelp": "保持行数がこの数を超えたらヘルス警告を出す。0 で警告無効。",
"retentionRunEventsWarnRowsHelp": "保持済み run_events の合計行数がこの数を超えたらヘルス警告を出す。0 で警告無効。",
"retentionWarningThresholdsTitle": "警告しきい値",
"retentionWarningThresholdsDescription": "警告は保存済み行に対して適用する。0 ならその警告を無効。",
"retentionStatusTitle": "保持状態",
"retentionStatusDescription": "最新のスイープ結果と、各しきい値テーブルの現在の保持行数です。",
"retentionNeverSweptMessage": "バックエンドの最後の起動以降、まだスイープは実行されていません。",
"retentionAutomaticCleanupLabel": "自動クリーンアップ",
"retentionEnabledValue": "オン",
"retentionDisabledValue": "オフ",
"retentionLastCleanupLabel": "前回のクリーンアップ",
"retentionOutcomeCompleted": "完了",
"retentionOutcomePreview": "プレビューのみ",
"retentionOutcomeMixed": "結果が混在",
"retentionOutcomeError": "エラーありで完了",
"retentionDeletionTotal_one": "{{count}}件のレコードを削除",
"retentionDeletionTotal_other": "{{count}}件のレコードを削除",
"retentionBacklogNotice": "後で行うクリーンアップの対象となる履歴がさらに残っています。",
"retentionStoredCountsDescription": "保存済み件数には保護対象の作業も含まれ、削除見込みではありません。",
"retentionUpdatedLabel": "更新日時",
"retentionCleanupDetailsTitle": "クリーンアップの詳細",
"retentionCensusUnavailable": "利用できません",
"retentionCensusZero": "0件",
"retentionRecords_one": "{{count}}件",
"retentionRecords_other": "{{count}}件",
"retentionAboveWarningThreshold": "警告しきい値を超過",
"retentionSweepStartedAtLabel": "開始",
"retentionSweepFinishedAtLabel": "完了",
"retentionDeletedLabel": "削除済み",
"retentionWouldDeleteLabel": "削除予定(プレビュー)",
"retentionBacklogLabel": "バックログ: このスイープのバッチ上限を超える対象行がさらに残っています",
"retentionTableErrorLabel": "エラー",
"retentionSkipCountLabel": "スイープのスキップ回数",
"retentionSkipCountHelp": "実行予定だったのに実行されなかったスイープの回数です。多くの場合、別の Kandev プロセスが同時に保持ロックを持っていたことが原因です。",
"retentionLastSkipAtLabel": "最後のスキップ",
"retentionRetainedCountsTitle": "保持行数",
"retentionCensusNotComputed": "未計測",
"retentionCensusStale": "古い情報です。前回の計測に失敗したため、最後に成功した件数を表示しています",
"retentionCensusAsOfLabel": "基準時点",
"retentionUnknownStatusesLabel": "認識できないステータスの行(履歴にもライブ状態にも含まれません)",
"retentionTopRoutineShareLabel": "保持行数に占める最大単一ルーチンの割合",
"backendReloadRequiredTitle": "再読み込みが必要です",
"backendReloadRequiredBody": "Kandev が再起動されました。続行するにはこのページを再読み込みしてください。再読み込みすると未保存の変更は破棄されます。",
"backendReloadRequiredAction": "ページを再読み込み",
"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}}</1> を復元。ステージ済みコピー配置後、新データを新鮮に読み込むため Kandev の終了と再起動を求められる。バックエンド自動再起動なし。",
"restoreCompleteBody": "<0>{{name}}</0> を現在のデータベース上に書き込み済み。続行前に Kandev 再起動。再起動までデータベースプールは閉鎖。自動再起動使えない場合は、Kandev を手動で終了して再起動。",
"restoreCompleteTitle": "復元完了",
"restoreFailed": "復元失敗",
"restorePlaceholder": "確認のため {{token}} 入力",
"restoreRequestFailed": "復元リクエスト失敗",
"restoreTitle": "スナップショット復元",
"restoreTypeToConfirm": "確認ボタン有効化に <1>{{token}}</1> 入力。",
"restoreWriting": "スナップショットをライブデータベースへ書き込み中...",
"selfUpdateDone": "{{version}} に更新済み。",
"selfUpdateDoneUnknown": "最新バージョンに更新済み。",
"selfUpdateFailed": "更新失敗。",
"selfUpdateHelperFailed": "更新ヘルパー起動失敗。サービスログ確認。",
"selfUpdateInstalling": "{{version}} をダウンロードしてインストール中…",
"selfUpdateInstallingUnknown": "新バージョンをダウンロードしてインストール中…",
"selfUpdateKeepOpen": "このページ開いたまま。更新完了したら自動で再読み込み。",
"selfUpdateRestarting": "Kandev を再起動中。1分ほどかかることあり。",
"selfUpdateStartFailed": "更新の開始に失敗",
"selfUpdateStarting": "{{version}} へ更新開始中…",
"selfUpdateStartingUnknown": "新しいバージョンへの更新開始中…",
"selfUpdateTimedOut": "更新に予想より時間かかってる。最新バージョン確認に再読み込みして。",
"settingsRouteNotPorted": "この設定ルートは SPA シェルが処理中だが、専用クライアントページはまだ移植中: <1>{{pathname}}</1>",
"setupIssues": "セットアップ問題",
"statusPageDescription": "ヘルスチェック、ディスク使用量、バージョン要約。",
"storageAcknowledgeDaemon": "デーモンを確認",
"storageAcknowledgeDedicatedFirst": "先に専用 Docker デーモンを確認して。",
"storageActionFailed": "ストレージ操作に失敗",
"storageActionPending": "現在のストレージ操作が終わるまで待って。",
"storageActionsDescription": "読み取り専用スナップショット用に分析するか、空き容量を今すぐ回復したいときは有効なクリーンアップルールを実行して。",
"storageActionsTitle": "安全にディスク容量を回収",
"storageAdminOnly": "ストレージ設定変更やメンテ実行は管理者のみ。",
"storageAdoptCache": "キャッシュを採用",
"storageAdoptDialogDescription": "Kandev が {{path}} の既存キャッシュをローテーション、隔離できるようになる。このパスは絶対パスで、Kandev trash と同じファイルシステム上にある必要あり。",
"storageAdoptDialogFallbackPath": "選択したパス",
"storageAdoptDialogTitle": "外部 Go ビルドキャッシュを採用",
"storageAdoptionPending": "Go キャッシュの採用が終わるまで待って。",
"storageAnalysisComplete": "分析完了",
"storageAnalysisDescription": "現在の使用量と回収可能容量の読み取り専用内訳。推定値更新したいときは時々 Analyze 実行。何も削除も移動もなし。",
"storageAnalysisScope": "分類カテゴリは選択した Kandev とユーザーストレージ資源を対象にし、ホストファイルシステム使用量全体は示さない。",
"storageAnalysisFailed": "分析失敗",
"storageAnalysisCacheLifetime": "キャッシュ有効期間: {{duration}}",
"storageAnalysisDuration": "スキャン時間: {{duration}}",
"storageAnalysisDurationMilliseconds": "{{value}} ミリ秒",
"storageAnalysisDurationMinutes": "{{value}} 分",
"storageAnalysisDurationSeconds": "{{value}} 秒",
"storageAnalysisNextRefresh": "次回更新: {{absolute}} ({{relative}})",
"storageAnalysisNextRefreshUnknown": "次回更新時刻は不明。",
"storageAnalysisRunning": "ストレージ分析まだ実行中。",
"storageAnalysisSourceComplete": "計測完了",
"storageAnalysisSourceFailed": "計測失敗",
"storageAnalysisSourceFailedWithError": "計測失敗: {{error}}",
"storageAnalysisSourcePending": "計測待ち",
"storageAnalysisSourceScanning": "{{completed}} / {{total}} を計測中",
"storageAnalysisSourceScanningUnknown": "計測中",
"storageAnalysisTitle": "ストレージ分析",
"storageAnalysisTimingHelp": "Analyze でこのデータ即更新。スキャンは Storage ページか他クライアントが開いてる間、必要時に実行。",
"storageAnalysisTimingTitle": "分析タイミング",
"storageAnalyze": "分析",
"storageAnalyzing": "分析中...",
"storageDatabase": "データベース",
"storageDatabaseAlreadyCounted": "別のストレージ分類で既に計上済み",
"storageDatabasePartiallyCounted": "一部のバイトは別の測定済み分類と重複し、そちらで計上済み",
"storageDatabaseBackups": "データベースバックアップ",
"storageDatabaseBackupsDetail": "兄弟バックアップディレクトリ内の通常ファイル",
"storageDatabaseDetail": "SQLiteファイルと、既存の -wal, -shm, -journal サイドカー",
"storageDatabaseNotApplicable": "このドライバーではローカルデータベース測定は適用外です。",
"storageDatabaseUnavailable": "データベース使用量を測定できませんでした。",
"storageDatabaseUnknown": "このレスポンスではデータベース測定は利用できません。",
"storageDatabaseBackupsNotApplicable": "このドライバーではローカルデータベースバックアップ測定は適用外です。",
"storageDatabaseBackupsUnavailable": "データベースバックアップ使用量を測定できませんでした。",
"storageDatabaseBackupsUnknown": "このレスポンスではデータベースバックアップ測定は利用できません。",
"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": "ビルドキャッシュと未使用イメージのクリーンアップは、このインスタンス外で作成されたリソースを含め、設定されたデーモン全体に影響します。このインストール専用のデーモンであることにのみ同意してください。",
"storageDedicatedDialogTitle": "この専用 Docker デーモンを使用する",
"storageDefaultDockerHost": "デフォルトの Docker ホスト",
"storageDelete": "削除",
"storageDeleteDialogDescription": "これは元に戻せません。Kandev は {{path}} を完全に削除します。",
"storageDeleteDialogFallbackPath": "選択した隔離エントリ",
"storageDeleteDialogTitle": "隔離されたデータを完全に削除",
"storageDeletePermanently": "完全に削除",
"storageDeletionComplete": "削除が完了しました",
"storageDescription": "アクティブな作業を保護しながら、ホストのディスク使用量と Office の履歴保持を管理します。",
"storageHostTab": "ホスト",
"officeRetentionTab": "Office の保持",
"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": "スケジュールされたクリーンアップは、タスク、シェルコマンド、テスト、セットアップ、クリーンアップ、またはイメージビルドのいずれも管理対象リソースをこの時間使っていない場合にのみ開始されます。今すぐ実行はこのタイマーを待ちませんが、リソースが使用中の場合は実行を拒否します。",
"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 は、在庫確認でアクティブなタスク、環境、セッション、または保護された worktree が使用していないと確認された場合にのみタスクワークスペースを選択します。ワークスペースはまず隔離に移動され、完全削除の前に復元できます。",
"storagePolicyDescription": "Kandev が自動的に回収できるものと、従うべき安全制限を選択してください。",
"storagePolicyLoadingBlock": "ストレージ設定の読み込みが完了するまでお待ちください。",
"storagePolicyTitle": "メンテナンスポリシー",
"storageProtectedUntil": "<1>{{deadline}}</1> まで保護されています",
"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は指定された間隔でこのポリシーを確認し、Kandevが必要な時間アイドル状態になった後にのみ開始します。オフにしても、AnalyzeやRun nowは無効になりません。",
"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": "一時アーティファクト所有権を計測できませんでした",
"storageTemporaryArtifactsPolicyTitle": "Kandev 一時ファイル",
"storageTemporaryArtifactsPolicyDescription": "Kandev が一時利用用に登録する診断バンドルとユーティリティ作業フォルダー。",
"storageCleanStaleTemporaryArtifacts": "使用停止中のKandev一時ファイルを削除",
"storageTemporaryArtifactsPolicySummary": "登録済み診断バンドルとユーティリティ作業フォルダー。24時間以上非アクティブ。",
"storageTemporaryArtifactsPolicyHelp": "対象は、登録済みで非アクティブ、かつ24時間以上古いファイルだけ。削除前にファイルは隔離へ移動。共有一時フォルダーと無関係なパッケージキャッシュは除外。",
"storageTemporaryArtifactsPolicyAge": "登録済み非アクティブアーティファクトのみ。最小経過時間: 24時間。",
"storageTemporaryArtifactsPolicyQuarantine": "ファイルは完全削除前に隔離へ移動。",
"storageTemporaryArtifactsPolicyShared": "共有一時ファイルは除外。",
"storageCleanStaleTemporaryArtifactsAction": "古いアーティファクトを削除",
"storageTemporaryArtifactsQuarantinedResult": "{{size}} を隔離へ移動しました。",
"storageTemporaryArtifactsFreedAfterDelete": "完全削除後に容量を解放。",
"storageTemporaryArtifactsMoveFailed": "アーティファクトを隔離へ移動できませんでした。",
"storageSystemTemporaryFolders": "システム一時フォルダー",
"storageSystemTemporaryInformational": "読み取り専用。この使用量は集計カテゴリと重なる場合あり。",
"storageSystemTemporaryComplete": "完全",
"storageSystemTemporaryPartial": "一部",
"storageSystemTemporaryUnavailable": "利用不可",
"storageSystemTemporaryNotApplicable": "対象外",
"storageSystemTemporaryCompleteDetail": "選択した項目すべてを計測しました。",
"storageSystemTemporaryPartialDetail": "一部の項目を計測できませんでした。",
"storageSystemTemporaryUnavailableDetail": "フォルダーを計測できませんでした。",
"storageSystemTemporaryNotApplicableDetail": "フォルダーが存在しません。",
"storageSystemTemporaryResolvedRoot": "要求パス {{requested}} は {{resolved}} に解決されます。",
"storageSystemTemporaryRoot": "{{path}}: {{size}} · {{status}}",
"storageSystemTemporarySkippedCount_one": "{{count}} 項目をスキップ",
"storageSystemTemporarySkippedCount_other": "{{count}} 項目をスキップ",
"storageTitle": "ストレージ",
"storageToastAnalysisStarted": "ストレージ分析を開始",
"storageToastCacheAdopted": "Go ビルドキャッシュを採用",
"storageToastDeletionStarted": "完全削除を開始",
"storageToastEligiblePurgeStarted": "隔離済みのクリーンアップを開始",
"storageToastForcedPurgeStarted": "強制隔離クリーンアップを開始",
"storageToastMaintenanceStarted": "ストレージメンテナンス開始",
"storageToastPolicySaved": "ストレージポリシー保存済み",
"storageToastQuarantineRestored": "隔離リソース復元済み",
"storageTotalCounted": "合計: {{size}}",
"storageTotalCountedSoFar": "ここまでの合計: {{size}}",
"storageTotalPartial": "部分測定",
"storageNotApplicableValue": "該当なし",
"storageTrashPath": "ゴミ箱: {{path}}",
"storageTypeToConfirm": "続行するには <1>{{phrase}}</1> と入力。",
"storageTypeToConfirmAria": "確認するには {{phrase}} と入力",
"storageUnavailableValue": "利用不可",
"storageUnusedDockerImages": "未使用の Docker イメージ",
"storageUnusedImagesDescription": "どのコンテナも使ってない古いイメージを削除。",
"storageUnusedImagesDetail": "すべてのコンテナで未使用、かつ設定期間より古い",
"storageUnusedImagesHelp": "実行中または停止中のコンテナが参照してなくて、かつ設定期間より古い時だけイメージを削除。これはデーモン全体対象なので、専用デーモンの確認が必要。",
"storageUnusedImagesHoursHelp": "Kandev が削除できる前に、そのイメージは全コンテナで未使用、かつこの期間より古い必要あり。値を大きくすると古いイメージを長く使える。",
"storageUnusedImagesHoursLabel": "イメージ未使用期間 (時間)",
"storageUserGoBuildCache": "ユーザー Go ビルドキャッシュ",
"storageWorkspacesDescription": "Kandev が確実に未使用と判定できるリソースを回収。",
"storageWorkspacesDetail": "猶予期間後に回収可能: {{reclaimable}} · アクティブ: {{active}}",
"storageWorkspacesTitle": "ワークスペースとコンテナ",
"storageWorkspaceDependencies": "アーカイブ済みまたは削除済みワークスペースから依存関係を削除",
"storageWorkspaceDependenciesDescription": "ワークスペースのソースと復旧メタデータは残したまま、依存フォルダ削除を有効化。",
"storageWorkspaceDependenciesHelp": "有効化して保存すると、Kandev は保護されてない Kandev タスクワークスペースのうち、アーカイブ済みまたは削除済みのものだけで、一覧のフォルダを再帰的に確認。欠落フォルダ、symlink、アクティブまたは保護されたワークスペース、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}} bytes)...",
"updatesDownloadingOfTotal": "更新をダウンロード中 ({{downloaded}} / {{total}} bytes)...",
"updatesInstalling": "更新をインストール中...",
"updatesLastChecked": "最終確認 {{at}}",
"updatesLatestRelease": "最新リリース",
"updatesNever": "なし",
"updatesNotificationsHint": "通知設定は <2>Notifications</2> で管理。",
"updatesPageDescription": "現在版と最新リリース、それに kandev の全 changelog。",
"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": "このデプロイメントには、少なくとも 1 人の有効な管理者が必要。",
"usersLoadFailed": "ユーザーの読み込み失敗。",
"usersLoading": "ユーザーを読み込み中...",
"usersMakeAdmin": "管理者にする",
"usersMakeMember": "メンバーにする",
"usersPageDescription": "このインスタンスのアカウント、権限、招待リンクを管理。",
"usersRoleAdmin": "管理者",
"usersRoleMember": "メンバー",
"usersStatusActive": "有効",
"usersStatusDisabled": "無効",
"usersTakesEffectImmediately": "{{email}}。すぐ反映。",
"usersTitle": "ユーザー",
"usersUpdateFailed": "ユーザーを更新できませんでした",
"versionCurrent": "現在",
"versionLatest": "最新",
"versionTitle": "バージョン",
"versionViewUpdates": "更新を表示",
"toolPayload.title": "メッセージの圧縮",
"toolPayload.description": "古いツール入力と出力を削除し、メッセージのメタデータは保持します。",
"toolPayload.enabled": "自動圧縮",
"toolPayload.age": "タスクが非アクティブな期間",
"toolPayload.unit": "保持期間の単位",
"toolPayload.weeks": "週",
"toolPayload.months": "月",
"toolPayload.ageHelp": "進行中タスク、キュー済み作業、入力待ちタスクは除外されます。",
"toolPayload.invalidAge": "1~520 週、または 1~120 月の整数を入力してください。",
"toolPayload.beforeCleanup": "最初の圧縮前",
"toolPayload.backupHelp": "バックアップを選ぶか、バックアップなしで続行を明示してください。選んだバックアップは、圧縮開始前に成功が必要です。バックアップは追加容量を使います。バックアップを復元すると、新しい変更も含めてデータベース全体が巻き戻ります。",
"toolPayload.backup": "バックアップを作成する(推奨)",
"toolPayload.skip": "バックアップなしで続行",
"toolPayload.chooseBackup": "保存前にバックアップを作成するか選んでください。",
"toolPayload.analyze": "節約を分析",
"toolPayload.notAnalyzed": "未分析。圧縮を有効にせず節約見積もりをプレビュー。",
"toolPayload.stale": "この見積もりは古いか、別の期間のもの。もう一度分析を実行。",
"toolPayload.empty": "この期間に削除可能なツール詳細なし。",
"toolPayload.estimate": "推定ツール詳細削減量: {{size}}",
"toolPayload.progress": "スキャン済み: {{scanned}} メッセージ。対象: {{tasks}} 件のタスク、{{messages}} 件のメッセージ。",
"toolPayload.removed_one": "{{count}} 件のメッセージから詳細を削除。ペイロード削減: {{size}}。",
"toolPayload.removed_other": "{{count}} 件のメッセージから詳細を削除。ペイロード削減: {{size}}。",
"toolPayload.skipped_one": "スキップ: {{count}} 件。",
"toolPayload.skipped_other": "スキップ: {{count}} 件。",
"toolPayload.window": "スキャン範囲: {{start}} から {{end}}。アクティビティ cutoff: {{cutoff}}。",
"toolPayload.compactionHelp": "見積もりは削除されたツール詳細を示す。空き領域は DB 再利用用に解放される。ファイルを小さくするには、Database セクションの Compact database を使う。既存バックアップのサイズはそのまま。",
"toolPayload.lastCleanup": "最終実行",
"toolPayload.never": "未実行",
"toolPayload.nextCheck": "次回チェック",
"toolPayload.disabled": "無効",
"toolPayload.pending": "操作開始待ち。",
"toolPayload.preparing": "圧縮を準備中。圧縮はまだ有効でない。",
"toolPayload.preparationFailed": "準備失敗。圧縮はまだブロック中。再試行するか、準備をキャンセル。",
"toolPayload.retryBackup": "準備を再試行",
"toolPayload.cancelPreparation": "準備をキャンセルして圧縮を無効化",
"toolPayload.run": "今すぐメッセージを圧縮",
"toolPayload.cancel": "操作をキャンセル",
"toolPayload.refresh": "ステータスを更新",
"toolPayload.conflict": "ポリシーが変わったか、別の操作が実行中。ステータスを更新して下書きを破棄し、再試行前に最新ポリシーを使う。",
"toolPayload.adminOnly": "このポリシー変更、分析、圧縮は管理者のみ可能。",
"toolPayload.unsupported": "この DB エンジンはメッセージ圧縮非対応。",
"toolPayload.operationFailed": "操作を完了できなかった。ステータスを更新して再試行。",
"toolPayload.analysis": "分析",
"toolPayload.cleanup": "圧縮",
"toolPayload.running": "実行中",
"toolPayload.succeeded": "完了",
"toolPayload.failed": "失敗",
"toolPayload.partial": "一部完了",
"toolPayload.cancelled": "キャンセル済み",
"toolPayload.partialHelp": "この結果は不完全。報告済みの節約量は処理済み項目のみ含む。",
"toolPayload.skipReason.protected_tasks": "保護済みタスク",
"toolPayload.skipReason.oversize": "詳細が圧縮上限超え",
"toolPayload.skipReason.already_removed": "詳細はすでに削除済み",
"toolPayload.skipReason.no_payload": "回収できるペイロード bytes なし",
"toolPayload.skipReason.unsupported": "サポート外または保護されたツール詳細",
"toolPayload.skipReason.malformed": "認識できないツール詳細",
"toolPayload.skipReason.invalid_message": "無効なメッセージ",
"toolPayload.skipReason.other": "ほかのスキップ項目",
"toolPayload.skipReason.eligibility_budget": "適格性チェックがタイムアウト。タスクは保持済み",
"toolPayload.schedule": "Kandev 実行中は24時間ごとに確認",
"toolPayload.firstRun": "初回実行はバックアップ準備後に開始",
"toolPayload.analysisDetails": "分析詳細",
"toolPayload.runDetails": "実行詳細"
}
File diff suppressed because it is too large Load Diff
+59
View File
@@ -0,0 +1,59 @@
{
"approvalRequired": "承認が必要",
"archive": "アーカイブ",
"archived": "アーカイブ済み",
"archiveTask": "タスクをアーカイブ",
"changesRequested": "変更が要求されました",
"columnStep": "ステップ",
"columnTask": "タスク",
"columnUpdated": "更新日",
"columnWorkflow": "ワークフロー",
"delete": "削除",
"deleteTask": "タスクを削除",
"failedToArchiveTask": "タスクのアーカイブに失敗しました",
"failedToDeleteTask": "タスクの削除に失敗しました",
"failedToLoadTasks": "タスクの読み込みに失敗しました",
"failedToUnarchiveTask": "タスクのアーカイブ解除に失敗しました",
"goToFirstPage": "最初のページへ移動",
"goToLastPage": "最後のページへ移動",
"goToNextPage": "次のページへ移動",
"goToPreviousPage": "前のページへ移動",
"group": "グループ",
"groupByNone": "なし",
"groupByRepository": "リポジトリ",
"groupByState": "状態",
"groupByWorkflow": "ワークフロー",
"ungrouped": "グループなし",
"loading": "読み込み中...",
"loadingTasks": "タスクを読み込み中...",
"noRepository": "リポジトリなし",
"noTasksFound": "タスクが見つかりませんでした。",
"noWorkflow": "ワークフローなし",
"openInAdvancedView": "詳細表示で開く",
"openInOfficeView": "オフィス表示で開く",
"rowsPerPage": "1ページあたりの行数",
"showArchived": "アーカイブ済みを表示",
"showingRange_one": "{{count}}件中{{start}}から{{end}}件を表示しています",
"showingRange_other": "{{count}}件中{{start}}から{{end}}件を表示しています",
"simpleViewForKanbanTasksShows": "カンバンのタスク向けのシンプル表示では、パネル内にすでにあるチャットを表示します。コメント、プロパティ、アクティビティタイムラインを含む完全なLinear風の体験を使うには、このタスクをオフィス表示で開いてください。",
"simpleViewShowsTheChatThat": "シンプル表示では、パネル内にすでにあるチャットを表示します。{{simpleQuery}} を使って詳細レイアウトに戻してください。",
"sort": "並べ替え",
"sortCreatedNewest": "作成日の新しい順",
"sortCreatedOldest": "作成日 古い順",
"sortTitleAZ": "タイトル A-Z",
"sortTitleZA": "タイトル Z-A",
"sortUpdatedNewest": "更新日 新しい順",
"sortUpdatedOldest": "更新日 古い順",
"taskArchived": "タスクをアーカイブ済み",
"taskArchivedDescription": "タスクを正常にアーカイブした。",
"taskArchiveCompleted_one": "{{count}}件のタスクをアーカイブした。",
"taskArchiveCompleted_other": "{{count}}件のタスクをアーカイブした。",
"taskDeleteCompleted_one": "{{count}}件のタスクを削除した。",
"taskDeleteCompleted_other": "{{count}}件のタスクを削除した。",
"taskUnarchived": "タスクのアーカイブ解除済み",
"unarchive": "アーカイブ解除",
"unarchivedBranchesMissing_one": "ブランチ{{branches}}はローカルにもリモートにももうない。次のセッションはベースブランチから新しく始まる。",
"unarchivedBranchesMissing_other": "ブランチ{{branches}}はローカルにもリモートにももうない。次のセッションはベースブランチから新しく始まる。",
"unarchivedTaskRestored": "タスクを復元した。",
"unarchiveTask": "タスクをアーカイブ解除"
}
+151
View File
@@ -0,0 +1,151 @@
{
"columnLabel": "{{title}} のエージェントスレッド",
"chooseThread": "スレッドを選択",
"chooseThreadLabel": "スレッドを選択。現在: {{title}}",
"chooseThreadDescription": "このビューの会話へ移動する。",
"threadPosition": "{{position}}/{{total}}",
"emptyBody": "Threads は実行中エージェントを横に並べる。タスクでエージェントを起動すると、その会話がここに列として出る。",
"emptyTitle": "今は動いてるエージェントなし",
"loading": "スレッドを読み込み中...",
"gridHeightFallback": "グリッドはもっと高さ必要。Columns を表示中。",
"collapseComposer": "コンポーザーを隠す",
"display": "表示",
"layout": "レイアウト",
"layoutColumns": "列",
"layoutGrid": "グリッド",
"layoutColumnsDescription": "読む、返事するための全高チャット。",
"layoutGridDescription": "もっと多くの会話を監視するための2段チャット。",
"autoHideComposer": "コンポーザーを自動で隠す",
"autoHideComposerDescription": "チャットにホバーかフォーカスでコンポーザー表示。隠れてる間は CI だけ見える。",
"touchComposerHint": "タッチ画面では、コンポーザーは表示されたまま。",
"phoneLayoutHint": "この選択は広い画面に適用。スマホは一度に1チャットだけ表示。",
"maxChatsDescription": "両段のチャット数を数える。Grid でこの上限は増えない。",
"newView": "新しいビュー",
"allThreads": "すべてのスレッド",
"backToViewEditor": "ビューエディタに戻る",
"chooseTasks": "タスク選択",
"selectedTaskCount_one": "{{count}} 件選択",
"selectedTaskCount_other": "{{count}} 件選択",
"taskSelectionLimitReached_one": "選べるタスクは最大 {{count}} 件",
"taskSelectionLimitReached_other": "選べるタスクは最大 {{count}} 件",
"searchTasks": "タスクを検索",
"selectAll": "すべて選択",
"clearAll": "すべて解除",
"noTasksToChoose": "選べるタスクなし",
"viewSettings": "表示設定",
"viewName": "表示名",
"taskScope": "タスク範囲",
"allEligibleTasks": "条件に合う全タスク",
"selectedTasks": "選択済みタスク",
"selectAtLeastOneTask": "少なくとも 1 件選択",
"filters": "フィルター",
"sort": "並び替え",
"toggleSortDirection": "並び順を切り替え",
"reapplySort": "並び替えを再適用",
"maxColumns": "最大チャット数",
"noColumnLimit": "制限なし",
"maxColumnsInvalid": "1 から 30 までの整数を入力、または空欄のままにする",
"filterLimitReached_one": "追加できるフィルターは最大 {{count}} 件",
"filterLimitReached_other": "追加できるフィルターは最大 {{count}} 件",
"filterValue": "値",
"removeFilter": "フィルターを削除",
"filterIs": "次に一致",
"filterIsNot": "次に一致しない",
"filterIn": "次に含まれる",
"filterNotIn": "次に含まれない",
"filterMatches": "一致する",
"filterNotMatches": "一致しない",
"filterThreadStatus": "スレッド状態",
"filterPendingAction": "保留中のアクション",
"filterTaskState": "タスク状態",
"filterWorkflow": "ワークフロー",
"filterWorkflowStep": "ワークフローのステップ",
"filterRepository": "リポジトリ",
"filterPrimaryAgent": "主要エージェント",
"filterExecutorType": "実行タイプ",
"filterPriority": "優先度",
"filterBlocked": "ブロック中",
"filterQueuedPrompts": "キュー済みプロンプト",
"filterActiveSubagents": "アクティブなサブエージェント",
"filterDiff": "変更あり",
"filterPullRequest": "プルリクエストあり",
"filterPullRequestAttention": "プルリクエスト要確認",
"filterTaskType": "タスク種別",
"filterTitle": "タイトル",
"filterActiveError": "アクティブエラー",
"filterTaskLabel": "タスクラベル",
"filterTaskOrigin": "タスク起点",
"filterMultipleSessions": "複数セッション",
"originManual": "手動",
"originAgentCreated": "エージェント作成",
"originRoutine": "ルーチン",
"originOnboarding": "オンボーディング",
"originAutomationRun": "自動化実行",
"originAutomationTask": "自動化タスク",
"statusNeedsAction": "対応必要",
"statusRunning": "実行中",
"statusWaiting": "待機中",
"statusReadyForReview": "レビュー準備完了",
"pendingClarification": "確認待ち",
"pendingPermission": "権限待ち",
"pendingNone": "なし",
"taskTypeStandard": "標準",
"taskTypePullRequestReview": "プルリクエストレビュー",
"taskTypeIssueWatch": "Issue監視",
"sortAttention": "注意度",
"sortAttentionDescription": "まず対応必要なタスク、次に実行中かレビュー中のタスク、最後に待機中タスクを表示。各グループ内は最近の動きで並べる。",
"sortLastActivity": "最終アクティビティ",
"sortLastActivityDescription": "最後のユーザーまたはエージェントのアクティビティ時刻。",
"sortUpdated": "更新日時",
"sortUpdatedDescription": "タスク記録の最後の変更時刻。",
"sortCreated": "作成日時",
"sortCreatedDescription": "タスク作成時刻。",
"sortTitle": "タイトル",
"sortTitleDescription": "タスクタイトルをアルファベット順で並べる。",
"sortTaskState": "タスク状態",
"sortTaskStateDescription": "作成からキャンセルまでのタスクのライフサイクル状態。",
"sortWorkflow": "ワークフロー",
"sortWorkflowDescription": "ワークフロー名、その後にワークフローステップ。",
"sortPriority": "優先度",
"sortPriorityDescription": "クリティカルから低までのタスク優先度。",
"sortPrimaryAgent": "主エージェント",
"sortPrimaryAgentDescription": "主エージェント名をアルファベット順。",
"viewPickerLabel": "{{name}} を表示",
"viewSettingsFor": "{{name}} の設定",
"columnsSummary": "{{matching}} 件中 {{admitted}} 件のチャット",
"hiddenCount_one": "非表示 {{count}} 件",
"hiddenCount_other": "非表示 {{count}} 件",
"saveAs": "名前を付けて保存",
"saveOrDiscardBeforeNewView": "別ビューを作る前に、現在の下書きを保存するか破棄して",
"saveOrDiscardBeforeSwitchingView": "ビュー切り替え前に、ビュー設定の変更を保存するか破棄して",
"viewLimitReached_one": "ビュー上限到達 ({{count}})",
"viewLimitReached_other": "ビュー上限到達 ({{count}})",
"newViewNumbered": "新しいビュー {{suffix}}",
"untitledView": "無題のビュー",
"copyName": "{{name}} のコピー",
"failedToSyncViews": "Threads のビュー同期に失敗",
"openInThreads": "Threads で開く",
"openTask": "タスクを開く",
"primarySession": "メイン",
"queuedPromptCount_one": "保留中プロンプト {{count}} 件",
"queuedPromptCount_other": "保留中プロンプト {{count}} 件",
"retrySessionList": "再試行",
"selectSession": "セッションを選択",
"selectSessionDescription": "このタスクに使う既存のエージェントセッションを選択して。",
"sessionListEmpty": "利用できるセッションなし。",
"sessionListLoading": "セッションを読み込み中...",
"sessionListUnavailable": "セッションを読み込めなかった。",
"statusCancelled": "キャンセル済み",
"statusCompleted": "完了",
"statusFailed": "失敗",
"statusNeedsYou": "対応必要",
"statusNotStarted": "未開始",
"statusPermissionNeeded": "権限が必要",
"statusQuestionFromAgent": "エージェントからの質問",
"statusStarting": "開始",
"statusTurnFinished": "ターン終了",
"statusWorking": "作業中",
"subagentCount_one": "{{count}} サブエージェント",
"subagentCount_other": "{{count}} サブエージェント",
"title": "スレッド"
}
+325
View File
@@ -0,0 +1,325 @@
{
"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 がこの遷移を 1 回だけ実行。アーカイブ済みと一時的な子タスクは無視。孫タスクはここでは数えない。親に子タスクがなければ何も実行しない。",
"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}}",
"completeTaskOnEnter": "最終ステップに入ったらタスクを完了",
"completeTaskOnEnterHelp": "この最終ステップに入るとタスクを完了済みにします。会話は引き続き続行できます。",
"completeTaskOnEnterHelpAria": "最終ステップでタスクを完了することについての詳細情報",
"disablePlanMode": "プランモードを無効化",
"disablePlanModeOnComplete": "完了時にプランモードを無効化",
"disablePlanModeOnCompleteHelp": "タスクがこのステップに残っていても、エージェントが 1 ターンを終えた後にプランモードをオフにします。",
"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": "ワークフローをインポート",
"importContinue": "ワークフローをインポート",
"importNoEligibleProfiles": "利用可能な適格プロファイルがありません。グローバルエージェントプロファイルを有効にするか作成してから、再試行してください。",
"importProfileChanged": "このプロファイルは変更されました。現在のリビジョンを確認するには、もう一度選択してください。",
"importProfileMatched": "一致しました",
"importProfileNoMatches": "一致するプロファイルがありません",
"importProfileNotSet": "未設定",
"importProfilePickerDescription": "{{stepName}} のプロファイルを選択してください。",
"importProfilePickerTitle": "プロファイルを選択",
"importProfileSearchPlaceholder": "プロファイルを検索",
"importProfileSelectionRequired": "このステップのプロファイルを選択してください。",
"importProfileUnavailable": "このプロファイルはもう利用できません。別のプロファイルを選択してください。",
"importRequestedProfile": "要求されたプロファイル",
"importResolveProfilesDescription": "ワークフローの作成前に、影響を受ける各ステップの宛先プロファイルを選択してください。",
"importResolveProfilesTitle": "インポートしたステップのプロファイルを選択",
"importSelectProfile": "プロファイルを選択",
"openAgentSettings": "エージェントプロファイル設定を開く",
"retryImportPreview": "プレビューを再試行",
"invalidYaml": "無効なYAML",
"keepCurrent": "現在の設定を保持",
"lastAttempt": "最後の試行: {{when}}",
"lastSynced": "最終同期: {{when}}",
"loadingWorkflowSteps": "ワークフローステップを読み込み中...",
"migrateAndDelete": "移行して削除",
"migrateAndDeleteStep": "ステップを移行して削除",
"migrating": "移行中...",
"moreInformation": "詳細情報",
"moveToNextStep": "次のステップへ移動",
"moveToPreviousStep": "前のステップへ移動",
"moveToSpecificStep": "特定のステップへ移動",
"name": "名前",
"noFeederStep": "フィーダーステップなし",
"noneUseTaskDefault": "なし (タスクの既定値を使用)",
"noProfileOverride": "プロファイルの上書きなし",
"agentProfiles": "エージェントプロファイル",
"workflowSessions": "ワークフローセッション",
"initialAgentSession": "初回エージェントセッション",
"initialAgentSessionDescription": "タスクの元の会話を使用します。",
"sessionTargetStepLabel": "{{stepName}} · {{profileName}}",
"sessionTargetMissing": "ソースステップが見つかりません",
"profileUnavailable": "プロファイルを利用できません",
"sessionTargetAndProfileDescription": "ワークフロー会話またはエージェントプロファイルを選択してください。",
"sessionTargetRepairTitle": "このセッションターゲットを修復",
"sessionTargetSourceMissing": "ソースステップはもう存在しません。",
"sessionTargetSourceMustBeEarlier": "ソースステップはこのステップより前にある必要があります。",
"sessionTargetSourceNeedsProfile": "ソースステップには直接のエージェントプロファイルが必要です。",
"sessionTargetSourceMustBeDirect": "ソースステップは別のセッションをターゲットにできません。",
"sessionTargetChooseAnother": "別のターゲットを選択",
"sessionTargetUseNoProfile": "プロファイルの上書きを使用しない",
"sessionTargetUndoSourceEdit": "ソースの編集を元に戻す",
"workflowSessionTargetMustBeRepaired": "保存前に無効なセッションターゲットを修復してください。",
"sessionTargetDependentMustBeRepaired": "依存するセッションターゲットを先に修復してください",
"sessionTargetDependentRepairDescription": "{{stepName}} はこのステップをセッションのソースとして使用しています。このステップを削除する前に、そのターゲットを修復してください。",
"notARecognizedRepositoryLink": "認識できない{{provider}}リポジトリリンク。",
"notSyncedYet": "まだ同期されてない。Sync nowを使う",
"onExit": "終了時",
"onExitActions": "終了時アクション",
"onExitHelp": "このステップを離れる時に実行する。次のステップに入る前。",
"onTurnCompleteHelp": "エージェントがターンを終えた後に実行する。パイプラインに沿ってタスクを自動で進める時に使う。",
"onTurnCompleteLabel": "ターン完了時",
"onTurnCompleteTrigger": "ターン完了時",
"onTurnStartHelp": "ユーザーがメッセージを送った時に実行する。レビューサイクルに使う。例: フィードバックで In Progress に戻す。",
"onTurnStartLabel": "ターン開始時",
"onTurnStartTrigger": "ターン開始時",
"onUserMessage": "ユーザーメッセージ時",
"orPasteYaml": "または YAML を貼り付け",
"overrideAgentProfileHelp": "このステップ用にエージェントプロファイルを上書きする。別プロファイルなら、このステップに入る時に新しいセッションと新しいコンテキストで始まる。",
"overrideOriginalSessionOptions": "元のセッション設定を上書き",
"overrideOriginalSessionOptionsHelp": "このステップのセッション設定を変えつつ、元の会話タブはそのまま残す。たとえば、model 5.6 Sol で始めて、実装作業では 5.6 Luna に切り替える。",
"pasteGitLabPathHint": "GitLab リンクを貼り付ける。self-managed host も可。使うのは path のみ。path を直接入力してもいい。下で branch と directory を設定。",
"pasteRepositoryLinkHint": "{{provider}} リンクを貼り付けるか、path を直接入力。下で branch と directory を設定。",
"planMode": "計画モード",
"planModeHelp": "エージェントは直接変更せず、計画だけ提案する。",
"pollDisabledHint": "Sync now を押した時だけ同期する。",
"pollEnabledHint": "この間隔でリポジトリを確認する。最小 60s。",
"pollIntervalSeconds": "ポーリング間隔 (秒)",
"potentialRepeatedAgentRun": "エージェント実行が重複する可能性",
"profileSessionLifecycle": "セッションのライフサイクル",
"profileSessionLifecycleIntro": "この設定は、ワークフローがエージェントプロファイルを切り替える時に適用される。",
"profileSessionStartHeading": "このステップ開始時:",
"profileSessionStartReuse": "使えるセッションを再利用",
"profileSessionStartReuseDescription": "このエージェントプロファイルで、いちばん新しい使えるセッションを続ける。使えるものがなければ、新しいセッションを開始する。",
"profileSessionStartReuseShort": "開始時に再利用",
"profileSessionStartNew": "新しいセッションを開始",
"profileSessionStartNewDescription": "このステップでは、毎回新しい会話を開始する。",
"profileSessionStartNewShort": "開始時に新規",
"profileSessionEndHeading": "このステップ終了時:",
"profileSessionEndComplete": "セッションを完了",
"profileSessionEndCompleteDescription": "このセッションを閉じる。ワークフローでは後で再利用できない。",
"profileSessionEndCompleteShort": "終了時に完了",
"profileSessionEndPark": "セッションを保留",
"profileSessionEndParkDescription": "エージェントは止めるが、会話は再利用や手動フォローアップ用に残す。",
"profileSessionEndParkShort": "終了時に保留",
"projectPathOrLink": "プロジェクトのパスまたはリンク",
"promptSourceStepPrompt": "\"{{stepName}}\" を再実行すると、タスクの説明ではなくそのステップのプロンプトが送信されます。",
"promptSourceStepPromptWithTaskDescription": "\"{{stepName}}\" を再実行すると、タスクの説明を含むレンダリング済みのステッププロンプトが送信されます。",
"promptSourceTaskDescription": "\"{{stepName}}\" にはステッププロンプトがないため、再実行するとタスクの説明が送信されます。",
"pullFrom": "取得元",
"pullFromGuidanceWithFeeder": "任意の自動フィーダー投入です。宛先キューのタスクが先に受け入れられ、その後、容量が空くと Kandev が {{feeder}} から対象の作業を取得します。直接移動と自動遷移は宛先にキューされ、フィーダーは不要です。満杯のステップを対象にする新しいタスクはこのフィーダーを使用します。",
"pullFromGuidanceWithoutFeeder": "フィーダーが選択されていません。直接移動と自動遷移は、宛先が満杯のときにこの宛先へキューされます。新しいタスクも、容量が空くまでこのキューに表示されたままになります。",
"readOnlyManagedBySync": "読み取り専用。ワークフロー同期によって管理されています",
"readOnlyManagedByImproveKandev": "読み取り専用。Improve Kandev によって管理されています",
"remove": "削除",
"removeAgentCondition": "エージェント条件 {{index}} を削除",
"removeConditionalSessionConfigBeforeProfile": "このステップの固定エージェントプロフィールを選ぶ前に、条件付きセッション設定を削除してください。",
"removeSyncConfirm": "ワークフロー同期設定を削除しますか。これにより、すでに同期済みのワークフローは削除されません。",
"repositoryLink": "リポジトリリンク",
"repositoryRoot": "(リポジトリのルート)",
"resetAgentContext": "エージェントのコンテキストをリセット",
"resetAgentContextHelp": "このステップに入るとき、エージェントを新しい会話コンテキストで再起動します。偏りのない視点が必要なレビュー用ステップに便利です。",
"resetAgentContextHelpWithProfile": "不要です。エージェントプロフィールを切り替えると、すでに新しいコンテキストの新しいセッションが作成されます。",
"restoreOriginal": "元に戻す",
"retryPartialSaveBeforeLeaving": "離れる前に部分的なワークフロー保存を再試行",
"returnToWorkflow": "ワークフローに戻る",
"runCompletionActionsWhenTurnCancelled": "ターンがキャンセルされたときに完了アクションを実行する",
"runCompletionActionsWhenTurnCancelledHelp": "ユーザーが明示的にターンをキャンセルした場合にのみ適用されます。宛先ステップのオンエントリアクションで、すぐに別のエージェントターンが開始されることがあります。",
"save": "保存",
"saveBeforeExporting": "エクスポートする前にワークフローを保存してください。",
"saveBeforeDuplicating": "複製する前にワークフローを保存してください。",
"saveFailed": "保存に失敗しました: {{error}}",
"saveWorkflowsBeforeOrdering": "並べ替える前にワークフローを保存してください",
"saving": "保存中...",
"seconds": "秒",
"selectAction": "アクションを選択",
"selectedStepFallback": "選択済み",
"selectStep": "ステップを選択",
"selectWorkflow": "ワークフローを選択",
"sessionConfigCarryForwardWarning": "元の会話タブが再利用されるため、以前のワークフロー設定がこのステップに引き継がれる場合があります。",
"sessionConfigCarryForwardWarningMessage": "{{stepName}} で変更した設定が、{{agentName}} のこのステップに引き継がれる場合があります。保持、元に戻す、または新しい値を設定する、のいずれかを選択してください。",
"sessionConfigEmptyRules": "どの初期エージェントに設定を適用するかを選ぶ条件を追加してください。",
"sessionConfigFixedProfileWarning": "元のセッションを設定する前に、固定プロフィールの上書きを削除してください。2つの動作は排他的です。",
"sessionConfigKeep": "保持",
"sessionConfigModelOptionsUnavailable": "このエージェントではモデルオプションを利用できません。この条件を保存する前に、エージェントの機能を更新してください。",
"sessionConfigRestore": "復元",
"sessionConfigRulesHelp": "ルールはタスクの最初のエージェントセッションに適用されます。会話タブを作成したり切り替えたりすることはありません。",
"sessionConfigSetNew": "新しく設定",
"setSettings": "設定を行う",
"settingsForAgent": "{{agent}} の設定",
"showInCommandPanel": "コマンドパネルに表示",
"showInCommandPanelHelp": "コマンドパネルを開くときに、このステップのタスクを表示します (Cmd+K)。バックログや完了済みのステップをすばやくアクセスから隠すのに便利です。",
"startStep": "開始ステップ",
"startStepHelp": "新しいタスクはこのステップから開始します。各ワークフローで開始ステップにできるのは 1 つだけです。",
"stepIsPartOfReplayCycle": "{{stepName}} はリプレイサイクルの一部です",
"stepNamePlaceholder": "ステップ名",
"workflowPrompt": "ワークフロー プロンプト",
"workflowPromptHelp": "各ステップの入力時に、ステッププロンプトの前に毎回含める任意の指示です。{task_id} と @saved-prompt 参照をサポートします。展開はステッププロンプトと同じです。{{taskPrompt}} はステップ専用です。無効にするには空欄のままにしてください。エージェントに表示され、チャットでは折りたたまれて表示されます。",
"workflowPromptPlaceholder": "PR がマージまたはクローズされたら、タスクを Done に移動します。\n複数の Pull Request を作成する必要がある場合は、サブタスクをオーケストレーションすることを優先してください。",
"workflowPromptCollapsedHint": "任意. 共有のステップ入力指示を追加するには展開してください",
"workflowPromptSetHint": "設定済み. 編集するには展開してください",
"workflowInstructionsCollapsed": "ワークフロー指示",
"workflowMoveInstructionsCollapsed": "一度だけの移動指示",
"stepPrompt": "ステップ プロンプト",
"stepPromptHelp": "このステップでエージェントに与えるカスタム指示です。{{taskPrompt}} を使うとタスクの説明を含められます。",
"stepPromptPlaceholderExample": "OAuth2 を使ったユーザー認証を実装する",
"stepPromptPlaceholderTaskPrompt": "ユーザーが提供した元のタスク説明",
"stepPromptUsageHint": "プレースホルダーには {{open}} と入力します ({{taskPrompt}} はタスクの説明を挿入します)。または @ に続けて保存済みプロンプト名を参照します。その内容は非表示コンテキストとして添付され、保存済みプロンプトを編集するとそれを参照するすべてのステップが更新されます。注意: {{taskPrompt}} は参照した保存済みプロンプトの中ではなく、ステッププロンプト自体でのみ展開されます。",
"switchProviderWarning": "ソースを切り替えると、同期済みのワークフローはすべて新しいリポジトリの内容で置き換えられます。そこに存在しないワークフローは削除されます。",
"syncCompletedWithWarnings": "警告付きで同期が完了しました",
"syncConfigSaved": "ワークフローの同期設定を保存しました",
"syncDescription": "リポジトリからこのワークスペースへワークフロー定義を自動同期します。",
"syncDirectoryHelp": "ディレクトリには、ワークフローエクスポートファイル ({{extensions}}) が {{format}} 形式で含まれている必要があります。これはワークフローのエクスポートで生成されるのと同じ形式です。",
"synced": "同期済み",
"syncedBadgeTooltip": "読み取り専用です。{{source}} からのワークフロー同期によって管理されています。同期先のリポジトリで編集または削除してください。",
"syncedReadOnlyReason": "ワークフロー同期によって管理されています。同期先のリポジトリで編集または削除してください",
"syncFailed": "同期に失敗しました",
"syncFailedWithError": "同期に失敗しました: {{error}}",
"syncingFromRepository": "<1>{{repository}}</1> から同期しています",
"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": "WIP上限",
"wipLimitHelp": "このステップで許可される最大のアクティブタスク数です。超過分はキューに表示されたままになります。無制限にするには0を指定してください。",
"wipLimitsNote": "WIP上限は可視性ではなく、作業中の量を制限します。超過分は容量が空くまでボード上に残ります。選択したフィーダーも満杯の場合は、新しいタスク作成は拒否されます。",
"workflow": "ワークフロー",
"workflowCycleBlocked": "ワークフローの循環がブロックされました",
"workflowCycleBlockedDescription": "続行する前に、ワークフローのステップを変更して自動循環を削除してください。",
"workflowCycleBlockingBody": "この経路は\"{{stepName}}\"に再度入り、別のユーザー操作なしでエージェントを再開する可能性があります。",
"workflowCycleReplayPathFor": "{{stepName}} の再生パス",
"workflowCycleWarningBody": "この経路は\"{{stepName}}\"に再度入り、ユーザー操作の後にエージェントを再開する可能性があります。",
"workflowDescription": "説明",
"workflowDescriptionPlaceholder": "任意の説明",
"workflowDetails": "ワークフローの詳細",
"reorderWorkflow": "{{name}} を並べ替え",
"workflowName": "ワークフロー名",
"workflowsReadOnlyImprove": "このワークスペースのワークフローは Improve Kandev によって管理されており、変更できません。",
"workflowNameIsRequired": "ワークフロー名は必須です",
"workflowNamePlaceholder": "マイプロジェクトワークフロー",
"workflowMutationInProgress": "現在のワークフロー変更が終わるまで待つ。",
"workflows": "ワークフロー",
"workflowsSectionDescription": "自動遷移つきの自律パイプライン、または自分でタスクを動かす手動ワークフローを作成する",
"workflowSteps": "ワークフローステップ",
"workflowSyncCompleted": "ワークフロー同期完了",
"loadingSteps": "ステップを読み込み中…",
"noStepsInThisWorkflow": "このワークフローにステップなし",
"selectAWorkflowFirst": "先にワークフローを選択"
}
+268
View File
@@ -0,0 +1,268 @@
{
"addLocalRepository": "ローカルリポジトリを追加",
"addScript": "スクリプトを追加",
"addWorkspace": "ワークスペースを追加",
"alwaysPullBeforeWorktree": "新しい worktree を作成する前に常に pull する",
"backToWorkspaces": "ワークスペースに戻る",
"branchTemplateIssueKey": "チケットの別名。テンプレートで読みやすい方の名前を使ってください。",
"branchTemplateLiteralPrefix": "リテラルの接頭辞はそのまま記述します。例: <0>{{example}}</0>。",
"branchTemplatePlaceholders": "ブランチテンプレートのプレースホルダー",
"branchTemplateSuffix": "短いランダムな接尾辞。任意ですが、ブランチ名の衝突を避けるために推奨されます。例: {{example}}。",
"branchTemplateTaskId": "Kandev のタスク UUID. ブランチ名用に整形済みです。例: {{example}}。",
"branchTemplateTicket": "まずタスク識別子. それがない場合は Jira, Linear, GitHub issue, または GitHub PR のメタデータを使用します。例: {{example}}。",
"branchTemplateTitle": "タスクのタイトルを小文字の ASCII に整形し、ハイフン区切りで最大 20 文字にしたもの。例: {{example}}。",
"branchTemplateTitleFull": "タイトルと同じ整形ですが、最大 80 文字です。例: {{example}}。",
"buildScriptChip": "build スクリプト",
"checking": "確認中...",
"cleanupScript": "クリーンアップスクリプト",
"cleanupScriptChip": "クリーンアップスクリプト",
"cleanupScriptHelp": "タスク完了時に実行され、ワークスペースをクリーンアップします。",
"close": "閉じる",
"closeRepositoryEditor": "リポジトリエディタを閉じる",
"confirmDelete": "削除を確認",
"copyFiles": "ファイルをコピー",
"copyFilesHelp": "Gitignore 対象のパスを新しい worktree にコピーします。項目に <0>{{symlink}}</0> を付けると、メインリポジトリへのシンボリックリンクとして扱います。<2>{{symlink}}</2> で終わるリテラルのファイル名には <1>{{escapedSymlink}}</1> を使います。",
"copyFilesPathsResolved": "パスはリポジトリのルートを基準に解決され、各新しい worktree にその相対位置を保ったまま反映されます。worktree 内の既存ファイルは上書きされません。",
"copyFilesPatternBraces": "<0>{{braces}}</0> の中括弧によるオルタネーション。例: <1>{{example}}</1>",
"copyFilesPatternGlobstar": "<0>{{globstar}}</0> は任意の数のディレクトリに一致します。例: <1>{{example}}</1>",
"copyFilesPatternLiteral": "<0>{{pattern}}</0> のリテラルなファイルまたはディレクトリ (ディレクトリは再帰的にコピーされます)",
"copyFilesPatternWildcards": "<0>{{star}}</0>, <1>{{question}}</1>, <2>{{charClass}}</2> の単一セグメントのワイルドカード",
"copyFilesRemoteFallback": "リモート実行環境では、シンボリックリンクの代わりにファイル内容をコピーします。",
"copyFilesSizeLimit": "{{limit}} を超えるファイルは、リモート実行環境へコピーする際にスキップされます。ローカル worktree ではサイズ上限なしでコピーされます。",
"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}}</0> を使用してください。",
"discoverRepositoryDescription": "検出されたリポジトリを選択するか、検証するための絶対パスを指定してください。",
"chooseFoldersToDiscoverRepositories": "リポジトリを検出するフォルダーを選択",
"chooseFoldersToDiscoverRepositoriesDescription": "Home またはそれより狭いフォルダーを選択してください。Kandev はリポジトリ選択を使用している間のみそれをスキャンします。",
"continueHomeDiscovery": "Home の検出を続行",
"homeDiscoveryConfirmationDescription": "このインストールでは以前に Home が検索されました。Home の検出を許可したい場合のみ続行してください。",
"discoveredRepositories": "検出されたリポジトリ",
"edit": "編集",
"environmentSecrets": "環境シークレット",
"environmentSecretsDescription": "このリポジトリを使用するタスクに対して、保存済みのシークレットを環境キーに紐付けます。シークレットの値はここには表示されません。",
"environmentSecretKey": "環境キー",
"environmentSecretKeyPlaceholder": "NPM_TOKEN",
"environmentSecretValue": "保存済みシークレット",
"selectEnvironmentSecret": "シークレットを選択",
"missingSecretReference": "シークレット参照がありません",
"noEnvironmentSecrets": "環境シークレットは設定されていません。",
"noAvailableEnvironmentSecrets": "利用可能な Global または Workspace のシークレットがありません。",
"addEnvironmentSecret": "環境シークレットを追加",
"removeEnvironmentSecret": "環境シークレット {{key}} を削除",
"environmentSecretKeyInvalid": "有効な POSIX 環境キーを使用してください。",
"environmentSecretKeyDuplicate": "各環境キーは 1 回だけ紐付けできます。",
"environmentSecretKeyReserved": "この環境キーは Kandev によって予約されています。",
"environmentSecretRequired": "各環境キーに対して保存済みシークレットを選択してください。",
"globalSecretScope": "Global",
"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": "リポジトリ",
"refreshRepositories": "リポジトリを更新",
"reconnectDiscoveryRoot": "再接続",
"removeDiscoveryRoot": "削除",
"repositoryDiscoveryNoRoots": "リポジトリ探索を始めるフォルダ選択。",
"resourceCount_one": "{{count}} 件のリソース",
"resourceCount_other": "{{count}} 件のリソース",
"repositoriesInThisWorkspace": "このワークスペース内のリポジトリ",
"repository": "リポジトリ",
"repositoryName": "リポジトリ名",
"scanningRepositories": "リポジトリをスキャン中...",
"scriptName": "スクリプト名",
"selectDefaultAgentProfile": "デフォルトのエージェントプロファイルを選択",
"selectDefaultExecutor": "デフォルトの実行環境を選択",
"setupScript": "セットアップスクリプト",
"setupScriptHelp": "リポジトリをクローンした時、または git worktree を作成した時に実行。",
"sourceLocal": "ローカル",
"sourceRemote": "リモート",
"supportedPatterns": "対応パターン:",
"thisActionCannotBeUndone": "この操作は元に戻せない。",
"typeWorkspaceNameToConfirm": "削除確認用にワークスペース名 <0>{{name}}</0> を入力。この操作は元に戻せない。",
"untitledRepository": "無題のリポジトリ",
"useRepository": "リポジトリを使用",
"validGitRepository": "有効な git リポジトリ",
"validate": "検証",
"workspaceName": "ワークスペース名",
"workspaceNameIsRequired": "ワークスペース名は必須です。",
"workspaceNamePlaceholder": "マイワークスペース",
"workspaceNotFound": "ワークスペースが見つかりません",
"workspaceSettings": "ワークスペース設定",
"worktreeBranchTemplate": "ワークツリーのブランチテンプレート",
"worktreeSync": "ワークツリーの同期",
"enterRepositoryName": "リポジトリ名を入力してください。",
"chooseDifferentRepositoryName": "別のリポジトリ名を選択してください。",
"repositoryNameMustBeOneFolder": "リポジトリ名は1つのフォルダー名である必要があります。",
"sourceChooseAFolder": "フォルダーを選択してください。",
"sourceChooseRepoAndBranch": "リポジトリとベースブランチを選択してください。",
"sourceEnterValidRemoteUrl": "有効なリモートリポジトリURLとベースブランチを入力してください。",
"sourceFolderAlreadySelected": "このフォルダーはすでに選択されています。",
"sourceRepoBranchAlreadySelected": "このリポジトリとブランチはすでに選択されています。",
"repositorySetsTitle": "リポジトリセット",
"repositorySetsDescription": "このワークスペース内のリポジトリをまとめた名前付きグループです。タスクダイアログでセットを選ぶと、リポジトリピッカーに内容が反映され、保存済みのベースブランチがタスクにコピーされます。チェックアウトブランチはタスクごとに個別です。",
"repositorySetsCreate": "新しいセット",
"repositorySetsCreateTitle": "新しいリポジトリセット",
"repositorySetsEditTitle": "リポジトリセットを編集",
"repositorySetsEditorDescription": "このセットに含めるリポジトリ、その順序、各リポジトリの任意のベースブランチを選択してください。",
"repositorySetsEdit": "セットを編集",
"repositorySetsDelete": "セットを削除",
"repositorySetsDeleteTitle": "{{name}}を削除しますか?",
"repositorySetsDeleteDescription": "セットは削除されます。含まれるリポジトリや、それらをすでに使用しているタスクには影響しません。",
"repositorySetsEmpty": "まだリポジトリセットはありません。1つ作成すると、タスクダイアログのリポジトリピッカーに一度で反映できます。",
"repositorySetsNoMembers": "このセットにはリポジトリがありません。リポジトリはワークスペースから削除されました。",
"repositorySetsNoRepositories": "このワークスペースには、まだ追加できるリポジトリがありません。",
"repositorySetsNameLabel": "名前",
"repositorySetsDescriptionLabel": "説明 (任意)",
"repositorySetsMembersLabel": "リポジトリ",
"repositorySetsMembersHint": "タスクの順序に従ってリポジトリを追加してください。ベースブランチは任意です。",
"repositorySetsMoveUp": "前へ移動",
"repositorySetsMoveDown": "後へ移動",
"repositorySetsRemove": "リポジトリを削除",
"repositorySetsSave": "セットを保存",
"repositorySetsNameTaken": "このワークスペースには、同じ名前のセットがすでに存在します。",
"repositorySetsMemberRejected": "選択したリポジトリのいずれかが、このワークスペースでは利用できなくなっています。",
"repositorySetsSaveFailed": "セットを保存できませんでした。もう一度お試しください。",
"repositorySetsAlreadyDeleted": "このセットはすでに削除されています。更新して現在の一覧を表示してください。",
"repositorySetsDeleteFailed": "セットを削除できませんでした。もう一度お試しください。",
"repositorySetsAddRepository": "リポジトリを追加",
"repositorySetsSearchRepositories": "リポジトリを検索...",
"repositorySetsNoMatchingRepositories": "一致するリポジトリはありません。",
"repositorySetsSearchSelected": "選択済みのリポジトリを絞り込む...",
"repositorySetsNoMatchingMembers": "この検索に一致する選択済みリポジトリはありません。",
"repositorySetsNoMembersSelected": "まだリポジトリは選択されていません。",
"repositorySetsResetBases": "ベースをリセット",
"repositorySetsTaskDefault": "タスクのデフォルト ({{branch}})",
"repositorySetsTaskDefaultNoBranch": "タスクのデフォルト",
"repositorySetsBaseBranchLabel": "保存されたベースブランチ",
"repositorySetsBaseBranchFor": "{{name}} の保存されたベースブランチ",
"repositorySetsBranchUnavailable": "利用できません",
"repositorySetsBranchUnavailableReason": "この保存されたブランチは利用できません。別のブランチを選択するか、タスクのデフォルトにリセットしてください。",
"repositorySetsMemberMissing": "このワークスペースには、もはやこのリポジトリは存在しません。",
"repositorySetsMemberBase": "ベース: {{base}}",
"branchPoliciesTitle": "ブランチポリシー",
"branchPoliciesDescription": "タスクを作成するときに、名前付きのブランチポリシーを選択します。選択したポリシーはタスクに保存されます。",
"branchPoliciesSaveRepositoryFirst": "ブランチポリシーを追加する前に、このリポジトリを保存してください。",
"branchPoliciesEmpty": "まだブランチポリシーはありません。",
"branchPoliciesLoading": "ブランチポリシーを読み込み中...",
"branchPoliciesLoadFailed": "ブランチポリシーを読み込めませんでした。もう一度お試しください。",
"branchPoliciesRetry": "再試行",
"branchPolicyAdd": "ポリシーを追加",
"branchPolicyAddTitle": "ブランチポリシーを追加",
"branchPolicyEditTitle": "ブランチポリシーを編集",
"branchPolicyEditorDescription": "ベースブランチ、新しいブランチ名のパターン、プルリクエストの送信先を定義します。",
"branchPolicyName": "ポリシー名",
"branchPolicyNameHelpLabel": "ポリシー名について",
"branchPolicyNameHelp": "タスクダイアログでこのポリシーを選びやすいよう、短い名前を使ってください。",
"branchPolicyNameHint": "名前はこのリポジトリ内で一意です。",
"branchPolicyDescription": "説明 (任意)",
"branchPolicyBaseBranch": "ベースブランチ",
"branchPolicyBaseBranchHelpLabel": "ベースブランチについて",
"branchPolicyBaseBranchHelp": "新しい作業はこのブランチから開始されます。",
"branchPolicyPullRequestTarget": "プルリクエストの送信先",
"branchPolicyPullRequestTargetHelpLabel": "プルリクエストの送信先について",
"branchPolicyPullRequestTargetHelp": "Kandev のプルリクエストダイアログでは、このブランチがデフォルトで選択されます。エージェントがプルリクエストを作成するときは、この送信先を明示的に設定する必要があります。",
"branchPolicyTemplate": "ブランチ名のテンプレート",
"branchPolicyTemplateHelpLabel": "ブランチテンプレートについて",
"branchPolicyTemplateHelp": "title、task_id、ticket、suffix などのサポートされているプレースホルダーを使用してください。",
"branchPolicyTemplateHint": "テンプレートは安全な Git ブランチ名を生成する必要があります。",
"branchPolicySaved": "ブランチポリシーを保存しました",
"branchPolicySaveFailed": "ブランチポリシーを保存できませんでした。",
"branchPolicyEdit": "{{name}} を編集",
"branchPolicyDelete": "{{name}} を削除",
"branchPolicyDeleteTitle": "{{name}} を削除しますか?",
"branchPolicyDeleteDescription": "既存のタスクには、保存済みのポリシースナップショットが保持されます。このポリシーは新しいタスクでは利用できなくなります。",
"branchPolicyDeleteConfirm": "ポリシーを削除",
"branchPolicyDeleted": "ブランチポリシーを削除しました",
"branchPolicyDeleteFailed": "ブランチポリシーを削除できませんでした。",
"branchPolicyGitflowAdd": "Gitflow ポリシーを追加",
"branchPolicyGitflowTitle": "Gitflow ポリシーを追加",
"branchPolicyGitflowDescription": "この 2 つのブランチから、Feature、Bugfix、Hotfix、Release の各ポリシーを作成します。",
"branchPolicyProductionBranch": "本番ブランチ",
"branchPolicyDevelopmentBranch": "開発ブランチ",
"branchPolicyProductionHelpLabel": "本番ブランチについて",
"branchPolicyProductionHelp": "Hotfix と Release の pull request はこのブランチを対象にします。",
"branchPolicyDevelopmentHelpLabel": "開発ブランチについて",
"branchPolicyDevelopmentHelp": "Feature と Bugfix の作業はこのブランチから始まります。",
"branchPolicyGitflowPreview": "既存の異なる 2 つのブランチを選択してください。スターターは 4 つのポリシーを作成しますが、Git ブランチは変更しません。",
"branchPolicyGitflowCreate": "Gitflow ポリシーを作成",
"branchPolicyGitflowCreated": "Gitflow ポリシーを作成しました",
"branchPolicyGitflowFailed": "Gitflow ポリシーを作成できませんでした。",
"branchPolicySummary": "ベース: {{base}}。テンプレート: {{template}}。pull request の対象: {{target}}。",
"defaultVisibility.description": "今後作成されるワークスペースに適用されます。既存のワークスペースの公開設定はそのままです。",
"defaultVisibility.existingUnaffected": "これを変更しても、既存のワークスペースは変更されません。",
"defaultVisibility.label": "新しいワークスペースは",
"defaultVisibility.savedOrg": "新しいワークスペースは組織に公開されます。",
"defaultVisibility.savedPrivate": "新しいワークスペースは非公開になります。",
"defaultVisibility.title": "新しいワークスペースの既定値",
"teamAccess.addMember": "追加",
"teamAccess.addMemberLabel": "同僚を追加",
"teamAccess.addMemberPlaceholder": "人を選択",
"teamAccess.description": "このワークスペースにアクセスできる人を選び、同僚に役割を付与します。",
"teamAccess.genericError": "その変更は保存できませんでした。",
"teamAccess.makeOwner": "オーナーにする",
"teamAccess.memberAdded": "メンバーを追加しました。",
"teamAccess.memberRemoved": "メンバーを削除しました。",
"teamAccess.membersLabel": "メンバー",
"teamAccess.noMembers": "メンバーまだなし。所有者は常にフルアクセス。",
"teamAccess.noUsersToAdd": "全員すでにメンバー",
"teamAccess.nowOrgVisible": "このワークスペースは組織に表示されるようになりました。",
"teamAccess.nowPrivate": "このワークスペースは非公開になりました。",
"teamAccess.ownershipTransferred": "{{name}} が所有者になりました。",
"teamAccess.removeMember": "メンバーを削除",
"teamAccess.roleCollaborator": "コラボレーター",
"teamAccess.roleLabel": "役割",
"teamAccess.roleOwner": "所有者",
"teamAccess.roleUpdated": "役割を更新しました。",
"teamAccess.roleViewer": "閲覧者",
"teamAccess.title": "チームアクセス",
"teamAccess.visibilityLabel": "公開範囲",
"teamAccess.visibilityOrg": "組織内全員",
"teamAccess.visibilityOrgHint": "ゲスト除く全ユーザーが、このワークスペースを開いてタスクを作業できます。",
"teamAccess.visibilityPrivate": "非公開",
"teamAccess.visibilityPrivateHint": "所有者と下に一覧のメンバーだけが、このワークスペースを開けます。",
"placement.title": "配置",
"placement.description": "このワークスペースがどの単位に属するか。つまり、誰がアクセスできるか。変更方法は移動だけ。役割は強いもの同士で合算されるので、ここで権限を取り上げることはできません。",
"placement.pick": "単位を選ぶ",
"placement.search": "単位を検索",
"placement.none": "単位見つからず",
"placement.moved": "ワークスペースを移動しました。",
"placement.failed": "ワークスペースを移動できませんでした。",
"placement.ownerOnly": "ワークスペース所有者だけが移動できます"
}
+14 -11
View File
@@ -3,8 +3,9 @@
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`), 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
Taiwan (`zh-tw`), Traditional Chinese Hong Kong (`zh-hk`), and Japanese (`ja`,
endonym `日本語`) are the shipped human locales, and a generated **pseudo-locale**
is used for QA. Requirements live in
[`docs/specs/platform/requirements/i18n.md`](specs/platform/requirements/i18n.md). Traditional Chinese
catalogs are derived from `zh-cn` via OpenCC plus a product glossary; see
[`docs/specs/platform/requirements/traditional-chinese-locales.md`](specs/platform/requirements/traditional-chinese-locales.md)
@@ -27,8 +28,8 @@ Two enforcement layers, and it matters which is which:
the migration ran; that list is now the migration record, not the bound. See
[The guard is scoped](#the-guard-is-scoped-on-purpose) and
[Externalizing a path](#externalizing-a-path).
- **The four real locales gate the build.** `pt-pt`, `zh-cn`, `zh-hk` and `zh-tw`
are complete, and adding an `en` key without translating it fails
- **The five real locales gate the build.** `pt-pt`, `zh-cn`, `zh-hk`, `zh-tw`
and `ja` are complete, and adding an `en` key without translating it fails
`pnpm run i18n:check`. See [Real locales](#real-locale-catalogs-gate).
## TL;DR for adding a string
@@ -1162,8 +1163,9 @@ Do it in its own PR, not inside a copy-only migration.
## Adding a real language
Use a canonical lowercase locale id such as `zh-cn`. Locale negotiation accepts
case variants such as `zh-CN`, but cookies and `<html lang>` use the canonical id.
Use a canonical lowercase locale id such as `zh-cn` or `ja`. Locale negotiation
accepts case variants such as `zh-CN` and unambiguous region suffixes such as
`ja-JP` (collapsed onto `ja`); cookies and `<html lang>` 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 +
@@ -1218,11 +1220,12 @@ entries:
| zh-hk | 415 | 81 | 1 |
| zh-tw | 415 | 81 | 1 |
None of it visible in a green build. The four catalogs are now complete, so the
failure mode has flipped: the risk is no longer "a PR is blocked on a translator"
but "a PR silently re-opens the gap". So the pass **gates**, and the cost is that
adding user-facing copy means adding it in five languages. That is the real cost
of shipping five languages; it was previously being deferred rather than paid.
None of it visible in a green build. The four catalogs were completed first, then
`ja` joined them, so the failure mode has flipped: the risk is no longer "a PR is
blocked on a translator" but "a PR silently re-opens the gap". So the pass
**gates**, and the cost is that adding user-facing copy means adding it in six
languages (`en` plus five real locales). That is the real cost of shipping those
languages; it was previously being deferred rather than paid.
For `zh-tw` and `zh-hk`, do not hand-translate: run `pnpm run i18n:zh-hant`,
which converts `zh-cn` through OpenCC plus the product glossary and emits proper
+121
View File
@@ -0,0 +1,121 @@
---
created: 2026-09-20
status: in_progress
requirements:
- REQ-PLATFORM-JAPANESE-LOCALE-001
system_design:
- ../../specs/platform/system-design/i18n.md
legacy_specs: []
---
# Implementation Plan: Japanese Locale
## Overview
Ship the `ja` (日本語) locale for the Kandev web UI and the Go-rendered browser
surfaces, following the same pattern already proven by `pt-pt`, `zh-cn`,
`zh-tw`, and `zh-hk`: commit human-maintained JSON catalogs mirroring `en` in
every namespace, register `ja` in the frontend runtime and the Go i18n
`supportedLocales`, let the existing drift/parity/lint gates discover `ja`
automatically from the directory listing, and prove the switch, cookie
persistence, `<html lang>`, Japanese formatting, and English restoration with
unit tests and a Playwright scenario.
Requirements: [`REQ-PLATFORM-JAPANESE-LOCALE-001`](../../specs/platform/requirements/japanese-locale.md)
(delivered as a sibling of the existing i18n requirement; `AC-PLATFORM-I18N-001.3`
in [`i18n.md`](../../specs/platform/requirements/i18n.md) gains `ja`).
System design: [`docs/specs/platform/system-design/i18n.md`](../../specs/platform/system-design/i18n.md).
The combined change touches only localization wiring and catalogs; no product
behavior, routing, or data flow changes. The user did not provide translations,
so every Japanese value is produced by the implementer and recorded in the work
orders; a later human/LLM review pass may tighten wording but is not a merge
blocker (real-locale parity gates structurally; the identical-to-English check
rejects keys left verbatim in English unless declared in `_verbatim.json`).
## Delivery waves
Wave 1 — Catalogs and frontend runtime (Task 01). This is the largest chunk
(~10,837 keys across 37 namespaces) and is split into three commits so each
stage is independently reviewable and CI-green:
1. mini showpiece: `common.json` + `settings.json` (~1,382 keys), frontend
registration, unit tests — the first RED/GREEN loop proving the wiring.
2. high-traffic namespaces around common+settings.
3. remaining namespaces to full parity.
Wave 2 — Backend locale + negotiation tests + `docs/i18n.md` (Task 02).
Wave 3 — E2E scenario + screenshots (Task 03).
Wave 4 — Repository verification (`list-docs validate`, spec lint, optional
branch-level review) (Task 04).
## Dependencies
| Wave | Depends on |
| --- | --- |
| 2 | 1 (frontend registration is the reference runtime; backend mirrors it) |
| 3 | 1, 2 (E2E runs against integrated runtime, backend, and catalogs) |
| 4 | 1, 2, 3 (final all-gates pass) |
## Verification strategy
```bash
(cd apps && pnpm install --frozen-lockfile) # once after worktree creation
(cd apps/web && pnpm exec vitest run lib/i18n) # focused frontend suites (RED first)
(cd apps/web && pnpm run typecheck)
(cd apps/web && pnpm run i18n:check) # drift + parity + identical-to-en gate
(cd apps/web && pnpm run lint)
(cd apps/backend && make test) # backend i18n suite
(cd apps/web && pnpm e2e:run --host --project chromium -- tests/i18n/language-switch.spec.ts)
python3 scripts/list-docs.py validate && python3 scripts/lint-spec-files.py --all
```
Run one focused behavioral test in RED before the production/catalog edit, then
re-run the exact focused suite after the final relevant edit.
## Work orders
Wave 1:
- [x] [Task 01: Frontend ja catalogs and locale runtime integration](task-01-frontend-ja-locale-catalogs.md)
Wave 2:
- [x] [Task 02: Backend ja locale negotiation](task-02-backend-ja-locale-negotiation.md)
Wave 3:
- [x] [Task 03: Japanese locale E2E](task-03-japanese-locale-e2e.md)
Wave 4:
- [x] [Task 04: Repository verification](task-04-repository-verification.md)
## Risks
- **Translation volume (~10,837 keys).** Key parity alone cannot prove natural
wording, preserved semantic tokens, or layout fit. Mitigation: the shared
`_verbatim.json` registry covers technical terms that stay English; every
value preserves `{{placeholders}}`, `_one`/`_other`, `<Trans>` tags, code
tokens, shortcuts, and brand names (the parity gate enforces this
structurally); high-traffic namespaces get priority.
- **Japanese avoids English loanwords where awkward** (`Create` → `作成`,
`Delete` → `削除`) but dev tooling often keeps English technical terms
(`repository`, `pull request`, `workflow`, `agent`, `terminal`) or uses
katakana. The parity `identical-to-English` check would flag a key left
verbatim; the implementer records such keys in `src/locales/ja/_verbatim.json`
with a reason instead of English-casing a value that should be katakana.
- **Date/relative-time formatting** must pass `ja` into `Intl`/`date-fns`, not
leave English data; existing `date-locale.ts` mappings must be extended.
- **E2E and manual `make dev` validation are environment-sensitive** and may
expose baseline failures; focused locale evidence must remain separately
recorded.
## Open Questions
None. The user supplied the goal ("GUIの日本語化"), which this plan follows as
the shipped-language precedent established by `pt-pt` / `zh-cn` /
`zh-tw` / `zh-hk`: locale id `ja`, endonym `日本語`, full catalogs, backend
negotiation, CI parity, and E2E proof, committed in one feature branch.
@@ -0,0 +1,145 @@
---
id: "01-frontend-ja-locale-catalogs"
title: "Frontend ja locale catalogs and runtime integration"
status: done
wave: 1
depends_on: []
plan: "plan.md"
requirements:
- REQ-PLATFORM-JAPANESE-LOCALE-001
acceptance_criteria:
- AC-PLATFORM-JAPANESE-LOCALE-001.1
- AC-PLATFORM-JAPANESE-LOCALE-001.2
- AC-PLATFORM-JAPANESE-LOCALE-001.3
- AC-PLATFORM-JAPANESE-LOCALE-001.5
system_design:
- ../../specs/platform/system-design/i18n.md
---
# Task 01: Frontend ja catalogs and locale runtime integration
## Outcome
`ja` is a shipped, production-selectable locale labeled `日本語`; all 37
`apps/web/src/locales/ja/*.json` catalogs mirror `en` key-for-key and preserve
placeholders, plural suffixes, `<Trans>` tag structure, code tokens, shortcuts,
and brand names; activation and boot restoration set i18next, `<html lang>`,
and the `kandev_locale` cookie to `ja`; Intl/date-fns formatting uses Japanese
locale data.
## In scope
- Frontend catalog files `apps/web/src/locales/ja/*.json` (37 namespaces,
~10,837 keys).
- `apps/web/lib/i18n/index.ts`: add `ja` to `SUPPORTED_LOCALES`, `LOCALE_LABELS`
(`ja: "日本語"`), and the canonical `SupportedLocale` union; only `pseudo`
stays production-hidden.
- `apps/web/lib/i18n/date-locale.ts` (or the equivalent `Intl`/`date-fns` locale
mapping): register Japanese locale data so `formatRelative`/`formatDate`/
`formatNumber` use it.
- `src/locales/ja/_verbatim.json` (only if a value must stay English verbatim
with a reason).
- Unit test updates: `lib/i18n/index.test.ts` (SUPPORTED_LOCALES /
selectableLocales), `boot.test.ts`, `formats.test.ts` / `date-locale.test.ts`
(Japanese relative time e.g. `5分前`), `bundling.test.ts` (lazy chunk), and
`scripts/check-i18n-keys.test.ts` if locale discovery behavior is asserted.
## Exclusions
- Backend (`apps/backend/internal/i18n`) — Task 02.
- E2E specs — Task 03.
- Repo-wide docs/lint config — Task 04.
## Applicable requirements
`REQ-PLATFORM-JAPANESE-LOCALE-001.1`, `.2`, `.3`, `.5`; `AC-PLATFORM-I18N-001.3`
(as extended by this package).
## System design
`docs/specs/platform/system-design/i18n.md` — Catalogs and locale runtime,
Data model, API surface (client boot), Scenarios.
## Implementation acceptance conditions
1. `SUPPORTED_LOCALES` includes `ja`, `LOCALE_LABELS["ja"] === "日本語"`, and
`selectableLocales(false)`/`selectableLocales(true)` reflect `ja`.
2. Selecting `ja` sets `<html lang="ja">` and writes `kandev_locale=ja`; a cold
boot with that cookie activates `ja` before first paint (lazy chunk loaded).
3. `pnpm run i18n:check` is green: no missing keys, `pseudo` synced, and `ja`
has exactly the same namespaces/keys as `en` (structurally) with no
unexplained identical-to-English values (any intentional English-verbatim
value declared in `src/locales/ja/_verbatim.json`).
## Verification
```bash
(cd apps && pnpm install --frozen-lockfile)
(cd apps/web && pnpm exec vitest run lib/i18n/index.test.ts lib/i18n/boot.test.ts lib/i18n/formats.test.ts lib/i18n/date-locale.test.ts)
(cd apps/web && pnpm exec vitest run lib/i18n/bundling.test.ts)
(cd apps/web && pnpm run typecheck)
(cd apps/web && pnpm run i18n:check)
(cd apps/web && pnpm run lint)
```
Run one focused behavioral test in RED before the production/catalog edit, then
re-run the exact focused suite after the final relevant edit. Record RED/GREEN
evidence, key counts by namespace at each commit, and translation-preservation
checks in Results.
## Files likely touched
- `apps/web/src/locales/ja/<37 namespaces>.json`
- `apps/web/src/locales/ja/_verbatim.json` (conditional)
- `apps/web/lib/i18n/index.ts`
- `apps/web/lib/i18n/index.test.ts`
- `apps/web/lib/i18n/boot.test.ts`
- `apps/web/lib/i18n/formats.test.ts`
- `apps/web/lib/i18n/date-locale.ts` and `date-locale.test.ts`
- `apps/web/lib/i18n/bundling.test.ts`
## Dependencies
None.
## Parallelism
Sequential. Catalogs and locale registration form one runtime contract. Commit
in three reviewable stages: (a) common+settings + registration + tests,
(b) high-traffic namespaces, (c) remaining namespaces to full parity.
## Inputs
- Spec: **What**, **Scenarios**, **Failure modes**, **Resolved decisions**.
- Plan: **Wave 1**.
- Existing patterns: `en` / `pseudo` / `zh-cn` catalogs, locale activation, boot
resolution, current Intl wrappers and their tests.
## Output contract
Report RED/GREEN evidence, key counts by namespace, files changed, exact
commands and results, translation-preservation checks, `ja` verbatim registry
entries, blockers/risks, and synchronized task/plan status.
## Results
- Catalogs: 37 namespaces, 10,837/10,837 keys, 0 missing, 0 placeholder/Trans mismatches.
Written to `apps/web/src/locales/ja/*.json`. No `ja/_verbatim.json` (none needed).
- Translation: OmniRoute `github/gpt-5.4-mini`, `stream:false`, 40-key batches,
4 workers. Residual 131 identical-to-English copy keys retranslated one-by-one;
6 leftovers patched by hand (`Webhook の URL`, `{{value}} 個の CPU`, `アプリ ID`,
`課題 IID`, `- Git:{{git}}`, `GitHub の Issue #{{number}}`).
- Runtime: `SUPPORTED_LOCALES` already included `ja` / `日本語`. Added `ja-JP` → `ja`
collapse in `normalizeLocale`/`isSupportedLocale` (matches Go `normalizeRegion`).
`date-locale.ts` maps `ja` to `date-fns/locale/ja`.
- Gates:
- `node scripts/check-i18n-keys.mjs`: `ja, pt-pt, zh-cn, zh-hk, zh-tw complete`
- `node scripts/check-trans-indices.mjs` / inline plurals / module-scope t() /
em-dash: OK
- `node scripts/check-nonjsx-copy.mjs`: OK
- `pnpm run i18n:parity`: ja missing=0 every namespace
- Tests: `pnpm exec vitest run lib/i18n/index.test.ts lib/i18n/boot.test.ts
lib/i18n/formats.test.ts lib/i18n/date-locale.test.ts lib/i18n/bundling.test.ts`
→ 5 files, 82 tests, GREEN. `formatRelative(ja)` pins `5分前`.
- Later: `pnpm exec vitest run lib/i18n` → 9 files, 100 tests, GREEN.
- Status: catalogs + frontend runtime done.
@@ -0,0 +1,109 @@
---
id: "02-backend-ja-locale-negotiation"
title: "Backend ja locale negotiation"
status: done
wave: 2
depends_on:
- "01-frontend-ja-locale-catalogs"
plan: "plan.md"
requirements:
- REQ-PLATFORM-JAPANESE-LOCALE-001
acceptance_criteria:
- AC-PLATFORM-JAPANESE-LOCALE-001.4
system_design:
- ../../specs/platform/system-design/i18n.md
---
# Task 02: Backend ja locale negotiation
## Outcome
The Go shell and server-rendered browser surfaces accept `ja`:
`apps/backend/internal/i18n/locales/ja.json` is embedded, `Supported` /
`Normalize` / `FromRequest` (cookie and `Accept-Language`) resolve `ja`, and a
`ja` runtime locale produces `<html lang="ja">` in the first server response.
## In scope
- `apps/backend/internal/i18n/locales/ja.json`: translate the three
server-rendered browser error messages with an exact key match to `en.json`
(72 keys, mirroring `zh-cn.json` in shape).
- `apps/backend/internal/i18n/i18n.go`: add `"ja": true` to `supportedLocales`
(keep in sync with `apps/web/lib/i18n/index.ts`).
- `apps/backend/internal/i18n/i18n_test.go`: cover `ja` canonical normalization,
case-insensitive BCP-47 input, Japanese message lookup, exact catalog parity,
cookie precedence, q-value ordering, region matching, and English fallback.
- `apps/backend/internal/webapp/shell_test.go`: prove a `ja` runtime locale
produces `<html lang="ja">` in the first server response.
## Exclusions
- Frontend `ja` catalogs and runtime — covered by Task 01.
- E2E specs — Task 03.
## Applicable requirements
`REQ-PLATFORM-JAPANESE-LOCALE-001.4`; `AC-PLATFORM-I18N-001.7` (`<html lang>`
reflects active locale).
## System design
`docs/specs/platform/system-design/i18n.md` — API surface (Go shell), Data
model, Scenarios (Accept-Language negotiation), Resolved decisions.
## Implementation acceptance conditions
1. `Supported("ja")`, `Normalize("ja-JP") === "ja"`, and a request with
`kandev_locale=ja` resolves `ja`; `Accept-Language: ja` without a cookie
also resolves `ja`.
2. `ja.json` has exactly the same keys as `en.json` (embedding loads without
error; parity is exact for backend catalogs, as with `zh-cn`).
3. `shell_test.go` proves `lang="ja"` in the served HTML.
## Verification
```bash
(cd apps/backend && make test) # or: go test ./internal/i18n/... ./internal/webapp/...
```
RED first: add the failing tests before production edits, confirm the expected
failure, then implement and re-run.
## Files likely touched
- `apps/backend/internal/i18n/locales/ja.json`
- `apps/backend/internal/i18n/i18n.go`
- `apps/backend/internal/i18n/i18n_test.go`
- `apps/backend/internal/webapp/shell_test.go`
## Dependencies
Task 01 (frontend registration is the reference runtime; backend mirrors it).
## Parallelism
Sequential after Task 01.
## Inputs
- Spec: **Acceptance criteria**, **Scenarios** (cookie, Accept-Language),
**Failure modes**.
- Plan: **Wave 2**.
- Existing patterns: `zh-cn`/`zh-tw` addition in `i18n.go`, `i18n_test.go`
coverage, and `shell_test.go`.
## Output contract
Report RED/GREEN evidence per test, exact commands and results, key-count
parity check for `ja.json` vs `en.json`, files changed, blockers/risks, and
synchronized task/plan status.
## Results
- Catalog: `apps/backend/internal/i18n/locales/ja.json` 72/72 keys vs `en.json`.
- `supportedLocales` includes `ja`. `Normalize("ja-JP")` collapses to `ja`.
- `FromRequest`: cookie `ja` wins; cookie `ja-JP` collapses; `Accept-Language: ja`
and `ja-JP` resolve `ja`. Invalid cookie (`klingon`) is ignored and does not
skip Accept-Language (regression: `Normalize` fallback to `en` would have).
- `shell_test.go`: `lang="ja"` and `ja-JP` → `ja`.
- Tests: `gofmt` + `go test ./internal/i18n/... ./internal/webapp/...` GREEN.
@@ -0,0 +1,114 @@
---
id: "03-japanese-locale-e2e"
title: "Japanese locale E2E"
status: done
wave: 3
depends_on:
- "01-frontend-ja-locale-catalogs"
- "02-backend-ja-locale-negotiation"
plan: "plan.md"
requirements:
- REQ-PLATFORM-JAPANESE-LOCALE-001
acceptance_criteria:
- AC-PLATFORM-JAPANESE-LOCALE-001.2
- AC-PLATFORM-JAPANESE-LOCALE-001.7
system_design:
- ../../specs/platform/system-design/i18n.md
---
# Task 03: Japanese locale E2E
## Outcome
Playwright proves selecting `日本語` changes stable migrated copy and
`<html lang>` to `ja`, survives reload through the `kandev_locale` cookie, and
restores English — in the desktop chromium project and, if the mobile project
convention applies, the mobile project.
## In scope
- `apps/web/e2e/tests/i18n/language-switch.spec.ts`: add a `ja` case
(option `日本語`, display-language label `表示言語`, `<html lang="ja">`,
cookie `kandev_locale=ja`, reload restoration, restore English) following the
`zh-tw`/`zh-hk` loop pattern at the same file location.
- `apps/web/e2e/tests/i18n/mobile-language-switch.spec.ts` if the mobile
convention covers this family.
- A fresh desktop Japanese Appearance screenshot under ignored
`apps/web/.pr-assets/` (never committed), inspected for secrets and layout
problems (Japanese text can truncate narrow labels).
## Exclusions
- Unit-level frontend and backend behavior — Tasks 01 and 02.
- Repository-level docs/lint final pass — Task 04.
## Applicable requirements
`REQ-PLATFORM-JAPANESE-LOCALE-001.2`, `.7`; `AC-PLATFORM-I18N-001.7`.
## System design
`docs/specs/platform/system-design/i18n.md` — Scenarios (switch, cookie,
reload, lang).
## Implementation acceptance conditions
1. Selecting `日本語` renders a known translated label (e.g. `表示言語`),
sets `<html lang="ja">`, and writes `kandev_locale=ja`.
2. Reload keeps `lang="ja"` and the translated label; switching back to English
restores `lang="en"` and `Display language`.
3. The existing pseudo-locale scenario stays intact and passing.
## Verification
```bash
(cd apps/web && pnpm e2e:run --host --project chromium -- tests/i18n/language-switch.spec.ts)
(cd apps/web && pnpm e2e:run --host --project mobile-chrome -- tests/i18n/mobile-language-switch.spec.ts)
```
Add the Japanese scenario first and observe its expected RED result before the
feature is complete, then rerun the focused spec after the final relevant edit.
## Files likely touched
- `apps/web/e2e/tests/i18n/language-switch.spec.ts`
- `apps/web/e2e/tests/i18n/mobile-language-switch.spec.ts`
- Ignored screenshot assets under `apps/web/.pr-assets/` only; never commit them
to the feature branch.
## Dependencies
Tasks 01-02 must be done so the E2E runs against the integrated runtime,
backend, and catalogs.
## Parallelism
Sequential. This task is the browser-level integration proof.
## Inputs
- Spec scenarios for the Japanese switch, reload, shell lang, and pseudo QA.
- Plan: **Wave 3**.
- Existing `language-switch.spec.ts` / `mobile-language-switch.spec.ts`
conventions and the `zh-tw`/`zh-hk` loop.
## Output contract
Report RED/GREEN evidence, screenshot paths (under `.pr-assets/`, ignored), any
mobile-project divergence, exact commands and results, blockers/risks, and
synchronized task/plan status.
## Results
- Desktop: `language-switch.spec.ts` loop gained `{ id: "ja", option: "日本語",
displayLanguage: "表示言語" }`.
- Mobile: `mobile-language-switch.spec.ts` gained Japanese switch/reload/restore.
- Commands:
- `pnpm e2e:run --host --no-build --project chromium -- tests/i18n/language-switch.spec.ts`
→ 6 passed (39.9s), including 日本語.
- `pnpm e2e:run --host --no-build --project mobile-chrome -- tests/i18n/mobile-language-switch.spec.ts`
→ 2 passed (25.1s).
- Screenshot (ignored, not committed):
`apps/web/.pr-assets/language-switch--japanese-locale-desktop.png` (1280x720).
First E2E run RED was Playwright chromium v1228 missing; repo installer
`scripts/install-playwright-browsers.sh` then GREEN. No mobile divergence.
@@ -0,0 +1,116 @@
---
id: "04-repository-verification"
title: "Repository verification"
status: in_progress
wave: 4
depends_on:
- "01-frontend-ja-locale-catalogs"
- "02-backend-ja-locale-negotiation"
- "03-japanese-locale-e2e"
plan: "plan.md"
requirements:
- REQ-PLATFORM-JAPANESE-LOCALE-001
acceptance_criteria:
- AC-PLATFORM-JAPANESE-LOCALE-001.6
system_design:
- ../../specs/platform/system-design/i18n.md
---
# Task 04: Repository verification
## Outcome
The whole Japanese-locale package is repository-clean: docs catalog and spec
lint pass, all verification commands green in one final run, and the feature
branch is ready for the user's review with no stale/pruned plan markers.
## In scope
- `docs/i18n.md` update: add `ja` to the shipped-human-locales list, the
"four real locales gate the build" text (now five), and the locale-id /
parity guidance note (`日本語` endonym, `ja` canonical id).
- `docs/specs/platform/requirements/i18n.md` + `japanese-locale.md` +
`docs/specs/platform/system-design/i18n.md` consistency (already authored in
the package; validate).
- `python3 scripts/list-docs.py validate` and
`python3 scripts/lint-spec-files.py --all` — fix any issues introduced by the
package.
- Final all-gates run: `i18n:check`, `typecheck`, `lint`, backend `make test`,
focused E2E.
## Exclusions
- Any new product code or catalog changes (Tasks 01-03 own those).
## Applicable requirements
`REQ-PLATFORM-JAPANESE-LOCALE-001.6` (CI/lint/parity discovery); the docs
guidance in `docs/i18n.md`.
## System design
`docs/specs/platform/system-design/i18n.md` — Enforcement notes and delivery
notes as they describe docs/parity conventions.
## Implementation acceptance conditions
1. `docs/i18n.md` lists `ja` consistently and the "N real locales gate the
build" phrasing is correct (five real locales).
2. `python3 scripts/list-docs.py validate` and
`python3 scripts/lint-spec-files.py --all` pass.
3. One final run of the verification suite exits 0 (frontend typecheck, i18n
gates, lint, backend tests, focused E2E).
## Verification
```bash
(cd apps && pnpm install --frozen-lockfile)
(cd apps/web && pnpm run i18n:check && pnpm run typecheck && pnpm run lint)
(cd apps/backend && make test)
(cd apps/web && pnpm e2e:run --host --project chromium -- tests/i18n/language-switch.spec.ts)
python3 scripts/list-docs.py validate && python3 scripts/lint-spec-files.py --all
```
## Files likely touched
- `docs/i18n.md`
- (validation-only) `docs/specs/platform/requirements/*`, `docs/specs/platform/system-design/i18n.md`
## Dependencies
Tasks 01-03.
## Parallelism
Sequential; final sweep.
## Inputs
- Plan: **Wave 4**, **Verification strategy**.
- The completed work orders' Results for RED/GREEN and command output.
## Output contract
Report exact commands and exit codes for every gate, docs validation output,
any fixes applied, blockers/risks, and synchronized task/plan status marking the
package ready for user review.
## Results
- `docs/i18n.md` lists `ja` (endonym `日本語`) and "five real locales gate the
build". Spec `japanese-locale.md` Overview/Intent/AC-001.3 updated: parity
gates, not advisory. `updated: 2026-09-21`.
- Docs: `python3 scripts/list-docs.py validate` → 292 decisions, 1055 specs.
`python3 scripts/lint-spec-files.py --all` → pass.
- Gates:
- `pnpm run i18n:check` → `ja, pt-pt, zh-cn, zh-hk, zh-tw complete` (exit 0)
- `pnpm run i18n:parity` → 37 namespaces, 10837 keys, ja missing=0
- `pnpm run typecheck` → exit 0
- `pnpm run lint` → exit 0
- `pnpm exec vitest run lib/i18n` → 9 files, 100 tests, GREEN
- `go test ./internal/i18n/... ./internal/webapp/...` GREEN. Full
`make -C apps/backend test` timed out here and is not claimed green,
so this work order stays `in_progress`
- focused E2E chromium + mobile-chrome → GREEN
- Remaining system-design wording that still called real-locale parity
advisory is now aligned with the hard `i18n:check` gate
+1 -1
View File
@@ -88,7 +88,7 @@ Released builds can lag this page. Check **Settings > System > About** or `kande
| Language servers | Limited | Desktop Monaco maps TypeScript/JavaScript, Go, Rust, Python, and experimental Kotlin to task-host servers with diagnostics, completion, hover, navigation, signature help, and semantic tokens. Status distinguishes a launched process awaiting `initialize` from server-reported project work; slow Kotlin Gradle imports can take minutes, with no automatic timeout or universal percentage/ETA. Fine-pointer desktop can place active-file status in the editor toolbar or the opt-in status surface controlled by **Show status bar**; when that surface is off it falls back to the toolbar. Touch tablet uses the toolbar, and phone has no LSP control. Auto-start/installation default off; Kotlin is manual-only. Local PC and Local Docker are supported, while Kubernetes, SSH, Sprites, remote Docker, and mobile LSP are not. |
| Integrated shell terminals | Dependency-bound | Create, reopen, rename, and terminate are shipped. Shell settings affect new terminals, and executor/task-environment availability controls where the PTY runs. |
| Prompts, keyboard shortcuts, notifications, appearance, and task actions | Supported | These are normal settings surfaces. Browser notification permission, custom command validity, and local shell/editor availability still apply to their effects. |
| Web UI localization | Limited | **Settings > General > Appearance** offers English, Português (Portugal), and 简体中文. The choice applies immediately, persists per browser through a `kandev_locale` cookie, and is negotiated from `Accept-Language` before defaulting to English when no cookie is set. Externalization is complete: every reachable web UI surface renders through the translation layer, and dates, numbers, and relative timestamps follow the selected locale. Per-language completeness still differs. Portuguese tracks English closely; Simplified Chinese is maintained out of band and lags, most visibly in the task workbench. An untranslated key falls back to English rather than failing. About fifteen shared `@kandev/ui` accessibility labels (mostly screen-reader-only text such as a dialog's **Close**) stay English even where the visible UI is translated. Desktop-shell and CLI surfaces, API/log diagnostics, and agent output were never in scope; user content such as task titles, chat, and diffs is never translated. Development and E2E builds list an extra **Pseudo (QA)** locale that production builds do not ship. |
| Web UI localization | Limited | **Settings > General > Appearance** offers English, Português (Portugal), 简体中文, 繁體中文(台灣), 繁體中文(香港), and 日本語. The choice applies immediately, persists per browser through a `kandev_locale` cookie, and is negotiated from `Accept-Language` before defaulting to English when no cookie is set. Externalization is complete: every reachable web UI surface renders through the translation layer, and dates, numbers, and relative timestamps follow the selected locale. Per-language completeness still differs. Portuguese tracks English closely; Simplified Chinese is maintained out of band and lags, most visibly in the task workbench. An untranslated key falls back to English rather than failing. About fifteen shared `@kandev/ui` accessibility labels (mostly screen-reader-only text such as a dialog's **Close**) stay English even where the visible UI is translated. Desktop-shell and CLI surfaces, API/log diagnostics, and agent output were never in scope; user content such as task titles, chat, and diffs is never translated. Development and E2E builds list an extra **Pseudo (QA)** locale that production builds do not ship. |
</details>
+1 -1
View File
@@ -85,7 +85,7 @@ Chat, plan, changes, files, terminal, editor/diff, preview, commit, and pull-req
Every new user-facing string must go through i18next: `t("namespace:key")` or `<Trans>`, never an inline literal. That covers visible copy, `placeholder`, `aria-label`, `title`, `alt`, toasts, validation and empty-state text, and dialog copy. Externalization of the existing UI is complete, so a hardcoded literal is now a regression rather than unfinished migration.
Catalogs live in `apps/web/src/locales/<locale>/<namespace>.json`. English is the source locale and the only hand-authored catalog; it is bundled into the entry chunk, while each other locale is a lazily fetched chunk loaded before that locale activates. Shipped locales are English, European Portuguese, and Simplified Chinese, plus a generated `pseudo` catalog that only development and E2E builds contain. A missing key falls back to English at runtime.
Catalogs live in `apps/web/src/locales/<locale>/<namespace>.json`. English is the source locale and the only hand-authored catalog; it is bundled into the entry chunk, while each other locale is a lazily fetched chunk loaded before that locale activates. Shipped locales are English, European Portuguese, Simplified Chinese, Traditional Chinese (Taiwan), Traditional Chinese (Hong Kong), and Japanese, plus a generated `pseudo` catalog that only development and E2E builds contain. A missing key falls back to English at runtime.
Three mistakes cause silent bugs: never translate a string compared with `===`, never call `t()` at module scope, and never pass an English plural ending as a value; use `count` with `_one`/`_other` keys.
+5 -5
View File
@@ -2,7 +2,7 @@
status: active
system: platform
created: 2026-07-27
updated: 2026-08-12
updated: 2026-09-21
owners:
- jcfs
---
@@ -10,20 +10,20 @@ owners:
## Overview
Kandev's i18n foundation lets migrated web surfaces externalize copy, switch locale, and format dates and numbers per language, but English is still the only human language shipped. Adding Simplified Chinese makes the existing localized surface usable by Chinese-speaking users while preserving English as the source language and the pseudo-locale as the migration QA oracle.
Kandev's i18n foundation lets migrated web surfaces externalize copy, switch locale, and format dates and numbers per language. English remains the source locale. The shipped human locales are European Portuguese, Simplified Chinese, Traditional Chinese (Taiwan and Hong Kong), and Japanese. The pseudo-locale remains the migration QA oracle.
## Requirements
### REQ-PLATFORM-I18N-001: Internationalization (i18n)
**Intent:** Kandev's i18n foundation lets migrated web surfaces externalize copy, switch locale, and format dates and numbers per language, but English is still the only human language shipped. Adding Simplified Chinese makes the existing localized surface usable by Chinese-speaking users while preserving English as the source language and the pseudo-locale as the migration QA oracle.
**Intent:** Kandev's i18n foundation lets migrated web surfaces externalize copy, switch locale, and format dates and numbers per language. English remains the source locale. The shipped human locales are European Portuguese, Simplified Chinese, Traditional Chinese (Taiwan and Hong Kong), and Japanese. The pseudo-locale remains the migration QA oracle.
#### Acceptance criteria
- **AC-PLATFORM-I18N-001.1:** The web UI SHALL render all user-facing text through a translation layer (i18next `t("ns:key")` / react-i18next `<Trans>`), not from inline literals. "User-facing text" covers visible copy, `placeholder`, `aria-label`/`aria-description`, `title`, `alt`, toast/`sonner` messages, form-validation messages, empty-state and error copy, and confirm/dialog text.
- **AC-PLATFORM-I18N-001.2:** Native UI plugins SHALL register plugin-owned catalogs through the public plugin SDK. Kandev SHALL isolate them by verified plugin identity, require English fallback copy, expose the active 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.
- **AC-PLATFORM-I18N-001.3:** English SHALL remain the source locale. The shipped human locales SHALL be `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).
- **AC-PLATFORM-I18N-001.4:** The app SHALL expose a **language switcher** in Settings. It lists English, 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).
- **AC-PLATFORM-I18N-001.3:** English SHALL remain the source locale. The shipped human locales SHALL be `en`, `pt-pt`, `zh-cn`, `zh-tw`, `zh-hk`, and `ja`; 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); Japanese details live in [`japanese-locale.md`](japanese-locale.md).
- **AC-PLATFORM-I18N-001.4:** The app SHALL expose a **language switcher** in Settings. It lists English, European Portuguese, Simplified Chinese, Traditional Chinese (Taiwan), Traditional Chinese (Hong Kong), and Japanese (`日本語`) 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).
- **AC-PLATFORM-I18N-001.5:** The app SHALL ship a **pseudo-locale** (`pseudo`) that transforms every extracted message (accents + padding, e.g. `Ĉřéàţé ţàśķ`) so QA can visually confirm a string was externalized and detect truncation. The pseudo-locale is only selectable in dev/e2e builds, not in production builds.
- **AC-PLATFORM-I18N-001.6:** Date, time, relative-time, and number formatting SHALL be locale-aware, driven by the active locale rather than hardcoded English strings. The custom `apps/web/lib/utils/time.ts` `timeAgo` helper is replaced by a locale-aware relative-time formatter, and `date-fns` calls take the active locale.
- **AC-PLATFORM-I18N-001.7:** The document `<html lang>` attribute SHALL reflect the active locale (both in the Go-rendered shell's default and after client locale changes).
@@ -0,0 +1,37 @@
---
status: active
system: platform
created: 2026-09-20
updated: 2026-09-21
owners:
- y4tk
---
# Japanese Locale Requirements
## Overview
Kandev ships English, European Portuguese, Simplified Chinese, Traditional Chinese (Taiwan and Hong Kong), and Japanese catalogs. `ja` makes the already-localized web surface usable by Japanese-speaking users while preserving English as the source locale, the JSON catalog contract, the `kandev_locale` cookie persistence, and the real-locale parity gate.
## Requirements
### REQ-PLATFORM-JAPANESE-LOCALE-001: Japanese locale
**Intent:** Kandev ships English, European Portuguese, Simplified Chinese, Traditional Chinese (Taiwan and Hong Kong), and Japanese catalogs. `ja` makes the already-localized web surface usable by Japanese-speaking users while preserving English as the source locale, the JSON catalog contract, the `kandev_locale` cookie persistence, and the real-locale parity gate.
#### Acceptance criteria
- **AC-PLATFORM-JAPANESE-LOCALE-001.1:** The shipped human locales SHALL include `ja` (Japanese) in addition to the existing `en`, `pt-pt`, `zh-cn`, `zh-tw`, and `zh-hk`. Locale id SHALL be the lowercase BCP-47-style tag `ja`, consistent with `pt-pt` / `zh-cn`.
- **AC-PLATFORM-JAPANESE-LOCALE-001.2:** The Settings language switcher SHALL list Japanese by its fixed endonym `日本語`. Selecting it re-renders the UI without a full reload, persists via the existing `kandev_locale` cookie, and sets `<html lang>` to `ja`.
- **AC-PLATFORM-JAPANESE-LOCALE-001.3:** Frontend catalogs SHALL live at `apps/web/src/locales/ja/*.json`, with the same namespaces and key set as `en` (real-locale parity gates, same as `pt-pt` / `zh-cn` / `zh-tw` / `zh-hk`; each key must preserve `{{placeholders}}`, plural `_one`/`_other` suffixes, `<Trans>` tag structure, code tokens, shortcuts, and brand names).
- **AC-PLATFORM-JAPANESE-LOCALE-001.4:** The backend browser-facing catalog SHALL add `apps/backend/internal/i18n/locales/ja.json`, and `ja` SHALL be accepted by `Supported` / `Normalize` / `FromRequest` (cookie and `Accept-Language` negotiation).
- **AC-PLATFORM-JAPANESE-LOCALE-001.5:** Locale-aware date/time/number/relative-time formatting SHALL use Japanese locale data (e.g. relative time reads `5分前`, dates use Japanese ordering), driven by the active locale.
- **AC-PLATFORM-JAPANESE-LOCALE-001.6:** CI, lint, and catalog-parity checks SHALL discover `ja` automatically as a real locale; the identical-to-English tolerance SHALL use the shared `_verbatim.json` registry plus a `src/locales/ja/_verbatim.json` (if needed). A build that adds an `en` key without the `ja` translation SHALL fail, exactly as it does for the other real locales (`pt-pt`, `zh-cn`, `zh-tw`, `zh-hk`).
- **AC-PLATFORM-JAPANESE-LOCALE-001.7:** The Playwright `language-switch.spec.ts` SHALL cover selecting `日本語`, verifying `lang="ja"` and a known translated label, cookie persistence (`kandev_locale=ja`), reload restoration, and restoring English.
## Explicit exclusions
- Translating the CLI launcher, logs, ACP/agent output, or the ~1,100 diagnostic API error strings (these stay English by design; see the i18n spec out-of-scope).
- Translating user/domain content carried in the boot payload and store (task titles, workflow/step names, repo names, chat messages, diff content, agent transcripts).
- RTL layout support; `<html dir>` stays `ltr`.
- Translating integration provider names, brand names, code identifiers, keyboard-shortcut glyphs, and other proper nouns.
- A translation-management platform / vendor sync.
+41 -43
View File
@@ -3,8 +3,9 @@ status: draft
system: platform
requirements:
- REQ-PLATFORM-I18N-001
- REQ-PLATFORM-JAPANESE-LOCALE-001
created: 2026-07-27
updated: 2026-08-12
updated: 2026-09-21
owners:
- jcfs
---
@@ -19,6 +20,7 @@ This design preserves the technical source detail for `REQ-PLATFORM-I18N-001` du
| Requirement | Design section |
| --- | --- |
| `REQ-PLATFORM-I18N-001` | [Migrated source detail](#migrated-source-detail) |
| `REQ-PLATFORM-JAPANESE-LOCALE-001` | [Migrated source detail](#migrated-source-detail) |
## Migrated source detail
@@ -42,13 +44,15 @@ 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`, `zh-cn`, `zh-tw`, and `zh-hk`; copy lives in per-namespace JSON
`en`, `pt-pt`, `zh-cn`, `zh-tw`, `zh-hk`, and `ja`; 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`](../requirements/traditional-chinese-locales.md).
[`traditional-chinese-locales.md`](../requirements/traditional-chinese-locales.md);
Japanese details live in
[`japanese-locale.md`](../requirements/japanese-locale.md).
- The app SHALL expose a **language switcher** in Settings. It lists English,
European Portuguese, Simplified Chinese, Traditional Chinese (Taiwan), and
Traditional Chinese (Hong Kong) by their fixed endonyms. Selecting a locale
European Portuguese, Simplified Chinese, Traditional Chinese (Taiwan),
Traditional Chinese (Hong Kong), and Japanese 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).
@@ -78,13 +82,11 @@ language and the pseudo-locale as the migration QA oracle.
generated sync with `en`. Both are authored or generated in the same change as
the code, so both SHALL fail the build. (Catalogs are NOT regenerated from
source — with key-based ids the English copy exists only in the catalog.)
- Real-locale parity SHALL be reported as a **warning and SHALL NOT fail the
build**. Translation is performed out of band by a third party, so gating on it
blocks an English-only change for work nobody in the merge path can do. This is
a deliberate reversal of the original requirement: #2243 introduced `zh-cn`
together with a hard parity gate, #2261 added English keys twenty minutes
later, and `main` went red although neither change was wrong and no ordering of
the two could have avoided it.
- Real-locale parity SHALL fail the build. `i18n:check` fails on a missing key,
an extra key, a dropped placeholder, or a value left identical to English
unless declared in `_verbatim.json`. The shipped real locales are `pt-pt`,
`zh-cn`, `zh-hk`, `zh-tw`, and `ja`. i18next still falls back to `en` at
runtime when a key is absent.
- The full sweep SHALL externalize **every** user-facing string across
`apps/web/components/` (1,121 files), `apps/web/app/` (285 files), and the
`@kandev/ui` primitives, leaving no user-facing English literal outside the
@@ -101,8 +103,8 @@ merge. Sequence:
language switcher, CI gates, codemods, the scoped lint guard, and one page
(Settings → General → Appearance) migrated end-to-end as the worked example.
2. **First real language**: ship `zh-cn` catalogs for every existing namespace,
register the locale in the frontend and backend, and add advisory catalog
parity reporting for every committed real locale.
register the locale in the frontend and backend, and add catalog parity
reporting for every committed real locale (later a hard `i18n:check` gate).
3. **Per-directory migrations**: each PR externalizes one directory, appends it
to `i18nGuardFiles`, and adds its screen to the pseudo-coverage spec.
4. **Close-out**: the env guard on the pseudo-coverage e2e spec is **removed** —
@@ -121,12 +123,12 @@ i18n adds no server-side persistent entities. It introduces:
- **Message catalogs** — checked-in JSON under
`apps/web/src/locales/<locale>/<namespace>.json` for `en`, `pt-pt`, `zh-cn`,
`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
`zh-tw`, `zh-hk`, `ja`, and `pseudo`. `en` is hand-authored (keys are stable ids; the
English copy lives only here); `pt-pt`, `zh-cn`, and `ja` 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
namespace and key sets SHALL mirror `en`. A missing or extra key fails
`i18n:check`; i18next still 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
@@ -175,9 +177,9 @@ Frontend module contract (new):
**简体中文**, **THEN** every migrated message present in the `zh-cn` catalog
resolves from it, any message not yet translated falls back to its `en` value
rather than rendering the raw key, `<html lang>` becomes `zh-cn`, and the
selection survives a reload through the `kandev_locale=zh-cn` cookie. (The
catalog may lag `en`, because real-locale parity is advisory — the fallback is
what makes that safe to ship.)
selection survives a reload through the `kandev_locale=zh-cn` cookie. Runtime
English fallback is a safety net if a key is absent at runtime; it is not a
substitute for a complete checked-in catalog, which `i18n:check` gates.
- **GIVEN** no locale cookie and `Accept-Language: zh-CN`, **WHEN** the Go shell
or a server-rendered browser error is returned, **THEN** locale negotiation
selects `zh-cn`, the shell emits `<html lang="zh-cn">`, and the backend message
@@ -212,15 +214,13 @@ 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**
the command still exits 0.
**THEN** every real locale missing or adding a namespace or key fails the
command, naming the locale, namespace, and missing or extra entries.
- **GIVEN** the `pseudo` catalog has drifted from `en`, **WHEN** `i18n:check`
runs, **THEN** it fails, **even when** a real locale is also out of parity —
the advisory path must not mask the gating one.
runs, **THEN** it fails.
## Failure modes
@@ -249,8 +249,8 @@ Frontend module contract (new):
## Out of scope
- Shipping human languages other than English, European Portuguese, and
Simplified Chinese.
- Shipping human languages other than English, European Portuguese,
Simplified Chinese, Traditional Chinese, and Japanese.
- Translating the CLI launcher, logs, or ACP/agent output, and the ~1,100
diagnostic API error strings (`http.Error` / `gin.H{"error": …}`) — the SPA maps
API failures onto its own translated copy, so those stay English by design.
@@ -285,20 +285,18 @@ Frontend module contract (new):
persisted and document locale. Locale negotiation is case-insensitive, so
BCP-47 input such as `zh-CN` resolves to `zh-cn`. The switcher label is the
fixed endonym `简体中文`, not a translated message.
- **Real-locale parity**: every committed real locale should contain every
- **Real-locale parity**: every committed real locale SHALL contain every
English namespace and exactly the same keys, including plural suffixes and
`<Trans>` structures — but this is **advisory, not enforced**, because
translation happens out of band (see the CI requirement above). Runtime English
fallback is what makes an incomplete catalog safe to merge; it remains a safety
net rather than a substitute for a complete checked-in catalog.
- **The parity check is structural, not translational**: it compares shapes, so a
green run does not mean "translated". It catches a missing/extra key or
namespace, an empty or non-string value, a dropped `{{placeholder}}`, and a
dropped or renumbered `<Trans>` tag. It does **not** catch a value identical to
English, a catalog copy-pasted wholesale from `en`, or swapped `_one`/`_other`
forms. The identical-to-English tolerance is required — brand nouns and
technical literals must stay verbatim — so tightening it needs a per-key
exemption list or a whole-file proportion threshold, not a `value === en` rule.
`<Trans>` structures. `i18n:check` fails the build on a missing key, an extra
key, a dropped placeholder, a dropped or renumbered `<Trans>` tag, or a value
left identical to English unless declared in `_verbatim.json`. Runtime English
fallback remains a safety net rather than a substitute for a complete
checked-in catalog.
- **The parity check is structural plus identical-to-English**: a green run does
not mean "well translated". It catches shape defects and unexplained English
leftovers. It does **not** catch awkward-but-translated wording, or swapped
`_one`/`_other` forms that still exist as keys. Brand nouns and technical
literals that must stay English belong in `_verbatim.json`.
- **Library**: react-i18next (superseding the initial Lingui implementation) —
chosen so the English copy lives in one place and components stay free of
inline source text.