View Full Version : [VB.NET] Creare un software multilingua
OrcaAssassina
10-04-2008, 17:23
Devo creare un programma multilingua
Cosa mi consigliate??
Avevo pensato questo:
In apertura del programma faccio selezionare la lingua a cui associo un valore.
Ad esempio:
1 - Italiano
2 - Inglese
3 - Spagnolo
Questo valore, non che una costante, la vado a controllare ogni volta che apro una form.
A questo punto in base alla constante vado a modificare il TEXT della label.
E' un metodo corretto o no???
Voi come fate???
Ciao e grazieeeeeeee
nuovoUtente86
10-04-2008, 20:28
potresti mantenere le traduzioni su diversi file,quindi utilizzare quello corrispondente!
OrcaAssassina
10-04-2008, 20:43
potresti mantenere le traduzioni su diversi file,quindi utilizzare quello corrispondente!
Quindi dici con file esterni????
nuovoUtente86
10-04-2008, 22:06
be si, non mi sembra sia il caso di mantenere tutte le traduzioni sul sorgente..Inoltre in questo modo puoi espandere il range delle lingue o modificare le scritte di quelle attuali!
Il .net ha gia' il supporto completo per la globalization.
Apri la form, scegli la lingua tra le proprieta' della form, quando sei ancora in modalita' progettazione.
Metti tutti i campi che ti servono.
Poi cambi lingua, e cambi di conseguenza anche tutte le label, come ti servono nella lingua nuova.
Ripeti per tutte le lingue che ti interessano.
Quando l'utente aprira' la form, si trovera' direttamente i campi nella lingua da lui impostata sulla macchina (in realta' sulla base della lingua scelta dall'utente in quel momento "loggato" sulla macchina)
Il tutto si puo' anche fare direttamente su un file XML, che verra' associato esattamente come se avessi fatto i passi precedenti, se volessi scegliere questa strada.
nuovoUtente86
10-04-2008, 23:02
Il .net ha gia' il supporto completo per la globalization.
Apri la form, scegli la lingua tra le proprieta' della form, quando sei ancora in modalita' progettazione.
Metti tutti i campi che ti servono.
Poi cambi lingua, e cambi di conseguenza anche tutte le label, come ti servono nella lingua nuova.
Ripeti per tutte le lingue che ti interessano.
Quando l'utente aprira' la form, si trovera' direttamente i campi nella lingua da lui impostata sulla macchina (in realta' sulla base della lingua scelta dall'utente in quel momento "loggato" sulla macchina)
Il tutto si puo' anche fare direttamente su un file XML, che verra' associato esattamente come se avessi fatto i passi precedenti, se volessi scegliere questa strada.come avviene per la specifica web in pratica!Però da quello che ho inteso dalle sue parole la scelta piu che dalla piattoforma dovrebbe essere fatta dall'utente!
come avviene per la specifica web in pratica!Però da quello che ho inteso dalle sue parole la scelta piu che dalla piattoforma dovrebbe essere fatta dall'utente!
Ma la scelta e' fatta dall'utente.
E' la lingua da lui scelta in fase di installazione del sistema operativo,
oppure cambiata successivamente dalle scelte delle opzioni internazionali di globalizzazione sul pannello di controllo.
Solo non mi rompe le wallas di nuovo chiedendolo.
Comunque se si vuole si possono bypassare.
Si puo' in fase di installazione far scegliere all'utente una delle lingue per le quali si e' customizzata l'interfaccia, e poi si puo' cambiare al volo la globalizzazione, volendo (ovviamente si vuole) anche solo nell'istanza del programma, ogni volta che verra' aperto.
nuovoUtente86
10-04-2008, 23:28
Ecco non sapevo appunto se fosse possibile rendere indipendente la globalizzazione offerta dal framework con possibilità da parte dell' utente in fase di setup o utilizzo.Da quello che ho capito si puo in qualche modo fare!
O.T. Nella discussione sulle basi di dati, ho aggiunto un passo del libro riguardante quell' argomento! Fine OT!
amedeoviscido
11-04-2008, 23:47
La soluzione che ti è stata proposta è la più efficace per mantenere il controllo totale su quello che c'è scritto nel tuo programma, ma c'è un ulteriore metodo molto semplice e che ti può permettere di aprire il programma a traduzioni da tutto il mondo, basta che qualche utente del tuo programma sia interessato.
Ti mostro un frammento di codice che puoi utilizzare
For Each ctrl As Control In Me.Controls
MsgBox(ctrl.Text)
Next
Come potrai vedere lanciando questo codice il programma elencherà la lista di tutti i controlli del programma mostrandoti quello che c'è scritto dentro.
Un'altra cosa interessante la puoi fare guardando il tipo di controllo che man mano ti viene dato, come ad esempio:
if typeof ctrl is combobox then
MsgBox "E' una combobox"
else
if typeof ctrl is listbox then
msgbox "E' una lista di " + format(ctrl.Items.Count) + " elementi."
else
....
end if
end if
Adesso sta a te salvare i dati in un file di configurazione. Io ad esempio salvavo in file formattati in questo modo
nomecontrollo:testo
nomecontrollo:testo
...
Da cui caricavo la lingua anche al volo ;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.