Lingo.dev + .stringsdict (Xcode)

Lingo.dev CLI는 복수형 규칙, 형식 변형 및 iOS 복수형 처리를 보존하면서 Xcode .stringsdict 파일을 번역합니다. CLI는 자동으로 언어별 올바른 복수형 규칙을 적용하고, 모든 plist 구조와 메타데이터를 유지하며, 복잡한 문자열에서 여러 변수를 처리하고, 적절한 인코딩과 문자 처리를 보장하며, iOS 현지화 워크플로우와 원활하게 통합됩니다.

빠른 설정

Xcode stringsdict 복수형 파일 구성:

{
  "locale": {
    "source": "en",
    "targets": ["es", "fr", "de", "ru"]
  },
  "buckets": {
    "xcode-stringsdict": {
      "include": ["Resources/[locale].lproj/Localizable.stringsdict"]
    }
  }
}

주의사항: [locale]은 CLI 실행 중에 실제 로케일로 대체되므로 구성에 그대로 유지해야 하는 플레이스홀더입니다.

Stringsdict 파일 번역

npx lingo.dev@latest i18n

plist 구조와 형식 변형을 유지하면서 복잡한 iOS 복수형 규칙을 처리합니다.

복수형 구조

기본 복수형

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>items_count</key>
    <dict>
        <key>NSStringLocalizedFormatKey</key>
        <string>%#@items@</string>
        <key>items</key>
        <dict>
            <key>NSStringFormatSpecTypeKey</key>
            <string>NSStringPluralRuleType</string>
            <key>NSStringFormatValueTypeKey</key>
            <string>d</string>
            <key>zero</key>
            <string>No items</string>
            <key>one</key>
            <string>One item</string>
            <key>other</key>
            <string>%d items</string>
        </dict>
    </dict>
</dict>
</plist>

복잡한 복수형 규칙

<key>message_count</key>
<dict>
    <key>NSStringLocalizedFormatKey</key>
    <string>%#@messages@</string>
    <key>messages</key>
    <dict>
        <key>NSStringFormatSpecTypeKey</key>
        <string>NSStringPluralRuleType</string>
        <key>NSStringFormatValueTypeKey</key>
        <string>d</string>
        <key>zero</key>
        <string>No new messages</string>
        <key>one</key>
        <string>One new message</string>
        <key>few</key>
        <string>%d new messages</string>
        <key>many</key>
        <string>%d new messages</string>
        <key>other</key>
        <string>%d new messages</string>
    </dict>
</dict>

다중 변수

<key>files_and_folders</key>
<dict>
    <key>NSStringLocalizedFormatKey</key>
    <string>%#@files@ and %#@folders@</string>
    <key>files</key>
    <dict>
        <key>NSStringFormatSpecTypeKey</key>
        <string>NSStringPluralRuleType</string>
        <key>NSStringFormatValueTypeKey</key>
        <string>d</string>
        <key>zero</key>
        <string>no files</string>
        <key>one</key>
        <string>one file</string>
        <key>other</key>
        <string>%d files</string>
    </dict>
    <key>folders</key>
    <dict>
        <key>NSStringFormatSpecTypeKey</key>
        <string>NSStringPluralRuleType</string>
        <key>NSStringFormatValueTypeKey</key>
        <string>d</string>
        <key>zero</key>
        <string>no folders</string>
        <key>one</key>
        <string>one folder</string>
        <key>other</key>
        <string>%d folders</string>
    </dict>
</dict>

언어별 규칙

다양한 언어에는 고유한 복수형 규칙이 있습니다:

  • 영어: zero, one, other
  • 러시아어: zero, one, few, many, other
  • 폴란드어: zero, one, few, many, other
  • 아랍어: zero, one, two, few, many, other

번역 엔진은 각 대상 언어에 맞는 올바른 규칙을 자동으로 적용합니다.

고급 구성

다중 Stringsdict 파일

"xcode-stringsdict": {
  "include": [
    "Resources/[locale].lproj/Localizable.stringsdict",
    "Resources/[locale].lproj/Notifications.stringsdict"
  ]
}

형식 키 잠금

"xcode-stringsdict": {
  "include": ["Resources/[locale].lproj/Localizable.stringsdict"],
  "lockedKeys": ["NSStringLocalizedFormatKey", "NSStringFormatSpecTypeKey"]
}