Saltar al contenido principal

iOS (Swift)

El paquete Swift translate-projects-ios traduce el String Catalog de tu app (Localizable.xcstrings) a cada idioma que configures. Las traducciones se escriben en el mismo catálogo, así que Text("..."), String(localized:) y Xcode funcionan como siempre. Se usa como plugin de Xcode o desde la terminal, y no tiene dependencias.

Requisitos​

  • Xcode 15 o superior (Swift 5.9 o superior).
  • Una app con String Catalog (Localizable.xcstrings).
  • Un proyecto y un API token de Translate Projects. Mira Primeros pasos.

1. Añade el paquete​

En Xcode: File → Add Package Dependencies y pega la URL del repositorio:

https://github.com/translate-projects/translate-projects-ios

Xcode descargando translate-projects-ios

Cuando Xcode pregunte a qué target añadir el producto, deja None: el paquete no va dentro de tu app, solo aporta el comando para traducir.

Elegir producto con el target en None

2. Configura​

Crea translate-projects.json junto a tu .xcodeproj (o Package.swift):

translate-projects.json
{
"sourceLang": "es",
"targetLangs": ["en", "pt-BR", "fr"],
"file": "MyApp/Localizable.xcstrings",
"tokenFile": ".translate-projects-token"
}
OpciónObligatorioDescripción
sourceLangSíIdioma base del catálogo. Debe ser el idioma por defecto del proyecto.
targetLangsSíIdiomas destino, con los códigos de la API (en, pt-BR, zh-Hans).
fileNoRuta del catálogo. Si el proyecto tiene un solo .xcstrings, se encuentra solo.
tokenFileNoArchivo con el API token (solo el token o una línea TRANSLATE_PROJECTS_API_KEY=...). Sin él se usa la variable de entorno TRANSLATE_PROJECTS_API_KEY.

Añade el archivo del token a .gitignore: nunca lo subas al repositorio.

3. Traduce​

En Xcode: clic derecho en el proyecto en el navegador → TranslateProjects. La primera vez Xcode pide permiso para escribir en el proyecto y conectarse a la red.

Desde la terminal o en CI:

Terminal
git clone https://github.com/translate-projects/translate-projects-ios
swift run -c release --package-path translate-projects-ios translate-projects-ios --directory .

Si tu proyecto es un paquete Swift:

Terminal
swift package --allow-writing-to-package-directory --allow-network-connections all translate

Todas las opciones también existen como flags: --source es --langs en,pt-BR --file ... --token-file .... Con --force se vuelven a traducir todos los idiomas.

Archivos que genera​

MyApp/
├── Localizable.xcstrings ← las traducciones se añaden aquí
└── Localizable.translate-projects.json ← caché, haz commit de ella

Haz commit de los dos archivos. Compilar la app nunca llama a la API: solo el comando de traducir.

Qué respeta​

  • Los placeholders (%@, %lld, %1$@, %.2f, %#@nombre@): si una traducción pierde o cambia uno, no se escribe y la app muestra el texto original.
  • Los plurales, las variaciones por dispositivo y las sustituciones. Cada idioma recibe sus propias categorías de plural (pt-BR: one, many, other).
  • Los textos marcados como "Don't translate" y los obsoletos no se envían. Los comentarios se conservan.
  • Los textos sin letras ("", "$9.300", "%@") no se envían.
  • Las ediciones manuales: si cambias una traducción en Xcode, se respeta en las siguientes ejecuciones hasta que cambie su texto original. --force las sobrescribe.

Caché​

Una segunda ejecución sin textos nuevos hace dos peticiones y no traduce nada. Si alguien corrige una traducción en el panel de Translate Projects, la siguiente ejecución la baja sin --force; tus ediciones manuales en el archivo siguen teniendo prioridad. Si cambian algunos textos, solo esos se suben y solo se traducen los idiomas desactualizados. Más detalles en Caché y errores.

Errores comunes​

  • Falta el token (MISSING_API_KEY: set TRANSLATE_PROJECTS_API_KEY): añade tokenFile en translate-projects.json o exporta la variable.
  • Varios catálogos (Several .xcstrings files): indica cuál traducir con file o --file.
  • sourceLanguage distinto: sourceLang debe coincidir con el idioma base del catálogo y con el idioma por defecto del proyecto.
  • Textos sin traducir (strings without translation, run again to resume): revisa que el proyecto tenga configurados el modelo y la key de IA, y vuelve a ejecutar: solo se piden los que faltan.
Gratis

🚀 Automatiza tus traducciones gratis​

Translate Projects es gratuito. Creas tu proyecto, conectas la key de tu proveedor de IA y solo le pagas a él lo que gastes.

  • Sin planes ni tarjeta de crédito: Todas las funciones están disponibles desde el primer día.
  • Usa tu propia IA: Claude, OpenAI, DeepSeek o Gemini. Tu key se guarda cifrada.
  • Red de traducciones compartida: Si un texto ya fue traducido, lo recibes al instante sin gastar tu key.
  • Panel de administración: Revisa y edita todas tus traducciones desde un solo lugar.

Crear cuenta gratis →

Soporte

Estamos aquí para ayudarte​

Si tienes alguna pregunta, necesitas ayuda o quieres contribuir, no dudes en contactarme. Estoy a tu disposición para apoyarte en lo que necesites.

Apoya el Proyecto​

Si este proyecto te ha sido útil, te invito a invitarme un café. Tu apoyo me ayuda a seguir mejorando y creando contenido de valor. ¡Gracias por estar aquí! ☕

Buy me a coffee