本文整理自网络,侵删。
用 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;
相关阅读 >>
Delphi -- gdi+ Delphi如何让 tgpimage 直接从流中加载图片
Delphi 2009 泛型容器单元(generics.collections)[5]: tobject...<t> 系列
更多相关阅读请进入《Delphi》频道 >>