【问题标题】:How to check if NSString language matches NSLocaleLanguageCode如何检查 NSString 语言是否匹配 NSLocaleLanguageCode
【发布时间】:2018-07-30 23:37:56
【问题描述】:

我正在尝试在 XCode 中执行一项简单的任务,即检查某种 NSString 语言是否与用户的首选语言匹配。

例如,假设我有一个字符串,如下所示:

NSString *englishString = @"Good morning!";
NSString *frenchString = @"Bonjour!";

我知道我可以使用 NSLocaleLanguageCode 值获取用户设备的首选语言,并且根据之前的 Stack Overflow 答案 here,我可以获得 NSString 的语言。但是,当我比较这两个值时,键似乎不匹配。有没有更好的方法来实现这一点?谢谢!

NSLocaleLanguageCode 的文档可以在here 找到,NSLinguisticTagger 的描述可以在here 找到。 NSLocaleLanguageCode 返回一个 NSString 而标记器,特别是“tagAtIndex”方法返回一个 NSLinguisticTag 键。

【问题讨论】:

  • 用示例结果更新您的问题。你从NSLocalLanguageCode 得到什么,你从NSLinguisticTagger 得到什么?
  • @rmaddy 感谢您的建议,在上面添加了问题的链接!
  • 仅供参考 - 我刚刚将 an answer 添加到 the other question 中,如果您使用的是 iOS 11+/macOS 10.13+,则可以更轻松地获取字符串的语言。

标签: objective-c string xcode compare matching


【解决方案1】:

你会得到一个字符串。在 Objective-C 中,NSLinguisticTagNSString * 的同义词。只需将NSLinguisticTag(实际上只是一个NSString)与您从区域设置语言代码中获得的NSString 进行比较。

但更简单的解决方案是使用NSLinguisticTaggerdominantLanguageForString: 类方法,轻松获取字符串的语言为NSString。这比使用NSLinguisticTaggertag... 实例方法之一要简单得多,但它确实需要iOS 11+/macOS 10.13+。

NSLinguisticTag languageTag = ... // tag from NSLinguisticTagger

NSString *languageCode = ... // language from NSLocale

if ([languageCode isEqualToString:languageTag]) {
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-03
    • 1970-01-01
    • 1970-01-01
    • 2011-06-26
    • 1970-01-01
    • 2012-03-13
    • 2011-10-02
    • 1970-01-01
    相关资源
    最近更新 更多