LCL: fixed GetLanguageIDs under darwin

git-svn-id: trunk@20963 -
This commit is contained in:
mattias 2009-07-26 09:45:15 +00:00
parent fccbd52e32
commit 263867bb86

View File

@ -4224,15 +4224,21 @@ end;
procedure LCLGetLanguageIDs(var Lang, FallbackLang: String); procedure LCLGetLanguageIDs(var Lang, FallbackLang: String);
{$IFDEF DARWIN} {$IFDEF DARWIN}
function GetLanguage: String; function GetLanguage: boolean;
var var
Ref: CFStringRef; Ref: CFStringRef;
LangArray: CFMutableArrayRef; LangArray: CFMutableArrayRef;
StrSize: CFIndex; StrSize: CFIndex;
StrRange: CFRange; StrRange: CFRange;
Locals: CFArrayRef;
Bundle: CFBundleRef;
begin begin
Result := 'en'; Result := false;
LangArray := CFBundleCopyLocalizationsForPreferences(CFBundleCopyBundleLocalizations(CFBundleGetMainBundle), nil); Bundle:=CFBundleGetMainBundle;
if Bundle=nil then exit;
Locals:=CFBundleCopyBundleLocalizations(Bundle);
if Locals=nil then exit;
LangArray := CFBundleCopyLocalizationsForPreferences(Locals, nil);
try try
if CFArrayGetCount(LangArray) > 0 then if CFArrayGetCount(LangArray) > 0 then
begin begin
@ -4242,11 +4248,15 @@ procedure LCLGetLanguageIDs(var Lang, FallbackLang: String);
CFStringGetBytes(Ref, StrRange, kCFStringEncodingUTF8, CFStringGetBytes(Ref, StrRange, kCFStringEncodingUTF8,
Ord('?'), False, nil, 0, StrSize); Ord('?'), False, nil, 0, StrSize);
SetLength(Result, StrSize); SetLength(Lang, StrSize);
if StrSize > 0 then if StrSize > 0 then
begin
CFStringGetBytes(Ref, StrRange, kCFStringEncodingUTF8, CFStringGetBytes(Ref, StrRange, kCFStringEncodingUTF8,
Ord('?'), False, @Result[1], StrSize, StrSize); Ord('?'), False, @Lang[1], StrSize, StrSize);
Result:=true;
FallbackLang := Copy(Lang, 1, 2);
end;
end; end;
finally finally
CFRelease(LangArray); CFRelease(LangArray);
@ -4255,13 +4265,8 @@ procedure LCLGetLanguageIDs(var Lang, FallbackLang: String);
{$ENDIF} {$ENDIF}
begin begin
{$IFDEF DARWIN} {$IFDEF DARWIN}
if CFBundleGetMainBundle = nil then if not GetLanguage then
GetLanguageIDs(Lang, FallbackLang) GetLanguageIDs(Lang, FallbackLang);
else
begin
Lang := GetLanguage;
FallbackLang := Copy(Lang, 1, 2);
end;
{$ELSE} {$ELSE}
GetLanguageIDs(Lang, FallbackLang); GetLanguageIDs(Lang, FallbackLang);
{$ENDIF} {$ENDIF}