サポート > リポジトリ > メッセージの変更・国際化 > リソースファイルの編集

標準のリソースファイルを編集する方法を説明します。画面のメッセージやエラーメッセージを変更することができます。

設計情報に含まれる「項目名」などの文字は、すべて「リソースファイル」に格納されています。代表的なリソースファイルを表に示します。

ファイル名説明
errormsgconv_ja.properties データベース固有のエラーメッセージを変換します。
errormsg_ja.properties Wagbyが内部で管理するエラーメッセージです。
jfcapp_ja.properties アプリケーション全体のメッセージです。
logcode_ja.properties system.logに出力するメッセージです。

これらのファイルは次のように管理されています。

アプリケーションメッセージ

wagbydesigner/bin/template フォルダに含まれている jfcapp_ja.properties.UTF8 というファイルです。拡張子からわかるように UTF-8 形式のテキストファイルとなっています。

このファイルを土台として、設計情報で用意した項目名がリソースに追加されます。これは wagbydesigner/webapps/wagbydesigner/WEB-INF/env/work/srcgen/webpage/WEB-INF/classes/jfcapp_ja.properties.UTF8 というファイルになります。

エラーメッセージ

wagbydesigner/bin/webpage/WEB-INF/src フォルダに含まれている errormsg_ja.properties.UTF8 というファイルです。拡張子からわかるように UTF-8 形式のテキストファイルとなっています。

最終的なリソースファイル

ビルドされた wagbyapp フォルダ内の WEB-INF/classes フォルダに用意されます。拡張子 UTF8 が除かれた、".properties" ファイルが最終形式です。上記の「テンプレート」に、アプリケーション固有の情報が加わったものとなっています。

ファイル名に "_ja" が付与されているものが日本語リソースです。"_en"など、その他のファイルは「国際化」のページで説明します。
これらのファイルは直接、テキストエディタで変更することはありません。次節以降に説明する方法で書き換えます。

リソースファイルはテキストファイルです。内部は key-value 形式になっています。

wagbydesigner/webapps/wagbydesigner/WEB-INF/env/work/srcgen/webpage/WEB-INF/classes/jfcapp_ja.properties.UTF8 ファイルの一部を抜粋します。

__jfc_common.logon.title=ログオン
__jfc_common.logon.userid=ユーザ名
__jfc_common.logon.password=パスワード
__jfc_common.logon.submit=ログオン
__jfc_common.logon.message={0} さんがログオンしています。
__jfc_common.logon.language=言語:
__jfc_common.logon.class.waku=frmLogon
__jfc_common.logon.class.logonbutton=btnLogon
__jfc_common.logon.display.mobile=表示:モバイル
__jfc_common.search.notfound=検索条件に合致したデータは見つかりませんでした。
__jfc_common.search.action=検索条件を入力してください。

ファイル内の 1 行は「キー=メッセージ」というペアで表現されます。キーの部分(「=」の左側)を変更することはできません。

メッセージ部では「プレースホルダ」を使うことができます。これは {0}, {1} という表記です。実際にはこの部分に適切な文字が設定されます。

特殊文字の扱い

リソースの値部分(メッセージ)は、画面に表示されます。そのため HTML の特殊文字に関するルールに準拠する必要があります。 具体的には「<」「>」「&」「"」といった特殊文字はそれぞれ「&lt;」「&gt;」「&amp;」「&quot;」と表記してください。

これらの表記は「文字実体参照」と呼ばれるものです。
  1. wagbyapp/webapps/wagby/WEB-INF/classes/jfcapp_ja.properties.UTF8 をテキストエディタで開きます。(Windowsに付属の「メモ帳」は使いません。TeraPad など別のテキストエディタをご用意ください。)
  2. リソースファイルの値部分(イコールの右側)を変更します。
    ...
    qa_report.title=タイトル
    ...
    
    リソースファイルのキー部分(上記では "qa_report.title" の部分)は変更してはいけません。
  3. 編集したファイルを customize/resources フォルダに保存します。これによって次回以降のビルド時に、今回編集したファイルが用いられるようになります。

この方法はファイルの置き換えになりますが、非推奨です。このあとの説明にある「差分ファイルの作成」までお読みください。

リソースファイルの置き換え方式とは別に、差分ファイルを作成する方法を提供しています。差分ファイルとして個別に管理した場合でも、ビルド時にマージ(結合)され、一つの .properties ファイルとしてまとめられます。

  1. jfcapp_ja.properties.UTF8 ファイルに対して、接頭語 "my" をつけたファイルである myjfcapp_ja.properties.UTF8 ファイルを新規に作成します。ファイルの中身は空です。このファイルを customize/resources フォルダに保存します。
  2. my ではじまるファイルを編集します。このとき、元々あったメッセージと同じ行を記述することで、置き換えることができます。例えば次の行を加えることで、もともと "ログオフ" だったメッセージを書き換えます。
    __jfc_common.globallink.logoff=ログオフ!
    
  3. ビルド時にマージ(結合)されます。
この "my" をつけたファイルの拡張は、すべてのリソースファイルに対応しています。カスタマイズしたい部分のみを管理することができます。

差分ファイル方式を推奨します

jfcapp_ja.properties.UTF8 は「システムが標準で提供するリソース」と「開発者が追加したモデルに関するリソース」が一つになっています。このファイルを直接、編集すると、Wagbyのバージョンアップ時にシステムが提供するリソースが追加・変更された場合、開発者が手動で修正する必要が生じます。

この手間を省略するため、myjfcapp_ja.properties.UTF8 ファイルを作成することを推奨します。開発者が追加したモデルに関するリソースを、このmyファイルに分離して管理します。

標準で提供される文言を変更する場合も、このmyファイルに記述するとよいです。myファイルに記述したリソースが、標準のリソースを上書きします。

myerrormsg_ja.properties.UTF8 を用意します。例えば model1 モデルの新規登録が成功した場合のメッセージを変更したい場合、次のように記述します。

model1.success.normal.termination.insert={0}データを登録しました!

{0}には、モデル名(日本語)が入ります。

このファイルを customize/resources フォルダに保存し、再ビルドしてください。(差分ビルドです。)

JavaScript のダイアログに表示される文言や共通ボタンなどの日本語表記は Wagby が同梱している Dojotoolkit ライブラリが管理しています。この部分の対応は次のようになります。

リソースファイルの場所

リソースファイルはこちらになります。日本語と英語が用意されています。

wagbyapp/webapps/<プロジェクトID>/nls/common.js
wagbyapp/webapps/<プロジェクトID>/nls/en/common.js

テキストエディタで内容を確認できます。次のような文言が規定されています。

  BUTTON_CLOSE: "閉じる",
  BUTTON_DELETE: "削除",
  BUTTON_CANCEL: "キャンセル",
  BUTTON_SAVE: "保存",
  BUTTON_OK: "OK",
  BUTTON_COPY: "コピー",
  BUTTON_DETAIL: "詳細",
  FORMAT_DATE_YOUBI: "曜日",
  ERROR_MSG_CODE: "コード",
  ERROR_MSG_HISSU_1: "「内容」は必須項目です。",
  ERROR_MSG_HISSU_2: "次のコード値に対応する「内容」に値を指定してください。",
  EXCEPTION_MSG_UNEXPECTED: "予期しない値です。",
  EXCEPTION_MSG_FORM_MISSING: "formが取得できませんでした",
  EXCEPTION_MSG_CANTGET_YEAR: "西暦を取得できません。",
  EXCEPTION_MSG_ILLEGAL_MONTH: "不正な月です。",
  EXCEPTION_MSG_ILLEGAL_DATE: "不正な日です。",
  EXCEPTION_MSG_ILLEGAL_MONTH_OR_DATE: "不正な月または日です。",
  EXCEPTION_MSG_ILLEGAL_MONTHDATE: "不正な月日です。",
  EXCEPTION_MSG_ILLEGAL_TIME_OR_MINUTE_OR_SECOND: "不正な時または分または秒です。",
  EXCEPTION_MSG_ILLEGAL_TIMEMINUTESECOND: "不正な時分秒です。",
  EXCEPTION_MSG_UNMATCHED: "日付に完全一致しないです。",
  EXCEPTION_MSG_CAMERA_FAILED: "カメラが起動できませんでした。",
  WARN_MSG_ZIPCODE_NOT_EXIST: "入力された郵便番号は存在しません。",
  WARN_MSG_SESSION_TIMEOUT: "暫く操作されなかったため自動ログオフされました。\n再ログオンしてください。",
  INFO_MSG_SELECT_BATCH_TARGET: "一括処理対象のデータを選択してください。",
  FLOW_PATTERN_NAME: "フローパターン名",
  NODE_NAME: "ノード名",
  DIAGRAM_TITLE: "フロー参加者",
  SEQUENCE_NODE_NAME: "順次",
  CONSULTATION_NODE_NAME: "合議",
  ERROR_MSG_NO_COMMA_FOR_NODE: "● ノード名にカンマ(,)は入力できません",
  ERROR_MSG_CONFIRM: "入力データに不備があります。以下のメッセージを確認してください。",
  ERROR_MSG_REQUIRE: "● 次の要素は必須項目となっています。",
  ERROR_MSG_SET_PARTICIPANT: "フロー参加者、フロー参加グループ名はいずれか一方を指定するようにしてください。",
  WARNING_KEEP_PASSWORD: "パスワードは入力されていないため、現行のパスワード情報がそのまま利用されます。",
  TIP_MSG_INPUT_DATE: "yyyy-MM-dd 形式で入力して下さい。(yyyy は西暦、MM は月、dd は日です)",
  CHECK_ALL: "全てチェック",
  UNCHECK_ALL: "全てクリア",
  CONFIRM_DELETE: "このデータを削除します。よろしいですか?",
  BUTTON_FILE_SINGLE: "ファイルを選択",
  BUTTON_FILE_MULTIPLE: "複数ファイルを選択",
  ERROR_MSG_SOME_FILES: "複数ファイルを指定できません",
  ERROR_SAVE_LATER: "ファイルのアップロード中です。アップロード後再度行ってください。",
  ERROR_CHECK_FILEMINSIZE: "以下のサイズ以上のファイルである必要があります。",
  ERROR_CHECK_FILEMAXSIZE: "以下のサイズ以下のファイルである必要があります。",
  LABEL_CALENDAR_DIALOG_MODELNAME: "モデル",
  LABEL_CALENDAR_DIALOG_TITLE: "タイトル",
  LABEL_CALENDAR_DIALOG_STARTDATETIME: "開始日時",
  LABEL_CALENDAR_DIALOG_ENDDATETIME: "終了日時",
  LABEL_CALENDAR_DIALOG_ALLDAYFLAG: "終日",
  LABEL_CALENDAR_DIALOG_STAFF: "担当者",
  LABEL_CALENDAR_DIALOG_PLACE: "場所",
  LABEL_CALENDAR_DIALOG_URL: "URL",
  LABEL_CALENDAR_DIALOG_MEMO: "備考",
  LABEL_CALENDAR_DIALOG_BTN_SHOW: "詳細画面表示",
  LABEL_CALENDAR_DIALOG_BTN_UPDATE: "更新画面表示",
  LABEL_CALENDAR_DIALOG_BTN_INSERT: "新規登録画面表示",
  LABEL_CALENDAR_NEW_REGISTRATION: "新規登録",
  ERROR_MSG_DELETE_CALENDAR_ITEM: "カレンダデータの削除に失敗しました",
  LABEL_SHOWLIST_CHOICE: "選択",
  LABEL_UPDATELIST_DELETE: "削除",
  LABEL_UPDATELIST_STATUS: "ステータス",
  LABEL_UPDATELIST_RESULTDIALOG_OK: "一覧表示画面へ戻る",
  LABEL_UPDATELIST_RESULTDIALOG_CANCEL: "一覧更新を継続する",
  LABEL_UPDATELIST_NEW_BUTTON: "新規",
  LABEL_UPDATELIST_COPY_BUTTON: "コピー",
  LABEL_UPDATELIST_CLEAR_BUTTON: "クリア",
  LABEL_UPDATELIST_SEARCH_BUTTON: "検索...",
  INFO_MSG_UPDATELIST_NEW: "新規",
  INFO_MSG_UPDATELIST_COPY: "コピー",
  INFO_MSG_UPDATELIST_UPDATE: "編集有",
  ERROR_MSG_UPDATELIST_LOCKERROR: "ロック失敗",
  ERROR_MSG_UPDATELIST_ERROR: "エラー",
  CONFIRM_MSG_UPDATELIST_SAVE: "入力エラーデータは無視して保存します。<br>よろしいですか?",
  ERROR_MSG_GET_GRID_SETTINGS: "グリッド設定取得時にエラーが発生しました",
  ERROR_MSG_SET_GRID_SETTINGS: "グリッド設定保存時にエラーが発生しました",
  INFO_MSG_SAVE_GRID_SETTINGS_SUCCESS: "グリッド設定が保存されました",
  INFO_MSG_DELETE_GRID_SETTINGS_SUCCESS: "グリッド設定が削除されました",
  LABEL_CLEAR_GRID_SETTING: "グリッド設定をクリア",
  LABEL_BTN_SAVE_GRID_SETTING: "保存",
  LABEL_BTN_DELETE_GRID_SETTING: "削除",
  LABEL_TOTAL_DISTANCE: "合計距離",
  LABEL_SQUARE_METER: "平方メートル",
  LABEL_SQUARE_KILOMETER: "平方キロメートル",
  LABEL_TOTAL_AREA: "総面積",
  TITLE_SCRIPT_EDITOR: "スクリプトエディタ",
  CONFIRM_MSG_SCRIPT_EDITOR: "変更を破棄してスクリプトエディタを閉じますか?",
  LABEL_JFCJOBSCHEDULE_DIALOG_CHKANYTIME: "任意の時間を指定(全範囲を許容)",
  LABEL_JFCJOBSCHEDULE_DIALOG_TIMETYPESPECIFIC: "特定のタイミング",
  LABEL_JFCJOBSCHEDULE_DIALOG_CHKONLYWEEKDAYS: "平日のみ(土日を除く)",
  LABEL_JFCJOBSCHEDULE_DIALOG_CHKUSEWEEKNUMBER: "週の指定を行う",
  LABEL_JFCJOBSCHEDULE_DIALOG_WEEKNUMBER_PREFIX: "第",
  LABEL_JFCJOBSCHEDULE_DIALOG_WEEKNUMBER_SUFFIX: "週",
  LABEL_JFCJOBSCHEDULE_DIALOG_TIMETYPEINTERVAL: "インターバル",
  LABEL_JFCJOBSCHEDULE_DIALOG_TIMETYPE_DURATION: "期間(範囲)指定",
  LABEL_JFCJOBSCHEDULE_DIALOG_UNIT_SECOND: "秒",
  LABEL_JFCJOBSCHEDULE_DIALOG_UNIT_MINUTE: "分",
  LABEL_JFCJOBSCHEDULE_DIALOG_UNIT_HOUR: "時",
  LABEL_JFCJOBSCHEDULE_DIALOG_UNIT_DAY: "日",
  LABEL_JFCJOBSCHEDULE_DIALOG_UNIT_MONTH: "月",
  LABEL_JFCJOBSCHEDULE_DIALOG_UNIT_DOW: "曜日",
  LABEL_JFCJOBSCHEDULE_DIALOG_UNIT_YEAR: "年",
  LABEL_JFCJOBSCHEDULE_DIALOG_TITLE_HOUR: "時刻(時)",
  LABEL_JFCJOBSCHEDULE_DIALOG_INTERVAL_1: "から",
  LABEL_JFCJOBSCHEDULE_DIALOG_INTERVAL_2: "おき",
  LABEL_JFCJOBSCHEDULE_DIALOG_DURATION_1: " 〜 ",
  LABEL_JFCJOBSCHEDULE_DIALOG_OPT_LAST: "最終",
  LABEL_JFCJOBSCHEDULE_DIALOG_DOW_1: "日",
  LABEL_JFCJOBSCHEDULE_DIALOG_DOW_2: "月",
  LABEL_JFCJOBSCHEDULE_DIALOG_DOW_3: "火",
  LABEL_JFCJOBSCHEDULE_DIALOG_DOW_4: "水",
  LABEL_JFCJOBSCHEDULE_DIALOG_DOW_5: "木",
  LABEL_JFCJOBSCHEDULE_DIALOG_DOW_6: "金",
  LABEL_JFCJOBSCHEDULE_DIALOG_DOW_7: "土",
  LABEL_JFCGROUPNODE_UNSETGROUP: "未設定グループ",
  LABEL_JFCGROUPNODE_GROUP_HIERARCHY_TAB: "グループ階層図",
  LABEL_JFCGROUPNODE_SEARCH_TAB: "検索",
  CONFIRM_MSG_SAVE_GROUP_HIERARCHY: "グループ階層を保存しますか?",

リアルタイム入力チェックで表示されるエラーメッセージ「入力した値は無効です。」を変更する方法を説明します。

このメッセージは dojo-release-1.xx.yy/dijit/form/nls/ja/validate.js というファイルに次の内容で用意されています。

xx および yy の部分は Wagby が同梱している Dojotoolkit フレームワークのバージョン番号が入ります。適切に読み替えてください。
"ja"は日本語を表現します。他国語の場合、この部分は適切なロケール表記に変える必要があります。ただし英語だけは基本ロケールなのでフォルダで分けられておらず、dojo-release-1.xx.yy/dijit/form/nls/validate.js となります。ロケール表記の詳細は国際化の説明をお読みください。
define(
"dijit/form/nls/ja/validate", ({
      invalidMessage: "入力した値は無効です。",
      missingMessage: "この値は必須です。",
      rangeMessage: "この値は範囲外です。"
})
);

上記ファイルを直接修正し、customize/webapp/dojo-release-1.xx.yy/dijit/form/nls/ja/validate.js として保存し、ビルドしてください。

ビルド後にブラウザのキャッシュをクリアしてください。