Déplacer la langue personnalisée vers la langue par défaut (ES_XX en es)

Quelle est la bonne façon de faire ? Depuis mysql, en utilisant des requêtes dans Discourse, peut-être avec un script ?

Il semble que l’utilisation d’un plugin pour créer des langues personnalisées cause des problèmes dans notre instance.

L’exécution de ce qui suit dans une console Rails devrait fonctionner :

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 "Migration de #{table} vers la locale new_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 « J'aime »

Merci ! Quelle est la méthode la plus efficace pour gérer les chaînes de caractères remplacées dans la locale ?

Le code semble fonctionner, mais pas avec les chaînes remplacées dans la locale de destination « par défaut ».

2 « J'aime »

L’exécution de ce qui suit dans la console Rails devrait aider :

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

Si cela ne fonctionne pas, redémarrer le serveur devrait certainement fonctionner.

3 « J'aime »

Merci, il semble que cela soit lié à quelque chose dans mon instance, mais peut-être que je ne me suis pas bien exprimé dans mon message précédent :slight_smile:

Je copie le message d’erreur, au cas où :

PG::UniqueViolation : ERREUR : la violation de la clé unique contraint la clé unique « index_translation_overrides_on_locale_and_translation_key »
DÉTAIL : La clé (locale, translation_key)=(es, js.docs.categories) existe déjà.

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