Nello script 1081 abbiamo affrontato la problematica della localizzazione di un sito ASP.NET, mostrando in particolare come la soluzione sia quella di sfruttare i file di risorse, compilati come Embedded Resource.
Il problema di questo approccio, però, è che questi file vengono inclusi all'interno dell'assembly e, pertanto, ogni modifica richiede una nuova compilazione. Soprattutto nel caso di applicazioni complesse, però, la traduzione dei testi viene affidata a individui terzi, magari non sviluppatori, e che tipicamente non hanno a disposizione Visual Studio. Per questa ragione, e anche per avere una certa flessibilità nella modifica, è preferibile effettuare il deploy dei singoli file .resx, che non sono altro che file XML e, pertanto, facilmente editabili anche con un tool quale Notepad.
Cosa dobbiamo cambiare nel nostro progetto per poter supportare questo scenario? Il primo passo è, intanto, quello di impostare la Build Action di questi file a Content, avendo cura anche di rimuovere il custom tool che si occupa della generazione automatica della corrispondente classe C#, visto che quest'ultima non sarà più utilizzabile.

Per accedere al contenuto dei file di risorse possiamo sfruttare il metodo GetGlobalResourceObject della classe HttpContext, ad esempio realizzando una classe simile alla seguente:
public static class Resoruces { public static string MyString { get { return GetValue("MyString"); } } private static string GetValue(string key) { return HttpContext.GetGlobalResourceObject("MyResourceFile", key) as string; } }
Con questo approccio, l'unica necessità in fase di deploy è quella di copiare i file di risorse (nel nostro esempio, MyResourceFile.resx, MyResourceFile.it-IT.resx, ecc.) all'interno della cartella App_GlobalResources.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Sviluppare applicazioni con supporto al doppio schermo con Xamarin
Aggiungere una GIF in un'applicazione Xamarin Forms
Windows and app development with MAUI
Un componente per mantenere lo stato dell'applicazione in Blazor
Configurare una pipeline YAML per calcolare le release notes in Azure DevOps
Le novità di .NET 5
The .NET 5 & C# 9 Show
Eseguire lo shutdown pulito di un'applicazione ASP.NET Core
Abilitare l'uso di C# 9 nelle applicazioni Xamarin.Forms
Utilizzare .NET Core con AWS Lambda
Progressive Web Apps with Blazor and Azure
Cambiare il DNS da utilizzare negli Azure App Service
I più letti di oggi
- Cancellare automaticamente una pipeline YAML di Azure DevOps
- Future Decoded - Roma
- Microsoft lancia Windows 7 e Office 14
- Tutte le novità da Microsoft: segui live con noi Build12 da Redmond!
- Nasce DOpsItalia.com: tutto su DevOps e container
- Ed ora, anche Windows .NET Server Developer Resource
- Mono 0.13: ora anche web services
- Nasce il .NET italian user group