번역됨으로 표시된 오래된 번역을 찾으려면 변경된 원본 메시지를 String Catalog 항목까지 추적하고, 다시 빌드한 다음 문구를 비교하세요. 이미 확인한 불일치는 녹색 체크 표시만으로 해결되지 않습니다.

이 워크플로는 기존 .xcstrings 카탈로그를 사용해 Xcode에서 Mac 앱을 관리하는 사람을 위한 것입니다. 영어 원본을 수정한 뒤 검토가 필요한 번역을 파악하고, 유용한 기존 문구는 보존하며, 실행 중인 앱에서 수정된 메시지를 확인하는 것이 목표입니다.

원본 메시지가 바뀌면 어떻게 되어야 하나요?

Apple 문서에 따르면 원본 문자열을 변경하면 해당 번역이 검토 대상으로 표시됩니다. 카탈로그 상태는 번역되지 않은 문자열(New), 검토가 필요한 문자열(Needs Review), 녹색 체크 표시가 있는 번역된 문자열을 구분합니다. 별도의 Stale 상태는 Xcode가 코드에서 이전에 번역된 문자열을 더 이상 찾지 못했음을 뜻합니다. String Catalog 알아보기

이 문제를 진단할 때 이러한 용어 구분이 중요합니다. 앱에서 여전히 사용하는 메시지의 오래된 번역은 검토 작업입니다. 카탈로그의 Stale 상태만 검색하면 해당 번역을 놓칠 수 있습니다.

원본 변경 시 예상되는 동작은 Apple 문서에 설명되어 있지만, 특정 항목이 번역 상태를 유지한 이유까지 밝혀 주지는 않습니다. 그런 경우에는 체크 표시만으로 문구가 최신임을 확인했다고 여기기 전에 수정한 원본과 카탈로그의 관계를 살펴보세요.

번역을 검토하기 전에 정확한 메시지 찾기

변경된 메시지 하나부터 시작하세요. 이전 영어 문구, 현재 문구, 별도로 있다면 조회 키, 카탈로그 이름을 기록합니다. 이 간단한 비교 기록은 Xcode 기능이 아니라 권장하는 진단 보조 수단입니다. 비슷해 보이는 항목이 여럿 있을 때 구체적으로 확인할 기준이 됩니다.

예를 들어 데스크톱 버튼에 이전에는 Open item이 표시되었고 지금은 Open selected items가 표시된다고 가정해 보겠습니다. 검토할 내용은 각 번역이 현재 선택 항목을 여는 동작을 여전히 설명하는지, 특히 여러 항목을 선택할 수 있는 상황까지 고려하는지입니다. Open이라는 단어의 번역만 찾는 것으로는 이 질문에 답할 수 없습니다.

조회 키와 표시되는 문구 구분하기

Swift에서는 명시적인 정적 조회 키와 별도의 defaultValue를 사용할 수 있습니다. 이 기본값은 일반적으로 개발 언어의 텍스트이며, 조회에 실패할 때 사용됩니다. comment은 번역자를 위한 문맥을 제공합니다. 테이블을 지정하지 않으면 Localizable에서 조회하고, 번들을 지정하지 않으면 앱의 기본 번들에서 검색합니다. Swift의 명시적 키 문자열 초기화자

이 구성 요소를 구분하려면 다음 예시 메시지 기록을 사용하세요. 실제 카탈로그 파일이나 실행 가능한 프로그램이 아닌 임의의 값입니다.

구성 요소 수정 전 수정 후
조회 키 selection.open selection.open
영어 원본 값 Open item Open selected items
번역자 문맥 Button that opens one item Button that opens every item in the current selection
카탈로그 테이블 Localizable Localizable

여기서는 메시지가 바뀌었지만 식별자는 그대로입니다. 키 이름만 비교하는 점검으로는 이 수정을 놓치게 됩니다. 원본 값과 문맥도 함께 비교하세요.

대신 개발 언어의 문구를 키로 사용하는 Swift 현지화 호출도 있습니다. Apple은 보간을 포함해 String.LocalizationValue가 이러한 모델을 지원한다고 설명합니다. 이 방식을 사용하면 문구를 변경할 때 조회 키도 바뀔 수 있으므로, 번역이 하나의 식별자에 계속 연결되어 있을 것이라고 가정하지 말고 이전 항목과 새 항목을 모두 확인하세요. String.LocalizationValue

다시 빌드하고 원본 위치 확인하기

Xcode에서 Product > Build를 선택한 다음 Project 탐색기에서 관련 카탈로그를 선택합니다. Apple 문서에 따르면 빌드할 때 코드의 현지화 가능 문자열 변경 사항이 카탈로그에 반영됩니다. Editor > Assistant를 선택하고 키를 선택해 원본 위치를 확인합니다. 문자열 카탈로그로 텍스트 현지화 및 변형하기

카탈로그의 원본 텍스트를 의도한 수정 내용과 비교하세요. 카탈로그에 여전히 Open item이 있다면 새 원본이 해당 항목에 반영되지 않은 이유부터 해결하세요. 이전 원본을 기준으로 대상 언어 번역을 검토해도 처음 문제는 해결되지 않습니다.

프로젝트에 카탈로그나 모듈이 여러 개 있다면 현지화 호출의 테이블과 번들을 확인하세요. Apple 문서에는 카탈로그를 선택하는 테이블 이름과 기본 앱 번들 외부의 문자열에 적절한 번들을 전달하는 방법이 설명되어 있습니다. 또한 Xcode가 사용자에게 표시되는 텍스트를 찾을 수 있도록 현지화 가능한 API를 사용할 것을 권장합니다. 앱의 텍스트를 번역에 맞게 준비하기

수동으로 관리하는 항목은 원본을 직접 확인하고 관리하세요. Apple은 빌드 동기화가 수동 관리 문자열을 업데이트하거나 제거하지 않는다고 명시합니다. 다시 빌드하는 것만으로 새로고침되리라 기대하지 마세요. String Catalog 알아보기

원본 변경 결정표로 의미 비교하기

최신 원본이 반영되면 각 대상 언어를 선택하고 해당 항목을 살펴보세요. Xcode에서는 텍스트를 필터링하고 상태별로 정렬할 수 있어 검토할 작업을 찾는 데 도움이 됩니다. 상태가 번역됨으로 표시되어 있어도 변경된 메시지를 직접 확인하세요. String Catalog 알아보기

다음 판단 보조 자료는 자동 번역 평가가 아니라 메시지의 의미를 비교해 도출한 것입니다. 영어 표기는 예시로 만든 것입니다. 모든 원본 수정에 대상 언어 문구 변경이 필요하다고 단정하지 않으면서 현지화 담당자에게 확인을 요청할 내용을 정하는 데 도움이 됩니다.

원본 변경 예시 살펴볼 내용 검토 판단
Open item → Open selected items 선택 범위와 단수 또는 복수의 의미 번역이 전체 동작을 여전히 설명하는지 확인합니다.
Show details → Hide details 동작의 방향 번역된 동작도 이에 맞게 바뀌었는지 확인합니다.
Items → Items: 구두점과 레이블의 배치 문맥에 여전히 적절할 때만 문구를 유지합니다.
Open은 그대로지만 사용 방식이 바뀜 레이블이 이제 다른 동작을 가리키는지 여부 원본 텍스트가 동일해도 문맥을 검토합니다.

각 후보에 대해 이전 메시지의 의미, 현재 메시지의 의미, 현재 번역이 전달하는 내용을 비교하세요. 원본의 차이가 눈에 보이면 검토 후보가 되지만, 그것만으로 대상 문구를 반드시 바꿔야 한다는 뜻은 아닙니다.

문맥만 바뀐 경우에도 명시적으로 확인해야 합니다. Apple 문서에서는 주석을 번역자 안내로 설명하지만, 검색한 문서에는 주석을 수정할 때마다 기존 번역이 자동으로 무효화된다는 내용이 없습니다. 영어 레이블이 바뀌지 않았더라도 의미가 달라졌다면 직접 검토 대기열에 추가하세요. 앱의 텍스트를 번역에 맞게 준비하기

메시지에 개수나 기기별 변형이 포함되어 있다면 상위 행만 확인하지 말고 각 변형을 펼쳐 보세요. Apple 문서에 따르면 카탈로그에서는 복수형과 기기별 변형을 사용할 수 있습니다. 영어에서는 개수에 따라 1 item과 2 items가 필요할 수 있습니다. 영어 문법을 그대로 적용하지 말고 각 대상 언어에 해당하는 형식을 검토하세요. 문자열 카탈로그로 텍스트 현지화 및 변형하기

유용한 번역을 버리지 않고 검토 해결하기

항목의 컨텍스트 메뉴를 사용해 의심스러운 번역을 검토 대상으로 표시하세요. 기존 문구를 확인한 결과 적절하다면 Mark as Reviewed를 선택하고, 그렇지 않으면 번역을 수정합니다. 이러한 검토 작업은 Apple의 String Catalog 안내에 설명되어 있습니다. String Catalog 알아보기

변경된 원본과 비교하는 동안 기존 문구를 활용할 수 있도록 보존하세요. 모호함을 줄이려고 번역을 지우면 유용한 비교 자료가 사라집니다. 마찬가지로 번역이 오래되었다는 이유만으로 항목을 삭제하지 마세요. 먼저 앱이 해당 키를 여전히 사용하는지 확인하세요.

선택 항목 예시의 경우, 키 selection.open, Open item에서 Open selected items로 바뀐 내용, 버튼이 선택한 항목을 모두 연다는 설명을 포함해 전달하면 유용합니다. 그러면 현지화 담당자가 구체적인 동작과 범위를 평가할 수 있습니다.

실무상 한계도 있습니다. 이 워크플로에서 참고한 Apple 문서에는 번역된 항목 뒤에 놓친 모든 원본 변경을 소급해 재구성하는 명령이 설명되어 있지 않습니다. 이전 문구를 확인할 수 없다면 현재 원본과 현재 번역을 검토할 수는 있지만, 불일치가 정확히 언제 시작되었는지는 확인할 수 없습니다. 이전 상태와 현재 상태를 비교해야 한다면 사용 가능한 이전 프로젝트 리비전이나 저장된 원본 사본을 활용하세요.

Mac 앱에서 수정된 메시지 확인하기

수정한 뒤 실제 인터페이스를 테스트하세요. Product > Scheme > Edit Scheme을 선택하고, Run을 선택한 뒤 Options를 열어 App Language에서 대상 언어를 선택합니다. 대화상자를 닫고 Mac 실행 대상을 선택한 다음 앱을 실행합니다. Apple은 이러한 구성표 기반 현지화 테스트를 문서화하고 있습니다. 앱 실행 시 현지화 테스트하기

조사를 시작하게 된 정확한 컨트롤로 돌아가세요. Open selected items의 경우 항목 하나를 선택했을 때와 여러 항목을 선택했을 때 모두 확인합니다. 두 상황 모두에서 레이블이 동작을 설명하는지, 표시되는 문구가 수정한 카탈로그 항목과 일치하는지 살펴보세요. 이 단계에서 불일치가 발견되면 조회 키, 테이블, 번들 또는 해당 변형을 다시 확인해야 합니다.

영향을 받은 각 언어에 대해 기존 문구가 적절하게 유지되었는지, 번역이 수정되었는지, 검토가 아직 진행 중인지 명확하게 기록해 마무리하세요. 그러면 변경된 메시지와 인터페이스에서의 동작을 모두 점검하고, 카탈로그 상태를 근거로 판단을 내릴 수 있습니다.

출처