/ / Інтернаціоналізація рейкових шин (I18n): місце в URL-адресі - рубін-на-рейках-3, інтернаціоналізація

Ініціалізація Rails (I18n): локалізація в url - ruby-on-рейлі-3, інтернаціоналізація

Я новачок у рейках (використовуючи 3.2.1), і я дотримувався інструкції i18n напрямні напрямні.

У мене з цим розділом проблеми:

Ви, мабуть, хочете, щоб URL-адреси виглядали так: www.example.com/uk/books (яка завантажує англійську мову) та www.example.com/nl/books (яка завантажує місцевість Нідерландів). Цього можна досягти за допомогою Стратегія "перевитрати default_url_options" зверху: у вас просто є налаштувати маршрути за допомогою параметра path_prefix таким чином

Але коли я використовую <% = products_path%> у своїх переглядах, він повертає: / products? locale = en і я хочу, щоб він повернувся / nl / продукти

Коли я набираю URL-адресу в браузері (наприклад, localhost: 3000 / nl / products), на сторінці відображається правильна мова.

Що мені не вистачає?

Контроль додатків:

class ApplicationController < ActionController::Base
before_filter :set_locale

def set_locale
I18n.locale = params[:locale] || I18n.default_locale
end

def default_url_options(options = {})
{ :locale => I18n.locale }
end
end

маршрути:

  scope "/:locale" do
resources :products
end

match "/:locale" => "products#index"

рейк-маршрути:

    products GET    /products(.:format)                  products#index
POST   /products(.:format)                  products#create
new_product GET    /products/new(.:format)              products#new
edit_product GET    /products/:id/edit(.:format)         products#edit
product GET    /products/:id(.:format)              products#show
PUT    /products/:id(.:format)              products#update
DELETE /products/:id(.:format)              products#destroy
GET    /:locale/products(.:format)          products#index
POST   /:locale/products(.:format)          products#create
GET    /:locale/products/new(.:format)      products#new
GET    /:locale/products/:id/edit(.:format) products#edit
GET    /:locale/products/:id(.:format)      products#show
PUT    /:locale/products/:id(.:format)      products#update
DELETE /:locale/products/:id(.:format)      products#destroy
/:locale(.:format)                   products#index
root        /                                    products#index

Відповіді:

1 для відповіді № 1

Що про використання path_prefix варіант замість цього

def default_url_options(options = {})
{ :path_prefix => I18n.locale }
end

0 для відповіді № 2

Я опинився на користь rails-translate-routes дорогоцінний камінь.

Це дало мені очікуваний результат + можна перекласти маршрути, що є великим надлишком.