我正在使用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总是在相同的位置。
我可以保留它们,字符串可以使用正确的格式,但我一直在手动删除它们,因为我不确定$会做什么。必须遍历并手动更新字符串是很烦人的(另外,我最终可能会错过一个)。
我在想这可能是文本编码的问题?或者,我可以安全地将它们留在字符串中,然后忽略它们吗?
发布于 2011-01-06 05:30:00
这些数字指的是替换值的参数位置。例如,%2$i的意思是“用第二个参数替换它,它应该是一个整数”。当本地化到使用不同单词排列的语言时,这很有用,因为可以用与英语不同的顺序替换内容。
换句话说,它们可以安全地保留或删除,而且在将它们自然地翻译成其他语言时也会派上用场。
发布于 2011-01-06 05:30:58
N$告诉printf-style函数和方法格式字符串字段的严格顺序。这样,当本地化到顺序不同的语言时,您不必修改代码--只需修改格式字符串:
printf("%s %s\n", "foo", "bar");
printf("%1$s %2$s\n", "foo", "bar");
printf("%2$s %1$s\n", "foo", "bar");输出:
foo bar
foo bar
bar foo发布于 2011-07-08 00:18:01
如果您不喜欢位置参数的生成,可以通过传递
-noPositionalParameters
到基因字符串。
https://stackoverflow.com/questions/4609389
复制相似问题