2 min. read
Set Current Locale in your Rails App
You are probably used to having a before_action
somewhere in your controller
hierarchy to set the current locale (I18n.locale
) based on a value from the
URL, the session, a cookie, etc.
The translation gem ships with a
generic implementation
that can be called directly in your ApplicationController
:
before_action :set_locale
But, if you need a custom behaviour, you can of course continue to use your own method by redefining it. For instance:
before_action :set_locale
def set_locale
I18n.locale = # custom logic to get the locale code
end
Another common use case is to let registered users set their preferred locale in their profile (saved in the database).
Here is what it might look like in such a case:
before_action :set_locale
def set_locale
if current_user
I18n.locale = current_user.locale || I18n.default_locale
else
super
end
end