检查iOS应用中的语言

时间:2015-03-22 10:30:18

标签: ios swift localization nslocale

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

我试过了:

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

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

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

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

5 个答案:

答案 0 :(得分:25)

Swift 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
}

答案 1 :(得分:6)

雨燕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

答案 2 :(得分:2)

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")
 }

答案 3 :(得分:1)

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

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

答案 4 :(得分:0)

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

// Localizable.strings(en)

"language" = "en";

// Localizable.strings(ar)

"language" = "ar";

//用法

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