Mac에서 번역의 플레이스홀더를 검증하려면 각 인수의 위치, 유형, 의도된 용도를 원본 메시지와 비교하세요. Xcode의 불일치 진단을 사용한 다음, 복수형 대체 항목을 살펴보고 서로 다른 샘플 값을 사용해 렌더링된 레이블을 테스트하세요.
이 가이드는 Xcode에서 Mac 앱의 현지화된 레이블을 검토하는 사람을 위한 것입니다. 앱이 제공하는 값과 대조해 메시지 하나와 그 번역을 확인하는 작업을 다룹니다. 아래의 모든 레이블은 형식 지정 방식을 설명하기 위한 가상의 영어 예시이며 실제 번역은 아닙니다.
메시지의 인수 계약에는 무엇이 포함되나요?
인수 계약은 메시지가 받는 값의 위치, 형식 유형, 의미, 예상 용도를 설명하는 검토 기록입니다. 별도의 Apple 파일 형식이 아니라 소스 코드와 카탈로그에서 도출한 실용적인 점검 목록입니다.
Swift의 String.LocalizationValue는 런타임 값을 삽입하는 현지화 가능한 문자열을 지원합니다. 관련 문서에서는 소스 텍스트를 현지화 키로 사용하는 경우와 별도의 키 및 기본값을 제공하는 경우도 구분합니다. 따라서 식별자만으로는 메시지의 인수를 알 수 없을 수 있습니다. 기본 소스 텍스트와 호출 지점을 확인하세요. String.LocalizationValue
서식 문자열 Added %lld items to %@를 예로 들어 보겠습니다. 이 예시에서 앱은 정수 개수에 이어 객체 기반 컬렉션 레이블을 제공합니다. 번역을 편집하기 전에 계약을 기록하세요.
| 인수 위치 | 의미 | 예상 형식 | 예시 값 |
|---|---|---|---|
| 1 | 추가된 항목 수 | %lld |
7 |
| 2 | 대상 컬렉션 레이블 | %@ |
Canvas |
Apple의 서식 참조 문서는 %@를 객체 변환, %d를 부호 있는 32비트 정수, %f를 double 변환으로 정의하며, ll은 long long의 정수 길이 지정자라고 설명합니다. %1$@와 같은 위치 지정 형식도 문서화되어 있습니다. 전체 유형 정보를 보존하세요. %lld를 %d로 바꾸면 예상 정수 유형이 달라집니다. 이 참조 문서는 보관 자료이므로 서식 구문을 확인할 때 현재 카탈로그 문서와 함께 활용하세요. String Format Specifiers
유형이 같더라도 검토 기록에 인수의 의미를 추가하세요. Moved %@ to %@에서는 유형만 확인해서는 항목 레이블과 대상 레이블을 구분할 수 없습니다. 구문이 올바르더라도 값과 단어의 관계가 정확해야 합니다.
Xcode에서 기준이 되는 소스를 어떻게 찾나요?
먼저 Xcode에서 프로젝트를 열고 메시지가 들어 있는 카탈로그를 찾으세요. 소스가 변경되었다면 Product > Build를 선택해 추출된 문자열을 갱신하세요. 프로젝트 내비게이터에서 카탈로그를 선택하고 Editor > Assistant를 선택한 다음, 메시지 키를 선택해 소스를 확인하세요. Apple은 카탈로그 항목을 찾고 업데이트하는 이 작업 흐름을 문서화하고 있습니다. 문자열 카탈로그로 텍스트 현지화 및 변형하기
호출 지점에서 실제로 제공하는 값과 그 순서, 사용하는 현지화 API를 확인하세요. Apple은 String(localized:) 같은 현지화 가능한 API를 권장합니다. 별도의 defaultValue가 있는 초기화 메서드에서는 첫 번째 매개변수가 키이고 두 번째 매개변수가 기본 소스 문자열입니다. collection.added.summary처럼 중립적인 식별자가 메시지를 지정할 때 특히 중요합니다. 앱의 텍스트를 번역에 적합하게 준비하기
카탈로그와 키, 기본 소스 문구, 순서가 있는 인수의 의미와 유형, 이 세 가지를 함께 기록하세요. 서로 일치하지 않으면 번역을 조정하기 전에 그 불일치를 해결하세요. 그렇지 않으면 앱의 현재 입력값이 아니라 오래된 소스에 맞춰 번역을 수정할 수 있습니다.
이후 편집을 위한 맥락도 제공하세요. Apple은 현지화 가능한 문자열에 주석을 추가해 용도를 설명할 수 있도록 지원합니다. 유용한 가상 주석은 인수 1이 항목 수이고 인수 2가 대상 컬렉션 레이블이라고 설명합니다. 이 정보는 서식 지정자가 표현할 수 없는 맥락을 현지화 담당자에게 제공합니다. 앱의 텍스트를 번역에 적합하게 준비하기
개수, 유형, 인수 위치는 어떻게 확인하나요?
Apple은 서식 지정자 불일치 등 일반적인 문제를 확인하는 문자열 카탈로그 검증 기능을 도입했으며, 일부 문제에는 수정 옵션도 제공합니다. Xcode가 해당 항목에 표시하는 진단을 살펴보세요. 제안된 수정은 구문을 고치는 방법으로 간주하고 메시지의 의미를 보존하는지 확인하세요. 다국어 지원 앱 빌드하기
복수형 대체 항목이 없는 단순한 메시지라면 다음 순서로 검토하세요.
- 소스와 검토 중인 텍스트에서 인수를 사용하는 모든 플레이스홀더를 찾습니다.
- 각 플레이스홀더를 인수 위치에 연결합니다.
- 전체 서식 유형을 계약과 비교합니다.
- 각 필수 값이 문구가 기대하는 위치에 나타나는지 확인합니다.
- 추가되거나 빠졌거나 반복된 참조를 각각 조사합니다.
위치 표기법을 사용하면 인수 식별자를 유지하면서 번역의 어순을 바꿀 수 있습니다. %2$@: added %1$lld items에서 먼저 보이는 플레이스홀더는 인수 2를 가리키고, 두 번째 플레이스홀더는 인수 1을 가리킵니다. Apple은 n$ 위치 구문을 문서화하고 있습니다. String Format Specifiers
다음 판단 표는 위의 두 인수 계약 예시에 적용됩니다. 이는 검토 결과로 제안하는 판단이며 Xcode를 실행해 얻은 결과는 아닙니다.
| 검토 중인 서식 텍스트 | 검토 결과 | 이유 |
|---|---|---|
Added %lld items to %@ |
단순 계약과 일치 | 개수가 먼저, 대상이 두 번째로 나옵니다 |
%2$@: added %1$lld items |
순서 변경 후에도 일치 | 명시적 위치 지정으로 두 인수의 식별자가 유지됩니다 |
Added %d items to %@ |
정수 유형 수정 | 인수 1에 예상된 길이 지정자가 더 이상 사용되지 않습니다 |
Added %lld items |
누락 여부 조사 | 이 메시지에 필요한 대상이 없습니다 |
Added %1$lld items to %1$@ |
참조 수정 | 인수 1이 서로 충돌하는 유형으로 참조되고 인수 2는 없습니다 |
Added %1$lld items to %2$@ (%2$@) |
반복 검토 | 출현 횟수는 세 번이지만 참조된 인수는 두 개뿐입니다 |
출현 횟수와 고유 인수 개수를 따로 세세요. 마지막 행은 그 차이를 보여주기 위한 예시입니다. 인수 2를 반복해 사용해도 제공된 값이 세 개가 되지는 않습니다. 그 반복이 문구에 필요한지는 편집상의 판단입니다. 이 작업에서는 목적을 확인할 때까지 표시해 두세요.
마찬가지로 모든 퍼센트 문자를 인수로 세지 마세요. Apple은 %%을 리터럴 퍼센트 기호로 정의합니다. Scale: %lld%%와 같은 서식 레이블에는 값 플레이스홀더 하나와 이스케이프된 퍼센트 기호 하나가 들어 있습니다. String Format Specifiers
복수형 대체 항목은 왜 별도로 확인해야 하나요?
복수형 메시지는 값을 표시하는 텍스트뿐 아니라 선택 메커니즘도 검토해야 합니다. Apple은 문자열 카탈로그 세션에서 대체 항목에 복수형 사례의 사전이 포함될 수 있다고 설명합니다. 인스펙터에는 이를 제어하는 인수의 위치와 C 스타일 서식 지정자가 표시됩니다. 따라서 특정 분기에서 인수를 숫자로 출력하지 않더라도 대체 항목이 그 인수에 따라 달라질 수 있습니다. 문자열 카탈로그 알아보기
가상의 항목 수 메시지에서 One item added와 %lld items added를 비교해 보세요. 첫 번째 분기는 수량을 글자로 표현하고 두 번째 분기는 수량을 출력합니다. 모든 분기에서 표시되는 플레이스홀더 개수가 같아야 한다는 규칙은 첫 번째 분기를 불필요하게 거부하게 됩니다. Apple의 strings 사전 동작 문서에 따르면 복수형 형식에서 숫자 서식 지정자를 생략할 수 있으며, 숫자를 글자로 표현하는 방법도 제시되어 있습니다. Stringsdict 파일 형식
다음과 같이 분기별로 검토하세요.
- 인스펙터에서 대체 항목을 제어하는 인수의 위치와 유형을 확인합니다.
- 대상 현지화에 있는 모든 복수형 분기를 살펴봅니다.
- 표시되는 각 플레이스홀더가 참조하는 인수와 일치하는지 확인합니다.
- 숫자 표시를 생략한 경우 분기 문구가 그 이유를 설명하는지 확인합니다.
- 다른 메시지 인수도 별도로 확인합니다. 개수를 글자로 표현해도 컬렉션 레이블 누락은 설명되지 않습니다.
서로 독립적으로 변하는 개수가 두 개라면 각 역할을 따로 유지하세요. 항목과 컬렉션을 다루는 가상의 메시지에서는 항목 수가 항목 대체 항목을 제어하고 컬렉션 수가 컬렉션 대체 항목을 제어해야 합니다. Apple은 하나의 메시지 안에서 여러 대체 항목을 사용하는 방법과 런타임 출력이 선택된 복수형 사례들을 결합한다고 설명합니다. 문자열 카탈로그 알아보기
Mac에서 수정된 메시지를 어떻게 확인하나요?
항목을 수정한 뒤 앱을 빌드하고 남아 있는 카탈로그 진단을 살펴보세요. 그런 다음 대상 현지화로 관련 화면을 실행하세요. Apple이 지원하는 작업 흐름은 Product > Scheme > Edit Scheme을 선택하고 Run을 선택한 다음 Options를 열어 App Language와 적절한 App Region을 선택하고 Close를 클릭한 뒤 선택한 실행 대상을 실행하는 것입니다. 앱 실행 시 현지화 테스트하기
값의 순서가 바뀌면 드러나도록 샘플 값을 선택하세요. 개수 인수가 두 개라면 2과 7처럼 서로 다른 숫자를 사용하세요. 텍스트 인수가 두 개라면 Tile과 Canvas처럼 서로 다른 레이블을 사용하세요. 이 예시 테스트 입력값의 목적은 메시지의 각 부분에 어떤 제공 값이 나타나는지 확인하는 것입니다.
복수형 메시지에서는 검토 중인 분기에 도달하는 값을 테스트하세요. 두 대체 항목이 독립적으로 변한다면 한쪽 개수는 고정하고 다른 쪽 개수만 바뀌는 조합도 포함하세요. 선택된 문구와 각 표시 값의 위치를 확인하세요. 한 조합이 성공적으로 렌더링되어도 나머지 분기는 확인되지 않은 상태입니다.
번역 상태와 계약 검토를 별도로 기록하세요. Apple에 따르면 카탈로그의 녹색 체크마크는 텍스트를 입력한 뒤 번역된 상태를 나타냅니다. 이 상태 표시를 네 가지 점검의 증거로 간주하지 말고, 실제로 수행한 인수 매핑, 유형 비교, 분기 검토, 렌더링 예시를 기록하세요. 문자열 카탈로그로 텍스트 현지화 및 변형하기
플레이스홀더가 의도한 제공 인수를 참조하고, 유형이 일치하며, 분기별 생략이나 반복에 명확한 설명이 있으면 메시지를 다음 단계로 넘길 준비가 된 것입니다. 메시지 옆에 간결한 계약을 기록해 두면 이후 소스나 번역을 수정할 때 더 쉽게 검토할 수 있습니다.
출처
- 문자열 카탈로그로 텍스트 현지화 및 변형하기 — Apple
- String.LocalizationValue — Apple
- 앱의 텍스트를 번역에 적합하게 준비하기 — Apple
- String Format Specifiers — Apple
- 다국어 지원 앱 빌드하기 — Apple
- 문자열 카탈로그 알아보기 — Apple
- Stringsdict 파일 형식 — Apple
- 앱 실행 시 현지화 테스트하기 — Apple