PDA

View Full Version : [c#] Form multilingua


DuHarTapt
17-04-2009, 20:02
Dovrei fare lo stesso form in tre lingue diverse.
Il form prevede 4 bottone che, se premuti, a seconda della lingua caricano file diversi.

Quale è l'approcio migliore per gestire questa cosa?
Avere tre form separati?
Avere una marea di if(lingua == ) all'interno dello stesso form?
Altro?

:)

MarcoGG
18-04-2009, 08:32
Non è necessario, puoi gestire la localizzazione di una Form attraverso la creazione di files .resx diversificati per ogni Lingua che desideri implementare.
In fase di compilazione questo procedimento crea una DLL ( nomeDll.resource.dll ) per ogni Lingua inserita.

- E' necessario che la Form abbia anzitutto Localizable = true.

- A questo punto disegna i vari controlli sulla Form. Quando li hai inseriti tutti, seleziona sulla Form una Lingua, dalla proprietà Language.
Ora immetti, per tutti i controlli che ad es. prevedono un .Text localizzato, le rispettive proprietà .Text per quella Lingua.

- Ripeti il procedimento del punto precedente per ogni Lingua da implementare.

Al termine inserisci una semplice procedura che applicherà la Lingua selezionata :

private void ApplicaLingua(string lingua)
{
foreach (Control C in this.Controls)
{
ComponentResourceManager RES = new ComponentResourceManager(typeof(Form1));
RES.ApplyResources(C, C.Name, new System.Globalization.CultureInfo(lingua));
}
}

Che viene usata, ad esempio, così :

// ITA
ApplicaLingua("it-IT");

;)

jackk87
29-11-2010, 17:45
Ciao MarcoGG,
ho utilizzato il tuo procedimento in VB.NET e tutto funziona correttamente ma se dovrei farlo per un form MDI come dovrei procedere?
Per esempio ho il form principale MDI che ha due pulsanti italiano e inglese che al loro evento traduce tutti gli altri form in esso aperti oppure quando verranno aperti.