Mova o idioma personalizado para o padrão (ES_XX para es)

Qual é a maneira correta de fazer isso? Do mysql, usando consultas dentro do Discourse, talvez com algum script?

Parece que usar um plugin para criar idiomas personalizados causa alguns problemas em nossa instância.

Executar o seguinte em um console Rails deve funcionar:

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 "Migrating #{table} to new_locale locale."

  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 "Migrated #{count} rows of #{table} to new locale."
  end
end
  
%w[category tag topic user].each { |model| fix_search_data(model) }
3 curtidas

Obrigado! Qual é o método mais eficaz para lidar com strings substituídas no locale?

O código parece funcionar, mas não com strings substituídas no locale ‘padrão’ de destino.

2 curtidas

Executar o seguinte no console do Rails deve ajudar:

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

Se não ajudar, reiniciar o servidor definitivamente funcionará.

3 curtidas

Obrigado, parece estar relacionado a algo na minha instância, mas talvez eu não tenha me expressado bem na minha mensagem anterior :slight_smile:

Estou copiando a mensagem de erro, só por precaução:

PG::UniqueViolation: ERRO:  violação de chave duplicada na restrição única "index_translation_overrides_on_locale_and_translation_key"
DETALHE:  A chave (locale, translation_key)=(es, js.docs.categories) já existe.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.