ios - NSLocalizedString 不默认为基本语言

标签 ios objective-c base nslocalizedstring

我在测试本地化功能的小型 iOS 7 项目中遇到以下问题。

  • 我有一个默认项目,有一个VC,在场景中间有一个按钮
  • 在我的 VC 中,我的按钮有一个 IBOutlet,名为 myButton
  • 在 VC 的 viewDidLoad 方法中,我正在设置按钮的标题:


    NSString *title = NSLocalizedString(@"MY_BUTTON", @"My comment for my button");
    [self.myButton setTitle:title forState:UIControlStateNormal];

  • 我生成了 Localizable.strings 文件并启用它以用于以下语言的本地化:基础语言、荷兰语
  • 各文件内容如下:

/* 我对我的按钮的评论 */ "MY_BUTTON"= "我的 [VALUE] 按钮";其中 VALUE = Base,荷兰语;所以标签应该是 My Base Button & My Dutch Button

问题: 如果我使用模拟器的荷兰语语言启动我的应用程序,则标签(如预期的那样)是“我的荷兰语按钮”。如果我用英文启动它,标签是“My Base Button”(有点好……)

但是,如果我在手机语言设置为法语的情况下启动它,并且我之前将其设置为荷兰语,则按钮的标签不会默认为 Base,而是再次显示“我的荷兰语按钮”

对此有什么想法吗?

谢谢

最佳答案

默认语言的顺序是 OSX 上的用户设置,在 iOS 上不可编辑 (AFAIK)
但仍然坚持!

向应用程序传递指定要尝试的语言的数组 AppleLanguages(或类似...)。 NSLocalizedString 宏将尝试按照它们出现的顺序加载数组中的每种语言,直到它找到一个可用的语言然后使用它

比较:How to force NSLocalizedString to use a specific language

关于ios - NSLocalizedString 不默认为基本语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21754890/

相关文章:

ios - Instagram InstagramCaption 不工作

ios - 组合两个或多个 SCNGeometries

Objective-C ARC 构造函数应该设置实例变量还是属性?

ios - 如何为 2 个不同的 UIImageView 调用 TouchesMoved

ios - 滚动 tableview 会删除 uitableview 单元格中的复选标记

iphone - NSXMLParser 和针对 iOS 上的 DTD 的验证

ios - Firebase 如何检查交易成功或失败?

c++ - 将 ostream 与 8、10 和 16 以外的碱基一起使用

javascript - 为什么 JavaScript base-36 转换似乎模棱两可