ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

vue-i18n 快速上手:从零开始为 Vue 2 应用接入国际化(Getting Started 完整指南)

2026/10/7 16:11:49 拓冰建站 浏览量
vue-i18n 快速上手:从零开始为 Vue 2 应用接入国际化(Getting Started 完整指南) 前端国际化【免费下载链接】vue-i18n:globe_with_meridians: Internationalization plugin for Vue.js项目地址https://gitcode.com/gh_mirrors/vu/vue-i18n点击查看免费下载导读本文是 vue-i18n 官方《开始使用》Getting Started / Iniciando指南的完整中文讲解面向第一次接触 vue-i18n 的开发者只需一个 HTML 文件或一个vue-i18n的 NPM 包就能在几分钟内为 Vue 2 应用引入多语言翻译能力。读完本文你将掌握 vue-i18n 的完整初始化流程消息字典定义 →VueI18n实例创建 →Vue实例挂载、模板中$t的用法以及这套流程在仓库源码层面的底层实现原理可以直接照着动手跑通第一个多语言应用。准备工作先安装 vue-i18nvue-i18n 是 Vue.js 的官方国际化插件要求 Vue 2.0.0 及以上版本兼容性说明见 安装文档。安装方式有三种任选其一方式一CDN 直接引入最简单适合快速体验在 HTML 中先引入 Vue再引入 vue-i18n 的 UMD 构建vue-i18n.js。由于 vue-i18n 支持自动安装引入后无需手动调用Vue.use()script srchttps://unpkg.com/vue/dist/vue.js/script script srchttps://unpkg.com/vue-i18n8/scripthttps://unpkg.com/vue-i18n8会始终指向 NPM 上的最新 v8 版本如需固定版本可以写成https://unpkg.com/vue-i18n8.17.5/dist/vue-i18n.js这样的 URL。方式二NPM 安装npm install vue-i18n8方式三Yarn 安装yarn add vue-i18n8使用模块系统例如通过 vue-cli 构建的项目时必须在入口文件中显式注册插件import Vue from vue import VueI18n from vue-i18n Vue.use(VueI18n)注意只有使用全局script标签引入时才不需要手动Vue.use()使用模块系统则必须显式调用否则插件不会生效。使用 Vue CLI 3.x 的项目还可以通过vue add i18n一条命令完成插件脚手架安装。第一步编写 HTML 模板在页面中放置一个挂载点#app在模板里用$t(message.hello)输出翻译后的文案。$t是 vue-i18n 注入到 Vue 实例上的翻译方法message.hello是消息字典中的键路径keypathdiv idapp p{{ $t(message.hello) }}/p /div这里message.hello是一个点分路径它对应消息字典中message对象下的hello属性。vue-i18n 内部正是通过路径解析器src/path.js按点号逐级查找的。第二步定义本地化消息字典接下来准备一份包含多个语言的消息字典locale messages。字典是一个以语言代码为键的嵌套对象语言代码下再按业务结构组织翻译文本。官方示例同时提供了英语en和葡萄牙语pt两份翻译// Mensagens traduzidas de suas localidades const messages { en: { message: { hello: Hello World } }, pt: { message: { hello: Olá Mundo } } }消息字典的结构非常自由既可以是这样简单的两级嵌套也可以按业务模块组织成多级对象甚至可以用数组配合$tc实现复数翻译。在 test/unit/basic.test.js 中可以看到i18n.t(message.hello)的返回结果与messages.en.message.hello严格相等验证了这套路径查找逻辑的正确性。第三步创建 VueI18n 实例用刚才的字典创建国际化实例并通过locale选项指定当前语言// Crie uma instância do VueI18n com opções const i18n new VueI18n({ locale: pt, // Defina uma localidade messages, // Defina as mensagens })这里locale: pt表示应用当前使用葡萄牙语。从 src/index.js 的构造函数实现可以看到locale的默认值是en-USmessages的默认值是空对象{}而fallbackLocale回退语言的默认值同样是en-US——也就是说即使你不显式配置插件也会自动为你准备一套语言与回退机制。构造函数中的关键初始化逻辑深入看源码会发现VueI18n实例内部通过_initVM()src/index.js创建了一个隐藏的内部 Vue 实例来承载locale、fallbackLocale、messages、dateTimeFormats、numberFormats这几份响应式数据。这意味着语言切换是响应式的locale数据变化会驱动所有订阅了翻译的组件重新渲染消息字典可以动态更新messages也是响应式数据运行期可以通过setLocaleMessage/mergeLocaleMessage等方法增改翻译。这是 vue-i18n 能在运行时实时切换语言的根基也是热更新hot reload类功能得以实现的前提。第四步挂载到 Vue 应用把i18n实例通过i18n选项传入根 Vue 实例然后挂载到#app// Crie uma instância Vue com a opção i18n new Vue({ i18n }).$mount(#app) // Pronto agora o aplicativo foi iniciado!至此应用已经成功启动页面渲染结果如下div idapp pOlá Mundo/p /div因为locale被设置为pt所以$t(message.hello)取到的是葡萄牙语翻译Olá Mundo。小提示官方示例输出中写的是div id#app这是文档里的笔误实际挂载点就是div idapp上述渲染结果已按正确写法给出。底层原理Vue.use(VueI18n) 到底做了什么上面几步看似简单背后是install插件机制在起作用。阅读 src/install.js 可以看到Vue.use(VueI18n)触发install后主要完成了四件事版本校验检查 Vue 主版本号低于 2 时输出警告vue-i18n need to use Vue 2.0 or later原型注入src/extend.js在Vue.prototype上定义$i18n属性并注入$t、$tc、$te、$d、$n等全局方法其中$t的签名是(key, ...values)最终调用内部_t(key, locale, messages, vm, ...values)完成翻译全局混入src/mixin.js通过Vue.mixin注入beforeCreate/beforeMount/beforeDestroy钩子。beforeCreate中会读取组件选项里的i18n如果传入的是VueI18n实例则直接使用如果是普通配置对象则为该组件新建一个VueI18n实例如果组件自身没有配置则向上继承根实例的$i18n——这就是所有子组件无需手动传参即可直接使用$t的原因注册指令与组件注册v-t指令以及i18n插值组件、数字/日期格式化组件让国际化能力覆盖模板指令和组件化场景。从 src/index.js 还能看到一个贴心的设计在浏览器环境中如果window.Vue已存在但插件尚未手动安装VueI18n构造函数会自动调用install(window.Vue)完成安装——这正是 CDN 方式引入即用、无需Vue.use()的原因。在真实项目里跑通这个示例仓库中已经提供了一个完整可运行的最小示例 examples/started/index.html它的结构与官方文档完全一致script src../../node_modules/vue/dist/vue.min.js/script script src../../dist/vue-i18n.min.js/script ... script var messages { en: { message: { hello: hello world } }, ja: { message: { hello: こんにちは、世界 } } } Vue.use(VueI18n) var i18n new VueI18n({ locale: ja, messages: messages }) new Vue({ i18n: i18n }).$mount(#app) /script该示例使用的是仓库本地构建产物node_modules/vue与dist/vue-i18n.min.js并显式调用了Vue.use(VueI18n)。在项目根目录执行npm install与npm run build生成dist产物后直接用浏览器打开这个 HTML 即可看到日文翻译こんにちは、世界渲染在页面上。注意示例中同时展示了显式Vue.use()的写法这在浏览器全局脚本场景下是安全的重复安装会被install.installed标记拦截见 src/install.js。试试切换语言掌握了基本流程后最自然的下一步就是动态切换语言。由于locale是响应式数据直接赋值即可触发全应用重新翻译// 切换到英语 i18n.locale en // 或通过组件实例访问 this.$i18n.locale en切换后模板中的$t(message.hello)会自动渲染为Hello World。这也是 vue-i18n 的核心体验业务代码只写键路径语言切换完全与视图解耦。更进阶的能力复数$tc、日期$d、数字$n、回退语言fallbackLocale、消息合并等都建立在本文这套初始化流程之上可继续参考 vuepress 指南目录 下的对应章节深入学习。小结本文带你走完了 vue-i18n 从安装到渲染出多语言页面的完整流程引入插件 → 定义 messages 字典 →new VueI18n({ locale, messages })→new Vue({ i18n })挂载。同时结合仓库源码解释了Vue.use的安装机制、$t的原型注入、mixin 的实例共享逻辑以及内部响应式数据模型。现在你已经可以动手为下一个 Vue 2 项目接入国际化并把语言切换做成真实可用的功能了。赞分享前端国际化【免费下载链接】vue-i18n:globe_with_meridians: Internationalization plugin for Vue.js项目地址https://gitcode.com/gh_mirrors/vu/vue-i18n点击查看免费下载相关推荐vue-i18n 快速上手为 Vue 2 应用接入国际化的完整实战指南vue i18n 快速上手为 Vue 2 应用接入国际化的完整实战指南 本文是 vue i18nVue.js 官方国际化插件的快速入门指南基于仓库 gi前端国际化如何高效使用Copy as Markdown3大实战技巧提升内容生产力如何高效使用Copy as Markdown3大实战技巧提升内容生产力 作为一名技术爱好者和开发者你是否经常在整理文档、撰写博客或分享资源时需要手动将网页开发工具前端vue-i18n 快速入门在 Vue.js 项目中启用国际化i18n完整指南vue i18n 快速入门在 Vue.js 项目中启用国际化i18n完整指南 本文基于 vue i18nVue.js 官方国际化的插件当前仓库版本 8前端国际化上一篇深夜刷网页眼睛太累这款开源护眼神器让你告别视觉疲劳下一篇Windows风扇控制的终极解决方案FanControl让你的电脑静如图书馆创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考