C#

Programmazione c# Visual Studio

Applicazione multilingue C#

1

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è :)

Progettazione

Tradurre con l’IDE una Windows Form

0

Durante la scrittura di una piccola applicazione mi è balenata questa idea: se un cliente o chiunque altro volesse la nostra applicazione in un altra lingua? Qual’è il sistema migliore per fare ciò?
L’IDE ci da una mano. Creiamo una semplice Windows Form con controlli come buttons, labels ecc ecc. Scriviamo i rispettivi text di questi controlli in lingua inglese. Come fare per tradurre la nostra UI (User Interface) in Italiano? Nelle proprietà del form, nel gruppo “Progettazione” va impostata la proprietà Localizable a true. Progettazione

Fatto questo clicchiamo sulla proprietà Language e selezioniamo la lingua in cui vogliamo tradurre la nostra interfaccia grafica, nel nostro caso Italiano. Da questo momento in poi possiamo cominciare a tradurre liberamente tutto quello che nella UI abbiamo scritto in Inglese a design-time. Switchando nella proprietà language tra Italiano e quella Predefinita vedremo cambiare la lingua. Se facciamo il debug dell’applicazione, come per magia la nostra UI ci apparirà in italiano, questo perchè state su un sistema operativo in Italiano!
Tutto il codice è contenuto nella InitializeComponent() della WF, generato dall’IDE di Visual Studio

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

Torna all'inizio