問題タブ [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.
internationalization - select を messageformat で使用する
PHP でMessageFormat (intl
拡張機能の一部)を使用しています。拡張機能は ICU 4.6.1 を使用します。
ただし、問題は PHP にはありません。
最初のトークンを決定して、文字列の一部をフォーマットしたいと思います{0}
。
{0}
がの場合0
、テキストはa
- の場合
1
、テキストはb
- 他のすべてのケースでは、テキストは
c
plural
これは, =0
forケースで実行できることは理解してい0
ますが、私のテストではうまくいかないようです。これはおそらく、オフセットとカスタムの複数形が 4.8 で導入されたためです。
したがって、次を使用してそれを達成しようとしていselect
ます:
しかし、何らかの理由で、メッセージ フォーマッタは上記をフォーマットできず、返されましたfalse
(フォーマットできませんでした)。
これはなぜですか?構文に問題はありますか?
クイック更新: 掘り下げた後、select を使用して数字で始まる値を一致させることはできないようです。これを回避する方法はありますか?
別の更新: ICU 49.1.2 およびintl
3.0.0a2 に更新されました。=0
、などを使用できるようになり=1
ましたが、これは機能しなくなりました (以前は機能していました):
これが機能する場所:
java - JTableを使用してMessageFormatで複数のヘッダー行を印刷する方法
と呼ばれるテーブルがtable
あり、そのテーブルにはデータが入力されています。また、これMessageFormat
を印刷するためのヘッダーとして使用したいヘッダーもあります。JTable
MessageFormat
ヘッダーに3行を印刷したいのですが、1つは製品、ジョブ、タスク用です。
私がこれを印刷する方法table
は次のようです:
ヘッダーを3行に分けて印刷する方法がわからないようです。を使用し\n
て新しい行を作成しようとしましたが、うまくいかないようです。
jsf - メッセージバンドルを使用した JSF のローカリゼーションと複数形化
アプリケーションの出力をローカライズするために、メッセージ バンドルを使用しています。複数形を追加したいのですが、メッセージ プロパティ ファイルとメッセージ パラメータを使用してそれを実現する方法はありますか?
そんな感じ:
結果として:
0 豆、1 豆、2 豆、...
もちろん、この形式label.bean={0} bean
はカウントに対して機能しますが、の値に応じて複数の「s」を取得するにはどうすればよい{0}
ですか?
java - {0} と {0,number,integer} の違いは何ですか
私は Java のMessageFormatユーティリティについてもっと理解しようとしています。私たちのコードベースや他の場所の例では、 と の両方{0}
が{0,number,integer}
数値に使用されていますが、どちらが望ましいかはわかりません。
違いを印刷する簡単なテスト:
出力:
{0}
これは私を驚かせました。どちらかといえば、 が数値に対して何もせず、{0,number,integer}
適切にローカライズすることを期待していたからです。代わりに、両方ともローカライズされますが、明示的な形式は常に en_US ローカライズを使用しているようです。
リンクされたドキュメントによると、明示的な形式が使用{0}
されている間、取得されます。しかし、それらを直接呼び出すと (出力の最後の列)、両方とも同じように見え、両方とも正しくローカライズされます。NumberFormat.getInstance(getLocale())
NumberFormat.getIntegerInstance(getLocale())
ここで何が欠けていますか?
java - メッセージフォーマットが機能しない
使用時にメッセージ形式がこの文字列で機能しない理由を理解できませんhtml.format({"something","someotherthing"});
java - Java MessageFormat - インデックスの値を置き換える
私はこのような文字列を持っています:
0 番目と 3 番目のインデックスの値を最初に置き換える必要があります。後で、1 番目と 2 番目のインデックスが (既に部分的にフォーマットされた文字列で) 置き換えられ、最終的に使用されます。
私はChoiceFormatを少しいじりましたが、それをMessageFormatクラスでパイプして、目的を達成することができませんでした。
どんなポインタでも大歓迎です!
java - 適切な複数形による Java 国際化 (i18n)
Java の標準 i18n システムを複数形の ChoiceFormat クラスとともに使用するつもりでしたが、一部の言語 (ポーランド語など) の複雑な複数形ルールを処理できないことに気付きました。英語に似た言語しか扱っていないのでは、ちょっともったいないですよね。
正しい複数形を実現するには、どのようなオプションがありますか? それらを使用することの長所と短所は何ですか?
php - MessageFormat 文字列のパラメーターをオプションにすることはできますか?
MessageFormatterクラスを使用して、翻訳された文字列をフォーマットし、エンド ユーザーに表示しています。
問題は、HTML マークアップを最終結果に挿入する必要があることです。たとえば、文字列は だけかもしれませんPeter liked a photo
が、最終結果にマークアップを含める必要があります。
多くの調査を行った後、特にこれらの質問は
私はこのアプローチを使用することにしました:
どこ:
これは、少し面倒であることに加えて、かなりうまく機能しています。ただし、マークアップをリソース バンドル文字列に含めたくない主な理由は、HTML タグなしで文字列を返したい場合があるためです。
問題は、1 つのパラメーター (Peter) を に渡すだけでMessageFormatter
、パラメーターが不足していると不平を言うことです。
私ができる回避策の1つは、これを渡すことです({1}
to{5}
は空の文字列になります):
ただし、これは非常に面倒で、あまり良い方法ではありません。
とにかく、メッセージ形式の文字列でパラメーターをオプションとしてマークすることはできますか (基本的に、パラメーターの値が渡されない場合はパラメーターを無視するだけです)。