genstrings -s仍然与NSLocalizedString *匹配

时间:2015-01-31 06:48:10

标签: xcode localization genstrings

我认为这可能是genstrings错误或"功能"但是想知道是否有人遇到过此问题或知道答案。我打算为此开一个雷达。

我们使用自己的本地化宏。我们称之为CustomLocalizedString。在我们的代码库中,它非常大,我们使用了很多第三方库。对于绝大多数第三方库而言,如果碰巧拥有它们,我们就不会想要任何本地化字符串。当我们想要使用他们的本地化字符串时,我们修改第三方库以使用我们的CustomLocalizedString宏。由于我们不关心的字符串使用的是NSLocalizedString*宏,因此我认为这不是问题。

本地化基本上开始标记一些有问题的字符串。经过一番研究,我意识到它来自第三方lib。然后我进一步意识到我们还包括其他不应该存在的字符串(我们有大量的字符串)。这些是使用NSLocalizedString* marco的字符串。

因此我们对genstrings的调用类似于:

genstrings -o output -s CustomLocalizedString

我实际上使用xargsfind来创建文件参数,因此为了简洁起见,我省略了该部分。根据输出,genstrings似乎将NSLocalizedStringCustomLocalizedString字符串放入Localizable.strings文件中。

为了进一步验证我使用以下方法创建了一个文件:

NSLocalizedString(@"Normal localized string macro", nil);
CustomLocalizedString(@"Custom localized string macro", nil);

跑了:

genstrings -o out -s CustomLocalizedString localized_string.txt

输出结果为:

/* No comment provided by engineer. */
"Custom localized string macro" = "Custom localized string macro";

/* No comment provided by engineer. */
"Normal localized string macro" = "Normal localized string macro";

运行man genstrings会产生这样的结果:

-s routine
    Substitutes routine for NSLocalizedString.  For example, -s MyLocalString will catch calls to MyLocalString and MyLocalStringFromTable.

这听起来像NSLocalizedString*宏会被忽略,但事实并非如此。

注意我已经重写了find,只能包含我们想要本地化的第三方库。我们的第三方库基本上都在一个目录中。由于团队中有很多开发人员,我宁愿尝试找到我是否缺少一个标志或其他东西,这样我就可以包含第三方lib目录并让它正确使用CustomLocalizedString宏。否则,我可以预见有人没有意识到我们的运行情况genstrings,我们突然发现我们需要本地化的字符串太晚了,因为它们没有被添加到我们的genstrings find列表中。< / p>

0 个答案:

没有答案