Lingo.dev + .stringsdict (Xcode)

Lingo.dev CLI traduce archivos .stringsdict de Xcode preservando las reglas de pluralización, variaciones de formato y manejo de plurales de iOS. El CLI aplica automáticamente las reglas de pluralización específicas del idioma, mantiene toda la estructura y metadatos del plist, gestiona múltiples variables en cadenas complejas, garantiza la codificación adecuada y el manejo de caracteres, y se integra de forma nativa con los flujos de trabajo de localización de iOS.

Configuración rápida

Configuración para archivos de pluralización stringsdict de Xcode:

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

Recordatorio: [locale] es un marcador de posición que debe permanecer literalmente en la configuración, ya que se reemplaza con el locale real durante la ejecución del CLI.

Traducir archivos Stringsdict

npx lingo.dev@latest i18n

Maneja reglas complejas de pluralización de iOS mientras preserva la estructura del plist y las variaciones de formato.

Estructura de pluralización

Formas plurales básicas

<?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>

Reglas plurales complejas

<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>

Múltiples variables

<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>

Reglas específicas de idioma

Diferentes idiomas tienen reglas de pluralización únicas:

  • Inglés: zero, one, other
  • Ruso: zero, one, few, many, other
  • Polaco: zero, one, few, many, other
  • Árabe: zero, one, two, few, many, other

El motor de traducción aplica automáticamente las reglas correctas para cada idioma de destino.

Configuración avanzada

Múltiples archivos Stringsdict

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

Bloquear claves de formato

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