從URL

2011-11-10 44 views
0
隱藏gettext參數(locale = en)

我使用PHP的gettext擴展將我的網站翻譯成不同的語言。我有一個改變基於URL的語言三個環節:從URL

$locale = false; 
if (isSet($_GET["locale"])){ 
    $locale = $_GET["locale"]; 
    setcookie("locale", $locale, time()+60*60*24*30, "/"); 
} 
if (!$locale && isSet($_COOKIE["locale"])){ 
    $locale = $_COOKIE["locale"]; 
} 
putenv("LC_ALL=$locale"); 
putenv("LANGUAGE=$locale"); 
setlocale(LC_ALL, $locale); 
bindtextdomain("messages", "./locale"); 
bind_textdomain_codeset("messages", "UTF-8"); 
textdomain("messages"); 

<a href="?locale=en">English</a><a href="?locale=ru">Russian</a>

我想保持網址乾淨,有那些?lang=en參數進行相應的URL。所以,當用戶點擊一個lin到products.php,它將保持原樣並不顯示products.php?locale=ru我該怎麼做?

+0

你可以設置一個cookie,對不對?您的代碼已經爲此準備好了 –

+0

實際上,您都不應該這樣做。爲此,在$ _SERVER [「HTTP_ACCEPT_LANGUAGE」]中有一個頭文件。只使用Cookie和語言按鈕作爲後備,但不能再使用。 – mario

+0

Pekka:我沒有寫,我在一些網站 – tmrhmdv

回答

0

如果你想

  • 的用戶能夠挑選語言自如,瀏覽器語言

  • 的用戶能夠有不同的標籤有不同語言版本的打開你的site

然後沒有辦法將語言信息放在URL的某處。無論是使用GET參數,像你這樣做,或者掩蓋其使用mod_rewrite弄成

www.domain.com/en/pagename.php 

如果你罰款的標籤問題,然後設置一個cookie的語言。其實,你上面顯示的代碼已經做到了。僅當實際切換語言時,?lang=xx參數纔是必需的。

+0

使用mod_rewrite是我的計劃B.我只是想知道如何以Twitter和Facebook的方式進行操作,URL中沒有參數。 – tmrhmdv

+0

@delrt他們最有可能使用數據庫中存儲的有關當前登錄用戶的信息。 –