Wagby の和暦処理では標準で「明治」「大正」「昭和」「平成」「令和」の 5 つの元号情報が設定されています。開発者はこれに加え、新たな年号を追加することができます。また、1年を"元年"と表示する設定を用意しています。

R8.2.3で、新元号「令和」を追加しました。R8.2.3 以降の Wagby をご利用の場合、このページに記載している内容を行う必要はありません。このページではそれより前のバージョンのWagbyをご利用の場合、手動で新元号を追加する方法を説明します。

出力制御 > フォーマット

  1. wagbydesigner/bin/webpage/WEB-INF/src フォルダにある TranslateJpEra.properties.UTF8 ファイルをテキストエディタで開きます。
  2. 前の元号を、番号を追加してコピーします。平成の場合は erainfo.3 に記載しているため、元号を増やす場合、この行をコピーして erainfo.4 とします。「令和」を追加した場合は次のようになります。
    erainfo.4.startdate=2019-5-1
    erainfo.4.enddate=9999-12-31
    erainfo.4.fullname=令和
    erainfo.4.shortname=令
    erainfo.4.shortchar1=R
    erainfo.4.shortchar2=r
    erainfo.4.shortchar3=R
    erainfo.4.shortchar4=r
    
    以前の元号の enddate を、その元号が終了した日にします。
    新たな元号の startdate も同じ値とし、enddateは9999-12-31とします。
    新たな元号の fullname,shortname,shortcharXX に対応する値を入力します。
  3. wagbydesigner/bin/webpage/WEB-INF/src/TranslateJpEra.bat ファイルを実行します。 (Windows 以外の OS では拡張子 ".sh" を使います。)
  4. 同フォルダに TranslateJpEra.properties ファイルが再作成されます。(拡張子に .UTF8 が含まれないファイルです。)
  5. 変更後、最初にフルビルドを行います。このタイミングで新しい TranslateJpEra.properties が使われます。(次回以降は差分ビルドとします。)
5. でフルビルドを行わず、既存アプリケーションのファイル wagbyapp/webapps/<プロジェクトID>/WEB-INF/classes/TranslateJpEra.properties に 4. で追加された新元号に関する行を手動で追記することでも対応できます。ただし wagbyapp(Tomcat)の再起動は必要です。

トラブルシューティング

うまくいかない場合、次の点をご確認ください。

  • wagbydesigner/bin/webpage/WEB-INF/src/TranslateJpEra.properties は上記 3. のバッチファイルを実行した日付に変わっているか。
  • フルビルド後、wagbyapp/webapps/$(プロジェクト識別子)/WEB-INF/classes/TranslateJpEra.properties は上と同じファイルとなっているか。

入力制御 > 日付・時刻 > オプション表示(日付)

wagbydesigner/bin/webpage/system フォルダの common.js ファイルを編集します。
変数wareki_date_a,wareki_regexp_a,wareki_fullname_a,wareki_shortcharpattern_aに新たな元号の値を追加してください。

[2019.4.1追記] 新元号 "令和" に対応する common.js の修正箇所は以下のとおりです。

var wareki_date_a = new Array(
     new Date(1868,  9-1,  8),
     new Date(1912,  7-1, 30),
     new Date(1926, 12-1, 25),
     new Date(1989,  1-1,  8),
     new Date(2019,  5-1,  1)
);
var wareki_regexp_a = new Array(
     new RegExp("明[治]?", "g"),
     new RegExp("大[正]?", "g"),
     new RegExp("昭[和]?", "g"),
     new RegExp("平[成]?", "g"),
     new RegExp("令[和]?", "g")
);
var wareki_fullname_a = new Array("明治", "大正", "昭和", "平成", "令和");
var wareki_shortcharpattern_a = new Array("Mm", "Tt", "Ss", "Hh", "Rr");
...
var warekiFullnameStr = "明治|大正|昭和|平成|令和";
var warekiShortnameRegExpStr = "(?:[MmTtSsHhRr])";

ヘルプメッセージ

Designerで "環境 > メッセージ > ヘルプ > 日付入力" のツールチップメッセージに "令和" を含めます。

これまでのメッセージは次の通りでした。

yyyy-MM-dd 形式で入力して下さい。(yyyy は西暦、MM は月、dd は日です) 明治、大正、昭和、平成(漢字二文字)yy年MM月dd日 形式で入力して下さい。(例:平成1年1月1日) M、T、S、H(アルファベット一文字)yy/MM/dd/ 形式で入力して下さい。(例:H1/1/1) 

変更例を示します。

yyyy-MM-dd 形式で入力して下さい。(yyyy は西暦、MM は月、dd は日です) 明治、大正、昭和、平成、令和(漢字二文字)yy年MM月dd日 形式で入力して下さい。(例:令和1年1月1日) M、T、S、H、R(アルファベット一文字)yy/MM/dd/ 形式で入力して下さい。(例:R1/1/1) 

仕様・制約

"ggge年" については、月日の情報を無視(2019年1月1日となる)して年表記としているため、2019年5月1日で登録した日付は平成31年で表示されます。

ビルドを行う

wagbydesigner/bin/webpage/system/common.js を編集後に「フルビルド」を行うと、この変更が反映されたアプリケーションをビルドすることができます。フルビルドが必要なのは初回のみです。

ビルドを行わず、既存アプリケーションを直接、変更する

ここで編集した common.js を wagbyapp/webapps/<プロジェクトID>/system/common.js に上書きします。

さらにブラウザのキャッシュが更新されるように wagbyapp/webapps/<プロジェクトID>/WEB-INF/classes/buildlog.properties の build.timestamp の値を変更します。作業日の日付時刻とするとよいでしょう。

build.timestamp=2019-03-28 13\:53\:54

Wagbyのバージョンアップによる対応

上のファイルの修正は、元号が変わったあとに出荷された R7.12.13/R8.2.3 以降のWagbyに含まれています。バージョンアップ版をご利用いただける場合は、上記修正作業は不要です。

手動対応が必要な設定

出力制御 > フォーマット

TranslateJpEra.properties.UTF8 に置き換え文字列ルールを記述しています。標準は次のとおりです。

replacePattern.0=明治1年;明治元年
replacePattern.1=大正1年;大正元年
replacePattern.2=昭和1年;昭和元年
replacePattern.3=平成1年;平成元年
replacePattern.4=令和1年;令和元年

セミコロンを区切り文字とし、左の文字列を右の文字列に置換します。

カスタマイズ

(例1) 元年表記を行わない場合は、上記4行を削除してください。

(例2) 次の行を加えると、"令1年" が "令元年" と表示されるようになります。

replacePatetrn.5=令1年;令元年

TranslateJpEra.properties.UTF8 ファイルを修正したときは「元号を追加する」の手順に従って反映させてください。

入力制御 > 日付・時刻 > オプション表示(日付)

wagbydesigner/bin/webpage/system フォルダの common.js ファイルで制御してます。具体的には replaceFirstYearOfImperialEra 関数で行っています。

グローバル変数 isReplaceFirstYearOfImperialEra の値を false にすると、元年表示を行わないようになります。