Добавить локаль к сгенерированным ссылкам с помощью Routes.resource_path () - PullRequest
0 голосов
/ 22 апреля 2020

В многоязычном приложении я пытаюсь добавить локаль к ссылкам, сгенерированным помощником Routes.

В своей конечной точке я подключаю это перед маршрутизатором, чтобы установить локаль:

  def call(conn, _opts) do
    case conn.path_info do
      [locale | rest] when locale in @locales ->
        Gettext.put_locale(MyApp.Gettext, locale)
        %{conn | path_info: rest}
        |> Plug.Conn.assign(:locale, locale)

      _  ->
        Gettext.put_locale(MyApp.Gettext, "en")
        Plug.Conn.assign(conn, :locale, "en")
    end
  end

URL выглядит как localhost / fr / что-то или localhost / что-то

Моя проблема связана с ссылками, сгенерированными в представлении. Если я хочу добавить локаль, я должен сделать что-то вроде этого:

<%= link gettext("Log in"), to: @locale<>Routes.dashboard_path(@conn, :dashboard) %>

Это закончится пользовательским помощником, если это единственный вариант. Но я ищу лучший способ добавить локаль в ссылках и формах, чтобы не пропустить ее где-нибудь.

...