Web 開発再入門 #14 ― マルチロケール処理

# Web 開発再入門 #14 ― マルチロケール処理

fmockup

## はじめに

サーバーサイドにおけるマルチロケールの処理を実現します。
英日中（en、ja、zh_CN）に対応します。

## フォルダー・ファイル構成

D:\\
└ Development\\
&nbsp;&nbsp;&nbsp;&nbsp;└ Workspace\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;└ fmockup\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;├ build\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;├ sql\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;├ src\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;└ main\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;├ java\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;└ cn\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;└ com\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;└ xxxx\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;└ fmockup\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;├ action\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;├ controller\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;├ customizer\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;├ entity\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;├ mapper\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;├ response\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;├ service\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;├ util\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;└ MessageUtil.java ← コレ
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;├ validator\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;└ validator_order\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;└ resources\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;├ messages_en.properties ← コレ
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;├ messages_ja.properties ← コレ
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;├ messages_zh_CN.properties ← コレ
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;│&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;└ messages.properties ← コレ
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;├ vue-vite\\
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;└ WinSW.NET-nnn\\

## ファイルの作成

1. Eclipse で、ファイル “messages_en.properties”、“messages_ja.properties”、“messages_zh_CN.properties”、“messages.properties”、“MessageUtil.java” を作成する。
    ```properties:messages_en.properties
    COMMON_ERROR_TITLE_SESSION_TIMEOUT_HAS_OCCURRED=Session timeout has occurred.
    COMMON_ERROR_TITLE_PLEASE_MODIFY_VALUE=Please modify value.
    
    MENU_ERROR_TITLE_MENU_LIST_DOES_NOT_EXIST=Menu List does not exist.
    
    LOGIN_ERROR_FORM_NO_USER_ID_IS_SPECIFIED=No User ID is specified.
    LOGIN_ERROR_FORM_NO_PASSWORD_IS_SPECIFIED=No Password is specified.
    
    LOGIN_ERROR_TITLE_USER_ID_OR_PASSWORD_IS_NOT_CORRECT=User ID or Password is not correct.
    LOGIN_ERROR_TITLE_THIS_ACCOUND_DOES_NOT_EXIST=This Actount does not exist.
    
    PASSWORD_ERROR_TITLE_INVALID_CURRENT_PASSWORD=Invalid Current Password.
    PASSWORD_ERROR_TITLE_ERROR_IN_PASSWORD_CHARACTER=Error in Password character.
    PASSWORD_ERROR_TITLE_ERROR_INVALID_NEW_PASSWORD=Invalid New Password.
    PASSWORD_ERROR_TITLE_ERROR_NEW_PASSWORD_AND_CONFIRM_PASSWORD_ARE_UNMATCHED=New Password and Confirm Password are unmatched.
    
    ACCOUNT_ERROR_TITLE_YOUR_ACCOUNT_DOES_NOT_EXIST=Your Account does not exist.
    ACCOUNT_ERROR_TITLE_YOUR_ACCOUNT_WAS_LOCKED_PLEASE_LOGOUT_AND_TRY_TO_LOGIN_AGAIN=Your Account was locked. Please logout, and try to login again.
    ACCOUNT_ERROR_TITLE_YOUR_ACCOUNT_WAS_LOCKED=Your Account was locked. Please logout.
    ACCOUNT_ERROR_TITLE_YOUR_ACCOUNT_IS_RESTRICTED=Your Account access is restricted.
    
    USER_ERROR_FORM_NO_USER_NAME_IS_SPECIFIED=No User Name is specified.
    USER_ERROR_FORM_ERROR_IN_USER_NAME_LENGTH=Error in User Name length.
    USER_ERROR_FORM_ERROR_IN_USER_NAME_CHARACTER=Error in User Name character.
    USER_ERROR_FORM_NO_CURRENT_PASSWORD_IS_SPECIFIED=No Current Password is specified.
    USER_ERROR_FORM_ERROR_IN_CURRENT_PASSWORD_LENGTH=Error in Current Password length.
    USER_ERROR_FORM_ERROR_IN_CURRENT_PASSWORD_CHARACTER=Error in Current Password character.
    USER_ERROR_FORM_NO_NEW_PASSWORD_IS_SPECIFIED=No New Password is specified.
    USER_ERROR_FORM_ERROR_IN_NEW_PASSWORD_LENGTH=Error in New Password length.
    USER_ERROR_FORM_ERROR_IN_NEW_PASSWORD_CHARACTER=Error in New Password character.
    USER_ERROR_FORM_NO_CONFIRM_PASSWORD_IS_SPECIFIED=No Confirm Password is specified.
    USER_ERROR_FORM_ERROR_IN_CONFIRM_PASSWORD_LENGTH=Error in Confirm Password length.
    USER_ERROR_FORM_ERROR_IN_CONFIRM_PASSWORD_CHARACTER=Error in Confirm Password character.
    USER_ERROR_FORM_ERROR_IN_USER_REMARK_LENGTH=Error in User Remark length.
    USER_ERROR_FORM_ERROR_IN_USER_REMARK_CHARACTER=Error in User Remark character.
    
    USER_ERROR_TITLE_USER_LIST_DOES_NOT_EXIST=User List does not exist.
    USER_ERROR_TITLE_THIS_USER_DOES_NOT_EXIST=This User does not exist.
    USER_ERROR_TITLE_THIS_USER_ALREADY_EXISTS=This User already exists.
    USER_ERROR_TITLE_USER_ROLE_LIST_DOES_NOT_EXIST=User Role List does not exist.
    USER_ERROR_TITLE_THIS_USER_ROLE_ALREADY_EXISTS=This User Role already exists.
    USER_ERROR_TITLE_THIS_USER_OR_ROLE_DOES_NOT_EXIST=This User or Role does not exist.
    
    ROLE_ERROR_FORM_NO_ROLE_NAME_IS_SPECIFIED=No Role Name is specified.
    ROLE_ERROR_FORM_ERROR_IN_ROLE_NAME_LENGTH=Error in Role Name length.
    ROLE_ERROR_FORM_ERROR_IN_ROLE_NAME_CHARACTER=Error in Role Name character.
    ROLE_ERROR_FORM_ERROR_IN_ROLE_REMARK_LENGTH=Error in Role Remark length.
    ROLE_ERROR_FORM_ERROR_IN_ROLE_REMARK_CHARACTER=Error in Role Remark character.
    
    ROLE_ERROR_TITLE_NOT_SELECT_ROLE_NAME=Not select Role Name.
    ROLE_ERROR_TITLE_ROLE_LIST_DOES_NOT_EXIST=Role List does not exist.
    ROLE_ERROR_TITLE_THIS_ROLE_DOES_NOT_EXIST=This Role does not exist.
    ROLE_ERROR_TITLE_THIS_ROLE_ALREADY_EXISTS=This Role already exists.
    ROLE_ERROR_TITLE_THIS_ROLE_TRANSACTION_DOES_NOT_EXIST=This Role Transaction does not exist.
    ROLE_ERROR_TITLE_THIS_ROLE_TRANSACTION_ALREADY_EXISTS=This Role Transaction already exists.
    ROLE_ERROR_TITLE_THIS_ROLE_OR_TRANSACTION_DOES_NOT_EXISTS=This Role or Transaction does not exist.
    ROLE_ERROR_TITLE_THIS_ROLE_IS_ASSIGNED_BY_USER=This Role is assigned by User.
    
    XXXX_ERROR_FORM_NO_XXXX_NAME_IS_SPECIFIED=No Xxxx Name is specified.
    XXXX_ERROR_FORM_ERROR_IN_XXXX_VALUE_LENGTH=Error in Xxxx Name length.
    XXXX_ERROR_FORM_ERROR_IN_XXXX_NAME_CHARACTER=Error in Xxxx Name character.
    XXXX_ERROR_FORM_NO_XXXX_VALUE_IS_SPECIFIED=No Xxxx Value is specified.
    XXXX_ERROR_FORM_ERROR_IN_XXXX_VALUE_LENGTH=Error in Xxxx Value length.
    XXXX_ERROR_FORM_ERROR_IN_XXXX_VALUE_CHARACTER=Error in Xxxx Value character.
    XXXX_ERROR_FORM_NO_XXXX_FLAG_IS_SPECIFIED=No Xxxx Flag is specified.
    XXXX_ERROR_FORM_ERROR_IN_XXXX_FLAG_LENGTH=Error in Xxxx Flag length.
    XXXX_ERROR_FORM_ERROR_IN_XXXX_FLAG_CHARACTER=Error in Xxxx Flag character.
    XXXX_ERROR_FORM_ERROR_IN_XXXX_REMARK_LENGTH=Error in Xxxx Remark length.
    XXXX_ERROR_FORM_ERROR_IN_XXXX_REMARK_CHARACTER=Error in Xxxx Remark character.
    
    XXXX_ERROR_TITLE_XXXX_LIST_DOES_NOT_EXIST=Xxxx List does not exist
    XXXX_ERROR_TITLE_THIS_XXXX_DOES_NOT_EXIST=This Xxxx does not exist.
    XXXX_ERROR_TITLE_THIS_XXXX_ALREADY_EXISTS=This Xxxx already exists.
    
    YYYY_ERROR_FORM_NO_YYYY_NAME_IS_SPECIFIED=No Yyyy Name is specified.
    YYYY_ERROR_FORM_ERROR_IN_YYYY_VALUE_LENGTH=Error in Yyyy Name length.
    YYYY_ERROR_FORM_ERROR_IN_YYYY_NAME_CHARACTER=Error in Yyyy Name character.
    YYYY_ERROR_FORM_NO_YYYY_VALUE_IS_SPECIFIED=No Yyyy Value is specified.
    YYYY_ERROR_FORM_ERROR_IN_YYYY_VALUE_LENGTH=Error in Yyyy Value length.
    YYYY_ERROR_FORM_ERROR_IN_YYYY_VALUE_CHARACTER=Error in Yyyy Value character.
    YYYY_ERROR_FORM_NO_YYYY_FLAG_IS_SPECIFIED=No Yyyy Flag is specified.
    YYYY_ERROR_FORM_ERROR_IN_YYYY_FLAG_LENGTH=Error in Yyyy Flag length.
    YYYY_ERROR_FORM_ERROR_IN_YYYY_FLAG_CHARACTER=Error in Yyyy Flag character.
    YYYY_ERROR_FORM_ERROR_IN_YYYY_REMARK_LENGTH=Error in Yyyy Remark length.
    YYYY_ERROR_FORM_ERROR_IN_YYYY_REMARK_CHARACTER=Error in Yyyy Remark character.
    
    YYYY_ERROR_TITLE_YYYY_LIST_DOES_NOT_EXIST=Yyyy List does not exist.
    YYYY_ERROR_TITLE_THIS_YYYY_DOES_NOT_EXIST=This Yyyy does not exist.
    YYYY_ERROR_TITLE_THIS_YYYY_ALREADY_EXISTS=This Yyyy already exists.
    
    ZZZZ_ERROR_FORM_NO_ZZZZ_NAME_IS_SPECIFIED=No Zzzz Name is specified.
    ZZZZ_ERROR_FORM_ERROR_IN_ZZZZ_VALUE_LENGTH=Error in Zzzz Name length.
    ZZZZ_ERROR_FORM_ERROR_IN_ZZZZ_NAME_CHARACTER=Error in Zzzz Name character.
    ZZZZ_ERROR_FORM_NO_ZZZZ_VALUE_IS_SPECIFIED=No Zzzz Value is specified.
    ZZZZ_ERROR_FORM_ERROR_IN_ZZZZ_VALUE_LENGTH=Error in Zzzz Value length.
    ZZZZ_ERROR_FORM_ERROR_IN_ZZZZ_VALUE_CHARACTER=Error in Zzzz Value character.
    ZZZZ_ERROR_FORM_NO_ZZZZ_FLAG_IS_SPECIFIED=No Zzzz Flag is specified.
    ZZZZ_ERROR_FORM_ERROR_IN_ZZZZ_FLAG_LENGTH=Error in Zzzz Flag length.
    ZZZZ_ERROR_FORM_ERROR_IN_ZZZZ_FLAG_CHARACTER=Error in Zzzz Flag character.
    ZZZZ_ERROR_FORM_ERROR_IN_ZZZZ_REMARK_LENGTH=Error in Zzzz Remark length.
    ZZZZ_ERROR_FORM_ERROR_IN_ZZZZ_REMARK_CHARACTER=Error in Zzzz Remark character.
    
    ZZZZ_ERROR_TITLE_ZZZZ_LIST_DOES_NOT_EXIST=Zzzz List does not exist.
    ZZZZ_ERROR_TITLE_THIS_ZZZZ_DOES_NOT_EXIST=This Zzzz does not exist.
    ZZZZ_ERROR_TITLE_THIS_ZZZZ_ALREADY_EXISTS=This Zzzz already exists.
    ```
    ```properties:messages_ja.properties
    COMMON_ERROR_TITLE_SESSION_TIMEOUT_HAS_OCCURRED=セッションタイムアウトが発生しました。
    COMMON_ERROR_TITLE_PLEASE_MODIFY_VALUE=値を修正してください。
    
    MENU_ERROR_TITLE_MENU_LIST_DOES_NOT_EXIST=メニューリストが存在しません。
    
    LOGIN_ERROR_FORM_NO_USER_ID_IS_SPECIFIED=ユーザー ID が指定されていません。
    LOGIN_ERROR_FORM_NO_PASSWORD_IS_SPECIFIED=パスワードが指定されていません。
    
    LOGIN_ERROR_TITLE_USER_ID_OR_PASSWORD_IS_NOT_CORRECT=ユーザー ID またはパスワードに誤りがあります。
    LOGIN_ERROR_TITLE_THIS_ACCOUNT_DOES_NOT_EXIST=このアカウントは存在しません。
    
    PASSWORD_ERROR_TITLE_INVALID_CURRENT_PASSWORD=現パスワードが正しくありません。
    PASSWORD_ERROR_TITLE_ERROR_IN_PASSWORD_CHARACTER=パスワードの文字に誤りがあります。
    PASSWORD_ERROR_TITLE_ERROR_INVALID_NEW_PASSWORD=新パスワードが正しくありません。
    PASSWORD_ERROR_TITLE_ERROR_NEW_PASSWORD_AND_CONFIRM_PASSWORD_ARE_UNMATCHED=新パスワードとパスワード確認が一致しません。
    
    ACCOUNT_ERROR_TITLE_YOUR_ACCOUNT_DOES_NOT_EXIST=あなたのアカウントは存在しません。
    ACCOUNT_ERROR_TITLE_YOUR_ACCOUNT_WAS_LOCKED_PLEASE_LOGOUT_AND_TRY_TO_LOGIN_AGAIN=あなたのアカウントはロックされました。ログアウトし、再ログインしてください。
    ACCOUNT_ERROR_TITLE_YOUR_ACCOUNT_WAS_LOCKED=あなたのアカウントはロックされました。ログアウトしてください。
    ACCOUNT_ERROR_TITLE_YOUR_ACCOUNT_IS_RESTRICTED=あなたのアカウントのアクセスは制限されています。
    
    USER_ERROR_FORM_NO_USER_NAME_IS_SPECIFIED=ユーザー名が指定されていません。
    USER_ERROR_FORM_ERROR_IN_USER_NAME_LENGTH=ユーザー名の長さに誤りがあります。
    USER_ERROR_FORM_ERROR_IN_USER_NAME_CHARACTER=ユーザー名の文字に誤りがあります。
    USER_ERROR_FORM_NO_CURRENT_PASSWORD_IS_SPECIFIED=現パスワードが指定されていません。
    USER_ERROR_FORM_ERROR_IN_CURRENT_PASSWORD_LENGTH=現パスワードの長さに誤りがあります。
    USER_ERROR_FORM_ERROR_IN_CURRENT_PASSWORD_CHARACTER=現パスワードの文字に誤りがあります。
    USER_ERROR_FORM_NO_NEW_PASSWORD_IS_SPECIFIED=新パスワードが指定されていません。
    USER_ERROR_FORM_ERROR_IN_NEW_PASSWORD_LENGTH=新パスワードの長さに誤りがあります。
    USER_ERROR_FORM_ERROR_IN_NEW_PASSWORD_CHARACTER=新パスワードの文字に誤りがあります。
    USER_ERROR_FORM_NO_CONFIRM_PASSWORD_IS_SPECIFIED=パスワード確認が指定されていません。
    USER_ERROR_FORM_ERROR_IN_CONFIRM_PASSWORD_LENGTH=パスワード確認の長さに誤りがあります。
    USER_ERROR_FORM_ERROR_IN_CONFIRM_PASSWORD_CHARACTER=パスワード確認の文字に誤りがあります。
    USER_ERROR_FORM_ERROR_IN_USER_REMARK_LENGTH=ユーザーコメントの長さに誤りがあります。
    USER_ERROR_FORM_ERROR_IN_USER_REMARK_CHARACTER=ユーザーコメントの文字に誤りがあります。
    
    USER_ERROR_TITLE_USER_LIST_DOES_NOT_EXIST=ユーザーリストが存在しません。
    USER_ERROR_TITLE_THIS_USER_DOES_NOT_EXIST=このユーザーは存在しません。
    USER_ERROR_TITLE_THIS_USER_ALREADY_EXISTS=このユーザーは既に存在します。
    USER_ERROR_TITLE_USER_ROLE_LIST_DOES_NOT_EXIST=ユーザー・ロールリストが存在しません。
    USER_ERROR_TITLE_THIS_USER_ROLE_ALREADY_EXISTS=このユーザー・ロールは既に存在します。
    USER_ERROR_TITLE_THIS_USER_OR_ROLE_DOES_NOT_EXIST=このユーザーまたはロールは存在しません。
    
    ROLE_ERROR_FORM_NO_ROLE_NAME_IS_SPECIFIED=ロール名が指定されていません。
    ROLE_ERROR_FORM_ERROR_IN_ROLE_NAME_LENGTH=ロール名の長さに誤りがあります。
    ROLE_ERROR_FORM_ERROR_IN_ROLE_NAME_CHARACTER=ロール名の文字に誤りがあります。
    ROLE_ERROR_FORM_ERROR_IN_ROLE_REMARK_LENGTH=ロールコメントの長さに誤りがあります。
    ROLE_ERROR_FORM_ERROR_IN_ROLE_REMARK_CHARACTER=ロールコメントの文字に誤りがあります。
    
    ROLE_ERROR_TITLE_NOT_SELECT_ROLE_NAME=ロール名が選択されていません。
    ROLE_ERROR_TITLE_ROLE_LIST_DOES_NOT_EXIST=ロールリストが存在しません。
    ROLE_ERROR_TITLE_THIS_ROLE_DOES_NOT_EXIST=このロールは存在しません。
    ROLE_ERROR_TITLE_THIS_ROLE_ALREADY_EXISTS=このロールは既に存在します。
    ROLE_ERROR_TITLE_THIS_ROLE_TRANSACTION_DOES_NOT_EXIST=このロール・トランザクションは存在しません。
    ROLE_ERROR_TITLE_THIS_ROLE_TRANSACTION_ALREADY_EXISTS=このロール・トランザクションは既に存在します。
    ROLE_ERROR_TITLE_THIS_ROLE_OR_TRANSACTION_DOES_NOT_EXISTS=このロールまたはトランザクションは存在しません。
    ROLE_ERROR_TITLE_THIS_ROLE_IS_ASSIGNED_BY_USER=このロールはユーザーに割り当てられています。
    
    XXXX_ERROR_FORM_NO_XXXX_NAME_IS_SPECIFIED=ＸＸＸＸ名が指定されていません。
    XXXX_ERROR_FORM_ERROR_IN_XXXX_VALUE_LENGTH=ＸＸＸＸ名の長さに誤りがあります。
    XXXX_ERROR_FORM_ERROR_IN_XXXX_NAME_CHARACTER=ＸＸＸＸ名の文字に誤りがあります。
    XXXX_ERROR_FORM_NO_XXXX_VALUE_IS_SPECIFIED=ＸＸＸＸ値が指定されていません。
    XXXX_ERROR_FORM_ERROR_IN_XXXX_VALUE_LENGTH=ＸＸＸＸ値の長さに誤りがあります。
    XXXX_ERROR_FORM_ERROR_IN_XXXX_VALUE_CHARACTER=ＸＸＸＸ値の文字に誤りがあります。
    XXXX_ERROR_FORM_NO_XXXX_FLAG_IS_SPECIFIED=ＸＸＸＸフラグが指定されていません。
    XXXX_ERROR_FORM_ERROR_IN_XXXX_FLAG_LENGTH=ＸＸＸＸフラグの長さに誤りがあります。
    XXXX_ERROR_FORM_ERROR_IN_XXXX_FLAG_CHARACTER=ＸＸＸＸフラグの文字に誤りがあります。
    XXXX_ERROR_FORM_ERROR_IN_XXXX_REMARK_LENGTH=ＸＸＸＸコメントの長さに誤りがあります。
    XXXX_ERROR_FORM_ERROR_IN_XXXX_REMARK_CHARACTER=ＸＸＸＸコメントの文字に誤りがあります。
    
    XXXX_ERROR_TITLE_XXXX_LIST_DOES_NOT_EXIST=ＸＸＸＸリストは存在しません。
    XXXX_ERROR_TITLE_THIS_XXXX_DOES_NOT_EXIST=このＸＸＸＸは存在しません。
    XXXX_ERROR_TITLE_THIS_XXXX_ALREADY_EXISTS=このＸＸＸＸは既に存在します。
    
    YYYY_ERROR_FORM_NO_YYYY_NAME_IS_SPECIFIED=ＹＹＹＹ名が指定されていません。
    YYYY_ERROR_FORM_ERROR_IN_YYYY_VALUE_LENGTH=ＹＹＹＹ名の長さに誤りがあります。
    YYYY_ERROR_FORM_ERROR_IN_YYYY_NAME_CHARACTER=ＹＹＹＹ名の文字に誤りがあります。
    YYYY_ERROR_FORM_NO_YYYY_VALUE_IS_SPECIFIED=ＹＹＹＹ値が指定されていません。
    YYYY_ERROR_FORM_ERROR_IN_YYYY_VALUE_LENGTH=ＹＹＹＹ値の長さに誤りがあります。
    YYYY_ERROR_FORM_ERROR_IN_YYYY_VALUE_CHARACTER=ＹＹＹＹ値の文字に誤りがあります。
    YYYY_ERROR_FORM_NO_YYYY_FLAG_IS_SPECIFIED=ＹＹＹＹフラグが指定されていません。
    YYYY_ERROR_FORM_ERROR_IN_YYYY_FLAG_LENGTH=ＹＹＹＹフラグの長さに誤りがあります。
    YYYY_ERROR_FORM_ERROR_IN_YYYY_FLAG_CHARACTER=ＹＹＹＹフラグの文字に誤りがあります。
    YYYY_ERROR_FORM_ERROR_IN_YYYY_REMARK_LENGTH=ＹＹＹＹコメントの長さに誤りがあります。
    YYYY_ERROR_FORM_ERROR_IN_YYYY_REMARK_CHARACTER=ＹＹＹＹコメントの文字に誤りがあります。
    
    YYYY_ERROR_TITLE_YYYY_LIST_DOES_NOT_EXIST=ＹＹＹＹリストは存在しません。
    YYYY_ERROR_TITLE_THIS_YYYY_DOES_NOT_EXIST=このＹＹＹＹは存在しません。
    YYYY_ERROR_TITLE_THIS_YYYY_ALREADY_EXISTS=このＹＹＹＹは既に存在します。
    
    ZZZZ_ERROR_FORM_NO_ZZZZ_NAME_IS_SPECIFIED=ＺＺＺＺ名が指定されていません。
    ZZZZ_ERROR_FORM_ERROR_IN_ZZZZ_VALUE_LENGTH=ＺＺＺＺ名の長さに誤りがあります。
    ZZZZ_ERROR_FORM_ERROR_IN_ZZZZ_NAME_CHARACTER=ＺＺＺＺ名の文字に誤りがあります。
    ZZZZ_ERROR_FORM_NO_ZZZZ_VALUE_IS_SPECIFIED=ＺＺＺＺ値が指定されていません。
    ZZZZ_ERROR_FORM_ERROR_IN_ZZZZ_VALUE_LENGTH=ＺＺＺＺ値の長さに誤りがあります。
    ZZZZ_ERROR_FORM_ERROR_IN_ZZZZ_VALUE_CHARACTER=ＺＺＺＺ値の文字に誤りがあります。
    ZZZZ_ERROR_FORM_NO_ZZZZ_FLAG_IS_SPECIFIED=ＺＺＺＺフラグが指定されていません。
    ZZZZ_ERROR_FORM_ERROR_IN_ZZZZ_FLAG_LENGTH=ＺＺＺＺフラグの長さに誤りがあります。
    ZZZZ_ERROR_FORM_ERROR_IN_ZZZZ_FLAG_CHARACTER=ＺＺＺＺフラグの文字に誤りがあります。
    ZZZZ_ERROR_FORM_ERROR_IN_ZZZZ_REMARK_LENGTH=ＺＺＺＺコメントの長さに誤りがあります。
    ZZZZ_ERROR_FORM_ERROR_IN_ZZZZ_REMARK_CHARACTER=ＺＺＺＺコメントの文字列に誤りがあります。
    
    ZZZZ_ERROR_TITLE_ZZZZ_LIST_DOES_NOT_EXIST=ＺＺＺＺリストは存在しません。
    ZZZZ_ERROR_TITLE_THIS_ZZZZ_DOES_NOT_EXIST=このＺＺＺＺは存在しません。
    ZZZZ_ERROR_TITLE_THIS_ZZZZ_ALREADY_EXISTS=このＺＺＺＺは既に存在します。
    ```
    ```properties:messages_zh_CN.properties
    COMMON_ERROR_TITLE_SESSION_TIMEOUT_HAS_OCCURRED=会话超时。
    COMMON_ERROR_TITLE_PLEASE_MODIFY_VALUE=请修改输入值。
    
    MENU_ERROR_TITLE_MENU_LIST_DOES_NOT_EXIST=菜单清单无存在。
    
    LOGIN_ERROR_FORM_NO_USER_ID_IS_SPECIFIED=无指定用户 ID。
    LOGIN_ERROR_FORM_NO_PASSWORD_IS_SPECIFIED=无指定密码。
    
    LOGIN_ERROR_TITLE_USER_ID_OR_PASSWORD_IS_NOT_CORRECT=用户 ID 或密码错误。
    LOGIN_ERROR_TITLE_THIS_ACCOUNT_DOES_NOT_EXIST=无存在这账号。
    
    PASSWORD_ERROR_TITLE_INVALID_CURRENT_PASSWORD=现密码不正确。
    PASSWORD_ERROR_TITLE_ERROR_IN_PASSWORD_CHARACTER=密码的文字错误。
    PASSWORD_ERROR_TITLE_ERROR_INVALID_NEW_PASSWORD=新密码不正确。
    PASSWORD_ERROR_TITLE_ERROR_NEW_PASSWORD_AND_CONFIRM_PASSWORD_ARE_UNMATCHED=新密码和密码确认不一致。
    
    ACCOUNT_ERROR_TITLE_YOUR_ACCOUNT_DOES_NOT_EXIST=你的账号不存在。
    ACCOUNT_ERROR_TITLE_YOUR_ACCOUNT_WAS_LOCKED_PLEASE_LOGOUT_AND_TRY_TO_LOGIN_AGAIN=你的账号被锁定了。请注销和重新注册。
    ACCOUNT_ERROR_TITLE_YOUR_ACCOUNT_WAS_LOCKED=你的账号被锁定了。请注销。
    ACCOUNT_ERROR_TITLE_YOUR_ACCOUNT_IS_RESTRICTED=你的账号的访问被限制。
    
    USER_ERROR_FORM_NO_USER_NAME_IS_SPECIFIED=无指定用户名
    USER_ERROR_FORM_ERROR_IN_USER_NAME_LENGTH=用户名的长度错误。
    USER_ERROR_FORM_ERROR_IN_USER_NAME_CHARACTER=用户名的文字错误。
    USER_ERROR_FORM_NO_CURRENT_PASSWORD_IS_SPECIFIED=无指定现密码。
    USER_ERROR_FORM_ERROR_IN_CURRENT_PASSWORD_LENGTH=现密码的长度错误。
    USER_ERROR_FORM_ERROR_IN_CURRENT_PASSWORD_CHARACTER=现密码的文字错误。
    USER_ERROR_FORM_NO_NEW_PASSWORD_IS_SPECIFIED=无指定新密码。
    USER_ERROR_FORM_ERROR_IN_NEW_PASSWORD_LENGTH=新密码的长度错误。
    USER_ERROR_FORM_ERROR_IN_NEW_PASSWORD_CHARACTER=新密码的文字错误。
    USER_ERROR_FORM_NO_CONFIRM_PASSWORD_IS_SPECIFIED=无指定密码确认。
    USER_ERROR_FORM_ERROR_IN_CONFIRM_PASSWORD_LENGTH=密码确认的长度错误。
    USER_ERROR_FORM_ERROR_IN_CONFIRM_PASSWORD_CHARACTER=Error in Confirm Password character.
    USER_ERROR_FORM_ERROR_IN_USER_REMARK_LENGTH=用户注释的长度错误。
    USER_ERROR_FORM_ERROR_IN_USER_REMARK_CHARACTER=用户注释的文字错误。
    
    USER_ERROR_TITLE_USER_LIST_DOES_NOT_EXIST=用户清单无存在。
    USER_ERROR_TITLE_THIS_USER_DOES_NOT_EXIST=此用户无存在。
    USER_ERROR_TITLE_THIS_USER_ALREADY_EXISTS=此用户已经存在。
    USER_ERROR_TITLE_USER_ROLE_LIST_DOES_NOT_EXIST=用户・角色清单无存在。
    USER_ERROR_TITLE_THIS_USER_ROLE_ALREADY_EXISTS=此用户・角色已经存在。
    USER_ERROR_TITLE_THIS_USER_OR_ROLE_DOES_NOT_EXIST=此用户或角色无存在。
    
    ROLE_ERROR_FORM_NO_ROLE_NAME_IS_SPECIFIED=无指定角色名。
    ROLE_ERROR_FORM_ERROR_IN_ROLE_NAME_LENGTH=角色名的长度错误。
    ROLE_ERROR_FORM_ERROR_IN_ROLE_NAME_CHARACTER=角色名的文字错误。
    ROLE_ERROR_FORM_ERROR_IN_ROLE_REMARK_LENGTH=角色注释的长度错误。
    ROLE_ERROR_FORM_ERROR_IN_ROLE_REMARK_CHARACTER=角色注释的文字错误。
    
    ROLE_ERROR_TITLE_NOT_SELECT_ROLE_NAME=无挑选角色名。
    ROLE_ERROR_TITLE_ROLE_LIST_DOES_NOT_EXIST=角色清单无存在。
    ROLE_ERROR_TITLE_THIS_ROLE_DOES_NOT_EXIST=此角色无存在。
    ROLE_ERROR_TITLE_THIS_ROLE_ALREADY_EXISTS=此角色已经存在。
    ROLE_ERROR_TITLE_THIS_ROLE_TRANSACTION_DOES_NOT_EXIST=此角色・业务无存在。
    ROLE_ERROR_TITLE_THIS_ROLE_TRANSACTION_ALREADY_EXISTS=此角色・业务已经存在。
    ROLE_ERROR_TITLE_THIS_ROLE_OR_TRANSACTION_DOES_NOT_EXISTS=此角色或业务无存在。
    ROLE_ERROR_TITLE_THIS_ROLE_IS_ASSIGNED_BY_USER=此角色被用户绑定。
    
    XXXX_ERROR_FORM_NO_XXXX_NAME_IS_SPECIFIED=无指定ＸＸＸＸ名。
    XXXX_ERROR_FORM_ERROR_IN_XXXX_VALUE_LENGTH=ＸＸＸＸ名的长度错误。
    XXXX_ERROR_FORM_ERROR_IN_XXXX_NAME_CHARACTER=ＸＸＸＸ名的文字错误。
    XXXX_ERROR_FORM_NO_XXXX_VALUE_IS_SPECIFIED=无指定ＸＸＸＸ值。
    XXXX_ERROR_FORM_ERROR_IN_XXXX_VALUE_LENGTH=ＸＸＸＸ值的长度错误。
    XXXX_ERROR_FORM_ERROR_IN_XXXX_VALUE_CHARACTER=ＸＸＸＸ值的文字错误。
    XXXX_ERROR_FORM_NO_XXXX_FLAG_IS_SPECIFIED=无指定ＸＸＸＸ旗标。
    XXXX_ERROR_FORM_ERROR_IN_XXXX_FLAG_LENGTH=ＸＸＸＸ旗标的长度错误。
    XXXX_ERROR_FORM_ERROR_IN_XXXX_FLAG_CHARACTER=ＸＸＸＸ旗标的文字错误。
    XXXX_ERROR_FORM_ERROR_IN_XXXX_REMARK_LENGTH=ＸＸＸＸ注释的长度错误。
    XXXX_ERROR_FORM_ERROR_IN_XXXX_REMARK_CHARACTER=ＸＸＸＸ注释的文字错误。
    
    XXXX_ERROR_TITLE_XXXX_LIST_DOES_NOT_EXIST=ＸＸＸＸ清单无存在。
    XXXX_ERROR_TITLE_THIS_XXXX_DOES_NOT_EXIST=此ＸＸＸＸ无存在。
    XXXX_ERROR_TITLE_THIS_XXXX_ALREADY_EXISTS=此ＸＸＸＸ已经存在。
    
    YYYY_ERROR_FORM_NO_YYYY_NAME_IS_SPECIFIED=无指定ＹＹＹＹ名。
    YYYY_ERROR_FORM_ERROR_IN_YYYY_VALUE_LENGTH=ＹＹＹＹ名的长度错误。
    YYYY_ERROR_FORM_ERROR_IN_YYYY_NAME_CHARACTER=ＹＹＹＹ名的文字错误。
    YYYY_ERROR_FORM_NO_YYYY_VALUE_IS_SPECIFIED=无指定ＹＹＹＹ值。
    YYYY_ERROR_FORM_ERROR_IN_YYYY_VALUE_LENGTH=ＹＹＹＹ值的长度错误。
    YYYY_ERROR_FORM_ERROR_IN_YYYY_VALUE_CHARACTER=ＹＹＹＹ值的文字错误。
    YYYY_ERROR_FORM_NO_YYYY_FLAG_IS_SPECIFIED=无指定ＹＹＹＹ旗标。
    YYYY_ERROR_FORM_ERROR_IN_YYYY_FLAG_LENGTH=ＹＹＹＹ旗标的长度错误。
    YYYY_ERROR_FORM_ERROR_IN_YYYY_FLAG_CHARACTER=ＹＹＹＹ旗标的文字错误。
    YYYY_ERROR_FORM_ERROR_IN_YYYY_REMARK_LENGTH=ＹＹＹＹ注释的长度错误。
    YYYY_ERROR_FORM_ERROR_IN_YYYY_REMARK_CHARACTER=ＹＹＹＹ注释的文字错误。
    
    YYYY_ERROR_TITLE_YYYY_LIST_DOES_NOT_EXIST=ＹＹＹＹ清单无存在。
    YYYY_ERROR_TITLE_THIS_YYYY_DOES_NOT_EXIST=此ＹＹＹＹ无存在。
    YYYY_ERROR_TITLE_THIS_YYYY_ALREADY_EXISTS=此ＹＹＹＹ已经存在。
    
    ZZZZ_ERROR_FORM_NO_ZZZZ_NAME_IS_SPECIFIED=无指定ＺＺＺＺ名。
    ZZZZ_ERROR_FORM_ERROR_IN_ZZZZ_VALUE_LENGTH=ＺＺＺＺ名的长度错误。
    ZZZZ_ERROR_FORM_ERROR_IN_ZZZZ_NAME_CHARACTER=ＺＺＺＺ名的文字错误。
    ZZZZ_ERROR_FORM_NO_ZZZZ_VALUE_IS_SPECIFIED=无指定ＺＺＺＺ值。
    ZZZZ_ERROR_FORM_ERROR_IN_ZZZZ_VALUE_LENGTH=ＺＺＺＺ值的长度错误。
    ZZZZ_ERROR_FORM_ERROR_IN_ZZZZ_VALUE_CHARACTER=ＺＺＺＺ值的文字错误。
    ZZZZ_ERROR_FORM_NO_ZZZZ_FLAG_IS_SPECIFIED=无指定ＺＺＺＺ旗标。
    ZZZZ_ERROR_FORM_ERROR_IN_ZZZZ_FLAG_LENGTH=ＺＺＺＺ旗标的长度错误。
    ZZZZ_ERROR_FORM_ERROR_IN_ZZZZ_FLAG_CHARACTER=ＺＺＺＺ旗标的文字错误。
    ZZZZ_ERROR_FORM_ERROR_IN_ZZZZ_REMARK_LENGTH=ＺＺＺＺ注释的长度错误。
    ZZZZ_ERROR_FORM_ERROR_IN_ZZZZ_REMARK_CHARACTER=ＺＺＺＺ注释的文字错误。
    
    ZZZZ_ERROR_TITLE_ZZZZ_LIST_DOES_NOT_EXIST=ＺＺＺＺ清单无存在。
    ZZZZ_ERROR_TITLE_THIS_ZZZZ_DOES_NOT_EXIST=此ＺＺＺＺ无存在。
    ZZZZ_ERROR_TITLE_THIS_ZZZZ_ALREADY_EXISTS=此ＺＺＺＺ已经存在。
    ```
    ```properties:messages.properties
    （空ファイル）
    ```
    ```java:MessageUtil.java
    ・・・
    
    package cn.com.xxxx.fmockup.util;
    
    import java.util.Locale;
    
    import org.springframework.context.i18n.LocaleContextHolder;
    import org.springframework.context.support.ResourceBundleMessageSource;
    
    /**
     * Message Utitility
     */
    
    public class MessageUtil {
    
    	public static String COMMON_ERROR_STRING_UNKNOWN_TROUBLE_HAS_OCCURRED = "Unknown trouble has occurred.";
    	
    	public static String COMMON_ERROR_TITLE_SESSION_TIMEOUT_HAS_OCCURRED = "COMMON_ERROR_TITLE_SESSION_TIMEOUT_HAS_OCCURRED";
    	public static String COMMON_ERROR_TITLE_PLEASE_MODIFY_VALUE = "COMMON_ERROR_TITLE_PLEASE_MODIFY_VALUE";
    	
    	public static String MENU_ERROR_TITLE_MENU_LIST_DOES_NOT_EXIST = "MENU_ERROR_TITLE_MENU_LIST_DOES_NOT_EXIST";
    
    	public static String LOGIN_ERROR_TITLE_USER_ID_OR_PASSWORD_IS_NOT_CORRECT = "LOGIN_ERROR_TITLE_USER_ID_OR_PASSWORD_IS_NOT_CORRECT";
    	public static String LOGIN_ERROR_TITLE_THIS_ACCOUNT_DOES_NOT_EXIST = "LOGIN_ERROR_TITLE_THIS_ACCOUNT_DOES_NOT_EXIST";
    
    	public static String PASSWORD_ERROR_TITLE_INVALID_CURRENT_PASSWORD = "PASSWORD_ERROR_TITLE_INVALID_CURRENT_PASSWORD";
    	public static String PASSWORD_ERROR_TITLE_ERROR_IN_PASSWORD_CHARACTER = "PASSWORD_ERROR_TITLE_ERROR_IN_PASSWORD_CHARACTER";
    	public static String PASSWORD_ERROR_TITLE_ERROR_INVALID_NEW_PASSWORD = "PASSWORD_ERROR_TITLE_ERROR_INVALID_NEW_PASSWORD";
    	public static String PASSWORD_ERROR_TITLE_ERROR_NEW_PASSWORD_AND_CONFIRM_PASSWORD_ARE_UNMATCHED = "PASSWORD_ERROR_TITLE_ERROR_NEW_PASSWORD_AND_CONFIRM_PASSWORD_ARE_UNMATCHED";
    
    	public static String ACCOUNT_ERROR_TITLE_YOUR_ACCOUNT_DOES_NOT_EXIST = "ACCOUNT_ERROR_TITLE_YOUR_ACCOUNT_DOES_NOT_EXIST";
    	public static String ACCOUNT_ERROR_TITLE_YOUR_ACCOUNT_WAS_LOCKED_PLEASE_LOGOUT_AND_TRY_TO_LOGIN_AGAIN = "ACCOUNT_ERROR_TITLE_YOUR_ACCOUNT_WAS_LOCKED_PLEASE_LOGOUT_AND_TRY_TO_LOGIN_AGAIN";
    	public static String ACCOUNT_ERROR_TITLE_YOUR_ACCOUNT_WAS_LOCKED = "ACCOUNT_ERROR_TITLE_YOUR_ACCOUNT_WAS_LOCKED";
    	public static String ACCOUNT_ERROR_TITLE_YOUR_ACCOUNT_IS_RESTRICTED = "ACCOUNT_ERROR_TITLE_YOUR_ACCOUNT_IS_RESTRICTED";
    
    	public static String USER_ERROR_FORM_ERROR_IN_USER_REMARK_CHARACTER = "USER_ERROR_FORM_ERROR_IN_USER_REMARK_CHARACTER";
    	public static String USER_ERROR_FORM_ERROR_IN_NEW_PASSWORD_LENGTH = "USER_ERROR_FORM_ERROR_IN_NEW_PASSWORD_LENGTH";
    	public static String USER_ERROR_FORM_ERROR_IN_CONFIRM_PASSWORD_LENGTH = "USER_ERROR_FORM_ERROR_IN_CONFIRM_PASSWORD_LENGTH";
    	
    	public static String USER_ERROR_TITLE_USER_LIST_DOES_NOT_EXIST = "USER_ERROR_TITLE_USER_LIST_DOES_NOT_EXIST";
    	public static String USER_ERROR_TITLE_THIS_USER_DOES_NOT_EXIST = "USER_ERROR_TITLE_THIS_USER_DOES_NOT_EXIST";
    	public static String USER_ERROR_TITLE_THIS_USER_ALREADY_EXISTS = "USER_ERROR_TITLE_THIS_USER_ALREADY_EXISTS";
    	public static String USER_ERROR_TITLE_USER_ROLE_LIST_DOES_NOT_EXIST = "USER_ERROR_TITLE_USER_ROLE_LIST_DOES_NOT_EXIST";
    	public static String USER_ERROR_TITLE_THIS_USER_ROLE_ALREADY_EXISTS = "USER_ERROR_TITLE_THIS_USER_ROLE_ALREADY_EXISTS";
    	public static String USER_ERROR_TITLE_THIS_USER_OR_ROLE_DOES_NOT_EXIST = "USER_ERROR_TITLE_THIS_USER_OR_ROLE_DOES_NOT_EXIST";
    
    	public static String ROLE_ERROR_FORM_ERROR_IN_ROLE_REMARK_CHARACTER = "ROLE_ERROR_FORM_ERROR_IN_ROLE_REMARK_CHARACTER";
    
    	public static String ROLE_ERROR_TITLE_NOT_SELECT_ROLE_NAME = "ROLE_ERROR_TITLE_NOT_SELECT_ROLE_NAME";
    	public static String ROLE_ERROR_TITLE_ROLE_LIST_DOES_NOT_EXIST = "ROLE_ERROR_TITLE_ROLE_LIST_DOES_NOT_EXIST";
    	public static String ROLE_ERROR_TITLE_THIS_ROLE_DOES_NOT_EXIST = "ROLE_ERROR_TITLE_THIS_ROLE_DOES_NOT_EXIST";
    	public static String ROLE_ERROR_TITLE_THIS_ROLE_ALREADY_EXISTS = "ROLE_ERROR_TITLE_THIS_ROLE_ALREADY_EXISTS";
    	public static String ROLE_ERROR_TITLE_THIS_ROLE_TRANSACTION_DOES_NOT_EXIST = "ROLE_ERROR_TITLE_THIS_ROLE_TRANSACTION_DOES_NOT_EXIST";
    	public static String ROLE_ERROR_TITLE_THIS_ROLE_TRANSACTION_ALREADY_EXISTS = "ROLE_ERROR_TITLE_THIS_ROLE_TRANSACTION_ALREADY_EXISTS";
    	public static String ROLE_ERROR_TITLE_THIS_ROLE_OR_TRANSACTION_DOES_NOT_EXISTS = "ROLE_ERROR_TITLE_THIS_ROLE_OR_TRANSACTION_DOES_NOT_EXISTS";
    	public static String ROLE_ERROR_TITLE_THIS_ROLE_IS_ASSIGNED_BY_USER = "ROLE_ERROR_TITLE_THIS_ROLE_IS_ASSIGNED_BY_USER";
    
    	public static String XXXX_ERROR_FORM_ERROR_IN_XXXX_REMARK_CHARACTER = "XXXX_ERROR_FORM_ERROR_IN_XXXX_REMARK_CHARACTER";
    	public static String XXXX_ERROR_TITLE_XXXX_LIST_DOES_NOT_EXIST = "XXXX_ERROR_TITLE_XXXX_LIST_DOES_NOT_EXIST";
    	public static String XXXX_ERROR_TITLE_THIS_XXXX_DOES_NOT_EXIST = "XXXX_ERROR_TITLE_THIS_XXXX_DOES_NOT_EXIST";
    	public static String XXXX_ERROR_TITLE_THIS_XXXX_ALREADY_EXISTS = "XXXX_ERROR_TITLE_THIS_XXXX_ALREADY_EXISTS;";
    
    	public static String YYYY_ERROR_FORM_ERROR_IN_YYYY_REMARK_CHARACTER = "YYYY_ERROR_FORM_ERROR_IN_YYYY_REMARK_CHARACTER";
    	public static String YYYY_ERROR_TITLE_YYYY_LIST_DOES_NOT_EXIST = "YYYY_ERROR_TITLE_YYYY_LIST_DOES_NOT_EXIST";
    	public static String YYYY_ERROR_TITLE_THIS_YYYY_DOES_NOT_EXIST = "YYYY_ERROR_TITLE_THIS_YYYY_DOES_NOT_EXIST";
    	public static String YYYY_ERROR_TITLE_THIS_YYYY_ALREADY_EXISTS = "YYYY_ERROR_TITLE_THIS_YYYY_ALREADY_EXISTS";
    
    	public static String ZZZZ_ERROR_FORM_ERROR_IN_ZZZZ_REMARK_CHARACTER = "ZZZZ_ERROR_FORM_ERROR_IN_ZZZZ_REMARK_CHARACTER";
    	public static String ZZZZ_ERROR_TITLE_ZZZZ_LIST_DOES_NOT_EXIST = "ZZZZ_ERROR_TITLE_ZZZZ_LIST_DOES_NOT_EXIST";
    	public static String ZZZZ_ERROR_TITLE_THIS_ZZZZ_DOES_NOT_EXIST = "ZZZZ_ERROR_TITLE_THIS_ZZZZ_DOES_NOT_EXIST";
    	public static String ZZZZ_ERROR_TITLE_THIS_ZZZZ_ALREADY_EXISTS = "ZZZZ_ERROR_TITLE_THIS_ZZZZ_ALREADY_EXISTS";
    
    	private static ResourceBundleMessageSource messageSource;
    
    	/*
    	 * Set message file Locale.
    	 */
    	public static void setLocale() {
    
    		Locale locale = LocaleContextHolder.getLocale();
    		String lang = locale.getLanguage();
    		String country = locale.getCountry();
    
    		if (lang.equals("ja")) {
    			locale = new Locale("ja");
    		} else if (lang.equals("zh") && country.equals("CN")) {
    			locale = new Locale("zh", "CN");
    		} else if (
    			(lang.equals("en") && country.equals("US")) ||
    			(lang.equals("en") && country.equals("UK")) ||
    			(lang.equals("zh") && country.equals("TW"))) {
    			locale = new Locale("en");
    		} else {
    			locale = new Locale("en");
    		}
    		LocaleContextHolder.setLocale(locale);
    		messageSource = new ResourceBundleMessageSource();
    		messageSource.setBasename("messages");
    		messageSource.setDefaultEncoding("UTF-8");
    		return;
    	}
    
    	/*
    	 * Get message from message file. 
    	 */
    	public static String getMessage(String id) {
    		String message = "";
    		try {
    			message = messageSource.getMessage(id, null, LocaleContextHolder.getLocale());
    		} catch (Exception ex) {
    			message = ex.getMessage();
    		}
    		return message;
    	}
    }
    ```

# 参考

https://qiita.com/suema0331/items/a76817e28de9baaac2d8