Sei multilingue e vorresti che ogni app sul tuo telefono Android parlasse la lingua che preferisci, senza dover cambiare l'intero sistema? Sempre più utenti lo desiderano. assegnare una lingua diversa a un'app specificaChe si tratti di esercitarsi con una lingua, di comprendere meglio un'interfaccia complessa o semplicemente perché il sistema non è nella lingua preferita.
Nelle ultime versioni di Android, in particolare a partire da Android 13 e con ulteriori adattamenti regionali in Android 14, Google ha incorporato una funzionalità ufficiale per scegli la lingua per ogni app separatamenteTuttavia, ci sono delle sfumature importanti: non tutte le app sono compatibili, il percorso del menu varia a seconda del produttore e, sulle versioni Android più vecchie, è necessario ricorrere a soluzioni alternative o app di terze parti. Inoltre, se sei uno sviluppatore, il sistema ora offre API per gestire centralmente la lingua della tua app.
In cosa consiste la funzionalità della lingua per app in Android?
Android 13 ha introdotto una nuova funzionalità chiave chiamata informalmente, “linguaggio per app”Invece di far sì che tutte le applicazioni seguano ciecamente la lingua del sistema, l'utente può scegliere manualmente quale lingua utilizzare per ogni applicazione compatibile.
Questa funzione viene visualizzata in una sezione di impostazioni unificata, in cui sono mostrati i seguenti elementi: tutte le app che supportano la selezione della linguaDa lì puoi specificare, ad esempio, che il sistema è in spagnolo, ma che un'app specifica funziona in inglese, un'altra in francese e un'altra ancora in cinese, a patto che abbiano le traduzioni incluse.
Ci sono alcuni punti importanti su come queste applicazioni si comportano quando la funzionalità è abilitata:
- Quando un'app è configurata come "usare il linguaggio di sistema"Android utilizza come riferimento la prima lingua supportata dall'elenco delle lingue del sistema.
- Nella sezione "Tutte le lingue" all'interno delle impostazioni dell'app, sono elencate solo le seguenti: le lingue effettivamente supportate dall'applicazioneSe una lingua non è presente, non è possibile forzarla da lì.
- Android 14 e versioni successive aggiungono impostazioni regionali avanzate (formato data, unità, ecc.), ma si tratta di parametri separati dalla funzione linguistica per app.
Come faccio a cambiare la lingua di un'app specifica su Android 13 e versioni successive?
Su un telefono con Android 13 "puro" (come la linea Pixel), la procedura per cambiare la lingua di un'app è piuttosto semplice. Alcuni nomi di menu possono variare leggermente a seconda dell'interfaccia del produttore, ma l'idea è la stessa: accedere a una schermata in cui sono elencate le app compatibili e scegli una lingua specifica per ognuno.
I passaggi generali in Android 13 sarebbero più o meno i seguenti:
- Apri l'applicazione impostazioni dal tuo dispositivo Android.
- Scorri verso il basso fino alla sezione Sistema e inseriscilo (su alcuni cellulari potrebbe essere in "Impostazioni aggiuntive" o simili).
- Accesso a Lingue e immissione di testo (o “Lingue e voci”).
- Tocca Lingue di applicazioneVedrai un elenco di app che ti consentono di scegliere la lingua.
- Seleziona l'applicazione specifica di cui desideri personalizzare la lingua.
- scegliere lingua che vuoi che l'app utilizzi Tra le opzioni disponibili: è possibile impostarne una specifica oppure lasciare l'opzione lingua predefinita del sistema.
Dopo aver fatto questo, la prossima volta che aprirai quell'app, questa dovrebbe apparire direttamente nella lingua che hai selezionatoA condizione che l'app includa una traduzione per quella lingua. Tornando a Impostazioni > Sistema > Lingue app, puoi visualizzare lo stato di ciascuna app (utilizzando la lingua di sistema o una lingua specifica).
Percorsi alternativi dalle impostazioni dell'app
Oltre al percorso principale tramite il menu di sistema, su molti dispositivi con Android 13 o versioni successive è possibile cambiare la lingua di un'app anche accedendo direttamente al menu di sistema. dalle impostazioni dell'applicazioneQuesta funzionalità è utile quando si gestiscono già autorizzazioni, notifiche o altri parametri di quella specifica app.
Il percorso tipico sarebbe:
- APRIRE Impostazioni > App.
- Scegli l'applicazione che ti interessa.
- Tra le tue opzioni, cerca Lingua (se l'app supporta lingue separate e il produttore mantiene questa sezione).
- Seleziona la lingua desiderata per quell'app.
Il risultato è lo stesso: l'applicazione è configurata per utilizzare una lingua diversa da quella del sistemarispettando sempre l'elenco delle traduzioni in esso contenute.
Cosa fare se un'app non compare nell'elenco delle lingue dell'applicazione?
Una limitazione essenziale è che non tutte le app sono supportate Con la funzionalità di selezione della lingua per app. Se non vedi un'app specifica nel menu "Lingue app", è perché lo sviluppatore non ha abilitato questa funzionalità o perché la sua app segue semplicemente le preferenze di sistema senza esporre la selezione della lingua nelle impostazioni.
Ecco alcuni punti da tenere a mente se non trovi la tua app nell'elenco:
- Solo le app i cui sviluppatori sono mostrati nell'elenco hanno dichiarato le lingue supportate e hanno abilitato il supporto linguistico per app nel loro manifesto (tramite
android:localeConfigo il sistema automatico). - In alcune app, la lingua può essere modificata solo da la configurazione interna dell'applicazione stessa o dai parametri dell'account (ad esempio, servizi online che associano la lingua al profilo utente).
- Se un'app sembra "bloccata" in una lingua che non corrisponde alle impostazioni di sistema (ad esempio, rimane in cinese anche se il sistema è impostato su spagnolo e inglese), a volte può essere utile eliminare i dati dell'app per reimpostare la selezione della lingua. Nota: questa operazione potrebbe eliminare accessi, dati salvati, impostazioni, ecc.
Sui dispositivi altamente personalizzati, come alcuni box TV o fork di Android come YunOS, potrebbe non esserci nemmeno una sezione ufficiale di selezione della lingua per app, quindi Non potrai utilizzare il meccanismo introdotto in Android 13In questi casi le opzioni si riducono ad app di terze parti, alla modifica della lingua di sistema o a soluzioni più avanzate (rooting, modifiche del firmware, ecc.), con i rischi che ciò comporta.
Problemi comuni quando si cambia la lingua di un'app e come risolverli
Potrebbero verificarsi situazioni in cui, anche se si sceglie una lingua nelle impostazioni dell'applicazione, L'interfaccia non cambia o cambia solo parzialmente.Di solito ciò è dovuto a diverse cause, dall'app stessa alla connessione Internet o alla configurazione generale del dispositivo.
Se selezioni una lingua per un'app e questa non viene visualizzata correttamente, puoi provare quanto segue:
- Riavvia l'app: Chiudi completamente l'app (forza l'arresto se necessario) e riaprila per ricaricare le risorse linguistiche.
- Controllalo Hai una connessione di reteAlcune applicazioni scaricano risorse linguistiche o pacchetti aggiuntivi dal server quando si cambia lingua. In assenza di connessione, la modifica potrebbe non avere effetto.
- Aggiungi la lingua alle impostazioni generali del sistema e riprova:
- Apri Impostazioni sul tuo dispositivo Android.
- Vai a Sistema > Lingue e immissione testo > Lingue.
- Aggiungi quella lingua come lingua secondaria nell'elenco (non deve essere necessariamente quella principale).
- Attendi qualche minuto e torna alla schermata di Lingue di applicazione.
- Seleziona nuovamente l'app e scegli la lingua desiderata.
Se dopo questi passaggi ancora non cambia, è possibile che il L'elenco delle lingue dichiarate dall'app potrebbe non essere corretto. oppure che il supporto alla traduzione sia incompleto. In tal caso, è consigliabile assicurarsi di averlo installato. l'ultima versione dell'appperché solitamente gli sviluppatori correggono questi errori ed espandono il numero di lingue con gli aggiornamenti.
Retrocompatibilità con Android e casi speciali
La funzione di lingua nativa per app è progettata per Android 13 (livello API 33) e versioni successiveIn Android 11, Android 12 o sistemi altamente modificati (come alcuni fork cinesi o skin di alcuni produttori), quella sezione delle impostazioni semplicemente non esiste o è molto limitata.
Per i dispositivi più vecchi o dotati di sistemi modificati, potrebbero verificarsi situazioni come queste:
- L'app cambia automaticamente la lingua a seconda della linguaggio di sistema globale, senza la possibilità di sceglierne uno diverso solo per lei.
- Il sistema offre solo poche lingue (ad esempio, solo cinese e inglese), anche se la ROM di base teoricamente ne supporta molte di più, come nel caso di alcuni TV box o dispositivi che eseguono YunOS.
- L'applicazione visualizza sempre la lingua di sistema del cellulare con cui è sincronizzata, come accade con alcuni braccialetti intelligenti o indossabili che dipendono dalla lingua dell'app sul dispositivo mobile collegato.
In questi casi le alternative sono più limitate.
- Utilizzo di applicazioni di terze parti che impongono la lingua (Language Enabler, App Locale, ecc.) che tentano per forzare un'app a utilizzare una lingua specificaLa loro efficacia dipende dalla versione di Android e, in molti casi, richiedono l'accesso root.
- Cambia la lingua generale del sistema in una lingua compatibile con l'app o il dispositivo indossabile, supponendo che le altre app e i menu siano compatibili. Cambieranno anche la lingua.
- Sui dispositivi con ROM molto chiuse (come alcuni box TV cinesi o YunOS personalizzati), spesso l'unico modo realistico per cambiare la lingua dell'intero ambiente è installare una ROM alternativa oppure cercare un firmware in un'altra lingua, cosa riservata agli utenti avanzati e con il rischio di bricking.
Ad esempio, se hai un box TV YunOS che visualizza il sistema solo in cinese, ma sai che l'app KOGameBox TV mostra un'interfaccia in inglese quando il sistema è in inglese, non potrai dire all'app di usare l'inglese se il sistema rimane in cinese e non ci sono impostazioni di lingua per app. E su un telefono con Android 11, come uno Xiaomi Redmi Note 8T, che non include impostazioni di lingua per app di default, non potrai nemmeno specificare che una particolare app usi l'inglese mentre il resto del sistema è in spagnolo, a meno che tu non utilizzi metodi di terze parti e, molto spesso, l'accesso root.
Come cambiare la lingua generale del sistema su Android?

Se quello che vuoi è quello L'intero dispositivo mobile ha cambiato lingua. (incluse tutte le app che seguono la lingua del sistema), la procedura classica per la regolazione della lingua del sistema rimane valida in Android 13 e in molte versioni precedenti.
I passaggi usuali sarebbero:
- Apri l'app Configurazione o le impostazioni del tuo cellulare.
- Accedi Sistema o, in alcuni modelli, in Altre impostazioni.
- Accesso a Lingue e input (o “Lingue e immissione testo”).
- Tocca lingue.
- Aggiungi o seleziona la lingua che vuoi usare come primaria e posizionala nella prima posizione dell'elenco.
Una volta applicato, l'intero sistema operativo, le opzioni del menu e il La maggior parte delle app si adatta alla lingua del sistema Verranno visualizzati in quella lingua se è stata tradotta. Questo, ad esempio, potrebbe essere il motivo per cui una Xiaomi Smart Band 8, che supporta solo cinese e inglese e riceve la lingua dall'app mobile, visualizzerà tutto in inglese se si imposta il telefono in inglese, anche se si perde la lingua spagnola nel resto dell'interfaccia.
Funzionalità linguistiche per app per sviluppatori in Android 13
Dal punto di vista dello sviluppo, Android 13 compie un importante passo avanti affinché gli utenti possano Configura la lingua di ogni app dalle Impostazioni senza che lo sviluppatore debba reinventare la ruota con una logica personalizzata. Per raggiungere questo obiettivo, introduce due pilastri: una sezione di configurazione del sistema centralizzata e un set di API pubbliche che si sincronizzano con tale configurazione.
Le principali novità sono:
- Impostazioni della lingua di sistema per app: una schermata Android unificata in cui vengono visualizzate tutte le lingue supportate da ciascuna applicazione, in modo che l'utente possa scegliere quella preferita.
- API
LocaleManagermetodi comesetApplicationLocales()ygetApplicationLocales()Consentono all'app di impostare o controllare la propria lingua in fase di esecuzione, coordinandosi con quanto scelto dall'utente nelle Impostazioni. - Supporto per la retrocompatibilità su AndroidXLe API equivalenti in AndroidX (ad esempio, in AppCompat 1.6.0 o versioni successive) semplificano l'implementazione di questo comportamento anche nelle versioni precedenti di Android, con alcune differenze nel contesto (funzionano con AppCompatActivity per Android 12 e versioni precedenti).
Queste API aiutano a ridurre il codice duplicato, a gestire efficacemente gli APK divisi, a integrarsi con il sistema di backup e a mantenere un esperienza utente coerenteNon importa se l'utente cambia la lingua dalle Impostazioni o da un selettore di app interno, il risultato si riflette in entrambi i posti.
Abilita il supporto automatico della lingua per le app (AGP 8.1 e Android Studio Giraffe)
Google consiglia agli sviluppatori di abilitare la chiamata ogniqualvolta possibile. “compatibilità automatica della lingua per le app”Questa funzione consente al sistema di compilazione stesso di generare il file di configurazione della lingua (LocaleConfig) in base alle risorse esistenti, senza la necessità di creare e gestire manualmente tale XML.
I punti chiave di questo sistema automatizzato sono:
- Funziona da Plugin Android Studio Giraffe e Android Gradle 8.1a condizione che uno abbia
compileSdkVersion33 o versioni successive. - AGP ispeziona le risorse del progetto (le cartelle
res/values-*(sia dal modulo app che dalle librerie dipendenti) e genera un archivioLocaleConfigcon tutte le configurazioni regionali supportate. - Il manifesto finale aggiunge automaticamente un riferimento a ciò localeConfigPertanto, non è necessario includere l'attributo
android:localeConfigmanualmente. - Se aggiungi nuove risorse linguistiche alla tua app, queste vengono automaticamente incluse nel LocaleConfig generato, senza che tu debba intervenire su altro.
Per abilitare questa compatibilità automatica, lo sviluppatore deve:
- Abilita la funzione aggiungendo l'opzione
generateLocaleConfigall'interno del bloccoandroidResources {}dal filebuild.gradle.kts(obuild.gradlecon Groovy) a livello di modulo. - Specificare un impostazioni locali predefinite attraverso un file
resources.propertiesnella cartellaresdel modulo app, impostando la proprietàunqualifiedResLocalecon un nome di regione valido (ad esempio,unqualifiedResLocale=en-US).
AGP combina quella regione predefinita con tutte le altre cartelle di risorse linguistiche (values-es, values-frecc.) e genera un LocaleConfig coerente. Tuttavia, se lo sviluppatore ha già creato un file LocaleConfig manuale, deve eliminarlo prima di attivare questo sistema, perché Se coesistono, la compilazione fallirà..
Definisci manualmente le lingue supportate da android:localeConfig
Se per qualsiasi motivo non si desidera o non si può utilizzare la generazione automatica, è possibile definire manualmente le lingue supportate utilizzando un file XML denominato locales_config.xml e l'attributo android:localeConfig nel manifesto.
La procedura manuale consiste in:
- Crea il file
res/xml/locales_config.xmlelencando tutte le lingue supportate dall'app (inclusa la lingua di backup finale, che di solito corrisponde ares/values/strings.xmlnozioni di base). Ad esempio:
<?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> - Nel
AndroidManifest.xml, all'interno dell'etichetta<application>, aggiungi l'attributoandroid:localeConfig="@xml/locales_config"per indicare al sistema dove si trovano le impostazioni della lingua:
<manifest>
...
<application
android:localeConfig="@xml/locales_config"
... >
</application>
</manifest>
Inoltre, il quadro offre la possibilità di aggiorna dinamicamente questa impostazione con LocaleManager.setOverrideLocaleConfigin modo che le lingue esposte possano essere personalizzate in base alla regione, possano essere eseguiti esperimenti A/B o possa essere integrata la localizzazione lato server.
Come si formano correttamente i nomi locali?
Affinché tutto questo funzioni, è essenziale utilizzare nomi locali correttiAndroid segue la convenzione di combinare il codice della lingua, la sequenza di script facoltativa e il codice regionale, separati da trattini:
- Lingua: codice ISO 639-1 a due lettere (o, in alcuni casi, codice ISO 639-2 a tre lettere).
- Copione (facoltativo): codice ISO 15924 (ad esempio, "Hans" per il cinese semplificato, "Hant" per il cinese tradizionale).
- Regione (facoltativo): codice ISO 3166-1-alfa-2 a due lettere o codice UN M.49 a tre cifre.
Alcuni esempi comuni di tag validi sarebbero:
- en-US – Inglese (Stati Uniti).
- it-IT – Inglese (Regno Unito).
- es – Spagnolo senza specificare il paese.
- pt-BR – Portoghese brasiliano.
- zh-Hans – Cinese semplificato.
- zh-Hant – Cinese tradizionale.
Google fornisce esempi estesi nei file locale_config.xml campione, inclusi lunghi elenchi di lingue come af (afrikaans), ar (arabo), de (tedesco), es-US (spagnolo americano), fil (filippino), fr-CA (Canada francese), hi (hindi), ja (giapponese), ru (russo), vi (vietnamita), fino a coprire decine di posizioni standard.
Specificare le lingue in Gradle utilizzando resourceConfigurations
Un altro aspetto rilevante sul fronte dello sviluppo è la proprietà resourceConfigurations in build.gradle del modulo. Questa opzione consente di specificare quali lingue devono essere effettivamente incluse nel pacchetto APK o AAB, evitando di includere traduzioni non utilizzate e riducendo le dimensioni dell'app.
La configurazione tipica sarebbe simile a questa:
android {
...
defaultConfig {
resourceConfigurations += [
"en",
"en-rGB",
"fr",
"ja",
"b+zh+Hans+MO",
"b+zh+Hant+MO"
]
}
}
Quando questa proprietà è definita, il sistema di compilazione crea solo pacchetti le risorse delle lingue elencateQuesto impedisce che vengano incluse traduzioni da librerie che l'app non desidera esporre. Si consiglia di mantenere le lingue specificate in [la sezione pertinente/programma/etc/app ... resourceConfigurations con quelli definiti in locales_config.xml o il LocaleConfig generato, per evitare incongruenze.
È importante ricordare che l'aggiunta di lingue a un'app non genera magicamente traduzioni: gli sviluppatori devono individuare manualmente tutti i testi e le risorseLa funzionalità della lingua per app consente solo di selezionare la lingua da utilizzare tra quelle già offerte dall'app.
Selettori di lingua integrati nell'app e utilizzo di AndroidX
Molte app ne avevano già uno prima di Android 13 selettore di lingua personalizzato nelle sue impostazioniCon le nuove API, Google consiglia che questi selettori interni si basino sulle API del linguaggio pubblico per app, per evitare la duplicazione della logica e per mantenere la configurazione sincronizzata con il sistema.
Se l'app utilizza la libreria di compatibilità AndroidX (consigliata), può utilizzare metodi come AppCompatDelegate.setApplicationLocales() y AppCompatDelegate.getApplicationLocales() A partire da AppCompat 1.6.0. Alcuni dettagli rilevanti:
- In Android 12 e nelle versioni precedenti, le API retrocompatibili funzionano con il contesto di AppCompatActivitynon con il contesto globale di applicazione.
- Quando si chiama
setApplicationLocales(), il L'attività viene ricreata, a meno che l'app non gestisca autonomamente le modifiche alla configurazione regionale (il che comporta più lavoro). - È possibile dire ad AndroidX di gestire automaticamente il memorizzazione delle impostazioni regionali impostazione del valore
autoStoreLocalesentrueinAndroidManifestper il servizioAppLocalesMetadataHolderServicee contrassegnando il servizio come non abilitato o esportato.
Un esempio di voce di manifesto corrispondente sarebbe:
<application ...>
<service
android:name="androidx.appcompat.app.AppLocalesMetadataHolderService"
android:enabled="false"
android:exported="false">
<meta-data
android:name="autoStoreLocales"
android:value="true" />
</service>
</application>
Se si utilizza questa configurazione, AndroidX gestirà la lettura e la scrittura della preferenza di lingua, sebbene ciò possa causare accessi al disco sul thread principale e attivare violazioni di StrictMode se queste operazioni vengono monitorate. Pertanto, per i progetti sensibili alle prestazioni, è importante valutare attentamente se utilizzare questa configurazione. autoStoreLocales oppure viene mantenuta una soluzione proprietaria.
Utilizzo diretto delle API del framework LocaleManager
Un'altra opzione per le app in esecuzione su Android 13 e versioni successive è quella di utilizzare le API native del framework, in particolare la classe LocaleManagerIn questo modo, l'app può modificare e leggere la lingua preferita direttamente dal sistema, senza passare per AndroidX (anche se a costo di perdere parte della comoda retrocompatibilità).
Per impostare una lingua da un selettore interno, il flusso tipico sarebbe:
// 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.
Per ottenere la lingua attualmente configurata per l'app e visualizzarla in un selettore:
LocaleManager lm = mContext.getSystemService(LocaleManager.class);
LocaleList currentAppLocales = lm.getApplicationLocales();
// Usar currentAppLocales para marcar la opción activa en la UI.
Con queste chiamate la lingua scelta dall'utente è perfettamente sincronizzati tra il selettore interno dell'app e la schermata Impostazioni > Lingue app.
Ulteriori best practice relative alla lingua per app
Integrando la funzione linguistica per ogni app, si ottengono diversi suggerimenti interessanti che aiutano a perfezionare l'esperienza utente ed evitare sorprese.
Ecco alcuni suggerimenti chiave:
- Includi la lingua corrente quando richiami altre appSe si avviano intenti il cui comportamento dipende dalla lingua (ad esempio, il riconoscimento vocale con
EXTRA_LANGUAGE), prova ad adattare quel valore alla lingua effettivamente utilizzata dall'app, non solo alla lingua del sistema. - Imposta l'intestazione Accept-Language quando apri pagine web dall'app (ad esempio, nelle schede Chrome personalizzate) utilizzando
Browser.EXTRA_HEADERS, in modo che il contenuto remoto venga fornito nella lingua dell'interfaccia dell'app. - Vas SI A rimuovere supporto linguistico per app dal sistema (rimozione
android:localeConfig(dal manifesto), si consideri di ripristinare la lingua dell'app nella lingua di sistema utilizzandoLocaleListCompat.getEmptyLocaleList()oLocaleList.getEmptyLocaleList(), in modo da non lasciare l'utente "bloccato" in una lingua difficilmente reversibile.
Si consiglia inoltre agli sviluppatori di consultare esempi ufficiali, blog tecnici e video di Google sulla localizzazione, poiché questi includono esempi pratici, codice di esempio e file di configurazione di esempio (come un esteso locale_config.xml con decine di linguaggi AOSP standard).
Grazie a questo ecosistema, Android 13 e 14 consentono finalmente qualcosa che molti utenti chiedevano da tempo: configurare liberamente la lingua di ogni applicazione senza dover sacrificare la lingua generale del sistema. Finché l'app è compatibile e il dispositivo è aggiornato, è sufficiente accedere al menu "Lingue dell'app" per avere un'app in inglese, un'altra in spagnolo e un'altra ancora in cinese, mentre il resto del sistema rimane nella lingua abituale. Sui dispositivi più vecchi o altamente personalizzati, la soluzione consiste nel modificare la lingua globale, utilizzare strumenti di terze parti o, quando possibile, far adottare queste API agli sviluppatori stessi per offrire un'esperienza più flessibile e pratica.