我用来从项目中的源代码文件genstrings生成.strings文件。尽管该项目在技术上是一个Cappuccino应用程序,但这个问题应该同样适用于任何使用.strings文件的项目。
我有一个我想本地化的格式字符串:@"%d:%02d %@". 它用于显示时间值。如果这是一个 OSX/iOS 应用程序,我会使用内置的日期时间格式,但因为它是卡布奇诺,我必须自己滚动。当我运行genstrings它时,它会为该键生成这个值:"%1$d:%2$d %3$@".
这是在Localizable.strings文件中显示的:
/* ShortLocalTimeFormat */ "%d:%02d %@" = "%1$d:%2$d %3$@";
通过运行以下命令:genstrings -o Resources/en.lproj -s CPLocalizedString *.j */*.j
同样,请忽略我使用的是CPLocalizedString代替NSLocalizedStrings和*.j代替*.m,因为这些值适用于卡布奇诺。请注意,in 在结果格式字符串中被丢弃02。%02d如果我使用该选项再次运行它-noPositionalParameters,它只会将字符串保持原样:genstrings -o Resources/en.lproj -noPositionalParameters -s CPLocalizedString *.j */*.j.
/* ShortLocalTimeFormat */ "%d:%02d %@" = "%d:%02d %@";
这是一个错误genstrings,还是在保留位置参数的同时不能在格式字符串中使用标志/宽度?