我正在为一个多语言网站寻找一个解决方案。我有四个领域:
根据该领域,合适的语言必须是loaded.The语言,由?lang=来决定。我试过用.htaccess写电影,但它不适合我的需要。当用户访问domain.com/page时,.htaccess不处理规则。所以我想用php来做。当前,语言和cookie由这个片段php设置:
<?php
session_start();
header('Cache-control: private'); // IE 6 FIX
if(isSet($_GET['lang']))
{
$lang = $_GET['lang'];
// register the session and set the cookie
$_SESSION['lang'] = $lang;
setcookie('lang', $lang, time() + (3600 * 24 * 30));
}
else if(isSet($_SESSION['lang']))
{
$lang = $_SESSION['lang'];
}
else if(isSet($_COOKIE['lang']))
{
$lang = $_COOKIE['lang'];
}
else
{
$lang = 'en_eu';
}
switch ($lang) {
case 'nl_be':
$lang_file = 'nl_be.php';
break;
case 'nl_nl':
$lang_file = 'nl_nl.php';
break;
case 'en_us':
$lang_file = 'en_us.php';
break;
case 'en_uk':
$lang_file = 'en_us.php';
break;
case 'en_eu':
$lang_file = 'en_eu.php';
break;
default:
$lang_file = 'en_eu.php';
}
include_once 'components/languages/'.$lang_file;
?>我正在考虑添加一些行来确定域名,并添加一些if语句来根据域来确定语言。但我不知道该怎么做,这是否是正确的做法。
<?php
$url = "//{$_SERVER['HTTP_HOST']}";
if ($url == domain.be) {
$lang = 'nl_be';
}
elseif ($url == domain.uk) {
$lang = 'en_uk';
}
else ( ) {
$lang = 'en_us';
}
?>发布于 2016-01-30 11:28:56
看完这篇文章后:https://support.google.com/webmasters/answer/182192?hl=en
谷歌建议在他们自己的网址上保留不同的语言版本。
由于您已经拥有顶级域名,我只需检查域名并从中确定语言。
然后在每一页的顶部给用户提供语言选择链接:
English: example.com/node/1
French: example.fr/node/1
etc.隐藏当前语言链接。
并在头中添加链接元素以补充上述内容:
<link rel="alternate" hreflang="es" href="http://example.es/node/1" />发布于 2016-01-30 09:45:38
我在这个线程How to default to another language based on domain中找到了答案
它在SetEnvIf中使用.htaccess,而php处理其余的
.htaccess中的代码:
SetEnvIf Host "\.be$" SITE_LANGUAGE=nl_be
SetEnvIf Host "\.uk$" SITE_LANGUAGE=en_uk然后用以下方式调用SITE_LANGUAGE:
$_SERVER['SITE_LANGUAGE'];PHP中的代码:
<?php
session_start();
header('Cache-control: private'); // IE 6 FIX
$lang = $_SERVER['SITE_LANGUAGE'];
if(isSet($_GET['lang']))
{
$lang = $_GET['lang'];
// register the session and set the cookie
$_SESSION['lang'] = $lang;
setcookie('lang', $lang, time() + (3600 * 24 * 30));
}
else if(isSet($_SESSION['lang']))
{
$lang = $_SESSION['lang'];
}
else if(isSet($_COOKIE['lang']))
{
$lang = $_COOKIE['lang'];
}
else
{
$lang = 'en_eu';
}
switch ($lang) {
case 'nl_be':
$lang_file = 'nl_be.php';
break;
case 'nl_nl':
$lang_file = 'nl_nl.php';
break;
case 'en_us':
$lang_file = 'en_us.php';
break;
case 'en_uk':
$lang_file = 'en_us.php';
break;
case 'en_eu':
$lang_file = 'en_eu.php';
break;
default:
$lang_file = 'en_eu.php';
}
include_once 'components/languages/'.$lang_file;
?>https://stackoverflow.com/questions/35100051
复制相似问题