¡TRANSOLUTIONS AHORA ES PARTE DE BAUFEST!
Ingresa a baufest.com para conocer más sobre nuestros servicios.

BLOG

Viernes, 08 Junio 2018 14:31

Multilenguaje y soporte para idiomas RTL (Right-to-left) en Xamarin.Forms

Hoy presentamos a Jesús Angulo, Software Architect de Trans Solutions Systems. Para este artículo nos enseñará implementar multilenguaje y soporte para idiomas RTL (Right-to-left) en Xamarin.Forms.

Si revisamos la lista de idiomas y el porcentaje de la población que los habla, rápidamente nos daríamos cuenta de que si queremos abarcar una importante mayoría de la población necesitamos tomar nuestra tarea de internacionalización más seriamente. Para ayudarnos en esta tarea, vamos a utilizar Xamarin.Forms 3.0 y su nueva característica para soportar lenguajes con layout RTL, apoyándonos en un plugin llamado Xamarin.Forms.Localization.

Para mostrarles cómo implementarlo, utilizaremos una aplicación base que pueden encontrar en el repositorio de GitHub https://github.com/jesulink2514/Xamarin.Localization.

  1. Así como en las aplicaciones tradicionales de .NET utilizamos los archivos .resx, en las aplicaciones de Xamarin.Forms también es posible, por la tanto iniciaremos agregando los archivos de recursos necesarios para los idiomas que deseemos soportar. Recuerden que el sufijo de nuestros archivos de recursos debe corresponder con el idioma que deseamos soportar.

                                                            archivos .resxmessage .resx

 

  1. Para poder editar nuestros múltiples archivos de recursos, convenientemente, pueden utilizar el plugin de Visual Studio, ResXManager https://marketplace.visualstudio.com/items?itemName=TomEnglert.ResXManager.

 

  1. Con nuestros archivos de recursos listos, podemos proceder a configurar nuestra aplicación para detectar el idioma de nuestro dispositivo y tratar de encontrarlo entre nuestros idiomas disponibles. Para facilitar nuestras tareas de localización instalaremos nuestro Plugin Xamarin.Forms.Localization https://www.nuget.org/packages/Xamarin.Forms.Localization únicamente en nuestro proyecto de Xamarin.Forms, no en los proyectos específicos de plataforma. 

 

  1. Una vez instalado nuestro plugin, procederemos a agregar la detección de idioma a nuestra clase App. Agregaremos las siguientes líneas de código a nuestro método OnStart.

 

Esto nos permite asegurarnos de elegir la cultura de nuestro archivo de recursos, cuando la cultura cambie. Nuestro plugin expone el evento OnCultureChanged. Y luego de fijar nuestro manejador de eventos, podemos asegurarnos de utilizar la cultura del device y en caso no este disponible utilizar nuestra cultura por defecto, como pueden ver tenemos nuestro defaultCultureName y nuestras culturas disponibles en el parámetro availableCultures.

  1. Ahora, con esto en su lugar, podemos empezar a reemplazar nuestros fragmentos de texto en XAML por las llamadas a nuestro archivo de recursos. Para esto nos apoyaremos en la expresión de marcado x:Static. Ello nos permite enlazar una propiedad a un valor estático, y eso es justamente lo que son nuestras entradas en nuestro archivo resx. Nótese que, gracias a esta expresión de marcado, nuestro editor nos proveerá de Intellisense.

 

  1. Para aprovechar la característica de Xamarin.Forms 3.0, nuestro plugin ofrece la propiedad FlowDirection, que podemos fijar directamente en el constructor de nuestras páginas para asegurarse de que la dirección de nuestros controles (izquierda a derecha, o derecha a izquierda) cambien apropiadamente en base al idioma actual.

 

  1. Para probar el cambio en la dirección, utilizaremos una pantalla de configuración de idioma.

 

Aquí hacemos 3 cosas puntualmente:

-Empezamos definiendo el listado de idiomas disponibles para poder mostrarle al usuario una lista desplegable.

-Luego utilizamos la propiedad CurrentLanguage para almacenar la elección del usuario.

-Finalmente, cuando se trate de fijar nuestra cultura, utilizamos Localization.Current.CurrentCultureInfo, y esto se encargará de determinar la dirección del lenguaje y actualizar la cultura de nuestro archivos de recursos.

 

  1. Ahora podemos probar nuestra aplicación para ver los resultados.

 

Conclusiones

Implementar múltiples idiomas y soportar idiomas con dirección RTL o LTR, es ahora mucho más sencillo y disponible en Xamarin.Forms 3.0. No olvidemos que el plugin de Xamarin.Forms.Localization, nos permite simplificar el manejo de los idiomas de nuestro dispositivo y volver extremadamente simple fijar nuestra dirección de manera apropiada en base al idioma actual. Para mayor detalle sobre la API que expone Xamarin.Localization pueden revisar directamente el repositorio en Github donde también se encuentra el código fuente de este ejemplo https://github.com/jesulink2514/Xamarin.Localization. el porcentaje de la población que los habla, rápidamente nos daríamos cuenta de que si queremos abarcar una importante mayoría de la población necesitamos tomar nuestra tarea de internacionalización más seriamente. Para ayudarnos en esta tarea, vamos a utilizar Xamarin.Forms 3.0 y su nueva característica para soportar lenguajes con layout RTL, apoyándonos en un plugin llamado Xamarin.Forms.Localization.