Clearly demonstrating my lack of Phoenix knowledge. But it looks like you would need to put Cldr.Plug.SetLocale in your pipeline, not the endpoint. Possible you can try that? As best I can tell from the docs, the pipeline is not run unless a route is found - and I believe when a route is found that path_params is decoded.
So, for example:
pipeline :browser do
plug :fetch_session
plug :accepts, ["html"]
plug Cldr.Plug.SetLocale,
apps: [:cldr, :gettext],
from: [:path, :query],
gettext: MyAppWeb.Gettext,
cldr: MyApp.Cldr
end


















