Initial locale setting now available


(Kane York) #1

In a sentence: New Docker installs will now have the option to set the language at bootstrap time.

This has been a pain point for a while: the FAQ, Terms of Service, and Privacy policy would get set up with the wrong language. See this topic from July of last year:

Here’s one of the support topics that came up: Setting LANG: ru_RU.UTF-8 in app.yml does not work when bootstrapping docker container

You can do this by setting the DISCOURSE_DEFAULT_LOCALE environment variable in app.yml. Note that this will make it impossible to change the locale from the web UI.

Here’s an example of an app.yml with language settings set.

  db_default_text_search_config: "pg_catalog.french"
  ## Set db_shared_buffers to 1/3 of the memory you wish to allocate to postgres
  ## on 1GB install set to 128MB on a 4GB instance you may raise to 1GB
  #db_shared_buffers: "256MB"
  ## Which Git revision should this container use? (default: tests-passed)
  # version: tests-passed
  LANG: fr_FR.UTF-8

This will be available in latest right now, beta v1.2.0.beta7, stable v1.2.0.

FAQ, Privacy Policy for non-english Discourse
(Jeff Atwood) #2

What happens if you change the locale in app.yml and rebuild the container?

(Kane York) #3

It should be the same as if you changed the site setting and rebuilt it - i.e. it should only matter for the first run.

(Jeff Atwood) #4

So once language is set this way, it can never be changed, ever? Not without destroying the whole site? Even recreating from backup would recreate the old language topics yes?

(Kane York) #5

I… think so, because stuff like the Lounge and the FAQ topics are not re-created when you rebuild.

I think I’ll test it…

(Erick Guan) #6

We prefer global setting to site setting in app/model/global_setting.rb. Am I right here? @riking

We seed the db based on locale only at the first time. The next seed won’t create or update seed topics. But if you recreate from backup, the topic won’t change because it’s already seeded.

Default categories name doesn’t respect the locale setting. db:migrate migrates the db before invoking the block so I18n.t takes no effect when creating the categories. @neil

(Kane York) #7

Yes, this environment variable sets a GlobalSetting.

(Erick Guan) #8

This is also done by the latest pr.