I am trying to use ex_cldr for localization. I want to use path parameters to change languages and it doesn’t work, but works with query parameters. Requesting http://localhost:4000/en will use fa as locale but http://localhost:4000/?locale=en uses en.
I have added this to the endpoint.ex:
plug Cldr.Plug.SetLocale,
apps: [:cldr, :gettext],
from: [:path, :query],
gettext: MyAppWeb.Gettext,
cldr: MyApp.Cldr
This is the cldr module:
defmodule MyApp.Cldr do
use Cldr,
locales: ["en", "fa"],
default_locale: "fa",
gettext: MyAppWeb.Gettext
end
And my routes:
scope "/:locale" do
pipe_through [:browser, :simple_layout]
pow_routes()
end
scope "/:locale", MyAppWeb do
pipe_through :browser
get "/", PageController, :index
end
scope "/:locale/admin", MyAppWeb do
pipe_through [:browser, :protected, :admin_layout]
end
scope "/" do
pipe_through [:browser, :simple_layout]
pow_routes()
end
scope "/", MyAppWeb do
pipe_through :browser
get "/", PageController, :index
end
scope "/admin", MyAppWeb do
pipe_through [:browser, :protected, :admin_layout]
end


















