Wenn die Anwendung mit eigenen Logins arbeitet, kommt meist eine Klassenbibliothek zum Einsatz, die auf Basis des Anwendungslogins, die korrekte Sprache für die jeweiligen Masken einblendet.
Diese User-bezogene Reaktion können wir jedoch ganz einfach auf eine höhere Ebene tragen. Es wäre doch eigentlich ganz praktisch, wenn unsere Anwendung von sich aus merkt, dass der User bereits vom BS aus in einer anderen Sprache unterwegs ist.
Hilfreich ist uns hierbei wieder einmal die Windows API. Der folgende recht kurze Code zeigt, wie wir die entsprechenden Informationen aus Windows herauskitzeln.
* Konstantendeklaration
#DEFINE LOCAL_USER_DEFAULT BITLSHIFT(0x01, 10) && Benutzer Standard
#DEFINE LOCAL_SYSTEM_DEFAULT BITLSHIFT(0x02, 10) && System Standard
#DEFINE LOCAL_SENGLANGUAGE 0x00001001 && Englischer Name
#DEFINE LOCAL_SABBREVLANGNAME 0x00000003 && Abgekürzt
#DEFINE LOCAL_SNATIVELANGNAME 0x00000004 && Ausgeschrieben
* API Deklaration
DECLARE Integer GetLocaleInfo IN Win32API ;
Long Locale, Long LCType, String @ LCData, Integer size
* Lokale Arbeitsvariablen
LOCAL lcBuffer as String, liLength as Integer
lcBuffer = SPACE(256)
liLength = 0
CLEAR
* Benutzersprache (standard), englisch, ausgeschrieben
liLength = GetLocaleInfo(LOCAL_USER_DEFAULT, LOCAL_SENGLANGUAGE, @lcBuffer, 256)
? [(User) Standardsprache : ] + LEFT( lcBuffer , liLength - 1 )
* Systemsprache, abgekürzt, deutsch
liLength = GetLocaleInfo(LOCAL_SYSTEM_DEFAULT, LOCAL_SABBREVLANGNAME, @lcBuffer, 256)
? [(System) Abgekürzt : ] + LEFT( lcBuffer , liLength - 1 )
* Systemsprache, ausgeschrieben, deutsch
liLength = GetLocaleInfo(LOCAL_SYSTEM_DEFAULT, LOCAL_SNATIVELANGNAME, @lcBuffer, 256)
? [Systemsprache : ] + LEFT( lcBuffer , liLength - 1 )
Keine Kommentare:
Kommentar veröffentlichen