我使用genstrings
从我的项目中的源代码文件生成.strings
个文件。虽然该项目在技术上是一个Cappuccino应用程序,但此问题应同样适用于使用.strings
文件的任何项目。
我有一个我希望本地化的格式字符串:@"%d:%02d %@"
。它用于显示时间值。如果这是一个OSX / iOS应用程序,我会使用内置的日期时间格式,但因为它是Cappuccino我必须自己动手。当我运行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
,因为这些值适合卡布奇诺。请注意,02
中的%02d
将在生成的格式字符串中被丢弃。如果我使用-noPositionalParameters
选项再次运行它,它只会保留字符串:genstrings -o Resources/en.lproj -noPositionalParameters -s CPLocalizedString *.j */*.j
。
/* ShortLocalTimeFormat */ "%d:%02d %@" = "%d:%02d %@";
这是genstrings
中的错误,还是在保持位置参数的同时不能在格式字符串中使用flags / width?
答案 0 :(得分:0)
如果这是一个Objective-C项目,我会将格式字符串缩短为"%1$@ %2$@"
并使用NSDateFormatter
生成时间字符串。如果该类不可用,我将自己生成中间时间字符串,并使用该字符串作为本地化格式字符串的参数,而不是直接将小时/分钟传递给本地化格式字符串。
答案 1 :(得分:0)
我也注意到了这个错误;这不仅仅是你。但是,它似乎仅适用于%d
说明符 - 我正在使用%02d
并且它变为%1$d
,但%.02f
变为%1$.02f
。
我已提交a bug。