Localizar nuestra aplicación en Android


Buenas, esta semana nos han sugerido que tratemos un tema muy interesante pero que puede pasar desapercibido por lo simple que puede llegar a ser finalmente.


Cuando estamos haciendo una aplicación es algo de lo que no nos preocupamos hasta que la tenemos finalizada: localizar la aplicación o dicho de otra forma, traducirla a diferentes idiomas.
Al crear una aplicación debemos tener claro si la vamos a traducir o no, ya que dependiendo de su tamaño puede que si no lo contemplamos desde un principio se vuelva un trabajo extra.

Nuestra aplicación siempre va a tener un idioma por defecto, los textos de ese idioma se van a buscar al archivo strings.xml que hay en la carpeta values.

En el archivo strings.xml lo que debemos hacer durante el proceso de creación de nuestra aplicación es ir incluyendo los textos que utilizamos. Por ejemplo si utilizamos el texto "buscar" en un botón o varios, creamos el siguiente item en el archivo strings.xml:

<string name="Buscar">Buscar items</string>

Para asignar este texto al botón basta con aplicarlo así:

<Button android:text="@string/Buscar"/>

Aunque no se traduzca la aplicación esta práctica es muy recomendable para facilitarnos la tarea de cambiar cualquier texto posteriormente.

Una vez que ya tenemos los textos de nuestra aplicación, debemos comenzar a traducirla. Para ello simplemente debemos crear al mismo nivel que la carpeta values, otra con el nombre values-abreviatura_idioma. Por ejemplo, si queremos traducir al alemán se llamará values-de, al francés values-fr o al inglés values-en.

Una vez hemos creada la carpeta correspondiente, copiamos el archivo strings.xml, y lo pegamos en la nueva carpeta, y ya podemos traducir los textos.

Si queremos ir viendo el resultado en nuestro dispositivo cambiamos el idioma en: Ajustes -> Idioma y teclado.

¿Que pasa si necesitáis incluir una imagen que se debe ver de diferentes formas según el idioma? Imaginaros que tenéis una imagen con un texto. Este texto por ser una imagen no lo vais a poder incluir en el archivo de strings.xml. Pero no tiene mayor problema, por que lo que hemos hecho con la carpeta values se puede hacer también con la carpeta drawable.

Generáis la imagen por defecto y la incluis en la carpeta drawable y creáis otra carpeta drawable-en por ejemplo, si vuestra aplicación también está en inglés. En esta carpeta pegáis la imagen para la versión inglesa, con el mismo nombre que tiene en drawable y listo.

Android revisará siempre que idioma tiene el usuario y si hay algo especial para este usuario lo aplicará antes que el valor por defecto. No hace falta que incluyáis el resto de imágenes en la carpeta drawable-en, por que lo que no exista aquí se coge de la carpeta drawable que es la que hay por defecto.

Un último tema por comentar es el de las regiones. No se habla el mismo francés en Francia que en Canada, o el mismo inglés en Reino Unido que en Estados Unidos. Por eso, si queremos añadir connotaciones en alguna palabra para alguna región en concreto podemos hacerlo.

Por ejemplo, si queremos hacer una traducción al inglés crearemos la carpeta values-en siguiendo el proceso anterior, pero si queremos añadir una palabra o frase diferente para el inglés de Reino Unido debemos hacerlo creando la carpeta values-en-GB. Añadiendo la región después de la abreviatura del idioma estaría listo.

Si lo que queremos es modificar solo unas pocas palabras y no el conjunto entero de palabras podemos hacerlo. Dejamos la traducción genérica del inglés en la carpeta values-en y las palabras que sean específicas del inglés británico las incluimos en el archivo que está en la carpeta values-en-GB. Android simplemente irá juntando todo según los parámetros de cada usuario.

Comments are closed.