Почему: локаль не работает с абсолютным путем? - PullRequest
0 голосов
/ 15 ноября 2018

Я нахожусь в процессе применения I18n в моем приложении Rails, поэтому у меня проблема с URL, когда путь не относительный. Он всегда остается по умолчанию в абсолютных значениях, а при относительном пути работает нормально:

Контроллеры / application_controller.rb

class ApplicationController < ActionController::Base
    before_action :set_locale

  def set_locale
    if cookies[:locale] && I18n.available_locales.include?(cookies[:locale].to_sym)
      lang = cookies[:locale].to_sym
    else
      lang = I18n.default_locale
      cookies.permanent[:locale] = lang
    end
    I18n.locale = lang

  end

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

end

конфиг / application.rb

I18n.available_locales = [:en, :es]
    config.i18n.default_locale = :en

конфиг / routes.rb

Rails.application.routes.draw do

  scope ":locale", locale: /#{I18n.available_locales.join("|")}/ do
    resources :posts, only: %i[index show]
  end

  get '*path', to: redirect("/#{I18n.default_locale}/%{path}")
  get '', to: redirect("/#{I18n.default_locale}/")

_header.html.erb

<ul>
        <li class="<active' if current_page?(root_path) %>"><%= link_to t("header.home"), main_app.root_path %></li>
        <li class="<%= 'active' if active_page('option1') %>"><%= link_to t("header.about_us"), option1_path %></li>
          <ul class="mobilenav">
            <li><%= link_to t("header.option2"), "/option2" %></li>
            <li><%= link_to t("header.option3"), "/option3" %></li>
            <li><%= link_to t("header.option4"), "/option4" %></li>
            <li><%= link_to t("header.option5"), "/option5" %></li>
          </ul>
        </li>
</ul>

Следовательно, при переходе к корневому пути или пути option1 он работает при изменении локали, в то время как опции 2,3,4 и 5 всегда остаются в локали по умолчанию:

localhost:3000/en/option2

У меня вопрос: можно ли изменить локаль, когда путь абсолютен, или я должен изменить все на относительный_путь?

...