ローカライズ
ローカライズとは、言語ゲンゴ日付ヒヅケ通貨ツウカなどを、クニ言語ゲンゴけられた地域チイキごとに変更ヘンコウすることです。
出題範囲は以下です。
Localeクラスを使用する
リソース・バンドルを使用する
Javaでメッセージ、日付および数値の形式を指定する
Localeクラスを使用する
Localeクラス
ロケールとは国や言語で分けられた「地域」をアラワタメのクラスです。
Localeクラスのコンストラクタに言語ゲンゴコード、および、クニコードをワタすことで、
その地域チイキのローケルオブジェクトを取得シュトクすることが出来デキます。
コンストラクタ               説明セツメイ                
Locale(String language)           言語コードからロケールを構築します。  
Locale(String language, String country)     言語と国からロケールを作成します。  
リソース・バンドルを使用する
リソース・バンドルの使用シヨウ
リソース・バンドルはローケルゴト固有コユウのリソースを保持ホジした集合体シュウゴウタイです。
ロケールをえることで、ロケールにあったリソースを使用シヨウし、
アプリケーションを多言語対応タゲンゴタイオウさせることが出来デキます。
クラスメイ             説明セツメイ                    
ListResourceBundle       Listでリソースを管理カンリするクラス        
PropertyResourceBundle     プロパティファイルでリソースを管理カンリするクラス  
ListResourceBundleクラス
ListResourceBundleクラスは抽象チュウショウクラスなので、ListResourceBundleを利用リヨウする場合バアイは、
ListResourceBundleを継承ケイショウしたクラスを作成サクセイして利用リヨウします。
作成するクラス名は「クラス名_言語サクセイコード_国メイード」で統メイし、クラスメイもすべてのロケールで統一トウイツクニトウイツします。
共通キョウツウのクラスメイ基底名キテイメイばれます。
抽象チュウショウメソッド「getContents」をオーバライドし、特定トクテイのロケールにタイするリソースを実装ジッソウします。
「getContents」メソッドのモドはObjectガタの2次元ジゲン配列ハイレツです。
「getContents」メソッドはListResourceBundleクラスナイの「loadLookup()」から実行ジッコウされ、
Map<String,Object>ガタの「lookup」フィールドに格納カクノウされるため、
必ず1次元分の配列を{"キー(String型)",アタイ(Objectなのでナンでもよい)}で記述キジュツする必要ヒツヨウがあり、nullは許容キョヨウされません。
ListResourceBundleで作成サクセイしたクラスの使用シヨウ
作成サクセイしたリソースクラスは「ResourceBundle」クラスのstaticメソッド「getBundle」メソッドに、
作成サクセイしたクラスの「パッケージメイ.基底名キテイメイ」とロケールで指定シテイすることでローケルベツのリソースを取得シュトクできます。
PropertyResourceBundleクラス
PropertyResourceBundleクラスを利用リヨウする場合バアイは、プロパティファイルをロケールゴト作成サクセイ利用リヨウします。
作成するファイル名はListResourceBundleと同様ドウヨウに「基底名キテイメイ_言語サクセイコード_国メイクニトウイツード.properties」とします。
ファイルナイにはListResourceBundleと同様ドウヨウに「キー=アタイ」となるよう記述キジュツします。
作成サクセイしたプロパティファイルの利用リヨウ
作成サクセイしたプロパティファイルはListResourceBundleと同様ドウヨウに、
「ResourceBundle」クラスの「getBundle」メソッドを利用するか、
または、PropertyResourceBundleクラスのコンストラクタにファイルリソースをワタすことでも利用リヨウできます。
Javaでメッセージ、日付および数値の形式を指定する
メッセージフォーマットの指定シテイ
テキストメッセージの定型文テイケイブンとなる文字列モジレツ用意ヨウイし、可変カヘンとなる部分ブブンをパラメータさせるために、
「java.text.MessageFormat」クラスを利用リヨウして、メッセージ形式ケイシキ指定シテイします。
テキストメッセージの定型文テイケイブンをロケールゴト用意ヨウイし、リソース・バンドルとわせて利用リヨウします。
日付ヒヅケフォーマットの指定シテイ
標準ヒョウジュン時間ジカン日付ヒヅケ形式ケイシキアツカいをロケールゴトオコナうにはjava.timeパッケージ配下ハイカのクラスを利用リヨウします。
「java.time.LocalDate」クラストウ日時ニチジオブジェクトを取得シュトクし、
「java.time.format.DateTimeFormatter」クラスでローカライズされたフォーマットを取得シュトクします。
数値スウチフォーマットの指定シテイ
数値および通貨をフォーマットするには、java.text.NumberFormatクラスを使用します。
NumberFormatクラスにあるメソッドからロケールを指定してNumberFormatのインスタンスを取得シュトクシテイします。
サンプルプロジェクト
作成サクセイしたプロジェクトはGitHubにて。
https://github.com/koukuma5968/javacontent/tree/main/java11Gold/chapter16