Riprendendo il post precedente, dove ho tradotto l’UI di una Windows Form, continuo a trattare la traduzione di un’applicazione. Dopo aver tradotto la UI grazie alle proprietà Localizable e Language, resta da tradurre tutta quella parte di codice non visibile direttamente nelle UI, per esempio stringhe di alert. Per fare questo sono necessari diversi passi. Per prima cosa creiamo due file di risorse (aggiungi nuovo elemento -> file di risorse) .resx chiamati rispettivamente Vocabularyen-US.resx e Vocabularyit-IT.resx. Questi files rappresenteranno i nostri vocabolari. In Visual Studio 2005, cliccando su uno dei due, si nota che ognuno di essi è composta da accoppiamenti NOME – VALORE – COMMENTO. In pratica questi file di risorsa rappresenteranno i nostri vocabolari.

Facciamo un esempio pratico:
Inseriamo nel vocabolario italiano la seguente coppia NOME – VALORE: GREETING – CIAO.
Inseriamo nel vocabolario inglese la seguente coppia NOME – VALORE: GREETING – HELLO.

Ora passiamo al codice. Nel codice di una nostra WF, ipotizziamo di avere un elemento button ed uno label. Vogliamo che il testo del label ci faccia apparire il saluto nella nostra lingua (lingua del sistema operativo in uso).

System.Reflection.Assembly myAssembly = System.Reflection.Assembly.GetExecutingAssembly();
string cultureName = Thread.CurrentThread.CurrentUICulture.Name;
ResourceManager resMan = new ResourceManager("MultilanguageProject.Vocabulary" + cultureName, myAssembly);
string msg = resMan.GetString("GREETING");
label1.text = msg;

Ecco fatto! Si utilizza il ResourceManger per accedere alla nostra risorsa Vocabulary contenuta nel progetto MultilanguageProject. Il nome Vocabulary viene concatenato al codice della lingua del SO: it-IT o en-US.
In questo modo si utilizza molto elegantemente il codice, evitando ad esempio di utilizzare database per ogni lingua.

Se i miei post ti sono stati di aiuto o ti sono sembrati intressanti puoi offrirmi un caffè :)