Hi zusammen,
hat jemand ggf. einen Vorschlag wie ich unter MacOS die Systemsprache herausfinden kann per PureBasic?
Unter Windows konnte ich immer "GetLocaleInfo_" benutzen.
Danke im voraus,
Daniel
Wie kann ich die eingestellte Systemsprache herausfinden
-
- Beiträge: 123
- Registriert: 27.03.2006 09:45
-
- Beiträge: 65
- Registriert: 02.06.2008 16:10
Re: Wie kann ich die eingestellte Systemsprache herausfinden
Hi Daniel,
ich hab' das mal so gemacht... Geht über API bestimmt eleganter
Auf meinem System gibt es ein "de" zurück, auf nem Englischen halt ein "en"...
Im englischen Forum gibt es auch gerade einen Thread mit API-Library:
http://www.purebasic.fr/english/viewtop ... 19&t=46243
Grüßle
J.
ich hab' das mal so gemacht... Geht über API bestimmt eleganter
Auf meinem System gibt es ein "de" zurück, auf nem Englischen halt ein "en"...
Im englischen Forum gibt es auch gerade einen Thread mit API-Library:
http://www.purebasic.fr/english/viewtop ... 19&t=46243
Code: Alles auswählen
Procedure.s Get_MacOSX_Default(inwhat$, whattype$)
Define x,x$
x = RunProgram("/usr/bin/defaults", "read " + inwhat$ + " " + whattype$, "/usr/bin", #PB_Program_Open|#PB_Program_Read)
If x = 0 : ProcedureReturn "error" : EndIf
x$ = ""
While ProgramRunning(x)
x$ = x$ + ReadProgramString(x); Trim(" ", ReadProgramString(x))
Wend
CloseProgram(x)
ProcedureReturn x$
EndProcedure
LanguageCode$ = Get_MacOSX_Default("NSGlobalDomain", "AppleLocale")
Language$ = Left(LanguageCode$, 2)
Debug language$
J.
Re: Wie kann ich die eingestellte Systemsprache herausfinden
Mit API:
Code: Alles auswählen
ImportC ""
CFRelease(CFTypeRef.L)
CFStringGetCString(CFStringRef.L, *StringBuffer, BufferSize.L, CFStringEncoding.L)
KLGetCurrentKeyboardLayout(*KeyboardLayoutRef)
KLGetKeyboardLayoutProperty(KeyboardLayoutRef.L, PropertyTag.L, *PropertyValue)
EndImport
#kKLName = 5
Procedure.S ConvertCFStringIntoString(CFStringRef.L)
Protected String.S = Space(256)
CFStringGetCString(CFStringRef, @String, Len(String), 0)
CFRelease(CFStringRef)
ProcedureReturn Trim(String)
EndProcedure
Define LanguageName.S
If KLGetCurrentKeyboardLayout(@KeyboardLayoutRef) = 0
If KLGetKeyboardLayoutProperty(KeyboardLayoutRef, #kKLName, @LanguageNameRef) = 0
MessageRequester("Tastatur-Info", "Aktuell eingestellte Sprache: " + ConvertCFStringIntoString(LanguageNameRef))
EndIf
EndIf
-
- Beiträge: 123
- Registriert: 27.03.2006 09:45
Re: Wie kann ich die eingestellte Systemsprache herausfinden
Hi ihr beiden,
vielen Dank für die schnelle Hilfe. Damit klappt es einwandfrei.
Gracias,
Daniel
vielen Dank für die schnelle Hilfe. Damit klappt es einwandfrei.
Gracias,
Daniel
Re: Wie kann ich die eingestellte Systemsprache herausfinden
Hallo Shardik,Shardik hat geschrieben:Mit API:Code: Alles auswählen
ImportC "" CFRelease(CFTypeRef.L) CFStringGetCString(CFStringRef.L, *StringBuffer, BufferSize.L, CFStringEncoding.L) KLGetCurrentKeyboardLayout(*KeyboardLayoutRef) KLGetKeyboardLayoutProperty(KeyboardLayoutRef.L, PropertyTag.L, *PropertyValue) EndImport #kKLName = 5 Procedure.S ConvertCFStringIntoString(CFStringRef.L) Protected String.S = Space(256) CFStringGetCString(CFStringRef, @String, Len(String), 0) CFRelease(CFStringRef) ProcedureReturn Trim(String) EndProcedure Define LanguageName.S If KLGetCurrentKeyboardLayout(@KeyboardLayoutRef) = 0 If KLGetKeyboardLayoutProperty(KeyboardLayoutRef, #kKLName, @LanguageNameRef) = 0 MessageRequester("Tastatur-Info", "Aktuell eingestellte Sprache: " + ConvertCFStringIntoString(LanguageNameRef)) EndIf EndIf
wenn ich diesen Code in >unicode< compiliere, dann bekomme ich asiatische Schriftzeichen als Antwort.
In >ascii< funktioniert es einwandfrei.
michel51
Mac OS X Snow Leopard (10.6.8 ) Intel
PureBasic V 5.11(X64), V 5.21(x64)
Zum Lernen ist niemand zu alt.
Mac OS X Snow Leopard (10.6.8 ) Intel
PureBasic V 5.11(X64), V 5.21(x64)
Zum Lernen ist niemand zu alt.
Re: Wie kann ich die eingestellte Systemsprache herausfinden
Hallo michel51,michel51 hat geschrieben:Hallo Shardik,
wenn ich diesen Code in >unicode< compiliere, dann bekomme ich asiatische Schriftzeichen als Antwort.
In >ascii< funktioniert es einwandfrei.
Danke für den Hinweis! Ich habe das Beispiel jetzt so angepaßt, daß es
sowohl im ASCII- als auch im Unicode-Modus korrekt funktioniert:
Code: Alles auswählen
ImportC ""
CFRelease(CFTypeRef.L)
CFStringGetCString(CFStringRef.L, *StringBuffer, BufferSize.L, CFStringEncoding.L)
KLGetCurrentKeyboardLayout(*KeyboardLayoutRef)
KLGetKeyboardLayoutProperty(KeyboardLayoutRef.L, PropertyTag.L, *PropertyValue)
EndImport
#kCFStringEncodingMacRoman = 0
#kCFStringEncodingUnicode = $100
#kKLName = 5
Procedure.S ConvertCFStringIntoString(CFStringRef.L)
Protected Encoding.L
Protected String.S = Space(256)
If #PB_Compiler_Unicode
Encoding = #kCFStringEncodingUnicode
Else
Encoding = #kCFStringEncodingMacRoman
EndIf
CFStringGetCString(CFStringRef, @String, Len(String), Encoding)
CFRelease(CFStringRef)
ProcedureReturn Trim(String)
EndProcedure
Define LanguageName.S
If KLGetCurrentKeyboardLayout(@KeyboardLayoutRef) = 0
If KLGetKeyboardLayoutProperty(KeyboardLayoutRef, #kKLName, @LanguageNameRef) = 0
MessageRequester("Tastatur-Info", "Aktuell eingestellte Sprache: " + ConvertCFStringIntoString(LanguageNameRef))
EndIf
EndIf
Re: Wie kann ich die eingestellte Systemsprache herausfinden
Hallo Shardik,Shardik hat geschrieben: Hallo michel51,
Danke für den Hinweis! Ich habe das Beispiel jetzt so angepaßt, daß es
sowohl im ASCII- als auch im Unicode-Modus korrekt funktioniert
Danke! So funktioniert. Guter Job!
michel51
Mac OS X Snow Leopard (10.6.8 ) Intel
PureBasic V 5.11(X64), V 5.21(x64)
Zum Lernen ist niemand zu alt.
Mac OS X Snow Leopard (10.6.8 ) Intel
PureBasic V 5.11(X64), V 5.21(x64)
Zum Lernen ist niemand zu alt.