如何默认使用基于域的其他语言

时间:2011-01-24 17:24:16

标签: php .htaccess joomla multilingual joomfish

我正在使用Joomla和JoomFish翻译组件。本网站提供德语和中文翻译。我想弄清楚的是如何将.de域名默认为德语翻译(如果以domain.com/de或domain.com/cn访问,则会加载。)

有没有人知道如何使用.htaccess(某种重定向)来做到这一点?或者可能是PHP?也许根据域(PHP_URL_HOST)设置某种会话变量?

现在我设置了apache2,其中wwww.domain.com是主虚拟主机,.de和.cn是别名。

3 个答案:

答案 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") {
        ....
你的代码中的

....将是您加载翻译人员或语言资源的地方。