- Android 13 introduce una función nativa para elegir un idioma específico por aplicación desde Ajustes, siempre que la app sea compatible.
- Las apps deben declarar sus idiomas mediante LocaleConfig (automático o manual) y pueden usar APIs como LocaleManager o AndroidX para sincronizar selectores internos.
- En versiones anteriores de Android o sistemas muy modificados, las opciones se reducen a cambiar el idioma global del sistema o recurrir a soluciones de terceros.
- Una correcta gestión de idiomas mejora la experiencia del usuario multilingüe y exige buenas prácticas tanto en la configuración del sistema como en el desarrollo.
¿Te manejas en varios idiomas y te gustaría que cada aplicación de tu móvil Android hablara el idioma que tú quieras, sin cambiar todo el sistema? Cada vez hay más usuarios que quieren asignar un idioma distinto a una app concreta, ya sea para practicar una lengua, entender mejor una interfaz complicada o, directamente, porque el sistema no está en el idioma que prefieren.
En las últimas versiones de Android, sobre todo desde Android 13 y con más ajustes regionales en Android 14, Google ha incorporado una función oficial para elegir el idioma de cada app por separado. Aun así, hay matices importantes: no todas las aplicaciones son compatibles, la ruta de menús cambia según el fabricante y en versiones antiguas de Android hay que tirar de trucos o aplicaciones de terceros. Además, si eres desarrollador, ahora el sistema ofrece APIs para gestionar el idioma de tu app de manera centralizada.
¿Qué es la función de idioma por aplicación en Android?
Android 13 introdujo una novedad clave llamada, de forma informal, “idioma por app” o “per-app language”. En lugar de que todas las aplicaciones sigan ciegamente el idioma del sistema, el usuario puede escoger manualmente qué idioma usará cada aplicación compatible.
Esta función se expone en una sección de ajustes unificada, donde se muestran todas las apps que admiten selección de idioma. Desde ahí puedes indicar, por ejemplo, que el sistema esté en español, pero una app concreta funcione en inglés, otra en francés y otra en chino, siempre que tengan las traducciones incluidas.
Hay algunos puntos importantes sobre cómo se comportan estas aplicaciones con la función activada:
- Cuando una app está configurada como “usar idioma del sistema”, Android toma como referencia el primer idioma compatible de tu lista de idiomas del sistema.
- En la sección de “Todos los idiomas” dentro de los ajustes de la app, solo se listan los idiomas que esa aplicación realmente soporta; si un idioma no está, no podrás forzarlo desde ahí.
- En Android 14 y posteriores se añaden ajustes regionales avanzados (formato de fecha, unidades, etc.), pero estos son parámetros aparte de la función de idioma por app.
¿Cómo cambiar el idioma de una aplicación concreta en Android 13 y posteriores?
En un móvil con Android 13 “puro” (como la línea Pixel) el proceso para cambiar el idioma de una app es bastante sencillo. Algunos nombres de menús pueden variar ligeramente según la capa del fabricante, pero la idea es la misma: entrar en una pantalla donde se listan las apps compatibles y elegir un idioma específico para cada una.
Los pasos generales en Android 13 serían algo así:
- Abre la aplicación Ajustes de tu dispositivo Android.
- Desplázate hasta la sección Sistema y entra en ella (en algunos móviles podría estar en “Ajustes adicionales” o similar).
- Accede a Idiomas e introducción de texto (o “Idiomas y entradas”).
- Toca en Idiomas de las aplicaciones; verás un listado con las apps que permiten elegir idioma.
- Selecciona la aplicación concreta cuyo idioma quieras personalizar.
- Elige el idioma que quieres que use esa app entre los disponibles: podrás fijar uno concreto o dejar la opción de idioma predeterminado del sistema.
Tras hacer esto, la próxima vez que abras esa app debería mostrarse directamente en el idioma que has seleccionado, siempre que la aplicación incluya traducción para esa lengua. Si vuelves a Ajustes > Sistema > Idiomas de las aplicaciones, podrás ver el estado de cada app (usando el idioma del sistema o uno específico).
Rutas alternativas desde la configuración de apps
Además de la ruta principal a través del menú de Sistema, en muchos dispositivos con Android 13 o superior también puedes cambiar el idioma de una app entrando directamente desde los ajustes de aplicaciones. Es útil cuando ya estás gestionando permisos, notificaciones u otros parámetros de esa app concreta.
El camino típico sería:
- Abrir Configuración > Apps.
- Elegir la aplicación que te interesa.
- Dentro de sus opciones, buscar Idioma (si la app soporta idiomas por separado y el fabricante mantiene esta sección).
- Seleccionar el idioma deseado para esa app.
El resultado es el mismo: la aplicación queda configurada para usar un idioma diferente al del sistema, siempre respetando la lista de traducciones que trae incorporadas.
¿Qué hacer si una app no aparece en la lista de idiomas de las aplicaciones?
Una limitación esencial es que no todas las apps son compatibles con la función de idioma por aplicación. Si en el menú “Idiomas de las apps” no ves una aplicación concreta, es porque el desarrollador no ha habilitado esta función o su app solo sigue las preferencias del sistema sin exponer la selección de idioma en ajustes.
Algunos puntos a tener en cuenta si no encuentras tu app en la lista:
- Solo se muestran en la lista aquellas apps cuyos desarrolladores han declarado los idiomas compatibles y han activado el soporte de idioma por app en su manifiesto (via
android:localeConfigo el sistema automático). - En ciertas apps, el idioma se cambia únicamente desde la configuración interna de la propia aplicación o desde parámetros de cuenta (por ejemplo, servicios online que asocian el idioma al perfil del usuario).
- Si una app parece “encallada” en un idioma que no coincide con tus ajustes de sistema (por ejemplo, se queda en chino aunque el sistema esté en español e inglés), en ocasiones puede ayudar a borrar los datos de la app para que se reinicie la selección de idioma. Ojo, esto puede eliminar inicios de sesión, partidas, configuraciones, etc.
En dispositivos muy personalizados, como algunos TV box o forks de Android como YunOS, puede que ni siquiera exista la sección oficial de idioma por app, de modo que no podrás usar el mecanismo introducido en Android 13. En esos casos, las opciones se reducen a apps de terceros, a cambiar el idioma del sistema o a soluciones más avanzadas (rooteo, modificaciones del firmware, etc.), con los riesgos que eso conlleva.
Problemas frecuentes al cambiar el idioma de una app y cómo solucionarlos
Pueden darse situaciones en las que, aunque tú elijas un idioma en los ajustes de la aplicación, la interfaz no cambia o lo hace solo a medias. Esto suele deberse a varias causas, desde la propia app hasta la conexión a Internet o la configuración general del dispositivo.
Si seleccionas un idioma para una app y no se refleja correctamente, puedes probar lo siguiente:
- Reinicia la aplicación: cierra la app por completo (forzando detención si es necesario) y vuélvela a abrir para que recargue recursos de idioma.
- Comprueba que tienes conexión de red: algunas aplicaciones descargan recursos de idioma o paquetes adicionales desde el servidor cuando cambias de idioma. Si no hay conexión, el cambio puede no aplicarse.
- Añade el idioma a los ajustes generales del sistema y vuelve a intentarlo:
- Abre Ajustes en tu dispositivo Android.
- Ve a Sistema > Idiomas e introducción de texto > Idiomas.
- Añade ese idioma como secundario en la lista (no hace falta que sea el principal).
- Espera unos minutos y regresa a la pantalla de Idiomas de las aplicaciones.
- Selecciona de nuevo la app y elige el idioma deseado.
Si después de estos pasos sigue sin cambiar, es posible que la lista de idiomas declarada por la app no sea correcta o que el soporte de traducción esté incompleto. En ese caso conviene asegurarse de tener instalada la última versión de la app, ya que los desarrolladores suelen ir corrigiendo estos fallos y ampliando idiomas con las actualizaciones.
Compatibilidad con versiones anteriores de Android y casos especiales
La función nativa de idioma por app está diseñada para Android 13 (nivel de API 33) y versiones posteriores. En Android 11, Android 12 o sistemas muy modificados (como algunos forks chinos o ciertas capas de fabricantes), esa sección de ajustes simplemente no existe o está muy limitada.
Para dispositivos antiguos o con sistemas modificados pueden darse situaciones como estas:
- La app cambia de idioma automáticamente según el idioma global del sistema, sin opción de elegir uno diferente solo para ella.
- El sistema solo ofrece unos pocos idiomas (por ejemplo, solo chino e inglés), aunque la ROM de base soporte muchos más en teoría, como ocurre en algunos TV box o dispositivos con YunOS.
- La aplicación muestra siempre el idioma del sistema del móvil con el que se sincroniza, como pasa con algunas pulseras inteligentes o wearables que dependen del idioma de la app de su móvil vinculado.
En estos casos, las alternativas son más limitadas
- Usar aplicaciones de terceros de forzado de idioma (Language Enabler, App Locale, etc.), que intentan obligar a una app a usar un idioma concreto. Su eficacia depende de la versión de Android y, muchas veces, requieren root.
- Cambiar el idioma general del sistema a un idioma compatible con la app o el wearable, asumiendo que el resto de apps y menús también cambiarán de idioma.
- En dispositivos con ROM muy cerradas (como algunos TV box chinos o YunOS personalizados), a menudo la única forma realista de cambiar idioma de todo el entorno es instalar una ROM alternativa o buscar firmware en otro idioma, algo reservado a usuarios avanzados y con riesgo de brickeo.
Por ejemplo, si tienes un TV box YunOS que solo muestra el sistema en chino, pero sabes que la app KOGameBox TV muestra interfaz en inglés cuando el sistema está en inglés, no podrás decirle a la app que vaya en inglés si el sistema permanece en chino y no hay idioma por app. Y en un móvil con Android 11 como un Xiaomi Redmi Note 8T, que no incluye de serie la función de idiomas por app, tampoco podrás indicar que una aplicación concreta vaya en inglés mientras el resto del sistema está en español, salvo que uses métodos de terceros y, con mucha frecuencia, acceso root.
¿Cómo cambiar el idioma general del sistema en Android?

Si lo que quieres es que todo el móvil cambie de idioma (incluidas todas las apps que siguen el idioma del sistema), el proceso clásico para ajustar el idioma del sistema sigue siendo válido en Android 13 y en muchas versiones anteriores.
Los pasos habituales serían:
- Abre la aplicación de Configuración o Ajustes de tu móvil.
- Entra en Sistema o, en algunos modelos, en Ajustes adicionales.
- Accede a Idiomas y entradas (o “Idiomas e introducción de texto”).
- Toca en Idiomas.
- Añade o selecciona el idioma que quieres usar como principal y colócalo en la primera posición de la lista.
Una vez aplicado, todo el sistema operativo, las opciones de menú y la mayoría de apps que se adaptan al idioma del sistema se mostrarán en esa lengua si la tienen traducida. Esto, por ejemplo, puede ser lo que haga que una pulsera Xiaomi Smart Band 8, que solo soporta chino e inglés y toma el idioma desde la app del móvil, pase a mostrar todo en inglés si pones el móvil en inglés, aunque pierdas el español en el resto de la interfaz.
Funciones de idioma por app para desarrolladores en Android 13
Desde el lado del desarrollo, Android 13 da un paso importante para que los usuarios puedan configurar el idioma de cada app desde Ajustes sin que el desarrollador tenga que reinventar la rueda con lógica personalizada. Para ello introduce dos pilares: una sección centralizada en la configuración del sistema y un conjunto de APIs públicas que se sincronizan con esa configuración.
Las principales novedades son:
- Configuración del sistema para idioma por app: una pantalla unificada de Android donde se muestran todos los idiomas que admite cada aplicación, para que el usuario elija el que prefiera.
- APIs de
LocaleManager: métodos comosetApplicationLocales()ygetApplicationLocales()permiten que la app establezca o consulte su idioma en tiempo de ejecución, coordinándose con lo que el usuario haya elegido en Ajustes. - Soporte retrocompatible en AndroidX: APIs equivalentes en AndroidX (por ejemplo, en AppCompat 1.6.0 o superior) que facilitan llevar este comportamiento también a versiones anteriores de Android, con ciertas diferencias en el contexto (funcionan con AppCompatActivity para Android 12 y anteriores).
Estas APIs ayudan a reducir código duplicado, gestionar bien APKs divididos, integrarse con el sistema de copias de seguridad y mantener una experiencia de usuario coherente: da igual si el usuario cambia el idioma desde Ajustes o desde un selector interno de la app, el resultado se refleja en ambos sitios.
Habilitar la compatibilidad automática de idioma de las apps (AGP 8.1 y Android Studio Giraffe)
Google recomienda que, siempre que sea posible, los desarrolladores activen la llamada “compatibilidad automática de idioma de las apps”. Esta función permite que el propio sistema de compilación genere el archivo de configuración de idiomas (LocaleConfig) basado en los recursos existentes, sin necesidad de crear y mantener ese XML a mano.
Los puntos clave de este sistema automático son:
- Funciona a partir de Android Studio Giraffe y Android Gradle Plugin 8.1, siempre que se tenga
compileSdkVersion33 o superior. - AGP inspecciona los recursos del proyecto (las carpetas
res/values-*tanto del módulo de app como de librerías dependientes) y genera un archivoLocaleConfigcon todas las configuraciones regionales soportadas. - En el manifiesto final se añade automáticamente una referencia a ese localeConfig, por lo que no hace falta incluir el atributo
android:localeConfigmanualmente. - Si añades nuevos recursos de idioma a tu app, estos se incluyen automáticamente en el LocaleConfig generado, sin que tengas que tocar nada más.
Para activar esta compatibilidad automática, el desarrollador debe:
- Habilitar la función añadiendo la opción
generateLocaleConfigdentro del bloqueandroidResources {}del archivobuild.gradle.kts(obuild.gradlecon Groovy) a nivel de módulo. - Especificar una configuración regional predeterminada mediante un archivo
resources.propertiesen la carpetaresdel módulo de la app, estableciendo la propiedadunqualifiedResLocalecon un nombre de región válido (por ejemplo,unqualifiedResLocale=en-US).
AGP combina esa región predeterminada con todas las demás carpetas de recursos de idioma (values-es, values-fr, etc.) y genera un LocaleConfig coherente. Eso sí, si el desarrollador ya había creado un archivo LocaleConfig manual, debe eliminarlo antes de activar este sistema, porque si coexisten, la compilación fallará.
Definir manualmente los idiomas compatibles con android:localeConfig
Si por cualquier motivo no se quiere o no se puede usar la generación automática, es posible definir los idiomas compatibles de manera manual mediante un archivo XML llamado locales_config.xml y el atributo android:localeConfig en el manifiesto.
El procedimiento manual consiste en:
- Crear el archivo
res/xml/locales_config.xmllistando todos los idiomas que soporta la app (incluida la configuración regional de resguardo final, que suele corresponder a losres/values/strings.xmlbásicos). Por ejemplo:
<?xml version="1.0" encoding="utf-8"?>
<locale-config xmlns:android="http://schemas.android.com/apk/res/android">
<locale android:name="en-US" />
<locale android:name="en-GB" />
<locale android:name="fr" />
<locale android:name="ja" />
<locale android:name="zh-Hans-MO" />
<locale android:name="zh-Hant-MO" />
</locale-config> - En el
AndroidManifest.xml, dentro de la etiqueta<application>, añadir el atributoandroid:localeConfig="@xml/locales_config"para indicar al sistema dónde está la configuración de idiomas:
<manifest>
...
<application
android:localeConfig="@xml/locales_config"
... >
</application>
</manifest>
Además, el framework ofrece la posibilidad de actualizar dinámicamente esta configuración con LocaleManager.setOverrideLocaleConfig, de modo que se puedan personalizar los idiomas expuestos por región, realizar experimentos A/B o integrar localización procedente de servidor.
¿Cómo formar correctamente los nombres de configuración regional?
Para que todo esto funcione, es esencial usar nombres de configuración regional correctos. Android sigue la convención de combinar código de idioma, secuencia de script opcional y código de región, separados por guiones:
- Idioma: código ISO 639-1 de dos letras (o, en algunos casos, ISO 639-2 de tres letras).
- Script (opcional): código ISO 15924 (por ejemplo, “Hans” para chino simplificado, “Hant” para chino tradicional).
- Región (opcional): código ISO 3166-1-alpha-2 de dos letras o código UN M.49 de tres dígitos.
Algunos ejemplos habituales de etiquetas válidas serían:
- en-US – Inglés (Estados Unidos).
- en-GB – Inglés (Reino Unido).
- es – Español sin especificar país.
- pt-BR – Portugués de Brasil.
- zh-Hans – Chino simplificado.
- zh-Hant – Chino tradicional.
Google proporciona ejemplos extensos en archivos locale_config.xml de muestra, incluyendo largas listas de idiomas como af (afrikaans), ar (árabe), de (alemán), es-US (español de Estados Unidos), fil (filipino), fr-CA (francés de Canadá), hi (hindi), ja (japonés), ru (ruso), vi (vietnamita), hasta cubrir decenas de localizaciones estándar.
Especificar idiomas en Gradle con resourceConfigurations
Otro aspecto relevante del lado del desarrollo es la propiedad resourceConfigurations en el build.gradle de módulo. Esta opción permite indicar qué idiomas se deben empaquetar realmente en el APK o AAB, evitando incluir traducciones que no se usan y reduciendo el tamaño de la app.
La configuración típica sería algo así:
android {
...
defaultConfig {
resourceConfigurations += [
"en",
"en-rGB",
"fr",
"ja",
"b+zh+Hans+MO",
"b+zh+Hant+MO"
]
}
}
Cuando esta propiedad está definida, el sistema de build solo empaqueta los recursos de los idiomas listados. Eso impide que se cuelen translations de bibliotecas que tu app no quiere exponer. Se recomienda mantener sincronizados los idiomas indicados en resourceConfigurations con los definidos en locales_config.xml o el LocaleConfig generado, para evitar incoherencias.
Es importante recordar que añadir idiomas a una app no genera por arte de magia las traducciones: los desarrolladores deben localizar manualmente todos los textos y recursos. La función de idioma por app solo permite seleccionar qué idioma usar entre los que la app ya ofrece.
Selectores de idioma integrados en la app y uso de AndroidX
Muchas aplicaciones ya tenían antes de Android 13 un selector de idioma propio en sus ajustes. Con las nuevas APIs, Google recomienda que estos selectores internos se apoyen en las APIs públicas de idioma por app, para no duplicar lógica y mantener la configuración sincronizada con el sistema.
Si la app usa la biblioteca de compatibilidad AndroidX (recomendado), puede recurrir a métodos como AppCompatDelegate.setApplicationLocales() y AppCompatDelegate.getApplicationLocales() a partir de AppCompat 1.6.0. Algunos detalles relevantes:
- En Android 12 y versiones anteriores, las APIs retrocompatibles funcionan con el contexto de AppCompatActivity, no con el contexto global de aplicación.
- Al llamar a
setApplicationLocales(), la Activity se recrea, salvo que la app gestione por su cuenta los cambios de configuración regional (lo que implica más trabajo). - Es posible indicar a AndroidX que gestione automáticamente el almacenamiento de la configuración regional estableciendo el valor
autoStoreLocalesentrueen elAndroidManifestpara el servicioAppLocalesMetadataHolderService, y marcando ese servicio como no habilitado ni exportado.
Un ejemplo de correspondiente entrada de manifiesto sería:
<application ...>
<service
android:name="androidx.appcompat.app.AppLocalesMetadataHolderService"
android:enabled="false"
android:exported="false">
<meta-data
android:name="autoStoreLocales"
android:value="true" />
</service>
</application>
Si se usa esta configuración, AndroidX se encargará de leer y escribir la preferencia de idioma, aunque esto puede provocar accesos a disco en el hilo principal y disparar violaciones de StrictMode si se monitorean esas operaciones. Por eso, para proyectos muy sensibles al rendimiento, hay que valorar si se usa autoStoreLocales o se mantiene una solución propia.
Uso directo de las APIs del framework LocaleManager
Otra opción para apps que se ejecutan en Android 13 y versiones posteriores es utilizar las APIs nativas del framework, concretamente la clase LocaleManager. De esta forma, la app puede modificar y leer su idioma preferido directamente desde el sistema, sin pasar por AndroidX (aunque a costa de perder parte de la retrocompatibilidad cómoda).
Para establecer un idioma desde un selector interno, el flujo típico sería:
// 1. El usuario elige una etiqueta de idioma, por ejemplo "xx-YY".
LocaleManager lm = mContext.getSystemService(LocaleManager.class);
lm.setApplicationLocales(new LocaleList(Locale.forLanguageTag("xx-YY")));
// 2. El sistema actualiza la configuración regional y reinicia la app.
// 3. A partir de ahí, la UI se muestra en el idioma elegido.
Para obtener el idioma actual configurado para la app y mostrarlo en un selector:
LocaleManager lm = mContext.getSystemService(LocaleManager.class);
LocaleList currentAppLocales = lm.getApplicationLocales();
// Usar currentAppLocales para marcar la opción activa en la UI.
Con estas llamadas, el idioma elegido por el usuario queda perfectamente sincronizado entre el selector interno de la app y la pantalla de Ajustes > Idiomas de las aplicaciones.
Buenas prácticas adicionales sobre idioma por app
Al integrar la función de idioma por app, hay varias recomendaciones interesantes que ayudan a pulir la experiencia del usuario y evitar sorpresas.
Algunos consejos clave serían:
- Incluir el idioma actual cuando invoques otras apps: si lanzas intents cuyo comportamiento depende del idioma (por ejemplo, reconocimiento de voz con
EXTRA_LANGUAGE), intenta ajustar ese valor al idioma que la app está usando realmente, no solo al idioma del sistema. - Establecer encabezado Accept-Language cuando abras páginas web desde la app (por ejemplo, en pestañas personalizadas de Chrome) usando
Browser.EXTRA_HEADERS, para que el contenido remoto se sirva en el idioma de la interfaz de la app. - Si vas a eliminar el soporte de idioma por app desde el sistema (quitando
android:localeConfigdel manifiesto), considera restablecer el idioma de la app al del sistema usandoLocaleListCompat.getEmptyLocaleList()oLocaleList.getEmptyLocaleList(), para no dejar al usuario “atascado” en un idioma difícil de revertir.
También es recomendable que los desarrolladores consulten ejemplos oficiales, blogs técnicos y vídeos de Google sobre localización, ya que incluyen casos prácticos, código de ejemplo y archivos de configuración de muestra (como un extenso locale_config.xml con docenas de idiomas estándar de AOSP).
Con todo este ecosistema, Android 13 y 14 permiten por fin algo que muchos usuarios llevaban tiempo pidiendo: configurar libremente el idioma de cada aplicación sin tener que sacrificar el idioma general del sistema. Siempre que la app sea compatible y el dispositivo esté actualizado, basta con ir al menú de “Idiomas de las aplicaciones” para tener una app en inglés, otra en español y otra en chino, mientras el resto del sistema sigue en tu idioma de siempre; en dispositivos más antiguos o muy personalizados, la solución pasa por cambiar el idioma global, usar herramientas de terceros o, cuando es posible, que los propios desarrolladores adopten estas APIs para ofrecer una experiencia más flexible y cómoda.