1

我用来从项目中的源代码文件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,还是在保留位置参数的同时不能在格式字符串中使用标志/宽度?

4

2 回答 2

0

我也注意到了这个错误;不只是你。但是,它似乎只发生在%d说明符上——我正在使用%02d它变成%1$d,但%.02f变成%1$.02f.

我已经提交了一个错误

于 2010-12-30T22:43:31.380 回答
0

如果这是一个 Objective-C 项目,我会将格式字符串缩短为"%1$@ %2$@"并使用 anNSDateFormatter来生成时间字符串。如果该类不可用,我将自己生成中间时间字符串并将该字符串用作本地化格式字符串的参数,而不是直接将小时/分钟传递给本地化格式字符串。

于 2010-12-21T06:01:06.000 回答