Procedura dettagliata: utilizzo di risorse per la localizzazione con ASP.NET

Aggiornamento: novembre 2007

Un modo efficace per creare pagine Web localizzate è quello di utilizzare risorse per il testo e i controlli della pagina in base alla lingua e alle impostazioni cultura dell'utente. Utilizzando le proprietà presenti in oggetti risorsa, in ASP.NET è possibile selezionare la proprietà corretta in fase di esecuzione secondo la lingua e le impostazioni cultura dell'utente. Il processo è semplice:

  • I valori sono memorizzati in un file di risorse (RESX).

  • Nella pagina viene indicato che i controlli devono utilizzare le risorse relative ai corrispondenti valori delle proprietà.

  • In fase di esecuzione, i valori delle proprietà dei controlli vengono derivati dal file di risorse.

    Nota:

    È possibile, in pratica, memorizzare valori in oggetti risorse personalizzati, ad esempio un database. Tuttavia, in questa procedura dettagliata, verrà utilizzato un file RESX per memorizzare i valori.

Visual Web Developer consente di generare risorse per controlli, proprietà di controllo e HTML relativo ai controlli senza scrivere alcun codice.

Di seguito sono elencate le attività illustrate nella procedura dettagliata:

  • Attivazione della localizzazione di pagine ASP.NET.

  • Generazione di un file di risorse e associazione in modo implicito dei relativi valori con i controlli nell'applicazione.

  • Creazione di file di risorse per la localizzazione e relativo riferimento esplicito alle pagine utilizzando espressioni dichiarative.

Prerequisiti

Per completare questa procedura dettagliata è necessario:

  • Visual Web Developer (Visual Studio).

  • .NET Framework.

Creazione di un sito Web

Se è stato già creato un sito Web in Visual Web Developer (vedere Procedura dettagliata: creazione di una pagina Web di base in Visual Web Developer), è possibile utilizzare quel sito Web e passare alla sezione successiva, "Localizzazione implicita con ASP.NET". In caso contrario, creare un sito Web e una pagina nuovi attenendosi ai passaggi della procedura riportata di seguito.

Per creare un sito Web di file system

  1. Aprire Visual Web Developer.

  2. Scegliere Nuovosito Web dal menu File.

    Viene visualizzata la finestra di dialogo Nuovo sito Web.

  3. In Modelli Visual Studio installati, fare clic su Sito Web ASP.NET.

  4. Nella casella Percorso, immettere il nome della cartella in cui salvare le pagine del sito Web.

    Digitare, ad esempio, il nome cartella C:\WebSites.

  5. Nell'elenco Linguaggio scegliere il linguaggio di programmazione con cui lavorare.

  6. Scegliere OK.

    La cartella viene creata insieme a una nuova pagina chiamata Default.aspx.

Localizzazione implicita con ASP.NET

In questa sezione verrà utilizzata la localizzazione implicita. Nella localizzazione implicita viene specificato che le proprietà di controllo devono essere lette automaticamente da un file di risorse, tuttavia non è necessario specificare le proprietà localizzate. Viene creato, quindi, un file di risorse con valori localizzati per proprietà specifiche. In fase di esecuzione, in ASP.NET vengono esaminati i controlli della pagina. Se il controllo viene contrassegnato per utilizzare la localizzazione implicita, in ASP.NET viene visualizzato il file di risorse della pagina. Se vengono rilevate le impostazioni della proprietà per il controllo contrassegnato, in ASP.NET i valori del file di risorse vengono sostituiti con quelli del controllo.

In questo esempio di localizzazione implicita viene utilizzata una combinazione tra finestra di progettazione ed editor di risorse per generare un file di risorse predefinito che verrà utilizzato come un punto di partenza per la localizzazione in due lingue. In Visual Web Developer sarà generato un file di risorse basato solo sui controlli della pagina. Per questo motivo è opportuno generare il file di risorse dopo aver completato il layout del controllo della pagina, incluso controlli semplici quali pulsanti, etichette e caselle di testo.

Per posizionare i controlli in una pagina

  1. In Esplora soluzioni, fare clic con il pulsante destro del mouse su Default.aspx, scegliere Rinomina, quindi digitare Sample.aspx.

    Tale operazione consente di evitare confusione nel resto della procedura dettagliata relativamente ai file di risorse predefiniti in quanto nei nomi dei file di risorse vengono utilizzati i nomi delle pagine.

  2. Aprire Sample.aspx, quindi passare alla visualizzazione Progettazione.

  3. Dalla sezione Standard, nella Casella degli strumenti, trascinare un controllo Button, un controllo Label e un controllo TextBox nella pagina.

  4. Per ciascun controllo, impostare Text rispettivamente su English Button, English Label e English TextBox.

Dopo aver creato la pagina e aver aggiunto i controlli, è possibile utilizzare un comando di Visual Web Developer per generare un file di risorse locale per questa pagina. In questo file saranno contenute le stringhe di risorsa per i controlli nella pagina. In Visual Web Developer viene generata una stringa di risorsa per ciascuna proprietà designata internamente al controllo come localizzabile. Ciascun controllo può disporre di diverse proprietà designate come localizzabili, anche se la maggior parte delle proprietà basate su testo viene contrassegnata in questo modo.

Per generare automaticamente i file di risorse

  1. Fare clic sull'area di progettazione o su un controllo.

  2. Scegliere Genera risorsa locale dal menu Strumenti.

    In Visual Web Developer viene creata una nuova cartella denominata App_LocalResources e, all'interno della cartella App_LocalResources, un nuovo file denominato Sample.aspx.resx. Se alla pagina è stato assegnato un nome diverso da Sample.aspx, il file RESX riflettera qualsiasi nome si sceglie. Quando si utilizza la localizzazione implicita, i nomi dei file di risorse sono basati su nomi di pagina singoli.

  3. Passare alla visualizzazione Origine per visualizzare le modifiche apportate alle dichiarazioni dei controlli.

    In Visual Web Developer è stato aggiunto un attributo ai controlli per recuperare i relativi valori dal file di risorse appena creato. Ad esempio, al markup del controllo Button è associata un nuovo attributo meta:resourcekey.

    <asp:Button ID="Button1" Runat="server" meta:resourcekey="ButtonResource1" Text="English Button" />
    

Se da un browser viene inviata una richiesta al server Web, tale richiesta può contenere informazioni sulle impostazioni cultura e sulla lingua correnti. Ad esempio, da un browser può essere inviata la stringa "en-us" per indicare l'impostazione su Inglese (Stati Uniti), mentre da un altro browser può essere inviata la stringa "en-gb" per indicare l'impostazione su Inglese (Gran Bretagna).

Nota:

Le impostazioni cultura e di lingua presenti in una richiesta del browser non sono un modo completamente affidabile per rilevare la lingua preferita dell'utente. esse indicano solo quanto è stato impostato dal browser per inviare o quanto il browser ha ereditato dal sistema operativo sottostante. Per questa procedura dettagliata verranno utilizzate le impostazioni cultura e di lingua, tuttavia in un'applicazione di produzione è necessario anche includere un modo per consentire agli utenti la selezione manuale di lingua e impostazioni cultura.

Il file di risorse viene utilizzato come file di risorse predefinito per tutte le richieste. Si tratta, ad esempio, del file di risorse per le impostazioni cultura di fallback. Se dal browser non vengono specificate impostazioni cultura, o se nella richiesta del browser sono incluse una lingua o impostazioni cultura non supportate, i valori delle risorse vengono estratti da questo file.

Una volta creato il file di risorse, è possibile inserirvi il testo localizzato all'interno tramite l'editor di risorse.

Per modificare il file di risorse tramite l'editor di risorse

  1. In Esplora soluzioni, aprire Sample.aspx.resx.

    Nell'editor di risorse, in Valore, sono presenti le proprietà Text per ciascun controllo inserito nella pagina. La modifica del valore consentirà di modificare il valore per le impostazioni cultura predefinite.

  2. Imposta ButtonResource1.Text su Edited English Text.

  3. Salvare il file.

A questo punto è possibile eseguire il test della pagina.

Per eseguire il test della pagina

  • Premere CTRL+F5 per eseguire la pagina.

    Il testo specificato nell'editor di risorse viene visualizzato come etichetta per Button1. Quando si utilizza la localizzazione implicita, le proprietà di sintassi nel file di risorse eseguiranno l'override delle proprietà specificate nella pagina stessa.

Aggiunta di altri paesi

Ciascuna combinazione di lingua e impostazioni cultura richiede un singolo file di risorse. Per aggiungere altri paesi, è possibile utilizzare il file predefinito come punto di partenza. È possibile creare file di risorse per diversi paesi e impostazioni locali generando nuovi file di risorse in cui i codici di lingua ISO fanno parte del nome del file (ad esempio, en-us, fr-ca, and en-gb). Questi codici sono inseriti tra il nome della pagina e l'estensione del nome del file RESX. Per specificare a una lingua non associata ad alcun paese, sarebbe opportuno eliminare l'indicativo del paese, ad esempio Sample.aspx.fr.resx per la lingua francese.

Nota:

Quando si utilizza la sintassi della localizzazione implicita, è necessario creare una serie distinta di file di risorse per ciascuna pagina.

Per creare un file in lingua francese non associato ad alcun paese

  1. In Esplora soluzioni fare clic con il pulsante destro del mouse sul file Sample.aspx.resx, quindi scegliere Copia.

  2. Fare clic con il pulsante destro del mouse sulla cartella App_LocalResources, quindi scegliere Incolla.

    In Visual Web Developer viene creato un file denominato Copia di Sample.aspx.resx.

  3. Fare clic con il pulsante destro del mouse sul file Copia di Sample.aspx.resx, scegliere Rinomina , quindi digitareSample.aspx.fr.resx.

    Sample.aspx.fr.resx indica un file per il testo in lingua francese non associato ad alcun paese.

  4. Aprire Sample.aspx.fr.resx.

  5. Per i controlli Button, Label e TextBox, impostare Text rispettivamente su French Button, French Label e French TextBox.

  6. Salvare il file.

Esecuzione del test con un'impostazione della lingua alternativa

Prima di verificare se questo nuovo file di risorse viene utilizzato da ASP.NET, è necessario modificare le impostazioni del browser per richiedere le impostazioni cultura desiderate.

Per modificare le impostazioni della lingua del browser

  1. In Microsoft Internet Explorer scegliere Opzioni Internet dal menu Strumenti.

  2. Fare clic su Languages.

  3. Fare clic su Aggiungi nella finestra di dialogo Language Preference.

  4. Nella finestra di dialogo Add Language, in Languages, scegliere Francese (Francia) [fr], quindi OK.

  5. Fare clic su Aggiungi e aggiungere Spagnolo (Messico) [es-mx] all'elenco delle lingue.

  6. Fare clic su Aggiungi e aggiungere Arabo (Egitto) [ar-eg] all'elenco delle lingue.

    Lo spagnolo e l'arabo verranno utilizzate per il test più avanti nella procedura dettagliata.

  7. Nella finestra di dialogo Language Preference, in Language, scegliere Francese (Francia) [fr], Sposta su, e infine OK.

Internet Explorer viene impostato per passare fr come impostazione di lingua per qualsiasi richiesta. Con le impostazioni cultura auto nella pagina Sample.aspx, in ASP.NET si cercherà di individuare un file di risorse e relativi valori corrispondenti per la composizione della pagina in base alle preferenze di lingua e impostazioni cultura.

Per eseguire il test della pagina

  • In Visual Web Developer, premere CTRL+F5 per eseguire la pagina.

    La pagina viene aggiornata con i valori del file in lingua francese localizzato invece che della versione inglese.

    Nota:

    È possibile ripristinare le impostazioni in Internet Explorer ritornando alla finestra di dialogo Language Preference e spostandosi sulla lingua scelta nell'elenco.

Localizzazione esplicita con ASP.NET

Nella prima parte della procedura dettagliata, è stata utilizzata la localizzazione implicita di ASP.NET per consentire ai controlli di visualizzare il testo localizzato. È stato generato un file di risorse contenente i valori delle proprietà e, nel processo, è stato aggiunto un attributo a ciascun controllo indicato per inserire i valori delle proprietà, se presenti, dal file di risorse. La localizzazione implicita funziona automaticamente, pertanto non è necessario specificare proprietà per proprietà per leggere le informazioni da un file di risorse.

Tuttavia, a volte potrebbe essere necessario un controllo più diretto sulla modalità di impostazione delle proprietà e, quindi, invece della localizzazione implicita, è possibile utilizzare la localizzazione esplicita. Con la localizzazione esplicita viene impostato il valore di una proprietà tramite un'espressione che punta a un file di risorse. Durante l'esecuzione della pagina viene valutata l'espressione, viene letto il valore dal file di risorse, quindi viene utilizzato il valore per impostare la proprietà.

La localizzazione è utile in presenza di un ampio corpo di testo o di messaggi personalizzati da localizzare, oltre a controlli ed etichette. È possibile, ad esempio, sviluppare una serie di messaggi di benvenuto e di ringraziamento per un sito di commercio elettronico e, quindi, utilizzare espressioni dichiarative esplicite per inserire questo testo nelle proprie pagine. La localizzazione esplicita, inoltre, consente di mantenere un singolo insieme di file di risorse localizzati invece di un insieme distinto di file per ciascuna pagina.

In questa sezione verranno creati manualmente file di risorse a cui verrà creato un riferimento tramite la sintassi dell'espressione dichiarativa di ASP.NET. Verrà creato un file di risorse per un semplice messaggio di ringraziamento. A differenza della finestra di progettazione, non viene richiesto un file di risorse distinto per ciascuna pagina ASP.NET.

LocalizedText sarà il nome base del file di risorse. Per ciascuna lingua da localizzare, verrà creato un altro file con il codice di lingua appropriato (ed eventualmente il codice di impostazioni cultura) come parte del nome del file. Per l'inglese americano, ad esempio, è possibile creare un file denominato LocalizedText.resx; mentre per il francese del Canada, è possibile creare un file denominato LocalizedText.fr-ca.resx. Entrambi i file possono essere inseriti nella directory Risorse della propria applicazione Web. A differenza dell'esempio implicito precedente, non è necessario gestire un file di risorse per ciascuna pagina aspx ma, piuttosto, una singola serie di file per tutte le lingue o le impostazioni cultura supportate.

Per creare un file di risorse

  1. In Esplora soluzioni, fare clic con il pulsante destro del mouse sulla directory principale del sito Web, scegliere la cartella Add ASP.NET, quindi App_GlobalResources.

  2. Fare clic con il pulsante destro del mouse sulla cartella App_GlobalResources, quindi scegliere Aggiungi nuovo elemento.

  3. In Modelli Visual Studio installati fare clic su File di risorse.

  4. Digitare LocalizedText.resx nella casella Nome, quindi fare clic su Aggiungi.

    Il file LocalizedText.resx avrà la funzione della risorsa per le impostazioni cultura di fallback.

  5. Creare un secondo file RESX e denominarlo LocalizedText.fr.resx.

    La stringa "fr" consente di identificare il file come risorsa da utilizzare se la lingua del browser è impostata su Francese (indipendentemente dalle impostazioni cultura).

  6. Creare un terzo file RESX e denominarlo LocalizedText.es-mx.resx.

    La stringa "es-mx" consente di identificare il file come risorsa da utilizzare se la lingua del browser è impostata su Spagnolo (Messico).

  7. Aprire il file LocalizedText.resx.

  8. Nella prima riga della colonna Nome, digitare Msg1.

  9. Nella prima riga della colonna Valore, digitare Hello..

  10. Salvare e chiudere il file.

  11. Aprire il file LocalizedText.fr.resx, creare una stringa di risorsa denominata Msg1, a cui viene assegnato il valore Bon jour. Al termine, salvare e chiudere il file.

  12. Aprire il file LocalizedText.es-mx.resx, creare una stringa di risorsa denominata Msg1, a cui viene assegnato il valore Buenos días. Al termine, salvare e chiudere il file.

    Nota:

    Per inserire la lettera con accento acuto (í), digitare ALT+0237 sul tastierino numerico con Bloc Num attivato.

    Sono stati creati tre valori per la risorsa denominata Msg1. In ASP.NET verrà letto il valore esterno al file di risorse appropriato in base alla lingua su cui è impostato il browser.

Una volta creato il file di risorse, è possibile ritornare alla pagina e aggiungere i controlli che faranno riferimento alla risorsa.

Per aggiungere un controllo Label alla pagina

  1. Passare a Sample.aspx, quindi alla visualizzazione Progettazione.

  2. Trascinare un altro controllo Label nella pagina.

  3. Fare clic con il pulsante destro del mouse sul controllo Label, scegliere Proprietà, quindi fare clic sul pulsante con i puntini di sospensione (...) nella casella Espressioni.

    Verrà visualizzata la finestra di dialogo Espressioni.

  4. Scegliere Text dall'elenco Proprietà associabili,

  5. Scegliere Risorse dall'elenco Tipo di espressione.

  6. In Expression Properties, impostare ClassKey su LocalizedText e ResourceKey su Msg1.

  7. Scegliere OK.

  8. Passare alla visualizzazione Origine.

    L'attributo del testo dell'etichetta presenta un'espressione esplicita che indica il file di base da cui recuperare la risorsa e il tasto da selezionare.

    <asp:Label ID="Label2" Runat="server" Text="<%$ Resources:LocalizedText, Msg1 %>">
    
    Nota:

    L'attributo LocalizedText non dispone di alcun indicatore di lingua, impostazioni cultura o estensione RESX poiché non si tratta del nome del file effettivo. Questo attributo LocalizedText rappresenta invece la classe di risorsa base. In base alle impostazioni cultura inviate dal browser, in ASP.NET verrà selezionata la risorsa esterna al file con il codice di lingua o di impostazioni cultura appropriato all'interno del relativo nome file, ad esempio LocalizedText.fr.resx, LocalizedText.es-mx.resx o, se non viene rilevata alcuna lingua corrispondente, LocalizedText.resx.

Dopo aver completato il file di risorse e aver aggiunto l'espressione dichiarativa, è possibile eseguire il test della pagina. Al termine dell'ultimo test, il browser è stato impostato per indicare il francese come preferenza di lingua. Durante l'esecuzione del test, diverse volte verrà modificata la lingua del browser.

Per eseguire il test della pagina

  1. Premere CTRL+F5 per eseguire la pagina.

    La versione in francese del testo specificato nell'editor di risorse viene visualizzato come testo per il controllo Label.

  2. In Microsoft Internet Explorer scegliere Opzioni Internet dal menu Strumenti.

  3. Fare clic su Languages.

  4. Nella finestra di dialogo Language Preference, spostarsi su Spagnolo (Messico) [es-mx] all'inizio dell'elenco delle lingue. Al termine, scegliere OK e chiudere la finestra di dialogo Opzioni Internet.

  5. Premere F5 per aggiornare il browser.

    Viene visualizzata la versione spagnola del testo.

  6. Modificare la lingua selezionando Arabo e premere CTRL+F5 per aggiornare di nuovo la pagina.

    In questo caso il testo viene visualizzato nella lingua utilizzata nel file di risorse fallback. Dal momento che non è stato creato un file LocalizedText.ar-eg.resx, in ASP.NET non è possibile individuare il testo corrispondente alla lingua e alle impostazioni cultura indicate dal browser, pertanto viene utilizzato il file di risorse fallback.

  7. Dopo aver eseguito il test della pagina, ripristinare nuovamente le impostazioni della lingua preferita.

Passaggi successivi

La localizzazione può rivelarsi un'operazione complessa. In questa procedura dettagliata sono state illustrate alcune funzionalità di Visual Web Developer che possono semplificare il lavoro. È possibile accedere ad ulteriori informazioni sulla localizzazione e su ASP.NET. Ad esempio, possono essere necessarie:

  • Ulteriori informazioni sull'utilizzo delle risorse nelle proprie applicazioni. Per informazioni dettagliate, vedere Risorse nelle applicazioni.

  • Utilizzo di classi che definiscono le informazioni relative alle impostazioni cultura, tra cui la lingua, il paese o la regione, i calendari utilizzati, i formati delle date, della valuta e dei numeri, nonché il criterio di ordinamento delle stringhe. Per informazioni dettagliate, vedere System.Globalization.

  • Ulteriori informazioni sull'utilizzo durante la codifica per un pubblico globale. Per informazioni dettagliate, vedere Suggerimenti per lo sviluppo di applicazioni internazionali.

Vedere anche

Concetti

Uso della classe CultureInfo

Altre risorse

Codifica e localizzazione

Spazi dei nomi di globalizzazione e localizzazione in Visual Studio