MsgBox in englisch

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

MsgBox in englisch

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

Re: MsgBox in englisch

Beitragvon brandelh » Mo, 12. Dez 2016 14:15

nur ein EINER MSGBOX, oder alle Systemmeldungen ?
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13201
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim

Re: MsgBox in englisch

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

Re: MsgBox in englisch

Beitragvon 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
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13201
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim

Re: MsgBox in englisch

Beitragvon 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
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 6657
Registriert: Do, 22. Sep 2005 22:11
Wohnort: Berlin

Re: MsgBox in englisch

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

Re: MsgBox in englisch

Beitragvon 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
AUGE_OHR
Marvin
Marvin
 
Beiträge: 10065
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg

Re: MsgBox in englisch

Beitragvon 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
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13201
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim

Re: MsgBox/ConfirmBox in englisch

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

Re: MsgBox in englisch

Beitragvon 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...
Benutzeravatar
Herbert
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 1756
Registriert: Mi, 13. Aug 2008 23:22
Wohnort: Gmunden am Traunsee, Österreich


Zurück zu Allgemeine Fragen

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste