Xcode 4.6,目标 iOS 6,SDK iOS 6.1
我从一个适用于我的应用程序的故事板开始;它包含的字符串是英文的。我想添加法语本地化。我这样做了:
- 添加了基础本地化,将 MainStoryboard.storyboard 从 en.lproj 转移到 Base.lproj。
- 添加了法语本地化,将 InfoPlist.strings(英语)和 MainStoryboard.storyboard(基础)克隆到 fr.lproj。
- 更改了法语 MainStoryboard.storyboard 中的几个字符串(UISegmentedControl 中的段标题)。
- 在模拟器中,将语言设置为法语。
- 从 Xcode 运行应用程序。
结果:这行得通;我更改的字符串出现在正在运行的应用程序中。
但我想变得花哨。我想使用 .strings 文件进行法语本地化。(这不仅仅是花哨的问题;法语本地化将交给非技术翻译人员,他们不能指望掌握 Interface Builder。)所以:
- 在 Xcode 项目导航器中选择了基础 MainStoryboard.storyboard。
- 在文件检查器的本地化下,将法语本地化从“Interface Builder Cocoa Touch Storyboard”更改为“Localizable Strings”。
- 接受 Xcode 的警告,即法语情节提要将被丢弃,转而使用 .strings 文件,该文件出现在助手编辑器中。
- 进行了相同的两次编辑;毫无疑问它们是错误的字符串,因为它们都被评论为 IBUISegmentedControl...segmentTitles; 并且标签文本不会出现在 .strings 文件的其他任何地方。
- 从模拟器中删除了应用程序的现有(工作)副本。
- 运行应用程序。
结果:视图使用基本(最初是英语)本地化,而不是加载法语字符串。
转换为自动布局没有效果。从模拟器中删除应用程序没有效果。删除派生产品目录没有效果。Stack Overflow 建议使用 ibtool 来生成 .strings 文件而不是 Xcode;这两个生成的文件是相同的。
This isn't satisfactory. As I said, I can't turn a .storyboard file over to a nontechnical translator. How can I get iOS to accept the storyboard localizations from a .strings file?