埋め込み文字列のフォーマット
JavaFX Scriptでは文字列中に{ }を記述することで,
今までは単にオブジェクトを記述していましたが,
リスト10
var x: Number = 10.0;
println("x = {%f x}");
println("x = {%6.2f x}");
println("x = {%4.0f x}");
println("x = {%+08.2f x}");
println("x = {%g x}");
%で始まる部分がフォーマット文字列です。ここで使用できるフォーマット文字列は,
このスクリプトを実行した結果を図6に示します。
図6 数値のフォーマット
x = 10.000000 x = 10.00 x = 10 x = +0010.00 x = 10.0000
フォーマット文字列を指定しなかった場合は,
%dや%fなどの数値フォーマットや%sはロケールに応じて変更することはありませんが,
日付/
表1 日付/時間に関する拡張フォーマット
フォーマット文字列 | 説明 | 出力例 |
---|---|---|
%tx | ローカライズされた日付表現 | 2009年2月9日 |
%tX | ローカライズされた時間表現 | 2時56分35秒 JST |
%tG | ISO8601形式の4桁の西暦年。ISO8601で表した週数に対応している | 2009 |
%tg | ISO8601形式の2桁の西暦年。ISO8601で表した週数に対応している | 09 |
%tu | 曜日の数値表現。月曜が1, |
1 |
%tU | 週数。1月の第1日曜を第1週とする | 06 |
%tV | ISO8601で表した週数。その年に少なくとも4日以上含まれる最初の週を第1週とする | 07 |
%tw | 曜日の数値表現。日曜日が0, |
1 |
%tW | 週数。1月の第1月曜日を第1週とする | 06 |
%tEc | 代替カレンダの日付と時間表現 | 平成21年2月9日 2時56分35秒 JST |
%tEC | 代替カレンダの基準年の名前 | 平成 |
%tEx | 代替カレンダの日付表現 | 平成21年2月9日 |
%tEX | 代替カレンダの時間表現 | 2時56分35秒 JST |
%Ey | 代替カレンダの年 | 21 |
代替カレンダというのは,
Javaでは和暦を扱うためにja_
たとえば,
英語ロケールでは代替カレンダがないため西暦で表され,
しかし,
リスト11
Text {
font: Font {
size: 20
}
x: 20 y: 70
// 時間表示
content: bind "{%ta time} {%tx time} {%tl time}:{%tM time}:{%tS time} {%Tp time
}
英語ロケールで表示すると,
英語ではこの順番ですが,
つまり,
リスト12
// 時間表示
content: bind ##"{%ta time} {%tx time} {%tl time}:{%tM time}:{%tS time} {%Tp time}"
そして,
リスト13
"%ta %tx %tl:%tM:%tS %Tp" = "%2$tx(%1$ta) %6$Tp %3$tl:%4$tM:%5$tS"
キーの部分はスクリプトでの文字列から{ }と変数を除いた文字列とします。値には見慣れない数字と$が入っています。これはフォーマット文字列の順番を表しています。最初の%2$txはキーの2番目のフォーマット文字列である%txに対応しています。
これを図示したのが図10です。このように,
では,
今回示したようにJavaFXの国際化は,
残念ながら,
また,
なお,