Iphone NSLocalizedString:为什么GenString向我的格式说明符添加1$和2$?
我正在通过使用Iphone NSLocalizedString:为什么GenString向我的格式说明符添加1$和2$?,iphone,objective-c,cocoa,ipad,localization,Iphone,Objective C,Cocoa,Ipad,Localization,我正在通过使用genstrings Classes/*.m生成Localizable.strings文件来本地化我的iPad/iPhone应用程序。大多数字符串工作得很好,我得到了预期的输出,但是有些字符串 GySncs在我的格式说明符的中间添加了 1 $ 或 1 $ ,例如: /* No comment provided by engineer. */ "%@%i" = "%1$@%2$i"; /* No comment provided by engineer. */ "%@: %i" =
genstrings Classes/*.m
生成Localizable.strings
文件来本地化我的iPad/iPhone应用程序。大多数字符串工作得很好,我得到了预期的输出,但是有些字符串<代码> GySncs<代码>在我的格式说明符的中间添加了<代码> 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$
等总是在同一个位置
我可以保留它们,并且字符串的格式正确,但我一直在手动删除它们,因为我不确定$
将做什么。这是恼人的,必须通过手动更新字符串(加上我可能会错过一个最终)
我想可能是文字编码的问题?或者我可以安全地将它们保留在字符串中并忽略它们吗?这些数字表示替换值的参数位置。例如,
%2$i
的意思是“将其替换为第二个参数,该参数应为整数”。这在本地化为使用不同单词排列的语言时非常有用,因为可以按与英语不同的顺序替换
换句话说,它们可以安全地保留或删除,并且可以方便地进行其他语言的自然翻译。
N$
告诉printf
风格的函数和方法格式字符串字段的严格顺序。这样,当本地化到顺序不同的语言时,您不必修改代码——只需修改格式字符串:
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
如果不喜欢,可以通过传递来关闭位置参数的生成 -无位置参数
到genstrings。你可能会变得富有!:D