Oracle APEXによるアプリケーション作成の利点として、多言語への対応が容易であることが挙げられます。以前にOracle APEXのアプリケーションの翻訳手順を紹介しているのですが、その記事を更新するにあたって、APEXが生成するXLIFFファイルの翻訳を支援するアプリケーションを作成してみました。
作成するアプリケーションは以下のように動作します。それぞれの文字列を翻訳するにあたって、DeepLによる翻訳APIを呼び出しています。また、あらかじめデータベースに翻訳結果が用意されていれば、一括で翻訳することも可能です。
テストのために作成したXLIFFファイルは以下になります。このファイルをアプリケーションにアップロードしています。
翻訳されたXLIFFファイルは以下になります。
最初に雛形となるAPEXアプリケーションの作成から始めます。
表の作成
クイックSQLの以下のモデルより、翻訳前と翻訳後のXLIFFファイルを保存する表CWR_XLIFF_FILESおよび、翻訳に使用する文字列を保存する表CWR_MESSAGESを作成します。
# prefix: cwr
xliff_files
name vc255 /nn
source_lang vc50
target_lang vc50
xliff_result file
xliff_source file
messages
name vc255
message_language vc50
message_text vc4000
SQLワークショップのユーティリティよりクイックSQLを実行します。左ペインに上記のモデルを記述し、SQLの生成、SQLスクリプトの保存、レビューおよび実行を順次実行します。
いくつか確認の画面が開くので、それぞれ実行、即時実行を実施します。アプリケーションの作成は行いません。
表CWR_XLIFF_FILESおよびCWR_MESSAGESが作成されます。
初期アプリケーションの作成
APEXアプリケーションを作成します。
今回作成するアプリケーションのボタンなどのラベルは、英語で記述することにします。アプリケーション作成ウィザードによって設定されるラベルは、アプリケーション・ビルダーの言語で生成されます。そのため、アプリケーション作成ウィザードを実行する間だけ、環境を英語に切り替えます。
アプリケーション・ビルダーの先頭ページを開き、言語をEnglishに切り替えます。
App BuilderのCreateからNew Applicationを実行し、アプリケーション作成ウィザードを起動します。
アプリケーションのName(名前)はXLIFF Translateとします。デフォルトで作成されているページHomeは削除し、対話モード・レポートのページXLIFF Files、対話グリッドのページTranslate、同じく対話グリッドのページMessagesを追加します。
アプリケーション自体は日本語で動作させるため、SettingsのLanguageとしてJapanese(ja)を選択します。
ページXLIFF Filesを追加するために、Add Page(ページの追加)をクリックしInteractive Report(対話モード・レポート)を選択します。レポートとフォームで構成される一般的な表の操作画面を、表CWR_XLIFF_FILESに対して作成します。
Page Name(ページ名)はXLIFF Filesとします。Table or View(表またはビュー)、Interactive Report(対話モード・レポート)を選択し、Table or View(表またはビュー)としてCWR_XLIFF_FILESを選択します。Include Form(フォームを含める)にチェックを入れます。
Advanced(詳細)を開き、Set as Home Page(ホームページとして設定)にチェックが入っていることを確認します。
Add Page(ページの追加)をクリックします。
ページ
Translateは以下のSELECT文をソースとして
Interactive Grid(対話グリッド)のページとして作成します。翻訳元と翻訳済みの文字列は、APEXコレクションに保存して操作します。
Page NameはTranslate、SQL Query(SQL問合せ)とAllow Editing(編集を許可)を選択します。必ずしも必要な作業ではありませんが、Set Iconをクリックしてページのアイコンを地球儀(fa-globe)に変更しています。
表CWR_MESSAGESを編集する対話グリッドのページを追加します。一般的な編集可能な対話グリッドのページになります。
Page NameはMessages、Table or View、Allow Editingを選択し、Table or ViewとしてCWR_MESSAGESを選択します。
以上の設定を実施し、Create Application(アプリケーションの作成)を実行します。
アプリケーションが作成された後は、開発環境を日本語に切り替えます。
BLOB列の調整
表CWR_XLIFF_FILESに含まれるBLOB列、XLIFF_SOURCEとXLIFF_RESULTが適切に扱われるように属性を調整します。
ページ番号1のXLIFF Filesの対話モード・レポートの列XLIFF_RESULTのBLOB属性として以下を設定します。
MIMEタイプ列 - XLIFF_RESULT_MIMETYPEファイル名列 - XLIFF_RESULT_FILENAME
最終更新列 - XLIFF_RESULT_LASTUPD
文字セット列 - XLIFF_RESULT_CHARSET
同様に列XLIFF_SOURCEのBLOB属性も設定します。
MIMEタイプ列 - XLIFF_SOURCE_MIMETYPE
ファイル名列 - XLIFF_SOURCE_FILENAME
最終更新列 - XLIFF_SOURCE_LASTUPD
文字セット列 - XLIFF_SOURCE_CHARSET
変更を保存し、ページ番号2のフォームのページCwr Xliff Filesを開きます。
翻訳元となるXLIFFファイルを保存するページ・アイテムP2_XLIFF_SOURCEを選択し、設定に以下を指定します。
MIMEタイプ列 - XLIFF_SOURCE_MIMETYPE
ファイル名列 - XLIFF_SOURCE_FILENAME
文字セット列 - XLIFF_SOURCE_CHARSET
BLOB最終更新列 - XLIFF_SOURCE_LASTUPD
ページ・アイテムP2_SOURCE_LANG、P2_TARGET_LANGおよび列XLIFF_RESULTに関するページ・アイテムはプログラムによって生成され、ユーザーによる入力の対象ではないため、構成のビルド・オプションでCommented Out(コメント・アウト)します。
アプリケーション作成ウィザードを英語で実行しているため、ビルド・オプションが英語のCommented Outになっています。アプリケーション作成ウィザードを日本語で実行していると、コメント・アウトと表示されます。
以上で、翻訳対象とするXLIFFファイルをデータベースにアップロードする部分が実装できました。
次の記事で、実際の翻訳作業を行う画面を実装します。
続く