Seite 1 von 1

Problem mit "GetLocaleInfoMap"

Verfasst: 25 Mär 2013, 14:15
von poly
Hallo,

ich habe einen Rechner mit Windows 7 Professional in englisch. In meinem Installations-Scripts möchte ich ein Programm abhängig von der Sprache des Betriebssystems installieren. Dafür verwende ich wie vorgeschlagen den Befehl "GetLocaleInfoMap" und möchte gerne den Eintrag "language_id_2chars" verwenden, leider liefert der Befehl aber nicht das gewünschte Ergebnis.

Nachdem ich das LogLevel etwas höher gesetzt habe zeigt das Log-File folgendes Ergebnis:

Code: Alles auswählen

[1] [Mrz 25 13:17:48:462] LogLevel set to 7
[5] [Mrz 25 13:17:48:462] 
[5] [Mrz 25 13:17:48:462] Set  $languagemap$ = GetLocaleInfoMap
[7] [Mrz 25 13:17:48:462] Registry started with redirection (32 Bit)
[6] [Mrz 25 13:17:48:462] Registry key [HKEY_LOCAL_MACHINE\System\CurrentControlset\Control\Nls\Language]  opened
[6] [Mrz 25 13:17:48:462] Key closed
[6] [Mrz 25 13:17:48:463]     retrieving strings from GetLocaleInfoMap [switch to loglevel 7 for debugging]
[7] [Mrz 25 13:17:48:463]         (string   0)language_id_2chars=DE
[7] [Mrz 25 13:17:48:463]         (string   1)language_id=DEU
[7] [Mrz 25 13:17:48:463]         (string   2)localized_name_of_language=German (Germany)
[7] [Mrz 25 13:17:48:463]         (string   3)English_name_of_language=German
[7] [Mrz 25 13:17:48:463]         (string   4)abbreviated_language_name=DEU
[7] [Mrz 25 13:17:48:463]         (string   5)native_name_of_language=Deutsch
[7] [Mrz 25 13:17:48:463]         (string   6)country_code=49
[7] [Mrz 25 13:17:48:463]         (string   7)localized_name_of_country=Germany
[7] [Mrz 25 13:17:48:463]         (string   8)English_name_of_country=Germany
[7] [Mrz 25 13:17:48:463]         (string   9)abbreviated_country_name=DEU
[7] [Mrz 25 13:17:48:463]         (string  10)native_name_of_country=Deutschland
[7] [Mrz 25 13:17:48:463]         (string  11)default_language_id=0407
[7] [Mrz 25 13:17:48:463]         (string  12)default_language_id_decimal=1031
[7] [Mrz 25 13:17:48:463]         (string  13)default_country_code=49
[7] [Mrz 25 13:17:48:463]         (string  14)default_oem_code_page=850
[7] [Mrz 25 13:17:48:463]         (string  15)default_ansi_code_page=1252
[7] [Mrz 25 13:17:48:463]         (string  16)system_default_language_id=0409
[7] [Mrz 25 13:17:48:463]         (string  17)system_default_posix=en_US
[7] [Mrz 25 13:17:48:463]         (string  18)system_default_lang_region=en-US
[7] [Mrz 25 13:17:48:463]         
[1] [Mrz 25 13:17:48:463] LogLevel was 7
[1] [Mrz 25 13:17:48:463] LogLevel set to 6
Offensichtlich enthält die InfoMap sowohl deutsche als auch englische Einträge. Wie gesagt, die Installierte Windows-Version ist in englisch.
Die Registry-Einträge in [HKLM\System\CurrentControlSet\NIs\Language] sind wie folgt: Default = "0407" und InstallLanguage = "0409".
Ich habe momentan einen Workaround und verwende einen modifizierten Eintrag von "system_default_lang_region", trotzdem scheint ja irgend etwas nicht richtig zu sein.

Vielen Dank.

Re: Problem mit "GetLocaleInfoMap"

Verfasst: 25 Mär 2013, 14:30
von d.oertel
Hi,

die Einträge 'language_id_2chars' bis 'default_ansi_code_page' verwenden den WindowsAPI Call

Code: Alles auswählen

GetLocaleInfo(LOCALE_SYSTEM_DEFAULT
dieser liefert Infos zur Installierten GUI Sprache.

Daher gibt es extra die Einträge 'system_default*' welche auf dem von Dir erwähnten Registry Eintrag
"HKEY_LOCAL_MACHINE\System\CurrentControlset\Control\Nls\Language','InstallLanguage'" beruhen und Infos zur Systemsprache liefern.

Wie die 'deutschen' Einträge in Dein System kommen, kann ich Dir auch nicht sagen.

gruß
d.oertel

Re: Problem mit "GetLocaleInfoMap"

Verfasst: 25 Mär 2013, 16:58
von tobias
eventuell gar kein englisches System sondern ein Deutsches mit Englischem Sprachpaket. Das geht mittlerweile bei Windows (also sprache umstellen)