如何使用格式化占位符本地化字符串?

时间:2011-02-03 00:45:10

标签: iphone objective-c ios localization

如何使用NSLocalizedString本地化具有占位符的字符串?

例如:

[NSString stringWithFormat:@"You can afford %i at %@%li.",[kCash integerValue]/self.price, kYen,  self.price]

我如何本地化?我是否将字符串分解为多个本地化字符串?那我怎么处理不同的句子结构和语法?

4 个答案:

答案 0 :(得分:46)

NSLocalizedString不会改变占位符,因此stringWithFormat可以正常使用它们。在您的示例中,使用编号占位符可能是一个好主意 -

    [NSString stringWithFormat:@"You can afford %1$i at %2$@%3$li.",
                              [kCash integerValue]/self.price, kYen,  self.price]

更多信息: Is there a way to specify argument position/index in NSString stringWithFormat?

答案 1 :(得分:20)

让本地化字符串包含占位符。这几乎是唯一正确的方法,正如你所提到的,你不能考虑不同的单词顺序。

这些方面的东西:

[NSString stringWithFormat:NSLocalizedString(@"Foo %i", @"Foo %i"), 123]

答案 2 :(得分:6)

另一种方法是在您的本地化文件中,您可以:

key = "String with %@ placeholder"; 

并在您的实施中:

[NSString stringWithFormat: NSLocalizedString(@"key", ""), @"string replacing placeholder"];

您可以使用任意数量的参数执行此操作,只需要在本地化文件中保持一致。

答案 3 :(得分:0)

这种方式似乎更有效:

[NSString stringWithFormat:@"%@ %@", NSLocalizedString(@"Key", @"Comment for localised string"), value];
相关问题