Переместить пользовательский язык на язык по умолчанию (ES_XX на es)

Какой правильный способ это сделать? Через MySQL, используя запросы внутри Discourse, возможно, с помощью скрипта?

Похоже, что использование плагина для создания собственного языка вызывает некоторые проблемы в нашем экземпляре.

Выполнение следующего в консоли Rails должно сработать:

old_locale = "es_XX"
new_locale = "es"

DB.exec <<~SQL
  UPDATE users
  SET locale = '#{new_locale}'
  WHERE locale = '#{old_locale}'
SQL

DB.exec <<~SQL
  UPDATE site_settings
  SET value = '#{new_locale}'
  WHERE name = 'default_locale' AND value = '#{old_locale}'
SQL

DB.exec <<~SQL
  UPDATE translation_overrides
  SET locale = '#{new_locale}'
  WHERE locale = '#{old_locale}'
SQL

DB.exec <<~SQL
  UPDATE theme_translation_overrides
  SET locale = '#{new_locale}'
  WHERE locale = '#{old_locale}'
SQL

def fix_search_data(model)
  key = "#{model}_id"
  table = "#{model}_search_data"

  puts "Миграция #{table} на новый локаль."

  sql = <<~SQL
    UPDATE #{table}
        SET locale = '#{new_locale}'
      WHERE #{key} IN (
            SELECT #{key}
              FROM #{table}
              WHERE locale = '#{old_locale}'
              LIMIT 100000
          )
  SQL

  loop do
    count = DB.exec(sql)
    break if count == 0
    puts "Мигрировано #{count} строк #{table} на новый локаль."
  end
end
  
%w[category tag topic user].each { |model| fix_search_data(model) }

Спасибо! Какой наиболее эффективный способ работы с переопределёнными строками в локали?

Код, похоже, работает, но не с переопределёнными в целевой локали ‘default’.

Выполнение следующего в консоли Rails должно помочь:

I18n.reload!
ExtraLocalesController.clear_cache!
MessageBus.publish("/i18n-flush", refresh: true)

Если это не поможет, перезапуск сервера точно сработает.

Спасибо, похоже, это связано с чем-то в моём экземпляре, но, возможно, я не очень хорошо выразился в своём предыдущем сообщении :slight_smile:

Я копирую сообщение об ошибке, на всякий случай:

PG::UniqueViolation: ERROR:  duplicate key value violates unique constraint "index_translation_overrides_on_locale_and_translation_key"
DETAIL:  Key (locale, translation_key)=(es, js.docs.categories) уже существует.