Multilanguage
-
Ja, es geht um die Buttons OK, ABBRECHEN usw. Meine eigenen Texte sind klar.
Ich hab mal folgendes probiert:
SetThreadLocale( MAKELCID( MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_US) ,SORT_DEFAULT) );
Kommt auch mit TRUE zurück, jedoch ändern tut sich nichts. Bei SetLocaleInfo hab ich mir in der MSDN mal die Typen angeschaut die gesetzt werden können, hab da jedoch nichts gesehen für die Sprache.
Dann hab ich auch mal #pragma setlocale("english") probiert, auch ohne positives Ergebnis. Ist der SetThreadLocale Aufruf von mir überhaupt richtig?
-
Wie hast du denn Buttons erstellt bei dennen du den Text nicht selber festgelegt hast?
-
bei den messageboxen...
-
Hmm, dann fällt mir nur noch ein:
MessageBox selber bauen
-
Ne das ist möglich die auf Englisch zu übersetzen. Der Ansatz von Daminon müsste richtig sein. Ich habe eine Codesnipet von einem Freund, da wird das auch gemacht allerdings für ne Fehlermeldung.
-
Dann gib den Code Snippet.
-
<ironie>wow bist du freundlich</ironie>
mich interessiert das au!!
-
void error() { TCHAR szBuf[80]; LPVOID lpMsgBuf; DWORD dw = GetLastError(); FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM,NULL,dw,MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),(LPTSTR) &lpMsgBuf,0,NULL); sprintf(szBuf,"Fehler %d: %s",dw,lpMsgBuf); MessageBox(NULL, szBuf, "Error", MB_OK | MB_ICONERROR); }
Ich weiß nicht ob euch das weiterhilft
-
flammenvogel, ich glaub du hast das Problem nicht verstanden. Der Quelltext hat jedenfalls nicht mit dem Problem zu tun.
-
man sieht schon du bist ein ego...
er hat geschrieben er weiß net ob dir das hilft.
das ist SEIN schnipsel wie er ihn hat...
-
das hat er nacheditiert. :p
-
denk doch was du willst jedenfalls hab ich das gesehn als der post da war..
-
Irgendwas mit dem MAKRELANGID ist auch in dem Versuch von Daminon drin. Aber wie gesagt ich habe keine Ahnung ob das hilft. Die Funktion gibt jedenfalls den letzten WinApi Fehler mit einer deutschen Fehlerbeschreibnung aus. Sonst ist in der WinAPI doch immer alles auf Englisch.
-
-
Aber ich glaube ich weis jetzt warum der Aufruf von SetThreadLocale(MAKELCID(MAKELANGID(LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT)); nicht funzt.
Bei SetThreadLocal steht: (MSDN)
Windows 2000/XP: Do not use SetThreadLocale to select a UI language. To select the proper resource that is defined with a LANGUAGE statement, use FindResourceEx.
-
Ich habe nochmal in der MSDN geguckt. MessageBoxIndirect kennt den Language Parameter, das gleiche gilt für MessageBoxEx() allerdings ist er dort als reserved angegeben. Ich versuche gerade MessageBoxIndirect zum laufen zu bringen, habs aber noch nicht geschafft. Allerdings müsste es laut MSDN gehen.
-
Die Sprache muss aber auch auf dem System vorhanden sein und MultiLanguage Installationen sind relativ selten
Wenn es denn wirklich wichtig ist: warum machst Du nicht eine eigene MessageBox ???
-
Naja gut, der Tip mit der MessageBoxIndirect funktioniert in der Tat nur wenn die Language Englisch auch installiert ist. Aber immerhin könnten sich so die Leute in England die sowieso ein Englisches Windows haben, dein Programm auf Englisch geniesen.
-
Aber wäre bei denen nicht sowieso die Beschriftung englisch?!
-
Hi,
also ihr habt alle irgendwie recht. Mit MessageBoxIndirect funzt es, wenn das Microsoft Multilanguage Pack installiert ist. Auf englischen Systemen sind auch die Buttons der MessageBox auf english. Bin jetzt dazu über gegangen, eine eigene MessageBox zu basteln. Das einzige was mehr Arbeit ist, sind die PropertySheets. Aber da belibt mir wohl nichts anderes.
Trotzdem Danke.