Laden...

Lokalisierung von MessageBox-Buttons

Erstellt von Björn vor 15 Jahren Letzter Beitrag vor 15 Jahren 3.808 Views
B
Björn Themenstarter:in
142 Beiträge seit 2007
vor 15 Jahren
Lokalisierung von MessageBox-Buttons

Hallo,
ich habe meine .NET-Anwendung mehrsprachig gestaltet. Hab mich da an diesen Artikel gehalten:
[Tutorial] Textlokalisierung mit .NET

Klappt auch super bis auf eine Kleinigkeit.
Ich habe eine MessageBox mit MessageBoxButtons.YesNo und dort sind die Buttons auf Deutsch.

Eine Idee wie ich die auf entsprechend der eingestellten Sprache anzeigen kann?

MfG
Björn

Edit: Nur zur Anmerkung, ich möchte meine Anwendung zur Laufzeit umschalten können.

W
49 Beiträge seit 2007
vor 15 Jahren

Die Sprache der Buttons orientriert sich glaube ich an der Sprache des installierten Frameworks.

1.820 Beiträge seit 2005
vor 15 Jahren

Hallo!

Eine Möglichkeit wäre, eigene MessageBoxen zu erstellen. Ist zwar etwas umständlich, aber wahrscheinlich die eleganteste Lösung. Ansonsten könnte man noch über die Windows-API versuchen, die Button-Texte zu ersetzen, was aber ungleich schwerer sein dürfte und zudem nicht mehr plattformunabhängig wäre.

Nobody is perfect. I'm sad, i'm not nobody 🙁

57 Beiträge seit 2009
vor 15 Jahren

Hallo Björn,

wenn ich Dich richtig verstehe, möchtest Du selbst entscheiden, welche UI-Sprache Deine Forms-Anwendung verwendet. Das zu implementieren, ist nicht schwierig.

Wenn Du mit dem Lokalisieren fertig bist, schnappst Du Dir den Konstruktor der Form-Klasse und fügst dort vor dem Aufruf von 'InitializeComponent ()' einen Befehl dieser Art ein:



Thread.CurrentThread.CurrentUICulture
    = new CultureInfo ("de-DE");

//Thread.CurrentThread.CurrentUICulture
//    = new CultureInfo ("");


Ich schalte in diesem Fall durch ein Ein- und Auskommentieren zwischen der Default-Sprache "en-US" und "de-DE" um. Benötigst Du noch andere Sprachen, musst Du lediglich den entsprechenden CultureInfo-String übergeben.

Wenn Du die UI-Sprache zur Laufzeit umschalten möchtest, machst Du eine neue Form auf und übergibst deren Konstruktor den gewünschten CultureInfo-String als Parameter; die alte Form versteckst Du hinterher (Enable = false, Visible = false). Achte darauf, dass Du nicht versehentlich die erste Form schließt, denn dann schließt Du die gesamte Anwendung.

Gruß
Assri Komla

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo Assri Komla,

es geht konkret um MessageBox-Buttons. Ich denke nicht, dass Björn an dem Punkt mit deinem Vorschlag weiterkommt.

herbivore

57 Beiträge seit 2009
vor 15 Jahren

Hallo herbivore,

dass mein Beitrag lediglich eine liebenswürdige Ergänzung zu meinen ausgezeichneten Vorrednern darstellt, ist aus meiner Sicht offensichtlich. Aber für den admin aus Berlin ganz offensichtlich nicht offensichtlich genug.

Gruß
Assri Komla

49.485 Beiträge seit 2005
vor 15 Jahren

Hallo Assri Komla,

Moment mal! Dein Beitrag begann mit "wenn ich Dich richtig verstehe ...". Da Björn nach nach der Lokalisierung von Message-Buttons im Speziellen gefragt hatte und du auf Lokalisierung von Forms im Allgemeinen, die bei Message-Buttons nicht greift, geantwortet hattest, war es schon sehr naheliegend anzunehmen, dass du Björn eben nicht richtig verstanden hattest. Und nach der Sachlage kann ich mich des Eindrucks leider nicht erwehren, dass du ihn tatsächlich nicht richtig verstanden hattest und dich nur auf meine Kosten herausreden willst. Das wäre aber gar nicht nötig gewesen.

herbivore

B
Björn Themenstarter:in
142 Beiträge seit 2007
vor 15 Jahren

Hallo Assri,

leider hilft mir deine Lösungsidee nicht weiter, wie herbivore schon sagte.

Ich werde entweder damit leben müssen oder mir eine eigene Messagebox bauen müssen.
Habe noch folgenden Text im Netz dazu gefunden:

Setting the thread CurrentUICulture does not change the common dialog
language. To change the language used for common dialogs you have to
set the "Language used in menus and dialogs" option in the system
Regional and Language Options dialog. Unfortunately this also
requires logging off and on again before it takes affect. http://objectmix.com/dotnet/302013-how-show-message-box-net-2-0-culture-specific.html#post1071103

MfG
Björn