New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Gettext translations cached after switching locale? #24
Comments
Hi @armandsar, I tried to reproduce without success. I put that piece of code in a controller and it worked as expected:
The output in the console was :
I tried in development with What exactly is your stack so I could try to reproduce with the same one. Does it break also in development environment or only in production? |
I just tested the same example on a Rails 5.0.6 application and it worked too. |
Simplest bit of code i got to replicate this:
Remove "GetText.locale = 'en'" line, reload page, translation still wrong. I now do realize that there is no need to set locale for GetText directly and I didn't really notice this until now, as this was implemented by another developer. Still the behavior seems strange, given that we do call "I18n.locale = 'lv'" in controller action later.. I guess this can be closed :) |
I found out why it wasn't working: https://github.com/ruby-gettext/gettext/blob/master/lib/gettext.rb#L261-L282
This comment says all: I tried your example with `current_locale=" and it's working. But as you noticed, Translation gem takes care of that for you so you don't have to worry about configuring the GetText locale: https://github.com/translation/rails/blob/master/lib/translation_io/railtie.rb#L21 |
Hi.
I have a problem with translations being cached.
Behaviour in rails console, works fine:
I18n.locale = :en
_('Dashboard')
=> "Dashboard"
I18n.locale = :lv
_('Dashboard')
=> "Sākums"
In controller action (via binding pry):
[1] pry> I18n.locale = "en"
=> "en"
[2] pry)> _('Dashboard')
=> "Dashboard"
[3] pry> I18n.locale = "lv"
=> "lv"
[4] pry> _('Dashboard')
=> "Dashboard"
There is no problem if locale is set only once per request (we do this in before action in base controller).
But in this controller action we need part of code within a block
I18n.with_locale(locale)
executed with different locale.Inspecting
I18n.locale
andGetText.locale
within the block we see that locale is switched correctly, but translations appear cached.Calling
::GetText::TextDomainManager.clear_caches
does not help.The text was updated successfully, but these errors were encountered: