1 つは、視聴者がどの言語を希望しているか、2 番目に、どの言語を提供できるかです。
$SystemLocales = explode("\n", shell_exec('locale -a'));
$BrowserLocales = explode(",",str_replace("-","_",$_SERVER["HTTP_ACCEPT_LANGUAGE"])); // brosers use en-US, Linux uses en_US
for($i=0;$i<count($BrowserLocales);$i++) {
list($BrowserLocales[$i])=explode(";",$BrowserLocales[$i]); //trick for "en;q=0.8"
for($j=0;$j<count($SystemLocales);$j++) {
if ($BrowserLocales[$i]==substr($SystemLocales[$j],0,strlen($BrowserLocales[$i]))){
setlocale(LC_ALL, $SystemLocales[$j]);
break 2; // found and set, so no more check is needed
}
}
}
たとえば、鉱山システムは次のサービスのみを提供します。
私のブラウザ言語は pl、en-US、en => なので、正しいロケールは pl_PL.UTF-8 だけです。
成功した比較が見つからない場合 - setlocale はまったくありません。