2

iOS が内部で ICU を使用していることは、私の理解です。数字と複数形を含む文字列用の ICU の MessageFormat の機能にアクセスしたいと思います。たとえば、

There {0,choice,0#are no files|1#is one file|1<are {0,number,integer} files}.

iOS はこの機能を公開していますか? もしそうなら、どうやってそれを使うのですか?書けるかなと思った

[NSString stringWithFormat: "There {0,choice,0#are no files|1#is one file|1<are {0,number,integer} files}.", n];

また

[NSString stringWithFormat: "There {0,plural, =0{are no files}=1{is one file}other{are %ld files}}.", n];

ただし、これらの形式 (それぞれ ICU4J および ICU) は機能しません。

4

2 に答える 2

1

OS X と同様に、iOS には/usr/lib/libicucore.dylib. ただし、どちらの OS でもサポートされているパブリック API ではありません。OS X での使用方法と潜在的な問題については、この古いメッセージを参照してください。

iOS では、Apple がサポートされていない API を使用しているアプリケーションを拒否する可能性があるという追加の問題があると思います。

于 2012-04-28T23:03:45.160 に答える
0

stringWithFormatのフォーマット規則には、ICU フォーマットは含まれません。そのようなものには別の関数を呼び出す必要があります。私の知る限り、iOS は ICU MessageFormat 互換の NSString API を公開していません。

ただし、API へのアクセス権があった場合 (パブリックに公開するか、ICU のカスタム ビルドをアプリケーションにバンドルすることにより)、そのようなメッセージの書式設定を機能させるには、ICU ライブラリが次のようなリソース ファイルにアクセスできる必要があります。

  • 関心のあるロケールの選択データが含まれています
  • 使用しようとしている選択形式をサポートするのに十分な最新のものである

詳細については、ICU のドキュメントを参照してください。

于 2012-05-01T22:06:14.467 に答える