Mover el idioma personalizado al predeterminado (ES_XX a es)

¿Cuál es la forma correcta de hacerlo? Desde mysql, usando consultas dentro de Discourse, ¿quizás con algún script?

Parece que usar un plugin para crear un idioma personalizado causa algunos problemas en nuestra instancia.

Ejecutar lo siguiente en una consola de Rails debería 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 Me gusta

¡Gracias! ¿Cuál es el método más eficaz para tratar las cadenas anuladas en la configuración regional?

El código parece funcionar, pero no con las anuladas en la configuración regional de destino ‘predeterminada’.

2 Me gusta

Ejecutar lo siguiente en la consola de Rails debería ayudar:

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

Si no es así, reiniciar el servidor definitivamente debería funcionar.

3 Me gusta

Gracias, parece estar relacionado con algo en mi instancia, pero quizás no me expresé bien en mi mensaje anterior :slight_smile:

Copio el mensaje de error, por si acaso:

PG::UniqueViolation: ERROR:  se viola la restricción de clave única \"index_translation_overrides_on_locale_and_translation_key\"
DETAIL:  La clave (locale, translation_key)=(es, js.docs.categories) ya existe.

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