2011-01-24 52 views
4

我使用Joomla和JoomFish翻譯組件。本網站有德文和中文翻譯。我試圖弄清楚的是如何讓.de域默認爲德語翻譯(如果以domain.com/de或domain.com/cn的身份訪問,則會加載該域)。如何根據域名默認爲其他語言

有沒有人知道一種方式來做也許.htaccess(某種重定向)?或者可能PHP?也許根據域(PHP_URL_HOST)設置某種會話變量?

現在我有apache2安裝與wwww.domain.com作爲主要虛擬主機,和.de和.cn作爲別名。

+0

這*謝謝*出現相當大的;) – shamittomar 2011-01-24 17:26:52

回答

4

歡迎來到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 
} 
+1

謝謝!這幾乎做到了。我所要做的就是在第145行編輯/plugins/system/jfrouter.php,並用與145行相同的邏輯添加代碼。 – Michael 2011-01-24 18:15:12

+0

@Michael很高興能幫到你。 – 2011-01-24 18:38:29

0

如果有什麼你有一個選擇在基於獲取請求的PHP情況下?

喜歡的東西domain.com/?lang=de結合

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

在你的代碼。 ....將是您加載翻譯或語言資源的地方。

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; 
    } 
}