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

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

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

【问题讨论】:

标签: c# android ios xamarin


【解决方案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)
  • 如果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

    【讨论】:

      猜你喜欢
      • 2011-10-13
      • 1970-01-01
      • 2013-03-15
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 1970-01-01
      • 2016-03-01
      相关资源
      最近更新 更多