NSLocalizedStringでプレースホルダーを含む文字列をローカライズするにはどうすればよいですか?
例えば:
[NSString stringWithFormat:@"You can afford %i at %@%li.",[kCash integerValue]/self.price, kYen, self.price]
これをローカライズするにはどうすればよいですか?文字列を複数のローカライズされた文字列に分割しますか?次に、さまざまな文の構造と文法をどのように処理しますか?
ローカライズされた文字列にプレースホルダーを含めます。それ以外の場合と同様に、これが適切な唯一の方法です。前述のように、さまざまなWordの順序を考慮することはできません。
これらの線に沿った何か:
[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];