Localizzazione e globalizzazione di applicazioni web - Prima parte

di Stefano Mostarda, in ASP.NET 2.0,


Questo articolo è tratto dal capitolo 18 (Localizzazione e globalizzazione di applicazioni web) del libro ASP.NET 2.0 per tutti di Daniele Bochicchio, Cristian Civera, Riccardo Golia e Stefano Mostarda.

Acquista la tua copia col 10% di sconto!

Il mercato sta diventando sempre più globale e questo ha spinto moltissime aziende in tutto il mondo a munirsi di siti web in diverse lingue per farsi conoscere in qualunque parte del globo. Questa soluzione è stata più che sufficiente per un certo periodo, ma i rapidi cambiamenti delle esigenze e l'evoluzione delle tecnologie legate ad Internet hanno costretto molte società a trasportare anche il proprio sistema informativo sul web. Per venire incontro a qualunque tipo di clientela, anche queste applicazioni devono essere visualizzabili in diverse lingue. La costruzione dell'interfaccia internazionalizzata è sempre stata un compito molto impegnativo da considerare alla stessa stregua di un modulo dell'applicazione. Con ASP.NET 2.0, la situazione è notevolmente migliorata: nuovi controlli, nuove funzioni all'interno di Visual Studio 2005 e nuove API rendono la localizzazione un processo estremamente più semplice, veloce e, soprattutto, estendibile rispetto al passato.

Caratteristiche principali

Il sistema di localizzazione di ASP.NET 1.x è abbastanza povero di feature ed è per questo motivo che nella nuova versione è stato notevolmente migliorato. Il progetto che sta dietro a quella che si può definire una vera rivoluzione, pur mantenendo la compatibilità con il passato, si è prefisso mete molto ambiziose. In fase di studio dell'architettura, gli obiettivi principali sono stati i seguenti:

  • creazione di API per la gestione delle risorse in fase programmatica;
  • accesso tipizzato ai dati;
  • introduzione di una sintassi dichiarativa per impostare i controlli con valori localizzati;
  • rilevamento automatico della lingua di default del browser ed impostazione della cultura del thread con questo valore;
  • gestione automatica della classe che legge i dati localizzati;
  • creazione di utility per la generazione e la manutenzione dei dati;
  • semplificazione del processo di deployment;
  • estendibilità per supportare più sistemi di memorizzazione.

Grazie alla realizzazione di nuove caratteristiche nel .NET Framework ed alcuni tool presenti in Visual Studio 2005, gli obiettivi elencati sono stati raggiunti nella seguente maniera:

  • API GetLocalResourceObject e GetGlobalResourceObject per accedere alle risorse da codice;
  • BuildProvider per creare classi che forniscono l'accesso tipizzato alle risorse globali;
  • espressioni di localizzazione che permettono di definire nell'HTML i controlli da internazionalizzare;
  • rilevamento automatico della lingua di default del browser e conseguente impostazione del thread;
  • ciclo di vita della classe ResourceManager completamente gestito dal framework;
  • editor di risorse per creare e modificare i file che contengono i dati;
  • deployment tramite XCOPY;
  • utilizzo del Provider Model per attingere dati da altri sistemi di memorizzazione come file XML o database.

Queste caratteristiche permettono di gestire, in tempi brevi, la localizzazione sia per piccoli siti che per scenari enterprise. L'estendibilità assicura anche la possibilità di fornire una propria implementazione scavalcando qualunque problema si riscontri con la versione di default.

File di risorse

Come detto poc'anzi, la localizzazione è completamente basata sul Provider Model. ASP.NET fornisce un'implementazione che salva i dati tradotti nei cosiddetti file di risorse che altro non sono che documenti XML di coppie chiave-valore. Le tipologie di dati che possono essere immagazzinati non sono solo stringhe, ma anche numeri, booleani, immagini, audio, anche se questi ultimi sono inseriti come collegamenti a file esterni e non come dati serializzati.

Una cosa molto importante da tenere in mente è rappresentata dal fatto che ogni file di risorse può contenere informazioni relative ad una sola cultura, con la conseguenza che devono esistere tanti file quante sono le lingue.

Per poter essere correttamente interpretati sia dal run-time di ASP.NET che da Visual Studio 2005 in fase di Design-Time, i file di risorse devono seguire delle linee guida ben precise sulla nomenclatura: il nome deve terminare con il codice ISO della cultura che specifica, seguito dall'estensione .resx. Ad esempio, il file con i dati relativi all'inglese deve terminare con .en.resx (la parte iniziale del file è volutamente occultata in quanto dipende da alcuni fattori che vengono mostrati più avanti).

Come ulteriore personalizzazione, si può decidere di creare diverse risorse in base non solo alla lingua, ma anche allo stato; basta pensare che l'inglese viene parlato in diverse parti del mondo e che tra queste ci sono molte diversità. In questi casi si creano due file distinti che seguono una nomenclatura leggermente diversa con il nome della cultura seguito dal codice ISO dello stato: .en-US.resx per gli Stati Uniti ed en-GB.resx per la Gran Bretagna.

ASP.NET 2.0 permette di impostare automaticamente la cultura del thread che esegue la richiesta con quella del browser, con il rischio, però, che questa non sia gestita dall'applicazione (ad esempio, un utente che utilizza il browser in tedesco accede ad un sito che gestisce solo italiano ed inglese). In questi casi la soluzione è impostare uno dei file di risorse esistenti come default semplicemente eliminando dal nome ogni riferimento alla cultura, lasciando solo l'estensione. Questo file è normalmente denominato file di fallback. Ovviamente, le risorse di fallback devono appartenere tutte alla stessa cultura così che un sito visitato da qualcuno che ha il browser impostato su una lingua non gestita, veda comunque tutto in una sola lingua.

Visual Studio 2005 ha migliorato molto l'editor per le risorse dando la possibilità di inserire qualunque cosa nel file in maniera molto semplice e rendendo la fase di manutenzione una cosa molto banale.

Figura 18.1

Figura 18.1 - L'editor di stringhe di Visual Studio 2005

Figura 18.2

Figura 18.2 - Le possibilità offerte dall'editor di risorse.

Con ASP.NET 2.0 sono state introdotte due tipologie di file: locali e globali. Entrambi assolvono una funzione analoga, ma in due modi completamente differenti, sia dal punto di vista dell'approccio concettuale che da quello della sintassi e manutenzione.

4 pagine in totale: 1 2 3 4

Attenzione: Questo articolo contiene un allegato.

Contenuti dell'articolo

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Approfondimenti