shahryarjb
How to change default_locale in Gettext
Hello,
I am supposed to create multi language website, therefore I am using gettext for this.
At first I created 3 language in my project and I made translations in it, but I couldn’t change default_locale like its document.
my project gited in https://github.com/shahryarjb/ESOGTIPH
for example I have 3 lang ["ru", "en", "fa"]
my router :
pipeline :browser do
plug :accepts, ["html"]
plug :fetch_session
plug :fetch_flash
plug :protect_from_forgery
plug :put_secure_browser_headers
plug SetLocale, gettext: MultiLangWeb.Gettext, default_locale: "fa", cookie_key: "project_locale" #cookie_key is optional
end
pipeline :api do
plug :accepts, ["json"]
end
scope "/", MultiLangWeb do
pipe_through :browser # Use the default browser stack
get "/", PageController, :dummy
end
and my project config :
config :multi_lang, MultiLangWeb.Gettext,
default_locale: "fa"
As you can see, I changed fa insted of en in my config , but it allways loads en default .
How can I changed default_locale to fa or ru?
I had read (https://phraseapp.com/blog/posts/i18n-for-phoenix-applications-with-gettext/),but there was no use for me .
please help me for changing it.
Thanks
Most Liked
idi527
:default_locale is set in :gettext app config, I think.
https://hexdocs.pm/gettext/Gettext.html#module-default-locale
kip
If you try the following, what do you see?
iex -S mix
iex> Gettext.known_locales MultiLangWeb.Gettext
iex> Gettext.default_locale MultiLangWeb.Gettext
The last function call should return fa in your configured case (you shouldn’t need to configure the :locales key).
If for some reason you aren’t seeing fa then I think there is a different problem.
Joep
Just wanted to mention http://blog.plataformatec.com.br/2016/03/using-gettext-to-internationalize-a-phoenix-application/ that gives a very helpful explanation about using Gettext.
It’s the third hit and first article googling “phoenix gettext” but still… 
idi527
Unfortunately, It does not work for me
Maybe you need to change the process’s locale and not the default locale for the app? Then you need to set it in one of your plugs probably.
https://hexdocs.pm/gettext/Gettext.html#put_locale/1
It will store locale info in the process dictionary and all subsequent operations in that process would have access to it.
idi527
Maybe in a plug somewhere before the controller action.
You seem to be doing it with ESOGTIPH/lib/multi_lang_web/router.ex at master · shahryarjb/ESOGTIPH · GitHub already. Now you need to provide the appropriate accept-language headers in your request for it to work.







