c# - RegionInfo.CurrentRegion 基于设备语言 - c#

标签 c# android ios xamarin xamarin.forms

我可以使用 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/

相关文章:

c# - 列出内部 IQueryable 对象

c# - RavenDB EsentOutOfLongValueIDsException 异常

android - map 的自动链接不起作用

iphone - ios流mp3并录制声音

ios - 添加Restkit关系映射,其键路径与关系名称不同

c# - 如何在 xamarin 中添加 System.Drawing?

c# - new() 在这种情况下意味着什么

android - DDMS 插件不加载 GPX 文件

java - 不同 Activity 中的元素不会折叠

php - 将我的 DeviceToken 移动到我的数据库