問題タブ [messageformat]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - プレースホルダーのないローカライズされたメッセージにはjava.text.MessageFormatを使用する必要がありますか?
Java 5で実行されるWebアプリケーションのユーザーインターフェイステキストをローカライズしており、プロパティファイル( java.util.Propertiesで使用される種類)で定義されたメッセージを出力する方法についてジレンマがあります。
一部のメッセージには、 java.text.MessageFormatを使用して入力されるプレースホルダーが含まれています。例えば:
MessageFormatは、英語のテキストでは一般的ですが、一重引用符は特殊文字であるため、煩わしいものです。文字通りの一重引用符の場合は、2つ入力する必要があります。
ただし、アプリケーションの1000程度のメッセージの4分の3には、プレースホルダーが含まれていません。これは、MessageFormatを避けて直接出力し、一重引用符をそのままにしておくことができることを意味します。
質問:一貫性のある構文のために、すべてのメッセージにMessageFormatを使用する必要がありますか、それとも可能な限りMessageFormatを避けて、ほとんどのメッセージをエスケープする必要がないようにする必要がありますか?
どちらの方法でも明らかに長所と短所があります。
MessageFormatのAPIドキュメントは問題を認識し、解決策ではないことを示唆していることに注意してください。
残念ながら、メッセージ形式のパターン内で引用符を使用するための規則は、やや紛らわしいことが示されています。特に、一重引用符を2倍にする必要があるかどうかは、ローカライザーにとって必ずしも明らかではありません。必ずローカライザーにルールについて通知し、(たとえば、リソースバンドルのソースファイルのコメントを使用して)どの文字列がMessageFormatによって処理されるかを伝えてください。
java - Java での MessageFormat の利点
Struts2 Web アプリケーションの特定の Java クラスには、次のコード行があります。
先生は、throw ステートメントを次のように変更するように求めています。
しかし、この状況で MessageFormat を使用する意味がわかりません。これが単純な文字列連結より優れている点は何ですか? MessageFormat の JDK API が言うように:
MessageFormat は、言語に依存しない方法で連結されたメッセージを生成する手段を提供します。これを使用して、エンド ユーザーに表示されるメッセージを作成します。
とにかくアプリケーション ログによってのみ表示され、Web アプリケーション用のカスタム エラー ページがあるため、エンド ユーザーにこの例外が表示されるとは思えません。
コード行を変更する必要がありますか、それとも現在のものに固執する必要がありますか?
java - Javaで長い整数をセパレータなしの文字列としてフォーマットするにはどうすればよいですか?
簡単な質問ですが、ここで質問する方が、 のドキュメントを理解しようとするよりもおそらく簡単だと思いますMessageFormat
。
観測値は「12,345」です。
希望する値は「12345」です。
java - MessageFormatの.propertiesファイルでnullパラメータをテストします
リソースバンドルとMessageFormatを使用すると、次のような結果になる可能性はありますか?
getBundle("message.07", "test")
私が取得するために呼び出すとき"Group test"
getBundle("message.07", null)
私が取得するために呼び出すとき"No group selected"
私がインターネットで見つけたすべての例は、惑星、ディスク上のファイルなどです。
リソースバンドルのプロパティファイルに1つのパラメータが存在するnull
(または存在しない)かどうかを確認するだけで済みます。nullパラメータの特別な形式を見つけたいと思っています{0,choice,null#No group selected|notnull#Group {0}}
。
バンドルを取得するために使用する方法は次のとおりです。
このメソッドは、次のような他のバンドルに対しても呼び出します。
getBundle("message.08", 1, 2)
=>"Page 1 of 2"
(常にパラメータ、チェックする必要はありませんnull
)getBundle("message.09")
=>"Open file"
(パラメータなし、チェックする必要はありませんnull
)
message.07
結果を説明するには、.propertiesファイルに何を書き込む必要がありますか?
私が今持っているのは:
java - JTable を印刷する際のメッセージ形式の調整
私は今のところこれを使ってテーブルを印刷していますが、うまくいきます。しかし、メッセージフォーマットのレイアウトにはあまり満足していません。フッターにページ番号と日付の両方を配置し、日付形式を表の左側に、ページを右側に配置したいと考えています。
どうやってやるの?PrintTable メソッドのオーバーライドについていくつか読んでいますが、私が読んだ内容からかなり複雑になっているようです。
この問題で私を助けてくれることを願っています、ありがとう。:)
c++ - ICU MessageFormat で使用される NumberFormatter にアクセスできますか
これはニッチな質問かもしれませんが、ICU と協力して通貨文字列をフォーマットしています。よくわからない状況にぶち当たりました。
MesssageFormat クラスを使用する場合、通貨文字列の書式設定に使用する NumberFormat オブジェクトにアクセスできますか。自分で NumberFormat インスタンスを作成すると、通貨文字列の作成時に使用される精度や丸めなどの属性を指定できます。
韓国のロケール ("ko_KR") で、MessageFormat クラスが四捨五入 (100.50 -> ₩100) を使用して通貨文字列を作成するように見える問題があります。
NumberFormat を直接使用する領域では、setMaximumFractionDigits と setMinimumFractionDigits を 2 に設定しましたが、MessageFormat でこれを設定できないようです。
何か案は?
java - JDK 1.5 の MessageFormat.format と String.format の違いは何ですか?
JDK 1.5のMessageFormat.format
との違いは何ですか?String.format
java - Java MessageFormatクラスのスレッドは安全ですか?(SimpleDateFormatとは対照的に)
SimpleDateFormatとNumberFormatはスレッドセーフではないことを私は知っています。
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4101500
しかし、MessageFormatのような他のFormatクラスはどうですか?
Fortify 360は、「MessageFormat.format(String、Object ...)」静的メソッドの使用を「競合状態-フォーマットの欠陥」の問題としてフラグ付けしていますが、MessageFormatのソースコードを分析すると、そのメソッドでそれがわかりました。 、MessageFormat自体の新しいローカルインスタンスを作成します。
Java MessageFormatクラスのスレッドは安全ですか?
messageformat - 指定されていない場合、Notes Person ドキュメントの MessageStorage のデフォルト値は?
デフォルト値を取得している場所を特定するのに問題があります。ロケーション文書の「メール」タブの下にあるメッセージ形式フィールドを変更しようとしましたが、ユーザー文書を作成するときのデフォルトのメッセージ形式は変更されませんでした。