如何自动检查Xcode中缺少的本地化?

时间:2015-09-25 11:49:45

标签: ios xcode

SourceFile.m

NSLocalizedString(@"Word 1", @"");
NSLocalizedString(@"Word 2", @"");

de.lproj / Localizable.strings

"Word 1" = "Wort 1";
"Word 2" = "Wort 2";

fr.lproj / Localizable.strings

/* Missing Word 1 */
"Word 2" = "Mot 2";

是否有脚本或编译器设置将检查是否所有本地化字符串都在所有支持的语言环境中进行了翻译?

4 个答案:

答案 0 :(得分:2)

您可以在键列表上使用diff来查看缺少的内容

这是一个shell脚本(我们称其为keys.sh),用于打印出给定的.strings文件的密钥,并按stdout进行排序:

#!/bin/sh
plutil -convert json "$1".lproj/Localizable.strings -o - | ruby -r json -e 'puts JSON.parse(STDIN.read).keys.sort'

然后可以将其与<(cmd) shell语法结合使用来比较两个本地化之间的键;例如比较您的Base.lprojfr.lproj

diff <(keys.sh Base) <(keys.sh fr)

答案 1 :(得分:1)

不是您问题的完美解决方案。但您可以使用以下插件在编码时检查本地化字符串。 https://github.com/questbeat/Lin

另外,我用来从Excel文件或Google Sheet中导出本地化字符串表作为练习。这将使事情变得更容易并减少许多错误。

答案 2 :(得分:0)

Check my example on how you can achieve it

总结:您可以在Run Script下创建一个Build Phase,在其中执行一个bash script,就像@AliSoftware所建议的那样比较您的{{1 }},如果一个键与另一个键相比缺少某些键,则可以停止构建并将这些丢失的键作为错误输出,也可以将它们作为错误输出,而不让构建继续进行。

答案 3 :(得分:0)

转到“编辑方案>选项”下,然后选中“显示未本地化的字符串”框。

enter image description here

构建和运行时,您将能够在Xcode命令屏幕上看到警告。

如果您将字符串本地化,如下所示:

lblTitle.text = NSLocalizedString("Lorem Ipsum", "")

然后Xcode应该抛出如下错误:

ERROR Lorem Ipsum not found in table Localizable of bundle CFBundle ...

对于情节提要,Xcode会抛出类似的错误。