我尝试在项目中使用genstrings
来输出本地化的字符串文件。当你有一个如下所示的字符串时,它工作正常和花花公子:
NSLocalizedString("My String", comment: "My String")
但是,我决定使用字符串类型enum
来表示我的应用程序的字符串。这背后的原因是,如果应用程序需要更改副本,则在位置编辑字符串比在整个项目中切换字符串更容易。
我用于字符串的解决方案非常简单 - 就像这样:
enum MyStrings {
enum Actions: String {
case ok = "OK"
case cancel = "Cancel"
}
}
然后,为了获取本地化字符串,我实现了以下扩展名:
extension RawRepresentable where RawValue == String {
var localizedString: String {
return NSLocalizedString(self.rawValue, comment: "")
}
}
非常简单,对吧?它工作正常,但在尝试使用genstrings
时遇到了问题(我已经尝试了extractLocStrings
,就像Apple开发者论坛上所建议的那样) - 我遇到这样的问题:
Bad entry in file .xxxx/MyViewController.swift (line = 1305): Argument is not a literal string.
这显然是因为genstrings
似乎正在扫描未编译的文件。我在这里不是很有希望,但我想知道是否有人提出了解决方案?我想我不需要工作区搜索我的项目,以便每次需要更改副本时更改字符串(我们的项目相当大)。
我非常感谢任何帮助!提前谢谢。
Ĵ