Internazionalizzazione di un applicativo Windows Form

mercoledì 13 luglio 2005 - 11.44

astroman Profilo | Junior Member

Ci sono numerosi articoli sul web e su MSDN a riguardo ma, sinceramente, volevo avere un consiglio da persone che l'hanno già utilizzato per risolvere il problema.
Praticamente non riesco a capire come creare una struttura flessibile per assegnare descrizioni ai form, messaggi d'errore, titoli e pulsanti ad un applicativo Windows form...cosa mi consigliate di fare?

Andy Profilo | Senior Member

La cosa più semplice, che avevo utilizzato io, è l'utilizzo di files(o tabelle Db, come preferisci) dove inserisci l'ID dell'oggetto e le sue traduzioni in lingua(in genere io ne uso 3, Inglese, Italiano e Tedesco)..usi un menù o un tasto che ti permette la selezione della lingua, e ad ogni caricamento dei vari form, a seconda della lingua scelta imposti le proprietà .Text dei vari oggetti con il campo corretto del tuo Db.

Andy

astroman Profilo | Junior Member

>La cosa più semplice, che avevo utilizzato io, è l'utilizzo di
>files(o tabelle Db, come preferisci) dove inserisci l'ID dell'oggetto
>e le sue traduzioni in lingua(in genere io ne uso 3, Inglese,
>Italiano e Tedesco)..usi un menù o un tasto che ti permette la
>selezione della lingua, e ad ogni caricamento dei vari form,
>a seconda della lingua scelta imposti le proprietà .Text dei
>vari oggetti con il campo corretto del tuo Db.
>
>Andy

Si infatti, avevo pensato pure io ad una cosa simile..senti ma per rendere i files non leggibili con un semplice notepad...come si fà?Vorrei creare l'applicativo in modo tale che l'utente possa scaricarsi, per es., una specifica lingua e la copia sulla sua directory e poi la trova selezionabile tra le opzioni...
Interessante in discorso del menù o del tasto ma non ho capito bene il concetto: potresti approfondirlo?
E usare file XML, che ne dite?

Andy Profilo | Senior Member

Anche Xml, certo..però ogni utente potrà aprirlo..se non è crittografato..a parte che non vedo il problema, al max anche se un utente apre il file e modifica le voci sui controlli(sempre che esista un utente che lo voglia fare!) , al fine del funzionamento del programma non cambia nulla...

Per quanto riguarda il menu puoi fare diverse cose carine..o 3 voci con una spunta sulla lingua corrente, o una voce che cambia testo a seconda della lingua, o semplicemente 3 bottoni..comunque sia alla scelta della lingua ti setti una variabile(anche uno short int che assume valori 0, 1, 2), e quando apri le form testi il contenuto della variabile e leggi le oci corrette di conseguenza.

Andy

astroman Profilo | Junior Member

>Anche Xml, certo..però ogni utente potrà aprirlo..se non è crittografato..a
>parte che non vedo il problema, al max anche se un utente apre
>il file e modifica le voci sui controlli(sempre che esista un
>utente che lo voglia fare!) , al fine del funzionamento del programma
>non cambia nulla...
>
>Per quanto riguarda il menu puoi fare diverse cose carine..o
>3 voci con una spunta sulla lingua corrente, o una voce che cambia
>testo a seconda della lingua, o semplicemente 3 bottoni..comunque
>sia alla scelta della lingua ti setti una variabile(anche uno
>short int che assume valori 0, 1, 2), e quando apri le form testi
>
>Andy

Ah si, questo in effetti si può fare.Ma al cliente interessa solo che la lingua si scelga in fase di installazione o proprio si facciano tante versioni diverse per ogni lingua...ma per criptare i files...come si fà?

Andy Profilo | Senior Member

No, io lascio sempre la possibilità di cambiare lingua all'interno dell'ambito del programma..ovviamente devono essere sempre presenti i files con le lingue..x criptare i files sinceramente dovrebbe risponderti qualcuno che l'ha già fatto, io non ho mai avuto occasione e non vorrei dirti stupidate..prova a cercare su forum o su Internet in generale..

Andy

McSxp Profilo | Newbie

Una soluzione che pensavo di adottare in una applicazione che sto sviluppando è quella di utilizzare il System.Runtime.Serialization e serializzare i dati in binario.
Ha di contro che devi svilupparti una piccola applicazione per serializzarti il testo dei form, oltre a una classe per deserializzare i dati.

ciao

McSxp

astroman Profilo | Junior Member

>Una soluzione che pensavo di adottare in una applicazione che
>sto sviluppando è quella di utilizzare il System.Runtime.Serialization
>e serializzare i dati in binario.
>Ha di contro che devi svilupparti una piccola applicazione per
>serializzarti il testo dei form, oltre a una classe per deserializzare
>i dati.
>
>ciao
>
>McSxp

Ah...potresti darmi qualche informazione a riguardo?E veramente mooolto interessante!

Brainkiller Profilo | Guru

Mi aggiungo anche io. Non ho ben studiato la Globalization applicata a Windows Forms, però ricordo che in Visual C++ era possibile creare dei Resource File (.rc) cosa possibile anche in .NET (dovrebbero essere .xml) dentro cui si mettono tutte le frasi localizzate.

L'applicazione internamente durante l'OnLoad carica le voci corrispondenti e le assegna ai menù, ai pulsanti, ecc.

I file di risorsa poi possono essere inclusi nel file .exe definitivo o come assemblies separati.

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

astroman Profilo | Junior Member

>Mi aggiungo anche io. Non ho ben studiato la Globalization applicata
>a Windows Forms, però ricordo che in Visual C++ era possibile
>creare dei Resource File (.rc) cosa possibile anche in .NET (dovrebbero
>
>L'applicazione internamente durante l'OnLoad carica le voci corrispondenti
>e le assegna ai menù, ai pulsanti, ecc.
>
>I file di risorsa poi possono essere inclusi nel file .exe definitivo
>o come assemblies separati.
>

Ah cavolo...mi sembra un'ottima soluzione anche questa..per trovare più informazioni a riguardo cosa dove mi consigli che mi convenga dirigere le mie ricerche?Anche perchè è la prima volta che sento parlare dei resource file...:D


>David De Giacomi
>Microsoft MVP
>http://blogs.dotnethell.it/david/

McSxp Profilo | Newbie

In effetti è interessante, ma credo che la domanda prevedesse anche la possibilità di caricare file di lingua a posteriori, in questo caso dovresti effettuare nuovamente l'installazione o aggiornare comunque l'assembly e crare un nuovo eseguibile.... o sbaglio?

Utilizzando dei file esterni sarebbe invece sufficiente aggiornare ad esempio un .INI file aggiungendo una nuova lingua e un file contenente i dati, ad esempio un .dat serializzato, o come paventato un xml o un file criptato....

ciao

McSxp

astroman Profilo | Junior Member

>In effetti è interessante, ma credo che la domanda prevedesse
>anche la possibilità di caricare file di lingua a posteriori,
>in questo caso dovresti effettuare nuovamente l'installazione
>o aggiornare comunque l'assembly e crare un nuovo eseguibile....
>o sbaglio?
>
>Utilizzando dei file esterni sarebbe invece sufficiente aggiornare
>ad esempio un .INI file aggiungendo una nuova lingua e un file
>contenente i dati, ad esempio un .dat serializzato, o come paventato
>un xml o un file criptato....
>
>ciao
>
>McSxp

E si infatti...ma io ne sò pochetto di assembly(devo ancora capire bene cos'è)..mi daresti una spiegazione?:D

Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5