Alucne idee per la localizzazione...

In questi giorni, chissa perchè, sento molto parlare della localizzazione delle applicazioni
web e siccome anche io tempo fa avevo affrontato il problema per un cliente che voleva un sito
in 3 lingue, oggi vi proponga una soluzione e mezza!

La soluzione "di default" e proposta/integrata in .NET è quella dell'uso dei file di risorsa.
Ossia...

Mi creo tanti bei file di risorsa (resx), uno per ogni lingua, che altro non sono che una
raccolta di variabili stringa in cui mappo (nomeOggetto, valore) tutte (ma proprio tutte)
le scritte che andranno sul sito (label,button, ecc...).

Creo la form aspx che dovrà essere mostrata nella lingua corretta (in base alle impostazioni
del browser dell'utente) e nel metodo Page_Load della pagina scrivo:

//...
ResourceManager LocRM;   // Oggetto che accede ai file delle risorse
// Imposto la lingua dell'utente (qui la prendo dall'oggetto Request.UserLanguages)
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(Request.UserLanguages[0]);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(Request.UserLanguages[0]);
// Istanzio il Resource manager
LocRM= new ResourceManager("LocProject.strings", typeof(WebForm1).Assembly);
// Setto il valore dei campi della WebForm
Button1.Text = LocRM.GetString("txtButton1");
//...

Questo è quanto basta per rendere la pagina multilingua in modo dianamico.

Altre modifiche/migliorie che si possono apportare? Beh io tanto per cominciare metteri
tutta la parte di codice scritta sopra in una classe MyPage : Page e farei ereditare
tutte le pagine dal sito da MyPage...almeno evito di riscrievrmi tutte le volte il
codice sopra. Naturalmente in questo modo devo andare a cercarmi i controlli in modo
dinamico andando ricorsivamente sulle collezioni Controls dei vari controlli...ma ne
vale la pena.


E se il cliente ti dice "Però le pagine le voglio tradurre io e voglio avere la
possibilità di aggiungere/rimuovere le lingue a seconda del mercato....." (!!!)

In questo caso l'idea delle risorse mi piace un po' di meno visto che il file
delle risorse è compilato e dubito che un cliente se lo possa fare da solo
senza conoscere "l'arte della programmazione".
Quindi?

Io avevo pensato ad una libreria di controlli web multilingua
(MultiLanguageButton : Button,...) che si "auto-settano" sulla lingua
corretta utilizzando un database come risorsa....ma questa è un'altra
storia e magari la prossima volta ve la racconto. (Sempre che interessi a qualcuno!).

Ciao a tutti....happy code!

Print | posted on sabato 20 settembre 2003 12:11