如何基于域默认为另一种语言
-
24-10-2019 - |
题
我将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") {
....
在您的代码中。 ....
将是您加载翻译器或语言资源的地方。
不隶属于 StackOverflow