所以我使用的是i18n gem,因为我的rails web-app必须提供2种语言版本:FR和NL。
我将FR设为默认语言区域。
我的目标是确保在任何情况下,语言环境(即。/ fr /或/ nl /)始终显示在URL中。
locale = nl就是这种情况,但locale = fr不是默认语言环境的情况。
这是一个用户故事的例子:
通过此示例,网址应为 http://localhost:3000/fr/newsfeed (网址中包含 / fr / )
这些是我的路线:
Product.create(product_type_id: 1, name: "refactoring", price: 24.99, properties: ActionController::Parameters.new({author: "Martin Fowler", page_count: 197, paperback: 1 }) )
在我的application.rb中我有
scope '(:locale)', constraints: { locale: /nl|fr/ } do
resources :articles, :path => 'newsfeed', only: [:index, :edit, :destroy, :update, :new, :create]
root to: 'languages#select'
get '*path' => redirect('/')
end
在欢迎页面中,用户必须选择他们的语言,我有这个
config.i18n.default_locale = :fr
config.i18n.available_locales = [:fr, :nl]
总而言之,locale = nl的网址将始终显示 * http://localhost:3000/nl/newsfeed ,但对于默认区域设置 fr ,情况并非如此,我需要解决这个问题。
有什么想法吗?
答案 0 :(得分:0)
我认为您需要覆盖url_for
方法。
module ActionController::Base
def url_for(options)
options.merge! {:locale => "correct locale"}
super
end
end
此方法在其他Rails类中定义,也就像在视图和路由中一样。所以你需要覆盖所有这些。