【问题标题】:Check language in iOS app在 iOS 应用中检查语言
【发布时间】:2015-03-22 10:30:17
【问题描述】:

任务是:我有两个 UIImageViews,如果系统语言是乌克兰语,我想要呈现 ImageView1,如果不是乌克兰语(英语/波兰语等),我想要呈现 ImageView2。

我试过了:

println(NSUserDefaults.standardUserDefaults().objectForKey("AppleLanguages"))

但此代码仅提供可用语言的列表。我也试过了

var language: AnyObject? = NSLocale.preferredLanguages().first

但是如何将此变量与英语或乌克兰语进行比较?

【问题讨论】:

  • 您记录了NSLocale.preferredLanguages().first 的结果吗?它给了你什么。
  • 它给了我 Optional(en)

标签: ios swift localization nslocale


【解决方案1】:

斯威夫特 3 你可以像这样获取语言代码

let preferredLanguage = NSLocale.preferredLanguages[0]

然后你需要将它与代码字符串进行比较

if preferredLanguage == "en" {
    print("this is English")
} else if preferredLanguage == "uk" {
    print("this is Ukrainian")
}

您可以找到代码here

检查法语是否...的示例

/// Is Device use french language 
/// Consider, "fr-CA", "fr-FR", "fr-CH" et cetera
///
/// - Returns: Bool
static func isFrench() -> Bool {
    return NSLocale.preferredLanguages[0].range(of:"fr") != nil
}

【讨论】:

  • 请注意,您正在使用as String 解包可选,并且在if let 构造中使用它可能是明智的。只是我的两分钱。您真的只想查看首选语言的第一个/[0],而不是整个数组吗?
  • 我认为问题是针对一种语言提出的。您很可能不需要多种语言。如果这样做,您可以只获取所有数组并使用每个值。另外,我想相信数组中总是有一种语言,但因为这是一个假设,所以我更新了我的答案。
  • 这是否考虑了后备语言?例如,有人可能将他们的语言选择设置为“fr-CA”,但应用程序可能只有 iOS 会选择使用的“fr”。
【解决方案2】:

斯威夫特 5

Locale.current.regionCode // Optional("US")
Locale.current.languageCode // Optional("en")
Locale.current.identifier // en_US

extension

extension Locale {
  var isKorean: Bool {
    return languageCode == "ko"
  }
}

Locale.current.isKorean => false

【讨论】:

    【解决方案3】:

    Swift 4 如果队列中有更多语言(例如,preferredLanguage 将返回:“uk-US”),但您希望排在第一位。
    你可以这样做:

    let preferredLanguage = NSLocale.preferredLanguages[0]
    if preferredLanguage.starts(with: "uk"){
     print("this is Ukrainian")
     } else{
     print("this is not Ukrainian")
     }
    

    【讨论】:

      【解决方案4】:

      您可以使用以下代码 它适用于 swift 3

          if Bundle.main.preferredLocalizations.first == "en" {
              print("this is english")
          }else{
             print("this not english")
          }
      

      【讨论】:

        【解决方案5】:

        除了前面提到的之外,您还可以在每个 Localizable 文件中添加一个条目来告诉您正在使用哪个字典。

        // Localizable.strings (zh)

        "language" = "en";
        

        // Localizable.strings (ar)

        "language" = "ar";
        

        // 用法

        NSLocalizedString("language", comment: "")
        // check the resulted string
        

        【讨论】:

          猜你喜欢
          • 2017-12-21
          • 2013-10-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-03-31
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多