我是一名在html / css之外几乎没有编码知识的设计师。在网上阅读我发现很多人使用http_accept_language引用了一些php,但找不到一步一步的做法"做到这一点,做到这一点"解释因此我不知道如何处理/在哪里放置人们为工作提供的代码。
我正在开发一个带有英文主页的网站。在那里,用户可以选择两个分支。一个分支将仅使用英语,另一个分支将使用英语和3种斯堪的纳维亚语言。非英语页面是预翻译的,不是由谷歌即时创建的。
我希望在到达主要家庭后,选择进入4语言部分的用户将首先使用他们浏览器的语言提供一个页面(在所有页面上总会有一个手动菜单)如果愿意,请选择另一种语言。)
这是php的工作吗?如果是这样,我会感谢一些代码,并帮助我们使用它。
答案 0 :(得分:2)
您可以使用HTTP_ACCEPT_LANGUAGE
标头。将支持的语言保存到数组,然后使用foreach
循环标题。
$languages = array('en', 'fi', 'sv', 'no');
$header = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
foreach($header as $lang) {
if(in_array($lang, $languages)) {
header("Location: $lang.php"); // i.e. fi.php or se.php
break;
}
}
HTTP_ACCEPT_LANGUAGE
包含以下内容:
接受语言:en-gb,en; q = 0.5
如您所见,有多种语言,en-gb
和en
。这就是为什么循环标题很聪明的原因。如果您更喜欢功能,请参阅以下内容:
function get_user_lang() {
$languages = array('en', 'fi', 'sv', 'no');
$header = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
foreach($header as $lang) {
if(in_array($lang, $languages)) {
return $lang; // i.e. fi.php or se.php
break;
}
}
}
echo 'Your language is ' . get_user_lang();
循序渐进指南:
为每种语言创建新文件。将它们命名为:“fi.php”或“se.php”。
将第一个代码部分放在主页的顶部。该文件必须包含.php
结尾,因此它必须是php文件。如果你不明白,那应该放在哪里:
<?php
$languages = array('en', 'fi', 'sv', 'no');
$header = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
foreach($header as $lang) {
if(in_array($lang, $languages)) {
header("Location: $lang.php"); // i.e. fi.php or se.php
break;
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>title</title>
</head>
<body>
contents
</body>
</html>
在浏览器中导航到您的主页。如果您的浏览器的语言是英语,它将重定向到“en.php”,如果瑞典语; “se.php”等等。
您可以看到来自this link的所有语言代码,瑞典语是“sv”。
答案 1 :(得分:0)
如果您有INTL扩展程序,则可以使用Locale::acceptFromHttp()
。
以下是PHP documentation的示例。
$locale = Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
echo $locale;
$locale
将类似于“en_US”。如果您只想要语言而不是国家,请使用以下内容:
$locale = explode('_', Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']));
echo $locale[0];