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
Short-circuiting della Pipeline in ASP.NET Core
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Load test di ASP.NET Core con k6
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Implementare il throttling in ASP.NET Core
Effettuare il binding di date in Blazor
I più letti di oggi
- annunciato #netstandard 2.1. .NET Core lo supporterà a partire da #netcore3, così come le prossime versione di #xamarin, #mono e #unity.il supporto per #netfx 4.8, invece, non ci sarà. https://aspit.co/bq2
- Annunciato Silverlight 4 RC e Windows Phone Developer Tools
- Speciale Razor: il nuovo view engine di WebMatrix e ASP.NET MVC
- Speciale Windows Store app: costruire app con WinRT per Windows 8
- Gestire lo stato all'interno di un class component di ReactJS
- Inserimenti bulk su database con la classe SqlBulkCopy di ADO.NET 2.0
- disponibile su MSDN la versione RTM di #VS2013 Update 2! https://aspit.co/auj #msTechEd