我是一名设计师,除了html/css之外,几乎没有编码知识。在网上阅读时,我发现许多使用http_accept_language引用了一些php,但找不到逐步的"做这个,做那个"解释,因此我不知道如何处理/在哪里放置人们为工作提供的代码。
我正在开发一个带有英文主页的网站。在那里,用户可以选择两个分支。一个分支将仅使用英语,另一个分支使用英语以及 3 种斯堪的纳维亚语言。非英语页面是预先翻译的,而不是由谷歌即时创建的。
我希望在到达主主页后,选择进入 4 种语言部分的用户最初将获得浏览器语言的页面(在所有页面上,如果愿意,将始终有一个菜单可以手动选择另一种语言)。
这是php的工作吗?如果是这样,我将不胜感激一些代码和如何使用它的帮助。
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"等等。
您可以从此链接查看所有语言代码,瑞典语是"sv"。
如果您有 INTL 扩展名,您可以使用 Locale::acceptFromHttp()
.
下面是 PHP 文档中的示例。
$locale = Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']);
echo $locale;
$locale
将是类似于"en_US"的东西。如果您只想要语言而不是国家/地区,请使用如下所示的内容:
$locale = explode('_', Locale::acceptFromHttp($_SERVER['HTTP_ACCEPT_LANGUAGE']));
echo $locale[0];