基本的にはフロントエンドでの判定を推奨しています。
例えばSEOオプションを適用ドメインが example.com で適用後ドメインが en.example.com の場合だとしたときに、
en
を検出して取得するサンプルコードとしては以下の通りです。const getLanguageCode = (): string => { const hostname = window.location.hostname; const match = hostname.match(/^([a-z]{2, 5})..*$/); if (match && match[1]) { const languageCode = match[1]; const validLanguages = ['en', 'ja', 'fr', 'de', 'es']; // 言語コードを必要に応じて書き換える return validLanguages.includes(languageCode) ? languageCode : 'en'; } return 'en'; // デフォルト言語 };
サーバサイドの処理で上記の判定を行うことも可能です。
ただ、サーバサイドで行う場合は逐次サーバサイドの処理を通してレンダリングが必要となりますので、CDNを経由してレスポンスを返すことが一部難しくなるため基本的には前述のフロントエンド側での判定を推奨しており、アーキテクチャの特性上やむを得ない場合での利用の想定です。
AIシュリーマン側から各Originサイトのリクエスト時、Headerに
Target-Language
というパラメータで翻訳先言語を指定しているため、そちらを取得することで言語コードが判別可能です。PHPの場合
$headers = getallheaders(); $targetLanguage = $headers['Target-Language'] ?? null;
Ruby(Rails)場合
def some_action target_language = request.headers['Target-Language'] end
nodejs(Express)の場合
app.get('/some-route', (req, res) => { const appName = req.headers['app-name']; const targetLanguage = req.headers['target-language']; const siteId = req.headers['ai-translate-site-id']; });