Forráskód Böngészése

fix: :bug: fix(próximos-servicos) corrigindo traducao

foi corrigida a chave de uma das traducoes existentes dentro do bloco nextschedules

fase:dev | origin:bug-interno
Gustavo Zanatta 2 hete
szülő
commit
2bb9cb956f

+ 1 - 1
src/components/dashboard/DashboardNextSchedules.vue

@@ -108,7 +108,7 @@ const addressIcon = (type) => type === 'home' ? 'mdi-home-outline' : 'mdi-office
 const addressLabel = (type) => {
   if (type === 'home') return t('address.types.commercial.home');
   if (type === 'apartment') return t('dashboard_client.next_schedules.place_apartment');
-  if (type === 'commercial') return t('address.types.commercial');
+  if (type === 'commercial') return t('address.types.commercial.commercial');
   return t('dashboard_client.next_schedules.place_unknown');
 };
 

+ 4 - 0
src/i18n/locales/pt.json

@@ -440,6 +440,10 @@
     "phone": "Telefone",
     "placeholder_phone": "(11) 99999-9999",
     "update": "Atualizar",
+    "language": "Idioma",
+    "lang_pt": "Português",
+    "lang_en": "English",
+    "lang_es": "Español",
     "payments": {
       "title": "Pagamentos",
       "description": "Meus cartões",

+ 27 - 1
src/pages/profile/ProfileEditDialog.vue

@@ -57,6 +57,15 @@
                 :placeholder="$t('profile.placeholder_phone')"
               />
             </div>
+
+            <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" @update:model-value="onLocaleChange" />
+                <q-radio v-model="selectedLocale" val="en" :label="$t('profile.lang_en')" color="primary" @update:model-value="onLocaleChange" />
+                <q-radio v-model="selectedLocale" val="es" :label="$t('profile.lang_es')" color="primary" @update:model-value="onLocaleChange" />
+              </div>
+            </div>
           </div>
 
           <q-space/>
@@ -83,9 +92,10 @@
 
 <script setup>
 import { ref, onMounted } from 'vue';
-import { useDialogPluginComponent } from 'quasar';
+import { useDialogPluginComponent, Cookies } from 'quasar';
 import { updateUser } from 'src/api/user';
 import { useFormUpdateTracker } from 'src/composables/useFormUpdateTracker';
+import { i18n } from 'src/boot/i18n';
 
 const props = defineProps({
   userData: {
@@ -101,6 +111,22 @@ const loading = ref(false);
 const submitting = ref(false);
 const userId = ref(null);
 
+// Idioma — inicializa com o locale atual (normalizado para pt/en/es)
+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   // troca em tempo real (composition API mode)
+  Cookies.set('locale', val, { expires: 365, path: '/' })
+}
+
 const { form, hasUpdatedFields, setUpdateFormAsOriginal } = useFormUpdateTracker({
   name: '',
   email: '',