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.
Die Sprache der Buttons orientriert sich glaube ich an der Sprache des installierten Frameworks.
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 🙁
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
Hallo Assri Komla,
es geht konkret um MessageBox-Buttons. Ich denke nicht, dass Björn an dem Punkt mit deinem Vorschlag weiterkommt.
herbivore
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
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
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