Come gestire la lingua e l'area geografica

[ Questo articolo è rivolto agli sviluppatori per Windows 8.x e Windows Phone 8.x che realizzano app di Windows Runtime. Gli sviluppatori che usano Windows 10 possono vedere Documentazione aggiornata ]

Puoi controllare il modo in cui Windows seleziona le risorse dell'interfaccia utente e formatta gli elementi di interfaccia dell'app. Per controllare queste funzionalità, usa le varie impostazioni internazionali e della lingua offerte da Windows.

Per un'app di esempio che dimostra come gestire le impostazioni di lingua e area geografica, vedi l'esempio di risorse dell'applicazione e localizzazione.

Gli utenti di Windows non devono necessariamente scegliere un'unica lingua da un insieme limitato. Possono invece indicare a Windows che parlano qualsiasi lingua del mondo, anche quelle in cui il sistema operativo magari non è stato tradotto. Possono anche specificare che parlano più lingue.

Gli utenti di Windows possono specificare la loro località, che può trovarsi in qualsiasi parte del mondo. Possono inoltre indicare che parlano qualsiasi lingua in qualsiasi località. Località e lingua non si escludono a vicenda. Il fatto che un utente parli francese non significa che si trovi in Francia e viceversa.

Gli utenti di Windows possono eseguire app in una lingua completamente diversa da quella del sistema operativo. È ad esempio possibile eseguire un'app in spagnolo nella versione di Windows in inglese.

Per le app di Windows Store, una lingua è rappresentata da un tag di lingua BCP-47. La maggior parte delle API in Windows Runtime, HTML e XAML può restituire o accettare rappresentazioni stringa di questi tag di lingua BCP-47. Vedi anche Elenco IANA di lingue.

Per visualizzare un elenco dei tag di lingua supportati in modo specifico da Windows Store, vedi Scelta delle lingue.

Istruzioni

Passaggio 1: Impostare le preferenze dell'utente.

Le preferenze linguistiche dell'utente sono disponibili in un elenco di lingue disposte in base all'ordine che preferisce.

Nota  Solo app di Windows Store. L'utente imposta l'elenco nel Pannello di controllo > Orologio e opzioni internazionali > Lingua.

Nota  Solo app di Windows Phone Store. L'utente imposta l'elenco in Impostazioni > lingua.

L'elenco delle preferenze linguistiche dell'utente può contenere più lingue e opzioni internazionali o varianti specifiche di altro tipo. L'utente può ad esempio preferire il francese canadese, ma capire anche l'inglese britannico.

Passaggio 2: Specifica le lingue supportate nel manifesto dell'app.

Uno sviluppatore di app specifica l'elenco di lingue supportate nell'elemento Risorse del file manifesto dell'app (in genere Package.appxmanifest) oppure l'elenco di lingue viene generato automaticamente in Visual Studio nel file manifesto, in base alle lingue trovate nel progetto. Il manifesto deve descrivere accuratamente le lingue supportate con il livello di dettaglio appropriato. Le lingue elencate nel manifesto sono quelle visualizzate agli utenti in Windows Store.

Passaggio 3: Specificare la lingua predefinita.

Un'app usa la lingua predefinita quando non supporta nessuna delle lingue scelte dall'utente. MSBuild e MakePRI.exe usano la lingua predefinita per aggiungere metadati alle risorse contrassegnate in questa lingua, consentendo la scelta delle risorse appropriate in fase di esecuzione.

Per impostare la lingua predefinita di un'app di Windows Store tramite un progetto JavaScript in Microsoft Visual Studio:

  • Apri package.appxmanifest in Visual Studio, passa alla scheda Applicazione e imposta la lingua predefinita sulla lingua che usi per creare l'applicazione.

La proprietà della lingua predefinita deve inoltre essere impostata come prima lingua nel manifesto per impostare correttamente la lingua dell'applicazione, come descritto nel passaggio di seguito, "Creare l'elenco di lingue dell'applicazione". Le risorse della lingua predefinita devono essere comunque qualificate con la rispettiva lingua, ad esempio en-US/logo.png. La lingua predefinita non specifica la lingua implicita di risorse non qualificate. Per altre informazioni, vedi Come assegnare nomi alle risorse con i qualificatori.

Passaggio 4: Qualificare le risorse con la loro lingua.

Considera con attenzione il pubblico, la lingua e la località degli utenti di destinazione. Molte persone preferiscono lingue diverse da quella principale dell'area geografica in cui vivono. Ad esempio, per milioni di famiglie residenti negli Stati Uniti la lingua primaria è lo spagnolo.

Quando qualifichi le risorse con la lingua:

  • Includi script quando non sono definiti valori di eliminazione di script per la lingua. Per dettagli sui tag linguistici, vedi il registro IANA dei sottocodici di lingua. Utilizza, ad esempio, zh-Hant, zh-Hant-TW o zh-Hans, non zh-CN o zh-TW.
  • Contrassegna tutto il contenuto linguistico con una lingua. La proprietà predefinita del progetto lingua non è la lingua delle risorse non contrassegnate, ovvero la lingua di sistema; specifica quale risorsa linguistica contrassegnata scegliere se nessun'altra risorsa linguistica contrassegnata corrisponde all'utente.

Contrassegnare le risorse con una rappresentazione accurata del contenuto

  • Windows esegue la corrispondenza complessa, anche tra le varianti regionali (ad esempio en-US ed en-GB), pertanto le applicazioni sono libere di contrassegnare le risorse con una rappresentazione accurata del contenuto e lasciare che Windows individui la corrispondenza appropriata per ogni utente.
  • In Windows Store viene visualizzato il contenuto del manifesto agli utenti che guardano l'applicazione.
  • Tieni presente che alcuni strumenti e altri componenti, ad esempio i traduttori automatici, possono trovare tag linguistici specifici, come informazioni su dialetti regionali, utili per comprendere i dati.
  • Assicurati di contrassegnare le risorse con dettagli completi, in particolare quando sono disponibili più varianti. Ad esempio, contrassegna en-GB ed en-US se entrambi sono specifici dell'area geografica di interesse.
  • Per le lingue che hanno un solo dialetto standard, non è necessario aggiungere l'area geografica. La codifica generale ha senso in alcune situazioni, ad esempio nel contrassegno di risorse con ja anziché ja-JP.

In alcune situazioni non occorre localizzare tutte le risorse.

  • Per le risorse, come le stringhe dell'interfaccia utente, fornite in tutte le lingue, contrassegnale con la lingua appropriata e assicurati di disporre di tutte le risorse nella lingua predefinita. Non è necessario specificare una risorsa indipendente dalla lingua, ovvero non contrassegnata con una lingua.
  • Per le risorse fornite in un subset del set completo di lingue dell'applicazione (localizzazione parziale), specifica il set delle lingue in cui sono fornite le risorse e assicurati di disporre di tutte le risorse nella lingua predefinita. Windows seleziona la migliore lingua possibile per l'utente considerando tutte le lingue parlate dall'utente nell'ordine di preferenza. Ad esempio, è possibile che non tutta l'interfaccia utente di un'app sia localizzata in catalano, se l'app dispone di un set completo di risorse in spagnolo. Per gli utenti che parlano catalano e spagnolo, le risorse non disponibili in catalano sono visualizzate in spagnolo.
  • Per le risorse che presentano eccezioni specifiche in alcune lingue e tutte le altre lingue mappate a una risorsa comune, la risorsa da utilizzare per tutte le lingue deve essere contrassegnata con il tag linguistico non determinato 'und'. Windows interpreta il tag linguistico 'und' in modo simile a '*', in quanto associa la lingua principale dell'applicazione dopo ogni altra corrispondenza specifica. Ad esempio, se alcune risorse, come la larghezza di un elemento, sono diverse per il finlandese, ma il resto delle risorse è uguale per tutte le lingue, la risorsa del finlandese deve essere contrassegnata con il tag linguistico del finlandese mentre il resto sarà contrassegnato con 'und'.
  • Per le risorse basate sullo script di una lingua anziché sulla lingua, ad esempio un tipo di carattere o l'altezza del testo, usa il tag linguistico non determinato con uno script specificato: 'und-<script>'. Ad esempio, per i tipi di carattere latini usa und-Latn\fonts.css e per quelli cirillici usa und-Cryl\fonts.css.

Passaggio 5: Creare l'elenco di lingue dell'applicazione.

In fase di esecuzione, il sistema determina le preferenze linguistiche dell'utente che l'app dichiara di supportare nel manifesto, crea un elenco delle lingue dell'applicazione e usa questo elenco per determinare la lingua dell'applicazione. L'elenco specifica la lingua usata per risorse, date, ore, numeri e altri componenti dell'app e del sistema. Ad esempio, il Sistema gestione risorse (Windows.ApplicationModel.Resources, Windows.ApplicationModel.Resources.Core e spazio dei nomi WinJS.Resources) carica le risorse dell'interfaccia utente in base alla lingua dell'applicazione. Anche Windows.Globalization sceglie i formati in base all'elenco di lingue dell'applicazione. L'elenco di lingue dell'applicazione è disponibile tramite Windows.Globalization.ApplicationLanguages.languages.

La corrispondenza tra le lingue e le risorse è difficile. Ti consigliamo di lasciare la gestione di questa operazione a Windows perché sono molti i componenti facoltativi presenti in un tag linguistico che influiscono sulla priorità della corrispondenza e che si riscontrano nella pratica.

Di seguito sono indicati alcuni esempi di componenti facoltativi di un tag linguistico:

  • Script per eliminare i linguaggi script. Ad esempio, en-Latn-US corrisponde a en-US.
  • Area geografica Ad esempio, en-US corrisponde a en.
  • Varianti. Ad esempio, de-DE-1996 corrisponde a de-DE.
  • -x e altre estensioni. Ad esempio, en-US-x-Pirate corrisponde a en-US.

Esistono inoltre molti componenti di un tag linguistico che non hanno il formato xx o xx-yy e non tutti corrispondono.

  • zh-Hant non corrisponde a zh-Hans.

Windows dà priorità alla corrispondenza delle lingue in un modo chiaro e standard. Ad esempio, en-US corrisponde, in ordine di priorità, a en-US, en, en-GB e così via.

  • Windows individua le corrispondenze tra aree geografiche. Ad esempio, en-US corrisponde a en-US, en, quindi en-*.
  • Windows dispone di dati aggiuntivi per la corrispondenza di affinità all'interno di un'area geografica, ad esempio l'area geografica principale per una lingua. Ad esempio, fr-FR è una corrispondenza migliore per fr-BE di fr-CA.
  • Qualsiasi miglioramento futuro nella corrispondenza delle lingue in Windows viene ottenuta gratuitamente se si utilizzano le API Windows.

La corrispondenza per la prima lingua di un elenco viene eseguita prima di quella della seconda lingua, anche per altre varianti locali. Ad esempio, una risorsa per la lingua en-GB viene scelta prima di una per la lingua fr-CA, se la lingua dell'applicazione è en-US. Solo se non sono presenti risorse per una forma di en, viene scelta una risorsa per fr-CA.

L'elenco di lingue dell'applicazione è impostato sulla variante locale dell'utente, anche se è diversa dalla variante locale fornita dall'app. Se ad esempio l'utente parla en-GB ma l'app supporta en-US, l'elenco di lingue dell'applicazione includerà en-GB. Ciò assicura che i formati di date, ore e numeri siano più vicini alle aspettative dell'utente (en-GB), ma che le risorse dell'interfaccia utente vengano comunque caricate (a causa della corrispondenza delle lingue) nella lingua supportata dall'app (en-US).

L'elenco delle lingue dell'applicazione include gli elementi seguenti:

  1. (Facoltativo) Ovverride lingua primariaPrimaryLanguageOverride è un'impostazione di override semplice per le app che consentono agli utenti di scegliere la propria lingua o per le app che hanno un motivo valido per eseguire l'override delle scelte della lingua predefinita. Per altre informazioni, vedi l'esempio relativo alle risorse e alla localizzazione dell'applicazione.
  2. Lingue dell'utente supportate dall'app Si tratta di un elenco delle lingue preferite dell'utente disposte in ordine di preferenza. Viene filtrato in base all'elenco di lingue supportate nel manifesto dell'app. Il filtro delle lingue dell'utente in base a quelle supportate dall'app consente di mantenere la coerenza tra gli SDK (Software Development Kit), le librerie di classi, i pacchetti del framework dipendente e l'app.
  3. Se 1 e 2 sono vuoti, usa la lingua predefinita o la prima supportata dall'app Se l'utente non parla alcuna delle lingue supportate dall'app, la lingua scelta per l'applicazione è la prima supportata dall'app.

Per alcuni esempi, vedi la sezione Osservazioni di seguito.

Passaggio 6: Impostare l'intestazione HTTP Accept-Language.

Le richieste HTTP effettuate dalle app di Windows Store e dalle app desktop nelle tipiche richieste Web e XMLHttpRequest (XHR) usano l'intestazione HTTP Accept-Language standard. Per impostazione predefinita, l'intestazione HTTP è impostata sulle preferenze linguistiche dell'utente, nell'ordine preferito, specificate in Pannello di controllo > Orologio e opzioni internazionali > Lingua. Ogni lingua nell'elenco è estesa per includere le versioni indipendenti dalla lingua e un peso (q). Ad esempio, un elenco di lingue dell'utente contenente fr-FR e en-US restituisce un'intestazione Accept-Language HTTP di fr-FR, fr, en-US, en ("fr-FR,fr;q=0,8,en-US;q=0,5,en;q=0,3").

Passaggio 7: Usare le API dello spazio dei nomi Windows.Globalization.

In genere, gli elementi delle API dello spazio dei nomi Windows.Globalization usano l'elenco di lingue dell'applicazione per determinare la lingua. Se per nessuna delle lingue esiste un formato corrispondente vengono usate le impostazioni locali dell'utente, ovvero le stesse impostazioni usate per l'orologio del sistema. Le impostazioni locali dell'utente sono disponibili nel Pannello di controllo > Orologio e opzioni internazionali > Cambia data, ora o formato dei numeri. Le Windows.Globalization API possono accettare un override per specificare un elenco di lingue da usare al posto dell'elenco di lingue dell'applicazione.

Windows.Globalization include inoltre un oggetto Language fornito come oggetto helper. Consente alle app di esaminare dettagli sulla lingua come l'alfabeto, il nome visualizzato e il nome nativo.

Passaggio 8: Usare l'area geografica quando è appropriato.

Invece della lingua, dovresti usare l'impostazione dell'area geografica di residenza dell'utente per scegliere il contenuto da visualizzare. Un'app di notizie, ad esempio, per impostazione predefinita potrebbe visualizzare contenuti riguardanti la località di residenza dell'utente, impostata durante l'installazione di Windows e disponibile nel Pannello di controllo Paese e lingua. Per recuperare l'impostazione dell'area geografica di residenza dell'utente corrente, usa Windows.System.UserProfile.GlobalizationPreferences.HomeGeographicRegion.

Windows.Globalization include inoltre un oggetto GeographicRegion fornito come oggetto helper. Consente alle app di esaminare i dettagli su una specifica area geografica, ad esempio il nome visualizzato, il nome nativo e le valute in uso.

Osservazioni

La tabella seguente contiene alcuni esempi di quello che l'utente vedrebbe nell'interfaccia utente con varie impostazioni di lingua e area geografica.

Lingue supportate dall'app (definite nel manifesto) Preferenze linguistiche dell'utente (impostate nel Pannello di controllo) Override della lingua principale dell'app (facoltativo) Lingue dell'app Cosa vede l'utente nell'app
Inglese (Regno Unito) (predefinita); Tedesco (Germania) Inglese (Regno Unito) no Inglese (Regno Unito) Interfaccia utente: inglese (Regno Unito) Date/orari/numeri: inglese (Regno Unito)
Tedesco (Germania) (predefinita); Francese (Francia) Italiano (Italia) Francese (Austria) (no) Francese (Austria) Interfaccia utente: francese (Francia) (fallback da francese (Austria)) Date/orari/numeri: francese (Austria)
Inglese (Stati Uniti) (predefinita); Francese (Francia); Inglese (Regno Unito) Inglese (Canada); Francese (Canada) no Inglese (Canada); Francese (Canada) Interfaccia utente: inglese (Stati Uniti) (fallback da Inglese (Canada)) Date/orari/numeri: inglese (Canada)
Spagnolo (Spagna) (predefinita); Spagnolo (Messico); Spagnolo (America Latina); Portoghese (Brasile) Inglese (Stati Uniti) no Spagnolo (Spagna) Interfaccia utente: spagnolo (Spagna) (usa la lingua predefinita perché non è disponibile un fallback per l'inglese) Date/orari/numeri: Spagnolo (Spagna)
Catalano (predefinita); Spagnolo (Spagna); Francese (Francia) Catalano; Francese (Francia) no Catalano; Francese (Francia) Interfaccia utente: prevalentemente catalano e in parte in francese (Francia) perché le stringhe non sono tutte in catalano Date/ore/numeri: catalano
Inglese (Regno Unito) (predefinita); Francese (Francia); Tedesco (Germania) Tedesco (Germania); Inglese (Regno Unito) Inglese (Regno Unito) (scelta dall'utente nell'interfaccia utente dell'app) Inglese (Regno Unito); Tedesco (Germania) Interfaccia utente: inglese (Regno Unito) (override della lingua) Date/ore/numeri Inglese (Regno Unito)