Delphi FireMonkey APP 如何获得当前系统语言设置

2017-10-07 19:45:52来源:CSDN作者:pcplayer人点击

分享

用 Delphi 的 FireMonkey 框架,可以写手机 APP,Android 和 iOS 都支持。

FireMonkey 框架还提供了一个函数:LoadLangFromStrings,加载对应的语言内容,程序界面上的元素会自动显示加载的语言里的文字。比如 TLabel.Text 就会自动变化。这里,TLabel 有一个属性:AutoTranslate,默认是 True,设计期可以在属性编辑器里修改,就是干这个的。


那么,程序要加载相应的语言数据,程序如何知道当前系统的语言设置呢?这里有段代码,来自:https://forums.embarcadero.com/thread.jspa?threadID=108333

uses FMX.Platform{$IFDEF MSWINDOWS},WinAPi.Windows{$ENDIF};{$R *.fmx}//以下这个函数,获取当前操作系统的语言设置。比如 Windows 底下,语言为中文,返回 Zh//这个函数支持各种操作系统。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;

上述代码,测试通过。

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台