Как по умолчанию на другой язык на основе домена
-
24-10-2019 - |
Вопрос
Я использую Joomla с компонентом перевода Joomfish. Этот сайт имеет немецкие и китайские переводы. Я пытаюсь выяснить, как заставить домен .de по умолчанию в перевод немецкого языка (который будет загружаться, если он будет посещать как Domain.com/de или Domain.com/cn).
Кто -нибудь знает способ сделать это с, возможно, .htaccess (какой -то перенаправление)? Или, возможно, PHP? Может быть, установить какую -то переменную сеанса на основе домена (PHP_URL_HOST)?
Прямо сейчас у меня есть настройка Apache2 с wwww.domain.com в качестве основного виртуального хоста, а также .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;
}
}
Что, если у вас был случай в PHP на основе запроса GET?
Что-то типа domain.com/?lang=de
в сочетании с
$lang = "default";
if (isset($_GET['lang'])) {
$lang = $_GET['lang'];
}
if ($lang != "default") {
if($lang == "de") {
....
в вашем коде. ....
будет там, где вы загружаете свой переводчик или языковой ресурс.