メッセージ¶
項目名やヒントなどの文字要素はメッセージデータを基に変換されて表示されます。 ですからメッセージデータを入れ替えることで動的に表示言語を切り替えることができます。
メッセージのデータ構造¶
メッセージはJSON形式で指定します。
セクション名 | サブセクション名 | ||
---|---|---|---|
message | |||
common | 該当項目が無い場合に参照される | ||
button | ボタン名の変換時に参照される | ||
page-id | page.pageIDで指定 | ||
validation | ng2-jsformが使用するバリデーション用メッセージ |
メッセージは専用のパイプ(mk-ng2-i18n)で変換表示されます。
mk-ng2-i18nの使用例:
<div>
{{ 変換対象 | mk_ng2_i18n: 'セクション名' }}
</div>
mk_ng2_i18nは、指定されたセクションのメッセージデータをチェックし該当の項目があれば、そのデータに変換して表示します。 見つからない場合は、[common]セクションをチェックします。[common]セクションにもない場合は、変換せずにそのまま表示します。
なお、ボタン名は、[button]セクションと[common]セクションから変換処理されます。
[page-id]は、ng2-jsformの入力データで指定するページ識別子ことです。 通常アプリケーションには複数のページが存在しますので、各ページ毎に定義できるようになっています。 必ず、ページ毎にユニークな識別子を設定してください。
メッセージサンプル(日本語):
{
"message": {
"common": {
"name": "氏名",
"email": "Eメール",
},
"button": {
"regist": "登録",
},
"userRegist": {
"name-hint": "名前を入力してください。",
"email-description": "電子メールは登録時のみ使用されます。"
}
},
"validation": {
"required": "{0}は必須です。",
"minlength": "{0}は{1}文字以上で指定してください。",
"maxlength": "{0}は{1}文字以内で指定してください。",
"pattern": "{0}は{1}形式で指定してください。",
"multipleof": "{0}は{1}の倍数の数値を指定してください。",
"max": "{0}は{1}以下の数値を指定してください。",
"exclusivemaximum": "{0}は{1}より小さな数値を指定してください。",
"min": "{0}は{1}以上の数値を指定してください。",
"exclusiveminimum": "{0}は{1}より大きな数値を指定してください。"
}
}
メッセージサンプル(英語):
{
"message": {
"common": {
"name": "Name",
"email": "Email",
},
"button": {
"regist": "Registration",
},
"userRegist": {
"name-hint": "Please enter your name.",
"email-description": "E-mail is used only when registering."
}
},
"validation": {
"required": "{0} is required",
"minlength": "Please specify {0} with more than {1} characters.",
"maxlength": "Please specify {0} with {1} characters or less.",
"pattern": "Please specify {0} in the form of {1}."",
"multipleof": "{0} must be a multiple of {1}.",
"max": "Please specify a number less than {1} for {0}.",
"exclusivemaximum": "Please specify a number smaller than {1} for {0}.",
"min": "{0} must be a number greater than or equal to {1}.",
"exclusiveminimum": "Please specify a number larger than {1} for {0}."
}
}