5

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

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

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

4

3 回答 3

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
}
于 2011-01-24T17:29:31.323 回答
3

谢谢!添加 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;
    }
}
于 2011-01-24T18:28:26.723 回答
0

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

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

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

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

于 2011-01-24T17:32:41.097 回答