2012-01-22 10 views
2

私は次のような動作を実装したいと考えています。レール3.1でロケールパラメータを非表示にしていますか?

ENの場合は、ブラウザ言語がDEで、http://foo.bar/halloの場合は、URL http://foo.bar/helloにリダイレクトする必要があります。

どのようにすれば、正しい言語にリダイレクトするためにルートを設定する必要がありますか(たとえば、英語ユーザーがDEルートを要求し、その逆の場合)、非表示のロケールパラメータを設定する方法コントローラーの右の表示?

私は両方の言語で同じコントローラ(1ページに1つの方法)を使用したい

が、ローカライズされたビュー(foo.en.html.erbなど)事前に

感謝!

答えて

2

あなたが得ようとしていることは良い考えではないと私はここで説明します。 Railsが提供しているものとは別のアプローチを選択して、なぜ"Internationalization Guide, Sections 2.3 and further"の詳細について説明するのか理解できません。 http://my.example.com/books?locale=de

  • サブドメインからの取得:
    1. は、パラメータからそれを取得する:http://de.example.com/books
      • Railsは、ロケールを変更するには、少なくとも3種類の方法が用意されています。ここでは

        は引数です
      • クライアントが提供するアプリケーション(accept-headerなど)
  • すべてコントローラとアクションが同じであるという利点があります。これは通常持っているものです。あなたが探しに応じて、あなたの行動を変更したい場合は、ヘルパーメソッドがあります
  • localeあなたがしたい場合は、...
  • はしかし、あなたは、全体としてビューをローカライズすることがあります。localized viewsを参照してください。これは、おそらくビューコードの重複につながります。
  • またはI18n.t 'store.title'またはI18n.l Time.nowのように翻訳およびローカリゼーションAPIを使用します。
  • 非表示のロケールパラメータには、どのロケールが使用されているかがわかりにくいという欠点があります。

    +0

    あなたが正しいです、サブドメインのアプローチはかなりよく合います。それについては考えていない。ありがとう! – Tronic

    1

    ロケールの設定に加えてルートを翻訳する必要がある場合は、translate_routes gemをご覧ください。

    READMEでは、翻訳hello/halloからロケールを設定する方法について説明しています。

    関連する問題