【问题标题】:How to default to another language based on domain如何根据域默认使用另一种语言
【发布时间】:2011-01-24 17:24:15
【问题描述】:

我正在使用带有 JoomFish 翻译组件的 Joomla。这个网站有德文和中文翻译。我想弄清楚的是如何让 .de 域默认为德语翻译(如果作为 domain.com/de 或 domain.com/cn 访问,它将加载)。

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

现在我有 apache2 设置,以 wwww.domain.com 作为主要虚拟主机,.de 和 .cn 作为别名。

【问题讨论】:

  • Thank You 看起来很大 ;)

标签: php .htaccess joomla multilingual joomfish


【解决方案1】:

欢迎来到 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
}

【讨论】:

  • 谢谢!这几乎做到了。我所要做的就是在大约第 145 行编辑 /plugins/system/jfrouter.php 添加您的代码,其逻辑与第 145 行相同。
【解决方案2】:

谢谢!添加 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;
    }
}

【讨论】:

    【解决方案3】:

    如果您在 php 中有一个基于 get 请求的选择案例怎么办?

    类似domain.com/?lang=de 的东西与

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

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

    【讨论】:

    • 我猜这不是开关盒,但你明白了。
    猜你喜欢
    • 1970-01-01
    • 2021-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-31
    • 1970-01-01
    • 1970-01-01
    • 2014-03-12
    相关资源
    最近更新 更多