我将Joomla与Joomfish翻译组件一起使用。该网站有德语和中文翻译。我要弄清楚的是如何使.de域默认为德语翻译(如果访问为domain.com/de或domain.com/cn,它将加载)。

有谁知道一种方法可以使用.htaccess(某种重定向)来做到这一点?还是可能是PHP?也许基于域(php_url_host)设置某种会话变量?

现在,我将wwww.domain.com的Apache2设置为主要虚拟主机,并且.de和.cn作为别名。

有帮助吗?

解决方案

欢迎来到!

提供,您的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
}

其他提示

谢谢!添加HTACCESS代码后,我要做的就是编辑 /plugins/system/jfrouter.php 大约145左右:

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;
    }
}

如果您根据GET请求在PHP中有选择的案例怎么办?

就像是 domain.com/?lang=de 和这个结合

$lang = "default";
if (isset($_GET['lang'])) {
    $lang = $_GET['lang'];
}   
if ($lang != "default") {
    if($lang == "de") {
        ....

在您的代码中。 .... 将是您加载翻译器或语言资源的地方。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top