Länder-/Sprachinformationen |
|
|||||||||||||||||||||
Innerhalb von Word kann man bekanntlich einem Text eine beliebige Sprache Sprachzuweisen. Möchte man aber diese per VBA auf die Standardeinstellung (zurück-)stellen, sollte man prüfen, welche Systemeinstellungen für den Rechner und den angemeldeten Benutzer (ab Windows 2000/NT) als Standard überhaupt eingestellt sind. Diese Prüfung kann besonders im deutschsprachigen Bereich sinnvoll sein, aber auch wenn länderspezifische Einstellungen greifen. Mit Hilfe des API GetLocaleInfo lassen sich u.a. die aktuellen
System- bzw. Benutzereinstellungen bzgl. der Länder- und Spracheinstellungen auslesen,
wie sie auch in der Systemsteuerung unter Ländereinstellungen angezeigt werden. Dabei
lässt sich festlegen, ob die Benutzereinstellungen (Standard) oder die Systemeinstellungen,
die sich auf das installiert System und nicht auf die benutzerabhängigen Einstellungen beziehen, ausgelesen
werden sollen.
Im Deklarationsteil werden neben dem API noch Konstanten für die Anzeige der Sprache und des Landes definiert. Die beiden weiteren APIs legen fest, wo die Informationen ausgelesen werden sollen: aus den Standard-Systemseinstellungen (LOCALE_SYSTEM_DEFAULT) oder den Standard-Benutzereinstellungen (LOCALE_USER_DEFAULT). Const LOCALE_SNATIVELANGNAME = &H4 'Native name of the language. Const LOCALE_SNATIVECTRYNAME = &H8 'Native name of the country/region. Private Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" ( _ ByVal Locale As Long, _ ByVal LCType As Long, _ ByVal lpLCData As String, _ ByVal cchData As Long) _ As Long 'Default system locale. Private Declare Function GetSystemDefaultLCID Lib "kernel32" () As Long 'Default user locale. Private Declare Function GetUserDefaultLCID Lib "kernel32" () As Long In der Prozedur sub_LandSprache() werden nur die verschiedenen Informationen mit den entsprechenden Parametern an die Funktion fkt_GetInfo() weitergereicht. Private Sub sub_LandSprache() Dim ret As String ret = "Land: " & fkt_GetInfo(LOCALE_SNATIVECTRYNAME) & " (" & fkt_GetInfo(&H1) & ")" & vbCrLf ret = ret & "Sprache: " & fkt_GetInfo(LOCALE_SNATIVELANGNAME) & " (" & GetUserDefaultLCID & ")" MsgBox ret, vbInformation, "Benutzereinstellungen" End Sub In der Funktion fkt_GetInfo() erfolgt dann die eigentliche Ermittlung der jeweiligen Infomation anhand des mitgegebenen Parameters. Public Function fkt_GetInfo(ByVal lngInfo As Long) As String Dim Buffer As String, ret As String Buffer = String$(256, 0) ret = GetLocaleInfo(GetUserDefaultLCID, lngInfo, Buffer, Len(Buffer)) If ret > 0 Then fkt_GetInfo = Left$(Buffer, ret - 1) Else fkt_GetInfo = "keine Information" End If End Function |
www.chf-online.de/api/apilandsprache.htm | © 2001-11 Christian Freßdorf (Zaphod-Systems) |