Via Cà Matta 2 - Peschiera Borromeo (MI)
+39 02 00704272
info@synaptica.info

Delphi 10Seattle – Get current device language

Digital solution partner

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

Leave a Reply