Try harder to find a name in the right language
authorTom Hughes <tom@compton.nu>
Sat, 24 May 2014 11:52:09 +0000 (12:52 +0100)
committerTom Hughes <tom@compton.nu>
Sat, 24 May 2014 11:52:09 +0000 (12:52 +0100)
app/helpers/browse_helper.rb
test/helpers/browse_helper_test.rb

index 2b9cb6f9921cc9bd83a40440ce5989dd341be42b..bfc7db80bf6199641de4a064951d696fa0ce3e9d 100644 (file)
@@ -13,8 +13,14 @@ module BrowseHelper
     # don't look at object tags if redacted, so as to avoid giving
     # away redacted version tag information.
     unless object.redacted?
-      if object.tags.include? "name:#{I18n.locale}"
-        name = t 'printable_name.with_name_html', :name => content_tag(:bdi, object.tags["name:#{I18n.locale}"].to_s ), :id => content_tag(:bdi, name)
+      locale = I18n.locale.to_s
+
+      while locale =~ /-[^-]+/ and not object.tags.include? "name:#{I18n.locale}"
+        locale = locale.sub(/-[^-]+/, "")
+      end
+
+      if object.tags.include? "name:#{locale}"
+        name = t 'printable_name.with_name_html', :name => content_tag(:bdi, object.tags["name:#{locale}"].to_s ), :id => content_tag(:bdi, name)
       elsif object.tags.include? 'name'
         name = t 'printable_name.with_name_html', :name => content_tag(:bdi, object.tags['name'].to_s ), :id => content_tag(:bdi, name)
       end
index 38d8c2dffa8a7334c15996b0c9afcd3fb6be2aa6..8306749409cfcf642a19257b0c4ea025480c5420 100644 (file)
@@ -29,6 +29,15 @@ class BrowseHelperTest < ActionView::TestCase
     assert_equal "<bdi>проверки узла</bdi> (<bdi>18, v2</bdi>)", printable_name(nodes(:node_with_name_current_version), true)
     assert_equal "18, v1", printable_name(nodes(:node_with_name_redacted_version), true)
 
+    I18n.locale = "ru-RU"
+
+    assert_equal "17", printable_name(current_nodes(:redacted_node))
+    assert_equal "<bdi>проверки узла</bdi> (<bdi>18</bdi>)", printable_name(current_nodes(:node_with_name))
+    assert_equal "<bdi>проверки узла</bdi> (<bdi>18</bdi>)", printable_name(nodes(:node_with_name_current_version))
+    assert_equal "18", printable_name(nodes(:node_with_name_redacted_version))
+    assert_equal "<bdi>проверки узла</bdi> (<bdi>18, v2</bdi>)", printable_name(nodes(:node_with_name_current_version), true)
+    assert_equal "18, v1", printable_name(nodes(:node_with_name_redacted_version), true)
+
     I18n.locale = "de"
 
     assert_equal "17", printable_name(current_nodes(:redacted_node))