diff --git a/components/lazutils/translations.pas b/components/lazutils/translations.pas index 2993b933f4..7a53401b3f 100644 --- a/components/lazutils/translations.pas +++ b/components/lazutils/translations.pas @@ -225,6 +225,11 @@ uses Windows; {$ENDIF} +{$IFDEF DARWIN} +uses + MacOSAll, Unix; +{$ENDIF} + function IsKey(Txt, Key: PChar): boolean; begin if Txt=nil then exit(false); @@ -1907,5 +1912,25 @@ begin end; end; +{$IFDEF DARWIN} +function setenv(const name:PAnsiChar; const value:PAnsiChar; overwrite:cint): cint; cdecl; external clib; + +procedure FIX_MACOS_LANG_ENV_VAR; +var + cfLang: CFPropertyListRef; + lang: array[0..49] of char; +begin + cfLang:= CFPreferencesCopyAppValue( CFSTR('AppleLocale'), CFSTR('') ); + if not Assigned(cfLang) then + exit; + CFStringGetCString( cfLang, lang, SizeOf(lang), kCFStringEncodingUTF8 ); + setenv( 'LANG', lang, 0 ); + CFRelease( cfLang ); +end; + +initialization + FIX_MACOS_LANG_ENV_VAR; +{$ENDIF} + end. diff --git a/lcl/interfaces/cocoa/cocoautils.pas b/lcl/interfaces/cocoa/cocoautils.pas index 3bd81e8ec4..10312c6ca8 100644 --- a/lcl/interfaces/cocoa/cocoautils.pas +++ b/lcl/interfaces/cocoa/cocoautils.pas @@ -8,7 +8,7 @@ interface uses classes, MacOSAll, CocoaAll, Cocoa_Extra, - SysUtils, Types, LCLType, LCLClasses, LCLProc, Unix, + SysUtils, Types, LCLType, LCLClasses, LCLProc, Graphics, Math, GraphType; var @@ -147,8 +147,6 @@ 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; @@ -1260,27 +1258,13 @@ 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;