diff --git a/config/scripts/locale-ko-key-overrides.json b/config/scripts/locale-ko-key-overrides.json index da2d69dc6..300fbef11 100644 --- a/config/scripts/locale-ko-key-overrides.json +++ b/config/scripts/locale-ko-key-overrides.json @@ -1883,6 +1883,9 @@ "auto.components.right.sidebar.SourceControl.3a231c845b": { "ko": "알 수 없음" }, + "auto.components.right.sidebar.SourceControl.6d7f2a47e5": { + "ko": "폴더의 변경 사항 취소" + }, "auto.components.right.sidebar.SourceControl.812cb992ee": { "ko": "{{value0}}에서 열기" }, @@ -1895,6 +1898,9 @@ "auto.components.right.sidebar.SourceControl.9bb062a886": { "ko": "commit 되지 않음" }, + "auto.components.right.sidebar.SourceControl.a5e5a11090": { + "ko": "모든 변경 사항 취소 실패 — 취소 전에 파일의 스테이징을 해제하지 못했습니다." + }, "auto.components.right.sidebar.SourceControl.aaf1451654": { "ko": "초안 {{value0}} 만들기" }, @@ -2009,6 +2015,9 @@ "auto.components.right.sidebar.source.control.discard.confirmation.2ae5a785b3": { "ko": "스테이징되지 않은 변경 사항을 모두 삭제하시겠습니까?" }, + "auto.components.right.sidebar.source.control.discard.confirmation.40e9357b2a": { + "ko": "이렇게 하면 HEAD에서 파일을 복원하고 파일 삭제를 취소합니다. 이 작업은 취소할 수 없습니다." + }, "auto.components.right.sidebar.source.control.discard.confirmation.5ddd8cac7f": { "ko": "스테이징된 변경 사항을 모두 삭제하시겠습니까?" }, @@ -2030,6 +2039,9 @@ "auto.components.right.sidebar.source.control.primary.action.1d47e850cf": { "ko": "연결된 리뷰 브랜치에 업데이트 푸시" }, + "auto.components.right.sidebar.source.control.primary.action.5a477d80cb": { + "ko": "모든 변경 사항 스테이징" + }, "auto.components.right.sidebar.source.control.primary.action.a5d1f7b036": { "ko": "{{value0}}을(를) 만들기 전에 commits을 게시하세요." }, @@ -2177,6 +2189,9 @@ "auto.components.settings.AutoRenameBranchFromWorkSetting.a4fa380b67": { "ko": "{assistantMessage}" }, + "auto.components.settings.AutoRenameBranchFromWorkSetting.d9b65054ef": { + "ko": ") 작업을 요약하는 짧은 이름으로 변경됩니다. Orca가 직접 이름 붙인 브랜치만 이름을 바꾸며, 푸시된 후에는 이름을 바꾸지 않습니다." + }, "auto.components.settings.AutoRenameBranchPromptEditor.ebb942a2ec": { "ko": "fix-login-flow" }, @@ -2243,6 +2258,9 @@ "auto.components.settings.DefaultWindowsProjectRuntimeSetting.wslUnavailable": { "ko": "WSL을 사용할 수 없습니다. WSL을 상속하는 프로젝트는 복구가 필요합니다." }, + "auto.components.settings.DevToolsPane.orcaCloudDescription": { + "ko": "자사 클라우드 로그인의 개발자 전용 미리보기. 프로덕션에서는 숨겨집니다. 개발 환경에서는 ORCA_CLOUD_API_URL과 ORCA_CLOUD_CLIENT_ID가 설정되면 사이드바 계정 전환기에도 표시됩니다." + }, "auto.components.settings.DeveloperPermissionsPane.16381e040a": { "ko": "마이크" }, @@ -2270,6 +2288,12 @@ "auto.components.settings.ExperimentalPane.newWorktreeCardStyle.description": { "ko": "업데이트된 워크트리 카드 레이아웃, 메타데이터 배치, 카드 표시 메뉴 옵션 및 상태 표시를 미리 봅니다." }, + "auto.components.settings.EphemeralVmsPane.recipes": { + "ko": "레시피" + }, + "auto.components.settings.EphemeralVmsPane.whatTitle": { + "ko": "이 스킬로 함께 하는 작업" + }, "auto.components.settings.GeneralEditorSettingsSection.45c6e85c4d": { "ko": "편집기" }, @@ -3725,6 +3749,9 @@ "auto.components.settings.ssh.search.f9493b80c0": { "ko": "서버" }, + "auto.components.settings.source.control.action.recipe.options.commitMessage": { + "ko": "스테이징된 변경 사항에서 commit 메시지를 생성합니다." + }, "auto.components.settings.task.tracker.integration.cards.1a12e33fe5": { "ko": "Linear 액세스 추가" }, diff --git a/src/renderer/src/i18n/ko-ui-semantic-mistranslations.test.ts b/src/renderer/src/i18n/ko-ui-semantic-mistranslations.test.ts new file mode 100644 index 000000000..f00f4686b --- /dev/null +++ b/src/renderer/src/i18n/ko-ui-semantic-mistranslations.test.ts @@ -0,0 +1,52 @@ +import fs from 'node:fs' + +import { describe, expect, it } from 'vitest' +import ko from './locales/ko.json' + +const correctedValues = { + 'auto.components.settings.AutoRenameBranchFromWorkSetting.d9b65054ef': + ') 작업을 요약하는 짧은 이름으로 변경됩니다. Orca가 직접 이름 붙인 브랜치만 이름을 바꾸며, 푸시된 후에는 이름을 바꾸지 않습니다.', + 'auto.components.settings.source.control.action.recipe.options.commitMessage': + '스테이징된 변경 사항에서 commit 메시지를 생성합니다.', + 'auto.components.settings.DevToolsPane.orcaCloudDescription': + '자사 클라우드 로그인의 개발자 전용 미리보기. 프로덕션에서는 숨겨집니다. 개발 환경에서는 ORCA_CLOUD_API_URL과 ORCA_CLOUD_CLIENT_ID가 설정되면 사이드바 계정 전환기에도 표시됩니다.', + 'auto.components.settings.EphemeralVmsPane.whatTitle': '이 스킬로 함께 하는 작업', + 'auto.components.settings.EphemeralVmsPane.recipes': '레시피', + 'auto.components.right.sidebar.SourceControl.a5e5a11090': + '모든 변경 사항 취소 실패 — 취소 전에 파일의 스테이징을 해제하지 못했습니다.', + 'auto.components.right.sidebar.SourceControl.6d7f2a47e5': '폴더의 변경 사항 취소', + 'auto.components.right.sidebar.source.control.discard.confirmation.40e9357b2a': + '이렇게 하면 HEAD에서 파일을 복원하고 파일 삭제를 취소합니다. 이 작업은 취소할 수 없습니다.', + 'auto.components.right.sidebar.source.control.primary.action.5a477d80cb': + '모든 변경 사항 스테이징' +} as const + +function getLocaleValue(path: string): unknown { + return path.split('.').reduce((node, segment) => { + if (!node || typeof node !== 'object' || Array.isArray(node)) { + return undefined + } + return (node as Record)[segment] + }, ko) +} + +describe('Korean UI semantic mistranslation fixes', () => { + it('keeps the corrected values in the Korean catalog', () => { + for (const [path, expected] of Object.entries(correctedValues)) { + expect(getLocaleValue(path), path).toBe(expected) + } + }) + + it('keeps the corrected values in the translation overrides', () => { + const overrides = JSON.parse( + fs.readFileSync( + new URL('../../../../config/scripts/locale-ko-key-overrides.json', import.meta.url), + 'utf8' + ) + ) as Record + + for (const [path, expected] of Object.entries(correctedValues)) { + expect(overrides[path]?.ko, path).toBe(expected) + } + }) +}) diff --git a/src/renderer/src/i18n/locales/ko.json b/src/renderer/src/i18n/locales/ko.json index 891d23c5a..4a3cf0378 100644 --- a/src/renderer/src/i18n/locales/ko.json +++ b/src/renderer/src/i18n/locales/ko.json @@ -5404,7 +5404,7 @@ "9241b59bf5": "사용", "a869d0edd8": "브랜치 이름 명령 템플릿", "e784ea62dc": "고급", - "d9b65054ef": ") 작업을 요약하는 짧은 이름으로 변경됩니다. Orca 라는 이름의 브랜치만 이름이 변경되며 푸시된 후에는 이름이 변경되지 않습니다.", + "d9b65054ef": ") 작업을 요약하는 짧은 이름으로 변경됩니다. Orca가 직접 이름 붙인 브랜치만 이름을 바꾸며, 푸시된 후에는 이름을 바꾸지 않습니다.", "12ea4a408d": "agent가 새 워크스페이스에서 작업을 시작하면 Orca는 자동 생성된 브랜치의 이름을 바꿉니다(예:", "ef787db0e3": "브랜치 자동 이름 바꾸기", "6a051586d2": "agent가 시작되면 작업을 기반으로 자동 생성된 브랜치의 이름을 바꿉니다.", @@ -9032,7 +9032,7 @@ "action": { "recipe": { "options": { - "commitMessage": "단계적 변경에서 commit 메시지를 생성합니다.", + "commitMessage": "스테이징된 변경 사항에서 commit 메시지를 생성합니다.", "pullRequest": "호스팅된 리뷰 제목 및 설명을 생성합니다.", "branchName": "초기 agent 작업에서 Orca가 생성한 브랜치의 이름을 바꿉니다.", "fixCommitFailure": "commit 후크 또는 git commit이 실패하면 agent를 시작합니다.", @@ -9421,7 +9421,7 @@ "notificationPlaygroundDescription": "토스트 레이아웃, 복구 액션, 긴 텍스트 줄바꿈을 확인하기 위한 개발 전용 트리거입니다.", "devOnly": "Dev only", "orcaCloud": "Orca Cloud", - "orcaCloudDescription": "1方클라우드 로그인의 개발자 전용 미리보기. 프로덕션에서는 숨겨집니다. 개발 환경에서는 ORCA_CLOUD_API_URL과 ORCA_CLOUD_CLIENT_ID가 설정되면 사이드바 계정 전환기에도 표시됩니다.", + "orcaCloudDescription": "자사 클라우드 로그인의 개발자 전용 미리보기. 프로덕션에서는 숨겨집니다. 개발 환경에서는 ORCA_CLOUD_API_URL과 ORCA_CLOUD_CLIENT_ID가 설정되면 사이드바 계정 전환기에도 표시됩니다.", "orcaCloudStatus": "상태", "orcaCloudSignOut": "로그아웃", "orcaCloudConnect": "프로필 연결", @@ -9471,14 +9471,14 @@ "loadError": "레시피를 로드할 수 없습니다.", "copyError": "프롬프트를 복사할 수 없습니다.", "skillDescription": "repo 소유 환경 레시피를 설정, 빌드, 인증 및 검증합니다.", - "whatTitle": "당신과 함께 기술이 하는 일", + "whatTitle": "이 스킬로 함께 하는 작업", "whatScaffold": "Orca 서버 또는 SSH를 통해 연결된 공급자를 위한 레시피 및 스크립트를 작성합니다.", "whatBuild": "재사용 가능한 기본 이미지를 구축하고 agent에 로그인합니다.", "whatValidate": "워크스페이스를 생성할 수 있도록 유효성을 검사합니다.", "promptHint": "어떤 워크스페이스에서든 agent에게 다음과 같이 질문하세요.", "copy": "복사", "copied": "복사됨", - "recipes": "조리법", + "recipes": "레시피", "recipesHelp": "orca.yaml과 활성화된 플러그인의 레시피가 여기에 표시되어 워크스페이스를 시작할 수 있습니다.", "checking": "레시피 확인 중...", "none": "아직 레시피를 찾을 수 없습니다.", @@ -10406,7 +10406,7 @@ "c07b236287": "변경사항을 보려면 워크스페이스를 선택하세요.", "dc5a6465fc": "{{value0}}(예: {{value1}}{{value2}})", "8eb3782a0c": "{{value0}} 파일{{value1}}을(를) 삭제하지 못했습니다.", - "a5e5a11090": "모두 삭제 실패 - 삭제하기 전에 파일을 스테이지 해제할 수 없습니다.", + "a5e5a11090": "모든 변경 사항 취소 실패 — 취소 전에 파일의 스테이징을 해제하지 못했습니다.", "8a5ba6a988": "commit 차이점을 로드하지 못했습니다.", "fe5bd1a610": "{{value0}} 생성 중...", "812cb992ee": "{{value0}}에서 열기", @@ -10424,7 +10424,7 @@ "d62bc0c7d8": "추적되지 않은", "ab31221779": "언스테이지 폴더", "bfe9011a0e": "스테이지 폴더", - "6d7f2a47e5": "폴더 삭제", + "6d7f2a47e5": "폴더의 변경 사항 취소", "9b367363b6": "추적되지 않은 폴더 삭제", "540ca8f78c": "병합 중단", "425f138269": "리베이스 중단", @@ -10967,7 +10967,7 @@ "5ddd8cac7f": "스테이징된 변경 사항을 모두 삭제하시겠습니까?", "1426c2efff": "그러면 이 파일의 모든 변경 사항이 되돌려집니다. 이 작업은 취소할 수 없습니다.", "d4df3a61df": "'{{value0}}' 변경사항을 취소하시겠습니까?", - "40e9357b2a": "이렇게 하면 HEAD에서 파일이 복원되고 삭제 내용이 삭제됩니다. 이 작업은 취소할 수 없습니다.", + "40e9357b2a": "이렇게 하면 HEAD에서 파일을 복원하고 파일 삭제를 취소합니다. 이 작업은 취소할 수 없습니다.", "5c0bdbc4cb": "'{{value0}}'을(를) 복원하시겠습니까?", "d97bf697c9": "이 파일이 영구적으로 삭제됩니다. 이 작업은 취소할 수 없습니다.", "96c772bee9": "'{{value0}}'을 삭제하시겠습니까?" @@ -11008,7 +11008,7 @@ "41d4bcf157": "PR 상태 확인 중…", "acce237921": "commit 할 것이 없습니다. 브랜치에 게시할 변경 사항이 없습니다.", "fa3bd4f40c": "commit 할 파일을 하나 이상 스테이지하세요", - "5a477d80cb": "모든 변경 사항을 준비합니다.", + "5a477d80cb": "모든 변경 사항 스테이징", "18a0fca877": "모두 스테이지", "f01f16d77f": "commit 하려면 commit 메시지를 입력하세요.", "ab41fb926b": "스테이지된 변경 사항 Commit",