mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-18 04:59:08 +02:00
LCL: fixed GetLanguageIDs under darwin
git-svn-id: trunk@20963 -
This commit is contained in:
parent
fccbd52e32
commit
263867bb86
@ -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}
|
||||||
|
Loading…
Reference in New Issue
Block a user