jueves, 21 de julio de 2011

Una aplicación multi idioma – Android application multi language

Como vimos en la entrada anterior, el fichero \src\values\strings.xml almacena (o debe almacenar) el contenido a mostrar de cada uno de los textos que mostramos en nuestra aplicación. Para modificar su contenido sólo tenemos que rectificar la entrada correspondiente en el fichero, guardarlo y volver a ejecutar nuestra aplicación.

El problema viene si deseamos que se muestren en el idioma que tenga configurado en su dispositivo cada usuario. Esto puede complicar en gran manera nuestra aplicación, si no fuera porque Android nos facilita esta tarea en gran manera.

Para empezar vamos a modificar el contenido de la entrada ‘hello’ de nuestro fichero strings.xml y le ponemos ‘Hello english Androide’, salvamos nuestro fichero y ejecutamos la aplicación. Observamos cómo el texto mostrado coincide con el que hemos puesto en nuestro fichero.
 
Ahora vamos a duplicar nuestro fichero strings, para ello pulsamos con el botón derecho sobre la carpeta ‘\src\values’ y seleccionamos ‘Copy’ (Ctrl-C) . A continuación pulsamos con el botón derecho sobre la carpeta ‘\src’ y seleccionamos ‘Paste’ (Ctrl-V), nos aparecerá una ventana para que indiquemos el nombre de la carpeta que queremos copiar, proponiendonos ‘Copy of values’ puesto que no pueden haber dos carpetas con el mismo nombre.
Indicamos ‘values-es’ y pulsamos ‘Ok’. La estructura de nuestro proyecto se amplía y aparece la nueva carpeta que contiene una copia exacta de nuestro fichero strings.xml
 
Por último vamos a abrir el fichero strings.xml de la carpeta values-es y modificamos el contenido de la entrada ‘hello’ para ponerle ‘Hola Androide hispano’. Guardamos el fichero y volvemos a ejecutar nuestra aplicación.



Aparentemente no ha cambiado nada, sin embargo si vamos a la configuración de nuestro dispositivo (Settings),  seleccionamos la opción ‘Language & keyboard’, después la opción ‘Select language’ 

Y por último el idioma ‘Español’
Al volver a ejecutar la aplicación vemos cómo se muestra el texto incluido en el fichero ‘\src\values-es\strings.xml’.
 

De esta forma tan sencilla hemos conseguido que sin tocar nada del código de nuestro programa sea perfectamente comprensible para cualquier usuario del idioma ingles (carpeta values por defecto) o español (carpeta especifica values-es).

Si queremos ampliar a otros idiomas unicamente tendremos que ir duplicando la carpeta values indicando el sufijo de la lengua correspondiente y modificando los textos incluidos en el fichero strings traducidos al idioma deseado.

Como vemos, el mantener todos los textos de nuestra aplicación en el fichero strings es muy importante, no sólo por la sencillez de su mantenimiento sino porque nos abre la posibilidad de dar acceso a multiples usuarios de distintos idiomas.



Hasta la próxima.








4 comentarios:

  1. Si usted está interesado en crear aplicaciones multiidioma para Android, yo recomiendo altamente este rápido y intuitiva herramienta de localización: https://poeditor.com/

    ResponderEliminar
  2. Buenas, yo hice una app multi idioma y me surgió un problema: el default (inglés) funciona a la perfección, pero cuando cambio a español o portugués la aplicación deja de funcionar. Tengo las carpetas values-es y values-pt con sus respectivos Strings, pero no funciona.
    Gracias

    ResponderEliminar
  3. Genial!!!!!!!!!!!!!

    muchas gracias.

    ResponderEliminar