|
@@ -57,9 +57,16 @@
|
|
|
:placeholder="$t('profile.placeholder_phone')"
|
|
:placeholder="$t('profile.placeholder_phone')"
|
|
|
/>
|
|
/>
|
|
|
</div>
|
|
</div>
|
|
|
- </div>
|
|
|
|
|
|
|
|
|
|
- <q-space/>
|
|
|
|
|
|
|
+ <div>
|
|
|
|
|
+ <div class="text-weight-bold text-grey-8 q-mb-sm">{{ $t('profile.language') }}</div>
|
|
|
|
|
+ <div class="row q-gutter-x-md">
|
|
|
|
|
+ <q-radio v-model="selectedLocale" val="pt" :label="$t('profile.lang_pt')" color="primary" class="text-text" keep-color @update:model-value="onLocaleChange" />
|
|
|
|
|
+ <q-radio v-model="selectedLocale" val="en" :label="$t('profile.lang_en')" color="primary" class="text-text" keep-color @update:model-value="onLocaleChange" />
|
|
|
|
|
+ <q-radio v-model="selectedLocale" val="es" :label="$t('profile.lang_es')" color="primary" class="text-text" keep-color @update:model-value="onLocaleChange" />
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
+ </div>
|
|
|
|
|
|
|
|
<div class="q-pa-xl q-mt-md">
|
|
<div class="q-pa-xl q-mt-md">
|
|
|
<q-btn
|
|
<q-btn
|
|
@@ -83,9 +90,10 @@
|
|
|
|
|
|
|
|
<script setup>
|
|
<script setup>
|
|
|
import { ref, onMounted } from 'vue';
|
|
import { ref, onMounted } from 'vue';
|
|
|
-import { useDialogPluginComponent } from 'quasar';
|
|
|
|
|
|
|
+import { useDialogPluginComponent, Cookies } from 'quasar';
|
|
|
import { updateUser } from 'src/api/user';
|
|
import { updateUser } from 'src/api/user';
|
|
|
import { useFormUpdateTracker } from 'src/composables/useFormUpdateTracker';
|
|
import { useFormUpdateTracker } from 'src/composables/useFormUpdateTracker';
|
|
|
|
|
+import { i18n } from 'src/boot/i18n';
|
|
|
|
|
|
|
|
const props = defineProps({
|
|
const props = defineProps({
|
|
|
userData: {
|
|
userData: {
|
|
@@ -101,6 +109,21 @@ const loading = ref(false);
|
|
|
const submitting = ref(false);
|
|
const submitting = ref(false);
|
|
|
const userId = ref(null);
|
|
const userId = ref(null);
|
|
|
|
|
|
|
|
|
|
+const normalizeLocale = (loc) => {
|
|
|
|
|
+ if (!loc) return 'pt'
|
|
|
|
|
+ const l = String(loc).toLowerCase()
|
|
|
|
|
+ if (l.startsWith('pt')) return 'pt'
|
|
|
|
|
+ if (l.startsWith('en')) return 'en'
|
|
|
|
|
+ if (l.startsWith('es')) return 'es'
|
|
|
|
|
+ return 'pt'
|
|
|
|
|
+}
|
|
|
|
|
+const selectedLocale = ref(normalizeLocale(i18n.global.locale.value ?? i18n.global.locale))
|
|
|
|
|
+
|
|
|
|
|
+const onLocaleChange = (val) => {
|
|
|
|
|
+ i18n.global.locale.value = val
|
|
|
|
|
+ Cookies.set('locale', val, { expires: 365, path: '/' })
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
const { form, hasUpdatedFields, setUpdateFormAsOriginal } = useFormUpdateTracker({
|
|
const { form, hasUpdatedFields, setUpdateFormAsOriginal } = useFormUpdateTracker({
|
|
|
name: '',
|
|
name: '',
|
|
|
email: '',
|
|
email: '',
|