我正在通过使用genstrings Classes/*.m生成Localizable.strings文件来本地化iPad/iPhone应用程序。大多数字符串都能正常工作,并且可以得到预期的输出,但是有些字符串genstrings在我的格式说明符中间添加了1$1$,如下所示:

/* No comment provided by engineer. */
"%@%i" = "%1$@%2$i";

/* No comment provided by engineer. */
"%@: %i" = "%1$@: %2$i";

/* No comment provided by engineer. */
"%@" = "%@";

我没有在其他应用程序中遇到此问题,并且您可以看到它并不一致。但是它似乎也不是随机的,因为当我再次在相同的类文件上运行genstrings时,1$的etc始终位于同一位置。

我可以保留它们,并且字符串以正确的格式工作,但是我一直在手动删除它们,因为我不确定$会做什么。必须经历并手动更新字符串是令人烦恼的(另外,我最终可能会错过一个字符串)。

我认为这可能是文本编码问题?还是我可以安全地将它们留在字符串中而忽略它们?

最佳答案

这些数字指的是替换值的参数位置。例如,%2$i的意思是“用第二个参数替换它,它应该是一个整数”。当本地化为使用不同字词排列的语言时,这很有用,因为可以用不同于英语的顺序替换事物。

换句话说,可以安全地离开或移走它们,并且在将其他语言听起来自然的翻译中会很方便。

关于iphone - NSLocalizedString : Why is genstrings adding 1$ and 2$ to my format specifiers?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4609389/

10-08 22:34