FIX: moment_js locale files for zh_CN and zh_TW were not found

moment_js uses a different format for locale names in plugins and files in core. Follow-up to 4799cf2811
This commit is contained in:
Gerhard Schlager 2019-02-19 16:07:19 +01:00
parent 4799cf2811
commit b3ab0e5753
1 changed files with 6 additions and 4 deletions

View File

@ -164,9 +164,9 @@ module JsLocaleHelper
def self.find_moment_locale(locale_chain)
path = "#{Rails.root}/vendor/assets/javascripts/moment-locale"
find_locale(locale_chain, path, :moment_js, fallback_to_english: false) do
find_locale(locale_chain, path, :moment_js, fallback_to_english: false) do |locale|
# moment.js uses a different naming scheme for locale files
locale_chain.map { |l| l.tr('_', '-').downcase }
locale.tr('_', '-').downcase
end
end
@ -180,16 +180,18 @@ module JsLocaleHelper
plugin_locale = DiscoursePluginRegistry.locales[locale]
return plugin_locale[type] if plugin_locale&.has_key?(type)
locale = yield(locale) if block_given?
filename = File.join(path, "#{locale}.js")
return [locale, filename] if File.exist?(filename)
end
locale_chain = yield if block_given?
locale_chain.map! { |locale| yield(locale) } if block_given?
# try again, but this time only with the language itself
locale_chain = locale_chain.map { |l| l.split(/[-_]/)[0] }
.uniq.reject { |l| locale_chain.include?(l) }
unless locale_chain.empty?
if locale_chain.any?
locale_data = find_locale(locale_chain, path, type, fallback_to_english: false)
return locale_data if locale_data
end