PDA

View Full Version : [C#] menù bilingue


CL4UD1O83
15-04-2010, 17:47
Ciao,
che voi sappiate è possibile avere dei menù con doppia lingua in una Windows Form? In particolare avrei bisogno cinese e inglese. Ho installato i caratteri cinesi ma non riesco a visualizzarli nella form. Inoltre sarebbe ancora più bello se si potesse scegliere quale lingua visualizzare...
Grazie in anticipo

gugoXX
15-04-2010, 20:10
Ciao,
che voi sappiate è possibile avere dei menù con doppia lingua in una Windows Form? In particolare avrei bisogno cinese e inglese. Ho installato i caratteri cinesi ma non riesco a visualizzarli nella form. Inoltre sarebbe ancora più bello se si potesse scegliere quale lingua visualizzare...
Grazie in anticipo

E' tutto praticamente automatico.
Se vai sulle proprieta' di una form, trovi anche la lingua, solitamente default.
Scegli inglese, e scrivi il testo di tutte le label, menu', pulsanti, etc.
Poi scegli Cinese, e riscrivi tutto in cinese.
A Runtime il programma mostrera' il set di risorse relativo alla lingua installata sul sistema operativo. Meglio, quella scelta dal pannello "International Options" di Windows.
In questo modo benefici dell'automatismo, altrimenti puoi forzare la lingua per il tuo solo applicativo.
Grande vantaggio e' che avrai file di risorse separati per ciascuna lingua.
Potrai infatti scrivere il solo inglese, darlo ad un traduttore, istruirlo su come preservare il formato del file (E' un file XML), chiedere la traduzione delle sole parole al di fuori dei tag, importare il nuovo file nel programma, senza colpo ferire.

CL4UD1O83
16-04-2010, 09:51
Fantastico, grazie! Non pensavo che si potesse fare una cosa del genere. Peccato che ho paura che sia praticamente impossibile per un traduttore capire qualcosa dal file XML perchè ho visto che contiene proprio tutto quello che concerne il disegno del form, non solo nomi dei pulsanti, etichette, menù ecc.

gugoXX
16-04-2010, 10:22
Fantastico, grazie! Non pensavo che si potesse fare una cosa del genere. Peccato che ho paura che sia praticamente impossibile per un traduttore capire qualcosa dal file XML perchè ho visto che contiene proprio tutto quello che concerne il disegno del form, non solo nomi dei pulsanti, etichette, menù ecc.

Il file XML delle risorse di lingua contiene una intestazione iniziale, e poi di fila tutti tag con tutte le descrizioni.
E' sufficiente istruire il traduttore chiedendogli di non toccare nulla all'interno dei tag <qqwer> ma solo i contenuti dei tag
<qwer>Tocca qui</qwer>

Ci sono comunque programmi di aiuto alle traduzioni delle risorse, che leggono quei file, presentano tutte e sole le stringhe da tradurre, scrivono file analoghi, etc.

tomminno
16-04-2010, 10:46
Fantastico, grazie! Non pensavo che si potesse fare una cosa del genere. Peccato che ho paura che sia praticamente impossibile per un traduttore capire qualcosa dal file XML perchè ho visto che contiene proprio tutto quello che concerne il disegno del form, non solo nomi dei pulsanti, etichette, menù ecc.

Al traduttore passi il tuo file di risorse in inglese e gli dai anche Resourcer scaricabile da qui: http://www.lutzroeder.com/dotnet/
Il traduttore utilizzerà l'interfaccia grafica per inserire le voci senza dover mai vedere l'xml sottostante.

CL4UD1O83
16-04-2010, 12:35
Il file XML delle risorse di lingua contiene una intestazione iniziale, e poi di fila tutti tag con tutte le descrizioni.
E' sufficiente istruire il traduttore chiedendogli di non toccare nulla all'interno dei tag <qqwer> ma solo i contenuti dei tag
<qwer>Tocca qui</qwer>

Ci sono comunque programmi di aiuto alle traduzioni delle risorse, che leggono quei file, presentano tutte e sole le stringhe da tradurre, scrivono file analoghi, etc.

Scusa se ne approfitto ma se io ad esempio ho un form Form1.cs e apro Form1.it.resx dentro trovo un'infinità di tag tutti del tipo <data>afdafd</data> ma non sono tutti da tradurre.

Ad esempio posto 4 righe qualunque:
<data name="windowsToolStripMenuItem.Size" type="System.Drawing.Size, System.Drawing">
<value>58, 20</value>
</data>

<data name="label2.Text" xml:space="preserve">
<value>Paper Grade:</value>
</data>

<data name=">>barcodeReaderToolStripMenuItem.Name" xml:space="preserve">
<value>barcodeReaderToolStripMenuItem</value>
</data>

<data name="label4.Text" xml:space="preserve">
<value>Basis Weight:</value>
</data>

<data name=">>label3.ZOrder" xml:space="preserve">
<value>11</value>
</data>

Ho sbagliato file?

Al traduttore passi il tuo file di risorse in inglese e gli dai anche Resourcer scaricabile da qui: http://www.lutzroeder.com/dotnet/
Il traduttore utilizzerà l'interfaccia grafica per inserire le voci senza dover mai vedere l'xml sottostante.

Ho provato a scaricarlo e l'ho provato con due file diversi ma non mi funziona, in un caso mi genera un'eccezione e nell'altro vedo le due colonne vuote...:cry:

gugoXX
16-04-2010, 12:46
Si'. Hai sbagliato file.
Inizia la procedura di scrittura in lingua inglese (o un'altra che preferisci)
vedrai che comparira' un nuovo file.