]> git.openstreetmap.org Git - rails.git/commitdiff
Use .with_locale for about page
authorAndy Allan <git@gravitystorm.co.uk>
Wed, 15 Mar 2023 18:08:59 +0000 (18:08 +0000)
committerAndy Allan <git@gravitystorm.co.uk>
Wed, 22 Mar 2023 10:13:01 +0000 (10:13 +0000)
This simplifies the code, since we can avoid having to specify the
locale for every translation.

The test was added since I originally developed another approach,
but that caused exceptions on invalid locales.

app/views/site/_about_section.html.erb
app/views/site/about.html.erb
test/controllers/site_controller_test.rb

index ead28f9fd87186f46fa7b59884b352cedf94ecc7..60fd3f0690987d8bfd325762f1ae429918f4680c 100644 (file)
@@ -1,7 +1,7 @@
 <%= tag.div :class => "section", :id => local_assigns[:id] do %>
   <div class='d-flex align-items-center gap-2 mb-2'>
     <div class='flex-shrink-0 icon <%= icon %>'></div>
-    <h2 class='flex-grow-1 mb-0'><%= t "site.about.#{title}_title", :locale => @locale %></h2>
+    <h2 class='flex-grow-1 mb-0'><%= t "site.about.#{title}_title" %></h2>
   </div>
   <%= yield %>
 <% end %>
index 5011523e12023e605c52f64b0385a249b4eb706b..12d9a06080e4108f1fb8ed5a4061eb6eb53e1bfb 100644 (file)
@@ -1,45 +1,46 @@
-<%= tag.div :lang => @locale, :dir => t("html.dir", :locale => @locale) do %>
-  <div class="container-lg attr">
-    <div class='row'>
-      <div class='col-sm-7 user-image'></div>
-      <div class='col-sm-5 px-5 py-3 byosm'>
-        <p class='h5 text-white text-nowrap'><%= t ".copyright_html", :locale => @locale %></p>
+<% I18n.with_locale @locale do %>
+  <%= tag.div :lang => @locale, :dir => t("html.dir") do %>
+    <div class="container-lg attr">
+      <div class='row'>
+        <div class='col-sm-7 user-image'></div>
+        <div class='col-sm-5 px-5 py-3 byosm'>
+          <p class='h5 text-white text-nowrap'><%= t ".copyright_html" %></p>
+        </div>
       </div>
-    </div>
-    <div class='row'>
-      <div class="w-100 px-5 py-4 bg-dark">
-        <h1 class="text-white fw-light"><%= t ".used_by_html", :name => tag.span("OpenStreetMap", :class => "user-name"), :locale => @locale %></h1>
+      <div class='row'>
+        <div class="w-100 px-5 py-4 bg-dark">
+          <h1 class="text-white fw-light"><%= t ".used_by_html", :name => tag.span("OpenStreetMap", :class => "user-name") %></h1>
+        </div>
       </div>
     </div>
-  </div>
 
-  <div class='bg-white px-5 py-4'>
-    <p class="lead"><%= t ".lede_text", :locale => @locale %></p>
+    <div class='bg-white px-5 py-4'>
+      <p class="lead"><%= t ".lede_text" %></p>
 
-    <%= render :layout => "about_section", :locals => { :icon => "local", :title => "local_knowledge" } do %>
-      <p><%= t "site.about.local_knowledge_html", :locale => @locale %></p>
-    <% end %>
+      <%= render :layout => "about_section", :locals => { :icon => "local", :title => "local_knowledge" } do %>
+        <p><%= t "site.about.local_knowledge_html" %></p>
+      <% end %>
 
-    <%= render :layout => "about_section", :locals => { :icon => "community", :title => "community_driven" } do %>
-      <p><%= t "site.about.community_driven_html", :locale => @locale, :diary_path => diary_entries_path %></p>
-    <% end %>
+      <%= render :layout => "about_section", :locals => { :icon => "community", :title => "community_driven" } do %>
+        <p><%= t "site.about.community_driven_html", :diary_path => diary_entries_path %></p>
+      <% end %>
 
-    <%= render :layout => "about_section", :locals => { :id => "open-data", :icon => "open", :title => "open_data" } do %>
-      <p><%= t "site.about.open_data_html", :locale => @locale, :copyright_path => copyright_path %></p>
-    <% end %>
+      <%= render :layout => "about_section", :locals => { :id => "open-data", :icon => "open", :title => "open_data" } do %>
+        <p><%= t "site.about.open_data_html", :copyright_path => copyright_path %></p>
+      <% end %>
 
-    <%= render :layout => "about_section", :locals => { :id => "legal", :icon => "legal", :title => "legal" } do %>
-      <p><%= t "site.about.legal_1_html", :locale => @locale %></p>
-      <p><%= t "site.about.legal_2_html", :locale => @locale %></p>
-    <% end %>
+      <%= render :layout => "about_section", :locals => { :id => "legal", :icon => "legal", :title => "legal" } do %>
+        <p><%= t "site.about.legal_1_html" %></p>
+        <p><%= t "site.about.legal_2_html" %></p>
+      <% end %>
 
-    <%= render :layout => "about_section", :locals => { :id => "partners", :icon => "partners", :title => "partners" } do %>
-      <p><%= t "layouts.hosting_partners_html", :locale => @locale,
-                                                :ucl => link_to(t("layouts.partners_ucl", :locale => @locale), "https://www.ucl.ac.uk"),
-                                                :fastly => link_to(t("layouts.partners_fastly", :locale => @locale), "https://www.fastly.com/"),
-                                                :bytemark => link_to(t("layouts.partners_bytemark", :locale => @locale), "https://www.bytemark.co.uk"),
-                                                :partners => link_to(t("layouts.partners_partners", :locale => @locale), "https://hardware.openstreetmap.org/thanks/") %>
-      </p>
-    <% end %>
-  </div>
+      <%= render :layout => "about_section", :locals => { :id => "partners", :icon => "partners", :title => "partners" } do %>
+        <p><%= t "layouts.hosting_partners_html", :ucl => link_to(t("layouts.partners_ucl"), "https://www.ucl.ac.uk"),
+                                                  :fastly => link_to(t("layouts.partners_fastly"), "https://www.fastly.com/"),
+                                                  :bytemark => link_to(t("layouts.partners_bytemark"), "https://www.bytemark.co.uk"),
+                                                  :partners => link_to(t("layouts.partners_partners"), "https://hardware.openstreetmap.org/thanks/") %>
+        </p>
+      <% end %>
+    </div>
+  <% end %>
 <% end %>
index 8a38da5c000ee99a7227b1caf8326979f93f34a1..75a042bfeb95ca1ca14db8638b7040606010b3a1 100644 (file)
@@ -476,6 +476,11 @@ class SiteControllerTest < ActionDispatch::IntegrationTest
     assert_response :success
     assert_template "about"
     assert_select "div[lang='ar'][dir='rtl']"
+
+    # Page should still render even with incorrect locale
+    get about_path(:about_locale => "zzz")
+    assert_response :success
+    assert_template "about"
   end
 
   # Test the export page