WPML

始める前に

以下のプラグインをインストールして有効化します。

フォームを翻訳に送信する前に、サイトの翻訳元言語でContact Form 7のフォーム(すべてのフォームタグ、メールおよびメール (2) テンプレート、メッセージタブのすべての項目、およびその他の設定)を作成します。後で変更があった場合は、フォームを編集して再度翻訳に送信できます。

すべてを自動翻訳する機能による自動処理

サイトですべてを自動翻訳するがオンになっている場合、手動でフォームを翻訳に送信する必要はありません。WPMLは他のコンテンツと同様に、新規および更新されたフォームを検出し、バックグラウンドで翻訳します。以下のページ挿入の手順は引き続き適用されますが、フォームの翻訳への送信手順は自動化されます。このページの残りの部分では、一部を翻訳する:翻訳するものを選択を使用しているサイト(または自動キューの前に翻訳したいフォーム)向けの手動の手順を説明します。

フォームの翻訳への送信

  1. WPML → 翻訳 → ダッシュボードを開きます。
  2. Contact Formsセクションを展開します。
  3. 翻訳するフォームにチェックを入れます。
  4. 翻訳方法を選択します。PTC(推奨)、担当の翻訳者、または自分で翻訳のいずれかを指定します。
  5. 翻訳をクリックします。

フォームテンプレート、メールおよびメール (2)、メッセージタブはすべて同じ翻訳ジョブに含まれます。翻訳者には、高度な翻訳エディタでラベル付きの行として表示されます。

翻訳済みページへのフォームの挿入

Contact Form 7は[contact-form-7]ショートコードを使用してページや投稿内に配置されます。これは通常、お問い合わせ管理画面で[contact-form-7 id="123" title="My Form"]として生成されます。多言語での挿入ルールは以下の通りです。

ページのすべての言語バージョンで同じショートコードを使用します。言語ごとに別々のフォームを作成しないでください。

フローは以下の通りです。

  1. 翻訳元言語でフォームを1回作成します。
  2. フォームを翻訳に送信します(またはすべてを自動翻訳するに自動検出させます)。
  3. 翻訳元言語のページにショートコードを挿入します。
  4. 他のページを翻訳するのと同じように、WPML → 翻訳 → ダッシュボードからページを翻訳します。ショートコードは翻訳されたページでも保持されます。
  5. 訪問者が翻訳されたページを開くと、WPML Multilingual for CF7が自動的に訪問者の言語でフォームを表示します。同じショートコードで、翻訳されたコンテンツが表示されます。

言語ごとに異なるフォームIDを用意する必要はありません。翻訳は元のフォームにリンクされており、連携プラグインがページの言語に応じてレンダリング時に適切な言語バージョンを解決します。

IDベースとタイトルベースのショートコードはどちらも機能します。[contact-form-7 id="123" title="Contact form 1"]は追加の設定なしで多言語で機能します。[contact-form-7 title="Contact form 1"](IDなし、タイトルのみ)も適切な言語に解決されます。タイトルのみの解決はバージョン1.1.0(2021年6月)で導入されました。どちらの形式も安全に使用できます。

例外 – 言語ごとに異なるフォームが本当に必要な場合。言語ごとに構造的に異なるフォーム(異なるフォームタグ、異なるメールテンプレート、異なるメッセージタブのコンテンツ)が必要な場合は、別々のContact Form 7フォームを作成し、対応する言語バージョンのページに、その翻訳用のWordPressエディタでそれぞれのショートコードを挿入します。言語間でショートコードが異なるのはこの状況のみです。

ページビルダーでの注意点

ページがDivi、Elementor、またはその他のページビルダーで作成されており、そのテキストモジュールがショートコードをラップしている場合、翻訳時にショートコードが正しく保持されないことがあります。翻訳されたページに翻訳元言語のフォームが表示される場合は、ページビルダーで翻訳されたページを開き、そこに[contact-form-7]ショートコードを再挿入してください。WordPress標準のブロックエディタやクラシックエディタでは、この問題は発生しません。

フォームタグのラベルと訪問者向け文字列

各フォームタグの訪問者向けコンテンツは翻訳されます。これには、ラベル(括弧で囲まれたタグの外側にあるテキスト)、ボタンのラベル([submit "Send"]内の値)、placeholderオプションで設定されたプレースホルダー、および[checkbox][radio][select]タグ内のオプション値が含まれます。

フォームタグのタイプ名前は翻訳されません。これらは識別子です。フォームタグの(訪問者向けの選択肢)は翻訳されます。例:

[select your-country "China" "India" "San Marino"]

フランス語の翻訳では、"China""Chine"になりますが、your-country(フォームタグ名)とselect(タイプ)は同一のままです。翻訳によって各値の位置が保持されるため、メールタグの置換は引き続き機能します。

パイプで区切られた値 – ラベルの翻訳と値の固定

パイプ構文を使用すると、訪問者向けのラベルをメールで送信される値から切り離すことができます。

[select your-country
  "Chinese|CN"
  "Indian|IN"
  "Sammarinese|SM"]

このフォームを翻訳する際、ラベル(ChineseIndianSammarinese)のみが翻訳されます。値(CNINSM)は正規の値のまま変わりません。フランス語の訪問者にはChinoisIndienSaint-Marinaisと表示されますが、メール本文やバックエンドのハンドラーは引き続きCNINSMを受信します。CRMのマッピング、支払いのSKU、地理コードなど、送信される値を言語間で安定させる必要がある場合は、パイプ構文を使用してください。

承諾確認タグとクイズタグ

承諾確認(Acceptance)チェックボックスには同意テキストが含まれており、通常はプライバシーや利用規約ページへの1つ以上の埋め込みリンクが含まれています。このテキストは翻訳ジョブの1つの行として翻訳します。リンク先については、翻訳された行を編集して、言語ごとのプライバシーや利用規約ページを指すようにします。

クイズタグは質問と回答の両方を翻訳します。正解の判定ロジックが言語間で予測どおりに動くよう、クイズの回答にはパイプ構文を使用してください。

[quiz captcha
  "1+1=?|2"
  "2+3=?|5"]

メッセージタブ

Contact Form 7のメッセージタブには、送信時やエラー時に訪問者に表示される約16個の編集可能な検証文字列が含まれています。これらはすべて同じジョブで翻訳されます。

  • Thank you for your message. It has been sent.(ありがとうございます。メッセージは送信されました。)
  • One or more fields have an error. Please check and try again.(入力内容に問題があります。確認して再度お試しください。)
  • There was an error trying to send your message. Please try again later.(メッセージの送信中にエラーが発生しました。後でもう一度お試しください。)
  • This field is required.(必須項目に入力してください。)
  • This e-mail address is invalid.(入力されたメールアドレスに間違いがあります。)
  • The telephone number is invalid.(入力された電話番号に間違いがあります。)
  • The URL is invalid.(入力されたURLに間違いがあります。)
  • The number is smaller than the minimum allowed.(最小値より小さい数値です。)
  • The number is larger than the maximum allowed.(最大値より大きい数値です。)
  • The date format is incorrect.(日付の形式が正しくありません。)
  • The file is too big.(ファイルサイズが大きすぎます。)
  • The file is not supported.(このファイル形式は許可されていません。)
  • The Acceptance checkbox is required.(承諾のチェックボックスは必須です。)
  • The answer to the quiz is incorrect.(クイズの答えが正しくありません。)
  • (およびCF7に同梱されている残りのデフォルトメッセージ)

メッセージタブで入力内容を補間するためにメールタグを使用している場合(Thanks [your-name], your message has been sent!)、翻訳後もメールタグは正しく解決されます。

メールおよびメール (2)

Contact Form 7の2つの送信メールテンプレートであるメール(管理者への通知)とメール (2)(訪問者への任意の返信または自動応答)は、個別に翻訳されます。送信先送信元題名追加ヘッダーメッセージ本文、およびファイル添付の説明はすべて翻訳ジョブに含まれます。翻訳された本文内のメールタグ([your-name][your-message][your-email])は正しく解決されます。

メール (2) については、訪問者向けの自動応答の本文が翻訳において最も重要です。これが訪問者の受信トレイに届くメッセージになります。翻訳されたページからテスト送信を行い、自動応答が訪問者の言語で届くことを確認してください。

送信時の統合機能

Contact Form 7には、数は少ないものの重要な統合機能が備わっています。翻訳が設定されている場合、それぞれが訪問者の言語を保持します。

  • Flamingo: Contact Form 7の作成者による送信管理アドオンです。送信内容は、翻訳された件名と本文がそのまま保持された状態でお問い合わせ → 受信メッセージに届きます。
  • Constant Contact: CF7の公式メールマーケティング統合機能です。訪問者の入力内容は、訪問者の言語でConstant Contactのリストに送信されます。
  • Stripe: Contact Form 7の[stripe]フォームタグフィールドと領収書メッセージのテキストは、どちらも翻訳ジョブに表示されます。
  • Akismet: スパム対策メッセージは(フォームの翻訳ジョブではなく)WPML 文字列翻訳を通じて翻訳されます。
  • reCAPTCHA: 訪問者向けのエラーメッセージはWPML 文字列翻訳を通じて翻訳されます。

よくある落とし穴

  • 埋め込みリンク付きの承諾確認が間違った言語のプライバシーページを指している。高度な翻訳エディタで承諾確認の翻訳を編集し、言語ごとのリンク先を設定してください。
  • CF7 6.0以降でのショートコードのハッシュの不一致。WPML Multilingual for CF7 1.3.2(2024年11月)で解決されました。この問題が発生した場合はアップグレードしてください。
  • メッセージタブの翻訳が表示されない。WPML 文字列翻訳が有効になっていること、およびメッセージタブを編集した後にフォームが再度翻訳に送信されたことを確認してください。
  • 翻訳内のメールタグが空の文字列に解決される。メールタグ内のフォームタグ名(例:[your-name])がフォーム内のフォームタグと一致しているか確認してください。翻訳によってメールタグの解決が壊れることはありませんが、翻訳後にフォームタグの名前を変更すると壊れます。

執筆者: Amir · 最終更新日: 2026年7月2日

執筆者:Amir · 最終更新日:2026年7月2日