@ts-soft
Ich habe es mittlerweile aufgegeben.
Der Windows98-PC, den ich heute mit Standort Frankreich installiert habe, hatte natürlich auch wieder eine deutsche Oberfläche und der MessageRequester deutsche Buttons.
Bei dem Resource-Testbeispiel war es genauso (nichts mit Englisch oder Französisch).
Intessanterweise erkannte die Matrox-Treiber-CD bei der Installation der Grafikkarte die Sprache Französisch und auch die Setup-Oberfläche samt Buttons erschien in Französisch.
Die wissen anscheinend wie man das macht.
Auf meinem WindowsXP-PC habe ich mittlerweise auch alles mögliche ausprobiert, um die Sprache zu ändern. Ohne Erfolg.
Hast du bei deinem PC einmal ausprobiert, die französische Sprache einzustellen?
In welcher Sprache erscheinen die Buttons bei deinem Resource-Beispiel?
In Englisch oder in Deutsch?
Ich habe nochmal dein Resource-Script-Beispiel ausprobiert und um zwei Einträge Yes/Ja und No/Nein erweitert.
Die angepassten Dateien sehen jetzt so aus:
StringTable.rc
Code: Alles auswählen
#include "StringTable.h"
STRINGTABLE
LANGUAGE LANG_ENGLISH, SUBLANG_DEFAULT
BEGIN
btnOk, "Ok"
btnCancel, "Cancel"
btnYes, "Yes"
btnNo, "No"
END
STRINGTABLE
LANGUAGE LANG_GERMAN, SUBLANG_DEFAULT
BEGIN
btnOk, "Ok"
btnCancel, "Abbrechen"
btnYes, "Ja"
btnNo, "Nein"
END
StringTable.h
Code: Alles auswählen
#include "lang.h"
#define btnOk 0
#define btnCancel 1
#define btnYes 2
#define btnNo 3
Lang.h
Code: Alles auswählen
#define LANG_NEUTRAL 0x00
#define LANG_ARABIC 0x01
#define LANG_BULGARIAN 0x02
#define LANG_CATALAN 0x03
#define LANG_CHINESE 0x04
#define LANG_CZECH 0x05
#define LANG_DANISH 0x06
#define LANG_GERMAN 0x07
#define LANG_GREEK 0x08
#define LANG_ENGLISH 0x09
#define LANG_SPANISH 0x0a
#define LANG_FINNISH 0x0b
#define LANG_FRENCH 0x0c
#define LANG_HEBREW 0x0d
usw...
Test.pb
Code: Alles auswählen
Procedure.s Language(uID.l)
Protected Result.s
#MaxBuffer = 255
Result.s = Space(#MaxBuffer)
If LoadString_(GetModuleHandle_(#Null), uID, @Result, #MaxBuffer)
ProcedureReturn Result
EndIf
ProcedureReturn ""
EndProcedure
Enumeration
#btnOk
#btnCancel
#btnYes
#btnNo
EndEnumeration
If OpenWindow(0, 0, 0, 75, 135, #PB_Window_ScreenCentered|#PB_Window_SystemMenu, "")
If CreateGadgetList(WindowID(0))
ButtonGadget(#btnOk, 10, 10, 95, 25, Language(#btnOk))
ButtonGadget(#btnCancel, 10, 40, 95, 25, Language(#btnCancel))
ButtonGadget(#btnYes, 10, 70, 95, 25, Language(#btnYes))
ButtonGadget(#btnNo, 10, 100, 95, 25, Language(#btnNo))
MessageRequester("","In welcher Sprache erscheinen die Buttons?",#PB_MessageRequester_YesNoCancel)
EndIf
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Die Funktion Language() liefert den Text der selbst definierten Buttons aus der Resource-Datei in der jeweiligen Sprache.
Bei den selbst definierten Buttons wird OK, Abbrechen, Ja, Nein angezeigt.
Die hinzugefügte MessageRequester-Funktion hat die Buttons Ja, Nein, Abbrechen.
Egal, welche Sprache ich in der Systemsteuerung einstelle, alle Werte bleiben in Deutsch!
In der Lang.c ist sind z.B. Deutsch und Französisch so definiert:
#define LANG_GERMAN 0x07
#define LANG_FRENCH 0x0c
Es ist zwar der falsche Weg, aber wenn ich habe die Werte für Deutsch und Französisch einmal wie folgt vertauscht:
#define LANG_GERMAN 0x0c
#define LANG_FRENCH 0x07
Jetzt zeigen die selbst definierten Buttons die englischen Resource-Einträge OK, Cancel, Yes, No an.
Der MessageRequester hat natürlich noch die deutschen Buttons Ja, Nein, Abbrechen.
Ich könnte jetzt meine ganzen deutschen und englischen Texte in die StringTable.rc aufnehmen und entsprechende Konstanten in der StringTable.h und Test.pb definieren.
Die einzige Chance, die ich im Augenblick sehe, um wenigstens diese Texte in Englisch zu testen, ist die Datei Lang.h zu manipulieren.
Damit ist aber noch lange nicht geklärt, wie die englische Oberfläche PureBasic-Requester (MessageRequester, FileRequester,...) aussieht.
Wie soll ich Hardcopies für eine englische Dokumentation erstellen, wenn ich selbst keine Chance habe die englische Oberfläche des eigenen Programms zu sehen.
Wie machen das denn andere Softwareentwickler, die mehrsprachige Programme erstellen?
Es muss doch rauszufinden sein, aus welchem Registry-Wert oder welcher DLL Windows bzw. PureBasic die eingestellte Sprache ermittelt, damit ich die testweise umstellen kann.
Es ist sicher ein gutes Verfahren mehrsprachige Resouce-Scripts zu verwenden, man müsste nur in der Lage sein die Oberfläche seiner eigenen Programme in jeder Sprache zu sehen, um die Optik testen zu können.
Aber egal, ich bin ja nur Hobbyprogrammierer.
Dann müssen Anwender außerhalb von Deutschland eben mit dem Sprachmischmasch meiner Programme zurechtkommen.