Skip to content

Commit

Permalink
FIX: moment_js locale files for zh_CN and zh_TW were not found
Browse files Browse the repository at this point in the history
moment_js uses a different format for locale names in plugins and files in core. Follow-up to 4799cf2
  • Loading branch information
gschlager committed Feb 19, 2019
1 parent 4799cf2 commit b3ab0e5
Showing 1 changed file with 6 additions and 4 deletions.
10 changes: 6 additions & 4 deletions lib/js_locale_helper.rb
Expand Up @@ -164,9 +164,9 @@ def self.output_locale(locale)
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

Expand All @@ -180,16 +180,18 @@ def self.find_locale(locale_chain, path, type, fallback_to_english:)
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
Expand Down

0 comments on commit b3ab0e5

Please sign in to comment.