@nuxtjs/i18n@next
Nuxt3 Говорят, что это было предусмотрено 一个@nuxtjs/i18n@next
Официальный сайт nuxtjs/i18n . Официальная документация предоставляет методы внедрения и использования.
Персональный тест недействителен Я не знаю, я ли это, nuxt3 Причина версии 3.8, существоватьnuxt.config.ts
Средняя конфигурацияvueI18nподскажет Входное содержимое неверно, поскольку входные данные являются объектом, но для обнаружения требуется передать адрес. Сообщить об ошибке.
Измените адрес и передайте его. Он может работать, но не может соответствовать соответствующему тексту.
Как использовать i18n, предоставленный nuxt3 Это тоже бесполезно.
Это также первый случай, когда примеры на официальном сайте бесполезны. Так что отказался от nuxt/i18n
Если при использовании @nuxtjs/i18n@next проблем не возникает, дайте мне несколько советов.
пример vue-i18n на githubпример с Код в github можно прекрасно применить.
Установить@intlify/unplugin-vue-i18n
и vue-i18n
Две зависимости
npm i @intlify/unplugin-vue-i18n vue-i18n
nuxt.config.ts
import { resolve, dirname } from 'node:path'
import { fileURLToPath } from 'url'
import VueI18nVitePlugin from '@intlify/unplugin-vue-i18n/vite'
// https://nuxt.com/docs/api/configuration/nuxt-config
export default defineNuxtConfig({
build: {
transpile: [/vue-i18n/]
},
vite: {
resolve: {
alias: {
'vue-i18n': 'vue-i18n/dist/vue-i18n.runtime.esm-bundler.js'
}
},
plugins: [
VueI18nVitePlugin({
include: [
resolve(dirname(fileURLToPath(import.meta.url)), './locales/*.json')
]
})
]
}
})
После настройки существоватьpluginsСоздать в каталогеi18n.ts
документ。 Потому что i18n необходимо связать с vue в плагинах.
|- plugins
|-- i18n.ts
|- i18n
|-- zh.ts
|-- en.ts
zh.ts
en.ts
Настройка международного соответствующего контента
export default {
home: 'Дом',
}
i18n.ts
import { createI18n } from 'vue-i18n'
import en from '../i18n/en'
import zh from '../i18n/zh'
export default defineNuxtPlugin(({ vueApp }) => {
// Здесь по умолчанию установлено получение языковой конфигурации из файла cookie при запуске. Что касается того, почему файлы cookie , потому что следующий Причина загрузки сервера первого экрана
const language = useCookie('lang').value || 'en'
const i18n = createI18n({
fallbackLocale: 'zh',
locale: language,
messages: {
zh,
en
}
})
vueApp.use(i18n)
})
<template>
<div>
<select v-model="$i18n.locale" @change="handleChange">
<option value="zh">китайский</option>
<option value="en">English</option>
</select>
</div>
</template>
<script setup lang="ts">
import { useI18n } from 'vue-i18n'
const { locale } = useI18n()
const handleChange = () => {
const cookieLang = useCookie('lang')
cookieLang.value = locale.value
}
</script>
<style lang="scss" scoped></style>
<template>
<div>
<NuxtLink to="/home" active-class="active">
{{ $t('home') }}
</NuxtLink>
</div>
</template>