]> source.dussan.org Git - redmine.git/commitdiff
Ignore locales without :general_lang_name key (#18110).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 18 Oct 2014 09:07:51 +0000 (09:07 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Sat, 18 Oct 2014 09:07:51 +0000 (09:07 +0000)
git-svn-id: http://svn.redmine.org/redmine/trunk@13450 e93f8b46-1217-0410-a6f0-8f06a7374b81

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

index 11be1b61392bff3b53eb7840d5878fdf63a17731..3e783170fb68dbd2c4181c02b2bdd1b0c694a308 100644 (file)
@@ -90,11 +90,19 @@ module Redmine
     # Returns an array of languages names and code sorted by names, example:
     # [["Deutsch", "de"], ["English", "en"] ...]
     #
-    # The result is cached to prevent from loading all translations files.
-    def languages_options
-      ActionController::Base.cache_store.fetch "i18n/languages_options" do
-        valid_languages.map {|lang| [ll(lang.to_s, :general_lang_name), lang.to_s]}.sort {|x,y| x.first <=> y.first }
-      end      
+    # 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
+        valid_languages.
+          select {|locale| ::I18n.exists?(:general_lang_name, locale)}.
+          map {|lang| [ll(lang.to_s, :general_lang_name), lang.to_s]}.
+          sort {|x,y| x.first <=> y.first }
+      else
+        ActionController::Base.cache_store.fetch "i18n/languages_options" do
+          languages_options :cache => false
+        end
+      end
     end
 
     def find_language(lang)
index fc1fdf3d11bc71209f9b28bc27977fec5ab64da8..6d35614866d8b21735ed184737b7bd0e8d4d83f8 100644 (file)
@@ -198,6 +198,11 @@ class Redmine::I18nTest < ActiveSupport::TestCase
     assert_include [ja, "ja"], options
   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)
+  end
+
   def test_locales_validness
     lang_files_count = Dir["#{Rails.root}/config/locales/*.yml"].size
     assert_equal lang_files_count, valid_languages.size