基本本地化+故事板+ .strings - >没有本地化

9 xcode localization objective-c ios

Xcode 4.6,目标iOS 6,SDK iOS 6.1

我开始使用一个适用于我的应用程序的故事板; 它包含的字符串是英文的.我想添加法语本地化.我这样做了:

  • 添加了一个基本本地化,它将MainStoryboard.storyboard从en.lproj转移到Base.lproj.
  • 添加了法语本地化,将InfoPlist.strings(英语)和MainStoryboard.storyboard(Base)克隆到fr.lproj中.
  • 在法语MainStoryboard.storyboard中更改了几个字符串(UISegmentedControl中段的标题).
  • 在模拟器中,将语言设置为法语.
  • 从Xcode跑出应用程序.

结果:这有效; 我更改的字符串出现在正在运行的应用程序中

但我想成为所有人.我想使用.strings文件进行法语本地化.(这不仅仅是一种幻想;法语本地化将转交给非技术翻译人员,他们不能指望他们掌握Interface Builder.)所以:

  • 在Xcode项目导航器中选择了基本MainStoryboard.storyboard.
  • 在"文件"检查器中的"本地化"下,将"法语本地化"从"Interface Builder Cocoa Touch Storyboard"更改为"Localizable Strings".
  • 接受Xcode的警告,法国故事板将被丢弃,转而使用.strings文件,该文件出现在助理编辑器中.
  • 做了两个相同的编辑; 毫无疑问他们是错误的字符串,因为他们都被评为IBUISegmentedControl ... segmentTitles; 并且标签文本不会出现在.strings文件中的任何其他位置.
  • 从模拟器中删除了应用程序的现有(工作)副本.
  • 跑了应用程序.

结果:视图使用基本(原始英语)本地化,而不是加载法语字符串.

转换为Autolayout没有任何效果.从模拟器中删除应用程序无效.删除派生产品目录无效.Stack Overflow建议使用ibtool生成.strings文件而不是Xcode; 两个生成的文件是相同的.

这不太令人满意.正如我所说,我无法将.storyboard文件转换为非技术翻译.如何让iOS接受.strings文件中的故事板本地化?

小智 3

我希望你已经解决了。我遇到了同样的问题(意大利语翻译),我这样解决了:

1) it.lproj 中的文件 Localized.string

2)在需要的地方使用NSLocalizedString(@"TEST",@"comment")方法

3) 在Build Phases-> Copy Bundle Resource 中添加Localizes.string 最后一步在iOS 5.1 中不是必需的。

感谢 Cocoanetics 在[问题]中的回应,我解决了这个问题:基础国际化和多个故事板无法正常工作