mirror of
https://github.com/netfun2000/hipudding-teslamate.git
synced 2026-02-27 09:44:28 +08:00
34 lines
901 B
Elixir
34 lines
901 B
Elixir
defmodule TeslaMateWeb.Plugs.PutSession do
|
|
@moduledoc """
|
|
Puts the CLDR and Gettext locale names in the session.
|
|
|
|
Based on https://github.com/elixir-cldr/cldr/blob/v2.24.1/lib/cldr/plug/plug_put_session.ex
|
|
|
|
Differences: besides the :canonical_locale_name ("en_US") that is put in the
|
|
session under the "cldr_locale" key, it also puts the :gettext_locale_name
|
|
("en") under "gettext_locale".
|
|
"""
|
|
|
|
import Plug.Conn
|
|
alias Cldr.Plug.SetLocale
|
|
|
|
@doc false
|
|
def init(_options) do
|
|
[]
|
|
end
|
|
|
|
@doc false
|
|
def call(conn, _options) do
|
|
case SetLocale.get_cldr_locale(conn) do
|
|
%Cldr.LanguageTag{canonical_locale_name: cldr_locale, gettext_locale_name: gettext_locale} ->
|
|
conn
|
|
|> fetch_session()
|
|
|> put_session(SetLocale.session_key(), cldr_locale)
|
|
|> put_session("gettext_locale", gettext_locale)
|
|
|
|
_other ->
|
|
conn
|
|
end
|
|
end
|
|
end
|