MsgBox in englisch

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Antworten
peternmb
1000 working lines a day
1000 working lines a day
Beiträge: 525
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

MsgBox in englisch

Beitrag von peternmb »

Hallo,
ich möchte in einer MsgBox das Ja/Nein auf englisch umstellen (1.90.355) .
Müsste doch irgenwie mit SetLocale zu machen sein, ich finde allerdings nicht wie/wo.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: MsgBox in englisch

Beitrag von brandelh »

nur ein EINER MSGBOX, oder alle Systemmeldungen ?
Gruß
Hubert
peternmb
1000 working lines a day
1000 working lines a day
Beiträge: 525
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

Re: MsgBox in englisch

Beitrag von peternmb »

brandelh hat geschrieben:nur ein EINER MSGBOX, oder alle Systemmeldungen ?
eigentlich alle Systemmeldungen, speziell aber die Msgbox (was sonst noch?).
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: MsgBox in englisch

Beitrag von brandelh »

Ich bin mir nicht sicher, aber standardmäßig werden für Systemmeldungen (MsgBox Text etc.) die PC Einstellungen verwendet.
Wenn es für alle gelten soll, müsste man dort vorgaukeln, dass es ein englisches Programm ist.
Ich habe die deutsche Version installiert, wie verhält sich die internationale Version ?

Ich fürchte "nutze Sprache des PC" ist Standard, und ich meine zwei Sprachen geht nur bei teureren Versionen, kann mich aber täuschen.

Wenn man aber nur ein Fenster ändern will, dann geht das nicht über Systemeinstellungen sondern man muss das eine Fenster selbst machen, daher die Frage.
Gruß
Hubert
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9345
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 100 Mal
Danksagung erhalten: 359 Mal
Kontaktdaten:

Re: MsgBox in englisch

Beitrag von Tom »

Die MsgBox() ist ein Windows-API-Element. Sie reagiert auf die Spracheinstellungen des Betriebssystems; wenn das OS auf Englisch umgestellt wird, sagt die MsgBox "Yes" und "No". Der einfachste Weg, um also englischsprachige MsgBoxen zu erreichen, wäre die Windows-Sprachumstellung. Eine ähnlich einfache besteht darin, MsgBoxen selbst zu programmieren, was zusätzlich erlauben würde, sie funktionell aufzuwerten, etwa um eigene Icons ergänzt, mit differenzierteren Antworten, Speichermöglichkeiten, Animationen oder ähnlicher Grafik. Wenn man aber wirklich die native MsgBox will, die unter einem deutschen OS mit englischen Antworten hantiert, müsste man m.E. API-Funktionen wie SetWindowsHookEx und anderen arbeiten, um die Nachrichten an die Box abzufangen und zu übersetzen. In irgendeinem VB-Archiv habe ich ein Beispiel gefunden, aber mir ist leider der Link abhandengekommen.
Herzlich,
Tom
peternmb
1000 working lines a day
1000 working lines a day
Beiträge: 525
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

Re: MsgBox in englisch

Beitrag von peternmb »

Gut, das genügt mir dann eigentlich.

Ich muss dann bei der wahlweisen Umstellungen meines Programme auf Englisch dafür nichts tun da anzunehmen ist, dass wenn jemand die Sprache im Programm auf Englisch umstellt, er dies auch im Betriebssystem getan hat...
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: MsgBox in englisch

Beitrag von AUGE_OHR »

peternmb hat geschrieben:ich möchte in einer MsgBox das Ja/Nein auf englisch umstellen (1.90.355) .
wieso redet ihr alle über die Xbase++ (?) MsgBox() ... die hat keine Ja/Nein Buttons [-X

eine ConfirmBox() ist wohl gemeint und die XBPMB_* Konstanten welche den Text für die Button vorgeben.
peternmb hat geschrieben:Müsste doch irgenwie mit SetLocale zu machen sein, ich finde allerdings nicht wie/wo.
hm ... mit

Code: Alles auswählen

   cCode := SetLocale(NLS_ICOUNTRY)
kannst du die Einstellung abfragen aber nicht setzten
Allgemeine landesspezifische Einstellungen (Read only)
klar die wären ja System weit ...
wenn ich System-weit auf "CN" umstelle wäre auch das Ja/Nein auf chinesisch ;-)

p.s. der User kann, für jedes Fenster, eine andere Keyboard Einstellung (DE,CN,EN) haben !
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15688
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: MsgBox in englisch

Beitrag von brandelh »

Jimmy hat Recht ...
Die Funktion MsgBox() dient der Anzeige eines Textes in einem einfachen, grafischen Dialogfenster.
Unter dem Text wird ein Pushbutton "Ok" angezeigt, mit dem das Fenster wieder geschlossen wird.
Ja/Nein wird bei einer ConfirmBox() angezeigt, wenn man ...

XBPMB_YESNO Ja Nein

als nButton angibt. Wenn dein Quellcode MsgBox() so aufruft und du Ja/Nein siehst, wird wohl irgendwo eine Übersetzung definiert sein von MsgBox() auf ConfirmBox().
Eine Funktion im eigenen code ersetzt eine gleichnamige in einer DLL (oder natürlich #command | #translate etc.) :

Code: Alles auswählen

#include "Xbp.ch"
FUNCTION msgbox(cMessage, cTitle, oOwner )
   DEFAULT cTitle TO "MyMsgBox"
   confirmbox(oOwner,cMessage,cTitle,XBPMB_YESNO,,XBPMB_DEFBUTTON2)
RETURN NIL
wenn das z.B. im Quellcode eingebunden wird, wird immer die ConfirmBox gestartet, eine Möglichkeit um das zugehörige Fenster zu definieren.

Mehr Sinn macht es mit Abfrage des Rückgabewertes, hier meine einfache JaNeinBox()

Code: Alles auswählen

*-------------------------------------------------------
function JaNeinBox(cFrage, cTitel)        // Einfache Frage
   DEFAULT cFrage TO "Bitte wählen"
   DEFAULT cTitel TO "JaNeinBox()"
   if XBPMB_RET_YES = ConfirmBox( SetAppWindow(), cFrage, cTitel, XBPMB_YESNO, XBPMB_QUESTION+XBPMB_APPMODAL+XBPMB_MOVEABLE )
      Return .t.
   endif
Return .f.
Gruß
Hubert
peternmb
1000 working lines a day
1000 working lines a day
Beiträge: 525
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

Re: MsgBox/ConfirmBox in englisch

Beitrag von peternmb »

Die Funktion MsgBox() dient der Anzeige eines Textes in einem einfachen, grafischen Dialogfenster.
Unter dem Text wird ein Pushbutton "Ok" angezeigt, mit dem das Fenster wieder geschlossen wird.
Ja, es geht natürlich nicht um die MsgBox sondern um die ConfirmBox. Bei der MsgBox reicht mir das eher sprachunabhängige "OK".

Code: Alles auswählen

nConfirm:= ;
ConfirmBox(,"Soll die Datei wirklich gelöscht werden?", ;
            "bitte bestätigen",;;               
XBPMB_YESNO , XBPMB_QUESTION+XBPMB_APPMODAL+XBPMB_MOVEABLE,XBPMB_DEFBUTTON1 )
IF nConfirm == XBPMB_RET_NO
   return 
ENDIF
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1991
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: MsgBox in englisch

Beitrag von Herbert »

Am Geschicktesten macht ihr das wie Tom anregt: Baut eine eigene Funktion für die Darstellung von Informationen/Fehlern usw. So habt ihr alle Sprachprobleme weg und die Texte (Titel, Textlinien) werden als Argument mitgeliefert. Die Antwort ist dann einfach aus dem Funktionsaufruf entsprechend dem Klick des Users.
Grüsse Herbert
Immer in Bewegung...
Antworten