Как по умолчанию использовать другой язык в зависимости от домена - PullRequest
5 голосов
/ 24 января 2011

Я использую Joomla с компонентом перевода JoomFish. Этот сайт имеет немецкий и китайский переводы. То, что я пытаюсь выяснить, это как установить домен .de по умолчанию для перевода на немецкий язык (который будет загружен, если посетить как domain.com/de или domain.com/cn).

Кто-нибудь знает способ сделать это с помощью, возможно, .htaccess (какое-то перенаправление)? Или, возможно, PHP? Может быть, установить какую-то переменную сеанса на основе домена (PHP_URL_HOST)?

Сейчас у меня есть настройка apache2 с wwww.domain.com в качестве основного виртуального хоста, а .de и .cn в качестве псевдонимов.

Ответы [ 3 ]

5 голосов
/ 24 января 2011

Добро пожаловать в 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
}
3 голосов
/ 24 января 2011

Спасибо! После добавления кода 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;
    }
}
0 голосов
/ 24 января 2011

Что делать, если у вас в PHP выбран регистр выбора, основанный на запросе get?

Что-то вроде domain.com/?lang=de в сочетании с

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

в вашем коде. .... - это место, где вы загружаете свой переводчик или языковой ресурс.

...