localizedString(forRegionCode:) 使用应用程序不支持的语言

localizedString(forRegionCode:) uses a language the app does not support

iPad 设置:

语言顺序是:

  1. 法语
  2. 中文

并且区域设置为德国。

应用程序支持:

pod 支持:

现在,在 pod 中,当我这样调用 NSLocalizedStrings 时: NSLocalizedString("Search", tableName: nil, bundle: loginBundle, value: "", comment: "Search") 我得到了中文翻译(如预期)。

但是,当我调用 NSLocale.current.localizedString(forRegionCode:) 时,我得到的国家名称是法语而不是中文。 NSLocale.current.languageCode"zh"NSLocale.current.regionCode"DE"

如何获取当前使用语言的国家名称?

应用程序中使用的语言首先是设备特定的,然后是应用程序特定的。因此,它首先使用设备上最喜欢的语言,捆绑包中也提供了这种语言。特别是您可以通过查看 Locale.preferredLanguages.first.

来测试问题发生的原因

参见here。因此,您可以通过以下方式获得所需内容:

Locale(identifier: Bundle.main.preferredLocalizations[0]).localizedString(forRegionCode:)

为确保将捆绑包的首选本地化设置为中文,您还可以使用 Locale(identifier: “zh”) 手动 select Locale。但是使用应用程序包无需硬编码即可解决问题。