¡Te damos la bienvenida a la Vista previa para desarrolladores de Android 13! Envíanos tus comentarios y ayúdanos a hacer de Android 13 la mejor versión hasta el momento.

Preferencias de idioma por app

En muchos casos, los usuarios multilingües establecen un idioma para su sistema, como el inglés, pero desean seleccionar otros para apps específicas, como el chino, el hindi o el holandés. Con el fin de ayudar a que las apps brinden una mejor experiencia para estos usuarios, Android 13 presenta las siguientes funciones nuevas en las apps que admiten varios idiomas:

Estos cambios no afectan a las apps que no admiten varios idiomas.

Implementación de API

Para las apps que, en la actualidad, no utilizan un selector de idioma personalizado dentro de la app, no se requiere ninguna acción adicional.

En el caso de las apps que tienen un selector de idioma integrado en la app o que quieren usar uno, usa las API nuevas en lugar de la lógica personalizada de tu app a fin de controlar la configuración y obtener el idioma preferido del usuario para tu app.

Implementación con la biblioteca de compatibilidad de AndroidX

Para ofrecer retrocompatibilidad con versiones anteriores de Android, recomendamos usar la biblioteca de compatibilidad de AndroidX cuando implementes un selector de idioma integrado en la app. Usa el método setApplicationLocales(), que está disponible en Appcompat 1.6.0-alpha01 o versiones posteriores.

Por ejemplo, para configurar el idioma de preferencia de un usuario, le pides a este que seleccione una configuración regional en el selector de idioma y que, luego, establezca ese valor en el sistema:

Kotlin

val appLocale: LocaleListCompat = LocaleListCompat.forLanguageTags("xx-YY")
// Call this on the main thread as it may require Activity.restart()
AppCompatDelegate.setApplicationLocales(appLocale)

Java

LocaleListCompat appLocale = LocaleListCompat.forLanguageTags("xx-YY");
// Call this on the main thread as it may require Activity.restart()
AppCompatDelegate.setApplicationLocales(appLocale);

Implementación con las API del framework de Android

También puedes usar las API del framework de Android para implementar un selector de idioma integrado en la app con los métodos setApplicationLocales() y getApplicationLocales().

Por ejemplo, para configurar el idioma de preferencia de un usuario, le pides a este que seleccione una configuración regional en el selector de idioma y que, luego, establezca ese valor en el sistema:

// 1. Inside an activity, in-app language picker gets an input locale "xx-YY"
// 2. App calls the API to set its locale
mContext.getSystemService(LocaleManager.class
    ).setApplicationLocales(newLocaleList(Locale.forLanguageTag("xx-YY")));
// 3. The system updates the locale and restarts the app, including any configuration updates
// 4. The app is now displayed in "xx-YY" language

Para que el idioma actual de preferencia de un usuario se muestre en el selector de idioma, tu app puede recuperar el valor del sistema:

// 1. App calls the API to get the preferred locale
LocaleList currentAppLocales =
    mContext.getSystemService(LocaleManager.class).getApplicationLocales();
// 2. App uses the returned LocaleList to display languages to the user

Configuración del sistema para usuarios

Los usuarios pueden seleccionar el idioma de su preferencia para cada app mediante la nueva configuración del sistema. Pueden acceder a esta configuración de dos maneras diferentes:

  • Cómo acceder a través de la configuración del sistema

    Configuración > Sistema > Idiomas y entradas > Idiomas de las apps > (selecciona una app)

  • Cómo acceder a través de la configuración de la app

    Configuración > Apps > (selecciona una app) > Idioma

Errores conocidos

Hay algunos problemas conocidos que debes tener en cuenta mientras pruebas tu app.

  • La lista de idiomas disponibles podría no reflejar los idiomas que admite tu app.
  • Si tu app usa APK divididos, esos APK no se descargarán automáticamente cuando se modifique la configuración regional de la app.
  • La IU es una versión preliminar que seguirá cambiando en versiones posteriores.