Bienvenidos sean a este post, hoy hablaremos sobre una de las particularidades mas importantes en Android como son aprovechar los recursos de localizacion o locale.
Hasta hoy vinimos trabajando con los textos para nuestros juegos de la forma mas tradicional como es asignarlo a traves de literales pero en realidad deberiamos trabajarlo a traves de los recursos que tenemos disponibles en res, si observan dentro de esta carpeta existe otra llamada values y en ella existe un archivo llamado strings.xml tal como se ve en la siguiente imagen

La buena practica en Android es que todos los textos deberian estar ahi y en el post de hoy veremos en que nos facilita y que beneficio nos trae con la localizacion, sin mas preambulos vamos a comenzar creando un nuevo proyecto con los siguientes datos:
- Dispositivos: Phone and Tablet
- Actividad: Empty Activity
- Nombre: Holas
- Nombre de paquete: org.example.holas
- API Minimo: API 14 (Android 4.0)
Una vez generado nuestro proyecto iremos a ver el archivo que mencionamos anteriormente, si lo abrimos veremos el siguiente codigo:
strings.xml
<resources>
<string name="app_name">Holas</string>
</resources>
En este caso tenemos un solo campo llamado app_name el cual contiene el titulo de la aplicacion, para nuestro siguiente paso sera agregar el siguiente campo entre los tags resources:
<string name="texto">Este es un texto de ejemplo.</string>
La siguiente modificacion sera ir al layout de nuestra aplicacion donde buscaremos al elemento TextView y modificaremos esta linea:
android:text="Hello World!"
De la siguiente forma:
android:text="@string/texto"
Lo que hicimos fue cambiar el literal «Hello World» por una linea que indica por medio de @string que vaya al archivo strings.xml y lo que sigue de la barra indica el nombre que le asignamos al texto que agregamos, si lo probamos sucedera esto

Como pueden observar todo texto que pongamos en ese campo sera mostrado en el TextView, vamos a modificar el campo del titulo de la siguiente forma en strings.xml:
<string name="app_name">Holas, es una app Genial!!!</string>
Si volvemos a probar nuestra aplicacion obtendremos la siguiente modificacion

Esto nos permitiria tener un mejor control de los textos que se muestran en pantalla y si bien es algo muy interesante no es lo mas interesante sino lo que veremos a continuacion, en este caso vamos a hacer click con el boton derecho sobre la carpeta values y seleccionaremos New->Values Resource File y nos aparecera el siguiente cuadro

En este caso completen el valor de File name con strings, no se preocupen por el nombre porque debe ser ese, el resto debe quedar como se ve, el proximos paso sera seleccionar Locale y presionar el boton con el simbolo >> lo cual hara aparecer el siguiente cuadro

En este caso van a ir al campo Language y seleccionen en:English y en Specific Region Only les recomiendo seleccionar Any Region pero si lo desean pueden elegir la region que quieren ser mas especificos, por ejemplo United States, England, Australia, etc., una vez seleccionado presionen Ok para proceder a crear el nuevo recurso, veamos como quedo nuestro nuevo recurso

Ahora tendremos dos archivos strings.xml pero en el caso del nuevo recurso tiene entre parentesis la palabra en, esto le indica al lenguaje que esto es para cuando el dispositivo este en ingles y no en español como es nuestro caso, esto nos genero un archivo vacio pero lo llenaremos de la siguiente manera:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Holas, it\'s a great app!!!</string>
<string name="texto">This is a sample text.</string>
</resources>
Como pueden ver, lo que hacemos es tener el mismo texto pero en ingles pero un detalle en el caso del titulo tuvimos que agregar una barra invertida al apostrofo porque de lo contrario devolvera un error, este caracter se lo denomina de escape y es para indicarle al lenguaje que es parte del texto y no delimita nada, ahora lo mismo que hicimos antes debemos hacerlo con el idioma frances y el aleman, una vez hecho nos debera quedar de la siguiente manera

Nuestro siguiente paso sera al igual que antes agregar un nuevo codigo para cada recurso que generamos, vamos a modificar el archivo para el idioma aleman con el siguiente texto:
de/strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Holas, es ist eine großartige App!!!</string>
<string name="texto">Dies ist ein Beispieltext.</string>
</resources>
Es exactamente el mismo texto que el original pero traducido al aleman, nuestro siguiente paso sera hacer lo mismo pero con el recurso en frances, para ello usaremos el siguiente codigo:
fr/strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">Holas, c\'est une super application!!!</string>
<string name="texto">Ceci est un exemple de texte.</string>
</resources>
Nota: Para las traducciones de texto utilice el Google Translator, se pueden usar otras herramientas pero esta es bastante practica y gratuita.
Hasta aca pueden pensar pero cual es la gracia de tener que traducir textos en distintos idiomas? Se que parece mucho trabajo pero el resultado es algo interesante porque en lugar de tener una aplicacion para cada region o que sea obligatoriamente en ingles para que sea universal tenemos la posibilidad de que nuestra aplicacion se adapte a la region donde se abre y es simplemente con unos archivos de texto, para que se entienda mejor el concepto veamos el siguiente video con la aplicacion compilada
En el video podemos ver la practicidad de tener estos archivos y de manejar los textos de nuestra aplicacion de esta forma, puede resultar mas complejo pero no podemos negar que nos brinda una gran practicidad porque no existe limite para el alcance de nuestras apps.
Nota: El utilizar strings.xml para los textos es la practica recomendada pero no es obligatorio, eso deben evaluarlo de acuerdo a las necesidades del programa, en la vida real es mejor usarlo como se recomienda, mientras se estudia no es necesario.
En resumen, hoy hemos visto que es la localizacion (locale), como se aplica a nuestro codigo, como esto afecta a nuestra aplicacion, como se pueden agregar mas recursos, como se incluye el nuevo texto, como podemos compartir varios idiomas, vimos como cambia cuando modificamos el locale o idioma local del equipo, espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.
Tengo un Patreon donde podes acceder de manera exclusiva a material para este blog antes de ser publicado, sigue los pasos del link para saber como.

Tambien podes donar
Es para mantenimiento del sitio, gracias!
$1.00