{ End Bracket }
Web ページの翻訳
Sandor Maurice および Vikram Dendi
マイクロソフトの翻訳サービスがアップグレードされました。今回のアップグレードでは、多数の翻訳 Web サービス API とツールがリリースされ、Web サービスにアクセスするための新しい方法として REST、SOAP、AJAX API が追加されたため、翻訳サービスを Web サイトに簡単に組み込めるようになりました。
翻訳ウィジェット導入ポータル microsofttranslator.com では、新しい翻訳用ウィジェットの動作と外観を自分のコンテンツに合わせてカスタマイズできます。また、HTML スニペット (小さな HTML コード) を使用して、既存のコンテンツの横に翻訳ウィジェットを表示することもできます。
呼び出されたウィジェットは、マイクロソフトの AJAX API を使用して、ページのコンテンツを段階的に翻訳します。翻訳は、その場で実行され、別のサイトに移動することはありません。表示オプションとして、訳文を表示 (訳文をポイントすると原文を表示)、原文を表示 (原文をポイントすると訳文を表示)、両方を並べて表示、の 3 つが用意されています。
また、自動翻訳を選択することもできます。自動翻訳では、訪問したページのうち翻訳ウィジェットを含むページがすべて自動的に翻訳されます。すべてのユーザー設定は、翻訳ウィジェットを含むすべてのサイトで保持されます。
図 1 Microsoft Translator
ウィジェットに適さない高度なシナリオでは、下層の AJAX API に直接アクセスします。AJAX API を使用すると、翻訳開始のトリガや翻訳対象コンテンツを完全に制御できます。AJAX API は、AJAX API SDK から小さな HTML コードをコピーして、対象の HTML に貼り付けるだけで簡単に組み込めます。このコードは、AJAX API をブラウザに読み込むだけで、サイトの表示コンテンツを公開することはありません。これで、AJAX API によってサポートされているさまざまな JavaScript を呼び出せるようになります。たとえば、"myElem" という ID を持つ特定の DOM (ドキュメント オブジェクト モデル) 要素を英語からスペイン語に翻訳するには、次のように指定します。
Microsoft.Translator.translate(document.getElementById("myElem"), "en", "es");
ドキュメントの本文をすべて翻訳するには、次のように指定します。
Microsoft.Translator.translate(document.body, "en", "es");
翻訳ウィジェットがユーザーに公開しているオプションはすべて、プログラムからアクセス可能です。たとえば、特定の DOM 要素で原文と訳文を左右に並べて翻訳を行うには、次のように指定します。
Microsoft.Translator.setOptions({ "layout": "ss"});
Microsoft.Translator.translate("myElem");
言語引数を省略すると、まず、DOM 階層に HTML lang 属性が指定されていないかチェックされ、指定されていればそれがソース言語になります。HTML lang 属性が指定されていない場合は、自動言語識別テクノロジによってソース言語が識別されます。ターゲット言語は、ユーザーが使用しているブラウザの accept-language の設定によって決まります。適切なターゲット言語がサポートされていない場合は、正規の手順に従って合理的な既定値が採用されます。サポートされているオプション名とその値の一覧を取得するには、次のように指定します。
Microsoft.Translator.getAllOptions();
宣言文で翻訳動作を制御することもできます。標準の HTML lang 属性の他にも、翻訳に適さない要素を識別するための translate="no" 属性があります。この属性が指定された要素は単純にスキップされます。
試してみるとわかりますが、新しい翻訳サービス機能を使用すると、ユーザーに提供するコンテンツを目的に合わせて簡単にカスタマイズできます。
この記事で説明した内容の詳細については、Vikram が執筆した 2009 年 1 月号の End Bracket、「機械翻訳の出現」を参照してください。
Sandor Maurice は、マイクロソフト翻訳チームの開発者です。AJAX API とウィジェットの開発を担当しています。
Vikram Dendi は、マイクロソフト翻訳チームのシニア プログラム マネージャです。事業戦略および製品計画に携わり、壁のない Web を構築するための開発者支援に力を注いでいます。彼のブログは viks.org および blogs.msdn.com/translation で公開されています。