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

时间:2013-02-26 16:20:33

标签: ios objective-c xcode localization

Xcode 4.6,目标iOS 6,SDK iOS 6.1

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

  • 添加了基本本地化,已转移 从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”到本地化 “Localizable Strings。”
  • 接受Xcode警告法国故事板将被丢弃 支持.strings文件,该文件显示在“助理”编辑器中。
  • 进行相同的两次编辑;毫无疑问他们是错的 字符串,因为它们都被评为 IBUISegmentedControl ... segmentTitles;而标签文本则没有 出现在.strings文件中的任何其他位置。
  • 从模拟器中删除了应用程序的现有(工作)副本。
  • 跑出应用程序。

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

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

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

4 个答案:

答案 0 :(得分:4)

使用“本地化字符串”设置启用英语本地化复选框:

Localization settings

清理构建文件夹(⌥⇧⌘K)并重建。

答案 1 :(得分:3)

我希望你已经解决了。 我有同样的问题(用意大利语翻译),我用这种方式解决了:

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

答案 2 :(得分:1)

要添加关于执行干净构建的claymation的答案,它还有助于从iOS模拟器中删除该应用程序。

可能与John Hess's answer describes

有关

答案 3 :(得分:1)

必须将我的字符串文件转换为故事板然后返回到字符串文件才能使其正常工作。荒谬。 Apple可以从微软那里学到一些关于创建更可靠的开发人员工具的知识。

相关问题