metadata_presenter 3.3.10 → 3.3.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/metadata_presenter/engine_controller.rb +7 -0
  3. data/app/models/metadata_presenter/saved_form.rb +2 -3
  4. data/app/validators/metadata_presenter/base_validator.rb +13 -3
  5. data/app/views/layouts/metadata_presenter/application.html.erb +2 -2
  6. data/app/views/metadata_presenter/analytics/_cookie_banner_confirmation.html.erb +2 -2
  7. data/app/views/metadata_presenter/attribute/_external_start_page_info.html.erb +2 -2
  8. data/app/views/metadata_presenter/component/_conditional_component_banner.html.erb +1 -1
  9. data/app/views/metadata_presenter/component/_upload.html.erb +1 -1
  10. data/app/views/metadata_presenter/footer/_meta.html.erb +3 -1
  11. data/app/views/metadata_presenter/footer/footer.html.erb +5 -3
  12. data/app/views/metadata_presenter/header/show.html.erb +8 -20
  13. data/app/views/metadata_presenter/page/checkanswers.html.erb +3 -3
  14. data/app/views/metadata_presenter/page/content.html.erb +5 -4
  15. data/app/views/metadata_presenter/page/multiplequestions.html.erb +7 -5
  16. data/app/views/metadata_presenter/page/singlequestion.html.erb +4 -4
  17. data/app/views/metadata_presenter/save_and_return/email_confirmation.html.erb +2 -2
  18. data/app/views/metadata_presenter/save_and_return/resume_from_start.html.erb +1 -1
  19. data/app/views/metadata_presenter/save_and_return/resume_progress.html.erb +2 -2
  20. data/app/views/metadata_presenter/save_and_return/return.html.erb +2 -2
  21. data/app/views/metadata_presenter/save_and_return/show.html.erb +1 -1
  22. data/app/views/metadata_presenter/session/_timeout_fallback.html.erb +2 -3
  23. data/config/locales/cy.yml +181 -0
  24. data/config/locales/en.yml +39 -9
  25. data/default_metadata/string/error.accept.json +2 -1
  26. data/default_metadata/string/error.address.json +2 -1
  27. data/default_metadata/string/error.autocomplete.json +2 -1
  28. data/default_metadata/string/error.catch_all.json +2 -1
  29. data/default_metadata/string/error.date.json +2 -1
  30. data/default_metadata/string/error.date_after.json +2 -1
  31. data/default_metadata/string/error.date_before.json +2 -1
  32. data/default_metadata/string/error.email.json +2 -1
  33. data/default_metadata/string/error.max_files.json +2 -1
  34. data/default_metadata/string/error.max_length.json +2 -1
  35. data/default_metadata/string/error.max_size.json +2 -1
  36. data/default_metadata/string/error.max_word.json +2 -1
  37. data/default_metadata/string/error.maximum.json +2 -1
  38. data/default_metadata/string/error.min_length.json +2 -1
  39. data/default_metadata/string/error.min_word.json +2 -1
  40. data/default_metadata/string/error.minimum.json +2 -1
  41. data/default_metadata/string/error.multiupload.json +2 -1
  42. data/default_metadata/string/error.number.json +2 -1
  43. data/default_metadata/string/error.postcode.json +2 -1
  44. data/default_metadata/string/error.required.json +2 -2
  45. data/default_metadata/string/error.virus_scan.json +2 -2
  46. data/lib/metadata_presenter/version.rb +1 -1
  47. metadata +3 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 72f903ea69aac642330788eb582ca3ca0f23b6be19bb46675dd57e9c65435a9e
4
- data.tar.gz: b937d1215881c6634dab4ac6844cc9f4a9d5e34bda404c8d71fc26d5800ffeea
3
+ metadata.gz: 79c2d0ab7d427f385e8587160abeee458da48091cb3630286d7a0b4608104fb7
4
+ data.tar.gz: 8fcc6f6707dae22f09838083b3f65248c40f3cbea085ed40a9fd35ca3a0bc328
5
5
  SHA512:
6
- metadata.gz: c4cb42cfa3147e7b5ba49fa4d847fdfe3af0a568851a525da702f080d08c03bbe8c0f94b01eacf6b5191c04d793a3051a47ecf19338095a35563a5f9d033cecf
7
- data.tar.gz: ef5eb881fc90c4bc68057740d6caa4370a14c5328480044384b6ac7c582f0d49dc1acf32e04f61b9cc5f32f275de694485de210ca230df534137e2e7a0fe2440
6
+ metadata.gz: 978db9bff04000d371f2ac68800dfd5dc2d2dee2e12154cf2c4cb5cfa184cf547fe861c5fd1005109c44545e08cbe31e9f7434da8ced75fb637b20d3ec9e95e1
7
+ data.tar.gz: 720656165350ddf3ec0f87d4906b3feb1512abaffd4ec63f5b894f86ad7a5c5e88c091d774c4116076ebb28b2c4a848b2ddb1e792c1c957ae74dec796e221d5a
@@ -5,6 +5,7 @@ module MetadataPresenter
5
5
  helper MetadataPresenter::ApplicationHelper
6
6
  default_form_builder GOVUKDesignSystemFormBuilder::FormBuilder
7
7
 
8
+ around_action :switch_locale
8
9
  before_action :show_maintenance_page
9
10
 
10
11
  def reload_user_data
@@ -137,6 +138,12 @@ module MetadataPresenter
137
138
  render template: 'errors/500', status: :internal_server_error
138
139
  end
139
140
 
141
+ def switch_locale(&action)
142
+ I18n.with_locale(
143
+ service.metadata&.[]('locale') || I18n.default_locale, &action
144
+ )
145
+ end
146
+
140
147
  def redirect_to_page(url)
141
148
  redirect_to File.join(request.script_name, url)
142
149
  end
@@ -21,9 +21,8 @@ module MetadataPresenter
21
21
  :created_at,
22
22
  :updated_at
23
23
 
24
- validates :secret_question, :secret_answer, :page_slug, :service_version, :user_id, :user_token, presence: { message: 'Enter an answer for "%{attribute}"' }, allow_blank: false
25
-
26
- def initialize; end
24
+ validates :secret_question, :secret_answer, :page_slug, :service_version, :user_id, :user_token,
25
+ presence: true, allow_blank: false
27
26
 
28
27
  def populate_param_values(params)
29
28
  self.email = params['email']
@@ -68,7 +68,7 @@ module MetadataPresenter
68
68
 
69
69
  # The default error message will be look using the schema key.
70
70
  # Assuming the schema key is 'grogu' then the default message
71
- # will look for 'error.grogu.value'.
71
+ # will look for 'error.grogu.value:en' or 'error.grogu.value:cy'.
72
72
  #
73
73
  # @return [String] returns the default error message
74
74
  # @raise [MetadataPresenter::NoDefaultMessage] raises no default message if
@@ -80,9 +80,9 @@ module MetadataPresenter
80
80
  .default_metadata[default_error_message_key]
81
81
 
82
82
  if default_message.present?
83
- default_message['value'] % error_message_hash.merge(params)
83
+ default_message[error_key] % error_message_hash.merge(params)
84
84
  else
85
- raise NoDefaultMessage, "No default message found for key '#{default_error_message_key}'."
85
+ raise NoDefaultMessage, "No default '#{error_key}' message found for key '#{default_error_message_key}'."
86
86
  end
87
87
  end
88
88
 
@@ -106,6 +106,16 @@ module MetadataPresenter
106
106
  @schema_key ||= self.class.name.demodulize.gsub('Validator', '').underscore
107
107
  end
108
108
 
109
+ # The key to use when retrieving localised error messages.
110
+ # This key will be `value:locale` i.e. `value:en` for English or
111
+ # `value:cy` for Welsh.
112
+ #
113
+ # @return [String] value key to be looked in the default error metadata
114
+ #
115
+ def error_key
116
+ @error_key ||= ['value', I18n.locale].join(':').freeze
117
+ end
118
+
109
119
  # Error message hash that will be interpolate with the custom message or
110
120
  # the default metadata
111
121
  #
@@ -1,5 +1,5 @@
1
1
  <!DOCTYPE html>
2
- <html lang="en">
2
+ <html lang="<%= I18n.locale %>" class="govuk-template">
3
3
  <head>
4
4
  <meta charset="utf-8">
5
5
  <title><%= service.service_name %></title>
@@ -42,7 +42,7 @@
42
42
  <div class="govuk-width-container govuk-body-m">
43
43
  <main class="govuk-main-wrapper govuk-main-wrapper--auto-spacing" id="main-content" role="main">
44
44
  <% if back_link.present? %>
45
- <a class="govuk-back-link" href="<%= back_link %>">Back</a>
45
+ <a class="govuk-back-link" href="<%= back_link %>"><%= t('presenter.back') %></a>
46
46
  <% end %>
47
47
  <% if !allowed_page? %>
48
48
  <%= render partial: 'metadata_presenter/session/timeout_fallback' %>
@@ -5,7 +5,7 @@
5
5
  <div class="govuk-grid-column-two-thirds">
6
6
  <div class="govuk-cookie-banner__content">
7
7
  <p class="govuk-body">
8
- <%= t('presenter.analytics.confirmation', action: t('presenter.analytics.accepted')) %>
8
+ <%= t('presenter.analytics.confirmation.accepted') %>
9
9
  </p>
10
10
  </div>
11
11
  </div>
@@ -18,7 +18,7 @@
18
18
  <div class="govuk-grid-column-two-thirds">
19
19
  <div class="govuk-cookie-banner__content">
20
20
  <p class="govuk-body">
21
- <%= t('presenter.analytics.confirmation', action: t('presenter.analytics.rejected')) %>
21
+ <%= t('presenter.analytics.confirmation.rejected') %>
22
22
  </p>
23
23
  </div>
24
24
  </div>
@@ -1,7 +1,7 @@
1
1
  <div class="govuk-notification-banner" role="region" aria-labelledby="govuk-notification-banner-title" data-module="govuk-notification-banner">
2
2
  <div class="govuk-notification-banner__header">
3
3
  <h2 class="govuk-notification-banner__title" id="govuk-notification-banner-title">
4
- <%= I18n.t('presenter.external_start_page_info.important') %>
4
+ <%= I18n.t('presenter.notification_banners.important') %>
5
5
  </h2>
6
6
  </div>
7
7
  <div class="govuk-notification-banner__content">
@@ -9,4 +9,4 @@
9
9
  <%= I18n.t('presenter.external_start_page_info.content', href: govuk_link_to(I18n.t('presenter.external_start_page_info.link_text'), 'https://moj-forms.service.justice.gov.uk/building-and-editing/#start-page')).html_safe %>
10
10
  </p>
11
11
  </div>
12
- </div>
12
+ </div>
@@ -1,5 +1,5 @@
1
1
  <% if single_page_preview? && !editable? && @page.conditional_components.any? %>
2
- <%= govuk_notification_banner(title_text: 'Important') do |nb|
2
+ <%= govuk_notification_banner(title_text: t('presenter.notification_banners.important')) do |nb|
3
3
  nb.with_heading(text: t('presenter.conditional_content.notification'))
4
4
  end %>
5
5
  <% end%>
@@ -6,7 +6,7 @@
6
6
  <p><%= @page_answers.send(component.id)['original_filename'] %></p>
7
7
 
8
8
  <p>
9
- <%= link_to 'Remove file', remove_file_path(component.id), class: 'govuk-link' %>
9
+ <%= link_to t('presenter.questions.upload.remove_file'), remove_file_path(component.id), class: 'govuk-link' %>
10
10
  </p>
11
11
  <% else %>
12
12
  <%= f.govuk_file_field component.id.to_sym,
@@ -2,7 +2,9 @@
2
2
  <ul class="govuk-footer__inline-list">
3
3
  <% service.meta.items.each do |item| %>
4
4
  <li class="govuk-footer__inline-list-item">
5
- <a class="govuk-footer__link" href=<%= external_or_relative_link(item.href) %>><%= item.text %></a>
5
+ <a class="govuk-footer__link" href=<%= external_or_relative_link(item.href) %>>
6
+ <%= t(item._id, scope: [:presenter, :meta], default: item.text) %>
7
+ </a>
6
8
  </li>
7
9
  <% end %>
8
10
  </ul>
@@ -9,12 +9,14 @@
9
9
  <path fill="currentColor" d="M421.5 142.8V.1l-50.7 32.3v161.1h112.4v-50.7zm-122.3-9.6A47.12 47.12 0 0 1 221 97.8c0-26 21.1-47.1 47.1-47.1 16.7 0 31.4 8.7 39.7 21.8l42.7-27.2A97.63 97.63 0 0 0 268.1 0c-36.5 0-68.3 20.1-85.1 49.7A98 98 0 0 0 97.8 0C43.9 0 0 43.9 0 97.8s43.9 97.8 97.8 97.8c36.5 0 68.3-20.1 85.1-49.7a97.76 97.76 0 0 0 149.6 25.4l19.4 22.2h3v-87.8h-80l24.3 27.5zM97.8 145c-26 0-47.1-21.1-47.1-47.1s21.1-47.1 47.1-47.1 47.2 21 47.2 47S123.8 145 97.8 145" />
10
10
  </svg>
11
11
  <span class="govuk-footer__licence-description">
12
- All content is available under the
13
- <a class="govuk-footer__link" href="https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/" rel="license">Open Government Licence v3.0</a>, except where otherwise stated
12
+ <%= t('presenter.meta.license_html') %>
14
13
  </span>
15
14
  </div>
16
15
  <div class="govuk-footer__meta-item">
17
- <a class="govuk-footer__link govuk-footer__copyright-logo" href="https://www.nationalarchives.gov.uk/information-management/re-using-public-sector-information/uk-government-licensing-framework/crown-copyright/">© Crown copyright</a>
16
+ <a class="govuk-footer__link govuk-footer__copyright-logo"
17
+ href="https://www.nationalarchives.gov.uk/information-management/re-using-public-sector-information/uk-government-licensing-framework/crown-copyright/">
18
+ <%= t('presenter.meta.copyright') %>
19
+ </a>
18
20
  </div>
19
21
  </div>
20
22
  </div>
@@ -1,24 +1,14 @@
1
- <header class="govuk-header" role="banner" data-module="govuk-header">
2
- <a href="#main-content" class="govuk-skip-link" data-module="govuk-skip-link">Skip to main content</a>
1
+ <a href="#main-content" class="govuk-skip-link" data-module="govuk-skip-link">
2
+ <%= t('presenter.header.skip') %>
3
+ </a>
3
4
 
5
+ <header class="govuk-header" role="banner" data-module="govuk-header">
4
6
  <div class="govuk-header__container govuk-width-container">
5
7
  <div class="govuk-header__logo">
6
- <a href="https://www.gov.uk/" class="govuk-header__link govuk-header__link--homepage">
8
+ <a href="<%= t('presenter.header.govuk_url') %>" class="govuk-header__link govuk-header__link--homepage">
7
9
  <span class="govuk-header__logotype">
8
- <svg
9
- aria-hidden="true"
10
- focusable="false"
11
- class="govuk-header__logotype-crown"
12
- xmlns="http://www.w3.org/2000/svg"
13
- viewbox="0 0 132 97"
14
- height="30"
15
- width="36"
16
- >
17
- <path
18
- fill="currentColor" fill-rule="evenodd"
19
- d="M25 30.2c3.5 1.5 7.7-.2 9.1-3.7 1.5-3.6-.2-7.8-3.9-9.2-3.6-1.4-7.6.3-9.1 3.9-1.4 3.5.3 7.5 3.9 9zM9 39.5c3.6 1.5 7.8-.2 9.2-3.7 1.5-3.6-.2-7.8-3.9-9.1-3.6-1.5-7.6.2-9.1 3.8-1.4 3.5.3 7.5 3.8 9zM4.4 57.2c3.5 1.5 7.7-.2 9.1-3.8 1.5-3.6-.2-7.7-3.9-9.1-3.5-1.5-7.6.3-9.1 3.8-1.4 3.5.3 7.6 3.9 9.1zm38.3-21.4c3.5 1.5 7.7-.2 9.1-3.8 1.5-3.6-.2-7.7-3.9-9.1-3.6-1.5-7.6.3-9.1 3.8-1.3 3.6.4 7.7 3.9 9.1zm64.4-5.6c-3.6 1.5-7.8-.2-9.1-3.7-1.5-3.6.2-7.8 3.8-9.2 3.6-1.4 7.7.3 9.2 3.9 1.3 3.5-.4 7.5-3.9 9zm15.9 9.3c-3.6 1.5-7.7-.2-9.1-3.7-1.5-3.6.2-7.8 3.7-9.1 3.6-1.5 7.7.2 9.2 3.8 1.5 3.5-.3 7.5-3.8 9zm4.7 17.7c-3.6 1.5-7.8-.2-9.2-3.8-1.5-3.6.2-7.7 3.9-9.1 3.6-1.5 7.7.3 9.2 3.8 1.3 3.5-.4 7.6-3.9 9.1zM89.3 35.8c-3.6 1.5-7.8-.2-9.2-3.8-1.4-3.6.2-7.7 3.9-9.1 3.6-1.5 7.7.3 9.2 3.8 1.4 3.6-.3 7.7-3.9 9.1zM69.7 17.7l8.9 4.7V9.3l-8.9 2.8c-.2-.3-.5-.6-.9-.9L72.4 0H59.6l3.5 11.2c-.3.3-.6.5-.9.9l-8.8-2.8v13.1l8.8-4.7c.3.3.6.7.9.9l-5 15.4v.1c-.2.8-.4 1.6-.4 2.4 0 4.1 3.1 7.5 7 8.1h.2c.3 0 .7.1 1 .1.4 0 .7 0 1-.1h.2c4-.6 7.1-4.1 7.1-8.1 0-.8-.1-1.7-.4-2.4V34l-5.1-15.4c.4-.2.7-.6 1-.9zM66 92.8c16.9 0 32.8 1.1 47.1 3.2 4-16.9 8.9-26.7 14-33.5l-9.6-3.4c1 4.9 1.1 7.2 0 10.2-1.5-1.4-3-4.3-4.2-8.7L108.6 76c2.8-2 5-3.2 7.5-3.3-4.4 9.4-10 11.9-13.6 11.2-4.3-.8-6.3-4.6-5.6-7.9 1-4.7 5.7-5.9 8-.5 4.3-8.7-3-11.4-7.6-8.8 7.1-7.2 7.9-13.5 2.1-21.1-8 6.1-8.1 12.3-4.5 20.8-4.7-5.4-12.1-2.5-9.5 6.2 3.4-5.2 7.9-2 7.2 3.1-.6 4.3-6.4 7.8-13.5 7.2-10.3-.9-10.9-8-11.2-13.8 2.5-.5 7.1 1.8 11 7.3L80.2 60c-4.1 4.4-8 5.3-12.3 5.4 1.4-4.4 8-11.6 8-11.6H55.5s6.4 7.2 7.9 11.6c-4.2-.1-8-1-12.3-5.4l1.4 16.4c3.9-5.5 8.5-7.7 10.9-7.3-.3 5.8-.9 12.8-11.1 13.8-7.2.6-12.9-2.9-13.5-7.2-.7-5 3.8-8.3 7.1-3.1 2.7-8.7-4.6-11.6-9.4-6.2 3.7-8.5 3.6-14.7-4.6-20.8-5.8 7.6-5 13.9 2.2 21.1-4.7-2.6-11.9.1-7.7 8.8 2.3-5.5 7.1-4.2 8.1.5.7 3.3-1.3 7.1-5.7 7.9-3.5.7-9-1.8-13.5-11.2 2.5.1 4.7 1.3 7.5 3.3l-4.7-15.4c-1.2 4.4-2.7 7.2-4.3 8.7-1.1-3-.9-5.3 0-10.2l-9.5 3.4c5 6.9 9.9 16.7 14 33.5 14.8-2.1 30.8-3.2 47.7-3.2z"
20
- ></path>
21
- <image src="{{ params.assetsPath | default('/assets/images') }}/govuk-logotype-crown.png" xlink:href="" class="govuk-header__logotype-crown-fallback-image" width="36" height="32"></image>
10
+ <svg aria-hidden="true" focusable="false" class="govuk-header__logotype-crown" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 132 97" height="30" width="36">
11
+ <path fill="currentColor" fill-rule="evenodd" d="M25 30.2c3.5 1.5 7.7-.2 9.1-3.7 1.5-3.6-.2-7.8-3.9-9.2-3.6-1.4-7.6.3-9.1 3.9-1.4 3.5.3 7.5 3.9 9zM9 39.5c3.6 1.5 7.8-.2 9.2-3.7 1.5-3.6-.2-7.8-3.9-9.1-3.6-1.5-7.6.2-9.1 3.8-1.4 3.5.3 7.5 3.8 9zM4.4 57.2c3.5 1.5 7.7-.2 9.1-3.8 1.5-3.6-.2-7.7-3.9-9.1-3.5-1.5-7.6.3-9.1 3.8-1.4 3.5.3 7.6 3.9 9.1zm38.3-21.4c3.5 1.5 7.7-.2 9.1-3.8 1.5-3.6-.2-7.7-3.9-9.1-3.6-1.5-7.6.3-9.1 3.8-1.3 3.6.4 7.7 3.9 9.1zm64.4-5.6c-3.6 1.5-7.8-.2-9.1-3.7-1.5-3.6.2-7.8 3.8-9.2 3.6-1.4 7.7.3 9.2 3.9 1.3 3.5-.4 7.5-3.9 9zm15.9 9.3c-3.6 1.5-7.7-.2-9.1-3.7-1.5-3.6.2-7.8 3.7-9.1 3.6-1.5 7.7.2 9.2 3.8 1.5 3.5-.3 7.5-3.8 9zm4.7 17.7c-3.6 1.5-7.8-.2-9.2-3.8-1.5-3.6.2-7.7 3.9-9.1 3.6-1.5 7.7.3 9.2 3.8 1.3 3.5-.4 7.6-3.9 9.1zM89.3 35.8c-3.6 1.5-7.8-.2-9.2-3.8-1.4-3.6.2-7.7 3.9-9.1 3.6-1.5 7.7.3 9.2 3.8 1.4 3.6-.3 7.7-3.9 9.1zM69.7 17.7l8.9 4.7V9.3l-8.9 2.8c-.2-.3-.5-.6-.9-.9L72.4 0H59.6l3.5 11.2c-.3.3-.6.5-.9.9l-8.8-2.8v13.1l8.8-4.7c.3.3.6.7.9.9l-5 15.4v.1c-.2.8-.4 1.6-.4 2.4 0 4.1 3.1 7.5 7 8.1h.2c.3 0 .7.1 1 .1.4 0 .7 0 1-.1h.2c4-.6 7.1-4.1 7.1-8.1 0-.8-.1-1.7-.4-2.4V34l-5.1-15.4c.4-.2.7-.6 1-.9zM66 92.8c16.9 0 32.8 1.1 47.1 3.2 4-16.9 8.9-26.7 14-33.5l-9.6-3.4c1 4.9 1.1 7.2 0 10.2-1.5-1.4-3-4.3-4.2-8.7L108.6 76c2.8-2 5-3.2 7.5-3.3-4.4 9.4-10 11.9-13.6 11.2-4.3-.8-6.3-4.6-5.6-7.9 1-4.7 5.7-5.9 8-.5 4.3-8.7-3-11.4-7.6-8.8 7.1-7.2 7.9-13.5 2.1-21.1-8 6.1-8.1 12.3-4.5 20.8-4.7-5.4-12.1-2.5-9.5 6.2 3.4-5.2 7.9-2 7.2 3.1-.6 4.3-6.4 7.8-13.5 7.2-10.3-.9-10.9-8-11.2-13.8 2.5-.5 7.1 1.8 11 7.3L80.2 60c-4.1 4.4-8 5.3-12.3 5.4 1.4-4.4 8-11.6 8-11.6H55.5s6.4 7.2 7.9 11.6c-4.2-.1-8-1-12.3-5.4l1.4 16.4c3.9-5.5 8.5-7.7 10.9-7.3-.3 5.8-.9 12.8-11.1 13.8-7.2.6-12.9-2.9-13.5-7.2-.7-5 3.8-8.3 7.1-3.1 2.7-8.7-4.6-11.6-9.4-6.2 3.7-8.5 3.6-14.7-4.6-20.8-5.8 7.6-5 13.9 2.2 21.1-4.7-2.6-11.9.1-7.7 8.8 2.3-5.5 7.1-4.2 8.1.5.7 3.3-1.3 7.1-5.7 7.9-3.5.7-9-1.8-13.5-11.2 2.5.1 4.7 1.3 7.5 3.3l-4.7-15.4c-1.2 4.4-2.7 7.2-4.3 8.7-1.1-3-.9-5.3 0-10.2l-9.5 3.4c5 6.9 9.9 16.7 14 33.5 14.8-2.1 30.8-3.2 47.7-3.2z"></path>
22
12
  </svg>
23
13
  <span class="govuk-header__logotype-text">
24
14
  GOV.UK
@@ -28,9 +18,7 @@
28
18
  </div>
29
19
  <% if service.service_name.present? %>
30
20
  <div class="govuk-header__content">
31
- <a href="<%= start_page_url %>" class="govuk-header__link govuk-header__service-name">
32
- <%= service.service_name %>
33
- </a>
21
+ <%= link_to service.service_name, start_page_url, class: %w[govuk-header__link govuk-header__service-name] %>
34
22
  </div>
35
23
  <% end %>
36
24
  </div>
@@ -49,7 +49,7 @@
49
49
  editable? ? '#' : change_answer_path(url: page_answers_presenter.url),
50
50
  class: 'govuk-link'
51
51
  ) do %>
52
- Change<span class="govuk-visually-hidden"> Your answer for <%= page_answers_presenter.humanised_title %></span>
52
+ <%= t('presenter.actions.change_html', question: page_answers_presenter.humanised_title) %>
53
53
  <% end %>
54
54
  </dd>
55
55
  </div>
@@ -102,9 +102,9 @@
102
102
  <%= t('presenter.actions.submit') -%></button>
103
103
  <% if save_and_return_enabled? %>
104
104
  <% if editor_preview? || editable? %>
105
- <%= button_to t('presenter.save_and_return.save'), '/', params: { page_slug:request.env['PATH_INFO'] }, method: :post, class: "govuk-button govuk-button--secondary", name: 'save_for_later_check_answers', disabled: true %>
105
+ <%= button_to t('presenter.save_and_return.actions.save'), '/', params: { page_slug:request.env['PATH_INFO'] }, method: :post, class: "govuk-button govuk-button--secondary", name: 'save_for_later_check_answers', disabled: true %>
106
106
  <% else %>
107
- <%= button_to t('presenter.save_and_return.save'), '/', params: { page_slug:request.env['PATH_INFO'] }, method: :post, class: "govuk-button govuk-button--secondary", name: 'save_for_later_check_answers', value: 'true' %>
107
+ <%= button_to t('presenter.save_and_return.actions.save'), '/', params: { page_slug:request.env['PATH_INFO'] }, method: :post, class: "govuk-button govuk-button--secondary", name: 'save_for_later_check_answers', value: 'true' %>
108
108
  <% end %>
109
109
  <% end %>
110
110
  </div>
@@ -36,14 +36,15 @@
36
36
  } %>
37
37
 
38
38
  <div class="govuk-button-group">
39
- <%= f.govuk_submit(disabled: editable?) %>
39
+ <%= f.govuk_submit(t('presenter.actions.continue'), disabled: editable?) %>
40
40
  <% if save_and_return_enabled? %>
41
41
  <% if editor_preview? || editable? %>
42
- <%= button_to t('presenter.save_and_return.save'), '/', params: { page_slug:request.env['PATH_INFO'] }, method: :post, class: "govuk-button govuk-button--secondary", name: 'save_for_later', disabled: true %>
42
+ <%= button_to t('presenter.save_and_return.actions.save'), '/', params: { page_slug:request.env['PATH_INFO'] }, method: :post, class: "govuk-button govuk-button--secondary", name: 'save_for_later', disabled: true %>
43
43
  <% else %>
44
- <%= button_to t('presenter.save_and_return.save'), '/', params: { page_slug:request.env['PATH_INFO'] }, method: :post, class: "govuk-button govuk-button--secondary", name: 'save_for_later', value: 'true' %>
44
+ <%= button_to t('presenter.save_and_return.actions.save'), '/', params: { page_slug:request.env['PATH_INFO'] }, method: :post, class: "govuk-button govuk-button--secondary", name: 'save_for_later', value: 'true' %>
45
45
  <% end %>
46
- <% end %> </div>
46
+ <% end %>
47
+ </div>
47
48
  <% end %>
48
49
  </div>
49
50
  </div>
@@ -12,7 +12,7 @@
12
12
 
13
13
  <%= form_for @page_answers, as: :answers, url: @page.url, method: :post, authenticity_token: false do |f| %>
14
14
  <%= hidden_field_tag :authenticity_token, form_authenticity_token -%>
15
- <%= f.govuk_error_summary %>
15
+ <%= f.govuk_error_summary(t('presenter.errors.summary_heading')) %>
16
16
 
17
17
  <%= render partial: 'metadata_presenter/component/components', locals: {
18
18
  f: f,
@@ -24,14 +24,16 @@
24
24
  }
25
25
  %>
26
26
  <div class="govuk-button-group">
27
- <%= f.govuk_submit(disabled: editable?) %>
27
+ <%= f.govuk_submit(t('presenter.actions.continue'), disabled: editable?) %>
28
+
28
29
  <% if save_and_return_enabled? && show_save_and_return %>
29
30
  <% if editor_preview? || editable? %>
30
- <%= button_to t('presenter.save_and_return.save'), '/', params: { page_slug:request.env['PATH_INFO'] }, method: :post, class: "govuk-button govuk-button--secondary", name: 'save_for_later', disabled: true %>
31
+ <%= button_to t('presenter.save_and_return.actions.save'), '/', params: { page_slug:request.env['PATH_INFO'] }, method: :post, class: "govuk-button govuk-button--secondary", name: 'save_for_later', disabled: true %>
31
32
  <% else %>
32
- <%= button_to t('presenter.save_and_return.save'), '/', params: { page_slug:request.env['PATH_INFO'] }, method: :post, class: "govuk-button govuk-button--secondary", name: 'save_for_later' , value: 'true' %>
33
+ <%= button_to t('presenter.save_and_return.actions.save'), '/', params: { page_slug:request.env['PATH_INFO'] }, method: :post, class: "govuk-button govuk-button--secondary", name: 'save_for_later', value: 'true' %>
33
34
  <% end %>
34
- <% end %> </div>
35
+ <% end %>
36
+ </div>
35
37
  <% end %>
36
38
  </div>
37
39
  </div>
@@ -9,7 +9,7 @@
9
9
  <%= render 'metadata_presenter/attribute/section_heading' %>
10
10
 
11
11
  <%= form_for @page_answers, as: :answers, url: @page.url, method: :post, authenticity_token: false do |f| %>
12
- <%= f.govuk_error_summary %>
12
+ <%= f.govuk_error_summary(t('presenter.errors.summary_heading')) %>
13
13
  <%= hidden_field_tag :authenticity_token, form_authenticity_token -%>
14
14
  <% @page.components.each_with_index do |component, index| %>
15
15
  <div class="fb-editable"
@@ -27,13 +27,13 @@
27
27
  <% end %>
28
28
 
29
29
  <div class="govuk-button-group">
30
- <%= f.govuk_submit(disabled: editable?) %>
30
+ <%= f.govuk_submit(t('presenter.actions.continue'), disabled: editable?) %>
31
31
 
32
32
  <% if save_and_return_enabled? && show_save_and_return %>
33
33
  <% if editor_preview? || editable? %>
34
- <%= button_to t('presenter.save_and_return.save'), '/', params: { page_slug:request.env['PATH_INFO'] }, method: :post, class: "govuk-button govuk-button--secondary", name: 'save_for_later', disabled: true %>
34
+ <%= button_to t('presenter.save_and_return.actions.save'), '/', params: { page_slug:request.env['PATH_INFO'] }, method: :post, class: "govuk-button govuk-button--secondary", name: 'save_for_later', disabled: true %>
35
35
  <% else %>
36
- <%= button_to t('presenter.save_and_return.save'), '/', params: { page_slug:request.env['PATH_INFO'] }, method: :post, class: "govuk-button govuk-button--secondary", name: 'save_for_later', value: 'true' %>
36
+ <%= button_to t('presenter.save_and_return.actions.save'), '/', params: { page_slug:request.env['PATH_INFO'] }, method: :post, class: "govuk-button govuk-button--secondary", name: 'save_for_later', value: 'true' %>
37
37
  <% end %>
38
38
  <% end %>
39
39
  </div>
@@ -3,7 +3,7 @@
3
3
  <div class="govuk-grid-column-two-thirds">
4
4
  <a class="govuk-back-link" href="<%= :back %>"><%= t('presenter.back') %></a>
5
5
  <%= form_for @email_confirmation do |f| %>
6
- <%= f.govuk_error_summary %>
6
+ <%= f.govuk_error_summary(t('presenter.errors.summary_heading')) %>
7
7
  <div class="govuk-form-group">
8
8
  <%=
9
9
  f.govuk_email_field :email_confirmation,
@@ -18,7 +18,7 @@
18
18
  <br/>
19
19
  <div class="govuk-button-group">
20
20
  <%= f.govuk_submit t('presenter.save_and_return.show.continue') %> <%= link_to t('presenter.save_and_return.show.cancel'), page_slug, class: "govuk-button govuk-button--secondary" %>
21
- <div class="govuk-button-group">
21
+ </div>
22
22
  <% end %>
23
23
  </div>
24
24
  </div>
@@ -5,7 +5,7 @@
5
5
  <p class="govuk-hint"><%= t('presenter.save_and_return.resume.from_start.info_1') %></p>
6
6
  <br/>
7
7
  <p class="govuk-hint"><%= t('presenter.save_and_return.resume.from_start.info_2') %></p>
8
- <%= link_to t('presenter.save_and_return.resume.from_start.continue'), root_path, class: "govuk-button" %>
8
+ <%= link_to t('presenter.save_and_return.actions.continue'), root_path, class: "govuk-button" %>
9
9
  </div>
10
10
  </div>
11
11
  </div>
@@ -27,7 +27,7 @@
27
27
  editable? ? '#' : page_answers_presenter.url,
28
28
  class: 'govuk-link'
29
29
  ) do %>
30
- Change<span class="govuk-visually-hidden"> Your answer for <%= page_answers_presenter.humanised_title %></span>
30
+ <%= t('presenter.actions.change_html', question: page_answers_presenter.humanised_title) %>
31
31
  <% end %>
32
32
  </dd>
33
33
  </div>
@@ -42,7 +42,7 @@
42
42
  </dl>
43
43
 
44
44
  <div class="govuk-button-group">
45
- <%= link_to t('presenter.save_and_return.resume.progress.continue'), page_slug, class: "govuk-button" %> <a href="<%= save_path(:page_slug=>page_slug) %>" class="govuk-button govuk-button--secondary" data-module="govuk-button" data-component="save-button"><%= t('presenter.save_and_return.save') %></a>
45
+ <%= link_to t('presenter.save_and_return.actions.continue'), page_slug, class: "govuk-button" %> <a href="<%= save_path(:page_slug=>page_slug) %>" class="govuk-button govuk-button--secondary" data-module="govuk-button" data-component="save-button"><%= t('presenter.save_and_return.actions.save') %></a>
46
46
  </div>
47
47
  <% end %>
48
48
  </div>
@@ -4,7 +4,7 @@
4
4
  <h1 id="page-heading" class="govuk-heading-xl"><%= t('presenter.save_and_return.resume.heading', service_name: get_service_name) %></h1>
5
5
  <p><%= t('presenter.save_and_return.resume.content') %></p>
6
6
  <%= form_for @resume_form do |f| %>
7
- <%= f.govuk_error_summary %>
7
+ <%= f.govuk_error_summary(t('presenter.errors.summary_heading')) %>
8
8
  <%= f.hidden_field(:uuid, value: get_uuid) %>
9
9
  <div class="govuk-form-group">
10
10
  <%=
@@ -20,7 +20,7 @@
20
20
  <%= t('presenter.save_and_return.resume.information') %>
21
21
  </strong>
22
22
  </div>
23
- <%= f.govuk_submit t('presenter.save_and_return.resume.continue') %><% end %>
23
+ <%= f.govuk_submit t('presenter.save_and_return.actions.continue') %><% end %>
24
24
  </div>
25
25
  </div>
26
26
  </div>
@@ -5,7 +5,7 @@
5
5
  <p class="mojf-settings-screen__description"><%= t('presenter.save_and_return.show.description') %></p>
6
6
 
7
7
  <%= form_for @saved_form do |f| %>
8
- <%= f.govuk_error_summary %>
8
+ <%= f.govuk_error_summary(t('presenter.errors.summary_heading')) %>
9
9
  <div class="govuk-form-group">
10
10
  <%= f.hidden_field(:page_slug, value: page_slug) %>
11
11
  <%=
@@ -1,8 +1,7 @@
1
1
  <div class="govuk-warning-text govuk-timeout-warning-fallback">
2
2
  <span class="govuk-warning-text__icon" aria-hidden="true">!</span>
3
3
  <strong class="govuk-warning-text__text">
4
- <span class="govuk-warning-text__assistive">Warning</span>
5
- <%= t('presenter.session_timeout_warning.timer_fallback') %> <%= timeout_fallback(session_expiry_time) %>.
6
- <%= t('presenter.session_timeout_warning.timer_extra') %>
4
+ <span class="govuk-warning-text__assistive"><%= t('presenter.notification_banners.warning') %></span>
5
+ <%= t('presenter.session_timeout_warning.timer_fallback', expiry_time: timeout_fallback(session_expiry_time)) %>
7
6
  </strong>
8
7
  </div>
@@ -0,0 +1,181 @@
1
+ cy:
2
+ date:
3
+ day_names: [ Dydd Sul, Dydd Llun, Dydd Mawrth, Dydd Mercher, Dydd Iau, Dydd Gwener, Dydd Sadwrn ]
4
+ abbr_day_names: [ Sul, Llun, Maw, Mer, Iau, Gwe, Sad ]
5
+ month_names: [ ~, Ionawr, Chwefror, Mawrth, Ebrill, Mai, Mehefin, Gorffennaf, Awst, Medi, Hydref, Tachwedd, Rhagfyr ]
6
+ abbr_month_names: [ ~, Ion, Chw, Maw, Ebr, Mai, Meh, Gor, Awst, Med, Hyd, Tach, Rha ]
7
+ time:
8
+ am: yb
9
+ pm: yh
10
+
11
+ presenter:
12
+ back: Yn ôl
13
+ actions:
14
+ start: Dechrau nawr
15
+ continue: Parhau
16
+ submit: (cy) Submit
17
+ upload_options: (cy) Upload options
18
+ change_html: (cy) Change <span class="govuk-visually-hidden">Your answer for %{question}</span>
19
+ errors:
20
+ summary_heading: Mae yna broblem
21
+ notification_banners:
22
+ important: (cy) Important
23
+ warning: (cy) Warning
24
+ analytics:
25
+ heading: (cy) Cookies on %{service_name}
26
+ body_1: (cy) We use some essential cookies to make this service work.
27
+ body_2: (cy) We'd also like to use analytics cookies so we can understand how you use the service and make improvements.
28
+ accept: (cy) Accept analytics cookies
29
+ reject: (cy) Reject analytics cookies
30
+ view_cookies: (cy) View cookies
31
+ confirmation:
32
+ accepted: (cy) You've accepted analytics cookies.
33
+ rejected: (cy) You've rejected analytics cookies.
34
+ hide: (cy) Hide this message
35
+ external_start_page_info:
36
+ content: (cy) Your form has a %{href}. Links to your form's 'home' page, such as your form's name in the header, will not work until the GOV.UK page has been published.
37
+ link_text: (cy) GOV.UK start page
38
+ maintenance:
39
+ maintenance_page_heading: (cy) Sorry, this form is unavailable
40
+ maintenance_page_content: "(cy) If you were in the middle of completing the form, your data has not been saved.\r\n\r\nThe form will be available again from 9am on Monday 19 November 2018.\r\n\r\n\r\n\r\n### Other ways to apply\r\n\r\nContact us if your application is urgent \r\n\r\nEmail: \r\nTelephone: \r\nMonday to Friday, 9am to 5pm \r\n[Find out about call charges](https://www.gov.uk/call-charges)"
41
+ session_timeout_warning:
42
+ heading: (cy) Do you need more time?
43
+ timer: (cy) We will reset your form and delete your information if you do not continue in
44
+ timer_fallback: (cy) We will reset your form and delete your information if you do not complete the page and press continue by %{expiry_time}.
45
+ redirect: (cy) You are about to be redirected
46
+ close_button: (cy) Close
47
+ button: Parhau
48
+ session_expired:
49
+ title: (cy) Your form has been reset
50
+ content: "(cy) To protect your personal information, we have reset the form and cleared your answers.\r\n\r\nThis is because you were inactive for 30 minutes."
51
+ restart_link: (cy) Start again
52
+ session_complete:
53
+ title: (cy) Submission complete
54
+ content: "(cy) This form has already been submitted.\r\n\r\nTo protect your personal information, we have reset the form and cleared your answers."
55
+ restart_link: (cy) Start again
56
+ confirmation:
57
+ reference_number: '(cy) Your reference number is:'
58
+ payment_enabled: (cy) You still need to pay
59
+ continue_to_pay_button: (cy) Continue to pay
60
+ application_complete: '(cy) Application complete'
61
+ email_disclaimer_email_question: '(cy) We will use this address to send you a confirmation email with a copy of your answers.'
62
+ email_basic_disclaimer_html: '(cy) We will send a confirmation email with a copy of these answers to %{email_provided}'
63
+ confirmation_email:
64
+ table_heading: (cy) Your answers
65
+ questions:
66
+ upload:
67
+ remove_file: (cy) Remove file
68
+ multiupload:
69
+ remove_file: '(cy) Delete'
70
+ add_another: '(cy) Add another file'
71
+ single_upload: '(cy) Maximum file size 7MB'
72
+ answered_singular: '(cy) You can add 1 more file (maximum 7MB per file)'
73
+ answered_plural: '(cy) You can add %{num} more files (maximum 7MB per file)'
74
+ answered_count_singular: '(cy) You have added 1 file'
75
+ answered_count_plural: '(cy) You have added %{num} files'
76
+ singular: '(cy) You can add 1 more file (maximum 7MB)'
77
+ plural: '(cy) You can add up to %{num} files (maximum 7MB per file)'
78
+ none: "(cy) You can't add any more files. Remove a file if you need to add a different one."
79
+ conditional_content:
80
+ notification: "(cy) Some content on this page will be hidden under certain conditions. Preview the full form or publish to Test to check."
81
+ save_and_return:
82
+ actions:
83
+ save: (cy) Save for later
84
+ continue: Parhau
85
+ show:
86
+ heading: '(cy) Save for later'
87
+ description: '(cy) We will send you a one-off link that you can use to resume this form within 28 days.'
88
+ email: '(cy) Email address'
89
+ email_hint: '(cy) We will only use this to send you a link to your form'
90
+ secret_question: '(cy) Pick a security question'
91
+ secret_question_hint: '(cy) We will use this to verify your identity when you return'
92
+ secret_answer: '(cy) The answer to your security question'
93
+ continue: '(cy) Continue with saving'
94
+ cancel: '(cy) Cancel saving and resume form'
95
+ confirm_email:
96
+ heading: '(cy) Check your email address is correct'
97
+ description: '(cy) Make sure this is correct before finishing'
98
+ saved:
99
+ heading: '(cy) Your form has been saved'
100
+ success: "(cy) We have sent a one-off link to %{email} which you can use to resume this form within 28 days. After that time, your saved information will be deleted."
101
+ info_1: "(cy) If you haven't received the email after a few minutes, check your spam folder."
102
+ info_2: '(cy) This link will only work once. If you want to save your progress again after resuming the form, you will need to repeat the save process and generate another link'
103
+ info_3: '(cy) You are now free to close this window or navigate away from this page.'
104
+ validation:
105
+ email: '(cy) Enter an email address in the correct format, like name@example.com'
106
+ email_not_matched: '(cy) Does not match'
107
+ answer_not_matched: '(cy) Your answer is incorrect. You have %{attempts} attempts remaining.'
108
+ answer_too_long: '(cy) Your answer for %{attribute} must be 100 characters or fewer.'
109
+ secret_questions:
110
+ one: "(cy) What is your mother's maiden name?"
111
+ two: '(cy) What is the last name of your favourite teacher?'
112
+ three: '(cy) What is the name of the hospital where you were born?'
113
+ resume:
114
+ heading: "(cy) Continue with \"%{service_name}\""
115
+ content: '(cy) To retrieve your information, enter the answer to your security question that you set when saving your progress.'
116
+ information: '(cy) This will use up your save link. To save your progress again, you will need to repeat the save process and generate another link.'
117
+ errors:
118
+ generic_problem:
119
+ heading: '(cy) There is a problem with your link'
120
+ info_1: '(cy) Please try again. If you copied and pasted the link into your browser, check you copied the entire link.'
121
+ info_2: '(cy) If this problem persists, you will need to start the form again. Your saved answers will be securely deleted after 28 days.'
122
+ expired:
123
+ heading: '(cy) Your link has expired'
124
+ info_1: '(cy) It has been more than 28 days since you saved your progress on this form and the link is no longer valid.'
125
+ info_2: '(cy) Your saved answers have been be securely deleted.'
126
+ link_used:
127
+ heading: '(cy) That link has already been used'
128
+ info_1: '(cy) Links to resume a form only work once. If you have saved your progress more than once, check for a more recent link.'
129
+ info_2: '(cy) Otherwise, you will need to start the form again. Your saved answers will be securely deleted after 28 days.'
130
+ failure:
131
+ heading: '(cy) Your information cannot be retrieved'
132
+ info_1: '(cy) The answer to your security question was incorrect and you have run out of attempts to retrieve your information.'
133
+ info_2: '(cy) You will need to start the form again. Your saved answers will be securely deleted.'
134
+ from_start:
135
+ heading: "(cy) \"%{service_name}\" has been updated"
136
+ info_1: '(cy) Your information has been successfully retrieved. However, the form has been updated since your last visit.'
137
+ info_2: '(cy) Please check from the beginning in case anything has changed, such as new requirements or questions.'
138
+ progress:
139
+ heading: '(cy) %{service_name}'
140
+ content_1: '(cy) You have successfully retrieved your saved information.'
141
+ content_2: '(cy) Here are the answers you have provided so far.'
142
+ confirmation_email:
143
+ subject: "(cy) Your saved form - '%{service_name}'"
144
+ body: "(cy) You have saved your progress with the form '%{service_name}'.<br /><br /><a href=%{magic_link}>Continue with your form</a><br /><br />This link will only work once. If you want to save your progress again after resuming the form, you will need to repeat the save process and generate another link.<br /><br />The link is valid for 28 days. After that time, your saved information will be deleted."
145
+ header:
146
+ skip: Neidio i’r prif gynnwys
147
+ govuk_url: 'https://www.gov.uk/cymraeg'
148
+ footer:
149
+ cookies:
150
+ heading: Cwcis
151
+ body: "(cy) This form saves small files (known as 'cookies') onto your device.\r\n \r\nCookies are used to:\r\n \r\n* remember your progress\r\n* measure how you use the form so it can be updated and improved based on your needs\r\n \r\nThese cookies are not used to identify you personally.\r\n \r\nYou will normally see a message on the form before we store a cookie on your computer. Essential cookies are necessary for the form to work but you can still complete the form if you choose not to accept analytics cookies.\r\n \r\nFind out more about [how to manage cookies](https://www.aboutcookies.org/).\r\n \r\n## Essential cookies\r\n \r\nEssential cookies are required to make this form work and keep your information secure while you use it.\r\n \r\nWe use the following essential cookies: \r\n \r\n| Name | Purpose | Expires |\r\n|---|---|---|\r\n| \\_fb\\_runner\\_session | Saves your current progress on this computer and tracks inactivity periods | After 30 minutes of inactivity or when you close your browser |\r\n| analytics | Remembers whether you accept or reject analytics cookies on this form | After 1 year |\r\n \r\n## Analytics cookies\r\n \r\nAnalytics cookies collect information about how you use this form. This helps us make sure the form is meeting the needs of its users and to help us make improvements.\r\n \r\nWe use Google Analytics to learn about:\r\n \r\n* the pages you visit\r\n* how long you spend on each page\r\n* how you got to the form\r\n* what you click on while you are using the form\r\n \r\nWe do not collect or store your personal information (for example your name or address) so this information can't be used to identify who you are. We do not allow third parties to use or share our analytics data.\r\n \r\nThis form may use different versions of Google Analytics and could save some or all of the following cookies:\r\n \r\n| Name | Purpose | Expires |\r\n|---|---|---|\r\n| \\_ga | Helps us count how many people visit this form | 2 years |\r\n| \\_gid | Helps us count how many people visit this form | 1 day |\r\n| \\_ga\\_\\<container-id> | Used to persist session state | 2 years |\r\n| \\_gac\\_gb\\_\\<container-id> | Contains campaign-related information | 90 days |\r\n| \\_gat | Used to throttle request rate | 1 minute |\r\n| \\_dc\\_gtm\\_\\<property-id>| Used to throttle request rate | 1 minute |\r\n| AMP\\_TOKEN | Contains a token that can be used to retrieve a Client ID from AMP Client ID service | 30 seconds to 1 year |\r\n| \\_gac\\_\\<property-id> | Contains campaign related information | 90 days |\r\n \r\nYou can use a browser addon to [opt out of Google Analytics cookies](https://tools.google.com/dlpage/gaoptout) on all websites."
152
+ privacy:
153
+ heading: Polisi preifatrwydd
154
+ accessibility:
155
+ heading: Datganiad hygyrchedd
156
+ meta:
157
+ config:
158
+ meta--link: Cwcis
159
+ meta--link--2: Preifatrwydd
160
+ meta--link--3: Hygyrchedd
161
+ copyright: © Hawlfraint y Goron
162
+ license_html: |
163
+ Mae’r holl gynnwys ar gael dan
164
+ <a class="govuk-footer__link" href="https://www.nationalarchives.gov.uk/doc/open-government-licence-cymraeg/version/3/" rel="license">Drwydded y Llywodraeth Agored v3.0</a>,
165
+ ac eithrio lle nodir yn wahanol
166
+
167
+ activemodel:
168
+ errors:
169
+ messages:
170
+ blank: 'Rhowch ateb i "%{attribute}"'
171
+ attributes:
172
+ metadata_presenter/saved_form:
173
+ secret_question: (cy) Secret question
174
+ secret_answer: (cy) Secret answer
175
+ metadata_presenter/address_fieldset:
176
+ address_line_one: (cy) Address line 1
177
+ address_line_two: (cy) Address line 2 (optional)
178
+ city: (cy) Town or city
179
+ county: (cy) County (optional)
180
+ postcode: (cy) Postcode
181
+ country: (cy) Country
@@ -6,6 +6,12 @@ en:
6
6
  continue: Continue
7
7
  submit: Submit
8
8
  upload_options: Upload options
9
+ change_html: Change <span class="govuk-visually-hidden">Your answer for %{question}</span>
10
+ errors:
11
+ summary_heading: There is a problem
12
+ notification_banners:
13
+ important: Important
14
+ warning: Warning
9
15
  analytics:
10
16
  heading: Cookies on %{service_name}
11
17
  body_1: We use some essential cookies to make this service work.
@@ -13,12 +19,11 @@ en:
13
19
  accept: Accept analytics cookies
14
20
  reject: Reject analytics cookies
15
21
  view_cookies: View cookies
16
- accepted: accepted
17
- rejected: rejected
18
- confirmation: You've %{action} analytics cookies.
22
+ confirmation:
23
+ accepted: You've accepted analytics cookies.
24
+ rejected: You've rejected analytics cookies.
19
25
  hide: Hide this message
20
26
  external_start_page_info:
21
- important: 'Important'
22
27
  content: "Your form has a %{href}. Links to your form's 'home' page, such as your form's name in the header, will not work until the GOV.UK page has been published."
23
28
  link_text: 'GOV.UK start page'
24
29
  maintenance:
@@ -27,7 +32,7 @@ en:
27
32
  session_timeout_warning:
28
33
  heading: Do you need more time?
29
34
  timer: We will reset your form and delete your information if you do not continue in
30
- timer_fallback: We will reset your form and delete your information if you do not complete the page and press continue by
35
+ timer_fallback: We will reset your form and delete your information if you do not complete the page and press continue by %{expiry_time}.
31
36
  redirect: You are about to be redirected
32
37
  close_button: Close
33
38
  button: Continue
@@ -46,7 +51,11 @@ en:
46
51
  application_complete: 'Application complete'
47
52
  email_disclaimer_email_question: 'We will use this address to send you a confirmation email with a copy of your answers.'
48
53
  email_basic_disclaimer_html: 'We will send a confirmation email with a copy of these answers to %{email_provided}'
54
+ confirmation_email:
55
+ table_heading: Your answers
49
56
  questions:
57
+ upload:
58
+ remove_file: Remove file
50
59
  multiupload:
51
60
  remove_file: 'Delete'
52
61
  add_another: 'Add another file'
@@ -61,7 +70,9 @@ en:
61
70
  conditional_content:
62
71
  notification: "Some content on this page will be hidden under certain conditions. Preview the full form or publish to Test to check."
63
72
  save_and_return:
64
- save: 'Save for later'
73
+ actions:
74
+ save: Save for later
75
+ continue: Continue
65
76
  show:
66
77
  heading: 'Save for later'
67
78
  description: 'We will send you a one-off link that you can use to resume this form within 28 days.'
@@ -92,7 +103,6 @@ en:
92
103
  three: 'What is the name of the hospital where you were born?'
93
104
  resume:
94
105
  heading: "Continue with \"%{service_name}\""
95
- continue: 'Continue'
96
106
  content: 'To retrieve your information, enter the answer to your security question that you set when saving your progress.'
97
107
  information: 'This will use up your save link. To save your progress again, you will need to repeat the save process and generate another link.'
98
108
  errors:
@@ -116,12 +126,16 @@ en:
116
126
  heading: "\"%{service_name}\" has been updated"
117
127
  info_1: 'Your information has been successfully retrieved. However, the form has been updated since your last visit.'
118
128
  info_2: 'Please check from the beginning in case anything has changed, such as new requirements or questions.'
119
- continue: 'Continue'
120
129
  progress:
121
130
  heading: '%{service_name}'
122
131
  content_1: 'You have successfully retrieved your saved information.'
123
132
  content_2: 'Here are the answers you have provided so far.'
124
- continue: 'Continue'
133
+ confirmation_email:
134
+ subject: "Your saved form - '%{service_name}'"
135
+ body: "You have saved your progress with the form '%{service_name}'.<br /><br /><a href=%{magic_link}>Continue with your form</a><br /><br />This link will only work once. If you want to save your progress again after resuming the form, you will need to repeat the save process and generate another link.<br /><br />The link is valid for 28 days. After that time, your saved information will be deleted."
136
+ header:
137
+ skip: Skip to main content
138
+ govuk_url: 'https://www.gov.uk'
125
139
  footer:
126
140
  cookies:
127
141
  heading: "Cookies"
@@ -175,9 +189,25 @@ en:
175
189
  - "[date when you performed your basic accessibility check]"
176
190
  - "[insert team or organisation here]"
177
191
  url: 'accessibility'
192
+ meta:
193
+ config:
194
+ meta--link: Cookies
195
+ meta--link--2: Privacy
196
+ meta--link--3: Accessibility
197
+ copyright: © Crown copyright
198
+ license_html: |
199
+ All content is available under the
200
+ <a class="govuk-footer__link" href="https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/" rel="license">Open Government Licence v3.0</a>,
201
+ except where otherwise stated
178
202
 
179
203
  activemodel:
204
+ errors:
205
+ messages:
206
+ blank: 'Enter an answer for "%{attribute}"'
180
207
  attributes:
208
+ metadata_presenter/saved_form:
209
+ secret_question: Secret question
210
+ secret_answer: Secret answer
181
211
  metadata_presenter/address_fieldset:
182
212
  address_line_one: Address line 1
183
213
  address_line_two: Address line 2 (optional)
@@ -2,5 +2,6 @@
2
2
  "_id": "error.accept",
3
3
  "_type": "string.error",
4
4
  "description": "File uploaded is wrong type",
5
- "value": "\"%{control}\" was not uploaded successfully as it is the wrong type"
5
+ "value:en": "\"%{control}\" was not uploaded successfully as it is the wrong type",
6
+ "value:cy": "(cy) \"%{control}\" was not uploaded successfully as it is the wrong type"
6
7
  }
@@ -2,5 +2,6 @@
2
2
  "_id": "error.address",
3
3
  "_type": "string.error",
4
4
  "description": "Input (address) is blank",
5
- "value": "Enter %{field} for \"%{control}\""
5
+ "value:en": "Enter %{field} for \"%{control}\"",
6
+ "value:cy": "(cy) Enter %{field} for \"%{control}\""
6
7
  }
@@ -2,5 +2,6 @@
2
2
  "_id": "error.autocomplete",
3
3
  "_type": "string.error",
4
4
  "description": "Autocomplete item is not on the list",
5
- "value": "Select an option from the list"
5
+ "value:en": "Select an option from the list",
6
+ "value:cy": "(cy) Select an option from the list"
6
7
  }
@@ -2,5 +2,6 @@
2
2
  "_id": "error.catch_all",
3
3
  "_type": "string.error",
4
4
  "description": "A generic validation error not handled by a more concrete validator",
5
- "value": "We could not save your answer, please try again"
5
+ "value:en": "We could not save your answer, please try again",
6
+ "value:cy": "(cy) We could not save your answer, please try again"
6
7
  }
@@ -2,5 +2,6 @@
2
2
  "_id": "error.date",
3
3
  "_type": "string.error",
4
4
  "description": "Input (date) is not a valid date",
5
- "value": "Enter a valid date for \"%{control}\""
5
+ "value:en": "Enter a valid date for \"%{control}\"",
6
+ "value:cy": "(cy) Enter a valid date for \"%{control}\""
6
7
  }
@@ -2,5 +2,6 @@
2
2
  "_id": "error.date_after",
3
3
  "_type": "string.error",
4
4
  "description": "Input (date) is earlier than allowed",
5
- "value": "Your answer for \"%{control}\" must be %{date_after} or later"
5
+ "value:en": "Your answer for \"%{control}\" must be %{date_after} or later",
6
+ "value:cy": "(cy) Your answer for \"%{control}\" must be %{date_after} or later"
6
7
  }
@@ -2,5 +2,6 @@
2
2
  "_id": "error.date_before",
3
3
  "_type": "string.error",
4
4
  "description": "Input (date) is later than allowed",
5
- "value": "Your answer for \"%{control}\" must be %{date_before} or earlier"
5
+ "value:en": "Your answer for \"%{control}\" must be %{date_before} or earlier",
6
+ "value:cy": "(cy) Your answer for \"%{control}\" must be %{date_before} or earlier"
6
7
  }
@@ -2,5 +2,6 @@
2
2
  "_id": "error.email",
3
3
  "_type": "string.error",
4
4
  "description": "Input (email) is not a valid email",
5
- "value": "Enter an email address in the correct format, like name@example.com"
5
+ "value:en": "Enter an email address in the correct format, like name@example.com",
6
+ "value:cy": "(cy) Enter an email address in the correct format, like name@example.com"
6
7
  }
@@ -2,5 +2,6 @@
2
2
  "_id": "error.max_files",
3
3
  "_type": "string.error",
4
4
  "description": "Input (number) is larger than the maximum allowed",
5
- "value": "Your answer for \"%{control}\" must be %{maximum} or lower"
5
+ "value:en": "Your answer for \"%{control}\" must be %{maximum} or lower",
6
+ "value:cy": "(cy) Your answer for \"%{control}\" must be %{maximum} or lower"
6
7
  }
@@ -2,5 +2,6 @@
2
2
  "_id": "error.max_length",
3
3
  "_type": "string.error",
4
4
  "description": "Input (string) is too long",
5
- "value": "Your answer for \"%{control}\" must be %{max_length} characters or fewer"
5
+ "value:en": "Your answer for \"%{control}\" must be %{max_length} characters or fewer",
6
+ "value:cy": "(cy) Your answer for \"%{control}\" must be %{max_length} characters or fewer"
6
7
  }
@@ -2,5 +2,6 @@
2
2
  "_id": "error.max_size",
3
3
  "_type": "string.error",
4
4
  "description": "File is too large",
5
- "value": "The selected file must be smaller than %{max_size}MB."
5
+ "value:en": "The selected file must be smaller than %{max_size}MB.",
6
+ "value:cy": "(cy) The selected file must be smaller than %{max_size}MB."
6
7
  }
@@ -2,5 +2,6 @@
2
2
  "_id": "error.max_word",
3
3
  "_type": "string.error",
4
4
  "description": "Input (number) is higher than the maximum number of words allowed",
5
- "value": "Your answer for \"%{control}\" must be %{max_word} words or fewer"
5
+ "value:en": "Your answer for \"%{control}\" must be %{max_word} words or fewer",
6
+ "value:cy": "(cy) Your answer for \"%{control}\" must be %{max_word} words or fewer"
6
7
  }
@@ -2,5 +2,6 @@
2
2
  "_id": "error.maximum",
3
3
  "_type": "string.error",
4
4
  "description": "Input (number) is larger than the maximum allowed",
5
- "value": "Your answer for \"%{control}\" must be %{maximum} or lower"
5
+ "value:en": "Your answer for \"%{control}\" must be %{maximum} or lower",
6
+ "value:cy": "(cy) Your answer for \"%{control}\" must be %{maximum} or lower"
6
7
  }
@@ -2,5 +2,6 @@
2
2
  "_id": "error.min_length",
3
3
  "_type": "string.error",
4
4
  "description": "Input (string) is too short",
5
- "value": "Your answer for \"%{control}\" must be %{min_length} characters or more"
5
+ "value:en": "Your answer for \"%{control}\" must be %{min_length} characters or more",
6
+ "value:cy": "(cy) Your answer for \"%{control}\" must be %{min_length} characters or more"
6
7
  }
@@ -2,5 +2,6 @@
2
2
  "_id": "error.min_word",
3
3
  "_type": "string.error",
4
4
  "description": "Input (number) is lower than the minimum number of words allowed",
5
- "value": "Your answer for \"%{control}\" must be %{min_word} words or more"
5
+ "value:en": "Your answer for \"%{control}\" must be %{min_word} words or more",
6
+ "value:cy": "(cy) Your answer for \"%{control}\" must be %{min_word} words or more"
6
7
  }
@@ -2,5 +2,6 @@
2
2
  "_id": "error.minimum",
3
3
  "_type": "string.error",
4
4
  "description": "Input (number) is lower than the minimum allowed",
5
- "value": "Your answer for \"%{control}\" must be %{minimum} or higher"
5
+ "value:en": "Your answer for \"%{control}\" must be %{minimum} or higher",
6
+ "value:cy": "(cy) Your answer for \"%{control}\" must be %{minimum} or higher"
6
7
  }
@@ -2,5 +2,6 @@
2
2
  "_id": "error.multiupload",
3
3
  "_type": "string.error",
4
4
  "description": "Cannot upload files with duplicate filenames",
5
- "value": "The selected file cannot have the same name as a file you have already selected. Please check you aren't uploading the same file again."
5
+ "value:en": "The selected file cannot have the same name as a file you have already selected. Please check you aren't uploading the same file again.",
6
+ "value:cy": "(cy) The selected file cannot have the same name as a file you have already selected. Please check you aren't uploading the same file again."
6
7
  }
@@ -2,5 +2,6 @@
2
2
  "_id": "error.number",
3
3
  "_type": "string.error",
4
4
  "description": "Input (number) is not a number",
5
- "value": "Enter a number for \"%{control}\""
5
+ "value:en": "Enter a number for \"%{control}\"",
6
+ "value:cy": "(cy) Enter a number for \"%{control}\""
6
7
  }
@@ -2,5 +2,6 @@
2
2
  "_id": "error.postcode",
3
3
  "_type": "string.error",
4
4
  "description": "Postcode format is not valid",
5
- "value": "Enter a valid UK postcode for \"%{control}\""
5
+ "value:en": "Enter a valid UK postcode for \"%{control}\"",
6
+ "value:cy": "(cy) Enter a valid UK postcode for \"%{control}\""
6
7
  }
@@ -2,6 +2,6 @@
2
2
  "_id": "error.required",
3
3
  "_type": "string.error",
4
4
  "description": "Input is required",
5
- "value": "Enter an answer for \"%{control}\"",
6
- "value:cy": "Rhowch ateb i \"{control}\""
5
+ "value:en": "Enter an answer for \"%{control}\"",
6
+ "value:cy": "Rhowch ateb i \"%{control}\""
7
7
  }
@@ -2,6 +2,6 @@
2
2
  "_id": "error.virus_scan",
3
3
  "_type": "string.error",
4
4
  "description": "File uploaded contains virus",
5
- "value": "\"%{control}\" was not uploaded successfully because it contains a virus"
5
+ "value:en": "\"%{control}\" was not uploaded successfully because it contains a virus",
6
+ "value:cy": "(cy) \"%{control}\" was not uploaded successfully because it contains a virus"
6
7
  }
7
-
@@ -1,3 +1,3 @@
1
1
  module MetadataPresenter
2
- VERSION = '3.3.10'.freeze
2
+ VERSION = '3.3.11'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metadata_presenter
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.3.10
4
+ version: 3.3.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - MoJ Forms
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-01-26 00:00:00.000000000 Z
11
+ date: 2024-02-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: govuk_design_system_formbuilder
@@ -477,6 +477,7 @@ files:
477
477
  - config/initializers/schemas.rb
478
478
  - config/initializers/supported_analytics.rb
479
479
  - config/initializers/supported_components.rb
480
+ - config/locales/cy.yml
480
481
  - config/locales/en.yml
481
482
  - config/routes.rb
482
483
  - default_metadata/component/address.json