0

次のコード行がたくさんあります。

[NSString stringWithFormat:@"%@ and %@", subject.title, secondsubject.title];

 [NSString stringWithFormat:@"%@ and %d others", subject.title, [newsfeeditem count] - 1];

アプリにはさらに多くの機能があります。基本的に、文字列定数を持つ facebook のようなニュース フィード スタイルを構築しています。何とか何とか気に入った。これらの文字列定数をどこで/どのようにすれば、国際化を簡単に行うことができますか? 文字列定数を格納するためだけにファイルを用意する必要がありますか?

4

1 に答える 1

2

『リソースプログラミングガイド』の「文字列リソース」セクションを参照してください。この特定の問題の重要なセクションは、「文字列リソースのフォーマット」です。

あなたは次のようなものを持っているでしょう:

[NSString stringWithFormat:NSLocalizedString(@"%1$@ and %2$@", @"two nouns combined by 'and'"),
                           subject.title, secondsubject.title];

%1$@最初の置換の場所です。これにより、テキストを再配置できます。次に、次のような文字列リソースファイルがあります。

英語:

/* two nouns combined by 'and' */
"%1$@ and %2$@" = "%1$@ and %2$@";

スペイン語:

/* two nouns combined by 'and' */
"%1$@ and %2$@" = "%1$@ y %2$@";

あなたはこれらの種類の組み合わせについて非常によく考える必要があります。まず、翻訳可能な方法で文の一部から文を構築することはできません。ほとんどの場合、メッセージ全体を一度に翻訳する必要があります。私が言いたいのは、あなたが言う1つの文字列と、それらを一緒@"I'm going to delete"に言う別の文字列を持つことはできないということです。@"%@ and %@"語順は言語間であまりにも可変です。

同様に、物事の複雑なリストは、さまざまな合意規則のためにあらゆる種類の頭痛の種を引き起こす可能性があります。一部の言語には、特別な複数形の規則、性別の合意、および同様の問題があります。可能な限り、メッセージをシンプル、短く、静的に保ちます。

しかし、上記のツールは、あなたが議論している問題を解決するのに非常に役立ちます。詳細については、ドキュメントを参照してください。

于 2012-09-14T20:57:27.387 に答える