2011-12-08 6 views
1

コンテンツを母国語で表示できるように、Webユーザーの言語を決定する最良の方法を探しています。私はさまざまなテクニックの賛否両論について知りたい。ユーザーの言語を決定する方法

私が探しています

いくつかのオプションがあります:私は私が述べたようにhttp_negotiate_language

を使用してブラウザからユーザーの言語へのアクセスMaxmindsデータベース(無料版)

  • を使用してPHPのGeoIP拡張モジュールを使用して

    • 州や都市について深く掘り下げたいとは思わない。私はちょうどユーザーの場所/言語に基づいてコンテンツを切り替えたい。

      他に提案がありますか?

  • +0

    私はこれをPHPとタグ付けしましたが、あなたが知る必要がある場所に応じてjavascript navigator.languageを使用することもできます。言語は国境を越えて鮮明に変わることはありません。私は、アメリカの多くの人がスペイン語や中国語の好きな言語でブラウジングするので、あなたのブラウザはあなたがニューヨークに住んでいると言っています。リクエストヘッダにブラウザがどのように設定されているか(1つの言語を優先するか、ローカライズされているか)を指定します。 – MatthewMartin

    +3

    ......それらに尋ねます...... ......? – Ben

    答えて

    0

    ユーザーがセレクタから自分の言語を決定できるようにすることをお勧めします。

    +0

    これは私の上記の例です。最初にブラウザに(インストール時に既に設定されている)ブラウザに尋ねます。十分でない場合は、ドロップダウンから言語を選択して、「lang」というクッキーを保存して使用します。 – Xeoncross

    3

    出身者MicroMVC frameworkから。以下は、Javascript言語セレクタで設定できるCookieを探します。見つからない場合は、ブラウザが送信する設定を使用します。

    // Get locale from user agent 
    if(isset($_COOKIE['lang'])) 
    { 
        $preference = $_COOKIE['lang']; 
    } 
    else 
    { 
        $preference = Locale::acceptFromHttp(getenv('HTTP_ACCEPT_LANGUAGE')); 
    } 
    
    // Match preferred language to those available, defaulting to generic English 
    $locale = Locale::lookup(config()->languages, $preference, false, 'en'); 
    
    // Default Locale 
    Locale::setDefault($locale); 
    setlocale(LC_ALL, $locale . '.utf-8'); 
    //putenv("LC_ALL", $locale); 
    

    PHP 5.3とICU INTLライブラリが必要です。

    $ sudo apt-get install php5-intl 
    
    +0

    クッキーを使用すると、異なる言語の複数のページを同時に開くことができないという大きな欠点が1つあります。そのため、URLベースのアプローチを好む傾向があります。 –

    +0

    @Pekka、本当ですが、必要に応じて特定のパス。 – Xeoncross

    +0

    @Pekka、複数のページを同時に複数のロケールで同時に開くことはどうですか? –

    1
    1. すべての回で言語を切り替えることが簡単にアクセスできるメニューを提供するブラウザの言語

    2. を使用してください。最初の選択肢を設定するには、地理位置情報を使用して

    は、同様のオプションですが、それは100%の信頼性ではない、と実際のブラウザ言語は、ユーザーが話すどのような言語のより良い指標です。

    1

    多くの状況でジオロケーションが失敗します。たとえば、旅行や休暇の英語を話す人は、ウクライナに滞在している間、間違った言葉を提示します。私はほとんどのユーザーがブラウザの設定で正しい言語を持っていると思います。

    1

    ブラウザの使用言語($ _SERVER ['HTTP_USER_AGENT'])を自動的に取得しますが、ユーザーに別の言語を選択させるための選択ボックス(または他のもの)を指定します。フレームワークを使用している場合(そして、そうしなければならない)、ヘルパーメソッドが必要です。

    私はGeoIPを使用しません。米国の人がフランスで休暇中にサイトを閲覧しているとします。

    関連する問題