Lingo.dev + .json-dictionary
Lingo.dev CLI는 각 번역 가능한 문자열이 단일 객체 내에 여러 로케일 키를 포함하는 JSON 파일을 번역합니다. 로케일을 다른 파일로 분리하는 표준 JSON 형식과 달리, json-dictionary는 {"en": "Hello", "es": "Hola"}
와 같이 로케일별 키와 함께 모든 번역을 저장합니다.
빠른 설정
'i18n.json' 구성 파일을 생성하세요:
{
"locale": {
"source": "en",
"targets": ["es", "fr", "de"]
},
"buckets": {
"json-dictionary": {
"include": ["content/pages.json"]
}
}
}
파일 구조
json-dictionary 형식은 로케일 키가 있는 중첩 객체로 번역을 저장합니다:
{
"title": {
"en": "Welcome to our site",
"es": "Bienvenido a nuestro sitio"
},
"navigation": {
"home": {
"en": "Home",
"es": "Inicio"
},
"about": {
"en": "About Us",
"es": "Acerca de nosotros"
}
},
"staticValue": "This won't be translated",
"pages": [
{
"title": {
"en": "Page One",
"es": "Página Uno"
}
}
]
}
모든 것 번역하기
npx lingo.dev@latest i18n
CLI는 자동으로:
- 번역 가능한 객체만 추출(로케일 키가 있는 객체)
- 번역 불가능한 값은 변경 없이 보존
- 기존 키 옆에 대상 로케일 키 추가
- 소스 로케일 키 순서 유지(소스 먼저, 나머지는 알파벳 순)
키 동작 방식
번역 가능 감지: 소스 로케일 키를 포함하는 객체만 번역 가능한 것으로 간주됩니다. 일반 문자열, 숫자, 불리언 및 로케일 키가 없는 객체는 변경되지 않습니다.
키 정렬: 번역을 추가할 때, 소스 로케일이 먼저 표시되고 다른 로케일은 알파벳 순으로 표시됩니다:
{
"message": {
"en": "Original text",
"de": "Deutscher Text",
"es": "Texto en español",
"fr": "Texte français"
}
}
중첩 지원: 깊게 중첩된 구조와 번역 가능한 객체를 포함하는 배열에서도 작동합니다.
고급 설정
파일 제외하기
"json-dictionary": {
"include": ["content/*.json"],
"exclude": ["content/config.json"]
}