AI多言語翻訳 (MachineTranslatorプラグイン)

Microsoft Translator(※1)を利用して管理画面でのテキストの翻訳、公開側ウェブサイトのページ翻訳機能を提供します。2021年6月現在70言語(※2)以上をサポートしています。
オブジェクトの作成・編集画面に選択フィールドに対するテキスト翻訳ボタンが追加されます。また、リッチテキストエディタに選択テキストの翻訳ボタンを追加できます。
ページ翻訳機能では、除外 URLの設定、辞書のカスタマイズ、翻訳除外ブロックの設定、翻訳後ページの非表示エリアの設定などが可能です。
テキスト翻訳結果、ページ翻訳結果をキャッシュ(※3)することにより APIコール数を減らします。
ページ翻訳については、PowerCMS X ver.2.6以上が必要です。

※1 Microsoft Translator の契約についてはお客様が行っていただき、利用料金はソフトウェアのライセンス料とは別に発生します。
※2 言語コードについては 言語のサポート - Translator - Azure Cognitive Services 別ウィンドウで開きます を参照してください。 「SimplifiedJapanese」プラグインが有効な時「ふりがな付き日本語 (jp-rb)」、伝えるウェブ 別ウィンドウで開きます のアカウントを取得している場合、環境変数の指定で翻訳先言語に「やさしい日本語 (jp-yn)」が追加されます。
※3 キャッシュが破棄されるタイミングは、ページ翻訳のキャッシュについては、前回翻訳した時とHTMLソースに差異がある時、翻訳辞書がアップデート、削除された時、翻訳キャッシュについてはプラグイン「CacheManager」で「プラグイン・キャッシュ」をクリアした時となります。尚、環境変数「machinetranslator_cache_expires」指定のある時は、「プラグイン・キャッシュ」をクリアしない限り、その指定秒の間はページキャッシュが使われます。

免責事項

  • 作成中のコンテンツを外部サービス(Microsoft Translator)に送信します。
  • 翻訳文は Microsoft Translator 別ウィンドウで開きます が生成しており、翻訳結果の正当性については保証・サポートいたしません。
  • やさしい日本語への翻訳、ふりがなは「伝えるウェブ」および「SimplifiedJapanese」プラグインが生成しています。翻訳結果の正当性については保証・サポートいたしません。

翻訳対象外となるもの

  • HTMLの属性値(※4)
  • code, script, style, textarea要素の内容
  • 10,000バイトを超えるテキストノード(タグのない連続した10,000バイトを超えるベタ書きテキスト)
  • その他 Microsoft Translator が翻訳元言語と判別できなかったもの
  • iframe内の別ドメインから配信されるコンテンツなど

※4 以下の環境変数を指定すると一部の属性値について翻訳を行います。

  • machinetranslator_trans_attrs : img要素の alt属性値、input要素、textarea要素の placeholder属性値、a要素の title属性値を翻訳します。
  • machinetranslator_trans_meta : meta要素の content属性値を翻訳します。

設定と利用方法

  • Microsoft Translator のサブスクリプション・キーを取得します。
  • プラグインを有効化します。スキーマアップグレードの案内が表示されますので、スキーマをアップグレードします。モデル「mt_dic」が追加されます。
  • システムプラグイン設定にサブスクリプション・キーを登録してください。

プラグイン設定

システムプラグイン設定のみ

  • エンドポイント : 初期値指定済 (https://api.cognitive.microsofttranslator.com/translate)
  • サブスクリプション・キー : Microsoft Translator のサブスクリプション・キーを取得して、設定してください。
  • APIバージョン : 初期値指定済 (3.0)

スペースプラグイン設定のみ

  • システム設定を利用する : スペース独自の設定をせずに、システム設定を継承する場合にチェックしてください。チェックを入れた場合、翻訳辞書についてもシステムに登録したものが利用されます。

スコープ共通

  • 翻訳元言語 : (※5)翻訳元言語を選択します。「自動検出」も選択肢にありますが、利用言語が決まっている場合は必ず指定してください(翻訳精度だけでなく Microsoft Translator の利用料金にも影響します)。初期値「日本語(ja)」
  • 翻訳先言語(※6) : 翻訳先言語を選択します。「なし」を選択すると、テキスト翻訳ボタンは表示されません。
  • Webページを翻訳する : ウェブサイトのページ翻訳機能を利用する場合にチェックを入れてください。これ以降のすべての入力項目で、テンプレート・タグが利用可能です(変数「language_from」「language_to」に翻訳対象の言語コードがセットされています)。
  • アクティビティを記録する : 「AccessAnalytics」プラグインが有効な時、翻訳済みページへのページビューをアクティビティに記録します。
  • 除外URL : ページ翻訳機能で除外するページまたはディレクトリのURLを各行に入力してください。
  • 個別に翻訳するタグ : 文章中に HTMLを含むテキストを翻訳した時、一部の要素の範囲が正確に翻訳結果に反映されないことがあります。その場合にタグ内を個別に翻訳したいものを指定します(例: strong,a など)。 'tagName#id', 'tagName.class'のようにして、特定の id, class のみを対象とすることができます。
  • 翻訳除外クラス名 : 翻訳対象外の HTML要素の class属性値をカンマ区切りで指定してください。他言語への翻訳の場合、「notranslate」はデフォルトで除外されます。'tagName.class'のようにして、特定のタグのみを対象とすることができます。
  • 非表示クラス名 : 翻訳後ページで非表示にする HTML要素の class属性値をカンマ区切りで指定してください。'tagName.class'のようにして、特定のタグのみを対象とすることができます。
  • タイトルケース : 翻訳後ページで文字列の各単語の最初の文字を大文字にする HTML要素の class属性値をカンマ区切りで指定してください。'tagName.class'のようにして、特定のタグのみを対象とすることができます。
  • ブロック・キャッシュ(※7) : 翻訳結果をブロック単位で保存するクラス名をカンマ区切りで入力してください。'tagName.class'のようにして、特定のタグのみを対象とすることができます。
  • フッターHTML : 翻訳後のページの</body>タグの直前に挿入するHTMLコードを入力します。
  • フッターを翻訳する : フッターHTML欄に入力したHTMLを翻訳してから挿入する場合にチェックします。

※5 翻訳元言語、翻訳先言語ともに、管理画面翻訳ではユーザー毎に変更することができます。
※6 ウェブサイトのページ翻訳機能では、翻訳先言語の設定にかかわらず、クッキー「pt-mt-language」の値にセットされた言語もしくは、「machinetranslator_virtual」で指定した言語に翻訳します。
※7 コンテンツキャッシュはページのデータが1文字でも変更されるとヒットしないため、各ページで共通のナビゲーションブロックや、逆にナビゲーションなどが変更になっても変化しないコンテンツブロックなどをできるだけ多く指定することで、APIコール数を節約することができ、キャッシュにヒットすることで翻訳速度も速くなります。

環境変数と初期値

    "machinetranslator_mb_languages" : ["ja", "zh-Hans", "zh-Hant"],
    "machinetranslator_cookie_name" : "pt-mt-language",
    "machinetranslator_trans_attrs" : false,
    "machinetranslator_trans_meta" : false,
    "machinetranslator_exclude_post" : true,
    "machinetranslator_exclude_cookie" : "pt-mt-is-exclude",
    "machinetranslator_cacheing" : true,
    "machinetranslator_cache_expires" : 21600,
    "machinetranslator_cookie_expires" : 3600,
    "machinetranslator_bracket_individual" : true,
    "machinetranslator_virtual" : {},
    "machinetranslator_show_loader" : 35000,
    "machinetranslator_loader" : "",
    "machinetranslator_loader_image" : "",
    "machinetranslator_auto_detect" : false,
    "machinetranslator_tsutaeru_web" : "https://tsutaeru.cloud/api/simplified/translator.php"

  • machinetranslator_mb_languages : マルチバイト言語を指定します。翻訳元言語が指定の言語の時、ページのブロックのテキストのバイト数と文字数が一致する場合は翻訳対象外として API料金を節約することができます。
  • machinetranslator_cookie_name : ページ翻訳機能で翻訳する言語をセットするクッキー名
  • machinetranslator_trans_attrs : img要素の alt属性値、input要素、textarea要素の placeholder属性値、a要素の title属性値を翻訳します。
  • machinetranslator_trans_meta : meta要素の content属性値を翻訳します。
  • machinetranslator_exclude_post : POSTリクエストの時翻訳の対象外とします。
  • machinetranslator_exclude_cookie : 現在、翻訳対象外であることをブラウザに知らせるためのクッキー名を指定します。
  • machinetranslator_cacheing : 翻訳結果をキャッシュします。
  • machinetranslator_cache_expires : コンテンツの内容に変更があっても指定された秒以内に作成されたキャッシュがあればそれを返します(初期値6時間)。0指定の時もコンテンツが全く同一であればキャッシュが使われます。
  • machinetranslator_bracket_individual : 「」などの括弧内のテキストを個別に翻訳することで、翻訳結果が不自然になるのを防ぎます。
  • machinetranslator_virtual : URLのパスの先頭に/言語/を付けてアクセスした時に翻訳対象とします。言語ごとに URLを変更したい時にキーをディレクトリ名、値を言語コードの形式で指定します。
  • machinetranslator_show_loader : ページの容量(バイト数)が指定数値以上の時、ページ翻訳時に進捗インジケーターのページを表示する場合に指定します。 初期値は 35000です。
  • machinetranslator_loader : 翻訳が完了したかどうかをチェックするPHPアプリケーションのURL。省略時は「PowerCMSX/plugins/MachineTranslator/app/pt-mt-loader.php」となります。
  • machinetranslator_loader_image : 進捗インジケーターの画像のURL。省略時は「PowerCMSX/assets/img/loading.gif」となります。
  • machinetranslator_auto_detect : ページ翻訳の前に言語を自動判別します。HTML要素に lang属性がある時は属性値を、ない場合は Translator Detect APIによって言語を判別します。初期値は falseです。
  • machinetranslator_tsutaeru_web : 「SimplifiedJapanese」プラグインが有効で、環境変数「tsutaeruweb_client_id」「tsutaeruweb_client_secret」指定のある時、翻訳先言語に「やさしい日本語」が追加されます。
  • tsutaeru_client_id : 伝えるウェブのクライアントID。「SimplifiedJapanese」プラグインと共通。
  • tsutaeru_client_secret : 伝えるウェブのクライアント・シークレット。「SimplifiedJapanese」プラグインと共通。

管理画面でのコンテンツの翻訳

管理画面で翻訳を行うボタンを追加します。

  • プラグイン設定で翻訳先言語を「なし」以外に設定しているスコープでオブジェクトの新規作成・編集画面を開きます。
  •  (地球) アイコンが画面の右下に表示されます。このボタンをクリックすると翻訳元言語、翻訳先言語を変更するダイアログが表示されます。
  • input要素で type属性が「text」のフィールド、または textarea要素を選択して、テキストを選択すると、画面の右下 (スマートフォンの場合は右上) のボタンが青い翻訳ボタンに変化します。
  • ボタンをクリックすると選択されたテキストが翻訳されます。1度に翻訳できるテキストの最大文字数は 10,000文字です。

リットテキストエディタへの翻訳ボタンの追加

  • TinyMCEプラグインを有効化します。
  • ツールバーに「pt-translate」を追加します。前後に「|」を入力すると、区切り線が表示されます。
  • リッチテキストエディタ内で対象の文字を選択して、翻訳ボタンをクリックすると、その部分が翻訳されます。

ウェブサイトのページ翻訳

  • 翻訳対象のページは静的生成、動的生成のいずれでも構いませんが、ダイナミック・パブリッシングの設定が有効である必要があります。
  • 「pt-mt-language」クッキーが有効である時にリクエストが「pt-view.php」に渡されるように Webサーバーを設定してください。

PowerCMS Xで公開したページを翻訳

  • 以下は、.htaccess の設定例です。

    RewriteEngine On
    RewriteCond %{HTTP_COOKIE} pt-mt-language
    RewriteCond %{REQUEST_FILENAME} (\.html)$ [NC]
    RewriteRule ^ <mt:websitepath>/pt-view.php [L]
    
  • ユーザーが言語を選択したら JavaScript でクッキーをセットしてリロードさせるか、サーバーサイドのプログラムでクッキーをセットして元のページにリダイレクトさせます。JavaScript での翻訳ボタンのサンプルのビューが plugins/MachineTranslator/theme/c9730d1b-096b-46f6-a539-9a151bda8feb.tmpl にあります。

もうひとつの方法は、バーチャルディレクトリを使う方法です。環境変数「machinetranslator_virtual」を以下のように指定します。


    "machinetranslator_virtual" : {"en":"en", "zh_hans":"zh-Hans", "zh_hant":"zh-Hant"},
    この設定によって http://powercmsx.jp/zh_hans/index.html へのリクエストが、http://powercmsx.jp/index.html ページの中国語簡体字への翻訳となります。

ダイナミック・パブリッシングの設定がされていること、ベースネーム「404-error」のビューが登録されていることが条件となります。

カスタム翻訳辞書の登録

  • システム、またはスペースごと、翻訳先言語ごとにカスタム翻訳辞書を登録することができます。
  • スペースのプラグイン設定で「システム設定を利用する」を指定している時は、システムスコープのカスタム翻訳辞書が利用されます。
  • 「システムオブジェクト」→「翻訳辞書」から登録・編集できます。
  • 「翻訳辞書」モデルの設定で「インポート&エクスポート」にチェックを入れることで、CSVによるインポート、エクスポートが可能になります。
  • 「フレーズ」に翻訳元のテキスト、「翻訳」に翻訳後のテキストを入力し、「言語」で対象言語を選択します。「言語」には、プラグイン設定で指定した言語がデフォルトで選択されています。
  • 「フレーズ」は完全一致、「フレーズ」「翻訳」には HTMLタグを含んだ文字列を入力できます。

Microsoft Translator のサブスクリプション・キーの取得方法

概要

Microsoft Translator は、クラウドベースの機械翻訳サービスです。 Microsoft Translator API を利用することで、文章の機械翻訳結果を取得できます。 (例: 日本語から英語へ翻訳、英語から日本語へ翻訳など) 利用するためには、リソース (Translator サービス) を作成し、サブスクリプション・キー (API キー) の取得が必要です。 作成するリソースは、次の階層構造となります。

  - アカウント
     - サブスクリプション
        - リソース グループ
           - リソース

前提

「単一サービス」は、翻訳サービスのみ利用できます。
「マルチサービス」は、複数のサービス (Cognitive Services) を利用できます。
このドキュメントでは、「単一サービス」の場合について記載します。

サブスクリプション・キーの取得方法

作成ページの表示

参考資料 : Translator リソースを作成する 別ウィンドウで開きます

リソース (Translator サービス) の作成

  • 「サブスクリプション」を選択します。 (サブスクリプションは、アカウント内の契約を管理するための単位です。アカウントを作成したときに、1件作成した既存のサブスクリプションを選択します。※ 必要に応じて別途作成することもできます。)
  • 「リソース グループ」を選択します。 (リソース グループは、サブスクリプション内の、リソースをまとめて管理する単位です。リソースは、リソース グループ内の、サービスの実体を指します。初めて作成する場合、 [新規作成] でリソース グループを作成します。)
  • 「リソース グループのリージョン」を選択します。 (リージョンは、データセンターが設置されている場所です。日本国内としたい場合、「東日本」または「西日本」を選択できます。)
  • 「リージョン」を選択します。 (リソース グループのリージョンと同様です。)
  • 「名前」に、リソースの名前を入力します。※ まだ作成されていない名前をつける必要があります。
  • 「価格レベル」で、無料の「Free F0 (Up to 2M characters translated per month)」を選択します。 「Free F0」の場合、毎月200万文字まで、無料で利用できます。

※「Free F0」以外は有料で、従量制課金 (文字数に応じて課金) となるため、ご注意ください。

参考資料 : Translator の価格 別ウィンドウで開きます

  • [確認および作成] をクリックします。 「検証に成功しました」と表示されます。
  • 利用規約を読み、 [作成] をクリックします。 「デプロイが進行中です」と表示された後、「デプロイが完了しました」と表示されます。
  • [リソースに移動] をクリックします。 作成したリソース画面が表示されます。

サブスクリプション・キーの取得

  • 作成したリソース画面の、サイドバーの [キーとエンドポイント] をクリックします。
  • [キーの表示] をクリックします。サブスクリプション・キー (「キー 1」の文字列) が表示されます。

※ サブスクリプション・キーは、パスワードのように、慎重に取り扱う必要がある情報です。外部に漏れないように、ご注意ください。


※ Microsoft および Azure は、米国 Microsoft Corporation の、米国およびその他の国における登録商標です。