我想用多种语言(例如 6 种或 7 种)本地化我的应用程序,但我不想添加尽可能多的 Storyboard副本。所以,对于 6 种不同的语言,我想要:
- 一个 Storyboard
- 6 Localizable.strings
在我的 Storyboard中,所有组件都是 socket ,因此我可以通过编程方式将它们本地化。
我的问题是我无法使用没有 Storyboard本地化(但有 localizable.strings)的语言加载应用程序,我收到一个错误:
Could not find a storyboard named 'XXXX' in bundle NSBundle.
有没有办法只使用一个 Storyboard和多个本地化文件?
最佳答案
听起来您的 Storyboard仍在 en.lproj 文件夹中。当您在配置为使用另一种语言的系统上启动时,将使用来自该语言的 lproj 的资源,而不是来自 en.lproj 的资源。您需要将 Storyboard标记为未在 Xcode 中本地化,这样它就不会部署到您构建的应用程序中的 en.lproj 文件夹中。还要确保它仍然作为资源包含在项目的适当目标中。您应该能够在选择 Storyboard的情况下从文件检查器执行所有这些操作。
如果您的目标是 iOS 6.0 及更高版本,则可以使用 Base.lproj 功能。有了这一功能,您的应用程序只需发送一个 Storyboard,多个字符串文件和 Storyboard的字符串在运行时被替换为来自适当语言的字符串文件的字符串。
您可以在此处阅读有关 base.lproj 的更多信息: https://developer.apple.com/library/ios/#referencelibrary/GettingStarted/RoadMapiOS/chapters/InternationalizeYourApp/InternationalizeYourApp/InternationalizeYourApp.html
关于iphone - 使用多种语言的 Storyboard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16191817/