2023年1月12日木曜日

XLIFFファイル翻訳支援アプリの作成(1) - 準備

 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 BuilderCreateからNew Applicationを実行し、アプリケーション作成ウィザードを起動します。

アプリケーションのName(名前)はXLIFF Translateとします。デフォルトで作成されているページHomeは削除し、対話モード・レポートのページXLIFF Files、対話グリッドのページTranslate、同じく対話グリッドのページMessagesを追加します。

アプリケーション自体は日本語で動作させるため、SettingsLanguageとして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 NameTranslateSQL Query(SQL問合せ)とAllow Editing(編集を許可)を選択します。必ずしも必要な作業ではありませんが、Set Iconをクリックしてページのアイコンを地球儀(fa-globe)に変更しています。


CWR_MESSAGESを編集する対話グリッドのページを追加します。一般的な編集可能な対話グリッドのページになります。

Page NameMessagesTable or ViewAllow Editingを選択し、Table or ViewとしてCWR_MESSAGESを選択します。


以上の設定を実施し、Create Application(アプリケーションの作成)を実行します。

アプリケーションが作成された後は、開発環境を日本語に切り替えます。



BLOB列の調整


表CWR_XLIFF_FILESに含まれるBLOB列、XLIFF_SOURCEXLIFF_RESULTが適切に扱われるように属性を調整します。

ページ番号XLIFF Filesの対話モード・レポートの列XLIFF_RESULTBLOB属性として以下を設定します。

MIMEタイプ列 - XLIFF_RESULT_MIMETYPE
ファイル名列 - XLIFF_RESULT_FILENAME
最終更新列 - XLIFF_RESULT_LASTUPD
文字セット列 - XLIFF_RESULT_CHARSET


同様に列XLIFF_SOURCEBLOB属性も設定します。

MIMEタイプ列 - XLIFF_SOURCE_MIMETYPE
ファイル名列 - XLIFF_SOURCE_FILENAME
最終更新列 - XLIFF_SOURCE_LASTUPD
文字セット列 - XLIFF_SOURCE_CHARSET


変更を保存し、ページ番号のフォームのページCwr Xliff Filesを開きます。

翻訳元となるXLIFFファイルを保存するページ・アイテムP2_XLIFF_SOURCEを選択し、設定に以下を指定します。

MIMEタイプ列 - XLIFF_SOURCE_MIMETYPE
ファイル名列 - XLIFF_SOURCE_FILENAME
文字セット列 - XLIFF_SOURCE_CHARSET
BLOB最終更新列 - XLIFF_SOURCE_LASTUPD


ページ・アイテムP2_SOURCE_LANGP2_TARGET_LANGおよび列XLIFF_RESULTに関するページ・アイテムはプログラムによって生成され、ユーザーによる入力の対象ではないため、構成ビルド・オプションCommented Out(コメント・アウト)します。

アプリケーション作成ウィザードを英語で実行しているため、ビルド・オプションが英語のCommented Outになっています。アプリケーション作成ウィザードを日本語で実行していると、コメント・アウトと表示されます。


以上で、翻訳対象とするXLIFFファイルをデータベースにアップロードする部分が実装できました。

次の記事で、実際の翻訳作業を行う画面を実装します。

続く