PHPで言語ブラウザを検出する方法と、別の言語に切り替えるための言語hrefアンカーを検出する方法を知っています。 locale_accept_from_http($_SERVER['HTTP_ACCEPT_LANGUAGE']);
を持っていませんブラウザ言語の検出を追加した後、言語href anchor(hl)が動作を停止します
私の古いコード:
if (isset($_GET['hl']))
{
$langOption = $_GET['hl'];
}
else
{
$langOption = '';
}
switch ($langOption):
case 'ca':
$language = 'cat';
break;
case 'el':
$language = 'el';
break;
case 'en':
$language = 'en';
break;
case 'en_GB':
$language = 'en_GB';
break;
case 'es':
$language = 'es';
break;
case 'fr':
$language = 'fr';
break;
case 'ka':
$language = 'ka';
break;
case 'nl':
$language = 'nl';
break;
case 'pt_PT':
$language = 'pt_PT';
break;
case 'pt_BR':
$language = 'pt_BR';
break;
case 'ro':
$language = 'ro';
break;
default:
$language = 'pt_BR';
break;
endswitch;
require_once("idiomas/{$language}.php");
これらの古いコードは言語hrefのアンカーのために非常に働きました。 Like:
<a class="waves-effect" href="?hl=en_GB" name="en">English</a>
<a class="waves-effect" href="?hl=pt_BR" name="pt_BR">Português Brasileiro</a>
コードを縮め、節約し、短縮するコードに変更しました。ここでは新しいコードされている:あなたはポルトガル語、英語のままでページに切り替えた場合ので、
$language = locale_accept_from_http($_SERVER['HTTP_ACCEPT_LANGUAGE']);
if (isset($_GET['hl']))
{
$lang = $_GET['hl'];
}
else
{
$lang = '';
}
switch ($lang):
case $language:
$language = $language;
break;
default:
$language = $language;
break;
endswitch;
require_once("idiomas/{$language}.php");
ブラウザ言語の検出のみでは非常によく働いたが、言語のhrefアンカー(HL)は動作しません。
のような類似:
switch ($lang):
case "en":
$language = "en";
break;
case "en_GB":
$language = "en_GB";
break;
case "pt_BR":
$language = "pt_BR";
break;
case "pt_PT":
$language = "pt_PT";
break;
endswitch;
しかし、私はこれらの古いコードを繰り返すために好きではないだろう。私は結露を保ち、同じ新しいコードを短縮したい。