我正在尝试实现此代码,以便为所选的德语,西班牙语或英语浏览器语言加载不同的文件。 案件是我的西班牙语IE我仍然得到英文文件。
<?php
if (is_home()) {
if (preg_match('/de-DE/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
include(TEMPLATEPATH . '/german-navbar.php' );
}
elseif (preg_match('/es-ES/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
include(TEMPLATEPATH . '/spanish-navbar.php' );
}
else {
include(TEMPLATEPATH . '/english-navbar.php' );
}
}
我同时使用了HTTP_ACCEPT_LANGUAGE
和HTTP_USER_AGENT
。
这是网站的测试,如果有人想检查它,请使用德语或西班牙语作为浏览器中的首选语言:http://paragraphe.org/janette/
我的英文版火狐用得很好,但我不能确定这些代码适用于西班牙语和德语版。
我找到了代码段in this SO thread,但此时我有点迷失。
非常感谢任何输入,
编辑:代码在Firefox(但不是IE)中有效。
答案 0 :(得分:3)
首先,您可以使用firefox的User Agent Switcher扩展名伪造用户并对其进行测试,但您必须伪造HTTP_ACCEPT_LANGUAGE请求的标头,例如使用Modify Headers扩展(也允许您更改用户代理和标题)
哦,它在德语中不起作用:Warning: include(/home/paragrap/public_html/janette/wp-content/themes/Janette/german-home.php) [function.include]: failed to open stream: No such file or directory in /home/paragrap/public_html/janette/wp-content/themes/Janette/home.php on line 4
Warning: include() [function.include]: Failed opening '/home/paragrap/public_html/janette/wp-content/themes/Janette/german-home.php' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/paragrap/public_html/janette/wp-content/themes/Janette/home.php on line 4
答案 1 :(得分:2)
请试试这个:
只需提供$ availableLanguages作为数组('en','de','es')
function get_client_language($ availableLanguages,$ default ='en'){
if (isset($_SERVER['HTTP_ACCEPT_language'])) {
$langs=explode(',',$_SERVER['HTTP_ACCEPT_language']);
//start going through each one
foreach ($langs as $value){
$choice=substr($value,0,2);
if(in_array($choice, $availableLanguages)){
return $choice;
}
}
}
return $default;
}