diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index ca21c3a76..95e4121c5 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -3,6 +3,18 @@ def page_text_direction I18n.t("i18n.direction", locale: I18n.locale, default: "ltr") end + def t_locale_fallback(key, options = {}) + options['locale'] = I18n.locale + options[:fallback] = nil + translation = I18n.t(key, options) + + if translation.nil? || translation.include?("translation missing") + I18n.default_locale + else + return nil + end + end + def wrapper_class "direction-#{page_text_direction}" if page_text_direction end diff --git a/app/presenters/content_item/title_and_context.rb b/app/presenters/content_item/title_and_context.rb index 8619bc418..5a8348b88 100644 --- a/app/presenters/content_item/title_and_context.rb +++ b/app/presenters/content_item/title_and_context.rb @@ -4,6 +4,7 @@ def title_and_context { title: title, context: I18n.t("content_item.schema_name.#{document_type}", count: 1), + context_locale: t_locale_fallback("content_item.schema_name.#{document_type}", count: 1), average_title_length: "long" } end diff --git a/app/presenters/content_item_presenter.rb b/app/presenters/content_item_presenter.rb index d9c9fd35f..f1b2faf80 100644 --- a/app/presenters/content_item_presenter.rb +++ b/app/presenters/content_item_presenter.rb @@ -1,5 +1,6 @@ class ContentItemPresenter include ContentItem::Withdrawable + include ApplicationHelper attr_reader :content_item, :requested_content_item_path, diff --git a/app/views/content_items/publication.html.erb b/app/views/content_items/publication.html.erb index 45b7b8620..365937a0d 100644 --- a/app/views/content_items/publication.html.erb +++ b/app/views/content_items/publication.html.erb @@ -8,6 +8,7 @@
<%= render 'govuk_publishing_components/components/title', context: t("content_item.schema_name.#{@content_item.document_type}", count: 1), + context_locale: t_locale_fallback("content_item.schema_name.#{@content_item.document_type}", count: 1), title: @content_item.title, average_title_length: "long" %>
diff --git a/test/helpers/application_helper_test.rb b/test/helpers/application_helper_test.rb index df2100cda..e4c5560ef 100644 --- a/test/helpers/application_helper_test.rb +++ b/test/helpers/application_helper_test.rb @@ -12,4 +12,23 @@ class ApplicationHelperTest < ActionView::TestCase self.stubs(:request).returns(ActionDispatch::TestRequest.create("PATH_INFO" => '/foo/bar', "QUERY_STRING" => 'ham=jam&spam=gram')) assert_equal '/foo/bar', current_path_without_query_string end + + test "#t_locale_fallback returns nil for a string with a locale translation" do + fallback = t_locale_fallback("content_item.schema_name.imported", count: 1, locale: :de) + assert_equal nil, fallback + end + + test "#t_locale_fallback returns default locale for a string with no locale translation" do + I18n.with_locale(:de) do + fallback = t_locale_fallback("content_item.schema_name.decision", count: 1, locale: :de) + assert_equal :en, fallback + end + end + + test "#t_locale_fallback returns fallback for irrelevant key" do + I18n.with_locale(:de) do + fallback = t_locale_fallback("blah", count: 1) + assert_equal :en, fallback + end + end end diff --git a/test/presenters/corporate_information_page_presenter_test.rb b/test/presenters/corporate_information_page_presenter_test.rb index 95f749d6b..cf96be6a1 100644 --- a/test/presenters/corporate_information_page_presenter_test.rb +++ b/test/presenters/corporate_information_page_presenter_test.rb @@ -30,7 +30,7 @@ def schema_name test 'has title without context' do assert presented_item.is_a?(ContentItem::TitleAndContext) - title_component_params = { title: "About us" } + title_component_params = { title: "About us", context_locale: :en } assert_equal title_component_params, presented_item.title_and_context end diff --git a/test/presenters/specialist_document_presenter_test.rb b/test/presenters/specialist_document_presenter_test.rb index 9d6a4e451..fd04755cf 100644 --- a/test/presenters/specialist_document_presenter_test.rb +++ b/test/presenters/specialist_document_presenter_test.rb @@ -83,7 +83,9 @@ class PresentedSpecialistDocument < SpecialistDocumentTestCase assert presented_item('aaib-reports').is_a?(ContentItem::TitleAndContext) title_component_params = { title: schema_item('aaib-reports')['title'], - average_title_length: 'long' + context_locale: nil, + average_title_length: 'long', + } assert_equal title_component_params, presented_item('aaib-reports').title_and_context