]> source.dussan.org Git - redmine.git/commitdiff
Force UTF-8 encoding of language names.
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Fri, 26 Dec 2014 11:38:52 +0000 (11:38 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Fri, 26 Dec 2014 11:38:52 +0000 (11:38 +0000)
git-svn-id: http://svn.redmine.org/redmine/trunk@13807 e93f8b46-1217-0410-a6f0-8f06a7374b81

lib/redmine/i18n.rb
test/unit/lib/redmine/i18n_test.rb

index 4b8dc218537c68e08e380bdf9484fc5f58d90792..7f16105f14f2422dd73e202df35667e5e56dd7d9 100644 (file)
@@ -93,7 +93,7 @@ module Redmine
     # The result is cached to prevent from loading all translations files
     # unless :cache => false option is given
     def languages_options(options={})
-      if options[:cache] == false
+      options = if options[:cache] == false
         valid_languages.
           select {|locale| ::I18n.exists?(:general_lang_name, locale)}.
           map {|lang| [ll(lang.to_s, :general_lang_name), lang.to_s]}.
@@ -103,6 +103,7 @@ module Redmine
           languages_options :cache => false
         end
       end
+      options.map {|name, lang| [name.force_encoding("UTF-8"), lang.force_encoding("UTF-8")]}
     end
 
     def find_language(lang)
index a267fd7b991c37380b8a7fb18f91c5bd82e17ece..6684220fbb445d3f987c05d5c9e4ec1c7e18e49b 100644 (file)
@@ -199,6 +199,11 @@ class Redmine::I18nTest < ActiveSupport::TestCase
     assert_include [ja, "ja"], options
   end
 
+  def test_languages_options_should_return_strings_with_utf8_encoding
+    strings = languages_options.flatten
+    assert_equal ["UTF-8"], strings.map(&:encoding).uniq.map(&:name).sort
+  end
+
   def test_languages_options_should_ignore_locales_without_general_lang_name_key
     stubs(:valid_languages).returns([:en, :foo])
     assert_equal [["English", "en"]], languages_options(:cache => false)