MessageRequester von Deutsch auf Englisch umschalten?
- Tracker
- Beiträge: 53
- Registriert: 22.11.2005 21:46
- Computerausstattung: Intel Core 2 Quad Q6600, 2,4 GHZ, 2 GB RAM, NVidia GeForce 8600 GT 512 MB, Windows XP Prof. SP3, PureBasic v4.51
@ts-soft
Leider habe ich keine Erfahrung mit Resource Scripts und ob die unter allen Windows-Versionen laufen.
Aber selbst wenn ich Resource Scripts in Deutsch und Englisch hinzugefügt hätte, was würde dann z.B. ein Spanier oder ein Franzose sehen?
Deutsch, Englisch, gar nichts weil ich keine spanische und französische Resource-Datei beigefügt habe oder auch wieder nur eine aus verschiedenen Sprachen zusammengewürfelte Oberfläche?
Danke für die Hinweise. Ich werde mir morgen überlegen, ob ich den Sprachmischmasch so lasse oder mir so wie AND51 eine eigene MessageRequester-Version für mein Programm erstelle.
@AND51
Als PureBasic-Anfänger kenne ich auch keinen Befehl um die eingestellte Sprache zu ermitteln, in der Registry habe ich aber folgenden Schlüssel gefunden, in dem die Spracheinstellungen verwaltet werden:
HKEY_CURRENT_USER\Control Panel\International
Vielleicht hilft dir das weiter.
Leider habe ich keine Erfahrung mit Resource Scripts und ob die unter allen Windows-Versionen laufen.
Aber selbst wenn ich Resource Scripts in Deutsch und Englisch hinzugefügt hätte, was würde dann z.B. ein Spanier oder ein Franzose sehen?
Deutsch, Englisch, gar nichts weil ich keine spanische und französische Resource-Datei beigefügt habe oder auch wieder nur eine aus verschiedenen Sprachen zusammengewürfelte Oberfläche?
Danke für die Hinweise. Ich werde mir morgen überlegen, ob ich den Sprachmischmasch so lasse oder mir so wie AND51 eine eigene MessageRequester-Version für mein Programm erstelle.
@AND51
Als PureBasic-Anfänger kenne ich auch keinen Befehl um die eingestellte Sprache zu ermitteln, in der Registry habe ich aber folgenden Schlüssel gefunden, in dem die Spracheinstellungen verwaltet werden:
HKEY_CURRENT_USER\Control Panel\International
Vielleicht hilft dir das weiter.
Ein fehlerfreies Programm ist der Traum jedes Programmierers
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Laufen unter allen Windows-Versionen, es wird die erste Sprache im
Resource-Script als Default verwendet.
Ich hab Dir mal ein Simples Beispiel hochgeladen, sieh es Dir an, dann
kannste es Dir ja immer noch überlegen oder für ein späteres Object.
Ursprünglich stammt das Beispiel aus dem engl. Forum, ist also nicht alles auf
meinen Mist gewachsen, sondern auch was geklaut
http://purebasic.ts-soft-online.de/dl/string.zip
Resource-Script als Default verwendet.
Ich hab Dir mal ein Simples Beispiel hochgeladen, sieh es Dir an, dann
kannste es Dir ja immer noch überlegen oder für ein späteres Object.
Ursprünglich stammt das Beispiel aus dem engl. Forum, ist also nicht alles auf
meinen Mist gewachsen, sondern auch was geklaut

http://purebasic.ts-soft-online.de/dl/string.zip
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Kann ich dann eine eigene OSLanguage() schreiben, die auf den registrywert aufbaut? und wie sicher/zuverlässiv ist das? geht das auch von win 95 bis XP SP 2 ?
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
- Tracker
- Beiträge: 53
- Registriert: 22.11.2005 21:46
- Computerausstattung: Intel Core 2 Quad Q6600, 2,4 GHZ, 2 GB RAM, NVidia GeForce 8600 GT 512 MB, Windows XP Prof. SP3, PureBasic v4.51
@ts-soft
Danke, das ist ein gutes Beispiel für die Einbindung von Resource-Scripts.
Das Programm ermittelt die Sprache und gibt in Strings die Texte der Buttons zurück.
Unter folgendem Link habe ich einen Auszug aus dem Buch "WIN32 API Professional" von Klaus Prinz gefunden, das dieses Thema "Locale Settings"erklärt:
http://www.addison-wesley.de/katalog/bs ... 207bsp.htm
Laut diesem Artikel hat Deutschland die Language-ID 7 und England die Language-ID 9.
Wenn ich als Lokale-ID 1 (Default) einsetze erhalte ich z.B. folgende Werte:
1*2^10+7=1031 (Deutschland)
1*2^10+9=1033 (England)
Was ich noch nicht verstehe ist, welchen Wert ich wo ändern muss, damit ich testen kann, ob unter anderen Sprachen auch die richtigen Resource-Strings zurückgeliefert werden.
Aus welchem Wert ermittelt denn der MessageRequester die Sprache?
Der iCountry-Wert 49 für Deutschland, den man in der Registry findet ist es jedenfalls nicht (England hätte z.B. den Wert 44, Spanien 34, usw.).
@AND51
Eine einfache OSLanguage()-Funktion die mit der API-Funktion GetLocaleInfo_ den userabhängigen iCountry-Wert in der Registry ermittelt (siehe [HKEY_CURRENT_USER\Control Panel\International]) könntest du dir so bauen:
Wenn GetLocaleInfo_ in buffer$ den String "49" zurückliefert ist die Sprache deutsch, Englisch wäre 44, usw.
Unter Windows98 und XP funktioniert das, Windows95 kann ich leider nicht testen, aber kann man damit heute noch sinnvoll arbeiten?
Ich könnte bei meinem Programm auf den INI-Entrag für language verzichten, wenn ich noch folgendes Codefragment einbaue:
Wenn GetLocaleInfo_ buffer$="49" zurückliefert, setze ich z.B. language=1 (German), ansonsten bleibt language=0 (English).
Deutsche Benutzer hätten dann eine deutsche Benutzeroberfläche mit deutschen Buttons und alle anderen die englische Version mit den Buttons der eigenen Landessprache. Optisch nicht besonders schön, aber besser als nichts.
Danke, das ist ein gutes Beispiel für die Einbindung von Resource-Scripts.
Das Programm ermittelt die Sprache und gibt in Strings die Texte der Buttons zurück.
Unter folgendem Link habe ich einen Auszug aus dem Buch "WIN32 API Professional" von Klaus Prinz gefunden, das dieses Thema "Locale Settings"erklärt:
http://www.addison-wesley.de/katalog/bs ... 207bsp.htm
Laut diesem Artikel hat Deutschland die Language-ID 7 und England die Language-ID 9.
Wenn ich als Lokale-ID 1 (Default) einsetze erhalte ich z.B. folgende Werte:
1*2^10+7=1031 (Deutschland)
1*2^10+9=1033 (England)
Was ich noch nicht verstehe ist, welchen Wert ich wo ändern muss, damit ich testen kann, ob unter anderen Sprachen auch die richtigen Resource-Strings zurückgeliefert werden.
Aus welchem Wert ermittelt denn der MessageRequester die Sprache?
Der iCountry-Wert 49 für Deutschland, den man in der Registry findet ist es jedenfalls nicht (England hätte z.B. den Wert 44, Spanien 34, usw.).
@AND51
Eine einfache OSLanguage()-Funktion die mit der API-Funktion GetLocaleInfo_ den userabhängigen iCountry-Wert in der Registry ermittelt (siehe [HKEY_CURRENT_USER\Control Panel\International]) könntest du dir so bauen:
Code: Alles auswählen
buffer$=Space(256)
GetLocaleInfo_( #LOCALE_USER_DEFAULT ,5,buffer$,256)
Debug buffer$
Unter Windows98 und XP funktioniert das, Windows95 kann ich leider nicht testen, aber kann man damit heute noch sinnvoll arbeiten?
Ich könnte bei meinem Programm auf den INI-Entrag für language verzichten, wenn ich noch folgendes Codefragment einbaue:
Code: Alles auswählen
language.l=0
If buffer$ = "49"
language = 1 ;German
EndIf
Debug language
Deutsche Benutzer hätten dann eine deutsche Benutzeroberfläche mit deutschen Buttons und alle anderen die englische Version mit den Buttons der eigenen Landessprache. Optisch nicht besonders schön, aber besser als nichts.
Ein fehlerfreies Programm ist der Traum jedes Programmierers
Und der hat sich für sein Programm eine eigene Lösung gebaut, ging verdammt schnell und auch das Einbinden von eigener Grafik ist möglich ;o)Tracker hat geschrieben:Ich habe mir vorhin deine MessageRequester-Lösung angesehen, die du damals hiltwin gepostet hast.
Ich habe einfach nen kleines eigenes Fenster gemacht und mit zwei Variablen entsprechend die beiden Texte übergeben ...
Allerdings vergiss nicht, dass es nicht nur Yes, No, Cancel gibt, sondern z.B. auch Yes, No ....
Ist aber auch keine Sache von einem halben Tag ...
- Tracker
- Beiträge: 53
- Registriert: 22.11.2005 21:46
- Computerausstattung: Intel Core 2 Quad Q6600, 2,4 GHZ, 2 GB RAM, NVidia GeForce 8600 GT 512 MB, Windows XP Prof. SP3, PureBasic v4.51
Ich habe die Erkennung der Sprache jetzt so gelöst und auf einen Language-Eintrag in der INI-Datei verzichtet:
Anwender in Deutschland, Schweiz, Liechtenstein, Österreich und Luxemburg bekommen die deutsche Oberfläche angezeigt und alle anderen eine englische Oberfläche.
Ich kann das testen, wenn ich unter "Systemsteuerung - Regions- und Sprachoptionen" bei "Standards und Formate" statt Deutsch(Deutschland) z.B. English(Usa) einstelle.
Was mich nur wundert ist, dass die Schweiz für Deutsch, Englisch und Französisch den gleichen Eintrag iCountry=41 hat. Also wird immer die deutsche Version angezeigt, auch in der italienisch und französisch-sprachigen Region.
Ich kenne einen Schweizer. Den muss ich mal fragen, ob das Sinn macht oder ob ich doch außerhalb von Deutschland nur die englische Fassung anbiete.
@hiltwin
Bei der englischen Fassung habe ich natürlich beim MessageRequester immer noch die deutschen Buttons.
Kannst du hier mal ein Beispiel deiner MessageRequester-Version posten?
Man muss ja nicht jedesmal das Rad neu erfinden.
Code: Alles auswählen
Global Language.l
;--- Sprache einstellen 1=Deutsch, 0=Englisch
buffer$=Space(256)
GetLocaleInfo_( #LOCALE_USER_DEFAULT ,5,buffer$,256)
Select buffer$
Case "49": Language=1 ;Deutsch (Deutschland)
Case "41": Language=1 ;Deutsch (Schweiz oder Liechtenstein)
Case "43": Language=1 ;Deutsch (Österreich)
Case "352": Language=1 ;Deutsch (Luxemburg)
Default: Language=0 ;Englisch
EndSelect
Ich kann das testen, wenn ich unter "Systemsteuerung - Regions- und Sprachoptionen" bei "Standards und Formate" statt Deutsch(Deutschland) z.B. English(Usa) einstelle.
Was mich nur wundert ist, dass die Schweiz für Deutsch, Englisch und Französisch den gleichen Eintrag iCountry=41 hat. Also wird immer die deutsche Version angezeigt, auch in der italienisch und französisch-sprachigen Region.

Ich kenne einen Schweizer. Den muss ich mal fragen, ob das Sinn macht oder ob ich doch außerhalb von Deutschland nur die englische Fassung anbiete.
@hiltwin
Bei der englischen Fassung habe ich natürlich beim MessageRequester immer noch die deutschen Buttons.
Kannst du hier mal ein Beispiel deiner MessageRequester-Version posten?
Man muss ja nicht jedesmal das Rad neu erfinden.
Ein fehlerfreies Programm ist der Traum jedes Programmierers
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Du verdrehst es immer noch. Die Sprache des Users wird von den
Messagerequestern autom. übernommen, also soll Deine Anwendung auch
diese Sprache übernehmen, schon stimmt alles.
Der Code von dem Link macht dies autom., also auf deutschen systemen
(einschließlich Schweiz usw.) kommt alles in deutsch und der Rest in engl.,
weil nicht definiert.
Kannste dann später problemlos im Resource-Skript um beliebige Sprachen
erweitern.
Messagerequestern autom. übernommen, also soll Deine Anwendung auch
diese Sprache übernehmen, schon stimmt alles.
Der Code von dem Link macht dies autom., also auf deutschen systemen
(einschließlich Schweiz usw.) kommt alles in deutsch und der Rest in engl.,
weil nicht definiert.
Kannste dann später problemlos im Resource-Skript um beliebige Sprachen
erweitern.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Tracker, 49 z. B. ist ja die internationale Vorwahl für Deutscheland. Sind die jeweiligen zahlen dann immer die Vorwahlen der jeweiligen Länder?
PB 4.30
Code: Alles auswählen
Macro Happy
;-)
EndMacro
Happy End
- Tracker
- Beiträge: 53
- Registriert: 22.11.2005 21:46
- Computerausstattung: Intel Core 2 Quad Q6600, 2,4 GHZ, 2 GB RAM, NVidia GeForce 8600 GT 512 MB, Windows XP Prof. SP3, PureBasic v4.51
@ts-soft
Ich hätte ja nichts dagegen Resource-Dateien zu verwenden, wenn ich wüsste, was ich auf meinem deutschen System einstellen muss, damit ich auch die englischen Resourcen testen kann.
Gibt es einen Registry-Wert, den ich testweise mal umstellen kann oder wie gaukele ich meinem PC vor ein anderssprachiges System zu haben um die "nicht definierten" englischen Resourcen testen zu können?
@AND51
Zur Ermittlung der iCountry-Einträge in meinem Script habe ich unter "Systemsteuerung - Regions- und Sprachoptionen - Standards und Formate" der Reihe nach die deutschen Regionen "Deutschland, Liechtenstein, Schweiz, Österreich und Luxemburg" eingestellt.
Parallel dazu habe ich eine DOS-Eingabeaufforderung geöffnet, für jeden Wert Regedit aufgerufen, den zugehörigen iCountry-Eintrag notiert (z.B. 41 für Schweiz) und Regedit wieder beendet. Eine Tabelle der Werte habe ich leider auch nicht.
Ich hätte ja nichts dagegen Resource-Dateien zu verwenden, wenn ich wüsste, was ich auf meinem deutschen System einstellen muss, damit ich auch die englischen Resourcen testen kann.
Gibt es einen Registry-Wert, den ich testweise mal umstellen kann oder wie gaukele ich meinem PC vor ein anderssprachiges System zu haben um die "nicht definierten" englischen Resourcen testen zu können?
@AND51
Zur Ermittlung der iCountry-Einträge in meinem Script habe ich unter "Systemsteuerung - Regions- und Sprachoptionen - Standards und Formate" der Reihe nach die deutschen Regionen "Deutschland, Liechtenstein, Schweiz, Österreich und Luxemburg" eingestellt.
Parallel dazu habe ich eine DOS-Eingabeaufforderung geöffnet, für jeden Wert Regedit aufgerufen, den zugehörigen iCountry-Eintrag notiert (z.B. 41 für Schweiz) und Regedit wieder beendet. Eine Tabelle der Werte habe ich leider auch nicht.
Ein fehlerfreies Programm ist der Traum jedes Programmierers
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Systemsteuerung - Ländereinstellungen bzw. Regions- und
Spracheinstellungen, - erweitert. Habs jetzt zwar nicht getestet, sollte aber
gehen. Setzt voraus, das Dein Windows das Unterstützt.
Spracheinstellungen, - erweitert. Habs jetzt zwar nicht getestet, sollte aber
gehen. Setzt voraus, das Dein Windows das Unterstützt.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
