@defra/forms-engine-plugin 4.23.0 → 5.0.0-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.server/server/forms/register-as-a-unicorn-breeder.yaml +0 -14
- package/.server/server/forms/simple-form.yaml +106 -3
- package/.server/server/plugins/engine/components/AutocompleteField.d.ts +11 -11
- package/.server/server/plugins/engine/components/AutocompleteField.js +2 -2
- package/.server/server/plugins/engine/components/AutocompleteField.js.map +1 -1
- package/.server/server/plugins/engine/components/CheckboxesField.d.ts +3 -2
- package/.server/server/plugins/engine/components/CheckboxesField.js +4 -9
- package/.server/server/plugins/engine/components/CheckboxesField.js.map +1 -1
- package/.server/server/plugins/engine/components/ComponentCollection.d.ts +8 -7
- package/.server/server/plugins/engine/components/ComponentCollection.js +106 -51
- package/.server/server/plugins/engine/components/ComponentCollection.js.map +1 -1
- package/.server/server/plugins/engine/components/DatePartsField.d.ts +8 -6
- package/.server/server/plugins/engine/components/DatePartsField.js +27 -9
- package/.server/server/plugins/engine/components/DatePartsField.js.map +1 -1
- package/.server/server/plugins/engine/components/DeclarationField.d.ts +13 -11
- package/.server/server/plugins/engine/components/DeclarationField.js +31 -9
- package/.server/server/plugins/engine/components/DeclarationField.js.map +1 -1
- package/.server/server/plugins/engine/components/EastingNorthingField.d.ts +6 -5
- package/.server/server/plugins/engine/components/EastingNorthingField.js +42 -22
- package/.server/server/plugins/engine/components/EastingNorthingField.js.map +1 -1
- package/.server/server/plugins/engine/components/EmailAddressField.d.ts +11 -14
- package/.server/server/plugins/engine/components/EmailAddressField.js +2 -2
- package/.server/server/plugins/engine/components/EmailAddressField.js.map +1 -1
- package/.server/server/plugins/engine/components/FileUploadField.d.ts +14 -12
- package/.server/server/plugins/engine/components/FileUploadField.js +22 -12
- package/.server/server/plugins/engine/components/FileUploadField.js.map +1 -1
- package/.server/server/plugins/engine/components/FormComponent.d.ts +21 -12
- package/.server/server/plugins/engine/components/FormComponent.js +33 -14
- package/.server/server/plugins/engine/components/FormComponent.js.map +1 -1
- package/.server/server/plugins/engine/components/GeospatialField.d.ts +14 -12
- package/.server/server/plugins/engine/components/GeospatialField.js +19 -13
- package/.server/server/plugins/engine/components/GeospatialField.js.map +1 -1
- package/.server/server/plugins/engine/components/LatLongField.d.ts +6 -5
- package/.server/server/plugins/engine/components/LatLongField.js +32 -20
- package/.server/server/plugins/engine/components/LatLongField.js.map +1 -1
- package/.server/server/plugins/engine/components/ListFormComponent.d.ts +7 -6
- package/.server/server/plugins/engine/components/ListFormComponent.js +19 -7
- package/.server/server/plugins/engine/components/ListFormComponent.js.map +1 -1
- package/.server/server/plugins/engine/components/LocationFieldBase.d.ts +17 -16
- package/.server/server/plugins/engine/components/LocationFieldBase.js +2 -2
- package/.server/server/plugins/engine/components/LocationFieldBase.js.map +1 -1
- package/.server/server/plugins/engine/components/LocationFieldHelpers.d.ts +3 -3
- package/.server/server/plugins/engine/components/LocationFieldHelpers.js +2 -2
- package/.server/server/plugins/engine/components/LocationFieldHelpers.js.map +1 -1
- package/.server/server/plugins/engine/components/Markdown.d.ts +8 -7
- package/.server/server/plugins/engine/components/Markdown.js +5 -2
- package/.server/server/plugins/engine/components/Markdown.js.map +1 -1
- package/.server/server/plugins/engine/components/MonthYearField.d.ts +9 -7
- package/.server/server/plugins/engine/components/MonthYearField.js +26 -8
- package/.server/server/plugins/engine/components/MonthYearField.js.map +1 -1
- package/.server/server/plugins/engine/components/MultilineTextField.d.ts +10 -9
- package/.server/server/plugins/engine/components/MultilineTextField.js +2 -2
- package/.server/server/plugins/engine/components/MultilineTextField.js.map +1 -1
- package/.server/server/plugins/engine/components/NationalGridFieldNumberField.d.ts +2 -1
- package/.server/server/plugins/engine/components/NationalGridFieldNumberField.js +14 -6
- package/.server/server/plugins/engine/components/NationalGridFieldNumberField.js.map +1 -1
- package/.server/server/plugins/engine/components/NumberField.d.ts +10 -9
- package/.server/server/plugins/engine/components/NumberField.js +2 -2
- package/.server/server/plugins/engine/components/NumberField.js.map +1 -1
- package/.server/server/plugins/engine/components/OsGridRefField.d.ts +2 -1
- package/.server/server/plugins/engine/components/OsGridRefField.js +14 -6
- package/.server/server/plugins/engine/components/OsGridRefField.js.map +1 -1
- package/.server/server/plugins/engine/components/PaymentField.d.ts +12 -10
- package/.server/server/plugins/engine/components/PaymentField.js +21 -8
- package/.server/server/plugins/engine/components/PaymentField.js.map +1 -1
- package/.server/server/plugins/engine/components/SelectField.d.ts +11 -11
- package/.server/server/plugins/engine/components/SelectField.js +2 -2
- package/.server/server/plugins/engine/components/SelectField.js.map +1 -1
- package/.server/server/plugins/engine/components/SelectionControlField.d.ts +4 -4
- package/.server/server/plugins/engine/components/SelectionControlField.js +2 -2
- package/.server/server/plugins/engine/components/SelectionControlField.js.map +1 -1
- package/.server/server/plugins/engine/components/TelephoneNumberField.d.ts +10 -9
- package/.server/server/plugins/engine/components/TelephoneNumberField.js +2 -2
- package/.server/server/plugins/engine/components/TelephoneNumberField.js.map +1 -1
- package/.server/server/plugins/engine/components/UkAddressField.d.ts +12 -10
- package/.server/server/plugins/engine/components/UkAddressField.js +29 -17
- package/.server/server/plugins/engine/components/UkAddressField.js.map +1 -1
- package/.server/server/plugins/engine/components/YesNoField.d.ts +3 -0
- package/.server/server/plugins/engine/components/YesNoField.js +9 -0
- package/.server/server/plugins/engine/components/YesNoField.js.map +1 -1
- package/.server/server/plugins/engine/components/helpers/components.d.ts +3 -2
- package/.server/server/plugins/engine/components/helpers/components.js +11 -8
- package/.server/server/plugins/engine/components/helpers/components.js.map +1 -1
- package/.server/server/plugins/engine/components/types.d.ts +8 -1
- package/.server/server/plugins/engine/components/types.js.map +1 -1
- package/.server/server/plugins/engine/configureEnginePlugin.js +8 -1
- package/.server/server/plugins/engine/configureEnginePlugin.js.map +1 -1
- package/.server/server/plugins/engine/form-context.d.ts +1 -0
- package/.server/server/plugins/engine/form-context.js +4 -2
- package/.server/server/plugins/engine/form-context.js.map +1 -1
- package/.server/server/plugins/engine/helpers.d.ts +1 -1
- package/.server/server/plugins/engine/helpers.js +8 -13
- package/.server/server/plugins/engine/helpers.js.map +1 -1
- package/.server/server/plugins/engine/i18n/buildValidationMessages.d.ts +39 -0
- package/.server/server/plugins/engine/i18n/buildValidationMessages.js +50 -0
- package/.server/server/plugins/engine/i18n/buildValidationMessages.js.map +1 -0
- package/.server/server/plugins/engine/i18n/createFormTranslator.d.ts +5 -0
- package/.server/server/plugins/engine/i18n/createFormTranslator.js +18 -0
- package/.server/server/plugins/engine/i18n/createFormTranslator.js.map +1 -0
- package/.server/server/plugins/engine/i18n/createTranslator.d.ts +9 -0
- package/.server/server/plugins/engine/i18n/createTranslator.js +51 -0
- package/.server/server/plugins/engine/i18n/createTranslator.js.map +1 -0
- package/.server/server/plugins/engine/i18n/extractBaseTranslations.d.ts +5 -0
- package/.server/server/plugins/engine/i18n/extractBaseTranslations.js +57 -0
- package/.server/server/plugins/engine/i18n/extractBaseTranslations.js.map +1 -0
- package/.server/server/plugins/engine/i18n/index.d.ts +18 -0
- package/.server/server/plugins/engine/i18n/index.js +71 -0
- package/.server/server/plugins/engine/i18n/index.js.map +1 -0
- package/.server/server/plugins/engine/i18n/translations/cy.json +271 -0
- package/.server/server/plugins/engine/i18n/translations/en-GB.json +271 -0
- package/.server/server/plugins/engine/i18n/types.d.ts +41 -0
- package/.server/server/plugins/engine/i18n/types.js +2 -0
- package/.server/server/plugins/engine/i18n/types.js.map +1 -0
- package/.server/server/plugins/engine/index.js +3 -2
- package/.server/server/plugins/engine/index.js.map +1 -1
- package/.server/server/plugins/engine/models/FormModel.d.ts +9 -1
- package/.server/server/plugins/engine/models/FormModel.js +44 -18
- package/.server/server/plugins/engine/models/FormModel.js.map +1 -1
- package/.server/server/plugins/engine/models/SummaryViewModel.d.ts +5 -2
- package/.server/server/plugins/engine/models/SummaryViewModel.js +44 -18
- package/.server/server/plugins/engine/models/SummaryViewModel.js.map +1 -1
- package/.server/server/plugins/engine/options.js +2 -1
- package/.server/server/plugins/engine/options.js.map +1 -1
- package/.server/server/plugins/engine/outputFormatters/adapter/v1.js +4 -0
- package/.server/server/plugins/engine/outputFormatters/adapter/v1.js.map +1 -1
- package/.server/server/plugins/engine/outputFormatters/human/v1.js +2 -1
- package/.server/server/plugins/engine/outputFormatters/human/v1.js.map +1 -1
- package/.server/server/plugins/engine/outputFormatters/machine/v1.js +7 -6
- package/.server/server/plugins/engine/outputFormatters/machine/v1.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/FileUploadPageController.d.ts +2 -1
- package/.server/server/plugins/engine/pageControllers/FileUploadPageController.js +6 -3
- package/.server/server/plugins/engine/pageControllers/FileUploadPageController.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/PageController.d.ts +3 -1
- package/.server/server/plugins/engine/pageControllers/PageController.js +11 -1
- package/.server/server/plugins/engine/pageControllers/PageController.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/QuestionPageController.d.ts +4 -2
- package/.server/server/plugins/engine/pageControllers/QuestionPageController.js +52 -21
- package/.server/server/plugins/engine/pageControllers/QuestionPageController.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/RepeatPageController.d.ts +3 -2
- package/.server/server/plugins/engine/pageControllers/RepeatPageController.js +63 -26
- package/.server/server/plugins/engine/pageControllers/RepeatPageController.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/StartPageController.d.ts +3 -1
- package/.server/server/plugins/engine/pageControllers/StartPageController.js +2 -2
- package/.server/server/plugins/engine/pageControllers/StartPageController.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/StatusPageController.js +12 -2
- package/.server/server/plugins/engine/pageControllers/StatusPageController.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/SummaryPageController.d.ts +4 -3
- package/.server/server/plugins/engine/pageControllers/SummaryPageController.js +44 -28
- package/.server/server/plugins/engine/pageControllers/SummaryPageController.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/__stubs__/translator.d.ts +2 -0
- package/.server/server/plugins/engine/pageControllers/__stubs__/translator.js +24 -0
- package/.server/server/plugins/engine/pageControllers/__stubs__/translator.js.map +1 -0
- package/.server/server/plugins/engine/pageControllers/errors.d.ts +1 -1
- package/.server/server/plugins/engine/pageControllers/errors.js +3 -2
- package/.server/server/plugins/engine/pageControllers/errors.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/helpers/submission.d.ts +3 -2
- package/.server/server/plugins/engine/pageControllers/helpers/submission.js +4 -4
- package/.server/server/plugins/engine/pageControllers/helpers/submission.js.map +1 -1
- package/.server/server/plugins/engine/pageControllers/validationOptions.d.ts +7 -3
- package/.server/server/plugins/engine/pageControllers/validationOptions.js +34 -33
- package/.server/server/plugins/engine/pageControllers/validationOptions.js.map +1 -1
- package/.server/server/plugins/engine/plugin.js +2 -0
- package/.server/server/plugins/engine/plugin.js.map +1 -1
- package/.server/server/plugins/engine/routes/index.js +4 -1
- package/.server/server/plugins/engine/routes/index.js.map +1 -1
- package/.server/server/plugins/engine/routes/questions.js +5 -2
- package/.server/server/plugins/engine/routes/questions.js.map +1 -1
- package/.server/server/plugins/engine/types/index.d.ts +1 -0
- package/.server/server/plugins/engine/types/index.js.map +1 -1
- package/.server/server/plugins/engine/types/schema.js +1 -0
- package/.server/server/plugins/engine/types/schema.js.map +1 -1
- package/.server/server/plugins/engine/types.d.ts +12 -1
- package/.server/server/plugins/engine/types.js.map +1 -1
- package/.server/server/plugins/engine/views/components/_location-field-base.html +1 -1
- package/.server/server/plugins/engine/views/components/fileuploadfield.html +3 -3
- package/.server/server/plugins/engine/views/components/nationalgridfieldnumberfield.html +1 -1
- package/.server/server/plugins/engine/views/components/osgridreffield.html +1 -1
- package/.server/server/plugins/engine/views/components/paymentfield.html +8 -8
- package/.server/server/plugins/engine/views/components/ukaddressfield.html +4 -4
- package/.server/server/plugins/engine/views/confirmation.html +4 -4
- package/.server/server/plugins/engine/views/exit.html +4 -4
- package/.server/server/plugins/engine/views/file-upload.html +3 -3
- package/.server/server/plugins/engine/views/index.html +3 -3
- package/.server/server/plugins/engine/views/item-delete.html +1 -1
- package/.server/server/plugins/engine/views/partials/form.html +3 -3
- package/.server/server/plugins/engine/views/partials/preview-banner.html +4 -4
- package/.server/server/plugins/engine/views/partials/warn-missing-notification-email.html +4 -5
- package/.server/server/plugins/engine/views/repeat-list-summary.html +4 -4
- package/.server/server/plugins/engine/views/summary.html +14 -7
- package/.server/server/plugins/nunjucks/enviroment.test.js +10 -0
- package/.server/server/plugins/nunjucks/enviroment.test.js.map +1 -1
- package/.server/server/plugins/nunjucks/environment.d.ts +8 -0
- package/.server/server/plugins/nunjucks/environment.js +13 -0
- package/.server/server/plugins/nunjucks/environment.js.map +1 -1
- package/.server/server/plugins/nunjucks/filters/answer.js +9 -1
- package/.server/server/plugins/nunjucks/filters/answer.js.map +1 -1
- package/.server/server/plugins/nunjucks/filters/answer.test.js +13 -2
- package/.server/server/plugins/nunjucks/filters/answer.test.js.map +1 -1
- package/.server/server/plugins/nunjucks/filters/field.d.ts +1 -1
- package/.server/server/plugins/postcode-lookup/models/index.d.ts +24 -19
- package/.server/server/plugins/postcode-lookup/models/index.js +83 -76
- package/.server/server/plugins/postcode-lookup/models/index.js.map +1 -1
- package/.server/server/plugins/postcode-lookup/routes/index.js +7 -13
- package/.server/server/plugins/postcode-lookup/routes/index.js.map +1 -1
- package/.server/server/plugins/postcode-lookup/types.d.ts +1 -0
- package/.server/server/plugins/postcode-lookup/types.js +1 -0
- package/.server/server/plugins/postcode-lookup/types.js.map +1 -1
- package/.server/server/plugins/postcode-lookup/views/postcode-lookup-details.html +3 -3
- package/.server/server/types.d.ts +2 -1
- package/.server/server/types.js.map +1 -1
- package/.server/server/utils/utils.d.ts +5 -0
- package/.server/server/utils/utils.js +16 -0
- package/.server/server/utils/utils.js.map +1 -1
- package/.server/typings/hapi/index.d.js.map +1 -1
- package/package.json +3 -2
- package/src/server/forms/register-as-a-unicorn-breeder.yaml +0 -14
- package/src/server/forms/simple-form.yaml +106 -3
- package/src/server/plugins/engine/components/AutocompleteField.ts +3 -6
- package/src/server/plugins/engine/components/CheckboxesField.ts +12 -11
- package/src/server/plugins/engine/components/ComponentCollection.ts +143 -61
- package/src/server/plugins/engine/components/DatePartsField.ts +33 -11
- package/src/server/plugins/engine/components/DeclarationField.ts +37 -14
- package/src/server/plugins/engine/components/EastingNorthingField.ts +83 -22
- package/src/server/plugins/engine/components/EmailAddressField.ts +4 -7
- package/src/server/plugins/engine/components/FileUploadField.ts +28 -22
- package/src/server/plugins/engine/components/FormComponent.ts +49 -12
- package/src/server/plugins/engine/components/GeospatialField.ts +36 -21
- package/src/server/plugins/engine/components/LatLongField.ts +52 -21
- package/src/server/plugins/engine/components/ListFormComponent.ts +26 -10
- package/src/server/plugins/engine/components/LocationFieldBase.ts +5 -8
- package/src/server/plugins/engine/components/LocationFieldHelpers.ts +3 -3
- package/src/server/plugins/engine/components/Markdown.ts +7 -3
- package/src/server/plugins/engine/components/MonthYearField.ts +32 -10
- package/src/server/plugins/engine/components/MultilineTextField.ts +5 -8
- package/src/server/plugins/engine/components/NationalGridFieldNumberField.ts +25 -11
- package/src/server/plugins/engine/components/NumberField.ts +3 -4
- package/src/server/plugins/engine/components/OsGridRefField.ts +25 -9
- package/src/server/plugins/engine/components/PaymentField.ts +22 -12
- package/src/server/plugins/engine/components/SelectField.ts +3 -6
- package/src/server/plugins/engine/components/SelectionControlField.ts +7 -8
- package/src/server/plugins/engine/components/TelephoneNumberField.ts +4 -7
- package/src/server/plugins/engine/components/UkAddressField.ts +33 -18
- package/src/server/plugins/engine/components/YesNoField.ts +10 -0
- package/src/server/plugins/engine/components/helpers/components.ts +13 -6
- package/src/server/plugins/engine/components/types.ts +9 -0
- package/src/server/plugins/engine/configureEnginePlugin.ts +12 -1
- package/src/server/plugins/engine/form-context.ts +8 -2
- package/src/server/plugins/engine/helpers.ts +10 -18
- package/src/server/plugins/engine/i18n/buildValidationMessages.ts +69 -0
- package/src/server/plugins/engine/i18n/createFormTranslator.ts +33 -0
- package/src/server/plugins/engine/i18n/createTranslator.ts +61 -0
- package/src/server/plugins/engine/i18n/extractBaseTranslations.ts +61 -0
- package/src/server/plugins/engine/i18n/index.ts +80 -0
- package/src/server/plugins/engine/i18n/translations/cy.json +271 -0
- package/src/server/plugins/engine/i18n/translations/en-GB.json +271 -0
- package/src/server/plugins/engine/i18n/types.ts +62 -0
- package/src/server/plugins/engine/index.ts +4 -2
- package/src/server/plugins/engine/models/FormModel.ts +59 -23
- package/src/server/plugins/engine/models/SummaryViewModel.ts +68 -25
- package/src/server/plugins/engine/options.js +2 -1
- package/src/server/plugins/engine/outputFormatters/adapter/v1.ts +5 -0
- package/src/server/plugins/engine/outputFormatters/human/v1.ts +2 -3
- package/src/server/plugins/engine/outputFormatters/machine/v1.ts +9 -8
- package/src/server/plugins/engine/pageControllers/FileUploadPageController.ts +7 -3
- package/src/server/plugins/engine/pageControllers/PageController.ts +12 -1
- package/src/server/plugins/engine/pageControllers/QuestionPageController.ts +53 -21
- package/src/server/plugins/engine/pageControllers/RepeatPageController.ts +66 -29
- package/src/server/plugins/engine/pageControllers/StartPageController.ts +7 -2
- package/src/server/plugins/engine/pageControllers/StatusPageController.ts +10 -2
- package/src/server/plugins/engine/pageControllers/SummaryPageController.ts +48 -22
- package/src/server/plugins/engine/pageControllers/__stubs__/translator.ts +28 -0
- package/src/server/plugins/engine/pageControllers/errors.ts +4 -2
- package/src/server/plugins/engine/pageControllers/helpers/submission.ts +11 -4
- package/src/server/plugins/engine/pageControllers/validationOptions.ts +43 -53
- package/src/server/plugins/engine/plugin.ts +2 -0
- package/src/server/plugins/engine/routes/index.ts +9 -1
- package/src/server/plugins/engine/routes/questions.ts +5 -1
- package/src/server/plugins/engine/types/index.ts +5 -0
- package/src/server/plugins/engine/types/schema.ts +1 -0
- package/src/server/plugins/engine/types.ts +10 -0
- package/src/server/plugins/engine/views/components/_location-field-base.html +1 -1
- package/src/server/plugins/engine/views/components/fileuploadfield.html +3 -3
- package/src/server/plugins/engine/views/components/nationalgridfieldnumberfield.html +1 -1
- package/src/server/plugins/engine/views/components/osgridreffield.html +1 -1
- package/src/server/plugins/engine/views/components/paymentfield.html +8 -8
- package/src/server/plugins/engine/views/components/ukaddressfield.html +4 -4
- package/src/server/plugins/engine/views/confirmation.html +4 -4
- package/src/server/plugins/engine/views/exit.html +4 -4
- package/src/server/plugins/engine/views/file-upload.html +3 -3
- package/src/server/plugins/engine/views/index.html +3 -3
- package/src/server/plugins/engine/views/item-delete.html +1 -1
- package/src/server/plugins/engine/views/partials/form.html +3 -3
- package/src/server/plugins/engine/views/partials/preview-banner.html +4 -4
- package/src/server/plugins/engine/views/partials/warn-missing-notification-email.html +4 -5
- package/src/server/plugins/engine/views/repeat-list-summary.html +4 -4
- package/src/server/plugins/engine/views/summary.html +14 -7
- package/src/server/plugins/nunjucks/environment.js +14 -0
- package/src/server/plugins/nunjucks/filters/answer.js +12 -1
- package/src/server/plugins/postcode-lookup/models/index.js +144 -87
- package/src/server/plugins/postcode-lookup/routes/index.js +13 -16
- package/src/server/plugins/postcode-lookup/types.js +1 -0
- package/src/server/plugins/postcode-lookup/views/postcode-lookup-details.html +3 -3
- package/src/server/types.ts +2 -0
- package/src/server/utils/utils.js +14 -0
- package/src/typings/hapi/index.d.ts +1 -0
- package/.server/server/plugins/engine/components/constants.d.ts +0 -1
- package/.server/server/plugins/engine/components/constants.js +0 -2
- package/.server/server/plugins/engine/components/constants.js.map +0 -1
- package/src/server/plugins/engine/components/constants.ts +0 -1
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type FormDefinition } from '@defra/forms-model'
|
|
2
|
+
import { type i18n } from 'i18next'
|
|
3
|
+
|
|
4
|
+
import { createTranslator } from './createTranslator.js'
|
|
5
|
+
import { extractBaseTranslations } from './extractBaseTranslations.js'
|
|
6
|
+
import { createFormI18nInstance } from './index.js'
|
|
7
|
+
import {
|
|
8
|
+
type FormDefinitionTranslations,
|
|
9
|
+
type Translator
|
|
10
|
+
} from './types.js'
|
|
11
|
+
|
|
12
|
+
export function createFormTranslator(
|
|
13
|
+
def: FormDefinition,
|
|
14
|
+
language: string
|
|
15
|
+
): Translator {
|
|
16
|
+
const baseTranslations = extractBaseTranslations(def)
|
|
17
|
+
const i18nInstance = createFormI18nInstance(baseTranslations)
|
|
18
|
+
loadFormTranslations(def, i18nInstance)
|
|
19
|
+
|
|
20
|
+
return createTranslator(i18nInstance, language)
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export function loadFormTranslations(def: FormDefinition, i18nInstance: i18n) {
|
|
24
|
+
const formTranslations = def.metadata?.translations as
|
|
25
|
+
| FormDefinitionTranslations
|
|
26
|
+
| undefined
|
|
27
|
+
|
|
28
|
+
if (formTranslations) {
|
|
29
|
+
for (const [lng, resources] of Object.entries(formTranslations)) {
|
|
30
|
+
i18nInstance.addResourceBundle(lng, 'form', resources, true, true)
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { type i18n } from 'i18next'
|
|
2
|
+
|
|
3
|
+
import { type Translator } from './types.js'
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Creates a translator for the specified language, decorated with utility functions
|
|
7
|
+
* for translating specific parts of the form definition.
|
|
8
|
+
* @param i18nInstance - instance of i18next which gets created on startup (reads the boilerplate files en-GB.json and cy.json)
|
|
9
|
+
* @param language - requested language
|
|
10
|
+
*/
|
|
11
|
+
export function createTranslator(
|
|
12
|
+
i18nInstance: i18n,
|
|
13
|
+
language = 'en-GB'
|
|
14
|
+
): Translator {
|
|
15
|
+
const t = (key: string, opts?: Record<string, unknown>): string =>
|
|
16
|
+
i18nInstance.t(key, { lng: language, ns: 'plugin', ...opts })
|
|
17
|
+
|
|
18
|
+
const resolveContent = (
|
|
19
|
+
entity: { id?: string },
|
|
20
|
+
entityType: string,
|
|
21
|
+
prop: string
|
|
22
|
+
): string => {
|
|
23
|
+
if (!entity.id) {
|
|
24
|
+
const raw = (entity as Record<string, unknown>)[prop]
|
|
25
|
+
if (typeof raw !== 'string') return ''
|
|
26
|
+
// t() resolves i18next key constants (sub-field labels); returns raw string unchanged if not a key
|
|
27
|
+
return t(raw)
|
|
28
|
+
}
|
|
29
|
+
const key = `${entityType}.${entity.id}.${prop}`
|
|
30
|
+
const result = i18nInstance.t(key, {
|
|
31
|
+
lng: language,
|
|
32
|
+
ns: 'form'
|
|
33
|
+
})
|
|
34
|
+
if (result === key) {
|
|
35
|
+
// No form translation found — fall through to t(raw) so plugin i18n
|
|
36
|
+
// key constants (e.g. 'components.yesNoField.yes') are still resolved.
|
|
37
|
+
const raw = (entity as Record<string, unknown>)[prop]
|
|
38
|
+
if (typeof raw !== 'string') return ''
|
|
39
|
+
return t(raw)
|
|
40
|
+
}
|
|
41
|
+
return result
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const resolveFormContent = (prop: string) => {
|
|
45
|
+
const key = `form.${prop}`
|
|
46
|
+
return i18nInstance.t(key, { lng: language, ns: 'form' })
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
return {
|
|
50
|
+
t,
|
|
51
|
+
tForm: (prop) => resolveFormContent(prop),
|
|
52
|
+
tPage: (entity, prop) => resolveContent(entity, 'pages', prop as string),
|
|
53
|
+
tComponent: (entity, prop) =>
|
|
54
|
+
resolveContent(entity, 'components', prop as string),
|
|
55
|
+
tSection: (entity, prop) =>
|
|
56
|
+
resolveContent(entity, 'sections', prop as string),
|
|
57
|
+
tListItem: (entity, prop) =>
|
|
58
|
+
resolveContent(entity, 'listItems', prop as string),
|
|
59
|
+
language
|
|
60
|
+
}
|
|
61
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import {
|
|
2
|
+
hasComponentsEvenIfNoNext,
|
|
3
|
+
type FormDefinition
|
|
4
|
+
} from '@defra/forms-model'
|
|
5
|
+
|
|
6
|
+
import { type FormDefinitionTranslations } from './types.js'
|
|
7
|
+
|
|
8
|
+
type BaseTranslations = FormDefinitionTranslations[string]
|
|
9
|
+
|
|
10
|
+
export function extractBaseTranslations(def: FormDefinition): BaseTranslations {
|
|
11
|
+
const pages: BaseTranslations['pages'] = {}
|
|
12
|
+
const components: BaseTranslations['components'] = {}
|
|
13
|
+
const sections: BaseTranslations['sections'] = {}
|
|
14
|
+
const listItems: BaseTranslations['listItems'] = {}
|
|
15
|
+
const form: BaseTranslations['form'] = {}
|
|
16
|
+
|
|
17
|
+
for (const page of def.pages) {
|
|
18
|
+
if (page.id && page.title) {
|
|
19
|
+
pages[page.id] = { title: page.title }
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
if (hasComponentsEvenIfNoNext(page)) {
|
|
23
|
+
for (const component of page.components) {
|
|
24
|
+
if (!component.id) continue
|
|
25
|
+
|
|
26
|
+
const entry: BaseTranslations['components'][string] = {}
|
|
27
|
+
|
|
28
|
+
if (component.title) entry.title = component.title
|
|
29
|
+
if ('hint' in component && component.hint) entry.hint = component.hint
|
|
30
|
+
if ('content' in component && component.content) {
|
|
31
|
+
entry.content = component.content
|
|
32
|
+
}
|
|
33
|
+
if ('shortDescription' in component && component.shortDescription) {
|
|
34
|
+
entry.shortDescription = component.shortDescription
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if (Object.keys(entry).length) {
|
|
38
|
+
components[component.id] = entry
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
for (const section of def.sections) {
|
|
45
|
+
if (section.id && section.title) {
|
|
46
|
+
sections[section.id] = { title: section.title }
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
for (const list of def.lists) {
|
|
51
|
+
for (const item of list.items) {
|
|
52
|
+
if (item.id && item.text) {
|
|
53
|
+
listItems[item.id] = { text: item.text }
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
form.title = def.name ?? ''
|
|
59
|
+
|
|
60
|
+
return { pages, components, sections, listItems, form }
|
|
61
|
+
}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { getErrorMessage } from '@defra/forms-model'
|
|
2
|
+
import i18next, { createInstance } from 'i18next'
|
|
3
|
+
|
|
4
|
+
import { logger } from '../../../common/helpers/logging/logger.js'
|
|
5
|
+
import cy from './translations/cy.json' with { type: 'json' }
|
|
6
|
+
import enGB from './translations/en-GB.json' with { type: 'json' }
|
|
7
|
+
import { type FormDefinitionTranslations } from './types.js'
|
|
8
|
+
|
|
9
|
+
type BaseTranslations = FormDefinitionTranslations[string]
|
|
10
|
+
|
|
11
|
+
i18next
|
|
12
|
+
.init({
|
|
13
|
+
resources: {
|
|
14
|
+
'en-GB': { translation: enGB },
|
|
15
|
+
cy: { translation: cy }
|
|
16
|
+
},
|
|
17
|
+
fallbackLng: 'en-GB',
|
|
18
|
+
interpolation: {
|
|
19
|
+
prefix: '[[',
|
|
20
|
+
suffix: ']]',
|
|
21
|
+
escapeValue: false
|
|
22
|
+
}
|
|
23
|
+
})
|
|
24
|
+
.catch((err: unknown) => {
|
|
25
|
+
logger.error(`Fatal init for translator i18next: ${getErrorMessage(err)}`)
|
|
26
|
+
})
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Generic translation utility function
|
|
30
|
+
* @param key - key for lookup
|
|
31
|
+
* @param language - language requested
|
|
32
|
+
* @param options
|
|
33
|
+
* @returns {string}
|
|
34
|
+
*/
|
|
35
|
+
export function t(
|
|
36
|
+
key: string,
|
|
37
|
+
language: string,
|
|
38
|
+
options?: Record<string, unknown>
|
|
39
|
+
): string {
|
|
40
|
+
return i18next.t(key, { lng: language, ...options })
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Creates an instance of i18next with base (boilerplate) translation files loaded (en-GB.json and cy.json),
|
|
45
|
+
* and appropriate namespaces for loading of form-specific translations later
|
|
46
|
+
* @param formEnGb
|
|
47
|
+
* @returns
|
|
48
|
+
*/
|
|
49
|
+
export function createFormI18nInstance(formEnGb: BaseTranslations) {
|
|
50
|
+
const instance = createInstance()
|
|
51
|
+
|
|
52
|
+
instance
|
|
53
|
+
.init({
|
|
54
|
+
resources: {
|
|
55
|
+
'en-GB': {
|
|
56
|
+
plugin: enGB,
|
|
57
|
+
form: formEnGb
|
|
58
|
+
},
|
|
59
|
+
cy: {
|
|
60
|
+
plugin: cy
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
fallbackLng: 'en-GB',
|
|
64
|
+
ns: ['plugin', 'form'],
|
|
65
|
+
defaultNS: 'plugin',
|
|
66
|
+
interpolation: {
|
|
67
|
+
prefix: '[[',
|
|
68
|
+
suffix: ']]',
|
|
69
|
+
escapeValue: false
|
|
70
|
+
}
|
|
71
|
+
})
|
|
72
|
+
.catch((err: unknown) => {
|
|
73
|
+
// init with inline resources completes synchronously — unreachable
|
|
74
|
+
logger.error(
|
|
75
|
+
`Fatal init for translator instance: ${getErrorMessage(err)}`
|
|
76
|
+
)
|
|
77
|
+
})
|
|
78
|
+
|
|
79
|
+
return instance
|
|
80
|
+
}
|
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
{
|
|
2
|
+
"validation": {
|
|
3
|
+
"required": "Nodwch {{lowerFirst(#label)}}",
|
|
4
|
+
"selectRequired": "Dewiswch {{lowerFirst(#label)}}",
|
|
5
|
+
"pattern": "Nodwch {{lowerFirst(#label)}} dilys",
|
|
6
|
+
"format": "Nodwch {{lowerFirst(#label)}} yn y fformat cywir",
|
|
7
|
+
"objectRequired": "Nodwch {{#label}}",
|
|
8
|
+
"objectMissing": "Rhaid i {{#title}} gynnwys {{lowerFirst(#label)}}",
|
|
9
|
+
"max": "Rhaid i {{#label}} fod yn {{#limit}} o nodau neu lai",
|
|
10
|
+
"min": "Rhaid i {{#label}} fod yn {{#limit}} o nodau neu fwy",
|
|
11
|
+
"minMax": "Rhaid i {{#label}} fod rhwng {{#min}} a {{#max}} o nodau",
|
|
12
|
+
"number": "Rhaid i {{#label}} fod yn rhif",
|
|
13
|
+
"numberPrecision": "Rhaid i {{#label}} beidio â chael mwy na {{#limit}} lle degol",
|
|
14
|
+
"numberInteger": "Rhaid i {{#label}} fod yn rhif cyfan",
|
|
15
|
+
"numberMin": "Rhaid i {{#label}} fod yn {{#limit}} neu uwch",
|
|
16
|
+
"numberMax": "Rhaid i {{#label}} fod yn {{#limit}} neu is",
|
|
17
|
+
"maxWords": "Rhaid i {{#label}} fod yn {{#limit}} o eiriau neu lai"
|
|
18
|
+
},
|
|
19
|
+
|
|
20
|
+
"errors": {
|
|
21
|
+
"title": "Mae problem",
|
|
22
|
+
"optionsMismatch": "Mae'r opsiynau'n wahanol oherwydd i chi newid ateb blaenorol"
|
|
23
|
+
},
|
|
24
|
+
|
|
25
|
+
"common": {
|
|
26
|
+
"optional": "(dewisol)",
|
|
27
|
+
"warningIconFallback": "Rhybudd",
|
|
28
|
+
"back": "Yn ôl",
|
|
29
|
+
"continue": "Parhau",
|
|
30
|
+
"saveAndExit": "Cadw a gadael",
|
|
31
|
+
"draft": "ddrafft",
|
|
32
|
+
"live": "fyw"
|
|
33
|
+
},
|
|
34
|
+
|
|
35
|
+
"pages": {
|
|
36
|
+
"question": {
|
|
37
|
+
"paymentCancelledBannerTitle": "Pwysig",
|
|
38
|
+
"paymentCancelledTitle": "Mae eich taliad wedi'i ganslo",
|
|
39
|
+
"paymentCancelledBody": "Cafodd eich manylion talu eu dileu oherwydd bod y ffurflen yn anweithredol am 5 diwrnod.",
|
|
40
|
+
"paymentCancelledAction": "Ychwanegwch eich manylion talu eto.",
|
|
41
|
+
"backToAddAnother": "Ewch yn ôl i ychwanegu un arall",
|
|
42
|
+
"backToCheckAnswers": "Ewch yn ôl i wirio'ch atebion",
|
|
43
|
+
"startNow": "Dechrau nawr"
|
|
44
|
+
},
|
|
45
|
+
|
|
46
|
+
"summary": {
|
|
47
|
+
"title": "Gwiriwch eich atebion cyn anfon eich ffurflen",
|
|
48
|
+
"change": "Newid",
|
|
49
|
+
"notProvided": "Heb ei ddarparu",
|
|
50
|
+
"declaration": "Datganiad",
|
|
51
|
+
"acceptAndSubmit": "Derbyn a chyflwyno",
|
|
52
|
+
"payAndSubmit": "Talu a chyflwyno",
|
|
53
|
+
"submit": "Cyflwyno",
|
|
54
|
+
"saveAndExit": "Cadw a gadael",
|
|
55
|
+
"paymentSuccessBannerTitle": "Llwyddiant",
|
|
56
|
+
"paymentSuccessTitle": "Mae gennym eich manylion talu",
|
|
57
|
+
"paymentSuccessBody": "Mae eich taliad ar ddal. Byddwn yn codi tâl arnoch pan fyddwch yn cyflwyno'r ffurflen.",
|
|
58
|
+
"paymentDetailsTitle": "Manylion talu",
|
|
59
|
+
"paymentFor": "Taliad am",
|
|
60
|
+
"totalAmount": "Cyfanswm",
|
|
61
|
+
"reference": "Cyfeirnod",
|
|
62
|
+
"dateOfPayment": "Dyddiad talu",
|
|
63
|
+
"submissionFailed": "Roedd problem ac ni chyflwynwyd eich ffurflen. Ceisiwch gyflwyno'r ffurflen eto",
|
|
64
|
+
"submissionFailedContactSuffix": " neu gallwch [[contactUsLink]] a dyfynnu'ch cyfeirnod i drefnu ad-daliad",
|
|
65
|
+
"contactUsLinkText": "cysylltu â ni (yn agor mewn tab newydd)",
|
|
66
|
+
"confirmationEmail": "E-bost cadarnhad (dewisol)",
|
|
67
|
+
"confirmationEmailHint": "Rhowch eich cyfeiriad e-bost i dderbyn e-bost cadarnhau a chopi o'ch atebion"
|
|
68
|
+
},
|
|
69
|
+
|
|
70
|
+
"repeater": {
|
|
71
|
+
"removeAnswer": "Ydych chi'n siŵr eich bod am dynnu'r ateb hwn?",
|
|
72
|
+
"remove": "Tynnu",
|
|
73
|
+
"cancel": "Canslo",
|
|
74
|
+
"lastItemCannotBeRemoved": "Ni ellir tynnu eitem olaf y rhestr",
|
|
75
|
+
"itemToRemoveNotFound": "Ni chanfuwyd eitem y rhestr i'w thynnu",
|
|
76
|
+
"continue": "Parhau",
|
|
77
|
+
"addAnother": "Ychwanegu un arall",
|
|
78
|
+
"saveAndExit": "Cadw a gadael",
|
|
79
|
+
"change": "Newid",
|
|
80
|
+
"notProvided": "Heb ei ddarparu",
|
|
81
|
+
"visuallyHiddenItem": "eitem [[index]]",
|
|
82
|
+
"pageTitle_one": "Rydych wedi ychwanegu [[count]] ateb",
|
|
83
|
+
"pageTitle_other": "Rydych wedi ychwanegu [[count]] ateb",
|
|
84
|
+
"tooMany_one": "Dim ond hyd at [[count]] ateb y gallwch ei ychwanegu",
|
|
85
|
+
"tooMany_other": "Dim ond hyd at [[count]] ateb y gallwch eu hychwanegu",
|
|
86
|
+
"tooFew_one": "Rhaid i chi ychwanegu o leiaf [[count]] ateb",
|
|
87
|
+
"tooFew_other": "Rhaid i chi ychwanegu o leiaf [[count]] ateb"
|
|
88
|
+
},
|
|
89
|
+
|
|
90
|
+
"fileUpload": {
|
|
91
|
+
"upload": "Uwchlwytho ffeil",
|
|
92
|
+
"maxFilesReached": "Rydych wedi cyrraedd nifer uchaf y ffeiliau. Tynnwch ffeil i uwchlwytho rhagor."
|
|
93
|
+
},
|
|
94
|
+
|
|
95
|
+
"exit": {
|
|
96
|
+
"defaultTitle": "Mae eich cynnydd wedi'i gadw",
|
|
97
|
+
"whatHappensNext": "Beth sy'n digwydd nesaf",
|
|
98
|
+
"body": "Mae cynnydd eich ffurflen wedi'i gadw. Gallwch ddychwelyd i gwblhau eich cais ar unrhyw adeg gan ddefnyddio'r ddolen a ddarperir.",
|
|
99
|
+
"returnToApplication": "Dychwelyd i'r cais"
|
|
100
|
+
},
|
|
101
|
+
|
|
102
|
+
"confirmation": {
|
|
103
|
+
"formSubmitted": "Ffurflen wedi'i chyflwyno",
|
|
104
|
+
"whatHappensNext": "Beth sy'n digwydd nesaf",
|
|
105
|
+
"referenceNumber": "Eich cyfeirnod",
|
|
106
|
+
"feedbackLink": "Beth yw eich barn am y gwasanaeth hwn? (yn cymryd 30 eiliad)"
|
|
107
|
+
},
|
|
108
|
+
|
|
109
|
+
"preview": {
|
|
110
|
+
"warnMissingNotificationEmail": {
|
|
111
|
+
"body": "Os hoffech dderbyn e-bost prawf, [[link]] yr hoffech i gyflwyniadau ffurflen fynd iddo.",
|
|
112
|
+
"linkText": "nodwch y cyfeiriad e-bost (yn agor mewn tab newydd)"
|
|
113
|
+
},
|
|
114
|
+
"bannerForce": "Rhagolwg o ffurflen [[previewMode]] yw hon. Peidiwch â rhoi gwybodaeth bersonol.",
|
|
115
|
+
"bannerText": "Dyma ragolwg o dudalen ffurflen [[previewMode]] rydych chi'n ei golygu.",
|
|
116
|
+
"previousPages": "Mae'n dibynnu ar atebion o dudalennau cynharach yn y ffurflen. Yn y fersiwn fyw, bydd angen i ddefnyddwyr gwblhau'r cwestiynau hynny yn gyntaf."
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
|
|
120
|
+
"postcodeLookup": {
|
|
121
|
+
"postcodeLabel": "Cod post",
|
|
122
|
+
"postcodeHint": "Er enghraifft, AA3 1AB",
|
|
123
|
+
"buildingNameLabel": "Enw neu rif yr adeilad (dewisol)",
|
|
124
|
+
"buildingNameHint": "Er enghraifft, 15 neu Bryn Melyn",
|
|
125
|
+
"selectAddress": "Dewiswch gyfeiriad",
|
|
126
|
+
"addressLine1Label": "Llinell cyfeiriad 1",
|
|
127
|
+
"addressLine2Label": "Llinell cyfeiriad 2 (dewisol)",
|
|
128
|
+
"townLabel": "Tref neu ddinas",
|
|
129
|
+
"countyLabel": "Sir (dewisol)",
|
|
130
|
+
"findAddress": "Dod o hyd i gyfeiriad",
|
|
131
|
+
"enterManually": "nodwch gyfeiriad â llaw",
|
|
132
|
+
"searchAgain": "Chwilio eto",
|
|
133
|
+
"useThisAddress": "Defnyddio'r cyfeiriad hwn",
|
|
134
|
+
"findAnAddressInstead": "dod o hyd i gyfeiriad yn lle hynny",
|
|
135
|
+
"noAddressFoundTitle": "Ni chanfuwyd cyfeiriad",
|
|
136
|
+
"noAddressFoundBody": "Ni allem ddod o hyd i gyfeiriad cyfatebol",
|
|
137
|
+
"addressFound_one": "Canfuwyd [[count]] cyfeiriad ar gyfer",
|
|
138
|
+
"addressFound_other": "Canfuwyd [[count]] cyfeiriad ar gyfer",
|
|
139
|
+
"validation": {
|
|
140
|
+
"invalidPostcode": "Nodwch god post dilys neu nodwch gyfeiriad â llaw",
|
|
141
|
+
"requiredPostcode": "Nodwch god post",
|
|
142
|
+
"selectAddress": "Dewiswch gyfeiriad",
|
|
143
|
+
"requiredAddressLine1": "Nodwch linell cyfeiriad 1",
|
|
144
|
+
"requiredTown": "Nodwch dref neu ddinas",
|
|
145
|
+
"invalidManualPostcode": "Nodwch god post dilys",
|
|
146
|
+
"requiredManualPostcode": "Nodwch god post"
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
|
|
150
|
+
"components": {
|
|
151
|
+
"dateField": {
|
|
152
|
+
"day": "Diwrnod",
|
|
153
|
+
"month": "Mis",
|
|
154
|
+
"year": "Blwyddyn",
|
|
155
|
+
"validation": {
|
|
156
|
+
"dateFormat": "Rhaid i {{#title}} fod yn ddyddiad go iawn",
|
|
157
|
+
"dateMin": "Rhaid i {{#title}} fod yr un fath â neu ar ôl {{#limit}}",
|
|
158
|
+
"dateMax": "Rhaid i {{#title}} fod yr un fath â neu cyn {{#limit}}"
|
|
159
|
+
}
|
|
160
|
+
},
|
|
161
|
+
|
|
162
|
+
"monthYearField": {
|
|
163
|
+
"month": "Mis",
|
|
164
|
+
"year": "Blwyddyn"
|
|
165
|
+
},
|
|
166
|
+
|
|
167
|
+
"addressField": {
|
|
168
|
+
"uprn": "UPRN",
|
|
169
|
+
"line1": "Llinell cyfeiriad 1",
|
|
170
|
+
"line2": "Llinell cyfeiriad 2",
|
|
171
|
+
"town": "Tref neu ddinas",
|
|
172
|
+
"county": "Sir",
|
|
173
|
+
"postcode": "Cod post",
|
|
174
|
+
"enterAddress": "Nodwch [[shortDescription]]",
|
|
175
|
+
"findAddress": "Dod o hyd i gyfeiriad",
|
|
176
|
+
"selectedAddress": "Cyfeiriad a ddewiswyd:",
|
|
177
|
+
"useDifferentAddress": "Defnyddio cyfeiriad gwahanol",
|
|
178
|
+
"enterManually": "nodwch gyfeiriad â llaw"
|
|
179
|
+
},
|
|
180
|
+
|
|
181
|
+
"latLongField": {
|
|
182
|
+
"latitude": "Lledred",
|
|
183
|
+
"longitude": "Hydred",
|
|
184
|
+
"latitudeRequired": "Nodwch ledred",
|
|
185
|
+
"longitudeRequired": "Nodwch hydred",
|
|
186
|
+
"precision": "Rhaid i {{#label}} beidio â chael mwy na 7 lle degol",
|
|
187
|
+
"notANumber": "Rhaid i {{#label}} fod yn rif dilys",
|
|
188
|
+
"latitudeBase": "Nodwch ledred dilys ar gyfer [[fieldLabel]] fel 51.519450",
|
|
189
|
+
"longitudeBase": "Nodwch hydred dilys ar gyfer [[fieldLabel]] fel -0.127758",
|
|
190
|
+
"latitudeRange": "Rhaid i ledred [[fieldLabel]] fod rhwng [[min]] a [[max]]",
|
|
191
|
+
"longitudeRange": "Rhaid i hydred [[fieldLabel]] fod rhwng [[min]] a [[max]]"
|
|
192
|
+
},
|
|
193
|
+
|
|
194
|
+
"eastingNorthingField": {
|
|
195
|
+
"easting": "Dwyreiniannau",
|
|
196
|
+
"northing": "Gogleddiannau",
|
|
197
|
+
"eastingRequired": "Nodwch ddwyreiniannau",
|
|
198
|
+
"northingRequired": "Nodwch ogleddiannau",
|
|
199
|
+
"eastingDigits": "Rhaid i {{#label}} ar gyfer [[fieldLabel]] fod rhwng 1 a 6 digid",
|
|
200
|
+
"northingDigits": "Rhaid i {{#label}} ar gyfer [[fieldLabel]] fod rhwng 1 a 7 digid",
|
|
201
|
+
"eastingRange": "Rhaid i {{#label}} ar gyfer [[fieldLabel]] fod rhwng [[min]] a [[max]]",
|
|
202
|
+
"northingRange": "Rhaid i {{#label}} ar gyfer [[fieldLabel]] fod rhwng [[min]] a [[max]]"
|
|
203
|
+
},
|
|
204
|
+
|
|
205
|
+
"nationalGridField": {
|
|
206
|
+
"required": "Nodwch {{lowerFirst(#title)}}",
|
|
207
|
+
"pattern": "Nodwch rif maes Grid Cenedlaethol dilys ar gyfer {{lowerFirst(#title)}} fel NG 1234 5678",
|
|
208
|
+
"howToFind": "Sut i ddod o hyd i fanylion lleoliad"
|
|
209
|
+
},
|
|
210
|
+
|
|
211
|
+
"osGridRefField": {
|
|
212
|
+
"required": "Nodwch {{lowerFirst(#title)}}",
|
|
213
|
+
"pattern": "Nodwch gyfeirnod grid AO dilys ar gyfer {{lowerFirst(#title)}} fel TQ123456",
|
|
214
|
+
"howToFind": "Sut i ddod o hyd i fanylion lleoliad"
|
|
215
|
+
},
|
|
216
|
+
|
|
217
|
+
"locationFieldBase": {
|
|
218
|
+
"howToFind": "Sut i ddod o hyd i fanylion lleoliad"
|
|
219
|
+
},
|
|
220
|
+
|
|
221
|
+
"yesNoField": {
|
|
222
|
+
"yes": "Ie",
|
|
223
|
+
"no": "Na",
|
|
224
|
+
"validation": {
|
|
225
|
+
"selectYesNoRequired": "{{#label}} - dewiswch ie neu na"
|
|
226
|
+
}
|
|
227
|
+
},
|
|
228
|
+
|
|
229
|
+
"declarationField": {
|
|
230
|
+
"defaultLabel": "Rwy'n deall ac yn cytuno",
|
|
231
|
+
"defaultConfirmationLabel": "Rwy'n cadarnhau fy mod yn deall ac yn derbyn y datganiad hwn",
|
|
232
|
+
"notProvided": "Heb ei ddarparu",
|
|
233
|
+
"validation": {
|
|
234
|
+
"declarationRequired": "Rhaid i chi gadarnhau eich bod yn deall ac yn cytuno â'r {{lowerFirst(#label)}} i barhau"
|
|
235
|
+
}
|
|
236
|
+
},
|
|
237
|
+
|
|
238
|
+
"geospatialField": {
|
|
239
|
+
"added_one": "Ychwanegwyd [[count]] lleoliad",
|
|
240
|
+
"added_other": "Ychwanegwyd [[count]] lleoliad",
|
|
241
|
+
"validation": {
|
|
242
|
+
"descriptionRequired": "Rhowch ddisgrifiad ar gyfer lleoliad [[count]]",
|
|
243
|
+
"wrongCountry": "Rhaid i leoliad [[count]] fod y tu mewn i [[country]]"
|
|
244
|
+
}
|
|
245
|
+
},
|
|
246
|
+
|
|
247
|
+
"paymentField": {
|
|
248
|
+
"detailsRequired": "Angen manylion talu",
|
|
249
|
+
"pendingTransaction": "Mae'n bosibl y gwelwch drafodiad ar y gweill yn eich cyfrif banc ond dim ond pan fyddwch yn cyflwyno'r ffurflen y codir tâl arnoch.",
|
|
250
|
+
"addPaymentDetails": "Ychwanegu manylion talu",
|
|
251
|
+
"cannotTakePayment": "Mae problem ac ni allwn dderbyn taliad. Cysylltwch â ni (manylion yn nhroedyn y ffurflen hon) neu cadwch eich cynnydd a dychwelyd at y ffurflen yn ddiweddarach.",
|
|
252
|
+
"testApiKey": "Ychwanegwch allwedd API prawf ddilys cyn i chi allu rhagolwg y daith talu.",
|
|
253
|
+
"completePayment": "Cwblhewch y taliad i barhau",
|
|
254
|
+
"paymentExpired": "Mae awdurdodiad eich taliad wedi dod i ben. Ychwanegwch eich manylion talu eto.",
|
|
255
|
+
"submissionFailed": "Roedd problem ac ni chyflwynwyd eich ffurflen. Ceisiwch gyflwyno'r ffurflen eto.",
|
|
256
|
+
"canSubmitAfterPayment": "Gallwch gyflwyno'r ffurflen ar ôl i chi ychwanegu eich manylion talu.",
|
|
257
|
+
"preAuthorisedTitle": "Rydych eisoes wedi awdurdodi taliad ar gyfer y ffurflen hon",
|
|
258
|
+
"preAuthorisedBody": "Parhewch i gyflwyno'r ffurflen. Ni chodir tâl arnoch ddwywaith.",
|
|
259
|
+
"totalAmountLabel": "Cyfanswm:",
|
|
260
|
+
"paymentAmountMismatch": "Mae swm y taliad a rhaganrhuddhawyd rywsut yn wahanol i'r hyn a ofynnwyd amdano. Ceisiwch ychwanegu manylion talu eto."
|
|
261
|
+
},
|
|
262
|
+
|
|
263
|
+
"fileUploadField": {
|
|
264
|
+
"uploaded": "Wedi'i uwchlwytho",
|
|
265
|
+
"uploadFailed": "Roedd problem gyda'ch ffeiliau a uwchlwythwyd. Uwchlwythwch nhw eto cyn cyflwyno'r ffurflen.",
|
|
266
|
+
"uploadedFilesHeading": "Ffeiliau a uwchlwythwyd",
|
|
267
|
+
"filesCount_one": "Uwchlwythwyd [[count]] ffeil",
|
|
268
|
+
"filesCount_other": "Uwchlwythwyd [[count]] ffeil"
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|