Localizando nuestras aplicaciones universales


Uno de los objetivos principales a la hora de desarrollar aplicaciones es llegar al mayor número de gente posible, lo cual puede implicar un mayor impacto y número de descargas. La Windows Store nos permite mostrar nuestra aplicación en multitud de países, y no en todos se habla castellano, por lo que dejar un único idioma como el predeterminado puede resultar contraproducente y perder así un amplio número de potenciales usuarios.

Para solventar esto, uno de los recursos indispensables es localizar nuestra aplicación, o lo que es lo mismo, traducir los diferentes textos que aparecen en nuestra aplicación para que gente de diferentes partes del mundo puedan leerla, y adaptarla para que esta localización sea posible.

La localización de una aplicación se basa en el uso de archivos de recursos, unos archivos con extensión .RESW, los cuales se basan en un sistema de clave-valor organizados en carpetas dependiendo del idioma al cual hacen referencia. Primeramente se debe crear una carpeta llamada Localization, la cual incluirá una carpeta por cada idioma que queramos soportar, ya sea inglés (en), español (es) o en cualquier otro de los aquí listados. En caso de querer ser aún más precisos, renombraríamos las carpetas como es-ES para hacer referencia al español de España, en-US para inglés estadounidense o su equivalente en cualquier otro idioma.

Finalmente, dentro de cada una de estas carpetas crearemos un archivo Resources.resw en el cual se encontrarán los pares clave-valor que queremos localizar dentro de nuestra aplicación. La estructura quedaría similar a la siguiente:

 

 

Una vez tenemos los ficheros creados vamos a adaptar nuestra aplicación, una Universal App vacía con los archivos de localización en el proyecto shared, para que pueda ser localizada y muestre diferentes textos dependiendo de la región en la que se encuentre.

Para ello creamos un TextBlock en el centro de la pantalla y le asignamos un x:Uid concreto, el cual referenciará a este elemento para su posterior localización:

 

En nuestro ejemplo, hemos referenciado el texto con el x:Uid “localizedText”, el cual formará parte de nuestra clave en el fichero de recursos. Las claves se crean indicando el x:Uid seguido de un “.” y la propiedad que se quiere localizar del elemento en cuestión. En nuestro caso, así quedarían nuestros ficheros de recursos para localizar la aplicación al castellano y al inglés:

 

Por otro lado, si en vez de localizar los textos de nuestra aplicación a través del XAML, sino a través de código, también tenemos una alternativa. Para ello debemos instanciar el ResourceLoader de la vista en la que nos encontramos y asignar el texto mediante el método GetString() del cual disponemos de esta instanciación. Además cabe añadir que no debemos indicar la propiedad a modificar de la variable en el fichero de recursos.

Con esto, nuestra aplicación ya variaría su texto dependiendo de la región en la que se encuentre. ¿Pero qué pasa cuando un usuario de otro país que nosotros no hemos localizado, como Francia, abre nuestra aplicación? ¿En qué idioma se mostraría? Pues en el idioma por defecto establecido dentro del fichero “Package.appxmanifest”, en el apartado de “Lenguaje por defecto”

Con estos sencillos pasos ya conseguiríamos que nuestra aplicación sea legible en multitud de países de una manera sencilla, pero la localización nos permite adaptar muchas más cosas, como por ejemplo la bandera representativa del idioma en el cual se muestra la aplicación. Localizar puede parecer algo casi trivial, pero puede ser muy importante, ya que lo que en nuestro país de origen puede ser algo normal, puede resultar ofensivo en otros.

Para localizar una imagen se debe llevar a cabo un proceso similar al anterior, realizando una organización por carpetas dependiendo la cultura que queramos representar, tal que así:

Una vez creada la estructura y añadidas las diferentes imágenes, las cuales se deben llamar igual y tener la misma extensión, procederemos a establecerlas como fuente de nuestra imagen en el proyecto:

En la fuente de la imagen debemos poner “ms-appx:///” mas la ruta de la imagen, pero asegurándonos de no indicar el subdirectorio del idioma/cultura, ya que es algo que desconocemos y variará.

Gracias a sencillos pasos tendremos una aplicación que varía dependiendo de la región en la cual se ejecuta.

La localización es uno de los puntos principales que siempre debemos tener en cuenta, y llevarla a cabo durante el desarrollo. Esto se debe a que una vez finalizada supone invertir una cantidad de tiempo mayor en adaptar toda una aplicación ya creada para que pueda emplear la localización. Por otro lado, si lo hacemos al final aumentan mucho las posibilidades de cometer pequeños errores y dejar partes sin traducir completamente.

Nota: a la hora de depurar es posible que la aplicación no te muestre de manera correcta la cultura correspondiente, mostrando el texto en castellano a pesar de estar el equipo en inglés. Esto se debe a que a pesar de que el idioma de sistema operativo esté en inglés, el idioma preferido o predeterminado está establecido como castellano o cualquier otro. Para solventar esto, debéis seleccionar la ventana de idioma situada en la barra de tareas bajo a la derecha, clickar sobre el idioma, entrar en las preferencias y situar el primero en la lista el idioma que queremos que nos muestre.

Para acabar

Hemos comprobado que siguiendo una serie de sencillos pasos podemos mejorar nuestra aplicación y permitir su uso en multitud de países. Además nos hace reflexionar respecto a que nuestras aplicaciones no deben centrarse solo en nuestro país, sino que en otros lugares también pueden resultar de utilidad, ampliando así su posible cuota de mercado.

Un saludo,

Josevi Agulló (@josevi_7)

Comments (3)

  1. Sergio Morchón Poveda says:

    Muchas gracias por el post!

    ¿Se puede localizar cualquier tipo de archivo? Por ejemplo de audio (al igual que las imágenes).

    Por otro lado, cómo encajamos esto de forma sencilla con la herramienta "Multilingual kit"? (ver dev.windows.com/…/multilingual-app-toolkit)

    Un saludo :)

  2. Josevi Agullo says:

    Hola Sergio!

    Sí, en un principio puedes localizar cualquier archivo, por ejemplo un audio o un video sería seguir el mismo proceso que el seguido para localizar una imagen.

    Por otro lado, en el ejemplo se habla de localizar sin ninguna herramienta adicional, pero puedes emplear este toolkit para localizar de manera sencilla todos los textos, ya que tienes la opción de traducción automática en algunos idiomas.

    Un saludo ;)

  3. jesus says:

    hola buenas tardes , te quería hacer una consulta sobre las universal apps  , solamente pueden ser diseñadas con xaml o también se puede con html/css,  la ultima consulta es: crees que es mejor desarrollar una aplicación para celular haciendo una aplicación universal o desarrollando directamente una aplicación para celular, desde ya muchas gracias saludos

Skip to main content