在代码中查找iOS应用程序的当前本地化

时间:2014-03-14 12:13:22

标签: ios localization

已连接问题:Non-English default language for iOS App?

我想知道如何在代码中检查我的应用的当前本地化。 例如: 我想检查应用程序是否运行德语本地化(.strings,storyboard) 这行代码:

[[[NSLocale preferredLanguages] objectAtIndex:0] isEqualToString:@"de"]

未提供正确答案。因为如果设备设置中的用户语言列表例如(法语,德语,英语),并且我们只有英语和德语的本地化,则应用程序以德语启动,但上述条件未得到满足。

3 个答案:

答案 0 :(得分:3)

我天真的解决方案是创建一个本地化的字符串" LanguageCode"设置为" de"在德语字符串文件中和" en"在英文字符串文件

e.g:

if ([NSLocalizedString(@"LanguageCode", @"en, de etc.") isEqualToString:@"de"]) {
    // german
}

答案 1 :(得分:1)

NSString * language = [[NSLocale preferredLanguages] objectAtIndex:0];

这将返回当前所选语言的双字母代码。 "恩"对于英语," es"对于西班牙语," de"对于更多示例,请参阅此维基百科条目(特别是639-1专栏):

答案 2 :(得分:0)

检查Bundle的{​​{3}}属性的第一项,即:

  

NSString对象数组,其中包含用于本地化的语言ID   在捆绑中。字符串根据用户的顺序排序   语言首选项和可用的本地化。

例如,如果您要检查是否正在使用德语本地化:

if Bundle.main.preferredLocalizations.first == "de" {
   // Is using German
}