我使用了几个 Storyboard,我刚刚决定将它们本地化(.strings 文件已由 Xcode 生成)。
我注意到在 Build Phases > Copy Bundle Resources 中,所有与本地化相关的资源都显示为红色。
在运行时,本地化仅适用于主 Storyboard。使用 Localizable.strings 进行本地化也可以。但它不在其他 Storyboard上。
我尝试重新启动 Xcode,但没有任何改变。 (参见 Base internationalization and multiple storyboard not working right)
我的本地化 Storyboard是以前编译的。如果我添加另一个 Storyboard,对其进行本地化并启动编译,它会失败并出现此错误:
*** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“无法在包 NSBundle 中找到名为“维护”的 Storyboard (...)
你有解决这个问题的想法吗?
最佳答案
此错误可能是由于您没有实现您在应用程序设置中选择本地化的多种语言之一。
为了在 Storyboard中实现一种语言:
- 选择 Storyboard
- 在右侧面板上,转到文件检查器选项卡(左起第一个)
- 在本地化中,勾选所有语言
您现在有两种本地化 Storyboard的方法:
- 您可以通过选择Localizable Strings 来为您的语言创建一个
.strings
文件,这将生成一个字符串列表,xcode 会在您的 Storyboard 中找到这些字符串。 - 或者您可以通过选择 Interface Builder Cocoa Touch Storyboard 创建一个“子” Storyboard,这会为特定语言创建不同版本的 Storyboard。
到目前为止,如果您添加新字符串,我只找到一种在 xcode 中刷新 .strings 文件的方法:只需取消选中并重新选中语言,然后在询问时选择“替换文件”。 Apple also provides a tool你可以在终端中使用。最后there's a script它会自动执行。
关于localization - IOs7 多 Storyboard本地化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19063993/