Dopo aver visto l'overview, il db, e i controlli, ecco ora come mettere il tutto inseme e creare una pagina multilingua.
Prima di tutto ho creato una classe base da cui far ereditare tutte le mie pagine e nell'evento OnPreRender ho aggiunto un metodo LocalizePage();
private void LocalizePage(){
foreach (Control control in GetLocalizableControls()){
if (control is GruppoNet.Web.UI.ISingleLocalizable){
((ISingleLocalizable)control).LocalizationText = GetLocalizedString((ISingleLocalizable)control).LocalizationCode);
}
else
{
((IMultipleLocalizable)control).LocalizationText = GetLocalizedArray((IMultipleLocalizable)control).LocalizationCode);
}
}
}
Il metodo GetLocalizableControls scorre l'albero della pagina e ritorna tutti i controlli che implementano l'interfaccia ILocalizable. Per ogni controllo, a seconda dell'interfaccia che implementa, viene chiamato un metodo (GetLocalizedString o GetLocalizedArray) che estrae la lingua da un cookie ed esegue un lookup sul db o in cache se i dati sono già stati caricati per trovare la stringa tradotta.
protected string GetLocalizedString(string localizationCode){
NameValueCollection translations = GetLocalizedData();
if (translations[localizationCode] == null)
return null;
else
return translations[localizationCode];
}
Il metodo GetLocalizedData si occupa di ricercare i dati da db e caricarli sulla cache per un veloce accesso. Mettendo tutto insieme si ha la possibilità di avere un framework di base per rendere le nostre applicazioni multilingua in maniera dichiarativa senza ricorrere a modifiche nel codice. L'unica cosa da modificare è la classe da cui le nostre pagine derivano.
Stay tuned...
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
- Entity Framework è lento! mmmmh, probabilmente sei tu che lo stai usando male!, il 7 ottobre 2022 alle 10:55
- Cosa penso di ASP.NET vNext, il 3 settembre 2014 alle 09:00
- E così AngularJS e DurandalJS convergono..., il 7 maggio 2014 alle 11:51
- Usare fiddler per simulare le risposte da un servizio, il 28 ottobre 2013 alle 08:00
- Tip: cosa fare quando Entity Framework Code-First Migrations smette di funzionare, il 18 gennaio 2013 alle 11:04
- Visual Studio 11 beta: le novità di Entity Framework 5.0 e WCF 4.5, il 2 marzo 2012 alle 23:08