Sposta la lingua personalizzata a quella predefinita (ES_XX a es)

Qual è il modo corretto per farlo? Da mysql, usando query all’interno di Discourse, magari con qualche script?

Sembra che usare un plugin per creare lingue personalizzate causi alcuni problemi nella nostra istanza.

L’esecuzione di quanto segue in una console Rails dovrebbe funzionare:

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 Mi Piace

Grazie! Qual è il metodo più efficace per gestire le stringhe sovrascritte in locale?

Il codice sembra funzionare ma non con le stringhe sovrascritte nella locale di destinazione ‘default’.

2 Mi Piace

L’esecuzione di quanto segue nella console di Rails dovrebbe aiutare:

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

Se non dovesse funzionare, il riavvio del server dovrebbe sicuramente risolvere il problema.

3 Mi Piace

Grazie, sembra essere correlato a qualcosa nella mia istanza, ma forse non mi sono espresso bene nel messaggio precedente :slight_smile:

Copio il messaggio di errore, non si sa mai:

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) already exists.

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