Como añadir varios idiomas en una app

Si queremos que nuestra app pueda llegar a todo el mundo un paso fundamental es añadir las correspondientes traducciones de los textos de la app a cualquier idioma, para que cualquier persona pueda entender la app sin problema alguno.

Para ello Android nos pide que generemos un archivo para cada idioma diferente que queramos añadir. Una de las buenas prácticas con los textos o variables tipo ‘String’ es almacenar el contenido en un archivo xml en lugar de cargar el texto directamente desde el código.

-Tal que :

esto? Malo malo.

 

En este post crearemos una app de ejemplo (“-si es que podemos llamarla app…”) con un funcionamiento e interfaz muy sencillos, creamos un elemento TextView para mostrar un texto, y más abajo un Button que nos permitirá ir a los ajustes de idioma rápidamente para cambiar el idioma del dispositivo, para luego volver a nuestra app y ver los cambios que se han producido.

 

 

Trabajando con el archivo Strings

Empezando con Android Studio a partir de una plantilla “Empty Activity” abrimos el archivo activity_main.xml (layout del activity principal) situado dentro de la carpeta res > layout. Borramos su contenido y pegamos el siguiente :

 

Dando como resultado algo así :

Como añadir diferentes idiomas en tu app android

 

Si nos fijamos en la líneas 16 y 28 vemos que la referencia al texto apunta al archivo @string/[identificador String], esto actualmente nos está generando un error, debido a que no existe ningún elemento con ese nombre. Para corregirlo vamos a editar el archivo strings.xml situado en el directorio res > values. Modificamos su contenido para dejarlo así :

 

Con esto solucionamos el error de antes y si ejecutamos la app veremos que aparecen estos textos independientemente del idioma del dispositivo.

 

 

Como añadir más idiomas?

Con los pasos realizados anteriormente, hemos añadido unos valores de texto identificados con un nombre en el archivo strings.xml dentro del directorio values. Por decirlo de alguna manera esos serán los textos que se aplicarán cuando el dispositivo este en un idioma que la app no soporta.

Para dar soporte a otro idiomas tenemos que crear un nuevo directorio dentro de res, con el nombre “values-[código ISO 639-1del idioma]“. Ejemplos:

  • values-en (para el Inglés)
  • values-fr (para el francés)
  • values-es (para el castellano)

 

Podéis consultar todos los códigos ISO 639-1 de cada idioma en assemblysys.com

 

Para nuestro ejemplo vamos a crear los recursos de texto en castellano (valor por defecto), inglés y francés:

estructura-proyecto-android-studio-values1 – Creamos los directorios correspondientes a los idiomas que queramos implementar.

2 – Dentro de cada carpeta creada, generamos un archivo xml con nombre strings.xml. Para hacerlo más rápido podemos copiar y pegar el archivo ya existente en la carpeta values.

3 – Ahora toca editar cada uno de esos archivos y traducir los textos a su correspondiente idioma.

 

 

 

Quedando así :

 

  • res / values / strings.xml

 

  • res / values-en / strings.xml

 

  • res / values-fr / strings.xml

 

 

Hasta aquí ya tenemos todos los recursos de idiomas creados, ahora vamos a editar nuestro MainActivity.java para darle función al botón. Para ello vamos a crear un intent que nos lleve a la página de “Preferencias de Idioma” de los ajustes de Android. Este Intent lo lanzaremos al pulsar el  botón. Al cambiar de idioma y volver a la app veremos que nuestros textos se han actualizado en función del idioma que hayamos escogido. Si hemos elegido un idioma el cual no soporta la app, los textos se mostrarán en Castellano, ya que ese es el idioma en el que hemos escrito en el archivo por defecto en values > strings.xml

 

 

Como dicen, un vídeo vale más que mil palabras.

 

Mario Camí Author

Desarrollador de aplicaciones Android. Amante de todo lo Open Source, de los videojuegos y nuevas tecnologías. En mi tiempo libre comparto todo lo aprendido y lo que aprendo en el desarrollo de Android a modo de artículo en el blog. La información nos hará libres!