我正在使用带有 JoomFish 翻译组件的 Joomla。这个网站有德文和中文翻译。我想弄清楚的是如何让 .de 域默认为德语翻译(如果作为 domain.com/de 或 domain.com/cn 访问,它将加载)。
有谁知道用 .htaccess (某种重定向)来做到这一点的方法?或者可能是PHP?也许根据域(PHP_URL_HOST)设置某种会话变量?
现在我有 apache2 设置,其中 wwww.domain.com 作为主要虚拟主机,.de 和 .cn 作为别名。
我正在使用带有 JoomFish 翻译组件的 Joomla。这个网站有德文和中文翻译。我想弄清楚的是如何让 .de 域默认为德语翻译(如果作为 domain.com/de 或 domain.com/cn 访问,它将加载)。
有谁知道用 .htaccess (某种重定向)来做到这一点的方法?或者可能是PHP?也许根据域(PHP_URL_HOST)设置某种会话变量?
现在我有 apache2 设置,其中 wwww.domain.com 作为主要虚拟主机,.de 和 .cn 作为别名。
欢迎来到 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
}
谢谢!添加 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;
}
}
如果您在 php 中有一个基于 get 请求的选择案例怎么办?
domain.com/?lang=de
类似的东西
$lang = "default";
if (isset($_GET['lang'])) {
$lang = $_GET['lang'];
}
if ($lang != "default") {
if($lang == "de") {
....
在你的代码中。....
将是您加载翻译器或语言资源的地方。