0

どのユーザーが選択するかを分類しました。ユーザーが「自動」を選択した場合、それを結果に置き換える必要があります。これにより、JavaScript 関数が得られます - デフォルトのブラウザー言語を設定します。

これはJS関数のJavaScriptの例です - http://fiddle.jshell.net/xCgsb/

そして、これが Web サイト モデルの before_save フィルターです。

before_save :auto_language

def create
 website = current_user.websites.new params[:website]
 if @website.language == "Auto"
  @website.language = request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first
 end
...
#error
undefined local variable or method `request' for #<Website:0x244e1b0>

誰かがこのトラブルを手伝ってくれますか? どんな助けでも感謝します。

4

1 に答える 1

1

Javascript を使用してデフォルトのロケールを設定しないでください。

これを見てください:

http://guides.rubyonrails.org/i18n.html#setting-the-locale-from-the-client-supplied-information

Ruby を使用してロケールを検出します。

def set_locale
   logger.debug "* Accept-Language: #{request.env['HTTP_ACCEPT_LANGUAGE']}"
   I18n.locale = extract_locale_from_accept_language_header
   logger.debug "* Locale set to '#{I18n.locale}'"
end  

private

def extract_locale_from_accept_language_header
    request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first
end

完全な言語を取得したい場合は、switch case を使用できます。

def full_language_name(lang) 
  case lang
    when 'ru'
      return 'Russian'
    when 'en'
      return 'English'
    when 'fr'
      return 'French'
    else
      return 'English'
end

これらの条件のいずれも確認されていない場合、「else」ケースがデフォルトの動作です。キーワード「return」はオプションです。

お役に立てれば!

于 2012-10-01T13:22:15.177 に答える