2023年10月23日月曜日

United Codesが提供しているプラグインEnhanced Grid Proを日本語化する

 ベルギーのUnited Codesが提供しているOracle APEXの有償プラグインEnhanced Grid Proを日本語化する手順を紹介します。Enhanced Grid ProはUnited Codesが開発しているOracle APEXのプラグインPlug-ins Proに含まれています。

日本語化した結果は、Enhanced Grid Proのサンプル・アプリケーションのBasic Exampleのページで確認します。


Enhanced Grid Proは共有コンポーネントプラグインUnited Codes - Enhanced Grid Proとしてインストールされています。


プラグインを開き、United Codesが開発したJavaScriptのファイルを確認します。ucGrid.min.jsを開きます。


JavaScriptのファイルを確認すると、メッセージはUC_GRID.TOOLTIP_NOT_POSSIBLEといった形で、Oracle APEXのテキスト・メッセージで定義されていることが確認できます。


以下のスクリプトを実行し、APEXアプリケーションのグローバリゼーションテキスト・メッセージを作成します。先頭のC_APP_IDは、テキスト・メッセージを作成するアプリケーションのアプリケーションIDに変更します。



グローバリゼーションテキスト・メッセージを開き、日本語のテキスト・メッセージが作成されていることを確認します。


アプリケーション定義のプライマリ言語日本語(ja)に変更します。


これまでの作業でボタンやコンテキスト・メニューが日本語化されています。


コンテキスト・メニューの一部およびフィルタの文字列については、Enhanced Grid Proが採用しているWebコンポーネントHandsontableを日本語化する必要があります。

Handsontableのローカライズの方法について、以下を参考にしました。


Enhanced Grid Proの日本語化では、この中の3. Universal Module Definition (UMD)の手法が使えそうです。

DemoEditを開いて、手法について確認します。jsFiddleが起動します。


HTMLの記述はそのままでも良いのですが、日本語に限定するため、all.jsをja-JP.jsに変更します。

JavaScriptについては、言語に関する記述(deDEが現れる行)をコメントアウトします。それに加えて、Handsontableを生成する(new)するときのlanguageの指定をde-DEからja-JPに変更します。

上記の変更を行ったあと、左上でのRunをクリックします。

コンテキスト・メニューが日本語で表示されることが確認できます。


以上の操作で確認できた実装を、United CodesのEnhanced Grid Proに適用します。

プラグインに含まれていてるHandsontableが実装されているファイルhandsontable_12_3_0.full.min.jsより、バージョンが12.3.0であることが分かります。


HandsontableのソースコードはGitHub上でホストされています。GitHubからHandsontable 12.3.0の各国語対応を含んだ完全なコードをダウンロードします。


12.3.0AssetsからSource codeをダウンロードします。


ダウンロードされたファイルhandsontable-12.3.0.zipを展開します。この中にja_JP.jsというファイルが含まれます。

handsontable/dist/languages/ja-JP.js

プラグインUnited Codes - Enhanced Grid Proファイルファイルの作成をクリックし、このファイルja_JP.jsをプラグインを構成するファイルとして追加します。


ファイルをドラッグ・アンド・ドロップをクリックして、ja-JP.jsを選択します。

作成をクリックします。


ファイルのアップロードが行われ、ja-JP.jsがスクリプト・エディタで開かれます。スクリプト自体の変更は行わず、変更の保存をクリックします。ja-JP.jsがミニファイされ、ja-JP.min.jsが作成されます。

ファイルが保存され、縮小されました、というメッセージを確認し、ブレッドクラムのUnited Codes - Enhanced Grid Proをクリックして、プラグインの設定画面に戻ります。


ファイルja-JP.min.jsが作成されていることを確認し、ロードするファイルURLのセクションに移ります。


ロードするファイルURLのJavaScriptに、以下のファイルを追加します。handsontable_12_3_0.full.min.jsより後に配置します。

#PLUGIN_FILES#ja-JP.min.js


Enhanced Grid Proをタイプとして選択しているリージョンの属性初期化JavaScriptファンクションに以下のコードを記述し、languageja-JPに指定します。
function (pOptions) {
    pOptions.language = 'ja-JP';
    return pOptions;
}


本来であれば、これでHandsontableのlanguageがja-JPとなり、jsFiddleで確認したようにコンテキスト・メニューが日本語化されるはずですが、現行のバージョンではそうなりません。

ワークアラウンドとして、ucGrid.min.jsに含まれるlanguage指定を直接更新します。

プラグインのファイルに含まれるucGrid.min.jsを開きます。


以下のように続くコードを見つけます。

this.hot=new Handsontable(document.getElementById(this.regionID),{language:"en-US",licenseKey:

"en-US"の部分を、初期化JavaScriptファンクションで設定するlanguageを参照するように変更します。

this.hot=new Handsontable(document.getElementById(this.regionID),{language:o.options.language,licenseKey:


以上の変更により、Handsontableが提供するフィルタが日本語で表示されます。


まだ、コンテキスト・メニューの一部が日本語化されていません。


Handsontableのローカライズは、本体の機能追加の後に、各国の有志によってローカライズのためのリソースが提供されているようです。Copy with headersの機能の日本語訳は12.3.1で追加されています。


12.3.1のSource codeをダウンロードし、Enhanced Grid Proに追加したja-JP.jsを12.3.1のものに入れ替えます。

アップロード済みのja-JP.jsを一旦削除し、12.3.1のja-JP.jsをアップロードします。


以上で、コンテキスト・メニューのCopy with headersなども日本語表記になります。


以上が、United Codesが提供しているEnhanced Grid Proの日本語手順の紹介になります。