Siempre es una buena práctica extraer strings de IU del código de tu app y conservarlas en un archivo externo. Android facilita esta tarea con un directorio de recursos en cada proyecto del sistema operativo.
Si creaste tu proyecto con herramientas del
Android SDK (lee Cómo crear un
proyecto en Android), las herramientas crean un directorio res/
en el nivel superior del
proyecto. El directorio res/
contiene subdirectorios para varios tipos
de recursos. También hay algunos archivos predeterminados, como res/values/strings.xml
, que contiene
los valores de tu string.
Crear directorios de configuración regional y archivos de strings
Para agregar compatibilidad con más idiomas, crea directorios values
adicionales dentro de
res/
que incluyan un guión y el código de idioma ISO al final del
nombre del directorio. Por ejemplo, values-es/
es el directorio que contiene recursos
simples para las configuraciones regionales con el código de idioma “es”. Android carga los recursos correspondientes
según las configuraciones regionales del dispositivo en tiempo de ejecución. Para obtener más información, consulta
Provisión de recursos alternativos.
Una vez que decidas los idiomas que admitirás, crea los subdirectorios de recursos y los archivos de recursos de strings. Por ejemplo:
MyProject/ res/ values/ strings.xml values-es/ strings.xml values-fr/ strings.xml
Agrega los valores de string para cada configuración regional en el archivo correspondiente.
En tiempo de ejecución, el sistema Android usa un conjunto correspondiente de recursos de string basado en la configuración regional actual del dispositivo del usuario.
Por ejemplo, a continuación se indican algunos archivos diferentes de recursos de strings para distintos idiomas.
Inglés (configuración regional predeterminada), /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, /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>
Francés, /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 usar un calificador de configuración regional (o cualquier calificador de configuración) en cualquier tipo de recurso, como lo harías si deseas proporcionar versiones localizadas del elemento de diseño de tu mapa de bits. Para más información, consulta Localización.
Usar los recursos de string
Puedes hacer referencia a tus recursos de string en el código fuente y en otros archivos XML
usando el nombre del recurso definido por el atributo name
del elemento <string>
.
En tu código fuente, puedes hacer referencia a un recurso de string con la sintaxis R.string.<string_name>
. Existen diferentes métodos disponibles que aceptan un recurso de string de esta
manera.
Por ejemplo:
// Get a string resource from your app'sResources
String hello =getResources()
.getString(R.string.hello_world); // Or supply a string resource to a method that requires a string TextView textView = new TextView(this); textView.setText(R.string.hello_world);
En otros archivos XML, puedes hacer referencia a un recurso de string con la sintaxis
@string/<string_name>
siempre que el atributo XML acepte un valor de string.
Por ejemplo:
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/hello_world" />