swift文件的genstrings问题

问题描述 投票:18回答:5

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

find . -name \*.m | xargs genstrings -o en.lproj

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

find . -name \*.swift | xargs genstrings -o en.lproj
objective-c swift localization xcode6
5个回答
29
投票

就我而言,genstrings工具可以很好地工作。这是我的测试:

// MyClass.swift
let message = NSLocalizedString("This is the test message.", comment: "Test")

然后,在类的文件夹中

# 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.";
$

4
投票

我们编写了一个适用于Swift文件的命令行工具,并合并了apple genstrings工具的结果。它允许在key中使用valueNSLocalizedString

https://github.com/KeepSafe/genstrings_swift


2
投票

我相信genstrings按预期工作,但Apple的xargs方法从您的所有项目文件生成字符串是有缺陷的,并没有正确解析包含空格的路径。

这可能是它不适合你的原因。

尝试使用以下内容:

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


0
投票

有一个名为SwiftGenStrings的替代工具

Hello.swift

NSLocalizedString("hello", value: "world", comment: "Hi!")

SwiftGenStrings:

$ SwiftGenStrings Hello.swift 

/* Hi! */
"hello" = "world";

Apple String:

$ genstrings Hello.swift

Bad entry in file Hello.swift (line = 1): Argument is not a literal string.

免责声明:我参与了SwiftGenStrings。


0
投票

这里有一个类似的问题:How to use genstrings across multiple directories?

find ./ -name "*.m" -print0 | xargs -0 genstrings -o en.lproj
© www.soinside.com 2019 - 2024. All rights reserved.