2

我正在尝试genstrings在我的项目中使用来输出本地化的字符串文件。当你有一个像这样表示的字符串时,它工作得很好而且很漂亮:

NSLocalizedString("My String", comment: "My String")

但是,我决定使用 String-typeenum来表示我的应用程序的字符串。这背后的原因是,如果应用程序需要更改副本,则在位置编辑字符串比通过整个项目切换字符串更容易。

我用于字符串的解决方案非常简单 - 如下所示:

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 Developer Forums 上的建议尝试过) - 我遇到了这样的问题:

Bad entry in file .xxxx/MyViewController.swift (line = 1305): Argument is not a literal string.

这显然是因为genstrings似乎正在扫描未编译的文件。我在这里不是很有希望,但我想知道是否有人提出了解决方案?我想我不必每次需要更改副本时都在工作区搜索我的项目来更改字符串(我们的项目相当大)。

我将不胜感激任何帮助!提前致谢。

Ĵ

4

0 回答 0