Oracle APEXの標準コンポーネントが表示している文字列は、コンポーネントとしてはキーとなる名前を持っているだけで、実際に表示している文字列はWWV_FLOW_MESSAGES$から取り出されています。XLIFFファイルの翻訳アプリケーションを作成していると、以下のレポートを表示することができます。
例えば、対話グリッドのメッセージの名前は概ねAPEX.IG.から始まります。対話モード・レポートはAPEXIRから始まります。
これらのメッセージを、共有コンポーネントのグローバリゼーションに含まれるテキスト・メッセージとして設定すると、アプリケーションに設定した文字列が、システムのデフォルトより優先されます。
実際に置き換えてみて確認してみます。以下の操作は、サンプル・データセットのEMP/DEPTがインストール済みであることを前提としています。しかし、例として使用する表EMPは、異なる表を使っても同様の操作は可能です。
最初にアプリケーション作成ウィザードを起動し、空のアプリケーションを作成します。アプリケーションの名前を翻訳の置き換えとします。言語(アプリケーションのプライマリ言語)が日本語(ja)であることを確認します。アプリケーションの作成を実行します。
アプリケーションが作成されたら、ホーム・ページをページ・デザイナで開き、対話グリッドのリージョンの作成を実行します。識別のタイトルは対話グリットとし、タイプとして対話グリッドを選択します。ソースの表名にEMP(EMP以外を選択してもかまいません)を選択します。
対話モード・レポートのリージョンも追加します。リージョンの作成を実行し、識別のタイトルを対話モード・レポートとします。タイプに対話モード・レポートを選択し、ソースの表名としてEMPを選択します。
アプリケーションを実行すると、以下の画面が表示されます。今回は、これらのレポートで表示されているアクションという文字列をレポートの操作に変更してみます。
ある程度Oracle APEXの利用経験がある人たちを想定しているのであれば、標準の文字列を変更すると使い方がわからなくなる可能性はあります。逆に本当のエンドユーザーでAPEXを使った経験はなく、今後もAPEXのアプリケーションを意識して使うことはない人たちを対象としているのであれば、翻訳文字列を置き換えるのは効果があるかもしれません。
アプリケーションが想定している利用者を鑑みて判断するのがよいと思います。
対話グリッドに含まれる文字列は、名前が概ねAPEX.IG.から始まります。XIFF翻訳ファイルのアプリを使って、名前を見つけてみます。
フィルタの条件として、以下を指定します。
NameはAPEX.IG.で始まります。
Message Languageはjaと等しい。
Message Textはアクションと等しい。
共有コンポーネントのテキスト・メッセージを開きます。作成済みのテキスト・メッセージの一覧よりテキスト・メッセージの作成を実行します。
名前としてAPEX.IG.ACTIONSを指定します。言語には日本語(ja)を選択します。JavaScriptで使用はOFFのまま(ここで設定しても、システムとしてAPEX.IG.ACTIONSに定義されている設定に変更されます)、テキストはレポートの操作に変更します。テキスト・メッセージの作成を実行します。
名前APEX.IG.ACTIONSがテキスト・メッセージとして作成されます。
同様にして名前がAPEXIR_ACTIONSのテキストもレポートの操作に変更します。
テキスト・メッセージとして作成されます。JavaScriptで使用の属性は、双方OFFを指定していますが、結果として、APEX.IG.ACTIONSははい、APEXIR_ACTIONSはいいえになっていることが確認できます。
ホーム・ページをリフレッシュすると、アクションとなっていたメニューがレポートの操作に変わっていることが確認できます。
リージョンの識別のタイトルはAPIとしました。
ページを実行すると、APIの呼び出しでもアプリケーションに作成したテキストが優先されることが確認できます。
翻訳文字列を扱うJavaScript APIはapex.lang.getMessageです。こちらも確認してみましょう。
先程作成したリージョンAPIにページ・アイテムの作成を行います。識別の名前をP1_MESSAGE、タイプをテキスト・フィールドとします。ラベルは文字列とします。
Trueアクションとして値の設定を指定します。設定のタイプの設定はJavaScript Expressionを選択し、以下のJavaScript式を記述します。影響を受ける要素は選択タイプをアイテムとし、アイテムにP1_MESSAGEを指定します。