Delphi 10Seattle – Get current device language
Here is a sample code (function) to get the current language (locale) in Delphi 10Seattle.
This simple procedure return the locale language for Windows, Mac and Android.
function GetOSLangID: String;
{$IFDEF MACOS} var
Languages: NSArray;
begin
Languages := TNSLocale.OCClass.preferredLanguages;
Result := TNSString.Wrap(Languages.objectAtIndex(0)).UTF8String;
{$ENDIF}
{$IFDEF ANDROID} var
LocServ: IFMXLocaleService;
begin
if TPlatformServices.Current.SupportsPlatformService(IFMXLocaleService,
IInterface(LocServ)) then
Result := LocServ.GetCurrentLangID; {$ENDIF}
{$IFDEF MSWINDOWS} var
buffer: MarshaledString;
UserLCID: LCID;
BufLen: Integer;
begin // defaults
UserLCID := GetUserDefaultLCID;
BufLen := GetLocaleInfo(UserLCID, LOCALE_SISO639LANGNAME, nil, 0);
buffer := StrAlloc(BufLen);
if GetLocaleInfo(UserLCID, LOCALE_SISO639LANGNAME, buffer, BufLen) <> 0
then
Result := buffer
else
Result := 'en';
StrDispose(buffer);
{$ENDIF}
end; { code }
//See more at: http://codeverge.com/embarcadero.delphi.firemonkey/detect-current-language-on-andr/2001235#sthash.zjLIi2KY.dpuf