Lingo.dev CLI는 구성된 로컬라이제이션 엔진을 통해 Xcode .strings, Android XML, Flutter ARB, React Native JSON 등 네이티브 모바일 리소스 파일을 번역합니다. 각 플랫폼별로 파일 형식을 이해하고, 구조를 유지하며, 복수형까지 네이티브 방식으로 처리하는 전용 bucket 유형이 준비되어 있습니다.
플랫폼 개요#
| 플랫폼 | 네이티브 형식 | CLI bucket | 일반적인 파일 경로 |
|---|---|---|---|
| iOS (Xcode) | .strings | xcode-strings | [locale].lproj/Localizable.strings |
| iOS (Xcode) | .stringsdict | xcode-stringsdict | [locale].lproj/Localizable.stringsdict |
| iOS (Xcode) | .xcstrings | xcode-xcstrings | Localizable.xcstrings |
| Android | strings.xml | android | app/src/main/res/values-[locale]/strings.xml |
| Flutter | .arb | flutter | lib/l10n/app_[locale].arb |
| React Native | .json | json | src/locales/[locale].json |
사전 준비#
CLI를 실행할 때마다 모든 콘텐츠는 로컬라이제이션 엔진을 거칩니다. 이 구성은 어떤 LLM 모델, 용어집, 브랜드 보이스, 지침을 적용할지 결정합니다. Lingo.dev 대시보드에서 엔진을 생성한 뒤 API 키를 발급하세요.
플랫폼 설정하기#
Xcode는 세 가지 로컬라이제이션 형식을 지원합니다. 프로젝트 설정에 맞는 형식을 선택하세요.
String Catalogs (.xcstrings) - Xcode 15에서 도입된 최신 Xcode 형식입니다. 하나의 JSON 파일에 모든 로캘이 담기며, 새 문자열을 추가하면 Xcode가 자동으로 업데이트합니다. CLI는 이 파일을 직접 수정하므로 [locale] 플레이스홀더가 필요하지 않습니다.
{
"$schema": "https://lingo.dev/schema/i18n.json",
"version": "1.15",
"locale": {
"source": "en",
"targets": ["es", "fr", "de", "ja"]
},
"buckets": {
"xcode-xcstrings": {
"include": ["MyApp/Localizable.xcstrings"]
}
}
}레거시 .strings 파일 - [locale].lproj/ 디렉터리 안에 로캘별로 파일이 하나씩 있습니다. 프로젝트에서 복수형에 .stringsdict도 사용한다면 두 bucket을 모두 추가하세요.
{
"$schema": "https://lingo.dev/schema/i18n.json",
"version": "1.15",
"locale": {
"source": "en",
"targets": ["es", "fr", "de", "ja"]
},
"buckets": {
"xcode-strings": {
"include": ["MyApp/[locale].lproj/Localizable.strings"]
},
"xcode-stringsdict": {
"include": ["MyApp/[locale].lproj/Localizable.stringsdict"]
}
}
}Xcode의 i18n 인프라를 설정하려면 Apple의 로컬라이제이션 문서를 참고하세요.
번역 실행#
명령 하나로 모든 리소스 파일을 번역할 수 있습니다:
npx lingo.dev@latest runCLI는 소스 로캘 파일을 읽고, lockfile을 기준으로 마지막 실행 이후 변경된 내용을 계산한 다음, 변경분만 번역해 대상 로캘 파일에 기록합니다.
프로젝트에 여러 리소스 유형이 포함되어 있다면 특정 플랫폼만 지정할 수도 있습니다:
npx lingo.dev@latest run --bucket android
npx lingo.dev@latest run --bucket xcode-xcstrings복수형과 플랫폼 규칙#
모바일 플랫폼마다 복수형 처리 방식은 다릅니다. iOS는 .stringsdict 또는 String Catalog 규칙을 사용하고, Android는 <plurals> XML 요소를 사용하며, Flutter는 ARB 파일에서 ICU MessageFormat을 사용합니다. CLI는 번역 과정에서 각 플랫폼의 네이티브 복수형 구조를 유지하고, 각 대상 로캘에 맞는 올바른 복수형 범주를 생성합니다.
번역가 메모
모바일 문자열은 짧고 문맥에 크게 좌우되는 경우가 많습니다. 문자열이 어디에 표시되는지에 대한 맥락을 로컬라이제이션 엔진에 전달하려면 Xcode .xcstrings 파일의 번역가 메모를 활용하세요. 예를 들어 "결제 워크플로의 버튼 라벨"은 "내비게이션 메뉴 항목"과는 다르게 번역됩니다.
