Monkey patch I18n::JS to ensure translations are in a fixed order
Without this the result of converting the hash to JSON can vary which causes different hashes for the result JS asset. This is only an issue with ruby 1.8 as ruby 1.9 hashes behave like the ActiveSupport::OrderedHash and enumerate in insertion order.
This commit is contained in:
parent
815c98c977
commit
81336c4a87
1 changed files with 26 additions and 0 deletions
|
@ -16,6 +16,32 @@ module I18n
|
|||
end
|
||||
end
|
||||
end
|
||||
|
||||
module JS
|
||||
class << self
|
||||
def make_ordered(unordered)
|
||||
ordered = ActiveSupport::OrderedHash.new
|
||||
|
||||
unordered.keys.sort { |a,b| a.to_s <=> b.to_s }.each do |key|
|
||||
value = unordered[key]
|
||||
|
||||
if value.is_a?(Hash)
|
||||
ordered[key] = make_ordered(value)
|
||||
else
|
||||
ordered[key] = value
|
||||
end
|
||||
end
|
||||
|
||||
ordered
|
||||
end
|
||||
|
||||
def filtered_translations_with_order
|
||||
make_ordered(filtered_translations_without_order)
|
||||
end
|
||||
|
||||
alias_method_chain :filtered_translations, :order
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
I18n::Backend::Simple.include(I18n::Backend::PluralizationFallback)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue