2011-11-10 6 views
0

PHPのgettext拡張機能を使用して、私のウェブサイトをさまざまな言語に翻訳しています。 <a href="?locale=en">English</a><a href="?locale=ru">Russian</a>URLからgettextパラメータ(locale = en)を隠す

$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"); 

私はきれいにURLを維持し、URLのうち、それらの?lang=enパラメータを持っていると思った:私は、URLに基​​づいて言語を変更3つのリンクを持っています。だから、ユーザがproducts.phpへのlinをクリックすると、それはそのままで表示されませんproducts.php?locale=ruどうすればいいですか?

+0

あなたはクッキーを設定できますか?あなたのコードはすでにそれのために用意されています –

+0

そして、実際にはあなたはどちらにもしてはいけません。 '$ _SERVER [" HTTP_ACCEPT_LANGUAGE "]'にヘッダがあります。クッキーと言語ボタンはフォールバックとしてのみ使用しますが、それ以上は使用しません。 – mario

+0

Pekka:私はそれを書かなかった、私はいくつかのサイトの例としてそれを見た – tmrhmdv

答えて

0

あなたは

  • ユーザーは関係なく、ブラウザの言語の

  • ユーザーがあなたの異なる言語バージョンで開いている別のタブを持っていることができるように、自由に言語を選ぶことができるようにしたい場合サイト

URLのどこかに言語情報を入力する方法はありません。あなたのようなGETパラメータを使用しない、またはあなたは、タブ上の問題と罰金している場合は、クッキーに言語を設定

www.domain.com/en/pagename.php 

のようなものにはmod_rewriteを使用して、それをマスキングすることにより、どちらか。実際には、上に示したコードはすでにそれをしています。 ?lang=xxパラメータは、実際に言語を切り替える場合にのみ必要です。

+0

mod_rewriteを使っているのは私の計画Bです。私はTwitterとFacebookのやり方を、URLのパラメータなしでどうやって行うのかと思っていました。 – tmrhmdv

+0

@delrt彼らは、現在ログインしているユーザーに関するデータベースに格納されている情報を使用する可能性が最も高いです。 –

関連する問題