Greetings! I have a simple plug to set locale:
def call(conn, _opts) do
case locale_from_params(conn) || locale_from_session(conn) || locale_from_header(conn) do
nil -> conn
locale ->
Gettext.put_locale(locale)
conn = conn |> persist_locale_session(locale)
IO.inspect conn
conn
end
end
It works as intended with phoenix pages, but when it comes to LiveView pages - it does not work (by that I mean that default language is used). So to mention I see on page load desired locale, but when page is loaded, default locale is in charge again.
I solved it adding to live page`s mount function:
Gettext.put_locale(Map.get(session, "locale"))
But it do not sees like a good idea to insert this line to every live page in the whole project.
P.S. There is a similar topic (How to handle localisation in live view? - #11 by idi527), is it still impossible to loss that mount line?