Skip to main content
AI agent network visualization

Xcode String Catalog를 몇 초 안에 번역

CLDR에 맞는 복수형, 기기별 변형, 번역 상태를 유지하고 IDE를 떠나지 않은 채 .xcstrings 파일을 번역해요.

보기보다 복잡한 String Catalog 번역

Xcode 15 String Catalog는 .strings와 .stringsdict를 단일 JSON 파일로 대체했지만 복잡성은 사라지지 않았어요. 복수형에는 언어별로 올바른 CLDR 범주가 필요하고, 기기별 변형(iPhone, iPad, Mac)은 키와 올바르게 연결되어야 해요. Xcode의 상태 추적에서는 필드 하나만 잘못돼도 항목 전체가 무효가 돼요.

언어마다 서로 다른 CLDR 복수형 범주 필요. 아랍어는 6개 모두, 일본어는 'other'만, 러시아어는 서로 다른 4가지 형식 사용

기기별 문자열 변형(iPhone, iPad, Mac, Apple Watch)을 상위 키와 올바르게 연결해야 함

Xcode가 번역 상태(new, needs_review, translated, stale)를 추적하므로 상태 값이 잘못되면 번역을 무시하거나 잘못된 경고 표시

기존 .strings/.stringsdict에서 .xcstrings로 이전하면 일반 도구가 처리하지 못하는 형식 차이 발생

원문(영어)
Localizable.xcstrings
{
  "sourceLanguage": "en",
  "version": "1.0",
  "strings": {
    "welcome_title": {
      "extractionState": "manual",
      "localizations": {
        "en": {
          "stringUnit": {
            "state": "translated",
            "value": "Welcome to the App"
          }
        }
      }
    },
    "item_count": {
      "localizations": {
        "en": {
          "variations": {
            "plural": {
              "zero": {
                "stringUnit": {
                  "state": "translated",
                  "value": "No items"
                }
              },
              "one": {
                "stringUnit": {
                  "state": "translated",
                  "value": "%lld item"
                }
              },
              "other": {
                "stringUnit": {
                  "state": "translated",
                  "value": "%lld items"
                }
              }
            }
          }
        }
      }
    },
    "device_greeting": {
      "localizations": {
        "en": {
          "variations": {
            "device": {
              "iphone": {
                "stringUnit": {
                  "state": "translated",
                  "value": "Tap to continue"
                }
              },
              "ipad": {
                "stringUnit": {
                  "state": "translated",
                  "value": "Tap or click to continue"
                }
              },
              "mac": {
                "stringUnit": {
                  "state": "translated",
                  "value": "Click to continue"
                }
              }
            }
          }
        }
      }
    }
  }
}
번역문(독일어)
Localizable.xcstrings (with de)
{
  "sourceLanguage": "en",
  "version": "1.0",
  "strings": {
    "welcome_title": {
      "extractionState": "manual",
      "localizations": {
        "de": {
          "stringUnit": {
            "state": "translated",
            "value": "Willkommen in der App"
          }
        }
      }
    },
    "item_count": {
      "localizations": {
        "de": {
          "variations": {
            "plural": {
              "zero": {
                "stringUnit": {
                  "state": "translated",
                  "value": "Keine Elemente"
                }
              },
              "one": {
                "stringUnit": {
                  "state": "translated",
                  "value": "%lld Element"
                }
              },
              "other": {
                "stringUnit": {
                  "state": "translated",
                  "value": "%lld Elemente"
                }
              }
            }
          }
        }
      }
    },
    "device_greeting": {
      "localizations": {
        "de": {
          "variations": {
            "device": {
              "iphone": {
                "stringUnit": {
                  "state": "translated",
                  "value": "Tippen zum Fortfahren"
                }
              },
              "ipad": {
                "stringUnit": {
                  "state": "translated",
                  "value": "Tippen oder klicken zum Fortfahren"
                }
              },
              "mac": {
                "stringUnit": {
                  "state": "translated",
                  "value": "Klicken zum Fortfahren"
                }
              }
            }
          }
        }
      }
    }
  }
}

i18n Agent가 유지하는 요소

복수형

대상 언어마다 올바른 CLDR 복수형 범주를 생성해 범주가 하나인 일본어부터 6개인 아랍어까지 지원

기기별 변형

iPhone, iPad, Mac, Apple Watch 문자열 변형을 상위 키와 올바르게 연결한 채 유지

상태 인식

Xcode 현지화 워크플로가 올바르게 작동하도록 번역 상태(new, needs_review, translated)를 정확히 설정

형식 호환성

출력은 Xcode String Catalog 편집기와 완전히 호환되며 신규 프로젝트와 이전된 프로젝트에 모두 문제없이 통합

Apple 개발 환경 전반 지원

Xcode 15 이상 String Catalog
SwiftUI 현지화
UIKit / AppKit
Swift 패키지

이용 방법

How i18n Agent works: Install, Translate, Done
1
2
3
terminal
$translate_filesrc/messages/en.json
 --target["de", "ja", "es"]
Done.3 languages, 142 keys translated.

수동으로 복사해 붙여 넣거나 문자열을 추출할 필요 없이 번역된 파일만 받아보세요.

지금 i18n Agent 사용해 보기

번역 파일을 여기에 드롭

JSON, YAML, PO, XML, CSV, Markdown, Properties

또는 클릭하여 파일 선택

대상 언어

가입 불필요즉시 견적

자주 묻는 질문

개발자인가요?

CLI 도구를 설치하고 2분 안에 첫 파일을 번역해 보세요.

CLI 도구 설치

기업 팀인가요?

아직 TMS 계약에 묶여 있나요? 이전 방법을 함께 알아봐요.