summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/redmine/i18n.rb3
-rw-r--r--test/unit/lib/redmine/i18n_test.rb5
2 files changed, 7 insertions, 1 deletions
diff --git a/lib/redmine/i18n.rb b/lib/redmine/i18n.rb
index 4b8dc2185..7f16105f1 100644
--- a/lib/redmine/i18n.rb
+++ b/lib/redmine/i18n.rb
@@ -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)
diff --git a/test/unit/lib/redmine/i18n_test.rb b/test/unit/lib/redmine/i18n_test.rb
index a267fd7b9..6684220fb 100644
--- a/test/unit/lib/redmine/i18n_test.rb
+++ b/test/unit/lib/redmine/i18n_test.rb
@@ -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)