首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RegionInfo.CurrentRegion是基于设备语言c#的。

RegionInfo.CurrentRegion是基于设备语言c#的。
EN

Stack Overflow用户
提问于 2019-04-30 17:37:36
回答 2查看 3.8K关注 0票数 3

我可以使用System.全球化的RegionInfo.CurrentRegion来检测基于xamarin表单的项目设备中的用户区域吗?当我使用它时,检测到的区域是基于我在设备设置中设置的设备语言。如果我不应该使用它,请引导我在正确的方向实现用户区域的地理检测。注意: 1.我还要求基于设备语言设置应用程序语言。(在某个地方,我看到了regioninfo基于cultureinfo中的区域性集来检测区域) 2.我基本上想要检测用户是否在欧洲

如果有经验的人指点方向,那就很好了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-26 15:19:21

我通过对我的xamarin.forms应用程序采用以下方法使它工作起来

对于检测位置,我为Android和iOS - https://learn.microsoft.com/en-gb/xamarin/essentials/geolocation?context=xamarin%2Fandroid&tabs=android使用了Xamarin.Essentials地理定位插件

对于检测设备语言,我偶然发现了官方本地化的Xamarin文档,这些文档对我帮助很大:

Android - https://learn.microsoft.com/en-us/xamarin/android/app-fundamentals/localization

iOS - https://learn.microsoft.com/en-gb/xamarin/ios/app-fundamentals/localization/#language

票数 1
EN

Stack Overflow用户

发布于 2019-04-30 18:21:26

你应该没事..。

iOS & macOS在框架中是特殊的大小写,因为它通过本机调用获得CurrentRegion

代码语言:javascript
复制
NSLocale.CurrentLocale.CountryCode

re:https://developer.apple.com/documentation/foundation/nslocale?language=objc

因此,不可能不获得在iOS中定义的ISO国家代码,因为它是OS自身设置的一部分,是不可跳过的(我认为iOS macOS甚至不支持在本地OS级别定义不变区域性的方法)。

在Android上,执行默认的Mono/..Net代码并提取国家:

代码语言:javascript
复制
Thread.CurrentThread.CurrentCulture

注意: Mono运行时本身正在确定线程区域性的初始设置(当然,这在代码中是可编程更改的)。

因此,假设设备的区域设置为已知的国家,则可以使用RegionInfo.CurrentRegion

但是您应该知道,CultureInfo.InvariantCultureId是一种有效的文化,因此返回ISO国家的IV是可能的:

代码语言:javascript
复制
iso2Name = "IV";
iso3Name = "ivc";
win3Name = "IVC";
nativeName = englishName = "Invariant Country";

就我个人而言,我不知道有一个欧亚国家没有被不包括在Android设备中的直接ISO代码所覆盖(但是在欧洲和亚洲有很多Android原始设备制造商,所以也许(?)你可以得到一个IV返回.)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55926132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档