0

私は、ICU リソースバンドルを作成し、ほとんどを維持するためのベスト プラクティスについて考えていました。より具体的には、繰り返し文字列を処理する最良の方法です。

たとえば、次のリソースバンドルがあるとします。

root:table {
  remove_page:string { "Remove this page" }
  remove_widget:sring { "Remove this widget" }
}

もちろん、これは最小限ですが、同様の文字列と「サブテーブル」がたくさんある大きなプロジェクトを暗示しています。このままにしておくのが一番いいでしょうか、つまり。コード内のすべてのアクションに特定の文字列を使用するか、たとえば次のように文字列を結合することをお勧めします。

root:table {
  remove_this:string { "Remove this " }
  page:string { "page" }
  widget:string { "widget" }
}

私はアマチュアなので、これまで ICU リソースバンドルの経験はあまりありませんが、適切に構築されていれば、i18​​n とメンテナンスに非常に便利なはずなので、質問です。

どうぞよろしくお願いいたします。

編集:リソース バンドル形式に関する ICU 情報- これらの形式は、リソース バンドルを構築する際に覚えておくとよい場合もあります。たとえば、配列はテーブルよりもメモリを消費しません。もちろん、これらは「名前のない」ものであり、コードを読むのが非常に苦痛になる可能性があります。

4

1 に答える 1

1

メッセージのフォーマットを参照してください。およびMessageFormat::format() と名前付き引数。文字列を「連結」したくありません。代わりに、次のようにすることもできます。

root {
  remove_this  { "Remove this {thing}." }
  page { "page" }
  widget { "widget" }
}

さまざまな言語の規則により、「Remove: {thing}」を翻訳する方が簡単な場合があることに注意してください。これは、「this」という単語は、性別、大文字と小文字、数などによって語形を変える必要がある場合があるためです。これについては、 SelectFormatを参照してください。

于 2011-09-22T17:23:03.147 に答える