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é es | Preparar su código para la localización | Adaptar su app a una configuración regional específica |
| Cuándo | Antes de su primera versión | Continuo, por idioma |
| Quién | Desarrolladores | Desarrolladores y traductores |
| Ejemplos | Extraer cadenas, usar formateadores compatibles con la configuración regional | Traducir 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.

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.

Paso 2
Crear un String Catalog
A continuación, añada un String Catalog.
- Haga clic con el botón derecho en su proyecto y seleccione New File from Template.
- Busque String Catalog y añádalo. El nombre predeterminado será Localizable.xcstrings. No es necesario cambiarlo.
- 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.

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
- Arrastre y suelte su archivo
Localizable.xcstringsen PTC. Una vez añadido, verá un campo para el nombre del archivo de salida. Déjelo comoLocalizable.xcstrings. Xcode espera exactamente este nombre al resolver las cadenas localizadas.

- Seleccione sus idiomas de destino. La prueba gratuita admite dos idiomas. Para nuestra app de demostración, seleccionamos español y árabe.

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

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

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.
Opción 1
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:
- Asegúrese de que Xcode esté cerrado
- Abra la carpeta de su proyecto en Finder
- Sustituya el
Localizable.xcstringsexistente por el de PTC - Reinicie Xcode
Sus traducciones aparecerán en el String Catalog, con una marca de verificación junto a cada idioma completamente traducido.

Opción 2
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.
Opción 3
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:
- Ejecute la app con Cmd+R para abrir el Simulator
- Pulse Cmd+Home para ir a la pantalla de inicio
- Abra Settings → General → Language & Region
- Toque Add Language, seleccione árabe y configúrelo como idioma principal
- 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:
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
¿Por qué no funciona la localización en iOS?
La causa más común es que el archivo de localización no esté incluido en el target de la app.
Haga clic en Localizable.xcstrings en el Navigator, abra el File Inspector a la derecha y compruebe que el target de su app esté marcado en Target Membership. Asegúrese también de que el idioma que está probando figure en la sección Localizations de su proyecto, en la pestaña Info.
Si ambos parecen correctos, pruebe a limpiar la carpeta de compilación con Shift+Cmd+K y vuelva a compilar.
¿Cuáles son los formatos de archivo de localización de iOS?
Xcode admite varios formatos de archivo para la localización:
.xcstrings(String Catalog) es el formato predeterminado actual desde Xcode 15. Es un único archivo basado en JSON que consolida todas sus cadenas, reglas de plural y variantes específicas por dispositivo. Xcode extrae las cadenas automáticamente en tiempo de compilación y marca cualquier traducción que falte. Este es el formato que debe usar en cualquier proyecto nuevo..stringses el formato heredado, todavía válido y habitual en bases de código antiguas. Almacena pares clave-valor para un solo idioma en un archivo de texto sin formato. Necesitará un archivo .stringsdict adicional junto a él para gestionar la pluralización..stringsdictgestiona las reglas de plural en proyectos que usan archivos .strings. Los String Catalogs tienen compatibilidad con plurales integrada, por lo que no lo necesitará en proyectos nuevos..xliffy.xclocson formatos de exportación que se usan al entregar cadenas a traductores o a una plataforma de traducción. No son formatos de almacenamiento. Xcode los genera cuando exporta para traducir.
¿Cómo localizo el nombre de la app en Xcode?
Cree un nuevo archivo strings llamado InfoPlist.strings y localícelo para cada idioma compatible. En la versión de cada idioma del archivo, añada la siguiente línea con el nombre de la app traducido:
CFBundleDisplayName = "Your Translated App Name";
Seleccione el archivo en el Navigator, abra el File Inspector y haga clic en Localize para añadir variantes de idioma. iOS mostrará el nombre correcto de la app según el idioma del dispositivo del usuario.
¿Cómo cambio el idioma de la app mediante programación sin reiniciar?
iOS no proporciona una API nativa para cambiar el idioma de la app en tiempo de ejecución sin reiniciar. El enfoque estándar es establecer la clave AppleLanguages en UserDefaults y pedir al usuario que reinicie la app:
UserDefaults.standard.set(["es"], forKey: "AppleLanguages")
UserDefaults.standard.synchronize()El cambio de idioma surtirá efecto la próxima vez que se inicie la app. Si su app requiere cambiar de idioma durante la sesión sin reiniciar, tendrá que gestionar la localización manualmente cargando el bundle adecuado para el idioma seleccionado.
¿Cómo cambio el idioma de mi app en App Store Connect?
En App Store Connect, vaya a la página de su app y seleccione el idioma que quiera añadir en la barra lateral izquierda. Puede localizar el nombre de su app, el subtítulo, el texto promocional, la descripción, las palabras clave y las capturas de pantalla para cada territorio de forma independiente.
Los cambios en su ficha de App Store no requieren un nuevo envío de la app. Puede actualizar los metadatos en cualquier momento.
¿Por qué mi app vuelve al inglés en idiomas no compatibles?
iOS usa su idioma base como alternativa cuando no hay una traducción disponible para el idioma preferido del usuario. Si el dispositivo de un usuario está configurado en un idioma que su app no admite, o si a una cadena concreta le falta una traducción, iOS sirve la versión del idioma base. Este es el comportamiento esperado. Para minimizar los retrocesos, asegúrese de que su String Catalog no muestre cadenas faltantes o desactualizadas antes de cada versión.
¿Localizar una app de iOS realmente ayuda a las descargas?
Sí, de forma consistente. Las apps localizadas en cinco o más idiomas generan, de media, muchas más descargas que las apps solo en inglés, y los mercados no angloparlantes representan más de la mitad de los ingresos globales de la App Store. Japón, Corea del Sur y China están entre los mercados con mayores ingresos fuera de los países angloparlantes.
¿A qué idiomas debería localizar primero mi app de iOS?
Empiece por los idiomas que ofrezcan la mejor combinación de tamaño de mercado y coste de traducción. El español, el francés, el alemán, el japonés y el chino simplificado son los puntos de partida más habituales para las apps que se expanden más allá del inglés.
Si su app ya tiene usuarios en una región concreta, priorice primero su idioma.
Para el menor coste de adaptación, empiece por idiomas geográfica o culturalmente cercanos a su mercado base y vaya ampliando a partir de ahí.
¿De verdad puedo usar IA para localizar toda mi app de iOS con precisión?
Sí. La traducción con IA se ha vuelto lo bastante precisa para la mayoría del contenido de una app y es significativamente más rápida y barata que la traducción humana por sí sola.
PTC utiliza IA para traducir sus archivos .xcstrings, .strings y .stringsdict en minutos, preservando automáticamente las reglas de plural y los placeholders. El 99,8 % de las cadenas traducidas se publican sin ninguna edición. Para obtener los mejores resultados, cuéntele a PTC sobre su app durante la configuración para que las traducciones reflejen el tono y la terminología adecuados para su público.

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