原生iOS语言翻译字符串及其语言代码识别(LCID)

ali*_*gar 4 xcode localization ios nslocale

iOS如何在翻译字符串或语言的区域设置中显示语言列表.

  • 是否有与之相关的LCID?
  • 如果是这样,我在哪里可以找到它的映射?
  • 它是如何工作的?
  • 是否有API或任何文档可以指向我?

我附上了我实际意思的截图: 在此输入图像描述

我能找到的就是这个链接

更新:我想实现这样的目标:

  • 我可以在哪里映射国家的语言,实际上是在其语言环境中.那么有一个LCID类型的东西,我可以映射它并使用iOS API使用LCID获取该Locale字符串?

  • 样机在下面
    在此输入图像描述

Mar*_*n R 10

您可以使用以下代码获取在语言环境中翻译的语言列表:

Objective-C的:

NSArray *languages = [NSLocale preferredLanguages];
for (NSString *lang in languages)
{
    NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:lang];
    NSString *translated = [locale displayNameForKey:NSLocaleIdentifier value:lang];
    NSLog(@"%@, %@", lang, translated);
}
Run Code Online (Sandbox Code Playgroud)

迅速:

let languages = NSLocale.preferredLanguages()
for lang in languages {
    let locale = NSLocale(localeIdentifier: lang)
    let translated = locale.displayNameForKey(NSLocaleIdentifier, value: lang)!
    print("\(lang), \(translated)")
}
Run Code Online (Sandbox Code Playgroud)

输出:

en, English
fr, français
de, Deutsch
ja, ???
nl, Nederlands
...
Run Code Online (Sandbox Code Playgroud)

我希望这能回答你问题的第一部分,也许有助于第二部分.


Swift 3更新:

let languages = NSLocale.preferredLanguages
for lang in languages {
    let locale = NSLocale(localeIdentifier: lang)
    let translated = locale.displayName(forKey: NSLocale.Key.identifier, value: lang)!
    print("\(lang), \(translated)")
}
Run Code Online (Sandbox Code Playgroud)