1. Separación de código y textos
El requisito fundamental para cualquier localización es la separación estricta del código del programa y los contenidos textuales. Todos los textos que se muestren deben almacenarse en archivos de recursos externos (p. ej., Properties, JSON, YAML), no codificados directamente en el código fuente. De esta manera, los traductores pueden trabajar sin modificar el código. Utilice claves de cadena únicas como referencia en el código que apunten a las traducciones correspondientes. Esta separación también facilita el mantenimiento y permite agregar nuevos idiomas posteriormente sin cambios en el código. Asegúrese de que las etiquetas de la interfaz de usuario, los mensajes de error y los tooltips también estén incluidos en estos archivos.
2. Marcadores de posición y variables
Los textos a menudo contienen contenido dinámico como números, nombres o fechas. Estos deben insertarse mediante marcadores de posición, p. ej., con formato printf (%s, %d) o enfoques más modernos como llaves {0}. Es importante que los traductores conozcan el orden y el significado de los marcadores de posición. Utilice marcadores de posición con nombre (p. ej., «{username}») para proporcionar contexto. En idiomas con diferente orden de palabras, el orden de los marcadores de posición puede variar. Por lo tanto, ofrezca la posibilidad de ajustar el orden en la traducción. Pruebe todas las variantes para evitar salidas incorrectas o incompletas.
3. Reglas de plural y formación del plural
En alemán solo existe singular y plural, pero muchos idiomas tienen reglas de plural más complejas (por ejemplo, el árabe con seis categorías). Utilice bibliotecas como ICU MessageFormat, que manejan las reglas de plural de forma específica para cada idioma. Defina en sus recursos claves separadas para las diferentes formas de plural (one, other). El código seleccionará automáticamente la forma adecuada según el número. Ejemplo: „{count} {count, plural, one {manzana} other {manzanas}}“. Pruebe cada idioma con varios valores numéricos para asegurarse de que se muestre la forma de plural correcta. Evite declaraciones if fijas, ya que son propensas a errores.
4. Longitud del texto y buffer de diseño
Las traducciones suelen ser más largas o más cortas que el texto original. Esto puede desbordar el diseño, especialmente en botones, menús y etiquetas. Por lo tanto, planifique suficiente espacio para las expansiones de texto: un buen punto de referencia es un 30 % de espacio adicional para idiomas occidentales, más para asiáticos. Utilice diseños dinámicos que se adapten a la longitud del texto (por ejemplo, Auto Layout en iOS o Flexbox en la web). Evite anchos fijos. Permita que los elementos de la UI manejen el ajuste de línea cuando sea necesario. Pruebe la interfaz con las traducciones más largas esperadas para evitar superposiciones o cortes.
5. Claves de cadena, contexto para traductores y RTL
Las claves de cadena únicas son la columna vertebral de la localización. Utilice nombres descriptivos (p. ej., „login.button.title“) y documente el propósito. Proporcione contexto a los traductores: capturas de pantalla, longitud máxima de caracteres, restricciones (p. ej., „no más de 20 caracteres“). Para idiomas RTL como el árabe o el hebreo, la interfaz de usuario debe reflejarse. Utilice atributos de diseño que admitan RTL automáticamente (p. ej., start/end en lugar de left/right). Pruebe toda la navegación en condiciones RTL. También considere los iconos y gráficos, ya que pueden interpretarse de manera diferente según la cultura.