我想本地化“1 of 9”,1和9是int参数,我的代码如下
context = [NSString stringWithFormat:NSLocalizedString(@"%d of %d",
"This text will be used to show page number on the screen"),
currentPageIndex + 1, pageCount];
生成的Localizable.strings就像那样显示
/* This text will be used to show page number on the screen */
"%d of %d" = "%1$d of %2$d";
我觉得“=”左边的东西是关键,而“=”右边的东西是值,但是我希望关键看起来像“show_page_number”不包含格式“%d”,如何我可不可以做?我尝试将“%d of%d”替换为“show_page_number”,但它不起作用。有什么建议吗?
答案 0 :(得分:1)
NSLocalizedString()在运行时用值替换了键。所以你可以使用anystring作为键和键。它将被替换为"%1 $ d of%2 $ d"在运行时。 在Localizable文件中添加字符串:
"show_page_number" = "%1$d of %2$d";
&安培;在代码中使用该密钥
context = [NSString stringWithFormat:NSLocalizedString(@"show_page_number", "This text will be used to show page number on the screen"), currentPageIndex + 1, pageCount];
在xcode项目中添加localizable.string文件。
答案 1 :(得分:0)
如果您想完全控制密钥及其初始值,则需要使用NSLocalizedStringWithDefaultValue
代替NSLocalizedString
(使用密钥作为初始值)。
将您的代码更改为:
NSString *format = NSLocalizedStringWithDefaultValue(@"show_page_number", @"Localizable", NSBundle.mainBundle, @"%1$d of %2$d", @"This text will be used to show page number on the screen")
context = [NSString stringWithFormat:format, currentPageIndex + 1, pageCount];
当您运行genstrings
时,您将获得:
/* This text will be used to show page number on the screen */
"show_page_number" = "%1$d of %2$d";