2022年7月25日月曜日

Oracle APEX 22.1にて翻訳済みアプリケーションを作成する

 Oracle APEX 22.1にて新たに提供されたセッション・オーバーライドの機能を確認するため、以前に作成した翻訳済みアプリケーション(こちらのワークショップ)をOracle APEX 22.1で作り直してみました。

以下にAPEXのバージョンアップに関連して、変更が必要だった手順を記載します。


ログイン・ページに言語セレクタを作成する


Oracle APEX 22.1のアプリケーション作成ウィザードは、ログイン・ページ(ページ番号9999)に言語セレクタを作成してくれないようです。言語セレクタを手作業で作成する必要がありました。

ログイン名、パスワードを入力するページ・アイテムを含むリージョン(今回の例ではリージョン世界食堂)のサブ・リージョン(Sub Region)となるリージョンを作成します。

識別タイトル言語セレクタタイプとしてPL/SQL動的コンテンツを選択します。ソースのPL/SQLコードとして以下を記述します。

APEX_LANG.EMIT_LANGUAGE_SELECTOR_LIST;

レイアウト親リージョン世界食堂位置Sub Regionsとします。外観テンプレートとしてBlank with Attributesを選択し、リージョンのタイトルや枠の表示を省略します。


フォーム付きレポートの作成手順の変更


Oracle APEX 22.1ではページ作成ウィザードが簡素化され、ページの作成が簡単になっています。日時データとタイムゾーンの扱いを確認するために、表WR_ORDERSを扱うレポートとフォームのページを作成していますが、この手順が変わります。

新しいページ作成ウィザードによる手順は、以下になります。

ページ作成ウィザードを起動し、コンポーネントクラシック・レポートを選択します。


ページ定義にて、名前注文一覧ページ・モードとして標準を選択します。ページ・モードはレポートのページに適用されます。フォーム・ページを含めるONにするとフォームのページも同時に作成されますが、フォーム・ページはつねにモーダル・ダイアログになります。

フォーム・ページを含めるONにし、フォーム・ページ名注文とします。

データ・ソース表/ビューの名前WR_ORDERSを指定します。

ナビゲーションブレッドクラムナビゲーションONにします。これらの設定はレポートのページに適用されます。フォーム・ページはつねにモーダル・ダイアログであるため、ブレッドクラムおよびナビゲーションは不要です。

以上の設定を行い、に進みます。


主キー列1として、ID(Number)を選択します。ページの作成を実行します。

クラシック・レポートのページ注文一覧がページ番号、フォームのページ注文がページ番号として作成されます。表WR_ORDERSの列MENU_IDには表WR_MENUSのIDを参照する、外部キー制約が定義されています。そのため、共有コンポーネントLOVとしてWR_MENUS.MENU_NAMEが、自動的に作成されます。

クラシック・レポートの列MENU_ID識別タイプとしてプレーン・テキスト(LOVに基づく)が選択され、LOVとして共有コンポーネントWR_MENUS.MENU_NAMEが指定されています。


フォームに含まれるページ・アイテムP3_MENU_IDも同様に、識別タイプとして選択リストが選択され、LOVとして共有コンポーネントWR_MENUS.MENU_NAMEが指定されています。


自動的に作成された共有コンポーネントのLOVWR_MENUS.MENU_NAMEは、外部キー制約の定義を元にしています。そのため、表WR_MENUSがデータ・ソースになっています。

翻訳済みのビューWR_MENUS_VLが定義済みなので、ソース表/ビューの名前WR_MENUS_VLに置き換えることにより、選択リストがそれぞれの言語に翻訳されます。



自動タイムゾーンをONにする場合は、アプリケーションの別名に日本語を含まない



Oracle APEX 22.1でも、この点は修正されていないようです。

アプリケーション定義グローバリゼーション自動タイムゾーンONにします。


このように設定した場合、アプリケーションの別名には日本語を含まないようにします。




翻訳済みアプリケーションのインポート後はパブリッシュする



翻訳済みのアプリケーションをインポートしただけでは、翻訳が有効にならないようです。アプリケーションのインポート直後は、言語セレクタが表示されません。


共有コンポーネントグローバリゼーションアプリケーション翻訳を開きます。Oracle APEX 22.1からは、翻訳済みのアプリケーションの数も表示されます。アプリケーション世界食堂はメインの言語が日本語で、翻訳として英語、中国語(簡体)、韓国語を含んでいるため、その数はになっています。


翻訳アプリケーションのパブリッシュを開きます。


翻訳済アプリケーションすべて選択し、パブリッシュを実行します。


パブリッシュを実行した後にアプリケーションを実行すると、サインインの画面で言語セレクタが表示されます。



今回作成したアプリケーションを以下に起きました。
https://github.com/ujnak/apexapps/blob/master/exports/world-diners.zip

このアプリケーションを、Oracle APEX 22.1の新機能セッション・オーバーライドの説明に使用する予定です。

以上になります。

Oracle APEXのアプリケーション作成の参考になれば幸いです。