레시피: i18n 파일 번역
이 레시피는 웹 및 모바일 앱용 로컬라이제이션 파일을 번역하는 방법을 보여줍니다. yaku는 문자열 값을 추출하고 번역한 뒤 다시 작성합니다. 키와 구조는 LLM이 건드리지 않습니다.
JSON i18n 파일
섹션 제목: “JSON i18n 파일”평면 구조
섹션 제목: “평면 구조”입력 (locales/en.json):
{ "greeting": "Hello!", "farewell": "Goodbye!", "login": "Log in", "signup": "Sign up", "settings": "Settings"}yaku --to ko -f locales/en.json -o locales/ko.jsonyaku --to ja -f locales/en.json -o locales/ja.json출력 (locales/ko.json):
{ "greeting": "안녕하세요!", "farewell": "안녕히 가세요!", "login": "로그인", "signup": "회원가입", "settings": "설정"}중첩 구조
섹션 제목: “중첩 구조”yaku는 깊이 중첩된 JSON을 처리합니다:
{ "nav": { "home": "Home", "about": "About Us" }, "errors": { "404": "Page not found", "500": "Internal server error" }}yaku --to ko -f en.json -o ko.json모든 키, 중첩, 숫자, 불리언이 보존됩니다. 문자열 값만 번역됩니다.
YAML i18n 파일
섹션 제목: “YAML i18n 파일”Rails 스타일 i18n
섹션 제목: “Rails 스타일 i18n”입력 (config/locales/en.yaml):
en: activerecord: errors: messages: blank: "can't be blank" invalid: "is invalid" taken: "has already been taken" views: pagination: next: "Next" previous: "Previous" first: "First" last: "Last"yaku --to ko -f config/locales/en.yaml -o config/locales/ko.yaml출력 (config/locales/ko.yaml):
en: activerecord: errors: messages: blank: "빈 값일 수 없습니다" invalid: "유효하지 않습니다" taken: "이미 사용 중입니다" views: pagination: next: "다음" previous: "이전" first: "처음" last: "마지막"일괄 번역
섹션 제목: “일괄 번역”하나의 소스 파일을 여러 언어로 번역합니다:
#!/bin/bashSOURCE="locales/en.json"LANGUAGES=("ko" "zh-TW" "ja" "fr" "de" "es")
for lang in "${LANGUAGES[@]}"; do yaku --to "$lang" -f "$SOURCE" -o "locales/${lang}.json" echo "Generated locales/${lang}.json"doneUI 용어에 용어집 사용
섹션 제목: “UI 용어에 용어집 사용”UI 용어는 정확하고 일관된 번역이 필요합니다. 용어집을 생성하세요:
ko: Sign up: 회원가입 Log in: 로그인 Log out: 로그아웃 Settings: 설정 Dashboard: 대시보드 Profile: 프로필
ja: Sign up: サインアップ Log in: ログイン Log out: ログアウト Settings: 設定 Dashboard: ダッシュボードyaku --to ko -f locales/en.json -o locales/ko.json# .yaku-glossary.yaml에서 용어집 자동 로드- 소스 로케일에서 번역하세요. 다른 번역된 파일이 아닌 항상
en.json(또는 소스 언어)에서 번역하세요. - UI 일관성을 위해 용어집을 사용하세요. 버튼, 레이블, 내비게이션 항목은 어디서나 같은 용어를 사용해야 합니다.
- 복수형을 검토하세요. 일부 언어는 복수형을 다르게 처리합니다. 번역 후 i18n 프레임워크에서 복수형이 올바르게 처리되는지 확인하세요.
- 보간 변수를 확인하세요. i18n 파일에
{{name}}이나%{count}같은 변수가 포함되어 있다면 출력에서 보존되었는지 확인하세요.