Blog para desarrolladores de Android: Preferencias de idioma por aplicación

Publicado por Neelansh Sahai, ingeniero de relaciones con desarrolladores de Android (Hon. chirrido Y LinkedIn)¿Qué sucede si tiene un grupo de usuarios que hablan bastante bien inglés, hindi y español y tienen una aplicación de noticias en sus teléfonos y prefieren leer las noticias en hindi? Para su aplicación de mensajería, prefieren el español ya que tienen algunos amigos y familiares con los que envían mensajes de texto en español. Pero para facilitar el acceso, todavía prefieren que su dispositivo esté en inglés. Ahora hay muchos casos de uso en los que los usuarios pueden querer que los idiomas de sus aplicaciones sean diferentes del idioma de su sistema. ¡Interesante!

Para empezar androide 13hemos incluido una de las características más solicitadas por los usuarios, Preferencias de idioma por aplicación. Permite a los usuarios cambiar el idioma de la aplicación desde la configuración del sistema, lo que brinda a los usuarios un mejor control sobre sus opciones de idioma para diferentes aplicaciones, independientemente del idioma del sistema..

Una pantalla de teléfono móvil que muestra las preferencias de idioma de la aplicación en la configuración del sistema de la aplicación de YouTube

Cree para sus usuarios multilingües

Este blog se centra en cómo integrar la API de preferencias de idioma por aplicación en su aplicación para brindar a los usuarios la flexibilidad de elegir diferentes idiomas para diferentes aplicaciones.

1. Los usuarios pueden cambiar la configuración de idioma desde la configuración del sistema seleccionando:

Configuración → Sistema → Idiomas y entrada → Idiomas de la aplicación → [Select the desired App] → [Select the desired Language]

NOTA: Solo las aplicaciones que hayan optado por la función especificando el archivo locale_config.xml (más información a continuación) aparecerán en la configuración del sistema.

Una pantalla móvil que muestra cómo encontrar la configuración de idioma desde la configuración del sistema seleccionando Configuración → Sistema → Idiomas y entrada → Idiomas de la aplicación → [Select the desired App] → [Select the desired Language]

2. Si su aplicación ya tiene un conmutador de idioma en la aplicación, puede integrar la API de preferencias de idioma por aplicación para aprovechar el soporte completo de la plataforma. Para los usuarios anteriores a Android 13, la configuración del sistema no estará visible, pero los desarrolladores aún pueden proporcionar una selección de idioma en la aplicación.

Una pantalla de teléfono móvil que muestra la integración de API de preferencias de idioma por aplicación para una aplicación que ya tiene un selector de idioma en la aplicación

¿Cómo integrar esta característica en su aplicación?

Hay 5 pasos que deben seguirse mientras se trabaja en la función Preferencias de idioma por aplicación, que se enumeran aquí →

1. Crear configuración_local.xml expediente

Cree un nuevo archivo en el directorio de valores/xml/ y asígnele el nombre configuración_local.xml. Este archivo debe contener una lista de todas las configuraciones regionales admitidas por la aplicación. El elemento de la lista debe ser una cadena que contenga una etiqueta local.

NOTA: Las etiquetas locales deben seguir la sintaxis BCP47, que suele ser {subetiqueta de idioma}–{subetiqueta de script}–{subetiqueta de país}. Todo lo que no sea eso será filtrado por el sistema y no será visible en la configuración del sistema.

configuración_local.xml









2. Agregue locale_config en AndroidManifest.xml

especifica esto configuración_local.xml archivos en la aplicación AndroidManifest.xml

AndroidManifest.xml




android:localeConfig=”@xml/locale_config”>

Después de los pasos 1 y 2, sus usuarios podrán averiguar y configurar su idioma preferido para su aplicación desde la configuración del sistema en dispositivos con Android 13 o posterior. En caso de que sus usuarios utilicen dispositivos con versiones anteriores a Android 13, puede proporcionar un selector de idioma en la aplicación. Opcionalmente, también puede incluir el mismo conmutador de idioma en su aplicación para dispositivos con Android 13 o posterior. Cuando su aplicación incluye un conmutador de idioma en la aplicación, es importante que las preferencias del usuario estén sincronizadas entre el sistema y la aplicación. Aquí es donde entran en juego las API de AndroidX. Siga leyendo para descubrir cómo crear un conmutador de idioma en la aplicación.

Use la última versión de la biblioteca AppCompat

def última versión compatible de la aplicación = “1.6.0-rc01”

dependencias {

Implementación de “androidx.appcompat:appcompat:$latestAppCompatVersion”
Implementación de “androidx.appcompat:appcompat-resources:$latestAppCompatVersion”

}

4. Usa las API de AndroidX

Use las API en su código para configurar y obtener la configuración regional de la aplicación.

MainActivity.kt

val appLocale: LocaleListCompat = LocaleListCompat.forLanguageTags(“xx-YY”)

// Llámalo en el hilo principal, ya que puede requerir Activity.restart()
AppCompatDelegate.setApplicationLocales(appLocale)

// Llámelo para obtener la configuración regional seleccionada y mostrarla en su aplicación
valor seleccionadoLocale = AppCompatDelegate.getApplicationLocales()[0]

NOTA: Estas API también son compatibles con versiones anteriores, por lo que incluso si la aplicación se usa en Android 12 o inferior, las API seguirán comportándose de la misma manera y no es necesario verificar las versiones del sistema operativo en su código.

5. Delegar almacenamiento a AndroidX

Permita que AndroidX administre el almacenamiento local para que la preferencia del usuario persista.

AndroidManifest.xml


android:name=”androidx.appcompat.app.AppLocalesMetadataHolderService”
Android: habilitado = “falso”
android:exportado=”falso”>
android:name=”autoStoreLocales”
android:valor=”verdadero” />


Los pasos 3, 4 y 5 anteriores demuestran los componentes mínimos necesarios para crear un conmutador de idioma en la aplicación.

Y con eso, su aplicación ahora puede admitir el cambio de configuración regional.

Otras cosas a tener en cuenta al migrar a API

Anteriormente, los desarrolladores tenían que administrar las preferencias de los usuarios ellos mismos, usando SharedPreferences, almacenando datos en un servidor u otra lógica de aplicación. Con las nuevas API, no necesita administrarlas por separado. Entonces, cuando usa estas API, AndroidX ya se encarga de la parte de almacenamiento, pero ¿qué sucede cuando la aplicación se abre por primera vez después de que un usuario actualizó su dispositivo a Android 13 o superior?

En este caso, el sistema no conocerá las preferencias del usuario en cuanto al idioma de la aplicación y, por lo tanto, asignará la aplicación al idioma predeterminado del sistema. Para evitar esto, los desarrolladores deben agregar una lógica de migración única para que sus usuarios no tengan que configurar el idioma nuevamente cuando actualicen la aplicación.

// Especifique las constantes a usar en los siguientes fragmentos de código

objeto complementario {

// Constantes para el archivo SharedPreference
const val PREFERENCE_NAME = “shared_preference”
const val PREFERENCE_MODE = Contexto.MODE_PRIVATE

// Constantes para claves SharedPreference
const val FIRST_TIME_MIGRATION = “primera_migración_vez”
const val SELECTED_LANGUAGE = “seleccionado_idioma”

// Constantes para valores SharedPreference
const val STATUS_DONE = “estado_hecho”
}

// Método de utilidad para insertar una cadena en una SharedPreference
diversión privada putString (clave: Cadena, valor: Cadena) {
val editor = getSharedPreferences(PREFERENCE_NAME, PREFERENCE_MODE).edit()
editor.putString(clave, valor)
editor.aplicar()
}

// Método de utilidad para obtener una cadena de SharedPreference
diversión privada getString(clave: String): ¿String? {
val preferencia = getSharedPreferences(PREFERENCE_NAME, PREFERENCE_MODE)
volver preferencia.getString(clave, nulo)
}

// Comprobar si la migración ya se ha realizado o no
if (getString(FIRST_TIME_MIGRATION) != STATUS_DONE) {

// Recuperar el idioma seleccionado desde donde estaba almacenado. En este caso es SharedPref

// En este caso asumimos que fue almacenada en una clave llamada SELECTED_LANGUAGE
getString(SELECTED_LANGUAGE)?.let { es →

// Configure esta configuración regional usando la biblioteca de AndroidX que administrará el almacenamiento en sí
val localeList = LocaleListCompat.forLanguageTags(en)
AppCompatDelegate.setApplicationLocales(localeList)

// Establezca el indicador de migración para asegurarse de que solo se ejecute una vez
putString(FIRST_TIME_MIGRATION, STATUS_DONE)
}
}

¿Qué flexibilidad ofrece la característica a los usuarios y desarrolladores?

Aquí hay algunas cosas que pueden resultar beneficiosas para los usuarios.

  1. Todos los dispositivos con Android 13 o posterior tendrán un lugar común para que los usuarios descubran y cambien el idioma de sus aplicaciones.
  2. Si bien la configuración del sistema está limitada a dispositivos con Android 13 o posterior, Las API de AndroidX son compatibles con versiones anteriores. Por lo tanto, no es necesario agregar comprobaciones de la versión del sistema operativo en su código al crear para usuarios multilingües.
  3. Los desarrolladores no tienen que administrar los cambios de configuración por separado ni preocuparse por recordar el idioma seleccionado por el usuario cada vez. La API maneja los cambios de configuración y almacena las preferencias de idioma por usted.
  4. Funciona con otras funciones de Android como copia de seguridad y restauración. Si un usuario cambia a un nuevo dispositivo y restaura los datos previamente respaldados, su aplicación conservará el último idioma preferido del usuario, brindando así a los usuarios una experiencia mejor y más fluida.

Resumen

Con eso, la mayoría de las características están cubiertas. Así que hagamos un resumen rápido de lo que discutimos en la lectura de hoy.

  1. Una lectura rápida sobre lo que Preferencias de idioma para aplicaciones ofrece a los usuarios y desarrolladores de aplicaciones multilingües.
  2. Lo que verán los usuarios finales en sus dispositivos.
  3. Cómo migrar su aplicación a la API de preferencias de idioma por aplicación.
  4. Algunas cosas que deben tenerse en cuenta al migrar a las API para garantizar una mejor experiencia de usuario.
  5. Finalmente, los beneficios que los usuarios finales y los desarrolladores pueden aprovechar de esta función.

Referencias

  1. Preferencias de idioma por aplicación
  2. Aplicación de muestra (Redactar)
  3. Aplicación de muestra ( Vistas )
  4. Preferencias de idioma para aplicaciones (video de YouTube)


Compruebe también

en vivo desde Droidcon, incluida la mayor actualización de Gemini en Android Studio y más lanzamientos del SDK de Android.

Acabamos de lanzar nuestro episodio de otoño de #TheAndroidShow en YouTube etcétera desarrollador.android.comy esta vez …

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *