ruby-on-rails - URL 中的 i18n 区域设置

标签 ruby-on-rails

我想获得我的应用程序的所有 URL 以及区域设置,例如:

http://domain.com
http://domain.com/user/new

成为:

http://domain.com/en
http://domain.com/fr
http://domain.com/en/user/new
http://domain.com/fr/user/new

如何在不传递所有链接中的区域设置的情况下做到这一点?

最佳答案

在路由中使用 :path_prefix 选项:

map.namespace :my_locale, :path_prefix => "/:locale" do |localized|
  localized.resources :users
  localized.root :controller => 'your_controller', :action => 'your_action'
  # other routes
end

在您的应用程序 Controller 中添加:

before_filter :set_current_locale

private
def set_current_locale
  current_locale = 'en' # default one
  current_locale = params[:locale] if params[:locale]  # or add here some checking 

  I18n.locale = current_locale # if it doesn't work, add .to_sym    
end

要创建链接,请使用标准 url 帮助程序。如果您设置了params[:locale],它将自动添加。所以:

photos_path  # /en/photos - if you are in en locale
photo_path(@photo) # /fr/photos/3 - if you are in fr locale

现在,如果您位于任何没有语言环境的路径:“www.mysite.com”,那么您可以通过添加 :locale => 'en' 来生成本地化版本的链接:

users_path(:locale => 'en') # /en/users

您还可以使用上面的示例来更改当前区域设置。

我不确定 url 助手的名称是什么,因此只需输入 rake paths 即可找到它。

关于ruby-on-rails - URL 中的 i18n 区域设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2282346/

相关文章:

ruby-on-rails - 如何在 Rails 3 中制作自定义 _url 助手?

jquery - Rails 为 .each do |x| 生成图表使用 highcharts 或任何其他图表 API

sql - rails 数据库 :seed unknown attribute

ruby-on-rails - Rails 2.3.2 尝试呈现 ERB 而不是 HAML

ruby-on-rails - 如何使 ActiveRecord 成为线程安全的

mysql - 是否可以在 sqlite 数据库中使用相同的索引名称?

ruby-on-rails - 如何使用 OR 而不是 AND 来链接范围查询?

javascript - 用于 RoR 的 Lightbox/Facebox Gem

ruby-on-rails - 在 Rails 4 中的视频文件上使用 Paperclip ——强参数问题?

ruby-on-rails - ActiveRecord::ConnectionNotEstablished 在 rake 任务中