Curso de desarrollo Android. Tema 15: Strings.xml – Cómo usar los textos y traducciones
Para que nuestra aplicación pueda llegar al mayor público posible, es necesario traducirla al mayor número de idiomas posible. Generar un archivo .apk, junto con una entrada en la Play Store, por cada idioma al que queramos traducir nuestra app es algo inaceptable tanto a nivel de desarrollo como a nivel de la propia tienda de Google.
Como ya hemos explicado en los temas anteriores de este curso de desarrollo android, cuando creamos una aplicación, los textos nunca deben ir en el propio código de la aplicación, sino que estos deben estar referenciados dentro de un fichero llamado strings.xml. De esta manera, este fichero almacenará todos los textos de nuestra aplicación, pudiendo acceder a ellos para realizar cambios fácilmente sin tener que buscar una palabra concreta dentro de una aplicación con miles de líneas de código.
Al mismo tiempo, este fichero nos va a permitir gestionar fácilmente las traducciones de nuestras aplicaciones utilizando varios ficheros strings.xml, uno por cada idioma que vayamos a utilizar.
Desarrollo Android: Creando una aplicación en varios idiomas con Android Studio
Lo primero que debemos hacer es crear un proyecto nuevo para este nuevo tema de desarrollo android. No vamos a profundizar en esto ya que a estas alturas del curso debemos saber cómo crearlo. Este proyecto no tendrá nada de especial, ya que solo lo vamos a usar para ver las funciones de traducción.
Una vez tengamos nuestro proyecto creado (nosotros lo vamos a llamar «MovilZona_Multi-idioma») abriremos el fichero «Activity_main.xml» y veremos el típico programa inicial «Hola Mundo!».
En esta actividad vamos a mantener nuestro texto de «Hello World!» por defecto y vamos a añadir algún View más, por ejemplo, un botón en el centro.
Rellenando el fichero strings.xml y asignando cada View a una entrada de este fichero
Lo primero que vamos a hacer es abrir el fichero strings.xml que, por defecto, estará vacío, solo veremos el nombre de la aplicación. A continuación agregaremos una línea por cada texto que tengamos en cada View de nuestra aplicación, de la siguiente forma:
<string name=»ID_DEL_TEXTO»>TEXTO_DEL_VIEW</string>
Por ejemplo:
<string name=»button»>Button</string>
<string name=»TextView»>TextView</string>
Ahora, volvemos al archivo «Activity_main.xml» y, en el apartado de texto de cada View, haremos referencia al «String Name» que hayamos añadido en el fichero strings.xml de la siguiente forma:
Text: @string/ID_DEL_TEXTO
Por ejemplo:
button -> Text: @string/button
Repetimos lo mismo con el TextView y ya tendremos los dos Views haciendo referencia al contenido del archivo strings.xml. De esta manera, cambiando solo el texto desde el fichero strings.xml se cambiará también el texto de nuestra aplicación.
Esto nos va a permitir también distribuir una única aplicación en varios idiomas, de manera que según el idioma de Android se utilice una u otra traducción.
Cómo traducir nuestra aplicación utilizando varios ficheros string.xml
En este momento, todos los textos de nuestra aplicación se almacenan en un fichero strings.xml de manera que todo el código fuente está libre de texto, haciendo siempre referencia a dicho archivo cuando haya que cargar un texto.
Android Studio nos facilita la posibilidad de crear más archivos strings.xml enfocados principalmente a un idioma. De esta manera, cuando Android esté configurado en un idioma cargará su strings correspondiente o, de no haberlo, cargará el strings global. Podemos crear solo las traducciones que necesitemos (incluso crear solo una) ya que, por defecto, si no hay traducción específica cargará el archivo original.
Para crear una traducción debemos hacer clic con el botón derecho en el menú App > Res > Values y elegir «New Values Resource«.
Se nos abrirá una nueva ventana para crear el recurso. En esta ventana elegiremos el nombre (strings) y el tipo (locale) del menú de la izquierda y pulsaremos sobre la flecha para agregarlo al menú de la derecha.
Automáticamente veremos cómo se nos habilitan dos columnas nuevas: Language y Region. Aquí debemos elegir el idioma y la región que correspondan con el idioma al que vamos a traducir, por ejemplo, «es: Spanish» y «Any Region» de manera que esa traducción será «al español» para todas las regiones de habla hispana.
Pulsamos sobre «Ok» y listo, se creará un nuevo strings con el icono de la bandera de España, indicando que dicho fichero almacena la traducción al español.
Abrimos este fichero y lo rellenamos igual que el strings.xml que hemos visto al principio de este tema, aunque cambiando el texto original por el texto traducido.
Si queremos traducir la aplicación al inglés, por ejemplo, el proceso es el mismo tal como vemos en las siguientes imágenes:
Una vez cambiados los textos, nuestra aplicación ya estará traducida y será multi-idioma, cargando por defecto la traducción acorde al sistema de nuestro Android. Por ejemplo, si nuestro smartphone está en español cargará así:
De lo contrario, si está en inglés, nos cargará nuestra segunda traducción.
Por último, si nuestro móvil está en otro idioma, por ejemplo, en italiano, al no haber traducción el fichero que cargará por defecto será el «strings.xml» original.
Traduciendo nuestra aplicación a varios idiomas, nuestra aplicación tendrá un aspecto más profesional, será más sencilla de utilizar y comprender por todos y llegaremos a un mayor público, lo que a su vez nos permitir obtener un mayor beneficio económico de ella.