提供されているランタイム・メッセージの翻訳は以下です。
Oracle APEXの管理ツールやアプリケーション・ビルダーは、10言語(ドイツ語、英語、スペイン語、フランス語、イタリア語、ポルトガル語(ブラジル)簡体中国語、繁体中国語、日本語、韓国語)に翻訳されています。
ランタイム・メッセージというのは主にOracle APEXの組み込みコンポーネントが扱うメッセージになります。具体的には対話モード・レポートや対話グリッドです。
サポートされている34言語はどのような言語なのか、自動的に切り替えるアプリケーションを作成してみました。
以下のように動作します。ボタンStart LoopをクリックするとIntervalで指定した秒ごとにランタイム・メッセージの言語を切り替えていきます。
開発ツールも翻訳されている言語では、Welcomeの表示がそれぞれの言語に翻訳されます。また、アラビア語とヘブライ語については、表示をRTL(Right-to-Left)に切り替えています。
このAPEXアプリケーションのエクスポートを以下に置きました。
https://github.com/ujnak/apexapps/blob/master/exports/oracle-apex-support-languages.zip
対話モード・レポートのソースとして、サンプル・データセットのEMP/DEPTに含まれる表EMPが必要です。
作り方はあまり参考にならないアプリケーションですが、いくつかの実装のポイントを紹介します。すべての機能をホーム・ページに実装しています。
ボタンSTART_LOOPを押すとJavaScriptのファンクションstartLoop()を呼び出します。STOP_LOOPではstopLoop()を呼び出します。翻訳を選択するページ・アイテムP1_LANGは値が変更されると、動的アクションでページの送信を実行します。
ページ・アイテムP1_LANGは以前の値を保存させるため、セッション・ステートのストレージをセッションごと(永続)にします。
ページ・アイテムP1_LANGが変更され、ページの送信が実行されたときに呼び出されるプロセスでは、以下のコードが実行されます。
begin
apex_util.set_preference(
p_preference => 'FSP_LANGUAGE_PREFERENCE'
,p_value => :P1_LANG
);
/*
* autoChangeでの呼び出しであれば、P1_AUTO_ENABLEDをYとする。
* 手動切り替えのときはP1_AUTO_SUBMITは空になるため、自動切り替えは
* 継続しない。
*/
if :P1_AUTO_SUBMIT = 'Y' then
:P1_AUTO_ENABLED := 'Y';
else
:P1_AUTO_ENABLED := '';
end if;
end;
プリファレンスFSP_LANGUAGE_PREFERENCEに言語コードを設定することにより、ランタイム・メッセージの翻訳を切り替えています。
ページ・プロパティのJavaScriptのファンクションおよびグローバル変数の宣言に、以下を記述しています。
ページ・ロー時に実行に以下を記述しています。自動的に発生したページ・ロードのときは、自動ロードを継続します。
/*
* 言語の自動切り替えが有効であれば、startLoopを呼び出す。
*/
if ( apex.item("P1_AUTO_ENABLED").getValue() === "Y" ) {
startLoop();
}
else
{
document.getElementById("START_LOOP").disabled = false;
document.getElementById("STOP_LOOP").disabled = true;
}
ページ・ロード時に言語がarまたはhe(つまりアラビア語またはヘブライ語)のときは、動的アクションでRight-to-Leftに変更しています。
document.documentElement.setAttribute('dir', 'rtl');
開発言語のリージョンに表示している「ようこそ」の翻訳文は、以下のコードを記述した動的コンテンツとして実装しています。
declare
l_message clob;
begin
l_message := apex_lang.message('INSTALLER.WELCOME');
return l_message;
end;
Oracle APEXのアプリケーション作成の参考になれば幸いです。
完