Localizar apps con Xojo, coser y cantar

Si has probado otros entornos de desarrollo, pronto habrás llegado a la conclusión de que una operación en principio tan sencilla, como la de localizar tu producto a diferentes regiones y/o idiomas, se convierte en algo más complejo y laborioso de lo que debería de resultar. El IDE de Xojo también sobresale en esto.

En esta cuesión no se libra ni el mismo Xcode, teniendo en cuenta además en ello todas las mejoras que Apple ha ido introduciendo a lo largo de las diferentes generaciones del IDE (especialmente en la anterior Xcode 6). E incluso en ese caso toca encontrar posteriormente un editor para trabajar con los archivo XLIFF generados.

¿Pero qué es eso de la “localización”, para empezar? Pues bien, es la capacidad de que puedas crear los ejecutables de tus aplicaciones de modo que, cuando estos se ejecuten ya sobre el dispositivo del usuario final, muestre los textos de la interfaz de usuario, así como los generados de forma dinámica desde el código, para que coincida con el idioma/región seleccionados por el usuario en las preferencias de su equipo, ya se trate de un ordenador, tableta o teléfono inteligente.

Vamos, que una misma aplicación muestre sus textos en inglés para un usuario de tu aplicación en Estados Unidos, en alemán si se trata de alguien que lo está ejecutando en Alemania, y en español en el caso de que lo haga desde España. (Ten en cuenta que en muchos casos se contemplan variaciones de un mismo idioma; tal y como ocurre, sin ir muy lejos, con el propio español.)

Localizar, cuestión de constantes

En Xojo la magia de la localización se lleva a cabo a través de las constantes. Ya sabes que puedes añadir una constante sobre cualquiera de las clases y controles gráficos mediante la opción Insert > Constant (Comando + Opción + C en el Mac).

Una vez añadida la constante y seleccionada en el Navegador, podrás asignar un valor por omisión utilizando el Inspector, tal y como harías por otra parte con cualquier otra constante. Además, también podrás definir el ámbito (scope), permitiendo así que sea accesible desde cualquier elemento del proyecto o bien circunscrito a la clase o jerarquía de objetos que desees. En el caso que nos ocupa, te recomiendo que utilices siempre el ámbito Global para las cadenas de texto que vayas a utilizar en la localización de tus proyectos. De hecho, mi preferencia es la de incluir todas estas constantes en un módulo (Insert > Module).

Ahora bien, asegúrate de activar la casilla de verificación Dynamic para que Xojo trate a dicha constante como una cadena de localización, que ha de cargar de forma dinámica en función del idioma seleccionado en el equipo sobre el que se ejecute la aplicación.

A continuación, y ya en el área del navegador, podrás añadir tantas entradas como diferentes idiomas desees soportar en tu aplicación. En cada una de ellas, mantén el ajuste de plataforma en “any” de modo que la misma cadena sirva para todas las plataformas de despliegue generadas, y luego utiliza los menús Language y Value para seleccionar un nuevo idioma y el valor asociado a la constante para dicho idioma. ¡Así de sencillo!

Uso de constantes localizadas en código

Ahora bien, una vez que tenemos nuestras cadenas traducidas… ¿cómo podemos aplicarlas a las diferentes partes del código? Bien sencillo.

En el caso de los controles gráficos o entradas de menú, sólo hemos de anteponer el símbolo almohadilla (#) al nombre de la constante que hayamos creado. Así, por ejemplo, si añadimos un botón a una ventana de nuestra interfaz gráfica e introducimos “#kHola” en el campo “Caption” del Inspector para dicho botón, veremos como la interfaz de usuario pasa a reflejar automáticamente el texto “Hola” definido por la constante.

Esto mismo es lo que ocurre cuando añadirmos un nuevo elemento de menú e introducimos “kHola” en el campo “Text” de la ventana Inspector para dicho elemento.

Y cuando se trata de generar la cadena localizada desde el código propiamente dicho… ¡sólo has de utilizar el nombre sin más! Así, por ejemplo:

msgbox kHola

Mostrará el texto en el idioma correcto definido para cada caso.

Lingua, déjalo en manos de profesionales

Ahora bien, después de todo tu eres el programador y probablemente no sepas localizar correctamente cada textos y expresión en todos los idiomas soportados por la aplicación que estás creando. ¿Qué hacer en estos casos? Bienvenido a Lingua, la utilidad de ayuda a la localización gratuita que puede utilizar cualquier traductor (dado que está disponible para los principales sistemas operativos) y que permite leer y generar los archivos compatibles con Xojo.

Para generar dichos archivos solo has de abrir tu proyecto y elegir la opción File > Export Localizable Values…

Como resultado aparecerá una hoja en la que deberás de elegir el lenguaje de destino para el que desees localizar las cadenas de texto disponibles y marcadas como Dinámicas en tu proyecto.

Luego tu traductor ya podrá abrir el archivo generado con la utilidad Lingua e introducir las correspondencias para cada uno de los textos disponibles. Cuando haya finalizado, sólo tendrá que guardar el archivo, enviártelo y tu podrás incorporarlo al proyecto para que los textos se actualicen con los valores para el nuevo idioma. Más sencillo imposible.

Arbed, una opción más completa

Más allá de la gratuita Lingua también puedes encontrar la aplicación Arbed. Se trata de una herramienta de la que deberás de adquirir una licencia de uso para sacar el máximo provecho a sus capacidades (entre ellas no solo la localización sino también la ofuscación de cadenas, algo muy útil para ocultar sentencias SQL por ejemplo). No obstante, siempre puedes descargarla y echar gratis un vistazo a sus capacidades antes de tomar una decisión.

Eso sí, ten en cuenta que en su estado actual no soporta aun los proyectos iOS.

Un comentario en “Localizar apps con Xojo, coser y cantar

  1. Parov

    Javier,

    Si estas interesado en traducir archivos XLIFF, yo recomiendo altamente esta rápida y intuitiva herramienta para la localización de software: https://poeditor.com/

    Es una herramienta en línea con una cuenta gratuita también y muchas posibilidades.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *