自動翻訳プロセス
自動翻訳は、使用されている間は透明ですが、舞台裏のプロセスには、コンテンツの比較と評価の複数のステップが含まれます。
CCMS Webでは、自動翻訳プロセスはCCMSの外部で行われます。これは、ローカライゼーションキット内のファイルを操作する出力ジェネレーターのプロセスです。以下は、その仕組みの概要です。
- 自動翻訳を使用するには、システムコンフィギュレーションと出力ジェネレーターでの設定が必要です。システム管理者に連絡し、自動翻訳が適切に有効になっていることを確認します。
- オーサリングコンテンツのすべてのセグメントには、
@ixia_locid
属性が必要です。これにより、プロセスは、以前の翻訳で同等のセグメントと比較することができます。@ixia_locid
を追加するトリガーが最近有効になった場合、@ixia_locid
の追加をトリガーするために、オブジェクトをチェックアウトしてリリースする(またはステータスを変更する)必要があるかもしれません。
適切に設定された後に自動翻訳を使用するには、翻訳プロセス中に何もする必要はありません。すべてが自動的に行われます。
以前、トピックA(リビジョン5)を含むマップをフランス語に翻訳したとしましょう。翻訳されたコンテンツをインポートし、出力を生成し、その他必要なことをすべて行いました。
数カ月後、あなたはオーサリングでトピックAに多くの編集を加え、リビジョン10になりました。別の翻訳マニフェストとローカリゼーション マニフェストを作成します。この時点では、トピックAはオーサリングのみに基づく仮想トピックであるため、ローカリゼーション マニフェストには、トピックAが以前に翻訳されたことは反映されていません。
ローカリゼーション キットを生成します。舞台裏では、以前に翻訳されたコンテンツを見つけるために、非常に多くのことが行われています。その詳細に興味がある方は、下記の完全自動翻訳プロセスをご覧ください。
キットが生成され、あなたがそれをダウンロードした後、テキストエディタでトピックAを開くとします。英語(ソース言語)とフランス語(ターゲット言語)が混在しているのが見えます。以前翻訳され、変更されていない各セグメントはフランス語で書かれています。前回の翻訳から新しくなった、あるいは変更された各セグメントは英語で表記されています。
この混合コンテンツが、LSPに送信されるコンテンツです。
自動翻訳によるセグメントの扱い
自動翻訳は、セグメントが変更されたことを検出すると、以前に翻訳されたテキストをセグメントに「前倒し」しません。
たとえば、トピックA のオーサリング リビジョン 5 にあるこの段落を見てみましょう:
<p ixia_locid="5">Spread a heavy coat of oil on the surface.</p>
この段落は、1つの@ixia_locid
属性を持つ1組のタグで囲まれているため、段落全体が1つのセグメントです。
あなたはリビジョン5をフランス語に翻訳します:
<p ixia_locid="5">Étalez une couche épaisse d'huile sur la surface.</p>
その後、オーサリング リビジョン 7 でこのように段落を編集します:
<p ixia_locid="5">Spread a generous coat of oil on the surface.</p>
トピックを再翻訳する際、自動翻訳プロセスはリビジョン 7 のこのセグメントとリビジョン 5 の同じセグメントを比較します。自動翻訳プロセスは、「heavy」 という単語が 「generous」 という単語に置き換えられたことを検出します。しかし、この変更はセグメント内のものであるため、自動翻訳はローカリゼーションキットのファイルには反映されません。翻訳されていない段落は、ローカリゼーションキットのファイルに表示されます。
一方、リビジョン5でこのような段落があったとします:
<p ixia_locid="5">Spread a <ph ixia_locid="6">heavy</ph> coat of oil on the surface.</p>
ここで、形容詞は大きな<p>
セグメント内の別の<ph>
セグメントです。あなたはフランス語に翻訳します:
<p ixia_locid="5">Étalez une couche <ph ixia_locid="6"épaisse</ph> d'huile sur la surface.</p>
そしてリビジョン7で編集します:
<p ixia_locid="5">Spread a <ph ixia_locid="6">generous</ph> coat of oil on the surface.</p>
この場合、ローカリゼーションキットのファイルでは、変更された単語だけが英語になっています:
<p ixia_locid="5">Étalez une couche <ph ixia_locid="6">generous</ph> d'huile sur la surface.</p>
残りのセグメントは、リビジョン 5 から変更されていないため、リビジョン 5 の翻訳をリビジョン 7 に「前倒し」します。
このため、一度翻訳したら絶対に再翻訳してほしくない用語やフレーズがある場合は、その用語やフレーズを独立したセグメントにすることをお勧めします。そのための最良の方法は、キーまたはconrefを使用することです。
完全自動翻訳プロセス
自動翻訳が以前の翻訳を識別し、何を「前倒し」するかを決定するために使用する完全なプロセスは複雑であり、自動翻訳を効果的に使用するためにそれを理解する必要はありません。しかし、もし興味があるのであれば、以下にやや簡略化した説明をします。
この自動翻訳プロセスは、出力ジェネレーターによって処理されている間、ローカリゼーションキット内のファイルに対して実行されます。正確には、まず出力ジェネレーターがローカリゼーションキットを作成し、次に自動翻訳プロセスで「前倒し」するコンテンツを特定し、最初のローカリゼーションキットのファイルを上書きして最終的なローカリゼーションキットを作成します。これらはすべて、My Kits/Imports(マイキット/インポート)ページでキットが利用できるようになる前に行われます。
ステップ1:ファイルが自動翻訳の対象かどうかを判断します
初期ローカリゼーションキットの各ファイルについて、まず、自動翻訳の候補であるかどうかを判断します。
- このプロセスでは、ファイルの末尾に.ditamap、.dita、.xmlのいずれかの拡張子があるかどうかをチェックします。拡張子がある場合、プロセスはファイルの解析を続行します。そうでない場合、プロセスはファイルをスキップします。
- パースに成功した場合、プロセスはルート要素をチェックして、ファイルが翻訳されるかどうかを確認します(つまり、ルート要素に
@translate
属性がないか、translate="yes"
があります)。拡張子がある場合、プロセスはファイルの解析を続行します。そうでない場合、プロセスはファイルをスキップします。 - 次に、リビジョンを示す
"_"
がファイル名に含まれているかどうかをチェックします。そうであれば、自動翻訳機能が起動され、ファイルのコピーが作成、変更、保存されます。そうでない場合、プロセスはファイルをスキップします。
ステップ2:ファイルの正しい過去の翻訳を見つけます
ファイルが自動翻訳の候補であると判断された場合、プロセスはそのファイルの過去の翻訳を見つけようとします。それらが存在する場合、プロセスは最後のもの、つまり最新のものを選択します。たとえば、トピック A のリビジョン 10 が現在のローカリゼーション キットに含まれている場合、プロセスはトピック A の以前の翻訳を検索します。リビジョン 3 とリビジョン 5 が見つかります。リビジョン 5 が最新であるため、対象となる翻訳コンテンツはそのリビジョンから「前倒し」されます。
同じファイルの過去の翻訳が存在しない場合、プロセスはそのファイルが別のファイルからクローンされたかどうかを確認し、クローンされた場合は、フォールバックとしてクローン元ファイルの過去の翻訳を検索します。
ステップ3:前の翻訳の各セグメントを評価します
比較する前の翻訳を決定した後、現在のファイルの各ノードと前の翻訳の対応するノードを比較します。
現在のファイルの各セグメントについて:
- このプロセスは、
@ixia_locid
属性の値を取得します。 - このプロセスは、同じ
@ixia_locid
値を持つセグメントを前の翻訳文から探します。該当するセグメントがない場合、新しいセグメントとみなされます。このセグメントはソース言語のままです。該当する場合、@translate
属性を評価します。 - 現在のファイルまたは前回の翻訳でセグメントに
translate="no"
がある場合、変更後のファイルのコピーのセグメントにtranslate="no"
が追加されます。現在のファイルまたは前回の翻訳でセグメントにtranslate="yes"
がある場合、変更後のファイルのコピーのセグメントにtranslate="yes"
が追加されます。 - 変更されたファイルのコピーのセグメントが
translate="no"
を持つ場合、そのセグメントはソース言語のままです。セグメントにtranslate="yes"
属性があるか、@translate
属性がまったくない場合、そのセグメントは置換の対象となります。 - 変更されたコピーのセグメントが置き換えの対象である場合、プロセスはそのコンテンツを以前の翻訳のコンテンツと比較します。内容がまったく同じであれば、プロセスは、前回の翻訳で一致したセグメントから変更後のコピーに翻訳されたテキストを「前倒し」します。内容がまったく同じでない場合、そのセグメントはソース言語のままになります。この比較の詳細については、上記の自動翻訳によるセグメントの扱いを参照してください。
その結果、ローカリゼーションキットのファイルが更新され、対象となるすべての翻訳済みコンテンツが含まれるようになります。
すべてのファイルのすべてのセグメントが処理され、必要に応じて「前倒し」されると、ローカリゼーション キットは、My Kits/Imports(マイキット/インポート)ページで利用できるようになります。