FIX: "Customize Text" showed compiled MessageFormat string for overridden _MF translations

This commit is contained in:
Gerhard Schlager
2021-12-16 16:54:45 +01:00
committed by Gerhard Schlager
parent e19a7a7c8d
commit 4cd5158974
4 changed files with 54 additions and 14 deletions

View File

@@ -169,14 +169,14 @@ module I18n
if !by_site.has_key?(locale)
# Load overrides
translations_overrides = TranslationOverride.where(locale: locale).pluck(:translation_key, :value, :compiled_js)
translations_overrides = TranslationOverride.where(locale: locale).pluck(:translation_key, :value)
if translations_overrides.empty?
by_site[locale] = {}
else
translations_overrides.each do |tuple|
by_locale = by_site[locale] ||= {}
by_locale[tuple[0]] = tuple[2] || tuple[1]
by_locale[tuple[0]] = tuple[1]
end
end

View File

@@ -161,18 +161,25 @@ module JsLocaleHelper
end
def self.output_client_overrides(locale)
translations = (I18n.overrides_by_locale(locale) || {}).select { |k, _| k[/^(admin_js|js)\./] }
return "" if translations.blank?
overrides = TranslationOverride
.where(locale: locale)
.where("translation_key LIKE 'js.%' OR translation_key LIKE 'admin_js.%'")
.pluck(:translation_key, :value, :compiled_js)
message_formats = {}
return "" if overrides.blank?
translations.delete_if do |key, value|
if key.to_s.end_with?("_MF")
message_formats[key] = value
message_formats = []
translations = {}
overrides.each do |key, value, compiled_js|
if key.end_with?("_MF")
message_formats << "#{key.inspect}: #{compiled_js}"
else
translations[key] = value
end
end
message_formats = message_formats.map { |k, v| "#{k.inspect}: #{v}" }.join(", ")
message_formats = message_formats.join(", ")
<<~JS
I18n._mfOverrides = {#{message_formats}};