Localizzazione e globalizzazione di applicazioni web - Prima parte

4 pagine in totale: <<Indietro 1 2 3 [4]

Figura 18.6

Figura 18.6 - La struttura dei file di risorse globali

Anche le risorse globali possono essere collegate con i controlli in modalità dichiarativa nell'HTML. Tuttavia, per le risorse globali il meccanismo di binding con i controlli è molto diverso sia da un punto di vista architetturale che sintattico.

Mentre con le risorse locali si esegue il binding di un intero controllo, con le risorse globali si lega solo una singola proprietà ad una chiave del file. Inoltre, non si utilizzano meta-attributi di compilazione, ma una sintassi, detta espressione esplicita, che fa uso degli ExpressionBuilder (vedi capitolo 12).


Esempio 18.4
<asp:button id="btn" runat="server" text="<%$Resources: PrimaryRes, Chiave %>" />

L'esempio 18.4 mostra la sintassi che collega la proprietà Text di un bottone alla parola "Chiave" contenuta nel file PrimaryRes. Si noti l'uso dell'ExpressionBuilder identificabile tramite la stringa "<%$" seguita dal tipo utilizzato (Resources per le risorse) e dai nomi del file globale e della chiave separati dalla virgola.

È possibile accedere alle risorse globali anche in modo programmatico, ma, a differenza di quelle locali, esse offrono un accesso sia generico che tipizzato.

Nel machine.config è registrato il BuildProvider ResXBuildProvider che genera tante classi quanti sono i file di fallback nella cartella /App_GlobalResources/ ed ognuna di queste classi contiene tante proprietà quante sono le chiavi contenute nel file. Il tutto viene racchiuso nel namespace Resources per offrire una maggior organizzazione. Prendendo in esame l'esempio precedente, si può ottenere lo stesso risultato da codice come mostrato nell'esempio 18.5.


Esempio 18.5 - VB
btn.Text = Resources.SecondaryRes.Chiave

Esempio 18.5 - C#
btn.Text = Resources.SecondaryRes.Chiave;

Per offrire un modello di programmazione completo, è stata aggiunta anche l'API GetGlobalResourceObject sia per la classe TemplateControl che per la classe HttpContext il cui beneficio è stato descritto già nel paragrafo precedente.


Esempio 18.6 - VB
btn.Text = GetGlobalResourceObject("SecondaryRes", "Chiave")
btn.Text = HttpContext.GetGlobalResourceObject("SecondaryRes", "Chiave")

Esempio 18.6 - C#
btn.Text = GetGlobalResourceObject("SecondaryRes", "Chiave");
btn.Text = HttpContext.GetGlobalResourceObject("SecondaryRes", "Chiave");

Figura 18.7

Figura 18.7 - Editor delle proprietà che visualizza le proprietà localizzate

Nell'esempio 18.6 il metodo accetta in input il nome del file come primo parametro e, come secondo, la chiave.

Visual Studio 2005 non offre alcun meccanismo per creare e valorizzare i file di risorse globali, ma mette a disposizione lo stesso Editor di risorse. Per quanto riguarda l'Editor di proprietà, gli elementi collegati ad una risorsa globale vengono marcati con un'icona di colore blu accanto al nome e mostrano un altro tooltip, come visibile nella figura 18.7.

L'Editor di proprietà permette di collegare in maniera visuale una chiave globale con una proprietà di un controllo attraverso l'apposita sezione Expressions.

Figura 18.8

Figura 18.8 - L'editor per collegare una proprietà ad una chiave globale

Un controllo può essere localizzato tramite risorse locali e globali contemporaneamente, tuttavia bisogna tenere in mente che quando si utilizza la generazione automatica dei file di risorse, le proprietà che sono già collegate ad una chiave globale sono automaticamente ignorate e non vengono inserite nel file locale.

L'articolo continua nella seconda parte in linea tra due settimane.

4 pagine in totale: <<Indietro 1 2 3 [4]

Attenzione: Questo articolo contiene un allegato

Contenuti dell'articolo

Commenti
Dai un voto a questo articolo, ci aiuterà a migliorare il nostro sito (1 è il voto minimo, 5 il massimo).

Per procedere al rating dell'articolo devi essere autenticato.
ridaria scrive:
Localizzazione e globalizzazione di applicazioni web - Prima parte

Ottimo preciso e dettagliato come ti avevo già detto un pò di tempo fa. Allora ti chiesi:e se volessi inserire comunque il classico pulsantino o ...
giovedì 15 maggio 2008 | 3 risposte

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.


TUTORIALS
TOP TEN ARTICOLI
NOTIFICHE

Iscriviti alla nostra newsletter nuoviarticoli per ricevere e-mail le notifiche!

Indirizzo e-mail:
PROVIDER ASP.NET 2.0

Seleziona il database per avere il web.config pronto per Membership, Roles e Profile API.



IN EVIDENZA
MISC