Nuxt3 + i18n国际化,多语言切换服务器渲染详细配置,包你成功。

废话不多说直接开整!!!

i18n国际化nuxt3配置:vue-i18n.intlify.dev/guide/integ... Nuxt I18n (@nuxtjs/i18n): i18n.nuxtjs.org/docs/gettin...

这是我得package.json 仅供参考

js 复制代码
{
  "name": "nuxt-app",
  "private": true,
  "type": "module",
  "scripts": {
    "dev": "nuxt dev --dotenv .env.development",
    "dev:development": "nuxi dev --dotenv .env.development",
    "dev:production": "nuxi dev --dotenv .env.production",
    "build": "nuxt build --dotenv .env.production",
    "generate": "nuxt generate",
    "preview": "nuxt preview",
    "postinstall": "nuxt prepare"
  },
  "dependencies": {
    "@nuxt/image": "^1.7.0",
    "@nuxtjs/i18n": "^8.3.1",
    "@pinia-plugin-persistedstate/nuxt": "^1.2.0",
    "@pinia/nuxt": "^0.5.1",
    "element-plus": "^2.7.4",
    "nuxt": "^3.11.2",
    "pinia": "^2.1.7",
    "vue": "^3.4.27",
    "vue-router": "^4.3.2"
  },
  "devDependencies": {
    "@element-plus/nuxt": "^1.0.9",  
    "sass": "^1.77.4",
    "vue-i18n": "^9.13.1"
  }
}

安装 `

java 复制代码
npm install vue-i18n -D

npx nuxi@latest module add i18n // 往nuxt.config.ts中添加 i18n,也可以手动添加
创建自定义语言目录及设置方式
js 复制代码
不用关心其他的配置,只要关心i18n的配置即可,都写出来是方便新手找位置
export default defineNuxtConfig({
	devtools: { enabled: true },
	ssr: true,
	css: ['~/assets/css/global.scss', '~/assets/css/layout.scss', '~/assets/css/mixin.scss'],
	modules: ['@nuxtjs/i18n', '@pinia/nuxt', '@pinia-plugin-persistedstate/nuxt','@element-plus/nuxt', '@nuxt/image'], // 这里的@nuxtjs/i18n 一定要添加进来哦,要不然就没有自动动导入了
	experimental: {
		clientFallback: true,
	},
	plugins: ['~/plugins/http.ts', '~/plugins/api.ts', '~/plugins/burialPoint.ts'],
	i18n: {
		langDir: './locales/', // 设置的语言目录
		defaultLocale: 'en', // 默认选择英文
		locales: [ // 设置对应的语言文件列表
			{ code: 'zh', iso: 'CN', file: 'zh.json' },
			{ code: 'ko', iso: 'KR', file: 'ko.json' },
			{ code: 'en', iso: 'GB', file: 'en.json' },
			{ code: 'ja', iso: 'JP', file: 'ja.json' },
		],		
		strategy: 'prefix_except_default',// 策略 默认就行
		// detectBrowserLanguage: false,// 浏览器是否检测,不检测直接使用配置设置为false
		detectBrowserLanguage: { // 配置后会读取浏览器策略,根据当当前所在国家自动选择语言
			// 检测浏览器默认语言设置,强制跳转策略,有利于不同国家的seo优化
			useCookie: true, // cookie持久化
			cookieKey: 'i81n_redirected', //cookie的名字
			alwaysRedirect: false, // 没有找到是否重定向
			redirectOn: 'root', // recommended
		},
	},
	runtimeConfig: {
		// public对象中的属性,服务端和客户端都能获取到
		public: {
			apiUrl: process.env.NUXT_API_URL,
		},
	},
	imports: {
		dirs: [
			// 扫描顶级模块
			'composables',		
			'stores'	
		],
	},
	sourcemap: {
		server: true,
		client: true,
	},
});
剩下就是使用方式了,贼简单
js 复制代码
<template>
// 我这是element-plus ui
<el-select
        v-model="locale"
        placeholder="Select"
        size="small"
        @change="setLocale" // 设置语言的方法,这是 i18n内置的方法
        style="width: 120px">
        <el-option  // availableLocales 对应的是多语言的key值,他是个数组: [zh,ja,ko,en]
                v-for="(locale, index) in availableLocales"
                :key="index"
                :label="t(`headers.settings.${locale}`)" // 这里是用模版的找到对应的字段参考locales文件中的相关字段
                :value="locale" />
</el-select>

// 对应的模版渲染,请参考locales文件中的相关字段 $t是I18n提供的全局渲染模版的方法,{ name: '变量' } 可以传变量
<label for="locale-select">{{ $t('language') }}: </label>
<h1>{{ $t('title') }}</h1>
<h1>{{ $t('keywords') }}</h1>
<h1>{{ $t('description', { name: '变量' }) }}</h1>


<NuxtLinkLocale to="/about"> // 这里是跳转的路由不要用其他的哦
        <el-button type="primary">跳转到 about</el-button>
</NuxtLinkLocale>		
<NuxtLink :to="localePath('/about')">nuxtLink 跳转about</NuxtLink>// 使用NuxtLink 跳转方式
<SwitchLocalePathLink locale="en">Dutch</SwitchLocalePathLink> // 跳转直接切换成另一种语言
<NuxtLink :to="switchLocalePath('en')">Dutch</NuxtLink>
</template>

<script setup lang="ts">
const { setLocale, t, locale, availableLocales } = useI18n();
// 页面跳转的时候切记使用@nuxtjs/i18n提供的跳转方式,这样多语言切换才会被ssr渲染。浏览器会多一个语言路径
const localePath = useLocalePath()
const switchLocalePath  = useSwitchLocalePath()

</script>

简单plus 全是干货,vue3版spa面渲染的也类似这个,如果有人需要请留言,我在出一个vue SPA渲染的。到这基本就结束了,再见。

相关推荐
崔庆才丨静觅4 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60614 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了4 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅4 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅5 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅5 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment5 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅6 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊6 小时前
jwt介绍
前端
爱敲代码的小鱼6 小时前
AJAX(异步交互的技术来实现从服务端中获取数据):
前端·javascript·ajax