我开始使用一个适用于我的应用程序的故事板;它包含的字符串是英文的.我想添加法语本地化.我这样做了:
>添加了基本本地化,已转移
从en.lproj到Base.lproj的MainStoryboard.storyboard.
>添加了法语本地化,克隆了InfoPlist.strings(英语)
和MainStoryboard.storyboard(Base)到fr.lproj.
>更改了几个字符串(一个字符串的标题
UISegmentedControl)在法语MainStoryboard.storyboard中.
>在模拟器中,将语言设置为法语.
>从Xcode中删除应用程序.
结果:这有效;我更改的字符串出现在正在运行的应用程序中
但我想成为所有人.我想使用.strings文件进行法语本地化. (这不仅仅是一种幻想;法语本地化将转交给非技术翻译人员,他们不能指望他们掌握Interface Builder.)所以:
>选择Xcode项目中的基本MainStoryboard.storyboard
航海家.
>在“文件”检查器中的“本地化”下,更改了法语
从“Interface Builder Cocoa Touch Storyboard”到本地化
“可本地化的字符串.”
>接受Xcode的警告,法国故事板将被丢弃
支持.strings文件,该文件出现在Assistant编辑器中.
>进行相同的两次编辑;毫无疑问他们是错的
字符串,因为它们都被评为
IBUISegmentedControl … segmentTitles;而标签文本则没有
出现在.strings文件中的任何其他位置.
>从模拟器中删除了应用程序的现有(工作)副本.
>跑完应用程序.
结果:视图使用基本(原始英语)本地化,而不是加载法语字符串.
转换为Autolayout没有任何效果.从模拟器中删除应用程序没有任何效果.删除派生产品目录无效. Stack Overflow建议使用ibtool生成.strings文件而不是Xcode;两个生成的文件是相同的.
这不太令人满意.正如我所说,我无法将.storyboard文件转换为非技术翻译.如何让iOS接受.strings文件中的故事板本地化?
解决方法
我有同样的问题(用意大利语翻译),我这样解决了:
1)在it.lproj中归档Localizable.string
2)在需要的地方使用NSLocalizedString(@“TEST”,@“comment”)方法
3)在Build Phases中添加Localizable.string->复制捆绑资源
最后一步在iOS 5.1中不是必需的.
感谢Cocoanetics在[问题]:Base internationalization and multiple storyboard not working right中的回应