Php 基于HTTP\u ACCEPT\u语言和数据库语言的语言
我有一个用3种语言制作的网站,但可能会扩展。 因此,我在数据库上创建了一个表,在其中插入网站的语言 作为index.php,我有一个脚本。如果检测到的URI为“/”,脚本将重定向到/language/index.php 我现在想有一个脚本,它基于HTTP_ACCEPT_语言自动重定向。 我的问题是,我制作的以下脚本只在第一次foreach运行时起作用Php 基于HTTP\u ACCEPT\u语言和数据库语言的语言,php,multilingual,Php,Multilingual,我有一个用3种语言制作的网站,但可能会扩展。 因此,我在数据库上创建了一个表,在其中插入网站的语言 作为index.php,我有一个脚本。如果检测到的URI为“/”,脚本将重定向到/language/index.php 我现在想有一个脚本,它基于HTTP_ACCEPT_语言自动重定向。 我的问题是,我制作的以下脚本只在第一次foreach运行时起作用 $abbr = $link->query("SELECT abbr AS langs FROM LANGS"); while($langs_
$abbr = $link->query("SELECT abbr AS langs FROM LANGS");
while($langs_db = mysqli_fetch_array($abbr)){
$site_langs[] = $langs_db['langs'];
}
$client_lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
foreach($site_langs as $lang){
switch($client_lang){
case $client_lang == $lang:
header("location: http://www.mysite.com/$lang/index.php");
break;
default:
header("location: http://www.mysite.com/$lang/index.php");
break;
}
}
我想到了一个解决方案,比如:
case $client_lang == $lang:
$find "location: http://www.mysite.com/$lang/index.php";
break;
default:
$not_find = "location: http://www.mysite.com/$lang/index.php";
break;
然后:
if($find != ''){
header($find);
}else{
header(not_find);
}
但我不确定这是个好主意
谢谢大家!
// Set the default language as a fall back
$default_lang='en';
// Have an array with all languages your site supports
$langs=array('en', 'es', 'pt', /* etc... */);
// Query the browser's first preferred language
$client_lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);
// See if the language is supported otherwise redirect use the default one
$client_lang = (in_array($client_lang, $langs) ? $client_lang : $default_lang);
header("Location: /$client_lang/index.php");
可选地,尽管您可能需要考虑GETTEX: