2009-05-19 14 views
0

私はこのPHPスクリプトを持っています。多言語PHPスクリプト質問

<?php 
/*Check_if_user_has_changed_language: */ 
if(isset($lang)){/*If_so:*/ 
    setcookie("ling",$lang,time()-60*60*24*365,"/",".sayip.info",0);/*Wipe_previous_cookie*/ 
    setcookie("ling",$lang,time()+60*60*24*365,"/",".sayip.info",0);/*Whatever_the_means_lang_has_been_stored,_store_latest_lang_in_new_cookie:*/ 
    //echo "<script language=\"JavaScript\">alert('Selected language=$lang')</script>";/*UnComment_to_check*/ 
}else{/*If_user_has_NOT_changed_language:*/ 
    if(isset($_COOKIE['ling'])){/*Check_if_user-language_cookie_is_set._If_so:*/ 
     $lang=$_COOKIE['ling']; 
     setcookie("ling",$lang,time()-60*60*24*365,"/",".sayip.info",0);/*Wipe_previous_cookie*/ 
     setcookie("ling",$lang,time()+60*60*24*365,"/",".sayip.info",0); 
     //echo "<script language=\"JavaScript\">alert('Cookie language=$lang')</script>";/*UnComment_to_check*/ 
    }else{/*If_user-language_neither_selected_nor_in_cookie,_choose_browser_language:*/ 
     $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'],0,2); 
     setcookie("ling",$lang,time()+60*60*24*365,"/",".sayip.info",0); 
     //echo "<script language=\"JavaScript\">alert('Your browser language=$lang')</script>";/*UnComment_to_check*/ 
    } 
} 
?> 

最初にコードでユーザーのブラウザの言語が検出されます。それで大丈夫です。

次に、情報をクッキーに保存します。それで大丈夫です。

このコードでは、私が本当に必要とするのは、訪問者が言語を変更するためのオプションを作成することです。私はリンクされた旗のイメージのような何かを考えていたので、誰かが旗をクリックすると言語を変えます。

誰かが例や清潔で完全な解決策によって私に説明することはできますか?私のPHPスキルは貧弱です。

ありがとうございます。

+1

「Accept-Language」の値は、重み付き言語タグのリストであることに注意してください。だから最初の言葉は好きなものである必要はありません。実際、 'en; q = 0'の値は、英語を使用してはならないことを意味します。 – Gumbo

+0

トロールと呼ばれる危険性があるにもかかわらず、コーディングスタイルはあまりにもコンパクトです。読みやすくするため、空白と//スタイルのコメントを使用してください。私はあなたのコードを読みにくいです - そして、私はPHPプログラマです... –

答えて

0

たとえば、http://example.com/en/foo/barのように、選択した言語をURLに入力します。これにより、選択された言語は透過的で簡単に変更できます。

0

もし私が笑う方法を知っていたら私は置くだろう...多かれ少なかれ10種類のスクリプトをテストした後、私はこのスクリプトを手に入れたので、落ちるのが好きではなく、単にフラグを置く方法と、私はあなたのつもりな場所ならば右

ページ内の各言語へのリンクをあなたの質問を得た場合、リンクの何かを作るわからないんだけど...それはクッキーのデ値を変更フラグに

+1

コメントしたいanwserの下のコメント機能を使用してください。 – Gumbo

0

をクリックしてくださいlike http://www.example.com/?lang=jp

あなたが投稿したスクリプトの前にPHPコードで追加します。

if (isset($_GET['lang'])) $lang = $_GET['lang']; 

これはあなたが務めるものですか?

0

より洗練された解決策は、ユーザーのヘッダーを確認することです。 ブラウザのほとんどはです。ユーザーは好みの言語を設定できます。これは、要求とともにHTTPヘッダーを送信します。ヘッダーは次のようになります。

受け入れ言語:EN-US、EN; Q = 0.8、AR-LY; Q = 0.5、ID; Q = 0.3

値嗜好によって順序付け受け入れ言語のカンマ区切りリストは、あります(q = xの部分が優先です)。こうすることで、ユーザーがウェブにアクセスすることを選択した言語を自動的に検出し、必要な場合は表示することができます。