Soporte multilenguaje en Android Studio

Android se ejecutará en muchos dispositivos en muchas regiones. Para llegar a la mayoría de los usuarios, su aplicación debe manejar texto, archivos de audio, números, moneda y gráficos de manera apropiada a los locales donde se utilizará su aplicación.

 

En realidad al escribir una app ya se debe tener un conocimiento práctico de Java y estar familiarizado con la carga de recursos de Android, la declaración de elementos de la interfaz de usuario en XML, consideraciones de desarrollo como el ciclo de vida de la actividad y los principios generales de internacionalización y localización.

Es una buena práctica usar el marco de recursos de Android para separar los aspectos localizados de su aplicación tanto como sea posible de la funcionalidad básica de Java:

  • Puede poner la mayor parte o la totalidad del contenido de la interfaz de usuario de su aplicación en archivos de recursos, tal como se describe en este documento y en Proporcionar recursos .
  • El comportamiento de la interfaz de usuario, por otra parte, es impulsado por su código Java. Por ejemplo, si los usuarios introducen datos que deben formatearse o clasificarse de forma diferente dependiendo de la configuración regional, utilizarían Java para manejar los datos mediante programación. Este documento no cubre cómo localizar su código Java

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 creo su proyecto con herramientas del Android SDK (lea 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.

Agregar 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"?>

    <string name="title">My Application
    <string name="hello_world">Hello World!

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

<?xml version="1.0" encoding="utf-8"?>

    <string name="title">Mi Aplicación
    <string name="hello_world">Hola Mundo!

Nota: Puede 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

Puede hacer referencia a sus recursos de string en el código fuente y en otros archivos XML usando el nombre del recurso definido por el atributo namedel elemento .

En su código fuente, puede hacer referencia a un recurso de string con la sintaxis R.string.. Existen diferentes métodos disponibles que aceptan un recurso de string de esta manera.

Por ejemplo:

// Get a string resource from your app's Resources 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/ 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" />
Paso 1:

Crear un nuevo proyecto Hello World.

Paso 2:
Abrir el archivo main_activity.xml y personalice el texto como desee.

Utilice la pestaña Diseño y cree una nueva traducción haciendo clic en el botón globo.

Paso 3:

Ahora Android Studio genera un nuevo archivo xml en esta ruta de acceso: res / values / strings.

Resultados.

Por qué los recursos predeterminados son importantes

Siempre que la aplicación se ejecute en una configuración regional para la que no haya proporcionado texto específico de la configuración regional, Android cargará las cadenas res/values/strings.xml de res/values/strings.xml . Si este archivo predeterminado está ausente o si falta una cadena que su aplicación necesita, su aplicación no se ejecutará y mostrará un error. El ejemplo siguiente ilustra lo que puede suceder cuando el archivo de texto predeterminado está incompleto.

Ejemplo:

El código Java de una aplicación se refiere a sólo dos cadenas, text_a y text_b . Esta aplicación incluye un archivo de recursos localizados ( res/values-en/strings.xml ) que define text_a y text_b en inglés. Esta aplicación también incluye un archivo de recursos predeterminado ( res/values/strings.xml ) que incluye una definición para text_a , pero no para text_b :

Cuando esta aplicación se inicia en un dispositivo con la configuración regional en inglés, la aplicación puede ejecutarse sin ningún problema, porque res/values-en/strings.xml contiene ambas cadenas de texto res/values-en/strings.xml .
Sin embargo, el usuario verá un mensaje de error y un botón de cierre de la fuerza cuando esta aplicación se inicia en un dispositivo establecido en un idioma que no sea el inglés. La aplicación no se cargará.
Para evitar esta situación, asegúrese de que existe un archivo res/values/strings.xml y que define cada cadena res/values/strings.xml . La situación se aplica a todos los tipos de recursos, no sólo a las cadenas: Debe crear un conjunto de archivos de recursos predeterminados que contengan todos los recursos que su aplicación requiere: diseños, dibujos, animaciones, etc. Recursos .

 

 

Android de Como ENCUENTRA el recurso de coincidencia Óptima

Cuando  solicita  un recurso para el cual sea proporciona Alternativas, Android selecciona qué recurso alternativo ,como utilizar en Tiempo de ejecucion, según la configuración del dispositivo real. Para demostrar como Android selecciona un recurso alternativo, suponga que cadauino de los siguientes elementos de diseño contienen versiones diferentes de las mismas imágenes:

dibujable /
dibujable-es /
dibujable-fr-RCA /
dibujable-en-puerto /
dibujable-en-NoTouch-12key /
dibujable-puerto-LDPI /
dibujable-puerto-NoTouch-12key /

Y suponga que la configuracion del dispositivo es la siguiente:

Configuracion regional = en-GB
Orientación de la Pantalla = port
densidad de píxeles de la Pantalla = hdpi
tipo de pantalla táctil = notouch
director Método de entrada de texto =12key

Al comparar la configuracion del Dispositivo con los Recursos Alternativos Disponibles, Android Selecciona Elementos de Diseño de drawable-en-port.

Para Decidir Qué Recursos Como utilizar, El Sistema se basa en la siguiente lógica:

Figura 2: Diagrama de Flujo de la forma en la cual sea ENCUENTRA Android el recurso de coincidencia Óptima.

  1. Eliminar os Archivos de recursos que se contradicen con la configuración del Dispositivo.El Directorio drawable-fr-rCA/se elimina porque se contradice con la configuración regional en-GB.
    dibujable /
    dibujable-es /
    dibujable-fr-RCA /
    dibujable-en-puerto /
    dibujable-en-NoTouch-12key /
    dibujable-puerto-LDPI /
    dibujable-puerto-NoTouch-12key /
    

    Excepción: La densidad de píxeles de la Pantalla es el unico calificador Que No se Elimina DEBIDO A una contradicción. AUNQUE la densidad de la Pantalla del Dispositivo es IPAP, drawable-port-ldpi/no se Elimina Porque TODAS LAS densidades de Pantalla se consideran Como una coincidencia En Este punto.

  2. Elegir el (Próximo) calificador de alcalde precedencia de la Lista ( tabla 2 ). (Comenzar con MCC y continuar en forma descendente).
  3. ¿Alguno de los Directorios de recursos INCLUYE Este calificador?
    • La Respuesta Si es que no, volver al paso 2 y examinar · el siguiente calificador. (In the example, La Respuesta es «no» Hasta Que se Alcanza el calificador de idioma).
    • Si La Respuesta es sí, continuar con el paso 4.
  4. ELIMINAR los Directorios de recursos Que No INCLUYEN Este calificador. En the example, El Sistema Elimina Todos Los Que No Directorios INCLUYEN UN calificador de idioma:
dibujable /
dibujable-es /
dibujable-en-puerto /
dibujable-en-NoTouch-12key /
dibujable-puerto-LDPI / 
dibujable-puerto-NoTouch-12key /

Excepción: Si el calificador en cuestión f es la densidad de píxeles de la Pantalla, Android slecciona la opción que más coincida con la densidad de la Pantalla del Dispositivo. En general, Aandroid reduce  su preferecica a  una imagen original, en la directiva más grande antes que ampliar una imagen mas pequeña que las originales.

  1. Volver y repetir los Pasos 2, 3 y 4 Hasta Que Quede solitario Directorio de la ONU. En el ejemplo, la Orientación de la Pantalla Es El Próximo calificador para el cual sea existen coincidencias. Por lo del tanto, se eliminan los Recursos Que No se especifican Una Orientación de Pantalla:
    dibujable-es /
    dibujable-en-puerto /
    dibujable-en-NoTouch-12key /
    

    El Directorio Que Queda es drawable-en-port.

Si bien este procedimiento se ejecuta párrafo cada recurso: solicitado, el  Sistema Optimiza algunos adj: Aún más: aspectos. Un example of this Optimización Es Que Una Vez Que se conoce la configuration del Dispositivo, El Sistema podria ELIMINAR los Recursos Alternativos Que Nunca coinciden. EJEMPLO Por, si el idioma de configuration es inglés ( «en»), los Directorios de recursos Que Tienen ONU calificador de idioma establecido en Otro idioma ¿Que hay mar ingles Nunca de INCLUYEN en el conjunto de recursos comprobados (sin embargo, la ONU Directorio de Recursos pecado el calificador de idioma sí se includes).

Cuando Se seleccionan Recursos SEGÚN los calificadores del Tamaño de la Pantalla, El Sistema utilizará los Recursos Diseñados Para Una Pantalla Más Pequeña Que la Pantalla SI real sin EXISTEN Recursos Que coincidan mejor (por Ejemplo, Una Pantalla de Tamaño Grande utilizará Recursos De Una Pantalla de Tamaño normal de Si es Necesario). Sin embargo, si Los Únicos Recursos Disponibles Presentan ONU Tamaño superiores al de la Pantalla real, El Sistema sin los Usara y tu application fallará si ningún Otro recurso que coincidiera con la configuration del Dispositivo (POR EJEMPLO, SI Todos Los Recursos de Diseño estan etiquetados con el calificador xlarge, Pero el Dispositivo es Una Pantalla de Tamaño normal).

Nota: La precedencia del calificador (en la tabla 2 ) es mas Importante Que la Cantidad de calificadores que coinciden exactamente con el Dispositivo. Por Ejemplo, en el paso 4 mencionado anteriormente, la última Opción de la Lista INCLUYE tres calificadores que coinciden exactamente con el Dispositivo (orientation, tipo de pantalla táctil y Método de entrada), MIENTRAS Que drawable-enTiene Un solitario PARÁMETRO Que coinciden (idioma). Sin embargo, el idioma Tiene alcalde precedencia Que ESTOS Otros calificadores, por lo del tanto, drawable-port-notouch-12keyse Elimina.

Deja una respuesta