Guía de internacionalización y localización de iOS + app de demostración

Aprenda a preparar su app de iOS para la localización, traducirla con IA y volver a añadir las traducciones en Xcode, todo ello usando una app de demostración en SwiftUI.

La localización en iOS es el proceso de adaptar el texto, el formato y los recursos de su app para admitir varios idiomas y regiones.

Esta guía utiliza una app de demostración para guiarle por todo el proceso, desde la preparación en Xcode hasta la creación e integración de traducciones en su proyecto. Nuestra app de demostración, Bookshelf, es una sencilla app de seguimiento de libros que cubre los escenarios de localización con los que es más probable que se encuentre: cadenas de la IU, pluralización y pruebas de configuraciones regionales.

Trabajaremos con SwiftUI y Xcode 15+, usando String Catalogs como formato principal de localización

Parte 1: Comprender la localización en iOS

Antes de pasar a Xcode, conviene entender qué implica realmente la localización y qué la diferencia de la internacionalización.

Internacionalización vs. localización en iOS: ¿cuál es la diferencia?

La internacionalización (i18n) y la localización (l10n) son dos etapas distintas, y deben realizarse en ese orden.

La internacionalización es la base técnica. Significa estructurar su código para que el texto, las imágenes y el formato puedan variar según la configuración regional sin necesidad de cambios en el código. Esto se hace una sola vez, idealmente antes de su primera versión.

La localización es el trabajo continuo que viene después: redactar traducciones, ajustar diseños y proporcionar recursos específicos de cada configuración regional para cada idioma que quiera admitir.

Internacionalización (i18n)Localización (l10n)
Qué esPreparar su código para la localizaciónAdaptar su app a una configuración regional específica
CuándoAntes de su primera versiónContinuo, por idioma
QuiénDesarrolladoresDesarrolladores y traductores
EjemplosExtraer cadenas, usar formateadores compatibles con la configuración regionalTraducir cadenas, localizar capturas de pantalla

El error más común es tratar la localización como una tarea posterior al lanzamiento, para descubrir después que la base de código no está preparada. Volver atrás para corregir cadenas codificadas, diseños con dirección fija y formateadores no compatibles con la configuración regional en una app existente lleva mucho más tiempo que construir desde el principio pensando en la localización.

Parte 2: Configurar su proyecto en Xcode

Trabajaremos con Bookshelf, una sencilla app de demostración que permite a los usuarios llevar un seguimiento de cuántos libros han leído. Está creada con SwiftUI y es minimalista por diseño.

App de demostración para iOS

Al final de esta guía, BookShelf se ejecutará en inglés, español y árabe, gestionará correctamente las cadenas en plural en los tres idiomas y reflejará automáticamente su diseño para los lectores de árabe.

Paso 1

Habilitar la localización

Abra BookShelf en Xcode y seleccione el archivo del proyecto en el Navigator. En la pestaña Info, desplácese hasta la sección Localizations. El inglés ya aparece como idioma base. Haga clic en el botón + para añadir su primer idioma. Para esta demostración, añadiremos español y árabe.

Añadir idiomas en Xcode

Paso 2

Crear un String Catalog

A continuación, añada un String Catalog.

  1. Haga clic con el botón derecho en su proyecto y seleccione New File from Template.
  2. Busque String Catalog y añádalo. El nombre predeterminado será Localizable.xcstrings. No es necesario cambiarlo.
  3. Compile el proyecto una vez con Cmd+B. Xcode analizará su código, encontrará todas las cadenas localizables y rellenará el catálogo automáticamente.

Paso 3

Marcar cadenas para la localización

Después de compilar el proyecto, abra Localizable.xcstrings y verá que Xcode ya ha extraído cada literal de cadena de sus vistas de SwiftUI y los ha añadido al catálogo con sus valores en inglés completados. Para la mayoría de las cadenas, eso es todo lo que necesita hacer.

Compilar el proyecto

Hay un par de patrones en los que Xcode no puede hacerlo automáticamente, y ambos fallan de forma silenciosa, haciendo que la app muestre la cadena sin traducir sin ningún aviso.

Consejo 1: Evite pasar variables a Text

Cuando pasa una variable a una vista Text en lugar de un literal de cadena, SwiftUI la trata como una cadena sin más y omite por completo la búsqueda en el catálogo.

// NOT localized
let title = "welcome_title"
Text(title)

// Localized correctly
Text(LocalizedStringKey(title))

Consejo 2: Use String(localized:) fuera de las vistas

Para las cadenas que necesite localizar en un modelo de vista, una función auxiliar o en cualquier lugar fuera de una vista de SwiftUI, use String(localized:) en lugar de una cadena normal.

let errorMessage = String(localized: "error_generic")

Paso 4

Añadir variantes de plural y de dispositivo

Algunas cadenas necesitan versiones diferentes según el contexto. Esto incluye formas plurales que cambian con un número o texto que difiere según el dispositivo. Puede gestionar ambas directamente en el String Catalog.

Pluralización

BookShelf, nuestra app de demostración, muestra un recuento de libros en la estantería del usuario. En inglés es sencillo: “1 book” frente a “3 books”. Pero las reglas de plural varían entre idiomas, y hacerlo mal produce un texto poco natural en otras configuraciones regionales.

Empiece con la cadena en su vista de SwiftUI:

Text("\(bookCount) books on your shelf")

Abra el String Catalog, haga clic con el botón derecho en la clave y elija Vary by Plural. Xcode genera automáticamente las categorías de plural y las rellena previamente con la cadena de origen.

Para inglés, verá One y Other. Solo tiene que corregir el campo One a la forma singular: “%lld book on your shelf”. La forma Other ya es correcta tal cual.

Xcode marca ambas como Needs Review hasta que las confirme. Una vez que haya corregido la forma One, puede marcarlas como revisadas.

También verá árabe y español en la barra lateral al 0 %. No necesita hacer nada para esos idiomas ahora. Más adelante, cuando exporte a PTC para traducir, la estructura de plural viaja con el archivo. Para árabe, PTC generará traducciones para las seis categorías de plural (zero, one, two, few, many y other) porque la gramática árabe requiere las seis. Para español, son dos, igual que en inglés.

Variaciones por dispositivo

Algunos textos deberían variar según el dispositivo, como “Tap to continue” en iPhone frente a “Click to continue” en Mac. Para configurarlo, haga clic con el botón derecho en la clave del catálogo y elija Vary by Device. Añada los dispositivos que quiera personalizar e introduzca la cadena adecuada para cada uno. En tiempo de ejecución, iOS sirve la versión que coincida con el dispositivo actual.

Las variaciones por dispositivo son menos comunes que las variaciones de plural, pero resultan útiles para apps que se ejecutan tanto en iOS como en macOS.

Parte 3: Traducir sus archivos de localización de iOS con PTC

Su String Catalog está configurado y sus cadenas están listas. El siguiente paso es rellenarlas con traducciones.

Una forma de hacerlo es manualmente, abriendo el archivo de cada idioma y añadiendo las traducciones directamente. Para un proyecto pequeño con unas pocas cadenas, es viable. Pero a medida que su app crece, se vuelve difícil mantenerse al día. Imagine miles de claves en docenas de archivos de idioma y asegurarse de que cada cadena esté traducida y revisada.

Aquí es donde entra PTC. PTC es una herramienta de traducción con IA que le ayuda a gestionar y automatizar todo el proceso de traducción. Con PTC puede:

  • Subir y descargar automáticamente sus archivos de localización
  • Integrate with your code repository or with your CI/CD pipeline using the API
  • Editar traducciones manualmente o solicitar retraducciones con IA
  • Recibir notificaciones sobre cadenas que superan los límites de longitud antes de que lleguen a su app

A continuación, le guiaremos por los pasos rápidos que necesita para empezar con las traducciones.

1

Exportar su String Catalog desde Xcode

Vaya a Product → Export Localizations en la barra de menús de Xcode. Xcode empaqueta su String Catalog en un archivo .xcloc para cada idioma de destino.

Para esta guía, solo necesitamos el archivo .xcstrings dentro del paquete .xcloc. Para acceder a él, haga clic con el botón derecho en el archivo .xcloc exportado en Finder y seleccione Show Package Contents. Encontrará Localizable.xcstrings dentro.

💡¿Ve una notificación de “Unable to build project for localization string extraction”?

Esto ocurre cuando su proyecto utiliza API solo de iOS que Xcode no puede compilar con su SDK interno de macOS durante la extracción de cadenas. Para solucionarlo, seleccione el target del proyecto en TARGETS, vaya a Build Settings, busque “Use Compiler to Extract Swift Strings” y configúrelo en No. Después, intente exportar de nuevo.

2

Regístrese en PTC

Regístrese para una prueba gratuita de PTC — no se requiere tarjeta de crédito. La prueba gratuita le permite traducir 20.000 palabras a dos idiomas, lo que en la mayoría de los casos es suficiente para localizar una app.

Si quiere añadir más idiomas más adelante, PTC utiliza un modelo de pago por uso sin cuotas de suscripción mensuales. Solo paga por lo que traduzca.

Después de registrarse, la configuración del proyecto se abrirá automáticamente.

3

Configurar su proyecto y traducir

  1. Arrastre y suelte su archivo Localizable.xcstrings en PTC. Una vez añadido, verá un campo para el nombre del archivo de salida. Déjelo como Localizable.xcstrings. Xcode espera exactamente este nombre al resolver las cadenas localizadas.
Subir un archivo
  1. Seleccione sus idiomas de destino. La prueba gratuita admite dos idiomas. Para nuestra app de demostración, seleccionamos español y árabe.
Añadir idiomas de destino en PTC
  1. Describa qué hace su app y para quién es. Esto permite a PTC producir traducciones con contexto que utilicen el tono, la voz y la terminología adecuados para su público.
Añadir contexto del proyecto en PTC
  1. Añada términos a su glosario. PTC añade automáticamente el nombre de su app al glosario. También puede añadir cualquier terminología específica de la marca que deba traducirse de una forma concreta o no traducirse en absoluto.

Después de hacer clic en Start Translation, PTC tardará unos minutos en procesar su archivo.

4

Revisar y descargar traducciones de la app de iOS

Cuando finalice la traducción, vaya a la pestaña Translations. Verá una tabla que muestra cada cadena de origen junto a su traducción. Usted o cualquier miembro del equipo que añada al proyecto puede editar las traducciones manualmente directamente en esta vista.

Si algo no le parece correcto, puede informar de un problema con una traducción concreta y solicitar una retraducción con IA gratuita. PTC aprende de los comentarios que usted proporciona y los aplica a futuras cadenas del mismo proyecto.

Informar de incidencias en PTC

Si alguna cadena traducida supera su límite de longitud, se resaltará en la tabla. PTC establece estos límites automáticamente en función de las características de cada idioma de destino. Tiene tres opciones:

  • Aceptar la traducción más larga si su IU puede acomodarla
  • Solicitar una retraducción que se ajuste al límite actual
  • Ajustar el límite en Settings → Translation lengths
Traducciones largas marcadas en PTC

Parte 4: Integrar las traducciones en su proyecto de Xcode

Con sus traducciones listas en PTC, el último paso es incorporarlas a su proyecto de Xcode. Tiene tres opciones.

Descargar archivos manualmente desde PTC

Vaya a la pestaña Resource Files en PTC y descargue el archivo zip. Contiene un único archivo Localizable.xcstrings con sus cadenas de origen en inglés y todas las traducciones incluidas.

Para añadir el archivo a su proyecto:

  1. Asegúrese de que Xcode esté cerrado
  2. Abra la carpeta de su proyecto en Finder
  3. Sustituya el Localizable.xcstrings existente por el de PTC
  4. Reinicie Xcode

Sus traducciones aparecerán en el String Catalog, con una marca de verificación junto a cada idioma completamente traducido.

Traducciones importadas

Integrar con Git

Si su proyecto está en GitHub, GitLab o Bitbucket, puede conectar PTC directamente a su repositorio para una traducción continua.

En su panel de PTC, vaya a Settings → Merge Requests y haga clic en Add Git Integration. Tendrá que proporcionar la URL de su repositorio, conceder acceso a PTC y elegir su rama y archivos de origen. PTC enviará una solicitud de fusión con las traducciones, que podrá revisar y aceptar como cualquier otro cambio de código.

Usar la API

La API de PTC le ofrece una forma de generar y descargar automáticamente archivos de localización como parte de su propia canalización de compilación o despliegue. Merece la pena explorarlo si tiene una configuración más compleja o quiere un control total sobre cuándo y cómo se incorporan las traducciones a su proyecto.

Para empezar, vaya a Settings → Manage API tokens. Haga clic en Add access token para generar un token y, a continuación, consulte la documentación de la API para todos los endpoints.

Parte 5: Probar su app de iOS localizada

Ahora es el momento de comprobar que sus traducciones se ven y funcionan como se espera.

Probar con el ajuste de idioma del esquema

La forma más rápida de probar un idioma específico es mediante el esquema de Xcode. Vaya a Product → Scheme → Edit Scheme y haga clic en la pestaña Options. Cambie App Language y App Region a la configuración regional que quiera probar y, a continuación, ejecute la app con Cmd+R.

Esto funciona bien para la mayoría de los idiomas. Debería ver el mismo diseño que en la versión en inglés, con todo el texto cambiado al idioma seleccionado.

Probar árabe y otros idiomas RTL (de derecha a izquierda)

Para árabe y otros idiomas de derecha a izquierda, el ajuste de idioma del esquema puede ser poco fiable en el simulador. En su lugar, use los ajustes de idioma del propio simulador:

  1. Ejecute la app con Cmd+R para abrir el Simulator
  2. Pulse Cmd+Home para ir a la pantalla de inicio
  3. Abra Settings → General → Language & Region
  4. Toque Add Language, seleccione árabe y configúrelo como idioma principal
  5. El simulador se reiniciará. Abra su app desde la pantalla de inicio

Compruebe que el texto aparece en árabe y que el diseño se refleja correctamente, con el título de navegación y el contenido alineados a la derecha.

Prácticas recomendadas para la localización de iOS

Compruebe su IU con longitudes de texto variables

Los distintos idiomas requieren distintas cantidades de espacio. Las palabras en alemán, por ejemplo, suelen ser más largas que sus equivalentes en inglés y pueden romper una IU diseñada pensando solo en el inglés.

Para evitarlo:

Use el sistema de diseño flexible de SwiftUI y deje que las etiquetas crezcan y se ajusten de forma natural
Evite restricciones de ancho fijo en los elementos de texto
Pruebe su IU en varios idiomas durante el desarrollo, no solo antes del lanzamiento

No se salte las variantes de pluralización

Los idiomas no expresan las cantidades de la misma manera. El inglés necesita dos formas de plural (one y other), pero muchos idiomas necesitan más. El ruso tiene cinco categorías de plural, el árabe tiene seis y el japonés no tiene ninguna. Si se salta las variantes de pluralización para un idioma de destino, su app mostrará cadenas poco naturales o gramaticalmente incorrectas para esa configuración regional.

Los String Catalogs gestionan esto automáticamente. Cuando añade un idioma, Xcode genera los campos de plural correctos según las reglas gramaticales de ese idioma. Asegúrese de que todos los campos generados estén rellenados antes de publicar.

Localizar imágenes y recursos

Si su app utiliza imágenes que contienen texto o elementos visuales culturalmente específicos, también deben localizarse. Una app traducida que siga mostrando texto en inglés dentro de las imágenes rompe la experiencia para los usuarios no angloparlantes.

Para localizar una imagen en Xcode, abra Assets.xcassets, seleccione la imagen y, en el Attributes Inspector, haga clic en Localize. Elija los idiomas para los que quiera proporcionar variantes y sustituya cada una por la versión adecuada. Xcode sirve automáticamente la imagen correcta según la configuración regional del usuario.

Mantenga completo su idioma base

Su idioma base (normalmente el inglés) actúa como referencia para todas las demás localizaciones. Si a una cadena le falta la traducción en un idioma concreto, iOS recurre a la versión del idioma base. Esto significa que un idioma base incompleto puede provocar retrocesos inesperados incluso en idiomas que, por lo demás, están completamente traducidos.

Antes de cada versión, compruebe que su String Catalog no muestre cadenas faltantes o desactualizadas en el idioma base. Xcode las marca automáticamente durante la compilación.

Localice su ficha de App Store

Su ficha de App Store es tan importante como la propia app. Una app localizada con una ficha solo en inglés pierde usuarios en el punto de descubrimiento, antes incluso de que la descarguen.

En App Store Connect puede localizar el nombre de su app, el subtítulo, la descripción y el campo de palabras clave para cada territorio. Las palabras clave son especialmente valiosas. Apple indexa palabras clave de varias configuraciones regionales por territorio, lo que multiplica de forma efectiva su presupuesto de caracteres de palabras clave más allá de los 100 caracteres estándar.

Para traducir el contenido de su ficha de App Store, use la función Paste to Translate de PTC. Pegue el nombre de su app, el subtítulo, la descripción o el campo de palabras clave y PTC lo traducirá a sus idiomas de destino en minutos.

Preguntas frecuentes

Empiece a localizar su app de iOS hoy mismo

Ya ha hecho el trabajo técnico. PTC se encarga del resto. Regístrese para una prueba gratuita y traduzca hasta 20.000 palabras a dos idiomas. No se requiere tarjeta de crédito.

Traduzca archivos .xcstrings con PTC

Obtenga traducciones precisas en cuestión de minutos

Cargue archivos individuales o automatice el proceso mediante la API o la integración de Git


Ir arriba