swift文件的genstrings问题

BaS*_*Sha 21 localization objective-c swift xcode6

genstrings 适用于从.m文件中提取可本地化的内容,

find . -name \*.m | xargs genstrings -o en.lproj
Run Code Online (Sandbox Code Playgroud)

但是,不适用于.swift文件,

find . -name \*.swift | xargs genstrings -o en.lproj
Run Code Online (Sandbox Code Playgroud)

Mun*_*ndi 32

genstrings就我而言,该工具可以很快地工作.这是我的测试:

// MyClass.swift
let message = NSLocalizedString("This is the test message.", comment: "Test")
Run Code Online (Sandbox Code Playgroud)

然后,在类的文件夹中

# generate strings for all swift files (even in nested directories)
$ find . -name \*.swift | xargs genstrings -o .

# See results
$ cat Localizable.strings
/* Test */
"This is the test message." = "This is the test message.";
$

  • 嗯,你知道该怎么做.您的问题可以通过一个智能全局文本替换操作来解决.首先勾选上面的复选标记;-). (5认同)
  • 我看到,genstrings跟踪NSLocalizedString,但我使用了像localizedString()这样的字符串扩展.所以我的字符串变成"这是测试消息.".localizedString(),这就是为什么它没有被跟踪 (3认同)
  • 注意:`genstrings`不适用于任何长形式(可以说是最佳实践)用法:`NSLocalizedString("checkout-okbtn",值:"Ok",注释:"在购物车结帐时,支付的按钮")`[雷达问题](https://openradar.appspot.com/22133811) (3认同)
  • 等等,我才明白为什么。我正在运行genstrings命令,我只在寻找* .m文件。让我看看是否可以更改一下以一次性找到* .m和* .swift ... (2认同)
  • 是的,在我的混合项目中,对于Objective-C和Swift都可以正常工作,现在我将命令更改为以下命令:`cd〜/ Workspace / ios-ecentral-app / ECentral /; find ./ -type f \(-iname \ * .m -o -iname \ *。swift \)| xargs genstrings -o ECentral / localization / en.lproj /'` (2认同)

m_k*_*kis 5

我相信genstrings按预期工作,但是 Applexargs从所有项目文件中生成字符串的方法存在缺陷,并且无法正确解析包含空格的路径

这可能是它对您不起作用的原因。

尝试使用以下方法:

find . -name \*.swift | tr '\n' '\0' | xargs -0 genstrings -o .