AumCreate

AumLang

WordPress のための AI 翻訳。必要な言語を登録し、ページで Translate を押すと、 AumLang が翻訳版を 1 本書き起こし、それ自身の URL を与え、両者のリンクを保ちます。

本ガイドは、すでに AumLang を導入している方向けです。以下はすべて WordPress 管理画面の AumLang にあります。

AumLang の管理画面はどのサイトでも英語です。 UI 翻訳はまだ公開されていないため、 WordPress をどの言語に設定していても、ここで引用している英語のラベルがそのまま表示されます。

1. AumLang の仕組み

AumLang における翻訳は、実体のある投稿そのものです。英語のページを日本語に翻訳すると、 日本語の投稿が 1 本でき、固有の ID、/ja/ 配下の固有の URL、そして投稿一覧の中の 固有の 1 行を持ちます。開いて手で編集できますし、投稿に対して普段おこなうことは すべてそのまま通用します。

ここから先を読むうえで知っておく価値のある帰結が三つあります。

  • 原文は一切変更されません。 翻訳は足す操作であって、書き換えではありません。
  • 翻訳に加えた編集は残ります。 AumLang は翻訳した文字列を一つずつ別々に保持するため、 再翻訳で置き換わるのは AumLang 自身が書いた部分だけです。
  • 翻訳を削除することは、投稿を削除することです。 他の投稿と同じようにゴミ箱に入ります。
The posts list, with a translation sitting beside its original

AumLang はページを一つの大きな文字列として翻訳しません。内容を断片に分け —— 段落、見出し、表のセル、ページビルダーのショートコード内のテキスト —— 一つずつ翻訳して元の位置に戻します。レイアウトが保たれるのはそのためで、 このプラグインがページビルダーについて明確な考えを持っているのも同じ理由です(第 9 節)。

2. 設定

2.1 Languages

AumLang → Languages。 1 言語 1 行:コード、ロケール、表示名、URL スラッグ、 そして既定言語かどうか。

既定言語とは、既存のコンテンツがいま書かれている言語です。AumLang はそれに手を触れず、 明示的に指定しない限り URL に接頭辞も付けません。

それ以外の言語は、スラッグから URL 接頭辞を得ます:/ja/、/de/、/zh-hans/。

2.2 Translation provider

AumLang → Translation provider。 提供元を選び、API キーを貼り、モデルを選びます。 Test connection は、実際のページで費用を使う前にキーが有効かを確かめます。 Test reachability of all providers は、このサーバーからそもそも到達できる提供元を 並べます —— ホスティングが外向きの通信を遮断している場合に役立ちます。

翻訳には費用がかかり、支払先は提供元であって当社ではありません。 AumLang が自分から 呼び出すことはありません。すべての呼び出しは、押されたボタンから始まります。

The settings screen: languages, provider and translatable content

2.3 Translatable content

設定画面には三つのリストがあります。

  • Post types —— どの投稿タイプに Translate ボタンを出すか。
  • Taxonomies —— どのタクソノミーの語を翻訳するか。
  • Custom fields —— どのメタキーを本文と一緒に翻訳するか。

カスタムフィールドのリストは、ページビルダーやカスタムフィールド系プラグインで作った サイトでは特に重要です。表示されるテキストの多くが、本文ではなくメタに入っているからです。 AumLang はテーマと有効なプラグインが同梱する wpml-config.xml を読み、そこで宣言されて いるものを取り込みます。そのため多くのサイトでは、手を加えなくてもこのリストは すでに正しい状態になっています。

3. ページを翻訳する

翻訳対象タイプの投稿を開きます。編集画面に AumLang Translations のボックスがあり、 既定言語以外のすべての言語が、状態とボタンとともに並びます。

バッジ意味ボタン
Not translated一度も翻訳していません。Translate
Machine翻訳済み、未校閲。Re-translate
Reviewed誰かが校閲済みと記録しました。Re-translate
Outdatedその後に原文を編集しました。Update
Incomplete翻訳済みだが、ページの一部は一度も翻訳されていません。ボックスに残りの断片数が出ます。Translate the rest

ボタンを押すと、ボックスが進行状況を報告します。翻訳はラウンドに分けて実行され、 各ラウンドはサーバーが許す時間に十分収まる大きさです。長いページは一つの長い リクエストで打ち切られるのではなく、何ラウンドかに分かれて進みます。

The AumLang Translations box, showing Machine, Not translated and Incomplete side by side

3.1 多数の投稿をまとめて翻訳する

一度に 1 本ずつでも、数本なら問題ありません。20 ページ × 5 言語のサイトなら 100 回に なります —— そのため、もう一つの道があります。

Posts または Pages の一覧で対象の行を選び、Bulk actions を開いて AumLang: translate into … からその言語を選びます。1 回につき 1 言語です。

Apply を押した時点では、まだ何も始まりません。 確認画面が開き、選んだうちの 実際に送信される本数、すでに翻訳があるため手を付けない本数、そしてどの言語に訳すのかが 示されます。ボタンはその画面にあります —— ここが費用の発生する一歩だからです。

すでに翻訳がある投稿はスキップされ、訳し直されません。翻訳が古くなっているものも 同じくスキップです。行を選ぶという操作のどこにも「終わっている分にもう一度払う」という 意味はなく、そうなっていれば請求書で気づくことになります。特定の 1 本を訳し直すには、 それを開いて編集画面のボタンを使ってください —— あのボタンは実行前に何をするかを示します。

ページを閉じても処理は続き、戻ってくれば進捗画面がそれを引き継ぎます。Stop は いま処理中の 1 本を終えてから停止し、完了済みのものはそのまま残ります。

3.2 「Incomplete」とは何か

ページは、翻訳済みに見えていながら、一度も送信されていないテキストを含んでいることがあります。

よくある原因は、AumLang が以前よりそのページを広く読めるようになったことです —— 新しい種類のコンテンツを読めるようにしたプラグイン更新です。そして 更新そのものが何かを再翻訳することはありません。それは断りもなく費用を使うことに なるからです。したがってページはそのまま残り、Incomplete は「まだ残っている」と AumLang が伝える手段であり、残りの断片数が添えられます。

ボックスはそれをはっきり書きます —— 「5 pieces of this page have never been translated.」 Translate the rest を押すと、その分だけが送られます。すでに翻訳済みのテキストは 再送されず、二度支払うこともありません。欠けがなくなれば、その表示は自然に消えます。

4. 言語スイッチャー

AumLang → Switcher。

  • Floating switcher —— 画面の隅に固定される小さなコントロール。位置とラベルの体裁は ここで決めます。
  • Add to menu location —— 指定したメニューに言語を追加します。親項目を指定して その下に入れることもできます。
  • Place it manually —— ショートコード [aumlang_switcher]。どこにでも置けます。 [aumlang_language_switcher] は同じものの長い名前です。

ラベルの体裁は、各言語を名称で出すか、コードで出すか、両方出すかを決めます。

The Switcher screen

5. Strings

AumLang → Strings。 ページの本文は、サイトの一部にすぎません。テーマやプラグインも 自前のテキストを出力します —— 「Read more」「Add to cart」、ウィジェットの見出し。

AumLang はそうした文字列を集め、翻訳待ちとしてここに並べます。Discovery mode は、 新しい文字列を探してフロント側を見張り続けるかどうかを決めます。サイトを立ち上げている あいだは有効にしておき、あとで切ってください。探索はページ表示ごとにわずかな負荷があり、 リストが揃えば、もう見つけるものは残っていません。

サイトのテキストの一部は、コードではなくデータベースに入っています —— 自分で入力した メニューのラベル、ウィジェットの中のテキスト、テーマが自分の設定の中に保存している テキスト。これらは上の仕組みを通らないため、AumLang は別途それらを集め、 ページを翻訳する際に一緒に埋めます。追加で押すものはありません。

ウィジェットは、誰が書いたものであれ、フィールドを一つずつ読みます。 WordPress はプラグインに対して、ウィジェットの見出しを翻訳させる標準的な方法を 用意していますが、それを使うかどうかは任意で、保存した値をそのまま出力するだけの ウィジェットも少なくありません。そこで AumLang は、WordPress がそのウィジェットを 描画する直前に、保存されているフィールドを直接読みます —— その方法を一度も 用意してこなかったウィジェットも、これで対象になります。URL、アイコン名、 CSS クラス、メールアドレス、電話番号はそのままにします。これらを翻訳すると、 ウィジェットの文言ではなく配線のほうが変わってしまいます。

The Strings screen

6. Glossary

AumLang → Glossary。 必ず決まった形で出したい語のための場所です:製品名、型番、 業界で訳が割れている語についての自社の訳。

1 件は、原語・対象言語・訳・大文字小文字を区別するかどうかで構成されます。用語集は その言語のすべての翻訳に適用されるので、1 件の登録でサイト全体の一語が直ります —— ページごとに直す必要はありません。

翻訳者が間違える語のために使うものであり、もともと正しく出る語のために使うものではありません。

The Glossary screen

7. Review

AumLang → Review。 まだ誰も確認していない機械翻訳を一覧します。読み終えたものを 選び、Mark selected as reviewed を押します。

これはページの内容を何も変えません。「人が何を見たか」の記録であり、次の担当者が どこから始めればよいかが分かるようにするためのものです。

The Review screen

8. Diagnostics

AumLang → Diagnostics。 Why translation fails here の下の Run the check は、 ほぼすべての失敗を説明する二つの値を測ります。サーバーが 1 リクエストに許す時間と、 提供元への 1 回の呼び出しにかかる時間です。そのうえで「1 ラウンド+もう 1 回の呼び出し」が まだその上限に収まるかを報告します。

Copy the report は、全体をテキストとして渡します。API キーは決して含まれません。

The Diagnostics screen

翻訳が失敗しているのに、レポートでは所要時間に問題がないと出る場合は、 そのレポートを送ってください —— 原因が当方側にあり、こちらで見る必要がある場合が まさにそれです。

9. ページビルダー

AumLang は Gutenberg、クラシックエディター、Elementor の内容を直接読みます。 加えて、テキストをショートコードの属性に保存するビルダーも読めます —— 残りのほとんどはこちらに当たります。

意図的に翻訳しないものが二つあります。

  • レイアウトのマークアップ。 [row]、[column]、色の値、CSS クラス。これを翻訳に 送れば、軽ければ費用の無駄、重ければページが壊れます。
  • 文章でない値。 URL、ID、部品番号、16 進のカラーコード。

「レイアウト」と「テキスト」の境界は、ビルダー名の一覧ではなく形で引かれています。 だから見たことのないビルダーでも、たいていは動きます。wpml-config.xml で自分の内容を 宣言しているビルダーについては、そのとおりに読みます。

翻訳後もページが変わっていないように見えるとき、結果メッセージがどちらなのかを はっきり伝えます —— そのページがほぼビルダーのマークアップでできていて、 AumLang が壊すよりは飛ばすほうを選んだのか、それとも、そのページに翻訳するものが 初めから無かったのか。

9.1 実はページである、ヘッダーとフッター

ビルダー中心のテーマは、ヘッダーやフッター、あるいはサイト全体で繰り返される区画を ふつうの固定ページとして持ち、リクエストごとにそれを取り込むことがよくあります。 そうしたページは、ここでは他のページと何も変わりません。固定ページ一覧に並び、 自分の翻訳状態を持ち、翻訳のしかたも同じです。

一度訳せば、サイトのすべてのページで訳文が表示されます —— まだ訳していない ページも含めて。その区画は、もともとそれらのページの本文ではないからです。

フッターがどのページなのか分からないときは、フロント側を開いて、フッターの近くに Edit Footer のような操作がないか見てください。この作りのテーマはほぼ必ずそれを 置いており、その指す先がそのページです。

10. URL とリンク

各言語はそれぞれの接頭辞の下にあります。既定言語は、もとから持っていた URL をそのまま保ちます。

翻訳された本文の中で、同じサイトのページを指すリンクは、出力時にそのページの翻訳へ 書き換えられます —— 翻訳が存在する場合にかぎります。読者が日本語のページからリンクを たどると、英語に放り出されるのではなく、別の日本語のページに着きます。これは出力の瞬間に 起こることで、保存されている本文は元のリンクのままです。

11. 設定一覧

画面設定既定値
LanguagesDefault language既存コンテンツの言語
LanguagesPrefix on the default languageオフ
Translatable contentPost typesPosts と Pages
Translatable contentTaxonomiesなし
Translatable contentCustom fieldswpml-config.xml から
SwitcherFloating switcherオフ
SwitcherLabel styleName
StringsDiscovery modeオン
GeneralDelete data on uninstallオフ

12. トラブルシューティング

翻訳が途中でサーバーエラーになる。 サーバーがリクエストを打ち切りました。 Diagnostics(第 8 節)を実行してください —— まさにこれを測ります。もう一度 Translate を 押せば止まったところから再開し、すでに翻訳された分に二重の料金はかかりません。

完了したと出るのに、見た目が変わらない。 そのページがほぼビルダーのマークアップか (第 9 節)、あるいは Incomplete と表示され、まだテキストが残っています —— 3.1 を参照。

ページの一部だけが翻訳された。 表など、ビルダーのショートコード属性に保存された 内容は、バージョン 1.4.2 より前では読めませんでした。更新してから Translate the rest を押してください。

メニューが半分しか翻訳されない。 自分で入力したメニューのラベルは、バージョン 1.5.0 より前では翻訳されませんでした。更新したうえで、どれかのページを翻訳してください —— ラベルはそれに合わせて埋まります。

翻訳ページのリンクが元の言語に戻ってしまう。 そのページにはまだ翻訳がありません。 リンクが書き換えられるのは、翻訳が存在する場所だけです。

製品コードが翻訳されてしまった。 Glossary(第 6 節)に、訳としてそれ自身を 登録してください。

Translate を押しても何も起こらない。 提供元が未設定か、キーが誤っています。 2.2 節の Test connection を使ってください。