ما هي الطريقة الصحيحة للقيام بذلك؟ من mysql، باستخدام استعلامات داخل Discourse، ربما مع بعض النصوص البرمجية؟
يبدو أن استخدام إضافة لإنشاء لغة مخصصة يسبب بعض المشاكل في نسختنا.
ما هي الطريقة الصحيحة للقيام بذلك؟ من 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 "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) }
شكراً! ما هي الطريقة الأكثر فعالية للتعامل مع السلاسل النصية التي تم تجاوزها في اللغة المحلية؟
يبدو أن الكود يعمل ولكن ليس مع السلاسل النصية التي تم تجاوزها في اللغة المحلية الافتراضية ‘default’.
قد يساعد تشغيل ما يلي في وحدة تحكم Rails:
I18n.reload!
ExtraLocalesController.clear_cache!
MessageBus.publish("/i18n-flush", refresh: true)
إذا لم يكن الأمر كذلك، فإن إعادة تشغيل الخادم ستعمل بالتأكيد.
شكرًا لك، يبدو أن الأمر يتعلق بشيء ما في نسختي ولكن ربما لم أعبر عن نفسي جيدًا في رسالتي السابقة ![]()
أنسخ رسالة الخطأ، فقط في حال:
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.