Das Forentreffen 2018 findet am 20./21. April in Dresden statt. Weitere Infos hier
Zur Homepage des Deutschsprachige Xbase-Entwickler e. V.
Xbase++-Wiki des Deutschsprachige Xbase-Entwickler e. V.

MsgBox in englisch

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Antworten
peternmb
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 431
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

MsgBox in englisch

Beitrag von peternmb » Mo, 12. Dez 2016 13:59

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: 13768
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: MsgBox in englisch

Beitrag von brandelh » Mo, 12. Dez 2016 14:15

nur ein EINER MSGBOX, oder alle Systemmeldungen ?
Gruß
Hubert

peternmb
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 431
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

Re: MsgBox in englisch

Beitrag von peternmb » Mo, 12. Dez 2016 14:27

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: 13768
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: MsgBox in englisch

Beitrag von brandelh » Mo, 12. Dez 2016 15:08

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: 6802
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Re: MsgBox in englisch

Beitrag von Tom » Mo, 12. Dez 2016 15:11

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
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 431
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

Re: MsgBox in englisch

Beitrag von peternmb » Mo, 12. Dez 2016 15:27

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: 10579
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: MsgBox in englisch

Beitrag von AUGE_OHR » Di, 13. Dez 2016 7:39

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: 13768
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: MsgBox in englisch

Beitrag von brandelh » Di, 13. Dez 2016 8:38

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
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 431
Registriert: Mi, 01. Feb 2006 16:22
Wohnort: 06618 Naumburg

Re: MsgBox/ConfirmBox in englisch

Beitrag von peternmb » Di, 13. Dez 2016 11:02

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: 1823
Registriert: Do, 14. Aug 2008 0:22
Wohnort: Gmunden am Traunsee, Österreich
Kontaktdaten:

Re: MsgBox in englisch

Beitrag von Herbert » Di, 13. Dez 2016 11:50

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