我可以使用 System.Globalization 的 RegionInfo.CurrentRegion 来检测设备中基于 xamarin 表单的项目的用户区域吗?当我使用它时,检测到的区域是基于我在设备设置中设置的设备语言。如果我不应该使用它,请引导我朝着正确的方向在地理上实现用户区域检测。 笔记: 1. 我还有一个需求,就是要根据设备语言来设置应用语言。 (我在某处看到 regioninfo 根据 cultureinfo 中的文化集检测区域) 2. 我基本上想检测用户是否在欧洲的地理位置
如果哪位有经验的人指点一下就好了。
最佳答案
你应该没问题...
iOS 和 macOS 在框架内是特殊情况,因为它通过 native 调用获取 CurrentRegion
NSLocale.CurrentLocale.CountryCode
回复:https://developer.apple.com/documentation/foundation/nslocale?language=objc
所以不可能不获得 iOS 中定义的 ISO 国家代码,因为它是操作系统本身设置的一部分并且不可跳过(我不相信 iOS | macOS 甚至支持定义不变的方法本地操作系统级别的文化)
在 Android 上,执行默认的 Mono/.Net 代码并提取国家/地区:
Thread.CurrentThread.CurrentCulture
注意:Mono 运行时本身正在确定线程文化的初始设置(这当然可以通过您的代码以编程方式更改)
因此,假设设备的区域设置设置为已知国家/地区,您可以使用 RegionInfo.CurrentRegion
。
但您应该知道 CultureInfo.InvariantCultureId
是一种有效的文化,因此可能会返回 ISO 国家 IV
:
iso2Name = "IV";
iso3Name = "ivc";
win3Name = "IVC";
nativeName = englishName = "Invariant Country";
就我个人而言,我不知道哪个欧洲国家不受直接 ISO 代码覆盖,Android 设备也未覆盖(但欧洲和亚洲有很多 Android OEM,所以也许(?)你可以获得 IV
返回...)。
关于c# - RegionInfo.CurrentRegion 基于设备语言 - c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55926132/