我一直在寻找一段时间,但似乎无法找到实现这一目标的正确方法:
为了创建多语言(2)网站,我正在考虑使用以下文件夹结构:
DOMAIN
www.domain.com/index.php
NL-folder
www.domain.com/nl/index.php (alternative home.php?)
www.domain.com/nl/pagina2.php
...
EN-folder
www.domain.com/en/index.php (alternative home.php?)
www.domain.com/nl/page2.php
...
我读到有些人觉得www.domain.com/index.php
语言选择页面很烦人。
因此,我认为此页面应以首选语言显示与索引/主页相同的内容。我听说这可以通过使用 headerfield 来完成Accept-Language
。或者,我应该在www.domain.com/nl/index.php
那里显示内容或重定向(为了能够进行与语言相关的查询,我觉得我必须重定向www.domain.com/index.php
到特定语言的页面,以便可以选择语言?)。当然,用户以后可以更改语言...
我完全坚持如何正确实现这一目标。
我唯一能想到的就是重定向。使用http://www.thefutureoftheweb.com/blog/use-accept-language-header上的代码,这将变为:
$langs = array();
if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
preg_match_all('/([a-z]{1,8}(-[a-z]{1,8})?)\s*(;\s*q\s*=\s*(1|0\.[0-9]+))?/i', $_SERVER['HTTP_ACCEPT_LANGUAGE'], $lang_parse);
if (count($lang_parse[1])) {
// create a list like "en" => 0.8
$langs = array_combine($lang_parse[1], $lang_parse[4]);
// set default to 1 for any without q factor
foreach ($langs as $lang => $val) {
if ($val === '') $langs[$lang] = 1;
}
// sort list based on value
arsort($langs, SORT_NUMERIC);
}
}
// look through sorted list and use first one that matches our languages
foreach ($langs as $lang => $val) {
if (strpos($lang, 'nl') === 0) {
header("Location: http://domain.com/nl/index.php");
} else if (strpos($lang, 'en') === 0) {
header("Location: http://domain.com/en/index.php");
}
}
我的例子可以吗,还是我应该做不同的事情?