Condividi tramite


Procedura: localizzare un'applicazione

Aggiornamento: novembre 2007

In questa esercitazione viene spiegato come creare un'applicazione localizzata utilizzando lo strumento LocBaml.

Nota

Lo strumento LocBaml non è un'applicazione pronta per la produzione. Viene presentato come esempio in cui vengono utilizzate alcune delle API di localizzazione e viene illustrato come scrivere uno strumento di localizzazione.

Nel presente argomento sono contenute le seguenti sezioni.

  • Panoramica
  • Requisiti
  • Creare un'applicazione di esempio.
  • Creare l'assembly satellite delle risorse della lingua di sistema
  • Compilare lo strumento LocBaml
  • Utilizzare LocBaml per analizzare un file
  • Tradurre il contenuto localizzabile
  • Utilizzare LocBaml per generate un nuovo file resources.dll
  • Di seguito vengono forniti alcuni suggerimenti per l'utilizzo di LocBaml.
  • Argomenti successivi
  • Argomenti correlati

Panoramica

In questa discussione viene fornito un approccio dettagliato alla localizzazione di un'applicazione. Per prima cosa, viene preparata l'applicazione in modo che sia possibile estrarre il testo da tradurre. Dopo la traduzione il testo viene inserito in una nuova copia dell'applicazione originale.

Requisiti

Nel corso di questa discussione, viene utilizzato Microsoft Build Engine (MSBuild), ovvero un compilatore eseguito dalla riga di comando.

Inoltre, vengono fornite istruzioni per l'utilizzo di un file di progetto. Per istruzioni su come utilizzare MSBuild e i file di progetto, vedere Compilazione e distribuzione di applicazioni Windows Presentation Foundation.

In tutti gli esempi della discussione vengono utilizzate le impostazioni cultura en-US (Inglese-Stati Uniti). Ciò consente di eseguire i passaggi degli esempi senza installare una lingua diversa.

Creare un'applicazione di esempio.

In questo passaggio, viene preparata l'applicazione per la localizzazione. Negli esempi Windows Presentation Foundation (WPF), viene fornito un esempio HelloApp che sarà utilizzato per gli esempi di codice in questa discussione. Se si desidera utilizzare questo esempio, scaricare i file Extensible Application Markup Language (XAML) da Esempio di strumento LocBaml.

  1. Sviluppare l'applicazione fino al punto in cui si desidera iniziare la localizzazione.

  2. Specificare il linguaggio di sviluppo nel file di progetto in modo da generare con MSBuild un assembly principale e un assembly satellite (file con estensione .resources.dll) per contenere le risorse della lingua di sistema. Il file di progetto nell'esempio HelloApp è HelloApp.csproj. In questo file, si trova il linguaggio di sviluppo identificato nel modo seguente:

    <UICulture>en-US</UICulture>

  3. Aggiungere gli UID ai file XAML. Gli UID vengono utilizzati per tenere traccia delle modifiche apportate ai file e per identificare gli elementi da tradurre. Per aggiungere gli UID ai file, eseguire updateuid sul file di progetto:

    msbuild /t:updateuid helloapp.csproj

    Per verificare che non vi siano UID mancanti o duplicati, eseguire checkuid:

    msbuild /t:checkuid helloapp.csproj

    Dopo l'esecuzione di updateuid, i file dovrebbero contenere gli UID. Ad esempio, nel file Pane1.xaml di HelloApp, si trova quanto segue:

    <StackPanel x:Uid="StackPanel_1">

      <TextBlock x:Uid="TextBlock_1">Hello World</TextBlock>

      <TextBlock x:Uid="TextBlock_2">Goodbye World</TextBlock>

    </StackPanel>

Creare l'assembly satellite delle risorse della lingua di sistema

Dopo la configurazione dell'applicazione per generare un assembly satellite delle risorse della lingua di sistema, è possibile compilare l'applicazione. Viene così generato l'assembly di applicazione principale, oltre all'assembly satellite delle risorse della lingua di sistema richiesto da LocBaml per la localizzazione. Per generare l'applicazione:

  1. Compilare HelloApp per creare una libreria a collegamento dinamico (DLL, Dynamic-Link Library):

    msbuild helloapp.csproj

  2. L'assembly di applicazione principale appena creato, HelloApp.exe, viene creato nella cartella seguente:

    C:\HelloApp\Bin\Debug\

  3. L'assembly satellite delle risorse della lingua di sistema appena creato, HelloApp.resources.dll, viene creato nella cartella seguente:

    C:\HelloApp\Bin\Debug\en-US\

Compilare lo strumento LocBaml

  1. Tutti i file necessari per compilare LocBaml si trovano negli esempi WPF. Scaricare i file C# dall'esempio Esempio di strumento LocBaml.

  2. Dalla riga di comando, eseguire il file di progetto (locbaml.csproj) per compilare lo strumento:

    msbuild locbaml.csproj

  3. Accedere alla directory Bin\Release per trovare il file eseguibile appena creato (locbaml.exe). Esempio: C:\LocBaml\Bin\Release\locbaml.exe.

  4. Le opzioni che è possibile specificare quando si esegue LocBaml sono le seguenti:

    • parse oppure -p: analizza Baml, risorse o file DLL per generare un file con estensione csv o txt.

    • generate oppure -g: genera un file binario localizzato utilizzando un file tradotto.

    • out oppure -o [directoryfile]: nome file di output.

    • culture oppure -cul [impostazioni cultura]: impostazioni locali degli assembly di output.

    • translation oppure -trans [translation.csv]: file tradotto o localizzato.

    • asmpath oppure -asmpath: [directoryfile]: se il codice XAML contiene controlli personalizzati, è necessario fornire asmpath all'assembly dei controlli personalizzati.

    • nologo: non viene visualizzato alcun logo o informazione di copyright.

    • verbose: vengono visualizzate informazioni in modalità dettagliata.

    Nota

    Se è necessario un elenco delle opzioni al momento dell'esecuzione dello strumento, digitare LocBaml.exe e preme INVIO.

Utilizzare LocBaml per analizzare un file

Dopo avere creato lo strumento LocBaml, è possibile utilizzarlo per analizzare HelloApp.resources.dll per estrarre il contenuto di testo che sarà localizzato.

  1. Copiare LocBaml.exe nella cartella bin\debug dell'applicazione, in cui è stato creato l'assembly dell'applicazione principale.

  2. Per analizzare il file dell'assembly satellite e archiviare l'output come file con estensione csv, utilizzare il comando seguente:

    LocBaml.exe /parse en-US/HelloApp.resources.dll /out:Hello.csv

    Nota

    Se il file di input, HelloApp.resources.dll, non si trova nella stessa directory di LocBaml.exe, spostare uno dei file affinché entrambi i file si trovino nella stessa directory.

  3. Quando si esegue LocBaml per analizzare i file, l'output è costituito da sette campi delimitati da virgole (file csv) o tabulazioni (file txt). Di seguito viene illustrato il file csv analizzato per HelloApp.resources.dll:

    HelloApp.g.en-US.resources:window1.baml,Stack1:System.Windows.Controls.StackPanel.$Content,Ignore,FALSE, FALSE,,#Text1;#Text2;

    HelloApp.g.en-US.resources:window1.baml,Text1:System.Windows.Controls.TextBlock.$Content,None,TRUE, TRUE,,Hello World

    HelloApp.g.en-US.resources:window1.baml,Text2:System.Windows.Controls.TextBlock.$Content,None,TRUE, TRUE,,Goodbye World

    I sette campi sono:

    1. Nome BAML. Nome della risorsa BAML rispetto all'assembly satellite del linguaggio di origine.

    2. Chiave di risorsa. Identificatore della risorsa localizzato.

    3. Categoria. Tipo di valore. Vedere Attributi e commenti di localizzazione.

    4. Leggibilità. Possibilità del localizzatore di leggere o meno il valore. Vedere Attributi e commenti di localizzazione.

    5. Modificabilità. Possibilità del localizzatore di modificare o meno il valore. Vedere Attributi e commenti di localizzazione.

    6. Commenti. Descrizione aggiuntiva del valore per facilitare l'individuazione della modalità di localizzazione di un valore. Vedere Attributi e commenti di localizzazione.

    7. Valore. Valore di testo da tradurre nelle impostazioni cultura desiderate.

    Nella tabella riportata di seguito viene illustrato il modo in cui questi campi eseguono il mapping ai valori delimitati del file csv:

    Nome BAML

    Chiave di risorsa

    Categoria

    Leggibilità

    Modificabilità

    Commenti

    Valore

    HelloApp.g.en-US.resources:window1.baml

    Stack1:System.Windows.Controls.StackPanel.$Content

    Ignora

    FALSE

    FALSE

    #Text1;#Text2

    HelloApp.g.en-US.resources:window1.baml

    Text1:System.Windows.Controls.TextBlock.$Content

    Nessuno

    TRUE

    TRUE

    Hello World

    HelloApp.g.en-US.resources:window1.baml

    Text2:System.Windows.Controls.TextBlock.$Content

    Nessuno

    TRUE

    TRUE

    Goodbye World

    Si noti che tutti i valori per il campo Commenti non contengono valori; se un campo non presenta alcun valore, è vuoto. Si noti inoltre che l'elemento nella prima riga non è né leggibile né modificabile e presenta "Ignora" come valore Categoria, condizione che indica che il valore non è localizzabile.

  4. Per facilitare l'individuazione di elementi localizzabili nei file analizzati, in particolare nei file di grandi dimensioni, è possibile ordinare o filtrare gli elementi per Categoria, Leggibilità e Modificabilità. Ad esempio, è possibile filtrare i valori illeggibili e non modificabili.

Tradurre il contenuto localizzabile

Utilizzare qualsiasi strumento disponibile per tradurre il contenuto estratto. Una procedura efficace consiste nello scrivere le risorse in un file csv e visualizzarle in Microsoft Excel, apportando le modifiche di traduzione nell'ultima colonna (valore).

Utilizzare LocBaml per generate un nuovo file resources.dll

Il contenuto identificato analizzando HelloApp.resources.dll con LocBaml è stato tradotto e deve essere reinserito nell'applicazione originale. Utilizzare l'opzione generate o -g per generare un nuovo file resources.dll.

  1. Utilizzare la sintassi riportata di seguito per generare un nuovo file HelloApp.resources.dll. Contrassegnare le impostazioni cultura come en-US (/cul:en-US).

    LocBaml.exe /generate en-US/HelloApp.resources.dll /trans:Hello.csv /out:c:\ /cul:en-US

    Nota

    Se il file di input, Hello.csv, non si trova nella stessa directory del file eseguibile LocBaml.exe, spostare uno dei file affinché entrambi i file si trovino nella stessa directory.

  2. Sostituire il file HelloApp.resources.dll precedente nella directory C:\HelloApp\Bin\Debug\en-US\HelloApp.resources.dll con il file HelloApp.resources.dll appena creato.

  3. "Hello World" e "Goodbye World" dovrebbero risultare tradotti nell'applicazione.

  4. Per tradurre con altre impostazioni cultura, utilizzare le impostazioni cultura della lingua verso la quale viene effettuata la traduzione. Nell'esempio riportato di seguito viene illustrato come tradurre in lingua francese canadese:

    LocBaml.exe /generate en-US/HelloApp.resources.dll /trans:Hellofr-CA.csv /out:c:\ /cul:fr-CA

  5. Nello stesso assembly dell'assembly dell'applicazione principale, creare una nuova cartella specifica delle impostazioni cultura per ospitare il nuovo assembly satellite. Per la lingua francese canadese, la cartella sarà fr-CA.

  6. Copiare l'assembly satellite generato nella nuova cartella.

  7. Per eseguire il test del nuovo assembly satellite è necessario modificare le impostazioni cultura in base alle quali verrà eseguita l'applicazione. Questa operazione può essere eseguita in due modi:

    • Modificare le impostazioni internazionali del sistema operativo (Start | Pannello di controllo | Impostazioni internazionali e della lingua).

    • Nell'applicazione, aggiungere il codice riportato di seguito a App.xaml.cs:

      <Application
          xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation"
          xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml"
          x:Class="SDKSample.App"
          x:Uid="Application_1"
          StartupUri="Window1.xaml">
      </Application>
      

Di seguito vengono forniti alcuni suggerimenti per l'utilizzo di LocBaml.

  • Tutti gli assembly dipendenti che definiscono controlli personalizzati devono essere copiati nella directory locale di LocBaml o installati in GAC. Queste operazioni sono necessarie poiché l'API di localizzazione deve avere accesso agli assembly dipendenti quando legge XAML binario (BAML, Binary XAML).

  • Se l'assembly principale è firmato, anche la DLL delle risorse generate deve essere firmata per poter essere caricata.

  • La versione della DLL delle risorse localizzate deve essere sincronizzata con l'assembly principale.

Argomenti successivi

In questo argomento si è acquisita una conoscenza di base della modalità di utilizzo dello strumento LocBaml. Sarà possibile creare un file che contiene UID. Utilizzando lo strumento LocBaml, si sarà in grado di analizzare un file per estrarre il contenuto localizzabile e, dopo la traduzione del contenuto, si potrà generare un file resources.dll che unisce il contenuto tradotto. In questo argomento non sono inclusi tutti i possibili dettagli, ma vengono fornite le istruzioni necessarie per utilizzare LocBaml per la localizzazione delle applicazioni.

Vedere anche

Concetti

Globalizzazione per Windows Presentation Foundation

Cenni preliminari sull'utilizzo del layout automatico