From 2124965996b1b295c6d6f1bc3946328a91e3bc9e Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Thu, 4 Jan 2024 01:05:36 +0200 Subject: [PATCH] add builder i18n --- app/javascript/template_builder/area.vue | 2 +- app/javascript/template_builder/builder.vue | 26 +++++++-- app/javascript/template_builder/dropzone.vue | 12 ++-- app/javascript/template_builder/field.vue | 30 +++++----- .../template_builder/field_submitter.vue | 25 +++++---- .../template_builder/field_type.vue | 30 +++++----- app/javascript/template_builder/fields.vue | 9 ++- app/javascript/template_builder/i18n.js | 56 +++++++++++++++++++ .../template_builder/mobile_draw_field.vue | 6 +- .../template_builder/mobile_fields.vue | 2 +- app/javascript/template_builder/replace.vue | 8 +-- app/javascript/template_builder/upload.vue | 8 +-- 12 files changed, 146 insertions(+), 68 deletions(-) create mode 100644 app/javascript/template_builder/i18n.js diff --git a/app/javascript/template_builder/area.vue b/app/javascript/template_builder/area.vue index 5aaa78aa..ba1caa48 100644 --- a/app/javascript/template_builder/area.vue +++ b/app/javascript/template_builder/area.vue @@ -149,7 +149,7 @@ export default { FieldSubmitter, IconX }, - inject: ['template', 'selectedAreaRef', 'save'], + inject: ['template', 'selectedAreaRef', 'save', 't'], props: { area: { type: Object, diff --git a/app/javascript/template_builder/builder.vue b/app/javascript/template_builder/builder.vue index 469e5df8..65fcdf6f 100644 --- a/app/javascript/template_builder/builder.vue +++ b/app/javascript/template_builder/builder.vue @@ -43,7 +43,7 @@ class="inline" /> @@ -214,14 +214,14 @@ >

- Draw {{ drawField.name }} field on the document + {{ t('draw_field_on_the_document').replace('{field}', drawField.name) }}

@@ -232,6 +232,7 @@ :fields="template.fields" :submitters="template.submitters" :selected-submitter="selectedSubmitter" + :with-help="withHelp" :default-submitters="defaultSubmitters" :default-fields="defaultFields" :with-sticky-submitters="withStickySubmitters" @@ -262,6 +263,7 @@ import MobileFields from './mobile_fields' import { IconUsersPlus, IconDeviceFloppy, IconWritingSign, IconInnerShadowTop } from '@tabler/icons-vue' import { v4 } from 'uuid' import { ref, computed } from 'vue' +import { en as i18nEn } from './i18n' export default { name: 'TemplateBuilder', @@ -285,6 +287,7 @@ export default { return { template: this.template, save: this.save, + t: this.t, baseFetch: this.baseFetch, backgroundColor: this.backgroundColor, withPhone: this.withPhone, @@ -302,6 +305,11 @@ export default { required: false, default: false }, + i18n: { + type: Object, + required: false, + default: () => ({}) + }, backgroundColor: { type: String, required: false, @@ -312,6 +320,11 @@ export default { required: false, default: true }, + withHelp: { + type: Boolean, + required: false, + default: true + }, autosave: { type: Boolean, required: false, @@ -475,6 +488,9 @@ export default { this.documentRefs = [] }, methods: { + t (key) { + return this.i18n[key] || i18nEn[key] || key + }, startFieldDraw ({ name, type }) { const existingField = this.template.fields?.find((f) => f.submitter_uuid === this.selectedSubmitter.uuid && name && name === f.name) diff --git a/app/javascript/template_builder/dropzone.vue b/app/javascript/template_builder/dropzone.vue index a7a17fcc..0da06ef9 100644 --- a/app/javascript/template_builder/dropzone.vue +++ b/app/javascript/template_builder/dropzone.vue @@ -29,7 +29,7 @@ {{ message }}
- Click to upload or drag and drop files + {{ t('click_to_upload') }} {{ t('or_drag_and_drop_files') }}
@@ -61,7 +61,7 @@ export default { IconCloudUpload, IconInnerShadowTop }, - inject: ['baseFetch'], + inject: ['baseFetch', 't'], props: { templateId: { type: [Number, String], @@ -91,13 +91,13 @@ export default { }, message () { if (this.isLoading) { - return 'Uploading...' + return this.t('uploading') } else if (this.isProcessing) { - return 'Processing...' + return this.t('processing_') } else if (this.acceptFileTypes === 'image/*, application/pdf') { - return 'Add PDF documents or images' + return this.t('add_pdf_documents_or_images') } else { - return 'Add documents or images' + return this.t('add_documents_or_images') } } }, diff --git a/app/javascript/template_builder/field.vue b/app/javascript/template_builder/field.vue index 05fa77ca..f38df25c 100644 --- a/app/javascript/template_builder/field.vue +++ b/app/javascript/template_builder/field.vue @@ -47,7 +47,7 @@ class="label text-xs" @click.prevent="field.required = !field.required" @mousedown.prevent - >Required + >{{ t('required') }}
@@ -111,7 +111,7 @@ class="absolute -top-1 left-2.5 px-1 h-4" style="font-size: 8px" > - Default value + {{ t('default_value') }}