2020年6月4日木曜日

Oracle APEXアプリケーションのグローバル化(3) - 言語マッピングの作成

Oracle APEXアプリケーションをグローバル化する手順の説明です。こちらの記事からの続きになります。

Oracle APEXのアプリケーションの各言語への対応は、異なるアプリケーションを内部的に作成し、それに言語をマッピングすることで行われます。

言語の切り替えには、グロバリゼーションの設定に含まれるアプリケーション言語の導出元の設定が使用されます。

それでは、前回作成したOracle APEXのアプリケーションに言語マッピングを追加し、それぞれの言語に対応させる手順を紹介します。

アプリケーション・ビルダーでアプリケーションを開き、共有コンポーネントのグローバリゼーションのグループにあるアプリケーションの翻訳を開きます。


アプリケーションの翻訳に関する作業は、ほぼ全て、このページに集約されています。また、アプリケーションの翻訳作業としては、左にある翻訳方法のリストを上から順番に行っていくことが想定されています。


つまり、
  1. アプリケーション言語の定義
  2. 翻訳可能なテキストのシード
  3. XLIFF翻訳ファイルのダウンロード
  4. テキストの翻訳
  5. XLIFF翻訳ファイルの適用
  6. 翻訳済アプリケーションのパブリッシュ
です。3, 4, 5のXLIFF翻訳ファイルを利用した翻訳作業は、一番下にある翻訳リポジトリを直接編集する作業で置き換えることができます。

では、定義された翻訳ワークフローに沿って、作業を行っていきます。

アプリケーション言語の定義


アプリケーション言語の定義を開きます。最初は何も言語のマッピングは登録されていません。ここで、作成をクリックします。


翻訳アプリケーションの内部的なアプリケーションIDとなる数値言語を指定して、作成をクリックします。すでに使用済みのアプリケーションIDは指定できないため、空いている番号を自力で探して指定する必要があります。これはOracle APEXをホストしているインスタンス全体で一意(ワークスペースではない)である必要があります。そのため、実際は空いていそうな数値を入力し、作成をクリックしてエラーが発生したら数値を変えてやり直す、という手順にならざるを得ない場合もあります。

アプリケーションIDとなる数値と、マッピングする言語を指定した後、作成をクリックします。


文書方向は左から右です。Oracle APEXは右から左へ記述する言語(ヘブライ語やアラビア語)への対応も機能として持っています。

同様にして、中国語(中国)(zh-cn) - いわゆる簡体字 - と韓国語(ko)も追加します。結果として以下の言語のマッピングが登録されます。



翻訳可能なテキストのシード


翻訳可能なテキストのシードを開きます。


翻訳済アプリケーションに付いているチェックボックスを個別にクリックするか、全体のチェックボックスをクリックして、全ての翻訳済アプリケーションを選択します。そしてシードを実行します。プライマリ言語で作成されたアプリケーションに含まれる、翻訳可能な文字列が翻訳対象となっているアプリケーションにすべてコピーされます。


翻訳対象の文字列は69あり、その中で重複を除く46の個別の文字列がある、とレポートされています。

XLIFF翻訳ファイルのダウンロード


XLIFF翻訳ファイルのダウンロードを開きます。翻訳先になる言語を選び、アプリケーションのXLIFFファイルのエクスポートを実行します。この例では言語として英語(en)を選び、XLIFFターゲット要素を含めるにチェックを入れ、そしてエクスポートにはすべての翻訳可能な要素を含めます。ページ単位でXLIFF翻訳ファイルを出力することも可能です。


XLIFF (XML Localization Interchange File Format) はソフトウェアや文書の国際化、翻訳のために開発された XMLベースのファイル形式です。XLIFFファイル自体については、Wikipediaの該当エントリなどを参照してください。

アプリケーションのXLIFFファイルのエクスポートを実行すると、XLIFFファイルがダウンロードされます。ファイル名は

f翻訳元アプリケーションID_翻訳先アプリケーションID_翻訳元言語_翻訳先言語.xlf

となります。XLIFFファイルの内容は、以下のようなtrans-unit要素の集まりです。
<trans-unit id="S-6-1-20316">
<source>竹家のメニュー</source>
<target>竹家のメニュー</target>
</trans-unit>
<trans-unit id="S-106-21345516472514205825-20316">
<source>メニュー名</source>
<target>メニュー名</target>
</trans-unit> 
<trans-unit id="S-106-21345516575424205826-20316">
<source>サイズ</source>
<target>サイズ</target>
</trans-unit> 
<trans-unit id="S-106-21345516657757205827-20316"> 
<source>値段</source>
<target>値段</target>
</trans-unit>
チェックボックスXLIFFターゲット要素を含めるのチェックを外していると、この中のtarget要素は含まれなくなります。翻訳作業はtarget要素を置き換えるのではなく、target要素の追加になります。また翻訳が必要な要素のみを選ぶと、すでに翻訳済みの文字列はXLIFFファイルに含まれません。

テキストの翻訳


テキストの翻訳として翻訳方法にありますが、これをクリックしてもOracle APEXで実施できる作業はありません。


XLIFFファイルのtarget要素を対象の言語に翻訳する作業は外部に委託する場合が主です。そして、翻訳済みのXLIFFファイルを受け取って、次のステップへ進みます。

この記事での翻訳はXLIFFファイルを使わず、翻訳リポジトリを直接編集する予定ですので、XLIFFファイルの編集作業は行いません。

XLIFF翻訳ファイルの適用


XLIFF翻訳ファイルの適用を開きます。ここでは手順の紹介のみで、実際の作業は行いません。


翻訳済みのXLIFFファイルをアップロードします。先ほどダウンロードしたファイルをそのままアップロードしてみます。最低でもファイルをひとつ選択し、アップロードを実行します。


アップロードされたXLIFFファイルが一覧に現れます。翻訳を適用するファイル名にチェックを入れ、翻訳に適用にて対象言語を選びます。そして、チェックした項目の適用を実行すると、XLIFFファイルの内容が翻訳リポジトリにロードされます。今回はこの実行は不要です



翻訳リポジトリの直接編集


アプリケーションの翻訳を専門業者に任せるとする、もしくは、分業できる場合はXLIFFファイルを使った手順は有効です。そうでない場合、例えば、ちょっとしたアプリケーションであったり、一部のレポートだけを対象としたり、翻訳だけを任せるリソースがなかったり。そのような場合では、翻訳リポジトリの直接編集が有効です。


翻訳ユーティリティ翻訳リポジトリを開きます。


ここからは力作業で、レポートに含まれる列、言語で指定された言語に翻訳先の文字列を置き換えていきます。鉛筆マークをクリックすると、編集フォームが開きます。


翻訳先の言語に合わせて、翻訳先テキストを入力します。この文字列のすべてのn件の発生を更新しますにチェックを入れると、翻訳元テキストが同じ場合、それらも同時に置き換えます。

グリッド編集を選ぶことで、対話グリッドを使った編集作業も行うことができます。


以下の表に翻訳する文字列と、それぞれの言語への翻訳を一覧します。これらを参考に、翻訳リポジトリを更新します。例えば、英語のみ、または、一部の文字列のみでも、Oracle APEXのアプリケーションの翻訳手順はわかりますので、必ずしも全て更新しなくても大丈夫です。

 日本語(ja) 英語(en) 簡体中国語(zh-cn) 韓国語(ko)
 竹家のメニュー Takeya's Menu 竹屋的菜单 대나무 집의 메뉴
 日本語メニュー English Menu 中文菜单 한국어 메뉴
 ホーム Home 主页 홈
 言語セレクタ Language Selector 语言选择器 언어 선택기
 サインイン Sign In 登录 사인인
 ユーザー名を記憶 Remember username 记住用户名 사용자 이름 기억
 パスワード Password 密码 비밀번호
 ユーザー名 Username 用户名 사용자 이름
 竹家のメニュー - サインイン Takeya's Menu - Sign In 竹屋的菜单 - 登录 대나무 집의 메뉴 - 사인인
 ログイン・ページ Login Page 登录页 로그인 페이지
 メニュー名 Menu Name 菜单名称 메뉴 이름
 サイズ Size 量 양
 値段 Price  价钱 가격
 デスクトップ Desktop 桌面 데스크톱
 サインアウト Sign Out 注销 사인아웃

翻訳済アプリケーションのパブリッシュ


翻訳リポジトリの内容を更新したら、翻訳済アプリケーションのパブリッシュを開きます。


それぞれの言語について、同期化が必要の列がはいであれば、パブリッシュを実行する必要があります。前回パブリッシュしたのち、アプリケーションに変更があった場合は、シードも再実行します。シードとパブリッシュを再実行することで翻訳済みのアプリケーションに変更が適用されます。XLIFFファイルの出力時に、翻訳が必要な要素のみという選択項目がありましたが、これは、このようなアプリケーションの変更に伴う追加の翻訳のために使用するオプションになります。

パブリッシュを実行すると、同期化が必要いいえに変わります。


動作確認


今までの作業で、Oracle APEXのアプリケーションに含まれる言語リソースの翻訳は完了になります。また、アプリケーション自体も多言語に対応しました。

アプリケーション・プロパティの編集からグローバリゼーション属性の編集を開き、アプリケーション言語の導出元として、一番デバッグが容易なセッションを選択し、変更の適用を行います。


アプリケーションを実行して動作確認をしましょう。


言語セレクタを使って、言語を切り替えてサインインします。Englishを選んでログインした際のレポートは以下のように表示されます。


ページのタイトルやレポートのタイトル、項目名などは翻訳されていますが、データそれ自体は翻訳されていません。Oracle APEXのアプリケーションを多言語に対応させるには、Oracle APEXでの構成だけではなく、アプリケーション自体も多言語に対応させる必要があります。

次のトピックからは、アプリケーション自体を多言語に対応させる方法について紹介します。