[Windows Phone 8] Multilingual App Toolkit

Hola a todos!

En nuestro repaso por los toolkits de desarrollo para Windows Phone, hoy quiero hacer un alto en el camino para hablar del Multilingual App Toolkit.

Un punto básico para mejorar las descargas de nuestras aplicaciones, es el de traducirlas a varios idiomas. Al menos el Inglés es un requisito casi imprescindible. Aunque en España Windows Phone no tiene una gran presencia, en latino américa si que la tiene, por lo que el español es también una gran opción. Una vez tenidos en cuenta estos dos grupos de idiomas, podemos plantearnos implementar otros idiomas que, aunque quizás no tan numerosos en su público, nos permitirán fidelizar usuarios. Podemos en este sentido buscar los países de habla no inglesa ni española en busca de aquellos con una mayor cuota de mercado de Windows Phone. Países como Polonia, con más del 20% de cuota de mercado o Brasil, donde el Lumia 520 está arrasando, son objetivos claros.

Una vez identificados los idiomas que deseamos incluir en nuestra aplicación, podemos ponernos manos a la obra. Tenemos dos tareas importantes que realizar:

  • Implementar el soporte para múltiples idiomas en nuestra aplicación.
  • Conseguir traducciones de nuestros textos a cada idioma que queramos soportar.

En ambos casos, el Multilingual App Toolkit nos ayudará. Para la segunda tarea, conseguir las traducciones, es aconsejable evitar las traducciones automáticas. Aún son bastante malas y en muchos casos podemos encontrarnos con que un término puede resultar ofensivo, o que una frase que en español tiene sentido, en portugués no lo tiene. ¿Qué podemos hacer entonces? Pues confiar en la comunidad. En concreto, los MVPs de Windows Phone estamos repartidos por todo el mundo y, dentro de nuestra disponibilidad de tiempo, estamos dispuestos a ayudar a traducir o buscar quien pueda ayudar. Así, si necesitáis traducciones, podéis enviarme un email a josueyeray@gmail.com y yo puedo poneros en contacto con los MVPs de Windows Phone de la región para la que necesitáis la traducción, que estarán encantados de ayudar.

Y para esta tarea, Multilingual App Toolkit juega un papel fundamental, pues facilita el distribuir un archivo de textos y que nos lo devuelvan traducido. Vamos a ver como usarlo.

En primer lugar vamos a crear un nuevo proyecto de Windows Phone 8. Con todo proyecto nuevo, en la carpeta resources de la aplicación, se incluye un archivo RESX llamado AppResources.resx. Este es el archivo donde pondremos todos los textos de la aplicación. Es deseable, si queremos luego obtener traducciones de otras personas, que este archivo contenga los textos en inglés. Si luego queremos traducir al polaco, mucha gente podrá hacerlo, pero si el idioma original es el español, encontraremos más dificultades para encontrar a alguien que sepa español y polaco.

Así que dentro de este archivo de recursos pondremos nuestros textos. Si lo abrimos, veremos una estructura de tabla con tres columnas:

  • Name: El nombre que identifica el recurso.
  • Value: El valor del recurso, el texto a mostrar.
  • Comment: Un comentario, que puede indicar donde usamos este recurso, por ejemplo.

image

De esta forma, podemos ir añadiendo recursos cada vez que deseemos mostrar un texto en la aplicación. Es importante que usemos este sistema desde el principio del desarrollo. Si lo dejamos para el final, se convertirá en una tarea tediosa y se nos puede pasar un texto. Si un solo texto está sin traducir, la aplicación fallará la certificación por la regla 4.4 – Language Validation. Por lo que lo más aconsejable es llevar a cabo esta tarea desde un primer momento y nunca usar textos directamente desde XAML.

Bien, pero ¿Como accedemos a estos recursos desde un TextBlock en XAML? Pues usando la clase, que también se incluye por defecto, LocalizedStrings. Esta clase está incluida como un recurso estático en el archivo App.xaml, con el mismo nombre. Usando este recurso y la propiedad Name del archivo RESX, podremos acceder a los textos desde XAML:

<Grid x:Name=«ContentPanel» Grid.Row=«1» Margin=«12,0,12,0»>
    <TextBlock Text=»{Binding LocalizedResources.LargeText, Source={StaticResource LocalizedStrings}}«
               TextWrapping=«Wrap»></TextBlock>
</Grid>

Si ejecutamos la aplicación, veremos el contenido del recurso LargeText en nuestro textblock. Lo bueno de esta solución es que, dependiendo del idioma del dispositivo, automáticamente se decidirá que archivo de recursos usar, con lo que no tenemos que preocuparnos más por como gestionar el cambio de idiomas.

Ahora, llega el momento de localizar nuestra aplicación a varios idiomas. Como hemos hecho el archivo principal en inglés, vamos a localizarla a español. En primer lugar tendremos que descargar el Multilingual App Toolkit (MAT) aquí. Es importante que escojamos el mismo idioma de descarga que el de nuestro Visual Studio, para evitar problemas de compatibilidad. En mi caso, tengo Visual Studio en inglés, así que descargue el MAT en inglés. Es recomendable que cerremos Visual Studio mientras instalamos el MAT, pues añade opciones a Visual Studio y podríamos tener que reiniciar si no lo tenemos cerrado.

Una vez que tengamos MAT instalado, podemos volver a abrir Visual Studio y nuestro proyecto. En el menú TOOLS encontraremos una nueva opción llamada “Enable Multilingual App Toolkit”, al hacer click sobre ella se añadirá un nuevo archivo a nuestra carpeta resources, con extensión xlf, llamado igual que nuestro archivo RESX (AppResources) con el texto qps-ploc y la extensión mencionada. Este es un archivo de pseudo idioma que usaremos más adelante para comprobar que nuestra aplicación está correctamente localizada. Pero primero, vamos a añadir un nuevo idioma a nuestra aplicación. Para ello hacemos click derecho sobre el proyecto y en el menú desplegable escogemos la opción “Add translation lenguages”, que abrirá una ventana donde podremos seleccionar todos los idiomas nuevos que queramos añadir a nuestra aplicación. En nuestro ejemplo, buscamos Spanish (es) y lo seleccionamos, veremos que a su lado tiene una flecha, que indica que podemos desplegarlo. Si seleccionamos este nodo, nuestra aplicación incluirá la cultura independiente “es”, independientemente del país, si desplegamos y seleccionamos un país concreto, solo se soportará el idioma para ese país determinado:

image

En el caso del español, es recomendable escoger la cultura independiente “es”, de esta forma, no tendremos que realizar una localización para cada país. Presionamos OK y un nuevo archivo XLF se añade a nuestra carpeta resources: AppResources.es.xlf. En este archivo debemos incorporar las traducciones en español de nuestros textos. Si hacemos doble click sobre este nuevo archivo, se abrirá el Multilingual editor, una aplicación independiente de Visual Studio, que se instala junto con el MAT y que nos permite editar los textos de los archivos de recursos:

image

El uso de esta aplicación es muy sencillo. En la parte inferior tenemos una lista de todos los textos. Si los seleccionamos, en la parte central veremos, en el primer cuadro de texto, el original y nuestra traducción podremos escribirla en el segundo cuadro de texto. Cuando empecemos a escribir en el segundo cuadro de texto, el estado cambiará de rojo (New) a amarillo (Translated). Y voila! ya está traducida la aplicación. Solo tenemos que guardar los cambios que hayamos realizado y lanzar nuestra aplicación en el emulador, cambiando el idioma de este a la cultura que deseemos probar, y veremos que automáticamente los textos aparecen en el idioma seleccionado.

Ahora, ¿Como podemos enviarle a alguien los textos para que los traduzca? Pues muy fácil! Simplemente tenemos que crear el archivo XLF en nuestro proyecto, con la opción “Add translation languages” y luego, enviar ese archivo XLF a la persona que corresponda. Esta podrá abrir el archivo desde el editor del MAT, sin necesidad de tener nuestro código, traducir las distintas cadenas de texto y devolvernos el archivo traducido. Nosotros solo tenemos que volver a copiar este archivo sobre nuestro XLF original y listo! Ya tenemos nuestra aplicación traducida. Además, como la persona que ha traducido ha podido poner comentarios y tiene un tracking del estado, podemos ver fácilmente si está todo correcto, si algún texto está mal o no se entiende… Vamos, que tenemos un montón de opciones!

Yeray, ¿La gente hace esto gratis? Bien, normalmente los MVPs tenemos un trabajo que nos da de comer, y en nuestro tiempo libre, intentamos poner nuestro granito de arena para ayudar a la comunidad. Entre otras cosas, si alguien nos pide que ayudemos con una traducción, intentamos ayudar, pero es importante observar ciertas normas:

  • Es posible que quien te traduzca los textos no gane nada y además use parte de su tiempo libre, se paciente si alguien tarda más en hacerlo, ten en cuenta que está usando su tiempo libre.
  • Observa el dicho “De bien nacidos es ser agradecidos”, Ya que te están ayudando a tener unas buenas traducciones, que te parece poner en la página de Acerca de/Créditos el nombre y un enlace de quien tradujo ese idioma? incluso lo puedes incluir en el archivo de recursos, dos keys TranslatorLink, TranslatorName, así la persona solo tiene que poner su nombre y un enlace a twitter o a su blog. Todos ganamos. Tu tienes tu traducción y yo publicito mi blog un poco.
  • Guarda el contacto de las personas que te han ayudado, en un futuro, para una actualización o una nueva app, puedes contar con ellos, también puedes darles las gracias si observar un aumento de las descargas después de la traducción. Ya que esto se hace de forma altruista, siempre mola que has tenido un impacto. Y da muchos ánimos.
  • Recuerda que todos somos humanos y nos podemos equivocar. Si ocurre una equivocación en una traducción, no montes en cólera, habla con quien hizo la traducción y comenta el error, será sencillo de corregir y no tendrá mayores consecuencias.
  • Si te haces rico, asquerosamente rico, acuérdate de MVPs traductores sin fronteras jejeje.

Y listo! hasta aquí con el tema de Multilingual App Toolkit de hoy, espero que os haya gustado el artículo, sirva para que más gente se decida a localizar sus aplicaciones y salir del mercado local que, como sabemos, en España es casi inexistente. Aquí tenéis el ejemplo que he usado y que os puede ayudar a empezar a usar MAT.

Un saludo y Happy Coding!

 

3 comentarios sobre “[Windows Phone 8] Multilingual App Toolkit”

Deja un comentario

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