X

Soporte de Diferentes Idiomas

Es siempre una buena práctica extraer los strings que aparecen en la UI de tu app y mantenerlos en un archivo externo, string.xml. Android facilita esta tarea con un directorio de recursos para cada proyecto Android. De este modo puedes dar soporte de diferentes idiomas.

Si has creado un proyecto utilizando las Herramientas del SDK Android (visita Crear un Proyecto Android para más información), las herramientas crean un directorio res/ en el nivel superior del proyecto. Dentro de este directorio res/ se encuentran diferentes tipos de recursos en varios subdirectorios. El que nos interesa para esta lección es el res/values/strings.xml, el cual contendrá los valores strings de tu app (las cadenas de texto).

Figura 1. Editor de Traducciones de Android Studio.

Crear Directorios y Archivos de String

Para dar soporte a más idiomas, crea directorios adicionales de values dentro de res/ los cuales incluyen un guión y el código del idioma ISO al final del nombre del directorio. Por ejemplo, values-es/ es el directorio que contiene recursos para el idioma asociado al código “es” (español de España). Android carga los recursos apropiados en tiempo de ejecución en función de los ajustes del dispositivo. Para más información, visita Proporcionar Recursos Alternativos.

Una vez que decidas a que lenguajes vas a dar soporte, crea los diferentes subdirectorios y los archivos de recursos strings. Por ejemplo:

MyProject/
    res/
       values/
           strings.xml
       values-es/
           strings.xml
       values-fr/
           strings.xml

Añade los valores apropiados para cada recurso string dentro de cada uno de dichos archivos strings.xml.

Por ejemplo, aquí tienes diferentes archivos de recursos string para diferentes idiomas.

Inglés, /values/strings.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">My Application</string>
    <string name="hello_world">Hello World!</string>
</resources>

Español de España, /values-es/strings.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">Mi Aplicación</string>
    <string name="hello_world">Hola Mundo!</string>
</resources>

French, /values-fr/strings.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="title">Mon Application</string>
    <string name="hello_world">Bonjour le monde !</string>
</resources>

Nota: Puedes utilizar un calificador local (o cualquier calificador de configuración) sobre cualquier tipo de recurso, por ejemplo, así puedes proporcionar versiones diferentes de imágenes en función del idioma. Para más información, visita Ubicación.

Uso de Recursos String

Puedes hacer referencia a tus recursos string en tu código fuente y otros archivos XML utilizando el nombre del recurso definido por el atributo name del <string>.

En tu código fuente se traduce del siguiente modo: R.string.tu_string. Hay una amplia variedad de métodos que aceptan un recurso de string de este modo.

Por ejemplo:

// Almacenar el recurso String en una variable String.
String hello = getResources().getString(R.string.hello_world);

// Utilizar directamente el recurso String en un método de un TextView
TextView textView = new TextView(this);
textView.setText(R.string.hello_world);

En otros archivos XML, puedes hacer referencia a un recurso String de la siguiente forma, @string/tu_string siempre que el atributo XML acepte un valor string.

Por ejemplo:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hello_world" />

Puedes ver más información sobre Soporte de Diferentes Idiomas en la página oficial de Google en inglés pulsando aquí.

Los comentarios de Disqus están cargando....