Git Product home page Git Product logo

Comments (4)

MichaelHoste avatar MichaelHoste commented on May 12, 2024

Hi @armandsar,

I tried to reproduce without success. I put that piece of code in a controller and it worked as expected:

def my_action
  I18n.locale = :fr
  puts _("Assigned")

  I18n.locale = :en
  puts _("Assigned")

  I18n.with_locale(:fr) do
    puts _("Assigned")
  end

  I18n.with_locale(:en) do
    puts _("Assigned")
  end
end

The output in the console was :

Assigné
Assigned
Assigné
Assigned

I tried in development with config.action_controller.perform_caching as true and false (we never know ^^). It was in a Rails 4 application.

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?

from rails.

MichaelHoste avatar MichaelHoste commented on May 12, 2024

I just tested the same example on a Rails 5.0.6 application and it worked too.

from rails.

armandsar avatar armandsar commented on May 12, 2024

Simplest bit of code i got to replicate this:

class TestController < ActionController::Base

  before_action :set_default_locale

  def index
    a = []
    a << [_('Dashboard'), I18n.locale]
    I18n.locale = 'lv'
    a << [_('Dashboard'), I18n.locale]
    render json: a
  end

  private

  def set_default_locale
    I18n.locale    = 'en'
    GetText.locale = 'en'
  end

end

Remove "GetText.locale = 'en'" line, reload page, translation still wrong.
Restart the server without gettext line and all is fine.

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 :)

from rails.

MichaelHoste avatar MichaelHoste commented on May 12, 2024

I found out why it wasn't working: https://github.com/ruby-gettext/gettext/blob/master/lib/gettext.rb#L261-L282

GetText.locale= is the same as set_locale and fix the locale once for all the application (see the comments).

Gettext.current_locale= is the same as set_current_locale and is more flexible (many locales in the application).

This comment says all: # Note that if #set_locale is set, this value is ignored.

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

from rails.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.