From 06c3443ab5df35bfd44050fa10e8bb0543945bb0 Mon Sep 17 00:00:00 2001 From: OrcaWin Date: Wed, 28 Oct 2026 16:26:36 -0700 Subject: [PATCH] fix(i18n): localize right sidebar, GitHub and PR page leftovers (#35416) Replace sentence fragments, manual non-family plurals, item(s) copy and hard-coded English in the right sidebar, GitHub item dialog, PR page, GitLab item dialog and diff-comment surfaces with whole-sentence keys and CLDR plural families, and add translations for all built-in locales. Refs #32207 Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com> --- config/scripts/locale-key-overrides.mjs | 5 - config/scripts/locale-ko-key-overrides.json | 87 ---- docs/reference/plugin-themes.md | 6 +- .../diff-comments/DiffCommentCard.tsx | 7 +- .../diff-comments/DiffCommentPopover.tsx | 15 +- .../diff-comments/diff-comment-zone-card.tsx | 10 +- .../diff-comments/useDiffCommentDecorator.tsx | 6 +- .../conversation-tab-comment-group.tsx | 18 +- .../conversation-tab-description.tsx | 5 +- .../discuss-item/conversation-tab.tsx | 3 +- .../issue-conversation-entries.ts | 14 +- .../pr-files-combined-diff-toolbar.tsx | 19 +- .../github-item-dialog-issue-header.tsx | 32 +- .../github-item-dialog-pr-header.tsx | 9 +- .../src/components/github-pr-merge-state.ts | 5 +- .../github-project/project-view-error-copy.ts | 16 +- .../components/github/CommentCodeContext.tsx | 10 +- .../components/github/CommentReactions.tsx | 40 +- .../github/IssueSourceIndicator.tsx | 25 +- .../components/github/IssueSourceSelector.tsx | 19 +- .../components/github/PRFilterDropdowns.tsx | 31 +- .../src/components/github/PRFilterPickers.tsx | 77 +++- .../components/github/PRFilterSections.tsx | 95 ++-- .../github/github-rate-limit-display.tsx | 15 +- .../github/pr-check-presentation.ts | 24 +- .../github/work-item-state-presentation.tsx | 15 +- .../gitlab-description-tab.tsx | 55 ++- .../conversation/comment-group.tsx | 18 +- .../conversation/description.tsx | 5 +- .../pull-request-page/conversation/tab.tsx | 3 +- .../files/combined-diff-viewer.tsx | 16 +- .../pull-request-page/files/toolbar.tsx | 19 +- .../pull-request-page/mentions/options.ts | 26 +- .../right-sidebar/AiVaultPanelSearch.tsx | 19 +- .../right-sidebar/AiVaultScanIssueBanners.tsx | 16 +- .../AiVaultScanProgressStrip.tsx | 26 +- .../right-sidebar/AiVaultSessionListBar.tsx | 35 +- .../AiVaultSessionUnsavedNotice.tsx | 48 +- .../FolderWorkspacePrChecksPanel.tsx | 35 +- .../FolderWorkspaceWorktreesPanel.test.tsx | 4 +- .../FolderWorkspaceWorktreesPanel.tsx | 11 +- .../SourceControlAgentActionDialog.tsx | 6 +- .../checks-panel-updated-at-metadata.tsx | 11 +- .../checks-panel/checks-list.tsx | 64 ++- .../checks-panel/comment-controls.tsx | 5 +- .../checks-panel/comment-group.tsx | 5 +- .../checks-panel/comments-list.tsx | 34 +- .../checks-panel/empty-content.tsx | 9 +- .../checks-panel/triage-strip.tsx | 14 +- .../use-checks-panel-comment-resolution.tsx | 15 +- .../checks-panel/use-comments-list-state.tsx | 5 +- .../file-explorer-multi-drag-image.ts | 22 +- .../github-pr-stack-confirmation.ts | 16 +- .../right-sidebar/github-pr-stack-merge.ts | 4 +- .../right-sidebar/local-port-row.tsx | 13 +- .../pr-comments-list-selection.test.tsx | 44 +- ...rce-control-agent-action-dialog-support.ts | 18 +- .../source-control/commit/bulk-action-bar.tsx | 35 +- .../commit/use-discard-confirmation.ts | 28 +- .../source-control/listing/branch-section.tsx | 8 +- .../source-control/listing/conflict-badge.tsx | 43 +- .../listing/review-note-count-title.ts | 4 +- .../notes/diff-comments-clear-dialog-state.ts | 37 +- .../panel/branch-context-stats.ts | 16 +- .../source-control/panel/dialog-layer.tsx | 10 +- .../source-control/panel/fork-push-notice.tsx | 9 +- .../source-control/sync/compare-summary.tsx | 30 +- .../source-control/sync/use-conflict-abort.ts | 52 ++- .../right-sidebar/ssh-port-forward-dialog.tsx | 30 +- ...-create-pull-request-base-ref-discovery.ts | 8 +- ...se-create-pull-request-field-generation.ts | 13 +- .../right-sidebar/useFileExplorerImport.ts | 52 ++- .../src/i18n/en-runtime-required.json | 136 +++++- src/renderer/src/i18n/locales/de.json | 328 +++++++++----- src/renderer/src/i18n/locales/en.json | 330 +++++++++----- src/renderer/src/i18n/locales/es.json | 328 +++++++++----- src/renderer/src/i18n/locales/fr.json | 328 +++++++++----- src/renderer/src/i18n/locales/ja.json | 285 +++++++----- src/renderer/src/i18n/locales/ko.json | 285 +++++++----- src/renderer/src/i18n/locales/pt.json | 328 +++++++++----- src/renderer/src/i18n/locales/ru.json | 416 +++++++++++++----- src/renderer/src/i18n/locales/tr.json | 285 +++++++----- src/renderer/src/i18n/locales/zh-Hant.json | 285 +++++++----- src/renderer/src/i18n/locales/zh.json | 285 +++++++----- 84 files changed, 3568 insertions(+), 1655 deletions(-) diff --git a/config/scripts/locale-key-overrides.mjs b/config/scripts/locale-key-overrides.mjs index f7caac4917b..625c59ae173 100644 --- a/config/scripts/locale-key-overrides.mjs +++ b/config/scripts/locale-key-overrides.mjs @@ -139,11 +139,6 @@ const BASE_LOCALE_KEY_OVERRIDES = { zh: '知道了', ja: '了解' }, - 'auto.components.GitHubItemDialog.55962099bc': { - ko: '이 이슈를 열었습니다', - zh: '创建了此议题', - ja: 'このイシューを作成しました' - }, 'auto.components.GitHubItemDialog.726db41722': { ko: '워크스페이스 열기', zh: '打开工作区', diff --git a/config/scripts/locale-ko-key-overrides.json b/config/scripts/locale-ko-key-overrides.json index 7e1e8db7491..5479aba8435 100644 --- a/config/scripts/locale-ko-key-overrides.json +++ b/config/scripts/locale-ko-key-overrides.json @@ -14,9 +14,6 @@ "auto.components.GitHubItemDialog.03e542fcfe": { "ko": "실패한 체크를 수정하기 위해 AI agent를 시작하지 못했습니다: {{value0}}" }, - "auto.components.GitHubItemDialog.0ae387d8ca": { - "ko": "작성자" - }, "auto.components.GitHubItemDialog.0bbdc673c1": { "ko": "체크를 새로고침하지 못했습니다." }, @@ -119,9 +116,6 @@ "auto.components.GitLabItemDialog.00d0d25825": { "ko": "파일, 줄, 댓글이 필요합니다." }, - "auto.components.GitLabItemDialog.00f3bab87b": { - "ko": " / 총 {{value0}}개 필요" - }, "auto.components.GitLabItemDialog.1b19cdc510": { "ko": "리뷰어 삭제 {{value0}}" }, @@ -248,9 +242,6 @@ "auto.components.PullRequestPage.36b514a457": { "ko": "{{value0}} 리뷰 요청 취소" }, - "auto.components.PullRequestPage.3c891789f6": { - "ko": "작성자" - }, "auto.components.PullRequestPage.41d275d3ec": { "ko": "리뷰어 {{value0}} 요청" }, @@ -1097,15 +1088,9 @@ "auto.components.github.PRFilterSections.f0cf6dd591": { "ko": "꺼짐" }, - "auto.components.github.github.rate.limit.display.6da1858354": { - "ko": "남음 · 재설정까지" - }, "auto.components.github.github.rate.limit.display.budget_scope_prefix": { "ko": "예산 범위" }, - "auto.components.github.github.rate.limit.display.f42790d150": { - "ko": "/" - }, "auto.components.github.pr.merge.state.039c072f94": { "ko": "뒤처짐" }, @@ -1388,9 +1373,6 @@ "auto.components.right.sidebar.AiVaultPanel.shownRecent": { "ko": "{{value0}}개 표시 · 최근 {{value1}}개" }, - "auto.components.right.sidebar.AiVaultPanel.transcriptsSkipped": { - "ko": "대화 기록 {{count}}개 건너뜀" - }, "auto.components.right.sidebar.AiVaultPanel.valueCopied": { "ko": "{{value0}} 복사됨" }, @@ -1478,12 +1460,6 @@ "auto.components.right.sidebar.AiVaultSessionRow.revealLog": { "ko": "로그 위치 열기" }, - "auto.components.right.sidebar.BulkActionBar.60ed678138": { - "ko": "선택됨" - }, - "auto.components.right.sidebar.BulkActionBar.ef5f5bd06e": { - "ko": "스테이지에 올리기 (" - }, "auto.components.right.sidebar.ChecksPanel.5c88c6db07": { "ko": "{{value0}}에서 열기" }, @@ -1523,9 +1499,6 @@ "auto.components.right.sidebar.SourceControl.11b5dd8e41": { "ko": "비교 대상" }, - "auto.components.right.sidebar.SourceControl.3278b2767b": { - "ko": "앞섬" - }, "auto.components.right.sidebar.SourceControl.6d7f2a47e5": { "ko": "폴더의 변경 사항 취소" }, @@ -1700,12 +1673,6 @@ "auto.components.right.sidebar.useFileDeletion.7fb9435c86": { "ko": "원격 호스트의 디렉터리와 그 안의 내용을 영구적으로 삭제합니다. 이 작업은 되돌릴 수 없습니다." }, - "auto.components.rightSidebar.FolderWorkspaceWorktreesPanel.countMany": { - "ko": "연결된 워크트리 {{value0}}개" - }, - "auto.components.rightSidebar.FolderWorkspaceWorktreesPanel.countOne": { - "ko": "연결된 워크트리 1개" - }, "auto.components.rightSidebar.FolderWorkspaceWorktreesPanel.emptyCopy": { "ko": "이 워크스페이스에서 만든 워크트리가 여기에 표시됩니다." }, @@ -1718,27 +1685,9 @@ "auto.components.rightSidebar.FolderWorkspacePrChecksPanel.allChecksPassing": { "ko": "모든 검사 통과" }, - "auto.components.rightSidebar.FolderWorkspacePrChecksPanel.failingCount": { - "ko": "{{value0}}개 실패" - }, - "auto.components.rightSidebar.FolderWorkspacePrChecksPanel.oneFailing": { - "ko": "1개 실패" - }, - "auto.components.rightSidebar.FolderWorkspacePrChecksPanel.onePending": { - "ko": "1개 대기 중" - }, - "auto.components.rightSidebar.FolderWorkspacePrChecksPanel.oneWorktree": { - "ko": "워크트리 1개" - }, - "auto.components.rightSidebar.FolderWorkspacePrChecksPanel.pendingCount": { - "ko": "{{value0}}개 대기 중" - }, "auto.components.rightSidebar.FolderWorkspacePrChecksPanel.reviewChecks": { "ko": "리뷰 검사" }, - "auto.components.rightSidebar.FolderWorkspacePrChecksPanel.worktreeCount": { - "ko": "워크트리 {{value0}}개" - }, "auto.components.settings.AccountsPane.b15ce90870": { "ko": "{{value0}} -> {{value1}}. 이전 세션을 계속하기 전에 실행 중인 Claude terminals을 다시 시작하세요." }, @@ -5639,18 +5588,6 @@ "auto.components.settings.SshPassphraseDialog.981352fb42": { "ko": "다음 연결 대상의 인증 요청을 완료하세요:" }, - "auto.components.right.sidebar.SourceControl.compareBaseCommitsAheadOne": { - "ko": "{{ref}}보다 커밋 1개 앞서 있음" - }, - "auto.components.right.sidebar.SourceControl.compareBaseCommitsAheadOther": { - "ko": "{{ref}}보다 커밋 {{count}}개 앞서 있음" - }, - "auto.components.right.sidebar.SourceControl.compareBaseCommitsBehindOne": { - "ko": "{{ref}}보다 커밋 1개 뒤처짐" - }, - "auto.components.right.sidebar.SourceControl.compareBaseCommitsBehindOther": { - "ko": "{{ref}}보다 커밋 {{count}}개 뒤처짐" - }, "components.workspace.cleanup.browse.review.open": { "ko": "열림" }, @@ -5801,18 +5738,6 @@ "auto.components.settings.contrast.off": { "ko": "끔" }, - "auto.components.GitHubItemDialog.reactionCountSingular": { - "ko": "{{reaction}} 반응 {{count}}개" - }, - "auto.components.GitHubItemDialog.reactionCountPlural": { - "ko": "{{reaction}} 반응 {{count}}개" - }, - "auto.components.GitLabItemDialog.approvalsRemainingSingular": { - "ko": "승인 {{count}}개 남음" - }, - "auto.components.GitLabItemDialog.approvalsRemainingPlural": { - "ko": "승인 {{count}}개 남음" - }, "auto.components.TaskPage.labelCountSingular": { "ko": "라벨 {{count}}개" }, @@ -5849,18 +5774,6 @@ "auto.components.sidebar.AddRemoteHostDialog.sshImportSyncedPlural": { "ko": "호스트 {{count}}개를 Orca에 추가했습니다." }, - "auto.components.right.sidebar.SourceControl.discardFailedSingular": { - "ko": "파일 {{count}}개의 변경 사항을 버리지 못했습니다." - }, - "auto.components.right.sidebar.SourceControl.discardFailedPlural": { - "ko": "파일 {{count}}개의 변경 사항을 버리지 못했습니다." - }, - "auto.components.right.sidebar.SourceControl.noteCountSingular": { - "ko": "메모 {{count}}개" - }, - "auto.components.right.sidebar.SourceControl.noteCountPlural": { - "ko": "메모 {{count}}개" - }, "auto.components.onboarding.IntegrationsStep.linearWorkspacesLinkedSingular": { "ko": "워크스페이스 {{count}}개가 연결되었습니다. 언제든지 다른 워크스페이스를 추가하거나 접근 권한이 제한된 API 키를 교체할 수 있습니다." }, diff --git a/docs/reference/plugin-themes.md b/docs/reference/plugin-themes.md index d8ac2b0ad1c..321259c8951 100644 --- a/docs/reference/plugin-themes.md +++ b/docs/reference/plugin-themes.md @@ -28,7 +28,11 @@ Each entry is `{ "id", "label", "path" }` pointing at a JSON file of at most 16 ## Terminal themes ```json -{ "schemaVersion": 1, "mode": "dark", "terminal": { "background": "#1b1430", "foreground": "#e8e0ff", "red": "#ff6b8b" } } +{ + "schemaVersion": 1, + "mode": "dark", + "terminal": { "background": "#1b1430", "foreground": "#e8e0ff", "red": "#ff6b8b" } +} ``` Colors are hex. A palette needs `background`, `foreground` and at least one ANSI color. When a diff --git a/src/renderer/src/components/diff-comments/DiffCommentCard.tsx b/src/renderer/src/components/diff-comments/DiffCommentCard.tsx index f880471f943..a7e2f77a126 100644 --- a/src/renderer/src/components/diff-comments/DiffCommentCard.tsx +++ b/src/renderer/src/components/diff-comments/DiffCommentCard.tsx @@ -135,7 +135,12 @@ export function DiffCommentCard({ const canSubmit = !submitting && trimmedDraft.length > 0 && trimmedDraft !== body const lineLabel = label === undefined ? getDiffCommentLineLabel({ lineNumber, startLine }).toLowerCase() : label - const metaText = [author || 'Note', lineLabel, createdAtLabel || (sentAt ? 'sent' : null)] + const metaText = [ + author || translate('auto.components.diff.comments.DiffCommentCard.noteAuthorFallback', 'Note'), + lineLabel, + createdAtLabel || + (sentAt ? translate('auto.components.diff.comments.DiffCommentCard.sentMeta', 'sent') : null) + ] .filter(Boolean) .join(' ') diff --git a/src/renderer/src/components/diff-comments/DiffCommentPopover.tsx b/src/renderer/src/components/diff-comments/DiffCommentPopover.tsx index b5c16185296..12b3b9cdc1a 100644 --- a/src/renderer/src/components/diff-comments/DiffCommentPopover.tsx +++ b/src/renderer/src/components/diff-comments/DiffCommentPopover.tsx @@ -40,9 +40,18 @@ export function DiffCommentPopover({ left, lineHeight = 0, title, - placeholder = 'Add note for the AI', - submitLabel = 'Add note', - submittingLabel = 'Saving…', + placeholder = translate( + 'auto.components.diff.comments.DiffCommentPopover.f6c449191e', + 'Add note for the AI' + ), + submitLabel = translate( + 'auto.components.diff.comments.DiffCommentPopover.5fa4bfebaa', + 'Add note' + ), + submittingLabel = translate( + 'auto.components.diff.comments.DiffCommentCard.bb0a55f856', + 'Saving…' + ), onCancel, onSubmit }: Props): React.JSX.Element { diff --git a/src/renderer/src/components/diff-comments/diff-comment-zone-card.tsx b/src/renderer/src/components/diff-comments/diff-comment-zone-card.tsx index 5eb6d312971..d6d34f80f46 100644 --- a/src/renderer/src/components/diff-comments/diff-comment-zone-card.tsx +++ b/src/renderer/src/components/diff-comments/diff-comment-zone-card.tsx @@ -109,9 +109,15 @@ export function renderDiffCommentZoneCard( groupId={activeGroupId} modeIdParts={['diff-comment-note', worktreeId, filePath, comment.id]} scopes={getSingleCommentSendScopes(comment, formatCommentPrompt)} - targetModeLabel="This note" + targetModeLabel={translate( + 'auto.components.diff.comments.useDiffCommentDecorator.995fa28b50', + 'This note' + )} triggerClassName="orca-diff-comment-edit" - disabledTooltip="Note already sent" + disabledTooltip={translate( + 'auto.components.diff.comments.diffCommentZoneCard.noteAlreadySent', + 'Note already sent' + )} onDelivered={(notes) => void clearDeliveredDiffComments(worktreeId, notes)} /> ) : null diff --git a/src/renderer/src/components/diff-comments/useDiffCommentDecorator.tsx b/src/renderer/src/components/diff-comments/useDiffCommentDecorator.tsx index 70b772f3dc4..185dc78bc5a 100644 --- a/src/renderer/src/components/diff-comments/useDiffCommentDecorator.tsx +++ b/src/renderer/src/components/diff-comments/useDiffCommentDecorator.tsx @@ -2,6 +2,7 @@ import { useCallback, useEffect, useMemo, useRef } from 'react' import type { editor as monacoEditor } from 'monaco-editor' import { createRoot, type Root } from 'react-dom/client' import { getCommentBodyLayoutLineCount } from '@/lib/comment-body-line-count' +import { translate } from '@/i18n/i18n' import { useAppStore } from '@/store' import { installDiffCommentAddButtonOverlay, @@ -60,7 +61,10 @@ export function useDiffCommentDecorator({ worktreeId, comments, commentableLineNumbers, - addButtonLabel = 'Add note for the AI', + addButtonLabel = translate( + 'auto.components.diff.comments.DiffCommentPopover.f6c449191e', + 'Add note for the AI' + ), pendingCommentTarget = null, addNoteShortcutEnabled = false, onCreateComment, diff --git a/src/renderer/src/components/github-item-dialog/discuss-item/conversation-tab-comment-group.tsx b/src/renderer/src/components/github-item-dialog/discuss-item/conversation-tab-comment-group.tsx index 25b5b126825..03d809db216 100644 --- a/src/renderer/src/components/github-item-dialog/discuss-item/conversation-tab-comment-group.tsx +++ b/src/renderer/src/components/github-item-dialog/discuss-item/conversation-tab-comment-group.tsx @@ -64,11 +64,21 @@ export function ConversationTabCommentGroup({ > - {translate('auto.components.GitHubItemDialog.228e2f59d3', 'Resolved')}{' '} {group.kind === 'thread' - ? translate('auto.components.GitHubItemDialog.28d0d3374f', 'thread') - : translate('auto.components.GitHubItemDialog.e2bf3e41a9', 'comment')}{' '} - {translate('auto.components.GitHubItemDialog.0ae387d8ca', 'by')} {root.author} + ? translate( + 'auto.components.GitHubItemDialog.resolvedThreadBy', + 'Resolved thread by {{author}}', + { + author: root.author + } + ) + : translate( + 'auto.components.GitHubItemDialog.resolvedCommentBy', + 'Resolved comment by {{author}}', + { + author: root.author + } + )} {count > 1 ? ` (${count})` : ''} diff --git a/src/renderer/src/components/github-item-dialog/discuss-item/conversation-tab-description.tsx b/src/renderer/src/components/github-item-dialog/discuss-item/conversation-tab-description.tsx index 24abcd7f1ac..6fcd05813c0 100644 --- a/src/renderer/src/components/github-item-dialog/discuss-item/conversation-tab-description.tsx +++ b/src/renderer/src/components/github-item-dialog/discuss-item/conversation-tab-description.tsx @@ -45,8 +45,9 @@ export function ConversationTabDescription({
{authorLabel} - {translate('auto.components.GitHubItemDialog.8223320f8d', 'updated')}{' '} - {formatRelativeTime(item.updatedAt)} + {translate('auto.components.GitHubItemDialog.updatedRelativeTime', 'updated {{time}}', { + time: formatRelativeTime(item.updatedAt) + })} {canEditBody && !loading && detailsLoaded ? ( bodyEditing ? ( diff --git a/src/renderer/src/components/github-item-dialog/discuss-item/conversation-tab.tsx b/src/renderer/src/components/github-item-dialog/discuss-item/conversation-tab.tsx index 79daa2d7c47..6e7900f96ea 100644 --- a/src/renderer/src/components/github-item-dialog/discuss-item/conversation-tab.tsx +++ b/src/renderer/src/components/github-item-dialog/discuss-item/conversation-tab.tsx @@ -99,7 +99,8 @@ export function ConversationTab({ onCommentAdded: (comment: PRComment) => void onReviewersRequested: (reviewRequests: GitHubAssignableUser[]) => void }): React.JSX.Element { - const authorLabel = item.author ?? 'unknown' + const authorLabel = + item.author ?? translate('auto.components.GitHubItemDialog.773ff70035', 'unknown') const [replyingTo, setReplyingTo] = useState(null) const [commentFilter, setCommentFilter] = useState('all') const [bodyDraft, setBodyDraft] = useState(body) diff --git a/src/renderer/src/components/github-item-dialog/discuss-item/issue-conversation-entries.ts b/src/renderer/src/components/github-item-dialog/discuss-item/issue-conversation-entries.ts index 75f08c821dd..46fd123ac2d 100644 --- a/src/renderer/src/components/github-item-dialog/discuss-item/issue-conversation-entries.ts +++ b/src/renderer/src/components/github-item-dialog/discuss-item/issue-conversation-entries.ts @@ -48,9 +48,17 @@ export function getIssueConversationEntries( } export function getTimelineTargetLabel(target: GitHubIssueTimelineTarget): string { - const prefix = target.type === 'pr' ? 'PR' : 'issue' - const title = target.title ? ` ${target.title}` : '' - return `${prefix} #${target.number}${title}` + const reference = + target.type === 'pr' + ? translate( + 'auto.components.GitHubItemDialog.timeline.pullRequestReference', + 'PR #{{number}}', + { number: target.number } + ) + : translate('auto.components.GitHubItemDialog.timeline.issueReference', 'issue #{{number}}', { + number: target.number + }) + return target.title ? `${reference} ${target.title}` : reference } export function getTimelineStateReasonLabel(reason: string | null | undefined): string | null { diff --git a/src/renderer/src/components/github-item-dialog/inspect-pull-request/pr-files-combined-diff-toolbar.tsx b/src/renderer/src/components/github-item-dialog/inspect-pull-request/pr-files-combined-diff-toolbar.tsx index dbb0b8103c4..4a8f6d1f50f 100644 --- a/src/renderer/src/components/github-item-dialog/inspect-pull-request/pr-files-combined-diff-toolbar.tsx +++ b/src/renderer/src/components/github-item-dialog/inspect-pull-request/pr-files-combined-diff-toolbar.tsx @@ -48,8 +48,23 @@ export function PRFilesCombinedDiffToolbar({ )} - {files.filter(isPRFileViewed).length} / {files.length}{' '} - {translate('auto.components.GitHubItemDialog.f2d02cdf8c', 'files viewed')} + {files.length === 1 + ? translate( + 'auto.components.GitHubItemDialog.filesViewed_one', + '{{viewed}} / {{count}} file viewed', + { + viewed: files.filter(isPRFileViewed).length, + count: files.length + } + ) + : translate( + 'auto.components.GitHubItemDialog.filesViewed_other', + '{{viewed}} / {{count}} files viewed', + { + viewed: files.filter(isPRFileViewed).length, + count: files.length + } + )}
diff --git a/src/renderer/src/components/github-item-dialog/open-dialog/github-item-dialog-issue-header.tsx b/src/renderer/src/components/github-item-dialog/open-dialog/github-item-dialog-issue-header.tsx index bcd822e187c..35c55cba46c 100644 --- a/src/renderer/src/components/github-item-dialog/open-dialog/github-item-dialog-issue-header.tsx +++ b/src/renderer/src/components/github-item-dialog/open-dialog/github-item-dialog-issue-header.tsx @@ -23,7 +23,8 @@ import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip import { cn } from '@/lib/utils' import { parseOwnerRepoFromItemUrl } from '@/components/github/github-work-item-identity' import { formatRelativeTime } from '@/components/github/work-item-state-presentation' -import { translate } from '@/i18n/i18n' +import { Trans } from 'react-i18next' +import { i18n, translate } from '@/i18n/i18n' import type { GitHubWorkItem } from '../../../../../shared/github/work-item-types' import { WorkItemIssueSourceIndicator } from './work-item-issue-source-indicator' @@ -224,16 +225,31 @@ export function GitHubItemDialogIssueHeader({ : translate('auto.components.GitHubItemDialog.dc1ca081a8', 'Open')} - - {workItem.author ?? - translate('auto.components.GitHubItemDialog.773ff70035', 'unknown')} - - {translate('auto.components.GitHubItemDialog.55962099bc', 'opened this issue')} + opened this issue' + )} + components={{ + author: ( + + {workItem.author ?? + translate('auto.components.GitHubItemDialog.773ff70035', 'unknown')} + + ) + }} + /> - {translate('auto.components.GitHubItemDialog.10ef1afb8e', '· updated')}{' '} - {formatRelativeTime(workItem.updatedAt)} + {translate( + 'auto.components.GitHubItemDialog.middotUpdatedRelativeTime', + '· updated {{time}}', + { + time: formatRelativeTime(workItem.updatedAt) + } + )} - {translate('auto.components.GitHubItemDialog.8223320f8d', 'updated')}{' '} - {formatRelativeTime(workItem.updatedAt)} + {translate( + 'auto.components.GitHubItemDialog.updatedRelativeTime', + 'updated {{time}}', + { + time: formatRelativeTime(workItem.updatedAt) + } + )} {workItem.branchName && ( diff --git a/src/renderer/src/components/github-pr-merge-state.ts b/src/renderer/src/components/github-pr-merge-state.ts index d8c8f9a0445..d9970f890f9 100644 --- a/src/renderer/src/components/github-pr-merge-state.ts +++ b/src/renderer/src/components/github-pr-merge-state.ts @@ -123,7 +123,10 @@ function presentMergeStateKind( case 'merge_queue': case 'merge_queue_auto_merge_on': return { - label: kind === 'merge_queue_auto_merge_on' ? 'Auto-merge on' : 'Merge when ready', + label: + kind === 'merge_queue_auto_merge_on' + ? translate('auto.components.github.pr.merge.state.autoMergeOn', 'Auto-merge on') + : translate('auto.components.github.pr.merge.state.b169f943e1', 'Merge when ready'), tone: WARNING_TONE, tooltip: translate( 'auto.components.github.pr.merge.state.35ec24bc43', diff --git a/src/renderer/src/components/github-project/project-view-error-copy.ts b/src/renderer/src/components/github-project/project-view-error-copy.ts index 0a374dbc03b..9ebeb6b568b 100644 --- a/src/renderer/src/components/github-project/project-view-error-copy.ts +++ b/src/renderer/src/components/github-project/project-view-error-copy.ts @@ -136,11 +136,17 @@ function typeCopy( 'projectViews.error.tooLargeUnknownCount', "This view has too many items to render in Orca. Narrow the view's filter on GitHub." ) - : translate( - 'projectViews.error.tooLarge', - "This view has {{itemCount}} items — too large to render in Orca. Narrow the view's filter on GitHub.", - { itemCount: context.totalCount } - ) + : context.totalCount === 1 + ? translate( + 'projectViews.error.tooLargeCount_one', + "This view has {{count}} item — too large to render in Orca. Narrow the view's filter on GitHub.", + { count: context.totalCount } + ) + : translate( + 'projectViews.error.tooLargeCount_other', + "This view has {{count}} items — too large to render in Orca. Narrow the view's filter on GitHub.", + { count: context.totalCount } + ) case 'unsupported_layout': // Older hosts may still reject roadmaps; keep the explanation independent of the requested layout. return translate( diff --git a/src/renderer/src/components/github/CommentCodeContext.tsx b/src/renderer/src/components/github/CommentCodeContext.tsx index c09ef9f0ec7..b56540e50a9 100644 --- a/src/renderer/src/components/github/CommentCodeContext.tsx +++ b/src/renderer/src/components/github/CommentCodeContext.tsx @@ -195,8 +195,14 @@ export function CommentCodeContext({ } = codeContext const language = detectLanguage(comment.path) const blockTooltip = shouldUseBlockRange - ? 'Show surrounding code block' - : 'Show nearby code context' + ? translate( + 'auto.components.github.CommentCodeContext.showSurroundingCodeBlock', + 'Show surrounding code block' + ) + : translate( + 'auto.components.github.CommentCodeContext.showNearbyCodeContext', + 'Show nearby code context' + ) return (
diff --git a/src/renderer/src/components/github/CommentReactions.tsx b/src/renderer/src/components/github/CommentReactions.tsx index 494e4a9b295..62f132683bb 100644 --- a/src/renderer/src/components/github/CommentReactions.tsx +++ b/src/renderer/src/components/github/CommentReactions.tsx @@ -19,26 +19,36 @@ const REACTION_EMOJI: Record = { eyes: '👀' } -const REACTION_LABEL: Record = { - '+1': 'thumbs up', - '-1': 'thumbs down', - laugh: 'laugh', - confused: 'confused', - heart: 'heart', - hooray: 'hooray', - rocket: 'rocket', - eyes: 'eyes' +function reactionLabel(content: GitHubReactionContent): string { + switch (content) { + case '+1': + return translate('auto.components.github.CommentReactions.reaction.thumbsUp', 'thumbs up') + case '-1': + return translate('auto.components.github.CommentReactions.reaction.thumbsDown', 'thumbs down') + case 'laugh': + return translate('auto.components.github.CommentReactions.reaction.laugh', 'laugh') + case 'confused': + return translate('auto.components.github.CommentReactions.reaction.confused', 'confused') + case 'heart': + return translate('auto.components.github.CommentReactions.reaction.heart', 'heart') + case 'hooray': + return translate('auto.components.github.CommentReactions.reaction.hooray', 'hooray') + case 'rocket': + return translate('auto.components.github.CommentReactions.reaction.rocket', 'rocket') + case 'eyes': + return translate('auto.components.github.CommentReactions.reaction.eyes', 'eyes') + } } function reactionCountLabel(count: number, reaction: string): string { return count === 1 ? translate( - 'auto.components.GitHubItemDialog.reactionCountSingular', + 'auto.components.GitHubItemDialog.reactionCount_one', '{{count}} {{reaction}} reaction', { count, reaction } ) : translate( - 'auto.components.GitHubItemDialog.reactionCountPlural', + 'auto.components.GitHubItemDialog.reactionCount_other', '{{count}} {{reaction}} reactions', { count, reaction } ) @@ -111,7 +121,7 @@ export function CommentReactions({ reaction.viewerHasReacted && 'border-ring bg-accent text-accent-foreground' )} aria-pressed={Boolean(reaction.viewerHasReacted)} - aria-label={reactionCountLabel(reaction.count, REACTION_LABEL[reaction.content])} + aria-label={reactionCountLabel(reaction.count, reactionLabel(reaction.content))} onClick={() => void changeReaction( reaction.content, @@ -127,7 +137,7 @@ export function CommentReactions({ ) : ( {reaction.count} @@ -190,12 +200,12 @@ export function CommentReactions({ ? translate( 'auto.components.github.CommentReactions.removeNamedReaction', 'Remove {{value0}} reaction', - { value0: REACTION_LABEL[content] } + { value0: reactionLabel(content) } ) : translate( 'auto.components.github.CommentReactions.addNamedReaction', 'Add {{value0}} reaction', - { value0: REACTION_LABEL[content] } + { value0: reactionLabel(content) } ) } aria-pressed={reacted} diff --git a/src/renderer/src/components/github/IssueSourceIndicator.tsx b/src/renderer/src/components/github/IssueSourceIndicator.tsx index 8f38d05ecc4..fadd5fb3518 100644 --- a/src/renderer/src/components/github/IssueSourceIndicator.tsx +++ b/src/renderer/src/components/github/IssueSourceIndicator.tsx @@ -1,6 +1,8 @@ import React from 'react' import type { GitHubOwnerRepo } from '../../../../shared/github/pull-request-types' import RepoBadgeLabel from '@/components/repo/RepoBadgeLabel' +import { Trans } from 'react-i18next' +import { i18n, translate } from '@/i18n/i18n' import { cn } from '@/lib/utils' import { githubRepoIdentityKey, @@ -19,8 +21,11 @@ export type IssueSourceIndicatorProps = { } // Name the resolved repository, not remote aliases that could imply a stable UI-to-git-config mapping. -const LABEL_PREFIX_LIST = 'Issues from ' -const LABEL_PREFIX_ITEM = 'Issue from ' +function issueSourceTemplate(variant: 'list' | 'item'): string { + return variant === 'item' + ? translate('auto.components.github.IssueSourceIndicator.issueFromRepo', 'Issue from ') + : translate('auto.components.github.IssueSourceIndicator.issuesFromRepo', 'Issues from ') +} export function sameGitHubOwnerRepo( left: GitHubOwnerRepo | null, @@ -52,14 +57,15 @@ export default function IssueSourceIndicator({ host && !isDefaultGitHubHost(host) ? `${host}/${issues.owner}/${issues.repo}` : `${issues.owner}/${issues.repo}` - const prefix = variant === 'item' ? LABEL_PREFIX_ITEM : LABEL_PREFIX_LIST + const template = issueSourceTemplate(variant) + const label = template.replace('', slug) return ( {localRepo ? ( // Disambiguate which local repo this issue-source chip describes in multi-repo views. @@ -70,8 +76,15 @@ export default function IssueSourceIndicator({ className="text-[10px] text-muted-foreground" /> ) : null} - {prefix} - {slug} + + {slug} + }} + /> + ) } diff --git a/src/renderer/src/components/github/IssueSourceSelector.tsx b/src/renderer/src/components/github/IssueSourceSelector.tsx index 96f0b4b2605..8cdfcbd409f 100644 --- a/src/renderer/src/components/github/IssueSourceSelector.tsx +++ b/src/renderer/src/components/github/IssueSourceSelector.tsx @@ -4,7 +4,8 @@ import type { IssueSourcePreference } from '../../../../shared/repo-types' import { sameGitHubOwnerRepo } from '@/components/github/IssueSourceIndicator' import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/ui/tooltip' import { cn } from '@/lib/utils' -import { translate } from '@/i18n/i18n' +import { Trans } from 'react-i18next' +import { i18n, translate } from '@/i18n/i18n' export type IssueSourceSelectorProps = { /** Unset preferences behave as auto; untouched repos omit the stored key. */ @@ -126,8 +127,20 @@ export default function IssueSourceSelector({ {group} - {translate('auto.components.github.IssueSourceSelector.d6aeb2012b', 'Showing issues from')}{' '} - {effective === 'upstream' ? upstreamSlug : originSlug} + ' + )} + components={{ + repo: ( + + {effective === 'upstream' ? upstreamSlug : originSlug} + + ) + }} + /> ) diff --git a/src/renderer/src/components/github/PRFilterDropdowns.tsx b/src/renderer/src/components/github/PRFilterDropdowns.tsx index 943802d0f42..4c763ca2b95 100644 --- a/src/renderer/src/components/github/PRFilterDropdowns.tsx +++ b/src/renderer/src/components/github/PRFilterDropdowns.tsx @@ -6,6 +6,9 @@ import { cn } from '@/lib/utils' import { useRepoLabelsBySlug, useRepoAssigneesBySlug } from '@/hooks/useGitHubSlugMetadata' import type { PickerOption } from '@/components/github/PRFilterPickers' import { + filterDraftLabel, + filterLabelsValue, + filterStateLabel, SectionDetail, SectionMenu, type PRFilterChange, @@ -32,6 +35,10 @@ type Props = { export type { PRFilterChange } from '@/components/github/PRFilterSections' +function currentUserLabel(): string { + return translate('auto.components.github.PRFilterDropdowns.currentUser', 'Current user') +} + function userOptions(users: GitHubAssignableUser[]): PickerOption[] { return users.map((u) => ({ key: u.login, primary: u.login, secondary: u.name ?? undefined })) } @@ -94,12 +101,20 @@ export default function PRFilterDropdowns({ // Offer @me because GitHub resolves it server-side to the authenticated user. const userOpts = useMemo(() => { - const meOption: PickerOption = { key: '@me', primary: '@me', secondary: 'Current user' } + const meOption: PickerOption = { + key: '@me', + primary: '@me', + secondary: currentUserLabel() + } return [meOption, ...userOptions(hasPrimarySlug ? assigneesState.data : [])] }, [assigneesState.data, hasPrimarySlug]) const authorOpts = useMemo(() => { const options = new Map() - options.set('@me', { key: '@me', primary: '@me', secondary: 'Current user' }) + options.set('@me', { + key: '@me', + primary: '@me', + secondary: currentUserLabel() + }) // Use visible authors because assignable-user metadata excludes outside contributors. for (const login of authorLogins) { options.set(login.toLowerCase(), { key: login, primary: login }) @@ -125,15 +140,13 @@ export default function PRFilterDropdowns({ const statusActive = (parsed.state !== null && parsed.state !== 'open') || parsed.draft const statusPillValue = ((): string | null => { const parts: string[] = [] - if (parsed.state === 'closed') { - parts.push('Closed') - } else if (parsed.state === 'merged') { - parts.push('Merged') + if (parsed.state === 'closed' || parsed.state === 'merged') { + parts.push(filterStateLabel(parsed.state)) } else if (parsed.state === 'all') { - parts.push('Any') + parts.push(translate('auto.components.github.PRFilterDropdowns.anyState', 'Any')) } if (parsed.draft) { - parts.push('Draft') + parts.push(filterDraftLabel()) } return parts.length > 0 ? parts.join(' · ') : null })() @@ -248,7 +261,7 @@ export default function PRFilterDropdowns({ {parsed.labels.length > 0 ? ( onChange({ labels: [] })} /> ) : null} diff --git a/src/renderer/src/components/github/PRFilterPickers.tsx b/src/renderer/src/components/github/PRFilterPickers.tsx index caea823b716..46e4ff7569f 100644 --- a/src/renderer/src/components/github/PRFilterPickers.tsx +++ b/src/renderer/src/components/github/PRFilterPickers.tsx @@ -8,7 +8,8 @@ import { CommandList } from '@/components/ui/command' import { cn } from '@/lib/utils' -import { translate } from '@/i18n/i18n' +import { Trans } from 'react-i18next' +import { i18n, translate } from '@/i18n/i18n' import { isClipboardTextByteLengthOverLimit } from '../../../../shared/clipboard-text' export type PickerOption = { key: string; primary: string; secondary?: string } @@ -50,6 +51,33 @@ export function filterPullRequestPickerOptions( ) } +function pickerFallbackText({ + loading, + queryTooLarge, + error, + emptyText +}: { + loading: boolean + queryTooLarge: boolean + error: string | null + emptyText?: string +}): string { + if (loading) { + return translate('auto.components.github.PRFilterPickers.loading', 'Loading…') + } + if (queryTooLarge) { + return translate( + 'auto.components.github.PRFilterPickers.searchTextTooLarge', + 'Search text is too large.' + ) + } + return ( + error ?? + emptyText ?? + translate('auto.components.github.PRFilterPickers.noMatches', 'No matches') + ) +} + export function SingleSelectList({ options, activeValue, @@ -80,13 +108,12 @@ export function SingleSelectList({ trimmedQuery.length > 0 && !queryTooLarge && !filtered.some((o) => o.key.toLowerCase() === trimmedQuery.toLowerCase()) - const fallback = loading - ? 'Loading…' - : queryTooLarge - ? 'Search text is too large.' - : showCustom - ? 'Press Enter to use the typed value.' - : (error ?? emptyText ?? 'No matches') + const fallback = showCustom + ? translate( + 'auto.components.github.PRFilterPickers.pressEnterToUseValue', + 'Press Enter to use the typed value.' + ) + : pickerFallbackText({ loading, queryTooLarge, error, emptyText }) return ( @@ -104,10 +131,18 @@ export function SingleSelectList({ onSelect={() => onSelect(trimmedQuery)} className="items-center gap-2 px-3 py-1.5 text-xs" > - - {translate('auto.components.github.PRFilterPickers.2d1f58eda6', 'Use')} + + ' + )} + components={{ + value: {trimmedQuery} + }} + /> - {trimmedQuery} ) : null} {activeValue ? ( @@ -164,11 +199,12 @@ export function MultiSelectList({ const filtered = useMemo(() => filterPullRequestPickerOptions(options, query), [options, query]) const selectedSet = useMemo(() => new Set(selected), [selected]) const { queryTooLarge } = getPullRequestPickerQueryState(query) - const fallback = loading - ? 'Loading…' - : queryTooLarge - ? 'Search text is too large.' - : (error ?? emptyText ?? 'No matches') + const fallback = pickerFallbackText({ + loading, + queryTooLarge, + error, + emptyText + }) const toggle = (key: string): void => { const next = new Set(selectedSet) @@ -196,8 +232,13 @@ export function MultiSelectList({ onSelect={() => onChange([])} className="gap-2 px-3 py-1.5 text-xs text-muted-foreground" > - {translate('auto.components.github.PRFilterPickers.fdf387297c', 'Clear (')} - {selected.length}) + {translate( + 'auto.components.github.PRFilterPickers.clearSelected', + 'Clear ({{count}})', + { + count: selected.length + } + )} ) : null} {filtered.map((opt) => { diff --git a/src/renderer/src/components/github/PRFilterSections.tsx b/src/renderer/src/components/github/PRFilterSections.tsx index d704ea12754..321d47acf99 100644 --- a/src/renderer/src/components/github/PRFilterSections.tsx +++ b/src/renderer/src/components/github/PRFilterSections.tsx @@ -20,19 +20,45 @@ export type PRFilterChange = { export type SectionKey = 'status' | 'author' | 'label' | 'reviewer' | 'assignee' +export function filterStateLabel(state: 'open' | 'closed' | 'merged'): string { + if (state === 'open') { + return translate('auto.components.github.PRFilterSections.d78b60b5c2', 'Open') + } + if (state === 'closed') { + return translate('auto.components.github.PRFilterSections.0fd3249e2e', 'Closed') + } + return translate('auto.components.github.PRFilterSections.bd162b7d5a', 'Merged') +} + +export function filterDraftLabel(): string { + return translate('auto.components.github.PRFilterSections.draft', 'Draft') +} + +export function filterLabelsValue(labels: string[]): string | null { + if (labels.length === 0) { + return null + } + if (labels.length === 1) { + return labels[0] + } + return labels.length === 1 + ? translate('auto.components.github.PRFilterSections.labelCount_one', '{{count}} label', { + count: labels.length + }) + : translate('auto.components.github.PRFilterSections.labelCount_other', '{{count}} labels', { + count: labels.length + }) +} + function statusLabel(parsed: ParsedTaskQuery): string { const parts: string[] = [] - if (parsed.state === 'open') { - parts.push('Open') - } else if (parsed.state === 'closed') { - parts.push('Closed') - } else if (parsed.state === 'merged') { - parts.push('Merged') - } else if (parsed.state === 'all') { - parts.push('All') + if (parsed.state === 'all') { + parts.push(translate('auto.components.github.PRFilterSections.allStates', 'All')) + } else if (parsed.state) { + parts.push(filterStateLabel(parsed.state)) } if (parsed.draft) { - parts.push('Draft') + parts.push(filterDraftLabel()) } return parts.join(' · ') } @@ -51,15 +77,15 @@ function StatusSection({ ? [ { key: 'open', - label: translate('auto.components.github.PRFilterSections.d78b60b5c2', 'Open') + label: filterStateLabel('open') }, { key: 'closed', - label: translate('auto.components.github.PRFilterSections.0fd3249e2e', 'Closed') + label: filterStateLabel('closed') }, { key: 'merged', - label: translate('auto.components.github.PRFilterSections.bd162b7d5a', 'Merged') + label: filterStateLabel('merged') }, { key: 'all', @@ -69,11 +95,11 @@ function StatusSection({ : [ { key: 'open', - label: translate('auto.components.github.PRFilterSections.d78b60b5c2', 'Open') + label: filterStateLabel('open') }, { key: 'closed', - label: translate('auto.components.github.PRFilterSections.0fd3249e2e', 'Closed') + label: filterStateLabel('closed') }, { key: 'all', @@ -182,18 +208,16 @@ export function SectionMenu({ { key: 'label', label: translate('auto.components.github.PRFilterSections.b1d9fdea08', 'Label'), - value: - parsed.labels.length === 0 - ? null - : parsed.labels.length === 1 - ? parsed.labels[0] - : `${parsed.labels.length} labels` + value: filterLabelsValue(parsed.labels) }, ...(kind === 'prs' ? [ { key: 'reviewer' as SectionKey, - label: reviewerKind === 'reviewed-by' ? 'Reviewed by' : 'Review from', + label: + reviewerKind === 'reviewed-by' + ? translate('auto.components.github.PRFilterDropdowns.7f1ba66c3e', 'Reviewed by') + : translate('auto.components.github.PRFilterDropdowns.b27b7e526c', 'Review from'), value: reviewerActive } ] @@ -204,12 +228,15 @@ export function SectionMenu({ value: parsed.assignee } ] - const subject = kind === 'prs' ? 'pull requests' : 'issues' return (
- {translate('auto.components.github.PRFilterSections.8177eda37e', 'Filter')}{' '} - {subject} + {kind === 'prs' + ? translate( + 'auto.components.github.PRFilterSections.filterPullRequests', + 'Filter pull requests' + ) + : translate('auto.components.github.PRFilterSections.filterIssues', 'Filter issues')}
{rows.map((row) => (
) diff --git a/src/renderer/src/components/github/pr-check-presentation.ts b/src/renderer/src/components/github/pr-check-presentation.ts index 00212cccdba..c9dcfa74116 100644 --- a/src/renderer/src/components/github/pr-check-presentation.ts +++ b/src/renderer/src/components/github/pr-check-presentation.ts @@ -1,3 +1,4 @@ +import { translate } from '@/i18n/i18n' import { getCheckConclusion } from '@/components/pr-check-counts' import type { PRCheckAnnotation, @@ -8,33 +9,36 @@ import type { export function getCheckStatusLabel(check: PRCheckDetail): string { const conclusion = getCheckConclusion(check) if (conclusion === 'success') { - return 'Successful' + return translate('auto.components.github.prCheckPresentation.successful', 'Successful') } if (conclusion === 'failure') { - return 'Failed' + return translate('auto.components.editor.CheckRunDetailsPanel.4c8e1b2d73', 'Failed') } if (conclusion === 'cancelled') { - return 'Cancelled' + return translate('auto.components.editor.CheckRunDetailsPanel.91a4c7e2b0', 'Cancelled') } if (conclusion === 'timed_out') { - return 'Timed out' + return translate('auto.components.editor.CheckRunDetailsPanel.2f6d8a1c45', 'Timed out') } if (conclusion === 'action_required') { - return 'Action required' + return translate( + 'auto.components.editor.CheckRunDetailsPanel.actionRequired', + 'Action required' + ) } if (conclusion === 'neutral') { - return 'Neutral' + return translate('auto.components.editor.CheckRunDetailsPanel.5a1c8e3d67', 'Neutral') } if (conclusion === 'skipped') { - return 'Skipped' + return translate('auto.components.editor.CheckRunDetailsPanel.7b3e9d4f12', 'Skipped') } if (check.status === 'queued') { - return 'Queued' + return translate('auto.components.right.sidebar.checks.panel.content.b4e8a1c902', 'Queued') } if (check.status === 'in_progress') { - return 'In progress' + return translate('auto.components.github.prCheckPresentation.inProgress', 'In progress') } - return 'Pending' + return translate('auto.components.editor.CheckRunDetailsPanel.3d9f2b8e14', 'Pending') } export function getCheckDetailsKey(check: PRCheckDetail): string { diff --git a/src/renderer/src/components/github/work-item-state-presentation.tsx b/src/renderer/src/components/github/work-item-state-presentation.tsx index b7f24298e94..d3637151d62 100644 --- a/src/renderer/src/components/github/work-item-state-presentation.tsx +++ b/src/renderer/src/components/github/work-item-state-presentation.tsx @@ -3,25 +3,14 @@ import { GitHubUserAvatar } from '@/components/github/github-user-avatar' import type { GitHubAssignableUser } from '../../../../shared/github/pull-request-types' import type { GitHubWorkItem } from '../../../../shared/github/work-item-types' import { formatUiRelativeTimeFromDate } from '@/i18n/relative-time-format' +import { getTaskPageGitHubWorkItemStateLabel } from '@/components/task-page/github/task-page-github-work-item-status' export function formatRelativeTime(input: string): string { return formatUiRelativeTimeFromDate(input) } export function getStateLabel(item: GitHubWorkItem): string { - if (item.type === 'pr') { - if (item.state === 'merged') { - return 'Merged' - } - if (item.state === 'draft') { - return 'Draft' - } - if (item.state === 'closed') { - return 'Closed' - } - return 'Open' - } - return item.state === 'closed' ? 'Closed' : 'Open' + return getTaskPageGitHubWorkItemStateLabel(item) } export function ReviewerAvatar({ login, diff --git a/src/renderer/src/components/gitlab-item-dialog/gitlab-description-tab.tsx b/src/renderer/src/components/gitlab-item-dialog/gitlab-description-tab.tsx index 807032c8563..e171f7385e5 100644 --- a/src/renderer/src/components/gitlab-item-dialog/gitlab-description-tab.tsx +++ b/src/renderer/src/components/gitlab-item-dialog/gitlab-description-tab.tsx @@ -4,7 +4,7 @@ import { Button } from '@/components/ui/button' import { TabsContent } from '@/components/ui/tabs' import { translate } from '@/i18n/i18n' import { cn } from '@/lib/utils' -import type { GitLabWorkItem } from '../../../../shared/gitlab-types' +import type { GitLabMRApprovalState, GitLabWorkItem } from '../../../../shared/gitlab-types' import { dedupeGitLabUsers, gitLabUserKey, @@ -23,6 +23,38 @@ type Props = { reviewActions: GitLabReviewActions } +function formatGitLabApprovalSummary(approvalState: GitLabMRApprovalState): string { + const count = approvalState.approvalsLeft ?? 0 + if (approvalState.approvalsLeft === 0) { + return translate('auto.components.GitLabItemDialog.22511537d2', 'Approved') + } + const required = approvalState.approvalsRequired + if (typeof required === 'number') { + return count === 1 + ? translate( + 'auto.components.GitLabItemDialog.approvalsRemainingOfRequired_one', + '{{count}} approval remaining of {{required}} required', + { count, required } + ) + : translate( + 'auto.components.GitLabItemDialog.approvalsRemainingOfRequired_other', + '{{count}} approvals remaining of {{required}} required', + { count, required } + ) + } + return count === 1 + ? translate( + 'auto.components.GitLabItemDialog.approvalsRemaining_one', + '{{count}} approval remaining', + { count } + ) + : translate( + 'auto.components.GitLabItemDialog.approvalsRemaining_other', + '{{count}} approvals remaining', + { count } + ) +} + export function GitLabDescriptionTab({ item, state, detailsEditing, reviewActions }: Props) { const { bodyDraft, @@ -71,26 +103,7 @@ export function GitLabDescriptionTab({ item, state, detailsEditing, reviewAction
{approvalState ? (
- {approvalState.approvalsLeft === 0 - ? translate('auto.components.GitLabItemDialog.22511537d2', 'Approved') - : approvalState.approvalsLeft === 1 - ? translate( - 'auto.components.GitLabItemDialog.approvalsRemainingSingular', - '{{count}} approval remaining', - { count: approvalState.approvalsLeft } - ) - : translate( - 'auto.components.GitLabItemDialog.approvalsRemainingPlural', - '{{count}} approvals remaining', - { count: approvalState.approvalsLeft ?? 0 } - )} - {typeof approvalState.approvalsRequired === 'number' - ? translate( - 'auto.components.GitLabItemDialog.00f3bab87b', - ' of {{value0}} required', - { value0: approvalState.approvalsRequired } - ) - : ''} + {formatGitLabApprovalSummary(approvalState)}
) : null}
diff --git a/src/renderer/src/components/pull-request-page/conversation/comment-group.tsx b/src/renderer/src/components/pull-request-page/conversation/comment-group.tsx index 2d01a6c67ac..9107ca57e05 100644 --- a/src/renderer/src/components/pull-request-page/conversation/comment-group.tsx +++ b/src/renderer/src/components/pull-request-page/conversation/comment-group.tsx @@ -93,11 +93,21 @@ export function ConversationCommentGroup({ > - {translate('auto.components.PullRequestPage.f4fe47c2bb', 'Resolved')}{' '} {group.kind === 'thread' - ? translate('auto.components.PullRequestPage.345b68254c', 'thread') - : translate('auto.components.PullRequestPage.e01e34f5fa', 'comment')}{' '} - {translate('auto.components.PullRequestPage.3c891789f6', 'by')} {root.author} + ? translate( + 'auto.components.PullRequestPage.resolvedThreadBy', + 'Resolved thread by {{author}}', + { + author: root.author + } + ) + : translate( + 'auto.components.PullRequestPage.resolvedCommentBy', + 'Resolved comment by {{author}}', + { + author: root.author + } + )} {count > 1 ? ` (${count})` : ''} diff --git a/src/renderer/src/components/pull-request-page/conversation/description.tsx b/src/renderer/src/components/pull-request-page/conversation/description.tsx index 98474d5ea2f..130b083b46f 100644 --- a/src/renderer/src/components/pull-request-page/conversation/description.tsx +++ b/src/renderer/src/components/pull-request-page/conversation/description.tsx @@ -51,8 +51,9 @@ export function ConversationDescription({
{authorLabel} - {translate('auto.components.PullRequestPage.169a93b29a', 'updated')}{' '} - {formatRelativeTime(updatedAt)} + {translate('auto.components.PullRequestPage.updatedRelativeTime', 'updated {{time}}', { + time: formatRelativeTime(updatedAt) + })} {canEditBody && !loading && detailsLoaded ? ( bodyEditing ? ( diff --git a/src/renderer/src/components/pull-request-page/conversation/tab.tsx b/src/renderer/src/components/pull-request-page/conversation/tab.tsx index 7de837420af..beb659d0a90 100644 --- a/src/renderer/src/components/pull-request-page/conversation/tab.tsx +++ b/src/renderer/src/components/pull-request-page/conversation/tab.tsx @@ -94,7 +94,8 @@ export function ConversationTab({ onCommentAdded: (comment: PRComment) => void onReviewersRequested: (reviewRequests: GitHubAssignableUser[]) => void }): React.JSX.Element { - const authorLabel = item.author ?? 'unknown' + const authorLabel = + item.author ?? translate('auto.components.PullRequestPage.77d9388fb0', 'unknown') const [replyingTo, setReplyingTo] = useState(null) const [commentFilter, setCommentFilter] = useState('all') const [bodyDraft, setBodyDraft] = useState(body) diff --git a/src/renderer/src/components/pull-request-page/files/combined-diff-viewer.tsx b/src/renderer/src/components/pull-request-page/files/combined-diff-viewer.tsx index ae429941d70..f5956808f49 100644 --- a/src/renderer/src/components/pull-request-page/files/combined-diff-viewer.tsx +++ b/src/renderer/src/components/pull-request-page/files/combined-diff-viewer.tsx @@ -1,6 +1,7 @@ import React, { useCallback, useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react' import { useVirtualizer } from '@tanstack/react-virtual' import type { editor as monacoEditor } from 'monaco-editor' +import { translate } from '@/i18n/i18n' import { useAppStore } from '@/store' import { useDocumentDarkTheme } from '@/hooks/use-document-dark-theme' import { DiffSectionItem } from '@/components/editor/DiffSectionItem' @@ -356,11 +357,20 @@ export function PRFilesCombinedDiffViewer({ retrySection={retrySection} toggleSection={toggleSection} openSection={openFilesOnGitHub} - openSectionTitle="Open files on GitHub" + openSectionTitle={translate( + 'auto.components.GitHubItemDialog.85a2b66f54', + 'Open files on GitHub' + )} renderHeaderTrailingContent={renderViewedCheckbox} onAddLineComment={handleAddLineComment} - addLineCommentLabel="Comment" - addLineCommentPlaceholder="Add a review comment" + addLineCommentLabel={translate( + 'auto.components.GitHubItemDialog.bf43425540', + 'Comment' + )} + addLineCommentPlaceholder={translate( + 'auto.components.GitHubItemDialog.86d84a17ca', + 'Add a review comment' + )} getCommentableLineNumbers={getCommentableLineNumbers} setSectionHeights={setSectionHeights} setSections={setSections} diff --git a/src/renderer/src/components/pull-request-page/files/toolbar.tsx b/src/renderer/src/components/pull-request-page/files/toolbar.tsx index 216bb5f950c..9518b1a190f 100644 --- a/src/renderer/src/components/pull-request-page/files/toolbar.tsx +++ b/src/renderer/src/components/pull-request-page/files/toolbar.tsx @@ -48,8 +48,23 @@ export function PRFilesDiffToolbar({ )} - {files.filter(isPRFileViewed).length} / {files.length}{' '} - {translate('auto.components.PullRequestPage.89e80af1c7', 'files viewed')} + {files.length === 1 + ? translate( + 'auto.components.PullRequestPage.filesViewed_one', + '{{viewed}} / {{count}} file viewed', + { + viewed: files.filter(isPRFileViewed).length, + count: files.length + } + ) + : translate( + 'auto.components.PullRequestPage.filesViewed_other', + '{{viewed}} / {{count}} files viewed', + { + viewed: files.filter(isPRFileViewed).length, + count: files.length + } + )}
diff --git a/src/renderer/src/components/pull-request-page/mentions/options.ts b/src/renderer/src/components/pull-request-page/mentions/options.ts index bbd9edff828..6b5d467b2da 100644 --- a/src/renderer/src/components/pull-request-page/mentions/options.ts +++ b/src/renderer/src/components/pull-request-page/mentions/options.ts @@ -1,6 +1,7 @@ import type { GitHubAssignableUser } from '../../../../../shared/github/pull-request-types' import type { PRComment } from '../../../../../shared/github/comment-types' import type { GitHubWorkItem } from '../../../../../shared/github/work-item-types' +import { translate } from '@/i18n/i18n' import type { MentionOption } from '../page-types' export function buildMentionOptions({ @@ -38,15 +39,32 @@ export function buildMentionOptions({ byLogin.set(key, { login, source, avatarUrl, name }) } - add(item.author, item.type === 'pr' ? 'PR author' : 'Issue author') + add( + item.author, + item.type === 'pr' + ? translate('auto.components.PullRequestPage.mentionSource.prAuthor', 'PR author') + : translate('auto.components.PullRequestPage.mentionSource.issueAuthor', 'Issue author') + ) + const commenter = translate( + 'auto.components.PullRequestPage.mentionSource.commenter', + 'Commenter' + ) for (const comment of comments) { - add(comment.author, 'Commenter', comment.authorAvatarUrl) + add(comment.author, commenter, comment.authorAvatarUrl) } + const participant = translate( + 'auto.components.PullRequestPage.mentionSource.participant', + 'Participant' + ) for (const user of participants) { - add(user.login, 'Participant', user.avatarUrl, user.name) + add(user.login, participant, user.avatarUrl, user.name) } + const teamMember = translate( + 'auto.components.PullRequestPage.mentionSource.teamMember', + 'Team member' + ) for (const user of assignableUsers) { - add(user.login, 'Team member', user.avatarUrl, user.name) + add(user.login, teamMember, user.avatarUrl, user.name) } return Array.from(byLogin.values()) diff --git a/src/renderer/src/components/right-sidebar/AiVaultPanelSearch.tsx b/src/renderer/src/components/right-sidebar/AiVaultPanelSearch.tsx index 1068e48a4b4..0e49239c379 100644 --- a/src/renderer/src/components/right-sidebar/AiVaultPanelSearch.tsx +++ b/src/renderer/src/components/right-sidebar/AiVaultPanelSearch.tsx @@ -7,25 +7,28 @@ import type { AiVaultSearchHostOutcome } from '../../../../shared/ai-vault-searc import { getExecutionHostLabel, parseExecutionHostId } from '../../../../shared/execution-host' import type { useAiVaultPanelSearch } from './use-ai-vault-search' -// Match adjacent host labels’ short English; null means the host answered. +// Keep reasons short to match adjacent host labels; null means the host answered. function hostSkipReason(outcome: AiVaultSearchHostOutcome['outcome']): string | null { switch (outcome) { case 'searched': return null case 'stale': - return 'index changed' + return translate('sessionSearch.panel.hostSkipReason.indexChanged', 'index changed') case 'disabled': - return 'search off' + return translate('sessionSearch.panel.hostSkipReason.searchOff', 'search off') case 'not-ready': - return 'not ready' + return translate('sessionSearch.panel.hostSkipReason.notReady', 'not ready') case 'no-service': - return 'unavailable' + return translate('sessionSearch.panel.hostSkipReason.unavailable', 'unavailable') case 'unreachable': - return 'unreachable' + return translate('sessionSearch.panel.hostSkipReason.unreachable', 'unreachable') case 'scope-unknown': - return 'scope not found there' + return translate('sessionSearch.panel.hostSkipReason.scopeNotFound', 'scope not found there') case 'unsupported-agent': - return 'agent not supported' + return translate( + 'sessionSearch.panel.hostSkipReason.agentNotSupported', + 'agent not supported' + ) } } diff --git a/src/renderer/src/components/right-sidebar/AiVaultScanIssueBanners.tsx b/src/renderer/src/components/right-sidebar/AiVaultScanIssueBanners.tsx index 4d594907a17..ed9c36f4ccd 100644 --- a/src/renderer/src/components/right-sidebar/AiVaultScanIssueBanners.tsx +++ b/src/renderer/src/components/right-sidebar/AiVaultScanIssueBanners.tsx @@ -47,11 +47,17 @@ export function AiVaultScanIssueBanners({ ))} {skippedTranscriptCount > 0 ? (
- {translate( - 'auto.components.right.sidebar.AiVaultPanel.transcriptsSkipped', - '{{count}} transcript skipped', - { count: skippedTranscriptCount } - )} + {skippedTranscriptCount === 1 + ? translate( + 'auto.components.right.sidebar.AiVaultPanel.transcriptsSkippedCount_one', + '{{count}} transcript skipped', + { count: skippedTranscriptCount } + ) + : translate( + 'auto.components.right.sidebar.AiVaultPanel.transcriptsSkippedCount_other', + '{{count}} transcripts skipped', + { count: skippedTranscriptCount } + )}
) : null} {reasons.map((reason) => ( diff --git a/src/renderer/src/components/right-sidebar/AiVaultScanProgressStrip.tsx b/src/renderer/src/components/right-sidebar/AiVaultScanProgressStrip.tsx index 1356f19487b..c982af74f3e 100644 --- a/src/renderer/src/components/right-sidebar/AiVaultScanProgressStrip.tsx +++ b/src/renderer/src/components/right-sidebar/AiVaultScanProgressStrip.tsx @@ -134,11 +134,27 @@ function AgentRow({ const complete = showBar && settled === read.total const label = agentLabel(agent.agent) const checked = hasWork - ? translate( - 'auto.components.right.sidebar.AiVaultScanProgressStrip.agentChecked', - '{{agent}}: {{settled}} of {{total}} history candidates checked', - { agent: label, settled: formatCount(settled), total: formatCount(read.total) } - ) + ? read.total === 1 + ? translate( + 'auto.components.right.sidebar.AiVaultScanProgressStrip.agentCheckedCount_one', + '{{agent}}: {{settled}} of {{total}} history candidate checked', + { + agent: label, + settled: formatCount(settled), + total: formatCount(read.total), + count: read.total + } + ) + : translate( + 'auto.components.right.sidebar.AiVaultScanProgressStrip.agentCheckedCount_other', + '{{agent}}: {{settled}} of {{total}} history candidates checked', + { + agent: label, + settled: formatCount(settled), + total: formatCount(read.total), + count: read.total + } + ) : undefined return (
diff --git a/src/renderer/src/components/right-sidebar/AiVaultSessionListBar.tsx b/src/renderer/src/components/right-sidebar/AiVaultSessionListBar.tsx index 199ebd66d53..3a43fe6e51a 100644 --- a/src/renderer/src/components/right-sidebar/AiVaultSessionListBar.tsx +++ b/src/renderer/src/components/right-sidebar/AiVaultSessionListBar.tsx @@ -14,21 +14,40 @@ import type { AiVaultSortMenu } from './ai-vault-sort-options' /** Left-hand label while searching: how many hits the list is showing. */ export function aiVaultResultCountLabel(count: number): string { return count === 1 - ? translate('sessionSearch.panel.resultsOne', '{{count}} result', { count }) - : translate('sessionSearch.panel.resultsOther', '{{count}} results', { count }) + ? translate('sessionSearch.panel.resultCount_one', '{{count}} result', { + count + }) + : translate('sessionSearch.panel.resultCount_other', '{{count}} results', { + count + }) } /** Left-hand label while browsing: the count, and how much of the scan filters hid. */ export function aiVaultSessionCountLabel(shown: number, loaded: number): string { if (shown !== loaded) { - return translate('sessionSearch.panel.sessionsOfLoaded', '{{value0}} of {{value1}} sessions', { - value0: shown, - value1: loaded - }) + return loaded === 1 + ? translate( + 'sessionSearch.panel.sessionsShownOfLoaded_one', + '{{shown}} of {{count}} session', + { + shown, + count: loaded + } + ) + : translate( + 'sessionSearch.panel.sessionsShownOfLoaded_other', + '{{shown}} of {{count}} sessions', + { + shown, + count: loaded + } + ) } return shown === 1 - ? translate('sessionSearch.panel.sessionsOne', '{{count}} session', { count: shown }) - : translate('sessionSearch.panel.sessionsOther', '{{count}} sessions', { count: shown }) + ? translate('sessionSearch.panel.sessionCount_one', '{{count}} session', { + count: shown + }) + : translate('sessionSearch.panel.sessionCount_other', '{{count}} sessions', { count: shown }) } /** Report the visible count and current sort together, with one sort control. */ diff --git a/src/renderer/src/components/right-sidebar/AiVaultSessionUnsavedNotice.tsx b/src/renderer/src/components/right-sidebar/AiVaultSessionUnsavedNotice.tsx index cc429be9d24..0a1c2575e23 100644 --- a/src/renderer/src/components/right-sidebar/AiVaultSessionUnsavedNotice.tsx +++ b/src/renderer/src/components/right-sidebar/AiVaultSessionUnsavedNotice.tsx @@ -31,11 +31,17 @@ export function SessionUnsavedConversationNotice({
{recoverable - ? translate( - 'auto.components.right.sidebar.AiVaultSessionDetails.recoverableEmptyDetail', - 'This session has no saved conversation, but {{value0}} recoverable item(s) survive.', - { value0: aiVaultSessionRecoverableSignalCount(session) } - ) + ? aiVaultSessionRecoverableSignalCount(session) === 1 + ? translate( + 'auto.components.right.sidebar.AiVaultSessionDetails.recoverableEmptyDetailCount_one', + 'This session has no saved conversation, but {{count}} recoverable item survives.', + { count: aiVaultSessionRecoverableSignalCount(session) } + ) + : translate( + 'auto.components.right.sidebar.AiVaultSessionDetails.recoverableEmptyDetailCount_other', + 'This session has no saved conversation, but {{count}} recoverable items survive.', + { count: aiVaultSessionRecoverableSignalCount(session) } + ) : translate( 'auto.components.right.sidebar.AiVaultSessionDetails.emptyConversationDetail', 'This session has no saved conversation and cannot be resumed.' @@ -68,20 +74,32 @@ function SessionRecoverableSignalLines({
    {queuedMessageCount > 0 ? (
  • - {translate( - 'auto.components.right.sidebar.AiVaultSessionDetails.queuedMessages', - '{{value0}} queued message(s)', - { value0: queuedMessageCount } - )} + {queuedMessageCount === 1 + ? translate( + 'auto.components.right.sidebar.AiVaultSessionDetails.queuedMessageCount_one', + '{{count}} queued message', + { count: queuedMessageCount } + ) + : translate( + 'auto.components.right.sidebar.AiVaultSessionDetails.queuedMessageCount_other', + '{{count}} queued messages', + { count: queuedMessageCount } + )}
  • ) : null} {subagentTranscriptCount > 0 ? (
  • - {translate( - 'auto.components.right.sidebar.AiVaultSessionDetails.subagentTranscripts', - '{{value0}} subagent transcript(s)', - { value0: subagentTranscriptCount } - )} + {subagentTranscriptCount === 1 + ? translate( + 'auto.components.right.sidebar.AiVaultSessionDetails.subagentTranscriptCount_one', + '{{count}} subagent transcript', + { count: subagentTranscriptCount } + ) + : translate( + 'auto.components.right.sidebar.AiVaultSessionDetails.subagentTranscriptCount_other', + '{{count}} subagent transcripts', + { count: subagentTranscriptCount } + )}
  • ) : null}
diff --git a/src/renderer/src/components/right-sidebar/FolderWorkspacePrChecksPanel.tsx b/src/renderer/src/components/right-sidebar/FolderWorkspacePrChecksPanel.tsx index 72116276ae0..b9cd8ec897f 100644 --- a/src/renderer/src/components/right-sidebar/FolderWorkspacePrChecksPanel.tsx +++ b/src/renderer/src/components/right-sidebar/FolderWorkspacePrChecksPanel.tsx @@ -308,32 +308,41 @@ function formatReviewChecksHeaderSummary(summary: { function formatWorktreeCount(count: number): string { return count === 1 ? translate( - 'auto.components.rightSidebar.FolderWorkspacePrChecksPanel.oneWorktree', - '1 worktree' + 'auto.components.rightSidebar.FolderWorkspacePrChecksPanel.worktreeCountLabel_one', + '{{count}} worktree', + { count } ) : translate( - 'auto.components.rightSidebar.FolderWorkspacePrChecksPanel.worktreeCount', - '{{value0}} worktrees', - { value0: count } + 'auto.components.rightSidebar.FolderWorkspacePrChecksPanel.worktreeCountLabel_other', + '{{count}} worktrees', + { count } ) } function formatFailingCount(count: number): string { return count === 1 - ? translate('auto.components.rightSidebar.FolderWorkspacePrChecksPanel.oneFailing', '1 failing') + ? translate( + 'auto.components.rightSidebar.FolderWorkspacePrChecksPanel.failingCountLabel_one', + '{{count}} failing', + { count } + ) : translate( - 'auto.components.rightSidebar.FolderWorkspacePrChecksPanel.failingCount', - '{{value0}} failing', - { value0: count } + 'auto.components.rightSidebar.FolderWorkspacePrChecksPanel.failingCountLabel_other', + '{{count}} failing', + { count } ) } function formatPendingCount(count: number): string { return count === 1 - ? translate('auto.components.rightSidebar.FolderWorkspacePrChecksPanel.onePending', '1 pending') + ? translate( + 'auto.components.rightSidebar.FolderWorkspacePrChecksPanel.pendingCountLabel_one', + '{{count}} pending', + { count } + ) : translate( - 'auto.components.rightSidebar.FolderWorkspacePrChecksPanel.pendingCount', - '{{value0}} pending', - { value0: count } + 'auto.components.rightSidebar.FolderWorkspacePrChecksPanel.pendingCountLabel_other', + '{{count}} pending', + { count } ) } diff --git a/src/renderer/src/components/right-sidebar/FolderWorkspaceWorktreesPanel.test.tsx b/src/renderer/src/components/right-sidebar/FolderWorkspaceWorktreesPanel.test.tsx index d0660282af4..1abcdd22d69 100644 --- a/src/renderer/src/components/right-sidebar/FolderWorkspaceWorktreesPanel.test.tsx +++ b/src/renderer/src/components/right-sidebar/FolderWorkspaceWorktreesPanel.test.tsx @@ -66,7 +66,9 @@ vi.mock('@/store', () => ({ vi.mock('@/i18n/i18n', () => ({ translate: (_key: string, fallback: string, values?: Record) => - values ? fallback.replace('{{value0}}', String(values.value0)) : fallback + fallback.replace(/\{\{(\w+)\}\}/g, (match, name: string) => + values && name in values ? String(values[name]) : match + ) })) vi.mock('@/components/sidebar/WorktreeCard', () => ({ diff --git a/src/renderer/src/components/right-sidebar/FolderWorkspaceWorktreesPanel.tsx b/src/renderer/src/components/right-sidebar/FolderWorkspaceWorktreesPanel.tsx index 95688f2490f..80c2edfdd15 100644 --- a/src/renderer/src/components/right-sidebar/FolderWorkspaceWorktreesPanel.tsx +++ b/src/renderer/src/components/right-sidebar/FolderWorkspaceWorktreesPanel.tsx @@ -119,13 +119,14 @@ export default function FolderWorkspaceWorktreesPanel(): React.JSX.Element {
{childWorktrees.length === 1 ? translate( - 'auto.components.rightSidebar.FolderWorkspaceWorktreesPanel.countOne', - '1 attached worktree' + 'auto.components.rightSidebar.FolderWorkspaceWorktreesPanel.attachedCount_one', + '{{count}} attached worktree', + { count: childWorktrees.length } ) : translate( - 'auto.components.rightSidebar.FolderWorkspaceWorktreesPanel.countMany', - '{{value0}} attached worktrees', - { value0: childWorktrees.length } + 'auto.components.rightSidebar.FolderWorkspaceWorktreesPanel.attachedCount_other', + '{{count}} attached worktrees', + { count: childWorktrees.length } )}
diff --git a/src/renderer/src/components/right-sidebar/SourceControlAgentActionDialog.tsx b/src/renderer/src/components/right-sidebar/SourceControlAgentActionDialog.tsx index 703c2a84f38..496f2bfcd69 100644 --- a/src/renderer/src/components/right-sidebar/SourceControlAgentActionDialog.tsx +++ b/src/renderer/src/components/right-sidebar/SourceControlAgentActionDialog.tsx @@ -17,6 +17,7 @@ import type { LaunchSource } from '../../../../shared/telemetry-events' import type { SourceControlAiWriteTarget } from '../../../../shared/source-control-ai-recipe-save' import { SourceControlAgentActionDialogForm } from './SourceControlAgentActionDialogForm' import { useSourceControlAgentActionDialog } from './useSourceControlAgentActionDialog' +import { translate } from '@/i18n/i18n' export type SourceControlAgentActionDialogProps = { open: boolean @@ -70,7 +71,10 @@ function SourceControlAgentActionEditor( baseCommandInput, savedCommandInputTemplate, onOpenSettings, - startLabel = 'Start agent', + startLabel = translate( + 'auto.components.right.sidebar.SourceControlAgentActionDialog.startAgent', + 'Start agent' + ), onSaveAgentDefault } = props const { diff --git a/src/renderer/src/components/right-sidebar/checks-panel-updated-at-metadata.tsx b/src/renderer/src/components/right-sidebar/checks-panel-updated-at-metadata.tsx index 4c4a90b7ecd..96622f46f79 100644 --- a/src/renderer/src/components/right-sidebar/checks-panel-updated-at-metadata.tsx +++ b/src/renderer/src/components/right-sidebar/checks-panel-updated-at-metadata.tsx @@ -12,9 +12,14 @@ export function ChecksPanelUpdatedAtMetadata({ }: ChecksPanelUpdatedAtMetadataProps): React.JSX.Element { return (
- {reviewShortLabel}{' '} - {translate('auto.components.right.sidebar.ChecksPanel.34464d00b9', 'updated')}{' '} - {new Date(updatedAt).toLocaleString()} + {translate( + 'auto.components.right.sidebar.ChecksPanel.reviewUpdatedAt', + '{{review}} updated {{time}}', + { + review: reviewShortLabel, + time: new Date(updatedAt).toLocaleString() + } + )}
) } diff --git a/src/renderer/src/components/right-sidebar/checks-panel/checks-list.tsx b/src/renderer/src/components/right-sidebar/checks-panel/checks-list.tsx index 832aae656cf..9008bd7eeb9 100644 --- a/src/renderer/src/components/right-sidebar/checks-panel/checks-list.tsx +++ b/src/renderer/src/components/right-sidebar/checks-panel/checks-list.tsx @@ -59,42 +59,66 @@ export function ChecksList(props: ChecksListProps): React.JSX.Element { {passingCount > 0 && ( - {passingCount}{' '} - {translate( - 'auto.components.right.sidebar.checks.panel.content.02ca4f9074', - 'passing' - )} + {passingCount === 1 + ? translate( + 'auto.components.right.sidebar.checks.panel.content.passingCount_one', + '{{count}} passing', + { count: passingCount } + ) + : translate( + 'auto.components.right.sidebar.checks.panel.content.passingCount_other', + '{{count}} passing', + { count: passingCount } + )} )} {failingCount > 0 && ( - {failingCount}{' '} - {translate( - 'auto.components.right.sidebar.checks.panel.content.5e52f4ef7f', - 'failing' - )} + {failingCount === 1 + ? translate( + 'auto.components.right.sidebar.checks.panel.content.failingCount_one', + '{{count}} failing', + { count: failingCount } + ) + : translate( + 'auto.components.right.sidebar.checks.panel.content.failingCount_other', + '{{count}} failing', + { count: failingCount } + )} )} {pendingCount > 0 && ( - {pendingCount}{' '} - {translate( - 'auto.components.right.sidebar.checks.panel.content.9ad98f2a17', - 'pending' - )} + {pendingCount === 1 + ? translate( + 'auto.components.right.sidebar.checks.panel.content.pendingCount_one', + '{{count}} pending', + { count: pendingCount } + ) + : translate( + 'auto.components.right.sidebar.checks.panel.content.pendingCount_other', + '{{count}} pending', + { count: pendingCount } + )} )} {/* Name unresolved counts so an all-neutral list still explains its grey pill. */} {neutralCount > 0 && ( - {neutralCount}{' '} - {translate( - 'auto.components.right.sidebar.checks.panel.content.checksUnresolvedChip', - 'unresolved' - )} + {neutralCount === 1 + ? translate( + 'auto.components.right.sidebar.checks.panel.content.unresolvedCount_one', + '{{count}} unresolved', + { count: neutralCount } + ) + : translate( + 'auto.components.right.sidebar.checks.panel.content.unresolvedCount_other', + '{{count}} unresolved', + { count: neutralCount } + )} )} diff --git a/src/renderer/src/components/right-sidebar/checks-panel/comment-controls.tsx b/src/renderer/src/components/right-sidebar/checks-panel/comment-controls.tsx index a878372e40c..db49fca4ee0 100644 --- a/src/renderer/src/components/right-sidebar/checks-panel/comment-controls.tsx +++ b/src/renderer/src/components/right-sidebar/checks-panel/comment-controls.tsx @@ -29,7 +29,10 @@ import { translate } from '@/i18n/i18n' export function CopyButton({ text, - title = 'Copy comment' + title = translate( + 'auto.components.right.sidebar.checks.panel.content.copyComment', + 'Copy comment' + ) }: { text: string title?: string diff --git a/src/renderer/src/components/right-sidebar/checks-panel/comment-group.tsx b/src/renderer/src/components/right-sidebar/checks-panel/comment-group.tsx index dcfd4518173..3f531312c18 100644 --- a/src/renderer/src/components/right-sidebar/checks-panel/comment-group.tsx +++ b/src/renderer/src/components/right-sidebar/checks-panel/comment-group.tsx @@ -88,7 +88,10 @@ export function PRCommentGroupView({ 'Reply to {{value0}}', { value0: comment.author } )} - submitLabel="Reply" + submitLabel={translate( + 'auto.components.right.sidebar.checks.panel.content.c1f6fc006a', + 'Reply' + )} autoFocus disabled={replyDisabled} disabledReason={replyDisabledReason} diff --git a/src/renderer/src/components/right-sidebar/checks-panel/comments-list.tsx b/src/renderer/src/components/right-sidebar/checks-panel/comments-list.tsx index f853fc1ba56..e6ed8a23c03 100644 --- a/src/renderer/src/components/right-sidebar/checks-panel/comments-list.tsx +++ b/src/renderer/src/components/right-sidebar/checks-panel/comments-list.tsx @@ -139,11 +139,19 @@ export function PRCommentsList(props: PRCommentsListProps): React.JSX.Element { variant="default" size="icon-xs" className="relative" - aria-label={translate( - 'auto.components.right.sidebar.checks.panel.content.d91f2a6c39', - 'Send {{value0}} queued comments to AI', - { value0: selectedCommentQueueCount } - )} + aria-label={ + selectedCommentQueueCount === 1 + ? translate( + 'auto.components.right.sidebar.checks.panel.content.sendQueuedCommentsToAi_one', + 'Send {{count}} queued comment to AI', + { count: selectedCommentQueueCount } + ) + : translate( + 'auto.components.right.sidebar.checks.panel.content.sendQueuedCommentsToAi_other', + 'Send {{count}} queued comments to AI', + { count: selectedCommentQueueCount } + ) + } disabled={ selectedCommentQueueCount === 0 || commentsLoading || @@ -165,11 +173,17 @@ export function PRCommentsList(props: PRCommentsListProps): React.JSX.Element { {resolveCommentsWithAIDisabled && resolveCommentsWithAIDisabledReason ? resolveCommentsWithAIDisabledReason - : translate( - 'auto.components.right.sidebar.checks.panel.content.d91f2a6c39', - 'Send {{value0}} queued comments to AI', - { value0: selectedCommentQueueCount } - )} + : selectedCommentQueueCount === 1 + ? translate( + 'auto.components.right.sidebar.checks.panel.content.sendQueuedCommentsToAi_one', + 'Send {{count}} queued comment to AI', + { count: selectedCommentQueueCount } + ) + : translate( + 'auto.components.right.sidebar.checks.panel.content.sendQueuedCommentsToAi_other', + 'Send {{count}} queued comments to AI', + { count: selectedCommentQueueCount } + )} diff --git a/src/renderer/src/components/right-sidebar/checks-panel/empty-content.tsx b/src/renderer/src/components/right-sidebar/checks-panel/empty-content.tsx index 88762ef7726..bba4a95b4b4 100644 --- a/src/renderer/src/components/right-sidebar/checks-panel/empty-content.tsx +++ b/src/renderer/src/components/right-sidebar/checks-panel/empty-content.tsx @@ -155,11 +155,14 @@ export function ChecksPanelEmptyContent({ const operationInProgress = conflictOperation !== 'unknown' const operationLabel = conflictOperation === 'rebase' - ? 'Rebase' + ? translate('auto.components.right.sidebar.checks.panel.content.operation.rebase', 'Rebase') : conflictOperation === 'merge' - ? 'Merge' + ? translate('auto.components.right.sidebar.checks.panel.content.operation.merge', 'Merge') : conflictOperation === 'cherry-pick' - ? 'Cherry-pick' + ? translate( + 'auto.components.right.sidebar.checks.panel.content.operation.cherryPick', + 'Cherry-pick' + ) : null const emptyReviewIsGitLab = linkedGitLabMR !== null || hostedReviewCreation?.provider === 'gitlab' diff --git a/src/renderer/src/components/right-sidebar/checks-panel/triage-strip.tsx b/src/renderer/src/components/right-sidebar/checks-panel/triage-strip.tsx index 233eca97f94..756bb124f8f 100644 --- a/src/renderer/src/components/right-sidebar/checks-panel/triage-strip.tsx +++ b/src/renderer/src/components/right-sidebar/checks-panel/triage-strip.tsx @@ -210,11 +210,15 @@ export function ConflictTriageStrip({
- {translate( - 'auto.components.right.sidebar.checks.panel.content.60186d8498', - 'Conflicts block this' - )}{' '} - {reviewKind} + {reviewKind === 'MR' + ? translate( + 'auto.components.right.sidebar.checks.panel.content.conflictsBlockThisMr', + 'Conflicts block this MR' + ) + : translate( + 'auto.components.right.sidebar.checks.panel.content.conflictsBlockThisPr', + 'Conflicts block this PR' + )}
{translate( diff --git a/src/renderer/src/components/right-sidebar/checks-panel/use-checks-panel-comment-resolution.tsx b/src/renderer/src/components/right-sidebar/checks-panel/use-checks-panel-comment-resolution.tsx index bbfa2d3666c..f6c913ca5c8 100644 --- a/src/renderer/src/components/right-sidebar/checks-panel/use-checks-panel-comment-resolution.tsx +++ b/src/renderer/src/components/right-sidebar/checks-panel/use-checks-panel-comment-resolution.tsx @@ -154,7 +154,10 @@ export function useChecksPanelCommentResolution(model: ChecksPanelCommentResolut const canTargetPRComments = Boolean(repo && prNumber && pr?.prRepo) const commentsDisabledReason = canTargetPRComments ? undefined - : 'Commenting requires a GitHub PR repository target.' + : translate( + 'auto.components.right.sidebar.checks.panel.content.commentingRequiresGitHubPrTarget', + 'Commenting requires a GitHub PR repository target.' + ) const workspace = worktreeLaunchWorkspace(activeWorktreeId ?? '') const observation = useAgentMenuObservation( activeWorktreeId, @@ -176,9 +179,15 @@ export function useChecksPanelCommentResolution(model: ChecksPanelCommentResolut const noEnabledAgentKnown = noAgentFor('resolveConflicts') const actionDisabledReason = (actionId: SourceControlActionId): string | undefined => !activeWorktreeId - ? 'Select a workspace before launching an AI action.' + ? translate( + 'auto.components.right.sidebar.checks.panel.content.selectWorkspaceBeforeAiAction', + 'Select a workspace before launching an AI action.' + ) : noAgentFor(actionId) - ? 'No enabled AI agents. Configure agents in Settings.' + ? translate( + 'auto.components.right.sidebar.source.control.ai.recovery.launch.9bbd9077a2', + 'No enabled AI agents. Configure agents in Settings.' + ) : undefined const aiActionDisabledReason = actionDisabledReason('resolveConflicts') const fixChecksDisabledReason = actionDisabledReason('fixChecks') diff --git a/src/renderer/src/components/right-sidebar/checks-panel/use-comments-list-state.tsx b/src/renderer/src/components/right-sidebar/checks-panel/use-comments-list-state.tsx index 2be9c75193d..e0d5a6c7815 100644 --- a/src/renderer/src/components/right-sidebar/checks-panel/use-comments-list-state.tsx +++ b/src/renderer/src/components/right-sidebar/checks-panel/use-comments-list-state.tsx @@ -270,7 +270,10 @@ export function useCommentsListState({ 'Add a PR comment' ) } - submitLabel="Send" + submitLabel={translate( + 'auto.components.right.sidebar.checks.panel.content.sendComment', + 'Send' + )} autoFocus disabled={commentsDisabled} disabledReason={commentsDisabledReason} diff --git a/src/renderer/src/components/right-sidebar/file-explorer-multi-drag-image.ts b/src/renderer/src/components/right-sidebar/file-explorer-multi-drag-image.ts index f24a16b9784..d8ca2eaa6df 100644 --- a/src/renderer/src/components/right-sidebar/file-explorer-multi-drag-image.ts +++ b/src/renderer/src/components/right-sidebar/file-explorer-multi-drag-image.ts @@ -1,4 +1,5 @@ import { basename } from '@/lib/path' +import { translate } from '@/i18n/i18n' export function createMultiSelectDragGhost(paths: string[], rowW: number): HTMLDivElement { const MAX_SHOWN = 5 @@ -33,7 +34,26 @@ export function createMultiSelectDragGhost(paths: string[], rowW: number): HTMLD ghost.appendChild(makeRow(basename(p))) } if (paths.length > MAX_SHOWN) { - ghost.appendChild(makeRow(`+${paths.length - MAX_SHOWN} more`, true)) + ghost.appendChild( + makeRow( + paths.length - MAX_SHOWN === 1 + ? translate( + 'auto.components.right.sidebar.fileExplorerMultiDrag.moreItems_one', + '+{{count}} more', + { + count: paths.length - MAX_SHOWN + } + ) + : translate( + 'auto.components.right.sidebar.fileExplorerMultiDrag.moreItems_other', + '+{{count}} more', + { + count: paths.length - MAX_SHOWN + } + ), + true + ) + ) } return ghost diff --git a/src/renderer/src/components/right-sidebar/github-pr-stack-confirmation.ts b/src/renderer/src/components/right-sidebar/github-pr-stack-confirmation.ts index e3e1e84f1a9..f059019efe9 100644 --- a/src/renderer/src/components/right-sidebar/github-pr-stack-confirmation.ts +++ b/src/renderer/src/components/right-sidebar/github-pr-stack-confirmation.ts @@ -38,24 +38,24 @@ export function buildGitHubPRStackMergeConfirmation({ description: scope.count === 1 ? translate( - 'auto.components.right.sidebar.github.pr.stack.confirmation.4809f55cdb', + 'auto.components.right.sidebar.github.pr.stack.confirmation.queueDescription_one', '{{included}}GitHub will add {{count}} pull request to the merge queue together. The queue chooses the merge method and may merge them in separate groups.', { included, count: scope.count } ) : translate( - 'auto.components.right.sidebar.github.pr.stack.confirmation.be8f2621be', + 'auto.components.right.sidebar.github.pr.stack.confirmation.queueDescription_other', '{{included}}GitHub will add {{count}} pull requests to the merge queue together. The queue chooses the merge method and may merge them in separate groups.', { included, count: scope.count } ), confirmLabel: scope.count === 1 ? translate( - 'auto.components.right.sidebar.github.pr.stack.confirmation.92ca033e72', + 'auto.components.right.sidebar.github.pr.stack.confirmation.queueConfirm_one', 'Queue {{count}} PR', { count: scope.count } ) : translate( - 'auto.components.right.sidebar.github.pr.stack.confirmation.478a527b15', + 'auto.components.right.sidebar.github.pr.stack.confirmation.queueConfirm_other', 'Queue {{count}} PRs', { count: scope.count } ) @@ -71,24 +71,24 @@ export function buildGitHubPRStackMergeConfirmation({ description: scope.count === 1 ? translate( - 'auto.components.right.sidebar.github.pr.stack.confirmation.c3e036c99f', + 'auto.components.right.sidebar.github.pr.stack.confirmation.mergeDescription_one', '{{included}}GitHub will merge {{count}} pull request atomically using {{method}}. If it cannot merge, nothing will be merged.', { included, count: scope.count, method } ) : translate( - 'auto.components.right.sidebar.github.pr.stack.confirmation.369aba4b32', + 'auto.components.right.sidebar.github.pr.stack.confirmation.mergeDescription_other', '{{included}}GitHub will merge {{count}} pull requests atomically using {{method}}. If any cannot merge, none will.', { included, count: scope.count, method } ), confirmLabel: scope.count === 1 ? translate( - 'auto.components.right.sidebar.github.pr.stack.confirmation.493c78f521', + 'auto.components.right.sidebar.github.pr.stack.confirmation.mergeConfirm_one', 'Merge {{count}} PR', { count: scope.count } ) : translate( - 'auto.components.right.sidebar.github.pr.stack.confirmation.eb7051d268', + 'auto.components.right.sidebar.github.pr.stack.confirmation.mergeConfirm_other', 'Merge {{count}} PRs', { count: scope.count } ) diff --git a/src/renderer/src/components/right-sidebar/github-pr-stack-merge.ts b/src/renderer/src/components/right-sidebar/github-pr-stack-merge.ts index aa206844d12..b532dc95ec5 100644 --- a/src/renderer/src/components/right-sidebar/github-pr-stack-merge.ts +++ b/src/renderer/src/components/right-sidebar/github-pr-stack-merge.ts @@ -18,12 +18,12 @@ export function getGitHubPRStackMergeScope( label: scope.count === 1 ? translate( - 'auto.components.right.sidebar.github.pr.stack.merge.55ae29b907', + 'auto.components.right.sidebar.github.pr.stack.merge.mergeThroughLabel_one', 'Merge through #{{pr}} · {{count}} PR', { pr: currentPRNumber, count: scope.count } ) : translate( - 'auto.components.right.sidebar.github.pr.stack.merge.b8446f6ec2', + 'auto.components.right.sidebar.github.pr.stack.merge.mergeThroughLabel_other', 'Merge through #{{pr}} · {{count}} PRs', { pr: currentPRNumber, count: scope.count } ) diff --git a/src/renderer/src/components/right-sidebar/local-port-row.tsx b/src/renderer/src/components/right-sidebar/local-port-row.tsx index 005f826234e..3e72f7db42a 100644 --- a/src/renderer/src/components/right-sidebar/local-port-row.tsx +++ b/src/renderer/src/components/right-sidebar/local-port-row.tsx @@ -75,14 +75,21 @@ export function LocalPortRow({ [onStop, port] ) - const processLabel = port.processName ?? (port.pid ? `PID ${port.pid}` : 'Unknown process') + const processLabel = + port.processName ?? + (port.pid + ? `PID ${port.pid}` + : translate('auto.components.right.sidebar.PortsPanel.unknownProcess', 'Unknown process')) const address = addressForPort(port) const ownerLabel = port.kind === 'workspace' ? port.owner.displayName : port.kind === 'container' - ? 'Container or forwarded service' - : 'Unassigned' + ? translate( + 'auto.components.right.sidebar.PortsPanel.containerOrForwardedService', + 'Container or forwarded service' + ) + : translate('auto.components.right.sidebar.PortsPanel.unassigned', 'Unassigned') const openBrowserLabel = translate( 'auto.components.right.sidebar.PortsPanel.b22b128b2a', 'Open in Browser' diff --git a/src/renderer/src/components/right-sidebar/pr-comments-list-selection.test.tsx b/src/renderer/src/components/right-sidebar/pr-comments-list-selection.test.tsx index 018556102b1..2d11ec38337 100644 --- a/src/renderer/src/components/right-sidebar/pr-comments-list-selection.test.tsx +++ b/src/renderer/src/components/right-sidebar/pr-comments-list-selection.test.tsx @@ -317,8 +317,8 @@ describe('PRCommentsList comment resolution selection', () => { clickButton('Queue for agent') - expect(hasButton('Send 1 queued comments to AI')).toBe(true) - clickButton('Send 1 queued comments to AI') + expect(hasButton('Send 1 queued comment to AI')).toBe(true) + clickButton('Send 1 queued comment to AI') expect(onResolveSelectedCommentsWithAI).toHaveBeenCalledTimes(1) const selectedGroups = onResolveSelectedCommentsWithAI.mock.calls[0]?.[0] as PRCommentGroup[] @@ -341,8 +341,8 @@ describe('PRCommentsList comment resolution selection', () => { clickButton('Queue for agent') - expect(hasButton('Send 1 queued comments to AI')).toBe(true) - clickButton('Send 1 queued comments to AI') + expect(hasButton('Send 1 queued comment to AI')).toBe(true) + clickButton('Send 1 queued comment to AI') expect(onResolveSelectedCommentsWithAI).toHaveBeenCalledTimes(1) const selectedGroups = onResolveSelectedCommentsWithAI.mock.calls[0]?.[0] as PRCommentGroup[] @@ -362,8 +362,8 @@ describe('PRCommentsList comment resolution selection', () => { clickMenuItem('Queue for agent') - expect(hasButton('Send 1 queued comments to AI')).toBe(true) - clickButton('Send 1 queued comments to AI') + expect(hasButton('Send 1 queued comment to AI')).toBe(true) + clickButton('Send 1 queued comment to AI') expect(onResolveSelectedCommentsWithAI).toHaveBeenCalledTimes(1) }) @@ -374,10 +374,10 @@ describe('PRCommentsList comment resolution selection', () => { }) clickButton('Queue for agent') - expect(hasButton('Send 1 queued comments to AI')).toBe(true) + expect(hasButton('Send 1 queued comment to AI')).toBe(true) clickButton('Clear queued comments') - expect(hasButton('Send 1 queued comments to AI')).toBe(false) + expect(hasButton('Send 1 queued comment to AI')).toBe(false) expect(container.querySelector('button[role="checkbox"]')).toBeNull() }) @@ -410,14 +410,14 @@ describe('PRCommentsList comment resolution selection', () => { renderList({ comments }) clickButton('Queue for agent') - expect(hasButton('Send 1 queued comments to AI')).toBe(true) + expect(hasButton('Send 1 queued comment to AI')).toBe(true) renderList({ comments, clearRequest: { contextKey: 'review:42', token: 1 } }) - expect(hasButton('Send 1 queued comments to AI')).toBe(false) + expect(hasButton('Send 1 queued comment to AI')).toBe(false) expect(container.querySelector('button[role="checkbox"]')).toBeNull() }) @@ -426,11 +426,11 @@ describe('PRCommentsList comment resolution selection', () => { renderList({ comments }) clickButton('Queue for agent') - expect(hasButton('Send 1 queued comments to AI')).toBe(true) + expect(hasButton('Send 1 queued comment to AI')).toBe(true) renderList({ comments, clearRequest: null }) - expect(hasButton('Send 1 queued comments to AI')).toBe(true) + expect(hasButton('Send 1 queued comment to AI')).toBe(true) }) it('keeps a clear request pending until its review context is mounted', () => { @@ -445,7 +445,7 @@ describe('PRCommentsList comment resolution selection', () => { renderList({ comments: queuedComments, contextKey: 'review:42' }) clickButton('Queue for agent') - expect(hasButton('Send 1 queued comments to AI')).toBe(true) + expect(hasButton('Send 1 queued comment to AI')).toBe(true) renderList({ comments: [comment({ id: 2, body: 'Other review comment.' })], @@ -458,7 +458,7 @@ describe('PRCommentsList comment resolution selection', () => { clearRequest: { contextKey: 'review:42', token: 1 } }) - expect(hasButton('Send 1 queued comments to AI')).toBe(false) + expect(hasButton('Send 1 queued comment to AI')).toBe(false) expect(container.querySelector('button[role="checkbox"]')).toBeNull() }) @@ -472,7 +472,7 @@ describe('PRCommentsList comment resolution selection', () => { comments: [comment({ id: 1, threadId: 'thread-1', path: 'src/a.ts', isResolved: true })] }) - expect(hasButton('Send 1 queued comments to AI')).toBe(false) + expect(hasButton('Send 1 queued comment to AI')).toBe(false) expect(getPRCommentsListSelectionCountForTests()).toBe(0) }) @@ -488,9 +488,9 @@ describe('PRCommentsList comment resolution selection', () => { expect(getPRCommentsListSelectionCountForTests()).toBe(2) renderList({ comments, contextKey: githubContext, strictMode: true }) - expect(hasButton('Send 1 queued comments to AI')).toBe(true) + expect(hasButton('Send 1 queued comment to AI')).toBe(true) renderList({ comments, contextKey: gitlabContext, strictMode: true }) - expect(hasButton('Send 1 queued comments to AI')).toBe(true) + expect(hasButton('Send 1 queued comment to AI')).toBe(true) }) it('does not refresh LRU recency for an abandoned Suspense render', () => { @@ -510,9 +510,9 @@ describe('PRCommentsList comment resolution selection', () => { seedContext('review:new') renderList({ comments, contextKey: 'review:oldest' }) - expect(hasButton('Send 1 queued comments to AI')).toBe(false) + expect(hasButton('Send 1 queued comment to AI')).toBe(false) renderList({ comments, contextKey: 'review:recent-0' }) - expect(hasButton('Send 1 queued comments to AI')).toBe(true) + expect(hasButton('Send 1 queued comment to AI')).toBe(true) }) it('bounds persisted review contexts while retaining recently restored selections', () => { @@ -529,7 +529,7 @@ describe('PRCommentsList comment resolution selection', () => { // Refresh LRU recency only after the restored context commits. renderList({ comments, contextKey: 'review:keep' }) - expect(hasButton('Send 1 queued comments to AI')).toBe(true) + expect(hasButton('Send 1 queued comment to AI')).toBe(true) seedContext('review:new') @@ -538,10 +538,10 @@ describe('PRCommentsList comment resolution selection', () => { ) renderList({ comments, contextKey: 'review:stale-0' }) - expect(hasButton('Send 1 queued comments to AI')).toBe(false) + expect(hasButton('Send 1 queued comment to AI')).toBe(false) renderList({ comments, contextKey: 'review:keep' }) - expect(hasButton('Send 1 queued comments to AI')).toBe(true) + expect(hasButton('Send 1 queued comment to AI')).toBe(true) }) }) diff --git a/src/renderer/src/components/right-sidebar/source-control-agent-action-dialog-support.ts b/src/renderer/src/components/right-sidebar/source-control-agent-action-dialog-support.ts index 62610470f30..f45dc172642 100644 --- a/src/renderer/src/components/right-sidebar/source-control-agent-action-dialog-support.ts +++ b/src/renderer/src/components/right-sidebar/source-control-agent-action-dialog-support.ts @@ -120,13 +120,25 @@ export function buildSourceControlAgentStatusCopy(args: { detecting } = args if (selectedAgentUnavailable) { - return `${getAgentCatalog().find((entry) => entry.id === selectedAgent)?.label ?? selectedAgent} is not enabled or was not detected on this workspace host.` + return translate( + 'auto.components.right.sidebar.SourceControlAgentActionDialog.agentNotEnabledOrDetected', + '{{agent}} is not enabled or was not detected on this workspace host.', + { + agent: getAgentCatalog().find((entry) => entry.id === selectedAgent)?.label ?? selectedAgent + } + ) } if (connectionUnavailable) { - return 'Unable to resolve the workspace connection.' + return translate( + 'auto.components.right.sidebar.SourceControlAgentActionDialog.workspaceConnectionUnresolved', + 'Unable to resolve the workspace connection.' + ) } if (!hasEnabledAgents && !detecting) { - return 'No enabled agents were detected on this workspace host.' + return translate( + 'auto.components.right.sidebar.SourceControlAgentActionDialog.noEnabledAgentsDetected', + 'No enabled agents were detected on this workspace host.' + ) } return null } diff --git a/src/renderer/src/components/right-sidebar/source-control/commit/bulk-action-bar.tsx b/src/renderer/src/components/right-sidebar/source-control/commit/bulk-action-bar.tsx index d126874dedc..0a4151995c9 100644 --- a/src/renderer/src/components/right-sidebar/source-control/commit/bulk-action-bar.tsx +++ b/src/renderer/src/components/right-sidebar/source-control/commit/bulk-action-bar.tsx @@ -27,8 +27,21 @@ export function BulkActionBar({ ) : ( - {selectedCount}{' '} - {translate('auto.components.right.sidebar.BulkActionBar.60ed678138', 'selected')} + {selectedCount === 1 + ? translate( + 'auto.components.right.sidebar.BulkActionBar.selectedCount_one', + '{{count}} selected', + { + count: selectedCount + } + ) + : translate( + 'auto.components.right.sidebar.BulkActionBar.selectedCount_other', + '{{count}} selected', + { + count: selectedCount + } + )} )}
@@ -43,8 +56,13 @@ export function BulkActionBar({ disabled={isExecuting} > - {translate('auto.components.right.sidebar.BulkActionBar.ef5f5bd06e', 'Stage (')} - {stageableCount}) + {translate( + 'auto.components.right.sidebar.BulkActionBar.stageCount', + 'Stage ({{count}})', + { + count: stageableCount + } + )} )} {unstageableCount > 0 && ( @@ -57,8 +75,13 @@ export function BulkActionBar({ disabled={isExecuting} > - {translate('auto.components.right.sidebar.BulkActionBar.79a9f5f712', 'Unstage (')} - {unstageableCount}) + {translate( + 'auto.components.right.sidebar.BulkActionBar.unstageCount', + 'Unstage ({{count}})', + { + count: unstageableCount + } + )} )}
) diff --git a/src/renderer/src/components/right-sidebar/source-control/sync/compare-summary.tsx b/src/renderer/src/components/right-sidebar/source-control/sync/compare-summary.tsx index 8e59e012d9f..240ee5a67cc 100644 --- a/src/renderer/src/components/right-sidebar/source-control/sync/compare-summary.tsx +++ b/src/renderer/src/components/right-sidebar/source-control/sync/compare-summary.tsx @@ -72,8 +72,13 @@ export function CompareSummary({
- {translate('auto.components.right.sidebar.SourceControl.11b5dd8e41', 'Comparing against')}{' '} - {summary?.baseRef ?? '…'} + {translate( + 'auto.components.right.sidebar.SourceControl.comparingAgainstRef', + 'Comparing against {{ref}}', + { + ref: summary?.baseRef ?? '…' + } + )}
) @@ -114,12 +119,12 @@ export function CompareSummary({ ? undefined : commitsAhead === 1 ? translate( - 'auto.components.right.sidebar.source.control.compare.summary.commitsAheadSingular', + 'auto.components.right.sidebar.source.control.compare.summary.commitsAhead_one', '{{count}} commit ahead of {{ref}}', { count: commitsAhead, ref: summary.baseRef } ) : translate( - 'auto.components.right.sidebar.source.control.compare.summary.commitsAheadPlural', + 'auto.components.right.sidebar.source.control.compare.summary.commitsAhead_other', '{{count}} commits ahead of {{ref}}', { count: commitsAhead, ref: summary.baseRef } ) @@ -133,8 +138,21 @@ export function CompareSummary({ - {commitsAhead}{' '} - {translate('auto.components.right.sidebar.SourceControl.3278b2767b', 'ahead')} + {commitsAhead === 1 + ? translate( + 'auto.components.right.sidebar.SourceControl.commitsAheadShort_one', + '{{count}} ahead', + { + count: commitsAhead + } + ) + : translate( + 'auto.components.right.sidebar.SourceControl.commitsAheadShort_other', + '{{count}} ahead', + { + count: commitsAhead + } + )}
diff --git a/src/renderer/src/components/right-sidebar/source-control/sync/use-conflict-abort.ts b/src/renderer/src/components/right-sidebar/source-control/sync/use-conflict-abort.ts index 163e1f48445..fc2ff6d404e 100644 --- a/src/renderer/src/components/right-sidebar/source-control/sync/use-conflict-abort.ts +++ b/src/renderer/src/components/right-sidebar/source-control/sync/use-conflict-abort.ts @@ -49,15 +49,30 @@ export function useSourceControlConflictAbort({ } const isRebase = requestedOperation === 'rebase' - const label = isRebase ? 'rebase' : 'merge' - const title = isRebase ? 'Abort rebase?' : 'Abort merge?' + const title = isRebase + ? translate( + 'auto.components.right.sidebar.SourceControl.abortRebaseConfirmTitle', + 'Abort rebase?' + ) + : translate( + 'auto.components.right.sidebar.SourceControl.abortMergeConfirmTitle', + 'Abort merge?' + ) const description = isRebase - ? 'This cancels the rebase in progress and can discard conflict resolutions made during this rebase.' - : 'This cancels the merge in progress and can discard conflict resolutions made during this merge.' + ? translate( + 'auto.components.right.sidebar.SourceControl.abortRebaseConfirmDescription', + 'This cancels the rebase in progress and can discard conflict resolutions made during this rebase.' + ) + : translate( + 'auto.components.right.sidebar.SourceControl.abortMergeConfirmDescription', + 'This cancels the merge in progress and can discard conflict resolutions made during this merge.' + ) const confirmed = await confirmAction({ title, description, - confirmLabel: `Abort ${label}`, + confirmLabel: isRebase + ? translate('auto.components.right.sidebar.SourceControl.425f138269', 'Abort rebase') + : translate('auto.components.right.sidebar.SourceControl.540ca8f78c', 'Abort merge'), confirmVariant: 'destructive' }) if (!confirmed) { @@ -78,13 +93,28 @@ export function useSourceControlConflictAbort({ const abortGitOperation = isRebase ? abortRuntimeGitRebase : abortRuntimeGitMerge await abortGitOperation(context) } catch (error) { - const message = error instanceof Error ? error.message : `Failed to abort ${label}` + const message = + error instanceof Error + ? error.message + : isRebase + ? translate( + 'auto.components.right.sidebar.SourceControl.abortRebaseFailedFallback', + 'Failed to abort rebase' + ) + : translate( + 'auto.components.right.sidebar.SourceControl.abortMergeFailedFallback', + 'Failed to abort merge' + ) toast.error( - translate( - 'auto.components.right.sidebar.SourceControl.f99560ab29', - 'Abort {{value0}} failed', - { value0: label } - ), + isRebase + ? translate( + 'auto.components.right.sidebar.SourceControl.abortRebaseFailed', + 'Abort rebase failed' + ) + : translate( + 'auto.components.right.sidebar.SourceControl.abortMergeFailed', + 'Abort merge failed' + ), { description: message } ) setRemoteActionErrors((prev) => ({ diff --git a/src/renderer/src/components/right-sidebar/ssh-port-forward-dialog.tsx b/src/renderer/src/components/right-sidebar/ssh-port-forward-dialog.tsx index 24a44768cf4..5152beace40 100644 --- a/src/renderer/src/components/right-sidebar/ssh-port-forward-dialog.tsx +++ b/src/renderer/src/components/right-sidebar/ssh-port-forward-dialog.tsx @@ -170,11 +170,21 @@ function PortForwardForm({ const lPort = Number.parseInt(localPort || remotePort, 10) if (Number.isNaN(rPort) || rPort < 1 || rPort > 65535) { - setError('Remote port must be 1\u201365535') + setError( + translate( + 'auto.components.right.sidebar.PortsPanel.remotePortOutOfRange', + 'Remote port must be 1\u201365535' + ) + ) return } if (Number.isNaN(lPort) || lPort < 1 || lPort > 65535) { - setError('Local port must be 1\u201365535') + setError( + translate( + 'auto.components.right.sidebar.PortsPanel.localPortOutOfRange', + 'Local port must be 1\u201365535' + ) + ) return } @@ -200,9 +210,21 @@ function PortForwardForm({ } catch (err) { const msg = err instanceof Error ? err.message : String(err) if (msg.includes('EADDRINUSE') || msg.includes('already in use')) { - setError(`Port ${lPort} is already in use. Choose a different local port.`) + setError( + translate( + 'auto.components.right.sidebar.PortsPanel.localPortInUse', + 'Port {{port}} is already in use. Choose a different local port.', + { port: lPort } + ) + ) } else if (msg.includes('EACCES') || msg.includes('permission denied')) { - setError(`Port ${lPort} requires elevated privileges. Use a local port \u2265 1024.`) + setError( + translate( + 'auto.components.right.sidebar.PortsPanel.localPortRequiresPrivileges', + 'Port {{port}} requires elevated privileges. Use a local port \u2265 1024.', + { port: lPort } + ) + ) } else { setError(msg) } diff --git a/src/renderer/src/components/right-sidebar/use-create-pull-request-base-ref-discovery.ts b/src/renderer/src/components/right-sidebar/use-create-pull-request-base-ref-discovery.ts index bc960ae4bfd..67a1515294b 100644 --- a/src/renderer/src/components/right-sidebar/use-create-pull-request-base-ref-discovery.ts +++ b/src/renderer/src/components/right-sidebar/use-create-pull-request-base-ref-discovery.ts @@ -1,3 +1,4 @@ +import { translate } from '@/i18n/i18n' import { useEffect, useState, type Dispatch, type SetStateAction } from 'react' import { useAppStore } from '@/store' import { findRepoForHost } from '@/store/slices/repo-host-identity' @@ -87,7 +88,12 @@ export function useCreatePullRequestBaseRefDiscovery({ .catch(() => { if (!stale) { setBaseResults([]) - setBaseSearchError('Branch discovery failed.') + setBaseSearchError( + translate( + 'auto.components.right.sidebar.CreatePullRequest.branchDiscoveryFailed', + 'Branch discovery failed.' + ) + ) } }) .finally(() => { diff --git a/src/renderer/src/components/right-sidebar/use-create-pull-request-field-generation.ts b/src/renderer/src/components/right-sidebar/use-create-pull-request-field-generation.ts index 36052dfeb20..3375210d623 100644 --- a/src/renderer/src/components/right-sidebar/use-create-pull-request-field-generation.ts +++ b/src/renderer/src/components/right-sidebar/use-create-pull-request-field-generation.ts @@ -1,3 +1,4 @@ +import { translate } from '@/i18n/i18n' import { useCallback, useEffect, type Dispatch, type RefObject, type SetStateAction } from 'react' import type { RuntimeClientTarget } from '../../../../shared/runtime-client-target' import { getConnectionId } from '@/lib/connection-context' @@ -97,7 +98,10 @@ export function useCreatePullRequestFieldGeneration({ let generateDisabledReason: string | undefined if (submitting) { - generateDisabledReason = 'Create PR in progress...' + generateDisabledReason = translate( + 'auto.components.right.sidebar.CreatePullRequest.createInProgress', + 'Create PR in progress...' + ) } else if (!resolvedPullRequestAi?.ok) { generateDisabledReason = resolvedPullRequestAi?.error ?? 'Enable Source Control AI in Settings -> Git.' @@ -123,7 +127,12 @@ export function useCreatePullRequestFieldGeneration({ ) } if (!target) { - setGenerateError('The workspace host is unresolved. Refresh the workspace and retry.') + setGenerateError( + translate( + 'auto.components.right.sidebar.CreatePullRequest.workspaceHostUnresolved', + 'The workspace host is unresolved. Refresh the workspace and retry.' + ) + ) return } const requestId = generationRequestIdRef.current + 1 diff --git a/src/renderer/src/components/right-sidebar/useFileExplorerImport.ts b/src/renderer/src/components/right-sidebar/useFileExplorerImport.ts index a7a3ac5191c..cb41eb01621 100644 --- a/src/renderer/src/components/right-sidebar/useFileExplorerImport.ts +++ b/src/renderer/src/components/right-sidebar/useFileExplorerImport.ts @@ -131,28 +131,54 @@ export function useFileExplorerImport({ } if (failed.length > 0) { - const noun = failed.length === 1 ? 'file' : 'files' toast.error( - translate( - 'auto.components.right.sidebar.useFileExplorerImport.132fd0e1e9', - 'Failed to import {{value0}} {{value1}}.', - { value0: failed.length, value1: noun } - ), + failed.length === 1 + ? translate( + 'auto.components.right.sidebar.useFileExplorerImport.importFailedCount_one', + 'Failed to import {{count}} file.', + { + count: failed.length + } + ) + : translate( + 'auto.components.right.sidebar.useFileExplorerImport.importFailedCount_other', + 'Failed to import {{count}} files.', + { + count: failed.length + } + ), { description: describeSharedDropFailureReason(failed) } ) } else if (skipped.length > 0 && imported.length === 0) { - const noun = skipped.length === 1 ? 'file' : 'files' toast.error( - translate( - 'auto.components.right.sidebar.useFileExplorerImport.25919b2050', - 'Skipped {{value0}} {{value1}}.', - { value0: skipped.length, value1: noun } - ), + skipped.length === 1 + ? translate( + 'auto.components.right.sidebar.useFileExplorerImport.importSkippedCount_one', + 'Skipped {{count}} file.', + { + count: skipped.length + } + ) + : translate( + 'auto.components.right.sidebar.useFileExplorerImport.importSkippedCount_other', + 'Skipped {{count}} files.', + { + count: skipped.length + } + ), { description: describeSharedDropSkipReason(skipped) } ) } } catch (err) { - toast.error(extractIpcErrorMessage(err, 'Failed to import files.')) + toast.error( + extractIpcErrorMessage( + err, + translate( + 'auto.components.right.sidebar.useFileExplorerImport.importFailed', + 'Failed to import files.' + ) + ) + ) } finally { clearNativeDragState() } diff --git a/src/renderer/src/i18n/en-runtime-required.json b/src/renderer/src/i18n/en-runtime-required.json index fc0e885c2df..296e5220106 100644 --- a/src/renderer/src/i18n/en-runtime-required.json +++ b/src/renderer/src/i18n/en-runtime-required.json @@ -20,6 +20,18 @@ }, "auto": { "components": { + "GitHubItemDialog": { + "filesViewed_one": "{{viewed}} / {{count}} file viewed", + "filesViewed_other": "{{viewed}} / {{count}} files viewed", + "reactionCount_one": "{{count}} {{reaction}} reaction", + "reactionCount_other": "{{count}} {{reaction}} reactions" + }, + "GitLabItemDialog": { + "approvalsRemainingOfRequired_one": "{{count}} approval remaining of {{required}} required", + "approvalsRemainingOfRequired_other": "{{count}} approvals remaining of {{required}} required", + "approvalsRemaining_one": "{{count}} approval remaining", + "approvalsRemaining_other": "{{count}} approvals remaining" + }, "NativeChatResumeOnRestartModal": { "activityMonitorCount_one": "Monitoring {{count}} background task", "activityMonitorCount_other": "Monitoring {{count}} background tasks", @@ -66,6 +78,10 @@ "resultsFound_one": "{{count}} result found.", "resultsFound_other": "{{count}} results found." }, + "PullRequestPage": { + "filesViewed_one": "{{viewed}} / {{count}} file viewed", + "filesViewed_other": "{{viewed}} / {{count}} files viewed" + }, "activity": { "ActivityThreadContextMenu": { "clearMany_one": "Clear {{count}} Agent from List", @@ -183,6 +199,10 @@ } }, "github": { + "PRFilterSections": { + "labelCount_one": "{{count}} label", + "labelCount_other": "{{count}} labels" + }, "project": { "ProjectPicker": { "b787682111": "Browse all", @@ -222,12 +242,30 @@ }, "right": { "sidebar": { + "AiVaultPanel": { + "transcriptsSkippedCount_one": "{{count}} transcript skipped", + "transcriptsSkippedCount_other": "{{count}} transcripts skipped" + }, "AiVaultScanProgressStrip": { + "agentCheckedCount_one": "{{agent}}: {{settled}} of {{total}} history candidate checked", + "agentCheckedCount_other": "{{agent}}: {{settled}} of {{total}} history candidates checked", "databaseCount_one": "{{value0}} database", "databaseCount_other": "{{value0}} databases", "fileCount_one": "{{value0}} file", "fileCount_other": "{{value0}} files" }, + "AiVaultSessionDetails": { + "queuedMessageCount_one": "{{count}} queued message", + "queuedMessageCount_other": "{{count}} queued messages", + "recoverableEmptyDetailCount_one": "This session has no saved conversation, but {{count}} recoverable item survives.", + "recoverableEmptyDetailCount_other": "This session has no saved conversation, but {{count}} recoverable items survive.", + "subagentTranscriptCount_one": "{{count}} subagent transcript", + "subagentTranscriptCount_other": "{{count}} subagent transcripts" + }, + "BulkActionBar": { + "selectedCount_one": "{{count}} selected", + "selectedCount_other": "{{count}} selected" + }, "Search": { "fileCount_one": "{{count}} file", "fileCount_other": "{{count}} files", @@ -236,12 +274,30 @@ }, "SourceControl": { "48a003c1b1": "Staged Changes", + "branchFilesChangedVsBase_one": "{{count}} file changed vs {{ref}}", + "branchFilesChangedVsBase_other": "{{count}} files changed vs {{ref}}", + "clearNotesFromFile_one": "Clear {{count}} note from {{path}}?", + "clearNotesFromFile_other": "Clear {{count}} notes from {{path}}?", + "clearNotesFromWorkspace_one": "Clear {{count}} note from this workspace?", + "clearNotesFromWorkspace_other": "Clear {{count}} notes from this workspace?", + "commitsAheadShort_one": "{{count}} ahead", + "commitsAheadShort_other": "{{count}} ahead", + "compareBaseCommitsAhead_one": "{{count}} commit ahead of {{ref}}", + "compareBaseCommitsAhead_other": "{{count}} commits ahead of {{ref}}", + "compareBaseCommitsBehind_one": "{{count}} commit behind {{ref}}", + "compareBaseCommitsBehind_other": "{{count}} commits behind {{ref}}", "conflictCount_one": "{{count}} conflict", "conflictCount_other": "{{count}} conflicts", "conflictsSection": "Conflicts", "createPrIntentConfigureAi": "Add a commit message or configure Source Control AI settings.", "createPrIntentGenerateFailed": "Could not generate a commit message. Add one and retry.", - "d4ef4bafc5": "Changes" + "d4ef4bafc5": "Changes", + "discardFailedSampleMore_one": "{{paths}}, +{{count}} more", + "discardFailedSampleMore_other": "{{paths}}, +{{count}} more", + "discardFailed_one": "Failed to discard {{count}} file", + "discardFailed_other": "Failed to discard {{count}} files", + "noteCount_one": "{{count}} note", + "noteCount_other": "{{count}} notes" }, "checks": { "panel": { @@ -250,10 +306,20 @@ "commitsBehind_other": "{{count}} commits behind", "failingChecks_one": "{{count}} failing check", "failingChecks_other": "{{count}} failing checks", + "failingCount_one": "{{count}} failing", + "failingCount_other": "{{count}} failing", + "passingCount_one": "{{count}} passing", + "passingCount_other": "{{count}} passing", "pendingChecks_one": "{{count}} check pending", "pendingChecks_other": "{{count}} checks pending", + "pendingCount_one": "{{count}} pending", + "pendingCount_other": "{{count}} pending", + "sendQueuedCommentsToAi_one": "Send {{count}} queued comment to AI", + "sendQueuedCommentsToAi_other": "Send {{count}} queued comments to AI", "unresolvedChecks_one": "{{count}} check unresolved", - "unresolvedChecks_other": "{{count}} checks unresolved" + "unresolvedChecks_other": "{{count}} checks unresolved", + "unresolvedCount_one": "{{count}} unresolved", + "unresolvedCount_other": "{{count}} unresolved" }, "review": { "auth": { @@ -333,6 +399,30 @@ } } }, + "fileExplorerMultiDrag": { + "moreItems_one": "+{{count}} more", + "moreItems_other": "+{{count}} more" + }, + "github": { + "pr": { + "stack": { + "confirmation": { + "mergeConfirm_one": "Merge {{count}} PR", + "mergeConfirm_other": "Merge {{count}} PRs", + "mergeDescription_one": "{{included}}GitHub will merge {{count}} pull request atomically using {{method}}. If it cannot merge, nothing will be merged.", + "mergeDescription_other": "{{included}}GitHub will merge {{count}} pull requests atomically using {{method}}. If any cannot merge, none will.", + "queueConfirm_one": "Queue {{count}} PR", + "queueConfirm_other": "Queue {{count}} PRs", + "queueDescription_one": "{{included}}GitHub will add {{count}} pull request to the merge queue together. The queue chooses the merge method and may merge them in separate groups.", + "queueDescription_other": "{{included}}GitHub will add {{count}} pull requests to the merge queue together. The queue chooses the merge method and may merge them in separate groups." + }, + "merge": { + "mergeThroughLabel_one": "Merge through #{{pr}} · {{count}} PR", + "mergeThroughLabel_other": "Merge through #{{pr}} · {{count}} PRs" + } + } + } + }, "pull": { "policy": { "notice": { @@ -347,6 +437,12 @@ }, "source": { "control": { + "compare": { + "summary": { + "commitsAhead_one": "{{count}} commit ahead of {{ref}}", + "commitsAhead_other": "{{count}} commits ahead of {{ref}}" + } + }, "discard": { "dialog": { "fileCount_one": "{{count}} file", @@ -376,9 +472,29 @@ "useFileDeletion": { "deleteItems_other": "Delete {{count}} items?", "permanentlyDeleteItems_other": "Permanently delete {{count}} items?" + }, + "useFileExplorerImport": { + "importFailedCount_one": "Failed to import {{count}} file.", + "importFailedCount_other": "Failed to import {{count}} files.", + "importSkippedCount_one": "Skipped {{count}} file.", + "importSkippedCount_other": "Skipped {{count}} files." } } }, + "rightSidebar": { + "FolderWorkspacePrChecksPanel": { + "failingCountLabel_one": "{{count}} failing", + "failingCountLabel_other": "{{count}} failing", + "pendingCountLabel_one": "{{count}} pending", + "pendingCountLabel_other": "{{count}} pending", + "worktreeCountLabel_one": "{{count}} worktree", + "worktreeCountLabel_other": "{{count}} worktrees" + }, + "FolderWorkspaceWorktreesPanel": { + "attachedCount_one": "{{count}} attached worktree", + "attachedCount_other": "{{count}} attached worktrees" + } + }, "settings": { "ComputerUsePane": { "07bbe4c4cb": "Screenshots", @@ -1131,6 +1247,12 @@ "menu": { "quitApp": "Quit {{appName}}" }, + "projectViews": { + "error": { + "tooLargeCount_one": "This view has {{count}} item — too large to render in Orca. Narrow the view's filter on GitHub.", + "tooLargeCount_other": "This view has {{count}} items — too large to render in Orca. Narrow the view's filter on GitHub." + } + }, "resourceManager": { "pty": { "localOwnedCount_one": "{{count}} Orca PTY on this computer", @@ -1148,6 +1270,16 @@ } } }, + "sessionSearch": { + "panel": { + "resultCount_one": "{{count}} result", + "resultCount_other": "{{count}} results", + "sessionCount_one": "{{count}} session", + "sessionCount_other": "{{count}} sessions", + "sessionsShownOfLoaded_one": "{{shown}} of {{count}} session", + "sessionsShownOfLoaded_other": "{{shown}} of {{count}} sessions" + } + }, "settings": { "agents": { "approveForMe": "approve for me", diff --git a/src/renderer/src/i18n/locales/de.json b/src/renderer/src/i18n/locales/de.json index ed004c0a0fa..8cae442ccd5 100644 --- a/src/renderer/src/i18n/locales/de.json +++ b/src/renderer/src/i18n/locales/de.json @@ -1799,9 +1799,6 @@ "3fdf777817": "Auf GitHub öffnen", "c43fe79ee0": "GitHub-Link kopieren", "0caac1a18f": "Arbeitsbereich aus PR starten", - "8223320f8d": "aktualisiert", - "10ef1afb8e": "· aktualisiert", - "55962099bc": "hat dieses Issue geöffnet", "0ab4664a8b": "Arbeitsbereich aus Issue starten", "36182aa57f": "Neuen Arbeitsbereich starten", "fe6ff12dc2": "Weitere Aktionen für den Issue-Arbeitsbereich", @@ -1874,8 +1871,6 @@ "52b20b56f7": "Beschreibung", "4d555d3796": "Beschreibung bearbeiten", "9df4e74bdf": "Speichern", - "0ae387d8ca": "von", - "228e2f59d3": "Erledigt", "a154ec5224": "Kommentar auf GitHub öffnen", "bca8eb39ac": "Auf Kommentar antworten", "68cb993d61": "erledigt", @@ -1891,7 +1886,6 @@ "d43736d09c": "Steuerelemente für den Codekontext", "bd7be7b1fd": "Kommentar L", "db61d76cd5": "Codekontext wird geladen…", - "f2d02cdf8c": "Dateien angesehen", "1257d1435d": "Dateibaum anzeigen", "a341343303": "Review-Kommentar hinzugefügt.", "d1fa2cf888": "Ohne PR-Head-SHA ist kein Kommentar möglich.", @@ -1931,8 +1925,6 @@ "ec5c4b3ab2": "PR erneut öffnen", "21860b58d0": "Pull Request schließen", "5932578f51": "Zum Mergen ist ein registriertes lokales Repository erforderlich", - "e2bf3e41a9": "Kommentar", - "28d0d3374f": "Diskussion", "080d071d48": "Auf @{{value0}} antworten", "86f809e2ce": "In dieser Review-Diskussion antworten", "136542c9ba": ":L{{value0}}", @@ -1962,7 +1954,9 @@ "from": "von", "to": "nach", "activity": "Aktivität", - "noActivity": "Noch keine Aktivität." + "noActivity": "Noch keine Aktivität.", + "pullRequestReference": "PR #{{number}}", + "issueReference": "Issue #{{number}}" }, "checkActionRequiredHint": "Erfordert eine manuelle Aktion auf GitHub (z. B. die Genehmigung der Ausführung), um das Mergen zu ermöglichen.", "e15a8b77ef": "Für diesen Check sind keine eingebetteten Details verfügbar.", @@ -1976,8 +1970,15 @@ "09d67a0f9b": "Pull Request konnte nicht geschlossen werden", "88809e79db": "Pull Request konnte nicht erneut geöffnet werden", "00f55cc17b": "Für diesen Pull Request ist kein Zugriff auf das Repository verfügbar.", - "reactionCountSingular": "{{count}} {{reaction}} Reaktion", - "reactionCountPlural": "{{count}} {{reaction}} Reaktionen" + "reactionCount_one": "{{count}} Reaktion „{{reaction}}“", + "reactionCount_other": "{{count}} Reaktionen „{{reaction}}“", + "filesViewed_one": "{{viewed}} / {{count}} Datei angesehen", + "filesViewed_other": "{{viewed}} / {{count}} Dateien angesehen", + "updatedRelativeTime": "aktualisiert {{time}}", + "authorOpenedThisIssue": " hat dieses Issue geöffnet", + "middotUpdatedRelativeTime": "· aktualisiert {{time}}", + "resolvedThreadBy": "Erledigte Diskussion von {{author}}", + "resolvedCommentBy": "Erledigter Kommentar von {{author}}" }, "GitLabItemDialog": { "65e784c1f1": "Erneut öffnen", @@ -2033,14 +2034,15 @@ "f23ea85341": "erledigt", "6de8ce0cc6": "{{value0}} erforderlich", "22511537d2": "Genehmigt", - "00f3bab87b": " von {{value0}} erforderlich", "3a051b8ade": "Arbeitselement", "32f8bef818": "Keine Protokollausgabe.", "4168eb2c51": "Erledigen", "commentTooLarge": "Der Kommentar ist zu groß, um ihn sicher zu senden.", "gitlabActionFailed": "Die GitLab-Aktion ist fehlgeschlagen.", - "approvalsRemainingSingular": "{{count}} Genehmigung ausstehend", - "approvalsRemainingPlural": "{{count}} Genehmigungen ausstehend" + "approvalsRemainingOfRequired_one": "Noch {{count}} Genehmigung ausstehend, {{required}} erforderlich", + "approvalsRemainingOfRequired_other": "Noch {{count}} Genehmigungen ausstehend, {{required}} erforderlich", + "approvalsRemaining_one": "{{count}} Genehmigung ausstehend", + "approvalsRemaining_other": "{{count}} Genehmigungen ausstehend" }, "JiraIssueWorkspace": { "b0b92666c9": "Kommentieren", @@ -2368,9 +2370,6 @@ "778683ec84": "Beschreibung", "da9aaa8bcf": "Beschreibung bearbeiten", "4a337ac05f": "Speichern", - "169a93b29a": "aktualisiert", - "3c891789f6": "von", - "f4fe47c2bb": "Erledigt", "0ac19bb52e": "Kommentar auf GitHub öffnen", "d6c6679de7": "Auf Kommentar antworten", "76b2a0ac5b": "erledigt", @@ -2378,7 +2377,6 @@ "6885c619e7": "Ohne Repository-Pfad ist keine Antwort möglich.", "d94810f652": "Die Beschreibung konnte nicht aktualisiert werden.", "9b4190dc98": "Beschreibung aktualisiert.", - "89e80af1c7": "Dateien angesehen", "319cf2d54b": "Dateibaum anzeigen", "eff839f438": "Review-Kommentar hinzugefügt.", "d8c3ba91c4": "Ohne PR-Head-SHA ist kein Kommentar möglich.", @@ -2416,8 +2414,6 @@ "9d5425918e": "PR erneut öffnen", "96d013ed28": "Pull Request schließen", "eca289e593": "Zum Mergen ist ein registriertes lokales Repository erforderlich", - "e01e34f5fa": "Kommentar", - "345b68254c": "Diskussion", "31a7b202f2": "Auf @{{value0}} antworten", "408e634fbb": "In dieser Review-Diskussion antworten", "34b9f7c264": ":L{{value0}}", @@ -2439,7 +2435,19 @@ "4b8ae7303f": "Der Diff konnte nicht geladen werden.", "closePullRequestFailed": "Pull Request konnte nicht geschlossen werden", "reopenPullRequestFailed": "Pull Request konnte nicht erneut geöffnet werden", - "diffLoadTimedOut": "Zeitüberschreitung beim Laden dieses Diffs." + "diffLoadTimedOut": "Zeitüberschreitung beim Laden dieses Diffs.", + "filesViewed_one": "{{viewed}} / {{count}} Datei angesehen", + "filesViewed_other": "{{viewed}} / {{count}} Dateien angesehen", + "updatedRelativeTime": "aktualisiert {{time}}", + "resolvedThreadBy": "Erledigte Diskussion von {{author}}", + "resolvedCommentBy": "Erledigter Kommentar von {{author}}", + "mentionSource": { + "prAuthor": "PR-Autor", + "issueAuthor": "Issue-Autor", + "commenter": "Kommentarautor", + "participant": "Teilnehmer", + "teamMember": "Teammitglied" + } }, "QuickOpen": { "1dbd3f59ff": "Navigieren", @@ -3004,7 +3012,8 @@ "8f6cb3772f": "Diesen Pull Request automatisch mergen, sobald die Anforderungen erfüllt sind", "def355ff38": "Merge möglich", "e42c5bae67": "Laut GitHub ist ein Merge dieses PRs möglich und die Checks sind bestanden", - "cbf0113af6": "Laut GitHub ist ein Merge dieses PRs möglich" + "cbf0113af6": "Laut GitHub ist ein Merge dieses PRs möglich", + "autoMergeOn": "Auto-Merge aktiviert" } } }, @@ -3178,10 +3187,10 @@ "imageUrlTooLarge": "Die Bild-URL ist zu lang." }, "IssueSourceSelector": { - "d6aeb2012b": "Angezeigte Issues aus", "787c970baf": "Issue-Quelle", "51d1608920": "Origin", - "30b2c9df91": "Upstream" + "30b2c9df91": "Upstream", + "showingIssuesFromRepo": "Angezeigte Issues aus " }, "PRFilterDropdowns": { "979be3cf6b": "Zuständige Person", @@ -3191,12 +3200,18 @@ "01f3f3d161": "Autor", "13b3ac0a84": "Status", "79c54552f7": "Filter", - "8a2ffbf9b3": "Filter „{{value0}}“ entfernen" + "8a2ffbf9b3": "Filter „{{value0}}“ entfernen", + "anyState": "Beliebig", + "currentUser": "Aktueller Benutzer" }, "PRFilterPickers": { - "fdf387297c": "Zurücksetzen (", "472c12ae03": "Zurücksetzen", - "2d1f58eda6": "Verwenden" + "pressEnterToUseValue": "Enter drücken, um den eingegebenen Wert zu verwenden.", + "useTypedValue": " verwenden", + "clearSelected": "Zurücksetzen ({{count}})", + "loading": "Wird geladen…", + "searchTextTooLarge": "Der Suchtext ist zu lang.", + "noMatches": "Keine Treffer" }, "PRFilterSections": { "a00830d3f7": "Keine Benutzer", @@ -3206,7 +3221,6 @@ "458ea3602b": "Keine Autoren", "b69fa4fa20": "Zurück", "30ebb6ca44": "Alle Filter zurücksetzen", - "8177eda37e": "Filtern", "ea3416d646": "Zuständige Person", "b1d9fdea08": "Label", "24754c44ad": "Autor", @@ -3218,7 +3232,15 @@ "2b2f019091": "Beliebiger Status", "0fd3249e2e": "Geschlossen", "d78b60b5c2": "Offen", - "bd162b7d5a": "Gemergt" + "bd162b7d5a": "Gemergt", + "draft": "Entwurf", + "labelCount_one": "{{count}} Label", + "labelCount_other": "{{count}} Labels", + "allStates": "Alle", + "filterPullRequests": "Pull Requests filtern", + "filterIssues": "Issues filtern", + "filterOrTypeLogin": "Filtern oder Anmeldenamen eingeben...", + "filterLabels": "Labels filtern..." }, "github": { "rate": { @@ -3229,15 +3251,14 @@ "d12d3d6f33": "GitHub-API-Kontingent aktualisieren", "d5e5de9070": "Orca verwendet REST, Search und GraphQL über die GitHub CLI.", "58c5f88216": "GitHub-API-Kontingent", - "6da1858354": "übrig · Zurücksetzung in", - "f42790d150": "von", "01f7323e58": "GraphQL-API", "1daf0f22a9": "GraphQL", "1f2f28a4de": "Such-API", "c377a4f06a": "Suche", "c392c749a6": "REST-API", "bb227706a6": "REST", - "budget_scope_prefix": "Geltungsbereich des Kontingents" + "budget_scope_prefix": "Geltungsbereich des Kontingents", + "remainingOfLimitResetsIn": "{{remaining}} von {{limit}} übrig · Zurücksetzung in {{reset}}" } } } @@ -3245,7 +3266,29 @@ "CommentReactions": { "addReaction": "Reaktion hinzufügen", "removeNamedReaction": "Reaktion {{value0}} entfernen", - "addNamedReaction": "Reaktion {{value0}} hinzufügen" + "addNamedReaction": "Reaktion {{value0}} hinzufügen", + "reaction": { + "thumbsUp": "Daumen hoch", + "thumbsDown": "Daumen runter", + "laugh": "Lachen", + "confused": "verwirrt", + "heart": "Herz", + "hooray": "hurra", + "rocket": "Rakete", + "eyes": "Augen" + } + }, + "CommentCodeContext": { + "showSurroundingCodeBlock": "Umliegenden Codeblock anzeigen", + "showNearbyCodeContext": "Benachbarten Codekontext anzeigen" + }, + "prCheckPresentation": { + "successful": "Erfolgreich", + "inProgress": "In Bearbeitung" + }, + "IssueSourceIndicator": { + "issueFromRepo": "Issue aus ", + "issuesFromRepo": "Issues aus " } }, "linear": { @@ -12538,14 +12581,14 @@ "right": { "sidebar": { "BulkActionBar": { - "79a9f5f712": "Vormerkung aufheben (", - "ef5f5bd06e": "Vormerken (", - "60ed678138": "ausgewählt" + "selectedCount_one": "{{count}} ausgewählt", + "selectedCount_other": "{{count}} ausgewählt", + "stageCount": "Vormerken ({{count}})", + "unstageCount": "Vormerkung aufheben ({{count}})" }, "ChecksPanel": { "2ef90c9819": "Ein KI-Agent für die fehlgeschlagenen Checks wurde gestartet.", "a0181a8d76": "Ein KI-Agent für die Konflikte wurde gestartet.", - "34464d00b9": "aktualisiert", "058039787c": "Abbrechen", "2ab7fd4b6d": "Speichern", "dda5924a40": "Checks erfordern einen Git-Branch und den Kontext eines gehosteten Reviews", @@ -12591,7 +12634,8 @@ "430f1a62d4": "Der ausgewählte Thread auf der Plattform konnte nicht als erledigt markiert werden.", "updateReactionFailed": "Die Reaktion konnte nicht aktualisiert werden.", "gitlabMoreActions": "Weitere MR-Aktionen", - "gitlabLinkAnother": "Weiteren MR verknüpfen" + "gitlabLinkAnother": "Weiteren MR verknüpfen", + "reviewUpdatedAt": "{{review}} aktualisiert {{time}}" }, "CreateHostedReviewComposer": { "741ff8a0d2": "Pushen und {{value0}} erstellen" @@ -12748,7 +12792,14 @@ "740aca88ab": "Der Port-Scan im Arbeitsbereich ist fehlgeschlagen.", "5be4f7f727": "Menü für Port {{value0}}", "1004af16ab": "{{value0}} kopieren", - "153d3a8026": "Host des Arbeitsbereichs unbekannt" + "153d3a8026": "Host des Arbeitsbereichs unbekannt", + "unknownProcess": "Unbekannter Prozess", + "containerOrForwardedService": "Container oder weitergeleiteter Dienst", + "unassigned": "Nicht zugewiesen", + "remotePortOutOfRange": "Remote-Port muss im Bereich 1–65535 liegen", + "localPortOutOfRange": "Lokaler Port muss im Bereich 1–65535 liegen", + "localPortInUse": "Port {{port}} wird bereits verwendet. Einen anderen lokalen Port wählen.", + "localPortRequiresPrivileges": "Port {{port}} erfordert erhöhte Rechte. Einen lokalen Port ≥ 1024 verwenden." }, "Search": { "1abfb25a66": "Suchbegriff eingeben, um Dateien zu durchsuchen", @@ -12805,7 +12856,6 @@ "476b77745b": "Basisreferenz ändern", "ed34038d0d": "Branch-Vergleich aktualisieren", "493f963029": "Basisreferenz ändern", - "3278b2767b": "voraus", "11b5dd8e41": "Vergleich mit", "a9bf7c171a": "Commit fehlgeschlagen", "011f9713fc": "Commit blockiert", @@ -12850,7 +12900,6 @@ "574d2f4413": "Notizen löschen", "05bb8f4a48": "Abbrechen", "48db37cca9": "Alle anzeigen", - "78ce2d37ac": "Pusht zum Fork", "c05fe04839": "Pusht zum Fork unter {{value0}} (nicht zu origin)", "c35baf2f1e": "Dateien filtern…", "2fe2a67580": "Weitere Notizaktionen", @@ -12858,14 +12907,12 @@ "cc474e0b8c": "Notizen", "e131cd7128": "Die Quellcodeverwaltung ist nur für Git-Repositorys verfügbar", "c07b236287": "Einen Arbeitsbereich auswählen, um Änderungen anzuzeigen", - "dc5a6465fc": "{{value0}} (z. B. {{value1}}{{value2}})", "a5e5a11090": "Verwerfen aller Änderungen fehlgeschlagen — die Vormerkung der Dateien konnte vor dem Verwerfen nicht aufgehoben werden", "8a5ba6a988": "Commit-Diff konnte nicht geladen werden", "fe5bd1a610": "{{value0}} wird erstellt…", "812cb992ee": "Auf {{value0}} öffnen", "eef5446523": "{{value0}} #{{value1}} ist bereits offen", "0453ca3a9a": "{{value0}} wurde erstellt, konnte aber von Orca noch nicht aktualisiert werden.", - "f99560ab29": "Abbruch von {{value0}} fehlgeschlagen", "eae7a1da5f": "Die Notizen konnten nicht gelöscht werden.", "df5040e3c3": "Vormerkung aufheben", "8cde1a2fb0": "Vormerken", @@ -12893,8 +12940,6 @@ "aaf1451654": "{{value0}} als Entwurf erstellen", "26511c22b4": "Wird erstellt…", "d7ae61269b": "Auf Branch committet", - "branchFilesChangedVsBaseOne": "1 Datei gegenüber {{ref}} geändert", - "branchFilesChangedVsBaseOther": "{{count}} Dateien gegenüber {{ref}} geändert", "48a003c1b1": "Vorgemerkte Änderungen", "d4ef4bafc5": "Änderungen", "9339382454": "Alle Vormerkungen aufheben", @@ -12904,8 +12949,6 @@ "72f2bea3f4": "Notizen ausklappen", "d13edef890": "Notizen einklappen", "d6fb1df5fe": "{{value0}} ist bereits offen", - "05838cfdeb": "{{value0}}-Konflikt", - "d206117f90": "{{value0}}-Konflikt ({{value1}})", "0b5b8c234c": "{{value0}} öffnen ({{value1}})", "d97ef8f221": "Zeilen {{value0}}-{{value1}}", "6f8bfa0eb9": "Zeile {{value0}}", @@ -12958,10 +13001,6 @@ "b3c8f1a902": "Dateien nach Namen filtern", "d4f8c2a901": "Filter leeren und schließen", "e8a1c4b203": "gegenüber", - "compareBaseCommitsAheadOne": "1 Commit vor {{ref}}", - "compareBaseCommitsAheadOther": "{{count}} Commits vor {{ref}}", - "compareBaseCommitsBehindOne": "1 Commit hinter {{ref}}", - "compareBaseCommitsBehindOther": "{{count}} Commits hinter {{ref}}", "4b4a7de138": "Review-Seite im Browser öffnen", "createPrIntentCommitBlockedSummary": "Commit blockiert: {{value0}} Problem beheben und anschließend „PR erstellen“ erneut versuchen.", "pushRecovery": { @@ -12992,17 +13031,50 @@ "diffCommentNotesCopyFailed": "Notizen konnten nicht kopiert werden", "conflictCount_one": "{{count}} Konflikt", "conflictCount_other": "{{count}} Konflikte", - "discardFailedSingular": "Änderungen an {{count}} Datei konnten nicht verworfen werden", - "discardFailedPlural": "Änderungen an {{count}} Dateien konnten nicht verworfen werden", - "noteCountSingular": "{{count}} Notiz", - "noteCountPlural": "{{count}} Notizen" + "discardFailedSampleMore_one": "{{paths}}, +{{count}} weitere", + "discardFailedSampleMore_other": "{{paths}}, +{{count}} weitere", + "discardFailed_one": "Änderungen an {{count}} Datei konnten nicht verworfen werden", + "discardFailed_other": "Änderungen an {{count}} Dateien konnten nicht verworfen werden", + "discardFailedWithSample": "{{error}} (z. B. {{paths}})", + "compareBaseCommitsAhead_one": "{{count}} Commit vor {{ref}}", + "compareBaseCommitsAhead_other": "{{count}} Commits vor {{ref}}", + "compareBaseCommitsBehind_one": "{{count}} Commit hinter {{ref}}", + "compareBaseCommitsBehind_other": "{{count}} Commits hinter {{ref}}", + "branchFilesChangedVsBase_one": "{{count}} Datei gegenüber {{ref}} geändert", + "branchFilesChangedVsBase_other": "{{count}} Dateien gegenüber {{ref}} geändert", + "noteCount_one": "{{count}} Notiz", + "noteCount_other": "{{count}} Notizen", + "comparingAgainstRef": "Vergleich mit {{ref}}", + "commitsAheadShort_one": "{{count}} voraus", + "commitsAheadShort_other": "{{count}} voraus", + "unresolvedConflictOfKind": "Ungelöster Konflikt ({{kind}})", + "unresolvedConflict": "Ungelöster Konflikt", + "locallyResolvedConflictOfKind": "Konflikt lokal gelöst ({{kind}})", + "locallyResolvedConflict": "Konflikt lokal gelöst", + "pushesToForkTarget": "Pusht zum Fork {{target}}", + "abortRebaseConfirmTitle": "Rebase abbrechen?", + "abortMergeConfirmTitle": "Merge abbrechen?", + "abortRebaseConfirmDescription": "Dies bricht den laufenden Rebase ab und kann dabei vorgenommene Konfliktlösungen verwerfen.", + "abortMergeConfirmDescription": "Dies bricht den laufenden Merge ab und kann dabei vorgenommene Konfliktlösungen verwerfen.", + "abortRebaseFailedFallback": "Rebase konnte nicht abgebrochen werden", + "abortMergeFailedFallback": "Merge konnte nicht abgebrochen werden", + "abortRebaseFailed": "Rebase-Abbruch fehlgeschlagen", + "abortMergeFailed": "Merge-Abbruch fehlgeschlagen", + "clearNotesFromWorkspace_one": "{{count}} Notiz aus diesem Arbeitsbereich löschen?", + "clearNotesFromWorkspace_other": "{{count}} Notizen aus diesem Arbeitsbereich löschen?", + "clearNotesFromFile_one": "{{count}} Notiz aus {{path}} löschen?", + "clearNotesFromFile_other": "{{count}} Notizen aus {{path}} löschen?" }, "SourceControlAgentActionDialog": { "8e856842d1": "Der ausgewählte Agent konnte nicht gestartet werden.", "c075d00de1": "Die Verbindung zum Arbeitsbereich konnte nicht ermittelt werden.", "38b899cc02": "Alle Repositorys", "808cfe0a3b": "Dieses Repository", - "994cddd1f7": "Nicht speichern" + "994cddd1f7": "Nicht speichern", + "agentNotEnabledOrDetected": "{{agent}} ist auf dem Host dieses Arbeitsbereichs nicht aktiviert oder wurde nicht erkannt.", + "workspaceConnectionUnresolved": "Die Verbindung zum Arbeitsbereich konnte nicht ermittelt werden.", + "noEnabledAgentsDetected": "Auf dem Host dieses Arbeitsbereichs wurden keine aktivierten Agenten erkannt.", + "startAgent": "Agent starten" }, "SourceControlAgentActionDialogForm": { "013c9ac04a": "Speichern für", @@ -13068,10 +13140,6 @@ "cbcc4ab3db": "Die ersten 100 Checks werden angezeigt", "0dca6bfab5": "Check-Details öffnen", "991f50c7e4": "Keine Checks konfiguriert", - "9ad98f2a17": "ausstehend", - "5e52f4ef7f": "fehlgeschlagen", - "02ca4f9074": "erfolgreich", - "checksUnresolvedChip": "ungeklärt", "checksUnresolvedStripHint": "Diese Checks wurden ohne Einstufung als erfolgreich oder fehlgeschlagen abgeschlossen.", "e15a8b77ef": "Für diesen Check sind keine eingebetteten Details verfügbar.", "dcb3c546fe": "Erneut versuchen", @@ -13090,7 +13158,6 @@ "1f2b980522": "Check-Details werden geladen…", "0c96cd25e5": "Lösen", "3a71a6ed0b": "Konflikte lösen, damit Checks und Merge abgeschlossen werden können.", - "60186d8498": "Durch Konflikte blockiert", "c16762ac8c": "Die Checks und Kommentare unten zeigen den aktuell abgerufenen Kontext.", "9d0e7bcefc": "Keine blockierende PR-Aktion", "5856874b59": "Orca aktualisiert die Checks, solange dieses Panel geöffnet bleibt.", @@ -13115,7 +13182,6 @@ "084c516efb": "Befehle kopieren", "5dc3af25c0": "Kommentar auswählen", "d7a2f9c401": "Ungelöste {{value0}}-Kommentare senden", - "d91f2a6c39": "{{value0}} Kommentare aus der Warteschlange an die KI senden", "a6de3e5a20": "Kommentarwarteschlange leeren", "f8a2c91d04": "Für den Agenten einreihen", "b4e8a1c902": "In der Warteschlange", @@ -13138,7 +13204,28 @@ "pendingChecks_one": "{{count}} Check ausstehend", "pendingChecks_other": "{{count}} Checks ausstehend", "unresolvedChecks_one": "{{count}} Check ungeklärt", - "unresolvedChecks_other": "{{count}} Checks ungeklärt" + "unresolvedChecks_other": "{{count}} Checks ungeklärt", + "passingCount_one": "{{count}} erfolgreich", + "passingCount_other": "{{count}} erfolgreich", + "failingCount_one": "{{count}} fehlgeschlagen", + "failingCount_other": "{{count}} fehlgeschlagen", + "pendingCount_one": "{{count}} ausstehend", + "pendingCount_other": "{{count}} ausstehend", + "unresolvedCount_one": "{{count}} ungelöst", + "unresolvedCount_other": "{{count}} ungelöst", + "sendQueuedCommentsToAi_one": "{{count}} Kommentar aus der Warteschlange an die KI senden", + "sendQueuedCommentsToAi_other": "{{count}} Kommentare aus der Warteschlange an die KI senden", + "conflictsBlockThisMr": "Konflikte blockieren diesen MR", + "conflictsBlockThisPr": "Konflikte blockieren diesen PR", + "copyComment": "Kommentar kopieren", + "sendComment": "Senden", + "commentingRequiresGitHubPrTarget": "Zum Kommentieren muss ein GitHub-PR-Repository als Ziel feststehen.", + "selectWorkspaceBeforeAiAction": "Vor dem Start einer KI-Aktion einen Arbeitsbereich auswählen.", + "operation": { + "rebase": "Rebase", + "merge": "Merge", + "cherryPick": "Cherry-pick" + } }, "empty": { "state": { @@ -13544,8 +13631,8 @@ }, "compare": { "summary": { - "commitsAheadSingular": "{{count}} Commit vor {{ref}}", - "commitsAheadPlural": "{{count}} Commits vor {{ref}}" + "commitsAhead_one": "{{count}} Commit vor {{ref}}", + "commitsAhead_other": "{{count}} Commits vor {{ref}}" } }, "conflict": { @@ -13630,8 +13717,11 @@ "folderLinksOutsideProject": "Dieser Ordner verweist auf ein Ziel außerhalb des Projekts und kann daher hier nicht geöffnet werden." }, "useFileExplorerImport": { - "25919b2050": "{{value0}} {{value1}} übersprungen.", - "132fd0e1e9": "Import von {{value0}} {{value1}} fehlgeschlagen." + "importFailedCount_one": "Import von {{count}} Datei fehlgeschlagen.", + "importFailedCount_other": "Import von {{count}} Dateien fehlgeschlagen.", + "importSkippedCount_one": "{{count}} Datei übersprungen.", + "importSkippedCount_other": "{{count}} Dateien übersprungen.", + "importFailed": "Import der Dateien fehlgeschlagen." }, "useFileExplorerKeys": { "8adb953095": "Vorgang fehlgeschlagen" @@ -13669,7 +13759,6 @@ "refreshSessionHistory": "Sitzungsverlauf aktualisieren", "searchSessions": "Sitzungen suchen", "clearSearch": "Suche leeren", - "transcriptsSkipped": "{{count}} Transkript übersprungen", "noAgentSessionsFound": "Keine Agentensitzungen gefunden", "noSessionsMatchFilters": "Keine Sitzungen entsprechen den aktuellen Filtern", "noAgentsSelected": "Keine Agenten ausgewählt", @@ -13688,7 +13777,9 @@ "resumeInChatFailed": "Diese Sitzung konnte nicht in einem neuen Chat fortgesetzt werden.", "resumeInNewCliUnavailable": "Diese Sitzung kann nicht in der CLI geöffnet werden.", "resumeInNewCliHostTooOld": "Orca auf dem Host aktualisieren, auf dem dieser Chat läuft, um ihn in einer neuen CLI fortzusetzen.", - "folderWorkspaceUnavailable": "Der Ordner-Arbeitsbereich ist nicht mehr verfügbar." + "folderWorkspaceUnavailable": "Der Ordner-Arbeitsbereich ist nicht mehr verfügbar.", + "transcriptsSkippedCount_one": "{{count}} Transkript übersprungen", + "transcriptsSkippedCount_other": "{{count}} Transkripte übersprungen" }, "AiVaultPanelControls": { "scanningSessions": "Sitzungen werden durchsucht", @@ -13719,11 +13810,8 @@ "latestTurns": "Letzte Gesprächsbeiträge", "noPreviewAvailable": "Keine Unterhaltungsvorschau verfügbar", "conversationNotSaved": "Unterhaltung nicht gespeichert", - "recoverableEmptyDetail": "Für diese Sitzung ist keine Unterhaltung gespeichert, es sind jedoch noch Elemente wiederherstellbar: {{value0}}.", "recoverableEmptyOpenLogHint": "Zum Wiederherstellen das Protokoll öffnen.", "emptyConversationDetail": "Für diese Sitzung ist keine Unterhaltung gespeichert. Sie kann nicht fortgesetzt werden.", - "queuedMessages": "Nachrichten in der Warteschlange: {{value0}}", - "subagentTranscripts": "Transkripte von Unteragenten: {{value0}}", "resumeInWorktree": "Im Worktree fortsetzen", "viewLog": "Protokoll anzeigen", "unknownTime": "Unbekannter Zeitpunkt", @@ -13752,7 +13840,13 @@ "noFirstPromptAvailable": "Kein erster Prompt verfügbar", "loadingFirstPrompt": "Erster Prompt wird geladen…", "folder": "Ordner", - "resumeInFolder": "Im Ordner fortsetzen" + "resumeInFolder": "Im Ordner fortsetzen", + "recoverableEmptyDetailCount_one": "Für diese Sitzung ist keine Unterhaltung gespeichert, es ist jedoch noch {{count}} Element wiederherstellbar.", + "recoverableEmptyDetailCount_other": "Für diese Sitzung ist keine Unterhaltung gespeichert, es sind jedoch noch {{count}} Elemente wiederherstellbar.", + "queuedMessageCount_one": "{{count}} Nachricht in der Warteschlange", + "queuedMessageCount_other": "{{count}} Nachrichten in der Warteschlange", + "subagentTranscriptCount_one": "{{count}} Transkript eines Unteragenten", + "subagentTranscriptCount_other": "{{count}} Transkripte von Unteragenten" }, "AiVaultSessionRow": { "noPreviewAvailable": "Keine Unterhaltungsvorschau verfügbar", @@ -13886,26 +13980,26 @@ "confirmation": { "84f6f5b9eb": "Enthalten: {{numbers}}. ", "541984b2eb": "Bis einschließlich #{{pr}} einreihen?", - "4809f55cdb": "{{included}}GitHub reiht {{count}} Pull Request gemeinsam in die Merge-Warteschlange ein. Diese wählt die Merge-Methode und kann die Pull Requests in getrennten Gruppen mergen.", - "be8f2621be": "{{included}}GitHub reiht {{count}} Pull Requests gemeinsam in die Merge-Warteschlange ein. Diese wählt die Merge-Methode und kann die Pull Requests in getrennten Gruppen mergen.", - "92ca033e72": "{{count}} PR einreihen", - "478a527b15": "{{count}} PRs einreihen", "1feef35ca4": "Bis einschließlich #{{pr}} mergen?", - "c3e036c99f": "{{included}}GitHub mergt {{count}} Pull Request mit {{method}} atomar. Wenn er nicht gemergt werden kann, wird nichts gemergt.", - "369aba4b32": "{{included}}GitHub mergt {{count}} Pull Requests mit {{method}} atomar. Wenn einer nicht gemergt werden kann, wird keiner gemergt.", - "493c78f521": "{{count}} PR mergen", - "eb7051d268": "{{count}} PRs mergen" + "queueDescription_one": "{{included}}GitHub reiht {{count}} Pull Request gemeinsam in die Merge-Warteschlange ein. Diese wählt die Merge-Methode und kann Pull Requests in getrennten Gruppen mergen.", + "queueDescription_other": "{{included}}GitHub reiht {{count}} Pull Requests gemeinsam in die Merge-Warteschlange ein. Diese wählt die Merge-Methode und kann die Pull Requests in getrennten Gruppen mergen.", + "queueConfirm_one": "{{count}} PR einreihen", + "queueConfirm_other": "{{count}} PRs einreihen", + "mergeDescription_one": "{{included}}GitHub mergt {{count}} Pull Request mit {{method}} atomar. Wenn er nicht gemergt werden kann, wird nichts gemergt.", + "mergeDescription_other": "{{included}}GitHub mergt {{count}} Pull Requests mit {{method}} atomar. Wenn einer nicht gemergt werden kann, wird keiner gemergt.", + "mergeConfirm_one": "{{count}} PR mergen", + "mergeConfirm_other": "{{count}} PRs mergen" }, "merge": { - "55ae29b907": "Bis einschließlich #{{pr}} mergen · {{count}} PR", - "b8446f6ec2": "Bis einschließlich #{{pr}} mergen · {{count}} PRs", "189d0ec614": "#{{pr}} ist noch ein Entwurf.", "640fb50d9c": "#{{pr}} ist geschlossen.", "46ffcbda75": "#{{pr}} enthält Merge-Konflikte.", "6dabefd63e": "Für #{{pr}} wurden Änderungen angefordert.", "2bb21fc326": "#{{pr}} benötigt noch eine Review-Genehmigung.", "c23faf74df": "#{{pr}} muss aktualisiert werden.", - "f561e80968": "#{{pr}} ist blockiert." + "f561e80968": "#{{pr}} ist blockiert.", + "mergeThroughLabel_one": "Bis einschließlich #{{pr}} mergen · {{count}} PR", + "mergeThroughLabel_other": "Bis einschließlich #{{pr}} mergen · {{count}} PRs" } } } @@ -13962,14 +14056,15 @@ "sourceActionsUnavailable": "Die Transkriptquelle ist nicht verfügbar." }, "AiVaultScanProgressStrip": { - "agentChecked": "{{agent}}: {{settled}} von {{total}} möglichen Verlaufseinträgen geprüft", "fileCount_one": "{{value0}} Datei", "fileCount_other": "{{value0}} Dateien", "databaseCount_one": "{{value0}} Datenbank", "databaseCount_other": "{{value0}} Datenbanken", "scanning": "{{value0}} wird durchsucht", "checking": "{{value0}} wird geprüft", - "scanned": "{{value0}} durchsucht" + "scanned": "{{value0}} durchsucht", + "agentCheckedCount_one": "{{agent}}: {{settled}} von {{total}} möglichem Verlaufseintrag geprüft", + "agentCheckedCount_other": "{{agent}}: {{settled}} von {{total}} möglichen Verlaufseinträgen geprüft" }, "run": { "source": { @@ -13998,6 +14093,15 @@ } } } + }, + "fileExplorerMultiDrag": { + "moreItems_one": "+{{count}} weitere", + "moreItems_other": "+{{count}} weitere" + }, + "CreatePullRequest": { + "createInProgress": "PR wird erstellt...", + "workspaceHostUnresolved": "Der Host des Arbeitsbereichs konnte nicht ermittelt werden. Den Arbeitsbereich aktualisieren und erneut versuchen.", + "branchDiscoveryFailed": "Branch-Erkennung fehlgeschlagen." } } }, @@ -15848,7 +15952,9 @@ "6978871a3d": "Öffnen", "cce596969e": "Notiz löschen", "cad3384faa": "Notiz bearbeiten", - "508ee678a5": "Im Browser öffnen" + "508ee678a5": "Im Browser öffnen", + "noteAuthorFallback": "Notiz", + "sentMeta": "gesendet" }, "DiffCommentPopover": { "2b3ce6d394": "Abbrechen", @@ -15861,6 +15967,9 @@ }, "useDiffCommentDecorator": { "995fa28b50": "Diese Notiz" + }, + "diffCommentZoneCard": { + "noteAlreadySent": "Notiz bereits gesendet" } } }, @@ -17113,10 +17222,10 @@ "rightSidebar": { "FolderWorkspaceWorktreesPanel": { "unavailable": "Arbeitsbereiche werden nur für Ordnerarbeitsbereiche angezeigt.", - "countOne": "1 zugeordneter Worktree", - "countMany": "{{value0}} zugeordnete Worktrees", "emptyTitle": "Noch keine zugeordneten Worktrees", - "emptyCopy": "Aus diesem Arbeitsbereich erstellte Worktrees werden hier angezeigt." + "emptyCopy": "Aus diesem Arbeitsbereich erstellte Worktrees werden hier angezeigt.", + "attachedCount_one": "{{count}} zugeordneter Worktree", + "attachedCount_other": "{{count}} zugeordnete Worktrees" }, "FolderWorkspacePrChecksPanel": { "unavailable": "PR-Checks werden nur für Ordnerarbeitsbereiche angezeigt.", @@ -17128,12 +17237,12 @@ "hideDetails": "Details zu den PR-Checks von {{value0}} ausblenden", "reviewChecks": "Review-Checks", "allChecksPassing": "Alle Checks erfolgreich", - "oneWorktree": "1 Worktree", - "worktreeCount": "{{value0}} Worktrees", - "oneFailing": "1 fehlgeschlagen", - "failingCount": "{{value0}} fehlgeschlagen", - "onePending": "1 ausstehend", - "pendingCount": "{{value0}} ausstehend" + "worktreeCountLabel_one": "{{count}} Worktree", + "worktreeCountLabel_other": "{{count}} Worktrees", + "failingCountLabel_one": "{{count}} fehlgeschlagen", + "failingCountLabel_other": "{{count}} fehlgeschlagen", + "pendingCountLabel_one": "{{count}} ausstehend", + "pendingCountLabel_other": "{{count}} ausstehend" }, "parentPrChecks": { "rowSummary": { @@ -19682,8 +19791,6 @@ }, "sessionSearch": { "panel": { - "resultsOne": "{{count}} Ergebnis", - "resultsOther": "{{count}} Ergebnisse", "noMatches": "Keine passenden Sitzungen im indexierten Verlauf. Eine andere Suchanfrage oder einen anderen Suchbereich verwenden.", "loadMore": "Weitere Treffer laden", "indexedHistory": "Indexierter Verlauf", @@ -19705,11 +19812,23 @@ "retry": "Erneut versuchen", "scopeUnknown": "Dieser Computer enthält diesen Arbeitsbereich oder dieses Projekt nicht. Den Suchbereich auf „Alle“ umstellen, um alles auf diesem Computer zu durchsuchen.", "sortSessionsAriaLabel": "Sitzungen sortieren: {{value0}}", - "sessionsOne": "{{count}} Sitzung", - "sessionsOther": "{{count}} Sitzungen", - "sessionsOfLoaded": "{{value0}} von {{value1}} Sitzungen", "showMoreSessions": "Weitere Sitzungen anzeigen", - "loadingMoreSessions": "Weitere Sitzungen werden geladen…" + "loadingMoreSessions": "Weitere Sitzungen werden geladen…", + "resultCount_one": "{{count}} Ergebnis", + "resultCount_other": "{{count}} Ergebnisse", + "sessionCount_one": "{{count}} Sitzung", + "sessionCount_other": "{{count}} Sitzungen", + "sessionsShownOfLoaded_one": "{{shown}} von {{count}} Sitzung", + "sessionsShownOfLoaded_other": "{{shown}} von {{count}} Sitzungen", + "hostSkipReason": { + "indexChanged": "Index geändert", + "searchOff": "Suche deaktiviert", + "notReady": "nicht bereit", + "unavailable": "nicht verfügbar", + "unreachable": "nicht erreichbar", + "scopeNotFound": "Suchbereich dort nicht gefunden", + "agentNotSupported": "Agent nicht unterstützt" + } } }, "sessionHistory": { @@ -20199,8 +20318,9 @@ "rateLimited": "GitHub-Ratenlimit erreicht. In einigen Minuten erneut versuchen.", "network": "Netzwerkfehler — Verbindung überprüfen.", "tooLargeUnknownCount": "Diese Ansicht enthält zu viele Einträge, um in Orca dargestellt zu werden. Den Filter der Ansicht auf GitHub einschränken.", - "tooLarge": "Diese Ansicht enthält {{itemCount}} Einträge — zu viele für die Darstellung in Orca. Den Filter der Ansicht auf GitHub einschränken.", - "schemaDriftDetail": "Diese Projektansicht konnte nicht gelesen werden: {{detail}}." + "schemaDriftDetail": "Diese Projektansicht konnte nicht gelesen werden: {{detail}}.", + "tooLargeCount_one": "Diese Ansicht enthält {{count}} Eintrag — zu groß für die Darstellung in Orca. Den Filter der Ansicht auf GitHub einschränken.", + "tooLargeCount_other": "Diese Ansicht enthält {{count}} Einträge — zu viele für die Darstellung in Orca. Den Filter der Ansicht auf GitHub einschränken." }, "columns": { "type": "Typ" diff --git a/src/renderer/src/i18n/locales/en.json b/src/renderer/src/i18n/locales/en.json index d220c42b7c7..2132d917a54 100644 --- a/src/renderer/src/i18n/locales/en.json +++ b/src/renderer/src/i18n/locales/en.json @@ -1814,9 +1814,6 @@ "3fdf777817": "Open on GitHub", "c43fe79ee0": "Copy GitHub link", "0caac1a18f": "Start workspace from PR", - "8223320f8d": "updated", - "10ef1afb8e": "· updated", - "55962099bc": "opened this issue", "0ab4664a8b": "Start workspace from issue", "36182aa57f": "Start new workspace", "fe6ff12dc2": "More issue workspace actions", @@ -1889,8 +1886,6 @@ "52b20b56f7": "Description", "4d555d3796": "Edit description", "9df4e74bdf": "Save", - "0ae387d8ca": "by", - "228e2f59d3": "Resolved", "a154ec5224": "Open comment on GitHub", "bca8eb39ac": "Reply to comment", "68cb993d61": "resolved", @@ -1906,7 +1901,6 @@ "d43736d09c": "Code context controls", "bd7be7b1fd": "comment L", "db61d76cd5": "Loading code context…", - "f2d02cdf8c": "files viewed", "1257d1435d": "Show file tree", "a341343303": "Review comment added.", "d1fa2cf888": "Unable to comment without the PR head SHA.", @@ -1946,8 +1940,6 @@ "ec5c4b3ab2": "Reopen PR", "21860b58d0": "Close pull request", "5932578f51": "Merge requires a registered local repo", - "e2bf3e41a9": "comment", - "28d0d3374f": "thread", "080d071d48": "Reply to @{{value0}}", "86f809e2ce": "Reply in this review thread", "136542c9ba": ":L{{value0}}", @@ -1977,7 +1969,9 @@ "from": "from", "to": "to", "activity": "Activity", - "noActivity": "No activity yet." + "noActivity": "No activity yet.", + "pullRequestReference": "PR #{{number}}", + "issueReference": "issue #{{number}}" }, "checkActionRequiredHint": "Needs a manual action on GitHub (e.g. approving the run) to unblock merging.", "e15a8b77ef": "No inline details are available for this check.", @@ -1991,8 +1985,15 @@ "09d67a0f9b": "Failed to close pull request", "88809e79db": "Failed to reopen pull request", "00f55cc17b": "Repository access is unavailable for this pull request.", - "reactionCountSingular": "{{count}} {{reaction}} reaction", - "reactionCountPlural": "{{count}} {{reaction}} reactions" + "reactionCount_one": "{{count}} {{reaction}} reaction", + "reactionCount_other": "{{count}} {{reaction}} reactions", + "filesViewed_one": "{{viewed}} / {{count}} file viewed", + "filesViewed_other": "{{viewed}} / {{count}} files viewed", + "updatedRelativeTime": "updated {{time}}", + "authorOpenedThisIssue": " opened this issue", + "middotUpdatedRelativeTime": "· updated {{time}}", + "resolvedThreadBy": "Resolved thread by {{author}}", + "resolvedCommentBy": "Resolved comment by {{author}}" }, "GitLabItemDialog": { "65e784c1f1": "Reopen", @@ -2048,14 +2049,15 @@ "f23ea85341": "resolved", "6de8ce0cc6": "{{value0}} required", "22511537d2": "Approved", - "00f3bab87b": " of {{value0}} required", "3a051b8ade": "Work item", "32f8bef818": "No log output.", "4168eb2c51": "Resolve", "commentTooLarge": "Comment is too large to submit safely.", "gitlabActionFailed": "GitLab action failed.", - "approvalsRemainingSingular": "{{count}} approval remaining", - "approvalsRemainingPlural": "{{count}} approvals remaining" + "approvalsRemainingOfRequired_one": "{{count}} approval remaining of {{required}} required", + "approvalsRemainingOfRequired_other": "{{count}} approvals remaining of {{required}} required", + "approvalsRemaining_one": "{{count}} approval remaining", + "approvalsRemaining_other": "{{count}} approvals remaining" }, "JiraIssueWorkspace": { "b0b92666c9": "Comment", @@ -2383,9 +2385,6 @@ "778683ec84": "Description", "da9aaa8bcf": "Edit description", "4a337ac05f": "Save", - "169a93b29a": "updated", - "3c891789f6": "by", - "f4fe47c2bb": "Resolved", "0ac19bb52e": "Open comment on GitHub", "d6c6679de7": "Reply to comment", "76b2a0ac5b": "resolved", @@ -2393,7 +2392,6 @@ "6885c619e7": "Unable to reply without a repository path.", "d94810f652": "Failed to update description.", "9b4190dc98": "Description updated.", - "89e80af1c7": "files viewed", "319cf2d54b": "Show file tree", "eff839f438": "Review comment added.", "d8c3ba91c4": "Unable to comment without the PR head SHA.", @@ -2431,8 +2429,6 @@ "9d5425918e": "Reopen PR", "96d013ed28": "Close pull request", "eca289e593": "Merge requires a registered local repo", - "e01e34f5fa": "comment", - "345b68254c": "thread", "31a7b202f2": "Reply to @{{value0}}", "408e634fbb": "Reply in this review thread", "34b9f7c264": ":L{{value0}}", @@ -2454,7 +2450,19 @@ "4b8ae7303f": "Failed to load diff.", "closePullRequestFailed": "Failed to close pull request", "reopenPullRequestFailed": "Failed to reopen pull request", - "diffLoadTimedOut": "Timed out loading this diff." + "diffLoadTimedOut": "Timed out loading this diff.", + "filesViewed_one": "{{viewed}} / {{count}} file viewed", + "filesViewed_other": "{{viewed}} / {{count}} files viewed", + "updatedRelativeTime": "updated {{time}}", + "resolvedThreadBy": "Resolved thread by {{author}}", + "resolvedCommentBy": "Resolved comment by {{author}}", + "mentionSource": { + "prAuthor": "PR author", + "issueAuthor": "Issue author", + "commenter": "Commenter", + "participant": "Participant", + "teamMember": "Team member" + } }, "QuickOpen": { "1dbd3f59ff": "Move", @@ -3019,7 +3027,8 @@ "8f6cb3772f": "Merge this pull request automatically once requirements are met", "def355ff38": "Able to merge", "e42c5bae67": "GitHub says this PR can merge and checks passed", - "cbf0113af6": "GitHub says this PR can merge" + "cbf0113af6": "GitHub says this PR can merge", + "autoMergeOn": "Auto-merge on" } } }, @@ -3193,10 +3202,10 @@ "imageUrlTooLarge": "Image URL is too large." }, "IssueSourceSelector": { - "d6aeb2012b": "Showing issues from", "787c970baf": "Issue source", "51d1608920": "Origin", - "30b2c9df91": "Upstream" + "30b2c9df91": "Upstream", + "showingIssuesFromRepo": "Showing issues from " }, "PRFilterDropdowns": { "979be3cf6b": "Assignee", @@ -3206,12 +3215,18 @@ "01f3f3d161": "Author", "13b3ac0a84": "Status", "79c54552f7": "Filters", - "8a2ffbf9b3": "Remove {{value0}} filter" + "8a2ffbf9b3": "Remove {{value0}} filter", + "anyState": "Any", + "currentUser": "Current user" }, "PRFilterPickers": { - "fdf387297c": "Clear (", "472c12ae03": "Clear", - "2d1f58eda6": "Use" + "pressEnterToUseValue": "Press Enter to use the typed value.", + "useTypedValue": "Use ", + "clearSelected": "Clear ({{count}})", + "loading": "Loading…", + "searchTextTooLarge": "Search text is too large.", + "noMatches": "No matches" }, "PRFilterSections": { "a00830d3f7": "No users", @@ -3221,7 +3236,6 @@ "458ea3602b": "No authors", "b69fa4fa20": "Back", "30ebb6ca44": "Clear all filters", - "8177eda37e": "Filter", "ea3416d646": "Assignee", "b1d9fdea08": "Label", "24754c44ad": "Author", @@ -3233,7 +3247,15 @@ "2b2f019091": "Any state", "0fd3249e2e": "Closed", "d78b60b5c2": "Open", - "bd162b7d5a": "Merged" + "bd162b7d5a": "Merged", + "draft": "Draft", + "labelCount_one": "{{count}} label", + "labelCount_other": "{{count}} labels", + "allStates": "All", + "filterPullRequests": "Filter pull requests", + "filterIssues": "Filter issues", + "filterOrTypeLogin": "Filter or type a login...", + "filterLabels": "Filter labels..." }, "github": { "rate": { @@ -3244,15 +3266,14 @@ "d12d3d6f33": "Refresh GitHub API budget", "d5e5de9070": "Orca uses REST, Search, and GraphQL through the GitHub CLI.", "58c5f88216": "GitHub API Budget", - "6da1858354": "left · resets in", - "f42790d150": "of", "01f7323e58": "GraphQL API", "1daf0f22a9": "GraphQL", "1f2f28a4de": "Search API", "c377a4f06a": "Search", "c392c749a6": "REST API", "bb227706a6": "REST", - "budget_scope_prefix": "Budget scope" + "budget_scope_prefix": "Budget scope", + "remainingOfLimitResetsIn": "{{remaining}} of {{limit}} left · resets in {{reset}}" } } } @@ -3260,7 +3281,29 @@ "CommentReactions": { "addReaction": "Add reaction", "removeNamedReaction": "Remove {{value0}} reaction", - "addNamedReaction": "Add {{value0}} reaction" + "addNamedReaction": "Add {{value0}} reaction", + "reaction": { + "thumbsUp": "thumbs up", + "thumbsDown": "thumbs down", + "laugh": "laugh", + "confused": "confused", + "heart": "heart", + "hooray": "hooray", + "rocket": "rocket", + "eyes": "eyes" + } + }, + "CommentCodeContext": { + "showSurroundingCodeBlock": "Show surrounding code block", + "showNearbyCodeContext": "Show nearby code context" + }, + "prCheckPresentation": { + "successful": "Successful", + "inProgress": "In progress" + }, + "IssueSourceIndicator": { + "issueFromRepo": "Issue from ", + "issuesFromRepo": "Issues from " } }, "linear": { @@ -12575,14 +12618,14 @@ "right": { "sidebar": { "BulkActionBar": { - "79a9f5f712": "Unstage (", - "ef5f5bd06e": "Stage (", - "60ed678138": "selected" + "selectedCount_one": "{{count}} selected", + "selectedCount_other": "{{count}} selected", + "stageCount": "Stage ({{count}})", + "unstageCount": "Unstage ({{count}})" }, "ChecksPanel": { "2ef90c9819": "Started an AI agent for the broken checks.", "a0181a8d76": "Started an AI agent for the conflicts.", - "34464d00b9": "updated", "058039787c": "Cancel", "2ab7fd4b6d": "Save", "dda5924a40": "Checks require a Git branch and hosted review context", @@ -12628,7 +12671,8 @@ "430f1a62d4": "Could not resolve the selected thread on the host.", "updateReactionFailed": "Failed to update reaction.", "gitlabMoreActions": "More MR actions", - "gitlabLinkAnother": "Link another MR" + "gitlabLinkAnother": "Link another MR", + "reviewUpdatedAt": "{{review}} updated {{time}}" }, "CreateHostedReviewComposer": { "741ff8a0d2": "Push & Create {{value0}}" @@ -12785,7 +12829,14 @@ "740aca88ab": "Workspace port scan failed.", "5be4f7f727": "Port {{value0}} menu", "1004af16ab": "Copy {{value0}}", - "153d3a8026": "Workspace host unknown" + "153d3a8026": "Workspace host unknown", + "unknownProcess": "Unknown process", + "containerOrForwardedService": "Container or forwarded service", + "unassigned": "Unassigned", + "remotePortOutOfRange": "Remote port must be 1–65535", + "localPortOutOfRange": "Local port must be 1–65535", + "localPortInUse": "Port {{port}} is already in use. Choose a different local port.", + "localPortRequiresPrivileges": "Port {{port}} requires elevated privileges. Use a local port ≥ 1024." }, "Search": { "1abfb25a66": "Type to search in files", @@ -12842,7 +12893,6 @@ "476b77745b": "Change Base Ref", "ed34038d0d": "Refresh branch compare", "493f963029": "Change base ref", - "3278b2767b": "ahead", "11b5dd8e41": "Comparing against", "a9bf7c171a": "Commit Failed", "011f9713fc": "Commit blocked", @@ -12887,7 +12937,6 @@ "574d2f4413": "Clear Notes", "05bb8f4a48": "Cancel", "48db37cca9": "View all", - "78ce2d37ac": "Pushes to fork", "c05fe04839": "Pushes to the fork at {{value0}} (not origin)", "c35baf2f1e": "Filter files…", "2fe2a67580": "More note actions", @@ -12895,14 +12944,12 @@ "cc474e0b8c": "Notes", "e131cd7128": "Source Control is only available for Git repositories", "c07b236287": "Select a workspace to view changes", - "dc5a6465fc": "{{value0}} (e.g. {{value1}}{{value2}})", "a5e5a11090": "Discard all failed — unable to unstage files before discard", "8a5ba6a988": "Failed to load commit diff", "fe5bd1a610": "Creating {{value0}}...", "812cb992ee": "Open on {{value0}}", "eef5446523": "{{value0}} #{{value1}} is already open", "0453ca3a9a": "{{value0}} created, but Orca could not refresh it yet.", - "f99560ab29": "Abort {{value0}} failed", "eae7a1da5f": "Failed to clear notes.", "df5040e3c3": "Unstage", "8cde1a2fb0": "Stage", @@ -12930,8 +12977,6 @@ "aaf1451654": "Create draft {{value0}}", "26511c22b4": "Creating...", "d7ae61269b": "Committed on Branch", - "branchFilesChangedVsBaseOne": "1 file changed vs {{ref}}", - "branchFilesChangedVsBaseOther": "{{count}} files changed vs {{ref}}", "48a003c1b1": "Staged Changes", "d4ef4bafc5": "Changes", "9339382454": "Unstage all", @@ -12941,8 +12986,6 @@ "72f2bea3f4": "Expand notes", "d13edef890": "Collapse notes", "d6fb1df5fe": "{{value0}} is already open", - "05838cfdeb": "{{value0}} conflict", - "d206117f90": "{{value0}} conflict ({{value1}})", "0b5b8c234c": "Open {{value0}} ({{value1}})", "d97ef8f221": "lines {{value0}}-{{value1}}", "6f8bfa0eb9": "line {{value0}}", @@ -12995,10 +13038,6 @@ "b3c8f1a902": "Filter files by name", "d4f8c2a901": "Clear and close filter", "e8a1c4b203": "vs", - "compareBaseCommitsAheadOne": "1 commit ahead of {{ref}}", - "compareBaseCommitsAheadOther": "{{count}} commits ahead of {{ref}}", - "compareBaseCommitsBehindOne": "1 commit behind {{ref}}", - "compareBaseCommitsBehindOther": "{{count}} commits behind {{ref}}", "4b4a7de138": "Open review page in browser", "createPrIntentCommitBlockedSummary": "Commit blocked: {{value0}} Fix the issue, then retry Create PR.", "pushRecovery": { @@ -13029,18 +13068,51 @@ "diffCommentNotesCopyFailed": "Failed to copy notes", "conflictCount_one": "{{count}} conflict", "conflictCount_other": "{{count}} conflicts", - "discardFailedSingular": "Failed to discard {{count}} file", - "discardFailedPlural": "Failed to discard {{count}} files", - "noteCountSingular": "{{count}} note", - "noteCountPlural": "{{count}} notes", - "statusReadFailed": "Git could not read this workspace. Changes shown may be out of date." + "statusReadFailed": "Git could not read this workspace. Changes shown may be out of date.", + "discardFailedSampleMore_one": "{{paths}}, +{{count}} more", + "discardFailedSampleMore_other": "{{paths}}, +{{count}} more", + "discardFailed_one": "Failed to discard {{count}} file", + "discardFailed_other": "Failed to discard {{count}} files", + "discardFailedWithSample": "{{error}} (e.g. {{paths}})", + "compareBaseCommitsAhead_one": "{{count}} commit ahead of {{ref}}", + "compareBaseCommitsAhead_other": "{{count}} commits ahead of {{ref}}", + "compareBaseCommitsBehind_one": "{{count}} commit behind {{ref}}", + "compareBaseCommitsBehind_other": "{{count}} commits behind {{ref}}", + "branchFilesChangedVsBase_one": "{{count}} file changed vs {{ref}}", + "branchFilesChangedVsBase_other": "{{count}} files changed vs {{ref}}", + "noteCount_one": "{{count}} note", + "noteCount_other": "{{count}} notes", + "comparingAgainstRef": "Comparing against {{ref}}", + "commitsAheadShort_one": "{{count}} ahead", + "commitsAheadShort_other": "{{count}} ahead", + "unresolvedConflictOfKind": "Unresolved conflict ({{kind}})", + "unresolvedConflict": "Unresolved conflict", + "locallyResolvedConflictOfKind": "Conflict resolved locally ({{kind}})", + "locallyResolvedConflict": "Conflict resolved locally", + "pushesToForkTarget": "Pushes to fork {{target}}", + "abortRebaseConfirmTitle": "Abort rebase?", + "abortMergeConfirmTitle": "Abort merge?", + "abortRebaseConfirmDescription": "This cancels the rebase in progress and can discard conflict resolutions made during this rebase.", + "abortMergeConfirmDescription": "This cancels the merge in progress and can discard conflict resolutions made during this merge.", + "abortRebaseFailedFallback": "Failed to abort rebase", + "abortMergeFailedFallback": "Failed to abort merge", + "abortRebaseFailed": "Abort rebase failed", + "abortMergeFailed": "Abort merge failed", + "clearNotesFromWorkspace_one": "Clear {{count}} note from this workspace?", + "clearNotesFromWorkspace_other": "Clear {{count}} notes from this workspace?", + "clearNotesFromFile_one": "Clear {{count}} note from {{path}}?", + "clearNotesFromFile_other": "Clear {{count}} notes from {{path}}?" }, "SourceControlAgentActionDialog": { "8e856842d1": "Could not start the selected agent.", "c075d00de1": "Unable to resolve the workspace connection.", "38b899cc02": "All repositories", "808cfe0a3b": "This repository", - "994cddd1f7": "Don't save" + "994cddd1f7": "Don't save", + "agentNotEnabledOrDetected": "{{agent}} is not enabled or was not detected on this workspace host.", + "workspaceConnectionUnresolved": "Unable to resolve the workspace connection.", + "noEnabledAgentsDetected": "No enabled agents were detected on this workspace host.", + "startAgent": "Start agent" }, "SourceControlAgentActionDialogForm": { "013c9ac04a": "Save for", @@ -13106,10 +13178,6 @@ "cbcc4ab3db": "Showing first 100 checks", "0dca6bfab5": "Open check details", "991f50c7e4": "No checks configured", - "9ad98f2a17": "pending", - "5e52f4ef7f": "failing", - "02ca4f9074": "passing", - "checksUnresolvedChip": "unresolved", "checksUnresolvedStripHint": "These checks finished without a pass or fail verdict.", "e15a8b77ef": "No inline details are available for this check.", "dcb3c546fe": "Retry", @@ -13128,7 +13196,6 @@ "1f2b980522": "Loading check details…", "0c96cd25e5": "Resolve", "3a71a6ed0b": "Resolve conflicts before checks and merge can complete.", - "60186d8498": "Conflicts block this", "c16762ac8c": "Checks and comments below show the current fetched context.", "9d0e7bcefc": "No blocking PR action", "5856874b59": "Orca will refresh checks while this panel stays open.", @@ -13153,7 +13220,6 @@ "084c516efb": "Copy commands", "5dc3af25c0": "Select comment", "d7a2f9c401": "Send unresolved {{value0}} comments", - "d91f2a6c39": "Send {{value0}} queued comments to AI", "a6de3e5a20": "Clear queued comments", "f8a2c91d04": "Queue for agent", "b4e8a1c902": "Queued", @@ -13176,7 +13242,28 @@ "pendingChecks_one": "{{count}} check pending", "pendingChecks_other": "{{count}} checks pending", "unresolvedChecks_one": "{{count}} check unresolved", - "unresolvedChecks_other": "{{count}} checks unresolved" + "unresolvedChecks_other": "{{count}} checks unresolved", + "passingCount_one": "{{count}} passing", + "passingCount_other": "{{count}} passing", + "failingCount_one": "{{count}} failing", + "failingCount_other": "{{count}} failing", + "pendingCount_one": "{{count}} pending", + "pendingCount_other": "{{count}} pending", + "unresolvedCount_one": "{{count}} unresolved", + "unresolvedCount_other": "{{count}} unresolved", + "sendQueuedCommentsToAi_one": "Send {{count}} queued comment to AI", + "sendQueuedCommentsToAi_other": "Send {{count}} queued comments to AI", + "conflictsBlockThisMr": "Conflicts block this MR", + "conflictsBlockThisPr": "Conflicts block this PR", + "copyComment": "Copy comment", + "sendComment": "Send", + "commentingRequiresGitHubPrTarget": "Commenting requires a GitHub PR repository target.", + "selectWorkspaceBeforeAiAction": "Select a workspace before launching an AI action.", + "operation": { + "rebase": "Rebase", + "merge": "Merge", + "cherryPick": "Cherry-pick" + } }, "empty": { "state": { @@ -13582,8 +13669,8 @@ }, "compare": { "summary": { - "commitsAheadSingular": "{{count}} commit ahead of {{ref}}", - "commitsAheadPlural": "{{count}} commits ahead of {{ref}}" + "commitsAhead_one": "{{count}} commit ahead of {{ref}}", + "commitsAhead_other": "{{count}} commits ahead of {{ref}}" } }, "conflict": { @@ -13666,8 +13753,11 @@ "folderLinksOutsideProject": "This folder links outside the project, so it can't be opened here." }, "useFileExplorerImport": { - "25919b2050": "Skipped {{value0}} {{value1}}.", - "132fd0e1e9": "Failed to import {{value0}} {{value1}}." + "importFailedCount_one": "Failed to import {{count}} file.", + "importFailedCount_other": "Failed to import {{count}} files.", + "importSkippedCount_one": "Skipped {{count}} file.", + "importSkippedCount_other": "Skipped {{count}} files.", + "importFailed": "Failed to import files." }, "useFileExplorerKeys": { "8adb953095": "Operation failed" @@ -13705,7 +13795,6 @@ "refreshSessionHistory": "Refresh Session History", "searchSessions": "Search sessions", "clearSearch": "Clear search", - "transcriptsSkipped": "{{count}} transcript skipped", "noAgentSessionsFound": "No agent sessions found", "noSessionsMatchFilters": "No sessions match the current filters", "noAgentsSelected": "No agents selected", @@ -13724,7 +13813,9 @@ "resumeInChatFailed": "Could not resume this session in a new chat.", "resumeInNewCliUnavailable": "This session cannot be opened in the CLI.", "resumeInNewCliHostTooOld": "Update Orca on the host that runs this chat to resume it in a new CLI.", - "folderWorkspaceUnavailable": "Folder workspace is no longer available." + "folderWorkspaceUnavailable": "Folder workspace is no longer available.", + "transcriptsSkippedCount_one": "{{count}} transcript skipped", + "transcriptsSkippedCount_other": "{{count}} transcripts skipped" }, "AiVaultPanelControls": { "scanningSessions": "Scanning sessions", @@ -13755,11 +13846,8 @@ "latestTurns": "Latest turns", "noPreviewAvailable": "No conversation preview available", "conversationNotSaved": "Conversation not saved", - "recoverableEmptyDetail": "This session has no saved conversation, but {{value0}} recoverable item(s) survive.", "recoverableEmptyOpenLogHint": "Open the log to recover them.", "emptyConversationDetail": "This session has no saved conversation and cannot be resumed.", - "queuedMessages": "{{value0}} queued message(s)", - "subagentTranscripts": "{{value0}} subagent transcript(s)", "resumeInWorktree": "Resume in Worktree", "viewLog": "View Log", "unknownTime": "Unknown time", @@ -13788,7 +13876,13 @@ "noFirstPromptAvailable": "No first prompt available", "loadingFirstPrompt": "Loading first prompt…", "folder": "Folder", - "resumeInFolder": "Resume in Folder" + "resumeInFolder": "Resume in Folder", + "recoverableEmptyDetailCount_one": "This session has no saved conversation, but {{count}} recoverable item survives.", + "recoverableEmptyDetailCount_other": "This session has no saved conversation, but {{count}} recoverable items survive.", + "queuedMessageCount_one": "{{count}} queued message", + "queuedMessageCount_other": "{{count}} queued messages", + "subagentTranscriptCount_one": "{{count}} subagent transcript", + "subagentTranscriptCount_other": "{{count}} subagent transcripts" }, "AiVaultSessionRow": { "noPreviewAvailable": "No conversation preview available", @@ -13922,26 +14016,26 @@ "confirmation": { "84f6f5b9eb": "Included: {{numbers}}. ", "541984b2eb": "Queue through #{{pr}}?", - "4809f55cdb": "{{included}}GitHub will add {{count}} pull request to the merge queue together. The queue chooses the merge method and may merge them in separate groups.", - "be8f2621be": "{{included}}GitHub will add {{count}} pull requests to the merge queue together. The queue chooses the merge method and may merge them in separate groups.", - "92ca033e72": "Queue {{count}} PR", - "478a527b15": "Queue {{count}} PRs", "1feef35ca4": "Merge through #{{pr}}?", - "c3e036c99f": "{{included}}GitHub will merge {{count}} pull request atomically using {{method}}. If it cannot merge, nothing will be merged.", - "369aba4b32": "{{included}}GitHub will merge {{count}} pull requests atomically using {{method}}. If any cannot merge, none will.", - "493c78f521": "Merge {{count}} PR", - "eb7051d268": "Merge {{count}} PRs" + "queueDescription_one": "{{included}}GitHub will add {{count}} pull request to the merge queue together. The queue chooses the merge method and may merge them in separate groups.", + "queueDescription_other": "{{included}}GitHub will add {{count}} pull requests to the merge queue together. The queue chooses the merge method and may merge them in separate groups.", + "queueConfirm_one": "Queue {{count}} PR", + "queueConfirm_other": "Queue {{count}} PRs", + "mergeDescription_one": "{{included}}GitHub will merge {{count}} pull request atomically using {{method}}. If it cannot merge, nothing will be merged.", + "mergeDescription_other": "{{included}}GitHub will merge {{count}} pull requests atomically using {{method}}. If any cannot merge, none will.", + "mergeConfirm_one": "Merge {{count}} PR", + "mergeConfirm_other": "Merge {{count}} PRs" }, "merge": { - "55ae29b907": "Merge through #{{pr}} · {{count}} PR", - "b8446f6ec2": "Merge through #{{pr}} · {{count}} PRs", "189d0ec614": "#{{pr}} is still a draft.", "640fb50d9c": "#{{pr}} is closed.", "46ffcbda75": "#{{pr}} has merge conflicts.", "6dabefd63e": "#{{pr}} has requested changes.", "2bb21fc326": "#{{pr}} still needs review approval.", "c23faf74df": "#{{pr}} must be updated.", - "f561e80968": "#{{pr}} is blocked." + "f561e80968": "#{{pr}} is blocked.", + "mergeThroughLabel_one": "Merge through #{{pr}} · {{count}} PR", + "mergeThroughLabel_other": "Merge through #{{pr}} · {{count}} PRs" } } } @@ -13998,14 +14092,15 @@ "sourceActionsUnavailable": "The transcript source is unavailable." }, "AiVaultScanProgressStrip": { - "agentChecked": "{{agent}}: {{settled}} of {{total}} history candidates checked", "fileCount_one": "{{value0}} file", "fileCount_other": "{{value0}} files", "databaseCount_one": "{{value0}} database", "databaseCount_other": "{{value0}} databases", "scanning": "Scanning {{value0}}", "checking": "Checking {{value0}}", - "scanned": "Scanned {{value0}}" + "scanned": "Scanned {{value0}}", + "agentCheckedCount_one": "{{agent}}: {{settled}} of {{total}} history candidate checked", + "agentCheckedCount_other": "{{agent}}: {{settled}} of {{total}} history candidates checked" }, "run": { "source": { @@ -14034,6 +14129,15 @@ } } } + }, + "fileExplorerMultiDrag": { + "moreItems_one": "+{{count}} more", + "moreItems_other": "+{{count}} more" + }, + "CreatePullRequest": { + "createInProgress": "Create PR in progress...", + "workspaceHostUnresolved": "The workspace host is unresolved. Refresh the workspace and retry.", + "branchDiscoveryFailed": "Branch discovery failed." } } }, @@ -15884,7 +15988,9 @@ "6978871a3d": "Open", "cce596969e": "Delete note", "cad3384faa": "Edit note", - "508ee678a5": "Open in browser" + "508ee678a5": "Open in browser", + "noteAuthorFallback": "Note", + "sentMeta": "sent" }, "DiffCommentPopover": { "2b3ce6d394": "Cancel", @@ -15897,6 +16003,9 @@ }, "useDiffCommentDecorator": { "995fa28b50": "This note" + }, + "diffCommentZoneCard": { + "noteAlreadySent": "Note already sent" } } }, @@ -17149,10 +17258,10 @@ "rightSidebar": { "FolderWorkspaceWorktreesPanel": { "unavailable": "Workspaces are only shown for folder workspaces.", - "countOne": "1 attached worktree", - "countMany": "{{value0}} attached worktrees", "emptyTitle": "No attached worktrees yet", - "emptyCopy": "Worktrees created from this workspace will show up here." + "emptyCopy": "Worktrees created from this workspace will show up here.", + "attachedCount_one": "{{count}} attached worktree", + "attachedCount_other": "{{count}} attached worktrees" }, "FolderWorkspacePrChecksPanel": { "unavailable": "PR checks are only shown for folder workspaces.", @@ -17164,12 +17273,12 @@ "hideDetails": "Hide {{value0}} PR check details", "reviewChecks": "Review checks", "allChecksPassing": "all checks passing", - "oneWorktree": "1 worktree", - "worktreeCount": "{{value0}} worktrees", - "oneFailing": "1 failing", - "failingCount": "{{value0}} failing", - "onePending": "1 pending", - "pendingCount": "{{value0}} pending" + "worktreeCountLabel_one": "{{count}} worktree", + "worktreeCountLabel_other": "{{count}} worktrees", + "failingCountLabel_one": "{{count}} failing", + "failingCountLabel_other": "{{count}} failing", + "pendingCountLabel_one": "{{count}} pending", + "pendingCountLabel_other": "{{count}} pending" }, "parentPrChecks": { "rowSummary": { @@ -19718,8 +19827,6 @@ }, "sessionSearch": { "panel": { - "resultsOne": "{{count}} result", - "resultsOther": "{{count}} results", "noMatches": "No matching sessions in the indexed history. Try another query or scope.", "loadMore": "Load more matches", "indexedHistory": "Indexed history", @@ -19741,11 +19848,23 @@ "retry": "Try again", "scopeUnknown": "This computer does not have this workspace or project. Switch the scope to All to search everything on it.", "sortSessionsAriaLabel": "Sort sessions: {{value0}}", - "sessionsOne": "{{count}} session", - "sessionsOther": "{{count}} sessions", - "sessionsOfLoaded": "{{value0}} of {{value1}} sessions", "showMoreSessions": "Show more sessions", - "loadingMoreSessions": "Loading more sessions…" + "loadingMoreSessions": "Loading more sessions…", + "resultCount_one": "{{count}} result", + "resultCount_other": "{{count}} results", + "sessionCount_one": "{{count}} session", + "sessionCount_other": "{{count}} sessions", + "sessionsShownOfLoaded_one": "{{shown}} of {{count}} session", + "sessionsShownOfLoaded_other": "{{shown}} of {{count}} sessions", + "hostSkipReason": { + "indexChanged": "index changed", + "searchOff": "search off", + "notReady": "not ready", + "unavailable": "unavailable", + "unreachable": "unreachable", + "scopeNotFound": "scope not found there", + "agentNotSupported": "agent not supported" + } } }, "sessionHistory": { @@ -20235,8 +20354,9 @@ "rateLimited": "GitHub rate limit hit. Try again in a few minutes.", "network": "Network error — check your connection.", "tooLargeUnknownCount": "This view has too many items to render in Orca. Narrow the view's filter on GitHub.", - "tooLarge": "This view has {{itemCount}} items — too large to render in Orca. Narrow the view's filter on GitHub.", - "schemaDriftDetail": "Could not read this project view: {{detail}}." + "schemaDriftDetail": "Could not read this project view: {{detail}}.", + "tooLargeCount_one": "This view has {{count}} item — too large to render in Orca. Narrow the view's filter on GitHub.", + "tooLargeCount_other": "This view has {{count}} items — too large to render in Orca. Narrow the view's filter on GitHub." }, "columns": { "type": "Type" diff --git a/src/renderer/src/i18n/locales/es.json b/src/renderer/src/i18n/locales/es.json index 7d53c7e5d94..c6ce9e330af 100644 --- a/src/renderer/src/i18n/locales/es.json +++ b/src/renderer/src/i18n/locales/es.json @@ -1513,9 +1513,6 @@ "3fdf777817": "Abrir en GitHub", "c43fe79ee0": "Copiar enlace de GitHub", "0caac1a18f": "Iniciar espacio de trabajo desde PR", - "8223320f8d": "actualizado", - "10ef1afb8e": "· actualizado", - "55962099bc": "abrió este issue", "0ab4664a8b": "Iniciar espacio de trabajo desde issue", "36182aa57f": "Iniciar nuevo espacio de trabajo", "fe6ff12dc2": "Más acciones del espacio de trabajo de issue", @@ -1588,8 +1585,6 @@ "52b20b56f7": "Descripción", "4d555d3796": "Editar descripción", "9df4e74bdf": "Guardar", - "0ae387d8ca": "por", - "228e2f59d3": "Resuelto", "a154ec5224": "Abrir comentario en GitHub", "bca8eb39ac": "Responder al comentario", "68cb993d61": "resuelto", @@ -1605,7 +1600,6 @@ "d43736d09c": "Controles de contexto de código", "bd7be7b1fd": "comentario L", "db61d76cd5": "Cargando contexto de código...", - "f2d02cdf8c": "archivos vistos", "1257d1435d": "Mostrar árbol de archivos", "a341343303": "Se agregó el comentario de revisión.", "d1fa2cf888": "No se puede comentar sin el SHA del head del PR.", @@ -1645,8 +1639,6 @@ "ec5c4b3ab2": "Reabrir PR", "21860b58d0": "Cerrar pull request", "5932578f51": "El merge requiere un repositorio local registrado", - "e2bf3e41a9": "comentario", - "28d0d3374f": "hilo", "080d071d48": "Responder a @{{value0}}", "86f809e2ce": "Responder en este hilo de revisión", "136542c9ba": ":L{{value0}}", @@ -1676,7 +1668,9 @@ "from": "de", "to": "a", "activity": "Actividad", - "noActivity": "Sin actividad aún." + "noActivity": "Sin actividad aún.", + "pullRequestReference": "PR #{{number}}", + "issueReference": "issue #{{number}}" }, "checkActionRequiredHint": "Requiere una acción manual en GitHub (por ejemplo, aprobar la ejecución) para desbloquear la fusión.", "e15a8b77ef": "No hay detalles en línea disponibles para esta verificación.", @@ -1690,8 +1684,15 @@ "09d67a0f9b": "No se pudo cerrar la PR", "88809e79db": "No se pudo reabrir la PR", "00f55cc17b": "El acceso al repositorio no está disponible para esta PR.", - "reactionCountSingular": "{{count}} {{reaction}} reacción", - "reactionCountPlural": "{{count}} {{reaction}} reacciones" + "reactionCount_one": "{{count}} reacción de {{reaction}}", + "reactionCount_other": "{{count}} reacciones de {{reaction}}", + "filesViewed_one": "{{viewed}} / {{count}} archivo visto", + "filesViewed_other": "{{viewed}} / {{count}} archivos vistos", + "updatedRelativeTime": "actualizado {{time}}", + "authorOpenedThisIssue": " abrió este issue", + "middotUpdatedRelativeTime": "· actualizado {{time}}", + "resolvedThreadBy": "Hilo resuelto de {{author}}", + "resolvedCommentBy": "Comentario resuelto de {{author}}" }, "GitLabItemDialog": { "65e784c1f1": "Reabrir", @@ -1747,14 +1748,15 @@ "f23ea85341": "resuelto", "6de8ce0cc6": "{{value0}} obligatorias", "22511537d2": "Aprobado", - "00f3bab87b": " de {{value0}} obligatorias", "3a051b8ade": "Work item", "32f8bef818": "Sin output de log.", "4168eb2c51": "Resolver", "commentTooLarge": "El comentario es demasiado grande para enviarlo de forma segura.", "gitlabActionFailed": "La acción de GitLab falló.", - "approvalsRemainingSingular": "{{count}} aprobación restante", - "approvalsRemainingPlural": "{{count}} aprobaciones restantes" + "approvalsRemainingOfRequired_one": "Falta {{count}} aprobación de las {{required}} requeridas", + "approvalsRemainingOfRequired_other": "Faltan {{count}} aprobaciones de las {{required}} requeridas", + "approvalsRemaining_one": "{{count}} aprobación restante", + "approvalsRemaining_other": "{{count}} aprobaciones restantes" }, "JiraIssueWorkspace": { "b0b92666c9": "Comentar", @@ -2078,9 +2080,6 @@ "778683ec84": "Descripción", "da9aaa8bcf": "Editar descripción", "4a337ac05f": "Guardar", - "169a93b29a": "actualizado", - "3c891789f6": "por", - "f4fe47c2bb": "Resuelto", "0ac19bb52e": "Abrir comentario en GitHub", "d6c6679de7": "Responder al comentario", "76b2a0ac5b": "resuelto", @@ -2088,7 +2087,6 @@ "6885c619e7": "No se puede responder sin una ruta al repositorio.", "d94810f652": "No se pudo actualizar la descripción.", "9b4190dc98": "Descripción actualizada.", - "89e80af1c7": "archivos vistos", "319cf2d54b": "Mostrar árbol de archivos", "eff839f438": "Se agregó el comentario de revisión.", "d8c3ba91c4": "No se puede comentar sin el SHA del head del PR.", @@ -2126,8 +2124,6 @@ "9d5425918e": "Reabrir PR", "96d013ed28": "Cerrar pull request", "eca289e593": "El merge requiere un repositorio local registrado", - "e01e34f5fa": "comentario", - "345b68254c": "hilo", "31a7b202f2": "Responder a @{{value0}}", "408e634fbb": "Responder en este hilo de revisión", "34b9f7c264": ":L{{value0}}", @@ -2153,7 +2149,19 @@ "diffLoadTimedOut": "Se agotó el tiempo de espera al cargar esta diferencia.", "6b1d5ee3e4": "No hay detalles en línea disponibles para esta verificación.", "e04c027d98": "No se pudieron cargar los detalles de la verificación.", - "5df7c41d2a": "Reintentar" + "5df7c41d2a": "Reintentar", + "filesViewed_one": "{{viewed}} / {{count}} archivo visto", + "filesViewed_other": "{{viewed}} / {{count}} archivos vistos", + "updatedRelativeTime": "actualizado {{time}}", + "resolvedThreadBy": "Hilo resuelto de {{author}}", + "resolvedCommentBy": "Comentario resuelto de {{author}}", + "mentionSource": { + "prAuthor": "Autor del PR", + "issueAuthor": "Autor del issue", + "commenter": "Comentarista", + "participant": "Participante", + "teamMember": "Miembro del equipo" + } }, "QuickOpen": { "1dbd3f59ff": "Mover", @@ -2666,7 +2674,8 @@ "8f6cb3772f": "Mergear este pull request automáticamente cuando se cumplan los requisitos", "def355ff38": "Se puede mergear", "e42c5bae67": "GitHub dice que este PR se puede mergear y los checks pasaron", - "cbf0113af6": "GitHub dice que este PR se puede mergear" + "cbf0113af6": "GitHub dice que este PR se puede mergear", + "autoMergeOn": "Fusión automática activada" } } }, @@ -2840,10 +2849,10 @@ "imageUrlTooLarge": "La URL de la imagen es demasiado grande." }, "IssueSourceSelector": { - "d6aeb2012b": "Mostrando issues de", "787c970baf": "Fuente de issues", "51d1608920": "Origen", - "30b2c9df91": "Upstream" + "30b2c9df91": "Upstream", + "showingIssuesFromRepo": "Mostrando issues de " }, "PRFilterDropdowns": { "979be3cf6b": "Asignado", @@ -2853,12 +2862,18 @@ "01f3f3d161": "Autor", "13b3ac0a84": "Estado", "79c54552f7": "Filtros", - "8a2ffbf9b3": "Quitar filtro {{value0}}" + "8a2ffbf9b3": "Quitar filtro {{value0}}", + "anyState": "Cualquiera", + "currentUser": "Usuario actual" }, "PRFilterPickers": { - "fdf387297c": "Limpiar (", "472c12ae03": "Limpiar", - "2d1f58eda6": "Usar" + "pressEnterToUseValue": "Pulsa Enter para usar el valor escrito.", + "useTypedValue": "Usar ", + "clearSelected": "Limpiar ({{count}})", + "loading": "Cargando…", + "searchTextTooLarge": "El texto de búsqueda es demasiado grande.", + "noMatches": "Sin coincidencias" }, "PRFilterSections": { "a00830d3f7": "Sin usuarios", @@ -2868,7 +2883,6 @@ "458ea3602b": "Sin autores", "b69fa4fa20": "Volver", "30ebb6ca44": "Limpiar todos los filtros", - "8177eda37e": "Filtrar", "ea3416d646": "Asignado", "b1d9fdea08": "Etiqueta", "24754c44ad": "Autor", @@ -2880,7 +2894,15 @@ "2b2f019091": "Cualquier estado", "0fd3249e2e": "Cerrado", "d78b60b5c2": "Abierto", - "bd162b7d5a": "Mergeado" + "bd162b7d5a": "Mergeado", + "draft": "Borrador", + "labelCount_one": "{{count}} etiqueta", + "labelCount_other": "{{count}} etiquetas", + "allStates": "Todos", + "filterPullRequests": "Filtrar pull requests", + "filterIssues": "Filtrar issues", + "filterOrTypeLogin": "Filtrar o escribir un nombre de usuario...", + "filterLabels": "Filtrar etiquetas..." }, "github": { "rate": { @@ -2891,15 +2913,14 @@ "d12d3d6f33": "Actualizar el presupuesto de la API de GitHub", "d5e5de9070": "Orca usa REST, Search y GraphQL a través de la CLI de GitHub.", "58c5f88216": "Presupuesto de la API de GitHub", - "6da1858354": "restantes · se reinicia en", - "f42790d150": "de", "01f7323e58": "API GraphQL", "1daf0f22a9": "GraphQL", "1f2f28a4de": "API de búsqueda", "c377a4f06a": "Buscar", "c392c749a6": "API REST", "bb227706a6": "REST", - "budget_scope_prefix": "Ámbito del presupuesto" + "budget_scope_prefix": "Ámbito del presupuesto", + "remainingOfLimitResetsIn": "Restante: {{remaining}} de {{limit}} · se reinicia en {{reset}}" } } } @@ -2907,7 +2928,29 @@ "CommentReactions": { "addReaction": "Añadir reacción", "removeNamedReaction": "Eliminar la reacción {{value0}}", - "addNamedReaction": "Añadir reacción {{value0}}" + "addNamedReaction": "Añadir reacción {{value0}}", + "reaction": { + "thumbsUp": "pulgar arriba", + "thumbsDown": "pulgar abajo", + "laugh": "risa", + "confused": "confusión", + "heart": "corazón", + "hooray": "hurra", + "rocket": "cohete", + "eyes": "ojos" + } + }, + "CommentCodeContext": { + "showSurroundingCodeBlock": "Mostrar el bloque de código circundante", + "showNearbyCodeContext": "Mostrar el contexto de código cercano" + }, + "prCheckPresentation": { + "successful": "Correcto", + "inProgress": "En curso" + }, + "IssueSourceIndicator": { + "issueFromRepo": "Issue de ", + "issuesFromRepo": "Issues de " } }, "linear": { @@ -12222,14 +12265,14 @@ } }, "BulkActionBar": { - "79a9f5f712": "Unstage (", - "ef5f5bd06e": "Stage (", - "60ed678138": "seleccionados" + "selectedCount_one": "{{count}} seleccionado", + "selectedCount_other": "{{count}} seleccionados", + "stageCount": "Agregar al stage ({{count}})", + "unstageCount": "Quitar del stage ({{count}})" }, "ChecksPanel": { "2ef90c9819": "Se inició un agente de IA para los checks con errores.", "a0181a8d76": "Se inició un agente de IA para los conflictos.", - "34464d00b9": "actualizado", "058039787c": "Cancelar", "2ab7fd4b6d": "Guardar", "dda5924a40": "Los checks requieren una rama de Git y contexto de revisión alojada", @@ -12275,7 +12318,8 @@ "430f1a62d4": "No se pudo resolver el hilo seleccionado en el host.", "updateReactionFailed": "No se pudo actualizar la reacción.", "gitlabMoreActions": "Más acciones de MR", - "gitlabLinkAnother": "Vincular otro MR" + "gitlabLinkAnother": "Vincular otro MR", + "reviewUpdatedAt": "{{review}} actualizado {{time}}" }, "CreateHostedReviewComposer": { "741ff8a0d2": "Hacer push y crear {{value0}}" @@ -12432,7 +12476,14 @@ "740aca88ab": "Error al escanear los puertos del espacio de trabajo.", "5be4f7f727": "Menú del puerto {{value0}}", "1004af16ab": "Copiar {{value0}}", - "153d3a8026": "Host del espacio de trabajo desconocido" + "153d3a8026": "Host del espacio de trabajo desconocido", + "unknownProcess": "Proceso desconocido", + "containerOrForwardedService": "Contenedor o servicio reenviado", + "unassigned": "Sin asignar", + "remotePortOutOfRange": "El puerto remoto debe estar en el rango 1–65535", + "localPortOutOfRange": "El puerto local debe estar en el rango 1–65535", + "localPortInUse": "El puerto {{port}} ya está en uso. Elige otro puerto local.", + "localPortRequiresPrivileges": "El puerto {{port}} requiere privilegios elevados. Usa un puerto local ≥ 1024." }, "Search": { "1abfb25a66": "Escriba para buscar en archivos", @@ -12489,7 +12540,6 @@ "476b77745b": "Cambiar referencia base", "ed34038d0d": "Actualizar comparación de ramas", "493f963029": "Cambiar ref base", - "3278b2767b": "por delante", "11b5dd8e41": "Comparando contra", "a9bf7c171a": "Falló el commit", "011f9713fc": "Commit bloqueado", @@ -12534,7 +12584,6 @@ "574d2f4413": "Borrar notas", "05bb8f4a48": "Cancelar", "48db37cca9": "Ver todo", - "78ce2d37ac": "Push al fork", "c05fe04839": "Hace push al fork en {{value0}} (no a origin)", "c35baf2f1e": "Filtrar archivos…", "2fe2a67580": "Más acciones de notas", @@ -12542,14 +12591,12 @@ "cc474e0b8c": "Notas", "e131cd7128": "Source Control sólo está disponible para repositorios Git", "c07b236287": "Seleccione un espacio de trabajo para ver los cambios", - "dc5a6465fc": "{{value0}} (por ejemplo, {{value1}}{{value2}})", "a5e5a11090": "Descartar todo falló: no se pueden eliminar los archivos antes de descartarlos", "8a5ba6a988": "No se pudo cargar la diferencia de commit", "fe5bd1a610": "Creando {{value0}}...", "812cb992ee": "Abrir en {{value0}}", "eef5446523": "{{value0}} #{{value1}} ya está abierto", "0453ca3a9a": "{{value0}} creado, pero Orca no pudo actualizarlo todavía.", - "f99560ab29": "No se pudo abortar {{value0}}", "eae7a1da5f": "No se pudieron borrar las notas.", "df5040e3c3": "Quitar del stage", "8cde1a2fb0": "Agregar al stage", @@ -12577,8 +12624,6 @@ "aaf1451654": "Crear borrador {{value0}}", "26511c22b4": "Creando...", "d7ae61269b": "Commits en la rama", - "branchFilesChangedVsBaseOne": "1 archivo cambiado respecto a {{ref}}", - "branchFilesChangedVsBaseOther": "{{count}} archivos cambiados respecto a {{ref}}", "48a003c1b1": "Cambios preparados", "d4ef4bafc5": "Cambios", "9339382454": "Quitar todo del stage", @@ -12588,8 +12633,6 @@ "72f2bea3f4": "Expandir notas", "d13edef890": "Contraer notas", "d6fb1df5fe": "{{value0}} ya está abierto", - "05838cfdeb": "{{value0}} conflicto", - "d206117f90": "{{value0}} conflicto ({{value1}})", "0b5b8c234c": "Abrir {{value0}} ({{value1}})", "d97ef8f221": "líneas {{value0}}-{{value1}}", "6f8bfa0eb9": "línea {{value0}}", @@ -12642,10 +12685,6 @@ "b3c8f1a902": "Filtrar archivos por nombre", "d4f8c2a901": "Limpiar y cerrar filtro", "e8a1c4b203": "vs", - "compareBaseCommitsAheadOne": "1 commit por delante de {{ref}}", - "compareBaseCommitsAheadOther": "{{count}} commits por delante de {{ref}}", - "compareBaseCommitsBehindOne": "1 commit por detrás de {{ref}}", - "compareBaseCommitsBehindOther": "{{count}} commits por detrás de {{ref}}", "4b4a7de138": "Abrir página de revisión en el navegador", "createPrIntentCommitBlockedSummary": "Commit bloqueado: {{value0}} Corrige el issue y reintenta crear PR.", "pushRecovery": { @@ -12676,17 +12715,50 @@ "diffCommentNotesCopyFailed": "No se pudieron copiar notas", "conflictCount_one": "{{count}} conflicto", "conflictCount_other": "{{count}} conflictos", - "discardFailedSingular": "No se pudo descartar {{count}} archivo", - "discardFailedPlural": "No se pudieron descartar {{count}} archivos", - "noteCountSingular": "{{count}} nota", - "noteCountPlural": "{{count}} notas" + "discardFailedSampleMore_one": "{{paths}}, +{{count}} más", + "discardFailedSampleMore_other": "{{paths}}, +{{count}} más", + "discardFailed_one": "No se pudo descartar {{count}} archivo", + "discardFailed_other": "No se pudieron descartar {{count}} archivos", + "discardFailedWithSample": "{{error}} (por ejemplo, {{paths}})", + "compareBaseCommitsAhead_one": "{{count}} commit por delante de {{ref}}", + "compareBaseCommitsAhead_other": "{{count}} commits por delante de {{ref}}", + "compareBaseCommitsBehind_one": "{{count}} commit por detrás de {{ref}}", + "compareBaseCommitsBehind_other": "{{count}} commits por detrás de {{ref}}", + "branchFilesChangedVsBase_one": "{{count}} archivo cambiado respecto a {{ref}}", + "branchFilesChangedVsBase_other": "{{count}} archivos cambiados respecto a {{ref}}", + "noteCount_one": "{{count}} nota", + "noteCount_other": "{{count}} notas", + "comparingAgainstRef": "Comparando con {{ref}}", + "commitsAheadShort_one": "{{count}} por delante", + "commitsAheadShort_other": "{{count}} por delante", + "unresolvedConflictOfKind": "Conflicto sin resolver ({{kind}})", + "unresolvedConflict": "Conflicto sin resolver", + "locallyResolvedConflictOfKind": "Conflicto resuelto localmente ({{kind}})", + "locallyResolvedConflict": "Conflicto resuelto localmente", + "pushesToForkTarget": "Push al fork {{target}}", + "abortRebaseConfirmTitle": "¿Abortar rebase?", + "abortMergeConfirmTitle": "¿Cancelar fusión?", + "abortRebaseConfirmDescription": "Esto cancela el rebase en curso y puede descartar las resoluciones de conflictos realizadas durante este rebase.", + "abortMergeConfirmDescription": "Esto cancela la fusión en curso y puede descartar las resoluciones de conflictos realizadas durante esta fusión.", + "abortRebaseFailedFallback": "No se pudo abortar el rebase", + "abortMergeFailedFallback": "No se pudo cancelar la fusión", + "abortRebaseFailed": "No se pudo abortar el rebase", + "abortMergeFailed": "No se pudo cancelar la fusión", + "clearNotesFromWorkspace_one": "¿Borrar {{count}} nota de este espacio de trabajo?", + "clearNotesFromWorkspace_other": "¿Borrar {{count}} notas de este espacio de trabajo?", + "clearNotesFromFile_one": "¿Borrar {{count}} nota de {{path}}?", + "clearNotesFromFile_other": "¿Borrar {{count}} notas de {{path}}?" }, "SourceControlAgentActionDialog": { "8e856842d1": "No se pudo iniciar el agente seleccionado.", "c075d00de1": "No se puede resolver la conexión del espacio de trabajo.", "38b899cc02": "Todos los repositorios", "808cfe0a3b": "Este repositorio", - "994cddd1f7": "No guardar" + "994cddd1f7": "No guardar", + "agentNotEnabledOrDetected": "{{agent}} no está habilitado o no se ha detectado en el host de este espacio de trabajo.", + "workspaceConnectionUnresolved": "No se pudo determinar la conexión del espacio de trabajo.", + "noEnabledAgentsDetected": "No se han detectado agentes habilitados en el host de este espacio de trabajo.", + "startAgent": "Iniciar agente" }, "SourceControlAgentActionDialogForm": { "013c9ac04a": "Guardar para", @@ -12751,9 +12823,6 @@ "cbcc4ab3db": "Mostrando los primeros 100 checks", "0dca6bfab5": "Abrir detalles del check", "991f50c7e4": "No hay checks configurados", - "9ad98f2a17": "pendiente", - "5e52f4ef7f": "fallando", - "02ca4f9074": "correcto", "e15a8b77ef": "No hay detalles en línea disponibles para este check.", "679bf2093c": "Copiar extracto del log", "d713f500b2": "Extracto del log", @@ -12770,7 +12839,6 @@ "1f2b980522": "Cargando detalles del check…", "0c96cd25e5": "Resolver", "3a71a6ed0b": "Resuelve los conflictos antes de que los checks y el merge puedan completarse.", - "60186d8498": "Los conflictos bloquean esto", "c16762ac8c": "Los checks y comentarios a continuación muestran el contexto obtenido actualmente.", "9d0e7bcefc": "Sin acciones de PR de bloqueo", "5856874b59": "Orca actualizará los checks mientras este panel permanezca abierto.", @@ -12795,7 +12863,6 @@ "084c516efb": "Copiar comandos", "5dc3af25c0": "Seleccionar comentario", "d7a2f9c401": "Enviar {{value0}} comentarios sin resolver", - "d91f2a6c39": "Enviar {{value0}} comentarios en cola a la IA", "a6de3e5a20": "Limpiar comentarios en cola", "f8a2c91d04": "Poner en cola para el agente", "b4e8a1c902": "En cola", @@ -12811,7 +12878,6 @@ "f588b46a6c": "Marcar autor como bot", "e45324fbed": "No se pudieron cargar los detalles del check.", "dcb3c546fe": "Reintentar", - "checksUnresolvedChip": "irresoluto", "checksUnresolvedStripHint": "Estas comprobaciones finalizaron sin un veredicto de aprobación o desaprobación.", "commitsBehind_one": "{{count}} commit por detrás", "commitsBehind_other": "{{count}} commits por detrás", @@ -12821,7 +12887,28 @@ "pendingChecks_one": "{{count}} comprobación pendiente", "pendingChecks_other": "{{count}} comprobaciones pendientes", "unresolvedChecks_one": "{{count}} comprobación sin resolver", - "unresolvedChecks_other": "{{count}} comprobaciones sin resolver" + "unresolvedChecks_other": "{{count}} comprobaciones sin resolver", + "passingCount_one": "{{count}} correcto", + "passingCount_other": "{{count}} correctos", + "failingCount_one": "{{count}} fallando", + "failingCount_other": "{{count}} fallando", + "pendingCount_one": "{{count}} pendiente", + "pendingCount_other": "{{count}} pendientes", + "unresolvedCount_one": "{{count}} sin resolver", + "unresolvedCount_other": "{{count}} sin resolver", + "sendQueuedCommentsToAi_one": "Enviar {{count}} comentario en cola a la IA", + "sendQueuedCommentsToAi_other": "Enviar {{count}} comentarios en cola a la IA", + "conflictsBlockThisMr": "Los conflictos bloquean este MR", + "conflictsBlockThisPr": "Los conflictos bloquean este PR", + "copyComment": "Copiar comentario", + "sendComment": "Enviar", + "commentingRequiresGitHubPrTarget": "Para comentar se necesita un repositorio de destino para el PR de GitHub.", + "selectWorkspaceBeforeAiAction": "Selecciona un espacio de trabajo antes de iniciar una acción de IA.", + "operation": { + "rebase": "Rebase", + "merge": "Fusión", + "cherryPick": "Cherry-pick" + } }, "empty": { "state": { @@ -13228,8 +13315,8 @@ }, "compare": { "summary": { - "commitsAheadSingular": "{{count}} commit por delante de {{ref}}", - "commitsAheadPlural": "{{count}} commits por delante de {{ref}}" + "commitsAhead_one": "{{count}} commit por delante de {{ref}}", + "commitsAhead_other": "{{count}} commits por delante de {{ref}}" } }, "conflict": { @@ -13314,8 +13401,11 @@ "folderLinksOutsideProject": "Esta carpeta enlaza fuera del proyecto, así que no se puede abrir aquí." }, "useFileExplorerImport": { - "25919b2050": "Se omitió {{value0}} {{value1}}.", - "132fd0e1e9": "No se pudo importar {{value0}} {{value1}}." + "importFailedCount_one": "No se pudo importar {{count}} archivo.", + "importFailedCount_other": "No se pudieron importar {{count}} archivos.", + "importSkippedCount_one": "Se omitió {{count}} archivo.", + "importSkippedCount_other": "Se omitieron {{count}} archivos.", + "importFailed": "No se pudieron importar los archivos." }, "useFileExplorerKeys": { "8adb953095": "Operación fallida" @@ -13352,7 +13442,6 @@ "refreshSessionHistory": "Actualizar historial de sesiones", "searchSessions": "Buscar sesiones", "clearSearch": "Limpiar búsqueda", - "transcriptsSkipped": "{{count}} transcripciones omitidas", "noAgentSessionsFound": "No se encontraron sesiones de agentes", "noSessionsMatchFilters": "Ninguna sesión coincide con los filtros actuales", "noAgentsSelected": "Ningún agente seleccionado", @@ -13372,7 +13461,9 @@ "resumeInChatFailed": "No se pudo reanudar esta sesión en un chat nuevo.", "resumeInNewCliUnavailable": "Esta sesión no se puede abrir en la CLI.", "resumeInNewCliHostTooOld": "Actualiza Orca en el host que ejecuta este chat para reanudarlo en una nueva CLI.", - "folderWorkspaceUnavailable": "El espacio de trabajo de carpeta ya no está disponible." + "folderWorkspaceUnavailable": "El espacio de trabajo de carpeta ya no está disponible.", + "transcriptsSkippedCount_one": "{{count}} transcripción omitida", + "transcriptsSkippedCount_other": "{{count}} transcripciones omitidas" }, "AiVaultPanelControls": { "scanningSessions": "Buscando sesiones", @@ -13418,11 +13509,8 @@ "sessionRole": "Sesión", "worktree": "Worktree", "conversationNotSaved": "Conversación no guardada", - "recoverableEmptyDetail": "Esta sesión no tiene conversación guardada, pero quedan {{value0}} elemento(s) recuperable(s).", "recoverableEmptyOpenLogHint": "Abre el registro para recuperarlos.", "emptyConversationDetail": "Esta sesión no tiene conversación guardada y no se puede reanudar.", - "queuedMessages": "{{value0}} mensaje(s) en cola", - "subagentTranscripts": "{{value0}} transcripción(es) de subagente", "prompt": "Prompt", "firstPrompt": "Primer prompt", "recentPrompt": "Prompt reciente", @@ -13436,7 +13524,13 @@ "noFirstPromptAvailable": "No hay primer prompt disponible", "loadingFirstPrompt": "Cargando primer prompt…", "folder": "Carpeta", - "resumeInFolder": "Reanudar en carpeta" + "resumeInFolder": "Reanudar en carpeta", + "recoverableEmptyDetailCount_one": "Esta sesión no tiene conversación guardada, pero queda {{count}} elemento recuperable.", + "recoverableEmptyDetailCount_other": "Esta sesión no tiene conversación guardada, pero quedan {{count}} elementos recuperables.", + "queuedMessageCount_one": "{{count}} mensaje en cola", + "queuedMessageCount_other": "{{count}} mensajes en cola", + "subagentTranscriptCount_one": "{{count}} transcripción de subagente", + "subagentTranscriptCount_other": "{{count}} transcripciones de subagentes" }, "AiVaultSessionRow": { "resumeInNewTab": "Reanudar en nueva pestaña", @@ -13570,26 +13664,26 @@ "confirmation": { "84f6f5b9eb": "Incluye: {{numbers}}.", "541984b2eb": "¿Cola hasta #{{pr}}?", - "4809f55cdb": "{{included}}GitHub agregará la solicitud de extracción {{count}} a la cola de combinación. La cola elige el método de combinación y puede fusionarlos en grupos separados.", - "be8f2621be": "{{included}}GitHub agregará {{count}} solicitudes de extracción a la cola de combinación juntas. La cola elige el método de combinación y puede fusionarlos en grupos separados.", - "92ca033e72": "Poner en cola {{count}} PR", - "478a527b15": "Poner en cola {{count}} PR", "1feef35ca4": "¿Fusionar a través de #{{pr}}?", - "c3e036c99f": "{{included}}GitHub fusionará {{count}} PR de forma atómica usando {{method}}. Si no puede fusionarla, no se fusionará nada.", - "369aba4b32": "{{included}}GitHub fusionará {{count}} PR de forma atómica usando {{method}}. Si alguna no se puede fusionar, no se fusionará ninguna.", - "493c78f521": "Fusionar {{count}} PR", - "eb7051d268": "Fusionar {{count}} PR" + "queueDescription_one": "{{included}}GitHub agregará {{count}} pull request a la cola de fusión. La cola elige el método de fusión y puede fusionar los pull requests en grupos separados.", + "queueDescription_other": "{{included}}GitHub agregará {{count}} pull requests juntos a la cola de fusión. La cola elige el método de fusión y puede fusionarlos en grupos separados.", + "queueConfirm_one": "Poner en cola {{count}} PR", + "queueConfirm_other": "Poner en cola {{count}} PR", + "mergeDescription_one": "{{included}}GitHub fusionará {{count}} pull request de forma atómica usando {{method}}. Si no se puede fusionar, no se fusionará nada.", + "mergeDescription_other": "{{included}}GitHub fusionará {{count}} pull requests de forma atómica usando {{method}}. Si alguno no se puede fusionar, no se fusionará ninguno.", + "mergeConfirm_one": "Fusionar {{count}} PR", + "mergeConfirm_other": "Fusionar {{count}} PR" }, "merge": { - "55ae29b907": "Fusionar a través de #{{pr}} · {{count}} PR", - "b8446f6ec2": "Fusionar a través de #{{pr}} · {{count}} PR", "189d0ec614": "#{{pr}} sigue siendo un borrador.", "640fb50d9c": "#{{pr}} está cerrada.", "46ffcbda75": "#{{pr}} tiene conflictos de fusión.", "6dabefd63e": "#{{pr}} tiene cambios solicitados.", "2bb21fc326": "#{{pr}} aún necesita aprobación de revisión.", "c23faf74df": "#{{pr}} debe actualizarse.", - "f561e80968": "#{{pr}} está bloqueada." + "f561e80968": "#{{pr}} está bloqueada.", + "mergeThroughLabel_one": "Fusionar hasta #{{pr}} incluido · {{count}} PR", + "mergeThroughLabel_other": "Fusionar hasta #{{pr}} incluido · {{count}} PR" } } } @@ -13646,14 +13740,15 @@ "sourceActionsUnavailable": "La fuente de la transcripción no está disponible." }, "AiVaultScanProgressStrip": { - "agentChecked": "{{agent}}: {{settled}} de {{total}} candidatos del historial comprobados", "fileCount_one": "{{value0}} archivo", "fileCount_other": "{{value0}} archivos", "databaseCount_one": "{{value0}} base de datos", "databaseCount_other": "{{value0}} bases de datos", "scanning": "Analizando {{value0}}", "checking": "Comprobando {{value0}}", - "scanned": "Analizados {{value0}}" + "scanned": "Analizados {{value0}}", + "agentCheckedCount_one": "{{agent}}: {{settled}} de {{total}} candidato del historial comprobado", + "agentCheckedCount_other": "{{agent}}: {{settled}} de {{total}} candidatos del historial comprobados" }, "ssh": { "unrestored": { @@ -13665,6 +13760,15 @@ } } } + }, + "fileExplorerMultiDrag": { + "moreItems_one": "+{{count}} más", + "moreItems_other": "+{{count}} más" + }, + "CreatePullRequest": { + "createInProgress": "Creación del PR en curso...", + "workspaceHostUnresolved": "No se ha podido resolver el host del espacio de trabajo. Actualiza el espacio de trabajo e inténtalo de nuevo.", + "branchDiscoveryFailed": "No se pudieron detectar las ramas." } } }, @@ -15515,7 +15619,9 @@ "6978871a3d": "Abierto", "cce596969e": "Eliminar nota", "cad3384faa": "Editar nota", - "508ee678a5": "Abrir en el navegador" + "508ee678a5": "Abrir en el navegador", + "noteAuthorFallback": "Nota", + "sentMeta": "enviado" }, "DiffCommentPopover": { "2b3ce6d394": "Cancelar", @@ -15528,6 +15634,9 @@ }, "useDiffCommentDecorator": { "995fa28b50": "esta nota" + }, + "diffCommentZoneCard": { + "noteAlreadySent": "Nota ya enviada" } } }, @@ -16780,10 +16889,10 @@ "rightSidebar": { "FolderWorkspaceWorktreesPanel": { "unavailable": "Los workspaces solo se muestran para workspaces de carpeta.", - "countOne": "1 worktree adjunto", - "countMany": "{{value0}} worktrees adjuntos", "emptyTitle": "Aún no hay worktrees adjuntos", - "emptyCopy": "Los worktrees creados desde este workspace aparecerán aquí." + "emptyCopy": "Los worktrees creados desde este workspace aparecerán aquí.", + "attachedCount_one": "{{count}} worktree adjunto", + "attachedCount_other": "{{count}} worktrees adjuntos" }, "FolderWorkspacePrChecksPanel": { "unavailable": "Las comprobaciones de PR solo se muestran en espacios de trabajo de carpeta.", @@ -16795,12 +16904,12 @@ "hideDetails": "Ocultar detalles de checks de PR de {{value0}}", "reviewChecks": "Checks de revisión", "allChecksPassing": "todos los checks correctos", - "oneWorktree": "1 worktree", - "worktreeCount": "{{value0}} worktrees", - "oneFailing": "1 fallando", - "failingCount": "{{value0}} fallando", - "onePending": "1 pendiente", - "pendingCount": "{{value0}} pendientes" + "worktreeCountLabel_one": "{{count}} worktree", + "worktreeCountLabel_other": "{{count}} worktrees", + "failingCountLabel_one": "{{count}} fallando", + "failingCountLabel_other": "{{count}} fallando", + "pendingCountLabel_one": "{{count}} pendiente", + "pendingCountLabel_other": "{{count}} pendientes" }, "parentPrChecks": { "rowSummary": { @@ -19737,8 +19846,6 @@ "sessionSearch": { "panel": { "retry": "Probar de nuevo", - "resultsOne": "{{count}} resultado", - "resultsOther": "{{count}} resultados", "noMatches": "No hay sesiones coincidentes en el historial indexado. Prueba otra consulta o ámbito.", "loadMore": "Cargar más coincidencias", "indexedHistory": "Historial indexado", @@ -19759,11 +19866,23 @@ "enable": "Activar", "scopeUnknown": "Esta computadora no tiene este espacio de trabajo ni este proyecto. Cambia el ámbito a Todo para buscar en todo lo que contiene.", "sortSessionsAriaLabel": "Ordenar sesiones: {{value0}}", - "sessionsOne": "{{count}} sesión", - "sessionsOther": "{{count}} sesiones", - "sessionsOfLoaded": "{{value0}} de {{value1}} sesiones", "showMoreSessions": "Mostrar más sesiones", - "loadingMoreSessions": "Cargando más sesiones…" + "loadingMoreSessions": "Cargando más sesiones…", + "resultCount_one": "{{count}} resultado", + "resultCount_other": "{{count}} resultados", + "sessionCount_one": "{{count}} sesión", + "sessionCount_other": "{{count}} sesiones", + "sessionsShownOfLoaded_one": "{{shown}} de {{count}} sesión", + "sessionsShownOfLoaded_other": "{{shown}} de {{count}} sesiones", + "hostSkipReason": { + "indexChanged": "índice modificado", + "searchOff": "búsqueda desactivada", + "notReady": "no preparado", + "unavailable": "no disponible", + "unreachable": "inaccesible", + "scopeNotFound": "ámbito de búsqueda no encontrado allí", + "agentNotSupported": "agente no compatible" + } } }, "sessionHistory": { @@ -20231,8 +20350,9 @@ "rateLimited": "Se alcanzó el límite de velocidad de GitHub. Inténtalo de nuevo en unos minutos.", "network": "Error de red — comprueba tu conexión.", "tooLargeUnknownCount": "Esta vista tiene demasiados elementos para mostrarla en Orca. Restringe el filtro de la vista en GitHub.", - "tooLarge": "Esta vista tiene {{itemCount}} elementos, demasiados para mostrarla en Orca. Restringe el filtro de la vista en GitHub.", - "schemaDriftDetail": "No se pudo leer esta vista del proyecto: {{detail}}." + "schemaDriftDetail": "No se pudo leer esta vista del proyecto: {{detail}}.", + "tooLargeCount_one": "Esta vista tiene {{count}} elemento — es demasiado grande para mostrarla en Orca. Restringe el filtro de la vista en GitHub.", + "tooLargeCount_other": "Esta vista tiene {{count}} elementos — es demasiado grande para mostrarla en Orca. Restringe el filtro de la vista en GitHub." }, "columns": { "type": "Tipo" diff --git a/src/renderer/src/i18n/locales/fr.json b/src/renderer/src/i18n/locales/fr.json index b477f75c594..ad45709f80c 100644 --- a/src/renderer/src/i18n/locales/fr.json +++ b/src/renderer/src/i18n/locales/fr.json @@ -1699,9 +1699,6 @@ "3fdf777817": "Ouvrir sur GitHub", "c43fe79ee0": "Copier le lien GitHub", "0caac1a18f": "Démarrer un espace de travail à partir de la PR", - "8223320f8d": "mis à jour", - "10ef1afb8e": "· mis à jour", - "55962099bc": "a ouvert cette issue", "0ab4664a8b": "Démarrer un espace de travail à partir de l'issue", "36182aa57f": "Démarrer un nouvel espace de travail", "fe6ff12dc2": "Plus d'actions d'espace de travail pour l'issue", @@ -1774,8 +1771,6 @@ "52b20b56f7": "Description", "4d555d3796": "Modifier la description", "9df4e74bdf": "Enregistrer", - "0ae387d8ca": "par", - "228e2f59d3": "Résolu", "a154ec5224": "Ouvrir le commentaire sur GitHub", "bca8eb39ac": "Répondre au commentaire", "68cb993d61": "résolu", @@ -1791,7 +1786,6 @@ "d43736d09c": "Contrôles du contexte de code", "bd7be7b1fd": "commentaire L", "db61d76cd5": "Chargement du contexte de code…", - "f2d02cdf8c": "fichiers consultés", "1257d1435d": "Afficher l'arborescence des fichiers", "a341343303": "Commentaire de review ajouté.", "d1fa2cf888": "Impossible de commenter sans le SHA head de la PR.", @@ -1831,8 +1825,6 @@ "ec5c4b3ab2": "Rouvrir la PR", "21860b58d0": "Fermer la pull request", "5932578f51": "Le merge exige un dépôt local enregistré", - "e2bf3e41a9": "comment", - "28d0d3374f": "thread", "080d071d48": "Répondre à @{{value0}}", "86f809e2ce": "Répondre dans ce fil de review", "136542c9ba": ":L{{value0}}", @@ -1862,7 +1854,9 @@ "from": "de", "to": "vers", "activity": "Activité", - "noActivity": "Aucune activité pour l'instant." + "noActivity": "Aucune activité pour l'instant.", + "pullRequestReference": "PR #{{number}}", + "issueReference": "issue #{{number}}" }, "checkActionRequiredHint": "Nécessite une action manuelle sur GitHub (par exemple, approuver l'exécution) pour débloquer le merge.", "e15a8b77ef": "Aucun détail en ligne n'est disponible pour cette vérification.", @@ -1876,8 +1870,15 @@ "09d67a0f9b": "Échec de la fermeture de la pull request", "88809e79db": "Échec de la réouverture de la pull request", "00f55cc17b": "L'accès au dépôt est indisponible pour cette pull request.", - "reactionCountSingular": "{{count}} {{reaction}} réaction", - "reactionCountPlural": "{{count}} {{reaction}} réactions" + "reactionCount_one": "{{count}} réaction « {{reaction}} »", + "reactionCount_other": "{{count}} réactions « {{reaction}} »", + "filesViewed_one": "{{viewed}} / {{count}} fichier consulté", + "filesViewed_other": "{{viewed}} / {{count}} fichiers consultés", + "updatedRelativeTime": "mis à jour {{time}}", + "authorOpenedThisIssue": " a ouvert cette issue", + "middotUpdatedRelativeTime": "· mis à jour {{time}}", + "resolvedThreadBy": "Discussion résolue de {{author}}", + "resolvedCommentBy": "Commentaire résolu de {{author}}" }, "GitLabItemDialog": { "65e784c1f1": "Rouvrir", @@ -1933,14 +1934,15 @@ "f23ea85341": "résolu", "6de8ce0cc6": "{{value0}} requis", "22511537d2": "Approuvé", - "00f3bab87b": " sur {{value0}} requis", "3a051b8ade": "Élément de travail", "32f8bef818": "Aucune sortie de log.", "4168eb2c51": "Résoudre", "commentTooLarge": "Le commentaire est trop volumineux pour être envoyé sans risque.", "gitlabActionFailed": "L'action GitLab a échoué.", - "approvalsRemainingSingular": "Il reste {{count}} approbation", - "approvalsRemainingPlural": "Il reste {{count}} approbations" + "approvalsRemainingOfRequired_one": "Il reste {{count}} approbation sur les {{required}} requises", + "approvalsRemainingOfRequired_other": "Il reste {{count}} approbations sur les {{required}} requises", + "approvalsRemaining_one": "Il reste {{count}} approbation", + "approvalsRemaining_other": "Il reste {{count}} approbations" }, "JiraIssueWorkspace": { "b0b92666c9": "Commentaire", @@ -2268,9 +2270,6 @@ "778683ec84": "Description", "da9aaa8bcf": "Modifier la description", "4a337ac05f": "Enregistrer", - "169a93b29a": "mis à jour", - "3c891789f6": "par", - "f4fe47c2bb": "Résolu", "0ac19bb52e": "Ouvrir le commentaire sur GitHub", "d6c6679de7": "Répondre au commentaire", "76b2a0ac5b": "résolu", @@ -2278,7 +2277,6 @@ "6885c619e7": "Impossible de répondre sans chemin de dépôt.", "d94810f652": "Échec de la mise à jour de la description.", "9b4190dc98": "Description mise à jour.", - "89e80af1c7": "fichiers consultés", "319cf2d54b": "Afficher l'arborescence des fichiers", "eff839f438": "Commentaire de review ajouté.", "d8c3ba91c4": "Impossible de commenter sans le SHA head de la PR.", @@ -2316,8 +2314,6 @@ "9d5425918e": "Rouvrir la PR", "96d013ed28": "Fermer la pull request", "eca289e593": "Le merge exige un dépôt local enregistré", - "e01e34f5fa": "comment", - "345b68254c": "thread", "31a7b202f2": "Répondre à @{{value0}}", "408e634fbb": "Répondre dans ce fil de review", "34b9f7c264": ":L{{value0}}", @@ -2339,7 +2335,19 @@ "4b8ae7303f": "Échec du chargement du diff.", "closePullRequestFailed": "Échec de la fermeture de la pull request", "reopenPullRequestFailed": "Échec de la réouverture de la pull request", - "diffLoadTimedOut": "Délai dépassé lors du chargement de ce diff." + "diffLoadTimedOut": "Délai dépassé lors du chargement de ce diff.", + "filesViewed_one": "{{viewed}} / {{count}} fichier consulté", + "filesViewed_other": "{{viewed}} / {{count}} fichiers consultés", + "updatedRelativeTime": "mis à jour {{time}}", + "resolvedThreadBy": "Discussion résolue de {{author}}", + "resolvedCommentBy": "Commentaire résolu de {{author}}", + "mentionSource": { + "prAuthor": "Auteur de la PR", + "issueAuthor": "Auteur de l'issue", + "commenter": "Auteur de commentaire", + "participant": "Participant", + "teamMember": "Membre de l'équipe" + } }, "QuickOpen": { "1dbd3f59ff": "Déplacer", @@ -2852,7 +2860,8 @@ "8f6cb3772f": "Merger automatiquement cette pull request une fois les conditions remplies", "def355ff38": "Peut merger", "e42c5bae67": "GitHub indique que cette PR peut merger et que les checks ont réussi", - "cbf0113af6": "GitHub indique que cette PR peut merger" + "cbf0113af6": "GitHub indique que cette PR peut merger", + "autoMergeOn": "Fusion automatique activée" } } }, @@ -3026,10 +3035,10 @@ "imageUrlTooLarge": "L'URL de l'image est trop volumineuse." }, "IssueSourceSelector": { - "d6aeb2012b": "Affichage des issues de", "787c970baf": "Source des issues", "51d1608920": "Origine", - "30b2c9df91": "Upstream" + "30b2c9df91": "Upstream", + "showingIssuesFromRepo": "Affichage des issues de " }, "PRFilterDropdowns": { "979be3cf6b": "Assigné", @@ -3039,12 +3048,18 @@ "01f3f3d161": "Auteur", "13b3ac0a84": "Statut", "79c54552f7": "Filtres", - "8a2ffbf9b3": "Retirer le filtre {{value0}}" + "8a2ffbf9b3": "Retirer le filtre {{value0}}", + "anyState": "Tous", + "currentUser": "Utilisateur actuel" }, "PRFilterPickers": { - "fdf387297c": "Effacer (", "472c12ae03": "Effacer", - "2d1f58eda6": "Utiliser" + "pressEnterToUseValue": "Appuyez sur Enter pour utiliser la valeur saisie.", + "useTypedValue": "Utiliser ", + "clearSelected": "Effacer ({{count}})", + "loading": "Chargement…", + "searchTextTooLarge": "Le texte recherché est trop long.", + "noMatches": "Aucun résultat" }, "PRFilterSections": { "a00830d3f7": "Aucun utilisateur", @@ -3054,7 +3069,6 @@ "458ea3602b": "Aucun auteur", "b69fa4fa20": "Retour", "30ebb6ca44": "Effacer tous les filtres", - "8177eda37e": "Filtre", "ea3416d646": "Assigné", "b1d9fdea08": "Label", "24754c44ad": "Auteur", @@ -3066,7 +3080,15 @@ "2b2f019091": "Tout état", "0fd3249e2e": "Fermé", "d78b60b5c2": "Ouvert", - "bd162b7d5a": "Fusionnés" + "bd162b7d5a": "Fusionnés", + "draft": "Brouillon", + "labelCount_one": "{{count}} étiquette", + "labelCount_other": "{{count}} étiquettes", + "allStates": "Tous", + "filterPullRequests": "Filtrer les pull requests", + "filterIssues": "Filtrer les issues", + "filterOrTypeLogin": "Filtrer ou saisir un identifiant...", + "filterLabels": "Filtrer les étiquettes..." }, "github": { "rate": { @@ -3077,15 +3099,14 @@ "d12d3d6f33": "Actualiser le quota d'API GitHub", "d5e5de9070": "Orca utilise REST, Search et GraphQL via GitHub CLI.", "58c5f88216": "Quota d'API GitHub", - "6da1858354": "restant · réinitialisation dans", - "f42790d150": "sur", "01f7323e58": "API GraphQL", "1daf0f22a9": "GraphQL", "1f2f28a4de": "API Search", "c377a4f06a": "Recherche", "c392c749a6": "API REST", "bb227706a6": "REST", - "budget_scope_prefix": "Périmètre du quota" + "budget_scope_prefix": "Périmètre du quota", + "remainingOfLimitResetsIn": "Quota restant : {{remaining}} sur {{limit}} · réinitialisation dans {{reset}}" } } } @@ -3093,7 +3114,29 @@ "CommentReactions": { "addReaction": "Ajouter une réaction", "removeNamedReaction": "Retirer la réaction {{value0}}", - "addNamedReaction": "Ajouter la réaction {{value0}}" + "addNamedReaction": "Ajouter la réaction {{value0}}", + "reaction": { + "thumbsUp": "pouce levé", + "thumbsDown": "pouce baissé", + "laugh": "rire", + "confused": "confusion", + "heart": "cœur", + "hooray": "hourra", + "rocket": "fusée", + "eyes": "yeux" + } + }, + "CommentCodeContext": { + "showSurroundingCodeBlock": "Afficher le bloc de code environnant", + "showNearbyCodeContext": "Afficher le contexte de code voisin" + }, + "prCheckPresentation": { + "successful": "Réussi", + "inProgress": "En cours" + }, + "IssueSourceIndicator": { + "issueFromRepo": "Issue de ", + "issuesFromRepo": "Issues de " } }, "linear": { @@ -12408,14 +12451,14 @@ } }, "BulkActionBar": { - "79a9f5f712": "Retirer du staging (", - "ef5f5bd06e": "Ajouter au staging (", - "60ed678138": "sélectionnés" + "selectedCount_one": "{{count}} sélectionné", + "selectedCount_other": "{{count}} sélectionnés", + "stageCount": "Ajouter au staging ({{count}})", + "unstageCount": "Retirer du staging ({{count}})" }, "ChecksPanel": { "2ef90c9819": "Un agent IA a été démarré pour les vérifications cassées.", "a0181a8d76": "Un agent IA a été lancé pour les conflits.", - "34464d00b9": "mis à jour", "058039787c": "Annuler", "2ab7fd4b6d": "Enregistrer", "dda5924a40": "Les checks exigent une branche Git et un contexte de revue hébergée", @@ -12461,7 +12504,8 @@ "430f1a62d4": "Impossible de résoudre le fil sélectionné côté hôte.", "updateReactionFailed": "Échec de la mise à jour de la réaction.", "gitlabMoreActions": "Plus d'actions MR", - "gitlabLinkAnother": "Associer un autre MR" + "gitlabLinkAnother": "Associer un autre MR", + "reviewUpdatedAt": "{{review}} : mise à jour {{time}}" }, "CreateHostedReviewComposer": { "741ff8a0d2": "Pusher & créer {{value0}}" @@ -12618,7 +12662,14 @@ "740aca88ab": "Échec du scan des ports de l'espace de travail.", "5be4f7f727": "Menu du port {{value0}}", "1004af16ab": "Copier {{value0}}", - "153d3a8026": "Hôte de l'espace de travail inconnu" + "153d3a8026": "Hôte de l'espace de travail inconnu", + "unknownProcess": "Processus inconnu", + "containerOrForwardedService": "Conteneur ou service redirigé", + "unassigned": "Non assigné", + "remotePortOutOfRange": "Le port distant doit être dans la plage 1–65535", + "localPortOutOfRange": "Le port local doit être dans la plage 1–65535", + "localPortInUse": "Le port {{port}} est déjà utilisé. Choisissez un autre port local.", + "localPortRequiresPrivileges": "Le port {{port}} nécessite des privilèges élevés. Utilisez un port local ≥ 1024." }, "Search": { "1abfb25a66": "Saisissez pour rechercher dans les fichiers", @@ -12675,7 +12726,6 @@ "476b77745b": "Modifier la ref de base", "ed34038d0d": "Actualiser la comparaison de branches", "493f963029": "Modifier la ref de base", - "3278b2767b": "en avance", "11b5dd8e41": "Comparaison avec", "a9bf7c171a": "Échec du commit", "011f9713fc": "Commit bloqué", @@ -12720,7 +12770,6 @@ "574d2f4413": "Effacer les notes", "05bb8f4a48": "Annuler", "48db37cca9": "Tout afficher", - "78ce2d37ac": "Pousse vers le fork", "c05fe04839": "Pousse vers le fork situé à {{value0}} (pas origin)", "c35baf2f1e": "Filtrer les fichiers…", "2fe2a67580": "Autres actions de note", @@ -12728,14 +12777,12 @@ "cc474e0b8c": "Notes", "e131cd7128": "Le contrôle de code source n'est disponible que pour les dépôts Git", "c07b236287": "Sélectionnez un espace de travail pour afficher les modifications", - "dc5a6465fc": "{{value0}} (ex. {{value1}}{{value2}})", "a5e5a11090": "Échec de l'abandon global — impossible de sortir les fichiers de l'index avant l'abandon", "8a5ba6a988": "Échec du chargement du diff du commit", "fe5bd1a610": "Création de {{value0}}...", "812cb992ee": "Ouvrir sur {{value0}}", "eef5446523": "{{value0}} #{{value1}} est déjà ouvert", "0453ca3a9a": "Création de {{value0}} effectuée, mais Orca n'a pas encore pu l'actualiser.", - "f99560ab29": "Échec de l'abandon de {{value0}}", "eae7a1da5f": "Échec de l'effacement des notes.", "df5040e3c3": "Déstager", "8cde1a2fb0": "Stager", @@ -12772,8 +12819,6 @@ "72f2bea3f4": "Déplier les notes", "d13edef890": "Replier les notes", "d6fb1df5fe": "{{value0}} est déjà ouvert", - "05838cfdeb": "Conflit {{value0}}", - "d206117f90": "Conflit {{value0}} ({{value1}})", "0b5b8c234c": "Ouvrir {{value0}} ({{value1}})", "d97ef8f221": "lignes {{value0}}-{{value1}}", "6f8bfa0eb9": "ligne {{value0}}", @@ -12848,12 +12893,6 @@ "a4e93c21d7": "Branche actuelle : {{value0}}", "c7d4e2f801": "Modifier la ref de base : {{value0}}", "createPrIntentGenerateDetailsFailed": "Impossible de générer les détails de revue. Réessayez Créer une PR.", - "branchFilesChangedVsBaseOne": "1 fichier modifié par rapport à {{ref}}", - "branchFilesChangedVsBaseOther": "Fichiers {{count}} modifiés par rapport à {{ref}}", - "compareBaseCommitsAheadOne": "1 commit avant {{ref}}", - "compareBaseCommitsAheadOther": "{{count}} s'engage avant {{ref}}", - "compareBaseCommitsBehindOne": "1 commit derrière {{ref}}", - "compareBaseCommitsBehindOther": "{{count}} s'engage derrière {{ref}}", "entryStageFailed": "Échec de la préparation de « {{value0}} »", "entryUnstageFailed": "Échec de la désactivation de « {{value0}} »", "entryDiscardFailed": "Échec de la suppression de « {{value0}} »", @@ -12862,17 +12901,50 @@ "diffCommentNotesCopyFailed": "Échec de la copie des notes", "conflictCount_one": "{{count}} conflit", "conflictCount_other": "{{count}} conflits", - "discardFailedSingular": "Échec de l'abandon de {{count}} fichier", - "discardFailedPlural": "Échec de l'abandon de {{count}} fichiers", - "noteCountSingular": "{{count}} note", - "noteCountPlural": "{{count}} notes" + "discardFailedSampleMore_one": "{{paths}}, +{{count}} autre", + "discardFailedSampleMore_other": "{{paths}}, +{{count}} autres", + "discardFailed_one": "Échec de l'abandon de {{count}} fichier", + "discardFailed_other": "Échec de l'abandon de {{count}} fichiers", + "discardFailedWithSample": "{{error}} (ex. {{paths}})", + "compareBaseCommitsAhead_one": "{{count}} commit d'avance sur {{ref}}", + "compareBaseCommitsAhead_other": "{{count}} commits d'avance sur {{ref}}", + "compareBaseCommitsBehind_one": "{{count}} commit de retard sur {{ref}}", + "compareBaseCommitsBehind_other": "{{count}} commits de retard sur {{ref}}", + "branchFilesChangedVsBase_one": "{{count}} fichier modifié par rapport à {{ref}}", + "branchFilesChangedVsBase_other": "{{count}} fichiers modifiés par rapport à {{ref}}", + "noteCount_one": "{{count}} note", + "noteCount_other": "{{count}} notes", + "comparingAgainstRef": "Comparaison avec {{ref}}", + "commitsAheadShort_one": "{{count}} en avance", + "commitsAheadShort_other": "{{count}} en avance", + "unresolvedConflictOfKind": "Conflit non résolu ({{kind}})", + "unresolvedConflict": "Conflit non résolu", + "locallyResolvedConflictOfKind": "Conflit résolu localement ({{kind}})", + "locallyResolvedConflict": "Conflit résolu localement", + "pushesToForkTarget": "Pousse vers le fork {{target}}", + "abortRebaseConfirmTitle": "Abandonner le rebase ?", + "abortMergeConfirmTitle": "Abandonner le merge ?", + "abortRebaseConfirmDescription": "Cela annule le rebase en cours et peut abandonner les résolutions de conflits effectuées pendant ce rebase.", + "abortMergeConfirmDescription": "Cela annule le merge en cours et peut abandonner les résolutions de conflits effectuées pendant ce merge.", + "abortRebaseFailedFallback": "Impossible d'abandonner le rebase", + "abortMergeFailedFallback": "Impossible d'abandonner le merge", + "abortRebaseFailed": "Échec de l'abandon du rebase", + "abortMergeFailed": "Échec de l'abandon du merge", + "clearNotesFromWorkspace_one": "Effacer {{count}} note de cet espace de travail ?", + "clearNotesFromWorkspace_other": "Effacer {{count}} notes de cet espace de travail ?", + "clearNotesFromFile_one": "Effacer {{count}} note de {{path}} ?", + "clearNotesFromFile_other": "Effacer {{count}} notes de {{path}} ?" }, "SourceControlAgentActionDialog": { "8e856842d1": "Impossible de démarrer l'agent sélectionné.", "c075d00de1": "Impossible de résoudre la connexion de l'espace de travail.", "38b899cc02": "Tous les dépôts", "808cfe0a3b": "Ce dépôt", - "994cddd1f7": "Ne pas enregistrer" + "994cddd1f7": "Ne pas enregistrer", + "agentNotEnabledOrDetected": "{{agent}} n'est pas activé ou n'a pas été détecté sur l'hôte de cet espace de travail.", + "workspaceConnectionUnresolved": "Impossible de déterminer la connexion de l'espace de travail.", + "noEnabledAgentsDetected": "Aucun agent activé n'a été détecté sur l'hôte de cet espace de travail.", + "startAgent": "Démarrer l'agent" }, "SourceControlAgentActionDialogForm": { "013c9ac04a": "Enregistrer pour", @@ -12937,10 +13009,6 @@ "cbcc4ab3db": "Affichage des 100 premières vérifications", "0dca6bfab5": "Ouvrir les détails de la vérification", "991f50c7e4": "Aucune vérification configurée", - "9ad98f2a17": "en attente", - "5e52f4ef7f": "en échec", - "02ca4f9074": "en succès", - "checksUnresolvedChip": "non résolu", "checksUnresolvedStripHint": "Ces vérifications se sont terminées sans verdict de succès ni d'échec.", "e15a8b77ef": "Aucun détail en ligne n'est disponible pour cette vérification.", "dcb3c546fe": "Réessayer", @@ -12959,7 +13027,6 @@ "1f2b980522": "Chargement des détails de la vérification…", "0c96cd25e5": "Résoudre", "3a71a6ed0b": "Résolvez les conflits pour que les vérifications et le merge puissent aboutir.", - "60186d8498": "Des conflits bloquent ceci", "c16762ac8c": "Les vérifications et commentaires ci-dessous montrent le contexte récupéré actuellement.", "9d0e7bcefc": "Aucune action PR bloquante", "5856874b59": "Orca actualisera les vérifications tant que ce panneau reste ouvert.", @@ -12984,7 +13051,6 @@ "084c516efb": "Copier les commandes", "5dc3af25c0": "Sélectionner le commentaire", "d7a2f9c401": "Envoyer les {{value0}} commentaires non résolus", - "d91f2a6c39": "Envoyer les {{value0}} commentaires en file à l'IA", "a6de3e5a20": "Vider les commentaires en file", "f8a2c91d04": "Mettre en file pour l'agent", "b4e8a1c902": "En file d'attente", @@ -13007,7 +13073,28 @@ "pendingChecks_one": "{{count}} vérification en attente", "pendingChecks_other": "{{count}} vérifications en attente", "unresolvedChecks_one": "{{count}} vérification non résolue", - "unresolvedChecks_other": "{{count}} vérifications non résolues" + "unresolvedChecks_other": "{{count}} vérifications non résolues", + "passingCount_one": "{{count}} réussi", + "passingCount_other": "{{count}} réussis", + "failingCount_one": "{{count}} en échec", + "failingCount_other": "{{count}} en échec", + "pendingCount_one": "{{count}} en attente", + "pendingCount_other": "{{count}} en attente", + "unresolvedCount_one": "{{count}} non résolu", + "unresolvedCount_other": "{{count}} non résolus", + "sendQueuedCommentsToAi_one": "Envoyer {{count}} commentaire en file d'attente à l'IA", + "sendQueuedCommentsToAi_other": "Envoyer {{count}} commentaires en file d'attente à l'IA", + "conflictsBlockThisMr": "Des conflits bloquent cette MR", + "conflictsBlockThisPr": "Des conflits bloquent cette PR", + "copyComment": "Copier le commentaire", + "sendComment": "Envoyer", + "commentingRequiresGitHubPrTarget": "Pour commenter, un dépôt cible de PR GitHub est nécessaire.", + "selectWorkspaceBeforeAiAction": "Sélectionnez un espace de travail avant de lancer une action IA.", + "operation": { + "rebase": "Rebase", + "merge": "Merge", + "cherryPick": "Cherry-pick" + } }, "empty": { "state": { @@ -13414,8 +13501,8 @@ }, "compare": { "summary": { - "commitsAheadSingular": "{{count}} commit d'avance sur {{ref}}", - "commitsAheadPlural": "{{count}} commits d'avance sur {{ref}}" + "commitsAhead_one": "{{count}} commit d'avance sur {{ref}}", + "commitsAhead_other": "{{count}} commits d'avance sur {{ref}}" } }, "conflict": { @@ -13500,8 +13587,11 @@ "folderLinksOutsideProject": "Ce dossier pointe en dehors du projet ; il ne peut pas être ouvert ici." }, "useFileExplorerImport": { - "25919b2050": "Ignoré : {{value0}} {{value1}}.", - "132fd0e1e9": "Échec de l'importation de {{value0}} {{value1}}." + "importFailedCount_one": "Échec de l'importation de {{count}} fichier.", + "importFailedCount_other": "Échec de l'importation de {{count}} fichiers.", + "importSkippedCount_one": "{{count}} fichier ignoré.", + "importSkippedCount_other": "{{count}} fichiers ignorés.", + "importFailed": "Échec de l'importation des fichiers." }, "useFileExplorerKeys": { "8adb953095": "Échec de l'opération" @@ -13539,7 +13629,6 @@ "refreshSessionHistory": "Actualiser l'historique des sessions", "searchSessions": "Rechercher des sessions", "clearSearch": "Effacer la recherche", - "transcriptsSkipped": "{{count}} transcript ignoré", "noAgentSessionsFound": "Aucune session d'agent trouvée", "noSessionsMatchFilters": "Aucune session ne correspond aux filtres actuels", "noAgentsSelected": "Aucun agent sélectionné", @@ -13558,7 +13647,9 @@ "resumeInChatFailed": "Impossible de reprendre cette session dans un nouveau chat.", "resumeInNewCliUnavailable": "Impossible d'ouvrir cette session dans la CLI.", "resumeInNewCliHostTooOld": "Mettez à jour Orca sur l'hôte qui exécute ce chat pour le reprendre dans une nouvelle CLI.", - "folderWorkspaceUnavailable": "L'espace de travail de type dossier n'est plus disponible." + "folderWorkspaceUnavailable": "L'espace de travail de type dossier n'est plus disponible.", + "transcriptsSkippedCount_one": "{{count}} transcript ignoré", + "transcriptsSkippedCount_other": "{{count}} transcripts ignorés" }, "AiVaultPanelControls": { "scanningSessions": "Analyse des sessions", @@ -13589,11 +13680,8 @@ "latestTurns": "Derniers échanges", "noPreviewAvailable": "Aucun aperçu de conversation disponible", "conversationNotSaved": "Conversation non enregistrée", - "recoverableEmptyDetail": "Cette session n'a pas de conversation enregistrée, mais {{value0}} élément(s) récupérable(s) subsistent.", "recoverableEmptyOpenLogHint": "Ouvrez le log pour les récupérer.", "emptyConversationDetail": "Cette session n'a pas de conversation enregistrée et ne peut pas être reprise.", - "queuedMessages": "{{value0}} message(s) en file d'attente", - "subagentTranscripts": "{{value0}} transcript(s) de sous-agent", "resumeInWorktree": "Reprendre dans le worktree", "viewLog": "Afficher le log", "unknownTime": "Heure inconnue", @@ -13622,7 +13710,13 @@ "noFirstPromptAvailable": "Aucun premier prompt disponible", "loadingFirstPrompt": "Chargement du premier prompt…", "folder": "Dossier", - "resumeInFolder": "Reprendre dans le dossier" + "resumeInFolder": "Reprendre dans le dossier", + "recoverableEmptyDetailCount_one": "Cette session n'a pas de conversation enregistrée, mais {{count}} élément récupérable subsiste.", + "recoverableEmptyDetailCount_other": "Cette session n'a pas de conversation enregistrée, mais {{count}} éléments récupérables subsistent.", + "queuedMessageCount_one": "{{count}} message en file d'attente", + "queuedMessageCount_other": "{{count}} messages en file d'attente", + "subagentTranscriptCount_one": "{{count}} transcript de sous-agent", + "subagentTranscriptCount_other": "{{count}} transcripts de sous-agents" }, "AiVaultSessionRow": { "noPreviewAvailable": "Aucun aperçu de conversation disponible", @@ -13756,26 +13850,26 @@ "confirmation": { "84f6f5b9eb": "Inclus : {{numbers}}. ", "541984b2eb": "Ajouter à la file via #{{pr}} ?", - "4809f55cdb": "{{included}}GitHub ajoutera {{count}} pull request à la file de fusion en une seule fois. La file choisit la méthode de fusion et peut les fusionner en groupes séparés.", - "be8f2621be": "{{included}}GitHub ajoutera {{count}} pull requests à la file de fusion en une seule fois. La file choisit la méthode de fusion et peut les fusionner en groupes séparés.", - "92ca033e72": "Mettre {{count}} PR en file", - "478a527b15": "Mettre {{count}} PR en file", "1feef35ca4": "Fusionner via #{{pr}} ?", - "c3e036c99f": "{{included}}GitHub fusionnera {{count}} pull request de manière atomique avec {{method}}. Si elle ne peut pas être fusionnée, rien ne le sera.", - "369aba4b32": "{{included}}GitHub fusionnera {{count}} pull requests de manière atomique avec {{method}}. Si l'une ne peut pas être fusionnée, aucune ne le sera.", - "493c78f521": "Fusionner {{count}} PR", - "eb7051d268": "Fusionner {{count}} PR" + "queueDescription_one": "{{included}}GitHub ajoutera {{count}} pull request à la file de fusion en une seule fois. La file choisit la méthode de fusion et peut fusionner les pull requests en groupes séparés.", + "queueDescription_other": "{{included}}GitHub ajoutera {{count}} pull requests à la file de fusion en une seule fois. La file choisit la méthode de fusion et peut les fusionner en groupes séparés.", + "queueConfirm_one": "Mettre {{count}} PR en file", + "queueConfirm_other": "Mettre {{count}} PR en file", + "mergeDescription_one": "{{included}}GitHub fusionnera {{count}} pull request de manière atomique avec {{method}}. Si elle ne peut pas être fusionnée, rien ne le sera.", + "mergeDescription_other": "{{included}}GitHub fusionnera {{count}} pull requests de manière atomique avec {{method}}. Si l'une ne peut pas être fusionnée, aucune ne le sera.", + "mergeConfirm_one": "Fusionner {{count}} PR", + "mergeConfirm_other": "Fusionner {{count}} PR" }, "merge": { - "55ae29b907": "Fusionner via #{{pr}} · {{count}} PR", - "b8446f6ec2": "Fusionner via #{{pr}} · {{count}} PR", "189d0ec614": "#{{pr}} est toujours un brouillon.", "640fb50d9c": "#{{pr}} est fermée.", "46ffcbda75": "#{{pr}} présente des conflits de fusion.", "6dabefd63e": "#{{pr}} a demandé des modifications.", "2bb21fc326": "#{{pr}} attend encore une approbation de relecture.", "c23faf74df": "#{{pr}} doit être mise à jour.", - "f561e80968": "#{{pr}} est bloquée." + "f561e80968": "#{{pr}} est bloquée.", + "mergeThroughLabel_one": "Fusionner jusqu'à #{{pr}} inclus · {{count}} PR", + "mergeThroughLabel_other": "Fusionner jusqu'à #{{pr}} inclus · {{count}} PR" } } } @@ -13832,14 +13926,15 @@ "sourceActionsUnavailable": "La source de la transcription n'est pas disponible." }, "AiVaultScanProgressStrip": { - "agentChecked": "{{agent}} : {{settled}} candidats de l’historique vérifiés sur {{total}}", "fileCount_one": "{{value0}} fichier", "fileCount_other": "{{value0}} fichiers", "databaseCount_one": "{{value0}} base de données", "databaseCount_other": "{{value0}} bases de données", "scanning": "Analyse de {{value0}}", "checking": "Vérification de {{value0}}", - "scanned": "{{value0}} analysés" + "scanned": "{{value0}} analysés", + "agentCheckedCount_one": "{{agent}} : {{settled}} sur {{total}} candidat de l’historique vérifié", + "agentCheckedCount_other": "{{agent}} : {{settled}} sur {{total}} candidats de l’historique vérifiés" }, "ssh": { "unrestored": { @@ -13851,6 +13946,15 @@ } } } + }, + "fileExplorerMultiDrag": { + "moreItems_one": "+{{count}} autre", + "moreItems_other": "+{{count}} autres" + }, + "CreatePullRequest": { + "createInProgress": "Création de la PR en cours...", + "workspaceHostUnresolved": "L'hôte de l'espace de travail n'a pas pu être résolu. Actualisez l'espace de travail et réessayez.", + "branchDiscoveryFailed": "Échec de la détection des branches." } } }, @@ -15701,7 +15805,9 @@ "6978871a3d": "Ouvert", "cce596969e": "Supprimer la note", "cad3384faa": "Modifier la note", - "508ee678a5": "Ouvrir dans le navigateur" + "508ee678a5": "Ouvrir dans le navigateur", + "noteAuthorFallback": "Note", + "sentMeta": "envoyé" }, "DiffCommentPopover": { "2b3ce6d394": "Annuler", @@ -15714,6 +15820,9 @@ }, "useDiffCommentDecorator": { "995fa28b50": "Cette note" + }, + "diffCommentZoneCard": { + "noteAlreadySent": "Note déjà envoyée" } } }, @@ -16966,10 +17075,10 @@ "rightSidebar": { "FolderWorkspaceWorktreesPanel": { "unavailable": "Les espaces de travail ne sont affichés que pour les espaces de travail de type dossier.", - "countOne": "1 worktree attaché", - "countMany": "{{value0}} worktrees attachés", "emptyTitle": "Aucun worktree attaché pour l'instant", - "emptyCopy": "Les worktrees créés depuis cet espace de travail apparaîtront ici." + "emptyCopy": "Les worktrees créés depuis cet espace de travail apparaîtront ici.", + "attachedCount_one": "{{count}} worktree attaché", + "attachedCount_other": "{{count}} worktrees attachés" }, "FolderWorkspacePrChecksPanel": { "unavailable": "Les vérifications PR ne sont affichées que pour les espaces de travail de type dossier.", @@ -16981,12 +17090,12 @@ "hideDetails": "Masquer les détails des vérifications PR de {{value0}}", "reviewChecks": "Vérifications de revue", "allChecksPassing": "toutes les vérifications passent", - "oneWorktree": "1 worktree", - "worktreeCount": "{{value0}} worktrees", - "oneFailing": "1 en échec", - "failingCount": "{{value0}} en échec", - "onePending": "1 en attente", - "pendingCount": "{{value0}} en attente" + "worktreeCountLabel_one": "{{count}} worktree", + "worktreeCountLabel_other": "{{count}} worktrees", + "failingCountLabel_one": "{{count}} en échec", + "failingCountLabel_other": "{{count}} en échec", + "pendingCountLabel_one": "{{count}} en attente", + "pendingCountLabel_other": "{{count}} en attente" }, "parentPrChecks": { "rowSummary": { @@ -19624,8 +19733,6 @@ }, "sessionSearch": { "panel": { - "resultsOne": "résultat {{count}}", - "resultsOther": "Résultats {{count}}", "noMatches": "Aucune session correspondante dans l'historique indexé. Essayez une autre requête ou une autre étendue.", "loadMore": "Charger plus de matchs", "indexedHistory": "Historique indexé", @@ -19646,12 +19753,24 @@ "retry": "Essayer à nouveau", "scopeUnknown": "Cet ordinateur ne dispose pas de cet espace de travail ou de ce projet. Basculez la portée sur Tous pour tout rechercher.", "sortSessionsAriaLabel": "Trier les sessions : {{value0}}", - "sessionsOne": "Séance {{count}}", - "sessionsOther": "{{count}} séances", - "sessionsOfLoaded": "{{value0}} sur {{value1}} séances", "showMoreSessions": "Afficher plus de séances", "loadingMoreSessions": "Chargement de plus de sessions…", - "unsupportedAgent": "Cet ordinateur ne prend pas en charge la recherche dans l'historique de l'agent sélectionné. Mettez à jour Orca sur cet ordinateur ou sélectionnez un autre agent." + "unsupportedAgent": "Cet ordinateur ne prend pas en charge la recherche dans l'historique de l'agent sélectionné. Mettez à jour Orca sur cet ordinateur ou sélectionnez un autre agent.", + "resultCount_one": "{{count}} résultat", + "resultCount_other": "{{count}} résultats", + "sessionCount_one": "{{count}} session", + "sessionCount_other": "{{count}} sessions", + "sessionsShownOfLoaded_one": "{{shown}} sur {{count}} session", + "sessionsShownOfLoaded_other": "{{shown}} sur {{count}} sessions", + "hostSkipReason": { + "indexChanged": "index modifié", + "searchOff": "recherche désactivée", + "notReady": "pas prêt", + "unavailable": "indisponible", + "unreachable": "injoignable", + "scopeNotFound": "périmètre de recherche introuvable sur cet hôte", + "agentNotSupported": "agent non pris en charge" + } } }, "sessionHistory": { @@ -20231,8 +20350,9 @@ "rateLimited": "Limite de débit GitHub atteinte. Réessayez dans quelques minutes.", "network": "Erreur réseau — vérifiez votre connexion.", "tooLargeUnknownCount": "Cette vue contient trop d'éléments pour être affichée dans Orca. Restreignez le filtre de la vue sur GitHub.", - "tooLarge": "Cette vue contient {{itemCount}} éléments, trop pour être affichée dans Orca. Restreignez le filtre de la vue sur GitHub.", - "schemaDriftDetail": "Impossible de lire cette vue de projet : {{detail}}." + "schemaDriftDetail": "Impossible de lire cette vue de projet : {{detail}}.", + "tooLargeCount_one": "Cette vue contient {{count}} élément — elle est trop volumineuse pour être affichée dans Orca. Restreignez le filtre de la vue sur GitHub.", + "tooLargeCount_other": "Cette vue contient {{count}} éléments — elle est trop volumineuse pour être affichée dans Orca. Restreignez le filtre de la vue sur GitHub." }, "columns": { "type": "Tapez" diff --git a/src/renderer/src/i18n/locales/ja.json b/src/renderer/src/i18n/locales/ja.json index afb2dd9444c..238a9d5b20a 100644 --- a/src/renderer/src/i18n/locales/ja.json +++ b/src/renderer/src/i18n/locales/ja.json @@ -1498,9 +1498,6 @@ "3fdf777817": "GitHub で開く", "c43fe79ee0": "GitHub リンクをコピーする", "0caac1a18f": "PR からワークスペースを開始する", - "8223320f8d": "更新されました", - "10ef1afb8e": "· 更新されました", - "55962099bc": "この Issue を作成しました", "0ab4664a8b": "Issue からワークスペースを開始", "36182aa57f": "新規ワークスペースを開始", "fe6ff12dc2": "Issue ワークスペースのその他の操作", @@ -1573,8 +1570,6 @@ "52b20b56f7": "説明", "4d555d3796": "説明の編集", "9df4e74bdf": "保存", - "0ae387d8ca": "による", - "228e2f59d3": "解決済み", "a154ec5224": "GitHub でコメントを開く", "bca8eb39ac": "コメントに返信", "68cb993d61": "解決済み", @@ -1590,7 +1585,6 @@ "d43736d09c": "コードコンテキストコントロール", "bd7be7b1fd": "コメントL", "db61d76cd5": "コードコンテキストを読み込み中…", - "f2d02cdf8c": "閲覧したファイル", "1257d1435d": "ファイルツリーを表示", "a341343303": "レビューコメントを追加しました。", "d1fa2cf888": "PR ヘッドの SHA がないとコメントできません。", @@ -1630,8 +1624,6 @@ "ec5c4b3ab2": "PR 再開", "21860b58d0": "PR を閉じる", "5932578f51": "マージには登録済みのローカルリポジトリが必要です", - "e2bf3e41a9": "コメント", - "28d0d3374f": "スレッド", "080d071d48": "@{{value0}} に返信", "86f809e2ce": "このレビュースレッドに返信する", "136542c9ba": ":L{{value0}}", @@ -1661,7 +1653,9 @@ "from": "から", "to": "to", "activity": "アクティビティ", - "noActivity": "まだアクティビティはありません。" + "noActivity": "まだアクティビティはありません。", + "pullRequestReference": "PR #{{number}}", + "issueReference": "Issue #{{number}}" }, "checkActionRequiredHint": "マージのブロックを解除するには、GitHub 上での手動操作(例: 実行の承認)が必要です。", "e15a8b77ef": "このチェックではインライン詳細は利用できません。", @@ -1675,8 +1669,13 @@ "09d67a0f9b": "PR をクローズできませんでした", "88809e79db": "PR の再開に失敗しました", "00f55cc17b": "この PR ではリポジトリにアクセスできません。", - "reactionCountSingular": "{{reaction}} 反応 {{count}} 件", - "reactionCountPlural": "{{reaction}} 反応 {{count}} 件" + "reactionCount_other": "{{reaction}} の反応 {{count}} 件", + "filesViewed_other": "{{viewed}} / {{count}} ファイルを閲覧済み", + "updatedRelativeTime": "{{time}} に更新", + "authorOpenedThisIssue": " がこの Issue を作成しました", + "middotUpdatedRelativeTime": "· {{time}} に更新", + "resolvedThreadBy": "{{author}} の解決済みスレッド", + "resolvedCommentBy": "{{author}} の解決済みコメント" }, "GitLabItemDialog": { "65e784c1f1": "再度開く", @@ -1732,14 +1731,13 @@ "f23ea85341": "解決済み", "6de8ce0cc6": "{{value0}}は必須です", "22511537d2": "承認された", - "00f3bab87b": "{{value0}} 個が必要です", "3a051b8ade": "作業項目", "32f8bef818": "ログは出力されません。", "4168eb2c51": "解決", "commentTooLarge": "コメントが大きすぎるため安全に送信できません。", "gitlabActionFailed": "GitLab 操作が失敗しました。", - "approvalsRemainingSingular": "残り {{count}} 件の承認", - "approvalsRemainingPlural": "残り {{count}} 件の承認" + "approvalsRemainingOfRequired_other": "必要な承認 {{required}} 件のうち残り {{count}} 件", + "approvalsRemaining_other": "残り {{count}} 件の承認" }, "JiraIssueWorkspace": { "b0b92666c9": "コメント", @@ -2063,9 +2061,6 @@ "778683ec84": "説明", "da9aaa8bcf": "説明の編集", "4a337ac05f": "保存", - "169a93b29a": "更新されました", - "3c891789f6": "による", - "f4fe47c2bb": "解決済み", "0ac19bb52e": "GitHub でコメントを開く", "d6c6679de7": "コメントに返信", "76b2a0ac5b": "解決済み", @@ -2073,7 +2068,6 @@ "6885c619e7": "リポジトリパスがないと返信できません。", "d94810f652": "説明の更新に失敗しました。", "9b4190dc98": "説明が更新されました。", - "89e80af1c7": "閲覧したファイル", "319cf2d54b": "ファイルツリーを表示", "eff839f438": "レビューコメントを追加しました。", "d8c3ba91c4": "PR ヘッドの SHA がないとコメントできません。", @@ -2111,8 +2105,6 @@ "9d5425918e": "PR 再開", "96d013ed28": "PR を閉じる", "eca289e593": "マージには登録済みのローカルリポジトリが必要です", - "e01e34f5fa": "コメント", - "345b68254c": "スレッド", "31a7b202f2": "@{{value0}} に返信", "408e634fbb": "このレビュースレッドに返信する", "34b9f7c264": ":L{{value0}}", @@ -2138,7 +2130,18 @@ "diffLoadTimedOut": "この差分の読み込みがタイムアウトしました。", "6b1d5ee3e4": "このチェックではインライン詳細は利用できません。", "e04c027d98": "チェックの詳細をロードできませんでした。", - "5df7c41d2a": "再試行" + "5df7c41d2a": "再試行", + "filesViewed_other": "{{viewed}} / {{count}} ファイルを閲覧済み", + "updatedRelativeTime": "{{time}} に更新", + "resolvedThreadBy": "{{author}} の解決済みスレッド", + "resolvedCommentBy": "{{author}} の解決済みコメント", + "mentionSource": { + "prAuthor": "PR 作成者", + "issueAuthor": "Issue 作成者", + "commenter": "コメント投稿者", + "participant": "参加者", + "teamMember": "チームメンバー" + } }, "QuickOpen": { "1dbd3f59ff": "移動", @@ -2643,7 +2646,8 @@ "8f6cb3772f": "要件が満たされると、この PR を自動的にマージします", "def355ff38": "マージ可能", "e42c5bae67": "GitHub によると、この PR はマージ可能で、チェックも成功しています", - "cbf0113af6": "GitHub によると、この PR はマージ可能です" + "cbf0113af6": "GitHub によると、この PR はマージ可能です", + "autoMergeOn": "自動マージ有効" } } }, @@ -2817,10 +2821,10 @@ "imageUrlTooLarge": "画像 URL が大きすぎます。" }, "IssueSourceSelector": { - "d6aeb2012b": "からの Issue を表示しています", "787c970baf": "Issue ソース", "51d1608920": "オリジン", - "30b2c9df91": "upstream" + "30b2c9df91": "upstream", + "showingIssuesFromRepo": " の Issue を表示中" }, "PRFilterDropdowns": { "979be3cf6b": "担当者", @@ -2830,12 +2834,18 @@ "01f3f3d161": "著者", "13b3ac0a84": "状態", "79c54552f7": "フィルター", - "8a2ffbf9b3": "{{value0}} フィルターを解除" + "8a2ffbf9b3": "{{value0}} フィルターを解除", + "anyState": "指定なし", + "currentUser": "現在のユーザー" }, "PRFilterPickers": { - "fdf387297c": "クリア (", "472c12ae03": "クリア", - "2d1f58eda6": "使用" + "pressEnterToUseValue": "Enter を押すと入力した値を使用します。", + "useTypedValue": " を使用", + "clearSelected": "クリア ({{count}})", + "loading": "読み込み中…", + "searchTextTooLarge": "検索テキストが大きすぎます。", + "noMatches": "一致なし" }, "PRFilterSections": { "a00830d3f7": "ユーザーがいません", @@ -2845,7 +2855,6 @@ "458ea3602b": "著者がいません", "b69fa4fa20": "戻る", "30ebb6ca44": "すべてのフィルターをクリア", - "8177eda37e": "フィルター", "ea3416d646": "担当者", "b1d9fdea08": "ラベル", "24754c44ad": "著者", @@ -2857,7 +2866,14 @@ "2b2f019091": "すべての状態", "0fd3249e2e": "クローズ", "d78b60b5c2": "オープン", - "bd162b7d5a": "マージ済み" + "bd162b7d5a": "マージ済み", + "draft": "下書き", + "labelCount_other": "{{count}} 個のラベル", + "allStates": "全て", + "filterPullRequests": "PR を絞り込む", + "filterIssues": "Issue を絞り込む", + "filterOrTypeLogin": "絞り込むかログイン名を入力…", + "filterLabels": "ラベルを絞り込む…" }, "github": { "rate": { @@ -2868,15 +2884,14 @@ "d12d3d6f33": "GitHub API 予算を更新する", "d5e5de9070": "Orca は、GitHub CLI を通じて REST、Search、GraphQL を使用します。", "58c5f88216": "GitHub API の予算", - "6da1858354": "左 · リセット", - "f42790d150": "の", "01f7323e58": "GraphQL API", "1daf0f22a9": "GraphQL", "1f2f28a4de": "検索API", "c377a4f06a": "検索", "c392c749a6": "REST API", "bb227706a6": "REST", - "budget_scope_prefix": "予算スコープ" + "budget_scope_prefix": "予算スコープ", + "remainingOfLimitResetsIn": "残り {{remaining}} / {{limit}} · {{reset}} 後にリセット" } } } @@ -2884,7 +2899,29 @@ "CommentReactions": { "addReaction": "リ操作を追加", "removeNamedReaction": "{{value0}} 反応を削除", - "addNamedReaction": "{{value0}} 反応を追加" + "addNamedReaction": "{{value0}} 反応を追加", + "reaction": { + "thumbsUp": "いいね", + "thumbsDown": "よくないね", + "laugh": "笑い", + "confused": "困惑", + "heart": "ハート", + "hooray": "やったー", + "rocket": "ロケット", + "eyes": "目" + } + }, + "CommentCodeContext": { + "showSurroundingCodeBlock": "周囲のコードブロックを表示", + "showNearbyCodeContext": "近くのコードのコンテキストを表示" + }, + "prCheckPresentation": { + "successful": "成功", + "inProgress": "進行中" + }, + "IssueSourceIndicator": { + "issueFromRepo": " の Issue", + "issuesFromRepo": " の Issue" } }, "linear": { @@ -12178,14 +12215,13 @@ "right": { "sidebar": { "BulkActionBar": { - "79a9f5f712": "アンステージ (", - "ef5f5bd06e": "ステージ(", - "60ed678138": "選択中" + "selectedCount_other": "{{count}} 件選択中", + "stageCount": "ステージ ({{count}})", + "unstageCount": "アンステージ ({{count}})" }, "ChecksPanel": { "2ef90c9819": "失敗したチェックに対して AI Agent を開始しました。", "a0181a8d76": "競合の解決のために AI Agent を開始しました。", - "34464d00b9": "更新されました", "058039787c": "キャンセル", "2ab7fd4b6d": "保存", "dda5924a40": "チェックには Git ブランチとホストされたレビューコンテキストが必要です", @@ -12231,7 +12267,8 @@ "430f1a62d4": "選択したスレッドをホスト上で解決できませんでした。", "updateReactionFailed": "反応を更新できませんでした。", "gitlabMoreActions": "その他の MR 操作", - "gitlabLinkAnother": "別の MR をリンクする" + "gitlabLinkAnother": "別の MR をリンクする", + "reviewUpdatedAt": "{{review}} を {{time}} に更新" }, "CreateHostedReviewComposer": { "741ff8a0d2": "プッシュして{{value0}}を作成" @@ -12388,7 +12425,14 @@ "740aca88ab": "ワークスペースのポートスキャンに失敗しました。", "5be4f7f727": "ポート {{value0}} メニュー", "1004af16ab": "{{value0}}をコピー", - "153d3a8026": "ワークスペースのホストが不明です" + "153d3a8026": "ワークスペースのホストが不明です", + "unknownProcess": "不明なプロセス", + "containerOrForwardedService": "コンテナーまたは転送されたサービス", + "unassigned": "未割り当て", + "remotePortOutOfRange": "リモートポートは 1–65535 の範囲で指定してください", + "localPortOutOfRange": "ローカルポートは 1–65535 の範囲で指定してください", + "localPortInUse": "ポート {{port}} は使用中です。別のローカルポートを選択してください。", + "localPortRequiresPrivileges": "ポート {{port}} には管理者権限が必要です。1024 以上のローカルポートを使用してください。" }, "Search": { "1abfb25a66": "ファイル内を検索するために入力します", @@ -12445,7 +12489,6 @@ "476b77745b": "ベース参照の変更", "ed34038d0d": "ブランチ比較をリフレッシュ", "493f963029": "ベース参照を変更する", - "3278b2767b": "進んでいる", "11b5dd8e41": "と比較する", "a9bf7c171a": "コミット失敗", "011f9713fc": "コミットがブロックされました", @@ -12490,7 +12533,6 @@ "574d2f4413": "ノートをクリア", "05bb8f4a48": "キャンセル", "48db37cca9": "すべて見る", - "78ce2d37ac": "フォークにプッシュ", "c05fe04839": "{{value0}} (原点ではない) のフォークにプッシュします", "c35baf2f1e": "ファイルをフィルタリング…", "2fe2a67580": "その他のメモ操作", @@ -12498,14 +12540,12 @@ "cc474e0b8c": "ノート", "e131cd7128": "ソース管理は Git リポジトリでのみ使用できます", "c07b236287": "変更を表示するワークスペースを選択", - "dc5a6465fc": "{{value0}} (例: {{value1}}{{value2}})", "a5e5a11090": "失敗したすべての破棄 - 破棄する前にファイルをステージング解除できません", "8a5ba6a988": "コミット差分をロードできませんでした", "fe5bd1a610": "{{value0}} を作成しています…", "812cb992ee": "{{value0}} で開く", "eef5446523": "{{value0}} #{{value1}} はすでに開いています", "0453ca3a9a": "{{value0}} が作成されましたが、Orca はまだ更新できませんでした。", - "f99560ab29": "{{value0}} の中止に失敗しました", "eae7a1da5f": "メモを消去できませんでした。", "df5040e3c3": "アンステージ", "8cde1a2fb0": "ステージ", @@ -12533,8 +12573,6 @@ "aaf1451654": "ドラフト {{value0}} を作成する", "26511c22b4": "作成中…", "d7ae61269b": "コミット先のブランチ", - "branchFilesChangedVsBaseOne": "{{ref}} と比べて 1 ファイルが変更されています", - "branchFilesChangedVsBaseOther": "{{ref}} と比べて {{count}} ファイルが変更されています", "48a003c1b1": "ステージ済みの変更", "d4ef4bafc5": "変更点", "9339382454": "すべてのステージを解除する", @@ -12544,7 +12582,6 @@ "72f2bea3f4": "ノートを展開する", "d13edef890": "メモを折りたたむ", "d6fb1df5fe": "{{value0}} はすでに開いています", - "05838cfdeb": "{{value0}} コンフリクト", "0b5b8c234c": "{{value0}} ({{value1}}) を開く", "d97ef8f221": "{{value0}}-{{value1}} 行", "6f8bfa0eb9": "{{value0}} 行", @@ -12557,7 +12594,6 @@ "5b176fa431": "双方で削除", "31f6d46278": "未解決", "2c417432b7": "ローカルで解決済み", - "d206117f90": "{{value0}} コンフリクト ({{value1}})", "f3a8b2c1d0e5": "{{value0}} のタイトルを入力してください。", "e2b7a1c0d9f4": "{{value0}} の作成に失敗しました", "hugeRepoIgnorePrompt": "このリポジトリにはアクティブな変更が多すぎます。「{{value0}}」を .gitignore に追加しますか?", @@ -12598,10 +12634,6 @@ "b3c8f1a902": "ファイル名でフィルター", "d4f8c2a901": "フィルターをクリアして閉じる", "e8a1c4b203": "vs", - "compareBaseCommitsAheadOne": "{{ref}} より 1 コミット進んでいます", - "compareBaseCommitsAheadOther": "{{ref}}より{{count}}コミット進んでいます", - "compareBaseCommitsBehindOne": "{{ref}} より 1 コミット遅れています", - "compareBaseCommitsBehindOther": "{{ref}}より{{count}}コミット遅れています", "4b4a7de138": "ブラウザでレビューページを開く", "createPrIntentCommitBlockedSummary": "コミットがブロックされました:{{value0}} Issue を修正して、PR 作成を再試行してください。", "pushRecovery": { @@ -12632,17 +12664,41 @@ "diffCommentNotesCopyFailed": "メモのコピーに失敗しました", "conflictCount_one": "競合 {{count}} 件", "conflictCount_other": "競合 {{count}} 件", - "discardFailedSingular": "{{count}} 個のファイルを破棄できませんでした", - "discardFailedPlural": "{{count}} 個のファイルを破棄できませんでした", - "noteCountSingular": "メモ {{count}} 件", - "noteCountPlural": "メモ {{count}} 件" + "discardFailedSampleMore_other": "{{paths}}、ほか +{{count}} 件", + "discardFailed_other": "{{count}} 個のファイルの変更を破棄できませんでした", + "discardFailedWithSample": "{{error}} (例: {{paths}})", + "compareBaseCommitsAhead_other": "{{ref}} より {{count}} コミット進んでいます", + "compareBaseCommitsBehind_other": "{{ref}} より {{count}} コミット遅れています", + "branchFilesChangedVsBase_other": "{{ref}} と比べて {{count}} ファイルが変更されています", + "noteCount_other": "メモ {{count}} 件", + "comparingAgainstRef": "{{ref}} と比較中", + "commitsAheadShort_other": "{{count}} 件先行", + "unresolvedConflictOfKind": "未解決の競合 ({{kind}})", + "unresolvedConflict": "未解決の競合", + "locallyResolvedConflictOfKind": "ローカルで解決済みの競合 ({{kind}})", + "locallyResolvedConflict": "ローカルで解決済みの競合", + "pushesToForkTarget": "フォーク {{target}} にプッシュ", + "abortRebaseConfirmTitle": "リベースを中止しますか?", + "abortMergeConfirmTitle": "マージを中止しますか?", + "abortRebaseConfirmDescription": "進行中のリベースを中止します。このリベース中に行った競合の解決が破棄される場合があります。", + "abortMergeConfirmDescription": "進行中のマージを中止します。このマージ中に行った競合の解決が破棄される場合があります。", + "abortRebaseFailedFallback": "リベースを中止できませんでした", + "abortMergeFailedFallback": "マージを中止できませんでした", + "abortRebaseFailed": "リベースの中止に失敗しました", + "abortMergeFailed": "マージの中止に失敗しました", + "clearNotesFromWorkspace_other": "このワークスペースから {{count}} 件のメモを削除しますか?", + "clearNotesFromFile_other": "{{path}} から {{count}} 件のメモを削除しますか?" }, "SourceControlAgentActionDialog": { "8e856842d1": "選択した Agent を開始できませんでした。", "c075d00de1": "ワークスペースの接続を解決できません。", "808cfe0a3b": "このリポジトリのみに保存", "994cddd1f7": "保存しないでください", - "38b899cc02": "すべてのリポジトリ" + "38b899cc02": "すべてのリポジトリ", + "agentNotEnabledOrDetected": "{{agent}} は、このワークスペースのホストで有効になっていないか、検出されませんでした。", + "workspaceConnectionUnresolved": "ワークスペースの接続を解決できません。", + "noEnabledAgentsDetected": "このワークスペースのホストで有効な Agent が検出されませんでした。", + "startAgent": "Agent を起動" }, "SourceControlAgentActionDialogForm": { "7ec6abbf2a": "リセット", @@ -12707,9 +12763,6 @@ "cbcc4ab3db": "最初の 100 件のチェックを表示しています", "0dca6bfab5": "オープンチェックの詳細", "991f50c7e4": "まだチェックは報告されていません", - "9ad98f2a17": "保留中", - "5e52f4ef7f": "失敗", - "02ca4f9074": "合格", "e15a8b77ef": "このチェックではインライン詳細は利用できません。", "679bf2093c": "ログの末尾をコピーする", "d713f500b2": "ログテール (最後の 200 行)", @@ -12726,7 +12779,6 @@ "1f2b980522": "チェックの詳細を読み込んでいます…", "0c96cd25e5": "解決", "3a71a6ed0b": "チェックとマージが完了する前に競合を解決してください。", - "60186d8498": "競合によりこれがブロックされます", "c16762ac8c": "以下のチェックとコメントは、現在取得されているコンテキストを示しています。", "9d0e7bcefc": "PR 操作をブロックしない", "5856874b59": "Orca は、このパネルが開いている間、チェックを更新します。", @@ -12751,7 +12803,6 @@ "084c516efb": "コマンドをコピー", "5dc3af25c0": "コメントを選択", "d7a2f9c401": "未解決の {{value0}} コメントを送信", - "d91f2a6c39": "キュー内の {{value0}} 件のコメントを AI に送信", "a6de3e5a20": "キュー内のコメントをクリア", "f8a2c91d04": "Agent のキューに追加", "b4e8a1c902": "キュー待ち", @@ -12766,7 +12817,6 @@ "b3195cba33": "作成者のボット指定を解除", "f588b46a6c": "作成者をボットとして指定", "e45324fbed": "チェック詳細の読み込みに失敗しました。", - "checksUnresolvedChip": "未解決", "checksUnresolvedStripHint": "これらのチェックは、合格または不合格の判定なしで終了しました。", "dcb3c546fe": "再試行", "commitsBehind_one": "{{count}} コミット遅れ", @@ -12777,7 +12827,23 @@ "pendingChecks_one": "保留中のチェック {{count}} 件", "pendingChecks_other": "保留中のチェック {{count}} 件", "unresolvedChecks_one": "未解決のチェック {{count}} 件", - "unresolvedChecks_other": "未解決のチェック {{count}} 件" + "unresolvedChecks_other": "未解決のチェック {{count}} 件", + "passingCount_other": "{{count}} 件合格", + "failingCount_other": "{{count}} 件失敗", + "pendingCount_other": "{{count}} 件保留中", + "unresolvedCount_other": "{{count}} 件未解決", + "sendQueuedCommentsToAi_other": "キュー内の {{count}} 件のコメントを AI に送信", + "conflictsBlockThisMr": "競合によりこの MR がブロックされています", + "conflictsBlockThisPr": "競合によりこの PR がブロックされています", + "copyComment": "コメントをコピー", + "sendComment": "送信", + "commentingRequiresGitHubPrTarget": "コメントするには、GitHub PR の対象リポジトリが必要です。", + "selectWorkspaceBeforeAiAction": "AI 操作を開始する前に、ワークスペースを選択してください。", + "operation": { + "rebase": "リベース", + "merge": "マージ", + "cherryPick": "チェリーピック" + } }, "empty": { "state": { @@ -13184,8 +13250,7 @@ }, "compare": { "summary": { - "commitsAheadSingular": "{{ref}}より{{count}}コミット進んでいます", - "commitsAheadPlural": "{{ref}}より{{count}}コミット進んでいます" + "commitsAhead_other": "{{ref}} より {{count}} コミット進んでいます" } }, "conflict": { @@ -13268,8 +13333,9 @@ "folderLinksOutsideProject": "このフォルダーはプロジェクト外へのリンクのため、ここでは開けません。" }, "useFileExplorerImport": { - "25919b2050": "{{value0}} {{value1}} をスキップしました。", - "132fd0e1e9": "{{value0}} {{value1}} のインポートに失敗しました。" + "importFailedCount_other": "{{count}} 個のファイルのインポートに失敗しました。", + "importSkippedCount_other": "{{count}} 個のファイルをスキップしました。", + "importFailed": "ファイルのインポートに失敗しました。" }, "useFileExplorerKeys": { "8adb953095": "操作が失敗しました" @@ -13306,7 +13372,6 @@ "refreshSessionHistory": "セッション履歴を更新", "searchSessions": "セッションを検索", "clearSearch": "検索をクリア", - "transcriptsSkipped": "{{count}} 件のトランスクリプトをスキップしました", "noAgentSessionsFound": "Agent のセッションが見つかりません", "noSessionsMatchFilters": "現在の絞り込み条件に一致するセッションはありません", "noAgentsSelected": "Agent が選択されていません", @@ -13326,7 +13391,8 @@ "resumeInChatFailed": "新規チャットでこのセッションを再開できませんでした。", "resumeInNewCliUnavailable": "このセッションは CLI で開けません。", "resumeInNewCliHostTooOld": "このチャットを新しい CLI で再開するには、チャットを実行しているホストの Orca を更新してください。", - "folderWorkspaceUnavailable": "フォルダーワークスペースは利用できなくなりました。" + "folderWorkspaceUnavailable": "フォルダーワークスペースは利用できなくなりました。", + "transcriptsSkippedCount_other": "{{count}} 件のトランスクリプトをスキップしました" }, "AiVaultPanelControls": { "scanningSessions": "セッションをスキャンしています", @@ -13372,11 +13438,8 @@ "sessionRole": "セッション", "worktree": "ワークツリー", "conversationNotSaved": "会話が保存されていません", - "recoverableEmptyDetail": "このセッションには保存された会話がありませんが、{{value0}} 件の復元可能な項目が残っています。", "recoverableEmptyOpenLogHint": "ログを開いて復元できます。", "emptyConversationDetail": "このセッションには保存された会話がなく、再開できません。", - "queuedMessages": "キュー内のメッセージ {{value0}} 件", - "subagentTranscripts": "サブ Agent の履歴 {{value0}} 件", "prompt": "プロンプト", "firstPrompt": "最初のプロンプト", "recentPrompt": "最近のプロンプト", @@ -13390,7 +13453,10 @@ "noFirstPromptAvailable": "最初のプロンプトはありません", "loadingFirstPrompt": "最初のプロンプトを読み込み中…", "folder": "フォルダー", - "resumeInFolder": "フォルダーで再開" + "resumeInFolder": "フォルダーで再開", + "recoverableEmptyDetailCount_other": "このセッションには保存された会話がありませんが、{{count}} 件の復元可能な項目が残っています。", + "queuedMessageCount_other": "キュー内のメッセージ {{count}} 件", + "subagentTranscriptCount_other": "サブ Agent のトランスクリプト {{count}} 件" }, "AiVaultSessionRow": { "resumeInNewTab": "新規タブで再開", @@ -13524,26 +13590,21 @@ "confirmation": { "84f6f5b9eb": "含まれるもの: {{numbers}}。", "541984b2eb": "#{{pr}} をキューに入れますか?", - "4809f55cdb": "{{included}}GitHub は、{{count}} PR を一緒にマージキューに追加します。キューはマージ方法を選択し、それらを別のグループにマージする場合があります。", - "be8f2621be": "{{included}}GitHub は、{{count}} PR をまとめてマージキューに追加します。キューはマージ方法を選択し、それらを別のグループにマージする場合があります。", - "92ca033e72": "キュー {{count}} PR", - "478a527b15": "{{count}} PR をキューに入れる", "1feef35ca4": "#{{pr}} を介してマージしますか?", - "c3e036c99f": "{{included}}GitHub は、{{method}} を使用して {{count}} PR をアトミックにマージします。マージできない場合は、何もマージされません。", - "369aba4b32": "{{included}}GitHub は、{{method}} を使用して {{count}} PR をアトミックにマージします。どれかがマージできない場合、どれもマージできません。", - "493c78f521": "{{count}} PR をマージ", - "eb7051d268": "{{count}} PR をマージする" + "queueDescription_other": "{{included}}GitHub は {{count}} 件の PR をまとめてマージキューに追加します。キューはマージ方法を選択し、別々のグループに分けてマージする場合があります。", + "queueConfirm_other": "{{count}} 件の PR をキューに入れる", + "mergeDescription_other": "{{included}}GitHub は {{method}} を使用して {{count}} 件の PR をアトミックにマージします。いずれかをマージできない場合、どの PR もマージされません。", + "mergeConfirm_other": "{{count}} 件の PR をマージ" }, "merge": { - "55ae29b907": "#{{pr}} · {{count}} PR を介してマージ", - "b8446f6ec2": "#{{pr}} · {{count}} PR を介してマージ", "189d0ec614": "#{{pr}} はまだ下書きです。", "640fb50d9c": "#{{pr}} は閉店しています。", "46ffcbda75": "#{{pr}} にはマージ競合があります。", "6dabefd63e": "#{{pr}} が変更をリクエストしました。", "2bb21fc326": "#{{pr}} はまだレビューの承認が必要です。", "c23faf74df": "#{{pr}} を更新する必要があります。", - "f561e80968": "#{{pr}} はブロックされています。" + "f561e80968": "#{{pr}} はブロックされています。", + "mergeThroughLabel_other": "#{{pr}} まで含めてマージ · {{count}} 件の PR" } } } @@ -13600,14 +13661,14 @@ "sourceActionsUnavailable": "トランスクリプトのソースが利用できません。" }, "AiVaultScanProgressStrip": { - "agentChecked": "{{agent}}: 履歴候補 {{total}} 件中 {{settled}} 件を確認済み", "fileCount_one": "{{value0}} 個のファイル", "fileCount_other": "{{value0}} 個のファイル", "databaseCount_one": "{{value0}} 個のデータベース", "databaseCount_other": "{{value0}} 個のデータベース", "scanning": "{{value0}}をスキャン中", "checking": "{{value0}} を確認中", - "scanned": "{{value0}}をスキャン済み" + "scanned": "{{value0}}をスキャン済み", + "agentCheckedCount_other": "{{agent}}: 履歴候補 {{total}} 件中 {{settled}} 件を確認済み" }, "run": { "source": { @@ -13636,6 +13697,14 @@ } } } + }, + "fileExplorerMultiDrag": { + "moreItems_other": "ほか +{{count}} 件" + }, + "CreatePullRequest": { + "createInProgress": "PR を作成中…", + "workspaceHostUnresolved": "ワークスペースのホストを特定できません。ワークスペースを更新して再試行してください。", + "branchDiscoveryFailed": "ブランチの検出に失敗しました。" } } }, @@ -15486,7 +15555,9 @@ "6978871a3d": "オープン", "cce596969e": "メモの削除", "cad3384faa": "メモを編集する", - "508ee678a5": "ブラウザで開く" + "508ee678a5": "ブラウザで開く", + "noteAuthorFallback": "メモ", + "sentMeta": "送信済み" }, "DiffCommentPopover": { "2b3ce6d394": "キャンセル", @@ -15499,6 +15570,9 @@ }, "useDiffCommentDecorator": { "995fa28b50": "このメモ" + }, + "diffCommentZoneCard": { + "noteAlreadySent": "メモは送信済みです" } } }, @@ -16741,10 +16815,9 @@ "rightSidebar": { "FolderWorkspaceWorktreesPanel": { "unavailable": "ワークスペースは、フォルダーワークスペースの場合にのみ表示されます。", - "countOne": "紐づくワークツリー 1 件", - "countMany": "紐づくワークツリー {{value0}} 件", "emptyTitle": "紐づくワークツリーはまだありません", - "emptyCopy": "このワークスペースから作成したワークツリーが、ここに表示されます。" + "emptyCopy": "このワークスペースから作成したワークツリーが、ここに表示されます。", + "attachedCount_other": "紐づくワークツリー {{count}} 件" }, "FolderWorkspacePrChecksPanel": { "unavailable": "PR チェックはフォルダーワークスペースでのみ表示されます。", @@ -16756,12 +16829,9 @@ "hideDetails": "{{value0}} の PR チェック詳細を非表示", "reviewChecks": "レビューのチェック", "allChecksPassing": "すべてのチェックが成功", - "oneWorktree": "1 件のワークツリー", - "worktreeCount": "{{value0}} 件のワークツリー", - "oneFailing": "1 件失敗", - "failingCount": "{{value0}} 件失敗", - "onePending": "保留中 1 件", - "pendingCount": "{{value0}} 件保留中" + "worktreeCountLabel_other": "{{count}} 件のワークツリー", + "failingCountLabel_other": "{{count}} 件失敗", + "pendingCountLabel_other": "{{count}} 件保留中" }, "parentPrChecks": { "rowSummary": { @@ -19580,8 +19650,6 @@ }, "sessionSearch": { "panel": { - "resultsOne": "{{count}} 結果", - "resultsOther": "{{count}} の結果", "noMatches": "インデックス付けされた履歴に一致するセッションがありません。別のクエリまたはスコープを試してください。", "loadMore": "さらに一致をロードする", "indexedHistory": "インデックス付き履歴", @@ -19602,12 +19670,21 @@ "retry": "再試行", "scopeUnknown": "このコンピュータにはこのワークスペースまたはプロジェクトがありません。範囲を [すべて] に切り替えて、その範囲内のすべてを検索します。", "sortSessionsAriaLabel": "セッションの並べ替え: {{value0}}", - "sessionsOne": "{{count}} セッション", - "sessionsOther": "{{count}} セッション", - "sessionsOfLoaded": "{{value0}}/{{value1}} セッション", "showMoreSessions": "さらにセッションを表示", "loadingMoreSessions": "さらにセッションを読み込んでいます…", - "unsupportedAgent": "このコンピュータは、選択した Agent の履歴検索をサポートしていません。そのコンピュータで Orca を更新するか、別の Agent を選択します。" + "unsupportedAgent": "このコンピュータは、選択した Agent の履歴検索をサポートしていません。そのコンピュータで Orca を更新するか、別の Agent を選択します。", + "resultCount_other": "{{count}} 件の結果", + "sessionCount_other": "{{count}} セッション", + "sessionsShownOfLoaded_other": "{{shown}} / {{count}} セッション", + "hostSkipReason": { + "indexChanged": "インデックスが変更されました", + "searchOff": "検索が無効", + "notReady": "準備未完了", + "unavailable": "利用不可", + "unreachable": "接続不可", + "scopeNotFound": "そのホストに検索範囲が見つかりません", + "agentNotSupported": "Agent 未対応" + } } }, "sessionHistory": { @@ -20126,8 +20203,8 @@ "rateLimited": "GitHub のレート制限に達しました。数分後にもう一度お試しください。", "network": "ネットワークエラー — 接続を確認してください。", "tooLargeUnknownCount": "このビューはアイテムが多すぎて Orca で表示できません。GitHub でビューのフィルターを絞り込んでください。", - "tooLarge": "このビューには {{itemCount}} 件のアイテムがあり、Orca で表示するには多すぎます。GitHub でビューのフィルターを絞り込んでください。", - "schemaDriftDetail": "このプロジェクトビューを読み取れませんでした: {{detail}}。" + "schemaDriftDetail": "このプロジェクトビューを読み取れませんでした: {{detail}}。", + "tooLargeCount_other": "このビューには {{count}} 件のアイテムがあり、Orca で表示するには多すぎます。GitHub でビューのフィルターを絞り込んでください。" }, "columns": { "type": "タイプ" diff --git a/src/renderer/src/i18n/locales/ko.json b/src/renderer/src/i18n/locales/ko.json index bb09404e3eb..8136eccf0a1 100644 --- a/src/renderer/src/i18n/locales/ko.json +++ b/src/renderer/src/i18n/locales/ko.json @@ -1498,9 +1498,6 @@ "3fdf777817": "GitHub에서 열기", "c43fe79ee0": "GitHub 링크 복사", "0caac1a18f": "PR에서 워크스페이스 시작", - "8223320f8d": "업데이트됨", - "10ef1afb8e": "· 업데이트됨", - "55962099bc": "이 이슈를 열었습니다", "0ab4664a8b": "이슈에서 워크스페이스 시작", "36182aa57f": "새 워크스페이스 시작", "fe6ff12dc2": "추가 이슈 워크스페이스 작업", @@ -1573,8 +1570,6 @@ "52b20b56f7": "설명", "4d555d3796": "설명 수정", "9df4e74bdf": "저장", - "0ae387d8ca": "작성자", - "228e2f59d3": "해결됨", "a154ec5224": "GitHub에서 댓글 열기", "bca8eb39ac": "댓글에 답장하기", "68cb993d61": "해결됨", @@ -1590,7 +1585,6 @@ "d43736d09c": "코드 컨텍스트 컨트롤", "bd7be7b1fd": "댓글 L", "db61d76cd5": "코드 컨텍스트 로드 중…", - "f2d02cdf8c": "본 파일", "1257d1435d": "파일 트리 표시", "a341343303": "리뷰 댓글이 추가되었습니다.", "d1fa2cf888": "PR 헤드 SHA가 없으면 댓글을 달 수 없습니다.", @@ -1630,8 +1624,6 @@ "ec5c4b3ab2": "PR 다시 열기", "21860b58d0": "PR 닫기", "5932578f51": "병합하려면 등록된 로컬 repo가 필요합니다.", - "e2bf3e41a9": "댓글", - "28d0d3374f": "스레드", "080d071d48": "@{{value0}}에 답장", "86f809e2ce": "이 리뷰 스레드에 답변하기", "136542c9ba": ":L{{value0}}", @@ -1661,7 +1653,9 @@ "from": "from", "to": "to", "activity": "활동", - "noActivity": "아직 활동이 없습니다." + "noActivity": "아직 활동이 없습니다.", + "pullRequestReference": "PR #{{number}}", + "issueReference": "이슈 #{{number}}" }, "checkActionRequiredHint": "머지 차단을 해제하려면 GitHub에서 수동 작업(예: 실행 승인)이 필요합니다.", "e15a8b77ef": "이 검사에는 인라인 세부정보가 없습니다.", @@ -1675,8 +1669,13 @@ "09d67a0f9b": "PR을 닫지 못했습니다.", "88809e79db": "PR을 다시 열지 못했습니다.", "00f55cc17b": "이 PR에는 저장소 액세스를 사용할 수 없습니다.", - "reactionCountSingular": "{{reaction}} 반응 {{count}}개", - "reactionCountPlural": "{{reaction}} 반응 {{count}}개" + "reactionCount_other": "{{reaction}} 반응 {{count}}개", + "filesViewed_other": "파일 {{viewed}} / {{count}}개 확인", + "updatedRelativeTime": "{{time}} 업데이트됨", + "authorOpenedThisIssue": " 님이 이 이슈를 열었습니다", + "middotUpdatedRelativeTime": "· {{time}} 업데이트됨", + "resolvedThreadBy": "{{author}} 님의 해결된 스레드", + "resolvedCommentBy": "{{author}} 님의 해결된 댓글" }, "GitLabItemDialog": { "65e784c1f1": "다시 열기", @@ -1732,14 +1731,13 @@ "f23ea85341": "해결됨", "6de8ce0cc6": "{{value0}} 필요", "22511537d2": "승인됨", - "00f3bab87b": " / 총 {{value0}}개 필요", "3a051b8ade": "작업 항목", "32f8bef818": "로그 출력이 없습니다.", "4168eb2c51": "해결", "commentTooLarge": "댓글이 너무 길어 안전하게 제출할 수 없습니다.", "gitlabActionFailed": "GitLab 작업이 실패했습니다.", - "approvalsRemainingSingular": "승인 {{count}}개 남음", - "approvalsRemainingPlural": "승인 {{count}}개 남음" + "approvalsRemainingOfRequired_other": "필요한 승인 {{required}}개 중 {{count}}개 남음", + "approvalsRemaining_other": "승인 {{count}}개 남음" }, "JiraIssueWorkspace": { "b0b92666c9": "댓글", @@ -2063,9 +2061,6 @@ "778683ec84": "설명", "da9aaa8bcf": "설명 수정", "4a337ac05f": "저장", - "169a93b29a": "업데이트됨", - "3c891789f6": "작성자", - "f4fe47c2bb": "해결됨", "0ac19bb52e": "GitHub에서 댓글 열기", "d6c6679de7": "댓글에 답장하기", "76b2a0ac5b": "해결됨", @@ -2073,7 +2068,6 @@ "6885c619e7": "repos 경로가 없으면 답글을 달 수 없습니다.", "d94810f652": "설명을 업데이트하지 못했습니다.", "9b4190dc98": "설명이 업데이트되었습니다.", - "89e80af1c7": "본 파일", "319cf2d54b": "파일 트리 표시", "eff839f438": "리뷰 댓글이 추가되었습니다.", "d8c3ba91c4": "PR 헤드 SHA가 없으면 댓글을 달 수 없습니다.", @@ -2111,8 +2105,6 @@ "9d5425918e": "PR 다시 열기", "96d013ed28": "PR 닫기", "eca289e593": "병합하려면 등록된 로컬 repo가 필요합니다.", - "e01e34f5fa": "댓글", - "345b68254c": "스레드", "31a7b202f2": "@{{value0}}에 답장", "408e634fbb": "이 리뷰 스레드에 답변하기", "34b9f7c264": ":L{{value0}}", @@ -2138,7 +2130,18 @@ "diffLoadTimedOut": "이 diff를 불러오는 데 시간이 초과되었습니다.", "6b1d5ee3e4": "이 검사에는 인라인 세부정보가 없습니다.", "e04c027d98": "검사 세부정보를 로드하지 못했습니다.", - "5df7c41d2a": "다시 시도" + "5df7c41d2a": "다시 시도", + "filesViewed_other": "파일 {{viewed}} / {{count}}개 확인", + "updatedRelativeTime": "{{time}} 업데이트됨", + "resolvedThreadBy": "{{author}} 님의 해결된 스레드", + "resolvedCommentBy": "{{author}} 님의 해결된 댓글", + "mentionSource": { + "prAuthor": "PR 작성자", + "issueAuthor": "이슈 작성자", + "commenter": "댓글 작성자", + "participant": "참여자", + "teamMember": "팀원" + } }, "QuickOpen": { "1dbd3f59ff": "이동", @@ -2643,7 +2646,8 @@ "8f6cb3772f": "요구 사항이 충족되면 이 PR을 자동으로 병합합니다", "def355ff38": "병합 가능", "e42c5bae67": "GitHub에서는 이 PR을 병합할 수 있으며 체크를 통과했다고 합니다", - "cbf0113af6": "GitHub에서는 이 PR을 병합할 수 있다고 합니다" + "cbf0113af6": "GitHub에서는 이 PR을 병합할 수 있다고 합니다", + "autoMergeOn": "자동 병합 켜짐" } } }, @@ -2817,10 +2821,10 @@ "imageUrlTooLarge": "이미지 URL이 너무 큽니다." }, "IssueSourceSelector": { - "d6aeb2012b": "다음에서 이슈 표시", "787c970baf": "이슈 소스", "51d1608920": "origin", - "30b2c9df91": "업스트림" + "30b2c9df91": "업스트림", + "showingIssuesFromRepo": "의 이슈 표시 중" }, "PRFilterDropdowns": { "979be3cf6b": "담당자", @@ -2830,12 +2834,18 @@ "01f3f3d161": "작성자", "13b3ac0a84": "상태", "79c54552f7": "필터", - "8a2ffbf9b3": "{{value0}} 필터 제거" + "8a2ffbf9b3": "{{value0}} 필터 제거", + "anyState": "상관없음", + "currentUser": "현재 사용자" }, "PRFilterPickers": { - "fdf387297c": "지우기 (", "472c12ae03": "지우기", - "2d1f58eda6": "사용" + "pressEnterToUseValue": "입력한 값을 사용하려면 Enter를 누르세요.", + "useTypedValue": " 사용", + "clearSelected": "지우기 ({{count}})", + "loading": "로드 중…", + "searchTextTooLarge": "검색 텍스트가 너무 큽니다.", + "noMatches": "일치하는 항목 없음" }, "PRFilterSections": { "a00830d3f7": "사용자 없음", @@ -2845,7 +2855,6 @@ "458ea3602b": "작성자 없음", "b69fa4fa20": "뒤로", "30ebb6ca44": "모든 필터 지우기", - "8177eda37e": "필터", "ea3416d646": "담당자", "b1d9fdea08": "라벨", "24754c44ad": "작성자", @@ -2857,7 +2866,14 @@ "2b2f019091": "모든 상태", "0fd3249e2e": "닫힘", "d78b60b5c2": "열림", - "bd162b7d5a": "병합됨" + "bd162b7d5a": "병합됨", + "draft": "초안", + "labelCount_other": "라벨 {{count}}개", + "allStates": "모두", + "filterPullRequests": "PR 필터링", + "filterIssues": "이슈 필터링", + "filterOrTypeLogin": "필터링하거나 로그인 이름 입력...", + "filterLabels": "라벨 필터링..." }, "github": { "rate": { @@ -2868,15 +2884,14 @@ "d12d3d6f33": "GitHub API 예산 새로 고침", "d5e5de9070": "Orca는 GitHub CLI를 통해 REST, 검색 및 GraphQL을 사용합니다.", "58c5f88216": "GitHub API 예산", - "6da1858354": "남음 · 재설정까지", - "f42790d150": "/", "01f7323e58": "GraphQL API", "1daf0f22a9": "GraphQL", "1f2f28a4de": "검색 API", "c377a4f06a": "검색", "c392c749a6": "REST API", "bb227706a6": "REST", - "budget_scope_prefix": "예산 범위" + "budget_scope_prefix": "예산 범위", + "remainingOfLimitResetsIn": "{{limit}}개 중 {{remaining}}개 남음 · 재설정까지 {{reset}}" } } } @@ -2884,7 +2899,29 @@ "CommentReactions": { "addReaction": "반응 추가", "removeNamedReaction": "{{value0}} 반응 제거", - "addNamedReaction": "{{value0}} 반응 추가" + "addNamedReaction": "{{value0}} 반응 추가", + "reaction": { + "thumbsUp": "좋아요", + "thumbsDown": "싫어요", + "laugh": "웃음", + "confused": "혼란", + "heart": "하트", + "hooray": "만세", + "rocket": "로켓", + "eyes": "눈" + } + }, + "CommentCodeContext": { + "showSurroundingCodeBlock": "주변 코드 블록 표시", + "showNearbyCodeContext": "인접 코드 컨텍스트 표시" + }, + "prCheckPresentation": { + "successful": "성공", + "inProgress": "진행 중" + }, + "IssueSourceIndicator": { + "issueFromRepo": "의 이슈", + "issuesFromRepo": "의 이슈" } }, "linear": { @@ -12178,14 +12215,13 @@ "right": { "sidebar": { "BulkActionBar": { - "79a9f5f712": "언스테이지(", - "ef5f5bd06e": "스테이지에 올리기 (", - "60ed678138": "선택됨" + "selectedCount_other": "{{count}}개 선택됨", + "stageCount": "스테이지에 올리기 ({{count}})", + "unstageCount": "언스테이지 ({{count}})" }, "ChecksPanel": { "2ef90c9819": "실패한 검사에 대한 AI agent를 시작했습니다.", "a0181a8d76": "충돌에 대한 AI agent를 시작했습니다.", - "34464d00b9": "업데이트됨", "058039787c": "취소", "2ab7fd4b6d": "저장", "dda5924a40": "체크를 보려면 Git 브랜치와 호스팅 리뷰 컨텍스트가 필요합니다.", @@ -12231,7 +12267,8 @@ "430f1a62d4": "선택한 스레드를 호스트에서 해결하지 못했습니다.", "updateReactionFailed": "반응을 업데이트하지 못했습니다.", "gitlabMoreActions": "더 많은 MR 작업", - "gitlabLinkAnother": "다른 MR 연결" + "gitlabLinkAnother": "다른 MR 연결", + "reviewUpdatedAt": "{{review}} {{time}} 업데이트됨" }, "CreateHostedReviewComposer": { "741ff8a0d2": "푸시 및 생성 {{value0}}" @@ -12388,7 +12425,14 @@ "740aca88ab": "워크스페이스 포트 스캔에 실패했습니다.", "5be4f7f727": "포트 {{value0}} 메뉴", "1004af16ab": "{{value0}} 복사", - "153d3a8026": "워크스페이스 호스트를 알 수 없음" + "153d3a8026": "워크스페이스 호스트를 알 수 없음", + "unknownProcess": "알 수 없는 프로세스", + "containerOrForwardedService": "컨테이너 또는 포워딩된 서비스", + "unassigned": "할당되지 않음", + "remotePortOutOfRange": "원격 포트는 1–65535 범위여야 합니다", + "localPortOutOfRange": "로컬 포트는 1–65535 범위여야 합니다", + "localPortInUse": "포트 {{port}}은(는) 이미 사용 중입니다. 다른 로컬 포트를 선택하세요.", + "localPortRequiresPrivileges": "포트 {{port}}에는 관리자 권한이 필요합니다. 로컬 포트 ≥ 1024를 사용하세요." }, "Search": { "1abfb25a66": "파일에서 검색하려면 입력하세요.", @@ -12445,7 +12489,6 @@ "476b77745b": "기본 참조 변경", "ed34038d0d": "브랜치 비교 새로 고침", "493f963029": "기본 참조 변경", - "3278b2767b": "앞섬", "11b5dd8e41": "비교 대상", "a9bf7c171a": "Commit 실패", "011f9713fc": "Commit이 차단되었습니다.", @@ -12490,7 +12533,6 @@ "574d2f4413": "메모 지우기", "05bb8f4a48": "취소", "48db37cca9": "모두 보기", - "78ce2d37ac": "포크로 푸시", "c05fe04839": "{{value0}}의 포크로 푸시됩니다(origin 아님).", "c35baf2f1e": "파일 필터링…", "2fe2a67580": "더 많은 메모 작업", @@ -12498,14 +12540,12 @@ "cc474e0b8c": "메모", "e131cd7128": "소스 제어는 Git 리포지토리에서만 사용할 수 있습니다.", "c07b236287": "변경사항을 보려면 워크스페이스를 선택하세요.", - "dc5a6465fc": "{{value0}}(예: {{value1}}{{value2}})", "a5e5a11090": "모든 변경 사항 취소 실패 — 취소 전에 파일의 스테이징을 해제하지 못했습니다.", "8a5ba6a988": "commit 차이점을 로드하지 못했습니다.", "fe5bd1a610": "{{value0}} 생성 중...", "812cb992ee": "{{value0}}에서 열기", "eef5446523": "{{value0}} #{{value1}}은(는) 이미 열려 있습니다.", "0453ca3a9a": "{{value0}}이(가) 생성되었지만 Orca가 아직 새로 고칠 수 없습니다.", - "f99560ab29": "중단 {{value0}} 실패", "eae7a1da5f": "메모를 지우지 못했습니다.", "df5040e3c3": "언스테이지", "8cde1a2fb0": "스테이지", @@ -12533,8 +12573,6 @@ "aaf1451654": "초안 {{value0}} 만들기", "26511c22b4": "만드는 중...", "d7ae61269b": "브랜치에 Commit 됨", - "branchFilesChangedVsBaseOne": "{{ref}} 대비 파일 1개 변경됨", - "branchFilesChangedVsBaseOther": "{{ref}} 대비 파일 {{count}}개 변경됨", "48a003c1b1": "스테이징된 변경 사항", "d4ef4bafc5": "변경 사항", "9339382454": "모두 언스테이징", @@ -12544,7 +12582,6 @@ "72f2bea3f4": "메모 펼치기", "d13edef890": "메모 접기", "d6fb1df5fe": "{{value0}}이(가) 이미 열려 있습니다", - "05838cfdeb": "{{value0}} 충돌", "0b5b8c234c": "{{value0}} ({{value1}}) 열기", "d97ef8f221": "{{value0}}-{{value1}}줄", "6f8bfa0eb9": "{{value0}}줄", @@ -12557,7 +12594,6 @@ "5b176fa431": "양쪽에서 삭제됨", "31f6d46278": "미해결", "2c417432b7": "로컬에서 해결됨", - "d206117f90": "{{value0}} 충돌 ({{value1}})", "f3a8b2c1d0e5": "{{value0}} 제목을 입력하세요.", "e2b7a1c0d9f4": "{{value0}} 생성에 실패했습니다", "hugeRepoIgnorePrompt": "이 repos에 활성 변경 사항이 너무 많습니다. \"{{value0}}\"을(를) .gitignore에 추가하시겠습니까?", @@ -12598,10 +12634,6 @@ "b3c8f1a902": "파일 이름으로 필터링", "d4f8c2a901": "필터 지우고 닫기", "e8a1c4b203": "vs", - "compareBaseCommitsAheadOne": "{{ref}}보다 커밋 1개 앞서 있음", - "compareBaseCommitsAheadOther": "{{ref}}보다 커밋 {{count}}개 앞서 있음", - "compareBaseCommitsBehindOne": "{{ref}}보다 커밋 1개 뒤처짐", - "compareBaseCommitsBehindOther": "{{ref}}보다 커밋 {{count}}개 뒤처짐", "4b4a7de138": "브라우저에서 검토 페이지 열기", "createPrIntentCommitBlockedSummary": "커밋이 차단됨: {{value0}} 이슈를 수정한 후 PR 만들기를 다시 시도하세요.", "pushRecovery": { @@ -12632,17 +12664,41 @@ "diffCommentNotesCopyFailed": "메모를 복사하지 못했습니다.", "conflictCount_one": "충돌 {{count}}개", "conflictCount_other": "충돌 {{count}}개", - "discardFailedSingular": "파일 {{count}}개의 변경 사항을 버리지 못했습니다.", - "discardFailedPlural": "파일 {{count}}개의 변경 사항을 버리지 못했습니다.", - "noteCountSingular": "메모 {{count}}개", - "noteCountPlural": "메모 {{count}}개" + "discardFailedSampleMore_other": "{{paths}}, +{{count}}개 더", + "discardFailed_other": "파일 {{count}}개의 변경 사항을 버리지 못했습니다", + "discardFailedWithSample": "{{error}} (예: {{paths}})", + "compareBaseCommitsAhead_other": "{{ref}}보다 커밋 {{count}}개 앞서 있음", + "compareBaseCommitsBehind_other": "{{ref}}보다 커밋 {{count}}개 뒤처짐", + "branchFilesChangedVsBase_other": "{{ref}} 대비 파일 {{count}}개 변경됨", + "noteCount_other": "메모 {{count}}개", + "comparingAgainstRef": "{{ref}}와 비교 중", + "commitsAheadShort_other": "{{count}}개 앞섬", + "unresolvedConflictOfKind": "해결되지 않은 충돌 ({{kind}})", + "unresolvedConflict": "해결되지 않은 충돌", + "locallyResolvedConflictOfKind": "로컬에서 해결된 충돌 ({{kind}})", + "locallyResolvedConflict": "로컬에서 해결된 충돌", + "pushesToForkTarget": "포크 {{target}}에 푸시", + "abortRebaseConfirmTitle": "리베이스를 중단할까요?", + "abortMergeConfirmTitle": "병합을 중단할까요?", + "abortRebaseConfirmDescription": "진행 중인 리베이스를 취소하며, 이번 리베이스에서 수행한 충돌 해결 작업이 삭제될 수 있습니다.", + "abortMergeConfirmDescription": "진행 중인 병합을 취소하며, 이번 병합에서 수행한 충돌 해결 작업이 삭제될 수 있습니다.", + "abortRebaseFailedFallback": "리베이스를 중단하지 못했습니다", + "abortMergeFailedFallback": "병합을 중단하지 못했습니다", + "abortRebaseFailed": "리베이스 중단 실패", + "abortMergeFailed": "병합 중단 실패", + "clearNotesFromWorkspace_other": "이 워크스페이스에서 메모 {{count}}개를 지울까요?", + "clearNotesFromFile_other": "{{path}}에서 메모 {{count}}개를 지울까요?" }, "SourceControlAgentActionDialog": { "8e856842d1": "선택한 agent를 시작할 수 없습니다.", "c075d00de1": "워크스페이스 연결을 확인할 수 없습니다.", "808cfe0a3b": "이 repos", "994cddd1f7": "저장하지 않음", - "38b899cc02": "모든 리포지토리" + "38b899cc02": "모든 리포지토리", + "agentNotEnabledOrDetected": "{{agent}}: 이 워크스페이스 호스트에서 활성화되지 않았거나 감지되지 않았습니다.", + "workspaceConnectionUnresolved": "워크스페이스 연결을 확인할 수 없습니다.", + "noEnabledAgentsDetected": "이 워크스페이스 호스트에서 활성화된 에이전트가 감지되지 않았습니다.", + "startAgent": "에이전트 시작" }, "SourceControlAgentActionDialogForm": { "7ec6abbf2a": "재설정", @@ -12707,9 +12763,6 @@ "cbcc4ab3db": "처음 100개 검사 표시", "0dca6bfab5": "검사 세부 정보 열기", "991f50c7e4": "아직 보고된 체크가 없습니다.", - "9ad98f2a17": "보류 중", - "5e52f4ef7f": "실패", - "02ca4f9074": "통과", "e15a8b77ef": "이 검사에는 인라인 세부정보가 없습니다.", "679bf2093c": "로그 테일 복사", "d713f500b2": "로그 테일(마지막 200줄)", @@ -12726,7 +12779,6 @@ "1f2b980522": "검사 세부 정보 로드 중…", "0c96cd25e5": "해결", "3a71a6ed0b": "체크와 병합을 완료하려면 먼저 충돌을 해결하세요.", - "60186d8498": "충돌로 인해 차단됨", "c16762ac8c": "아래 체크와 댓글은 현재 가져온 컨텍스트를 보여줍니다.", "9d0e7bcefc": "차단 PR 조치 없음", "5856874b59": "Orca는 이 패널이 열려 있는 동안 검사를 새로 고칩니다.", @@ -12751,7 +12803,6 @@ "084c516efb": "Copy commands", "5dc3af25c0": "댓글 선택", "d7a2f9c401": "해결되지 않은 댓글 {{value0}}개 보내기", - "d91f2a6c39": "대기 중인 댓글 {{value0}}개를 AI로 보내기", "a6de3e5a20": "대기 중인 댓글 지우기", "f8a2c91d04": "에이전트 대기열에 추가", "b4e8a1c902": "Queued", @@ -12766,7 +12817,6 @@ "b3195cba33": "작성자의 봇 지정 해제", "f588b46a6c": "작성자를 봇으로 지정", "e45324fbed": "체크 세부 정보를 불러오지 못했습니다.", - "checksUnresolvedChip": "해결되지 않은", "checksUnresolvedStripHint": "이러한 검사는 통과 또는 실패 판정 없이 완료되었습니다.", "dcb3c546fe": "다시 시도", "commitsBehind_one": "커밋 {{count}}개 뒤처짐", @@ -12777,7 +12827,23 @@ "pendingChecks_one": "대기 중인 검사 {{count}}개", "pendingChecks_other": "대기 중인 검사 {{count}}개", "unresolvedChecks_one": "미해결 검사 {{count}}개", - "unresolvedChecks_other": "미해결 검사 {{count}}개" + "unresolvedChecks_other": "미해결 검사 {{count}}개", + "passingCount_other": "{{count}}개 통과", + "failingCount_other": "{{count}}개 실패", + "pendingCount_other": "{{count}}개 대기 중", + "unresolvedCount_other": "{{count}}개 미해결", + "sendQueuedCommentsToAi_other": "대기 중인 댓글 {{count}}개를 AI로 보내기", + "conflictsBlockThisMr": "충돌로 인해 이 MR이 차단됨", + "conflictsBlockThisPr": "충돌로 인해 이 PR이 차단됨", + "copyComment": "댓글 복사", + "sendComment": "보내기", + "commentingRequiresGitHubPrTarget": "댓글을 작성하려면 GitHub PR의 대상 저장소가 필요합니다.", + "selectWorkspaceBeforeAiAction": "AI 작업을 실행하기 전에 워크스페이스를 선택하세요.", + "operation": { + "rebase": "리베이스", + "merge": "병합", + "cherryPick": "체리픽" + } }, "empty": { "state": { @@ -13184,8 +13250,7 @@ }, "compare": { "summary": { - "commitsAheadSingular": "{{ref}}보다 커밋 {{count}}개 앞서 있음", - "commitsAheadPlural": "{{ref}}보다 커밋 {{count}}개 앞서 있음" + "commitsAhead_other": "{{ref}}보다 커밋 {{count}}개 앞서 있음" } }, "conflict": { @@ -13268,8 +13333,9 @@ "folderLinksOutsideProject": "이 폴더는 프로젝트 외부로 연결되어 있어 여기에서 열 수 없습니다." }, "useFileExplorerImport": { - "25919b2050": "{{value0}} {{value1}}을(를) 건너뛰었습니다.", - "132fd0e1e9": "{{value0}} {{value1}}을(를) 가져오지 못했습니다." + "importFailedCount_other": "파일 {{count}}개를 가져오지 못했습니다.", + "importSkippedCount_other": "파일 {{count}}개를 건너뛰었습니다.", + "importFailed": "파일을 가져오지 못했습니다." }, "useFileExplorerKeys": { "8adb953095": "작업 실패" @@ -13306,7 +13372,6 @@ "refreshSessionHistory": "세션 기록 새로고침", "searchSessions": "세션 검색", "clearSearch": "검색 지우기", - "transcriptsSkipped": "대화 기록 {{count}}개 건너뜀", "noAgentSessionsFound": "agent 세션을 찾을 수 없습니다", "noSessionsMatchFilters": "현재 필터와 일치하는 세션이 없습니다", "noAgentsSelected": "선택된 에이전트가 없습니다", @@ -13326,7 +13391,8 @@ "resumeInChatFailed": "새 채팅에서 이 세션을 재개할 수 없습니다.", "resumeInNewCliUnavailable": "이 세션은 CLI에서 열 수 없습니다.", "resumeInNewCliHostTooOld": "이 채팅을 새 CLI에서 재개하려면 채팅을 실행하는 호스트의 Orca를 업데이트하세요.", - "folderWorkspaceUnavailable": "폴더 워크스페이스는 더 이상 사용할 수 없습니다." + "folderWorkspaceUnavailable": "폴더 워크스페이스는 더 이상 사용할 수 없습니다.", + "transcriptsSkippedCount_other": "대화 기록 {{count}}개 건너뜀" }, "AiVaultPanelControls": { "scanningSessions": "세션 스캔 중", @@ -13372,11 +13438,8 @@ "sessionRole": "세션", "worktree": "작업 트리", "conversationNotSaved": "대화가 저장되지 않음", - "recoverableEmptyDetail": "이 세션에는 저장된 대화가 없지만 복구 가능한 항목이 {{value0}}개 남아 있습니다.", "recoverableEmptyOpenLogHint": "로그를 열어 복구하세요.", "emptyConversationDetail": "이 세션에는 저장된 대화가 없어 재개할 수 없습니다.", - "queuedMessages": "대기 중인 메시지 {{value0}}개", - "subagentTranscripts": "서브에이전트 대화 기록 {{value0}}개", "prompt": "프롬프트", "firstPrompt": "첫 프롬프트", "recentPrompt": "최근 프롬프트", @@ -13390,7 +13453,10 @@ "noFirstPromptAvailable": "첫 프롬프트를 사용할 수 없습니다", "loadingFirstPrompt": "첫 프롬프트를 불러오는 중…", "folder": "폴더", - "resumeInFolder": "폴더에서 재개" + "resumeInFolder": "폴더에서 재개", + "recoverableEmptyDetailCount_other": "이 세션에는 저장된 대화가 없지만 복구 가능한 항목이 {{count}}개 남아 있습니다.", + "queuedMessageCount_other": "대기 중인 메시지 {{count}}개", + "subagentTranscriptCount_other": "서브에이전트 대화 기록 {{count}}개" }, "AiVaultSessionRow": { "resumeInNewTab": "새 탭에서 재개", @@ -13524,26 +13590,21 @@ "confirmation": { "84f6f5b9eb": "포함됨: {{numbers}}.", "541984b2eb": "#{{pr}}을(를) 통해 대기열에 등록하시겠습니까?", - "4809f55cdb": "{{included}}GitHub는 병합 대기열에 {{count}} PR을 함께 추가합니다. 대기열은 병합 방법을 선택하고 이를 별도의 그룹으로 병합할 수 있습니다.", - "be8f2621be": "{{included}}GitHub는 병합 대기열에 {{count}} PR을 함께 추가합니다. 대기열은 병합 방법을 선택하고 이를 별도의 그룹으로 병합할 수 있습니다.", - "92ca033e72": "대기열 {{count}} PR", - "478a527b15": "대기열 {{count}} PR", "1feef35ca4": "#{{pr}}을(를) 통해 병합하시겠습니까?", - "c3e036c99f": "{{included}}GitHub는 {{method}}를 사용하여 {{count}} PR을 원자적으로 병합합니다. 병합할 수 없으면 아무것도 병합되지 않습니다.", - "369aba4b32": "{{included}}GitHub는 {{method}}를 사용하여 {{count}} PR을 원자적으로 병합합니다. 병합할 수 없는 경우에는 병합할 수 없습니다.", - "493c78f521": "{{count}} PR 병합", - "eb7051d268": "{{count}} PR 병합" + "queueDescription_other": "{{included}}GitHub는 PR {{count}}개를 병합 대기열에 함께 추가합니다. 대기열은 병합 방법을 선택하며 여러 그룹으로 나누어 병합할 수 있습니다.", + "queueConfirm_other": "PR {{count}}개를 대기열에 추가", + "mergeDescription_other": "{{included}}GitHub는 {{method}}를 사용하여 PR {{count}}개를 원자적으로 병합합니다. 하나라도 병합할 수 없으면 아무것도 병합되지 않습니다.", + "mergeConfirm_other": "PR {{count}}개 병합" }, "merge": { - "55ae29b907": "#{{pr}} · {{count}} PR을 통해 병합", - "b8446f6ec2": "#{{pr}} · {{count}} PR을 통해 병합", "189d0ec614": "#{{pr}}은 아직 초안입니다.", "640fb50d9c": "#{{pr}}이(가) 닫혔습니다.", "46ffcbda75": "#{{pr}}에 병합 충돌이 있습니다.", "6dabefd63e": "#{{pr}}님이 변경 사항을 요청했습니다.", "2bb21fc326": "#{{pr}}에는 아직 검토 승인이 필요합니다.", "c23faf74df": "#{{pr}}을(를) 업데이트해야 합니다.", - "f561e80968": "#{{pr}}이(가) 차단되었습니다." + "f561e80968": "#{{pr}}이(가) 차단되었습니다.", + "mergeThroughLabel_other": "#{{pr}}까지 포함하여 병합 · PR {{count}}개" } } } @@ -13600,14 +13661,14 @@ "sourceActionsUnavailable": "스크립트 소스를 사용할 수 없습니다." }, "AiVaultScanProgressStrip": { - "agentChecked": "{{agent}}: 기록 후보 {{total}}개 중 {{settled}}개 확인됨", "fileCount_one": "파일 {{value0}}개", "fileCount_other": "파일 {{value0}}개", "databaseCount_one": "데이터베이스 {{value0}}개", "databaseCount_other": "데이터베이스 {{value0}}개", "scanning": "{{value0}} 스캔 중", "checking": "{{value0}} 확인 중", - "scanned": "{{value0}} 스캔함" + "scanned": "{{value0}} 스캔함", + "agentCheckedCount_other": "{{agent}}: 기록 후보 {{total}}개 중 {{settled}}개 확인됨" }, "run": { "source": { @@ -13636,6 +13697,14 @@ } } } + }, + "fileExplorerMultiDrag": { + "moreItems_other": "+{{count}}개 더" + }, + "CreatePullRequest": { + "createInProgress": "PR 생성 중...", + "workspaceHostUnresolved": "워크스페이스 호스트를 확인할 수 없습니다. 워크스페이스를 새로 고친 후 다시 시도하세요.", + "branchDiscoveryFailed": "브랜치를 감지하지 못했습니다." } } }, @@ -15486,7 +15555,9 @@ "6978871a3d": "열기", "cce596969e": "메모 삭제", "cad3384faa": "메모 수정", - "508ee678a5": "브라우저에서 열기" + "508ee678a5": "브라우저에서 열기", + "noteAuthorFallback": "메모", + "sentMeta": "전송됨" }, "DiffCommentPopover": { "2b3ce6d394": "취소", @@ -15499,6 +15570,9 @@ }, "useDiffCommentDecorator": { "995fa28b50": "이 메모" + }, + "diffCommentZoneCard": { + "noteAlreadySent": "이미 보낸 메모" } } }, @@ -16741,10 +16815,9 @@ "rightSidebar": { "FolderWorkspaceWorktreesPanel": { "unavailable": "폴더 워크스페이스에서만 워크스페이스가 표시됩니다.", - "countOne": "연결된 워크트리 1개", - "countMany": "연결된 워크트리 {{value0}}개", "emptyTitle": "아직 연결된 워크트리가 없습니다", - "emptyCopy": "이 워크스페이스에서 만든 워크트리가 여기에 표시됩니다." + "emptyCopy": "이 워크스페이스에서 만든 워크트리가 여기에 표시됩니다.", + "attachedCount_other": "연결된 워크트리 {{count}}개" }, "FolderWorkspacePrChecksPanel": { "unavailable": "PR 검사는 폴더 워크스페이스에서만 표시됩니다.", @@ -16756,12 +16829,9 @@ "hideDetails": "{{value0}} PR 검사 세부 정보 숨기기", "reviewChecks": "리뷰 검사", "allChecksPassing": "모든 검사 통과", - "oneWorktree": "워크트리 1개", - "worktreeCount": "워크트리 {{value0}}개", - "oneFailing": "1개 실패", - "failingCount": "{{value0}}개 실패", - "onePending": "1개 대기 중", - "pendingCount": "{{value0}}개 대기 중" + "worktreeCountLabel_other": "워크트리 {{count}}개", + "failingCountLabel_other": "{{count}}개 실패", + "pendingCountLabel_other": "{{count}}개 대기 중" }, "parentPrChecks": { "rowSummary": { @@ -19580,8 +19650,6 @@ }, "sessionSearch": { "panel": { - "resultsOne": "{{count}} 결과", - "resultsOther": "{{count}} 결과", "noMatches": "색인화된 기록에 일치하는 세션이 없습니다. 다른 쿼리나 범위를 시도해 보세요.", "loadMore": "더 많은 경기 로드", "indexedHistory": "색인된 기록", @@ -19602,12 +19670,21 @@ "retry": "다시 시도하세요", "scopeUnknown": "이 컴퓨터에는 이 워크스페이스가나 프로젝트가 없습니다. 모든 항목을 검색하려면 범위를 모두로 전환하세요.", "sortSessionsAriaLabel": "세션 정렬: {{value0}}", - "sessionsOne": "{{count}} 세션", - "sessionsOther": "{{count}} 세션", - "sessionsOfLoaded": "{{value1}} 세션 중 {{value0}}", "showMoreSessions": "더 많은 세션 보기", "loadingMoreSessions": "추가 세션 로드 중…", - "unsupportedAgent": "이 컴퓨터는 선택한 에이전트에 대한 이력 검색을 지원하지 않습니다. 해당 컴퓨터에서 ORCA를 업데이트하거나 다른 에이전트를 선택하십시오." + "unsupportedAgent": "이 컴퓨터는 선택한 에이전트에 대한 이력 검색을 지원하지 않습니다. 해당 컴퓨터에서 ORCA를 업데이트하거나 다른 에이전트를 선택하십시오.", + "resultCount_other": "결과 {{count}}개", + "sessionCount_other": "세션 {{count}}개", + "sessionsShownOfLoaded_other": "세션 {{count}}개 중 {{shown}}개", + "hostSkipReason": { + "indexChanged": "인덱스 변경됨", + "searchOff": "검색 꺼짐", + "notReady": "준비되지 않음", + "unavailable": "사용할 수 없음", + "unreachable": "연결할 수 없음", + "scopeNotFound": "해당 호스트에서 검색 범위를 찾을 수 없음", + "agentNotSupported": "지원되지 않는 에이전트" + } } }, "sessionHistory": { @@ -20126,8 +20203,8 @@ "rateLimited": "GitHub 속도 제한에 도달했습니다. 몇 분 후 다시 시도하세요.", "network": "네트워크 오류 — 연결을 확인하세요.", "tooLargeUnknownCount": "이 보기는 항목이 너무 많아 Orca에서 렌더링할 수 없습니다. GitHub에서 보기 필터를 좁히세요.", - "tooLarge": "이 보기에는 항목이 {{itemCount}}개 있어 Orca에서 렌더링하기에는 너무 많습니다. GitHub에서 보기 필터를 좁히세요.", - "schemaDriftDetail": "이 프로젝트 보기를 읽을 수 없습니다: {{detail}}." + "schemaDriftDetail": "이 프로젝트 보기를 읽을 수 없습니다: {{detail}}.", + "tooLargeCount_other": "이 보기에는 항목이 {{count}}개 있어 Orca에서 표시하기에는 너무 많습니다. GitHub에서 보기 필터를 좁히세요." }, "columns": { "type": "유형" diff --git a/src/renderer/src/i18n/locales/pt.json b/src/renderer/src/i18n/locales/pt.json index e106c886578..601cd413f83 100644 --- a/src/renderer/src/i18n/locales/pt.json +++ b/src/renderer/src/i18n/locales/pt.json @@ -381,19 +381,29 @@ "enable": "Ativar", "retry": "Tentar novamente", "scopeUnknown": "Este computador não tem este espaço de trabalho ou projeto. Mude o escopo para Tudo para pesquisar tudo nele.", - "resultsOne": "{{count}} resultado", - "resultsOther": "{{count}} resultados", "sortRelevance": "Mais relevantes", "sortNewest": "Mais recentes", "sortResultsAriaLabel": "Ordenar resultados: {{value0}}", "titleOnly": "A busca no texto completo está desativada neste computador, então apenas os títulos das sessões são pesquisados.", "unsupportedAgent": "Este computador não oferece busca no histórico do agente selecionado. Atualize o Orca nesse computador ou selecione outro agente.", "sortSessionsAriaLabel": "Ordenar sessões: {{value0}}", - "sessionsOne": "{{count}} sessão", - "sessionsOther": "{{count}} sessões", - "sessionsOfLoaded": "{{value0}} de {{value1}} sessões", "showMoreSessions": "Mostrar mais sessões", - "loadingMoreSessions": "Carregando mais sessões…" + "loadingMoreSessions": "Carregando mais sessões…", + "resultCount_one": "{{count}} resultado", + "resultCount_other": "{{count}} resultados", + "sessionCount_one": "{{count}} sessão", + "sessionCount_other": "{{count}} sessões", + "sessionsShownOfLoaded_one": "{{shown}} de {{count}} sessão", + "sessionsShownOfLoaded_other": "{{shown}} de {{count}} sessões", + "hostSkipReason": { + "indexChanged": "índice alterado", + "searchOff": "busca desativada", + "notReady": "não está pronto", + "unavailable": "indisponível", + "unreachable": "inacessível", + "scopeNotFound": "escopo de busca não encontrado nesse host", + "agentNotSupported": "agente não compatível" + } } }, "menu": { @@ -8693,7 +8703,6 @@ "476b77745b": "Alterar Ref Base", "ed34038d0d": "Atualizar comparação de branch", "493f963029": "Alterar ref base", - "3278b2767b": "adiante", "11b5dd8e41": "Comparando com", "a9bf7c171a": "Falha no Commit", "011f9713fc": "Commit bloqueado", @@ -8738,7 +8747,6 @@ "574d2f4413": "Limpar Notas", "05bb8f4a48": "Cancelar", "48db37cca9": "Ver tudo", - "78ce2d37ac": "Envia (push) para o fork", "c05fe04839": "Envia (push) para o fork em {{value0}} (não o origin)", "c35baf2f1e": "Filtrar arquivos…", "2fe2a67580": "Mais ações de nota", @@ -8746,14 +8754,12 @@ "cc474e0b8c": "Notas", "e131cd7128": "O Controle de Versão está disponível somente para repositórios Git", "c07b236287": "Selecione um espaço de trabalho para ver as alterações", - "dc5a6465fc": "{{value0}} (e.g. {{value1}}{{value2}})", "a5e5a11090": "Falha ao descartar tudo — não foi possível remover os arquivos do stage antes de descartar", "8a5ba6a988": "Falha ao carregar o diff do commit", "fe5bd1a610": "Criando {{value0}}...", "812cb992ee": "Abrir em {{value0}}", "eef5446523": "{{value0}} #{{value1}} já está aberto", "0453ca3a9a": "{{value0}} criado, mas o Orca ainda não conseguiu atualizá-lo.", - "f99560ab29": "Falha ao abortar {{value0}}", "eae7a1da5f": "Falha ao limpar as notas.", "df5040e3c3": "Remover do stage", "8cde1a2fb0": "Adicionar ao stage", @@ -8781,8 +8787,6 @@ "aaf1451654": "Criar {{value0}} em rascunho", "26511c22b4": "Criando...", "d7ae61269b": "Commitado na Branch", - "branchFilesChangedVsBaseOne": "1 arquivo alterado em relação a {{ref}}", - "branchFilesChangedVsBaseOther": "{{count}} arquivos alterados em relação a {{ref}}", "48a003c1b1": "Alterações no Stage", "d4ef4bafc5": "Alterações", "9339382454": "Remover tudo do stage", @@ -8792,8 +8796,6 @@ "72f2bea3f4": "Expandir notas", "d13edef890": "Recolher notas", "d6fb1df5fe": "{{value0}} já está aberto", - "05838cfdeb": "{{value0}} conflito", - "d206117f90": "{{value0}} conflito ({{value1}})", "0b5b8c234c": "Abrir {{value0}} ({{value1}})", "d97ef8f221": "linhas {{value0}}-{{value1}}", "6f8bfa0eb9": "linha {{value0}}", @@ -8846,10 +8848,6 @@ "b3c8f1a902": "Filtrar arquivos por nome", "d4f8c2a901": "Limpar e fechar filtro", "e8a1c4b203": "vs", - "compareBaseCommitsAheadOne": "1 commit adiante de {{ref}}", - "compareBaseCommitsAheadOther": "{{count}} commits adiante de {{ref}}", - "compareBaseCommitsBehindOne": "1 commit atrás de {{ref}}", - "compareBaseCommitsBehindOther": "{{count}} commits atrás de {{ref}}", "4b4a7de138": "Abrir página de revisão no navegador", "createPrIntentCommitBlockedSummary": "Commit bloqueado: {{value0}} Corrija o problema e tente novamente Criar PR.", "pushRecovery": { @@ -8880,10 +8878,39 @@ "diffCommentNotesCopyFailed": "Falha ao copiar as notas", "conflictCount_one": "{{count}} conflito", "conflictCount_other": "{{count}} conflitos", - "discardFailedSingular": "Falha ao descartar {{count}} arquivo", - "discardFailedPlural": "Falha ao descartar {{count}} arquivos", - "noteCountSingular": "{{count}} nota", - "noteCountPlural": "{{count}} notas" + "discardFailedSampleMore_one": "{{paths}}, +{{count}} outro", + "discardFailedSampleMore_other": "{{paths}}, +{{count}} outros", + "discardFailed_one": "Falha ao descartar {{count}} arquivo", + "discardFailed_other": "Falha ao descartar {{count}} arquivos", + "discardFailedWithSample": "{{error}} (por exemplo, {{paths}})", + "compareBaseCommitsAhead_one": "{{count}} commit adiante de {{ref}}", + "compareBaseCommitsAhead_other": "{{count}} commits adiante de {{ref}}", + "compareBaseCommitsBehind_one": "{{count}} commit atrás de {{ref}}", + "compareBaseCommitsBehind_other": "{{count}} commits atrás de {{ref}}", + "branchFilesChangedVsBase_one": "{{count}} arquivo alterado em relação a {{ref}}", + "branchFilesChangedVsBase_other": "{{count}} arquivos alterados em relação a {{ref}}", + "noteCount_one": "{{count}} nota", + "noteCount_other": "{{count}} notas", + "comparingAgainstRef": "Comparando com {{ref}}", + "commitsAheadShort_one": "{{count}} adiante", + "commitsAheadShort_other": "{{count}} adiante", + "unresolvedConflictOfKind": "Conflito não resolvido ({{kind}})", + "unresolvedConflict": "Conflito não resolvido", + "locallyResolvedConflictOfKind": "Conflito resolvido localmente ({{kind}})", + "locallyResolvedConflict": "Conflito resolvido localmente", + "pushesToForkTarget": "Envia (push) para o fork {{target}}", + "abortRebaseConfirmTitle": "Abortar rebase?", + "abortMergeConfirmTitle": "Abortar merge?", + "abortRebaseConfirmDescription": "Isso cancela o rebase em andamento e pode descartar as resoluções de conflitos feitas durante este rebase.", + "abortMergeConfirmDescription": "Isso cancela o merge em andamento e pode descartar as resoluções de conflitos feitas durante este merge.", + "abortRebaseFailedFallback": "Não foi possível abortar o rebase", + "abortMergeFailedFallback": "Não foi possível abortar o merge", + "abortRebaseFailed": "Falha ao abortar o rebase", + "abortMergeFailed": "Falha ao abortar o merge", + "clearNotesFromWorkspace_one": "Limpar {{count}} nota deste espaço de trabalho?", + "clearNotesFromWorkspace_other": "Limpar {{count}} notas deste espaço de trabalho?", + "clearNotesFromFile_one": "Limpar {{count}} nota de {{path}}?", + "clearNotesFromFile_other": "Limpar {{count}} notas de {{path}}?" }, "checks": { "panel": { @@ -8907,10 +8934,6 @@ "cbcc4ab3db": "Mostrando as primeiras 100 verificações", "0dca6bfab5": "Abrir detalhes da verificação", "991f50c7e4": "Nenhuma verificação configurada", - "9ad98f2a17": "pendente", - "5e52f4ef7f": "com falha", - "02ca4f9074": "aprovada", - "checksUnresolvedChip": "não resolvido", "checksUnresolvedStripHint": "Estas verificações terminaram sem um veredito de aprovação ou falha.", "e15a8b77ef": "Nenhum detalhe inline está disponível para esta verificação.", "dcb3c546fe": "Tentar novamente", @@ -8929,7 +8952,6 @@ "1f2b980522": "Carregando detalhes da verificação…", "0c96cd25e5": "Resolver", "3a71a6ed0b": "Resolva os conflitos antes que as verificações e o merge possam ser concluídos.", - "60186d8498": "Conflitos bloqueiam isto", "c16762ac8c": "As verificações e comentários abaixo mostram o contexto obtido atual.", "9d0e7bcefc": "Nenhuma ação bloqueante de PR", "5856874b59": "O Orca vai atualizar as verificações enquanto este painel estiver aberto.", @@ -8954,7 +8976,6 @@ "084c516efb": "Copiar comandos", "5dc3af25c0": "Selecionar comentário", "d7a2f9c401": "Enviar {{value0}} comentários não resolvidos", - "d91f2a6c39": "Enviar {{value0}} comentários na fila para a IA", "a6de3e5a20": "Limpar comentários na fila", "f8a2c91d04": "Colocar na fila para o agente", "b4e8a1c902": "Na fila", @@ -8977,7 +8998,28 @@ "pendingChecks_one": "{{count}} verificação pendente", "pendingChecks_other": "{{count}} verificações pendentes", "unresolvedChecks_one": "{{count}} verificação não resolvida", - "unresolvedChecks_other": "{{count}} verificações não resolvidas" + "unresolvedChecks_other": "{{count}} verificações não resolvidas", + "passingCount_one": "{{count}} com sucesso", + "passingCount_other": "{{count}} com sucesso", + "failingCount_one": "{{count}} com falha", + "failingCount_other": "{{count}} com falha", + "pendingCount_one": "{{count}} pendente", + "pendingCount_other": "{{count}} pendentes", + "unresolvedCount_one": "{{count}} não resolvido", + "unresolvedCount_other": "{{count}} não resolvidos", + "sendQueuedCommentsToAi_one": "Enviar {{count}} comentário na fila para a IA", + "sendQueuedCommentsToAi_other": "Enviar {{count}} comentários na fila para a IA", + "conflictsBlockThisMr": "Conflitos bloqueiam este MR", + "conflictsBlockThisPr": "Conflitos bloqueiam este PR", + "copyComment": "Copiar comentário", + "sendComment": "Enviar", + "commentingRequiresGitHubPrTarget": "Para comentar, é necessário um repositório de destino para o PR do GitHub.", + "selectWorkspaceBeforeAiAction": "Selecione um espaço de trabalho antes de iniciar uma ação de IA.", + "operation": { + "rebase": "Rebase", + "merge": "Merge", + "cherryPick": "Cherry-pick" + } }, "empty": { "state": { @@ -9316,8 +9358,8 @@ }, "compare": { "summary": { - "commitsAheadSingular": "{{count}} commit adiante de {{ref}}", - "commitsAheadPlural": "{{count}} commits adiante de {{ref}}" + "commitsAhead_one": "{{count}} commit adiante de {{ref}}", + "commitsAhead_other": "{{count}} commits adiante de {{ref}}" } }, "conflict": { @@ -9367,11 +9409,8 @@ "latestTurns": "Últimos turnos", "noPreviewAvailable": "Nenhuma pré-visualização de conversa disponível", "conversationNotSaved": "Conversa não salva", - "recoverableEmptyDetail": "Esta sessão não tem conversa salva, mas {{value0}} item(ns) recuperável(is) sobrevive(m).", "recoverableEmptyOpenLogHint": "Abra o log para recuperá-los.", "emptyConversationDetail": "Esta sessão não tem conversa salva e não pode ser retomada.", - "queuedMessages": "{{value0}} mensagem(ns) na fila", - "subagentTranscripts": "{{value0}} transcrição(ões) de subagente", "resumeInWorktree": "Retomar em Worktree", "viewLog": "Ver Registro", "unknownTime": "Hora desconhecida", @@ -9400,7 +9439,13 @@ "noFirstPromptAvailable": "Nenhum primeiro prompt disponível", "loadingFirstPrompt": "Carregando primeiro prompt…", "folder": "Pasta", - "resumeInFolder": "Retomar na pasta" + "resumeInFolder": "Retomar na pasta", + "recoverableEmptyDetailCount_one": "Esta sessão não tem conversa salva, mas ainda resta {{count}} item recuperável.", + "recoverableEmptyDetailCount_other": "Esta sessão não tem conversa salva, mas ainda restam {{count}} itens recuperáveis.", + "queuedMessageCount_one": "{{count}} mensagem na fila", + "queuedMessageCount_other": "{{count}} mensagens na fila", + "subagentTranscriptCount_one": "{{count}} transcrição de subagente", + "subagentTranscriptCount_other": "{{count}} transcrições de subagentes" }, "PortsPanel": { "3ea4a02a8f": "Cancelar", @@ -9465,12 +9510,18 @@ "740aca88ab": "Falha na varredura de portas do espaço de trabalho.", "5be4f7f727": "Menu da porta {{value0}}", "1004af16ab": "Copiar {{value0}}", - "153d3a8026": "Host do espaço de trabalho desconhecido" + "153d3a8026": "Host do espaço de trabalho desconhecido", + "unknownProcess": "Processo desconhecido", + "containerOrForwardedService": "Contêiner ou serviço encaminhado", + "unassigned": "Não atribuído", + "remotePortOutOfRange": "A porta remota deve estar no intervalo 1–65535", + "localPortOutOfRange": "A porta local deve estar no intervalo 1–65535", + "localPortInUse": "A porta {{port}} já está em uso. Escolha outra porta local.", + "localPortRequiresPrivileges": "A porta {{port}} exige privilégios elevados. Use uma porta local ≥ 1024." }, "ChecksPanel": { "2ef90c9819": "Foi iniciado um agente de IA para as verificações com falha.", "a0181a8d76": "Foi iniciado um agente de IA para os conflitos.", - "34464d00b9": "atualizado", "058039787c": "Cancelar", "2ab7fd4b6d": "Salvar", "dda5924a40": "As verificações exigem uma branch Git e um contexto de review hospedado", @@ -9516,7 +9567,8 @@ "430f1a62d4": "Não foi possível resolver a thread selecionada no host.", "updateReactionFailed": "Falha ao atualizar a reação.", "gitlabMoreActions": "Mais ações de MR", - "gitlabLinkAnother": "Vincular outro MR" + "gitlabLinkAnother": "Vincular outro MR", + "reviewUpdatedAt": "{{review}} atualizado {{time}}" }, "FileExplorerRow": { "addc01145f": "Excluir", @@ -9562,7 +9614,6 @@ "refreshSessionHistory": "Atualizar Histórico de Sessões", "searchSessions": "Buscar sessões", "clearSearch": "Limpar busca", - "transcriptsSkipped": "{{count}} transcrição ignorada", "noAgentSessionsFound": "Nenhuma sessão de agente encontrada", "noSessionsMatchFilters": "Nenhuma sessão corresponde aos filtros atuais", "noAgentsSelected": "Nenhum agente selecionado", @@ -9581,7 +9632,9 @@ "resumeInChatFailed": "Não foi possível retomar esta sessão em um novo chat.", "resumeInNewCliUnavailable": "Esta sessão não pode ser aberta na CLI.", "resumeInNewCliHostTooOld": "Atualize o Orca no host que executa este chat para retomá-lo em uma nova CLI.", - "folderWorkspaceUnavailable": "O espaço de trabalho de pasta não está mais disponível." + "folderWorkspaceUnavailable": "O espaço de trabalho de pasta não está mais disponível.", + "transcriptsSkippedCount_one": "{{count}} transcrição ignorada", + "transcriptsSkippedCount_other": "{{count}} transcrições ignoradas" }, "AiVaultSessionRow": { "noPreviewAvailable": "Nenhuma pré-visualização de conversa disponível", @@ -9704,26 +9757,26 @@ "confirmation": { "84f6f5b9eb": "Incluídos: {{numbers}}. ", "541984b2eb": "Colocar na fila até #{{pr}}?", - "4809f55cdb": "{{included}}O GitHub vai adicionar {{count}} pull request à fila de merge junto. A fila escolhe o método de merge e pode mergeá-los em grupos separados.", - "be8f2621be": "{{included}}O GitHub vai adicionar {{count}} pull requests à fila de merge juntos. A fila escolhe o método de merge e pode mergeá-los em grupos separados.", - "92ca033e72": "Colocar {{count}} PR na Fila", - "478a527b15": "Colocar {{count}} PRs na Fila", "1feef35ca4": "Fazer merge até #{{pr}}?", - "c3e036c99f": "{{included}}O GitHub vai mergear {{count}} pull request atomicamente usando {{method}}. Se não conseguir mergear, nada será mergeado.", - "369aba4b32": "{{included}}O GitHub vai mergear {{count}} pull requests atomicamente usando {{method}}. Se algum não conseguir mergear, nenhum será mergeado.", - "493c78f521": "Mergear {{count}} PR", - "eb7051d268": "Mergear {{count}} PRs" + "queueDescription_one": "{{included}}O GitHub vai adicionar {{count}} pull request à fila de merge. A fila escolhe o método de merge e pode mergear os pull requests em grupos separados.", + "queueDescription_other": "{{included}}O GitHub vai adicionar {{count}} pull requests juntos à fila de merge. A fila escolhe o método de merge e pode mergeá-los em grupos separados.", + "queueConfirm_one": "Colocar {{count}} PR na fila", + "queueConfirm_other": "Colocar {{count}} PRs na fila", + "mergeDescription_one": "{{included}}O GitHub vai mergear {{count}} pull request atomicamente usando {{method}}. Se não for possível mergeá-lo, nada será mergeado.", + "mergeDescription_other": "{{included}}O GitHub vai mergear {{count}} pull requests atomicamente usando {{method}}. Se algum não puder ser mergeado, nenhum será mergeado.", + "mergeConfirm_one": "Mergear {{count}} PR", + "mergeConfirm_other": "Mergear {{count}} PRs" }, "merge": { - "55ae29b907": "Merge até #{{pr}} · {{count}} PR", - "b8446f6ec2": "Merge até #{{pr}} · {{count}} PRs", "189d0ec614": "#{{pr}} ainda é um rascunho.", "640fb50d9c": "#{{pr}} está fechado.", "46ffcbda75": "#{{pr}} tem conflitos de merge.", "6dabefd63e": "#{{pr}} tem alterações solicitadas.", "2bb21fc326": "#{{pr}} ainda precisa de aprovação de review.", "c23faf74df": "#{{pr}} precisa ser atualizado.", - "f561e80968": "#{{pr}} está bloqueado." + "f561e80968": "#{{pr}} está bloqueado.", + "mergeThroughLabel_one": "Mergear até #{{pr}} inclusive · {{count}} PR", + "mergeThroughLabel_other": "Mergear até #{{pr}} inclusive · {{count}} PRs" } } } @@ -9922,7 +9975,11 @@ "c075d00de1": "Não foi possível resolver a conexão do espaço de trabalho.", "38b899cc02": "Todos os repositórios", "808cfe0a3b": "Este repositório", - "994cddd1f7": "Não salvar" + "994cddd1f7": "Não salvar", + "agentNotEnabledOrDetected": "{{agent}} não está habilitado ou não foi detectado no host deste espaço de trabalho.", + "workspaceConnectionUnresolved": "Não foi possível identificar a conexão do espaço de trabalho.", + "noEnabledAgentsDetected": "Nenhum agente habilitado foi detectado no host deste espaço de trabalho.", + "startAgent": "Iniciar agente" }, "FileExplorer": { "79b1537dd3": "Selecione um espaço de trabalho para navegar pelos arquivos", @@ -9993,9 +10050,10 @@ "sourceActionsUnavailable": "A fonte da transcrição não está disponível." }, "BulkActionBar": { - "79a9f5f712": "Remover do Stage (", - "ef5f5bd06e": "Stage (", - "60ed678138": "selecionado(s)" + "selectedCount_one": "{{count}} selecionado", + "selectedCount_other": "{{count}} selecionados", + "stageCount": "Adicionar ao stage ({{count}})", + "unstageCount": "Remover do stage ({{count}})" }, "AiVaultSessionDeleteDialog": { "title": "Excluir esta sessão?", @@ -10070,8 +10128,11 @@ } }, "useFileExplorerImport": { - "25919b2050": "{{value0}} {{value1}} ignorado(s).", - "132fd0e1e9": "Falha ao importar {{value0}} {{value1}}." + "importFailedCount_one": "Falha ao importar {{count}} arquivo.", + "importFailedCount_other": "Falha ao importar {{count}} arquivos.", + "importSkippedCount_one": "{{count}} arquivo ignorado.", + "importSkippedCount_other": "{{count}} arquivos ignorados.", + "importFailed": "Falha ao importar arquivos." }, "GitHistoryRow": { "2f9c41ab07": "Mostrar arquivos no commit {{value0}}: {{value1}}", @@ -10103,8 +10164,9 @@ "databaseCount_other": "{{value0}} bancos de dados", "scanning": "Verificando {{value0}}", "scanned": "Verificação concluída: {{value0}}", - "agentChecked": "{{agent}}: {{settled}} de {{total}} candidatos do histórico verificados", - "checking": "Verificando {{value0}}" + "checking": "Verificando {{value0}}", + "agentCheckedCount_one": "{{agent}}: {{settled}} de {{total}} candidato do histórico verificado", + "agentCheckedCount_other": "{{agent}}: {{settled}} de {{total}} candidatos do histórico verificados" }, "run": { "source": { @@ -10133,6 +10195,15 @@ } } } + }, + "fileExplorerMultiDrag": { + "moreItems_one": "+{{count}} outro", + "moreItems_other": "+{{count}} outros" + }, + "CreatePullRequest": { + "createInProgress": "Criação do PR em andamento...", + "workspaceHostUnresolved": "Não foi possível resolver o host do espaço de trabalho. Atualize o espaço de trabalho e tente novamente.", + "branchDiscoveryFailed": "Falha na detecção de branches." } } }, @@ -14482,7 +14553,8 @@ "8f6cb3772f": "Mergear este pull request automaticamente quando os requisitos forem atendidos", "def355ff38": "Pode ser mergeado", "e42c5bae67": "O GitHub diz que este PR pode ser mergeado e as verificações passaram", - "cbf0113af6": "O GitHub diz que este PR pode ser mergeado" + "cbf0113af6": "O GitHub diz que este PR pode ser mergeado", + "autoMergeOn": "Merge automático ativado" } } }, @@ -14494,7 +14566,6 @@ "458ea3602b": "Nenhum autor", "b69fa4fa20": "Voltar", "30ebb6ca44": "Limpar todos os filtros", - "8177eda37e": "Filtro", "ea3416d646": "Responsável", "b1d9fdea08": "Rótulo", "24754c44ad": "Autor", @@ -14506,7 +14577,15 @@ "2b2f019091": "Qualquer estado", "0fd3249e2e": "Fechado", "d78b60b5c2": "Aberto", - "bd162b7d5a": "Mergeado" + "bd162b7d5a": "Mergeado", + "draft": "Rascunho", + "labelCount_one": "{{count}} rótulo", + "labelCount_other": "{{count}} rótulos", + "allStates": "Todos", + "filterPullRequests": "Filtrar pull requests", + "filterIssues": "Filtrar issues", + "filterOrTypeLogin": "Filtrar ou digitar um login...", + "filterLabels": "Filtrar rótulos..." }, "github": { "rate": { @@ -14517,15 +14596,14 @@ "d12d3d6f33": "Atualizar orçamento da API do GitHub", "d5e5de9070": "O Orca usa REST, Search e GraphQL através da CLI do GitHub.", "58c5f88216": "Orçamento da API do GitHub", - "6da1858354": "restante · redefine em", - "f42790d150": "de", "01f7323e58": "API GraphQL", "1daf0f22a9": "GraphQL", "1f2f28a4de": "API Search", "c377a4f06a": "Search", "c392c749a6": "API REST", "bb227706a6": "REST", - "budget_scope_prefix": "Escopo do orçamento" + "budget_scope_prefix": "Escopo do orçamento", + "remainingOfLimitResetsIn": "Restante: {{remaining}} de {{limit}} · redefinição em {{reset}}" } } } @@ -14549,23 +14627,51 @@ "01f3f3d161": "Autor", "13b3ac0a84": "Status", "79c54552f7": "Filtros", - "8a2ffbf9b3": "Remover filtro de {{value0}}" + "8a2ffbf9b3": "Remover filtro de {{value0}}", + "anyState": "Qualquer", + "currentUser": "Usuário atual" }, "IssueSourceSelector": { - "d6aeb2012b": "Mostrando issues de", "787c970baf": "Origem da issue", "51d1608920": "Origin", - "30b2c9df91": "Upstream" + "30b2c9df91": "Upstream", + "showingIssuesFromRepo": "Mostrando issues de " }, "PRFilterPickers": { - "fdf387297c": "Limpar (", "472c12ae03": "Limpar", - "2d1f58eda6": "Usar" + "pressEnterToUseValue": "Pressione Enter para usar o valor digitado.", + "useTypedValue": "Usar ", + "clearSelected": "Limpar ({{count}})", + "loading": "Carregando…", + "searchTextTooLarge": "O texto de busca é muito grande.", + "noMatches": "Nenhuma correspondência" }, "CommentReactions": { "addReaction": "Adicionar reação", "removeNamedReaction": "Remover reação {{value0}}", - "addNamedReaction": "Adicionar reação {{value0}}" + "addNamedReaction": "Adicionar reação {{value0}}", + "reaction": { + "thumbsUp": "polegar para cima", + "thumbsDown": "polegar para baixo", + "laugh": "risada", + "confused": "confusão", + "heart": "coração", + "hooray": "viva", + "rocket": "foguete", + "eyes": "olhos" + } + }, + "CommentCodeContext": { + "showSurroundingCodeBlock": "Mostrar bloco de código ao redor", + "showNearbyCodeContext": "Mostrar contexto de código próximo" + }, + "prCheckPresentation": { + "successful": "Bem-sucedido", + "inProgress": "Em andamento" + }, + "IssueSourceIndicator": { + "issueFromRepo": "Issue de ", + "issuesFromRepo": "Issues de " } }, "GitHubItemDialog": { @@ -14578,9 +14684,6 @@ "3fdf777817": "Abrir no GitHub", "c43fe79ee0": "Copiar link do GitHub", "0caac1a18f": "Iniciar espaço de trabalho a partir do PR", - "8223320f8d": "atualizado", - "10ef1afb8e": "· atualizado", - "55962099bc": "abriu esta issue", "0ab4664a8b": "Iniciar espaço de trabalho a partir da issue", "36182aa57f": "Iniciar novo espaço de trabalho", "fe6ff12dc2": "Mais ações de espaço de trabalho da issue", @@ -14653,8 +14756,6 @@ "52b20b56f7": "Descrição", "4d555d3796": "Editar descrição", "9df4e74bdf": "Salvar", - "0ae387d8ca": "por", - "228e2f59d3": "Resolvido", "a154ec5224": "Abrir comentário no GitHub", "bca8eb39ac": "Responder ao comentário", "68cb993d61": "resolvido", @@ -14670,7 +14771,6 @@ "d43736d09c": "Controles de contexto do código", "bd7be7b1fd": "comentário L", "db61d76cd5": "Carregando contexto do código…", - "f2d02cdf8c": "arquivos visualizados", "1257d1435d": "Mostrar árvore de arquivos", "a341343303": "Comentário de revisão adicionado.", "d1fa2cf888": "Não é possível comentar sem o SHA head do PR.", @@ -14710,8 +14810,6 @@ "ec5c4b3ab2": "Reabrir PR", "21860b58d0": "Fechar pull request", "5932578f51": "O merge requer um repositório local registrado", - "e2bf3e41a9": "comentário", - "28d0d3374f": "thread", "080d071d48": "Responder a @{{value0}}", "86f809e2ce": "Responder nesta thread de revisão", "136542c9ba": ":L{{value0}}", @@ -14741,7 +14839,9 @@ "from": "de", "to": "para", "activity": "Atividade", - "noActivity": "Ainda sem atividade." + "noActivity": "Ainda sem atividade.", + "pullRequestReference": "PR #{{number}}", + "issueReference": "issue #{{number}}" }, "checkActionRequiredHint": "Precisa de uma ação manual no GitHub (por exemplo, aprovar a execução) para liberar o merge.", "e15a8b77ef": "Nenhum detalhe inline está disponível para esta verificação.", @@ -14755,8 +14855,15 @@ "09d67a0f9b": "Falha ao fechar o pull request", "88809e79db": "Falha ao reabrir o pull request", "00f55cc17b": "O acesso ao repositório não está disponível para este pull request.", - "reactionCountSingular": "{{count}} {{reaction}} reação", - "reactionCountPlural": "{{count}} {{reaction}} reações" + "reactionCount_one": "{{count}} reação de {{reaction}}", + "reactionCount_other": "{{count}} reações de {{reaction}}", + "filesViewed_one": "{{viewed}} / {{count}} arquivo visualizado", + "filesViewed_other": "{{viewed}} / {{count}} arquivos visualizados", + "updatedRelativeTime": "atualizado {{time}}", + "authorOpenedThisIssue": " abriu esta issue", + "middotUpdatedRelativeTime": "· atualizado {{time}}", + "resolvedThreadBy": "Thread resolvida de {{author}}", + "resolvedCommentBy": "Comentário resolvido de {{author}}" }, "terminal": { "pane": { @@ -15420,9 +15527,6 @@ "778683ec84": "Descrição", "da9aaa8bcf": "Editar descrição", "4a337ac05f": "Salvar", - "169a93b29a": "atualizado", - "3c891789f6": "por", - "f4fe47c2bb": "Resolvido", "0ac19bb52e": "Abrir comentário no GitHub", "d6c6679de7": "Responder ao comentário", "76b2a0ac5b": "resolvido", @@ -15430,7 +15534,6 @@ "6885c619e7": "Não é possível responder sem um caminho de repositório.", "d94810f652": "Falha ao atualizar a descrição.", "9b4190dc98": "Descrição atualizada.", - "89e80af1c7": "arquivos visualizados", "319cf2d54b": "Mostrar árvore de arquivos", "eff839f438": "Comentário de revisão adicionado.", "d8c3ba91c4": "Não é possível comentar sem o SHA head do PR.", @@ -15468,8 +15571,6 @@ "9d5425918e": "Reabrir PR", "96d013ed28": "Fechar pull request", "eca289e593": "O merge requer um repositório local registrado", - "e01e34f5fa": "comentário", - "345b68254c": "thread", "31a7b202f2": "Responder a @{{value0}}", "408e634fbb": "Responder nesta thread de revisão", "34b9f7c264": ":L{{value0}}", @@ -15491,7 +15592,19 @@ "4b8ae7303f": "Falha ao carregar o diff.", "closePullRequestFailed": "Falha ao fechar o pull request", "reopenPullRequestFailed": "Falha ao reabrir o pull request", - "diffLoadTimedOut": "Tempo esgotado ao carregar este diff." + "diffLoadTimedOut": "Tempo esgotado ao carregar este diff.", + "filesViewed_one": "{{viewed}} / {{count}} arquivo visualizado", + "filesViewed_other": "{{viewed}} / {{count}} arquivos visualizados", + "updatedRelativeTime": "atualizado {{time}}", + "resolvedThreadBy": "Thread resolvida de {{author}}", + "resolvedCommentBy": "Comentário resolvido de {{author}}", + "mentionSource": { + "prAuthor": "Autor do PR", + "issueAuthor": "Autor da issue", + "commenter": "Autor de comentário", + "participant": "Participante", + "teamMember": "Membro da equipe" + } }, "tab": { "bar": { @@ -16371,14 +16484,15 @@ "f23ea85341": "resolvido", "6de8ce0cc6": "{{value0}} necessário(s)", "22511537d2": "Aprovado", - "00f3bab87b": " de {{value0}} necessário(s)", "3a051b8ade": "Item de trabalho", "32f8bef818": "Nenhuma saída de log.", "4168eb2c51": "Resolver", "commentTooLarge": "O comentário é muito grande para ser enviado com segurança.", "gitlabActionFailed": "Falha na ação do GitLab.", - "approvalsRemainingSingular": "{{count}} aprovação restante", - "approvalsRemainingPlural": "{{count}} aprovações restantes" + "approvalsRemainingOfRequired_one": "Falta {{count}} aprovação das {{required}} necessárias", + "approvalsRemainingOfRequired_other": "Faltam {{count}} aprovações das {{required}} necessárias", + "approvalsRemaining_one": "{{count}} aprovação restante", + "approvalsRemaining_other": "{{count}} aprovações restantes" }, "linear": { "api": { @@ -16673,10 +16787,10 @@ "rightSidebar": { "FolderWorkspaceWorktreesPanel": { "unavailable": "Os espaços de trabalho só são exibidos para espaços de trabalho de pasta.", - "countOne": "1 worktree anexada", - "countMany": "{{value0}} worktrees anexadas", "emptyTitle": "Ainda sem worktrees anexadas", - "emptyCopy": "Worktrees criadas a partir deste espaço de trabalho vão aparecer aqui." + "emptyCopy": "Worktrees criadas a partir deste espaço de trabalho vão aparecer aqui.", + "attachedCount_one": "{{count}} worktree anexada", + "attachedCount_other": "{{count}} worktrees anexadas" }, "FolderWorkspacePrChecksPanel": { "unavailable": "As verificações de PR só são exibidas para espaços de trabalho de pasta.", @@ -16688,12 +16802,12 @@ "hideDetails": "Ocultar detalhes de verificação de PR de {{value0}}", "reviewChecks": "Verificações de review", "allChecksPassing": "todas as verificações aprovadas", - "oneWorktree": "1 worktree", - "worktreeCount": "{{value0}} worktrees", - "oneFailing": "1 com falha", - "failingCount": "{{value0}} com falha", - "onePending": "1 pendente", - "pendingCount": "{{value0}} pendentes" + "worktreeCountLabel_one": "{{count}} worktree", + "worktreeCountLabel_other": "{{count}} worktrees", + "failingCountLabel_one": "{{count}} com falha", + "failingCountLabel_other": "{{count}} com falha", + "pendingCountLabel_one": "{{count}} pendente", + "pendingCountLabel_other": "{{count}} pendentes" }, "parentPrChecks": { "rowSummary": { @@ -17663,7 +17777,9 @@ "6978871a3d": "Abrir", "cce596969e": "Excluir nota", "cad3384faa": "Editar nota", - "508ee678a5": "Abrir no navegador" + "508ee678a5": "Abrir no navegador", + "noteAuthorFallback": "Nota", + "sentMeta": "enviado" }, "DiffCommentPopover": { "2b3ce6d394": "Cancelar", @@ -17676,6 +17792,9 @@ }, "useDiffCommentDecorator": { "995fa28b50": "Esta nota" + }, + "diffCommentZoneCard": { + "noteAlreadySent": "Nota já enviada" } } }, @@ -20182,8 +20301,9 @@ "rateLimited": "Limite de taxa do GitHub atingido. Tente novamente em alguns minutos.", "network": "Erro de rede — verifique sua conexão.", "tooLargeUnknownCount": "Esta visualização tem itens demais para ser exibida no Orca. Restrinja o filtro da visualização no GitHub.", - "tooLarge": "Esta visualização tem {{itemCount}} itens, demais para ser exibida no Orca. Restrinja o filtro da visualização no GitHub.", - "schemaDriftDetail": "Não foi possível ler esta visualização do projeto: {{detail}}." + "schemaDriftDetail": "Não foi possível ler esta visualização do projeto: {{detail}}.", + "tooLargeCount_one": "Esta visualização tem {{count}} item — é grande demais para ser exibida no Orca. Restrinja o filtro da visualização no GitHub.", + "tooLargeCount_other": "Esta visualização tem {{count}} itens — é grande demais para ser exibida no Orca. Restrinja o filtro da visualização no GitHub." }, "columns": { "type": "Digite" diff --git a/src/renderer/src/i18n/locales/ru.json b/src/renderer/src/i18n/locales/ru.json index 82e223568cb..f3a7998ed4c 100644 --- a/src/renderer/src/i18n/locales/ru.json +++ b/src/renderer/src/i18n/locales/ru.json @@ -1791,9 +1791,6 @@ "3fdf777817": "Открыть на GitHub", "c43fe79ee0": "Скопировать ссылку GitHub", "0caac1a18f": "Создать рабочее пространство из пул-реквеста", - "8223320f8d": "обновлено", - "10ef1afb8e": "· обновлено", - "55962099bc": "открыл задачу", "0ab4664a8b": "Создать рабочее пространство для задачи", "36182aa57f": "Создать рабочее пространство", "fe6ff12dc2": "Другие действия с рабочим пространством задачи", @@ -1866,8 +1863,6 @@ "52b20b56f7": "Описание", "4d555d3796": "Изменить описание", "9df4e74bdf": "Сохранить", - "0ae387d8ca": "автор:", - "228e2f59d3": "Решено", "a154ec5224": "Открыть комментарий на GitHub", "bca8eb39ac": "Ответить на комментарий", "68cb993d61": "решено", @@ -1882,7 +1877,6 @@ "d43736d09c": "Управление контекстом кода", "bd7be7b1fd": "комментарий к строке", "db61d76cd5": "Загрузка контекста кода…", - "f2d02cdf8c": "файлов просмотрено", "1257d1435d": "Показать дерево файлов", "a341343303": "Комментарий к проверке добавлен.", "d1fa2cf888": "Нельзя добавить комментарий без SHA последнего коммита пул-реквеста.", @@ -1922,8 +1916,6 @@ "ec5c4b3ab2": "Открыть пул-реквест снова", "21860b58d0": "Закрыть пул-реквест", "5932578f51": "Для слияния нужен зарегистрированный локальный репозиторий", - "e2bf3e41a9": "комментарий", - "28d0d3374f": "обсуждение", "080d071d48": "Ответить @{{value0}}", "86f809e2ce": "Ответить в обсуждении проверки", "136542c9ba": ":L{{value0}}", @@ -1953,7 +1945,9 @@ "from": "из", "to": "в", "activity": "События", - "noActivity": "Пока нет событий." + "noActivity": "Пока нет событий.", + "pullRequestReference": "PR #{{number}}", + "issueReference": "задача #{{number}}" }, "e15a8b77ef": "Для этой проверки нет подробностей в интерфейсе.", "e45324fbed": "Не удалось загрузить сведения о проверке.", @@ -1967,9 +1961,20 @@ "88809e79db": "Не удалось снова открыть пул-реквест", "00f55cc17b": "Доступ к репозиторию этого пул-реквеста недоступен.", "checkActionRequiredHint": "Чтобы разблокировать слияние, нужно выполнить действие вручную на GitHub (например, одобрить запуск).", - "reactionCountPlural": "Реакции {{reaction}}: {{count}}", - "reactionCountSingular": "{{count}} реакция {{reaction}}", - "showMoreLinesBelow": "Показать дополнительные строки ниже: {{value0}}" + "showMoreLinesBelow": "Показать дополнительные строки ниже: {{value0}}", + "reactionCount_one": "{{count}} реакция «{{reaction}}»", + "reactionCount_few": "{{count}} реакции «{{reaction}}»", + "reactionCount_many": "{{count}} реакций «{{reaction}}»", + "reactionCount_other": "{{count}} реакции «{{reaction}}»", + "filesViewed_one": "Просмотрено файлов: {{viewed}} / {{count}}", + "filesViewed_few": "Просмотрено файлов: {{viewed}} / {{count}}", + "filesViewed_many": "Просмотрено файлов: {{viewed}} / {{count}}", + "filesViewed_other": "Просмотрено файлов: {{viewed}} / {{count}}", + "updatedRelativeTime": "обновлено {{time}}", + "authorOpenedThisIssue": "Эта задача открыта пользователем ", + "middotUpdatedRelativeTime": "· обновлено {{time}}", + "resolvedThreadBy": "Решённое обсуждение от {{author}}", + "resolvedCommentBy": "Решённый комментарий от {{author}}" }, "GitLabItemDialog": { "65e784c1f1": "Открыть снова", @@ -2025,14 +2030,19 @@ "f23ea85341": "решено", "6de8ce0cc6": "Требуется: {{value0}}", "22511537d2": "Одобрено", - "00f3bab87b": " из {{value0}} необходимых", "3a051b8ade": "Задача", "32f8bef818": "Журнал пуст.", "4168eb2c51": "Решить", "commentTooLarge": "Комментарий слишком большой для безопасной отправки.", "gitlabActionFailed": "Не удалось выполнить действие GitLab.", - "approvalsRemainingPlural": "Осталось одобрений: {{count}}", - "approvalsRemainingSingular": "Осталось {{count}} одобрение" + "approvalsRemainingOfRequired_one": "Осталось {{count}} одобрение (требуется {{required}})", + "approvalsRemainingOfRequired_few": "Осталось {{count}} одобрения (требуется {{required}})", + "approvalsRemainingOfRequired_many": "Осталось {{count}} одобрений (требуется {{required}})", + "approvalsRemainingOfRequired_other": "Осталось {{count}} одобрения (требуется {{required}})", + "approvalsRemaining_one": "Осталось {{count}} одобрение", + "approvalsRemaining_few": "Осталось {{count}} одобрения", + "approvalsRemaining_many": "Осталось {{count}} одобрений", + "approvalsRemaining_other": "Осталось {{count}} одобрения" }, "JiraIssueWorkspace": { "b0b92666c9": "Комментарий", @@ -2360,9 +2370,6 @@ "778683ec84": "Описание", "da9aaa8bcf": "Изменить описание", "4a337ac05f": "Сохранить", - "169a93b29a": "обновлено", - "3c891789f6": "автор:", - "f4fe47c2bb": "Решено", "0ac19bb52e": "Открыть комментарий на GitHub", "d6c6679de7": "Ответить на комментарий", "76b2a0ac5b": "обсуждение закрыто", @@ -2370,7 +2377,6 @@ "6885c619e7": "Невозможно ответить без пути к репозиторию.", "d94810f652": "Не удалось обновить описание.", "9b4190dc98": "Описание обновлено.", - "89e80af1c7": "файлов просмотрено", "319cf2d54b": "Показать дерево файлов", "eff839f438": "Комментарий к ревью добавлен.", "d8c3ba91c4": "Невозможно добавить комментарий без SHA исходного коммита PR.", @@ -2408,8 +2414,6 @@ "9d5425918e": "Открыть PR заново", "96d013ed28": "Закрыть PR", "eca289e593": "Для слияния нужен зарегистрированный локальный репозиторий", - "e01e34f5fa": "комментарий", - "345b68254c": "обсуждение", "31a7b202f2": "Ответить @{{value0}}", "408e634fbb": "Ответить в этом обсуждении ревью", "34b9f7c264": ":L{{value0}}", @@ -2431,7 +2435,21 @@ "closePullRequestFailed": "Не удалось закрыть PR", "reopenPullRequestFailed": "Не удалось заново открыть PR", "diffLoadTimedOut": "Время ожидания загрузки различий истекло.", - "checkActionRequiredHint": "Чтобы разблокировать слияние, нужно выполнить действие вручную на GitHub (например, одобрить запуск)." + "checkActionRequiredHint": "Чтобы разблокировать слияние, нужно выполнить действие вручную на GitHub (например, одобрить запуск).", + "filesViewed_one": "Просмотрено файлов: {{viewed}} / {{count}}", + "filesViewed_few": "Просмотрено файлов: {{viewed}} / {{count}}", + "filesViewed_many": "Просмотрено файлов: {{viewed}} / {{count}}", + "filesViewed_other": "Просмотрено файлов: {{viewed}} / {{count}}", + "updatedRelativeTime": "обновлено {{time}}", + "resolvedThreadBy": "Решённое обсуждение от {{author}}", + "resolvedCommentBy": "Решённый комментарий от {{author}}", + "mentionSource": { + "prAuthor": "Автор PR", + "issueAuthor": "Автор задачи", + "commenter": "Автор комментария", + "participant": "Участник", + "teamMember": "Участник команды" + } }, "QuickOpen": { "1dbd3f59ff": "Перемещение", @@ -3028,7 +3046,8 @@ "8f6cb3772f": "Автоматически слить этот пул-реквест после выполнения требований", "def355ff38": "Можно слить", "e42c5bae67": "По данным GitHub, PR можно слить и проверки пройдены", - "cbf0113af6": "По данным GitHub, PR можно слить" + "cbf0113af6": "По данным GitHub, PR можно слить", + "autoMergeOn": "Автослияние включено" } } }, @@ -3202,10 +3221,10 @@ "imageUrlTooLarge": "URL изображения слишком велик." }, "IssueSourceSelector": { - "d6aeb2012b": "Показывать задачи из", "787c970baf": "Источник задач", "51d1608920": "Исходный репозиторий", - "30b2c9df91": "Вышестоящий репозиторий" + "30b2c9df91": "Вышестоящий репозиторий", + "showingIssuesFromRepo": "Показаны задачи из " }, "PRFilterDropdowns": { "979be3cf6b": "Исполнитель", @@ -3215,12 +3234,18 @@ "01f3f3d161": "Автор", "13b3ac0a84": "Статус", "79c54552f7": "Фильтры", - "8a2ffbf9b3": "Убрать фильтр {{value0}}" + "8a2ffbf9b3": "Убрать фильтр {{value0}}", + "anyState": "Любое", + "currentUser": "Текущий пользователь" }, "PRFilterPickers": { - "fdf387297c": "Очистить (", "472c12ae03": "Очистить", - "2d1f58eda6": "Использовать" + "pressEnterToUseValue": "Нажмите Enter, чтобы использовать введённое значение.", + "useTypedValue": "Использовать ", + "clearSelected": "Очистить ({{count}})", + "loading": "Загрузка…", + "searchTextTooLarge": "Поисковый текст слишком велик.", + "noMatches": "Совпадений нет" }, "PRFilterSections": { "a00830d3f7": "Нет пользователей", @@ -3230,7 +3255,6 @@ "458ea3602b": "Нет авторов", "b69fa4fa20": "Назад", "30ebb6ca44": "Очистить все фильтры", - "8177eda37e": "Фильтр", "ea3416d646": "Исполнитель", "b1d9fdea08": "Метка", "24754c44ad": "Автор", @@ -3242,7 +3266,17 @@ "2b2f019091": "Любой статус", "0fd3249e2e": "Закрыто", "d78b60b5c2": "Открытые", - "bd162b7d5a": "Слит" + "bd162b7d5a": "Слит", + "draft": "Черновик", + "labelCount_one": "{{count}} метка", + "labelCount_few": "{{count}} метки", + "labelCount_many": "{{count}} меток", + "labelCount_other": "{{count}} метки", + "allStates": "Все", + "filterPullRequests": "Фильтр пул-реквестов", + "filterIssues": "Фильтр задач", + "filterOrTypeLogin": "Отфильтруйте или введите логин...", + "filterLabels": "Фильтр меток..." }, "github": { "rate": { @@ -3253,15 +3287,14 @@ "d12d3d6f33": "Обновить лимиты API GitHub", "d5e5de9070": "Orca использует REST, Search и GraphQL через GitHub CLI.", "58c5f88216": "Лимиты API GitHub", - "6da1858354": "осталось · сброс через", - "f42790d150": "из", "01f7323e58": "GraphQL API", "1daf0f22a9": "GraphQL", "1f2f28a4de": "Search API", "c377a4f06a": "Поиск", "c392c749a6": "REST API", "bb227706a6": "REST", - "budget_scope_prefix": "Область действия лимита" + "budget_scope_prefix": "Область действия лимита", + "remainingOfLimitResetsIn": "Осталось {{remaining}} из {{limit}} · сброс через {{reset}}" } } } @@ -3269,7 +3302,29 @@ "CommentReactions": { "addReaction": "Добавить реакцию", "removeNamedReaction": "Убрать реакцию «{{value0}}»", - "addNamedReaction": "Добавить реакцию «{{value0}}»" + "addNamedReaction": "Добавить реакцию «{{value0}}»", + "reaction": { + "thumbsUp": "палец вверх", + "thumbsDown": "палец вниз", + "laugh": "смех", + "confused": "замешательство", + "heart": "сердце", + "hooray": "ура", + "rocket": "ракета", + "eyes": "глаза" + } + }, + "CommentCodeContext": { + "showSurroundingCodeBlock": "Показать окружающий блок кода", + "showNearbyCodeContext": "Показать соседние строки кода" + }, + "prCheckPresentation": { + "successful": "Успешно", + "inProgress": "В работе" + }, + "IssueSourceIndicator": { + "issueFromRepo": "Задача из ", + "issuesFromRepo": "Задачи из " } }, "linear": { @@ -12632,14 +12687,16 @@ "right": { "sidebar": { "BulkActionBar": { - "79a9f5f712": "Убрать из индекса (", - "ef5f5bd06e": "Добавить в индекс (", - "60ed678138": "выбрано" + "selectedCount_one": "выбрано: {{count}}", + "selectedCount_few": "выбрано: {{count}}", + "selectedCount_many": "выбрано: {{count}}", + "selectedCount_other": "выбрано: {{count}}", + "stageCount": "Добавить в индекс ({{count}})", + "unstageCount": "Убрать из индекса ({{count}})" }, "ChecksPanel": { "2ef90c9819": "ИИ-агент запущен для исправления ошибок проверок.", "a0181a8d76": "ИИ-агент запущен для разрешения конфликтов.", - "34464d00b9": "обновлено", "058039787c": "Отмена", "2ab7fd4b6d": "Сохранить", "dda5924a40": "Для проверок нужна ветка Git и контекст ревью на хостинге", @@ -12685,7 +12742,8 @@ "updateReactionFailed": "Не удалось обновить реакцию.", "gitlabMoreActions": "Другие действия с MR", "gitlabLinkAnother": "Связать другой MR", - "abf59262fb": "Перед запуском агента проверьте и отредактируйте полный текст команды." + "abf59262fb": "Перед запуском агента проверьте и отредактируйте полный текст команды.", + "reviewUpdatedAt": "{{review}} — обновлено {{time}}" }, "CreateHostedReviewComposer": { "741ff8a0d2": "Отправить и создать {{value0}}" @@ -12842,7 +12900,14 @@ "740aca88ab": "Не удалось просканировать порты рабочего пространства.", "5be4f7f727": "Меню порта {{value0}}", "1004af16ab": "Копировать {{value0}}", - "153d3a8026": "Хост рабочего пространства неизвестен" + "153d3a8026": "Хост рабочего пространства неизвестен", + "unknownProcess": "Неизвестный процесс", + "containerOrForwardedService": "Контейнер или перенаправленный сервис", + "unassigned": "Не назначено", + "remotePortOutOfRange": "Удалённый порт должен быть в диапазоне 1–65535", + "localPortOutOfRange": "Локальный порт должен быть в диапазоне 1–65535", + "localPortInUse": "Порт {{port}} уже используется. Выберите другой локальный порт.", + "localPortRequiresPrivileges": "Порт {{port}} требует повышенных прав. Используйте локальный порт ≥ 1024." }, "Search": { "1abfb25a66": "Введите текст для поиска в файлах", @@ -12903,7 +12968,6 @@ "476b77745b": "Изменить базовую ссылку", "ed34038d0d": "Обновить сравнение веток", "493f963029": "Изменить базовую ссылку", - "3278b2767b": "впереди", "11b5dd8e41": "Сравнение с", "a9bf7c171a": "Не удалось создать коммит", "011f9713fc": "Создание коммита заблокировано", @@ -12946,7 +13010,6 @@ "574d2f4413": "Удалить заметки", "05bb8f4a48": "Отмена", "48db37cca9": "Просмотреть всё", - "78ce2d37ac": "Отправка в форк", "c05fe04839": "Отправка в форк по адресу {{value0}} (не в origin)", "c35baf2f1e": "Фильтр файлов…", "2fe2a67580": "Другие действия с заметками", @@ -12954,14 +13017,12 @@ "cc474e0b8c": "Заметки", "e131cd7128": "Управление версиями доступно только для репозиториев Git", "c07b236287": "Выберите рабочее пространство для просмотра изменений", - "dc5a6465fc": "{{value0}} (например, {{value1}}{{value2}})", "a5e5a11090": "Не удалось отменить все изменения — невозможно предварительно убрать файлы из индекса", "8a5ba6a988": "Не удалось загрузить различия коммита", "fe5bd1a610": "Создание {{value0}}…", "812cb992ee": "Открыть на {{value0}}", "eef5446523": "{{value0}} №{{value1}} уже открыт", "0453ca3a9a": "{{value0}} создан, но Orca пока не смогла обновить сведения о нём.", - "f99560ab29": "Не удалось прервать {{value0}}", "eae7a1da5f": "Не удалось удалить заметки.", "df5040e3c3": "Убрать из индекса", "8cde1a2fb0": "Добавить в индекс", @@ -12989,8 +13050,6 @@ "aaf1451654": "Создать черновик {{value0}}", "26511c22b4": "Создание…", "d7ae61269b": "Закоммичено в ветке", - "branchFilesChangedVsBaseOne": "Изменён 1 файл относительно {{ref}}", - "branchFilesChangedVsBaseOther": "Изменено файлов относительно {{ref}}: {{count}}", "48a003c1b1": "Изменения в индексе", "d4ef4bafc5": "Изменения", "9339382454": "Убрать всё из индекса", @@ -13000,8 +13059,6 @@ "72f2bea3f4": "Развернуть заметки", "d13edef890": "Свернуть заметки", "d6fb1df5fe": "{{value0}} уже открыт", - "05838cfdeb": "Конфликт {{value0}}", - "d206117f90": "Конфликт {{value0}} ({{value1}})", "0b5b8c234c": "Открыть {{value0}} ({{value1}})", "d97ef8f221": "строки {{value0}}–{{value1}}", "6f8bfa0eb9": "строка {{value0}}", @@ -13054,10 +13111,6 @@ "b3c8f1a902": "Фильтр файлов по имени", "d4f8c2a901": "Очистить и закрыть фильтр", "e8a1c4b203": "относительно", - "compareBaseCommitsAheadOne": "На 1 коммит впереди {{ref}}", - "compareBaseCommitsAheadOther": "Опережение {{ref}} в коммитах: {{count}}", - "compareBaseCommitsBehindOne": "На 1 коммит позади {{ref}}", - "compareBaseCommitsBehindOther": "Отставание от {{ref}} в коммитах: {{count}}", "4b4a7de138": "Открыть страницу ревью в браузере", "createPrIntentCommitBlockedSummary": "Создание коммита заблокировано: {{value0}} Устраните проблему и повторите «Создать PR».", "pushRecovery": { @@ -13092,17 +13145,68 @@ "conflictCount_other": "{{count}} конфликта", "15b7f210d7": "Выберите агента и отредактируйте полный текст команды перед запуском.", "901140f47d": "Перед запуском агента проверьте и отредактируйте полный текст команды.", - "discardFailedPlural": "Не удалось отменить изменения в файлах: {{count}}", - "discardFailedSingular": "Не удалось отменить изменения в {{count}} файле", - "noteCountPlural": "Заметки: {{count}}", - "noteCountSingular": "{{count}} заметка" + "discardFailedSampleMore_one": "{{paths}}, ещё +{{count}}", + "discardFailedSampleMore_few": "{{paths}}, ещё +{{count}}", + "discardFailedSampleMore_many": "{{paths}}, ещё +{{count}}", + "discardFailedSampleMore_other": "{{paths}}, ещё +{{count}}", + "discardFailed_one": "Не удалось отменить изменения в {{count}} файле", + "discardFailed_few": "Не удалось отменить изменения в {{count}} файлах", + "discardFailed_many": "Не удалось отменить изменения в {{count}} файлах", + "discardFailed_other": "Не удалось отменить изменения в файлах: {{count}}", + "discardFailedWithSample": "{{error}} (например, {{paths}})", + "compareBaseCommitsAhead_one": "На {{count}} коммит впереди {{ref}}", + "compareBaseCommitsAhead_few": "На {{count}} коммита впереди {{ref}}", + "compareBaseCommitsAhead_many": "На {{count}} коммитов впереди {{ref}}", + "compareBaseCommitsAhead_other": "На {{count}} коммита впереди {{ref}}", + "compareBaseCommitsBehind_one": "На {{count}} коммит позади {{ref}}", + "compareBaseCommitsBehind_few": "На {{count}} коммита позади {{ref}}", + "compareBaseCommitsBehind_many": "На {{count}} коммитов позади {{ref}}", + "compareBaseCommitsBehind_other": "На {{count}} коммита позади {{ref}}", + "branchFilesChangedVsBase_one": "Изменён {{count}} файл относительно {{ref}}", + "branchFilesChangedVsBase_few": "Изменено {{count}} файла относительно {{ref}}", + "branchFilesChangedVsBase_many": "Изменено {{count}} файлов относительно {{ref}}", + "branchFilesChangedVsBase_other": "Изменено {{count}} файла относительно {{ref}}", + "noteCount_one": "{{count}} заметка", + "noteCount_few": "{{count}} заметки", + "noteCount_many": "{{count}} заметок", + "noteCount_other": "{{count}} заметки", + "comparingAgainstRef": "Сравнение с {{ref}}", + "commitsAheadShort_one": "на {{count}} впереди", + "commitsAheadShort_few": "на {{count}} впереди", + "commitsAheadShort_many": "на {{count}} впереди", + "commitsAheadShort_other": "на {{count}} впереди", + "unresolvedConflictOfKind": "Неразрешённый конфликт ({{kind}})", + "unresolvedConflict": "Неразрешённый конфликт", + "locallyResolvedConflictOfKind": "Конфликт разрешён локально ({{kind}})", + "locallyResolvedConflict": "Конфликт разрешён локально", + "pushesToForkTarget": "Отправка в форк {{target}}", + "abortRebaseConfirmTitle": "Прервать перебазирование?", + "abortMergeConfirmTitle": "Прервать слияние?", + "abortRebaseConfirmDescription": "Это отменит текущее перебазирование и может привести к потере результатов разрешения конфликтов, полученных во время этого перебазирования.", + "abortMergeConfirmDescription": "Это отменит текущее слияние и может привести к потере результатов разрешения конфликтов, полученных во время этого слияния.", + "abortRebaseFailedFallback": "Не удалось прервать перебазирование", + "abortMergeFailedFallback": "Не удалось прервать слияние", + "abortRebaseFailed": "Не удалось прервать перебазирование", + "abortMergeFailed": "Не удалось прервать слияние", + "clearNotesFromWorkspace_one": "Удалить {{count}} заметку из этого рабочего пространства?", + "clearNotesFromWorkspace_few": "Удалить {{count}} заметки из этого рабочего пространства?", + "clearNotesFromWorkspace_many": "Удалить {{count}} заметок из этого рабочего пространства?", + "clearNotesFromWorkspace_other": "Удалить {{count}} заметки из этого рабочего пространства?", + "clearNotesFromFile_one": "Удалить {{count}} заметку из {{path}}?", + "clearNotesFromFile_few": "Удалить {{count}} заметки из {{path}}?", + "clearNotesFromFile_many": "Удалить {{count}} заметок из {{path}}?", + "clearNotesFromFile_other": "Удалить {{count}} заметки из {{path}}?" }, "SourceControlAgentActionDialog": { "8e856842d1": "Не удалось запустить выбранного агента.", "c075d00de1": "Не удалось определить подключение рабочего пространства.", "38b899cc02": "Все репозитории", "808cfe0a3b": "Этот репозиторий", - "994cddd1f7": "Не сохранять" + "994cddd1f7": "Не сохранять", + "agentNotEnabledOrDetected": "{{agent}} не включён или не обнаружен на сервере этого рабочего пространства.", + "workspaceConnectionUnresolved": "Не удалось определить подключение рабочего пространства.", + "noEnabledAgentsDetected": "На сервере этого рабочего пространства не обнаружено включённых агентов.", + "startAgent": "Запустить агента" }, "SourceControlAgentActionDialogForm": { "013c9ac04a": "Сохранить для", @@ -13168,10 +13272,6 @@ "cbcc4ab3db": "Показаны первые 100 проверок", "0dca6bfab5": "Открыть сведения о проверке", "991f50c7e4": "Проверки не настроены", - "9ad98f2a17": "ожидание", - "5e52f4ef7f": "ошибки", - "02ca4f9074": "пройдены", - "checksUnresolvedChip": "без результата", "checksUnresolvedStripHint": "Эти проверки завершились без итогового результата: успешно или с ошибкой.", "e15a8b77ef": "Для этой проверки нет встроенных сведений.", "dcb3c546fe": "Повторить", @@ -13190,7 +13290,6 @@ "1f2b980522": "Загрузка сведений о проверке…", "0c96cd25e5": "Разрешить", "3a71a6ed0b": "Разрешите конфликты, чтобы проверки и слияние могли завершиться.", - "60186d8498": "Операция заблокирована конфликтами", "c16762ac8c": "Ниже показаны последние полученные сведения о проверках и комментариях.", "9d0e7bcefc": "Нет действий с PR, блокирующих слияние", "5856874b59": "Orca будет обновлять проверки, пока эта панель открыта.", @@ -13215,7 +13314,6 @@ "084c516efb": "Скопировать команды", "5dc3af25c0": "Выбрать комментарий", "d7a2f9c401": "Отправить неразрешённые комментарии {{value0}}", - "d91f2a6c39": "Отправить ИИ комментарии из очереди: {{value0}}", "a6de3e5a20": "Очистить очередь комментариев", "f8a2c91d04": "Добавить в очередь агента", "b4e8a1c902": "В очереди", @@ -13246,7 +13344,38 @@ "unresolvedChecks_few": "{{count}} непройденные проверки", "unresolvedChecks_many": "{{count}} непройденных проверок", "unresolvedChecks_one": "{{count}} непройденная проверка", - "unresolvedChecks_other": "{{count}} непройденной проверки" + "unresolvedChecks_other": "{{count}} непройденной проверки", + "passingCount_one": "пройдено: {{count}}", + "passingCount_few": "пройдено: {{count}}", + "passingCount_many": "пройдено: {{count}}", + "passingCount_other": "пройдено: {{count}}", + "failingCount_one": "с ошибками: {{count}}", + "failingCount_few": "с ошибками: {{count}}", + "failingCount_many": "с ошибками: {{count}}", + "failingCount_other": "с ошибками: {{count}}", + "pendingCount_one": "в ожидании: {{count}}", + "pendingCount_few": "в ожидании: {{count}}", + "pendingCount_many": "в ожидании: {{count}}", + "pendingCount_other": "в ожидании: {{count}}", + "unresolvedCount_one": "не решено: {{count}}", + "unresolvedCount_few": "не решено: {{count}}", + "unresolvedCount_many": "не решено: {{count}}", + "unresolvedCount_other": "не решено: {{count}}", + "sendQueuedCommentsToAi_one": "Отправить ИИ {{count}} комментарий из очереди", + "sendQueuedCommentsToAi_few": "Отправить ИИ {{count}} комментария из очереди", + "sendQueuedCommentsToAi_many": "Отправить ИИ {{count}} комментариев из очереди", + "sendQueuedCommentsToAi_other": "Отправить ИИ {{count}} комментария из очереди", + "conflictsBlockThisMr": "Конфликты блокируют этот MR", + "conflictsBlockThisPr": "Конфликты блокируют этот PR", + "copyComment": "Копировать комментарий", + "sendComment": "Отправить", + "commentingRequiresGitHubPrTarget": "Для комментирования нужен целевой репозиторий PR на GitHub.", + "selectWorkspaceBeforeAiAction": "Выберите рабочее пространство перед запуском действия ИИ.", + "operation": { + "rebase": "Перебазирование", + "merge": "Слияние", + "cherryPick": "Cherry-pick" + } }, "empty": { "state": { @@ -13709,8 +13838,10 @@ }, "compare": { "summary": { - "commitsAheadPlural": "Коммитов впереди {{ref}}: {{count}}", - "commitsAheadSingular": "На {{count}} коммит впереди {{ref}}" + "commitsAhead_one": "На {{count}} коммит впереди {{ref}}", + "commitsAhead_few": "На {{count}} коммита впереди {{ref}}", + "commitsAhead_many": "На {{count}} коммитов впереди {{ref}}", + "commitsAhead_other": "На {{count}} коммита впереди {{ref}}" } } } @@ -13758,8 +13889,15 @@ "folderLinksOutsideProject": "Эта папка ссылается за пределы проекта, поэтому её нельзя открыть здесь." }, "useFileExplorerImport": { - "25919b2050": "Пропущено: {{value0}} {{value1}}.", - "132fd0e1e9": "Не удалось импортировать: {{value0}} {{value1}}." + "importFailedCount_one": "Не удалось импортировать {{count}} файл.", + "importFailedCount_few": "Не удалось импортировать {{count}} файла.", + "importFailedCount_many": "Не удалось импортировать {{count}} файлов.", + "importFailedCount_other": "Не удалось импортировать {{count}} файла.", + "importSkippedCount_one": "Пропущен {{count}} файл.", + "importSkippedCount_few": "Пропущено {{count}} файла.", + "importSkippedCount_many": "Пропущено {{count}} файлов.", + "importSkippedCount_other": "Пропущено {{count}} файла.", + "importFailed": "Не удалось импортировать файлы." }, "useFileExplorerKeys": { "8adb953095": "Не удалось выполнить операцию" @@ -13797,7 +13935,6 @@ "refreshSessionHistory": "Обновить историю сессий", "searchSessions": "Поиск сессий", "clearSearch": "Очистить поиск", - "transcriptsSkipped": "Пропущено историй: {{count}}", "noAgentSessionsFound": "Сессии агентов не найдены", "noSessionsMatchFilters": "Нет сессий, подходящих под выбранные фильтры", "noAgentsSelected": "Агенты не выбраны", @@ -13816,7 +13953,11 @@ "resumeInChatFailed": "Не удалось продолжить сессию в новом чате.", "resumeInNewCliUnavailable": "Эту сессию нельзя открыть в CLI.", "resumeInNewCliHostTooOld": "Обновите Orca на сервере этого чата, чтобы продолжить его в новом CLI.", - "folderWorkspaceUnavailable": "Рабочее пространство папки больше недоступно." + "folderWorkspaceUnavailable": "Рабочее пространство папки больше недоступно.", + "transcriptsSkippedCount_one": "Пропущена {{count}} история", + "transcriptsSkippedCount_few": "Пропущено {{count}} истории", + "transcriptsSkippedCount_many": "Пропущено {{count}} историй", + "transcriptsSkippedCount_other": "Пропущено {{count}} истории" }, "AiVaultPanelControls": { "scanningSessions": "Сканирование сессий", @@ -13847,11 +13988,8 @@ "latestTurns": "Последние сообщения", "noPreviewAvailable": "Предпросмотр чата недоступен", "conversationNotSaved": "Переписка не сохранена", - "recoverableEmptyDetail": "В этой сессии нет сохранённой переписки, но остались элементы для восстановления: {{value0}}.", "recoverableEmptyOpenLogHint": "Откройте журнал, чтобы восстановить их.", "emptyConversationDetail": "В этой сессии нет сохранённой переписки; продолжить её нельзя.", - "queuedMessages": "Сообщений в очереди: {{value0}}", - "subagentTranscripts": "Историй субагентов: {{value0}}", "resumeInWorktree": "Продолжить в рабочем дереве", "viewLog": "Открыть журнал", "unknownTime": "Время неизвестно", @@ -13880,7 +14018,19 @@ "noFirstPromptAvailable": "Первый запрос недоступен", "loadingFirstPrompt": "Загрузка первого запроса…", "folder": "Папка", - "resumeInFolder": "Продолжить в папке" + "resumeInFolder": "Продолжить в папке", + "recoverableEmptyDetailCount_one": "В этой сессии нет сохранённой переписки, но сохранился {{count}} элемент для восстановления.", + "recoverableEmptyDetailCount_few": "В этой сессии нет сохранённой переписки, но сохранилось {{count}} элемента для восстановления.", + "recoverableEmptyDetailCount_many": "В этой сессии нет сохранённой переписки, но сохранилось {{count}} элементов для восстановления.", + "recoverableEmptyDetailCount_other": "В этой сессии нет сохранённой переписки, но сохранилось {{count}} элемента для восстановления.", + "queuedMessageCount_one": "{{count}} сообщение в очереди", + "queuedMessageCount_few": "{{count}} сообщения в очереди", + "queuedMessageCount_many": "{{count}} сообщений в очереди", + "queuedMessageCount_other": "{{count}} сообщения в очереди", + "subagentTranscriptCount_one": "{{count}} история субагента", + "subagentTranscriptCount_few": "{{count}} истории субагентов", + "subagentTranscriptCount_many": "{{count}} историй субагентов", + "subagentTranscriptCount_other": "{{count}} истории субагентов" }, "AiVaultSessionRow": { "noPreviewAvailable": "Предпросмотр разговора недоступен", @@ -14014,26 +14164,36 @@ "confirmation": { "84f6f5b9eb": "Включены: {{numbers}}. ", "541984b2eb": "Добавить в очередь по №{{pr}} включительно?", - "4809f55cdb": "{{included}}GitHub добавит в очередь слияния PR: {{count}}. Очередь выбирает способ слияния и может выполнять его отдельными группами.", - "be8f2621be": "{{included}}GitHub добавит {{count}} PR в очередь слияния вместе. Очередь выбирает способ слияния и может сливать их отдельными группами.", - "92ca033e72": "Добавить PR в очередь ({{count}})", - "478a527b15": "Добавить PR в очередь ({{count}})", "1feef35ca4": "Слить по №{{pr}} включительно?", - "c3e036c99f": "{{included}}GitHub выполнит атомарное слияние PR ({{count}}) способом {{method}}. Если слияние невозможно, не будет слит ни один PR.", - "369aba4b32": "{{included}}GitHub выполнит атомарное слияние PR ({{count}}) способом {{method}}. Если хотя бы один PR нельзя слить, не будет слит ни один.", - "493c78f521": "Слить PR ({{count}})", - "eb7051d268": "Слить PR ({{count}})" + "queueDescription_one": "{{included}}GitHub добавит {{count}} пул-реквест в очередь слияния одним действием. Очередь выбирает способ слияния и может выполнять его отдельными группами.", + "queueDescription_few": "{{included}}GitHub добавит {{count}} пул-реквеста в очередь слияния вместе. Очередь выбирает способ слияния и может сливать их отдельными группами.", + "queueDescription_many": "{{included}}GitHub добавит {{count}} пул-реквестов в очередь слияния вместе. Очередь выбирает способ слияния и может сливать их отдельными группами.", + "queueDescription_other": "{{included}}GitHub добавит {{count}} пул-реквеста в очередь слияния вместе. Очередь выбирает способ слияния и может сливать их отдельными группами.", + "queueConfirm_one": "Добавить {{count}} PR в очередь", + "queueConfirm_few": "Добавить {{count}} PR в очередь", + "queueConfirm_many": "Добавить {{count}} PR в очередь", + "queueConfirm_other": "Добавить {{count}} PR в очередь", + "mergeDescription_one": "{{included}}GitHub атомарно сольёт {{count}} пул-реквест способом {{method}}. Если слияние невозможно, ничего не будет слито.", + "mergeDescription_few": "{{included}}GitHub атомарно сольёт {{count}} пул-реквеста способом {{method}}. Если хотя бы один нельзя слить, ни один не будет слит.", + "mergeDescription_many": "{{included}}GitHub атомарно сольёт {{count}} пул-реквестов способом {{method}}. Если хотя бы один нельзя слить, ни один не будет слит.", + "mergeDescription_other": "{{included}}GitHub атомарно сольёт {{count}} пул-реквеста способом {{method}}. Если хотя бы один нельзя слить, ни один не будет слит.", + "mergeConfirm_one": "Слить {{count}} PR", + "mergeConfirm_few": "Слить {{count}} PR", + "mergeConfirm_many": "Слить {{count}} PR", + "mergeConfirm_other": "Слить {{count}} PR" }, "merge": { - "55ae29b907": "Слить по №{{pr}} включительно · PR: {{count}}", - "b8446f6ec2": "Слить по №{{pr}} включительно · PR: {{count}}", "189d0ec614": "№{{pr}} ещё в черновике.", "640fb50d9c": "№{{pr}} закрыт.", "46ffcbda75": "У №{{pr}} есть конфликты слияния.", "6dabefd63e": "В №{{pr}} запрошены изменения.", "2bb21fc326": "Для PR №{{pr}} ещё требуется одобрение.", "c23faf74df": "№{{pr}} нужно обновить.", - "f561e80968": "№{{pr}} заблокирован." + "f561e80968": "№{{pr}} заблокирован.", + "mergeThroughLabel_one": "Слить по #{{pr}} включительно · {{count}} PR", + "mergeThroughLabel_few": "Слить по #{{pr}} включительно · {{count}} PR", + "mergeThroughLabel_many": "Слить по #{{pr}} включительно · {{count}} PR", + "mergeThroughLabel_other": "Слить по #{{pr}} включительно · {{count}} PR" } } } @@ -14090,7 +14250,6 @@ "sourceActionsUnavailable": "Источник истории недоступен." }, "AiVaultScanProgressStrip": { - "agentChecked": "{{agent}}: проверено записей истории — {{settled}} из {{total}}", "fileCount_one": "{{value0}} файл", "fileCount_few": "{{value0}} файла", "fileCount_many": "{{value0}} файлов", @@ -14101,7 +14260,11 @@ "databaseCount_other": "{{value0}} базы данных", "scanning": "Сканирование ({{value0}})", "checking": "Проверка ({{value0}})", - "scanned": "Просканировано ({{value0}})" + "scanned": "Просканировано ({{value0}})", + "agentCheckedCount_one": "{{agent}}: проверено {{settled}} из {{total}} возможной записи истории", + "agentCheckedCount_few": "{{agent}}: проверено {{settled}} из {{total}} возможных записей истории", + "agentCheckedCount_many": "{{agent}}: проверено {{settled}} из {{total}} возможных записей истории", + "agentCheckedCount_other": "{{agent}}: проверено {{settled}} из {{total}} возможной записи истории" }, "run": { "source": { @@ -14130,6 +14293,17 @@ } } } + }, + "fileExplorerMultiDrag": { + "moreItems_one": "ещё +{{count}}", + "moreItems_few": "ещё +{{count}}", + "moreItems_many": "ещё +{{count}}", + "moreItems_other": "ещё +{{count}}" + }, + "CreatePullRequest": { + "createInProgress": "Создание PR...", + "workspaceHostUnresolved": "Не удалось определить сервер рабочего пространства. Обновите рабочее пространство и повторите попытку.", + "branchDiscoveryFailed": "Не удалось обнаружить ветки." } } }, @@ -15984,7 +16158,9 @@ "6978871a3d": "Открыть", "cce596969e": "Удалить заметку", "cad3384faa": "Изменить заметку", - "508ee678a5": "Открыть в браузере" + "508ee678a5": "Открыть в браузере", + "noteAuthorFallback": "Заметка", + "sentMeta": "отправлено" }, "DiffCommentPopover": { "2b3ce6d394": "Отмена", @@ -15997,6 +16173,9 @@ }, "useDiffCommentDecorator": { "995fa28b50": "Эта заметка" + }, + "diffCommentZoneCard": { + "noteAlreadySent": "Заметка уже отправлена" } } }, @@ -17275,10 +17454,12 @@ "rightSidebar": { "FolderWorkspaceWorktreesPanel": { "unavailable": "Рабочие пространства показаны только для пространств на основе папок.", - "countOne": "Прикреплено 1 рабочее дерево", - "countMany": "Прикреплено рабочих деревьев: {{value0}}", "emptyTitle": "Прикреплённых рабочих деревьев пока нет", - "emptyCopy": "Здесь появятся рабочие деревья, созданные из этого рабочего пространства." + "emptyCopy": "Здесь появятся рабочие деревья, созданные из этого рабочего пространства.", + "attachedCount_one": "{{count}} прикреплённое рабочее дерево", + "attachedCount_few": "{{count}} прикреплённых рабочих дерева", + "attachedCount_many": "{{count}} прикреплённых рабочих деревьев", + "attachedCount_other": "{{count}} прикреплённого рабочего дерева" }, "FolderWorkspacePrChecksPanel": { "unavailable": "Проверки PR показаны только для рабочих пространств на основе папок.", @@ -17290,12 +17471,18 @@ "hideDetails": "Скрыть сведения о проверках PR для {{value0}}", "reviewChecks": "Просмотреть проверки", "allChecksPassing": "все проверки пройдены", - "oneWorktree": "1 рабочее дерево", - "worktreeCount": "Рабочих деревьев: {{value0}}", - "oneFailing": "С ошибкой: 1", - "failingCount": "С ошибками: {{value0}}", - "onePending": "Ожидает: 1", - "pendingCount": "Ожидают: {{value0}}" + "worktreeCountLabel_one": "{{count}} рабочее дерево", + "worktreeCountLabel_few": "{{count}} рабочих дерева", + "worktreeCountLabel_many": "{{count}} рабочих деревьев", + "worktreeCountLabel_other": "{{count}} рабочего дерева", + "failingCountLabel_one": "с ошибками: {{count}}", + "failingCountLabel_few": "с ошибками: {{count}}", + "failingCountLabel_many": "с ошибками: {{count}}", + "failingCountLabel_other": "с ошибками: {{count}}", + "pendingCountLabel_one": "в ожидании: {{count}}", + "pendingCountLabel_few": "в ожидании: {{count}}", + "pendingCountLabel_many": "в ожидании: {{count}}", + "pendingCountLabel_other": "в ожидании: {{count}}" }, "parentPrChecks": { "rowSummary": { @@ -19873,8 +20060,6 @@ }, "sessionSearch": { "panel": { - "resultsOne": "{{count}} результат", - "resultsOther": "Результатов: {{count}}", "noMatches": "В индексе истории нет подходящих сессий. Измените запрос или область поиска.", "loadMore": "Загрузить ещё совпадения", "indexedHistory": "Индексированная история", @@ -19896,11 +20081,29 @@ "retry": "Повторить попытку", "scopeUnknown": "На этом компьютере нет выбранного рабочего пространства или проекта. Выберите область «Все» для поиска во всех его сессиях.", "sortSessionsAriaLabel": "Сортировка сессий: {{value0}}", - "sessionsOne": "{{count}} сессия", - "sessionsOther": "Сессий: {{count}}", - "sessionsOfLoaded": "Сессий: {{value0}} из {{value1}}", "showMoreSessions": "Показать ещё сессии", - "loadingMoreSessions": "Загрузка других сессий…" + "loadingMoreSessions": "Загрузка других сессий…", + "resultCount_one": "{{count}} результат", + "resultCount_few": "{{count}} результата", + "resultCount_many": "{{count}} результатов", + "resultCount_other": "{{count}} результата", + "sessionCount_one": "{{count}} сессия", + "sessionCount_few": "{{count}} сессии", + "sessionCount_many": "{{count}} сессий", + "sessionCount_other": "{{count}} сессии", + "sessionsShownOfLoaded_one": "{{shown}} из {{count}} сессии", + "sessionsShownOfLoaded_few": "{{shown}} из {{count}} сессий", + "sessionsShownOfLoaded_many": "{{shown}} из {{count}} сессий", + "sessionsShownOfLoaded_other": "{{shown}} из {{count}} сессии", + "hostSkipReason": { + "indexChanged": "индекс изменился", + "searchOff": "поиск отключён", + "notReady": "не готов", + "unavailable": "недоступен", + "unreachable": "нет соединения", + "scopeNotFound": "область поиска там не найдена", + "agentNotSupported": "агент не поддерживается" + } } }, "sessionHistory": { @@ -20374,11 +20577,14 @@ "requestInvalid": "Недопустимый запрос — {{detail}}", "schemaDriftDetail": "Не удалось прочитать это представление проекта: {{detail}}.", "scopeMissing": "Для доступа к проекту GitHub нужны дополнительные области доступа. Выполните `{{command}}`.", - "tooLarge": "В этом представлении слишком много элементов для отображения в Orca: {{itemCount}}. Сузьте фильтр представления на GitHub.", "tooLargeUnknownCount": "В этом представлении слишком много элементов для отображения в Orca. Сузьте фильтр представления на GitHub.", "unexpectedRestResponse": "Неожиданный ответ REST: {{detail}}", "updatesRequired": "Необходимо указать изменения.", - "viewNotFound": "Не удалось найти выбранное представление." + "viewNotFound": "Не удалось найти выбранное представление.", + "tooLargeCount_one": "В этом представлении {{count}} элемент — слишком много для отображения в Orca. Сузьте фильтр представления на GitHub.", + "tooLargeCount_few": "В этом представлении {{count}} элемента — слишком много для отображения в Orca. Сузьте фильтр представления на GitHub.", + "tooLargeCount_many": "В этом представлении {{count}} элементов — слишком много для отображения в Orca. Сузьте фильтр представления на GitHub.", + "tooLargeCount_other": "В этом представлении {{count}} элемента — слишком много для отображения в Orca. Сузьте фильтр представления на GitHub." }, "authHelp": { "accessDeniedDetail": "Ваш токен имеет необходимые области доступа, но GitHub всё равно отказал в доступе. Если проект находится в организации с SAML SSO, разрешите использование этого токена в организации в разделе «Настройки → Настройки разработчика → Персональные токены доступа → Настроить SSO».", diff --git a/src/renderer/src/i18n/locales/tr.json b/src/renderer/src/i18n/locales/tr.json index 44ffd042aa8..9eb5a26d41e 100644 --- a/src/renderer/src/i18n/locales/tr.json +++ b/src/renderer/src/i18n/locales/tr.json @@ -1777,9 +1777,6 @@ "3fdf777817": "GitHub'da aç", "c43fe79ee0": "GitHub bağlantısını kopyala", "0caac1a18f": "PR'dan çalışma alanı başlat", - "8223320f8d": "güncellendi", - "10ef1afb8e": "· güncellendi", - "55962099bc": "bu sorunu açtı", "0ab4664a8b": "Sorundan çalışma alanı başlat", "36182aa57f": "Yeni çalışma alanı başlat", "fe6ff12dc2": "Diğer sorun çalışma alanı işlemleri", @@ -1852,8 +1849,6 @@ "52b20b56f7": "Açıklama", "4d555d3796": "Açıklamayı düzenle", "9df4e74bdf": "Kaydet", - "0ae387d8ca": "tarafından", - "228e2f59d3": "Çözüldü", "a154ec5224": "Yorumu GitHub'da aç", "bca8eb39ac": "Yoruma yanıt ver", "68cb993d61": "çözüldü", @@ -1869,7 +1864,6 @@ "d43736d09c": "Kod bağlamı denetimleri", "bd7be7b1fd": "yorum L", "db61d76cd5": "Kod bağlamı yükleniyor…", - "f2d02cdf8c": "dosya görüldü", "1257d1435d": "Dosya ağacını göster", "a341343303": "İnceleme yorumu eklendi.", "d1fa2cf888": "PR head SHA'sı olmadan yorum yapılamıyor.", @@ -1909,8 +1903,6 @@ "ec5c4b3ab2": "PR'ı yeniden aç", "21860b58d0": "Pull request'i kapat", "5932578f51": "Merge işlemi için kayıtlı bir yerel repo gerekir", - "e2bf3e41a9": "yorum", - "28d0d3374f": "dizi", "080d071d48": "@{{value0}} kullanıcısına yanıt ver", "86f809e2ce": "Bu inceleme dizisinde yanıtla", "136542c9ba": ":L{{value0}}", @@ -1940,7 +1932,9 @@ "from": "'den", "to": "'e", "activity": "Etkinlik", - "noActivity": "Henüz etkinlik yok." + "noActivity": "Henüz etkinlik yok.", + "pullRequestReference": "PR #{{number}}", + "issueReference": "sorun #{{number}}" }, "checkActionRequiredHint": "Merge engelini kaldırmak için GitHub'da elle bir işlem (ör. çalıştırmayı onaylama) gerekir.", "e15a8b77ef": "Bu kontrol için satır içi ayrıntı yok.", @@ -1954,8 +1948,13 @@ "09d67a0f9b": "Pull request kapatılamadı", "88809e79db": "Pull request yeniden açılamadı", "00f55cc17b": "Bu pull request için repository erişimi yok.", - "reactionCountSingular": "{{count}} {{reaction}} tepkisi", - "reactionCountPlural": "{{count}} {{reaction}} tepkisi" + "reactionCount_other": "{{count}} {{reaction}} tepkisi", + "filesViewed_other": "{{viewed}} / {{count}} dosya görüntülendi", + "updatedRelativeTime": "{{time}} güncellendi", + "authorOpenedThisIssue": " bu sorunu açtı", + "middotUpdatedRelativeTime": "· {{time}} güncellendi", + "resolvedThreadBy": "{{author}} tarafından yazılan çözülmüş tartışma dizisi", + "resolvedCommentBy": "{{author}} tarafından yazılan çözülmüş yorum" }, "GitLabItemDialog": { "65e784c1f1": "Yeniden aç", @@ -2011,14 +2010,13 @@ "f23ea85341": "çözüldü", "6de8ce0cc6": "{{value0}} gerekli", "22511537d2": "Onaylandı", - "00f3bab87b": " / {{value0}} gerekli", "3a051b8ade": "İş öğesi", "32f8bef818": "Günlük çıktısı yok.", "4168eb2c51": "Çöz", "commentTooLarge": "Yorum, güvenli şekilde gönderilemeyecek kadar büyük.", "gitlabActionFailed": "GitLab işlemi başarısız oldu.", - "approvalsRemainingSingular": "{{count}} onay kaldı", - "approvalsRemainingPlural": "{{count}} onay kaldı" + "approvalsRemainingOfRequired_other": "Gerekli {{required}} onaydan {{count}} onay kaldı", + "approvalsRemaining_other": "{{count}} onay kaldı" }, "JiraIssueWorkspace": { "b0b92666c9": "Yorum", @@ -2346,9 +2344,6 @@ "778683ec84": "Açıklama", "da9aaa8bcf": "Açıklamayı düzenle", "4a337ac05f": "Kaydet", - "169a93b29a": "güncellendi", - "3c891789f6": "tarafından", - "f4fe47c2bb": "Çözüldü", "0ac19bb52e": "Yorumu GitHub'da aç", "d6c6679de7": "Yoruma yanıt ver", "76b2a0ac5b": "çözüldü", @@ -2356,7 +2351,6 @@ "6885c619e7": "Repository yolu olmadan yanıt verilemiyor.", "d94810f652": "Açıklama güncellenemedi.", "9b4190dc98": "Açıklama güncellendi.", - "89e80af1c7": "dosya görüldü", "319cf2d54b": "Dosya ağacını göster", "eff839f438": "İnceleme yorumu eklendi.", "d8c3ba91c4": "PR head SHA'sı olmadan yorum yapılamıyor.", @@ -2394,8 +2388,6 @@ "9d5425918e": "PR'ı yeniden aç", "96d013ed28": "Pull request'i kapat", "eca289e593": "Merge işlemi için kayıtlı bir yerel repo gerekir", - "e01e34f5fa": "yorum", - "345b68254c": "dizi", "31a7b202f2": "@{{value0}} kullanıcısına yanıt ver", "408e634fbb": "Bu inceleme dizisinde yanıtla", "34b9f7c264": ":L{{value0}}", @@ -2417,7 +2409,18 @@ "4b8ae7303f": "Diff yüklenemedi.", "closePullRequestFailed": "Pull request kapatılamadı", "reopenPullRequestFailed": "Pull request yeniden açılamadı", - "diffLoadTimedOut": "Bu diff yüklenirken zaman aşımına uğradı." + "diffLoadTimedOut": "Bu diff yüklenirken zaman aşımına uğradı.", + "filesViewed_other": "{{viewed}} / {{count}} dosya görüntülendi", + "updatedRelativeTime": "{{time}} güncellendi", + "resolvedThreadBy": "{{author}} tarafından yazılan çözülmüş tartışma dizisi", + "resolvedCommentBy": "{{author}} tarafından yazılan çözülmüş yorum", + "mentionSource": { + "prAuthor": "PR yazarı", + "issueAuthor": "Sorun yazarı", + "commenter": "Yorum yapan", + "participant": "Katılımcı", + "teamMember": "Ekip üyesi" + } }, "QuickOpen": { "1dbd3f59ff": "Taşı", @@ -2967,7 +2970,8 @@ "8f6cb3772f": "Gereksinimler karşılandığında bu pull request'i otomatik olarak merge et", "def355ff38": "Merge edilebilir", "e42c5bae67": "GitHub bu PR'ın merge edilebileceğini ve kontrollerin başarıyla tamamlandığını söylüyor", - "cbf0113af6": "GitHub bu PR'ın merge edilebileceğini söylüyor" + "cbf0113af6": "GitHub bu PR'ın merge edilebileceğini söylüyor", + "autoMergeOn": "Otomatik merge açık" } } }, @@ -3141,10 +3145,10 @@ "imageUrlTooLarge": "Görsel URL'si çok büyük." }, "IssueSourceSelector": { - "d6aeb2012b": "Şu kaynaktaki sorunlar gösteriliyor:", "787c970baf": "Sorun kaynağı", "51d1608920": "Origin", - "30b2c9df91": "Upstream" + "30b2c9df91": "Upstream", + "showingIssuesFromRepo": " kaynağındaki sorunlar gösteriliyor" }, "PRFilterDropdowns": { "979be3cf6b": "Atanan", @@ -3154,12 +3158,18 @@ "01f3f3d161": "Yazar", "13b3ac0a84": "Durum", "79c54552f7": "Filtreler", - "8a2ffbf9b3": "{{value0}} filtresini kaldır" + "8a2ffbf9b3": "{{value0}} filtresini kaldır", + "anyState": "Herhangi biri", + "currentUser": "Geçerli kullanıcı" }, "PRFilterPickers": { - "fdf387297c": "Temizle (", "472c12ae03": "Temizle", - "2d1f58eda6": "Kullan" + "pressEnterToUseValue": "Yazılan değeri kullanmak için Enter tuşuna basın.", + "useTypedValue": " kullan", + "clearSelected": "Temizle ({{count}})", + "loading": "Yükleniyor…", + "searchTextTooLarge": "Arama metni çok uzun.", + "noMatches": "Eşleşme yok" }, "PRFilterSections": { "a00830d3f7": "Kullanıcı yok", @@ -3169,7 +3179,6 @@ "458ea3602b": "Yazar yok", "b69fa4fa20": "Geri", "30ebb6ca44": "Tüm filtreleri temizle", - "8177eda37e": "Filtre", "ea3416d646": "Atanan", "b1d9fdea08": "Etiket", "24754c44ad": "Yazar", @@ -3181,7 +3190,14 @@ "2b2f019091": "Herhangi bir durum", "0fd3249e2e": "Kapatıldı", "d78b60b5c2": "Açık", - "bd162b7d5a": "Merge Edildi" + "bd162b7d5a": "Merge Edildi", + "draft": "Taslak", + "labelCount_other": "{{count}} etiket", + "allStates": "Tümü", + "filterPullRequests": "Pull request'leri filtrele", + "filterIssues": "Sorunları filtrele", + "filterOrTypeLogin": "Filtreleyin veya bir kullanıcı adı yazın...", + "filterLabels": "Etiketleri filtreleyin..." }, "github": { "rate": { @@ -3192,15 +3208,14 @@ "d12d3d6f33": "GitHub API bütçesini yenile", "d5e5de9070": "Orca, GitHub CLI üzerinden REST, Search ve GraphQL kullanır.", "58c5f88216": "GitHub API Bütçesi", - "6da1858354": "kaldı · sıfırlanma:", - "f42790d150": "/", "01f7323e58": "GraphQL API", "1daf0f22a9": "GraphQL", "1f2f28a4de": "Search API", "c377a4f06a": "Search", "c392c749a6": "REST API", "bb227706a6": "REST", - "budget_scope_prefix": "Bütçe kapsamı" + "budget_scope_prefix": "Bütçe kapsamı", + "remainingOfLimitResetsIn": "{{limit}} üzerinden {{remaining}} kaldı · {{reset}} sonra sıfırlanır" } } } @@ -3208,7 +3223,29 @@ "CommentReactions": { "addReaction": "Tepki ekle", "removeNamedReaction": "{{value0}} tepkisini kaldır", - "addNamedReaction": "{{value0}} tepkisi ekle" + "addNamedReaction": "{{value0}} tepkisi ekle", + "reaction": { + "thumbsUp": "başparmak yukarı", + "thumbsDown": "başparmak aşağı", + "laugh": "kahkaha", + "confused": "kafa karışıklığı", + "heart": "kalp", + "hooray": "yaşasın", + "rocket": "roket", + "eyes": "gözler" + } + }, + "CommentCodeContext": { + "showSurroundingCodeBlock": "Çevreleyen kod bloğunu göster", + "showNearbyCodeContext": "Yakındaki kod bağlamını göster" + }, + "prCheckPresentation": { + "successful": "Başarılı", + "inProgress": "Devam ediyor" + }, + "IssueSourceIndicator": { + "issueFromRepo": " kaynağından sorun", + "issuesFromRepo": " kaynağından sorunlar" } }, "linear": { @@ -12507,14 +12544,13 @@ "right": { "sidebar": { "BulkActionBar": { - "79a9f5f712": "Unstage (", - "ef5f5bd06e": "Stage (", - "60ed678138": "seçili" + "selectedCount_other": "{{count}} seçili", + "stageCount": "Stage ({{count}})", + "unstageCount": "Unstage ({{count}})" }, "ChecksPanel": { "2ef90c9819": "Bozuk kontroller için bir AI ajanı başlatıldı.", "a0181a8d76": "Conflict'ler için bir AI ajanı başlatıldı.", - "34464d00b9": "güncellendi", "058039787c": "İptal", "2ab7fd4b6d": "Kaydet", "dda5924a40": "Kontroller, bir Git branch'i ve barındırılan inceleme bağlamı gerektirir", @@ -12560,7 +12596,8 @@ "430f1a62d4": "Sunucudaki seçili yorum dizisi çözüldü olarak işaretlenemedi.", "updateReactionFailed": "Tepki güncellenemedi.", "gitlabMoreActions": "Diğer MR işlemleri", - "gitlabLinkAnother": "Başka bir MR bağla" + "gitlabLinkAnother": "Başka bir MR bağla", + "reviewUpdatedAt": "{{review}} {{time}} güncellendi" }, "CreateHostedReviewComposer": { "741ff8a0d2": "Push Yap ve {{value0}} Oluştur" @@ -12717,7 +12754,14 @@ "740aca88ab": "Çalışma alanı port taraması başarısız oldu.", "5be4f7f727": "Port {{value0}} menüsü", "1004af16ab": "{{value0}} Kopyala", - "153d3a8026": "Çalışma alanının ana makinesi bilinmiyor" + "153d3a8026": "Çalışma alanının ana makinesi bilinmiyor", + "unknownProcess": "Bilinmeyen işlem", + "containerOrForwardedService": "Konteyner veya yönlendirilmiş hizmet", + "unassigned": "Atanmamış", + "remotePortOutOfRange": "Uzak port 1–65535 aralığında olmalıdır", + "localPortOutOfRange": "Yerel port 1–65535 aralığında olmalıdır", + "localPortInUse": "{{port}} portu zaten kullanımda. Farklı bir yerel port seçin.", + "localPortRequiresPrivileges": "{{port}} portu yükseltilmiş ayrıcalıklar gerektirir. 1024 veya daha büyük bir yerel port kullanın." }, "Search": { "1abfb25a66": "Dosyalarda aramak için yazın", @@ -12774,7 +12818,6 @@ "476b77745b": "Base Ref'i Değiştir", "ed34038d0d": "Branch karşılaştırmasını yenile", "493f963029": "Base ref'i değiştir", - "3278b2767b": "ileride", "11b5dd8e41": "Şununla karşılaştırılıyor", "a9bf7c171a": "Commit Başarısız Oldu", "011f9713fc": "Commit engellendi", @@ -12819,7 +12862,6 @@ "574d2f4413": "Notları Temizle", "05bb8f4a48": "İptal", "48db37cca9": "Tümünü görüntüle", - "78ce2d37ac": "Fork'a push yapar", "c05fe04839": "{{value0}} adresindeki fork'a push yapar (origin'e değil)", "c35baf2f1e": "Dosyaları filtrele…", "2fe2a67580": "Diğer not işlemleri", @@ -12827,14 +12869,12 @@ "cc474e0b8c": "Notlar", "e131cd7128": "Source Control yalnızca Git repository'leri için kullanılabilir", "c07b236287": "Değişiklikleri görüntülemek için bir çalışma alanı seçin", - "dc5a6465fc": "{{value0}} (ör. {{value1}}{{value2}})", "a5e5a11090": "Tüm değişiklikler geri alınamadı — geri alma işleminden önce dosyalar stage'den çıkarılamadı", "8a5ba6a988": "Commit diff'i yüklenemedi", "fe5bd1a610": "{{value0}} oluşturuluyor...", "812cb992ee": "{{value0}} üzerinde aç", "eef5446523": "{{value0}} #{{value1}} zaten açık", "0453ca3a9a": "{{value0}} oluşturuldu, ancak Orca henüz yenileyemedi.", - "f99560ab29": "{{value0}} iptali başarısız oldu", "eae7a1da5f": "Notlar temizlenemedi.", "df5040e3c3": "Unstage", "8cde1a2fb0": "Stage", @@ -12862,8 +12902,6 @@ "aaf1451654": "Taslak {{value0}} Oluştur", "26511c22b4": "Oluşturuluyor...", "d7ae61269b": "Branch'e Commit Edildi", - "branchFilesChangedVsBaseOne": "{{ref}} ile karşılaştırıldığında 1 dosya değişti", - "branchFilesChangedVsBaseOther": "{{ref}} ile karşılaştırıldığında {{count}} dosya değişti", "48a003c1b1": "Stage Edilen Değişiklikler", "d4ef4bafc5": "Değişiklikler", "9339382454": "Tümünü stage'den çıkar", @@ -12873,8 +12911,6 @@ "72f2bea3f4": "Notları genişlet", "d13edef890": "Notları daralt", "d6fb1df5fe": "{{value0}} zaten açık", - "05838cfdeb": "{{value0}} conflict", - "d206117f90": "{{value0}} conflict ({{value1}})", "0b5b8c234c": "{{value0}} öğesini aç ({{value1}})", "d97ef8f221": "{{value0}}-{{value1}}. satırlar", "6f8bfa0eb9": "{{value0}}. satır", @@ -12927,10 +12963,6 @@ "b3c8f1a902": "Dosyaları ada göre filtrele", "d4f8c2a901": "Filtreyi temizle ve kapat", "e8a1c4b203": "vs", - "compareBaseCommitsAheadOne": "{{ref}}'ten 1 commit ileride", - "compareBaseCommitsAheadOther": "{{ref}}'ten {{count}} commit ileride", - "compareBaseCommitsBehindOne": "{{ref}}'in 1 commit gerisinde", - "compareBaseCommitsBehindOther": "{{ref}}'in {{count}} commit gerisinde", "4b4a7de138": "İnceleme sayfasını tarayıcıda aç", "createPrIntentCommitBlockedSummary": "Commit engellendi: {{value0}} Sorunu düzeltip PR Oluştur'u tekrar deneyin.", "pushRecovery": { @@ -12961,17 +12993,41 @@ "diffCommentNotesCopyFailed": "Notlar kopyalanamadı", "conflictCount_one": "{{count}} çakışma", "conflictCount_other": "{{count}} çakışma", - "discardFailedSingular": "{{count}} dosyadaki değişiklikler atılamadı", - "discardFailedPlural": "{{count}} dosyadaki değişiklikler atılamadı", - "noteCountSingular": "{{count}} not", - "noteCountPlural": "{{count}} not" + "discardFailedSampleMore_other": "{{paths}}, +{{count}} daha", + "discardFailed_other": "{{count}} dosyadaki değişiklikler atılamadı", + "discardFailedWithSample": "{{error}} (ör. {{paths}})", + "compareBaseCommitsAhead_other": "{{ref}} referansından {{count}} commit ileride", + "compareBaseCommitsBehind_other": "{{ref}} referansından {{count}} commit geride", + "branchFilesChangedVsBase_other": "{{ref}} ile karşılaştırıldığında {{count}} dosya değişti", + "noteCount_other": "{{count}} not", + "comparingAgainstRef": "{{ref}} ile karşılaştırılıyor", + "commitsAheadShort_other": "{{count}} ileride", + "unresolvedConflictOfKind": "Çözülmemiş çakışma ({{kind}})", + "unresolvedConflict": "Çözülmemiş çakışma", + "locallyResolvedConflictOfKind": "Yerelde çözülmüş çakışma ({{kind}})", + "locallyResolvedConflict": "Yerelde çözülmüş çakışma", + "pushesToForkTarget": "{{target}} fork'una push yapar", + "abortRebaseConfirmTitle": "Rebase iptal edilsin mi?", + "abortMergeConfirmTitle": "Merge iptal edilsin mi?", + "abortRebaseConfirmDescription": "Bu işlem devam eden rebase'i iptal eder ve bu rebase sırasında yapılan çakışma çözümlerini silebilir.", + "abortMergeConfirmDescription": "Bu işlem devam eden merge işlemini iptal eder ve bu merge sırasında yapılan çakışma çözümlerini silebilir.", + "abortRebaseFailedFallback": "Rebase iptal edilemedi", + "abortMergeFailedFallback": "Merge iptal edilemedi", + "abortRebaseFailed": "Rebase iptal edilemedi", + "abortMergeFailed": "Merge iptal edilemedi", + "clearNotesFromWorkspace_other": "Bu çalışma alanındaki {{count}} not silinsin mi?", + "clearNotesFromFile_other": "{{path}} dosyasındaki {{count}} not silinsin mi?" }, "SourceControlAgentActionDialog": { "8e856842d1": "Seçilen ajan başlatılamadı.", "c075d00de1": "Çalışma alanı bağlantısı çözümlenemedi.", "38b899cc02": "Tüm repository'ler", "808cfe0a3b": "Bu repository", - "994cddd1f7": "Kaydetme" + "994cddd1f7": "Kaydetme", + "agentNotEnabledOrDetected": "{{agent}}, bu çalışma alanının sunucusunda etkin değil veya algılanamadı.", + "workspaceConnectionUnresolved": "Çalışma alanı bağlantısı çözümlenemedi.", + "noEnabledAgentsDetected": "Bu çalışma alanının sunucusunda etkin bir ajan algılanamadı.", + "startAgent": "Ajanı başlat" }, "SourceControlAgentActionDialogForm": { "013c9ac04a": "Şunun için kaydet", @@ -13037,10 +13093,6 @@ "cbcc4ab3db": "İlk 100 kontrol gösteriliyor", "0dca6bfab5": "Kontrol ayrıntılarını aç", "991f50c7e4": "Yapılandırılmış kontrol yok", - "9ad98f2a17": "bekliyor", - "5e52f4ef7f": "başarısız", - "02ca4f9074": "başarılı", - "checksUnresolvedChip": "çözülmedi", "checksUnresolvedStripHint": "Bu kontroller geçti veya kaldı kararı olmadan tamamlandı.", "e15a8b77ef": "Bu kontrol için satır içi ayrıntı bulunmuyor.", "dcb3c546fe": "Yeniden dene", @@ -13059,7 +13111,6 @@ "1f2b980522": "Kontrol ayrıntıları yükleniyor…", "0c96cd25e5": "Çöz", "3a71a6ed0b": "Kontroller ve merge tamamlanmadan önce conflict'leri çözün.", - "60186d8498": "Conflict'ler bunu engelliyor", "c16762ac8c": "Aşağıdaki kontroller ve yorumlar mevcut alınan bağlamı gösteriyor.", "9d0e7bcefc": "Engelleyici PR işlemi yok", "5856874b59": "Bu panel açık kaldığı sürece Orca kontrolleri yenileyecek.", @@ -13084,7 +13135,6 @@ "084c516efb": "Komutları kopyala", "5dc3af25c0": "Yorum seç", "d7a2f9c401": "Çözülmemiş {{value0}} yorumu gönder", - "d91f2a6c39": "Kuyruktaki {{value0}} yorumu AI'ya gönder", "a6de3e5a20": "Kuyruktaki yorumları temizle", "f8a2c91d04": "Ajan için kuyruğa al", "b4e8a1c902": "Kuyrukta", @@ -13107,7 +13157,23 @@ "pendingChecks_one": "{{count}} kontrol bekliyor", "pendingChecks_other": "{{count}} kontrol bekliyor", "unresolvedChecks_one": "{{count}} çözülmemiş kontrol", - "unresolvedChecks_other": "{{count}} çözülmemiş kontrol" + "unresolvedChecks_other": "{{count}} çözülmemiş kontrol", + "passingCount_other": "{{count}} başarılı", + "failingCount_other": "{{count}} başarısız", + "pendingCount_other": "{{count}} bekleyen", + "unresolvedCount_other": "{{count}} çözülmemiş", + "sendQueuedCommentsToAi_other": "Kuyruktaki {{count}} yorumu AI'ya gönder", + "conflictsBlockThisMr": "Çakışmalar bu MR'ı engelliyor", + "conflictsBlockThisPr": "Çakışmalar bu PR'ı engelliyor", + "copyComment": "Yorumu kopyala", + "sendComment": "Gönder", + "commentingRequiresGitHubPrTarget": "Yorum yapmak için GitHub PR'ının hedef repository'si gereklidir.", + "selectWorkspaceBeforeAiAction": "Bir AI eylemi başlatmadan önce bir çalışma alanı seçin.", + "operation": { + "rebase": "Rebase", + "merge": "Merge", + "cherryPick": "Cherry-pick" + } }, "empty": { "state": { @@ -13513,8 +13579,7 @@ }, "compare": { "summary": { - "commitsAheadSingular": "{{ref}} referansından {{count}} commit ileride", - "commitsAheadPlural": "{{ref}} referansından {{count}} commit ileride" + "commitsAhead_other": "{{ref}} referansından {{count}} commit ileride" } }, "conflict": { @@ -13599,8 +13664,9 @@ "folderLinksOutsideProject": "Bu klasör proje dışına bağlantı verdiği için burada açılamıyor." }, "useFileExplorerImport": { - "25919b2050": "{{value0}} {{value1}} atlandı.", - "132fd0e1e9": "{{value0}} {{value1}} içe aktarılamadı." + "importFailedCount_other": "{{count}} dosya içe aktarılamadı.", + "importSkippedCount_other": "{{count}} dosya atlandı.", + "importFailed": "Dosyalar içe aktarılamadı." }, "useFileExplorerKeys": { "8adb953095": "İşlem başarısız oldu" @@ -13638,7 +13704,6 @@ "refreshSessionHistory": "Oturum Geçmişini Yenile", "searchSessions": "Oturumlarda ara", "clearSearch": "Aramayı temizle", - "transcriptsSkipped": "{{count}} transkript atlandı", "noAgentSessionsFound": "Ajan oturumu bulunamadı", "noSessionsMatchFilters": "Mevcut filtrelerle eşleşen oturum yok", "noAgentsSelected": "Ajan seçilmedi", @@ -13657,7 +13722,8 @@ "resumeInChatFailed": "Bu oturum yeni bir sohbette devam ettirilemedi.", "resumeInNewCliUnavailable": "Bu oturum CLI'da açılamıyor.", "resumeInNewCliHostTooOld": "Bu sohbeti yeni bir CLI'da sürdürmek için sohbetin çalıştığı ana makinedeki Orca'yı güncelleyin.", - "folderWorkspaceUnavailable": "Klasör çalışma alanı artık kullanılamıyor." + "folderWorkspaceUnavailable": "Klasör çalışma alanı artık kullanılamıyor.", + "transcriptsSkippedCount_other": "{{count}} transkript atlandı" }, "AiVaultPanelControls": { "scanningSessions": "Oturumlar taranıyor", @@ -13688,11 +13754,8 @@ "latestTurns": "Son turlar", "noPreviewAvailable": "Konuşma önizlemesi yok", "conversationNotSaved": "Konuşma kaydedilmedi", - "recoverableEmptyDetail": "Bu oturumun kayıtlı bir konuşması yok ama {{value0}} kurtarılabilir öge mevcut.", "recoverableEmptyOpenLogHint": "Bunları kurtarmak için logu açın.", "emptyConversationDetail": "Bu oturumun kayıtlı bir konuşması yok ve devam ettirilemez.", - "queuedMessages": "{{value0}} kuyruktaki mesaj", - "subagentTranscripts": "{{value0}} alt ajan transkripti", "resumeInWorktree": "Worktree'de Devam Ettir", "viewLog": "Logu Görüntüle", "unknownTime": "Bilinmeyen zaman", @@ -13721,7 +13784,10 @@ "noFirstPromptAvailable": "İlk istem yok", "loadingFirstPrompt": "İlk istem yükleniyor…", "folder": "Klasör", - "resumeInFolder": "Klasörde sürdür" + "resumeInFolder": "Klasörde sürdür", + "recoverableEmptyDetailCount_other": "Bu oturumun kayıtlı bir konuşması yok ama {{count}} kurtarılabilir öge mevcut.", + "queuedMessageCount_other": "Kuyrukta {{count}} mesaj", + "subagentTranscriptCount_other": "{{count}} alt ajan transkripti" }, "AiVaultSessionRow": { "noPreviewAvailable": "Konuşma önizlemesi yok", @@ -13855,26 +13921,21 @@ "confirmation": { "84f6f5b9eb": "Dahil edilenler: {{numbers}}. ", "541984b2eb": "#{{pr}} üzerinden kuyruğa alınsın mı?", - "4809f55cdb": "{{included}}GitHub, {{count}} pull request'i birlikte merge kuyruğuna ekleyecek. Kuyruk, merge yöntemini seçer ve bunları ayrı gruplarda merge edebilir.", - "be8f2621be": "{{included}}GitHub, {{count}} pull request'i birlikte merge kuyruğuna ekleyecek. Kuyruk, merge yöntemini seçer ve bunları ayrı gruplarda merge edebilir.", - "92ca033e72": "{{count}} PR'ı Kuyruğa Al", - "478a527b15": "{{count}} PR'ı Kuyruğa Al", "1feef35ca4": "#{{pr}} üzerinden merge edilsin mi?", - "c3e036c99f": "{{included}}GitHub, {{count}} pull request'i {{method}} kullanarak atomik olarak merge edecek. Merge edilemezse hiçbir şey merge edilmeyecek.", - "369aba4b32": "{{included}}GitHub, {{count}} pull request'i {{method}} kullanarak atomik olarak merge edecek. Herhangi biri merge edilemezse hiçbiri merge edilmeyecek.", - "493c78f521": "{{count}} PR'ı Merge Et", - "eb7051d268": "{{count}} PR'ı Merge Et" + "queueDescription_other": "{{included}}GitHub, {{count}} pull request'i birlikte merge kuyruğuna ekleyecek. Kuyruk, merge yöntemini seçer ve bunları ayrı gruplarda merge edebilir.", + "queueConfirm_other": "{{count}} PR'ı kuyruğa al", + "mergeDescription_other": "{{included}}GitHub, {{count}} pull request'i {{method}} kullanarak atomik olarak merge edecek. Herhangi biri merge edilemezse hiçbiri merge edilmeyecek.", + "mergeConfirm_other": "{{count}} PR'ı merge et" }, "merge": { - "55ae29b907": "#{{pr}} üzerinden merge et · {{count}} PR", - "b8446f6ec2": "#{{pr}} üzerinden merge et · {{count}} PR", "189d0ec614": "#{{pr}} hâlâ taslak.", "640fb50d9c": "#{{pr}} kapatıldı.", "46ffcbda75": "#{{pr}}'de merge conflict'leri var.", "6dabefd63e": "#{{pr}} için değişiklik istendi.", "2bb21fc326": "#{{pr}} hâlâ inceleme onayı bekliyor.", "c23faf74df": "#{{pr}} güncellenmeli.", - "f561e80968": "#{{pr}} engellendi." + "f561e80968": "#{{pr}} engellendi.", + "mergeThroughLabel_other": "#{{pr}} dahil merge et · {{count}} PR" } } } @@ -13931,14 +13992,14 @@ "sourceActionsUnavailable": "Transkript kaynağı kullanılamıyor." }, "AiVaultScanProgressStrip": { - "agentChecked": "{{agent}}: {{total}} olası geçmiş kaydından {{settled}} tanesi kontrol edildi", "fileCount_one": "{{value0}} dosya", "fileCount_other": "{{value0}} dosya", "databaseCount_one": "{{value0}} veritabanı", "databaseCount_other": "{{value0}} veritabanı", "scanning": "{{value0}} taranıyor", "checking": "{{value0}} kontrol ediliyor", - "scanned": "{{value0}} tarandı" + "scanned": "{{value0}} tarandı", + "agentCheckedCount_other": "{{agent}}: {{total}} olası geçmiş kaydından {{settled}} tanesi kontrol edildi" }, "run": { "source": { @@ -13967,6 +14028,14 @@ } } } + }, + "fileExplorerMultiDrag": { + "moreItems_other": "+{{count}} daha" + }, + "CreatePullRequest": { + "createInProgress": "PR oluşturuluyor...", + "workspaceHostUnresolved": "Çalışma alanının sunucusu çözümlenemedi. Çalışma alanını yenileyip tekrar deneyin.", + "branchDiscoveryFailed": "Branch'ler keşfedilemedi." } } }, @@ -15817,7 +15886,9 @@ "6978871a3d": "Aç", "cce596969e": "Notu sil", "cad3384faa": "Notu düzenle", - "508ee678a5": "Tarayıcıda aç" + "508ee678a5": "Tarayıcıda aç", + "noteAuthorFallback": "Not", + "sentMeta": "gönderildi" }, "DiffCommentPopover": { "2b3ce6d394": "İptal", @@ -15830,6 +15901,9 @@ }, "useDiffCommentDecorator": { "995fa28b50": "Bu not" + }, + "diffCommentZoneCard": { + "noteAlreadySent": "Not zaten gönderildi" } } }, @@ -17072,10 +17146,9 @@ "rightSidebar": { "FolderWorkspaceWorktreesPanel": { "unavailable": "Çalışma alanları yalnızca klasör çalışma alanları için gösterilir.", - "countOne": "1 bağlı worktree", - "countMany": "{{value0}} bağlı worktree", "emptyTitle": "Henüz bağlı worktree yok", - "emptyCopy": "Bu çalışma alanından oluşturulan worktree'ler burada görünecek." + "emptyCopy": "Bu çalışma alanından oluşturulan worktree'ler burada görünecek.", + "attachedCount_other": "{{count}} bağlı worktree" }, "FolderWorkspacePrChecksPanel": { "unavailable": "PR kontrolleri yalnızca klasör çalışma alanları için gösterilir.", @@ -17087,12 +17160,9 @@ "hideDetails": "{{value0}} PR kontrol ayrıntılarını gizle", "reviewChecks": "İnceleme kontrolleri", "allChecksPassing": "tüm kontroller başarılı", - "oneWorktree": "1 worktree", - "worktreeCount": "{{value0}} worktree", - "oneFailing": "1 başarısız", - "failingCount": "{{value0}} başarısız", - "onePending": "1 bekleyen", - "pendingCount": "{{value0}} bekleyen" + "worktreeCountLabel_other": "{{count}} worktree", + "failingCountLabel_other": "{{count}} başarısız", + "pendingCountLabel_other": "{{count}} bekleyen" }, "parentPrChecks": { "rowSummary": { @@ -19625,8 +19695,6 @@ }, "sessionSearch": { "panel": { - "resultsOne": "{{count}} sonuç", - "resultsOther": "{{count}} sonuç", "noMatches": "Dizinlenmiş geçmişte eşleşen oturum yok. Başka bir sorgu veya kapsam deneyin.", "loadMore": "Daha fazla eşleşme yükle", "indexedHistory": "Dizinlenmiş geçmiş", @@ -19648,11 +19716,20 @@ "retry": "Tekrar dene", "scopeUnknown": "Bu bilgisayarda bu çalışma alanı veya proje yok. Bu bilgisayardaki her şeyi aramak için kapsamı Tümü olarak değiştirin.", "sortSessionsAriaLabel": "Oturumları sırala: {{value0}}", - "sessionsOne": "{{count}} oturum", - "sessionsOther": "{{count}} oturum", - "sessionsOfLoaded": "{{value1}} oturumdan {{value0}} tanesi", "showMoreSessions": "Daha fazla oturum göster", - "loadingMoreSessions": "Daha fazla oturum yükleniyor…" + "loadingMoreSessions": "Daha fazla oturum yükleniyor…", + "resultCount_other": "{{count}} sonuç", + "sessionCount_other": "{{count}} oturum", + "sessionsShownOfLoaded_other": "{{count}} oturumdan {{shown}} tanesi", + "hostSkipReason": { + "indexChanged": "indeks değişti", + "searchOff": "arama kapalı", + "notReady": "hazır değil", + "unavailable": "kullanılamıyor", + "unreachable": "erişilemiyor", + "scopeNotFound": "arama kapsamı orada bulunamadı", + "agentNotSupported": "ajan desteklenmiyor" + } } }, "sessionHistory": { @@ -20139,8 +20216,8 @@ "rateLimited": "GitHub istek sınırına ulaşıldı. Birkaç dakika sonra tekrar deneyin.", "network": "Ağ hatası — bağlantınızı kontrol edin.", "tooLargeUnknownCount": "Bu görünümde Orca'da gösterilemeyecek kadar çok öğe var. GitHub'da görünümün filtresini daraltın.", - "tooLarge": "Bu görünüm {{itemCount}} öğe içeriyor — Orca'da gösterilemeyecek kadar büyük. GitHub'da görünümün filtresini daraltın.", - "schemaDriftDetail": "Bu proje görünümü okunamadı: {{detail}}." + "schemaDriftDetail": "Bu proje görünümü okunamadı: {{detail}}.", + "tooLargeCount_other": "Bu görünüm {{count}} öge içeriyor — Orca'da gösterilemeyecek kadar büyük. GitHub'da görünümün filtresini daraltın." }, "columns": { "type": "Tür" diff --git a/src/renderer/src/i18n/locales/zh-Hant.json b/src/renderer/src/i18n/locales/zh-Hant.json index 8069fd2bdd7..d7c1e77b4ec 100644 --- a/src/renderer/src/i18n/locales/zh-Hant.json +++ b/src/renderer/src/i18n/locales/zh-Hant.json @@ -1777,9 +1777,6 @@ "3fdf777817": "在 GitHub 上開啟", "c43fe79ee0": "複製 GitHub 連結", "0caac1a18f": "從 PR 啟動工作區", - "8223320f8d": "已更新", - "10ef1afb8e": "· 已更新", - "55962099bc": "建立了此議題", "0ab4664a8b": "從議題啟動工作區", "36182aa57f": "啟動新工作區", "fe6ff12dc2": "更多議題工作區操作", @@ -1852,8 +1849,6 @@ "52b20b56f7": "描述", "4d555d3796": "編輯描述", "9df4e74bdf": "儲存", - "0ae387d8ca": "由", - "228e2f59d3": "已解決", "a154ec5224": "在 GitHub 上開啟留言", "bca8eb39ac": "回覆留言", "68cb993d61": "已解決", @@ -1869,7 +1864,6 @@ "d43736d09c": "程式碼上下文控制", "bd7be7b1fd": "留言 L", "db61d76cd5": "正在載入程式碼上下文…", - "f2d02cdf8c": "已檢視檔案", "1257d1435d": "顯示檔案樹", "a341343303": "已新增審查留言。", "d1fa2cf888": "缺少 PR 來源分支最新提交的 SHA,無法發表留言。", @@ -1909,8 +1903,6 @@ "ec5c4b3ab2": "重新開啟 PR", "21860b58d0": "關閉 PR", "5932578f51": "合併需要註冊本機存放庫", - "e2bf3e41a9": "評論", - "28d0d3374f": "討論串", "080d071d48": "回覆@{{value0}}", "86f809e2ce": "在此審查討論串中回覆", "136542c9ba": ":L{{value0}}", @@ -1940,7 +1932,9 @@ "from": "從", "to": "到", "activity": "活動", - "noActivity": "暫無活動。" + "noActivity": "暫無活動。", + "pullRequestReference": "PR #{{number}}", + "issueReference": "議題 #{{number}}" }, "checkActionRequiredHint": "需要在 GitHub 上手動操作(例如核准工作流程執行),才能進行合併。", "e15a8b77ef": "此檢查沒有可用的行內詳細資訊。", @@ -1954,8 +1948,13 @@ "09d67a0f9b": "無法關閉 PR", "88809e79db": "無法重新開啟 PR", "00f55cc17b": "此 PR 無法存取存放庫。", - "reactionCountSingular": "{{count}} 個 {{reaction}} 反應", - "reactionCountPlural": "{{count}} 個 {{reaction}} 反應" + "reactionCount_other": "{{count}} 個「{{reaction}}」反應", + "filesViewed_other": "已檢視 {{viewed}} / {{count}} 個檔案", + "updatedRelativeTime": "更新於 {{time}}", + "authorOpenedThisIssue": " 建立了此議題", + "middotUpdatedRelativeTime": "· 更新於 {{time}}", + "resolvedThreadBy": "{{author}} 發起的已解決討論串", + "resolvedCommentBy": "{{author}} 發表的已解決評論" }, "GitLabItemDialog": { "65e784c1f1": "重新開啟", @@ -2011,14 +2010,13 @@ "f23ea85341": "已解決", "6de8ce0cc6": "需要 {{value0}}", "22511537d2": "已核准", - "00f3bab87b": ",共需 {{value0}}", "3a051b8ade": "工作項目", "32f8bef818": "無日誌輸出。", "4168eb2c51": "解決", "commentTooLarge": "評論過長,無法安全提交。", "gitlabActionFailed": "GitLab 操作失敗。", - "approvalsRemainingSingular": "還需 {{count}} 次核准", - "approvalsRemainingPlural": "還需 {{count}} 次核准" + "approvalsRemainingOfRequired_other": "共需 {{required}} 次核准,還差 {{count}} 次", + "approvalsRemaining_other": "還需 {{count}} 次核准" }, "JiraIssueWorkspace": { "b0b92666c9": "評論", @@ -2346,9 +2344,6 @@ "778683ec84": "描述", "da9aaa8bcf": "編輯描述", "4a337ac05f": "儲存", - "169a93b29a": "已更新", - "3c891789f6": "由", - "f4fe47c2bb": "已解決", "0ac19bb52e": "在 GitHub 上開啟評論", "d6c6679de7": "回覆評論", "76b2a0ac5b": "已解決", @@ -2356,7 +2351,6 @@ "6885c619e7": "如果沒有存放庫路徑,則無法回覆。", "d94810f652": "無法更新描述。", "9b4190dc98": "描述已更新。", - "89e80af1c7": "已檢視檔案", "319cf2d54b": "顯示檔案樹", "eff839f438": "已新增審查評論。", "d8c3ba91c4": "沒有 PR 最新提交的 SHA 就無法發表評論。", @@ -2394,8 +2388,6 @@ "9d5425918e": "重新開啟 PR", "96d013ed28": "關閉 PR", "eca289e593": "合併需要註冊本機存放庫", - "e01e34f5fa": "評論", - "345b68254c": "討論串", "31a7b202f2": "回覆 @{{value0}}", "408e634fbb": "在此審查討論串中回覆", "34b9f7c264": ":L{{value0}}", @@ -2417,7 +2409,18 @@ "4b8ae7303f": "無法載入差異。", "closePullRequestFailed": "無法關閉 PR", "reopenPullRequestFailed": "無法重新開啟 PR", - "diffLoadTimedOut": "載入此差異逾時。" + "diffLoadTimedOut": "載入此差異逾時。", + "filesViewed_other": "已檢視 {{viewed}} / {{count}} 個檔案", + "updatedRelativeTime": "更新於 {{time}}", + "resolvedThreadBy": "{{author}} 發起的已解決討論串", + "resolvedCommentBy": "{{author}} 發表的已解決評論", + "mentionSource": { + "prAuthor": "PR 作者", + "issueAuthor": "議題作者", + "commenter": "評論者", + "participant": "參與者", + "teamMember": "團隊成員" + } }, "QuickOpen": { "1dbd3f59ff": "移動", @@ -2967,7 +2970,8 @@ "8f6cb3772f": "滿足要求後自動合併此 PR", "def355ff38": "可以合併", "e42c5bae67": "GitHub 表示此 PR 可以合併,且檢查已通過", - "cbf0113af6": "GitHub 表示此 PR 可以合併" + "cbf0113af6": "GitHub 表示此 PR 可以合併", + "autoMergeOn": "自動合併已開啟" } } }, @@ -3141,10 +3145,10 @@ "imageUrlTooLarge": "圖片 URL 過長。" }, "IssueSourceSelector": { - "d6aeb2012b": "議題來源:", "787c970baf": "議題來源", "51d1608920": "origin", - "30b2c9df91": "上游" + "30b2c9df91": "上游", + "showingIssuesFromRepo": "正在顯示來自 的議題" }, "PRFilterDropdowns": { "979be3cf6b": "負責人", @@ -3154,12 +3158,18 @@ "01f3f3d161": "作者", "13b3ac0a84": "狀態", "79c54552f7": "篩選條件", - "8a2ffbf9b3": "刪除 {{value0}} 篩選條件" + "8a2ffbf9b3": "刪除 {{value0}} 篩選條件", + "anyState": "任意", + "currentUser": "目前使用者" }, "PRFilterPickers": { - "fdf387297c": "清除 (", "472c12ae03": "清除", - "2d1f58eda6": "使用" + "pressEnterToUseValue": "按 Enter 使用輸入的值。", + "useTypedValue": "使用 ", + "clearSelected": "清除({{count}})", + "loading": "載入中…", + "searchTextTooLarge": "搜尋文字過長。", + "noMatches": "沒有符合項目" }, "PRFilterSections": { "a00830d3f7": "沒有使用者", @@ -3169,7 +3179,6 @@ "458ea3602b": "沒有作者", "b69fa4fa20": "返回", "30ebb6ca44": "清除所有篩選條件", - "8177eda37e": "篩選", "ea3416d646": "負責人", "b1d9fdea08": "標籤", "24754c44ad": "作者", @@ -3181,7 +3190,14 @@ "2b2f019091": "任意狀態", "0fd3249e2e": "已關閉", "d78b60b5c2": "開放", - "bd162b7d5a": "已合併" + "bd162b7d5a": "已合併", + "draft": "草稿", + "labelCount_other": "{{count}} 個標籤", + "allStates": "全部", + "filterPullRequests": "篩選 PR", + "filterIssues": "篩選議題", + "filterOrTypeLogin": "篩選或輸入登入名稱...", + "filterLabels": "篩選標籤..." }, "github": { "rate": { @@ -3192,15 +3208,14 @@ "d12d3d6f33": "重新整理 GitHub API 預算", "d5e5de9070": "Orca 透過 GitHub CLI 使用 REST、搜尋和 GraphQL。", "58c5f88216": "GitHub API 預算", - "6da1858354": "剩餘 · 重設於", - "f42790d150": "/", "01f7323e58": "GraphQL API", "1daf0f22a9": "GraphQL", "1f2f28a4de": "搜尋 API", "c377a4f06a": "搜尋", "c392c749a6": "REST API", "bb227706a6": "REST", - "budget_scope_prefix": "預算範圍" + "budget_scope_prefix": "預算範圍", + "remainingOfLimitResetsIn": "剩餘 {{remaining}} / {{limit}} · {{reset}} 後重設" } } } @@ -3208,7 +3223,29 @@ "CommentReactions": { "addReaction": "新增反應", "removeNamedReaction": "移除 {{value0}} 表情回應", - "addNamedReaction": "新增 {{value0}} 反應" + "addNamedReaction": "新增 {{value0}} 反應", + "reaction": { + "thumbsUp": "讚", + "thumbsDown": "倒讚", + "laugh": "大笑", + "confused": "困惑", + "heart": "愛心", + "hooray": "歡呼", + "rocket": "火箭", + "eyes": "眼睛" + } + }, + "CommentCodeContext": { + "showSurroundingCodeBlock": "顯示周圍程式碼區塊", + "showNearbyCodeContext": "顯示附近程式碼上下文" + }, + "prCheckPresentation": { + "successful": "成功", + "inProgress": "進行中" + }, + "IssueSourceIndicator": { + "issueFromRepo": "來自 的議題", + "issuesFromRepo": "來自 的議題" } }, "linear": { @@ -12495,14 +12532,13 @@ "right": { "sidebar": { "BulkActionBar": { - "79a9f5f712": "取消暫存(", - "ef5f5bd06e": "暫存(", - "60ed678138": "已選擇" + "selectedCount_other": "已選取 {{count}} 項", + "stageCount": "暫存({{count}})", + "unstageCount": "取消暫存({{count}})" }, "ChecksPanel": { "2ef90c9819": "已啟動 AI 代理程式處理失敗的檢查。", "a0181a8d76": "已啟動 AI 代理程式處理衝突。", - "34464d00b9": "已更新", "058039787c": "取消", "2ab7fd4b6d": "儲存", "dda5924a40": "檢查需要 Git 分支和代管審查的上下文資訊", @@ -12548,7 +12584,8 @@ "430f1a62d4": "無法在主機上解決選取的討論串。", "updateReactionFailed": "無法更新反應。", "gitlabMoreActions": "更多 MR 動作", - "gitlabLinkAnother": "連結另一個 MR" + "gitlabLinkAnother": "連結另一個 MR", + "reviewUpdatedAt": "{{review}} 更新於 {{time}}" }, "CreateHostedReviewComposer": { "741ff8a0d2": "推送並建立 {{value0}}" @@ -12705,7 +12742,14 @@ "740aca88ab": "工作區連接埠掃描失敗。", "5be4f7f727": "連接埠 {{value0}} 選單", "1004af16ab": "複製 {{value0}}", - "153d3a8026": "工作區主機未知" + "153d3a8026": "工作區主機未知", + "unknownProcess": "未知行程", + "containerOrForwardedService": "容器或轉送的服務", + "unassigned": "未指派", + "remotePortOutOfRange": "遠端連接埠必須在 1–65535 範圍內", + "localPortOutOfRange": "本機連接埠必須在 1–65535 範圍內", + "localPortInUse": "連接埠 {{port}} 已被使用。請選擇其他本機連接埠。", + "localPortRequiresPrivileges": "連接埠 {{port}} 需要提升權限。請使用本機連接埠 ≥ 1024。" }, "Search": { "1abfb25a66": "輸入要在檔案中搜尋的內容", @@ -12762,7 +12806,6 @@ "476b77745b": "變更基礎參考", "ed34038d0d": "重新整理分支比較", "493f963029": "變更基準參照", - "3278b2767b": "領先", "11b5dd8e41": "比較", "a9bf7c171a": "提交失敗", "011f9713fc": "提交被阻止", @@ -12807,7 +12850,6 @@ "574d2f4413": "清除筆記", "05bb8f4a48": "取消", "48db37cca9": "檢視全部", - "78ce2d37ac": "推送到 fork", "c05fe04839": "推送到 {{value0}} 的 fork(非 origin)", "c35baf2f1e": "篩選檔案…", "2fe2a67580": "更多筆記動作", @@ -12815,14 +12857,12 @@ "cc474e0b8c": "筆記", "e131cd7128": "原始碼控制僅適用於 Git 存放庫", "c07b236287": "選擇一個工作區以檢視變更", - "dc5a6465fc": "{{value0}}(例如 {{value1}}{{value2}})", "a5e5a11090": "放棄全部變更失敗 — 無法在放棄前取消暫存檔案", "8a5ba6a988": "無法載入提交差異", "fe5bd1a610": "建立 {{value0}}...", "812cb992ee": "開啟於 {{value0}}", "eef5446523": "{{value0}} #{{value1}} 已開啟", "0453ca3a9a": "{{value0}} 已建立,但 Orca 尚無法重新整理它。", - "f99560ab29": "中止 {{value0}} 失敗", "eae7a1da5f": "無法清除筆記。", "df5040e3c3": "取消暫存", "8cde1a2fb0": "暫存", @@ -12850,8 +12890,6 @@ "aaf1451654": "建立草稿 {{value0}}", "26511c22b4": "建立中...", "d7ae61269b": "已在分支上提交", - "branchFilesChangedVsBaseOne": "與 {{ref}} 相比,1 個檔案已變更", - "branchFilesChangedVsBaseOther": "與 {{ref}} 相比,{{count}} 個檔案已變更", "48a003c1b1": "已暫存的變更", "d4ef4bafc5": "變更", "9339382454": "全部取消暫存", @@ -12861,8 +12899,6 @@ "72f2bea3f4": "展開筆記", "d13edef890": "摺疊筆記", "d6fb1df5fe": "{{value0}} 已開啟", - "05838cfdeb": "{{value0}} 衝突", - "d206117f90": "{{value0}} 衝突 ({{value1}})", "0b5b8c234c": "開啟 {{value0}} ({{value1}})", "d97ef8f221": "第 {{value0}}-{{value1}} 行", "6f8bfa0eb9": "第 {{value0}} 行", @@ -12915,10 +12951,6 @@ "b3c8f1a902": "按檔名篩選", "d4f8c2a901": "清除並關閉篩選器", "e8a1c4b203": "vs", - "compareBaseCommitsAheadOne": "領先 {{ref}} 1 個提交", - "compareBaseCommitsAheadOther": "領先 {{ref}} {{count}} 個提交", - "compareBaseCommitsBehindOne": "落後 {{ref}} 1 個提交", - "compareBaseCommitsBehindOther": "落後 {{ref}} {{count}} 個提交", "4b4a7de138": "在瀏覽器中開啟審查頁面", "createPrIntentCommitBlockedSummary": "提交被阻止:{{value0}} 修復問題後重試建立 PR。", "pushRecovery": { @@ -12949,17 +12981,41 @@ "diffCommentNotesCopyFailed": "複製筆記失敗", "conflictCount_one": "{{count}} 個衝突", "conflictCount_other": "{{count}} 個衝突", - "discardFailedSingular": "無法捨棄 {{count}} 個檔案的變更", - "discardFailedPlural": "無法捨棄 {{count}} 個檔案的變更", - "noteCountSingular": "{{count}} 則筆記", - "noteCountPlural": "{{count}} 則筆記" + "discardFailedSampleMore_other": "{{paths}},另有 +{{count}} 個", + "discardFailed_other": "無法捨棄 {{count}} 個檔案的變更", + "discardFailedWithSample": "{{error}}(例如 {{paths}})", + "compareBaseCommitsAhead_other": "領先 {{ref}} {{count}} 個提交", + "compareBaseCommitsBehind_other": "落後 {{ref}} {{count}} 個提交", + "branchFilesChangedVsBase_other": "與 {{ref}} 相比,{{count}} 個檔案已變更", + "noteCount_other": "{{count}} 則筆記", + "comparingAgainstRef": "正在與 {{ref}} 比較", + "commitsAheadShort_other": "領先 {{count}} 個", + "unresolvedConflictOfKind": "未解決的衝突({{kind}})", + "unresolvedConflict": "未解決的衝突", + "locallyResolvedConflictOfKind": "已在本機解決的衝突({{kind}})", + "locallyResolvedConflict": "已在本機解決的衝突", + "pushesToForkTarget": "推送到 fork {{target}}", + "abortRebaseConfirmTitle": "中止變基?", + "abortMergeConfirmTitle": "中止合併?", + "abortRebaseConfirmDescription": "這將取消正在進行的變基,並可能捨棄此次變基期間的衝突解決結果。", + "abortMergeConfirmDescription": "這將取消正在進行的合併,並可能捨棄此次合併期間的衝突解決結果。", + "abortRebaseFailedFallback": "無法中止變基", + "abortMergeFailedFallback": "無法中止合併", + "abortRebaseFailed": "中止變基失敗", + "abortMergeFailed": "中止合併失敗", + "clearNotesFromWorkspace_other": "清除此工作區中的 {{count}} 則筆記?", + "clearNotesFromFile_other": "清除 {{path}} 中的 {{count}} 則筆記?" }, "SourceControlAgentActionDialog": { "8e856842d1": "無法啟動選定的代理程式。", "c075d00de1": "無法解析工作區連線。", "38b899cc02": "所有存放庫", "808cfe0a3b": "此存放庫", - "994cddd1f7": "不儲存" + "994cddd1f7": "不儲存", + "agentNotEnabledOrDetected": "{{agent}} 未在此工作區主機上啟用或未被偵測到。", + "workspaceConnectionUnresolved": "無法解析工作區連線。", + "noEnabledAgentsDetected": "未在此工作區主機上偵測到已啟用的代理程式。", + "startAgent": "啟動代理程式" }, "SourceControlAgentActionDialogForm": { "013c9ac04a": "儲存範圍", @@ -13025,10 +13081,6 @@ "cbcc4ab3db": "顯示前 100 項檢查", "0dca6bfab5": "開啟檢查詳細資訊", "991f50c7e4": "尚未設定任何檢查", - "9ad98f2a17": "待處理", - "5e52f4ef7f": "失敗", - "02ca4f9074": "通過", - "checksUnresolvedChip": "未解決的", "checksUnresolvedStripHint": "這些檢查完成後沒有得出通過或失敗的結論。", "e15a8b77ef": "此檢查沒有可用的行內詳細資訊。", "dcb3c546fe": "重試", @@ -13047,7 +13099,6 @@ "1f2b980522": "正在載入檢查詳細資訊...", "0c96cd25e5": "解決", "3a71a6ed0b": "在檢查和合併完成之前解決衝突。", - "60186d8498": "此操作因衝突而受阻", "c16762ac8c": "下方的檢查和評論顯示目前擷取的上下文。", "9d0e7bcefc": "沒有會造成阻礙的 PR 操作", "5856874b59": "當該面板保持開啟狀態時,Orca 將重新整理檢查。", @@ -13072,7 +13123,6 @@ "084c516efb": "複製命令", "5dc3af25c0": "選擇評論", "d7a2f9c401": "傳送未解決的 {{value0}} 評論", - "d91f2a6c39": "傳送 {{value0}} 則已排隊評論給 AI", "a6de3e5a20": "清除已排隊評論", "f8a2c91d04": "加入代理程式佇列", "b4e8a1c902": "已加入佇列", @@ -13095,7 +13145,23 @@ "pendingChecks_one": "{{count}} 項檢查待處理", "pendingChecks_other": "{{count}} 項檢查待處理", "unresolvedChecks_one": "{{count}} 項檢查尚未解決", - "unresolvedChecks_other": "{{count}} 項檢查尚未解決" + "unresolvedChecks_other": "{{count}} 項檢查尚未解決", + "passingCount_other": "{{count}} 個通過", + "failingCount_other": "{{count}} 個失敗", + "pendingCount_other": "{{count}} 個等待中", + "unresolvedCount_other": "{{count}} 個未解決", + "sendQueuedCommentsToAi_other": "傳送 {{count}} 則佇列中的評論給 AI", + "conflictsBlockThisMr": "衝突阻擋了此 MR", + "conflictsBlockThisPr": "衝突阻擋了此 PR", + "copyComment": "複製評論", + "sendComment": "傳送", + "commentingRequiresGitHubPrTarget": "發表評論需要指定 GitHub PR 的目標存放庫。", + "selectWorkspaceBeforeAiAction": "啟動 AI 操作前請選擇工作區。", + "operation": { + "rebase": "變基", + "merge": "合併", + "cherryPick": "挑選" + } }, "empty": { "state": { @@ -13501,8 +13567,7 @@ }, "compare": { "summary": { - "commitsAheadSingular": "比 {{ref}} 領先 {{count}} 筆提交", - "commitsAheadPlural": "比 {{ref}} 領先 {{count}} 筆提交" + "commitsAhead_other": "領先 {{ref}} {{count}} 個提交" } }, "conflict": { @@ -13585,8 +13650,9 @@ "folderLinksOutsideProject": "此資料夾連結到專案之外,無法在此開啟。" }, "useFileExplorerImport": { - "25919b2050": "跳過 {{value0}} {{value1}}。", - "132fd0e1e9": "無法匯入 {{value0}} {{value1}}。" + "importFailedCount_other": "無法匯入 {{count}} 個檔案。", + "importSkippedCount_other": "已略過 {{count}} 個檔案。", + "importFailed": "無法匯入檔案。" }, "useFileExplorerKeys": { "8adb953095": "操作失敗" @@ -13624,7 +13690,6 @@ "refreshSessionHistory": "重新整理工作階段歷史", "searchSessions": "搜尋工作階段", "clearSearch": "清除搜尋", - "transcriptsSkipped": "跳過了 {{count}} 個記錄", "noAgentSessionsFound": "未找到代理程式工作階段", "noSessionsMatchFilters": "沒有工作階段符合目前篩選條件", "noAgentsSelected": "未選擇任何代理程式", @@ -13643,7 +13708,8 @@ "resumeInChatFailed": "無法在新聊天中恢復此工作階段。", "resumeInNewCliUnavailable": "無法在 CLI 中開啟此工作階段。", "resumeInNewCliHostTooOld": "請更新執行此聊天的主機上的 Orca,才能在新的 CLI 中恢復它。", - "folderWorkspaceUnavailable": "資料夾工作區不再可用。" + "folderWorkspaceUnavailable": "資料夾工作區不再可用。", + "transcriptsSkippedCount_other": "已略過 {{count}} 份對話記錄" }, "AiVaultPanelControls": { "scanningSessions": "正在掃描工作階段", @@ -13674,11 +13740,8 @@ "latestTurns": "最近輪次", "noPreviewAvailable": "沒有可用的對話預覽", "conversationNotSaved": "對話未儲存", - "recoverableEmptyDetail": "此工作階段沒有已儲存的對話,但仍有 {{value0}} 個可恢復項。", "recoverableEmptyOpenLogHint": "開啟日誌以恢復它們。", "emptyConversationDetail": "此工作階段沒有已儲存的對話,無法恢復。", - "queuedMessages": "{{value0}} 則排隊訊息", - "subagentTranscripts": "{{value0}} 個子代理程式記錄", "resumeInWorktree": "在工作樹中恢復", "viewLog": "檢視日誌", "unknownTime": "未知時間", @@ -13707,7 +13770,10 @@ "noFirstPromptAvailable": "沒有可用的首次提示詞", "loadingFirstPrompt": "正在載入首次提示詞…", "folder": "資料夾", - "resumeInFolder": "在資料夾中恢復" + "resumeInFolder": "在資料夾中恢復", + "recoverableEmptyDetailCount_other": "此工作階段沒有已儲存的對話,但仍有 {{count}} 個可復原項目。", + "queuedMessageCount_other": "{{count}} 則佇列中的訊息", + "subagentTranscriptCount_other": "{{count}} 份子代理程式對話記錄" }, "AiVaultSessionRow": { "noPreviewAvailable": "沒有可用的對話預覽", @@ -13841,26 +13907,21 @@ "confirmation": { "84f6f5b9eb": "包括:{{numbers}}。", "541984b2eb": "將截至 #{{pr}} 的 PR 加入佇列?", - "4809f55cdb": "{{included}}GitHub 會將 {{count}} PR 一起加入到合併佇列。佇列選擇合併方法,並可能分成不同群組合併。", - "be8f2621be": "{{included}}GitHub 會將 {{count}} PR 一起加入到合併佇列。佇列選擇合併方法,並可能分成不同群組合併。", - "92ca033e72": "將 {{count}} 個 PR 加入佇列", - "478a527b15": "將 {{count}} 個 PR 加入佇列", "1feef35ca4": "合併至 #{{pr}} 為止?", - "c3e036c99f": "{{included}}GitHub 將使用 {{method}} 以原子方式合併 {{count}} PR。如果無法合併,則不會合併任何內容。", - "369aba4b32": "{{included}}GitHub 將使用 {{method}} 以原子方式合併 {{count}} PR。如果有一個無法合併,那就沒有一個會合併。", - "493c78f521": "合併 {{count}} PR", - "eb7051d268": "合併 {{count}} PR" + "queueDescription_other": "{{included}}GitHub 會將 {{count}} 個 PR 一起加入合併佇列。佇列會選擇合併方法,並可能分成不同群組合併。", + "queueConfirm_other": "將 {{count}} 個 PR 加入佇列", + "mergeDescription_other": "{{included}}GitHub 將使用 {{method}} 以原子方式合併 {{count}} 個 PR。如果其中任何一個無法合併,所有 PR 都不會合併。", + "mergeConfirm_other": "合併 {{count}} 個 PR" }, "merge": { - "55ae29b907": "合併至 #{{pr}} 為止 · {{count}} PR", - "b8446f6ec2": "合併至 #{{pr}} 為止 · {{count}} PR", "189d0ec614": "#{{pr}} 仍是草稿。", "640fb50d9c": "#{{pr}} 已關閉。", "46ffcbda75": "#{{pr}} 有合併衝突。", "6dabefd63e": "#{{pr}} 已要求變更。", "2bb21fc326": "#{{pr}} 仍需審查核准。", "c23faf74df": "#{{pr}} 必須更新。", - "f561e80968": "#{{pr}} 被阻止。" + "f561e80968": "#{{pr}} 被阻止。", + "mergeThroughLabel_other": "合併至 #{{pr}} 為止(含)· {{count}} 個 PR" } } } @@ -13917,14 +13978,14 @@ "sourceActionsUnavailable": "對話記錄來源不可用。" }, "AiVaultScanProgressStrip": { - "agentChecked": "{{agent}}:已檢查 {{settled}} / {{total}} 筆候選歷史紀錄", "fileCount_one": "{{value0}} 個檔案", "fileCount_other": "{{value0}} 個檔案", "databaseCount_one": "{{value0}} 個資料庫", "databaseCount_other": "{{value0}} 個資料庫", "scanning": "正在掃描 {{value0}}", "checking": "正在檢查 {{value0}}", - "scanned": "已掃描 {{value0}}" + "scanned": "已掃描 {{value0}}", + "agentCheckedCount_other": "{{agent}}:已檢查 {{settled}} / {{total}} 筆候選歷史記錄" }, "run": { "source": { @@ -13953,6 +14014,14 @@ } } } + }, + "fileExplorerMultiDrag": { + "moreItems_other": "另有 +{{count}} 項" + }, + "CreatePullRequest": { + "createInProgress": "正在建立 PR...", + "workspaceHostUnresolved": "無法解析工作區主機。請重新整理工作區後再試。", + "branchDiscoveryFailed": "分支偵測失敗。" } } }, @@ -15803,7 +15872,9 @@ "6978871a3d": "開啟", "cce596969e": "刪除備註", "cad3384faa": "編輯備註", - "508ee678a5": "在瀏覽器中開啟" + "508ee678a5": "在瀏覽器中開啟", + "noteAuthorFallback": "筆記", + "sentMeta": "已傳送" }, "DiffCommentPopover": { "2b3ce6d394": "取消", @@ -15816,6 +15887,9 @@ }, "useDiffCommentDecorator": { "995fa28b50": "此備註" + }, + "diffCommentZoneCard": { + "noteAlreadySent": "筆記已傳送" } } }, @@ -17058,10 +17132,9 @@ "rightSidebar": { "FolderWorkspaceWorktreesPanel": { "unavailable": "僅在資料夾工作區中顯示工作區。", - "countOne": "1 個附加的工作樹", - "countMany": "{{value0}} 個附加的工作樹", "emptyTitle": "還沒有附加的工作樹", - "emptyCopy": "從此工作區建立的工作樹將顯示在這裡。" + "emptyCopy": "從此工作區建立的工作樹將顯示在這裡。", + "attachedCount_other": "{{count}} 個附加的工作樹" }, "FolderWorkspacePrChecksPanel": { "unavailable": "PR 檢查僅在資料夾工作區中顯示。", @@ -17073,12 +17146,9 @@ "hideDetails": "隱藏 {{value0}} 的 PR 檢查詳情", "reviewChecks": "審查檢查", "allChecksPassing": "所有檢查均通過", - "oneWorktree": "1 個工作樹", - "worktreeCount": "{{value0}} 個工作樹", - "oneFailing": "1 個失敗", - "failingCount": "{{value0}} 個失敗", - "onePending": "1 個等待中", - "pendingCount": "{{value0}} 個等待中" + "worktreeCountLabel_other": "{{count}} 個工作樹", + "failingCountLabel_other": "{{count}} 個失敗", + "pendingCountLabel_other": "{{count}} 個等待中" }, "parentPrChecks": { "rowSummary": { @@ -19609,8 +19679,6 @@ }, "sessionSearch": { "panel": { - "resultsOne": "{{count}} 筆結果", - "resultsOther": "{{count}} 筆結果", "noMatches": "已建立索引的歷史記錄中沒有符合的工作階段。請改用其他查詢或範圍。", "loadMore": "載入更多符合項目", "indexedHistory": "已建立索引的歷史記錄", @@ -19632,11 +19700,20 @@ "retry": "重試", "scopeUnknown": "此電腦沒有此工作區或專案。請將搜尋範圍切換為「全部」。", "sortSessionsAriaLabel": "排序工作階段:{{value0}}", - "sessionsOne": "{{count}} 個工作階段", - "sessionsOther": "{{count}} 個工作階段", - "sessionsOfLoaded": "顯示 {{value1}} 個工作階段中的 {{value0}} 個", "showMoreSessions": "顯示更多工作階段", - "loadingMoreSessions": "正在載入更多工作階段…" + "loadingMoreSessions": "正在載入更多工作階段…", + "resultCount_other": "{{count}} 筆結果", + "sessionCount_other": "{{count}} 個工作階段", + "sessionsShownOfLoaded_other": "{{shown}} / {{count}} 個工作階段", + "hostSkipReason": { + "indexChanged": "索引已變更", + "searchOff": "搜尋已關閉", + "notReady": "尚未就緒", + "unavailable": "無法使用", + "unreachable": "無法連線", + "scopeNotFound": "該主機上找不到搜尋範圍", + "agentNotSupported": "不支援此代理程式" + } } }, "sessionHistory": { @@ -20123,8 +20200,8 @@ "rateLimited": "已達 GitHub 速率限制。請稍候幾分鐘再試。", "network": "網路錯誤,請檢查連線。", "tooLargeUnknownCount": "此檢視的條目過多,無法在 Orca 中呈現。請在 GitHub 上縮小檢視的篩選範圍。", - "tooLarge": "此檢視有 {{itemCount}} 個條目,超過 Orca 可呈現的數量。請在 GitHub 上縮小檢視的篩選範圍。", - "schemaDriftDetail": "無法讀取此專案檢視:{{detail}}。" + "schemaDriftDetail": "無法讀取此專案檢視:{{detail}}。", + "tooLargeCount_other": "此檢視有 {{count}} 個項目,超過 Orca 可呈現的數量。請在 GitHub 上縮小檢視的篩選範圍。" }, "columns": { "type": "類型" diff --git a/src/renderer/src/i18n/locales/zh.json b/src/renderer/src/i18n/locales/zh.json index 07368f7507c..4dd5b5266d3 100644 --- a/src/renderer/src/i18n/locales/zh.json +++ b/src/renderer/src/i18n/locales/zh.json @@ -1498,9 +1498,6 @@ "3fdf777817": "在 GitHub 上打开", "c43fe79ee0": "复制 GitHub 链接", "0caac1a18f": "从 PR 启动工作区", - "8223320f8d": "已更新", - "10ef1afb8e": "· 已更新", - "55962099bc": "创建了此议题", "0ab4664a8b": "从议题开始工作区", "36182aa57f": "启动新工作区", "fe6ff12dc2": "更多议题工作区操作", @@ -1573,8 +1570,6 @@ "52b20b56f7": "描述", "4d555d3796": "编辑描述", "9df4e74bdf": "保存", - "0ae387d8ca": "由", - "228e2f59d3": "已解决", "a154ec5224": "在 GitHub 上打开评论", "bca8eb39ac": "回复评论", "68cb993d61": "已解决", @@ -1590,7 +1585,6 @@ "d43736d09c": "代码上下文控制", "bd7be7b1fd": "comment L", "db61d76cd5": "正在加载代码上下文...", - "f2d02cdf8c": "已查看文件", "1257d1435d": "显示文件树", "a341343303": "已添加评审评论。", "d1fa2cf888": "没有 PR head SHA 就无法发表评论。", @@ -1630,8 +1624,6 @@ "ec5c4b3ab2": "重新打开 PR", "21860b58d0": "关闭PR", "5932578f51": "合并需要注册本地仓库", - "e2bf3e41a9": "评论", - "28d0d3374f": "帖子串", "080d071d48": "回复@{{value0}}", "86f809e2ce": "在此评审线程中回复", "136542c9ba": ":L{{value0}}", @@ -1661,7 +1653,9 @@ "from": "从", "to": "到", "activity": "活动", - "noActivity": "暂无活动。" + "noActivity": "暂无活动。", + "pullRequestReference": "PR #{{number}}", + "issueReference": "议题 #{{number}}" }, "checkActionRequiredHint": "需要在 GitHub 上执行手动操作(例如批准运行)才能解除合并阻止。", "e15a8b77ef": "此检查没有可用的内联详细信息。", @@ -1675,8 +1669,13 @@ "09d67a0f9b": "无法关闭拉取请求", "88809e79db": "无法重新提交拉取请求", "00f55cc17b": "此拉取请求无法访问仓库。", - "reactionCountSingular": "{{count}} 个 {{reaction}} 反应", - "reactionCountPlural": "{{count}} 个 {{reaction}} 反应" + "reactionCount_other": "{{count}} 个“{{reaction}}”反应", + "filesViewed_other": "已查看 {{viewed}} / {{count}} 个文件", + "updatedRelativeTime": "更新于 {{time}}", + "authorOpenedThisIssue": " 创建了此议题", + "middotUpdatedRelativeTime": "· 更新于 {{time}}", + "resolvedThreadBy": "{{author}} 发起的已解决讨论串", + "resolvedCommentBy": "{{author}} 发表的已解决评论" }, "GitLabItemDialog": { "65e784c1f1": "重新打开", @@ -1732,14 +1731,13 @@ "f23ea85341": "已解决", "6de8ce0cc6": "需要 {{value0}}", "22511537d2": "已批准", - "00f3bab87b": "需要 {{value0}}", "3a051b8ade": "工作项目", "32f8bef818": "无日志输出。", "4168eb2c51": "解决", "commentTooLarge": "评论过长,无法安全提交。", "gitlabActionFailed": "GitLab 操作失败。", - "approvalsRemainingSingular": "还需 {{count}} 个批准", - "approvalsRemainingPlural": "还需 {{count}} 个批准" + "approvalsRemainingOfRequired_other": "共需 {{required}} 个批准,还差 {{count}} 个", + "approvalsRemaining_other": "还需 {{count}} 个批准" }, "JiraIssueWorkspace": { "b0b92666c9": "评论", @@ -2063,9 +2061,6 @@ "778683ec84": "描述", "da9aaa8bcf": "编辑描述", "4a337ac05f": "保存", - "169a93b29a": "已更新", - "3c891789f6": "由", - "f4fe47c2bb": "已解决", "0ac19bb52e": "在 GitHub 上打开评论", "d6c6679de7": "回复评论", "76b2a0ac5b": "已解决", @@ -2073,7 +2068,6 @@ "6885c619e7": "如果没有仓库路径,则无法回复。", "d94810f652": "无法更新描述。", "9b4190dc98": "描述已更新。", - "89e80af1c7": "已查看文件", "319cf2d54b": "显示文件树", "eff839f438": "已添加评审评论。", "d8c3ba91c4": "没有 PR head SHA 就无法发表评论。", @@ -2111,8 +2105,6 @@ "9d5425918e": "重新打开 PR", "96d013ed28": "关闭PR", "eca289e593": "合并需要注册本地仓库", - "e01e34f5fa": "评论", - "345b68254c": "帖子串", "31a7b202f2": "回复@{{value0}}", "408e634fbb": "在此评审线程中回复", "34b9f7c264": ":L{{value0}}", @@ -2138,7 +2130,18 @@ "diffLoadTimedOut": "加载此差异超时。", "6b1d5ee3e4": "此检查没有可用的内联详细信息。", "e04c027d98": "无法加载检查详细信息。", - "5df7c41d2a": "重试" + "5df7c41d2a": "重试", + "filesViewed_other": "已查看 {{viewed}} / {{count}} 个文件", + "updatedRelativeTime": "更新于 {{time}}", + "resolvedThreadBy": "{{author}} 发起的已解决讨论串", + "resolvedCommentBy": "{{author}} 发表的已解决评论", + "mentionSource": { + "prAuthor": "PR 作者", + "issueAuthor": "议题作者", + "commenter": "评论者", + "participant": "参与者", + "teamMember": "团队成员" + } }, "QuickOpen": { "1dbd3f59ff": "移动", @@ -2643,7 +2646,8 @@ "8f6cb3772f": "满足要求后自动合并此PR", "def355ff38": "可以合并", "e42c5bae67": "GitHub 显示此 PR 可以合并且检查已通过", - "cbf0113af6": "GitHub 显示此 PR 可以合并" + "cbf0113af6": "GitHub 显示此 PR 可以合并", + "autoMergeOn": "自动合并已开启" } } }, @@ -2817,10 +2821,10 @@ "imageUrlTooLarge": "图片 URL 过长。" }, "IssueSourceSelector": { - "d6aeb2012b": "显示议题来自", "787c970baf": "议题来源", "51d1608920": "origin", - "30b2c9df91": "上游" + "30b2c9df91": "上游", + "showingIssuesFromRepo": "正在显示来自 的议题" }, "PRFilterDropdowns": { "979be3cf6b": "负责人", @@ -2830,12 +2834,18 @@ "01f3f3d161": "作者", "13b3ac0a84": "状态", "79c54552f7": "筛选条件", - "8a2ffbf9b3": "删除 {{value0}} 筛选条件" + "8a2ffbf9b3": "删除 {{value0}} 筛选条件", + "anyState": "任意", + "currentUser": "当前用户" }, "PRFilterPickers": { - "fdf387297c": "清除 (", "472c12ae03": "清除", - "2d1f58eda6": "使用" + "pressEnterToUseValue": "按 Enter 使用输入的值。", + "useTypedValue": "使用 ", + "clearSelected": "清除({{count}})", + "loading": "加载中…", + "searchTextTooLarge": "搜索文本过长。", + "noMatches": "无匹配项" }, "PRFilterSections": { "a00830d3f7": "没有用户", @@ -2845,7 +2855,6 @@ "458ea3602b": "没有作者", "b69fa4fa20": "返回", "30ebb6ca44": "清除所有筛选条件", - "8177eda37e": "筛选", "ea3416d646": "负责人", "b1d9fdea08": "标签", "24754c44ad": "作者", @@ -2857,7 +2866,14 @@ "2b2f019091": "任意状态", "0fd3249e2e": "已关闭", "d78b60b5c2": "开放", - "bd162b7d5a": "合并" + "bd162b7d5a": "合并", + "draft": "草稿", + "labelCount_other": "{{count}} 个标签", + "allStates": "全部", + "filterPullRequests": "筛选 PR", + "filterIssues": "筛选议题", + "filterOrTypeLogin": "筛选或输入登录名...", + "filterLabels": "筛选标签..." }, "github": { "rate": { @@ -2868,15 +2884,14 @@ "d12d3d6f33": "刷新 GitHub API 预算", "d5e5de9070": "Orca 通过 GitHub CLI 使用 REST、搜索和 GraphQL。", "58c5f88216": "GitHub API 预算", - "6da1858354": "剩余 · 重置于", - "f42790d150": "的", "01f7323e58": "GraphQL API", "1daf0f22a9": "GraphQL", "1f2f28a4de": "搜索 API", "c377a4f06a": "搜索", "c392c749a6": "REST API", "bb227706a6": "REST", - "budget_scope_prefix": "预算范围" + "budget_scope_prefix": "预算范围", + "remainingOfLimitResetsIn": "剩余 {{remaining}} / {{limit}} · {{reset}} 后重置" } } } @@ -2884,7 +2899,29 @@ "CommentReactions": { "addReaction": "添加反应", "removeNamedReaction": "去除 {{value0}} 反应", - "addNamedReaction": "添加 {{value0}} 反应" + "addNamedReaction": "添加 {{value0}} 反应", + "reaction": { + "thumbsUp": "赞", + "thumbsDown": "踩", + "laugh": "大笑", + "confused": "困惑", + "heart": "爱心", + "hooray": "欢呼", + "rocket": "火箭", + "eyes": "眼睛" + } + }, + "CommentCodeContext": { + "showSurroundingCodeBlock": "显示周围代码块", + "showNearbyCodeContext": "显示附近代码上下文" + }, + "prCheckPresentation": { + "successful": "成功", + "inProgress": "进行中" + }, + "IssueSourceIndicator": { + "issueFromRepo": "来自 的议题", + "issuesFromRepo": "来自 的议题" } }, "linear": { @@ -12178,14 +12215,13 @@ "right": { "sidebar": { "BulkActionBar": { - "79a9f5f712": "取消暂存(", - "ef5f5bd06e": "暂存(", - "60ed678138": "已选择" + "selectedCount_other": "已选择 {{count}} 项", + "stageCount": "暂存({{count}})", + "unstageCount": "取消暂存({{count}})" }, "ChecksPanel": { "2ef90c9819": "已启动 AI 智能体处理失败的检查。", "a0181a8d76": "已启动 AI 智能体处理冲突。", - "34464d00b9": "已更新", "058039787c": "取消", "2ab7fd4b6d": "保存", "dda5924a40": "检查需要 Git 分支和托管评审上下文", @@ -12231,7 +12267,8 @@ "430f1a62d4": "无法在主机上解决选中的讨论串。", "updateReactionFailed": "无法更新反应。", "gitlabMoreActions": "更多 MR 动作", - "gitlabLinkAnother": "链接另一个 MR" + "gitlabLinkAnother": "链接另一个 MR", + "reviewUpdatedAt": "{{review}} 更新于 {{time}}" }, "CreateHostedReviewComposer": { "741ff8a0d2": "推送并创建 {{value0}}" @@ -12388,7 +12425,14 @@ "740aca88ab": "工作区端口扫描失败。", "5be4f7f727": "端口 {{value0}} 菜单", "1004af16ab": "复制 {{value0}}", - "153d3a8026": "工作区主机未知" + "153d3a8026": "工作区主机未知", + "unknownProcess": "未知进程", + "containerOrForwardedService": "容器或转发的服务", + "unassigned": "未分配", + "remotePortOutOfRange": "远程端口必须在 1–65535 范围内", + "localPortOutOfRange": "本地端口必须在 1–65535 范围内", + "localPortInUse": "端口 {{port}} 已被占用。请选择其他本地端口。", + "localPortRequiresPrivileges": "端口 {{port}} 需要提升权限。请使用本地端口 ≥ 1024。" }, "Search": { "1abfb25a66": "输入要在文件中搜索的内容", @@ -12445,7 +12489,6 @@ "476b77745b": "更改基础引用", "ed34038d0d": "刷新分支比较", "493f963029": "更改基础引用", - "3278b2767b": "前面", "11b5dd8e41": "比较", "a9bf7c171a": "提交失败", "011f9713fc": "提交被阻止", @@ -12490,7 +12533,6 @@ "574d2f4413": "清晰的笔记", "05bb8f4a48": "取消", "48db37cca9": "查看全部", - "78ce2d37ac": "推送到 fork", "c05fe04839": "推送到 {{value0}} 的 fork(非 origin)", "c35baf2f1e": "搜索文件...", "2fe2a67580": "更多笔记动作", @@ -12498,14 +12540,12 @@ "cc474e0b8c": "笔记", "e131cd7128": "源代码管理仅适用于 Git 仓库", "c07b236287": "选择一个工作区以查看更改", - "dc5a6465fc": "{{value0}}(例如 {{value1}}{{value2}})", "a5e5a11090": "放弃所有失败 - 无法在放弃之前取消暂存文件", "8a5ba6a988": "无法加载提交差异", "fe5bd1a610": "创建 {{value0}}...", "812cb992ee": "打开于 {{value0}}", "eef5446523": "{{value0}} #{{value1}} 已开放", "0453ca3a9a": "{{value0}} 已创建,但 Orca 尚无法刷新它。", - "f99560ab29": "中止 {{value0}} 失败", "eae7a1da5f": "无法清除笔记。", "df5040e3c3": "取消暂存", "8cde1a2fb0": "暂存", @@ -12533,8 +12573,6 @@ "aaf1451654": "创建草稿 {{value0}}", "26511c22b4": "创建中...", "d7ae61269b": "已提交的更改", - "branchFilesChangedVsBaseOne": "与 {{ref}} 相比更改了 1 个文件", - "branchFilesChangedVsBaseOther": "与 {{ref}} 相比更改了 {{count}} 个文件", "48a003c1b1": "已暂存的更改", "d4ef4bafc5": "更改", "9339382454": "全部取消暂存", @@ -12544,7 +12582,6 @@ "72f2bea3f4": "展开注释", "d13edef890": "折叠笔记", "d6fb1df5fe": "{{value0}} 已打开", - "05838cfdeb": "{{value0}} 冲突", "0b5b8c234c": "打开 {{value0}} ({{value1}})", "d97ef8f221": "第 {{value0}}-{{value1}} 行", "6f8bfa0eb9": "第 {{value0}} 行", @@ -12557,7 +12594,6 @@ "5b176fa431": "双方都删除", "31f6d46278": "未解决", "2c417432b7": "已在本地解决", - "d206117f90": "{{value0}} 冲突 ({{value1}})", "f3a8b2c1d0e5": "请输入 {{value0}} 标题。", "e2b7a1c0d9f4": "创建 {{value0}} 失败", "hugeRepoIgnorePrompt": "此仓库的活动更改过多。是否将 \"{{value0}}\" 添加到 .gitignore?", @@ -12598,10 +12634,6 @@ "b3c8f1a902": "按文件名筛选", "d4f8c2a901": "清除并关闭筛选器", "e8a1c4b203": "vs", - "compareBaseCommitsAheadOne": "领先 {{ref}} 1 个提交", - "compareBaseCommitsAheadOther": "领先 {{ref}} {{count}} 个提交", - "compareBaseCommitsBehindOne": "落后 {{ref}} 1 个提交", - "compareBaseCommitsBehindOther": "落后 {{ref}} {{count}} 个提交", "4b4a7de138": "在浏览器中打开审查页面", "createPrIntentCommitBlockedSummary": "提交被阻止:{{value0}} 修复问题后重试创建 PR。", "pushRecovery": { @@ -12632,17 +12664,41 @@ "diffCommentNotesCopyFailed": "复制笔记失败", "conflictCount_one": "{{count}} 个冲突", "conflictCount_other": "{{count}} 个冲突", - "discardFailedSingular": "无法丢弃 {{count}} 个文件", - "discardFailedPlural": "无法丢弃 {{count}} 个文件", - "noteCountSingular": "{{count}} 条备注", - "noteCountPlural": "{{count}} 条备注" + "discardFailedSampleMore_other": "{{paths}},另有 +{{count}} 个", + "discardFailed_other": "无法丢弃 {{count}} 个文件的更改", + "discardFailedWithSample": "{{error}}(例如 {{paths}})", + "compareBaseCommitsAhead_other": "领先 {{ref}} {{count}} 个提交", + "compareBaseCommitsBehind_other": "落后 {{ref}} {{count}} 个提交", + "branchFilesChangedVsBase_other": "与 {{ref}} 相比更改了 {{count}} 个文件", + "noteCount_other": "{{count}} 条备注", + "comparingAgainstRef": "正在与 {{ref}} 比较", + "commitsAheadShort_other": "领先 {{count}} 个", + "unresolvedConflictOfKind": "未解决的冲突({{kind}})", + "unresolvedConflict": "未解决的冲突", + "locallyResolvedConflictOfKind": "已在本地解决的冲突({{kind}})", + "locallyResolvedConflict": "已在本地解决的冲突", + "pushesToForkTarget": "推送到 fork {{target}}", + "abortRebaseConfirmTitle": "中止变基?", + "abortMergeConfirmTitle": "中止合并?", + "abortRebaseConfirmDescription": "这将取消正在进行的变基,并可能丢弃此次变基期间的冲突解决结果。", + "abortMergeConfirmDescription": "这将取消正在进行的合并,并可能丢弃此次合并期间的冲突解决结果。", + "abortRebaseFailedFallback": "无法中止变基", + "abortMergeFailedFallback": "无法中止合并", + "abortRebaseFailed": "中止变基失败", + "abortMergeFailed": "中止合并失败", + "clearNotesFromWorkspace_other": "清除此工作区中的 {{count}} 条备注?", + "clearNotesFromFile_other": "清除 {{path}} 中的 {{count}} 条备注?" }, "SourceControlAgentActionDialog": { "8e856842d1": "无法启动选定的智能体。", "c075d00de1": "无法解析工作区连接。", "808cfe0a3b": "仅保存到此仓库", "994cddd1f7": "不保存", - "38b899cc02": "所有仓库" + "38b899cc02": "所有仓库", + "agentNotEnabledOrDetected": "{{agent}} 未在此工作区主机上启用,或未检测到。", + "workspaceConnectionUnresolved": "无法解析工作区连接。", + "noEnabledAgentsDetected": "此工作区主机上未检测到已启用的智能体。", + "startAgent": "启动智能体" }, "SourceControlAgentActionDialogForm": { "7ec6abbf2a": "重置", @@ -12707,9 +12763,6 @@ "cbcc4ab3db": "显示前 100 项检查", "0dca6bfab5": "打开检查详细信息", "991f50c7e4": "尚未报告任何 CI 检查", - "9ad98f2a17": "待办的", - "5e52f4ef7f": "失败", - "02ca4f9074": "通过", "e15a8b77ef": "此检查没有可用的内联详细信息。", "679bf2093c": "复制日志尾部", "d713f500b2": "日志尾部(最后 200 行)", @@ -12726,7 +12779,6 @@ "1f2b980522": "正在加载检查详细信息...", "0c96cd25e5": "解决", "3a71a6ed0b": "在检查和合并完成之前解决冲突。", - "60186d8498": "冲突阻碍了这一点", "c16762ac8c": "下面的检查和注释显示当前获取的上下文。", "9d0e7bcefc": "没有阻塞 PR 操作", "5856874b59": "当该面板保持打开状态时,Orca 将刷新检查。", @@ -12751,7 +12803,6 @@ "084c516efb": "复制命令", "5dc3af25c0": "选择评论", "d7a2f9c401": "发送未解决的 {{value0}} 评论", - "d91f2a6c39": "发送 {{value0}} 条已排队评论给 AI", "a6de3e5a20": "清除已排队评论", "f8a2c91d04": "加入智能体队列", "b4e8a1c902": "已加入队列", @@ -12766,7 +12817,6 @@ "b3195cba33": "取消将作者标记为机器人", "f588b46a6c": "将作者标记为机器人", "e45324fbed": "加载检查详细信息失败。", - "checksUnresolvedChip": "未解决的", "checksUnresolvedStripHint": "这些检查完成后没有得出通过或失败的结论。", "dcb3c546fe": "重试", "commitsBehind_one": "落后 {{count}} 个提交", @@ -12777,7 +12827,23 @@ "pendingChecks_one": "{{count}} 项检查待处理", "pendingChecks_other": "{{count}} 项检查待处理", "unresolvedChecks_one": "{{count}} 项检查未解决", - "unresolvedChecks_other": "{{count}} 项检查未解决" + "unresolvedChecks_other": "{{count}} 项检查未解决", + "passingCount_other": "{{count}} 个通过", + "failingCount_other": "{{count}} 个失败", + "pendingCount_other": "{{count}} 个等待中", + "unresolvedCount_other": "{{count}} 个未解决", + "sendQueuedCommentsToAi_other": "发送 {{count}} 条排队评论给 AI", + "conflictsBlockThisMr": "冲突阻止了此 MR", + "conflictsBlockThisPr": "冲突阻止了此 PR", + "copyComment": "复制评论", + "sendComment": "发送", + "commentingRequiresGitHubPrTarget": "发表评论需要指定 GitHub PR 的目标仓库。", + "selectWorkspaceBeforeAiAction": "启动 AI 操作前请选择工作区。", + "operation": { + "rebase": "变基", + "merge": "合并", + "cherryPick": "挑选" + } }, "empty": { "state": { @@ -13184,8 +13250,7 @@ }, "compare": { "summary": { - "commitsAheadSingular": "领先 {{ref}} {{count}} 个提交", - "commitsAheadPlural": "领先 {{ref}} {{count}} 个提交" + "commitsAhead_other": "领先 {{ref}} {{count}} 个提交" } }, "conflict": { @@ -13268,8 +13333,9 @@ "folderLinksOutsideProject": "此文件夹链接到项目之外,无法在此打开。" }, "useFileExplorerImport": { - "25919b2050": "跳过 {{value0}} {{value1}}。", - "132fd0e1e9": "无法导入 {{value0}} {{value1}}。" + "importFailedCount_other": "无法导入 {{count}} 个文件。", + "importSkippedCount_other": "已跳过 {{count}} 个文件。", + "importFailed": "无法导入文件。" }, "useFileExplorerKeys": { "8adb953095": "操作失败" @@ -13306,7 +13372,6 @@ "refreshSessionHistory": "刷新会话历史", "searchSessions": "搜索会话", "clearSearch": "清除搜索", - "transcriptsSkipped": "跳过了 {{count}} 个记录", "noAgentSessionsFound": "未找到智能体会话", "noSessionsMatchFilters": "没有会话符合当前筛选条件", "noAgentsSelected": "未选择任何智能体", @@ -13326,7 +13391,8 @@ "resumeInChatFailed": "无法在新聊天中恢复此会话。", "resumeInNewCliUnavailable": "无法在 CLI 中打开此会话。", "resumeInNewCliHostTooOld": "请更新运行此聊天的主机上的 Orca,才能在新的 CLI 中恢复它。", - "folderWorkspaceUnavailable": "文件夹工作区不再可用。" + "folderWorkspaceUnavailable": "文件夹工作区不再可用。", + "transcriptsSkippedCount_other": "已跳过 {{count}} 份对话记录" }, "AiVaultPanelControls": { "scanningSessions": "正在扫描会话", @@ -13372,11 +13438,8 @@ "sessionRole": "会话", "worktree": "工作树", "conversationNotSaved": "对话未保存", - "recoverableEmptyDetail": "此会话没有已保存的对话,但仍有 {{value0}} 个可恢复项。", "recoverableEmptyOpenLogHint": "打开日志以恢复它们。", "emptyConversationDetail": "此会话没有已保存的对话,无法恢复。", - "queuedMessages": "{{value0}} 条排队消息", - "subagentTranscripts": "{{value0}} 个子智能体记录", "prompt": "提示", "firstPrompt": "首次提示", "recentPrompt": "最近提示", @@ -13390,7 +13453,10 @@ "noFirstPromptAvailable": "没有可用的首次提示", "loadingFirstPrompt": "正在加载首次提示…", "folder": "文件夹", - "resumeInFolder": "在文件夹中恢复" + "resumeInFolder": "在文件夹中恢复", + "recoverableEmptyDetailCount_other": "此会话没有已保存的对话,但仍有 {{count}} 个可恢复项。", + "queuedMessageCount_other": "{{count}} 条排队消息", + "subagentTranscriptCount_other": "{{count}} 份子智能体对话记录" }, "AiVaultSessionRow": { "resumeInNewTab": "在新标签页中恢复", @@ -13524,26 +13590,21 @@ "confirmation": { "84f6f5b9eb": "包括:{{numbers}}。", "541984b2eb": "通过 #{{pr}} 排队?", - "4809f55cdb": "{{included}}GitHub 会将 {{count}} 拉取请求一起添加到合并队列中。队列选择合并方法,并可能将它们合并到不同的组中。", - "be8f2621be": "{{included}}GitHub 会将 {{count}} 拉取请求一起添加到合并队列中。队列选择合并方法,并可能将它们合并到不同的组中。", - "92ca033e72": "队列 {{count}} PR", - "478a527b15": "队列 {{count}} PR", "1feef35ca4": "通过#{{pr}} 合并?", - "c3e036c99f": "{{included}}GitHub 将使用 {{method}} 以原子方式合并 {{count}} 拉取请求。如果无法合并,则不会合并任何内容。", - "369aba4b32": "{{included}}GitHub 将使用 {{method}} 以原子方式合并 {{count}} 拉取请求。如果有一个无法合并,那么就没有一个会合并。", - "493c78f521": "合并 {{count}} PR", - "eb7051d268": "合并 {{count}} PR" + "queueDescription_other": "{{included}}GitHub 会将 {{count}} 个 PR 一起添加到合并队列。队列会选择合并方法,并可能分组进行合并。", + "queueConfirm_other": "将 {{count}} 个 PR 加入队列", + "mergeDescription_other": "{{included}}GitHub 将使用 {{method}} 以原子方式合并 {{count}} 个 PR。如果其中任何一个无法合并,则所有 PR 都不会合并。", + "mergeConfirm_other": "合并 {{count}} 个 PR" }, "merge": { - "55ae29b907": "通过 #{{pr}} · {{count}} PR 合并", - "b8446f6ec2": "通过 #{{pr}} · {{count}} PR 合并", "189d0ec614": "#{{pr}} 仍然是草案。", "640fb50d9c": "#{{pr}} 已关闭。", "46ffcbda75": "#{{pr}} 有合并冲突。", "6dabefd63e": "#{{pr}} 已请求更改。", "2bb21fc326": "#{{pr}} 仍需评审批准。", "c23faf74df": "#{{pr}} 必须更新。", - "f561e80968": "#{{pr}} 被阻止。" + "f561e80968": "#{{pr}} 被阻止。", + "mergeThroughLabel_other": "合并至 #{{pr}}(含)· {{count}} 个 PR" } } } @@ -13600,14 +13661,14 @@ "sourceActionsUnavailable": "转录来源不可用。" }, "AiVaultScanProgressStrip": { - "agentChecked": "{{agent}}:已检查 {{settled}} / {{total}} 个历史记录候选项", "fileCount_one": "{{value0}} 个文件", "fileCount_other": "{{value0}} 个文件", "databaseCount_one": "{{value0}} 个数据库", "databaseCount_other": "{{value0}} 个数据库", "scanning": "正在扫描 {{value0}}", "checking": "正在检查 {{value0}}", - "scanned": "已扫描 {{value0}}" + "scanned": "已扫描 {{value0}}", + "agentCheckedCount_other": "{{agent}}:已检查 {{settled}} / {{total}} 个历史记录候选项" }, "run": { "source": { @@ -13636,6 +13697,14 @@ } } } + }, + "fileExplorerMultiDrag": { + "moreItems_other": "另有 +{{count}} 项" + }, + "CreatePullRequest": { + "createInProgress": "正在创建 PR...", + "workspaceHostUnresolved": "无法解析工作区主机。请刷新工作区后重试。", + "branchDiscoveryFailed": "分支发现失败。" } } }, @@ -15486,7 +15555,9 @@ "6978871a3d": "打开", "cce596969e": "删除注释", "cad3384faa": "编辑备注", - "508ee678a5": "在浏览器中打开" + "508ee678a5": "在浏览器中打开", + "noteAuthorFallback": "备注", + "sentMeta": "已发送" }, "DiffCommentPopover": { "2b3ce6d394": "取消", @@ -15499,6 +15570,9 @@ }, "useDiffCommentDecorator": { "995fa28b50": "此注" + }, + "diffCommentZoneCard": { + "noteAlreadySent": "备注已发送" } } }, @@ -16741,10 +16815,9 @@ "rightSidebar": { "FolderWorkspaceWorktreesPanel": { "unavailable": "仅显示文件夹工作区的工作区。", - "countOne": "1 个附加的工作树", - "countMany": "{{value0}} 个附加的工作树", "emptyTitle": "还没有附加的工作树", - "emptyCopy": "从此工作区创建的工作树将显示在这里。" + "emptyCopy": "从此工作区创建的工作树将显示在这里。", + "attachedCount_other": "{{count}} 个附加的工作树" }, "FolderWorkspacePrChecksPanel": { "unavailable": "PR 检查仅在文件夹工作区中显示。", @@ -16756,12 +16829,9 @@ "hideDetails": "隐藏 {{value0}} 的 PR 检查详情", "reviewChecks": "评审检查", "allChecksPassing": "所有检查均通过", - "oneWorktree": "1 个工作树", - "worktreeCount": "{{value0}} 个工作树", - "oneFailing": "1 个失败", - "failingCount": "{{value0}} 个失败", - "onePending": "1 个等待中", - "pendingCount": "{{value0}} 个等待中" + "worktreeCountLabel_other": "{{count}} 个工作树", + "failingCountLabel_other": "{{count}} 个失败", + "pendingCountLabel_other": "{{count}} 个等待中" }, "parentPrChecks": { "rowSummary": { @@ -19580,8 +19650,6 @@ }, "sessionSearch": { "panel": { - "resultsOne": "{{count}} 结果", - "resultsOther": "{{count}} 结果", "noMatches": "索引历史记录中没有匹配的会话。尝试另一个查询或范围。", "loadMore": "加载更多匹配项", "indexedHistory": "索引历史记录", @@ -19602,12 +19670,21 @@ "retry": "重试", "scopeUnknown": "此计算机没有此工作区或项目。将范围切换到全部以搜索其上的所有内容。", "sortSessionsAriaLabel": "对会话进行排序:{{value0}}", - "sessionsOne": "{{count}} 会话", - "sessionsOther": "{{count}} 会话", - "sessionsOfLoaded": "{{value0}} 次(共 {{value1}} 次)", "showMoreSessions": "显示更多会话", "loadingMoreSessions": "正在加载更多会话...", - "unsupportedAgent": "此计算机不支持所选智能体的历史搜索。更新该计算机上的 Orca 或选择其他智能体。" + "unsupportedAgent": "此计算机不支持所选智能体的历史搜索。更新该计算机上的 Orca 或选择其他智能体。", + "resultCount_other": "{{count}} 个结果", + "sessionCount_other": "{{count}} 个会话", + "sessionsShownOfLoaded_other": "{{shown}} / {{count}} 个会话", + "hostSkipReason": { + "indexChanged": "索引已更改", + "searchOff": "搜索已关闭", + "notReady": "尚未就绪", + "unavailable": "不可用", + "unreachable": "无法连接", + "scopeNotFound": "该主机上未找到搜索范围", + "agentNotSupported": "不支持该智能体" + } } }, "sessionHistory": { @@ -20126,8 +20203,8 @@ "rateLimited": "已达到 GitHub 速率限制。请几分钟后重试。", "network": "网络错误 — 请检查你的网络连接。", "tooLargeUnknownCount": "此视图条目过多,无法在 Orca 中渲染。请在 GitHub 上缩小视图的筛选范围。", - "tooLarge": "此视图有 {{itemCount}} 个条目,过多而无法在 Orca 中渲染。请在 GitHub 上缩小视图的筛选范围。", - "schemaDriftDetail": "无法读取此项目视图:{{detail}}。" + "schemaDriftDetail": "无法读取此项目视图:{{detail}}。", + "tooLargeCount_other": "此视图有 {{count}} 个条目,过多而无法在 Orca 中显示。请在 GitHub 上缩小视图的筛选范围。" }, "columns": { "type": "类型"