Einzelnen Beitrag anzeigen

kopernikus

Registriert seit: 8. Feb 2008
17 Beiträge
 
Delphi 10 Seattle Professional
 
#26

Re: Windows Sprache ermitteln

  Alt 6. Feb 2009, 12:58
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).
Angehängte Dateien
Dateityp: zip winapi_192.zip (6,3 KB, 55x aufgerufen)
  Mit Zitat antworten Zitat