如何使用格式化占位符本地化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];