2

GWT 国際化メッセージを使用しています。Plural Formsのドキュメントには、これが機能するはずだと書かれています。

@DefaultMessage("{0} {1,number} hours {2}")
@PluralText({"one", "an hour"})
String hours(String prefix, @PluralCount int count, String suffix);

そうではありません。それがどんな価値をcount提供してもDefaultMessage(例:「1時間前」)。.properties ファイルを使用する場合も同じです。

hours[one]=an hour
hours[few]=some hours
hours={0} {1,number} hours {2}

ドキュメントまたは GWT (私は GWT 2.0.3 を使用しています) または私にバグはありますか? 前者のいずれかの場合、回避策を知っている人はいますか?

編集:この謎へのより多くの手がかり。デフォルトのロケール処理に依存しなければ、複数処理を機能させることができます。つまり、次が必要です。

  • 私のモジュールの gwt.xml ファイルで:

    <extend-property name="locale" values="en"/>

  • 私のメッセージ拡張機能:

    @DefaultLocale("en")

    public interface MyMessages extends Messages { ...

  • URL に追加することにより、「en」ロケールを明示的にロードします

    &locale=en

この質問を相互投稿したhttp://groups.google.com/group/google-web-toolkit/browse_thread/thread/80ae300213cc6adbを参照してください。

編集 2:この GWT の複数形に入った理由は、「GWT HUman Readable Relative Timestamps」モジュールを作成しているためです。GitHub でオープンソース化: http://github.com/PEZ/GWT-Relative-Timeぜひチェックしてみてください。まもなく、正しい単数形と一部の言語のサポートが提供される予定です。=)

4

4 に答える 4

4

"other"また、デフォルトの英語の複数形ルールではandのみがサポートされていることを知っておくと、時間を節約できると思います"one"

DefaultRule_en.javaDefaultRule_1_0n.javaを使用します

したがって、,DefaultRule_en.javaを使用したい場合は再定義する必要があります ... パッケージcom.google.gwt.i18n.client.impl.pluralsで利用可能なルールを確認できます。"none""two"few"

于 2011-01-26T00:04:17.610 に答える
2

自分の質問に答えることに慣れる =) GWT Google グループでの「回答」のクロス ポストは次のとおりです。

デフォルトのロケール処理にバグがあるようです。私がその結論に達した方法は次のとおりです。

モジュールにいくつかのロケールを追加したかったのです。@Generate注釈を使用すれば、プロパティ ファイルのボイラー プレートを取得できると考えました。ファイル_en.properties_default.properties. そのうえ; _enファイルには、複数形の情報が完全に欠けていました。ただし、 _defaultファイルにはそれらがありました。

次に、_defaultsファイルを自分のファイルと同じディレクトリに移動しTimeMessages.java、名前を変更しましたTimeMessages_default.properties

これで<extend-property name="locale" values="en"/>、モジュールの .gwt.xml ファイルから削除できます。さらに重要なのは&locale=en、アプリの実行時に URL から を削除できることです。@DefaultLocale("en")ドキュメントにはこれは不要であると明確に記載されていますが、それでも注釈が必要です。

結論として、この問題が発生した場合は、次のことを試してください。

  • を使用してプロパティ ファイルを生成する@Generate
  • YourMessages_default.properties並べて置くYourMessages.java
  • YourMessages インターフェイスの先頭に@DefaultLocale("en")注釈を追加します。

それについて@Generate。これが私のために働いたものです。Message インターフェースの拡張の直前:

@Generate(format = {"com.google.gwt.i18n.rebind.format.PropertiesFormat"})

GWT ログには、プロパティ ファイルが作成されたことが示されていましたが、見つかりませんでした。コンパイラ フラグを追加することでこれを修正し、ディレクトリ-extra extrasに生成されたプロパティ ファイルを見つけました。extras私はそれを理解するのに1時間以上費やしたので、ここにこの情報を含めます.

于 2010-06-11T12:53:42.163 に答える
1

私が見つけたもう1つのことは、モジュールのXMLファイルで <set-property-fallback name="locale" value="en"/> のようにフォールバックロケールを定義できることです。

于 2010-09-08T15:04:07.503 に答える