[VC++.NET] Flexible Controls mit Language Tag

the incredible Leitman

Erfahrenes Mitglied
Hallo Leute ^^

Ich möchte eine Anwendung, die mehrsprachig ist, erstellen.

wie gehe ich da am Besten vor

Ich habe Zugriff auf eine Eigenschaft in einem Key in der Registry... am Start des Programms möche ich prüfen, welche Sprache gerade eingestellt ist, und je nachdem mein ganzen Controls benennen

was mache ich da? :confused:

Muss ich für jedes Control eine Funktion aufrufen, die dann den Text abhängig von dem KeyFlag setzt
Oder geht das irgendwie einfacher?

Vielen Dank für eure Hilfe
mfG
Leitman
 
Hi,

Jedes Control hat die Properties Localiable und Language. Ist Localiable auf True, wird für jede unter Language gewählte Sprache ein Satellitenassembly erzeugt, die die Spracheabhängigen unterschiede zum "Original" enthält.

Nachdem du aus der Registry die Informationen der Sprache abgefragt hast, kannst du die CultureInfo neu setzen. Das ganze muss jedoch geschehen, bevor die MEthode InitializeComponent einer Form aufgerufen wird.
Wird die CultureInfo danach geändert, kannst du mit dem ComponentResourceManager die Properties neu setzen.

Für weitere Informationen musst du nur mal in der MSDN oder auch einfach nur hier im Forum suchen, gibt schon einige Threads zu dem Thema ;)
 
Du stellst noch bevor Du deine Steuerelemente initialisierst
  • die Thread.CurrentThread.CurrentCulture (Ist zB für die String-Formatierung entsprechend der eingestellten Sprache zuständig)
  • und die Thread.CurrentThread.CurrentUICulture (Legt fest welche Sprache der ResourceManager standardmäßig verwenden soll)
auf die eingestellte Sprache ein. (zB. new CultureInfo( "en-US" ))
Danach werden alle Resourcen in der entsprechenden Sprache geladen.
Wenn Du die Sprache In nachhinein verändern willst, kannst eine Rekursion verwenden und setzt alle nötigen Propertys (idR. Control.Text).

Kann heute Abend mal eine Demo machen. Bastle gerade an einem ResourcesManager herum, der die möglichen Sprachen aus den Resourcen bestimmt um generell bequemer damit arbeiten zu können.

Btw. [thread=258561]Lokalisierung .resx oder .resources - Komplexe Grundsatzfrage zur Lokalisierung - Thread[/thread]
 
kk
Danke Leute ^^

Nach dem Start des Programmes möchte ich die Sprache eh nicht ändern,
d.h. ich muss einfach bevor ich alle Elemente initialisiere Key überprüfen -> CultureInfo setzen -> passt :)
Naja, mal schaun ob das echt so easy ist ;)

Jetzt wo ihr es sagt, fällt mir ein, stimmt, über CultureInfo und so habe ich shcon bereits gelesen... aber ist mir absolut nicht eingefallen >.<

Danke euch
mfG
Leitman
 

Neue Beiträge

Zurück