コンテンツにスキップ

メッセージ管理方針⚓︎

メッセージ文字列は、表記の統一を図ることを目的にプロパティファイルで管理します。 メッセージは用途に応じて以下の 2 種類に分類します。

  • 業務メッセージ

    業務ロジックで使用されるエラーメッセージや警告文など。

  • UI メッセージ

    ラベル、ボタン名、画面固有の文言といった画面表示用のメッセージ。

メッセージの管理単位⚓︎

以下のように、業務メッセージと UI メッセージを分割して各サブプロジェクトで管理します。 業務メッセージに関しては、複数の処理で共通に使用することが考えられるため、 1 つのプロパティファイルで一括管理します。 UI メッセージに関しては、プロパティファイルと HTML ファイルについてはフォルダー構造で 1 対 1 に対応させ、画面単位でのメッセージ定義および管理を容易にします。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
root/ -------------------------------------------------- root フォルダー
 ├ applicationcore/src/main/resources
 │ └ i18n/applicationcore ------------------------------ 業務メッセージのプロパティファイルを一括管理するフォルダー
 │    ├ messages_en.properties ------------------------- 業務メッセージのプロパティファイル(英語)
 │    └ messages_ja.properties ------------------------- 業務メッセージのプロパティファイル(日本語)
 └ web/src/main/resources
   ├ i18n/ --------------------------------------------- UI メッセージのプロパティファイルを一括管理するフォルダー
   │  └ announcement/ ---------------------------------- お知らせメッセージ機能のプロパティファイルを管理するフォルダー
   |     ├ register/
   |     |  ├ register_en.properties ------------------- UI メッセージ(お知らせメッセージ登録)のプロパティファイル(英語)
   |     |  └ register_ja.properties ------------------- UI メッセージ(お知らせメッセージ登録)のプロパティファイル(日本語)
   │     └ edit/
   |        ├ edit_en.properties ----------------------- UI メッセージ(お知らせメッセージ編集)のプロパティファイル(英語)
   |        └ edit_ja.properties ----------------------- UI メッセージ(お知らせメッセージ編集)のプロパティファイル(日本語)
   └ templates/ ---------------------------------------- HTML ファイルを配置するフォルダー
      └ announcement/
         ├ register/
         |  └ register.html ---------------------------- お知らせメッセージ登録画面の HTML ファイル
         └ edit/
            └ edit.html -------------------------------- お知らせメッセージ編集画面の HTML ファイル

プロパティファイルの管理⚓︎

プロパティファイルでは、以下のようにメッセージ文字列を識別するメッセージコードとメッセージ文字列本体をペアで管理します。

業務メッセージ⚓︎

業務メッセージの管理方針については、こちら を参照してください。

UI メッセージ⚓︎

メッセージコードは、アプリケーション内で重複しないように設定する必要があるため、以下のように <機能名>.<画面名>.<項目名> で設定します。

register_ja.properties
1
announcement.register.message1=お知らせ登録画面のメッセージ文字列
edit_ja.properties
1
announcement.edit.message1=お知らせ編集画面のメッセージ文字列

多言語対応⚓︎

多言語対応するために利用する機能は以下の通りです。

ブラウザーの言語取得⚓︎

Spring Framework で提供されている AcceptHeaderLocaleResolver を利用して、ブラウザーの言語設定を取得します。

対応していない言語の場合は、 AcceptHeaderLocaleResolversetDefaultLocale メソッドを利用して日本語を使用するようにします。

プロパティファイルの読み込み⚓︎

Spring Framework で提供されている PathMatchingResourcePatternResolver を利用して、プロパティファイルを読み込みます。

また、 MessageSource で提供されている機能を利用して、プロパティファイルの末尾に _ja_en のような接尾辞を付与します。 これにより、ブラウザーの言語設定に応じて読み込むプロパティファイルを切り替えます。

HTML とのバインディング⚓︎

テンプレートエンジンである Thymeleaf の機能を利用して、 #{} 構文によってメッセージを参照します。 以下のように、構文内にはプロパティファイルで定義したメッセージコードを記述します。

1
<h1 th:text="#{announcement.register.message1}"></h1>