使用带表单按钮的i18n gem的麻烦

时间:2012-01-05 13:47:06

标签: ruby-on-rails ruby ruby-on-rails-3 button internationalization

我正在使用Ruby on Rails 3.1,我想正确处理与视图文件中的按钮相关的表单提交国际化(我使用默认的 i18n gem )。问题是在我的视图文件中我有如下代码

<%= form_tag ...%>
  ...
  <%= submit_tag( "Send", :id => "css_id", :class => 'css_class' ) %>
<% end %>

当我提交表单(AJAX提交)时,即使当前语言为/users/1?en=en,它也会向例如路径de发送HTTP请求(请注意en=en部分)。

为了处理app/controller/application_controller.rb文件中的国际化,我使用以下代码:

class ApplicationController < ActionController::Base
  before_filter :set_i18n_locale_from_params

  def set_i18n_locale_from_params
    if params[:locale]
      if I18n.available_locales.include?(params[:locale].to_sym)
        I18n.locale = params[:locale]
      else
        flash.now[:notice] = "'#{params[:locale]}' translation not available"
        logger.error flash.now[:notice]
      end
    end
  end

  def default_url_options
    { locale => I18n.locale }
  end
end

在我的config/initializers/i18n.rb文件中,我有:

#encoding: utf-8
I18n.default_locale = :en

LANGUAGES = [
  ['English',  'en'],
  ['Deutsch', 'de']
]

如何解决问题? default_url_options是否应该正确处理与按钮相关的链接?

0 个答案:

没有答案