Google Tag ManagerのカスタムJavaScript変数を使うと、AIシュリーマンで現在表示している言語コードをGA4へ渡せます。
通常モードとSEOオプションでは、言語の判定方法が異なります。
- 通常モード:
?lang=、localStorage、ブラウザ言語の順に判定
- SEOサブドメイン:
en.example.com等のホスト名を優先
- SEOディレクトリ:
example.com/en/等の先頭パスを優先
カスタムJavaScript変数を作成する
Google Tag Managerで、次の順に操作します。
- 「変数」を開く
- 「ユーザー定義変数」の「新規」をクリック
- 変数タイプに「カスタムJavaScript」を選択
- 次のコードを入力
- 変数名を
customLanguage等にして保存
設定例
次の例は、元言語が日本語、親ドメインが
example.com、翻訳先言語が英語・簡体字・繁体字・韓国語の場合です。mode、baseDomain、sourceLanguage、supportedLanguages は、対象サイトに合わせて変更してください。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へ送信する

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