如何在iOS / Android中获取区域设置ID

时间:2015-06-26 16:15:59

标签: android ios delphi

我需要像Windows返回的区域设置ID

GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_ILANGUAGE, PChar(locale), 256)

适用于iOS和Android。我需要为Sql Server整理信息(LCID)。感谢。

2 个答案:

答案 0 :(得分:4)

您可以使用TPlatformServicesIFMXLocaleService界面访问设备区域设置服务。

uses
  FMX.Platform;
...
...
var
  LService: IFMXLocaleService;
  LangID  : string;
begin
  if TPlatformServices.Current.SupportsPlatformService(IFMXLocaleService, IInterface(LService)) then
    LangID := LService.GetCurrentLangID;
end;

答案 1 :(得分:1)

您的功能GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_ILANGUAGE, PChar(locale), 256)将返回Windows specific LCID code number

例如,对于美国英语,它将返回0409十六进制代码,其中09标记主要语言ID(en),04是排序顺序标识符。 Windows Locale Identifiers Format

问题是你无法在其他平台上获得这样的数字,你必须创建自定义了望表来映射平台区域设置(你可以使用@RRUZ答案找到平台区域设置)到Windows。

您可以获得的最佳功能是OS X,您可以使用以下代码获取主Windows区域设置ID:

uses
  Macapi.Foundation;

var
  WinID: integer;

   WinID := TNSLocale.OCClass.windowsLocaleCodeFromLocaleIdentifier(TNSLocale.Wrap(TNSLocale.OCClass.currentLocale).localeIdentifier);

如果美国英语以上功能将返回0009十六进制代码。