2011-01-24 4 views
4

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

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

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

+0

Это * Спасибо * появляется довольно большой;) – shamittomar

ответ

4

Добро пожаловать в SO!

При условии, ваш Апач 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 
} 
+1

Спасибо! Это в значительной степени это сделало. Все, что мне нужно было сделать, это отредактировать /plugins/system/jfrouter.php примерно в строке 145, добавив ваш код с той же логикой, что и строка 145. – Michael

+0

@Michael Glad Я мог бы помочь. –

0

Что делать, если у вас был выбор case в php на основе запроса на получение?

Нечто подобное domain.com/?lang=de в сочетании с

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

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

+0

Я предполагаю, что это не случай переключения, но вы получаете идею. – Bhavya

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; 
    } 
} 
Смежные вопросы