Condividi tramite


Globalizzazione per Windows Presentation Foundation

Aggiornamento: novembre 2007

In questo argomento vengono presentati i problemi da considerare per la scrittura di applicazioni Windows Presentation Foundation (WPF) per il mercato globale. Gli elementi di programmazione per la globalizzazione sono definiti in Microsoft .NET in System.Globalization.

Nel presente argomento sono contenute le seguenti sezioni.

  • Globalizzazione XAML
  • Progettazione di un'interfaccia utente internazionale con XAML
  • Sviluppo di applicazioni localizzabili
  • Utilizzo di ClickOnce con applicazioni localizzate
  • Argomenti correlati

Globalizzazione XAML

Extensible Application Markup Language (XAML) si basa su XML e sfrutta i vantaggi del supporto della globalizzazione definito nella specifica XML. Nelle sezioni riportate di seguito vengono descritte alcune funzionalità XAML da tenere presenti.

Riferimenti a carattere

Un riferimento a carattere fornisce il numero del carattere Unicode specifico che rappresenta, decimale o esadecimale. Nell'esempio riportato di seguito viene illustrato un riferimento a carattere decimale.

Ϩ

Nell'esempio viene illustrato un riferimento a carattere esadecimale. Si noti che è presente una x davanti al numero esadecimale.

Ϩ

Codifica

Le codifiche supportate da XAML sono ASCII, Unicode UTF-16 e UTF-8. L'istruzione di codifica si trova all'inizio del documento XAML. Se non è presente alcun attributo di codifica né un ordine dei byte, verrà utilizzato il valore predefinito UTF-8. UTF-8 e UTF-16 sono le codifiche preferite. UTF-7 non è supportata. Nell'esempio riportato di seguito viene illustrato come specificare una codifica UTF-8 in un file XAML.

?xml encoding="UTF-8"?

Attributo Language

In XAML viene utilizzato xml:lang per rappresentare l'attributo Language di un elemento. Per utilizzare al meglio la classe CultureInfo, è necessario che il valore dell'attributo del linguaggio sia uno dei nomi di lingua predefiniti da CultureInfo. xml:lang è ereditabile nella struttura ad albero dell'elemento, in base alle regole XML, non necessariamente per l'ereditarietà della proprietà di dipendenza, e l'impostazione predefinita è una stringa vuota se non viene assegnato esplicitamente un valore.

L'attributo Language è utile per la specifica di sottolinguaggi. Ad esempio, la lingua francese ha ortografia, vocabolario e pronuncia diverse in Francia, Quebec, Belgio e Svizzera. Anche il cinese, il giapponese e il coreano condividono elementi di codice in Unicode, ma le forme ideografiche sono diverse e utilizzano tipi di carattere diversi.

Nell'esempio Extensible Application Markup Language (XAML) riportato di seguito viene utilizzato l'attributo Language fr-CA per specificare la lingua francese canadese.

<TextBlock xml:lang="fr-CA">Découvrir la France</TextBlock>

Unicode

XAML supporta tutte le funzionalità Unicode, inclusi i sostituti. Il set di caratteri è supportato purché sia possibile mapparlo a Unicode. Ad esempio, GB18030 presenta alcuni caratteri mappati all'estensione A e B e alle coppie sostitutive di cinese, giapponese e coreano (CFK), pertanto è completamente supportato. Un'applicazione WPF può utilizzare StringInfo per modificare le stringhe senza capire se queste dispongano di coppie sostitutive o segni di unione.

Progettazione di un'interfaccia utente internazionale con XAML

In questa sezione vengono illustrate le funzionalità dell'interfaccia utente da considerare per la scrittura di un'applicazione.

Testo internazionale

WPF include l'elaborazione predefinita per tutti i sistemi di scrittura Microsoft .NET Framework supportati.

Attualmente sono supportati i seguenti script:

  • Arabo

  • Bengali

  • Devanagari

  • Cirillico

  • Greco

  • Gujarati

  • Gurmukhi

  • Ebraico

  • Script ideografici

  • Kannada

  • Lao

  • Latino

  • Malayalam

  • Mongolo

  • Oriya

  • Siriano

  • Tamil

  • Telugu

  • Thaana

  • Thai*

  • Tibetano

*In questa versione è supportata la visualizzazione e la modifica del testo thai, ma non l'interruzione di parola.

Attualmente gli script riportati di seguito non sono supportati:

  • Khmer

  • Coreano Hangul antico

  • Birmano

  • Singalese

Tutti i motori dei sistemi di scrittura supportano i tipi di carattere OpenType, i quali possono includere le tabelle di layout OpenType che consentono ai creatori dei tipi di carattere di progettare in modo ottimale caratteri tipografici internazionali e di alto livello. Le tabelle di layout dei tipi di carattere OpenType contengono informazioni sulle sostituzioni e sul posizionamento dei glifi, sulla giustificazione e sul posizionamento di base, consentendo alle applicazioni di elaborazione testi di migliorare il layout del testo.

I tipi di carattere OpenType consentono la gestione di grandi set di glifi tramite la codifica Unicode. Tale codifica garantisce un ampio supporto internazionale nonché il supporto delle varianti di glifo tipografiche.

Il rendering del testo di WPF si basa sulla tecnologia dei subpixel Microsoft ClearType che supporta l'indipendenza dalla risoluzione. Viene in tal modo migliorata significativamente la leggibilità e viene offerta la capacità di supportare documenti di alta qualità per tutti gli script.

Layout internazionale

WPF offre un modo pratico per supportare layout orizzontali, bidirezionali e verticali. Nel framework della presentazione è possibile utilizzare la proprietà FlowDirection per definire il layout. I modelli di direzione del testo sono:

  • LeftToRight: layout orizzontale per l'alfabeto latino, asiatico e così via.

  • RightToLeft: bidirezionale per arabo, ebraico e così via.

Sviluppo di applicazioni localizzabili

Quando si scrive un'applicazione per il mercato globale è opportuno tenere presente che l'applicazione deve essere localizzabile. Negli argomenti riportati di seguito vengono evidenziati i punti da considerare.

Interfaccia utente multilingue

Le interfacce utente multilingue (MUI, Multilingual User Interface) è un supporto Microsoft per il passaggio tra interfacce utente in lingue diverse. Un'applicazione WPF utilizza il modello di assembly per supportare le interfacce MUI. Un'applicazione contiene sia assembly indipendenti dalla lingua sia assembly di risorse satellite dipendenti dalla lingua. Il punto di ingresso è un file exe gestito nell'assembly principale. Il caricatore di risorse WPF sfrutta la gestione risorse di Framework per supportare la ricerca e il fallback delle risorse. Gli assembly satellite multilingue funzionano con lo stesso assembly principale. L'assembly di risorse caricato dipende dalla proprietà CurrentUICulture del thread corrente.

Interfaccia utente localizzabile

Le applicazioni WPF utilizzano XAML per definire le relative interfaccia utente. Il linguaggio XAML consente agli sviluppatori di specificare una gerarchia di oggetti con un insieme di proprietà e logica. L'utilizzo principale del linguaggio XAML è quello di sviluppare applicazioni WPF, ma può anche essere utilizzato per specificare una gerarchia di oggetti Common Language Runtime (CLR). La maggior parte degli sviluppatori utilizza il linguaggio XAML per specificare l'interfaccia utente dell'applicazione e un linguaggio di programmazione quale C# per rispondere all'interazione dell'utente.

Dal punto di vista della risorsa, un file XAML progettato per descrivere un'interfaccia utente dipendente dal linguaggio è un elemento risorsa, pertanto il formato di distribuzione finale deve essere localizzabile per supportare lingue internazionali. Poiché il linguaggio XAML non consente di gestire eventi, molte applicazioni XAML contengono blocchi di codice per tale scopo. Per ulteriori informazioni, vedere Cenni preliminari su XAML. Il codice viene rimosso e compilato in binari diversi quando un file XAML viene suddiviso in token in XAML binario (BAML, Binary XAML). I file, le immagini e altri tipi di oggetti di risorse gestite BAML sono incorporati nell'assembly di risorse satellite, che può essere localizzato in altre lingue o nell'assembly principale quando la localizzazione non è necessaria.

Nota

Le applicazioni WPF supportano tutte le risorse CLR di Framework, incluse tabelle di stringhe, immagini e così via.

Compilazione di applicazioni localizzabili

Per localizzazione si intende l'adattamento di un'interfaccia utente a culture diverse. Per rendere localizzabile un'applicazione WPF, è necessario che gli sviluppatori compilino tutte le risorse localizzabili in un assembly di risorse. L'assembly di risorse viene localizzato in lingue diverse e il code-behind utilizza l'API di gestione risorse per il caricamento. Uno dei file necessari per un'applicazione WPF è un file di progetto (proj). Tutte le risorse utilizzate nell'applicazione devono essere incluse nel file di progetto. Nell'esempio di file csproj riportato di seguito viene illustrato come procedere.

<Resource Include="data\picture1.jpg"/>
<EmbeddedResource Include="data\stringtable.en-US.restext"/>

Per utilizzare una risorsa nell'applicazione, creare un'istanza dell'oggetto ResourceManager e caricare la risorsa che si desidera utilizzare. Nell'esempio riportato di seguito viene illustrato come procedere.

void OnClick(object sender, RoutedEventArgs e)
{
  ResourceManager rm = new ResourceManager ("MySampleApp.data.stringtable",
       Assembly.GetExecutingAssembly());
  Text1.Text = rm.GetString("Message");
}

Utilizzo di ClickOnce con applicazioni localizzate

ClickOnce è una nuova tecnologia di distribuzione di Windows Form fornita con Microsoft Visual Studio 2005. Consente l'installazione e l'aggiornamento di applicazioni Web. Quando un'applicazione distribuita con ClickOnce viene localizzata, può essere visualizzata solo nella lingua in cui è localizzata. Se ad esempio un'applicazione distribuita viene localizzata in giapponese, può essere visualizzato solo nella versione giapponese di Microsoft Windows, non in quella inglese. Questa condizione costituisce un problema poiché gli utenti giapponesi utilizzano solitamente una versione inglese di Windows.

La soluzione a questo problema consiste nell'impostare l'attributo di fallback della lingua di sistema. Uno sviluppatore di applicazioni può rimuovere facoltativamente le risorse dall'assembly principale e specificare che tali risorse sono disponibili in un assembly satellite corrispondente a una lingua specifica. A tale scopo, utilizzare l'oggetto NeutralResourcesLanguageAttribute. Il costruttore della classe NeutralResourcesLanguageAttribute presenta due firme, una che accetta un parametro UltimateResourceFallbackLocation per specificare il percorso in cui l'oggetto ResourceManager estrae le risorse di fallback, assembly principale o satellite. Nell'esempio riportato di seguito viene illustrato come utilizzare l'attributo. Per il percorso di fallback finale, nel codice viene specificato che l'oggetto ResourceManager cerchi le risorse nella sottodirectory "de" della directory dell'assembly attualmente in esecuzione.

[assembly: NeutralResourcesLanguageAttribute(
    "de" , UltimateResourceFallbackLocation.Satellite)]

Vedere anche

Concetti

Cenni preliminari sulla globalizzazione e localizzazione WPF