motto13
@motto13
Вечно молодой

Почему laravel-vue-i18n не переводит строки после обновления страницы?

Laravel 11, Vue 3, Inertia
app.js
.....
createInertiaApp({
    title: (title) => `${title} - ${appName}`,
    resolve: (name) => resolvePageComponent(`./Pages/${name}.vue`, import.meta.glob('./Pages/**/*.vue')),
    setup({el, App, props, plugin}) {
        return createApp({render: () => h(App, props)})
            .use(plugin)
            .use(ZiggyVue, Ziggy)
            .use(i18nVue, {
                resolve: async lang => {
                    const langs = import.meta.glob('../../lang/*.json');
                    return await langs[`../../lang/php_${lang}.json`]();
                }
            })
.....

item.vue
<script setup>
...
const form = useForm({
     type_shop: 'Desktop',
...
})
 const type_shop_data = ref ([
     { value: 'Desktop', title:  wTrans('shop.desktop')  },
     { value: 'Laptop', title:  wTrans('shop.laptop')  },
     { value: 'Other', title:  wTrans('shop.other')  }
 ]);
....
</script>
<template>
....
<Autocomplete
   v-model="form.type_shop"
   :is-async="false"
  :items="type_shop_data"
/>
....
</template>

Autocomplete.vue
<script setup>
const props = defineProps({
    items: {
        type: Array,
        required: false,
        default: () => [],
    },
    modelValue: [String,Object],
....
onMounted(() => {
    if (props.items.length > 0){
        isAsync.value = false
        if (props.modelValue){
            let foundObject = props.items.find(function(item) {
                return item.value === props.modelValue;
            });
         //   console.log('foundObject:', foundObject);
             if (foundObject) {
                setResult(foundObject)
            }
        }
    }else{
        if (props.selected){
            setResult(props.selected)
        }
    }
})
.....
function setResult(result) {
   console.log('result.value:', result.value )
    console.log('result.title', result.title )
    search.value = (result.title) ? result.title : '';
    isOpen.value = false;
    if (props.returnItem === "data") {
        emit('update:modelValue', result)
    }else{
        emit('update:modelValue', result.value)
    }
}
.....

Когда я переходжу по ссылкам (Link/Inertia), то все работает нормально переводы обрабатываются:
в консоли
result.value: Desktop Autocomplete.vue:217:13
result.title Настольный ПК
но когда обновляю страницу (например Ctrl+F5) то переводы слетают в этом компоненте (остальное на странице переводит)
в консоли
result.value: Desktop Autocomplete.vue:217:13
result.title shop.desktop
Как исправить?
  • Вопрос задан
  • 65 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы