我正在使用Joomla和JoomFish翻译组件。本网站提供德语和中文翻译。我想弄清楚的是如何将.de域名默认为德语翻译(如果以domain.com/de或domain.com/cn访问,则会加载。)
有没有人知道如何使用.htaccess(某种重定向)来做到这一点?或者可能是PHP?也许根据域(PHP_URL_HOST)设置某种会话变量?
现在我设置了apache2,其中wwww.domain.com是主虚拟主机,.de和.cn是别名。
答案 0 :(得分:5)
欢迎来到SO!
如果您的Apache已启用mod_setenvif
,请将其添加到您的.htaccess
文件中:
# Site accessed via "example.de" or "example.cn"
SetEnvIf Host "\.de$" SITE_LANGUAGE=de
SetEnvIf Host "\.cn$" SITE_LANGUAGE=zh
# URL dependent
SetEnvIf Request_URI "^/de/" SITE_LANGUAGE=de
SetEnvIf Request_URI "^/cn/" SITE_LANGUAGE=zh
然后,在PHP脚本中,您可以查询SITE_LANGUAGE
:
switch($_SERVER['SITE_LANGUAGE']) {
case 'de':
// german stuff
case 'zh':
// chinese stuff
}
答案 1 :(得分:3)
谢谢!添加htaccess代码后,我所要做的就是在大约145左右编辑/plugins/system/jfrouter.php
:
if (isset($_SERVER['SITE_LANGUAGE'])) {
switch($_SERVER['SITE_LANGUAGE']) {
case 'de':
$client_lang = 'de';
$lang_known = true;
JRequest::setVar('lang', 'de' );
break;
case 'zh':
$client_lang = 'zh';
$lang_known = true;
JRequest::setVar('lang', 'zh' );
break;
}
}
答案 2 :(得分:0)
如果您根据get请求在php中选择了一个案例怎么办?
像domain.com/?lang=de
和
$lang = "default";
if (isset($_GET['lang'])) {
$lang = $_GET['lang'];
}
if ($lang != "default") {
if($lang == "de") {
....
你的代码中的。 ....
将是您加载翻译人员或语言资源的地方。