В многоязычном приложении я пытаюсь добавить локаль к ссылкам, сгенерированным помощником 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) %>
Это закончится пользовательским помощником, если это единственный вариант. Но я ищу лучший способ добавить локаль в ссылках и формах, чтобы не пропустить ее где-нибудь.