Le funzionalità di localizzazione offerte da ASP.NET sono state potenziate nella versione 2.0, per offrire una maggiore possibilità di fornire applicazioni in più lingue.
Il sistema più semplice è quello di utilizzare i file di risorse locali, che sono specifici di ogni pagina.
Per utilizzare questa funzionalità è necessario inserire i file di risorse sotto la nuova directory di sistema denominata /App_LocalResources/, sotto la root.
I file devono avere lo stesso nome della pagina, con l'estensione .resx.
Ad esempio il file principale dovrà chiamarsi default.aspx.resx, mentre quello contenente le risorse in inglese, dovrà chiamarsi default.aspx.en.resx e così via.
Successivamente è possibile aggiungere una chiave in entrambi i file di risorse, ad esempio denominata WelcomeString, e richiamarne il valore attraverso il nuovo Expression Builder
<%$Resources%>
in questo modo:
<asp:Label ID="lblWelcome" runat="server" Text="<%$ Resources:WelcomeString%>" />
Oltre a poter definire i file in maniera privata per la pagina, è anche possibile farlo in maniera centralizzata. In questo caso la directory dove salvare i file di risorse è /App_GlobalResources/ e la nomenclatura da dare ai file è la stessa (ad esempio Strings.resx).
In questo caso la sintassi è leggermente diversa, dato che deve contenere anche il nome della classe generata a partire dal file di risorse, così:
<asp:Label ID="lblWelcome" runat="server" Text="<%$ Resources: Strings, WelcomeString%>" />
Esiste infine la possibilità di utilizzare questa nuova sintassi:
<asp:Label ID="lblWelcome" runat="server" meta:resourcekey="lblWelcomeString" />
In questo caso sarà necessario dare nel file di risorse un nome alla risorsa del tipo "lblWelcomeString.Text", poichè sarà applicata direttamente la proprietà corrispondente nel controllo. Ovviamente questa tecnica vale per tutti i controlli.
Infine, per evitare di utilizzare controlli di tipo Label, ASP.NET 2.0 introduce un nuovo controllo, denominato Localize, che serve proprio per contenere queste espressioni, da utilizzare in questo modo:
<asp:Localize runat="server" Text="<%$ Resources:WelcomeString%>" />
La CultureInfo può essere applicata in maniera programmatica, attraverso un'istruzione di questo tipo:
System.Threading.Thread.CurrentThread.CurrentUICulture= new CultureInfo("en-us");
oppure demandare la scelta ad ASP.NET, con queste istruzioni da salvare nel web.config:
<globalization uiCulture="auto" enableClientBasedCulture="true" />
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Effettuare il binding di date in Blazor
Short-circuiting della Pipeline in ASP.NET Core
Implementare il throttling in ASP.NET Core
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Load test di ASP.NET Core con k6
I più letti di oggi
- I nuovi metodi degli array di ECMAScript 5
- Evitare (o ridurre) il repo-jacking sulle GitHub Actions
- Un custom control BoundField con dropdownlist
- .NET Core 3, C#8 and beyond
- Utilizzare long polling in HTML5 per richieste in real time
- Utilizzare le shortcut da tastiera con KeyboardAccelerator nella Universal Windows Platform
- Microsoft Security Bulletin MS05-048