Localizable.strings键值对

时间:2017-07-07 02:09:52

标签: ios localization localizable.strings

我想本地化“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”,但它不起作用。有什么建议吗?

2 个答案:

答案 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文件。

<强> EDIT

答案 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";