日本語と英語のページをCGI内で判別して出し分け
Webブラウザの言語設定を取得して、日本語ならば日本語ページ、それ以外ならば英語ページを表示するようにする。ApacheならMultiviewsを使う案もあるけど、CGIの中で判断して出し分ける方法を取ろう。
環境変数HTTP_ACCEPT_LANGUAGEには、カンマ区切りで以下のように入っている。
ja,en-us;q=0.7,en;q=0.3 (Firefox 11.0) ja-JP,en-us;q=0.5 (Internet Explorer 8)
ので、この先頭に指定されている言語に"ja"がマッチすれば日本語で表示してやればいいかな。
.... my @acceptLanguage = split(/,/, $ENV{'HTTP_ACCEPT_LANGUAGE'}); my $template_file; if ($acceptLanguage[0] =~ m/ja/) { $template_file = 'index_ja.html'; } else { $template_file = 'index_en.html'; } my $template = HTML::Template->new(filename => $template_file); print $template->output; ....