Complete dashboard translations & small UI improvements (#69)

* fix dropdown action Estimate Dashboard and fix translating full Dasboard page

* Update app.php

* fix locale in app.php config

* Wizard install with translation, customer portal with translation, and fixing hardcoding strings to get translation

* fixes asked to review

* fixes pint

---------

Co-authored-by: Max <contact@agencetwogether.fr>
Co-authored-by: Darko Gjorgjijoski <5760249+gdarko@users.noreply.github.com>
This commit is contained in:
agencetwogether
2024-06-05 12:07:46 +02:00
committed by GitHub
parent 3259173066
commit 3b61440e1f
89 changed files with 925 additions and 213 deletions

View File

@@ -26,7 +26,7 @@
{{ token }}
</span>
<svg
v-tooltip="{ content: 'Copy to Clipboard' }"
v-tooltip="{ content: $t('general.copy_to_clipboard') }"
class="
absolute
right-0

View File

@@ -178,7 +178,7 @@
v$.confirm_password.$errors[0].$message
"
:content-loading="isFetchingInitialData"
label="Confirm Password"
:label="$t('customers.confirm_password')"
>
<BaseInput
v-model.trim="customerStore.currentCustomer.confirm_password"

View File

@@ -41,7 +41,7 @@
<BaseMultiselect
v-model="noteStore.currentNote.type"
:options="types"
value-prop="type"
value-prop="value"
class="mt-2"
/>
</BaseInputGroup>
@@ -122,7 +122,11 @@ const route = useRoute()
const { t } = useI18n()
let isSaving = ref(false)
const types = reactive(['Invoice', 'Estimate', 'Payment'])
const types = reactive([
{label: t('settings.customization.notes.types.invoice'), value: 'Invoice'},
{label: t('settings.customization.notes.types.estimate'), value: 'Estimate'},
{label: t('settings.customization.notes.types.payment'), value: 'Payment'}
])
let fields = ref(['customer', 'customerCustom'])
const modalActive = computed(() => {
@@ -164,7 +168,7 @@ watch(
onMounted(() => {
if (route.name === 'estimates.create') {
noteStore.currentNote.type = 'Estimate'
} else if (route.name === 'invoices.create') {
} else if (route.name === 'invoices.create' || route.name === 'recurring-invoices.create') {
noteStore.currentNote.type = 'Invoice'
} else {
noteStore.currentNote.type = 'Payment'

View File

@@ -96,7 +96,7 @@
@click="cancelPreview"
>
<BaseIcon name="PencilIcon" class="h-5 mr-2" />
Edit
{{ $t('general.edit') }}
</BaseButton>
<iframe
:src="templateUrl"
@@ -166,7 +166,7 @@ let estimateMailForm = reactive({
id: null,
from: null,
to: null,
subject: 'New Estimate',
subject: t('estimates.new_estimate'),
body: null,
})

View File

@@ -104,7 +104,7 @@
@click="cancelPreview"
>
<BaseIcon name="PencilIcon" class="h-5 mr-2" />
Edit
{{ $t('general.edit') }}
</BaseButton>
<iframe
@@ -181,7 +181,7 @@ const invoiceMailForm = reactive({
id: null,
from: null,
to: null,
subject: 'New Invoice',
subject: t('invoices.new_invoice'),
body: null,
})

View File

@@ -104,7 +104,7 @@
@click="cancelPreview"
>
<BaseIcon name="PencilIcon" class="h-5 mr-2" />
Edit
{{ $t('general.edit') }}
</BaseButton>
<iframe
@@ -181,7 +181,7 @@ const paymentMailForm = reactive({
id: null,
from: null,
to: null,
subject: 'New Payment',
subject: t('payments.new_payment'),
body: null,
})

View File

@@ -48,6 +48,7 @@
<BaseMultiselect
v-model="customFieldStore.currentCustomField.model_type"
:options="modelTypes"
value-prop="value"
:can-deselect="false"
:invalid="v$.currentCustomField.model_type.$error"
:searchable="true"
@@ -229,11 +230,11 @@ const { t } = useI18n()
let isSaving = ref(false)
const modelTypes = reactive([
'Customer',
'Invoice',
'Estimate',
'Expense',
'Payment',
{label: t('settings.custom_fields.model_type.customer'), value: 'Customer'},
{label: t('settings.custom_fields.model_type.invoice'), value: 'Invoice'},
{label: t('settings.custom_fields.model_type.estimate'), value: 'Estimate'},
{label: t('settings.custom_fields.model_type.expense'), value: 'Expense'},
{label: t('settings.custom_fields.model_type.payment'), value: 'Payment'}
])
const dataTypes = reactive([
@@ -286,9 +287,6 @@ const isRequiredField = computed({
const rules = computed(() => {
return {
currentCustomField: {
type: {
required: helpers.withMessage(t('validation.required'), required),
},
name: {
required: helpers.withMessage(t('validation.required'), required),
},