Use .with_locale for about page

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.
This commit is contained in:
Andy Allan 2023-03-15 18:08:59 +00:00
parent 5d86e624b0
commit a91afa0e78
3 changed files with 48 additions and 42 deletions

View 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 %>

View 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 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 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>
<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" %></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", :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" %></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", :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>
</div>
<div class='bg-white px-5 py-4'>
<p class="lead"><%= t ".lede_text", :locale => @locale %></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 => "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 => { :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 => "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 => "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>
<% end %>
<% end %>

View 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