feat(gitea): add Gitea/Forgejo as a git provider
Full parity with the existing GitLab provider: - Server module packages/web/server/lib/gitea (auth/client/repo/routes + docs + tests) with Gitea REST v1 API, PAT + base URL auth, multi-account storage - Shared GiteaAPI types and web API client - Provider detection generalized with user-configurable custom domains per provider (github/gitlab/gitea), additive with built-in defaults (github.com, gitlab.com) and connected-account hosts; precedence github -> gitlab -> gitea - Gitea PR view, issues section, pickers, integration dialog, branch PR status helper, settings UI (PAT + base URL + custom domains) - Magic prompts (gitea.pr.review, gitea.issue.review) and full 11-locale i18n parity
This commit is contained in:
@@ -1344,6 +1344,107 @@ export interface GitLabAPI {
|
||||
repoBranches(namespace: string, project: string): Promise<GitLabBranchesResult>;
|
||||
}
|
||||
|
||||
// ============== Gitea / Forgejo Provider ==============
|
||||
// Gitea and Forgejo share the same REST v1 API (GitHub-style). Repos are flat
|
||||
// `owner/repo` (no multi-segment namespaces) and remote work is called
|
||||
// "pull requests" (PR), matching GitHub terminology.
|
||||
|
||||
type GiteaAuthAccount = {
|
||||
id: string;
|
||||
user: { username: string; name?: string; avatarUrl?: string; webUrl?: string };
|
||||
baseUrl: string;
|
||||
current: boolean;
|
||||
};
|
||||
|
||||
export type GiteaAuthStatus = {
|
||||
connected: boolean;
|
||||
user?: GiteaUserSummary;
|
||||
accounts: GiteaAuthAccount[];
|
||||
};
|
||||
|
||||
export type GiteaUserSummary = {
|
||||
username: string;
|
||||
id?: number;
|
||||
name?: string;
|
||||
avatarUrl?: string;
|
||||
webUrl?: string;
|
||||
email?: string;
|
||||
};
|
||||
|
||||
export type GiteaIssueSummary = {
|
||||
number: number;
|
||||
title: string;
|
||||
url: string;
|
||||
state: string;
|
||||
author: { username: string; id?: number };
|
||||
labels: string[];
|
||||
};
|
||||
|
||||
export type GiteaIssue = GiteaIssueSummary & { body?: string; createdAt?: string; updatedAt?: string };
|
||||
|
||||
export type GiteaComment = {
|
||||
id: number;
|
||||
body: string;
|
||||
url?: string;
|
||||
author: { username: string; id?: number };
|
||||
createdAt?: string;
|
||||
};
|
||||
|
||||
export type GiteaPullRequestSummary = {
|
||||
number: number;
|
||||
title: string;
|
||||
url: string;
|
||||
state: 'open' | 'closed' | 'merged';
|
||||
draft?: boolean;
|
||||
author: { username: string; id?: number };
|
||||
labels: string[];
|
||||
sourceBranch: string;
|
||||
targetBranch: string;
|
||||
};
|
||||
|
||||
export type GiteaPullRequest = GiteaPullRequestSummary & {
|
||||
body?: string;
|
||||
mergeable?: boolean;
|
||||
merged?: boolean;
|
||||
createdAt?: string;
|
||||
updatedAt?: string;
|
||||
};
|
||||
|
||||
export type GiteaIssuesListResult = { connected: boolean; repo?: { owner: string; repo: string; url?: string } | null; issues: GiteaIssueSummary[]; page: number; hasMore: boolean };
|
||||
export type GiteaIssueGetResult = { connected: boolean; repo?: { owner: string; repo: string; url?: string } | null; issue?: GiteaIssue | null };
|
||||
export type GiteaIssueCommentsResult = { connected: boolean; repo?: { owner: string; repo: string; url?: string } | null; comments: GiteaComment[] };
|
||||
export type GiteaPullRequestsListResult = { connected: boolean; repo?: { owner: string; repo: string; url?: string } | null; prs: GiteaPullRequestSummary[]; page: number; hasMore: boolean };
|
||||
export type GiteaPullRequestContextResult = { connected: boolean; repo?: { owner: string; repo: string; url?: string } | null; pr?: GiteaPullRequest | null; comments: GiteaComment[]; files: Array<{ filename: string; status?: string; additions?: number; deletions?: number; patch?: string }>; diff?: string };
|
||||
export type GiteaPullRequestCreateInput = { directory: string; title: string; sourceBranch: string; targetBranch: string; description?: string };
|
||||
export type GiteaPullRequestUpdateInput = { directory: string; number: number; title?: string; description?: string };
|
||||
export type GiteaPullRequestMergeInput = { directory: string; number: number; method?: 'merge' | 'squash' | 'rebase' };
|
||||
export type GiteaPullRequestMergeResult = { connected: boolean; merged: boolean; message?: string };
|
||||
export type GiteaBranchesResult = { branches: string[]; defaultBranch?: string | null };
|
||||
|
||||
export interface GiteaAPI {
|
||||
authStatus(): Promise<GiteaAuthStatus>;
|
||||
authConnect(input: { accessToken: string; baseUrl: string }): Promise<GiteaAuthStatus>;
|
||||
authActivate(accountId: string): Promise<GiteaAuthStatus>;
|
||||
authDisconnect(): Promise<{ removed: boolean }>;
|
||||
me(): Promise<GiteaUserSummary>;
|
||||
|
||||
issuesList(directory: string, options?: { page?: number; query?: string }): Promise<GiteaIssuesListResult>;
|
||||
issueGet(directory: string, number: number, options?: { owner?: string; repo?: string }): Promise<GiteaIssueGetResult>;
|
||||
issueComments(directory: string, number: number, options?: { owner?: string; repo?: string }): Promise<GiteaIssueCommentsResult>;
|
||||
|
||||
prsList(directory: string, options?: { page?: number; query?: string; sourceBranch?: string }): Promise<GiteaPullRequestsListResult>;
|
||||
prContext(
|
||||
directory: string,
|
||||
number: number,
|
||||
options?: { includeDiff?: boolean; owner?: string; repo?: string }
|
||||
): Promise<GiteaPullRequestContextResult>;
|
||||
prCreate(input: GiteaPullRequestCreateInput): Promise<GiteaPullRequest>;
|
||||
prUpdate(input: GiteaPullRequestUpdateInput): Promise<GiteaPullRequest>;
|
||||
prMerge(input: GiteaPullRequestMergeInput): Promise<GiteaPullRequestMergeResult>;
|
||||
|
||||
repoBranches(owner: string, repo: string): Promise<GiteaBranchesResult>;
|
||||
}
|
||||
|
||||
export interface RemoteClientRecord {
|
||||
id: string;
|
||||
label: string;
|
||||
@@ -1440,6 +1541,7 @@ export interface RuntimeAPIs {
|
||||
notifications: NotificationsAPI;
|
||||
github?: GitHubAPI;
|
||||
gitlab?: GitLabAPI;
|
||||
gitea?: GiteaAPI;
|
||||
push?: PushAPI;
|
||||
diagnostics?: DiagnosticsAPI;
|
||||
clientAuth?: ClientAuthAPI;
|
||||
|
||||
@@ -1,45 +1,112 @@
|
||||
import { describe, expect, test } from 'bun:test';
|
||||
import { detectGitProvider } from './gitProvider';
|
||||
import { detectGitProvider, type GitProviderHosts } from './gitProvider';
|
||||
|
||||
const EMPTY_HOSTS: GitProviderHosts = { github: [], gitlab: [], gitea: [] };
|
||||
|
||||
describe('detectGitProvider', () => {
|
||||
test('returns null with no remotes', () => {
|
||||
expect(detectGitProvider([], [])).toBeNull();
|
||||
expect(detectGitProvider([], EMPTY_HOSTS)).toBeNull();
|
||||
});
|
||||
|
||||
test('classifies github.com remotes across URL forms', () => {
|
||||
expect(detectGitProvider(['git@github.com:owner/repo.git'], [])).toBe('github');
|
||||
expect(detectGitProvider(['ssh://git@github.com/owner/repo.git'], [])).toBe('github');
|
||||
expect(detectGitProvider(['https://github.com/owner/repo.git'], [])).toBe('github');
|
||||
expect(detectGitProvider(['git@github.com:owner/repo.git'], EMPTY_HOSTS)).toBe('github');
|
||||
expect(detectGitProvider(['ssh://git@github.com/owner/repo.git'], EMPTY_HOSTS)).toBe('github');
|
||||
expect(detectGitProvider(['https://github.com/owner/repo.git'], EMPTY_HOSTS)).toBe('github');
|
||||
});
|
||||
|
||||
test('classifies gitlab.com remotes across URL forms', () => {
|
||||
expect(detectGitProvider(['git@gitlab.com:group/project.git'], [])).toBe('gitlab');
|
||||
expect(detectGitProvider(['ssh://git@gitlab.com/group/sub/project.git'], [])).toBe('gitlab');
|
||||
expect(detectGitProvider(['https://gitlab.com/group/project'], [])).toBe('gitlab');
|
||||
expect(detectGitProvider(['git@gitlab.com:group/project.git'], EMPTY_HOSTS)).toBe('gitlab');
|
||||
expect(detectGitProvider(['ssh://git@gitlab.com/group/sub/project.git'], EMPTY_HOSTS)).toBe('gitlab');
|
||||
expect(detectGitProvider(['https://gitlab.com/group/project'], EMPTY_HOSTS)).toBe('gitlab');
|
||||
});
|
||||
|
||||
test('classifies a self-hosted GitLab remote through connected account hosts', () => {
|
||||
expect(detectGitProvider(['git@git.example.com:group/project.git'], ['https://git.example.com'])).toBe('gitlab');
|
||||
expect(detectGitProvider(['https://git.example.com/group/project.git'], ['https://git.example.com'])).toBe('gitlab');
|
||||
test('classifies a self-hosted GitLab remote through configured hosts', () => {
|
||||
const hosts: GitProviderHosts = { ...EMPTY_HOSTS, gitlab: ['git.example.com'] };
|
||||
expect(detectGitProvider(['git@git.example.com:group/project.git'], hosts)).toBe('gitlab');
|
||||
expect(detectGitProvider(['https://git.example.com/group/project.git'], hosts)).toBe('gitlab');
|
||||
});
|
||||
|
||||
test('does not classify an unknown self-hosted host as gitlab without an account', () => {
|
||||
expect(detectGitProvider(['git@git.example.com:group/project.git'], [])).toBe('other');
|
||||
test('does not classify an unknown self-hosted host as gitlab without a configured host', () => {
|
||||
expect(detectGitProvider(['git@git.example.com:group/project.git'], EMPTY_HOSTS)).toBe('other');
|
||||
});
|
||||
|
||||
test('classifies other hosts as other', () => {
|
||||
expect(detectGitProvider(['git@gitea.example.com:owner/repo.git'], [])).toBe('other');
|
||||
expect(detectGitProvider(['https://bitbucket.org/owner/repo.git'], [])).toBe('other');
|
||||
expect(detectGitProvider(['git@gitea.example.com:owner/repo.git'], EMPTY_HOSTS)).toBe('other');
|
||||
expect(detectGitProvider(['https://bitbucket.org/owner/repo.git'], EMPTY_HOSTS)).toBe('other');
|
||||
});
|
||||
|
||||
test('github wins when both github and gitlab remotes are present', () => {
|
||||
expect(detectGitProvider([
|
||||
'git@github.com:owner/repo.git',
|
||||
'git@gitlab.com:owner/repo.git',
|
||||
], [])).toBe('github');
|
||||
], EMPTY_HOSTS)).toBe('github');
|
||||
});
|
||||
|
||||
test('ignores malformed remotes', () => {
|
||||
expect(detectGitProvider(['', 'not a url', ' '], [])).toBeNull();
|
||||
expect(detectGitProvider(['', 'not a url', ' '], EMPTY_HOSTS)).toBeNull();
|
||||
});
|
||||
|
||||
test('classifies a self-hosted Gitea remote across URL forms through configured hosts', () => {
|
||||
const hosts: GitProviderHosts = { ...EMPTY_HOSTS, gitea: ['gitea.example.com'] };
|
||||
expect(detectGitProvider(['git@gitea.example.com:owner/repo.git'], hosts)).toBe('gitea');
|
||||
expect(detectGitProvider(['ssh://git@gitea.example.com/owner/repo.git'], hosts)).toBe('gitea');
|
||||
expect(detectGitProvider(['https://gitea.example.com/owner/repo.git'], hosts)).toBe('gitea');
|
||||
});
|
||||
|
||||
test('classifies codeberg.org remotes as gitea through configured hosts', () => {
|
||||
const hosts: GitProviderHosts = { ...EMPTY_HOSTS, gitea: ['codeberg.org'] };
|
||||
expect(detectGitProvider(['git@codeberg.org:owner/repo.git'], hosts)).toBe('gitea');
|
||||
});
|
||||
|
||||
test('does not classify codeberg.org as gitea without a configured host', () => {
|
||||
expect(detectGitProvider(['git@codeberg.org:owner/repo.git'], EMPTY_HOSTS)).toBe('other');
|
||||
});
|
||||
|
||||
test('github wins over a configured gitea host when both remotes are present', () => {
|
||||
const hosts: GitProviderHosts = { ...EMPTY_HOSTS, gitea: ['gitea.example.com'] };
|
||||
expect(detectGitProvider([
|
||||
'git@github.com:owner/repo.git',
|
||||
'git@gitea.example.com:owner/repo.git',
|
||||
], hosts)).toBe('github');
|
||||
});
|
||||
|
||||
test('gitlab wins over a configured gitea host when both remotes are present', () => {
|
||||
const hosts: GitProviderHosts = { ...EMPTY_HOSTS, gitea: ['gitea.example.com'] };
|
||||
expect(detectGitProvider([
|
||||
'git@gitlab.com:group/project.git',
|
||||
'git@gitea.example.com:owner/repo.git',
|
||||
], hosts)).toBe('gitlab');
|
||||
});
|
||||
|
||||
test('custom github host wins over gitlab.com', () => {
|
||||
const hosts: GitProviderHosts = { ...EMPTY_HOSTS, github: ['github.example.com'] };
|
||||
expect(detectGitProvider([
|
||||
'git@github.example.com:owner/repo.git',
|
||||
'git@gitlab.com:group/project.git',
|
||||
], hosts)).toBe('github');
|
||||
});
|
||||
|
||||
test('normalizes host entries (scheme, port, and path stripped)', () => {
|
||||
const hosts: GitProviderHosts = {
|
||||
github: ['https://github.example.com/some/path', 'ssh://git@gh.other.example.com:2222/org'],
|
||||
gitlab: ['git@git.example.com:group/repo.git'],
|
||||
gitea: [],
|
||||
};
|
||||
expect(detectGitProvider(['https://github.example.com/owner/repo.git'], hosts)).toBe('github');
|
||||
expect(detectGitProvider(['https://gh.other.example.com/owner/repo.git'], hosts)).toBe('github');
|
||||
expect(detectGitProvider(['https://git.example.com/group/project.git'], hosts)).toBe('gitlab');
|
||||
});
|
||||
|
||||
test('dedupes host entries', () => {
|
||||
const hosts: GitProviderHosts = {
|
||||
github: ['https://github.example.com/a', 'https://github.example.com/b'],
|
||||
gitlab: [],
|
||||
gitea: [],
|
||||
};
|
||||
expect(detectGitProvider(['git@github.example.com:owner/repo.git'], hosts)).toBe('github');
|
||||
});
|
||||
|
||||
test('normalizes github.com built-in case-insensitively', () => {
|
||||
expect(detectGitProvider(['https://GITHUB.com/owner/repo.git'], EMPTY_HOSTS)).toBe('github');
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1,8 +1,22 @@
|
||||
import { useEffect, useMemo, useState } from 'react';
|
||||
import { getRemotes } from '@/lib/gitApi';
|
||||
import { useGitLabAuthStore } from '@/stores/useGitLabAuthStore';
|
||||
import { useGiteaAuthStore } from '@/stores/useGiteaAuthStore';
|
||||
import { useGitProviderDomainsStore, normalizeProviderDomain } from '@/stores/useGitProviderDomainsStore';
|
||||
|
||||
export type GitProvider = 'github' | 'gitlab' | 'other';
|
||||
export type GitProvider = 'github' | 'gitlab' | 'gitea' | 'other';
|
||||
|
||||
/**
|
||||
* Per-provider hostname sets used for detection: custom user-configured
|
||||
* domains (from the domains store) plus account-derived base-URL hostnames.
|
||||
* Built-in defaults (github.com, gitlab.com) are applied inside the detection
|
||||
* logic and never need to be present here.
|
||||
*/
|
||||
export type GitProviderHosts = {
|
||||
github: string[];
|
||||
gitlab: string[];
|
||||
gitea: string[];
|
||||
};
|
||||
|
||||
const parseGitRemoteHost = (value: string): string | null => {
|
||||
const url = value.trim();
|
||||
@@ -26,54 +40,65 @@ const parseGitRemoteHost = (value: string): string | null => {
|
||||
}
|
||||
};
|
||||
|
||||
const normalizeGitLabHost = (baseUrl: string | undefined): string | null => {
|
||||
if (!baseUrl) {
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
return new URL(baseUrl).hostname.toLowerCase();
|
||||
} catch {
|
||||
return null;
|
||||
const normalizeHostList = (hosts: string[] | undefined): string[] => {
|
||||
const seen = new Set<string>();
|
||||
const result: string[] = [];
|
||||
for (const host of hosts ?? []) {
|
||||
const normalized = normalizeProviderDomain(host);
|
||||
if (normalized && !seen.has(normalized)) {
|
||||
seen.add(normalized);
|
||||
result.push(normalized);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
};
|
||||
|
||||
/**
|
||||
* Classify a repository by the hosts of its remotes. Returns null when there
|
||||
* are no remotes to inspect. GitHub wins on `github.com`; a remote is treated
|
||||
* as GitLab when it is `gitlab.com` or matches a connected GitLab instance
|
||||
* base URL (self-hosted). Anything else resolves to 'other' so GitHub-branded
|
||||
* UI is not offered for non-GitHub repositories.
|
||||
* are no remotes to inspect. Built-in defaults apply always: `github.com` is
|
||||
* GitHub and `gitlab.com` is GitLab (there is no built-in Gitea host). Custom
|
||||
* hosts from `hosts.{github,gitlab,gitea}` are then matched in precedence
|
||||
* order github -> gitlab -> gitea (first match wins). Anything else resolves
|
||||
* to 'other' so GitHub-branded UI is never offered for a non-GitHub repo.
|
||||
*/
|
||||
export const detectGitProvider = (fetchUrls: string[], gitlabHosts: string[]): GitProvider | null => {
|
||||
const hosts = new Set<string>();
|
||||
export const detectGitProvider = (fetchUrls: string[], hosts: GitProviderHosts): GitProvider | null => {
|
||||
const remoteHosts = new Set<string>();
|
||||
for (const url of fetchUrls) {
|
||||
const host = parseGitRemoteHost(url);
|
||||
if (host) {
|
||||
hosts.add(host);
|
||||
remoteHosts.add(host);
|
||||
}
|
||||
}
|
||||
if (hosts.size === 0) {
|
||||
if (remoteHosts.size === 0) {
|
||||
return null;
|
||||
}
|
||||
if (hosts.has('github.com')) {
|
||||
return 'github';
|
||||
|
||||
const githubHosts = new Set(['github.com', ...normalizeHostList(hosts.github)]);
|
||||
const gitlabHosts = new Set(['gitlab.com', ...normalizeHostList(hosts.gitlab)]);
|
||||
const giteaHosts = new Set(normalizeHostList(hosts.gitea));
|
||||
|
||||
for (const host of remoteHosts) {
|
||||
if (githubHosts.has(host)) {
|
||||
return 'github';
|
||||
}
|
||||
}
|
||||
const gitlabHostsSet = new Set([
|
||||
'gitlab.com',
|
||||
...gitlabHosts.map(normalizeGitLabHost).filter((host): host is string => Boolean(host)),
|
||||
]);
|
||||
for (const host of hosts) {
|
||||
if (gitlabHostsSet.has(host)) {
|
||||
for (const host of remoteHosts) {
|
||||
if (gitlabHosts.has(host)) {
|
||||
return 'gitlab';
|
||||
}
|
||||
}
|
||||
for (const host of remoteHosts) {
|
||||
if (giteaHosts.has(host)) {
|
||||
return 'gitea';
|
||||
}
|
||||
}
|
||||
return 'other';
|
||||
};
|
||||
|
||||
const RESOLVE_CACHE_TTL_MS = 60_000;
|
||||
const resolveCache = new Map<string, { at: number; provider: GitProvider | null }>();
|
||||
|
||||
export const resolveGitProvider = async (directory: string, gitlabHosts: string[]): Promise<GitProvider | null> => {
|
||||
export const resolveGitProvider = async (directory: string, hosts: GitProviderHosts): Promise<GitProvider | null> => {
|
||||
const cached = resolveCache.get(directory);
|
||||
if (cached && Date.now() - cached.at < RESOLVE_CACHE_TTL_MS) {
|
||||
return cached.provider;
|
||||
@@ -81,7 +106,7 @@ export const resolveGitProvider = async (directory: string, gitlabHosts: string[
|
||||
let provider: GitProvider | null = null;
|
||||
try {
|
||||
const remotes = await getRemotes(directory);
|
||||
provider = detectGitProvider(remotes.map((remote) => remote.fetchUrl), gitlabHosts);
|
||||
provider = detectGitProvider(remotes.map((remote) => remote.fetchUrl), hosts);
|
||||
} catch {
|
||||
provider = null;
|
||||
}
|
||||
@@ -90,17 +115,23 @@ export const resolveGitProvider = async (directory: string, gitlabHosts: string[
|
||||
};
|
||||
|
||||
/**
|
||||
* Resolve the git provider (github | gitlab | other) of a working directory.
|
||||
* Self-hosted GitLab instances are recognized through the connected GitLab
|
||||
* accounts' base URLs, so the classification stays null/'other' (never
|
||||
* 'github') when no account is known yet — GitHub UI must not leak into a
|
||||
* GitLab repo regardless of auth state.
|
||||
* Resolve the git provider (github | gitlab | gitea | other) of a working
|
||||
* directory. Self-hosted instances are recognized through the connected
|
||||
* accounts' base URLs and the user-configured custom domains, so the
|
||||
* classification stays null/'other' (never 'github') when no host is known —
|
||||
* GitHub UI must not leak into a non-GitHub repo regardless of auth state.
|
||||
*/
|
||||
export const useGitProvider = (directory: string | null | undefined): GitProvider | null => {
|
||||
const gitlabAccounts = useGitLabAuthStore((state) => state.status?.accounts);
|
||||
const gitlabHosts = useMemo(
|
||||
() => (gitlabAccounts ?? []).map((account) => account.baseUrl),
|
||||
[gitlabAccounts],
|
||||
const giteaAccounts = useGiteaAuthStore((state) => state.status?.accounts);
|
||||
const domains = useGitProviderDomainsStore((state) => state.domains);
|
||||
const hosts = useMemo<GitProviderHosts>(
|
||||
() => ({
|
||||
github: domains.github,
|
||||
gitlab: [...(gitlabAccounts ?? []).map((account) => account.baseUrl), ...domains.gitlab],
|
||||
gitea: [...(giteaAccounts ?? []).map((account) => account.baseUrl), ...domains.gitea],
|
||||
}),
|
||||
[domains, gitlabAccounts, giteaAccounts],
|
||||
);
|
||||
const [provider, setProvider] = useState<GitProvider | null>(null);
|
||||
|
||||
@@ -110,7 +141,7 @@ export const useGitProvider = (directory: string | null | undefined): GitProvide
|
||||
return;
|
||||
}
|
||||
let cancelled = false;
|
||||
void resolveGitProvider(directory, gitlabHosts).then((resolved) => {
|
||||
void resolveGitProvider(directory, hosts).then((resolved) => {
|
||||
if (!cancelled) {
|
||||
setProvider(resolved);
|
||||
}
|
||||
@@ -118,7 +149,7 @@ export const useGitProvider = (directory: string | null | undefined): GitProvide
|
||||
return () => {
|
||||
cancelled = true;
|
||||
};
|
||||
}, [directory, gitlabHosts]);
|
||||
}, [directory, hosts]);
|
||||
|
||||
return provider;
|
||||
};
|
||||
|
||||
@@ -0,0 +1,120 @@
|
||||
import { afterEach, beforeEach, describe, expect, mock, test } from 'bun:test';
|
||||
import type { GiteaPullRequestSummary } from '@/lib/api/types';
|
||||
|
||||
const prsListCalls: Array<{ directory: string; options?: { sourceBranch?: string } }> = [];
|
||||
let prsListResult: GiteaPullRequestSummary[] = [];
|
||||
let prsListFailure: Error | null = null;
|
||||
let registryHasGitea = true;
|
||||
|
||||
mock.module('@/contexts/runtimeAPIRegistry', () => ({
|
||||
getRegisteredRuntimeAPIs: () => {
|
||||
if (!registryHasGitea) return null;
|
||||
return {
|
||||
gitea: {
|
||||
prsList: (directory: string, options?: { sourceBranch?: string }) => {
|
||||
prsListCalls.push({ directory, options });
|
||||
if (prsListFailure) {
|
||||
return Promise.reject(prsListFailure);
|
||||
}
|
||||
const all = prsListResult;
|
||||
const filtered = options?.sourceBranch
|
||||
? all.filter((item) => item.sourceBranch === options.sourceBranch)
|
||||
: all;
|
||||
return Promise.resolve({ prs: filtered });
|
||||
},
|
||||
},
|
||||
};
|
||||
},
|
||||
}));
|
||||
|
||||
const { resolveGiteaPrForBranch } = await import('./giteaPrStatus');
|
||||
|
||||
const pr = (number: number, state: 'open' | 'closed' | 'merged', sourceBranch: string): GiteaPullRequestSummary => ({
|
||||
number,
|
||||
title: `PR ${number}`,
|
||||
url: `https://gitea.example/${number}`,
|
||||
state,
|
||||
draft: false,
|
||||
author: { id: 1, username: 'user' },
|
||||
labels: [],
|
||||
sourceBranch,
|
||||
targetBranch: 'main',
|
||||
});
|
||||
|
||||
describe('resolveGiteaPrForBranch', () => {
|
||||
beforeEach(() => {
|
||||
prsListCalls.length = 0;
|
||||
prsListResult = [];
|
||||
prsListFailure = null;
|
||||
registryHasGitea = true;
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
prsListCalls.length = 0;
|
||||
prsListResult = [];
|
||||
prsListFailure = null;
|
||||
registryHasGitea = true;
|
||||
});
|
||||
|
||||
test('prefers the open PR over a merged one for the branch', async () => {
|
||||
prsListResult = [pr(3, 'merged', 'feat/a'), pr(7, 'open', 'feat/a')];
|
||||
|
||||
const result = await resolveGiteaPrForBranch('/repo', 'feat/a');
|
||||
|
||||
expect(result?.number).toBe(7);
|
||||
expect(prsListCalls).toEqual([
|
||||
{ directory: '/repo', options: { sourceBranch: 'feat/a' } },
|
||||
]);
|
||||
});
|
||||
|
||||
test('falls back to a merged PR when no open one exists', async () => {
|
||||
prsListResult = [pr(5, 'merged', 'feat/b'), pr(9, 'closed', 'feat/b')];
|
||||
|
||||
const result = await resolveGiteaPrForBranch('/repo', 'feat/b');
|
||||
|
||||
expect(result?.number).toBe(5);
|
||||
});
|
||||
|
||||
test('returns null when no PR matches the branch', async () => {
|
||||
prsListResult = [pr(5, 'merged', 'feat/a')];
|
||||
|
||||
const result = await resolveGiteaPrForBranch('/repo', 'feat/c');
|
||||
|
||||
expect(result).toBeNull();
|
||||
expect(prsListCalls).toHaveLength(1);
|
||||
});
|
||||
|
||||
test('returns null without calling the API when the runtime has no Gitea client', async () => {
|
||||
registryHasGitea = false;
|
||||
|
||||
const result = await resolveGiteaPrForBranch('/repo', 'feat/a');
|
||||
|
||||
expect(result).toBeNull();
|
||||
expect(prsListCalls).toHaveLength(0);
|
||||
});
|
||||
|
||||
test('returns null and caches when the request fails', async () => {
|
||||
prsListFailure = new Error('boom');
|
||||
|
||||
const first = await resolveGiteaPrForBranch('/repo', 'fail-branch');
|
||||
expect(first).toBeNull();
|
||||
|
||||
prsListFailure = null;
|
||||
prsListResult = [pr(1, 'open', 'fail-branch')];
|
||||
// Same directory+branch within TTL must not re-request.
|
||||
const second = await resolveGiteaPrForBranch('/repo', 'fail-branch');
|
||||
expect(second).toBeNull();
|
||||
expect(prsListCalls).toHaveLength(1);
|
||||
});
|
||||
|
||||
test('serves the second call from cache within the TTL window', async () => {
|
||||
prsListResult = [pr(7, 'open', 'cache-branch')];
|
||||
|
||||
const first = await resolveGiteaPrForBranch('/repo', 'cache-branch');
|
||||
const second = await resolveGiteaPrForBranch('/repo', 'cache-branch');
|
||||
|
||||
expect(first?.number).toBe(7);
|
||||
expect(second?.number).toBe(7);
|
||||
expect(prsListCalls).toHaveLength(1);
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,110 @@
|
||||
import { useState, useEffect } from 'react';
|
||||
import { getRegisteredRuntimeAPIs } from '@/contexts/runtimeAPIRegistry';
|
||||
import type { GiteaPullRequestSummary } from '@/lib/api/types';
|
||||
|
||||
// Branch PR lookups are cheap to re-request but visible to the user on every
|
||||
// mount of the surfaces that display them (walkthrough header, git view, work
|
||||
// status). A shared TTL cache keeps those surfaces consistent with each other
|
||||
// and stops repeated Gitea calls while a branch is in view.
|
||||
const CACHE_TTL_MS = 90_000;
|
||||
const prCache = new Map<string, { at: number; pr: GiteaPullRequestSummary | null }>();
|
||||
|
||||
const cacheKeyFor = (directory: string, branch: string): string => `${directory}\n${branch}`;
|
||||
|
||||
const readCachedPr = (directory: string, branch: string): GiteaPullRequestSummary | null | undefined => {
|
||||
const entry = prCache.get(cacheKeyFor(directory, branch));
|
||||
return entry?.pr;
|
||||
};
|
||||
|
||||
/**
|
||||
* Resolve the pull request targeting `branch` in `directory`, preferring the
|
||||
* open request and falling back to a merged one so a just-merged branch still
|
||||
* surfaces its request instead of nothing.
|
||||
*
|
||||
* Returns null when the runtime has no Gitea API, the request fails, or no PR
|
||||
* matches — callers only use the result to show or hide an additive chip, so a
|
||||
* null answer simply means "nothing to show". Results are cached per
|
||||
* directory+branch for CACHE_TTL_MS, including the null case.
|
||||
*/
|
||||
export const resolveGiteaPrForBranch = async (
|
||||
directory: string,
|
||||
branch: string,
|
||||
): Promise<GiteaPullRequestSummary | null> => {
|
||||
const gitea = getRegisteredRuntimeAPIs()?.gitea;
|
||||
if (!gitea?.prsList || !directory || !branch) {
|
||||
return null;
|
||||
}
|
||||
|
||||
const key = cacheKeyFor(directory, branch);
|
||||
const cached = prCache.get(key);
|
||||
if (cached && Date.now() - cached.at < CACHE_TTL_MS) {
|
||||
return cached.pr;
|
||||
}
|
||||
|
||||
let pr: GiteaPullRequestSummary | null = null;
|
||||
try {
|
||||
const result = await gitea.prsList(directory, { sourceBranch: branch });
|
||||
const candidates = result.prs ?? [];
|
||||
pr = candidates.find((item) => item.state === 'open')
|
||||
?? candidates.find((item) => item.state === 'merged')
|
||||
?? null;
|
||||
} catch {
|
||||
pr = null;
|
||||
}
|
||||
|
||||
prCache.set(key, { at: Date.now(), pr });
|
||||
return pr;
|
||||
};
|
||||
|
||||
/**
|
||||
* Subscribe to the branch's pull request. Reads the TTL cache synchronously
|
||||
* for the initial render so an already-resolved PR never flashes away while a
|
||||
* refresh runs; a cache miss shows a loading state instead of a stale result
|
||||
* from another branch.
|
||||
*/
|
||||
export const useGiteaPrForBranch = (
|
||||
directory: string | null | undefined,
|
||||
branch: string | null | undefined,
|
||||
): { pr: GiteaPullRequestSummary | null; isLoading: boolean } => {
|
||||
const [pr, setPr] = useState<GiteaPullRequestSummary | null>(() =>
|
||||
directory && branch ? (readCachedPr(directory, branch) ?? null) : null
|
||||
);
|
||||
const [isLoading, setIsLoading] = useState(false);
|
||||
|
||||
useEffect(() => {
|
||||
if (!directory || !branch) {
|
||||
setPr(null);
|
||||
setIsLoading(false);
|
||||
return;
|
||||
}
|
||||
|
||||
let mounted = true;
|
||||
const cached = readCachedPr(directory, branch);
|
||||
const cacheEntry = prCache.get(cacheKeyFor(directory, branch));
|
||||
const fresh = cacheEntry !== undefined && Date.now() - cacheEntry.at < CACHE_TTL_MS;
|
||||
|
||||
if (fresh) {
|
||||
setPr(cached ?? null);
|
||||
setIsLoading(false);
|
||||
return;
|
||||
}
|
||||
|
||||
// A stale entry stays on screen while it refreshes; a missing one shows
|
||||
// the loading state rather than a result from a previous branch.
|
||||
setPr(cached ?? null);
|
||||
setIsLoading(true);
|
||||
|
||||
void resolveGiteaPrForBranch(directory, branch).then((resolved) => {
|
||||
if (mounted) {
|
||||
setPr(resolved);
|
||||
setIsLoading(false);
|
||||
}
|
||||
});
|
||||
|
||||
return () => {
|
||||
mounted = false;
|
||||
};
|
||||
}, [directory, branch]);
|
||||
|
||||
return { pr, isLoading };
|
||||
};
|
||||
@@ -243,6 +243,7 @@ export const settingsDict = {
|
||||
'settings.magicPrompts.sidebar.group.git': 'Git',
|
||||
'settings.magicPrompts.sidebar.group.github': 'GitHub',
|
||||
'settings.magicPrompts.sidebar.group.gitlab': 'GitLab',
|
||||
'settings.magicPrompts.sidebar.group.gitea': 'Gitea',
|
||||
'settings.magicPrompts.sidebar.group.planning': 'Planung',
|
||||
'settings.magicPrompts.sidebar.group.session': 'Sitzung',
|
||||
'settings.magicPrompts.sidebar.item.gitCommitGenerate': 'Commit-Generierung',
|
||||
@@ -256,6 +257,8 @@ export const settingsDict = {
|
||||
'settings.magicPrompts.sidebar.item.githubSinglePrCommentReview': 'Einzelner PR-Kommentar-Review',
|
||||
'settings.magicPrompts.sidebar.item.gitlabPrReview': 'MR-Review',
|
||||
'settings.magicPrompts.sidebar.item.gitlabIssueReview': 'Issue-Review',
|
||||
'settings.magicPrompts.sidebar.item.giteaPrReview': 'PR-Review',
|
||||
'settings.magicPrompts.sidebar.item.giteaIssueReview': 'Issue-Review',
|
||||
'settings.magicPrompts.sidebar.item.planTodo': 'Aufgabenplanung',
|
||||
'settings.magicPrompts.sidebar.item.planImprove': 'Plan verbessern',
|
||||
'settings.magicPrompts.sidebar.item.planImplement': 'Plan umsetzen',
|
||||
@@ -1632,6 +1635,9 @@ export const settingsDict = {
|
||||
'settings.github.page.toast.ghCliEnabled': 'gh CLI Fallback aktiviert',
|
||||
'settings.github.page.toast.ghCliDisabled': 'gh CLI Fallback deaktiviert',
|
||||
'settings.github.page.toast.ghCliUpdateFailed': 'Fehler beim Aktualisieren der gh CLI Einstellung',
|
||||
'settings.github.page.customDomains.label': 'Benutzerdefinierte Domains',
|
||||
'settings.github.page.customDomains.description': 'Repositories auf diesen Domains werden als GitHub behandelt.',
|
||||
'settings.github.page.customDomains.placeholder': 'github.example.com, git.mycompany.com',
|
||||
'settings.gitlab.page.title': 'GitLab Personal Access Token',
|
||||
'settings.gitlab.page.description': 'Fügen Sie ein GitLab Personal Access Token ein, um eine Verbindung herzustellen. Legen Sie die Basis-URL fest, wenn Sie eine selbst gehostete GitLab-Instanz verwenden.',
|
||||
'settings.gitlab.page.tooltip.connectAccount': 'Verbinden Sie ein GitLab-Konto für Issue- und Merge-Request-Workflows in der App.',
|
||||
@@ -1639,6 +1645,9 @@ export const settingsDict = {
|
||||
'settings.gitlab.page.accessToken.placeholder': 'Fügen Sie Ihr GitLab Personal Access Token ein',
|
||||
'settings.gitlab.page.baseUrl.label': 'Basis-URL (optional)',
|
||||
'settings.gitlab.page.baseUrl.placeholder': 'https://gitlab.com',
|
||||
'settings.gitlab.page.customDomains.label': 'Benutzerdefinierte Domains',
|
||||
'settings.gitlab.page.customDomains.description': 'Repositories auf diesen Domains werden als GitLab behandelt.',
|
||||
'settings.gitlab.page.customDomains.placeholder': 'gitlab.example.com, git.company.com',
|
||||
'settings.gitlab.page.actions.connect': 'GitLab verbinden',
|
||||
'settings.gitlab.page.actions.disconnect': 'Trennen',
|
||||
'settings.gitlab.page.actions.switch': 'Wechseln zu',
|
||||
@@ -1655,6 +1664,32 @@ export const settingsDict = {
|
||||
'settings.gitlab.page.toast.disconnectFailed': 'Trennen von GitLab fehlgeschlagen',
|
||||
'settings.gitlab.page.toast.accountSwitched': 'GitLab-Konto gewechselt',
|
||||
'settings.gitlab.page.toast.accountSwitchFailed': 'Wechsel des GitLab-Kontos fehlgeschlagen',
|
||||
'settings.gitea.page.title': 'Gitea / Forgejo Personal Access Token',
|
||||
'settings.gitea.page.description': 'Fügen Sie ein Gitea- oder Forgejo-Personal-Access-Token ein, um eine Verbindung herzustellen. Legen Sie die Basis-URL fest, wenn Sie eine selbst gehostete Gitea- oder Forgejo-Instanz verwenden.',
|
||||
'settings.gitea.page.tooltip.connectAccount': 'Verbinden Sie ein Gitea- oder Forgejo-Konto für Issue- und Pull-Request-Workflows in der App.',
|
||||
'settings.gitea.page.accessToken.label': 'Personal Access Token',
|
||||
'settings.gitea.page.accessToken.placeholder': 'Fügen Sie Ihr Gitea Personal Access Token ein',
|
||||
'settings.gitea.page.baseUrl.label': 'Basis-URL (optional)',
|
||||
'settings.gitea.page.baseUrl.placeholder': 'https://gitea.example.com',
|
||||
'settings.gitea.page.actions.connect': 'Gitea verbinden',
|
||||
'settings.gitea.page.actions.disconnect': 'Trennen',
|
||||
'settings.gitea.page.actions.switch': 'Wechseln zu',
|
||||
'settings.gitea.page.status.notConnected': 'Nicht verbunden',
|
||||
'settings.gitea.page.label.unknownUser': 'unbekannt',
|
||||
'settings.gitea.page.label.otherAccounts': 'Andere Konten',
|
||||
'settings.gitea.page.avatarAlt.withLogin': 'Avatar von {login}',
|
||||
'settings.gitea.page.avatarAlt.fallback': 'Gitea-Avatar',
|
||||
'settings.gitea.page.connectedAs': 'Verbunden als',
|
||||
'settings.gitea.page.errors.invalidToken': 'Geben Sie ein gültiges Gitea Personal Access Token ein',
|
||||
'settings.gitea.page.errors.failed': 'Verbindung zu Gitea fehlgeschlagen',
|
||||
'settings.gitea.page.toast.connected': 'Gitea verbunden',
|
||||
'settings.gitea.page.toast.disconnected': 'Gitea getrennt',
|
||||
'settings.gitea.page.toast.disconnectFailed': 'Trennen von Gitea fehlgeschlagen',
|
||||
'settings.gitea.page.toast.accountSwitched': 'Gitea-Konto gewechselt',
|
||||
'settings.gitea.page.toast.accountSwitchFailed': 'Wechsel des Gitea-Kontos fehlgeschlagen',
|
||||
'settings.gitea.page.customDomains.label': 'Benutzerdefinierte Domains',
|
||||
'settings.gitea.page.customDomains.description': 'Repositories auf diesen Domains werden als Gitea oder Forgejo behandelt.',
|
||||
'settings.gitea.page.customDomains.placeholder': 'gitea.example.com, git.company.com',
|
||||
'settings.notifications.page.delivery.title': 'Benachrichtigungsübermittlung',
|
||||
'settings.notifications.page.delivery.enableAria': 'Benachrichtigungen aktivieren',
|
||||
'settings.notifications.page.delivery.enableLabel': 'Benachrichtigungen aktivieren',
|
||||
@@ -2019,6 +2054,10 @@ export const settingsDict = {
|
||||
'settings.magicPrompts.page.group.gitlabPrReview.description': 'Eingabeaufforderungen für den GitLab-MR-Überprüfungsprozess: Sichtbare Benutzernachricht + versteckte Anweisungspayload.',
|
||||
'settings.magicPrompts.page.group.gitlabIssueReview.title': 'Problem-Überprüfung',
|
||||
'settings.magicPrompts.page.group.gitlabIssueReview.description': 'Eingabeaufforderungen für den GitLab-Problem-Überprüfungsprozess: Sichtbare Benutzernachricht + versteckte Anweisungspayload.',
|
||||
'settings.magicPrompts.page.group.giteaPrReview.title': 'PR-Review',
|
||||
'settings.magicPrompts.page.group.giteaPrReview.description': 'Eingabeaufforderungen für den Gitea-PR-Überprüfungsprozess: Sichtbare Benutzernachricht + versteckte Anweisungspayload.',
|
||||
'settings.magicPrompts.page.group.giteaIssueReview.title': 'Issue-Review',
|
||||
'settings.magicPrompts.page.group.giteaIssueReview.description': 'Eingabeaufforderungen für den Gitea-Problem-Überprüfungsprozess: Sichtbare Benutzernachricht + versteckte Anweisungspayload.',
|
||||
'settings.magicPrompts.page.group.gitConflictResolve.title': 'Merge/Rebase Konfliktlösung',
|
||||
'settings.magicPrompts.page.group.gitConflictResolve.description': 'Eingabeaufforderungen beim Auflösen von Merge-/Rebase-Konflikten mit KI.',
|
||||
'settings.magicPrompts.page.group.gitCherrypickConflictResolve.title': 'Cherry-pick-Konfliktlösung',
|
||||
|
||||
@@ -1725,6 +1725,39 @@ export const dict = {
|
||||
'session.gitlabIssuePicker.actions.createInWorktree': 'In Worktree erstellen',
|
||||
'session.gitlabIssuePicker.actions.openRepo': 'Repository öffnen',
|
||||
'session.gitlabIssuePicker.actions.refresh': 'Aktualisieren',
|
||||
'session.giteaIssuePicker.error.noActiveProject': 'Kein aktives Projekt',
|
||||
'session.giteaIssuePicker.error.runtimeUnavailable': 'Gitea-Laufzeit-API nicht verfügbar',
|
||||
'session.giteaIssuePicker.error.notConnected': 'Gitea nicht verbunden',
|
||||
'session.giteaIssuePicker.error.repoNotResolvable': 'Repository kann nicht aufgelöst werden',
|
||||
'session.giteaIssuePicker.error.repoMustBeGitea': 'Das origin-Remote muss eine Gitea-URL sein',
|
||||
'session.giteaIssuePicker.error.issueNotFound': 'Problem nicht gefunden',
|
||||
'session.giteaIssuePicker.error.noModelSelected': 'Kein Modell ausgewählt',
|
||||
'session.giteaIssuePicker.toast.loadMoreFailed': 'Fehler beim Laden weiterer Probleme',
|
||||
'session.giteaIssuePicker.toast.loadIssueDetailsFailed': 'Fehler beim Laden der Problemdetails',
|
||||
'session.giteaIssuePicker.toast.sendContextFailed': 'Fehler beim Senden des Problem-Kontexts',
|
||||
'session.giteaIssuePicker.toast.sessionCreated': 'Sitzung aus Problem erstellt',
|
||||
'session.giteaIssuePicker.toast.startSessionFailed': 'Fehler beim Starten der Sitzung',
|
||||
'session.giteaIssuePicker.title.select': 'Gitea-Problem verknüpfen',
|
||||
'session.giteaIssuePicker.title.createSession': 'Neue Sitzung aus Gitea-Problem',
|
||||
'session.giteaIssuePicker.description.select': 'Wählen Sie ein Problem, um es mit dieser Sitzung zu verknüpfen.',
|
||||
'session.giteaIssuePicker.description.createSession': 'Erstellt eine neue Sitzung mit verstecktem Problem-Kontext (Titel/Inhalt/Labels/Kommentare).',
|
||||
'session.giteaIssuePicker.searchPlaceholder': 'Suche nach Titel oder fügen Sie eine Problem-URL ein',
|
||||
'session.giteaIssuePicker.empty.noActiveProject': 'Kein aktives Projekt ausgewählt.',
|
||||
'session.giteaIssuePicker.empty.runtimeUnavailable': 'Gitea-Laufzeit-API nicht verfügbar.',
|
||||
'session.giteaIssuePicker.empty.notConnected': 'Gitea nicht verbunden. Verbinden Sie Ihr Gitea-Konto in den Einstellungen.',
|
||||
'session.giteaIssuePicker.empty.noIssuesFound': 'Keine Probleme gefunden',
|
||||
'session.giteaIssuePicker.empty.noOpenIssuesFound': 'Keine offenen Probleme gefunden',
|
||||
'session.giteaIssuePicker.loading.issues': 'Probleme werden geladen...',
|
||||
'session.giteaIssuePicker.loading.more': 'Wird geladen...',
|
||||
'session.giteaIssuePicker.actions.openSettings': 'Einstellungen öffnen',
|
||||
'session.giteaIssuePicker.actions.useIssue': 'Problem #{number} verwenden',
|
||||
'session.giteaIssuePicker.actions.openInGiteaAria': 'In Gitea öffnen',
|
||||
'session.giteaIssuePicker.actions.loadMore': 'Mehr laden',
|
||||
'session.giteaIssuePicker.actions.sectionTitle': 'Aktionen',
|
||||
'session.giteaIssuePicker.actions.toggleWorktreeAria': 'Worktree umschalten',
|
||||
'session.giteaIssuePicker.actions.createInWorktree': 'In Worktree erstellen',
|
||||
'session.giteaIssuePicker.actions.openRepo': 'Repository öffnen',
|
||||
'session.giteaIssuePicker.actions.refresh': 'Aktualisieren',
|
||||
'session.githubPrPicker.error.noActiveProject': 'Kein aktives Projekt',
|
||||
'session.githubPrPicker.error.runtimeUnavailable': 'GitHub-Laufzeit-API nicht verfügbar',
|
||||
'session.githubPrPicker.error.notConnected': 'GitHub nicht verbunden',
|
||||
@@ -1773,6 +1806,30 @@ export const dict = {
|
||||
'session.gitlabMrPicker.actions.useMergeRequest': 'Merge Request !{number} verwenden',
|
||||
'session.gitlabMrPicker.actions.openInGitLabAria': 'In GitLab öffnen',
|
||||
'session.gitlabMrPicker.actions.loadMore': 'Mehr laden',
|
||||
'session.giteaPrPicker.error.noActiveProject': 'Kein aktives Projekt',
|
||||
'session.giteaPrPicker.error.runtimeUnavailable': 'Gitea-Laufzeit-API nicht verfügbar',
|
||||
'session.giteaPrPicker.error.notConnected': 'Gitea nicht verbunden',
|
||||
'session.giteaPrPicker.error.prNotFound': 'Pull Request nicht gefunden',
|
||||
'session.giteaPrPicker.error.repoNotResolvable': 'Repository kann nicht aufgelöst werden',
|
||||
'session.giteaPrPicker.error.repoMustBeGitea': 'Das origin-Remote muss eine Gitea-URL sein',
|
||||
'session.giteaPrPicker.toast.loadMoreFailed': 'Fehler beim Laden weiterer Pull Requests',
|
||||
'session.giteaPrPicker.toast.loadDetailsFailed': 'Fehler beim Laden der Pull-Request-Details',
|
||||
'session.giteaPrPicker.title': 'Gitea-Pull Request verknüpfen',
|
||||
'session.giteaPrPicker.description': 'Wählen Sie einen Pull Request aus, um den Überprüfungs-Kontext zu dieser Nachricht hinzuzufügen.',
|
||||
'session.giteaPrPicker.searchPlaceholder': 'Suche nach Titel oder fügen Sie eine Pull-Request-URL ein',
|
||||
'session.giteaPrPicker.includeDiffAria': 'PR-Diff in angehängten Kontext einfügen',
|
||||
'session.giteaPrPicker.includeDiff': 'PR-Diff einfügen',
|
||||
'session.giteaPrPicker.empty.noActiveProject': 'Kein aktives Projekt ausgewählt.',
|
||||
'session.giteaPrPicker.empty.runtimeUnavailable': 'Gitea-Laufzeit-API nicht verfügbar.',
|
||||
'session.giteaPrPicker.empty.notConnected': 'Gitea nicht verbunden. Verbinden Sie Ihr Gitea-Konto in den Einstellungen.',
|
||||
'session.giteaPrPicker.empty.noPullRequestsFound': 'Keine Pull Requests gefunden',
|
||||
'session.giteaPrPicker.empty.noOpenPullRequestsFound': 'Keine offenen Pull Requests gefunden',
|
||||
'session.giteaPrPicker.loading.pullRequests': 'Pull Requests werden geladen...',
|
||||
'session.giteaPrPicker.loading.more': 'Wird geladen...',
|
||||
'session.giteaPrPicker.actions.openSettings': 'Einstellungen öffnen',
|
||||
'session.giteaPrPicker.actions.usePullRequest': 'Pull Request #{number} verwenden',
|
||||
'session.giteaPrPicker.actions.openInGiteaAria': 'In Gitea öffnen',
|
||||
'session.giteaPrPicker.actions.loadMore': 'Mehr laden',
|
||||
'session.newWorktree.title': 'Neuer Worktree',
|
||||
'session.newWorktree.mode.newBranch': 'Neue Branch',
|
||||
'session.newWorktree.mode.existingBranch': 'Vorhandener Branch',
|
||||
@@ -1870,6 +1927,29 @@ export const dict = {
|
||||
'session.gitlabIntegration.validation.branchAlreadyExists': 'Branch existiert bereits lokal',
|
||||
'session.gitlabIntegration.validation.failed': 'Validierung fehlgeschlagen',
|
||||
'session.gitlabIntegration.draftBadge': 'Entwurf',
|
||||
'session.giteaIntegration.title': 'Aus Gitea auswählen',
|
||||
'session.giteaIntegration.tabs.issues': 'Probleme',
|
||||
'session.giteaIntegration.tabs.pullRequests': 'Pull Requests',
|
||||
'session.giteaIntegration.connect.title': 'Mit Gitea verbinden',
|
||||
'session.giteaIntegration.connect.description': 'Verknüpfen Sie Probleme oder Pull Requests, um Worktree-Details automatisch auszufüllen',
|
||||
'session.giteaIntegration.connect.action': 'Gitea verbinden',
|
||||
'session.giteaIntegration.search.issuesPlaceholder': 'Gitea-Probleme durchsuchen',
|
||||
'session.giteaIntegration.search.prsPlaceholder': 'Gitea-Pull-Requests durchsuchen',
|
||||
'session.giteaIntegration.empty.noIssuesFound': 'Keine Probleme gefunden',
|
||||
'session.giteaIntegration.empty.noPullRequestsFound': 'Keine Pull Requests gefunden',
|
||||
'session.giteaIntegration.actions.loadMore': 'Mehr laden',
|
||||
'session.giteaIntegration.actions.cancel': 'Abbrechen',
|
||||
'session.giteaIntegration.actions.select': 'Auswählen',
|
||||
'session.giteaIntegration.selected.issueNumber': 'Problem #{number}',
|
||||
'session.giteaIntegration.selected.prNumber': 'PR #{number}',
|
||||
'session.giteaIntegration.includeDiffAria': 'PR-Diff in Sitzungskontext einbeziehen',
|
||||
'session.giteaIntegration.includeDiff': 'PR-Diff einbeziehen',
|
||||
'session.giteaIntegration.error.notConnected': 'Gitea nicht verbunden',
|
||||
'session.giteaIntegration.error.loadDataFailed': 'Fehler beim Laden der Daten',
|
||||
'session.giteaIntegration.validation.branchAlreadyCheckedOut': 'Branch ist bereits in einem Worktree ausgecheckt',
|
||||
'session.giteaIntegration.validation.branchAlreadyExists': 'Branch existiert bereits lokal',
|
||||
'session.giteaIntegration.validation.failed': 'Validierung fehlgeschlagen',
|
||||
'session.giteaIntegration.draftBadge': 'Entwurf',
|
||||
'chat.fileAttachment.toast.attachFailed': 'Fehler beim Anhängen der Datei',
|
||||
'chat.fileAttachment.toast.someFilesSkipped': 'Einige Dateien wurden übersprungen:\n{summary}',
|
||||
'chat.fileAttachment.toast.vscodePickFailed': 'Fehler beim Auswählen von Dateien in VS Code',
|
||||
@@ -2078,6 +2158,8 @@ export const dict = {
|
||||
'chat.chatInput.actions.linkGithubPr': 'GitHub-PR verknüpfen',
|
||||
'chat.chatInput.actions.linkGitlabIssue': 'GitLab-Issue verknüpfen',
|
||||
'chat.chatInput.actions.linkGitlabMr': 'GitLab-MR verknüpfen',
|
||||
'chat.chatInput.actions.linkGiteaIssue': 'Gitea-Issue verknüpfen',
|
||||
'chat.chatInput.actions.linkGiteaPr': 'Gitea-PR verknüpfen',
|
||||
'chat.chatInput.actions.modelAgentSettings': 'Modell- und Agenteneinstellungen',
|
||||
'chat.chatInput.actions.sendMessageAria': 'Nachricht senden',
|
||||
'chat.chatInput.actions.queueMessageAria': 'Nachricht in die Warteschlange stellen',
|
||||
@@ -3040,6 +3122,54 @@ export const dict = {
|
||||
'contextPanel.gitlabMr.mergeMr.merging': 'Wird zusammengeführt...',
|
||||
'contextPanel.gitlabMr.mergeMr.toast.merged': 'Merge-Request zusammengeführt',
|
||||
'contextPanel.gitlabMr.mergeMr.toast.mergeFailed': 'Merge-Request konnte nicht zusammengeführt werden',
|
||||
'contextPanel.giteaPr.title': 'Pull-Requests',
|
||||
'contextPanel.giteaPr.tabs.pullRequests': 'Pull-Requests',
|
||||
'contextPanel.giteaPr.tabs.issues': 'Probleme',
|
||||
'contextPanel.giteaPr.branchSectionTitle': 'Aktueller Zweig',
|
||||
'contextPanel.giteaPr.openPrTitle': 'Offene Pull-Requests',
|
||||
'contextPanel.giteaPr.listSectionTitle': 'In diesem Repository',
|
||||
'contextPanel.giteaPr.openPrEmpty': 'Keine offenen Pull-Requests',
|
||||
'contextPanel.giteaPr.noPrForBranch': 'Keine Pull-Request für diesen Zweig',
|
||||
'contextPanel.giteaPr.loadContext': 'Kontext laden',
|
||||
'contextPanel.giteaPr.hideContext': 'Kontext ausblenden',
|
||||
'contextPanel.giteaPr.openInGitea': 'In Gitea öffnen',
|
||||
'contextPanel.giteaPr.draft': 'Entwurf',
|
||||
'contextPanel.giteaPr.state.opened': 'Offen',
|
||||
'contextPanel.giteaPr.state.merged': 'Zusammengeführt',
|
||||
'contextPanel.giteaPr.state.closed': 'Geschlossen',
|
||||
'contextPanel.giteaPr.loadMore': 'Mehr laden',
|
||||
'contextPanel.giteaPr.loading': 'Laden...',
|
||||
'contextPanel.giteaPr.error.loadFailed': 'Pull-Requests konnten nicht geladen werden',
|
||||
'contextPanel.giteaPr.error.notConnected': 'Gitea ist nicht verbunden',
|
||||
'contextPanel.giteaPr.empty.noActiveProject': 'Kein aktives Projekt',
|
||||
'contextPanel.giteaPr.actions.openSettings': 'Einstellungen öffnen',
|
||||
'contextPanel.giteaPr.issues.detail.back': 'Zurück zu den Problemen',
|
||||
'contextPanel.giteaPr.issues.detail.commentsEmpty': 'Keine Kommentare',
|
||||
'contextPanel.giteaPr.issues.empty': 'Keine offenen Probleme',
|
||||
'contextPanel.giteaPr.issues.error.loadFailed': 'Fehler beim Laden der Probleme',
|
||||
'contextPanel.giteaPr.issues.listSectionTitle': 'Offene Probleme',
|
||||
'contextPanel.giteaPr.createPr.title': 'Neuer Pull-Request',
|
||||
'contextPanel.giteaPr.createPr.sourceBranch': 'Quellbranch',
|
||||
'contextPanel.giteaPr.createPr.targetBranch': 'Zielbranch',
|
||||
'contextPanel.giteaPr.createPr.titleLabel': 'Titel',
|
||||
'contextPanel.giteaPr.createPr.titlePlaceholder': 'Titel des Pull-Requests',
|
||||
'contextPanel.giteaPr.createPr.descriptionLabel': 'Beschreibung',
|
||||
'contextPanel.giteaPr.createPr.removeSourceBranch': 'Quellbranch nach dem Zusammenführen löschen',
|
||||
'contextPanel.giteaPr.createPr.submit': 'Pull-Request erstellen',
|
||||
'contextPanel.giteaPr.createPr.submitting': 'Wird erstellt...',
|
||||
'contextPanel.giteaPr.createPr.branchesLoading': 'Branches werden geladen...',
|
||||
'contextPanel.giteaPr.createPr.toast.created': 'Pull-Request erstellt',
|
||||
'contextPanel.giteaPr.createPr.toast.createFailed': 'Pull-Request konnte nicht erstellt werden',
|
||||
'contextPanel.giteaPr.updatePr.toggle': 'Titel und Beschreibung bearbeiten',
|
||||
'contextPanel.giteaPr.updatePr.save': 'Speichern',
|
||||
'contextPanel.giteaPr.updatePr.saving': 'Wird gespeichert...',
|
||||
'contextPanel.giteaPr.updatePr.toast.updated': 'Pull-Request aktualisiert',
|
||||
'contextPanel.giteaPr.updatePr.toast.updateFailed': 'Pull-Request konnte nicht aktualisiert werden',
|
||||
'contextPanel.giteaPr.mergePr.action': 'Zusammenführen',
|
||||
'contextPanel.giteaPr.mergePr.squash': 'Commits squashen',
|
||||
'contextPanel.giteaPr.mergePr.merging': 'Wird zusammengeführt...',
|
||||
'contextPanel.giteaPr.mergePr.toast.merged': 'Pull-Request zusammengeführt',
|
||||
'contextPanel.giteaPr.mergePr.toast.mergeFailed': 'Pull-Request konnte nicht zusammengeführt werden',
|
||||
'contextRail.surface.editor.description': 'Bearbeitungskontext',
|
||||
'contextRail.surface.git.description': 'Git-Kontext',
|
||||
'contextRail.surface.git.changesCountAriaSingle': '{label}, {count} geänderte Datei',
|
||||
|
||||
@@ -259,6 +259,7 @@ export const settingsDict = {
|
||||
'settings.magicPrompts.sidebar.group.git': 'Git',
|
||||
'settings.magicPrompts.sidebar.group.github': 'GitHub',
|
||||
'settings.magicPrompts.sidebar.group.gitlab': 'GitLab',
|
||||
'settings.magicPrompts.sidebar.group.gitea': 'Gitea',
|
||||
'settings.magicPrompts.sidebar.group.planning': 'Planning',
|
||||
'settings.magicPrompts.sidebar.group.session': 'Session',
|
||||
'settings.magicPrompts.sidebar.item.gitCommitGenerate': 'Commit Generation',
|
||||
@@ -272,6 +273,8 @@ export const settingsDict = {
|
||||
'settings.magicPrompts.sidebar.item.githubSinglePrCommentReview': 'Single PR Comment Review',
|
||||
'settings.magicPrompts.sidebar.item.gitlabPrReview': 'MR Review',
|
||||
'settings.magicPrompts.sidebar.item.gitlabIssueReview': 'Issue Review',
|
||||
'settings.magicPrompts.sidebar.item.giteaPrReview': 'PR Review',
|
||||
'settings.magicPrompts.sidebar.item.giteaIssueReview': 'Issue Review',
|
||||
'settings.magicPrompts.sidebar.item.planTodo': 'Todo Planning',
|
||||
'settings.magicPrompts.sidebar.item.planImprove': 'Improve Plan',
|
||||
'settings.magicPrompts.sidebar.item.planImplement': 'Implement Plan',
|
||||
@@ -1698,6 +1701,9 @@ export const settingsDict = {
|
||||
'settings.github.page.toast.ghCliEnabled': 'gh CLI fallback enabled',
|
||||
'settings.github.page.toast.ghCliDisabled': 'gh CLI fallback disabled',
|
||||
'settings.github.page.toast.ghCliUpdateFailed': 'Failed to update gh CLI setting',
|
||||
'settings.github.page.customDomains.label': 'Custom domains',
|
||||
'settings.github.page.customDomains.description': 'Repos hosted on these domains are treated as GitHub.',
|
||||
'settings.github.page.customDomains.placeholder': 'github.example.com, git.mycompany.com',
|
||||
'settings.gitlab.page.title': 'GitLab Personal Access Token',
|
||||
'settings.gitlab.page.description': 'Paste a GitLab personal access token to connect. Set the base URL when using a self-hosted GitLab instance.',
|
||||
'settings.gitlab.page.tooltip.connectAccount': 'Connect a GitLab account for in-app issue and merge request workflows.',
|
||||
@@ -1705,6 +1711,9 @@ export const settingsDict = {
|
||||
'settings.gitlab.page.accessToken.placeholder': 'Paste your GitLab personal access token',
|
||||
'settings.gitlab.page.baseUrl.label': 'Base URL (optional)',
|
||||
'settings.gitlab.page.baseUrl.placeholder': 'https://gitlab.com',
|
||||
'settings.gitlab.page.customDomains.label': 'Custom domains',
|
||||
'settings.gitlab.page.customDomains.description': 'Repos hosted on these domains are treated as GitLab.',
|
||||
'settings.gitlab.page.customDomains.placeholder': 'gitlab.example.com, git.company.com',
|
||||
'settings.gitlab.page.actions.connect': 'Connect GitLab',
|
||||
'settings.gitlab.page.actions.disconnect': 'Disconnect',
|
||||
'settings.gitlab.page.actions.switch': 'Switch to',
|
||||
@@ -1721,6 +1730,32 @@ export const settingsDict = {
|
||||
'settings.gitlab.page.toast.disconnectFailed': 'Failed to disconnect GitLab',
|
||||
'settings.gitlab.page.toast.accountSwitched': 'GitLab account switched',
|
||||
'settings.gitlab.page.toast.accountSwitchFailed': 'Failed to switch GitLab account',
|
||||
'settings.gitea.page.title': 'Gitea / Forgejo Personal Access Token',
|
||||
'settings.gitea.page.description': 'Paste a Gitea or Forgejo personal access token to connect. Set the base URL when using a self-hosted Gitea or Forgejo instance.',
|
||||
'settings.gitea.page.tooltip.connectAccount': 'Connect a Gitea or Forgejo account for in-app issue and pull request workflows.',
|
||||
'settings.gitea.page.accessToken.label': 'Personal Access Token',
|
||||
'settings.gitea.page.accessToken.placeholder': 'Paste your Gitea personal access token',
|
||||
'settings.gitea.page.baseUrl.label': 'Base URL (optional)',
|
||||
'settings.gitea.page.baseUrl.placeholder': 'https://gitea.example.com',
|
||||
'settings.gitea.page.actions.connect': 'Connect Gitea',
|
||||
'settings.gitea.page.actions.disconnect': 'Disconnect',
|
||||
'settings.gitea.page.actions.switch': 'Switch to',
|
||||
'settings.gitea.page.status.notConnected': 'Not Connected',
|
||||
'settings.gitea.page.label.unknownUser': 'unknown',
|
||||
'settings.gitea.page.label.otherAccounts': 'Other Accounts',
|
||||
'settings.gitea.page.avatarAlt.withLogin': '{login} avatar',
|
||||
'settings.gitea.page.avatarAlt.fallback': 'Gitea avatar',
|
||||
'settings.gitea.page.connectedAs': 'Connected as',
|
||||
'settings.gitea.page.errors.invalidToken': 'Enter a valid Gitea personal access token',
|
||||
'settings.gitea.page.errors.failed': 'Failed to connect Gitea',
|
||||
'settings.gitea.page.toast.connected': 'Gitea connected',
|
||||
'settings.gitea.page.toast.disconnected': 'Gitea disconnected',
|
||||
'settings.gitea.page.toast.disconnectFailed': 'Failed to disconnect Gitea',
|
||||
'settings.gitea.page.toast.accountSwitched': 'Gitea account switched',
|
||||
'settings.gitea.page.toast.accountSwitchFailed': 'Failed to switch Gitea account',
|
||||
'settings.gitea.page.customDomains.label': 'Custom domains',
|
||||
'settings.gitea.page.customDomains.description': 'Repos hosted on these domains are treated as Gitea or Forgejo.',
|
||||
'settings.gitea.page.customDomains.placeholder': 'gitea.example.com, git.company.com',
|
||||
'settings.notifications.page.delivery.title': 'Notification Delivery',
|
||||
'settings.notifications.page.delivery.enableAria': 'Enable notifications',
|
||||
'settings.notifications.page.delivery.enableLabel': 'Enable Notifications',
|
||||
@@ -2106,6 +2141,10 @@ export const settingsDict = {
|
||||
'settings.magicPrompts.page.group.gitlabPrReview.description': 'Prompts used for GitLab merge request review flow: visible user message + hidden instruction payload.',
|
||||
'settings.magicPrompts.page.group.gitlabIssueReview.title': 'Issue Review',
|
||||
'settings.magicPrompts.page.group.gitlabIssueReview.description': 'Prompts used for GitLab issue review flow: visible user message + hidden instruction payload.',
|
||||
'settings.magicPrompts.page.group.giteaPrReview.title': 'PR Review',
|
||||
'settings.magicPrompts.page.group.giteaPrReview.description': 'Prompts used for Gitea pull request review flow: visible user message + hidden instruction payload.',
|
||||
'settings.magicPrompts.page.group.giteaIssueReview.title': 'Issue Review',
|
||||
'settings.magicPrompts.page.group.giteaIssueReview.description': 'Prompts used for Gitea issue review flow: visible user message + hidden instruction payload.',
|
||||
'settings.magicPrompts.page.group.gitConflictResolve.title': 'Merge/Rebase Conflict Resolution',
|
||||
'settings.magicPrompts.page.group.gitConflictResolve.description': 'Prompts used when resolving merge/rebase conflicts with AI.',
|
||||
'settings.magicPrompts.page.group.gitCherrypickConflictResolve.title': 'Cherry-pick Conflict Resolution',
|
||||
|
||||
@@ -1177,6 +1177,54 @@ export const dict = {
|
||||
'contextPanel.gitlabMr.mergeMr.merging': 'Merging...',
|
||||
'contextPanel.gitlabMr.mergeMr.toast.merged': 'Merge request merged',
|
||||
'contextPanel.gitlabMr.mergeMr.toast.mergeFailed': 'Failed to merge merge request',
|
||||
'contextPanel.giteaPr.title': 'Pull requests',
|
||||
'contextPanel.giteaPr.tabs.pullRequests': 'Pull requests',
|
||||
'contextPanel.giteaPr.tabs.issues': 'Issues',
|
||||
'contextPanel.giteaPr.branchSectionTitle': 'Current branch',
|
||||
'contextPanel.giteaPr.openPrTitle': 'Open pull requests',
|
||||
'contextPanel.giteaPr.listSectionTitle': 'In this repository',
|
||||
'contextPanel.giteaPr.openPrEmpty': 'No open pull requests',
|
||||
'contextPanel.giteaPr.noPrForBranch': 'No pull request for this branch',
|
||||
'contextPanel.giteaPr.loadContext': 'Load context',
|
||||
'contextPanel.giteaPr.hideContext': 'Hide context',
|
||||
'contextPanel.giteaPr.openInGitea': 'Open in Gitea',
|
||||
'contextPanel.giteaPr.draft': 'Draft',
|
||||
'contextPanel.giteaPr.state.opened': 'Open',
|
||||
'contextPanel.giteaPr.state.merged': 'Merged',
|
||||
'contextPanel.giteaPr.state.closed': 'Closed',
|
||||
'contextPanel.giteaPr.loadMore': 'Load more',
|
||||
'contextPanel.giteaPr.loading': 'Loading...',
|
||||
'contextPanel.giteaPr.error.loadFailed': 'Failed to load pull requests',
|
||||
'contextPanel.giteaPr.error.notConnected': 'Gitea is not connected',
|
||||
'contextPanel.giteaPr.empty.noActiveProject': 'No active project',
|
||||
'contextPanel.giteaPr.actions.openSettings': 'Open settings',
|
||||
'contextPanel.giteaPr.issues.detail.back': 'Back to issues',
|
||||
'contextPanel.giteaPr.issues.detail.commentsEmpty': 'No comments',
|
||||
'contextPanel.giteaPr.issues.empty': 'No open issues',
|
||||
'contextPanel.giteaPr.issues.error.loadFailed': 'Failed to load issues',
|
||||
'contextPanel.giteaPr.issues.listSectionTitle': 'Open issues',
|
||||
'contextPanel.giteaPr.createPr.title': 'New pull request',
|
||||
'contextPanel.giteaPr.createPr.sourceBranch': 'Source branch',
|
||||
'contextPanel.giteaPr.createPr.targetBranch': 'Target branch',
|
||||
'contextPanel.giteaPr.createPr.titleLabel': 'Title',
|
||||
'contextPanel.giteaPr.createPr.titlePlaceholder': 'Pull request title',
|
||||
'contextPanel.giteaPr.createPr.descriptionLabel': 'Description',
|
||||
'contextPanel.giteaPr.createPr.removeSourceBranch': 'Remove source branch on merge',
|
||||
'contextPanel.giteaPr.createPr.submit': 'Create pull request',
|
||||
'contextPanel.giteaPr.createPr.submitting': 'Creating...',
|
||||
'contextPanel.giteaPr.createPr.branchesLoading': 'Loading branches...',
|
||||
'contextPanel.giteaPr.createPr.toast.created': 'Pull request created',
|
||||
'contextPanel.giteaPr.createPr.toast.createFailed': 'Failed to create pull request',
|
||||
'contextPanel.giteaPr.updatePr.toggle': 'Edit title & description',
|
||||
'contextPanel.giteaPr.updatePr.save': 'Save',
|
||||
'contextPanel.giteaPr.updatePr.saving': 'Saving...',
|
||||
'contextPanel.giteaPr.updatePr.toast.updated': 'Pull request updated',
|
||||
'contextPanel.giteaPr.updatePr.toast.updateFailed': 'Failed to update pull request',
|
||||
'contextPanel.giteaPr.mergePr.action': 'Merge',
|
||||
'contextPanel.giteaPr.mergePr.squash': 'Squash commits',
|
||||
'contextPanel.giteaPr.mergePr.merging': 'Merging...',
|
||||
'contextPanel.giteaPr.mergePr.toast.merged': 'Pull request merged',
|
||||
'contextPanel.giteaPr.mergePr.toast.mergeFailed': 'Failed to merge pull request',
|
||||
'contextRail.surface.editor.description': 'Edit project files',
|
||||
'contextRail.surface.git.description': 'Commits, branches, and pull requests',
|
||||
'contextRail.surface.git.changesCountAriaSingle': '{label}, {count} changed file',
|
||||
@@ -1934,6 +1982,39 @@ export const dict = {
|
||||
'session.gitlabIssuePicker.actions.createInWorktree': 'Create in worktree',
|
||||
'session.gitlabIssuePicker.actions.openRepo': 'Open Repo',
|
||||
'session.gitlabIssuePicker.actions.refresh': 'Refresh',
|
||||
'session.giteaIssuePicker.error.noActiveProject': 'No active project',
|
||||
'session.giteaIssuePicker.error.runtimeUnavailable': 'Gitea runtime API unavailable',
|
||||
'session.giteaIssuePicker.error.notConnected': 'Gitea not connected',
|
||||
'session.giteaIssuePicker.error.repoNotResolvable': 'Repo not resolvable',
|
||||
'session.giteaIssuePicker.error.repoMustBeGitea': 'origin remote must be a Gitea URL',
|
||||
'session.giteaIssuePicker.error.issueNotFound': 'Issue not found',
|
||||
'session.giteaIssuePicker.error.noModelSelected': 'No model selected',
|
||||
'session.giteaIssuePicker.toast.loadMoreFailed': 'Failed to load more issues',
|
||||
'session.giteaIssuePicker.toast.loadIssueDetailsFailed': 'Failed to load issue details',
|
||||
'session.giteaIssuePicker.toast.sendContextFailed': 'Failed to send issue context',
|
||||
'session.giteaIssuePicker.toast.sessionCreated': 'Session created from issue',
|
||||
'session.giteaIssuePicker.toast.startSessionFailed': 'Failed to start session',
|
||||
'session.giteaIssuePicker.title.select': 'Link Gitea Issue',
|
||||
'session.giteaIssuePicker.title.createSession': 'New Session From Gitea Issue',
|
||||
'session.giteaIssuePicker.description.select': 'Select an issue to link to this session.',
|
||||
'session.giteaIssuePicker.description.createSession': 'Seeds a new session with hidden issue context (title/body/labels/comments).',
|
||||
'session.giteaIssuePicker.searchPlaceholder': 'Search by title or paste an issue URL',
|
||||
'session.giteaIssuePicker.empty.noActiveProject': 'No active project selected.',
|
||||
'session.giteaIssuePicker.empty.runtimeUnavailable': 'Gitea runtime API unavailable.',
|
||||
'session.giteaIssuePicker.empty.notConnected': 'Gitea not connected. Connect your Gitea account in settings.',
|
||||
'session.giteaIssuePicker.empty.noIssuesFound': 'No issues found',
|
||||
'session.giteaIssuePicker.empty.noOpenIssuesFound': 'No open issues found',
|
||||
'session.giteaIssuePicker.loading.issues': 'Loading issues...',
|
||||
'session.giteaIssuePicker.loading.more': 'Loading...',
|
||||
'session.giteaIssuePicker.actions.openSettings': 'Open settings',
|
||||
'session.giteaIssuePicker.actions.useIssue': 'Use issue #{number}',
|
||||
'session.giteaIssuePicker.actions.openInGiteaAria': 'Open in Gitea',
|
||||
'session.giteaIssuePicker.actions.loadMore': 'Load more',
|
||||
'session.giteaIssuePicker.actions.sectionTitle': 'Actions',
|
||||
'session.giteaIssuePicker.actions.toggleWorktreeAria': 'Toggle worktree',
|
||||
'session.giteaIssuePicker.actions.createInWorktree': 'Create in worktree',
|
||||
'session.giteaIssuePicker.actions.openRepo': 'Open Repo',
|
||||
'session.giteaIssuePicker.actions.refresh': 'Refresh',
|
||||
'session.githubPrPicker.error.noActiveProject': 'No active project',
|
||||
'session.githubPrPicker.error.runtimeUnavailable': 'GitHub runtime API unavailable',
|
||||
'session.githubPrPicker.error.notConnected': 'GitHub not connected',
|
||||
@@ -1982,6 +2063,30 @@ export const dict = {
|
||||
'session.gitlabMrPicker.actions.useMergeRequest': 'Use merge request !{number}',
|
||||
'session.gitlabMrPicker.actions.openInGitLabAria': 'Open in GitLab',
|
||||
'session.gitlabMrPicker.actions.loadMore': 'Load more',
|
||||
'session.giteaPrPicker.error.noActiveProject': 'No active project',
|
||||
'session.giteaPrPicker.error.runtimeUnavailable': 'Gitea runtime API unavailable',
|
||||
'session.giteaPrPicker.error.notConnected': 'Gitea not connected',
|
||||
'session.giteaPrPicker.error.prNotFound': 'Pull request not found',
|
||||
'session.giteaPrPicker.error.repoNotResolvable': 'Repo not resolvable',
|
||||
'session.giteaPrPicker.error.repoMustBeGitea': 'origin remote must be a Gitea URL',
|
||||
'session.giteaPrPicker.toast.loadMoreFailed': 'Failed to load more pull requests',
|
||||
'session.giteaPrPicker.toast.loadDetailsFailed': 'Failed to load pull request details',
|
||||
'session.giteaPrPicker.title': 'Link Gitea Pull Request',
|
||||
'session.giteaPrPicker.description': 'Select a pull request to attach review context to this message.',
|
||||
'session.giteaPrPicker.searchPlaceholder': 'Search by title or paste a pull request URL',
|
||||
'session.giteaPrPicker.includeDiffAria': 'Include PR diff in attached context',
|
||||
'session.giteaPrPicker.includeDiff': 'Include PR diff',
|
||||
'session.giteaPrPicker.empty.noActiveProject': 'No active project selected.',
|
||||
'session.giteaPrPicker.empty.runtimeUnavailable': 'Gitea runtime API unavailable.',
|
||||
'session.giteaPrPicker.empty.notConnected': 'Gitea not connected. Connect your Gitea account in settings.',
|
||||
'session.giteaPrPicker.empty.noPullRequestsFound': 'No pull requests found',
|
||||
'session.giteaPrPicker.empty.noOpenPullRequestsFound': 'No open pull requests found',
|
||||
'session.giteaPrPicker.loading.pullRequests': 'Loading pull requests...',
|
||||
'session.giteaPrPicker.loading.more': 'Loading...',
|
||||
'session.giteaPrPicker.actions.openSettings': 'Open settings',
|
||||
'session.giteaPrPicker.actions.usePullRequest': 'Use pull request #{number}',
|
||||
'session.giteaPrPicker.actions.openInGiteaAria': 'Open in Gitea',
|
||||
'session.giteaPrPicker.actions.loadMore': 'Load more',
|
||||
'session.newWorktree.title': 'New Worktree',
|
||||
'session.newWorktree.mode.newBranch': 'New Branch',
|
||||
'session.newWorktree.mode.existingBranch': 'Existing Branch',
|
||||
@@ -2079,6 +2184,29 @@ export const dict = {
|
||||
'session.gitlabIntegration.validation.branchAlreadyExists': 'Branch already exists locally',
|
||||
'session.gitlabIntegration.validation.failed': 'Validation failed',
|
||||
'session.gitlabIntegration.draftBadge': 'Draft',
|
||||
'session.giteaIntegration.title': 'Select from Gitea',
|
||||
'session.giteaIntegration.tabs.issues': 'Issues',
|
||||
'session.giteaIntegration.tabs.pullRequests': 'Pull Requests',
|
||||
'session.giteaIntegration.connect.title': 'Connect to Gitea',
|
||||
'session.giteaIntegration.connect.description': 'Link issues or pull requests to auto-fill worktree details',
|
||||
'session.giteaIntegration.connect.action': 'Connect Gitea',
|
||||
'session.giteaIntegration.search.issuesPlaceholder': 'Search Gitea issues',
|
||||
'session.giteaIntegration.search.prsPlaceholder': 'Search Gitea pull requests',
|
||||
'session.giteaIntegration.empty.noIssuesFound': 'No issues found',
|
||||
'session.giteaIntegration.empty.noPullRequestsFound': 'No pull requests found',
|
||||
'session.giteaIntegration.actions.loadMore': 'Load more',
|
||||
'session.giteaIntegration.actions.cancel': 'Cancel',
|
||||
'session.giteaIntegration.actions.select': 'Select',
|
||||
'session.giteaIntegration.selected.issueNumber': 'Issue #{number}',
|
||||
'session.giteaIntegration.selected.prNumber': 'PR #{number}',
|
||||
'session.giteaIntegration.includeDiffAria': 'Include PR diff in session context',
|
||||
'session.giteaIntegration.includeDiff': 'Include PR diff',
|
||||
'session.giteaIntegration.error.notConnected': 'Gitea not connected',
|
||||
'session.giteaIntegration.error.loadDataFailed': 'Failed to load data',
|
||||
'session.giteaIntegration.validation.branchAlreadyCheckedOut': 'Branch is already checked out in a worktree',
|
||||
'session.giteaIntegration.validation.branchAlreadyExists': 'Branch already exists locally',
|
||||
'session.giteaIntegration.validation.failed': 'Validation failed',
|
||||
'session.giteaIntegration.draftBadge': 'Draft',
|
||||
'chat.fileAttachment.toast.attachFailed': 'Failed to attach file',
|
||||
'chat.fileAttachment.toast.someFilesSkipped': 'Some files were skipped:\n{summary}',
|
||||
'chat.fileAttachment.toast.vscodePickFailed': 'Failed to pick files in VS Code',
|
||||
@@ -2302,6 +2430,8 @@ export const dict = {
|
||||
'chat.chatInput.actions.linkGithubPr': 'Link GitHub PR',
|
||||
'chat.chatInput.actions.linkGitlabIssue': 'Link GitLab Issue',
|
||||
'chat.chatInput.actions.linkGitlabMr': 'Link GitLab MR',
|
||||
'chat.chatInput.actions.linkGiteaIssue': 'Link Gitea Issue',
|
||||
'chat.chatInput.actions.linkGiteaPr': 'Link Gitea PR',
|
||||
'chat.chatInput.actions.modelAgentSettings': 'Model and agent settings',
|
||||
'chat.chatInput.actions.sendMessageAria': 'Send message',
|
||||
'chat.chatInput.actions.queueMessageAria': 'Queue message',
|
||||
|
||||
@@ -227,6 +227,7 @@ export const settingsDict = {
|
||||
"settings.magicPrompts.sidebar.group.git": "Git",
|
||||
"settings.magicPrompts.sidebar.group.github": "GitHub",
|
||||
"settings.magicPrompts.sidebar.group.gitlab": "GitLab",
|
||||
"settings.magicPrompts.sidebar.group.gitea": "Gitea",
|
||||
"settings.magicPrompts.sidebar.group.planning": "Planificación",
|
||||
"settings.magicPrompts.sidebar.group.session": "Sesión",
|
||||
"settings.magicPrompts.sidebar.item.gitCommitGenerate": "Generación de commit",
|
||||
@@ -240,6 +241,8 @@ export const settingsDict = {
|
||||
"settings.magicPrompts.sidebar.item.githubSinglePrCommentReview": "Revisión de comentario único de PR",
|
||||
"settings.magicPrompts.sidebar.item.gitlabPrReview": "Revisión de MR",
|
||||
"settings.magicPrompts.sidebar.item.gitlabIssueReview": "Revisión de issue",
|
||||
"settings.magicPrompts.sidebar.item.giteaPrReview": "Revisión de PR",
|
||||
"settings.magicPrompts.sidebar.item.giteaIssueReview": "Revisión de issue",
|
||||
"settings.magicPrompts.sidebar.item.planTodo": "Planificar Todo",
|
||||
"settings.magicPrompts.sidebar.item.planImprove": "Mejorar plan",
|
||||
"settings.magicPrompts.sidebar.item.planImplement": "Implementar plan",
|
||||
@@ -1675,6 +1678,9 @@ export const settingsDict = {
|
||||
"settings.github.page.toast.ghCliEnabled": "Respaldo de gh CLI activado",
|
||||
"settings.github.page.toast.ghCliDisabled": "Respaldo de gh CLI desactivado",
|
||||
"settings.github.page.toast.ghCliUpdateFailed": "No se pudo actualizar la configuración de gh CLI",
|
||||
"settings.github.page.customDomains.label": "Dominios personalizados",
|
||||
"settings.github.page.customDomains.description": "Los repositorios alojados en estos dominios se tratarán como GitHub.",
|
||||
"settings.github.page.customDomains.placeholder": "github.example.com, git.mycompany.com",
|
||||
"settings.gitlab.page.title": "Token de acceso personal de GitLab",
|
||||
"settings.gitlab.page.description": "Pega un token de acceso personal de GitLab para conectarte. Establece la URL base cuando uses una instancia de GitLab autoalojada.",
|
||||
"settings.gitlab.page.tooltip.connectAccount": "Conecta una cuenta de GitLab para los flujos de trabajo de issues y merge requests en la aplicación.",
|
||||
@@ -1682,6 +1688,9 @@ export const settingsDict = {
|
||||
"settings.gitlab.page.accessToken.placeholder": "Pega tu token de acceso personal de GitLab",
|
||||
"settings.gitlab.page.baseUrl.label": "URL base (opcional)",
|
||||
"settings.gitlab.page.baseUrl.placeholder": "https://gitlab.com",
|
||||
"settings.gitlab.page.customDomains.label": "Dominios personalizados",
|
||||
"settings.gitlab.page.customDomains.description": "Los repositorios alojados en estos dominios se tratarán como GitLab.",
|
||||
"settings.gitlab.page.customDomains.placeholder": "gitlab.example.com, git.company.com",
|
||||
"settings.gitlab.page.actions.connect": "Conectar GitLab",
|
||||
"settings.gitlab.page.actions.disconnect": "Desconectar",
|
||||
"settings.gitlab.page.actions.switch": "Cambiar a",
|
||||
@@ -1698,6 +1707,32 @@ export const settingsDict = {
|
||||
"settings.gitlab.page.toast.disconnectFailed": "No se pudo desconectar GitLab",
|
||||
"settings.gitlab.page.toast.accountSwitched": "Cuenta de GitLab cambiada",
|
||||
"settings.gitlab.page.toast.accountSwitchFailed": "No se pudo cambiar la cuenta de GitLab",
|
||||
"settings.gitea.page.title": "Token de acceso personal de Gitea / Forgejo",
|
||||
"settings.gitea.page.description": "Pega un token de acceso personal de Gitea o Forgejo para conectarte. Establece la URL base cuando uses una instancia de Gitea o Forgejo autoalojada.",
|
||||
"settings.gitea.page.tooltip.connectAccount": "Conecta una cuenta de Gitea o Forgejo para los flujos de trabajo de issues y pull requests en la aplicación.",
|
||||
"settings.gitea.page.accessToken.label": "Token de acceso personal",
|
||||
"settings.gitea.page.accessToken.placeholder": "Pega tu token de acceso personal de Gitea",
|
||||
"settings.gitea.page.baseUrl.label": "URL base (opcional)",
|
||||
"settings.gitea.page.baseUrl.placeholder": "https://gitea.example.com",
|
||||
"settings.gitea.page.actions.connect": "Conectar Gitea",
|
||||
"settings.gitea.page.actions.disconnect": "Desconectar",
|
||||
"settings.gitea.page.actions.switch": "Cambiar a",
|
||||
"settings.gitea.page.status.notConnected": "No conectado",
|
||||
"settings.gitea.page.label.unknownUser": "desconocido",
|
||||
"settings.gitea.page.label.otherAccounts": "Otras cuentas",
|
||||
"settings.gitea.page.avatarAlt.withLogin": "Avatar de {login}",
|
||||
"settings.gitea.page.avatarAlt.fallback": "Avatar de Gitea",
|
||||
"settings.gitea.page.connectedAs": "Conectado como",
|
||||
"settings.gitea.page.errors.invalidToken": "Introduce un token de acceso personal de Gitea válido",
|
||||
"settings.gitea.page.errors.failed": "No se pudo conectar Gitea",
|
||||
"settings.gitea.page.toast.connected": "Gitea conectado",
|
||||
"settings.gitea.page.toast.disconnected": "Gitea desconectado",
|
||||
"settings.gitea.page.toast.disconnectFailed": "No se pudo desconectar Gitea",
|
||||
"settings.gitea.page.toast.accountSwitched": "Cuenta de Gitea cambiada",
|
||||
"settings.gitea.page.toast.accountSwitchFailed": "No se pudo cambiar la cuenta de Gitea",
|
||||
"settings.gitea.page.customDomains.label": "Dominios personalizados",
|
||||
"settings.gitea.page.customDomains.description": "Los repositorios alojados en estos dominios se tratarán como Gitea o Forgejo.",
|
||||
"settings.gitea.page.customDomains.placeholder": "gitea.example.com, git.company.com",
|
||||
"settings.notifications.page.delivery.title": "Entrega de notificaciones",
|
||||
"settings.notifications.page.delivery.enableAria": "Habilitar notificaciones",
|
||||
"settings.notifications.page.delivery.enableLabel": "Habilitar notificaciones",
|
||||
@@ -2083,6 +2118,10 @@ export const settingsDict = {
|
||||
"settings.magicPrompts.page.group.gitlabPrReview.description": "Prompts usados para el flujo de revisión de MR de GitLab: mensaje visible del usuario + carga de instrucciones ocultas.",
|
||||
"settings.magicPrompts.page.group.gitlabIssueReview.title": "Revisión de issue",
|
||||
"settings.magicPrompts.page.group.gitlabIssueReview.description": "Prompts usados para el flujo de revisión de issue de GitLab: mensaje visible del usuario + carga de instrucciones ocultas.",
|
||||
"settings.magicPrompts.page.group.giteaPrReview.title": "Revisión de PR",
|
||||
"settings.magicPrompts.page.group.giteaPrReview.description": "Prompts usados para el flujo de revisión de PR de Gitea: mensaje visible del usuario + carga de instrucciones ocultas.",
|
||||
"settings.magicPrompts.page.group.giteaIssueReview.title": "Revisión de issue",
|
||||
"settings.magicPrompts.page.group.giteaIssueReview.description": "Prompts usados para el flujo de revisión de issue de Gitea: mensaje visible del usuario + carga de instrucciones ocultas.",
|
||||
"settings.magicPrompts.page.group.gitConflictResolve.title": "Resolución de conflictos de merge/rebase",
|
||||
"settings.magicPrompts.page.group.gitConflictResolve.description": "Prompts usados al resolver conflictos de merge/rebase con IA.",
|
||||
"settings.magicPrompts.page.group.gitCherrypickConflictResolve.title": "Resolución de conflictos de cherry-pick",
|
||||
|
||||
@@ -1178,6 +1178,54 @@ export const dict: Record<I18nKey, string> = {
|
||||
"contextPanel.gitlabMr.mergeMr.merging": "Fusionando...",
|
||||
"contextPanel.gitlabMr.mergeMr.toast.merged": "La solicitud de fusión se fusionó",
|
||||
"contextPanel.gitlabMr.mergeMr.toast.mergeFailed": "No se pudo fusionar la solicitud de fusión",
|
||||
"contextPanel.giteaPr.title": "PR",
|
||||
"contextPanel.giteaPr.tabs.pullRequests": "PR",
|
||||
"contextPanel.giteaPr.tabs.issues": "Issues",
|
||||
"contextPanel.giteaPr.branchSectionTitle": "Rama actual",
|
||||
"contextPanel.giteaPr.openPrTitle": "PR abiertas",
|
||||
"contextPanel.giteaPr.listSectionTitle": "En este repositorio",
|
||||
"contextPanel.giteaPr.openPrEmpty": "No hay PR abiertas",
|
||||
"contextPanel.giteaPr.noPrForBranch": "No hay PR para esta rama",
|
||||
"contextPanel.giteaPr.loadContext": "Cargar contexto",
|
||||
"contextPanel.giteaPr.hideContext": "Ocultar contexto",
|
||||
"contextPanel.giteaPr.openInGitea": "Abrir en Gitea",
|
||||
"contextPanel.giteaPr.draft": "Borrador",
|
||||
"contextPanel.giteaPr.state.opened": "Abierta",
|
||||
"contextPanel.giteaPr.state.merged": "Fusionada",
|
||||
"contextPanel.giteaPr.state.closed": "Cerrada",
|
||||
"contextPanel.giteaPr.loadMore": "Cargar más",
|
||||
"contextPanel.giteaPr.loading": "Cargando...",
|
||||
"contextPanel.giteaPr.error.loadFailed": "No se pudieron cargar las PR",
|
||||
"contextPanel.giteaPr.error.notConnected": "Gitea no está conectado",
|
||||
"contextPanel.giteaPr.empty.noActiveProject": "Sin proyecto activo",
|
||||
"contextPanel.giteaPr.actions.openSettings": "Abrir ajustes",
|
||||
"contextPanel.giteaPr.issues.detail.back": "Volver a issues",
|
||||
"contextPanel.giteaPr.issues.detail.commentsEmpty": "Sin comentarios",
|
||||
"contextPanel.giteaPr.issues.empty": "No hay issues abiertos",
|
||||
"contextPanel.giteaPr.issues.error.loadFailed": "Error al cargar los issues",
|
||||
"contextPanel.giteaPr.issues.listSectionTitle": "Issues abiertos",
|
||||
"contextPanel.giteaPr.createPr.title": "Nueva PR",
|
||||
"contextPanel.giteaPr.createPr.sourceBranch": "Rama de origen",
|
||||
"contextPanel.giteaPr.createPr.targetBranch": "Rama de destino",
|
||||
"contextPanel.giteaPr.createPr.titleLabel": "Título",
|
||||
"contextPanel.giteaPr.createPr.titlePlaceholder": "Título de la PR",
|
||||
"contextPanel.giteaPr.createPr.descriptionLabel": "Descripción",
|
||||
"contextPanel.giteaPr.createPr.removeSourceBranch": "Eliminar la rama de origen al fusionar",
|
||||
"contextPanel.giteaPr.createPr.submit": "Crear PR",
|
||||
"contextPanel.giteaPr.createPr.submitting": "Creando...",
|
||||
"contextPanel.giteaPr.createPr.branchesLoading": "Cargando ramas...",
|
||||
"contextPanel.giteaPr.createPr.toast.created": "PR creada",
|
||||
"contextPanel.giteaPr.createPr.toast.createFailed": "No se pudo crear la PR",
|
||||
"contextPanel.giteaPr.updatePr.toggle": "Editar título y descripción",
|
||||
"contextPanel.giteaPr.updatePr.save": "Guardar",
|
||||
"contextPanel.giteaPr.updatePr.saving": "Guardando...",
|
||||
"contextPanel.giteaPr.updatePr.toast.updated": "PR actualizada",
|
||||
"contextPanel.giteaPr.updatePr.toast.updateFailed": "No se pudo actualizar la PR",
|
||||
"contextPanel.giteaPr.mergePr.action": "Fusionar",
|
||||
"contextPanel.giteaPr.mergePr.squash": "Combinar commits",
|
||||
"contextPanel.giteaPr.mergePr.merging": "Fusionando...",
|
||||
"contextPanel.giteaPr.mergePr.toast.merged": "La PR se fusionó",
|
||||
"contextPanel.giteaPr.mergePr.toast.mergeFailed": "No se pudo fusionar la PR",
|
||||
"contextRail.surface.editor.description": "Editar archivos del proyecto",
|
||||
"contextRail.surface.git.description": "Commits, ramas y pull requests",
|
||||
"contextRail.surface.git.changesCountAriaSingle": "{label}, {count} archivo modificado",
|
||||
@@ -1912,6 +1960,39 @@ export const dict: Record<I18nKey, string> = {
|
||||
"session.gitlabIssuePicker.actions.createInWorktree": "Crear en worktree",
|
||||
"session.gitlabIssuePicker.actions.openRepo": "Abrir repositorio",
|
||||
"session.gitlabIssuePicker.actions.refresh": "Actualizar",
|
||||
"session.giteaIssuePicker.error.noActiveProject": "No hay ningún proyecto activo",
|
||||
"session.giteaIssuePicker.error.runtimeUnavailable": "API de runtime de Gitea no disponible",
|
||||
"session.giteaIssuePicker.error.notConnected": "Gitea no está conectado",
|
||||
"session.giteaIssuePicker.error.repoNotResolvable": "No se pudo resolver el repositorio",
|
||||
"session.giteaIssuePicker.error.repoMustBeGitea": "El remoto origin debe ser una URL de Gitea",
|
||||
"session.giteaIssuePicker.error.issueNotFound": "No se encontró el issue",
|
||||
"session.giteaIssuePicker.error.noModelSelected": "No hay ningún modelo seleccionado",
|
||||
"session.giteaIssuePicker.toast.loadMoreFailed": "No se pudo cargar más issues",
|
||||
"session.giteaIssuePicker.toast.loadIssueDetailsFailed": "No se pudieron cargar los detalles del issue",
|
||||
"session.giteaIssuePicker.toast.sendContextFailed": "No se pudo enviar el contexto del issue",
|
||||
"session.giteaIssuePicker.toast.sessionCreated": "Sesión creada desde el issue",
|
||||
"session.giteaIssuePicker.toast.startSessionFailed": "No se pudo iniciar la sesión",
|
||||
"session.giteaIssuePicker.title.select": "Vincular issue de Gitea",
|
||||
"session.giteaIssuePicker.title.createSession": "Nueva sesión desde issue de Gitea",
|
||||
"session.giteaIssuePicker.description.select": "Selecciona un issue para vincularlo a esta sesión.",
|
||||
"session.giteaIssuePicker.description.createSession": "Inicia una nueva sesión con contexto oculto del issue (título/cuerpo/etiquetas/comentarios).",
|
||||
"session.giteaIssuePicker.searchPlaceholder": "Buscar por título o pega la URL del issue",
|
||||
"session.giteaIssuePicker.empty.noActiveProject": "No hay ningún proyecto activo seleccionado.",
|
||||
"session.giteaIssuePicker.empty.runtimeUnavailable": "API de runtime de Gitea no disponible.",
|
||||
"session.giteaIssuePicker.empty.notConnected": "Gitea no está conectado. Conecta tu cuenta de Gitea en configuración.",
|
||||
"session.giteaIssuePicker.empty.noIssuesFound": "No se encontraron issues",
|
||||
"session.giteaIssuePicker.empty.noOpenIssuesFound": "No se encontraron issues abiertos",
|
||||
"session.giteaIssuePicker.loading.issues": "Cargando issues...",
|
||||
"session.giteaIssuePicker.loading.more": "Cargando...",
|
||||
"session.giteaIssuePicker.actions.openSettings": "Abrir configuración",
|
||||
"session.giteaIssuePicker.actions.useIssue": "Usar issue #{number}",
|
||||
"session.giteaIssuePicker.actions.openInGiteaAria": "Abrir en Gitea",
|
||||
"session.giteaIssuePicker.actions.loadMore": "Cargar más",
|
||||
"session.giteaIssuePicker.actions.sectionTitle": "Acciones",
|
||||
"session.giteaIssuePicker.actions.toggleWorktreeAria": "Activar worktree",
|
||||
"session.giteaIssuePicker.actions.createInWorktree": "Crear en worktree",
|
||||
"session.giteaIssuePicker.actions.openRepo": "Abrir repositorio",
|
||||
"session.giteaIssuePicker.actions.refresh": "Actualizar",
|
||||
"session.githubPrPicker.error.noActiveProject": "No hay ningún proyecto activo",
|
||||
"session.githubPrPicker.error.runtimeUnavailable": "API de runtime de GitHub no disponible",
|
||||
"session.githubPrPicker.error.notConnected": "GitHub no está conectado",
|
||||
@@ -1960,6 +2041,30 @@ export const dict: Record<I18nKey, string> = {
|
||||
"session.gitlabMrPicker.actions.useMergeRequest": "Usar MR !{number}",
|
||||
"session.gitlabMrPicker.actions.openInGitLabAria": "Abrir en GitLab",
|
||||
"session.gitlabMrPicker.actions.loadMore": "Cargar más",
|
||||
"session.giteaPrPicker.error.noActiveProject": "No hay ningún proyecto activo",
|
||||
"session.giteaPrPicker.error.runtimeUnavailable": "API de runtime de Gitea no disponible",
|
||||
"session.giteaPrPicker.error.notConnected": "Gitea no está conectado",
|
||||
"session.giteaPrPicker.error.prNotFound": "No se encontró la PR",
|
||||
"session.giteaPrPicker.error.repoNotResolvable": "No se pudo resolver el repositorio",
|
||||
"session.giteaPrPicker.error.repoMustBeGitea": "El remoto origin debe ser una URL de Gitea",
|
||||
"session.giteaPrPicker.toast.loadMoreFailed": "No se pudieron cargar más PR",
|
||||
"session.giteaPrPicker.toast.loadDetailsFailed": "No se pudieron cargar los detalles de la PR",
|
||||
"session.giteaPrPicker.title": "Vincular PR de Gitea",
|
||||
"session.giteaPrPicker.description": "Selecciona una PR para adjuntar contexto de revisión a este mensaje.",
|
||||
"session.giteaPrPicker.searchPlaceholder": "Buscar por título o pega la URL de la PR",
|
||||
"session.giteaPrPicker.includeDiffAria": "Incluir diff de la PR en el contexto adjunto",
|
||||
"session.giteaPrPicker.includeDiff": "Incluir diff de la PR",
|
||||
"session.giteaPrPicker.empty.noActiveProject": "No hay ningún proyecto activo seleccionado.",
|
||||
"session.giteaPrPicker.empty.runtimeUnavailable": "API de runtime de Gitea no disponible.",
|
||||
"session.giteaPrPicker.empty.notConnected": "Gitea no está conectado. Conecta tu cuenta de Gitea en configuración.",
|
||||
"session.giteaPrPicker.empty.noPullRequestsFound": "No se encontraron PR",
|
||||
"session.giteaPrPicker.empty.noOpenPullRequestsFound": "No se encontraron PR abiertas",
|
||||
"session.giteaPrPicker.loading.pullRequests": "Cargando PR...",
|
||||
"session.giteaPrPicker.loading.more": "Cargando...",
|
||||
"session.giteaPrPicker.actions.openSettings": "Abrir configuración",
|
||||
"session.giteaPrPicker.actions.usePullRequest": "Usar PR #{number}",
|
||||
"session.giteaPrPicker.actions.openInGiteaAria": "Abrir en Gitea",
|
||||
"session.giteaPrPicker.actions.loadMore": "Cargar más",
|
||||
"session.newWorktree.title": "Nuevo worktree",
|
||||
"session.newWorktree.mode.newBranch": "Nueva rama",
|
||||
"session.newWorktree.mode.existingBranch": "Rama existente",
|
||||
@@ -2057,6 +2162,29 @@ export const dict: Record<I18nKey, string> = {
|
||||
"session.gitlabIntegration.validation.branchAlreadyExists": "La rama ya existe localmente",
|
||||
"session.gitlabIntegration.validation.failed": "No se pudo validar",
|
||||
"session.gitlabIntegration.draftBadge": "Borrador",
|
||||
"session.giteaIntegration.title": "Seleccionar desde Gitea",
|
||||
"session.giteaIntegration.tabs.issues": "Issues",
|
||||
"session.giteaIntegration.tabs.pullRequests": "PR",
|
||||
"session.giteaIntegration.connect.title": "Conectar a Gitea",
|
||||
"session.giteaIntegration.connect.description": "Vincula issues o PR para rellenar automáticamente los detalles del worktree",
|
||||
"session.giteaIntegration.connect.action": "Conectar a Gitea",
|
||||
"session.giteaIntegration.search.issuesPlaceholder": "Buscar issues de Gitea",
|
||||
"session.giteaIntegration.search.prsPlaceholder": "Buscar PR de Gitea",
|
||||
"session.giteaIntegration.empty.noIssuesFound": "No se encontraron issues",
|
||||
"session.giteaIntegration.empty.noPullRequestsFound": "No se encontraron PR",
|
||||
"session.giteaIntegration.actions.loadMore": "Cargar más",
|
||||
"session.giteaIntegration.actions.cancel": "Cancelar",
|
||||
"session.giteaIntegration.actions.select": "Seleccionar",
|
||||
"session.giteaIntegration.selected.issueNumber": "Issue #{number}",
|
||||
"session.giteaIntegration.selected.prNumber": "PR #{number}",
|
||||
"session.giteaIntegration.includeDiffAria": "Incluir diff de la PR en el contexto de la sesión",
|
||||
"session.giteaIntegration.includeDiff": "Incluir diff de la PR",
|
||||
"session.giteaIntegration.error.notConnected": "Gitea no está conectado",
|
||||
"session.giteaIntegration.error.loadDataFailed": "No se pudieron cargar los datos",
|
||||
"session.giteaIntegration.validation.branchAlreadyCheckedOut": "La rama ya está en uso en un worktree",
|
||||
"session.giteaIntegration.validation.branchAlreadyExists": "La rama ya existe localmente",
|
||||
"session.giteaIntegration.validation.failed": "No se pudo validar",
|
||||
"session.giteaIntegration.draftBadge": "Borrador",
|
||||
"chat.fileAttachment.toast.attachFailed": "No se pudo adjuntar el archivo",
|
||||
"chat.fileAttachment.toast.someFilesSkipped": "Algunos archivos se omitieron:\n{summary}",
|
||||
"chat.fileAttachment.toast.vscodePickFailed": "No se pudieron seleccionar archivos en VS Code",
|
||||
@@ -2280,6 +2408,8 @@ export const dict: Record<I18nKey, string> = {
|
||||
"chat.chatInput.actions.linkGithubPr": "Vincular PR de GitHub",
|
||||
"chat.chatInput.actions.linkGitlabIssue": "Vincular issue de GitLab",
|
||||
"chat.chatInput.actions.linkGitlabMr": "Vincular MR de GitLab",
|
||||
"chat.chatInput.actions.linkGiteaIssue": "Vincular issue de Gitea",
|
||||
"chat.chatInput.actions.linkGiteaPr": "Vincular PR de Gitea",
|
||||
"chat.chatInput.actions.modelAgentSettings": "Configuración del modelo y agente",
|
||||
"chat.chatInput.actions.sendMessageAria": "Enviar mensaje",
|
||||
"chat.chatInput.actions.queueMessageAria": "Poner mensaje en cola",
|
||||
|
||||
@@ -250,6 +250,7 @@ export const settingsDict = {
|
||||
'settings.magicPrompts.sidebar.group.git': 'Git',
|
||||
'settings.magicPrompts.sidebar.group.github': 'GitHub',
|
||||
'settings.magicPrompts.sidebar.group.gitlab': 'GitLab',
|
||||
'settings.magicPrompts.sidebar.group.gitea': 'Gitea',
|
||||
'settings.magicPrompts.sidebar.group.planning': 'Planification',
|
||||
'settings.magicPrompts.sidebar.group.session': 'Session',
|
||||
'settings.magicPrompts.sidebar.item.gitCommitGenerate': 'Génération de commit',
|
||||
@@ -263,6 +264,8 @@ export const settingsDict = {
|
||||
'settings.magicPrompts.sidebar.item.githubSinglePrCommentReview': 'Examen des commentaires PR uniques',
|
||||
'settings.magicPrompts.sidebar.item.gitlabPrReview': 'Revue de MR',
|
||||
'settings.magicPrompts.sidebar.item.gitlabIssueReview': 'Examen du problème',
|
||||
'settings.magicPrompts.sidebar.item.giteaPrReview': 'Revue de PR',
|
||||
'settings.magicPrompts.sidebar.item.giteaIssueReview': 'Examen du problème',
|
||||
'settings.magicPrompts.sidebar.item.planTodo': 'Planification des tâches',
|
||||
'settings.magicPrompts.sidebar.item.planImprove': 'Améliorer le plan',
|
||||
'settings.magicPrompts.sidebar.item.planImplement': 'Plan de mise en œuvre',
|
||||
@@ -1593,6 +1596,9 @@ export const settingsDict = {
|
||||
'settings.github.page.toast.ghCliEnabled': 'Solution de secours gh CLI activée',
|
||||
'settings.github.page.toast.ghCliDisabled': 'Solution de secours gh CLI désactivée',
|
||||
'settings.github.page.toast.ghCliUpdateFailed': 'Échec de la mise à jour du paramètre gh CLI',
|
||||
'settings.github.page.customDomains.label': 'Domaines personnalisés',
|
||||
'settings.github.page.customDomains.description': 'Les dépôts hébergés sur ces domaines sont traités comme GitHub.',
|
||||
'settings.github.page.customDomains.placeholder': 'github.example.com, git.mycompany.com',
|
||||
'settings.gitlab.page.title': 'Jeton d\'accès personnel GitLab',
|
||||
'settings.gitlab.page.description': 'Collez un jeton d\'accès personnel GitLab pour vous connecter. Définissez l\'URL de base si vous utilisez une instance GitLab auto-hébergée.',
|
||||
'settings.gitlab.page.tooltip.connectAccount': 'Connectez un compte GitLab pour les workflows d\'issues et de merge requests dans l\'application.',
|
||||
@@ -1600,6 +1606,9 @@ export const settingsDict = {
|
||||
'settings.gitlab.page.accessToken.placeholder': 'Collez votre jeton d\'accès personnel GitLab',
|
||||
'settings.gitlab.page.baseUrl.label': 'URL de base (facultatif)',
|
||||
'settings.gitlab.page.baseUrl.placeholder': 'https://gitlab.com',
|
||||
'settings.gitlab.page.customDomains.label': 'Domaines personnalisés',
|
||||
'settings.gitlab.page.customDomains.description': 'Les dépôts hébergés sur ces domaines sont traités comme GitLab.',
|
||||
'settings.gitlab.page.customDomains.placeholder': 'gitlab.example.com, git.company.com',
|
||||
'settings.gitlab.page.actions.connect': 'Connecter GitLab',
|
||||
'settings.gitlab.page.actions.disconnect': 'Déconnecter',
|
||||
'settings.gitlab.page.actions.switch': 'Passer à',
|
||||
@@ -1616,6 +1625,32 @@ export const settingsDict = {
|
||||
'settings.gitlab.page.toast.disconnectFailed': 'Échec de la déconnexion du GitLab',
|
||||
'settings.gitlab.page.toast.accountSwitched': 'Le compte GitLab a changé',
|
||||
'settings.gitlab.page.toast.accountSwitchFailed': 'Échec du changement de compte GitLab',
|
||||
'settings.gitea.page.title': 'Jeton d\'accès personnel Gitea / Forgejo',
|
||||
'settings.gitea.page.description': 'Collez un jeton d\'accès personnel Gitea ou Forgejo pour vous connecter. Définissez l\'URL de base si vous utilisez une instance Gitea ou Forgejo auto-hébergée.',
|
||||
'settings.gitea.page.tooltip.connectAccount': 'Connectez un compte Gitea ou Forgejo pour les workflows d\'issues et de pull requests dans l\'application.',
|
||||
'settings.gitea.page.accessToken.label': 'Jeton d\'accès personnel',
|
||||
'settings.gitea.page.accessToken.placeholder': 'Collez votre jeton d\'accès personnel Gitea',
|
||||
'settings.gitea.page.baseUrl.label': 'URL de base (facultatif)',
|
||||
'settings.gitea.page.baseUrl.placeholder': 'https://gitea.example.com',
|
||||
'settings.gitea.page.actions.connect': 'Connecter Gitea',
|
||||
'settings.gitea.page.actions.disconnect': 'Déconnecter',
|
||||
'settings.gitea.page.actions.switch': 'Passer à',
|
||||
'settings.gitea.page.status.notConnected': 'Non connecté',
|
||||
'settings.gitea.page.label.unknownUser': 'inconnu',
|
||||
'settings.gitea.page.label.otherAccounts': 'Autres comptes',
|
||||
'settings.gitea.page.avatarAlt.withLogin': 'Avatar de {login}',
|
||||
'settings.gitea.page.avatarAlt.fallback': 'Avatar Gitea',
|
||||
'settings.gitea.page.connectedAs': 'Connecté en tant que',
|
||||
'settings.gitea.page.errors.invalidToken': 'Saisissez un jeton d\'accès personnel Gitea valide',
|
||||
'settings.gitea.page.errors.failed': 'Échec de la connexion à Gitea',
|
||||
'settings.gitea.page.toast.connected': 'Gitea connecté',
|
||||
'settings.gitea.page.toast.disconnected': 'Gitea déconnecté',
|
||||
'settings.gitea.page.toast.disconnectFailed': 'Échec de la déconnexion du Gitea',
|
||||
'settings.gitea.page.toast.accountSwitched': 'Le compte Gitea a changé',
|
||||
'settings.gitea.page.toast.accountSwitchFailed': 'Échec du changement de compte Gitea',
|
||||
'settings.gitea.page.customDomains.label': 'Domaines personnalisés',
|
||||
'settings.gitea.page.customDomains.description': 'Les dépôts hébergés sur ces domaines sont traités comme Gitea ou Forgejo.',
|
||||
'settings.gitea.page.customDomains.placeholder': 'gitea.example.com, git.company.com',
|
||||
'settings.notifications.page.delivery.title': 'Envoi des notifications',
|
||||
'settings.notifications.page.delivery.enableAria': 'Activer les notifications',
|
||||
'settings.notifications.page.delivery.enableLabel': 'Activer les notifications',
|
||||
@@ -1985,6 +2020,10 @@ export const settingsDict = {
|
||||
'settings.magicPrompts.page.group.gitlabPrReview.description': 'Prompts utilisés pour le flux de revue des MR GitLab : message utilisateur visible + charge utile d\'instruction cachée.',
|
||||
'settings.magicPrompts.page.group.gitlabIssueReview.title': 'Examen du problème',
|
||||
'settings.magicPrompts.page.group.gitlabIssueReview.description': 'Prompts utilisés pour le flux d\'examen des issues GitLab : message utilisateur visible + charge utile d\'instruction masquée.',
|
||||
'settings.magicPrompts.page.group.giteaPrReview.title': 'Revue de PR',
|
||||
'settings.magicPrompts.page.group.giteaPrReview.description': 'Prompts utilisés pour le flux de revue des PR Gitea : message utilisateur visible + charge utile d\'instruction cachée.',
|
||||
'settings.magicPrompts.page.group.giteaIssueReview.title': 'Examen du problème',
|
||||
'settings.magicPrompts.page.group.giteaIssueReview.description': 'Prompts utilisés pour le flux d\'examen des issues Gitea : message utilisateur visible + charge utile d\'instruction masquée.',
|
||||
'settings.magicPrompts.page.group.gitConflictResolve.title': 'Résolution des conflits de fusion/rebase',
|
||||
'settings.magicPrompts.page.group.gitConflictResolve.description': 'Prompts utilisés lors de la résolution des conflits de fusion/rebase avec l\'IA.',
|
||||
'settings.magicPrompts.page.group.gitCherrypickConflictResolve.title': 'Résolution des conflits par sélection',
|
||||
|
||||
@@ -997,6 +997,54 @@ export const dict = {
|
||||
'contextPanel.gitlabMr.mergeMr.merging': 'Fusion en cours...',
|
||||
'contextPanel.gitlabMr.mergeMr.toast.merged': 'La demande de fusion a été fusionnée',
|
||||
'contextPanel.gitlabMr.mergeMr.toast.mergeFailed': 'Échec de la fusion de la demande de fusion',
|
||||
'contextPanel.giteaPr.title': 'PR',
|
||||
'contextPanel.giteaPr.tabs.pullRequests': 'PR',
|
||||
'contextPanel.giteaPr.tabs.issues': 'Problèmes',
|
||||
'contextPanel.giteaPr.branchSectionTitle': 'Branche actuelle',
|
||||
'contextPanel.giteaPr.openPrTitle': 'PR ouvertes',
|
||||
'contextPanel.giteaPr.listSectionTitle': 'Dans ce dépôt',
|
||||
'contextPanel.giteaPr.openPrEmpty': 'Aucune PR ouverte',
|
||||
'contextPanel.giteaPr.noPrForBranch': 'Aucune PR pour cette branche',
|
||||
'contextPanel.giteaPr.loadContext': 'Charger le contexte',
|
||||
'contextPanel.giteaPr.hideContext': 'Masquer le contexte',
|
||||
'contextPanel.giteaPr.openInGitea': 'Ouvrir dans Gitea',
|
||||
'contextPanel.giteaPr.draft': 'Brouillon',
|
||||
'contextPanel.giteaPr.state.opened': 'Ouverte',
|
||||
'contextPanel.giteaPr.state.merged': 'Fusionnée',
|
||||
'contextPanel.giteaPr.state.closed': 'Fermée',
|
||||
'contextPanel.giteaPr.loadMore': 'Charger plus',
|
||||
'contextPanel.giteaPr.loading': 'Chargement...',
|
||||
'contextPanel.giteaPr.error.loadFailed': 'Échec du chargement des PR',
|
||||
'contextPanel.giteaPr.error.notConnected': 'Gitea n\'est pas connecté',
|
||||
'contextPanel.giteaPr.empty.noActiveProject': 'Aucun projet actif',
|
||||
'contextPanel.giteaPr.actions.openSettings': 'Ouvrir les paramètres',
|
||||
'contextPanel.giteaPr.issues.detail.back': 'Retour aux problèmes',
|
||||
'contextPanel.giteaPr.issues.detail.commentsEmpty': 'Aucun commentaire',
|
||||
'contextPanel.giteaPr.issues.empty': 'Aucun problème ouvert',
|
||||
'contextPanel.giteaPr.issues.error.loadFailed': 'Échec du chargement des problèmes',
|
||||
'contextPanel.giteaPr.issues.listSectionTitle': 'Problèmes ouverts',
|
||||
'contextPanel.giteaPr.createPr.title': 'Nouvelle PR',
|
||||
'contextPanel.giteaPr.createPr.sourceBranch': 'Branche source',
|
||||
'contextPanel.giteaPr.createPr.targetBranch': 'Branche cible',
|
||||
'contextPanel.giteaPr.createPr.titleLabel': 'Titre',
|
||||
'contextPanel.giteaPr.createPr.titlePlaceholder': 'Titre de la PR',
|
||||
'contextPanel.giteaPr.createPr.descriptionLabel': 'Description',
|
||||
'contextPanel.giteaPr.createPr.removeSourceBranch': 'Supprimer la branche source lors de la fusion',
|
||||
'contextPanel.giteaPr.createPr.submit': 'Créer une PR',
|
||||
'contextPanel.giteaPr.createPr.submitting': 'Création...',
|
||||
'contextPanel.giteaPr.createPr.branchesLoading': 'Chargement des branches...',
|
||||
'contextPanel.giteaPr.createPr.toast.created': 'PR créée',
|
||||
'contextPanel.giteaPr.createPr.toast.createFailed': 'Échec de la création de la PR',
|
||||
'contextPanel.giteaPr.updatePr.toggle': 'Modifier le titre et la description',
|
||||
'contextPanel.giteaPr.updatePr.save': 'Enregistrer',
|
||||
'contextPanel.giteaPr.updatePr.saving': 'Enregistrement...',
|
||||
'contextPanel.giteaPr.updatePr.toast.updated': 'PR mise à jour',
|
||||
'contextPanel.giteaPr.updatePr.toast.updateFailed': 'Échec de la mise à jour de la PR',
|
||||
'contextPanel.giteaPr.mergePr.action': 'Fusionner',
|
||||
'contextPanel.giteaPr.mergePr.squash': 'Écraser les commits',
|
||||
'contextPanel.giteaPr.mergePr.merging': 'Fusion en cours...',
|
||||
'contextPanel.giteaPr.mergePr.toast.merged': 'La PR a été fusionnée',
|
||||
'contextPanel.giteaPr.mergePr.toast.mergeFailed': 'Échec de la fusion de la PR',
|
||||
'contextRail.surface.editor.description': 'Modifier les fichiers du projet',
|
||||
'contextRail.surface.git.description': 'Commits, branches et pull requests',
|
||||
'contextRail.surface.git.changesCountAriaSingle': '{label}, {count} fichier modifié',
|
||||
@@ -1692,6 +1740,39 @@ export const dict = {
|
||||
'session.gitlabIssuePicker.actions.createInWorktree': 'Créer dans le worktree',
|
||||
'session.gitlabIssuePicker.actions.openRepo': 'Ouvrir le dépôt',
|
||||
'session.gitlabIssuePicker.actions.refresh': 'Rafraîchir',
|
||||
'session.giteaIssuePicker.error.noActiveProject': 'Aucun projet actif',
|
||||
'session.giteaIssuePicker.error.runtimeUnavailable': 'Exécution Gitea API indisponible',
|
||||
'session.giteaIssuePicker.error.notConnected': 'Gitea non connecté',
|
||||
'session.giteaIssuePicker.error.repoNotResolvable': 'Repo non résoluble',
|
||||
'session.giteaIssuePicker.error.repoMustBeGitea': 'Le dépôt distant origin doit pointer vers une URL Gitea',
|
||||
'session.giteaIssuePicker.error.issueNotFound': 'Problème introuvable',
|
||||
'session.giteaIssuePicker.error.noModelSelected': 'Aucun modèle sélectionné',
|
||||
'session.giteaIssuePicker.toast.loadMoreFailed': 'Échec du chargement d\'autres problèmes',
|
||||
'session.giteaIssuePicker.toast.loadIssueDetailsFailed': 'Échec du chargement des détails du problème',
|
||||
'session.giteaIssuePicker.toast.sendContextFailed': 'Échec de l\'envoi du contexte du problème',
|
||||
'session.giteaIssuePicker.toast.sessionCreated': 'Session créée à partir du problème',
|
||||
'session.giteaIssuePicker.toast.startSessionFailed': 'Échec du démarrage de la session',
|
||||
'session.giteaIssuePicker.title.select': 'Lien vers le problème Gitea',
|
||||
'session.giteaIssuePicker.title.createSession': 'Nouvelle session du problème Gitea',
|
||||
'session.giteaIssuePicker.description.select': 'Sélectionnez un problème à lier à cette session.',
|
||||
'session.giteaIssuePicker.description.createSession': 'Lance une nouvelle session avec un contexte de problème masqué (titre/corps/étiquettes/commentaires).',
|
||||
'session.giteaIssuePicker.searchPlaceholder': 'Recherchez par titre ou collez l\'URL du problème',
|
||||
'session.giteaIssuePicker.empty.noActiveProject': 'Aucun projet actif sélectionné.',
|
||||
'session.giteaIssuePicker.empty.runtimeUnavailable': 'L\'environnement d\'exécution Gitea API n\'est pas disponible.',
|
||||
'session.giteaIssuePicker.empty.notConnected': 'Gitea non connecté. Connectez votre compte Gitea dans les paramètres.',
|
||||
'session.giteaIssuePicker.empty.noIssuesFound': 'Aucun problème trouvé',
|
||||
'session.giteaIssuePicker.empty.noOpenIssuesFound': 'Aucun problème ouvert trouvé',
|
||||
'session.giteaIssuePicker.loading.issues': 'Chargement des problèmes...',
|
||||
'session.giteaIssuePicker.loading.more': 'Chargement...',
|
||||
'session.giteaIssuePicker.actions.openSettings': 'Ouvrir les paramètres',
|
||||
'session.giteaIssuePicker.actions.useIssue': 'Utilisez le problème #{number}',
|
||||
'session.giteaIssuePicker.actions.openInGiteaAria': 'Ouvrir dans Gitea',
|
||||
'session.giteaIssuePicker.actions.loadMore': 'Charger plus',
|
||||
'session.giteaIssuePicker.actions.sectionTitle': 'Actions',
|
||||
'session.giteaIssuePicker.actions.toggleWorktreeAria': 'Basculer le worktree',
|
||||
'session.giteaIssuePicker.actions.createInWorktree': 'Créer dans le worktree',
|
||||
'session.giteaIssuePicker.actions.openRepo': 'Ouvrir le dépôt',
|
||||
'session.giteaIssuePicker.actions.refresh': 'Rafraîchir',
|
||||
'session.githubPrPicker.error.noActiveProject': 'Aucun projet actif',
|
||||
'session.githubPrPicker.error.runtimeUnavailable': 'Exécution GitHub API indisponible',
|
||||
'session.githubPrPicker.error.notConnected': 'GitHub non connecté',
|
||||
@@ -1740,6 +1821,30 @@ export const dict = {
|
||||
'session.gitlabMrPicker.actions.useMergeRequest': 'Utiliser le MR !{number}',
|
||||
'session.gitlabMrPicker.actions.openInGitLabAria': 'Ouvrir dans GitLab',
|
||||
'session.gitlabMrPicker.actions.loadMore': 'Charger plus',
|
||||
'session.giteaPrPicker.error.noActiveProject': 'Aucun projet actif',
|
||||
'session.giteaPrPicker.error.runtimeUnavailable': 'Exécution Gitea API indisponible',
|
||||
'session.giteaPrPicker.error.notConnected': 'Gitea non connecté',
|
||||
'session.giteaPrPicker.error.prNotFound': 'PR introuvable',
|
||||
'session.giteaPrPicker.error.repoNotResolvable': 'Repo non résoluble',
|
||||
'session.giteaPrPicker.error.repoMustBeGitea': 'Le dépôt distant origin doit pointer vers une URL Gitea',
|
||||
'session.giteaPrPicker.toast.loadMoreFailed': 'Échec du chargement d\'autres PR',
|
||||
'session.giteaPrPicker.toast.loadDetailsFailed': 'Échec du chargement des détails de la PR',
|
||||
'session.giteaPrPicker.title': 'Lier la PR Gitea',
|
||||
'session.giteaPrPicker.description': 'Sélectionnez une PR pour joindre un contexte de revue à ce message.',
|
||||
'session.giteaPrPicker.searchPlaceholder': 'Recherchez par titre ou collez l\'URL de la PR',
|
||||
'session.giteaPrPicker.includeDiffAria': 'Inclure le diff de la PR dans le contexte ci-joint',
|
||||
'session.giteaPrPicker.includeDiff': 'Inclure le diff de la PR',
|
||||
'session.giteaPrPicker.empty.noActiveProject': 'Aucun projet actif sélectionné.',
|
||||
'session.giteaPrPicker.empty.runtimeUnavailable': 'L\'environnement d\'exécution Gitea API n\'est pas disponible.',
|
||||
'session.giteaPrPicker.empty.notConnected': 'Gitea non connecté. Connectez votre compte Gitea dans les paramètres.',
|
||||
'session.giteaPrPicker.empty.noPullRequestsFound': 'Aucune PR trouvée',
|
||||
'session.giteaPrPicker.empty.noOpenPullRequestsFound': 'Aucune PR ouverte trouvée',
|
||||
'session.giteaPrPicker.loading.pullRequests': 'Chargement des PR...',
|
||||
'session.giteaPrPicker.loading.more': 'Chargement...',
|
||||
'session.giteaPrPicker.actions.openSettings': 'Ouvrir les paramètres',
|
||||
'session.giteaPrPicker.actions.usePullRequest': 'Utiliser la PR #{number}',
|
||||
'session.giteaPrPicker.actions.openInGiteaAria': 'Ouvrir dans Gitea',
|
||||
'session.giteaPrPicker.actions.loadMore': 'Charger plus',
|
||||
'session.newWorktree.title': 'Nouveau worktree',
|
||||
'session.newWorktree.mode.newBranch': 'Nouvelle branche',
|
||||
'session.newWorktree.mode.existingBranch': 'Branche existante',
|
||||
@@ -1837,6 +1942,29 @@ export const dict = {
|
||||
'session.gitlabIntegration.validation.branchAlreadyExists': 'Une branche existe déjà localement',
|
||||
'session.gitlabIntegration.validation.failed': 'Échec de la validation',
|
||||
'session.gitlabIntegration.draftBadge': 'Brouillon',
|
||||
'session.giteaIntegration.title': 'Sélectionnez parmi Gitea',
|
||||
'session.giteaIntegration.tabs.issues': 'Problèmes',
|
||||
'session.giteaIntegration.tabs.pullRequests': 'PR',
|
||||
'session.giteaIntegration.connect.title': 'Connectez-vous à Gitea',
|
||||
'session.giteaIntegration.connect.description': 'Lier des issues ou des PR pour remplir automatiquement les détails du worktree',
|
||||
'session.giteaIntegration.connect.action': 'Connectez Gitea',
|
||||
'session.giteaIntegration.search.issuesPlaceholder': 'Recherchez des problèmes Gitea',
|
||||
'session.giteaIntegration.search.prsPlaceholder': 'Recherchez les PR Gitea',
|
||||
'session.giteaIntegration.empty.noIssuesFound': 'Aucun problème trouvé',
|
||||
'session.giteaIntegration.empty.noPullRequestsFound': 'Aucune PR trouvée',
|
||||
'session.giteaIntegration.actions.loadMore': 'Charger plus',
|
||||
'session.giteaIntegration.actions.cancel': 'Annuler',
|
||||
'session.giteaIntegration.actions.select': 'Sélectionner',
|
||||
'session.giteaIntegration.selected.issueNumber': 'Numéro {number}',
|
||||
'session.giteaIntegration.selected.prNumber': 'PR #{number}',
|
||||
'session.giteaIntegration.includeDiffAria': 'Inclure la différence PR dans le contexte de la session',
|
||||
'session.giteaIntegration.includeDiff': 'Inclure la différence PR',
|
||||
'session.giteaIntegration.error.notConnected': 'Gitea non connecté',
|
||||
'session.giteaIntegration.error.loadDataFailed': 'Échec du chargement des données',
|
||||
'session.giteaIntegration.validation.branchAlreadyCheckedOut': 'La branche est déjà checkout dans un worktree',
|
||||
'session.giteaIntegration.validation.branchAlreadyExists': 'Une branche existe déjà localement',
|
||||
'session.giteaIntegration.validation.failed': 'Échec de la validation',
|
||||
'session.giteaIntegration.draftBadge': 'Brouillon',
|
||||
'chat.fileAttachment.toast.attachFailed': 'Impossible de joindre le fichier',
|
||||
'chat.fileAttachment.toast.someFilesSkipped': 'Certains fichiers ont été ignorés :\n{summary}',
|
||||
'chat.fileAttachment.toast.vscodePickFailed': 'Échec de la sélection des fichiers dans VS Code',
|
||||
@@ -2023,6 +2151,8 @@ export const dict = {
|
||||
'chat.chatInput.actions.linkGithubPr': 'Lien GitHub PR',
|
||||
'chat.chatInput.actions.linkGitlabIssue': 'Lien vers le problème GitLab',
|
||||
'chat.chatInput.actions.linkGitlabMr': 'Lien GitLab MR',
|
||||
'chat.chatInput.actions.linkGiteaIssue': 'Lien vers le problème Gitea',
|
||||
'chat.chatInput.actions.linkGiteaPr': 'Lien Gitea PR',
|
||||
'chat.chatInput.actions.modelAgentSettings': 'Paramètres du modèle et de l\'agent',
|
||||
'chat.chatInput.actions.sendMessageAria': 'Envoyer un message',
|
||||
'chat.chatInput.actions.queueMessageAria': 'Message de file d\'attente',
|
||||
|
||||
@@ -260,6 +260,7 @@ export const settingsDict = {
|
||||
'settings.magicPrompts.sidebar.group.git': 'Git',
|
||||
'settings.magicPrompts.sidebar.group.github': 'GitHub',
|
||||
'settings.magicPrompts.sidebar.group.gitlab': 'GitLab',
|
||||
'settings.magicPrompts.sidebar.group.gitea': 'Gitea',
|
||||
'settings.magicPrompts.sidebar.group.planning': '計画',
|
||||
'settings.magicPrompts.sidebar.group.session': 'セッション',
|
||||
'settings.magicPrompts.sidebar.item.gitCommitGenerate': 'Commit 生成',
|
||||
@@ -273,6 +274,8 @@ export const settingsDict = {
|
||||
'settings.magicPrompts.sidebar.item.githubSinglePrCommentReview': '単一 PR コメントレビュー',
|
||||
'settings.magicPrompts.sidebar.item.gitlabPrReview': 'MR レビュー',
|
||||
'settings.magicPrompts.sidebar.item.gitlabIssueReview': 'Issue レビュー',
|
||||
'settings.magicPrompts.sidebar.item.giteaPrReview': 'PR レビュー',
|
||||
'settings.magicPrompts.sidebar.item.giteaIssueReview': 'Issue レビュー',
|
||||
'settings.magicPrompts.sidebar.item.planTodo': 'Todo 計画',
|
||||
'settings.magicPrompts.sidebar.item.planImprove': '計画の改善',
|
||||
'settings.magicPrompts.sidebar.item.planImplement': '計画の実装',
|
||||
@@ -1708,6 +1711,9 @@ export const settingsDict = {
|
||||
'settings.github.page.toast.ghCliEnabled': 'gh CLI フォールバックを有効化しました',
|
||||
'settings.github.page.toast.ghCliDisabled': 'gh CLI フォールバックを無効化しました',
|
||||
'settings.github.page.toast.ghCliUpdateFailed': 'gh CLI 設定の更新に失敗しました',
|
||||
'settings.github.page.customDomains.label': 'カスタムドメイン',
|
||||
'settings.github.page.customDomains.description': 'これらのドメインでホストされているリポジトリは GitHub として扱われます。',
|
||||
'settings.github.page.customDomains.placeholder': 'github.example.com, git.mycompany.com',
|
||||
'settings.gitlab.page.title': 'GitLab パーソナルアクセストークン',
|
||||
'settings.gitlab.page.description': 'GitLab パーソナルアクセストークンを貼り付けて接続します。セルフホストの GitLab インスタンスを使用する場合はベース URL を設定してください。',
|
||||
'settings.gitlab.page.tooltip.connectAccount': 'アプリ内の Issue とマージリクエストのワークフロー用に GitLab アカウントを接続します。',
|
||||
@@ -1715,6 +1721,9 @@ export const settingsDict = {
|
||||
'settings.gitlab.page.accessToken.placeholder': 'GitLab パーソナルアクセストークンを貼り付け',
|
||||
'settings.gitlab.page.baseUrl.label': 'ベース URL(任意)',
|
||||
'settings.gitlab.page.baseUrl.placeholder': 'https://gitlab.com',
|
||||
'settings.gitlab.page.customDomains.label': 'カスタムドメイン',
|
||||
'settings.gitlab.page.customDomains.description': 'これらのドメインでホストされているリポジトリは GitLab として扱われます。',
|
||||
'settings.gitlab.page.customDomains.placeholder': 'gitlab.example.com, git.company.com',
|
||||
'settings.gitlab.page.actions.connect': 'GitLab に接続',
|
||||
'settings.gitlab.page.actions.disconnect': '切断',
|
||||
'settings.gitlab.page.actions.switch': '切り替え',
|
||||
@@ -1731,6 +1740,32 @@ export const settingsDict = {
|
||||
'settings.gitlab.page.toast.disconnectFailed': 'GitLab の切断に失敗しました',
|
||||
'settings.gitlab.page.toast.accountSwitched': 'GitLab アカウントを切り替えました',
|
||||
'settings.gitlab.page.toast.accountSwitchFailed': 'GitLab アカウントの切り替えに失敗しました',
|
||||
'settings.gitea.page.title': 'Gitea / Forgejo パーソナルアクセストークン',
|
||||
'settings.gitea.page.description': 'Gitea または Forgejo のパーソナルアクセストークンを貼り付けて接続します。セルフホストの Gitea または Forgejo インスタンスを使用する場合はベース URL を設定してください。',
|
||||
'settings.gitea.page.tooltip.connectAccount': 'アプリ内の Issue とプルリクエストのワークフロー用に Gitea または Forgejo アカウントを接続します。',
|
||||
'settings.gitea.page.accessToken.label': 'パーソナルアクセストークン',
|
||||
'settings.gitea.page.accessToken.placeholder': 'Gitea パーソナルアクセストークンを貼り付け',
|
||||
'settings.gitea.page.baseUrl.label': 'ベース URL(任意)',
|
||||
'settings.gitea.page.baseUrl.placeholder': 'https://gitea.example.com',
|
||||
'settings.gitea.page.actions.connect': 'Gitea に接続',
|
||||
'settings.gitea.page.actions.disconnect': '切断',
|
||||
'settings.gitea.page.actions.switch': '切り替え',
|
||||
'settings.gitea.page.status.notConnected': '未接続',
|
||||
'settings.gitea.page.label.unknownUser': '不明',
|
||||
'settings.gitea.page.label.otherAccounts': 'その他のアカウント',
|
||||
'settings.gitea.page.avatarAlt.withLogin': '{login} のアバター',
|
||||
'settings.gitea.page.avatarAlt.fallback': 'Gitea のアバター',
|
||||
'settings.gitea.page.connectedAs': '接続アカウント:',
|
||||
'settings.gitea.page.errors.invalidToken': '有効な Gitea パーソナルアクセストークンを入力してください',
|
||||
'settings.gitea.page.errors.failed': 'Gitea に接続できませんでした',
|
||||
'settings.gitea.page.toast.connected': 'Gitea に接続しました',
|
||||
'settings.gitea.page.toast.disconnected': 'Gitea の接続を切断しました',
|
||||
'settings.gitea.page.toast.disconnectFailed': 'Gitea の切断に失敗しました',
|
||||
'settings.gitea.page.toast.accountSwitched': 'Gitea アカウントを切り替えました',
|
||||
'settings.gitea.page.toast.accountSwitchFailed': 'Gitea アカウントの切り替えに失敗しました',
|
||||
'settings.gitea.page.customDomains.label': 'カスタムドメイン',
|
||||
'settings.gitea.page.customDomains.description': 'これらのドメインでホストされているリポジトリは Gitea または Forgejo として扱われます。',
|
||||
'settings.gitea.page.customDomains.placeholder': 'gitea.example.com, git.company.com',
|
||||
'settings.notifications.page.delivery.title': '通知配信',
|
||||
'settings.notifications.page.delivery.enableAria': '通知を有効化',
|
||||
'settings.notifications.page.delivery.enableLabel': '通知を有効化',
|
||||
@@ -2116,6 +2151,10 @@ export const settingsDict = {
|
||||
'settings.magicPrompts.page.group.gitlabPrReview.description': 'GitLab MR レビューフローに使用するプロンプト: 表示ユーザーメッセージ + 非表示指示ペイロード。',
|
||||
'settings.magicPrompts.page.group.gitlabIssueReview.title': 'Issue レビュー',
|
||||
'settings.magicPrompts.page.group.gitlabIssueReview.description': 'GitLab Issue レビューフローに使用するプロンプト: 表示ユーザーメッセージ + 非表示指示ペイロード。',
|
||||
'settings.magicPrompts.page.group.giteaPrReview.title': 'PR レビュー',
|
||||
'settings.magicPrompts.page.group.giteaPrReview.description': 'Gitea PR レビューフローに使用するプロンプト: 表示ユーザーメッセージ + 非表示指示ペイロード。',
|
||||
'settings.magicPrompts.page.group.giteaIssueReview.title': 'Issue レビュー',
|
||||
'settings.magicPrompts.page.group.giteaIssueReview.description': 'Gitea Issue レビューフローに使用するプロンプト: 表示ユーザーメッセージ + 非表示指示ペイロード。',
|
||||
'settings.magicPrompts.page.group.gitConflictResolve.title': 'Merge/Rebase 競合解決',
|
||||
'settings.magicPrompts.page.group.gitConflictResolve.description': 'AI で Merge/Rebase 競合を解決する際に使用するプロンプト。',
|
||||
'settings.magicPrompts.page.group.gitCherrypickConflictResolve.title': 'Cherry-pick 競合解決',
|
||||
|
||||
@@ -1174,6 +1174,54 @@ export const dict: Record<I18nKey, string> = {
|
||||
'contextPanel.gitlabMr.mergeMr.merging': 'マージ中...',
|
||||
'contextPanel.gitlabMr.mergeMr.toast.merged': 'マージリクエストをマージしました',
|
||||
'contextPanel.gitlabMr.mergeMr.toast.mergeFailed': 'マージリクエストのマージに失敗しました',
|
||||
'contextPanel.giteaPr.title': 'プルリクエスト',
|
||||
'contextPanel.giteaPr.tabs.pullRequests': 'プルリクエスト',
|
||||
'contextPanel.giteaPr.tabs.issues': 'Issue',
|
||||
'contextPanel.giteaPr.branchSectionTitle': '現在のブランチ',
|
||||
'contextPanel.giteaPr.openPrTitle': '開いているプルリクエスト',
|
||||
'contextPanel.giteaPr.listSectionTitle': 'このリポジトリ内',
|
||||
'contextPanel.giteaPr.openPrEmpty': '開いているプルリクエストはありません',
|
||||
'contextPanel.giteaPr.noPrForBranch': 'このブランチのプルリクエストはありません',
|
||||
'contextPanel.giteaPr.loadContext': 'コンテキストを読み込む',
|
||||
'contextPanel.giteaPr.hideContext': 'コンテキストを隠す',
|
||||
'contextPanel.giteaPr.openInGitea': 'Gitea で開く',
|
||||
'contextPanel.giteaPr.draft': 'ドラフト',
|
||||
'contextPanel.giteaPr.state.opened': 'オープン',
|
||||
'contextPanel.giteaPr.state.merged': 'マージ済み',
|
||||
'contextPanel.giteaPr.state.closed': 'クローズ',
|
||||
'contextPanel.giteaPr.loadMore': 'さらに読み込む',
|
||||
'contextPanel.giteaPr.loading': '読み込み中...',
|
||||
'contextPanel.giteaPr.error.loadFailed': 'プルリクエストを読み込めませんでした',
|
||||
'contextPanel.giteaPr.error.notConnected': 'Gitea に接続されていません',
|
||||
'contextPanel.giteaPr.empty.noActiveProject': 'アクティブなプロジェクトがありません',
|
||||
'contextPanel.giteaPr.actions.openSettings': '設定を開く',
|
||||
'contextPanel.giteaPr.issues.detail.back': 'Issueに戻る',
|
||||
'contextPanel.giteaPr.issues.detail.commentsEmpty': 'コメントはありません',
|
||||
'contextPanel.giteaPr.issues.empty': '開いているIssueはありません',
|
||||
'contextPanel.giteaPr.issues.error.loadFailed': 'Issueの読み込みに失敗しました',
|
||||
'contextPanel.giteaPr.issues.listSectionTitle': '開いているIssue',
|
||||
'contextPanel.giteaPr.createPr.title': '新しいプルリクエスト',
|
||||
'contextPanel.giteaPr.createPr.sourceBranch': 'ソースブランチ',
|
||||
'contextPanel.giteaPr.createPr.targetBranch': 'ターゲットブランチ',
|
||||
'contextPanel.giteaPr.createPr.titleLabel': 'タイトル',
|
||||
'contextPanel.giteaPr.createPr.titlePlaceholder': 'プルリクエストのタイトル',
|
||||
'contextPanel.giteaPr.createPr.descriptionLabel': '説明',
|
||||
'contextPanel.giteaPr.createPr.removeSourceBranch': 'マージ時にソースブランチを削除する',
|
||||
'contextPanel.giteaPr.createPr.submit': 'プルリクエストを作成',
|
||||
'contextPanel.giteaPr.createPr.submitting': '作成中...',
|
||||
'contextPanel.giteaPr.createPr.branchesLoading': 'ブランチを読み込み中...',
|
||||
'contextPanel.giteaPr.createPr.toast.created': 'プルリクエストを作成しました',
|
||||
'contextPanel.giteaPr.createPr.toast.createFailed': 'プルリクエストの作成に失敗しました',
|
||||
'contextPanel.giteaPr.updatePr.toggle': 'タイトルと説明を編集',
|
||||
'contextPanel.giteaPr.updatePr.save': '保存',
|
||||
'contextPanel.giteaPr.updatePr.saving': '保存中...',
|
||||
'contextPanel.giteaPr.updatePr.toast.updated': 'プルリクエストを更新しました',
|
||||
'contextPanel.giteaPr.updatePr.toast.updateFailed': 'プルリクエストの更新に失敗しました',
|
||||
'contextPanel.giteaPr.mergePr.action': 'マージ',
|
||||
'contextPanel.giteaPr.mergePr.squash': 'コミットをスカッシュ',
|
||||
'contextPanel.giteaPr.mergePr.merging': 'マージ中...',
|
||||
'contextPanel.giteaPr.mergePr.toast.merged': 'プルリクエストをマージしました',
|
||||
'contextPanel.giteaPr.mergePr.toast.mergeFailed': 'プルリクエストのマージに失敗しました',
|
||||
'contextRail.surface.editor.description': 'プロジェクトのファイルを編集',
|
||||
'contextRail.surface.git.description': 'コミット・ブランチ・プルリクエスト',
|
||||
'contextRail.surface.git.changesCountAriaSingle': '{label}、変更ファイル{count}件',
|
||||
@@ -1930,6 +1978,39 @@ export const dict: Record<I18nKey, string> = {
|
||||
'session.gitlabIssuePicker.actions.createInWorktree': 'ワークツリーで作成',
|
||||
'session.gitlabIssuePicker.actions.openRepo': 'リポジトリを開く',
|
||||
'session.gitlabIssuePicker.actions.refresh': '更新',
|
||||
'session.giteaIssuePicker.error.noActiveProject': 'アクティブなプロジェクトがありません',
|
||||
'session.giteaIssuePicker.error.runtimeUnavailable': 'GiteaランタイムAPIは利用できません',
|
||||
'session.giteaIssuePicker.error.notConnected': 'Giteaに接続されていません',
|
||||
'session.giteaIssuePicker.error.repoNotResolvable': 'リポジトリを解決できません',
|
||||
'session.giteaIssuePicker.error.repoMustBeGitea': 'originリモートはGitea URLである必要があります',
|
||||
'session.giteaIssuePicker.error.issueNotFound': 'Issueが見つかりません',
|
||||
'session.giteaIssuePicker.error.noModelSelected': 'モデルが選択されていません',
|
||||
'session.giteaIssuePicker.toast.loadMoreFailed': 'さらにIssueを読み込めませんでした',
|
||||
'session.giteaIssuePicker.toast.loadIssueDetailsFailed': 'Issueの詳細の読み込みに失敗しました',
|
||||
'session.giteaIssuePicker.toast.sendContextFailed': 'Issueコンテキストの送信に失敗しました',
|
||||
'session.giteaIssuePicker.toast.sessionCreated': 'Issueからセッションを作成しました',
|
||||
'session.giteaIssuePicker.toast.startSessionFailed': 'セッションの開始に失敗しました',
|
||||
'session.giteaIssuePicker.title.select': 'Gitea Issueをリンク',
|
||||
'session.giteaIssuePicker.title.createSession': 'Gitea Issueから新しいセッション',
|
||||
'session.giteaIssuePicker.description.select': 'このセッションにリンクするIssueを選択してください。',
|
||||
'session.giteaIssuePicker.description.createSession': '非表示のIssueコンテキスト(タイトル/本文/ラベル/コメント)を含む新しいセッションを作成します。',
|
||||
'session.giteaIssuePicker.searchPlaceholder': 'タイトルで検索するか、Issue URLを貼り付けてください',
|
||||
'session.giteaIssuePicker.empty.noActiveProject': 'アクティブなプロジェクトが選択されていません。',
|
||||
'session.giteaIssuePicker.empty.runtimeUnavailable': 'GiteaランタイムAPIは利用できません。',
|
||||
'session.giteaIssuePicker.empty.notConnected': 'Giteaに接続されていません。設定でGiteaアカウントを接続してください。',
|
||||
'session.giteaIssuePicker.empty.noIssuesFound': 'Issueが見つかりません',
|
||||
'session.giteaIssuePicker.empty.noOpenIssuesFound': 'オープンなIssueが見つかりません',
|
||||
'session.giteaIssuePicker.loading.issues': 'Issueを読み込み中...',
|
||||
'session.giteaIssuePicker.loading.more': '読み込み中...',
|
||||
'session.giteaIssuePicker.actions.openSettings': '設定を開く',
|
||||
'session.giteaIssuePicker.actions.useIssue': 'Issue #{number}を使用',
|
||||
'session.giteaIssuePicker.actions.openInGiteaAria': 'Giteaで開く',
|
||||
'session.giteaIssuePicker.actions.loadMore': 'さらに読み込む',
|
||||
'session.giteaIssuePicker.actions.sectionTitle': 'アクション',
|
||||
'session.giteaIssuePicker.actions.toggleWorktreeAria': 'ワークツリーの切り替え',
|
||||
'session.giteaIssuePicker.actions.createInWorktree': 'ワークツリーで作成',
|
||||
'session.giteaIssuePicker.actions.openRepo': 'リポジトリを開く',
|
||||
'session.giteaIssuePicker.actions.refresh': '更新',
|
||||
'session.githubPrPicker.error.noActiveProject': 'アクティブなプロジェクトがありません',
|
||||
'session.githubPrPicker.error.runtimeUnavailable': 'GitHubランタイムAPIは利用できません',
|
||||
'session.githubPrPicker.error.notConnected': 'GitHubに接続されていません',
|
||||
@@ -1978,6 +2059,30 @@ export const dict: Record<I18nKey, string> = {
|
||||
'session.gitlabMrPicker.actions.useMergeRequest': 'マージリクエスト !{number}を使用',
|
||||
'session.gitlabMrPicker.actions.openInGitLabAria': 'GitLabで開く',
|
||||
'session.gitlabMrPicker.actions.loadMore': 'さらに読み込む',
|
||||
'session.giteaPrPicker.error.noActiveProject': 'アクティブなプロジェクトがありません',
|
||||
'session.giteaPrPicker.error.runtimeUnavailable': 'GiteaランタイムAPIは利用できません',
|
||||
'session.giteaPrPicker.error.notConnected': 'Giteaに接続されていません',
|
||||
'session.giteaPrPicker.error.prNotFound': 'プルリクエストが見つかりません',
|
||||
'session.giteaPrPicker.error.repoNotResolvable': 'リポジトリを解決できません',
|
||||
'session.giteaPrPicker.error.repoMustBeGitea': 'originリモートはGitea URLである必要があります',
|
||||
'session.giteaPrPicker.toast.loadMoreFailed': 'さらにプルリクエストを読み込めませんでした',
|
||||
'session.giteaPrPicker.toast.loadDetailsFailed': 'プルリクエストの詳細の読み込みに失敗しました',
|
||||
'session.giteaPrPicker.title': 'Giteaプルリクエストをリンク',
|
||||
'session.giteaPrPicker.description': 'このメッセージにレビューコンテキストを添付するプルリクエストを選択してください。',
|
||||
'session.giteaPrPicker.searchPlaceholder': 'タイトルで検索するか、プルリクエストURLを貼り付けてください',
|
||||
'session.giteaPrPicker.includeDiffAria': '添付コンテキストにPR差分を含める',
|
||||
'session.giteaPrPicker.includeDiff': 'PR差分を含める',
|
||||
'session.giteaPrPicker.empty.noActiveProject': 'アクティブなプロジェクトが選択されていません。',
|
||||
'session.giteaPrPicker.empty.runtimeUnavailable': 'GiteaランタイムAPIは利用できません。',
|
||||
'session.giteaPrPicker.empty.notConnected': 'Giteaに接続されていません。設定でGiteaアカウントを接続してください。',
|
||||
'session.giteaPrPicker.empty.noPullRequestsFound': 'プルリクエストが見つかりません',
|
||||
'session.giteaPrPicker.empty.noOpenPullRequestsFound': 'オープンなプルリクエストが見つかりません',
|
||||
'session.giteaPrPicker.loading.pullRequests': 'プルリクエストを読み込み中...',
|
||||
'session.giteaPrPicker.loading.more': '読み込み中...',
|
||||
'session.giteaPrPicker.actions.openSettings': '設定を開く',
|
||||
'session.giteaPrPicker.actions.usePullRequest': 'プルリクエスト #{number}を使用',
|
||||
'session.giteaPrPicker.actions.openInGiteaAria': 'Giteaで開く',
|
||||
'session.giteaPrPicker.actions.loadMore': 'さらに読み込む',
|
||||
'session.newWorktree.title': '新しいワークツリー',
|
||||
'session.newWorktree.mode.newBranch': '新しいブランチ',
|
||||
'session.newWorktree.mode.existingBranch': '既存のブランチ',
|
||||
@@ -2075,6 +2180,29 @@ export const dict: Record<I18nKey, string> = {
|
||||
'session.gitlabIntegration.validation.branchAlreadyExists': 'ブランチはすでにローカルに存在します',
|
||||
'session.gitlabIntegration.validation.failed': '検証に失敗しました',
|
||||
'session.gitlabIntegration.draftBadge': '下書き',
|
||||
'session.giteaIntegration.title': 'Giteaから選択',
|
||||
'session.giteaIntegration.tabs.issues': 'Issue',
|
||||
'session.giteaIntegration.tabs.pullRequests': 'プルリクエスト',
|
||||
'session.giteaIntegration.connect.title': 'Giteaに接続',
|
||||
'session.giteaIntegration.connect.description': 'Issueまたはプルリクエストをリンクしてワークツリー詳細を自動入力',
|
||||
'session.giteaIntegration.connect.action': 'Giteaに接続',
|
||||
'session.giteaIntegration.search.issuesPlaceholder': 'GiteaのIssueを検索',
|
||||
'session.giteaIntegration.search.prsPlaceholder': 'Giteaのプルリクエストを検索',
|
||||
'session.giteaIntegration.empty.noIssuesFound': 'Issueが見つかりません',
|
||||
'session.giteaIntegration.empty.noPullRequestsFound': 'プルリクエストが見つかりません',
|
||||
'session.giteaIntegration.actions.loadMore': 'さらに読み込む',
|
||||
'session.giteaIntegration.actions.cancel': 'キャンセル',
|
||||
'session.giteaIntegration.actions.select': '選択',
|
||||
'session.giteaIntegration.selected.issueNumber': 'Issue #{number}',
|
||||
'session.giteaIntegration.selected.prNumber': 'PR #{number}',
|
||||
'session.giteaIntegration.includeDiffAria': 'セッションコンテキストにPR差分を含める',
|
||||
'session.giteaIntegration.includeDiff': 'PR差分を含める',
|
||||
'session.giteaIntegration.error.notConnected': 'Giteaに接続されていません',
|
||||
'session.giteaIntegration.error.loadDataFailed': 'データの読み込みに失敗しました',
|
||||
'session.giteaIntegration.validation.branchAlreadyCheckedOut': 'ブランチはすでにワークツリーでチェックアウトされています',
|
||||
'session.giteaIntegration.validation.branchAlreadyExists': 'ブランチはすでにローカルに存在します',
|
||||
'session.giteaIntegration.validation.failed': '検証に失敗しました',
|
||||
'session.giteaIntegration.draftBadge': '下書き',
|
||||
'chat.fileAttachment.toast.attachFailed': 'ファイルの添付に失敗しました',
|
||||
'chat.fileAttachment.toast.someFilesSkipped': '一部のファイルがスキップされました:\n{summary}',
|
||||
'chat.fileAttachment.toast.vscodePickFailed': 'VS Codeでのファイル選択に失敗しました',
|
||||
@@ -2298,6 +2426,8 @@ export const dict: Record<I18nKey, string> = {
|
||||
'chat.chatInput.actions.linkGithubPr': 'GitHub PRをリンク',
|
||||
'chat.chatInput.actions.linkGitlabIssue': 'GitLab Issueをリンク',
|
||||
'chat.chatInput.actions.linkGitlabMr': 'GitLab MRをリンク',
|
||||
'chat.chatInput.actions.linkGiteaIssue': 'Gitea Issueをリンク',
|
||||
'chat.chatInput.actions.linkGiteaPr': 'Gitea PRをリンク',
|
||||
'chat.chatInput.actions.modelAgentSettings': 'モデルとエージェント設定',
|
||||
'chat.chatInput.actions.sendMessageAria': 'メッセージを送信',
|
||||
'chat.chatInput.actions.queueMessageAria': 'メッセージをキュー',
|
||||
|
||||
@@ -227,6 +227,7 @@ export const settingsDict = {
|
||||
'settings.magicPrompts.sidebar.group.git': 'Git',
|
||||
'settings.magicPrompts.sidebar.group.github': 'GitHub',
|
||||
'settings.magicPrompts.sidebar.group.gitlab': 'GitLab',
|
||||
'settings.magicPrompts.sidebar.group.gitea': 'Gitea',
|
||||
'settings.magicPrompts.sidebar.group.planning': '계획',
|
||||
'settings.magicPrompts.sidebar.group.session': '세션',
|
||||
'settings.magicPrompts.sidebar.item.gitCommitGenerate': 'Commit 생성',
|
||||
@@ -240,6 +241,8 @@ export const settingsDict = {
|
||||
'settings.magicPrompts.sidebar.item.githubSinglePrCommentReview': '단일 PR 댓글 리뷰',
|
||||
'settings.magicPrompts.sidebar.item.gitlabPrReview': 'MR 리뷰',
|
||||
'settings.magicPrompts.sidebar.item.gitlabIssueReview': '이슈 리뷰',
|
||||
'settings.magicPrompts.sidebar.item.giteaPrReview': 'PR 리뷰',
|
||||
'settings.magicPrompts.sidebar.item.giteaIssueReview': '이슈 리뷰',
|
||||
'settings.magicPrompts.sidebar.item.planTodo': '할 일 계획',
|
||||
'settings.magicPrompts.sidebar.item.planImprove': '계획 개선',
|
||||
'settings.magicPrompts.sidebar.item.planImplement': '계획 구현',
|
||||
@@ -1675,6 +1678,9 @@ export const settingsDict = {
|
||||
'settings.github.page.toast.ghCliEnabled': 'gh CLI 대체 활성화됨',
|
||||
'settings.github.page.toast.ghCliDisabled': 'gh CLI 대체 비활성화됨',
|
||||
'settings.github.page.toast.ghCliUpdateFailed': 'gh CLI 설정을 업데이트하지 못했습니다',
|
||||
'settings.github.page.customDomains.label': '사용자 지정 도메인',
|
||||
'settings.github.page.customDomains.description': '이 도메인에서 호스팅되는 저장소는 GitHub로 취급됩니다.',
|
||||
'settings.github.page.customDomains.placeholder': 'github.example.com, git.mycompany.com',
|
||||
'settings.gitlab.page.title': 'GitLab 개인 액세스 토큰',
|
||||
'settings.gitlab.page.description': '연결하려면 GitLab 개인 액세스 토큰을 붙여넣으세요. 자체 호스팅 GitLab 인스턴스를 사용하는 경우 기본 URL을 설정하세요.',
|
||||
'settings.gitlab.page.tooltip.connectAccount': '앱 내 이슈 및 병합 요청 워크플로에 GitLab 계정을 연결합니다.',
|
||||
@@ -1682,6 +1688,9 @@ export const settingsDict = {
|
||||
'settings.gitlab.page.accessToken.placeholder': 'GitLab 개인 액세스 토큰을 붙여넣으세요',
|
||||
'settings.gitlab.page.baseUrl.label': '기본 URL(선택 사항)',
|
||||
'settings.gitlab.page.baseUrl.placeholder': 'https://gitlab.com',
|
||||
'settings.gitlab.page.customDomains.label': '사용자 지정 도메인',
|
||||
'settings.gitlab.page.customDomains.description': '이 도메인에서 호스팅되는 저장소는 GitLab로 취급됩니다.',
|
||||
'settings.gitlab.page.customDomains.placeholder': 'gitlab.example.com, git.company.com',
|
||||
'settings.gitlab.page.actions.connect': 'GitLab 연결',
|
||||
'settings.gitlab.page.actions.disconnect': '연결 해제',
|
||||
'settings.gitlab.page.actions.switch': '전환',
|
||||
@@ -1698,6 +1707,32 @@ export const settingsDict = {
|
||||
'settings.gitlab.page.toast.disconnectFailed': 'GitLab 연결을 해제하지 못했습니다',
|
||||
'settings.gitlab.page.toast.accountSwitched': 'GitLab 계정이 전환되었습니다',
|
||||
'settings.gitlab.page.toast.accountSwitchFailed': 'GitLab 계정을 전환하지 못했습니다',
|
||||
'settings.gitea.page.title': 'Gitea / Forgejo 개인 액세스 토큰',
|
||||
'settings.gitea.page.description': '연결하려면 Gitea 또는 Forgejo 개인 액세스 토큰을 붙여넣으세요. 자체 호스팅 Gitea 또는 Forgejo 인스턴스를 사용하는 경우 기본 URL을 설정하세요.',
|
||||
'settings.gitea.page.tooltip.connectAccount': '앱 내 이슈 및 PR 워크플로에 Gitea 또는 Forgejo 계정을 연결합니다.',
|
||||
'settings.gitea.page.accessToken.label': '개인 액세스 토큰',
|
||||
'settings.gitea.page.accessToken.placeholder': 'Gitea 개인 액세스 토큰을 붙여넣으세요',
|
||||
'settings.gitea.page.baseUrl.label': '기본 URL(선택 사항)',
|
||||
'settings.gitea.page.baseUrl.placeholder': 'https://gitea.example.com',
|
||||
'settings.gitea.page.actions.connect': 'Gitea 연결',
|
||||
'settings.gitea.page.actions.disconnect': '연결 해제',
|
||||
'settings.gitea.page.actions.switch': '전환',
|
||||
'settings.gitea.page.status.notConnected': '연결되지 않음',
|
||||
'settings.gitea.page.label.unknownUser': '알 수 없음',
|
||||
'settings.gitea.page.label.otherAccounts': '기타 계정',
|
||||
'settings.gitea.page.avatarAlt.withLogin': '{login} 아바타',
|
||||
'settings.gitea.page.avatarAlt.fallback': 'Gitea 아바타',
|
||||
'settings.gitea.page.connectedAs': '연결된 계정:',
|
||||
'settings.gitea.page.errors.invalidToken': '유효한 Gitea 개인 액세스 토큰을 입력하세요',
|
||||
'settings.gitea.page.errors.failed': 'Gitea에 연결하지 못했습니다',
|
||||
'settings.gitea.page.toast.connected': 'Gitea에 연결되었습니다',
|
||||
'settings.gitea.page.toast.disconnected': 'Gitea 연결이 해제되었습니다',
|
||||
'settings.gitea.page.toast.disconnectFailed': 'Gitea 연결을 해제하지 못했습니다',
|
||||
'settings.gitea.page.toast.accountSwitched': 'Gitea 계정이 전환되었습니다',
|
||||
'settings.gitea.page.toast.accountSwitchFailed': 'Gitea 계정을 전환하지 못했습니다',
|
||||
'settings.gitea.page.customDomains.label': '사용자 지정 도메인',
|
||||
'settings.gitea.page.customDomains.description': '이 도메인에서 호스팅되는 저장소는 Gitea 또는 Forgejo로 취급됩니다.',
|
||||
'settings.gitea.page.customDomains.placeholder': 'gitea.example.com, git.company.com',
|
||||
'settings.notifications.page.delivery.title': '알림',
|
||||
'settings.notifications.page.delivery.enableAria': '알림 활성화',
|
||||
'settings.notifications.page.delivery.enableLabel': '알림 활성화',
|
||||
@@ -2083,6 +2118,10 @@ export const settingsDict = {
|
||||
'settings.magicPrompts.page.group.gitlabPrReview.description': 'GitLab MR 리뷰 flow에 사용하는 프롬프트입니다: 표시 사용자 메시지 + 숨겨진 지침 payload.',
|
||||
'settings.magicPrompts.page.group.gitlabIssueReview.title': '이슈 리뷰',
|
||||
'settings.magicPrompts.page.group.gitlabIssueReview.description': 'GitLab issue 리뷰 flow에 사용하는 프롬프트입니다: 표시 사용자 메시지 + 숨겨진 지침 payload.',
|
||||
'settings.magicPrompts.page.group.giteaPrReview.title': 'PR 리뷰',
|
||||
'settings.magicPrompts.page.group.giteaPrReview.description': 'Gitea PR 리뷰 flow에 사용하는 프롬프트입니다: 표시 사용자 메시지 + 숨겨진 지침 payload.',
|
||||
'settings.magicPrompts.page.group.giteaIssueReview.title': '이슈 리뷰',
|
||||
'settings.magicPrompts.page.group.giteaIssueReview.description': 'Gitea issue 리뷰 flow에 사용하는 프롬프트입니다: 표시 사용자 메시지 + 숨겨진 지침 payload.',
|
||||
'settings.magicPrompts.page.group.gitConflictResolve.title': 'Merge/Rebase 충돌 해결',
|
||||
'settings.magicPrompts.page.group.gitConflictResolve.description': 'AI로 merge/rebase 충돌을 해결할 때 사용하는 프롬프트입니다.',
|
||||
'settings.magicPrompts.page.group.gitCherrypickConflictResolve.title': 'Cherry-pick 충돌 해결',
|
||||
|
||||
@@ -1178,6 +1178,54 @@ export const dict: Record<I18nKey, string> = {
|
||||
'contextPanel.gitlabMr.mergeMr.merging': '병합 중...',
|
||||
'contextPanel.gitlabMr.mergeMr.toast.merged': '병합 요청이 병합되었습니다',
|
||||
'contextPanel.gitlabMr.mergeMr.toast.mergeFailed': '병합 요청 병합에 실패했습니다',
|
||||
'contextPanel.giteaPr.title': 'PR',
|
||||
'contextPanel.giteaPr.tabs.pullRequests': 'PR',
|
||||
'contextPanel.giteaPr.tabs.issues': '이슈',
|
||||
'contextPanel.giteaPr.branchSectionTitle': '현재 브랜치',
|
||||
'contextPanel.giteaPr.openPrTitle': '열린 PR',
|
||||
'contextPanel.giteaPr.listSectionTitle': '이 저장소',
|
||||
'contextPanel.giteaPr.openPrEmpty': '열린 PR이 없습니다',
|
||||
'contextPanel.giteaPr.noPrForBranch': '이 브랜치에 대한 PR이 없습니다',
|
||||
'contextPanel.giteaPr.loadContext': '컨텍스트 불러오기',
|
||||
'contextPanel.giteaPr.hideContext': '컨텍스트 숨기기',
|
||||
'contextPanel.giteaPr.openInGitea': 'Gitea에서 열기',
|
||||
'contextPanel.giteaPr.draft': '초안',
|
||||
'contextPanel.giteaPr.state.opened': '열림',
|
||||
'contextPanel.giteaPr.state.merged': '병합됨',
|
||||
'contextPanel.giteaPr.state.closed': '닫힘',
|
||||
'contextPanel.giteaPr.loadMore': '더 불러오기',
|
||||
'contextPanel.giteaPr.loading': '불러오는 중...',
|
||||
'contextPanel.giteaPr.error.loadFailed': 'PR을 불러오지 못했습니다',
|
||||
'contextPanel.giteaPr.error.notConnected': 'Gitea에 연결되지 않았습니다',
|
||||
'contextPanel.giteaPr.empty.noActiveProject': '활성 프로젝트가 없습니다',
|
||||
'contextPanel.giteaPr.actions.openSettings': '설정 열기',
|
||||
'contextPanel.giteaPr.issues.detail.back': '이슈로 돌아가기',
|
||||
'contextPanel.giteaPr.issues.detail.commentsEmpty': '댓글 없음',
|
||||
'contextPanel.giteaPr.issues.empty': '열린 이슈가 없습니다',
|
||||
'contextPanel.giteaPr.issues.error.loadFailed': '이슈를 불러오지 못했습니다',
|
||||
'contextPanel.giteaPr.issues.listSectionTitle': '열린 이슈',
|
||||
'contextPanel.giteaPr.createPr.title': '새 PR',
|
||||
'contextPanel.giteaPr.createPr.sourceBranch': '소스 브랜치',
|
||||
'contextPanel.giteaPr.createPr.targetBranch': '대상 브랜치',
|
||||
'contextPanel.giteaPr.createPr.titleLabel': '제목',
|
||||
'contextPanel.giteaPr.createPr.titlePlaceholder': 'PR 제목',
|
||||
'contextPanel.giteaPr.createPr.descriptionLabel': '설명',
|
||||
'contextPanel.giteaPr.createPr.removeSourceBranch': '병합 시 소스 브랜치 삭제',
|
||||
'contextPanel.giteaPr.createPr.submit': 'PR 만들기',
|
||||
'contextPanel.giteaPr.createPr.submitting': '만드는 중...',
|
||||
'contextPanel.giteaPr.createPr.branchesLoading': '브랜치 불러오는 중...',
|
||||
'contextPanel.giteaPr.createPr.toast.created': 'PR이 생성되었습니다',
|
||||
'contextPanel.giteaPr.createPr.toast.createFailed': 'PR 생성에 실패했습니다',
|
||||
'contextPanel.giteaPr.updatePr.toggle': '제목 및 설명 편집',
|
||||
'contextPanel.giteaPr.updatePr.save': '저장',
|
||||
'contextPanel.giteaPr.updatePr.saving': '저장 중...',
|
||||
'contextPanel.giteaPr.updatePr.toast.updated': 'PR이 업데이트되었습니다',
|
||||
'contextPanel.giteaPr.updatePr.toast.updateFailed': 'PR 업데이트에 실패했습니다',
|
||||
'contextPanel.giteaPr.mergePr.action': '병합',
|
||||
'contextPanel.giteaPr.mergePr.squash': '커밋 스쿼시',
|
||||
'contextPanel.giteaPr.mergePr.merging': '병합 중...',
|
||||
'contextPanel.giteaPr.mergePr.toast.merged': 'PR이 병합되었습니다',
|
||||
'contextPanel.giteaPr.mergePr.toast.mergeFailed': 'PR 병합에 실패했습니다',
|
||||
'contextRail.surface.editor.description': '프로젝트 파일 편집',
|
||||
'contextRail.surface.git.description': '커밋, 브랜치, 풀 리퀘스트',
|
||||
'contextRail.surface.git.changesCountAriaSingle': '{label}, 변경된 파일 {count}개',
|
||||
@@ -1936,6 +1984,39 @@ export const dict: Record<I18nKey, string> = {
|
||||
'session.gitlabIssuePicker.actions.createInWorktree': '워크트리에서 생성',
|
||||
'session.gitlabIssuePicker.actions.openRepo': '레포지토리 열기',
|
||||
'session.gitlabIssuePicker.actions.refresh': '새로고침',
|
||||
'session.giteaIssuePicker.error.noActiveProject': '활성 프로젝트가 없습니다',
|
||||
'session.giteaIssuePicker.error.runtimeUnavailable': 'Gitea 런타임 API를 사용할 수 없습니다',
|
||||
'session.giteaIssuePicker.error.notConnected': 'Gitea에 연결되어 있지 않습니다',
|
||||
'session.giteaIssuePicker.error.repoNotResolvable': '저장소를 확인할 수 없습니다',
|
||||
'session.giteaIssuePicker.error.repoMustBeGitea': 'origin 리모트는 Gitea URL이어야 합니다',
|
||||
'session.giteaIssuePicker.error.issueNotFound': '이슈를 찾을 수 없습니다',
|
||||
'session.giteaIssuePicker.error.noModelSelected': '선택된 모델이 없습니다',
|
||||
'session.giteaIssuePicker.toast.loadMoreFailed': '이슈를 더 불러오지 못했습니다',
|
||||
'session.giteaIssuePicker.toast.loadIssueDetailsFailed': '이슈 상세 정보를 불러오지 못했습니다',
|
||||
'session.giteaIssuePicker.toast.sendContextFailed': '이슈 컨텍스트 전송에 실패했습니다',
|
||||
'session.giteaIssuePicker.toast.sessionCreated': '이슈에서 세션을 생성했습니다',
|
||||
'session.giteaIssuePicker.toast.startSessionFailed': '세션 시작에 실패했습니다',
|
||||
'session.giteaIssuePicker.title.select': 'Gitea 이슈 연결',
|
||||
'session.giteaIssuePicker.title.createSession': 'Gitea 이슈로 새 세션 만들기',
|
||||
'session.giteaIssuePicker.description.select': '이 세션에 연결할 이슈를 선택하세요.',
|
||||
'session.giteaIssuePicker.description.createSession': '제목, 본문, 라벨, 댓글을 숨겨진 이슈 컨텍스트로 새 세션에 추가합니다.',
|
||||
'session.giteaIssuePicker.searchPlaceholder': '제목으로 검색하거나 이슈 URL을 붙여넣으세요',
|
||||
'session.giteaIssuePicker.empty.noActiveProject': '선택된 활성 프로젝트가 없습니다',
|
||||
'session.giteaIssuePicker.empty.runtimeUnavailable': 'Gitea 런타임 API를 사용할 수 없습니다.',
|
||||
'session.giteaIssuePicker.empty.notConnected': 'Gitea에 연결되지 않았습니다. 설정에서 Gitea 계정을 연결하세요.',
|
||||
'session.giteaIssuePicker.empty.noIssuesFound': '이슈 없음',
|
||||
'session.giteaIssuePicker.empty.noOpenIssuesFound': '열린 이슈가 없습니다',
|
||||
'session.giteaIssuePicker.loading.issues': '이슈 로드 중…',
|
||||
'session.giteaIssuePicker.loading.more': '로드 중…',
|
||||
'session.giteaIssuePicker.actions.openSettings': '설정 열기',
|
||||
'session.giteaIssuePicker.actions.useIssue': '이슈 #{number} 사용',
|
||||
'session.giteaIssuePicker.actions.openInGiteaAria': 'Gitea에서 열기',
|
||||
'session.giteaIssuePicker.actions.loadMore': '더 불러오기',
|
||||
'session.giteaIssuePicker.actions.sectionTitle': '작업',
|
||||
'session.giteaIssuePicker.actions.toggleWorktreeAria': '토글 워크트리',
|
||||
'session.giteaIssuePicker.actions.createInWorktree': '워크트리에서 생성',
|
||||
'session.giteaIssuePicker.actions.openRepo': '레포지토리 열기',
|
||||
'session.giteaIssuePicker.actions.refresh': '새로고침',
|
||||
'session.githubPrPicker.error.noActiveProject': '활성 프로젝트가 없습니다',
|
||||
'session.githubPrPicker.error.runtimeUnavailable': 'GitHub 런타임 API를 사용할 수 없습니다',
|
||||
'session.githubPrPicker.error.notConnected': 'GitHub에 연결되어 있지 않습니다',
|
||||
@@ -1984,6 +2065,30 @@ export const dict: Record<I18nKey, string> = {
|
||||
'session.gitlabMrPicker.actions.useMergeRequest': 'MR !{number} 사용',
|
||||
'session.gitlabMrPicker.actions.openInGitLabAria': 'GitLab에서 열기',
|
||||
'session.gitlabMrPicker.actions.loadMore': '더 불러오기',
|
||||
'session.giteaPrPicker.error.noActiveProject': '활성 프로젝트가 없습니다',
|
||||
'session.giteaPrPicker.error.runtimeUnavailable': 'Gitea 런타임 API를 사용할 수 없습니다',
|
||||
'session.giteaPrPicker.error.notConnected': 'Gitea에 연결되어 있지 않습니다',
|
||||
'session.giteaPrPicker.error.prNotFound': 'PR을 찾을 수 없습니다',
|
||||
'session.giteaPrPicker.error.repoNotResolvable': '저장소를 확인할 수 없습니다',
|
||||
'session.giteaPrPicker.error.repoMustBeGitea': 'origin 리모트는 Gitea URL이어야 합니다',
|
||||
'session.giteaPrPicker.toast.loadMoreFailed': 'PR을 더 불러오지 못했습니다',
|
||||
'session.giteaPrPicker.toast.loadDetailsFailed': 'PR 상세 정보를 불러오지 못했습니다',
|
||||
'session.giteaPrPicker.title': 'Gitea PR 연결',
|
||||
'session.giteaPrPicker.description': '이 메시지에 리뷰 컨텍스트로 첨부할 PR을 선택하세요.',
|
||||
'session.giteaPrPicker.searchPlaceholder': '제목으로 검색하거나 PR URL을 붙여넣으세요',
|
||||
'session.giteaPrPicker.includeDiffAria': 'PR 변경사항을 첨부 컨텍스트에 포함',
|
||||
'session.giteaPrPicker.includeDiff': 'PR 변경사항 포함',
|
||||
'session.giteaPrPicker.empty.noActiveProject': '선택된 활성 프로젝트가 없습니다',
|
||||
'session.giteaPrPicker.empty.runtimeUnavailable': 'Gitea 런타임 API를 사용할 수 없습니다.',
|
||||
'session.giteaPrPicker.empty.notConnected': 'Gitea에 연결되지 않았습니다. 설정에서 Gitea 계정을 연결하세요.',
|
||||
'session.giteaPrPicker.empty.noPullRequestsFound': 'PR이 없습니다',
|
||||
'session.giteaPrPicker.empty.noOpenPullRequestsFound': '열린 PR이 없습니다',
|
||||
'session.giteaPrPicker.loading.pullRequests': 'PR 불러오는 중…',
|
||||
'session.giteaPrPicker.loading.more': '로드 중…',
|
||||
'session.giteaPrPicker.actions.openSettings': '설정 열기',
|
||||
'session.giteaPrPicker.actions.usePullRequest': 'PR #{number} 사용',
|
||||
'session.giteaPrPicker.actions.openInGiteaAria': 'Gitea에서 열기',
|
||||
'session.giteaPrPicker.actions.loadMore': '더 불러오기',
|
||||
'session.newWorktree.title': '새 워크트리',
|
||||
'session.newWorktree.mode.newBranch': '새 브랜치',
|
||||
'session.newWorktree.mode.existingBranch': '기존 브랜치',
|
||||
@@ -2081,6 +2186,29 @@ export const dict: Record<I18nKey, string> = {
|
||||
'session.gitlabIntegration.validation.branchAlreadyExists': '브랜치가 이미 로컬에 있습니다',
|
||||
'session.gitlabIntegration.validation.failed': '유효성 검사에 실패했습니다',
|
||||
'session.gitlabIntegration.draftBadge': '초안',
|
||||
'session.giteaIntegration.title': 'Gitea에서 선택',
|
||||
'session.giteaIntegration.tabs.issues': '이슈',
|
||||
'session.giteaIntegration.tabs.pullRequests': 'PR',
|
||||
'session.giteaIntegration.connect.title': 'Gitea에 연결',
|
||||
'session.giteaIntegration.connect.description': '이슈 또는 PR를 연결해 워크트리 정보를 자동으로 채웁니다',
|
||||
'session.giteaIntegration.connect.action': 'Gitea 연결',
|
||||
'session.giteaIntegration.search.issuesPlaceholder': 'Gitea 이슈 검색',
|
||||
'session.giteaIntegration.search.prsPlaceholder': 'Gitea PR 검색',
|
||||
'session.giteaIntegration.empty.noIssuesFound': '이슈 없음',
|
||||
'session.giteaIntegration.empty.noPullRequestsFound': 'PR가 없습니다',
|
||||
'session.giteaIntegration.actions.loadMore': '더 불러오기',
|
||||
'session.giteaIntegration.actions.cancel': '취소',
|
||||
'session.giteaIntegration.actions.select': '선택',
|
||||
'session.giteaIntegration.selected.issueNumber': '이슈 #{number}',
|
||||
'session.giteaIntegration.selected.prNumber': 'PR #{number}',
|
||||
'session.giteaIntegration.includeDiffAria': 'PR 변경사항을 세션 컨텍스트에 포함',
|
||||
'session.giteaIntegration.includeDiff': 'PR 변경사항 포함',
|
||||
'session.giteaIntegration.error.notConnected': 'Gitea에 연결되어 있지 않습니다',
|
||||
'session.giteaIntegration.error.loadDataFailed': '데이터를 불러오지 못했습니다',
|
||||
'session.giteaIntegration.validation.branchAlreadyCheckedOut': '브랜치가 이미 워크트리에 체크아웃되어 있습니다',
|
||||
'session.giteaIntegration.validation.branchAlreadyExists': '브랜치가 이미 로컬에 있습니다',
|
||||
'session.giteaIntegration.validation.failed': '유효성 검사에 실패했습니다',
|
||||
'session.giteaIntegration.draftBadge': '초안',
|
||||
'chat.fileAttachment.toast.attachFailed': '첨부 파일 실패',
|
||||
'chat.fileAttachment.toast.someFilesSkipped': '일부 파일을 건너뛰었습니다:\n{summary}',
|
||||
'chat.fileAttachment.toast.vscodePickFailed': 'VS Code에서 파일 선택에 실패했습니다',
|
||||
@@ -2302,6 +2430,8 @@ export const dict: Record<I18nKey, string> = {
|
||||
'chat.chatInput.actions.linkGithubPr': 'GitHub PR 연결',
|
||||
'chat.chatInput.actions.linkGitlabIssue': 'GitLab 이슈 연결',
|
||||
'chat.chatInput.actions.linkGitlabMr': 'GitLab MR 연결',
|
||||
'chat.chatInput.actions.linkGiteaIssue': 'Gitea 이슈 연결',
|
||||
'chat.chatInput.actions.linkGiteaPr': 'Gitea PR 연결',
|
||||
'chat.chatInput.actions.modelAgentSettings': '모델 및 에이전트 설정',
|
||||
'chat.chatInput.actions.sendMessageAria': '보내기 메시지',
|
||||
'chat.chatInput.actions.queueMessageAria': '메시지 대기열에 추가',
|
||||
|
||||
@@ -318,6 +318,9 @@ export const settingsDict = {
|
||||
'settings.github.page.toast.ghCliEnabled': 'Rezerwa gh CLI włączona',
|
||||
'settings.github.page.toast.ghCliDisabled': 'Rezerwa gh CLI wyłączona',
|
||||
'settings.github.page.toast.ghCliUpdateFailed': 'Nie udało się zaktualizować ustawienia gh CLI',
|
||||
'settings.github.page.customDomains.label': 'Niestandardowe domeny',
|
||||
'settings.github.page.customDomains.description': 'Repozytoria hostowane na tych domenach będą traktowane jako GitHub.',
|
||||
'settings.github.page.customDomains.placeholder': 'github.example.com, git.mycompany.com',
|
||||
'settings.github.page.oauth.title': 'Token OAuth GitHub',
|
||||
'settings.github.page.ghCli.title': 'Token CLI GitHub',
|
||||
'settings.github.page.ghCli.activeDescription': 'Uwierzytelniono przez gh CLI',
|
||||
@@ -333,6 +336,9 @@ export const settingsDict = {
|
||||
'settings.gitlab.page.accessToken.placeholder': 'Wklej swój osobisty token dostępu GitLab',
|
||||
'settings.gitlab.page.baseUrl.label': 'Podstawowy URL (opcjonalnie)',
|
||||
'settings.gitlab.page.baseUrl.placeholder': 'https://gitlab.com',
|
||||
'settings.gitlab.page.customDomains.label': 'Niestandardowe domeny',
|
||||
'settings.gitlab.page.customDomains.description': 'Repozytoria hostowane na tych domenach będą traktowane jako GitLab.',
|
||||
'settings.gitlab.page.customDomains.placeholder': 'gitlab.example.com, git.company.com',
|
||||
'settings.gitlab.page.actions.connect': 'Połącz GitLab',
|
||||
'settings.gitlab.page.actions.disconnect': 'Odłącz',
|
||||
'settings.gitlab.page.actions.switch': 'Przełącz na',
|
||||
@@ -349,6 +355,32 @@ export const settingsDict = {
|
||||
'settings.gitlab.page.toast.disconnectFailed': 'Nie udało się odłączyć GitLab',
|
||||
'settings.gitlab.page.toast.accountSwitched': 'Konto GitLab zostało przełączone',
|
||||
'settings.gitlab.page.toast.accountSwitchFailed': 'Nie udało się przełączyć konta GitLab',
|
||||
'settings.gitea.page.title': 'Osobisty token dostępu Gitea / Forgejo',
|
||||
'settings.gitea.page.description': 'Wklej osobisty token dostępu Gitea lub Forgejo, aby się połączyć. Ustaw podstawowy adres URL, gdy używasz własnej instancji Gitea lub Forgejo.',
|
||||
'settings.gitea.page.tooltip.connectAccount': 'Połącz konto Gitea lub Forgejo, aby korzystać z przepływów pracy dla Issues i Pull Requestów w aplikacji.',
|
||||
'settings.gitea.page.accessToken.label': 'Osobisty token dostępu',
|
||||
'settings.gitea.page.accessToken.placeholder': 'Wklej swój osobisty token dostępu Gitea',
|
||||
'settings.gitea.page.baseUrl.label': 'Podstawowy URL (opcjonalnie)',
|
||||
'settings.gitea.page.baseUrl.placeholder': 'https://gitea.example.com',
|
||||
'settings.gitea.page.actions.connect': 'Połącz Gitea',
|
||||
'settings.gitea.page.actions.disconnect': 'Odłącz',
|
||||
'settings.gitea.page.actions.switch': 'Przełącz na',
|
||||
'settings.gitea.page.status.notConnected': 'Brak połączenia',
|
||||
'settings.gitea.page.label.unknownUser': 'nieznany',
|
||||
'settings.gitea.page.label.otherAccounts': 'Inne konta',
|
||||
'settings.gitea.page.avatarAlt.withLogin': 'Awatar {login}',
|
||||
'settings.gitea.page.avatarAlt.fallback': 'Awatar Gitea',
|
||||
'settings.gitea.page.connectedAs': 'Połączono jako',
|
||||
'settings.gitea.page.errors.invalidToken': 'Wprowadź prawidłowy osobisty token dostępu Gitea',
|
||||
'settings.gitea.page.errors.failed': 'Nie udało się połączyć z Gitea',
|
||||
'settings.gitea.page.toast.connected': 'Połączono z Gitea',
|
||||
'settings.gitea.page.toast.disconnected': 'Odłączono od Gitea',
|
||||
'settings.gitea.page.toast.disconnectFailed': 'Nie udało się odłączyć Gitea',
|
||||
'settings.gitea.page.toast.accountSwitched': 'Konto Gitea zostało przełączone',
|
||||
'settings.gitea.page.toast.accountSwitchFailed': 'Nie udało się przełączyć konta Gitea',
|
||||
'settings.gitea.page.customDomains.label': 'Niestandardowe domeny',
|
||||
'settings.gitea.page.customDomains.description': 'Repozytoria hostowane na tych domenach będą traktowane jako Gitea lub Forgejo.',
|
||||
'settings.gitea.page.customDomains.placeholder': 'gitea.example.com, git.company.com',
|
||||
'settings.magicPrompts.page.actions.resetAllOverrides': 'Zresetuj wszystkie nadpisania',
|
||||
'settings.magicPrompts.page.actions.resetToDefault': 'Zresetuj do domyślnych',
|
||||
'settings.magicPrompts.page.actions.resetting': 'Resetowanie...',
|
||||
@@ -376,6 +408,10 @@ export const settingsDict = {
|
||||
'settings.magicPrompts.page.group.gitlabPrReview.description': 'Prompty używane w przepływie przeglądu MR GitLab: widoczna wiadomość użytkownika + ukryty ładunek instrukcji.',
|
||||
'settings.magicPrompts.page.group.gitlabIssueReview.title': 'Przegląd Issue',
|
||||
'settings.magicPrompts.page.group.gitlabIssueReview.description': 'Prompty używane w przepływie przeglądu Issue GitLab: widoczna wiadomość użytkownika + ukryty ładunek instrukcji.',
|
||||
'settings.magicPrompts.page.group.giteaPrReview.title': 'Przegląd PR',
|
||||
'settings.magicPrompts.page.group.giteaPrReview.description': 'Prompty używane w przepływie przeglądu PR Gitea: widoczna wiadomość użytkownika + ukryty ładunek instrukcji.',
|
||||
'settings.magicPrompts.page.group.giteaIssueReview.title': 'Przegląd Issue',
|
||||
'settings.magicPrompts.page.group.giteaIssueReview.description': 'Prompty używane w przepływie przeglądu Issue Gitea: widoczna wiadomość użytkownika + ukryty ładunek instrukcji.',
|
||||
'settings.magicPrompts.page.group.githubSinglePrCommentReview.title': 'Przegląd pojedynczego komentarza PR',
|
||||
'settings.magicPrompts.page.group.planImplement.description': 'Ukryty prompt używany podczas przesyłania zapisanego planu do przepływu implementacji.',
|
||||
'settings.magicPrompts.page.group.planImplement.title': 'Implementuj Plan',
|
||||
@@ -418,6 +454,7 @@ export const settingsDict = {
|
||||
'settings.magicPrompts.sidebar.group.git': 'Git',
|
||||
'settings.magicPrompts.sidebar.group.github': 'GitHub',
|
||||
'settings.magicPrompts.sidebar.group.gitlab': 'GitLab',
|
||||
'settings.magicPrompts.sidebar.group.gitea': 'Gitea',
|
||||
'settings.magicPrompts.sidebar.group.planning': 'Planowanie',
|
||||
'settings.magicPrompts.sidebar.group.session': 'Sesja',
|
||||
'settings.magicPrompts.sidebar.item.gitCherrypickConflictResolve': 'Rozwiązywanie konfliktów Cherry-pick',
|
||||
@@ -431,6 +468,8 @@ export const settingsDict = {
|
||||
'settings.magicPrompts.sidebar.item.githubSinglePrCommentReview': 'Przegląd pojedynczego komentarza PR',
|
||||
'settings.magicPrompts.sidebar.item.gitlabPrReview': 'Przegląd MR',
|
||||
'settings.magicPrompts.sidebar.item.gitlabIssueReview': 'Przegląd Issue',
|
||||
'settings.magicPrompts.sidebar.item.giteaPrReview': 'Przegląd PR',
|
||||
'settings.magicPrompts.sidebar.item.giteaIssueReview': 'Przegląd Issue',
|
||||
'settings.magicPrompts.sidebar.item.planImplement': 'Implementuj Plan',
|
||||
'settings.magicPrompts.sidebar.item.planImprove': 'Ulepsz Plan',
|
||||
'settings.magicPrompts.sidebar.item.planTodo': 'Planowanie Todo',
|
||||
|
||||
@@ -705,6 +705,29 @@ export const dict: Record<I18nKey, string> = {
|
||||
'session.gitlabIntegration.validation.branchAlreadyExists': 'Gałąź już istnieje lokalnie',
|
||||
'session.gitlabIntegration.validation.failed': 'Walidacja nie powiodła się',
|
||||
'session.gitlabIntegration.draftBadge': 'Szkic',
|
||||
'session.giteaIntegration.title': 'Wybierz z Gitea',
|
||||
'session.giteaIntegration.tabs.issues': 'Zagadnienia',
|
||||
'session.giteaIntegration.tabs.pullRequests': 'Pull requesty',
|
||||
'session.giteaIntegration.connect.title': 'Połącz z Gitea',
|
||||
'session.giteaIntegration.connect.description': 'Połącz zagadnienia lub pull requesty aby auto-wypełnić szczegóły drzewa pracy',
|
||||
'session.giteaIntegration.connect.action': 'Połącz Gitea',
|
||||
'session.giteaIntegration.search.issuesPlaceholder': 'Szukaj zagadnień Gitea',
|
||||
'session.giteaIntegration.search.prsPlaceholder': 'Szukaj pull requestów Gitea',
|
||||
'session.giteaIntegration.empty.noIssuesFound': 'Nie znaleziono zagadnień',
|
||||
'session.giteaIntegration.empty.noPullRequestsFound': 'Nie znaleziono pull requestów',
|
||||
'session.giteaIntegration.actions.loadMore': 'Załaduj więcej',
|
||||
'session.giteaIntegration.actions.cancel': 'Anuluj',
|
||||
'session.giteaIntegration.actions.select': 'Wybierz',
|
||||
'session.giteaIntegration.selected.issueNumber': 'Zagadnienie #{number}',
|
||||
'session.giteaIntegration.selected.prNumber': 'PR #{number}',
|
||||
'session.giteaIntegration.includeDiffAria': 'Dołącz diff PR do kontekstu sesji',
|
||||
'session.giteaIntegration.includeDiff': 'Dołącz diff PR',
|
||||
'session.giteaIntegration.error.notConnected': 'Gitea nie jest połączony',
|
||||
'session.giteaIntegration.error.loadDataFailed': 'Nie udało się załadować danych',
|
||||
'session.giteaIntegration.validation.branchAlreadyCheckedOut': 'Gałąź jest już wyewidencjonowana w drzewie pracy',
|
||||
'session.giteaIntegration.validation.branchAlreadyExists': 'Gałąź już istnieje lokalnie',
|
||||
'session.giteaIntegration.validation.failed': 'Walidacja nie powiodła się',
|
||||
'session.giteaIntegration.draftBadge': 'Szkic',
|
||||
'chat.fileAttachment.toast.attachFailed': 'Nie udało się dołączyć pliku',
|
||||
'chat.fileAttachment.toast.someFilesSkipped': 'Niektóre pliki zostały pominięte:\n{summary}',
|
||||
'chat.fileAttachment.toast.vscodePickFailed': 'Nie udało się wybrać plików w VS Code',
|
||||
@@ -1204,6 +1227,8 @@ export const dict: Record<I18nKey, string> = {
|
||||
'chat.chatInput.actions.linkGithubPr': 'Link GitHub PR',
|
||||
'chat.chatInput.actions.linkGitlabIssue': 'Połącz zgłoszenie GitLab',
|
||||
'chat.chatInput.actions.linkGitlabMr': 'Połącz merge request GitLab',
|
||||
'chat.chatInput.actions.linkGiteaIssue': 'Połącz zgłoszenie Gitea',
|
||||
'chat.chatInput.actions.linkGiteaPr': 'Połącz pull request Gitea',
|
||||
'chat.chatInput.actions.modelAgentSettings': 'Model and agent settings',
|
||||
'chat.chatInput.actions.queueMessageAria': 'Queue message',
|
||||
'chat.chatInput.actions.sendMessageAria': 'Send message',
|
||||
@@ -1506,6 +1531,54 @@ export const dict: Record<I18nKey, string> = {
|
||||
'contextPanel.gitlabMr.mergeMr.merging': 'Scalanie...',
|
||||
'contextPanel.gitlabMr.mergeMr.toast.merged': 'Żądanie scalenia scalone',
|
||||
'contextPanel.gitlabMr.mergeMr.toast.mergeFailed': 'Nie udało się scalić żądania scalenia',
|
||||
'contextPanel.giteaPr.title': 'Pull requesty',
|
||||
'contextPanel.giteaPr.tabs.pullRequests': 'Pull requesty',
|
||||
'contextPanel.giteaPr.tabs.issues': 'Zgłoszenia',
|
||||
'contextPanel.giteaPr.branchSectionTitle': 'Bieżąca gałąź',
|
||||
'contextPanel.giteaPr.openPrTitle': 'Otwarte pull requesta',
|
||||
'contextPanel.giteaPr.listSectionTitle': 'W tym repozytorium',
|
||||
'contextPanel.giteaPr.openPrEmpty': 'Brak otwartych pull requestów',
|
||||
'contextPanel.giteaPr.noPrForBranch': 'Brak pull requesta dla tej gałęzi',
|
||||
'contextPanel.giteaPr.loadContext': 'Wczytaj kontekst',
|
||||
'contextPanel.giteaPr.hideContext': 'Ukryj kontekst',
|
||||
'contextPanel.giteaPr.openInGitea': 'Otwórz w Gitea',
|
||||
'contextPanel.giteaPr.draft': 'Wersja robocza',
|
||||
'contextPanel.giteaPr.state.opened': 'Otwarte',
|
||||
'contextPanel.giteaPr.state.merged': 'Scalone',
|
||||
'contextPanel.giteaPr.state.closed': 'Zamknięte',
|
||||
'contextPanel.giteaPr.loadMore': 'Wczytaj więcej',
|
||||
'contextPanel.giteaPr.loading': 'Wczytywanie...',
|
||||
'contextPanel.giteaPr.error.loadFailed': 'Nie udało się wczytać pull requestów',
|
||||
'contextPanel.giteaPr.error.notConnected': 'Gitea nie jest połączony',
|
||||
'contextPanel.giteaPr.empty.noActiveProject': 'Brak aktywnego projektu',
|
||||
'contextPanel.giteaPr.actions.openSettings': 'Otwórz ustawienia',
|
||||
'contextPanel.giteaPr.issues.detail.back': 'Wróć do zgłoszeń',
|
||||
'contextPanel.giteaPr.issues.detail.commentsEmpty': 'Brak komentarzy',
|
||||
'contextPanel.giteaPr.issues.empty': 'Brak otwartych zgłoszeń',
|
||||
'contextPanel.giteaPr.issues.error.loadFailed': 'Nie udało się załadować zgłoszeń',
|
||||
'contextPanel.giteaPr.issues.listSectionTitle': 'Otwarte zgłoszenia',
|
||||
'contextPanel.giteaPr.createPr.title': 'Nowe pull request',
|
||||
'contextPanel.giteaPr.createPr.sourceBranch': 'Gałąź źródłowa',
|
||||
'contextPanel.giteaPr.createPr.targetBranch': 'Gałąź docelowa',
|
||||
'contextPanel.giteaPr.createPr.titleLabel': 'Tytuł',
|
||||
'contextPanel.giteaPr.createPr.titlePlaceholder': 'Tytuł pull requesta',
|
||||
'contextPanel.giteaPr.createPr.descriptionLabel': 'Opis',
|
||||
'contextPanel.giteaPr.createPr.removeSourceBranch': 'Usuń gałąź źródłową po scaleniu',
|
||||
'contextPanel.giteaPr.createPr.submit': 'Utwórz pull request',
|
||||
'contextPanel.giteaPr.createPr.submitting': 'Tworzenie...',
|
||||
'contextPanel.giteaPr.createPr.branchesLoading': 'Wczytywanie gałęzi...',
|
||||
'contextPanel.giteaPr.createPr.toast.created': 'Utworzono pull request',
|
||||
'contextPanel.giteaPr.createPr.toast.createFailed': 'Nie udało się utworzyć pull requesta',
|
||||
'contextPanel.giteaPr.updatePr.toggle': 'Edytuj tytuł i opis',
|
||||
'contextPanel.giteaPr.updatePr.save': 'Zapisz',
|
||||
'contextPanel.giteaPr.updatePr.saving': 'Zapisywanie...',
|
||||
'contextPanel.giteaPr.updatePr.toast.updated': 'Zaktualizowano pull request',
|
||||
'contextPanel.giteaPr.updatePr.toast.updateFailed': 'Nie udało się zaktualizować pull requesta',
|
||||
'contextPanel.giteaPr.mergePr.action': 'Scal',
|
||||
'contextPanel.giteaPr.mergePr.squash': 'Składuj commity',
|
||||
'contextPanel.giteaPr.mergePr.merging': 'Scalanie...',
|
||||
'contextPanel.giteaPr.mergePr.toast.merged': 'Pull request scalone',
|
||||
'contextPanel.giteaPr.mergePr.toast.mergeFailed': 'Nie udało się scalić pull requesta',
|
||||
'contextRail.surface.editor.description': 'Edytuj pliki projektu',
|
||||
'contextRail.surface.git.description': 'Commity, gałęzie i pull requesty',
|
||||
'contextRail.surface.git.changesCountAriaSingle': '{label}, {count} zmieniony plik',
|
||||
@@ -2764,6 +2837,39 @@ export const dict: Record<I18nKey, string> = {
|
||||
'session.gitlabIssuePicker.actions.openRepo': 'Otwórz repozytorium',
|
||||
'session.gitlabIssuePicker.actions.openSettings': 'Otwórz ustawienia',
|
||||
'session.gitlabIssuePicker.actions.refresh': 'Odśwież',
|
||||
'session.giteaIssuePicker.error.noActiveProject': 'Brak aktywnego projektu',
|
||||
'session.giteaIssuePicker.error.runtimeUnavailable': 'API środowiska Gitea jest niedostępne',
|
||||
'session.giteaIssuePicker.error.notConnected': 'Gitea nie jest połączony',
|
||||
'session.giteaIssuePicker.error.repoNotResolvable': 'Nie udało się rozpoznać repozytorium',
|
||||
'session.giteaIssuePicker.error.repoMustBeGitea': 'remote origin musi być adresem URL Gitea',
|
||||
'session.giteaIssuePicker.error.issueNotFound': 'Nie znaleziono zgłoszenia',
|
||||
'session.giteaIssuePicker.error.noModelSelected': 'Nie wybrano modelu',
|
||||
'session.giteaIssuePicker.toast.loadMoreFailed': 'Nie udało się załadować kolejnych zgłoszeń',
|
||||
'session.giteaIssuePicker.toast.loadIssueDetailsFailed': 'Nie udało się załadować szczegółów zgłoszenia',
|
||||
'session.giteaIssuePicker.toast.sendContextFailed': 'Nie udało się wysłać kontekstu zgłoszenia',
|
||||
'session.giteaIssuePicker.toast.sessionCreated': 'Sesja utworzona ze zgłoszenia',
|
||||
'session.giteaIssuePicker.toast.startSessionFailed': 'Nie udało się uruchomić sesji',
|
||||
'session.giteaIssuePicker.title.select': 'Połącz zgłoszenie Gitea',
|
||||
'session.giteaIssuePicker.title.createSession': 'Nowa sesja ze zgłoszenia Gitea',
|
||||
'session.giteaIssuePicker.description.select': 'Wybierz zgłoszenie, które chcesz powiązać z tą sesją.',
|
||||
'session.giteaIssuePicker.description.createSession': 'Tworzy nową sesję z ukrytym kontekstem zgłoszenia (tytuł/treść/etykiety/komentarze).',
|
||||
'session.giteaIssuePicker.searchPlaceholder': 'Szukaj po tytule lub wklej adres URL zgłoszenia',
|
||||
'session.giteaIssuePicker.empty.noActiveProject': 'Nie wybrano aktywnego projektu.',
|
||||
'session.giteaIssuePicker.empty.runtimeUnavailable': 'API środowiska Gitea jest niedostępne.',
|
||||
'session.giteaIssuePicker.empty.notConnected': 'Gitea nie jest połączony. Połącz konto Gitea w ustawieniach.',
|
||||
'session.giteaIssuePicker.empty.noIssuesFound': 'Nie znaleziono zgłoszeń',
|
||||
'session.giteaIssuePicker.empty.noOpenIssuesFound': 'Nie znaleziono otwartych zgłoszeń',
|
||||
'session.giteaIssuePicker.loading.issues': 'Ładowanie zgłoszeń...',
|
||||
'session.giteaIssuePicker.loading.more': 'Ładowanie...',
|
||||
'session.giteaIssuePicker.actions.openSettings': 'Otwórz ustawienia',
|
||||
'session.giteaIssuePicker.actions.useIssue': 'Użyj zgłoszenia #{number}',
|
||||
'session.giteaIssuePicker.actions.openInGiteaAria': 'Otwórz w Gitea',
|
||||
'session.giteaIssuePicker.actions.loadMore': 'Załaduj więcej',
|
||||
'session.giteaIssuePicker.actions.sectionTitle': 'Akcje',
|
||||
'session.giteaIssuePicker.actions.toggleWorktreeAria': 'Przełącz drzewo pracy',
|
||||
'session.giteaIssuePicker.actions.createInWorktree': 'Utwórz w drzewie pracy',
|
||||
'session.giteaIssuePicker.actions.openRepo': 'Otwórz repozytorium',
|
||||
'session.giteaIssuePicker.actions.refresh': 'Odśwież',
|
||||
'session.gitlabIssuePicker.actions.sectionTitle': 'Akcje',
|
||||
'session.gitlabIssuePicker.actions.toggleWorktreeAria': 'Przełącz drzewo pracy',
|
||||
'session.gitlabIssuePicker.actions.useIssue': 'Użyj zgłoszenia #{number}',
|
||||
@@ -2816,6 +2922,30 @@ export const dict: Record<I18nKey, string> = {
|
||||
'session.githubPrPicker.toast.loadDetailsFailed': 'Nie udało się załadować szczegółów pull requesta',
|
||||
'session.githubPrPicker.toast.loadMoreFailed': 'Nie udało się załadować kolejnych pull requestów',
|
||||
'session.gitlabMrPicker.actions.loadMore': 'Załaduj więcej',
|
||||
'session.giteaPrPicker.error.noActiveProject': 'Brak aktywnego projektu',
|
||||
'session.giteaPrPicker.error.runtimeUnavailable': 'API środowiska Gitea jest niedostępne',
|
||||
'session.giteaPrPicker.error.notConnected': 'Gitea nie jest połączony',
|
||||
'session.giteaPrPicker.error.prNotFound': 'Nie znaleziono pull requesta',
|
||||
'session.giteaPrPicker.error.repoNotResolvable': 'Nie udało się rozpoznać repozytorium',
|
||||
'session.giteaPrPicker.error.repoMustBeGitea': 'remote origin musi być adresem URL Gitea',
|
||||
'session.giteaPrPicker.toast.loadMoreFailed': 'Nie udało się załadować kolejnych pull requestów',
|
||||
'session.giteaPrPicker.toast.loadDetailsFailed': 'Nie udało się załadować szczegółów pull requesta',
|
||||
'session.giteaPrPicker.title': 'Połącz pull request Gitea',
|
||||
'session.giteaPrPicker.description': 'Wybierz pull request, aby dołączyć kontekst recenzji do tej wiadomości.',
|
||||
'session.giteaPrPicker.searchPlaceholder': 'Szukaj po tytule lub wklej adres URL pull requesta',
|
||||
'session.giteaPrPicker.includeDiffAria': 'Dołącz diff PR do załączonego kontekstu',
|
||||
'session.giteaPrPicker.includeDiff': 'Dołącz diff PR',
|
||||
'session.giteaPrPicker.empty.noActiveProject': 'Nie wybrano aktywnego projektu.',
|
||||
'session.giteaPrPicker.empty.runtimeUnavailable': 'API środowiska Gitea jest niedostępne.',
|
||||
'session.giteaPrPicker.empty.notConnected': 'Gitea nie jest połączony. Połącz konto Gitea w ustawieniach.',
|
||||
'session.giteaPrPicker.empty.noPullRequestsFound': 'Nie znaleziono pull requestów',
|
||||
'session.giteaPrPicker.empty.noOpenPullRequestsFound': 'Nie znaleziono otwartych pull requestów',
|
||||
'session.giteaPrPicker.loading.pullRequests': 'Ładowanie pull requestów...',
|
||||
'session.giteaPrPicker.loading.more': 'Ładowanie...',
|
||||
'session.giteaPrPicker.actions.openSettings': 'Otwórz ustawienia',
|
||||
'session.giteaPrPicker.actions.usePullRequest': 'Użyj pull requesta #{number}',
|
||||
'session.giteaPrPicker.actions.openInGiteaAria': 'Otwórz w Gitea',
|
||||
'session.giteaPrPicker.actions.loadMore': 'Załaduj więcej',
|
||||
'session.gitlabMrPicker.actions.openInGitLabAria': 'Otwórz w GitLab',
|
||||
'session.gitlabMrPicker.actions.openSettings': 'Otwórz ustawienia',
|
||||
'session.gitlabMrPicker.actions.useMergeRequest': 'Użyj merge requesta !{number}',
|
||||
|
||||
@@ -227,6 +227,7 @@ export const settingsDict = {
|
||||
"settings.magicPrompts.sidebar.group.git": "Git",
|
||||
"settings.magicPrompts.sidebar.group.github": "GitHub",
|
||||
"settings.magicPrompts.sidebar.group.gitlab": "GitLab",
|
||||
"settings.magicPrompts.sidebar.group.gitea": "Gitea",
|
||||
"settings.magicPrompts.sidebar.group.planning": "Planejamento",
|
||||
"settings.magicPrompts.sidebar.group.session": "Sessão",
|
||||
"settings.magicPrompts.sidebar.item.gitCommitGenerate": "Geração de commit",
|
||||
@@ -240,6 +241,8 @@ export const settingsDict = {
|
||||
"settings.magicPrompts.sidebar.item.githubSinglePrCommentReview": "Revisão de comentário único de PR",
|
||||
"settings.magicPrompts.sidebar.item.gitlabPrReview": "Revisão de MR",
|
||||
"settings.magicPrompts.sidebar.item.gitlabIssueReview": "Revisão de issue",
|
||||
"settings.magicPrompts.sidebar.item.giteaPrReview": "Revisão de PR",
|
||||
"settings.magicPrompts.sidebar.item.giteaIssueReview": "Revisão de issue",
|
||||
"settings.magicPrompts.sidebar.item.planTodo": "Planejar Todo",
|
||||
"settings.magicPrompts.sidebar.item.planImprove": "Melhorar plano",
|
||||
"settings.magicPrompts.sidebar.item.planImplement": "Implementar plano",
|
||||
@@ -1675,6 +1678,9 @@ export const settingsDict = {
|
||||
"settings.github.page.toast.ghCliEnabled": "Alternativa gh CLI ativada",
|
||||
"settings.github.page.toast.ghCliDisabled": "Alternativa gh CLI desativada",
|
||||
"settings.github.page.toast.ghCliUpdateFailed": "Falha ao atualizar configuração do gh CLI",
|
||||
"settings.github.page.customDomains.label": "Domínios personalizados",
|
||||
"settings.github.page.customDomains.description": "Repositórios hospedados nesses domínios serão tratados como GitHub.",
|
||||
"settings.github.page.customDomains.placeholder": "github.example.com, git.mycompany.com",
|
||||
"settings.gitlab.page.title": "Token de acesso pessoal do GitLab",
|
||||
"settings.gitlab.page.description": "Cole um token de acesso pessoal do GitLab para conectar. Defina a URL base ao usar uma instância GitLab auto-hospedada.",
|
||||
"settings.gitlab.page.tooltip.connectAccount": "Conecte uma conta do GitLab para fluxos de trabalho de issues e merge requests no aplicativo.",
|
||||
@@ -1682,6 +1688,9 @@ export const settingsDict = {
|
||||
"settings.gitlab.page.accessToken.placeholder": "Cole seu token de acesso pessoal do GitLab",
|
||||
"settings.gitlab.page.baseUrl.label": "URL base (opcional)",
|
||||
"settings.gitlab.page.baseUrl.placeholder": "https://gitlab.com",
|
||||
"settings.gitlab.page.customDomains.label": "Domínios personalizados",
|
||||
"settings.gitlab.page.customDomains.description": "Repositórios hospedados nesses domínios serão tratados como GitLab.",
|
||||
"settings.gitlab.page.customDomains.placeholder": "gitlab.example.com, git.company.com",
|
||||
"settings.gitlab.page.actions.connect": "Conectar GitLab",
|
||||
"settings.gitlab.page.actions.disconnect": "Desconectar",
|
||||
"settings.gitlab.page.actions.switch": "Alternar para",
|
||||
@@ -1698,6 +1707,32 @@ export const settingsDict = {
|
||||
"settings.gitlab.page.toast.disconnectFailed": "Falha ao desconectar o GitLab",
|
||||
"settings.gitlab.page.toast.accountSwitched": "Conta do GitLab alterada",
|
||||
"settings.gitlab.page.toast.accountSwitchFailed": "Falha ao alternar a conta do GitLab",
|
||||
"settings.gitea.page.title": "Token de acesso pessoal do Gitea / Forgejo",
|
||||
"settings.gitea.page.description": "Cole um token de acesso pessoal do Gitea ou Forgejo para conectar. Defina a URL base ao usar uma instância Gitea ou Forgejo auto-hospedada.",
|
||||
"settings.gitea.page.tooltip.connectAccount": "Conecte uma conta do Gitea ou Forgejo para fluxos de trabalho de issues e PRs no aplicativo.",
|
||||
"settings.gitea.page.accessToken.label": "Token de acesso pessoal",
|
||||
"settings.gitea.page.accessToken.placeholder": "Cole seu token de acesso pessoal do Gitea",
|
||||
"settings.gitea.page.baseUrl.label": "URL base (opcional)",
|
||||
"settings.gitea.page.baseUrl.placeholder": "https://gitea.example.com",
|
||||
"settings.gitea.page.actions.connect": "Conectar Gitea",
|
||||
"settings.gitea.page.actions.disconnect": "Desconectar",
|
||||
"settings.gitea.page.actions.switch": "Alternar para",
|
||||
"settings.gitea.page.status.notConnected": "Não conectado",
|
||||
"settings.gitea.page.label.unknownUser": "desconhecido",
|
||||
"settings.gitea.page.label.otherAccounts": "Outras contas",
|
||||
"settings.gitea.page.avatarAlt.withLogin": "Avatar de {login}",
|
||||
"settings.gitea.page.avatarAlt.fallback": "Avatar do Gitea",
|
||||
"settings.gitea.page.connectedAs": "Conectado como",
|
||||
"settings.gitea.page.errors.invalidToken": "Insira um token de acesso pessoal do Gitea válido",
|
||||
"settings.gitea.page.errors.failed": "Falha ao conectar o Gitea",
|
||||
"settings.gitea.page.toast.connected": "Gitea conectado",
|
||||
"settings.gitea.page.toast.disconnected": "Gitea desconectado",
|
||||
"settings.gitea.page.toast.disconnectFailed": "Falha ao desconectar o Gitea",
|
||||
"settings.gitea.page.toast.accountSwitched": "Conta do Gitea alterada",
|
||||
"settings.gitea.page.toast.accountSwitchFailed": "Falha ao alternar a conta do Gitea",
|
||||
"settings.gitea.page.customDomains.label": "Domínios personalizados",
|
||||
"settings.gitea.page.customDomains.description": "Repositórios hospedados nesses domínios serão tratados como Gitea ou Forgejo.",
|
||||
"settings.gitea.page.customDomains.placeholder": "gitea.example.com, git.company.com",
|
||||
"settings.notifications.page.delivery.title": "Entrega de notificações",
|
||||
"settings.notifications.page.delivery.enableAria": "Ativar notificações",
|
||||
"settings.notifications.page.delivery.enableLabel": "Ativar notificações",
|
||||
@@ -2083,6 +2118,10 @@ export const settingsDict = {
|
||||
"settings.magicPrompts.page.group.gitlabPrReview.description": "Prompts usados para o fluxo de revisão de MR do GitLab: mensagem visível do usuário + carga de instruções ocultas.",
|
||||
"settings.magicPrompts.page.group.gitlabIssueReview.title": "Revisão de issue",
|
||||
"settings.magicPrompts.page.group.gitlabIssueReview.description": "Prompts usados para o fluxo de revisão de issue do GitLab: mensagem visível do usuário + carga de instruções ocultas.",
|
||||
"settings.magicPrompts.page.group.giteaPrReview.title": "Revisão de PR",
|
||||
"settings.magicPrompts.page.group.giteaPrReview.description": "Prompts usados para o fluxo de revisão de PR do Gitea: mensagem visível do usuário + carga de instruções ocultas.",
|
||||
"settings.magicPrompts.page.group.giteaIssueReview.title": "Revisão de issue",
|
||||
"settings.magicPrompts.page.group.giteaIssueReview.description": "Prompts usados para o fluxo de revisão de issue do Gitea: mensagem visível do usuário + carga de instruções ocultas.",
|
||||
"settings.magicPrompts.page.group.gitConflictResolve.title": "Resolução de conflitos de merge/rebase",
|
||||
"settings.magicPrompts.page.group.gitConflictResolve.description": "Prompts usados ao resolver conflitos de merge/rebase com IA.",
|
||||
"settings.magicPrompts.page.group.gitCherrypickConflictResolve.title": "Resolução de conflitos de cherry-pick",
|
||||
|
||||
@@ -1178,6 +1178,54 @@ export const dict: Record<I18nKey, string> = {
|
||||
"contextPanel.gitlabMr.mergeMr.merging": "Mesclando...",
|
||||
"contextPanel.gitlabMr.mergeMr.toast.merged": "Solicitação de merge mesclada",
|
||||
"contextPanel.gitlabMr.mergeMr.toast.mergeFailed": "Falha ao mesclar solicitação de merge",
|
||||
"contextPanel.giteaPr.title": "PR",
|
||||
"contextPanel.giteaPr.tabs.pullRequests": "PR",
|
||||
"contextPanel.giteaPr.tabs.issues": "Issues",
|
||||
"contextPanel.giteaPr.branchSectionTitle": "Branch atual",
|
||||
"contextPanel.giteaPr.openPrTitle": "PR abertas",
|
||||
"contextPanel.giteaPr.listSectionTitle": "Neste repositório",
|
||||
"contextPanel.giteaPr.openPrEmpty": "Nenhuma PR aberta",
|
||||
"contextPanel.giteaPr.noPrForBranch": "Nenhuma PR para esta branch",
|
||||
"contextPanel.giteaPr.loadContext": "Carregar contexto",
|
||||
"contextPanel.giteaPr.hideContext": "Ocultar contexto",
|
||||
"contextPanel.giteaPr.openInGitea": "Abrir no Gitea",
|
||||
"contextPanel.giteaPr.draft": "Rascunho",
|
||||
"contextPanel.giteaPr.state.opened": "Aberta",
|
||||
"contextPanel.giteaPr.state.merged": "Mesclada",
|
||||
"contextPanel.giteaPr.state.closed": "Fechada",
|
||||
"contextPanel.giteaPr.loadMore": "Carregar mais",
|
||||
"contextPanel.giteaPr.loading": "Carregando...",
|
||||
"contextPanel.giteaPr.error.loadFailed": "Falha ao carregar PR",
|
||||
"contextPanel.giteaPr.error.notConnected": "Gitea não está conectado",
|
||||
"contextPanel.giteaPr.empty.noActiveProject": "Nenhum projeto ativo",
|
||||
"contextPanel.giteaPr.actions.openSettings": "Abrir configurações",
|
||||
"contextPanel.giteaPr.issues.detail.back": "Voltar para issues",
|
||||
"contextPanel.giteaPr.issues.detail.commentsEmpty": "Sem comentários",
|
||||
"contextPanel.giteaPr.issues.empty": "Nenhuma issue aberta",
|
||||
"contextPanel.giteaPr.issues.error.loadFailed": "Falha ao carregar issues",
|
||||
"contextPanel.giteaPr.issues.listSectionTitle": "Issues abertas",
|
||||
"contextPanel.giteaPr.createPr.title": "Nova PR",
|
||||
"contextPanel.giteaPr.createPr.sourceBranch": "Branch de origem",
|
||||
"contextPanel.giteaPr.createPr.targetBranch": "Branch de destino",
|
||||
"contextPanel.giteaPr.createPr.titleLabel": "Título",
|
||||
"contextPanel.giteaPr.createPr.titlePlaceholder": "Título da PR",
|
||||
"contextPanel.giteaPr.createPr.descriptionLabel": "Descrição",
|
||||
"contextPanel.giteaPr.createPr.removeSourceBranch": "Remover branch de origem ao mesclar",
|
||||
"contextPanel.giteaPr.createPr.submit": "Criar PR",
|
||||
"contextPanel.giteaPr.createPr.submitting": "Criando...",
|
||||
"contextPanel.giteaPr.createPr.branchesLoading": "Carregando branches...",
|
||||
"contextPanel.giteaPr.createPr.toast.created": "PR criada",
|
||||
"contextPanel.giteaPr.createPr.toast.createFailed": "Falha ao criar PR",
|
||||
"contextPanel.giteaPr.updatePr.toggle": "Editar título e descrição",
|
||||
"contextPanel.giteaPr.updatePr.save": "Salvar",
|
||||
"contextPanel.giteaPr.updatePr.saving": "Salvando...",
|
||||
"contextPanel.giteaPr.updatePr.toast.updated": "PR atualizada",
|
||||
"contextPanel.giteaPr.updatePr.toast.updateFailed": "Falha ao atualizar PR",
|
||||
"contextPanel.giteaPr.mergePr.action": "Mesclar",
|
||||
"contextPanel.giteaPr.mergePr.squash": "Combinar commits",
|
||||
"contextPanel.giteaPr.mergePr.merging": "Mesclando...",
|
||||
"contextPanel.giteaPr.mergePr.toast.merged": "PR mesclada",
|
||||
"contextPanel.giteaPr.mergePr.toast.mergeFailed": "Falha ao mesclar PR",
|
||||
"contextRail.surface.editor.description": "Editar arquivos do projeto",
|
||||
"contextRail.surface.git.description": "Commits, branches e pull requests",
|
||||
"contextRail.surface.git.changesCountAriaSingle": "{label}, {count} arquivo modificado",
|
||||
@@ -1912,6 +1960,39 @@ export const dict: Record<I18nKey, string> = {
|
||||
"session.gitlabIssuePicker.actions.createInWorktree": "Criar em worktree",
|
||||
"session.gitlabIssuePicker.actions.openRepo": "Abrir repositório",
|
||||
"session.gitlabIssuePicker.actions.refresh": "Atualizar",
|
||||
"session.giteaIssuePicker.error.noActiveProject": "Não há nenhum projeto ativo",
|
||||
"session.giteaIssuePicker.error.runtimeUnavailable": "API de runtime de Gitea não disponível",
|
||||
"session.giteaIssuePicker.error.notConnected": "Gitea não está conectado",
|
||||
"session.giteaIssuePicker.error.repoNotResolvable": "Não foi possível resolver o repositório",
|
||||
"session.giteaIssuePicker.error.repoMustBeGitea": "O remoto origin deve ser uma URL de Gitea",
|
||||
"session.giteaIssuePicker.error.issueNotFound": "Issue não encontrada",
|
||||
"session.giteaIssuePicker.error.noModelSelected": "Não há nenhum modelo selecionado",
|
||||
"session.giteaIssuePicker.toast.loadMoreFailed": "Não foi possível carregar mais issues",
|
||||
"session.giteaIssuePicker.toast.loadIssueDetailsFailed": "Não foi possível carregar os detalhes da issue",
|
||||
"session.giteaIssuePicker.toast.sendContextFailed": "Não foi possível enviar o contexto da issue",
|
||||
"session.giteaIssuePicker.toast.sessionCreated": "Sessão criada a partir da issue",
|
||||
"session.giteaIssuePicker.toast.startSessionFailed": "Não foi possível iniciar a sessão",
|
||||
"session.giteaIssuePicker.title.select": "Vincular issue de Gitea",
|
||||
"session.giteaIssuePicker.title.createSession": "Nova sessão de issue de Gitea",
|
||||
"session.giteaIssuePicker.description.select": "Selecione uma issue para vinculá-la a esta sessão.",
|
||||
"session.giteaIssuePicker.description.createSession": "Inicie uma nova sessão com contexto oculto do issue (título/corpo/etiquetas/comentários).",
|
||||
"session.giteaIssuePicker.searchPlaceholder": "Pesquisar por título ou cole a URL da issue",
|
||||
"session.giteaIssuePicker.empty.noActiveProject": "Não há nenhum projeto ativo selecionado.",
|
||||
"session.giteaIssuePicker.empty.runtimeUnavailable": "API de runtime de Gitea não disponível.",
|
||||
"session.giteaIssuePicker.empty.notConnected": "Gitea não está conectado. Conecte sua conta do Gitea nas configurações.",
|
||||
"session.giteaIssuePicker.empty.noIssuesFound": "Nenhuma issue encontrada",
|
||||
"session.giteaIssuePicker.empty.noOpenIssuesFound": "Nenhuma issue aberta encontrada",
|
||||
"session.giteaIssuePicker.loading.issues": "Carregando issues...",
|
||||
"session.giteaIssuePicker.loading.more": "Carregando...",
|
||||
"session.giteaIssuePicker.actions.openSettings": "Abrir configurações",
|
||||
"session.giteaIssuePicker.actions.useIssue": "Usar issue #{number}",
|
||||
"session.giteaIssuePicker.actions.openInGiteaAria": "Abrir em Gitea",
|
||||
"session.giteaIssuePicker.actions.loadMore": "Carregar mais",
|
||||
"session.giteaIssuePicker.actions.sectionTitle": "Ações",
|
||||
"session.giteaIssuePicker.actions.toggleWorktreeAria": "Ativar worktree",
|
||||
"session.giteaIssuePicker.actions.createInWorktree": "Criar em worktree",
|
||||
"session.giteaIssuePicker.actions.openRepo": "Abrir repositório",
|
||||
"session.giteaIssuePicker.actions.refresh": "Atualizar",
|
||||
"session.githubPrPicker.error.noActiveProject": "Não há nenhum projeto ativo",
|
||||
"session.githubPrPicker.error.runtimeUnavailable": "API de runtime de GitHub não disponível",
|
||||
"session.githubPrPicker.error.notConnected": "GitHub não está conectado",
|
||||
@@ -1960,6 +2041,30 @@ export const dict: Record<I18nKey, string> = {
|
||||
"session.gitlabMrPicker.actions.useMergeRequest": "Usar MR !{number}",
|
||||
"session.gitlabMrPicker.actions.openInGitLabAria": "Abrir em GitLab",
|
||||
"session.gitlabMrPicker.actions.loadMore": "Carregar mais",
|
||||
"session.giteaPrPicker.error.noActiveProject": "Não há nenhum projeto ativo",
|
||||
"session.giteaPrPicker.error.runtimeUnavailable": "API de runtime de Gitea não disponível",
|
||||
"session.giteaPrPicker.error.notConnected": "Gitea não está conectado",
|
||||
"session.giteaPrPicker.error.prNotFound": "PR não encontrada",
|
||||
"session.giteaPrPicker.error.repoNotResolvable": "Não foi possível resolver o repositório",
|
||||
"session.giteaPrPicker.error.repoMustBeGitea": "O remoto origin deve ser uma URL de Gitea",
|
||||
"session.giteaPrPicker.toast.loadMoreFailed": "Não foi possível carregar mais PRs",
|
||||
"session.giteaPrPicker.toast.loadDetailsFailed": "Não foi possível carregar os detalhes da PR",
|
||||
"session.giteaPrPicker.title": "Vincular PR de Gitea",
|
||||
"session.giteaPrPicker.description": "Selecione uma PR para anexar contexto de revisão a esta mensagem.",
|
||||
"session.giteaPrPicker.searchPlaceholder": "Pesquisar por título ou cole a URL da PR",
|
||||
"session.giteaPrPicker.includeDiffAria": "Incluir diff da PR no contexto adjunto",
|
||||
"session.giteaPrPicker.includeDiff": "Incluir diff da PR",
|
||||
"session.giteaPrPicker.empty.noActiveProject": "Não há nenhum projeto ativo selecionado.",
|
||||
"session.giteaPrPicker.empty.runtimeUnavailable": "API de runtime de Gitea não disponível.",
|
||||
"session.giteaPrPicker.empty.notConnected": "Gitea não está conectado. Conecte sua conta do Gitea nas configurações.",
|
||||
"session.giteaPrPicker.empty.noPullRequestsFound": "Nenhuma PR encontrado",
|
||||
"session.giteaPrPicker.empty.noOpenPullRequestsFound": "Nenhuma PR aberta encontrado",
|
||||
"session.giteaPrPicker.loading.pullRequests": "Carregando PRs...",
|
||||
"session.giteaPrPicker.loading.more": "Carregando...",
|
||||
"session.giteaPrPicker.actions.openSettings": "Abrir configurações",
|
||||
"session.giteaPrPicker.actions.usePullRequest": "Usar PR #{number}",
|
||||
"session.giteaPrPicker.actions.openInGiteaAria": "Abrir em Gitea",
|
||||
"session.giteaPrPicker.actions.loadMore": "Carregar mais",
|
||||
"session.newWorktree.title": "Novo worktree",
|
||||
"session.newWorktree.mode.newBranch": "Nova branch",
|
||||
"session.newWorktree.mode.existingBranch": "Branch existente",
|
||||
@@ -2057,6 +2162,29 @@ export const dict: Record<I18nKey, string> = {
|
||||
"session.gitlabIntegration.validation.branchAlreadyExists": "A branch já existe localmente",
|
||||
"session.gitlabIntegration.validation.failed": "Não foi possível validar",
|
||||
"session.gitlabIntegration.draftBadge": "Rascunho",
|
||||
"session.giteaIntegration.title": "Selecionar de Gitea",
|
||||
"session.giteaIntegration.tabs.issues": "Issues",
|
||||
"session.giteaIntegration.tabs.pullRequests": "PR",
|
||||
"session.giteaIntegration.connect.title": "Conectar a Gitea",
|
||||
"session.giteaIntegration.connect.description": "Vincule issues ou PRs para preencher automaticamente os detalhes do worktree",
|
||||
"session.giteaIntegration.connect.action": "Conectar a Gitea",
|
||||
"session.giteaIntegration.search.issuesPlaceholder": "Pesquisar issues do Gitea",
|
||||
"session.giteaIntegration.search.prsPlaceholder": "Pesquisar PRs do Gitea",
|
||||
"session.giteaIntegration.empty.noIssuesFound": "Nenhuma issue encontrada",
|
||||
"session.giteaIntegration.empty.noPullRequestsFound": "Nenhum PR encontrado",
|
||||
"session.giteaIntegration.actions.loadMore": "Carregar mais",
|
||||
"session.giteaIntegration.actions.cancel": "Cancelar",
|
||||
"session.giteaIntegration.actions.select": "Selecionar",
|
||||
"session.giteaIntegration.selected.issueNumber": "Issue #{number}",
|
||||
"session.giteaIntegration.selected.prNumber": "PR #{number}",
|
||||
"session.giteaIntegration.includeDiffAria": "Incluir diff da PR no contexto da sessão",
|
||||
"session.giteaIntegration.includeDiff": "Incluir diff da PR",
|
||||
"session.giteaIntegration.error.notConnected": "Gitea não está conectado",
|
||||
"session.giteaIntegration.error.loadDataFailed": "Não foi possível carregar os dados",
|
||||
"session.giteaIntegration.validation.branchAlreadyCheckedOut": "A branch já está em uso em um worktree",
|
||||
"session.giteaIntegration.validation.branchAlreadyExists": "A branch já existe localmente",
|
||||
"session.giteaIntegration.validation.failed": "Não foi possível validar",
|
||||
"session.giteaIntegration.draftBadge": "Rascunho",
|
||||
"chat.fileAttachment.toast.attachFailed": "Não foi possível anexar o arquivo",
|
||||
"chat.fileAttachment.toast.someFilesSkipped": "Alguns arquivos foram omitidos:\n{summary}",
|
||||
"chat.fileAttachment.toast.vscodePickFailed": "Não foi possível selecionar arquivos em VS Code",
|
||||
@@ -2280,6 +2408,8 @@ export const dict: Record<I18nKey, string> = {
|
||||
"chat.chatInput.actions.linkGithubPr": "Vincular PR de GitHub",
|
||||
"chat.chatInput.actions.linkGitlabIssue": "Vincular issue de GitLab",
|
||||
"chat.chatInput.actions.linkGitlabMr": "Vincular MR de GitLab",
|
||||
"chat.chatInput.actions.linkGiteaIssue": "Vincular issue de Gitea",
|
||||
"chat.chatInput.actions.linkGiteaPr": "Vincular PR de Gitea",
|
||||
"chat.chatInput.actions.modelAgentSettings": "Configurações de modelo e agente",
|
||||
"chat.chatInput.actions.sendMessageAria": "Enviar mensagem",
|
||||
"chat.chatInput.actions.queueMessageAria": "Colocar mensagem na fila",
|
||||
|
||||
@@ -227,6 +227,7 @@ export const settingsDict = {
|
||||
"settings.magicPrompts.sidebar.group.git": "Git",
|
||||
"settings.magicPrompts.sidebar.group.github": "GitHub",
|
||||
"settings.magicPrompts.sidebar.group.gitlab": "GitLab",
|
||||
"settings.magicPrompts.sidebar.group.gitea": "Gitea",
|
||||
"settings.magicPrompts.sidebar.group.planning": "Планування",
|
||||
"settings.magicPrompts.sidebar.group.session": "Сесія",
|
||||
"settings.magicPrompts.sidebar.item.gitCommitGenerate": "Генерація комітів",
|
||||
@@ -240,6 +241,8 @@ export const settingsDict = {
|
||||
"settings.magicPrompts.sidebar.item.githubSinglePrCommentReview": "Огляд єдиного PR коментаря",
|
||||
"settings.magicPrompts.sidebar.item.gitlabPrReview": "MR огляд",
|
||||
"settings.magicPrompts.sidebar.item.gitlabIssueReview": "Огляд issue",
|
||||
"settings.magicPrompts.sidebar.item.giteaPrReview": "Огляд PR",
|
||||
"settings.magicPrompts.sidebar.item.giteaIssueReview": "Огляд issue",
|
||||
"settings.magicPrompts.sidebar.item.planTodo": "Планування Todo",
|
||||
"settings.magicPrompts.sidebar.item.planImprove": "Поліпшити план",
|
||||
"settings.magicPrompts.sidebar.item.planImplement": "Реалізувати план",
|
||||
@@ -1675,6 +1678,9 @@ export const settingsDict = {
|
||||
"settings.github.page.toast.ghCliEnabled": "Резервний варіант gh CLI увімкнено",
|
||||
"settings.github.page.toast.ghCliDisabled": "Резервний варіант gh CLI вимкнено",
|
||||
"settings.github.page.toast.ghCliUpdateFailed": "Не вдалося оновити налаштування gh CLI",
|
||||
"settings.github.page.customDomains.label": "Власні домени",
|
||||
"settings.github.page.customDomains.description": "Репозиторії, розміщені на цих доменах, вважатимуться GitHub.",
|
||||
"settings.github.page.customDomains.placeholder": "github.example.com, git.mycompany.com",
|
||||
"settings.gitlab.page.title": "Персональний токен доступу GitLab",
|
||||
"settings.gitlab.page.description": "Вставте персональний токен доступу GitLab, щоб підключитися. Вкажіть базову URL-адресу, якщо використовуєте самостійно розміщену інстанцію GitLab.",
|
||||
"settings.gitlab.page.tooltip.connectAccount": "Підключіть обліковий запис GitLab для роботи з issues та merge requests в застосунку.",
|
||||
@@ -1682,6 +1688,9 @@ export const settingsDict = {
|
||||
"settings.gitlab.page.accessToken.placeholder": "Вставте ваш персональний токен доступу GitLab",
|
||||
"settings.gitlab.page.baseUrl.label": "Базова URL-адреса (необов'язково)",
|
||||
"settings.gitlab.page.baseUrl.placeholder": "https://gitlab.com",
|
||||
"settings.gitlab.page.customDomains.label": "Власні домени",
|
||||
"settings.gitlab.page.customDomains.description": "Репозиторії, розміщені на цих доменах, вважатимуться GitLab.",
|
||||
"settings.gitlab.page.customDomains.placeholder": "gitlab.example.com, git.company.com",
|
||||
"settings.gitlab.page.actions.connect": "Підключити GitLab",
|
||||
"settings.gitlab.page.actions.disconnect": "Відключити",
|
||||
"settings.gitlab.page.actions.switch": "Перемкнути на",
|
||||
@@ -1698,6 +1707,32 @@ export const settingsDict = {
|
||||
"settings.gitlab.page.toast.disconnectFailed": "Не вдалося відключити GitLab",
|
||||
"settings.gitlab.page.toast.accountSwitched": "Обліковий запис GitLab перемкнено",
|
||||
"settings.gitlab.page.toast.accountSwitchFailed": "Не вдалося перемкнути обліковий запис GitLab",
|
||||
"settings.gitea.page.title": "Персональний токен доступу Gitea / Forgejo",
|
||||
"settings.gitea.page.description": "Вставте персональний токен доступу Gitea або Forgejo, щоб підключитися. Вкажіть базову URL-адресу, якщо використовуєте самостійно розміщену інстанцію Gitea або Forgejo.",
|
||||
"settings.gitea.page.tooltip.connectAccount": "Підключіть обліковий запис Gitea або Forgejo для роботи з issues та PR в застосунку.",
|
||||
"settings.gitea.page.accessToken.label": "Персональний токен доступу",
|
||||
"settings.gitea.page.accessToken.placeholder": "Вставте ваш персональний токен доступу Gitea",
|
||||
"settings.gitea.page.baseUrl.label": "Базова URL-адреса (необов'язково)",
|
||||
"settings.gitea.page.baseUrl.placeholder": "https://gitea.example.com",
|
||||
"settings.gitea.page.actions.connect": "Підключити Gitea",
|
||||
"settings.gitea.page.actions.disconnect": "Відключити",
|
||||
"settings.gitea.page.actions.switch": "Перемкнути на",
|
||||
"settings.gitea.page.status.notConnected": "Не підключено",
|
||||
"settings.gitea.page.label.unknownUser": "невідомо",
|
||||
"settings.gitea.page.label.otherAccounts": "Інші облікові записи",
|
||||
"settings.gitea.page.avatarAlt.withLogin": "Аватар {login}",
|
||||
"settings.gitea.page.avatarAlt.fallback": "Аватар Gitea",
|
||||
"settings.gitea.page.connectedAs": "Підключено як",
|
||||
"settings.gitea.page.errors.invalidToken": "Введіть дійсний персональний токен доступу Gitea",
|
||||
"settings.gitea.page.errors.failed": "Не вдалося підключити Gitea",
|
||||
"settings.gitea.page.toast.connected": "Gitea підключено",
|
||||
"settings.gitea.page.toast.disconnected": "Gitea відключено",
|
||||
"settings.gitea.page.toast.disconnectFailed": "Не вдалося відключити Gitea",
|
||||
"settings.gitea.page.toast.accountSwitched": "Обліковий запис Gitea перемкнено",
|
||||
"settings.gitea.page.toast.accountSwitchFailed": "Не вдалося перемкнути обліковий запис Gitea",
|
||||
"settings.gitea.page.customDomains.label": "Власні домени",
|
||||
"settings.gitea.page.customDomains.description": "Репозиторії, розміщені на цих доменах, вважатимуться Gitea або Forgejo.",
|
||||
"settings.gitea.page.customDomains.placeholder": "gitea.example.com, git.company.com",
|
||||
"settings.notifications.page.delivery.title": "Доставка сповіщень",
|
||||
"settings.notifications.page.delivery.enableAria": "Увімкнути сповіщення",
|
||||
"settings.notifications.page.delivery.enableLabel": "Увімкнути сповіщення",
|
||||
@@ -2083,6 +2118,10 @@ export const settingsDict = {
|
||||
"settings.magicPrompts.page.group.gitlabPrReview.description": "Промпти, які використовуються для GitLab MR-огляду: видиме повідомлення користувача + приховані інструкції.",
|
||||
"settings.magicPrompts.page.group.gitlabIssueReview.title": "Огляд issue",
|
||||
"settings.magicPrompts.page.group.gitlabIssueReview.description": "Промпти, які використовуються для GitLab issue-огляду: видиме повідомлення користувача + приховані інструкції.",
|
||||
"settings.magicPrompts.page.group.giteaPrReview.title": "Огляд PR",
|
||||
"settings.magicPrompts.page.group.giteaPrReview.description": "Промпти, які використовуються для Gitea PR-огляду: видиме повідомлення користувача + приховані інструкції.",
|
||||
"settings.magicPrompts.page.group.giteaIssueReview.title": "Огляд issue",
|
||||
"settings.magicPrompts.page.group.giteaIssueReview.description": "Промпти, які використовуються для Gitea issue-огляду: видиме повідомлення користувача + приховані інструкції.",
|
||||
"settings.magicPrompts.page.group.gitConflictResolve.title": "Вирішення конфліктів злиття/перебазування",
|
||||
"settings.magicPrompts.page.group.gitConflictResolve.description": "Промпти, які використовуються під час вирішення конфліктів злиття/перебазування з AI.",
|
||||
"settings.magicPrompts.page.group.gitCherrypickConflictResolve.title": "Вирішення конфліктів",
|
||||
|
||||
@@ -1178,6 +1178,54 @@ export const dict: Record<I18nKey, string> = {
|
||||
"contextPanel.gitlabMr.mergeMr.merging": "Злиття...",
|
||||
"contextPanel.gitlabMr.mergeMr.toast.merged": "Запит на злиття злито",
|
||||
"contextPanel.gitlabMr.mergeMr.toast.mergeFailed": "Не вдалося злити запит на злиття",
|
||||
"contextPanel.giteaPr.title": "PR",
|
||||
"contextPanel.giteaPr.tabs.pullRequests": "PR",
|
||||
"contextPanel.giteaPr.tabs.issues": "Issue",
|
||||
"contextPanel.giteaPr.branchSectionTitle": "Поточна гілка",
|
||||
"contextPanel.giteaPr.openPrTitle": "Відкриті PR",
|
||||
"contextPanel.giteaPr.listSectionTitle": "У цьому репозиторії",
|
||||
"contextPanel.giteaPr.openPrEmpty": "Немає відкритих PR",
|
||||
"contextPanel.giteaPr.noPrForBranch": "Немає PR для цієї гілки",
|
||||
"contextPanel.giteaPr.loadContext": "Завантажити контекст",
|
||||
"contextPanel.giteaPr.hideContext": "Приховати контекст",
|
||||
"contextPanel.giteaPr.openInGitea": "Відкрити в Gitea",
|
||||
"contextPanel.giteaPr.draft": "Чернетка",
|
||||
"contextPanel.giteaPr.state.opened": "Відкритий",
|
||||
"contextPanel.giteaPr.state.merged": "Злитий",
|
||||
"contextPanel.giteaPr.state.closed": "Закритий",
|
||||
"contextPanel.giteaPr.loadMore": "Завантажити ще",
|
||||
"contextPanel.giteaPr.loading": "Завантаження...",
|
||||
"contextPanel.giteaPr.error.loadFailed": "Не вдалося завантажити PR",
|
||||
"contextPanel.giteaPr.error.notConnected": "Gitea не підключено",
|
||||
"contextPanel.giteaPr.empty.noActiveProject": "Немає активного проєкту",
|
||||
"contextPanel.giteaPr.actions.openSettings": "Відкрити налаштування",
|
||||
"contextPanel.giteaPr.issues.detail.back": "Назад до issue",
|
||||
"contextPanel.giteaPr.issues.detail.commentsEmpty": "Немає коментарів",
|
||||
"contextPanel.giteaPr.issues.empty": "Немає відкритих issue",
|
||||
"contextPanel.giteaPr.issues.error.loadFailed": "Не вдалося завантажити issue",
|
||||
"contextPanel.giteaPr.issues.listSectionTitle": "Відкриті issue",
|
||||
"contextPanel.giteaPr.createPr.title": "Новий PR",
|
||||
"contextPanel.giteaPr.createPr.sourceBranch": "Вихідна гілка",
|
||||
"contextPanel.giteaPr.createPr.targetBranch": "Цільова гілка",
|
||||
"contextPanel.giteaPr.createPr.titleLabel": "Назва",
|
||||
"contextPanel.giteaPr.createPr.titlePlaceholder": "Назва PR",
|
||||
"contextPanel.giteaPr.createPr.descriptionLabel": "Опис",
|
||||
"contextPanel.giteaPr.createPr.removeSourceBranch": "Видалити вихідну гілку після злиття",
|
||||
"contextPanel.giteaPr.createPr.submit": "Створити PR",
|
||||
"contextPanel.giteaPr.createPr.submitting": "Створення...",
|
||||
"contextPanel.giteaPr.createPr.branchesLoading": "Завантаження гілок...",
|
||||
"contextPanel.giteaPr.createPr.toast.created": "PR створено",
|
||||
"contextPanel.giteaPr.createPr.toast.createFailed": "Не вдалося створити PR",
|
||||
"contextPanel.giteaPr.updatePr.toggle": "Редагувати назву та опис",
|
||||
"contextPanel.giteaPr.updatePr.save": "Зберегти",
|
||||
"contextPanel.giteaPr.updatePr.saving": "Збереження...",
|
||||
"contextPanel.giteaPr.updatePr.toast.updated": "PR оновлено",
|
||||
"contextPanel.giteaPr.updatePr.toast.updateFailed": "Не вдалося оновити PR",
|
||||
"contextPanel.giteaPr.mergePr.action": "Злити",
|
||||
"contextPanel.giteaPr.mergePr.squash": "Сквошити коміти",
|
||||
"contextPanel.giteaPr.mergePr.merging": "Злиття...",
|
||||
"contextPanel.giteaPr.mergePr.toast.merged": "PR злито",
|
||||
"contextPanel.giteaPr.mergePr.toast.mergeFailed": "Не вдалося злити PR",
|
||||
"contextRail.surface.editor.description": "Редагування файлів проєкту",
|
||||
"contextRail.surface.git.description": "Коміти, гілки та pull request-и",
|
||||
"contextRail.surface.git.changesCountAriaSingle": "{label}, {count} змінений файл",
|
||||
@@ -1912,6 +1960,39 @@ export const dict: Record<I18nKey, string> = {
|
||||
"session.gitlabIssuePicker.actions.createInWorktree": "Створити в worktree",
|
||||
"session.gitlabIssuePicker.actions.openRepo": "Відкрити репозиторій",
|
||||
"session.gitlabIssuePicker.actions.refresh": "Оновити",
|
||||
"session.giteaIssuePicker.error.noActiveProject": "Немає активного проєкту",
|
||||
"session.giteaIssuePicker.error.runtimeUnavailable": "Gitea API недоступний",
|
||||
"session.giteaIssuePicker.error.notConnected": "Gitea не підключено",
|
||||
"session.giteaIssuePicker.error.repoNotResolvable": "Не вдалося визначити репозиторій",
|
||||
"session.giteaIssuePicker.error.repoMustBeGitea": "remote origin має бути Gitea URL",
|
||||
"session.giteaIssuePicker.error.issueNotFound": "Issue не знайдено",
|
||||
"session.giteaIssuePicker.error.noModelSelected": "Модель не вибрано",
|
||||
"session.giteaIssuePicker.toast.loadMoreFailed": "Не вдалося завантажити додаткові issue",
|
||||
"session.giteaIssuePicker.toast.loadIssueDetailsFailed": "Не вдалося завантажити деталі issue",
|
||||
"session.giteaIssuePicker.toast.sendContextFailed": "Не вдалося надіслати контекст issue",
|
||||
"session.giteaIssuePicker.toast.sessionCreated": "Сесію створено з issue",
|
||||
"session.giteaIssuePicker.toast.startSessionFailed": "Не вдалося почати сесію",
|
||||
"session.giteaIssuePicker.title.select": "Пов’язати Gitea issue",
|
||||
"session.giteaIssuePicker.title.createSession": "Нова сесія з Gitea issue",
|
||||
"session.giteaIssuePicker.description.select": "Виберіть issue, щоб пов’язати її з цією сесією.",
|
||||
"session.giteaIssuePicker.description.createSession": "Запускає нову сесію із прихованим контекстом issue: заголовком, текстом, мітками й коментарями.",
|
||||
"session.giteaIssuePicker.searchPlaceholder": "Пошук за назвою або вставте URL issue",
|
||||
"session.giteaIssuePicker.empty.noActiveProject": "Не вибрано жодного активного проєкту.",
|
||||
"session.giteaIssuePicker.empty.runtimeUnavailable": "Gitea API недоступний.",
|
||||
"session.giteaIssuePicker.empty.notConnected": "Gitea не підключено. Підключіть обліковий запис Gitea у налаштуваннях.",
|
||||
"session.giteaIssuePicker.empty.noIssuesFound": "Issue не знайдено",
|
||||
"session.giteaIssuePicker.empty.noOpenIssuesFound": "Відкритих issue не знайдено",
|
||||
"session.giteaIssuePicker.loading.issues": "Завантаження issue...",
|
||||
"session.giteaIssuePicker.loading.more": "Завантаження...",
|
||||
"session.giteaIssuePicker.actions.openSettings": "Відкрити налаштування",
|
||||
"session.giteaIssuePicker.actions.useIssue": "Використовувати issue №{number}",
|
||||
"session.giteaIssuePicker.actions.openInGiteaAria": "Відкрити в Gitea",
|
||||
"session.giteaIssuePicker.actions.loadMore": "Завантажити ще",
|
||||
"session.giteaIssuePicker.actions.sectionTitle": "Дії",
|
||||
"session.giteaIssuePicker.actions.toggleWorktreeAria": "Перемкнути worktree",
|
||||
"session.giteaIssuePicker.actions.createInWorktree": "Створити в worktree",
|
||||
"session.giteaIssuePicker.actions.openRepo": "Відкрити репозиторій",
|
||||
"session.giteaIssuePicker.actions.refresh": "Оновити",
|
||||
"session.githubPrPicker.error.noActiveProject": "Немає активного проєкту",
|
||||
"session.githubPrPicker.error.runtimeUnavailable": "GitHub API недоступний",
|
||||
"session.githubPrPicker.error.notConnected": "GitHub не підключено",
|
||||
@@ -1960,6 +2041,30 @@ export const dict: Record<I18nKey, string> = {
|
||||
"session.gitlabMrPicker.actions.useMergeRequest": "Використовувати MR !{number}",
|
||||
"session.gitlabMrPicker.actions.openInGitLabAria": "Відкрити в GitLab",
|
||||
"session.gitlabMrPicker.actions.loadMore": "Завантажити ще",
|
||||
"session.giteaPrPicker.error.noActiveProject": "Немає активного проєкту",
|
||||
"session.giteaPrPicker.error.runtimeUnavailable": "Gitea API недоступний",
|
||||
"session.giteaPrPicker.error.notConnected": "Gitea не підключено",
|
||||
"session.giteaPrPicker.error.prNotFound": "PR не знайдено",
|
||||
"session.giteaPrPicker.error.repoNotResolvable": "Не вдалося визначити репозиторій",
|
||||
"session.giteaPrPicker.error.repoMustBeGitea": "remote origin має бути Gitea URL",
|
||||
"session.giteaPrPicker.toast.loadMoreFailed": "Не вдалося завантажити додаткові PR",
|
||||
"session.giteaPrPicker.toast.loadDetailsFailed": "Не вдалося завантажити деталі PR",
|
||||
"session.giteaPrPicker.title": "Пов’язати Gitea PR",
|
||||
"session.giteaPrPicker.description": "Виберіть PR, щоб додати контекст рев’ю до цього повідомлення.",
|
||||
"session.giteaPrPicker.searchPlaceholder": "Пошук за назвою або вставте URL PR",
|
||||
"session.giteaPrPicker.includeDiffAria": "Додати diff PR у вкладений контекст",
|
||||
"session.giteaPrPicker.includeDiff": "Додати diff PR",
|
||||
"session.giteaPrPicker.empty.noActiveProject": "Не вибрано жодного активного проєкту.",
|
||||
"session.giteaPrPicker.empty.runtimeUnavailable": "Gitea API недоступний.",
|
||||
"session.giteaPrPicker.empty.notConnected": "Gitea не підключено. Підключіть обліковий запис Gitea у налаштуваннях.",
|
||||
"session.giteaPrPicker.empty.noPullRequestsFound": "PR не знайдено",
|
||||
"session.giteaPrPicker.empty.noOpenPullRequestsFound": "Не знайдено відкритих PR",
|
||||
"session.giteaPrPicker.loading.pullRequests": "Завантаження PR...",
|
||||
"session.giteaPrPicker.loading.more": "Завантаження...",
|
||||
"session.giteaPrPicker.actions.openSettings": "Відкрити налаштування",
|
||||
"session.giteaPrPicker.actions.usePullRequest": "Використовувати PR #{number}",
|
||||
"session.giteaPrPicker.actions.openInGiteaAria": "Відкрити в Gitea",
|
||||
"session.giteaPrPicker.actions.loadMore": "Завантажити ще",
|
||||
"session.newWorktree.title": "Нове worktree",
|
||||
"session.newWorktree.mode.newBranch": "Нова гілка",
|
||||
"session.newWorktree.mode.existingBranch": "Наявна гілка",
|
||||
@@ -2057,6 +2162,29 @@ export const dict: Record<I18nKey, string> = {
|
||||
"session.gitlabIntegration.validation.branchAlreadyExists": "Гілка вже існує локально",
|
||||
"session.gitlabIntegration.validation.failed": "Помилка перевірки",
|
||||
"session.gitlabIntegration.draftBadge": "Чернетка",
|
||||
"session.giteaIntegration.title": "Виберіть із Gitea",
|
||||
"session.giteaIntegration.tabs.issues": "Issue",
|
||||
"session.giteaIntegration.tabs.pullRequests": "PR",
|
||||
"session.giteaIntegration.connect.title": "Підключитися до Gitea",
|
||||
"session.giteaIntegration.connect.description": "Пов’яжіть issue або PR, щоб автоматично заповнити деталі worktree",
|
||||
"session.giteaIntegration.connect.action": "Підключити Gitea",
|
||||
"session.giteaIntegration.search.issuesPlaceholder": "Шукати issue в Gitea",
|
||||
"session.giteaIntegration.search.prsPlaceholder": "Шукати PR у Gitea",
|
||||
"session.giteaIntegration.empty.noIssuesFound": "Issue не знайдено",
|
||||
"session.giteaIntegration.empty.noPullRequestsFound": "PR не знайдено",
|
||||
"session.giteaIntegration.actions.loadMore": "Завантажити ще",
|
||||
"session.giteaIntegration.actions.cancel": "Скасувати",
|
||||
"session.giteaIntegration.actions.select": "Вибрати",
|
||||
"session.giteaIntegration.selected.issueNumber": "issue №{number}",
|
||||
"session.giteaIntegration.selected.prNumber": "PR #{number}",
|
||||
"session.giteaIntegration.includeDiffAria": "Додати diff PR у контекст сесії",
|
||||
"session.giteaIntegration.includeDiff": "Додати diff PR",
|
||||
"session.giteaIntegration.error.notConnected": "Gitea не підключено",
|
||||
"session.giteaIntegration.error.loadDataFailed": "Не вдалося завантажити дані",
|
||||
"session.giteaIntegration.validation.branchAlreadyCheckedOut": "Гілку вже відкрито в worktree",
|
||||
"session.giteaIntegration.validation.branchAlreadyExists": "Гілка вже існує локально",
|
||||
"session.giteaIntegration.validation.failed": "Помилка перевірки",
|
||||
"session.giteaIntegration.draftBadge": "Чернетка",
|
||||
"chat.fileAttachment.toast.attachFailed": "Не вдалося прикріпити файл",
|
||||
"chat.fileAttachment.toast.someFilesSkipped": "Деякі файли були пропущені:\n{summary}",
|
||||
"chat.fileAttachment.toast.vscodePickFailed": "Не вдалося вибрати файли в VS Code",
|
||||
@@ -2280,6 +2408,8 @@ export const dict: Record<I18nKey, string> = {
|
||||
"chat.chatInput.actions.linkGithubPr": "Пов’язати GitHub PR",
|
||||
"chat.chatInput.actions.linkGitlabIssue": "Пов’язати GitLab issue",
|
||||
"chat.chatInput.actions.linkGitlabMr": "Пов’язати GitLab MR",
|
||||
"chat.chatInput.actions.linkGiteaIssue": "Пов’язати Gitea issue",
|
||||
"chat.chatInput.actions.linkGiteaPr": "Пов’язати Gitea PR",
|
||||
"chat.chatInput.actions.modelAgentSettings": "Параметри моделі та агента",
|
||||
"chat.chatInput.actions.sendMessageAria": "Надіслати повідомлення",
|
||||
"chat.chatInput.actions.queueMessageAria": "Поставити повідомлення в чергу",
|
||||
|
||||
@@ -227,6 +227,7 @@ export const settingsDict = {
|
||||
'settings.magicPrompts.sidebar.group.git': 'Git',
|
||||
'settings.magicPrompts.sidebar.group.github': 'GitHub',
|
||||
'settings.magicPrompts.sidebar.group.gitlab': 'GitLab',
|
||||
'settings.magicPrompts.sidebar.group.gitea': 'Gitea',
|
||||
'settings.magicPrompts.sidebar.group.planning': '规划',
|
||||
'settings.magicPrompts.sidebar.group.session': '会话',
|
||||
'settings.magicPrompts.sidebar.item.gitCommitGenerate': '提交生成',
|
||||
@@ -240,6 +241,8 @@ export const settingsDict = {
|
||||
'settings.magicPrompts.sidebar.item.githubSinglePrCommentReview': '单条 PR 评论审查',
|
||||
'settings.magicPrompts.sidebar.item.gitlabPrReview': 'MR 审查',
|
||||
'settings.magicPrompts.sidebar.item.gitlabIssueReview': 'Issue 审查',
|
||||
'settings.magicPrompts.sidebar.item.giteaPrReview': 'PR 审查',
|
||||
'settings.magicPrompts.sidebar.item.giteaIssueReview': 'Issue 审查',
|
||||
'settings.magicPrompts.sidebar.item.planTodo': '待办规划',
|
||||
'settings.magicPrompts.sidebar.item.planImprove': '改进计划',
|
||||
'settings.magicPrompts.sidebar.item.planImplement': '执行计划',
|
||||
@@ -1675,6 +1678,9 @@ export const settingsDict = {
|
||||
'settings.github.page.toast.ghCliEnabled': 'gh CLI 备用已启用',
|
||||
'settings.github.page.toast.ghCliDisabled': 'gh CLI 备用已禁用',
|
||||
'settings.github.page.toast.ghCliUpdateFailed': '更新 gh CLI 设置失败',
|
||||
'settings.github.page.customDomains.label': '自定义域名',
|
||||
'settings.github.page.customDomains.description': '托管在这些域名上的仓库将被视为 GitHub。',
|
||||
'settings.github.page.customDomains.placeholder': 'github.example.com, git.mycompany.com',
|
||||
'settings.gitlab.page.title': 'GitLab 个人访问令牌',
|
||||
'settings.gitlab.page.description': '粘贴 GitLab 个人访问令牌以连接。使用自托管 GitLab 实例时,请设置基础 URL。',
|
||||
'settings.gitlab.page.tooltip.connectAccount': '连接 GitLab 账户,以便在应用内使用 Issue 和合并请求工作流。',
|
||||
@@ -1682,6 +1688,9 @@ export const settingsDict = {
|
||||
'settings.gitlab.page.accessToken.placeholder': '粘贴你的 GitLab 个人访问令牌',
|
||||
'settings.gitlab.page.baseUrl.label': '基础 URL(可选)',
|
||||
'settings.gitlab.page.baseUrl.placeholder': 'https://gitlab.com',
|
||||
'settings.gitlab.page.customDomains.label': '自定义域名',
|
||||
'settings.gitlab.page.customDomains.description': '托管在这些域名上的仓库将被视为 GitLab。',
|
||||
'settings.gitlab.page.customDomains.placeholder': 'gitlab.example.com, git.company.com',
|
||||
'settings.gitlab.page.actions.connect': '连接 GitLab',
|
||||
'settings.gitlab.page.actions.disconnect': '断开连接',
|
||||
'settings.gitlab.page.actions.switch': '切换到',
|
||||
@@ -1698,6 +1707,32 @@ export const settingsDict = {
|
||||
'settings.gitlab.page.toast.disconnectFailed': '断开 GitLab 失败',
|
||||
'settings.gitlab.page.toast.accountSwitched': 'GitLab 账户已切换',
|
||||
'settings.gitlab.page.toast.accountSwitchFailed': '切换 GitLab 账户失败',
|
||||
'settings.gitea.page.title': 'Gitea / Forgejo 个人访问令牌',
|
||||
'settings.gitea.page.description': '粘贴 Gitea 或 Forgejo 个人访问令牌以连接。使用自托管 Gitea 或 Forgejo 实例时,请设置基础 URL。',
|
||||
'settings.gitea.page.tooltip.connectAccount': '连接 Gitea 或 Forgejo 账户,以便在应用内使用 Issue 和 Pull Request 工作流。',
|
||||
'settings.gitea.page.accessToken.label': '个人访问令牌',
|
||||
'settings.gitea.page.accessToken.placeholder': '粘贴你的 Gitea 个人访问令牌',
|
||||
'settings.gitea.page.baseUrl.label': '基础 URL(可选)',
|
||||
'settings.gitea.page.baseUrl.placeholder': 'https://gitea.example.com',
|
||||
'settings.gitea.page.actions.connect': '连接 Gitea',
|
||||
'settings.gitea.page.actions.disconnect': '断开连接',
|
||||
'settings.gitea.page.actions.switch': '切换到',
|
||||
'settings.gitea.page.status.notConnected': '未连接',
|
||||
'settings.gitea.page.label.unknownUser': '未知',
|
||||
'settings.gitea.page.label.otherAccounts': '其他账户',
|
||||
'settings.gitea.page.avatarAlt.withLogin': '{login} 的头像',
|
||||
'settings.gitea.page.avatarAlt.fallback': 'Gitea 头像',
|
||||
'settings.gitea.page.connectedAs': '已连接为',
|
||||
'settings.gitea.page.errors.invalidToken': '请输入有效的 Gitea 个人访问令牌',
|
||||
'settings.gitea.page.errors.failed': '连接 Gitea 失败',
|
||||
'settings.gitea.page.toast.connected': 'Gitea 已连接',
|
||||
'settings.gitea.page.toast.disconnected': 'Gitea 已断开连接',
|
||||
'settings.gitea.page.toast.disconnectFailed': '断开 Gitea 失败',
|
||||
'settings.gitea.page.toast.accountSwitched': 'Gitea 账户已切换',
|
||||
'settings.gitea.page.toast.accountSwitchFailed': '切换 Gitea 账户失败',
|
||||
'settings.gitea.page.customDomains.label': '自定义域名',
|
||||
'settings.gitea.page.customDomains.description': '托管在这些域名上的仓库将被视为 Gitea 或 Forgejo。',
|
||||
'settings.gitea.page.customDomains.placeholder': 'gitea.example.com, git.company.com',
|
||||
'settings.notifications.page.delivery.title': '通知投递',
|
||||
'settings.notifications.page.delivery.enableAria': '启用通知',
|
||||
'settings.notifications.page.delivery.enableLabel': '启用通知',
|
||||
@@ -2083,6 +2118,10 @@ export const settingsDict = {
|
||||
'settings.magicPrompts.page.group.gitlabPrReview.description': '用于 GitLab MR 审查流程的提示词:可见用户消息 + 隐藏指令负载。',
|
||||
'settings.magicPrompts.page.group.gitlabIssueReview.title': 'Issue 审查',
|
||||
'settings.magicPrompts.page.group.gitlabIssueReview.description': '用于 GitLab Issue 审查流程的提示词:可见用户消息 + 隐藏指令负载。',
|
||||
'settings.magicPrompts.page.group.giteaPrReview.title': 'PR 审查',
|
||||
'settings.magicPrompts.page.group.giteaPrReview.description': '用于 Gitea PR 审查流程的提示词:可见用户消息 + 隐藏指令负载。',
|
||||
'settings.magicPrompts.page.group.giteaIssueReview.title': 'Issue 审查',
|
||||
'settings.magicPrompts.page.group.giteaIssueReview.description': '用于 Gitea Issue 审查流程的提示词:可见用户消息 + 隐藏指令负载。',
|
||||
'settings.magicPrompts.page.group.gitConflictResolve.title': '合并/Rebase 冲突解决',
|
||||
'settings.magicPrompts.page.group.gitConflictResolve.description': '用于 AI 解决合并/Rebase 冲突的提示词。',
|
||||
'settings.magicPrompts.page.group.gitCherrypickConflictResolve.title': 'Cherry-pick 冲突解决',
|
||||
|
||||
@@ -1178,6 +1178,54 @@ export const dict: Record<I18nKey, string> = {
|
||||
'contextPanel.gitlabMr.mergeMr.merging': '合并中...',
|
||||
'contextPanel.gitlabMr.mergeMr.toast.merged': '合并请求已合并',
|
||||
'contextPanel.gitlabMr.mergeMr.toast.mergeFailed': '合并请求合并失败',
|
||||
'contextPanel.giteaPr.title': 'Pull Request',
|
||||
'contextPanel.giteaPr.tabs.pullRequests': 'Pull Request',
|
||||
'contextPanel.giteaPr.tabs.issues': 'Issue',
|
||||
'contextPanel.giteaPr.branchSectionTitle': '当前分支',
|
||||
'contextPanel.giteaPr.openPrTitle': '打开的Pull Request',
|
||||
'contextPanel.giteaPr.listSectionTitle': '在此仓库中',
|
||||
'contextPanel.giteaPr.openPrEmpty': '没有打开的Pull Request',
|
||||
'contextPanel.giteaPr.noPrForBranch': '此分支没有Pull Request',
|
||||
'contextPanel.giteaPr.loadContext': '加载上下文',
|
||||
'contextPanel.giteaPr.hideContext': '隐藏上下文',
|
||||
'contextPanel.giteaPr.openInGitea': '在 Gitea 中打开',
|
||||
'contextPanel.giteaPr.draft': '草稿',
|
||||
'contextPanel.giteaPr.state.opened': '已打开',
|
||||
'contextPanel.giteaPr.state.merged': '已合并',
|
||||
'contextPanel.giteaPr.state.closed': '已关闭',
|
||||
'contextPanel.giteaPr.loadMore': '加载更多',
|
||||
'contextPanel.giteaPr.loading': '加载中...',
|
||||
'contextPanel.giteaPr.error.loadFailed': '加载Pull Request失败',
|
||||
'contextPanel.giteaPr.error.notConnected': 'Gitea 未连接',
|
||||
'contextPanel.giteaPr.empty.noActiveProject': '没有活动的项目',
|
||||
'contextPanel.giteaPr.actions.openSettings': '打开设置',
|
||||
'contextPanel.giteaPr.issues.detail.back': '返回 Issue 列表',
|
||||
'contextPanel.giteaPr.issues.detail.commentsEmpty': '暂无评论',
|
||||
'contextPanel.giteaPr.issues.empty': '没有打开的 Issue',
|
||||
'contextPanel.giteaPr.issues.error.loadFailed': '加载 Issue 失败',
|
||||
'contextPanel.giteaPr.issues.listSectionTitle': '打开的 Issue',
|
||||
'contextPanel.giteaPr.createPr.title': '新建Pull Request',
|
||||
'contextPanel.giteaPr.createPr.sourceBranch': '源分支',
|
||||
'contextPanel.giteaPr.createPr.targetBranch': '目标分支',
|
||||
'contextPanel.giteaPr.createPr.titleLabel': '标题',
|
||||
'contextPanel.giteaPr.createPr.titlePlaceholder': 'Pull Request标题',
|
||||
'contextPanel.giteaPr.createPr.descriptionLabel': '描述',
|
||||
'contextPanel.giteaPr.createPr.removeSourceBranch': '合并后删除源分支',
|
||||
'contextPanel.giteaPr.createPr.submit': '创建Pull Request',
|
||||
'contextPanel.giteaPr.createPr.submitting': '创建中...',
|
||||
'contextPanel.giteaPr.createPr.branchesLoading': '正在加载分支...',
|
||||
'contextPanel.giteaPr.createPr.toast.created': 'Pull Request已创建',
|
||||
'contextPanel.giteaPr.createPr.toast.createFailed': '创建Pull Request失败',
|
||||
'contextPanel.giteaPr.updatePr.toggle': '编辑标题和描述',
|
||||
'contextPanel.giteaPr.updatePr.save': '保存',
|
||||
'contextPanel.giteaPr.updatePr.saving': '保存中...',
|
||||
'contextPanel.giteaPr.updatePr.toast.updated': 'Pull Request已更新',
|
||||
'contextPanel.giteaPr.updatePr.toast.updateFailed': '更新Pull Request失败',
|
||||
'contextPanel.giteaPr.mergePr.action': '合并',
|
||||
'contextPanel.giteaPr.mergePr.squash': '压缩提交',
|
||||
'contextPanel.giteaPr.mergePr.merging': '合并中...',
|
||||
'contextPanel.giteaPr.mergePr.toast.merged': 'Pull Request已合并',
|
||||
'contextPanel.giteaPr.mergePr.toast.mergeFailed': 'Pull Request合并失败',
|
||||
'contextRail.surface.editor.description': '编辑项目文件',
|
||||
'contextRail.surface.git.description': '提交、分支和拉取请求',
|
||||
'contextRail.surface.git.changesCountAriaSingle': '{label},{count} 个更改的文件',
|
||||
@@ -1900,6 +1948,39 @@ export const dict: Record<I18nKey, string> = {
|
||||
'session.gitlabIssuePicker.actions.createInWorktree': '在工作树中创建',
|
||||
'session.gitlabIssuePicker.actions.openRepo': '打开仓库',
|
||||
'session.gitlabIssuePicker.actions.refresh': '刷新',
|
||||
'session.giteaIssuePicker.error.noActiveProject': '没有活动项目',
|
||||
'session.giteaIssuePicker.error.runtimeUnavailable': 'Gitea 运行时 API 不可用',
|
||||
'session.giteaIssuePicker.error.notConnected': 'Gitea 未连接',
|
||||
'session.giteaIssuePicker.error.repoNotResolvable': '无法解析仓库',
|
||||
'session.giteaIssuePicker.error.repoMustBeGitea': 'origin 远程仓库必须是 Gitea URL',
|
||||
'session.giteaIssuePicker.error.issueNotFound': '未找到 Issue',
|
||||
'session.giteaIssuePicker.error.noModelSelected': '未选择模型',
|
||||
'session.giteaIssuePicker.toast.loadMoreFailed': '加载更多 Issue 失败',
|
||||
'session.giteaIssuePicker.toast.loadIssueDetailsFailed': '加载 Issue 详情失败',
|
||||
'session.giteaIssuePicker.toast.sendContextFailed': '发送 Issue 上下文失败',
|
||||
'session.giteaIssuePicker.toast.sessionCreated': '已从 Issue 创建会话',
|
||||
'session.giteaIssuePicker.toast.startSessionFailed': '启动会话失败',
|
||||
'session.giteaIssuePicker.title.select': '关联 Gitea Issue',
|
||||
'session.giteaIssuePicker.title.createSession': '从 Gitea Issue 新建会话',
|
||||
'session.giteaIssuePicker.description.select': '选择一个 Issue 关联到当前会话。',
|
||||
'session.giteaIssuePicker.description.createSession': '使用隐藏的 Issue 上下文(标题/正文/标签/评论)初始化新会话。',
|
||||
'session.giteaIssuePicker.searchPlaceholder': '按标题搜索,或粘贴 Issue URL',
|
||||
'session.giteaIssuePicker.empty.noActiveProject': '未选择活动项目。',
|
||||
'session.giteaIssuePicker.empty.runtimeUnavailable': 'Gitea 运行时 API 不可用。',
|
||||
'session.giteaIssuePicker.empty.notConnected': 'Gitea 未连接。请在设置中连接 Gitea 账号。',
|
||||
'session.giteaIssuePicker.empty.noIssuesFound': '未找到 Issue',
|
||||
'session.giteaIssuePicker.empty.noOpenIssuesFound': '没有未关闭的 Issue',
|
||||
'session.giteaIssuePicker.loading.issues': '正在加载 Issue...',
|
||||
'session.giteaIssuePicker.loading.more': '加载中...',
|
||||
'session.giteaIssuePicker.actions.openSettings': '打开设置',
|
||||
'session.giteaIssuePicker.actions.useIssue': '使用 Issue #{number}',
|
||||
'session.giteaIssuePicker.actions.openInGiteaAria': '在 Gitea 中打开',
|
||||
'session.giteaIssuePicker.actions.loadMore': '加载更多',
|
||||
'session.giteaIssuePicker.actions.sectionTitle': '操作',
|
||||
'session.giteaIssuePicker.actions.toggleWorktreeAria': '切换工作树',
|
||||
'session.giteaIssuePicker.actions.createInWorktree': '在工作树中创建',
|
||||
'session.giteaIssuePicker.actions.openRepo': '打开仓库',
|
||||
'session.giteaIssuePicker.actions.refresh': '刷新',
|
||||
'session.githubPrPicker.error.noActiveProject': '没有活动项目',
|
||||
'session.githubPrPicker.error.runtimeUnavailable': 'GitHub 运行时 API 不可用',
|
||||
'session.githubPrPicker.error.notConnected': 'GitHub 未连接',
|
||||
@@ -1948,6 +2029,30 @@ export const dict: Record<I18nKey, string> = {
|
||||
'session.gitlabMrPicker.actions.useMergeRequest': '使用 Merge Request !{number}',
|
||||
'session.gitlabMrPicker.actions.openInGitLabAria': '在 GitLab 中打开',
|
||||
'session.gitlabMrPicker.actions.loadMore': '加载更多',
|
||||
'session.giteaPrPicker.error.noActiveProject': '没有活动项目',
|
||||
'session.giteaPrPicker.error.runtimeUnavailable': 'Gitea 运行时 API 不可用',
|
||||
'session.giteaPrPicker.error.notConnected': 'Gitea 未连接',
|
||||
'session.giteaPrPicker.error.prNotFound': '未找到 Pull Request',
|
||||
'session.giteaPrPicker.error.repoNotResolvable': '无法解析仓库',
|
||||
'session.giteaPrPicker.error.repoMustBeGitea': 'origin 远程仓库必须是 Gitea URL',
|
||||
'session.giteaPrPicker.toast.loadMoreFailed': '加载更多 Pull Request 失败',
|
||||
'session.giteaPrPicker.toast.loadDetailsFailed': '加载 Pull Request 详情失败',
|
||||
'session.giteaPrPicker.title': '关联 Gitea Pull Request',
|
||||
'session.giteaPrPicker.description': '选择一个 Pull Request,将审查上下文附加到此消息。',
|
||||
'session.giteaPrPicker.searchPlaceholder': '按标题搜索,或粘贴 Pull Request URL',
|
||||
'session.giteaPrPicker.includeDiffAria': '在附加上下文中包含 PR 差异',
|
||||
'session.giteaPrPicker.includeDiff': '包含 PR 差异',
|
||||
'session.giteaPrPicker.empty.noActiveProject': '未选择活动项目。',
|
||||
'session.giteaPrPicker.empty.runtimeUnavailable': 'Gitea 运行时 API 不可用。',
|
||||
'session.giteaPrPicker.empty.notConnected': 'Gitea 未连接。请在设置中连接 Gitea 账号。',
|
||||
'session.giteaPrPicker.empty.noPullRequestsFound': '未找到 Pull Request',
|
||||
'session.giteaPrPicker.empty.noOpenPullRequestsFound': '没有未关闭的 Pull Request',
|
||||
'session.giteaPrPicker.loading.pullRequests': '正在加载 Pull Request...',
|
||||
'session.giteaPrPicker.loading.more': '加载中...',
|
||||
'session.giteaPrPicker.actions.openSettings': '打开设置',
|
||||
'session.giteaPrPicker.actions.usePullRequest': '使用 Pull Request #{number}',
|
||||
'session.giteaPrPicker.actions.openInGiteaAria': '在 Gitea 中打开',
|
||||
'session.giteaPrPicker.actions.loadMore': '加载更多',
|
||||
'session.newWorktree.title': '新建工作树',
|
||||
'session.newWorktree.mode.newBranch': '新分支',
|
||||
'session.newWorktree.mode.existingBranch': '现有分支',
|
||||
@@ -2045,6 +2150,29 @@ export const dict: Record<I18nKey, string> = {
|
||||
'session.gitlabIntegration.validation.branchAlreadyExists': '该分支已在本地存在',
|
||||
'session.gitlabIntegration.validation.failed': '校验失败',
|
||||
'session.gitlabIntegration.draftBadge': '草稿',
|
||||
'session.giteaIntegration.title': '从 Gitea 选择',
|
||||
'session.giteaIntegration.tabs.issues': 'Issues',
|
||||
'session.giteaIntegration.tabs.pullRequests': 'Pull Requests',
|
||||
'session.giteaIntegration.connect.title': '连接到 Gitea',
|
||||
'session.giteaIntegration.connect.description': '关联 Issue 或 Pull Request 以自动填充工作树详情',
|
||||
'session.giteaIntegration.connect.action': '连接 Gitea',
|
||||
'session.giteaIntegration.search.issuesPlaceholder': '搜索 Gitea Issue',
|
||||
'session.giteaIntegration.search.prsPlaceholder': '搜索 Gitea Pull Request',
|
||||
'session.giteaIntegration.empty.noIssuesFound': '未找到 Issue',
|
||||
'session.giteaIntegration.empty.noPullRequestsFound': '未找到 Pull Request',
|
||||
'session.giteaIntegration.actions.loadMore': '加载更多',
|
||||
'session.giteaIntegration.actions.cancel': '取消',
|
||||
'session.giteaIntegration.actions.select': '选择',
|
||||
'session.giteaIntegration.selected.issueNumber': 'Issue #{number}',
|
||||
'session.giteaIntegration.selected.prNumber': 'PR #{number}',
|
||||
'session.giteaIntegration.includeDiffAria': '在会话上下文中包含 PR 差异',
|
||||
'session.giteaIntegration.includeDiff': '包含 PR 差异',
|
||||
'session.giteaIntegration.error.notConnected': 'Gitea 未连接',
|
||||
'session.giteaIntegration.error.loadDataFailed': '加载数据失败',
|
||||
'session.giteaIntegration.validation.branchAlreadyCheckedOut': '该分支已在某个工作树中检出',
|
||||
'session.giteaIntegration.validation.branchAlreadyExists': '该分支已在本地存在',
|
||||
'session.giteaIntegration.validation.failed': '校验失败',
|
||||
'session.giteaIntegration.draftBadge': '草稿',
|
||||
'chat.fileAttachment.toast.attachFailed': '附加文件失败',
|
||||
'chat.fileAttachment.toast.someFilesSkipped': '以下文件被跳过:\n{summary}',
|
||||
'chat.fileAttachment.toast.vscodePickFailed': '在 VS Code 中选择文件失败',
|
||||
@@ -2268,6 +2396,8 @@ export const dict: Record<I18nKey, string> = {
|
||||
'chat.chatInput.actions.linkGithubPr': '关联 GitHub PR',
|
||||
'chat.chatInput.actions.linkGitlabIssue': '关联 GitLab Issue',
|
||||
'chat.chatInput.actions.linkGitlabMr': '关联 GitLab MR',
|
||||
'chat.chatInput.actions.linkGiteaIssue': '关联 Gitea Issue',
|
||||
'chat.chatInput.actions.linkGiteaPr': '关联 Gitea PR',
|
||||
'chat.chatInput.actions.modelAgentSettings': '模型与智能体设置',
|
||||
'chat.chatInput.actions.sendMessageAria': '发送消息',
|
||||
'chat.chatInput.actions.queueMessageAria': '将消息加入队列',
|
||||
|
||||
@@ -224,6 +224,7 @@ export const settingsDict = {
|
||||
'settings.magicPrompts.sidebar.group.git': 'Git',
|
||||
'settings.magicPrompts.sidebar.group.github': 'GitHub',
|
||||
'settings.magicPrompts.sidebar.group.gitlab': 'GitLab',
|
||||
'settings.magicPrompts.sidebar.group.gitea': 'Gitea',
|
||||
'settings.magicPrompts.sidebar.group.planning': '規劃',
|
||||
'settings.magicPrompts.sidebar.group.session': '工作階段',
|
||||
'settings.magicPrompts.sidebar.item.gitCommitGenerate': '提交生成',
|
||||
@@ -237,6 +238,8 @@ export const settingsDict = {
|
||||
'settings.magicPrompts.sidebar.item.githubSinglePrCommentReview': '單則 PR 評論審查',
|
||||
'settings.magicPrompts.sidebar.item.gitlabPrReview': 'MR 審查',
|
||||
'settings.magicPrompts.sidebar.item.gitlabIssueReview': 'Issue 審查',
|
||||
'settings.magicPrompts.sidebar.item.giteaPrReview': 'PR 審查',
|
||||
'settings.magicPrompts.sidebar.item.giteaIssueReview': 'Issue 審查',
|
||||
'settings.magicPrompts.sidebar.item.planTodo': '待辦規劃',
|
||||
'settings.magicPrompts.sidebar.item.planImprove': '改進計畫',
|
||||
'settings.magicPrompts.sidebar.item.planImplement': '執行計畫',
|
||||
@@ -1582,6 +1585,9 @@ export const settingsDict = {
|
||||
'settings.github.page.toast.ghCliEnabled': 'gh CLI 備用已啟用',
|
||||
'settings.github.page.toast.ghCliDisabled': 'gh CLI 備用已停用',
|
||||
'settings.github.page.toast.ghCliUpdateFailed': '更新 gh CLI 設定失敗',
|
||||
'settings.github.page.customDomains.label': '自訂網域',
|
||||
'settings.github.page.customDomains.description': '託管在這些網域上的存放庫將視為 GitHub。',
|
||||
'settings.github.page.customDomains.placeholder': 'github.example.com, git.mycompany.com',
|
||||
'settings.gitlab.page.title': 'GitLab 個人存取權杖',
|
||||
'settings.gitlab.page.description': '貼上 GitLab 個人存取權杖以連線。使用自架 GitLab 執行個體時,請設定基礎 URL。',
|
||||
'settings.gitlab.page.tooltip.connectAccount': '連線 GitLab 帳號,以在應用程式內使用 Issue 與合併請求工作流程。',
|
||||
@@ -1589,6 +1595,9 @@ export const settingsDict = {
|
||||
'settings.gitlab.page.accessToken.placeholder': '貼上你的 GitLab 個人存取權杖',
|
||||
'settings.gitlab.page.baseUrl.label': '基礎 URL(選用)',
|
||||
'settings.gitlab.page.baseUrl.placeholder': 'https://gitlab.com',
|
||||
'settings.gitlab.page.customDomains.label': '自訂網域',
|
||||
'settings.gitlab.page.customDomains.description': '託管在這些網域上的存放庫將視為 GitLab。',
|
||||
'settings.gitlab.page.customDomains.placeholder': 'gitlab.example.com, git.company.com',
|
||||
'settings.gitlab.page.actions.connect': '連線 GitLab',
|
||||
'settings.gitlab.page.actions.disconnect': '中斷連線',
|
||||
'settings.gitlab.page.actions.switch': '切換到',
|
||||
@@ -1605,6 +1614,32 @@ export const settingsDict = {
|
||||
'settings.gitlab.page.toast.disconnectFailed': '中斷 GitLab 失敗',
|
||||
'settings.gitlab.page.toast.accountSwitched': 'GitLab 帳號已切換',
|
||||
'settings.gitlab.page.toast.accountSwitchFailed': '切換 GitLab 帳號失敗',
|
||||
'settings.gitea.page.title': 'Gitea / Forgejo 個人存取權杖',
|
||||
'settings.gitea.page.description': '貼上 Gitea 或 Forgejo 個人存取權杖以連線。使用自架 Gitea 或 Forgejo 執行個體時,請設定基礎 URL。',
|
||||
'settings.gitea.page.tooltip.connectAccount': '連線 Gitea 或 Forgejo 帳號,以在應用程式內使用 Issue 與 Pull Request 工作流程。',
|
||||
'settings.gitea.page.accessToken.label': '個人存取權杖',
|
||||
'settings.gitea.page.accessToken.placeholder': '貼上你的 Gitea 個人存取權杖',
|
||||
'settings.gitea.page.baseUrl.label': '基礎 URL(選用)',
|
||||
'settings.gitea.page.baseUrl.placeholder': 'https://gitea.example.com',
|
||||
'settings.gitea.page.actions.connect': '連線 Gitea',
|
||||
'settings.gitea.page.actions.disconnect': '中斷連線',
|
||||
'settings.gitea.page.actions.switch': '切換到',
|
||||
'settings.gitea.page.status.notConnected': '未連線',
|
||||
'settings.gitea.page.label.unknownUser': '未知',
|
||||
'settings.gitea.page.label.otherAccounts': '其他帳號',
|
||||
'settings.gitea.page.avatarAlt.withLogin': '{login} 頭像',
|
||||
'settings.gitea.page.avatarAlt.fallback': 'Gitea 頭像',
|
||||
'settings.gitea.page.connectedAs': '已連線為',
|
||||
'settings.gitea.page.errors.invalidToken': '請輸入有效的 Gitea 個人存取權杖',
|
||||
'settings.gitea.page.errors.failed': '連線 Gitea 失敗',
|
||||
'settings.gitea.page.toast.connected': 'Gitea 已連線',
|
||||
'settings.gitea.page.toast.disconnected': 'Gitea 已中斷連線',
|
||||
'settings.gitea.page.toast.disconnectFailed': '中斷 Gitea 失敗',
|
||||
'settings.gitea.page.toast.accountSwitched': 'Gitea 帳號已切換',
|
||||
'settings.gitea.page.toast.accountSwitchFailed': '切換 Gitea 帳號失敗',
|
||||
'settings.gitea.page.customDomains.label': '自訂網域',
|
||||
'settings.gitea.page.customDomains.description': '託管在這些網域上的存放庫將視為 Gitea 或 Forgejo。',
|
||||
'settings.gitea.page.customDomains.placeholder': 'gitea.example.com, git.company.com',
|
||||
'settings.notifications.page.delivery.title': '通知傳遞',
|
||||
'settings.notifications.page.delivery.enableAria': '啟用通知',
|
||||
'settings.notifications.page.delivery.enableLabel': '啟用通知',
|
||||
@@ -1990,6 +2025,10 @@ export const settingsDict = {
|
||||
'settings.magicPrompts.page.group.gitlabPrReview.description': '用於 GitLab MR 審查流程的提示詞:可見使用者訊息 + 隱藏指令負載。',
|
||||
'settings.magicPrompts.page.group.gitlabIssueReview.title': 'Issue 審查',
|
||||
'settings.magicPrompts.page.group.gitlabIssueReview.description': '用於 GitLab Issue 審查流程的提示詞:可見使用者訊息 + 隱藏指令負載。',
|
||||
'settings.magicPrompts.page.group.giteaPrReview.title': 'PR 審查',
|
||||
'settings.magicPrompts.page.group.giteaPrReview.description': '用於 Gitea PR 審查流程的提示詞:可見使用者訊息 + 隱藏指令負載。',
|
||||
'settings.magicPrompts.page.group.giteaIssueReview.title': 'Issue 審查',
|
||||
'settings.magicPrompts.page.group.giteaIssueReview.description': '用於 Gitea Issue 審查流程的提示詞:可見使用者訊息 + 隱藏指令負載。',
|
||||
'settings.magicPrompts.page.group.gitConflictResolve.title': 'Merge/Rebase 衝突解決',
|
||||
'settings.magicPrompts.page.group.gitConflictResolve.description': '用於 AI 解決 Merge/Rebase 衝突的提示詞。',
|
||||
'settings.magicPrompts.page.group.gitCherrypickConflictResolve.title': 'Cherry-pick 衝突解決',
|
||||
|
||||
@@ -1190,6 +1190,54 @@ export const dict: Record<I18nKey, string> = {
|
||||
'contextPanel.gitlabMr.mergeMr.merging': '合併中...',
|
||||
'contextPanel.gitlabMr.mergeMr.toast.merged': '合併請求已合併',
|
||||
'contextPanel.gitlabMr.mergeMr.toast.mergeFailed': '合併請求合併失敗',
|
||||
'contextPanel.giteaPr.title': 'Pull Request',
|
||||
'contextPanel.giteaPr.tabs.pullRequests': 'Pull Request',
|
||||
'contextPanel.giteaPr.tabs.issues': 'Issue',
|
||||
'contextPanel.giteaPr.branchSectionTitle': '目前分支',
|
||||
'contextPanel.giteaPr.openPrTitle': '已開啟的Pull Request',
|
||||
'contextPanel.giteaPr.listSectionTitle': '在此存放庫中',
|
||||
'contextPanel.giteaPr.openPrEmpty': '沒有已開啟的Pull Request',
|
||||
'contextPanel.giteaPr.noPrForBranch': '此分支沒有Pull Request',
|
||||
'contextPanel.giteaPr.loadContext': '載入內容',
|
||||
'contextPanel.giteaPr.hideContext': '隱藏內容',
|
||||
'contextPanel.giteaPr.openInGitea': '在 Gitea 中開啟',
|
||||
'contextPanel.giteaPr.draft': '草稿',
|
||||
'contextPanel.giteaPr.state.opened': '已開啟',
|
||||
'contextPanel.giteaPr.state.merged': '已合併',
|
||||
'contextPanel.giteaPr.state.closed': '已關閉',
|
||||
'contextPanel.giteaPr.loadMore': '載入更多',
|
||||
'contextPanel.giteaPr.loading': '載入中...',
|
||||
'contextPanel.giteaPr.error.loadFailed': '載入Pull Request失敗',
|
||||
'contextPanel.giteaPr.error.notConnected': 'Gitea 未連線',
|
||||
'contextPanel.giteaPr.empty.noActiveProject': '沒有使用中的專案',
|
||||
'contextPanel.giteaPr.actions.openSettings': '開啟設定',
|
||||
'contextPanel.giteaPr.issues.detail.back': '返回 Issue 列表',
|
||||
'contextPanel.giteaPr.issues.detail.commentsEmpty': '沒有留言',
|
||||
'contextPanel.giteaPr.issues.empty': '沒有開啟的 Issue',
|
||||
'contextPanel.giteaPr.issues.error.loadFailed': '載入 Issue 失敗',
|
||||
'contextPanel.giteaPr.issues.listSectionTitle': '開啟的 Issue',
|
||||
'contextPanel.giteaPr.createPr.title': '新增Pull Request',
|
||||
'contextPanel.giteaPr.createPr.sourceBranch': '來源分支',
|
||||
'contextPanel.giteaPr.createPr.targetBranch': '目標分支',
|
||||
'contextPanel.giteaPr.createPr.titleLabel': '標題',
|
||||
'contextPanel.giteaPr.createPr.titlePlaceholder': 'Pull Request標題',
|
||||
'contextPanel.giteaPr.createPr.descriptionLabel': '描述',
|
||||
'contextPanel.giteaPr.createPr.removeSourceBranch': '合併後刪除來源分支',
|
||||
'contextPanel.giteaPr.createPr.submit': '建立Pull Request',
|
||||
'contextPanel.giteaPr.createPr.submitting': '建立中...',
|
||||
'contextPanel.giteaPr.createPr.branchesLoading': '正在載入分支...',
|
||||
'contextPanel.giteaPr.createPr.toast.created': 'Pull Request已建立',
|
||||
'contextPanel.giteaPr.createPr.toast.createFailed': '建立Pull Request失敗',
|
||||
'contextPanel.giteaPr.updatePr.toggle': '編輯標題與描述',
|
||||
'contextPanel.giteaPr.updatePr.save': '儲存',
|
||||
'contextPanel.giteaPr.updatePr.saving': '儲存中...',
|
||||
'contextPanel.giteaPr.updatePr.toast.updated': 'Pull Request已更新',
|
||||
'contextPanel.giteaPr.updatePr.toast.updateFailed': '更新Pull Request失敗',
|
||||
'contextPanel.giteaPr.mergePr.action': '合併',
|
||||
'contextPanel.giteaPr.mergePr.squash': '壓縮提交',
|
||||
'contextPanel.giteaPr.mergePr.merging': '合併中...',
|
||||
'contextPanel.giteaPr.mergePr.toast.merged': 'Pull Request已合併',
|
||||
'contextPanel.giteaPr.mergePr.toast.mergeFailed': 'Pull Request合併失敗',
|
||||
'contextRail.surface.editor.description': '編輯專案檔案',
|
||||
'contextRail.surface.git.description': '提交、分支與拉取請求',
|
||||
'contextRail.surface.git.changesCountAriaSingle': '{label},{count} 個變更的檔案',
|
||||
@@ -1904,6 +1952,39 @@ export const dict: Record<I18nKey, string> = {
|
||||
'session.gitlabIssuePicker.actions.createInWorktree': '在 worktree 中建立',
|
||||
'session.gitlabIssuePicker.actions.openRepo': '開啟儲存庫',
|
||||
'session.gitlabIssuePicker.actions.refresh': '重新整理',
|
||||
'session.giteaIssuePicker.error.noActiveProject': '沒有活動專案',
|
||||
'session.giteaIssuePicker.error.runtimeUnavailable': 'Gitea 執行時 API 無法使用',
|
||||
'session.giteaIssuePicker.error.notConnected': 'Gitea 未連線',
|
||||
'session.giteaIssuePicker.error.repoNotResolvable': '無法解析儲存庫',
|
||||
'session.giteaIssuePicker.error.repoMustBeGitea': 'origin 遠端儲存庫必須是 Gitea URL',
|
||||
'session.giteaIssuePicker.error.issueNotFound': '找不到 Issue',
|
||||
'session.giteaIssuePicker.error.noModelSelected': '未選擇模型',
|
||||
'session.giteaIssuePicker.toast.loadMoreFailed': '載入更多 Issue 失敗',
|
||||
'session.giteaIssuePicker.toast.loadIssueDetailsFailed': '載入 Issue 詳情失敗',
|
||||
'session.giteaIssuePicker.toast.sendContextFailed': '傳送 Issue 上下文失敗',
|
||||
'session.giteaIssuePicker.toast.sessionCreated': '已從 Issue 建立會話',
|
||||
'session.giteaIssuePicker.toast.startSessionFailed': '啟動會話失敗',
|
||||
'session.giteaIssuePicker.title.select': '關聯 Gitea Issue',
|
||||
'session.giteaIssuePicker.title.createSession': '從 Gitea Issue 新增會話',
|
||||
'session.giteaIssuePicker.description.select': '選擇一個 Issue 關聯到目前會話。',
|
||||
'session.giteaIssuePicker.description.createSession': '使用隱藏的 Issue 上下文(標題/內文/標籤/留言)初始化新會話。',
|
||||
'session.giteaIssuePicker.searchPlaceholder': '按標題搜尋,或貼上 Issue URL',
|
||||
'session.giteaIssuePicker.empty.noActiveProject': '未選擇活動專案。',
|
||||
'session.giteaIssuePicker.empty.runtimeUnavailable': 'Gitea 執行時 API 無法使用。',
|
||||
'session.giteaIssuePicker.empty.notConnected': 'Gitea 未連線。請在設定中連接 Gitea 帳號。',
|
||||
'session.giteaIssuePicker.empty.noIssuesFound': '找不到 Issue',
|
||||
'session.giteaIssuePicker.empty.noOpenIssuesFound': '沒有未關閉的 Issue',
|
||||
'session.giteaIssuePicker.loading.issues': '正在載入 Issue...',
|
||||
'session.giteaIssuePicker.loading.more': '載入中...',
|
||||
'session.giteaIssuePicker.actions.openSettings': '開啟設定',
|
||||
'session.giteaIssuePicker.actions.useIssue': '使用 Issue #{number}',
|
||||
'session.giteaIssuePicker.actions.openInGiteaAria': '在 Gitea 中開啟',
|
||||
'session.giteaIssuePicker.actions.loadMore': '載入更多',
|
||||
'session.giteaIssuePicker.actions.sectionTitle': '操作',
|
||||
'session.giteaIssuePicker.actions.toggleWorktreeAria': '切換 worktree',
|
||||
'session.giteaIssuePicker.actions.createInWorktree': '在 worktree 中建立',
|
||||
'session.giteaIssuePicker.actions.openRepo': '開啟儲存庫',
|
||||
'session.giteaIssuePicker.actions.refresh': '重新整理',
|
||||
'session.githubPrPicker.error.noActiveProject': '沒有活動專案',
|
||||
'session.githubPrPicker.error.runtimeUnavailable': 'GitHub 執行時 API 無法使用',
|
||||
'session.githubPrPicker.error.notConnected': 'GitHub 未連線',
|
||||
@@ -1952,6 +2033,30 @@ export const dict: Record<I18nKey, string> = {
|
||||
'session.gitlabMrPicker.actions.useMergeRequest': '使用 Merge Request !{number}',
|
||||
'session.gitlabMrPicker.actions.openInGitLabAria': '在 GitLab 中開啟',
|
||||
'session.gitlabMrPicker.actions.loadMore': '載入更多',
|
||||
'session.giteaPrPicker.error.noActiveProject': '沒有活動專案',
|
||||
'session.giteaPrPicker.error.runtimeUnavailable': 'Gitea 執行時 API 無法使用',
|
||||
'session.giteaPrPicker.error.notConnected': 'Gitea 未連線',
|
||||
'session.giteaPrPicker.error.prNotFound': '找不到 Pull Request',
|
||||
'session.giteaPrPicker.error.repoNotResolvable': '無法解析儲存庫',
|
||||
'session.giteaPrPicker.error.repoMustBeGitea': 'origin 遠端儲存庫必須是 Gitea URL',
|
||||
'session.giteaPrPicker.toast.loadMoreFailed': '載入更多 Pull Request 失敗',
|
||||
'session.giteaPrPicker.toast.loadDetailsFailed': '載入 Pull Request 詳情失敗',
|
||||
'session.giteaPrPicker.title': '關聯 Gitea Pull Request',
|
||||
'session.giteaPrPicker.description': '選擇一個 Pull Request,將審查上下文附加到此訊息。',
|
||||
'session.giteaPrPicker.searchPlaceholder': '按標題搜尋,或貼上 Pull Request URL',
|
||||
'session.giteaPrPicker.includeDiffAria': '在附加上下文中包含 PR diff',
|
||||
'session.giteaPrPicker.includeDiff': '包含 PR diff',
|
||||
'session.giteaPrPicker.empty.noActiveProject': '未選擇活動專案。',
|
||||
'session.giteaPrPicker.empty.runtimeUnavailable': 'Gitea 執行時 API 無法使用。',
|
||||
'session.giteaPrPicker.empty.notConnected': 'Gitea 未連線。請在設定中連接 Gitea 帳號。',
|
||||
'session.giteaPrPicker.empty.noPullRequestsFound': '找不到 Pull Request',
|
||||
'session.giteaPrPicker.empty.noOpenPullRequestsFound': '沒有未關閉的 Pull Request',
|
||||
'session.giteaPrPicker.loading.pullRequests': '正在載入 Pull Request...',
|
||||
'session.giteaPrPicker.loading.more': '載入中...',
|
||||
'session.giteaPrPicker.actions.openSettings': '開啟設定',
|
||||
'session.giteaPrPicker.actions.usePullRequest': '使用 Pull Request #{number}',
|
||||
'session.giteaPrPicker.actions.openInGiteaAria': '在 Gitea 中開啟',
|
||||
'session.giteaPrPicker.actions.loadMore': '載入更多',
|
||||
'session.newWorktree.title': '新增 Worktree',
|
||||
'session.newWorktree.mode.newBranch': '新分支',
|
||||
'session.newWorktree.mode.existingBranch': '現有分支',
|
||||
@@ -2049,6 +2154,29 @@ export const dict: Record<I18nKey, string> = {
|
||||
'session.gitlabIntegration.validation.branchAlreadyExists': '該分支已在本地存在',
|
||||
'session.gitlabIntegration.validation.failed': '驗證失敗',
|
||||
'session.gitlabIntegration.draftBadge': '草稿',
|
||||
'session.giteaIntegration.title': '從 Gitea 選擇',
|
||||
'session.giteaIntegration.tabs.issues': 'Issues',
|
||||
'session.giteaIntegration.tabs.pullRequests': 'Pull Requests',
|
||||
'session.giteaIntegration.connect.title': '連接到 Gitea',
|
||||
'session.giteaIntegration.connect.description': '關聯 Issue 或 Pull Request 以自動填入 worktree 詳情',
|
||||
'session.giteaIntegration.connect.action': '連接 Gitea',
|
||||
'session.giteaIntegration.search.issuesPlaceholder': '搜尋 Gitea Issue',
|
||||
'session.giteaIntegration.search.prsPlaceholder': '搜尋 Gitea Pull Request',
|
||||
'session.giteaIntegration.empty.noIssuesFound': '找不到 Issue',
|
||||
'session.giteaIntegration.empty.noPullRequestsFound': '找不到 Pull Request',
|
||||
'session.giteaIntegration.actions.loadMore': '載入更多',
|
||||
'session.giteaIntegration.actions.cancel': '取消',
|
||||
'session.giteaIntegration.actions.select': '選擇',
|
||||
'session.giteaIntegration.selected.issueNumber': 'Issue #{number}',
|
||||
'session.giteaIntegration.selected.prNumber': 'PR #{number}',
|
||||
'session.giteaIntegration.includeDiffAria': '在會話上下文中包含 PR diff',
|
||||
'session.giteaIntegration.includeDiff': '包含 PR diff',
|
||||
'session.giteaIntegration.error.notConnected': 'Gitea 未連線',
|
||||
'session.giteaIntegration.error.loadDataFailed': '載入資料失敗',
|
||||
'session.giteaIntegration.validation.branchAlreadyCheckedOut': '該分支已在某個 worktree 中簽出',
|
||||
'session.giteaIntegration.validation.branchAlreadyExists': '該分支已在本地存在',
|
||||
'session.giteaIntegration.validation.failed': '驗證失敗',
|
||||
'session.giteaIntegration.draftBadge': '草稿',
|
||||
'chat.fileAttachment.toast.attachFailed': '附加檔案失敗',
|
||||
'chat.fileAttachment.toast.someFilesSkipped': '以下檔案被跳過:\n{summary}',
|
||||
'chat.fileAttachment.toast.vscodePickFailed': '在 VS Code 中選擇檔案失敗',
|
||||
@@ -2272,6 +2400,8 @@ export const dict: Record<I18nKey, string> = {
|
||||
'chat.chatInput.actions.linkGithubPr': '關聯 GitHub PR',
|
||||
'chat.chatInput.actions.linkGitlabIssue': '關聯 GitLab Issue',
|
||||
'chat.chatInput.actions.linkGitlabMr': '關聯 GitLab MR',
|
||||
'chat.chatInput.actions.linkGiteaIssue': '關聯 Gitea Issue',
|
||||
'chat.chatInput.actions.linkGiteaPr': '關聯 Gitea PR',
|
||||
'chat.chatInput.actions.modelAgentSettings': '模型與 Agent 設定',
|
||||
'chat.chatInput.actions.sendMessageAria': '傳送訊息',
|
||||
'chat.chatInput.actions.queueMessageAria': '將訊息加入佇列',
|
||||
|
||||
@@ -23,6 +23,10 @@ export type MagicPromptId =
|
||||
| 'gitlab.pr.review.instructions'
|
||||
| 'gitlab.issue.review.visible'
|
||||
| 'gitlab.issue.review.instructions'
|
||||
| 'gitea.pr.review.visible'
|
||||
| 'gitea.pr.review.instructions'
|
||||
| 'gitea.issue.review.visible'
|
||||
| 'gitea.issue.review.instructions'
|
||||
| 'plan.todo.visible'
|
||||
| 'plan.todo.instructions'
|
||||
| 'plan.improve.visible'
|
||||
@@ -60,7 +64,7 @@ export interface MagicPromptDefinition {
|
||||
id: MagicPromptId;
|
||||
title: string;
|
||||
description: string;
|
||||
group: 'Git' | 'GitHub' | 'GitLab' | 'Planning' | 'Session';
|
||||
group: 'Git' | 'GitHub' | 'GitLab' | 'Gitea' | 'Planning' | 'Session';
|
||||
template: string;
|
||||
placeholders?: Array<{ key: string; description: string }>;
|
||||
}
|
||||
@@ -429,6 +433,121 @@ Question/Support:
|
||||
- Answer/guidance (max 6 lines)
|
||||
- Missing info (max 4)
|
||||
|
||||
Do not implement changes until I confirm; end with: "Next actions: <1 sentence>".`,
|
||||
},
|
||||
{
|
||||
id: 'gitea.pr.review.visible',
|
||||
title: 'PR Review Visible Prompt',
|
||||
group: 'Gitea',
|
||||
description: 'Visible user message when creating pull request review requests from Gitea context.',
|
||||
placeholders: [
|
||||
{ key: 'pr_number', description: 'Pull request number.' },
|
||||
],
|
||||
template: 'Review this pull request !{{pr_number}} using the provided PR context',
|
||||
},
|
||||
{
|
||||
id: 'gitea.pr.review.instructions',
|
||||
title: 'PR Review Instructions',
|
||||
group: 'Gitea',
|
||||
description: 'Hidden instructions attached when generating a Gitea pull request review response.',
|
||||
template: `You are drafting a pull request review comment that will be posted back to the PR author. You are not the implementer; do not propose to write code or run commands.
|
||||
|
||||
Before drafting:
|
||||
- Read the PR title and body first to anchor on the author's intent. Evaluate whether the implementation matches that intent — missing pieces, incorrect behavior vs intent, scope creep.
|
||||
- The PR diff is the source of truth for what changed; the repo on disk may not yet reflect those changes. Read the diff carefully. Use the repo only as ancillary context (imports, call sites, existing patterns, nearby code) when you need to verify a specific claim — not to discover the changes themselves.
|
||||
- No speculation: every reported issue must be grounded in the diff plus ancillary repo evidence you actually read. If a claim cannot be verified, drop it — do not hedge or guess.
|
||||
- Clarifying question: if the PR's intent itself is unreadable (title/body give no "why", diff is ambiguous on purpose), ask me one focused question about intent and stop. Do not open a discovery loop — this is a review, not a planning session.
|
||||
|
||||
High-signal bar — only report issues that meet all of:
|
||||
- Objective and verifiable from the diff plus ancillary repo evidence.
|
||||
- Introduced by this PR (not pre-existing).
|
||||
- Material: bugs that will cause incorrect runtime behavior, security/privacy risks, correctness edge cases, backwards-compat breakage, missing implementations across modules/targets, boundary violations, OR a clear CLAUDE.md / AGENTS.md violation where you can quote the exact rule.
|
||||
|
||||
Do NOT report:
|
||||
- Pre-existing issues unrelated to the diff.
|
||||
- Pedantic nitpicks a senior engineer would not flag.
|
||||
- Issues a linter would catch.
|
||||
- Subjective style preferences not explicitly required by CLAUDE.md / AGENTS.md.
|
||||
- "Might" / "could" / "potential" concerns without concrete evidence.
|
||||
- Rules mentioned in CLAUDE.md / AGENTS.md but explicitly silenced in the code (e.g., via an ignore comment or documented exception).
|
||||
- Missing tests / coverage gaps unless CLAUDE.md / AGENTS.md explicitly requires them for the changed area.
|
||||
|
||||
Validation pass: before writing the final comment, re-check each candidate issue against the diff + ancillary repo evidence. Drop anything you are not certain about. False positives waste the author's time.
|
||||
|
||||
Output rules:
|
||||
- Produce a single review comment addressed to the PR author, using the exact format below.
|
||||
- No emojis. No code snippets. No fenced blocks. Short inline code identifiers are fine.
|
||||
- Reference evidence with file paths and line ranges (e.g., path/to/file.ts:120-138) derived from the diff. Use "approx" only as a last resort when the diff does not expose exact lines.
|
||||
- One bullet per unique issue; do not duplicate an issue across sections.
|
||||
- Keep the whole comment under ~300 words.
|
||||
|
||||
Format exactly:
|
||||
<1-2 sentence summary of intent and top-level verdict>
|
||||
|
||||
Must-fix:
|
||||
- <issue> - <brief why> - <file:line-range> - Action: <one-line action>
|
||||
Nice-to-have:
|
||||
- <issue> - <brief why> - <file:line-range> - Action: <one-line action>
|
||||
|
||||
If nothing clears the high-signal bar, write:
|
||||
Must-fix:
|
||||
- None
|
||||
Nice-to-have:
|
||||
- None`,
|
||||
},
|
||||
{
|
||||
id: 'gitea.issue.review.visible',
|
||||
title: 'Issue Review Visible Prompt',
|
||||
group: 'Gitea',
|
||||
description: 'Visible user message when creating issue review requests from Gitea context.',
|
||||
placeholders: [
|
||||
{ key: 'issue_number', description: 'Issue number.' },
|
||||
],
|
||||
template: 'Review this issue #{{issue_number}} using the provided issue context',
|
||||
},
|
||||
{
|
||||
id: 'gitea.issue.review.instructions',
|
||||
title: 'Issue Review Instructions',
|
||||
group: 'Gitea',
|
||||
description: 'Hidden instructions attached when generating a Gitea issue review response.',
|
||||
template: `Review this Gitea issue using the provided issue context.
|
||||
|
||||
Process:
|
||||
- First classify the issue type (bug / feature request / question/support / refactor / ops) and state it as: Type: <one label>.
|
||||
- Gather any needed repository context (code, config, docs) to validate assumptions.
|
||||
- After gathering, if anything is still unclear or cannot be verified, do not speculate — state what's missing and ask targeted questions.
|
||||
|
||||
Mode selection by type:
|
||||
- Bug / Question/Support / Ops: deliver the response directly using the matching template below. Do not bombard me with questions for straightforward diagnosis; use "Missing info" / "Repro/diagnostics needed" fields instead.
|
||||
- Feature request / Refactor with substantive unknowns: this is effectively a planning session. Do not emit the Feature template on the first turn. Instead, ask me focused clarifying questions in batches of at most 3, one topic at a time (scope, constraints, tradeoffs, UX, etc.), wait for answers, drop questions that became irrelevant, and repeat until you have no more substantive questions. Only then emit the Feature template.
|
||||
|
||||
Output rules:
|
||||
- Compact output; pick ONE template below and omit the others.
|
||||
- No emojis. No code snippets. No fenced blocks.
|
||||
- Short inline code identifiers allowed.
|
||||
- Reference evidence with file paths and line ranges when applicable; if exact lines are not available, cite the file and say "approx" + why.
|
||||
- Keep the entire response under ~300 words (applies to the final template output, not to clarifying-question turns).
|
||||
|
||||
Templates (choose one):
|
||||
Bug:
|
||||
- Summary (1-2 sentences)
|
||||
- Likely cause (max 2)
|
||||
- Repro/diagnostics needed (max 3)
|
||||
- Fix approach (max 4 steps)
|
||||
- Verification (max 3)
|
||||
|
||||
Feature:
|
||||
- Summary (1-2 sentences)
|
||||
- Requirements (max 4)
|
||||
- Unknowns/questions (max 4)
|
||||
- Proposed plan (max 5 steps)
|
||||
- Verification (max 3)
|
||||
|
||||
Question/Support:
|
||||
- Summary (1-2 sentences)
|
||||
- Answer/guidance (max 6 lines)
|
||||
- Missing info (max 4)
|
||||
|
||||
Do not implement changes until I confirm; end with: "Next actions: <1 sentence>".`,
|
||||
},
|
||||
{
|
||||
|
||||
@@ -59,10 +59,11 @@ describe('getVisibleContextRailSurfaces', () => {
|
||||
expect(getVisibleContextRailSurfaces(baseOptions).some((s) => s.id === 'browser')).toBe(true);
|
||||
});
|
||||
|
||||
test('hides the pr surface for other git providers but keeps it for github/gitlab', () => {
|
||||
test('hides the pr surface for other git providers but keeps it for github/gitlab/gitea', () => {
|
||||
expect(getVisibleContextRailSurfaces({ ...baseOptions, gitProvider: 'other' }).some((s) => s.id === 'pr')).toBe(false);
|
||||
expect(getVisibleContextRailSurfaces({ ...baseOptions, gitProvider: 'gitlab' }).some((s) => s.id === 'pr')).toBe(true);
|
||||
expect(getVisibleContextRailSurfaces({ ...baseOptions, gitProvider: 'github' }).some((s) => s.id === 'pr')).toBe(true);
|
||||
expect(getVisibleContextRailSurfaces({ ...baseOptions, gitProvider: 'gitea' }).some((s) => s.id === 'pr')).toBe(true);
|
||||
});
|
||||
|
||||
test('keeps the pr surface while the git provider is unknown', () => {
|
||||
|
||||
@@ -193,7 +193,7 @@ type VisibleRailSurfacesOptions = {
|
||||
* request / GitLab merge request view; it is hidden for repositories on
|
||||
* any other provider. null (unknown, still resolving) keeps it visible.
|
||||
*/
|
||||
gitProvider?: 'github' | 'gitlab' | 'other' | null;
|
||||
gitProvider?: 'github' | 'gitlab' | 'gitea' | 'other' | null;
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user