如何使用格式化占位符本地化string?
我如何使用NSLocalizedString本地化一个包含占位符的string?
例如:
[NSString stringWithFormat:@"You can afford %i at %@%li.",[kCash integerValue]/self.price, kYen, self.price]
我如何本地化? 我是否将string分解为多个本地化的string? 那么我怎么处理不同的句子结构和语法呢?
让本地化的string包含占位符。 这是非常正确的方法,否则,正如你所提到的,你不能把不同的单词顺序考虑在内。
沿着这些线路的东西:
[NSString stringWithFormat:NSLocalizedString(@"Foo %i", @"Foo %i"), 123]
NSLocalizedString不会改变你的占位符,所以stringWithFormat可以正常使用它们。 在你的例子中,使用编号的占位符可能是一个好主意 –
[NSString stringWithFormat:@"You can afford %1$i at %2$@%3$li.", [kCash integerValue]/self.price, kYen, self.price]
更多的信息在这里: 有没有一种方法来指定参数位置/索引在NSString stringWithFormat?
另一种方法是在你的本地化文件中,你可以有:
key = "String with %@ placeholder";
并在您的实施:
[NSString stringWithFormat: NSLocalizedString(@"key", ""), @"string replacing placeholder"];
您可以使用任意数量的参数来执行此操作,只需要在您的本地化文件中保持一致。
这种方式似乎更有效率:
[NSString stringWithFormat:@"%@ %@", NSLocalizedString(@"Key", @"Comment for localised string"), value];