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

nhjlsmyf  于 2023-03-24  发布在  其他
关注(0)|答案(4)|浏览(123)

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";

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

fnatzsnv

fnatzsnv1#

您可以在键列表上使用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)
ct2axkht

ct2axkht2#

非本地化字符串

在“编辑方案〉选项”下,选中“显示非本地化字符串”框。

当你构建并运行时,你可以在Xcode命令屏幕上看到警告。
如果您本地化字符串如下所示:

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

然后Xcode会在终端上打印一条警告消息,如下所示:

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

对于故事板,Xcode会抛出类似的错误。

eyh26e7m

eyh26e7m3#

这不是解决你问题的完美方案。但是你可以使用下面的插件在编码时检查本地化字符串。https://github.com/questbeat/Lin
另外,我习惯从Excel文件或Google Sheet导出本地化字符串表作为练习。这将使事情变得更容易,并减少大量错误。

tez616oj

tez616oj4#

Check my example on how you can achieve it

综上所述:你可以在Build Phase下创建一个Run Script,在其中执行一个bash script,就像@AliSoftware建议的那样,比较你的Localizable.strings,如果一个与另一个相比缺少一些键,你可以停止构建并将这些缺少的键作为错误输出,或者你可以将它们作为错误输出,不让构建继续。

相关问题