Skip to main content
AI agent network visualization

Traduzca catálogos de cadenas de Xcode en segundos

Formas plurales correctas según CLDR. Variantes por dispositivo conservadas. Estados de traducción controlados. Sus archivos .xcstrings traducidos sin salir del IDE.

Traducir catálogos de cadenas es más complejo de lo que parece

Los catálogos de cadenas de Xcode 15 sustituyeron .strings y .stringsdict por un único archivo JSON, pero la complejidad no desapareció. Las formas plurales necesitan las categorías CLDR correctas para cada idioma, las variantes por dispositivo —iPhone, iPad o Mac— deben permanecer vinculadas a sus claves y, debido al seguimiento de estados de Xcode, un solo campo incorrecto invalida toda la entrada.

Cada idioma necesita categorías de plural CLDR distintas: el árabe requiere las seis, el japonés solo «other» y el ruso cuatro formas diferentes

Las variantes de cadenas específicas de cada dispositivo (iPhone, iPad, Mac y Apple Watch) deben permanecer correctamente asociadas a sus claves principales

Xcode realiza un seguimiento de los estados de traducción (new, needs_review, translated y stale): los valores incorrectos hacen que Xcode ignore o marque mal las traducciones

Migrar desde los formatos heredados .strings/.stringsdict a .xcstrings introduce diferencias que las herramientas genéricas no gestionan

Origen (inglés)
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"
                }
              }
            }
          }
        }
      }
    }
  }
}
Traducido (alemán)
Localizable.xcstrings (con 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"
                }
              }
            }
          }
        }
      }
    }
  }
}

Lo que conserva i18n Agent

Formas plurales

Se generan las categorías de plural CLDR correctas para cada idioma de destino: desde la única categoría del japonés hasta las seis del árabe

Variantes por dispositivo

Las variantes de cadenas para iPhone, iPad, Mac y Apple Watch permanecen correctamente asociadas a sus claves principales

Conocimiento del estado

Los estados de traducción (new, needs_review y translated) se configuran correctamente para que el flujo de localización de Xcode funcione como debe

Compatibilidad de formatos

La salida es totalmente compatible con el editor de catálogos de cadenas de Xcode y se integra sin problemas tanto en proyectos nuevos como migrados

Funciona en todo el desarrollo para Apple

Catálogos de cadenas de Xcode 15 o posterior
Localización con SwiftUI
UIKit / AppKit
Paquetes Swift

Cómo funciona

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.

Sin copiar y pegar manualmente. Sin extraer cadenas. Solo archivos traducidos.

Pruebe i18n Agent ahora

Arrastre y suelte aquí su archivo de traducción

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

o haga clic para seleccionar

Idiomas de destino

No es necesario registrarsePresupuesto al instante

Preguntas frecuentes

¿Desarrolla software?

Instale la herramienta de CLI y traduzca su primer archivo en 2 minutos.

Instalar la herramienta de CLI

¿Forma parte de un equipo empresarial?

¿Sigue atrapado en un contrato de TMS? Hablemos de la migración.