如何在 iOS/Android 上获取当前设备语言?

Posted

技术标签:

【中文标题】如何在 iOS/Android 上获取当前设备语言?【英文标题】:How can I get the current device language on iOS/Android? 【发布时间】:2018-07-09 14:23:31 【问题描述】:

我需要知道在 ios/android 设备上使用什么语言,因为我在 Xamarin Studio 中构建了一个支持三种不同语言的 MonoGame 应用程序。如果设备的当前语言是英语,则应用程序将以英语显示文本,但如果设备的当前语言是法语,则文本将以法语而不是英语显示。如果我的应用程序不支持设备的当前语言(例如中文),那么文本的默认语言将为英文。

如何在 Xamarin Studio 中获取 iOS/Android 上的当前设备语言?

【问题讨论】:

Xamarin.IOS: localization does not work的可能重复 【参考方案1】:

要以编程方式获取语言,您可以在 Android 上使用:

Locale.Default.GetDisplayLanguage(Locale.Default)

在 iOS 上:

var userLang = NSLocale.CurrentLocale.LocaleIdentifier;

【讨论】:

它不工作。我收到 iOS 的此错误消息:当前上下文中不存在名称 'NSLocale' (CS0103) 而 Android 的此错误消息:'Locale' is inaccessible due to its protection level (CS0122) 确保你有正确的用途。两者都是公开且可用的:developer.xamarin.com/api/type/Java.Util.Locale 和 developer.xamarin.com/api/type/MonoTouch.Foundation.NSLocale 如果Locale也定义在另一个命名空间/程序集中,你可以完全限定它"Java.Util.Locale.Default.GetDisplayLanguage(Locale.Default) 这两者的返回格式是非常不同的。 NSLocale.CurrentLocale.LocaleIdentifier 将返回“en_US”,Locale.Default.GetDisplayLanguage(Locale.Default) 将返回“English”【参考方案2】:

您可以使用 CultureInfo:

CultureInfo.CurrentCulture.TwoLetterISOLanguageName

Plus 是跨平台的。

【讨论】:

【参考方案3】:

1) 打开设置,在主屏幕上,点击设置 2)点击一般,在下一个屏幕上,点击一般 3) 选择语言和地区。如果您使用的是 iOS 8 或更高版本,请向下滚动并点按语言和地区 4)点击设备语言,在下一个屏幕上,点击“[设备]语言”

这应该可以解决您的问题。但是,如果这不能解决您的问题,请参阅 here

【讨论】:

以上是关于如何在 iOS/Android 上获取当前设备语言?的主要内容,如果未能解决你的问题,请参考以下文章

如何在谷歌地图 api v2 上获取设备的当前位置?

如何获取当前设备的图片(如 iTunes 所示)?

在iOS中获取当前的设备语言?

如何在移动iOS / Android上使用JS屏蔽截图? [关闭]

iOS 获取当前时间格式化字符串

onCallAdded的回调如何获取当前设备的电话号码和SIM卡槽?