本文へ移動

サイト設定

GA4に現在適用されている言語コードを送信したい

この記事の内容
Google Tag ManagerのカスタムJavaScript変数を使うと、AIシュリーマンで現在表示している言語コードをGA4へ渡せます。
通常モードとSEOオプションでは、言語の判定方法が異なります。
  • 通常モード:?lang=、localStorage、ブラウザ言語の順に判定
  • SEOサブドメイン:en.example.com 等のホスト名を優先
  • SEOディレクトリ:example.com/en/ 等の先頭パスを優先

カスタムJavaScript変数を作成する

Google Tag Managerで、次の順に操作します。
  1. 「変数」を開く
  1. 「ユーザー定義変数」の「新規」をクリック
  1. 変数タイプに「カスタムJavaScript」を選択
  1. 次のコードを入力
  1. 変数名を customLanguage 等にして保存

設定例

次の例は、元言語が日本語、親ドメインが example.com、翻訳先言語が英語・簡体字・繁体字・韓国語の場合です。
modebaseDomainsourceLanguagesupportedLanguages は、対象サイトに合わせて変更してください。mode は通常モードなら none、SEOサブドメイン方式なら subdomain、SEOディレクトリ方式なら directory を指定します。
function() { var mode = 'none'; // none | subdomain | directory var baseDomain = 'example.com'; var sourceLanguage = 'ja'; var fallbackLanguage = 'en'; var supportedLanguages = ['ja', 'en', 'zh', 'zh-tw', 'ko']; function normalizeLanguage(code) { if (!code) return null; var normalized = String(code).toLowerCase(); if (normalized === 'zh-hk') return 'zh-tw'; if (normalized === 'zh-cn') return 'zh'; if (normalized === 'zh-tw') return 'zh-tw'; if (supportedLanguages.indexOf(normalized) >= 0) return normalized; var primary = normalized.split('-')[0]; return supportedLanguages.indexOf(primary) >= 0 ? primary : null; } function getSeoLanguage() { if (mode === 'none') return null; var hostname = window.location.hostname.toLowerCase().replace(/^www\./, ''); var normalizedBase = baseDomain.toLowerCase().replace(/^www\./, ''); if (mode === 'directory' && hostname === normalizedBase) { var firstPath = window.location.pathname.split('/').filter(Boolean)[0]; return supportedLanguages.indexOf(firstPath) >= 0 ? firstPath : sourceLanguage; } if (mode === 'subdomain') { if (hostname === normalizedBase) return sourceLanguage; var suffix = '.' + normalizedBase; if (hostname.slice(-suffix.length) === suffix) { var subdomain = hostname.slice(0, -suffix.length); return supportedLanguages.indexOf(subdomain) >= 0 ? subdomain : null; } } return null; } var seoLanguage = getSeoLanguage(); if (seoLanguage) return seoLanguage; var queryLanguage = normalizeLanguage( new URLSearchParams(window.location.search).get('lang') ); if (queryLanguage) return queryLanguage; var storedLanguage = null; try { storedLanguage = normalizeLanguage(localStorage.getItem('lang')); } catch (e) {} if (storedLanguage) return storedLanguage; var browserLanguage = normalizeLanguage( window.navigator.language || (window.navigator.languages && window.navigator.languages[0]) ); return browserLanguage || fallbackLanguage || sourceLanguage; }

GA4へ送信する

notion image
作成した変数を、GA4イベントまたはGA4設定タグのイベントパラメータとして設定します。
例:
パラメータ名: ai_translate_language 値: {{customLanguage}}

注意事項

  • supportedLanguages には、元言語と契約中の翻訳先言語だけを設定してください。
  • SEOで独自ドメインマッピングを使用している場合は、ドメインごとの対応表を別途コードへ追加してください。
  • リロードなしのページ内言語切り替えを使用する場合は、GA4イベントを送信するタイミングで変数を再評価してください。
  • Google Tag Managerのプレビューモードで、通常URL、?lang=、SEOサブドメイン、SEOディレクトリをそれぞれ確認してください。

解決しないときは

サイトのURLとお困りの内容を添えて、お問い合わせください。

サポートに問い合わせる