В Ruby on Rails как по умолчанию использовать локаль, если она не указана в URL? - PullRequest
1 голос
/ 18 декабря 2010

У меня есть приложение Rails с некоторой интернационализацией, оно задает локаль с помощью параметра url, например:

/ en / post / show / 4 для английского
/ ja / post /show / 4 для японского

Мои маршруты:

ActionController::Routing::Routes.draw do |map|
  map.connect "", :controller => "post", :action => "index"
  map.connect "/:locale", :controller => "post", :action => "index"
  map.connect "post/show/:id/:tag_title", :controller => "post", :action => "show", :requirements => {:id => /\d+/}, :path_prefix => '/:locale'
  map.connect ":controller/:action/:id.:format", :requirements => {:id => /[-\d]+/}, :path_prefix => '/:locale'
  map.connect ":controller/:action/:id", :requirements => {:id => /[-\d]+/}, :path_prefix => '/:locale'
  map.connect ":controller/:action.:format", :path_prefix => '/:locale'
  map.connect ":controller/:action", :path_prefix => '/:locale'
end

Я хочу, чтобы он был таким, чтобы при отсутствии части локали в URL-адресе использовалась локаль по умолчанию.Итак, это:

/ post / show / 4 - это то же самое, что и
/ en / post / show / 4

, и для локали будет установлен английский язык.

Что было бы хорошим способом сделать это?Спасибо!

Ответы [ 2 ]

1 голос
/ 19 декабря 2010

Я планирую реализовать такой же подход в своем приложении, хотя я еще не пробовал его.Я собираюсь использовать дополнительные сегменты маршрута, например

match '(:locale/)post/show/:id' => 'posts#show'

, хотя я думаю, что это работает только в Rails 3.

1 голос
/ 18 декабря 2010

Узнайте текущий язык по URL и установите I18n.locale.Например: = I18n.locale = 'en'

См. Также некоторые отличная документация .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...