Robotics and Intelligent Systems
Creating a Multi-language Support System with Localization in Ios
Table of Contents
Comprender la localización y la internacionalización
La creación de un sistema de soporte multilingüe en iOS comienza con la comprensión de la distinción entre internacionalización y localización. La internacionalización (i18n) es el proceso de diseñar su aplicación para que pueda adaptarse a varios idiomas y regiones sin cambios de ingeniería. Localización (l10n) es la traducción y adaptación cultural de los contenidos y la interfaz de usuario de la aplicación para un local específico. Los marcos de Apple manejan gran parte del elevador pesado, pero una estrategia bien-pensada.
Apple ofrece herramientas integrales en Xcode, Foundation y UIKit para apoyar la localización. El objetivo es hacer que su aplicación se sienta nativa en cada idioma, respetando la dirección de lectura, los formatos de fecha, el formato de números y las convenciones culturales. Este artículo camina a través de los pasos prácticos para implementar un soporte robusto de multilingüe, desde la configuración de proyectos hasta técnicas avanzadas.
Localización de Habilitación en su proyecto de código X
El primer paso es decir Xcode qué idiomas soporta tu app. Abre la configuración de tu proyecto, selecciona tu proyecto en el Navigator del Proyecto y debajo de la pestaña Info, encuentra la sección Localizaciones. Haz clic en el botón “+” para añadir idiomas. Para cada idioma, Xcode crea automáticamente archivos de recursos (storyboards, XIBs, archivos de cadenas) que puedes editar por separado.
Base Internacionalización
Apple recomienda usar Base Internationalization. En la pestaña Info de tu proyecto, compruebe “Use Base Internationalization”. Esto almacena el diseño original de la interfaz de usuario en una localización de base (normalmente Inglés) y cada idioma adicional anula sólo las cadenas, no el diseño. Esto reduce la duplicación y asegura la consistencia de la distribución. Si lo descompones, debes duplicar todo el guión gráfico para cada idioma, que es propensa a errores.
Agregar Localizaciones a los archivos existentes
Para los storyboards existentes o XIBs, seleccione el archivo en el Inspector de archivos, luego en Localización, compruebe los idiomas que desea localizar. Xcode genera archivos .strings específicos para los storyboards. Para interfaces basadas en código, usted confiará en y archivos separados .strings.
Creación y gestión de archivos de cuerdas localizables
La forma principal de traducir el texto del código es a través de archivos. Cree uno al ir a Archivo √Ī ⁇ Nuevo } Archivo de Strings (bajo Recursos). Nombrarlo . Luego en el Inspector de Archivo, localícelo: haga clic en Localizar, luego seleccione su idioma de base. Después de eso, para cada idioma adicional, aparece un nuevo archivo en un subcarpetro.
El formato es clave = pares de valor:
Para la localización alemana:
Siempre usa las teclas descriptivas, no la cadena inglesa en sí, para evitar cambios accidentales que rompen las apariencias. Si utiliza la cadena inglesa como la clave, renombrarla más tarde se vuelve problemática.
Organizar las cuerdas con comentarios
Añadir comentarios para explicar el contexto para los traductores. No se compilan en la aplicación. Ejemplo:
Usando NSLocalizedString en Código
El macro lee la cadena del archivo apropiado basado en el lenguaje del dispositivo del usuario. Su firma:
La mayoría de las llamadas utilizan sólo la clave y comentario:
Si no se encuentra ninguna traducción, la clave en sí se devuelve (o el parámetro de valor si se proporciona). Siempre proporcionar un comentario significativo para guiar a los traductores.
Pendientes de formato de manipulación con parámetros
Para contenido dinámico, utilice los especificadores de formato como , , . Ejemplo:
En código:
Esto permite a los traductores reordenar palabras apropiadamente (por ejemplo, en japonés la estructura de frases puede colocar el número después del sustantivo). Aún mejor, utilizar con un argumento de formato:
Usando .stringsdict para reglas de la Plural
Por ejemplo, el inglés tiene singulares/plurales, pero el árabe tiene seis formas, y el polaco tiene tres. Apple proporciona archivos para manejar la pluralización y otro texto variable. Cree un archivo llamado en las mismas carpetas de localización como . Su formato es una lista con una clave por formato. Ejemplo:
Luego en código usa la misma clave: . iOS selecciona automáticamente la forma plural correcta basada en las reglas del local.
Localización de Guiones Gráficos y XIB
Cuando localizas un guión gráfico, cada etiqueta, botón y campo de texto obtiene una contraparte en el archivo de cadenas específicas para el lenguaje. Puedes editar estas cadenas directamente, o utilizar Interface Builder para previsualizar y modificar las maquetas por idioma. Sin embargo, para una interfaz más dinámica, puedes preferir configurar el texto programadamente usando y luego manejar la distribución con Auto Layout.
Previsualización de Localizaciones en Xcode
En Xcode, puedes previsualizar un guión gráfico en diferentes idiomas sin construir: abre el guión gráfico, luego en el menú Editor, selecciona Preview. Agregue un dispositivo de vista previa, luego cambie el idioma usando el desplegable en la parte inferior. Esto muestra cómo se expanden o contraen las cadenas.
Ajuste de la configuración para la expansión de texto
El texto alemán es a menudo un 30% más largo que el inglés. Use Auto Layout con restricciones que pueden crecer etiquetas vertical o horizontalmente. Establecer el número de lÃneas de la etiqueta a 0. Evite las restricciones de ancho fijo. Utilice las prioridades de abrazar y compresión de contenido adecuadamente. Para botones, considere usar o permitir el ancho dinámico.
Prueba con traducciones más largas posibles.
Manejo de idiomas de derecha a izquierda (RTL)
Árabe, hebreo, persa, urdu y otros fluyen de derecha a izquierda. iOS admite RTL a través de la propiedad en vistas y el cambio automático del sistema de imágenes y diseño basado en la dirección de diseño de interfaz de usuario (del lenguaje del dispositivo).
Configuración para RTL
Asegúrese de que sus vistas de storyboard usen restricciones de traque y de traque en lugar de izquierda/derecha. Auto Layout de Xcode admite el correcto trailing/directo de la guía automáticamente. Para los diseños programáticos, utilice y . Si tiene dibujos o transformaciones personalizados, respete la dirección de diseño de interfaz de usuario de ].
Imágenes y RTL
Las imágenes que tienen significado direccional (por ejemplo, una flecha apuntando hacia adelante) deben ser volteadas en modo RTL. En el catálogo de activos, puede establecer imágenes como “Mirror” para RTL. Alternativamente, proporcionar conjuntos de imágenes separados para cada dirección. Para las imágenes de plantilla, iOS puede reflejar automáticamente si se establece en la imagen.
Ajuste de texto
Para etiquetas y vistas de texto, utilice que se alinea automáticamente a la izquierda para LTR y a la derecha para RTL. Evite la alineación de codificación dura.
Localización de fechas, números y curvas
Los usuarios finales esperan fechas y números formateados según su local. Use y con el local del usuario. Set (que es el predeterminado) y use estilos predefinidos como , , o patrones personalizados. Por ejemplo:
Para números, use con estilo o . Maneja separadores de agrupación, separador decimal y símbolo de moneda automáticamente.
Usando Locale con cuerdas de Formato
Cuando se usa con especificadores numéricos, el local puede afectar la agrupación. Para cadenas de uso, utilice que respete la localidad. Para el persing interno, utilice con un local fijo como .
Localización de pruebas
Pruebas torales es crítica. Simular diferentes idiomas en el simulador editando la configuración de la aplicación Lengua y Región del esquema. Ir al producto √Īo Scheme √Ī Editar esquema, luego bajo Run √≥ Opciones, elegir un idioma de aplicación diferente (por ejemplo, alemán) y Región (por ejemplo, Alemania). Construir y ejecutar para ver todas las cadenas localizadas.
Usando el conmutador de idiomas del simulador
También puede cambiar el idioma del Simulador: Ajustes √≥ General √≥n Idioma > Región. Sin embargo, el método de esquema es más rápido para probar un solo idioma.
Pruebas RTL
Establecer el idioma de aplicación del esquema a árabe. Compruebe que todas las vistas se vuelven a la perfección. Preste atención a las vistas personalizadas, vistas a desplazamiento y vistas a la web. Utilice el Debug ⁇ Vista Debugging herramientas para inspeccionar la distribución.
Pruebas con Pseudolocalización
Xcode ofrece pseudolocalización para simular cadenas largas o RTL sin traducciones reales. En las Opciones del esquema, permite “Doble-Length Pseudolanguage” o “Derecho a Pseudolanguage izquierdo”. Esto ayuda a atrapar problemas de truncación y alineación temprano.
Localización de Contenido dinámico y UI de servidor
Si su aplicación descarga contenido de un servidor, no puede confiar únicamente en . Necesita enviar la preferencia local del usuario al servidor y tener que devolver contenido traducido. Utilice el encabezado o un parámetro personalizado. En el lado iOS, puede obtener los idiomas preferidos de o .
Para UI dirigida por servidor que se renderiza en componentes nativos, puede mapear las teclas de cadena de servidor de las traducciones locales utilizando un patrón similar pero con una tabla o paquete diferente. Considere almacenar localizaciones en un archivo JSON atrapado después del lanzamiento de la aplicación para permitir actualizaciones de aire sin la presentación de la aplicación.
Buenas prácticas para la localización sostenible
- Mantenga las teclas descriptivas y consistentes] – Use la noción de puntos como a las teclas del espacio de nombres.
- Use una única fuente de verdad – Evite duplicar las traducciones a través de archivos. Utilice la localización de base y consulte la misma clave.
- Automatizar exportación/import – Xcode puede exportar todas las localizaciones como archivos XLIFF para traductores, luego importar los archivos traducidos de vuelta. Use y .
- Control de la versión de sus cadenas – Mantenga y archivos en Git. Use herramientas de difusor para rastrear los cambios.
- Nunca incluya texto localizable en código – Siempre use o para separación.
- Interpolación de cadenas de comparación cuidadosamente – Los traductores necesitan entender lo que representa cada titular de posición. Usar argumentos posicionales () para permitir la reordenación.
Trabajando con Localización SwiftUI
SwiftUI simplifica la localización. Por defecto, busca la cadena en utilizando la clave "Hola". Si no existe una llave, utiliza la cadena literal en sí. Puede las claves explícitas con y proporcionar traducciones.
Para cadenas formateadas, use – SwiftUI utiliza automáticamente el si tiene la clave “Tiene elementos %d” en un archivo . Sin embargo, para que coincida con la clave precisamente, es posible que necesite definir el formato completo. Mejor utilizar una clave dedicada:
no funciona directamente. En lugar de eso, usa:
O utilizar SwiftUI con interpolación: pero esto requiere que la clave sea exactamente "items count %d" en el archivo de cuerdas. El enfoque más seguro es seguir utilizando con dentro de una propiedad computada.
Localización de imágenes en SwiftUI
Use y proporcione localización de catálogos de activos para cada idioma. O utilice con etiquetas de accesibilidad localizadas a través de .
Pitfalls comunes y cómo evitarlos
- ]Mising translations] – Use con un parámetro para proporcionar un retroceso en inglés. Regularmente ejecute el simulador en cada idioma para detectar cadenas no traducidas.
- Diseño codificado por el suelo – Evite los anchos fijos. Prueba con traducciones alemanas más largas.
- Ignorando reglas plurales] – Usar siempre .stringsdict para cadenas plurales.
- Forgetting locale for date/number parsing – Al analizar la entrada del usuario, utilice un local fijo como en US POSIX para almacenamiento interno.
- No se prueba en dispositivos reales – El cambio de idioma simulador es fiable pero la prueba de dispositivos expone comportamientos específicos de la región como calendario, zona horaria y teclado.
- Accesibilidad visual] – VoiceOver habla de cadenas localizadas. Asegurar que las etiquetas de accesibilidad también se localizan y utilizan adecuadamente.
Recursos externos para un entendimiento más profundo
- Guía de internacionalización y localización deApple – Documentación oficial que abarca todo desde archivos de cadenas hasta soporte derecho a izquierda. Apple Internationalization
- El artículo NSLocalizedString deNSHipster] – Consejos prácticos y características de API menos conocidas.
- La internacionalización de Objc.io – Inmersión profunda en .stringsdict y pluralización. Objc.io Internationalization
Conclusión
Implementar soporte multi-idioma en iOS es más que traducción: implica una planificación cuidadosa de cuerdas, diseños, formatos y convenciones culturales. Aprovechando las herramientas de localización integradas de Apple —Base Internationalization, , y Auto Layout— puedes crear una aplicación que se sienta en casa en cualquier idioma. Pruebas regulares con pseudolocalización sólida y dispositivos reales se abren problemas tempranos.