0

階層データまたはグループ化されたデータを含む plist をローカライズする方法はありますか?

たとえば、plist に次のものが含まれているとします。

  • ブック 1 (辞書)
    • キー (文字列)
    • 名前 (文字列)
    • 説明 (ローカライズ可能な文字列)
  • ブック 2 (辞書)
    • キー (文字列)
    • 名前 (文字列)
    • 説明 (ローカライズ可能な文字列)
      (etcetera...)

例のために、Keyandは翻訳しないNameでください(できれば、複数のローカライズされたプロパティ リストで複製しないでください)。

Descriptionプロパティ リスト全体をローカライズせずに、ローカライズ可能なフィールドをローカライズするメカニズムはありますか? 私の頭に浮かんだ唯一の他の戦略は、検索キーをdescriptionフィールドに保存し、それを使用して NSLocalizedString(...) を介してローカライズされたテキストを取得することです

plist は静的で、現在アプリ バンドルと共に配布されています。

ありがとう。

4

1 に答える 1

0

これは静的 plist ですか、それとも動的 plist ですか? ローカライズされた文字列をどこから取得する予定ですか? NSLocalizedString()バンドル内の Localizable.strings ファイルから取得します。plist が静的で、すべてのローカリゼーションをアプリに同梱できる場合は、説明をキーとして使用し、NSLocalizedString()またはそのバリアントの 1 つを使用して検索できます。

plist が動的な場合、各説明をdictロケール識別子から文字列へのマッピングにすることができます。を使用して適切なものを選択し[NSBundle preferredLocalizationsFromArray:[theDict allKeys]]ます。これには、同じ説明が複数の本に使用されている場合、そのローカライズを繰り返さなければならないという欠点があります。

この欠点を修正するには、ローカライズを plist の別のセクションに入れることができます。基本的に、これは辞書の辞書になります。外部ディクショナリのキーはロケール識別子、内部ディクショナリのキーは英語の文字列、内部の値はローカライズされた文字列である可能性があります。(バリアント 1: 英語の文字列の代わりにルックアップ キーを使用します。バリアント 2: 内部辞書と外部辞書を逆にします。そのため、英語の文字列は外部で、ロケール ID は内部です。)

于 2012-04-10T00:27:38.597 に答える