Procedura dettagliata: localizzazione di Windows Form

Il sistema del progetto di Visual Studio fornisce un notevole supporto per la localizzazione di applicazioni Windows Form. Esistono due modi per generare i file di risorse mediante l'ambiente di sviluppo di Visual Studio:

  • Far generare al sistema del progetto i file di risorse per gli elementi localizzabili dell'interfaccia utente, quali testo e immagini del form. I file di risorse vengono quindi generati in assembly satellite. Queste risorse sono note come risorse basate su form.

  • Aggiungere un modello di file di risorse e poi modificarlo con Progettazione XML. Questo metodo consente di creare stringhe localizzabili che vengono visualizzate nelle finestre di dialogo e nei messaggi di errore. È quindi necessario scrivere il codice per accedere a tali risorse. Queste risorse sono note come risorse di progetto.

  • In generale, è necessario utilizzare risorse basate su form per tutte le risorse specifiche di un form nell'applicazione Windows Form. È necessario utilizzare risorse di progetto per tutte le stringhe e le immagini dell'interfaccia utente non basate su form, ad esempio i messaggi di errore.

Nota

È importante mantenere la coerenza e utilizzare le risorse basate su form o le risorse di progetto per la stessa proprietà. Molte proprietà di immagini, ad esempio la proprietà Image di PictureBox, consentono di selezionare un'immagine da risorse di progetto o di importare una nuova immagine come risorsa basata su form. Se si tenta di impostare l'immagine predefinita utilizzando una risorsa di progetto, mentre le versioni dell'immagine specifiche del linguaggio utilizzano risorse basate su form, l'immagine predefinita non verrà mai visualizzata.

In questa procedura dettagliata vengono illustrati entrambi i processi all'interno di un unico progetto di applicazione per Windows.

È inoltre possibile convertire un file di testo in un file di risorse; per ulteriori informazioni, vedere Risorse in formato di file di testo e Generatore di file di risorse (Resgen.exe).

Per generare automaticamente file di risorse con Visual Studio

  1. Creare una nuova applicazione per Windows denominata "WindowsApplication1". Per informazioni dettagliate, vedere Procedura: creare un progetto applicazione Windows.

  2. Nella finestra Proprietà impostare la proprietà Localizable del form su true.

    La proprietà Language è già impostata su (Default).

  3. Trascinare un controllo Button dalla scheda Windows Form della Casella degli strumenti al form, quindi impostarne la proprietà Text su Hello World.

  4. Impostare la proprietà Language del form su German (Germany).

  5. Impostare la proprietà Text del pulsante su Hallo Welt.

  6. Impostare la proprietà Language del form su French (France).

  7. Impostare la proprietà Text del pulsante su Bonjour le Monde. Se necessario, è possibile ridimensionare il pulsante in modo da contenere una stringa più lunga.

  8. Salvare e generare la soluzione.

  9. Fare clic sul pulsante Mostra tutti i file in Esplora soluzioni.

    Sotto Form1.vb, Form1.cs o Form1.jsl verranno visualizzati i file di risorse. Form1.resx rappresenta il file di risorsa per la lingua predefinita, che verrà generato nell'assembly principale. Form1.de-DE.resx rappresenta il file di risorsa per il tedesco. Form1.fr-FR.resx rappresenta il file di risorsa per il francese.

    I nomi dei file visualizzati saranno inoltre Form1.de.resx e Form1.fr.resx. In Visual Studio questi file vengono creati automaticamente per ovviare all'impossibilità di aggiungere in Visual SourceSafe nuovi file a un progetto durante un'operazione di salvataggio. I file RESX sono vuoti e non contengono risorse.

  10. Premere F5 o scegliere Avvia dal menu Debug.

    Verrà visualizzata una finestra di dialogo con un messaggio di apertura in inglese, francese o tedesco in base alla lingua dell'interfaccia utente del sistema operativo utilizzato.

    Nota

    La lingua dell'interfaccia utente utilizzata in Windows dipende dall'impostazione della proprietà CurrentUICulture. Se per la copia di Windows in uso è stata installata una versione del Multilingual User Interface Pack (MUI), è possibile modificare la lingua dell'interfaccia utente nel Pannello di controllo. Per ulteriori informazioni, vedere il sito Windows Server 2003, Windows XP & Windows 2000 MUI. Se non è stata installata alcuna versione del MUI, è possibile modificare la lingua corrente dell'interfaccia utente a livello di codice, come descritto di seguito.

    Nella procedura riportata di seguito viene illustrato come impostare la lingua dell'interfaccia utente in modo che l'applicazione visualizzi le risorse per il francese. Nelle applicazioni reali la lingua dell'interfaccia utente non verrebbe impostata utilizzando questo metodo ma dipenderebbe da un'impostazione dell'utente o dell'applicazione.

Per impostare la lingua dell'interfaccia utente in modo da visualizzare risorse specifiche

  1. Nell'Editor di codice aggiungere il codice riportato di seguito all'inizio del modulo, prima della dichiarazione Form1:

    ' Visual Basic
    Imports System.Globalization
    Imports System.Threading
    
    // C#
    using System.Globalization;
    using System.Threading;
    
    // Visual J#
    import System.Globalization.*;
    import System.Threading.*;
    
  2. Aggiungere il codice riportato di seguito. In Visual Basic, deve essere inserito nella funzione New, prima della chiamata alla funzione InitializeComponent. In Visual C# e Visual J#, deve essere inserito in Form1 e inoltre prima della chiamata alla funzione InitializeComponent.

    ' Visual Basic
    ' Sets the UI culture to French (France).
    Thread.CurrentThread.CurrentUICulture = New CultureInfo("fr-FR")
    
    // C#
    // Sets the UI culture to French (France).
    Thread.CurrentThread.CurrentUICulture = new CultureInfo("fr-FR");
    
    // Visual J#
    // Sets the UI culture to French (France).
    System.Threading.Thread.get_CurrentThread().set_CurrentUICulture( new CultureInfo("fr-FR"));
    
  3. Salvare e generare la soluzione.

  4. Premere F5 o scegliere Avvia dal menu Debug.

    In questo modo il form verrà sempre visualizzato in francese. Se in precedenza sono state modificate le dimensioni del pulsante per inserire la stringa francese più lunga, le dimensioni del pulsante saranno mantenute nel file di risorsa per il francese.

Per aggiungere manualmente file di risorse al progetto e modificarli

  1. Scegliere Aggiungi nuovo elemento dal menu Progetto.

  2. Nella casella Modelli selezionare il modello File di risorse assembly. Digitare il nome file "WinFormStrings.resx" nella casella Nome. Nel file WinFormStrings.resx sono contenute le risorse fallback in inglese, alle quali si accederà ogni volta che l'applicazione non riuscirà a individuare risorse più adatte alla lingua dell'interfaccia utente.

    Il file viene aggiunto al progetto in Esplora soluzioni e viene aperto automaticamente nella visualizzazione Dati all'interno di Progettazione XML.

  3. Nel riquadro Tabelle dati selezionare dati.

  4. Nel riquadro Dati fare clic su una riga vuota e immettere strMessage nella colonna nome e Hello World nella colonna valore.

    Non è necessario specificare l'attributo type o mimetype per una stringa. Questi attributi vengono utilizzati per gli oggetti. Lo specificatore di tipo conserva il tipo di dati dell'oggetto salvato. L'identificatore di tipo MIME mantiene il tipo base (base64) delle informazioni binarie archiviate, nel caso in cui l'oggetto sia costituito da dati binari.

  5. Scegliere Salva WinFormStrings.resx dal menu File.

  6. Eseguire i passaggi da 1 a 5 due volte, per creare altri due file di risorse denominati WinFormStrings.de-DE.resx e WinFormStrings.fr-FR.resx, con le risorse di tipo stringa specificate nella tabella che segue. Nel file WinFormStrings.de-DE.resx saranno contenute risorse specifiche per la lingua tedesca. Nel file WinFormStrings.fr-FR.resx saranno contenute risorse specifiche per la lingua francese.

    Nome del file di risorse Nome Valore

    WinFormStrings.de-DE.resx

    strMessage

    Hallo Welt

    WinFormStrings.fr-FR.resx

    strMessage

    Bonjour le Monde

Per accedere alle risorse aggiunte manualmente

  1. Nell'Editor di codice importare lo spazio dei nomi System.Resources all'inizio del modulo del codice.

    ' Visual Basic
    Imports System.Resources
    
    // C#
    using System.Resources;
    
    // Visual J#
    import System.Resources.*;
    
  2. Nella visualizzazione Progettazione fare doppio clic sul pulsante per visualizzare il codice del relativo gestore eventi Click e aggiungere il codice riportato di seguito. Il costruttore ResourceManager accetta due argomenti. Il primo è il nome principale delle risorse, ovvero il nome del file di risorsa senza il suffisso RESX e relativo alla lingua. Il secondo argomento è l'assembly principale.

    In questa procedura dettagliata non viene dichiarato alcuno spazio dei nomi, quindi nel primo argomento del costruttore ResourceManager può essere accettato il formato di ProjectName.ResourceFileRootName. In un'applicazione reale, tuttavia, sarebbe necessario impostare la proprietà DefaultNamespace, dichiarando il gestore di risorse con il nome principale completo del file di risorsa, compreso il relativo spazio dei nomi. Se ad esempio lo spazio dei nomi predefinito è MyCompany.MyApplication.MyComponent, il primo argomento del costruttore ResourceManager potrebbe essere MyCompany.MyApplication.MyComponent.WinFormStrings.

    ' Visual Basic
    ' Declare a Resource Manager instance.
    Dim LocRM As New ResourceManager("WindowsApplication1.WinFormStrings", GetType(Form1).Assembly)
    ' Assign the string for the "strMessage" key to a message box.
    MessageBox.Show(LocRM.GetString("strMessage"))
    
    // C#
    // Declare a Resource Manager instance.
    ResourceManager LocRM = new ResourceManager("WindowsApplication1.WinFormStrings",typeof(Form1).Assembly);
    // Assign the string for the "strMessage" key to a message box.
    MessageBox.Show(LocRM.GetString("strMessage"));
    
    // Visual J#
    // Declare a Resource Manager instance.
    ResourceManager LocRM = new ResourceManager("WindowsApplication1.WinFormStrings",
       System.Type. GetType("WindowsApplication1.Form1").get_Assembly());
    // Assign the string for the "strMessage" key to a message box.
    MessageBox.Show(LocRM.GetString("strMessage"));
    

    Nota

    Per impostazione predefinita, viene fatta distinzione tra maiuscole e minuscole per l'oggetto ResourceManager. Per eseguire ricerche senza distinzione tra maiuscole e minuscole, in modo che la ricerca di "TXTWELCOME" e di "txtWelcome" ottenga gli stessi risultati, impostare la proprietà IgnoreCase del gestore di risorse su true. Per ragioni di prestazioni, tuttavia, si consiglia di specificare sempre l'esatta combinazione di maiuscole e minuscole dei nomi di risorsa. L'esecuzione di ricerche senza distinzione tra maiuscole e minuscole può infatti determinare problemi di prestazioni.

  3. Generare ed eseguire il form. Fare clic sul pulsante.

    Nella finestra di messaggio verrà visualizzata una stringa adatta all'impostazione della lingua dell'interfaccia utente; nel caso in cui non sia possibile individuare una risorsa adatta alla lingua dell'interfaccia, verrà visualizzata una stringa dalle risorse fallback.

Vedere anche

Attività

Procedura: impostare la lingua e la lingua dell'interfaccia utente per la globalizzazione di Windows Form