Die WindowsAPI stellt vier verschiedene Abfragemöglichkeiten für die Sprache zur
Verfügung:
Regionale Einstellungen (locale):
---------------------------------
System:
GetSystemDefaultLangID
User:
GetUserDefaultLangID
Einstellungen für die Sprache (user interface):
-----------------------------------------------
(verfügbar erst ab Windows ME, bzw. 2000)
System:
GetSystemDefaultUILanguage
User:
GetUserDefaultUILanguage
Alle Funktionen geben als Ergebnis den "language identifier" zurück, z.B.
$407 für deutsch, &409 für englisch
Weitere Hinweise in " Platform
SDK for Windows XP"
Implementierung unter Delphi 7:
-------------------------------
"GetSystemDefaultLangID" und "GetUserDefaultLangID" sind in "Windows.pas" deklariert.
"GetSystemDefaultUILanguage" und "GetUserDefaultUILanguage" fehlen und müssen
daher selbst deklariert werden.
Für Anwendungen unter Windows 2000 und neuer:
interface
...
{$EXTERNALSYM GetSystemDefaultUILanguage}
function GetSystemDefaultUILanguage: LANGID; stdcall;
{$EXTERNALSYM GetUserDefaultUILanguage}
function GetUserDefaultUILanguage: LANGID; stdcall;
implementation
...
function GetSystemDefaultUILanguage; external kernel32 name 'GetSystemDefaultUILanguage';
function GetUserDefaultUILanguage; external kernel32 name 'GetUserDefaultUILanguage';
Für eine Kompatibilität zu älteren Betriebssystem müssen diese beiden Deklarationen dynamisch
eingefügt werden (siehe Anhang).
Hinweis zu GnuGetText for Delphi:
---------------------------------
Die dort enthaltene Funktion "GetWindowsLanguage" fragt die regionalen Einstellungen ab,
was bei unterschiedlichen Sprach- und Regionaleinstellunegn zu falschen Ergebnissen führt.
Bsp:
Ein englisches Windows mit regionalen Einstellungen für Deutschland (Datum, Uhrzeit, etc.)
liefert $407 (deutsch) zurück. Als System-Sprache sollte aber englisch erkannt werden.
Das richtige Ergebnis liefert o.g. Funktion "GetUserDefaultUILanguage" (Ergebnis: $409).