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:
API que permiten que las apps configuren un idioma diferente en el tiempo de ejecución para utilizar en su interfaz de usuario
Las apps que usan selectores de idioma integrados en la app deben usar estas nuevas API para garantizar que los usuarios tengan una experiencia coherente, sin importar dónde seleccionen sus preferencias de idioma. Las nuevas API también ayudan a reducir la cantidad de código estándar.
Para ofrecer retrocompatibilidad con versiones anteriores de Android, las API también están disponibles en AndroidX a partir de Appcompat 1.6.0-alpha01.
Configuración del sistema que permite que los usuarios seleccionen un idioma preferido para cada app
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.