如何使用NSLocalizedString本地化具有占位符的字符串?
例如:
[NSString stringWithFormat:@"You can afford %i at %@%li.",[kCash integerValue]/self.price, kYen, self.price]
我如何本地化?我是否将字符串分解为多个本地化字符串?那我怎么处理不同的句子结构和语法?
答案 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];