Cocoa: Fix #40495: auto language detection on MacOS

add LANG environment variable from AppleLocale in GUI APP
This commit is contained in:
rich2014 2023-09-09 23:16:22 +08:00
parent 2c448bcff5
commit dbde03d6a3

View File

@ -8,7 +8,7 @@ interface
uses
classes,
MacOSAll, CocoaAll, Cocoa_Extra,
SysUtils, Types, LCLType, LCLClasses, LCLProc,
SysUtils, Types, LCLType, LCLClasses, LCLProc, Unix,
Graphics, Math, GraphType;
var
@ -147,6 +147,8 @@ function AllocImageRotatedByDegrees(src: NSImage; degrees: double): NSImage;
function AllocCursorFromCursorByDegrees(src: NSCursor; degrees: double): NSCursor;
var
NSSTR_AppleLocale: NSString;
NSSTR_DARK_NAME: NSString;
NSSTR_DARK_NAME_VIBRANT: NSString;
NSSTR_LINE_FEED: NSString;
@ -1258,13 +1260,27 @@ begin
img.release;
end;
function setenv(const name:PAnsiChar; const value:PAnsiChar; overwrite:cint): cint; cdecl; external clib;
procedure FIX_LANG_ENV_VAR;
var
nsLang: NSString;
begin
nsLang:= NSUserDefaults.standardUserDefaults.stringForKey( NSSTR_AppleLocale );
if not Assigned(nsLang) then
exit;
setenv( 'LANG', nsLang.UTF8String, 0 );
end;
initialization
NSSTR_AppleLocale:= NSSTR('AppleLocale');
NSSTR_DARK_NAME:= NSSTR(DarkName);
NSSTR_DARK_NAME_VIBRANT:= NSSTR(DarkNameVibrant);
NSSTR_LINE_FEED:= NSStr(#10);
NSSTR_CARRIAGE_RETURN:= NSStr(#13);
NSSTR_LINE_SEPARATOR:= StrToNSString(#$E2#$80#$A8, false);
NSSTR_PARAGRAPH_SEPARATOR:= StrToNSString(#$E2#$80#$A9, false);
FIX_LANG_ENV_VAR;
finalization;
NSSTR_LINE_SEPARATOR.release;