Vue3 中使用 i18n

article/2025/6/6 1:40:08

Vue3 中使用i18n

在 Vue 3 中使用国际化(i18n)可以通过官方的 vue-i18n 库来实现。vue-i18n 是专门为 Vue 应用设计的国际化解决方案,支持多语言切换、动态内容插值等功能。

以下是如何在 Vue 3 中使用 vue-i18n 的详细步骤:


1. 安装 vue-i18n

使用 npm 或 yarn 安装 vue-i18n

npm install vue-i18n

或者:

yarn add vue-i18n

2. 创建语言文件

在项目中创建一个文件夹(例如 locales),用于存储不同语言的翻译内容。

示例语言文件:

locales/en.json(英文):

{"welcome": "Welcome, {{name}}!","language": "English"
}

locales/zh.json(中文):

{"welcome": "欢迎,{{name}}!","language": "中文"
}

3. 初始化 vue-i18n

在 Vue 3 中,vue-i18n 需要通过 createI18n 方法初始化。

示例代码:

main.js

import { createApp } from 'vue';
import { createI18n } from 'vue-i18n';
import App from './App.vue';// 导入语言文件
import en from './locales/en.json';
import zh from './locales/zh.json';// 创建 i18n 实例
const i18n = createI18n({locale: 'en', // 设置默认语言fallbackLocale: 'en', // 设置回退语言messages: {en, // 英文语言包zh  // 中文语言包}
});// 创建 Vue 应用并挂载 i18n
const app = createApp(App);
app.use(i18n);
app.mount('#app');

4. 在组件中使用 vue-i18n

在 Vue 组件中,可以通过 $t 方法访问翻译内容。

示例代码:

App.vue

<template><div><h1>{{ $t('welcome', { name: 'John' }) }}</h1><p>{{ $t('language') }}</p><button @click="changeLanguage('zh')">切换到中文</button><button @click="changeLanguage('en')">Switch to English</button></div>
</template><script>
export default {methods: {changeLanguage(lang) {this.$i18n.locale = lang; // 动态切换语言}}
};
</script>
运行结果:
  • 默认显示英文:Welcome, John!
  • 点击按钮后切换到中文:欢迎,John!

5. 使用 Composition API

如果你使用 Vue 3 的 Composition API,可以通过 useI18n Hook 来访问 vue-i18n 的功能。

示例代码:

App.vue

<template><div><h1>{{ t('welcome', { name: 'John' }) }}</h1><p>{{ t('language') }}</p><button @click="changeLanguage('zh')">切换到中文</button><button @click="changeLanguage('en')">Switch to English</button></div>
</template><script>
import { useI18n } from 'vue-i18n';export default {setup() {const { t, locale } = useI18n(); // 使用 useI18n Hookconst changeLanguage = (lang) => {locale.value = lang; // 动态切换语言};return {t,changeLanguage};}
};
</script>

6. 处理日期和数字的本地化

vue-i18n 支持日期和数字的本地化处理,可以通过 datetimeFormatsnumberFormats 配置。

示例代码:

main.js

const i18n = createI18n({locale: 'en',fallbackLocale: 'en',messages: { en, zh },datetimeFormats: {en: {short: {year: 'numeric', month: 'short', day: 'numeric'}},zh: {short: {year: 'numeric', month: 'long', day: 'numeric'}}},numberFormats: {en: {currency: {style: 'currency', currency: 'USD'}},zh: {currency: {style: 'currency', currency: 'CNY'}}}
});
在组件中使用:
<template><div><p>{{ $d(new Date(), 'short') }}</p><p>{{ $n(123456.78, 'currency') }}</p></div>
</template>

7. 动态加载语言文件

如果你的项目支持多种语言,可能不希望一次性加载所有语言文件。可以使用动态加载的方式来优化性能。

示例代码:

动态加载语言文件

const loadLanguageAsync = async (lang) => {const messages = await import(`./locales/${lang}.json`);i18n.global.setLocaleMessage(lang, messages.default);i18n.global.locale = lang;
};

在组件中调用:

methods: {async changeLanguage(lang) {await loadLanguageAsync(lang);}
}

8. vue-i18n 的最佳实践

  1. 使用占位符
    • 在翻译内容中使用占位符(如 {{name}}),以便动态插入内容。
  2. 避免硬编码
    • 所有用户可见的文本都应该存储在语言文件中,避免直接写在代码中。
  3. 支持动态加载
    • 对于大型项目,动态加载语言文件可以减少初始加载时间。
  4. 测试多语言支持
    • 在不同语言环境下测试应用,确保翻译内容正确且布局不会因文本长度变化而破坏。
  5. 处理日期和货币
    • 使用 datetimeFormatsnumberFormats 配置处理日期和货币的本地化。

总结

在 Vue 3 中使用 vue-i18n 是实现国际化的最佳选择。通过语言文件、动态切换和本地化处理,开发者可以轻松地为应用添加多语言支持,从而提升用户体验并扩大用户群体。无论是使用 Options API 还是 Composition API,vue-i18n 都能很好地适配 Vue 3 的开发模式。


http://www.hkcw.cn/article/DspYoCFHXf.shtml

相关文章

Unity-UI组件详解

今天我们来学习Unity的UI的详解&#xff0c;这部分的内容相对较少&#xff0c;对于程序员来说主要的工作是负责将各种格式的图片呈现在显示器上并允许操作这些图片。 本篇帖子的理论依据依然是官方开源的UGUI代码&#xff0c;网址为&#xff1a;GitHub - Unity-Technologies/u…

化工厂爆炸事件看制造业AI转型

一、事件警示&#xff1a;化工制造安全风险不容忽视 近日&#xff0c;某化学有限公司发生事故。涉事工厂主体工程建设有2座硝化装置区&#xff0c;1座加氢装置区&#xff0c;均属于危险工艺生产装置。硝化反应通常属于强放热反应&#xff0c;原料及产物具有爆炸危险性&#xf…

Ubuntu系统安装与配置NTP时间同步服务

Ubuntu系统安装与配置NTP时间同步服务 一、NTP服务介绍NTP服务简介工作原理系统环境准备检查当前时间状态二、方案选择:systemd-timesyncd vs ntpd三、使用systemd-timesyncd时间同步1. 方案介绍2. 配置优化3. 应用配置4. 验证状态5. 检查当前时间状态6. 查看当前实践四、使用…

【小红书】API接口,获取笔记核心数据

小红书笔记核心数据API接口详解 - 深圳小于科技提供专业数据服务 深圳小于科技&#xff08;官网&#xff1a;https://www.szlessthan.com&#xff09;推出的小红书笔记核心数据API接口&#xff0c;为开发者提供精准的笔记互动数据分析能力&#xff0c;助力内容运营与商业决策。…

ElasticStack技术之logstash介绍

一、什么是Logstash Logstash 是 Elastic Stack&#xff08;ELK Stack&#xff09;中的一个开源数据处理管道工具&#xff0c;主要用于收集、解析、过滤和传输数据。它支持多种输入源&#xff0c;如文件、网络、数据库等&#xff0c;能够灵活地对数据进行处理&#xff0c;比如…

InternLM2/LM2.5/ViT/VL1.5/VL2.0笔记: 核心点解析

00 前言 本文主要是记录一下关于多模态大模型InternLM/InternVL系列的一些要点的理解。还是那句话&#xff0c;好记性&#xff0c;不如烂笔头。本文当成个人笔记用&#xff0c;行文风格和先前写的LLaVA系列一致。本文的重点是讲解多模态模型InternVL 1.5&#xff0c;但是Intern…

帝可得 - 设备管理

一. 需求说明 设备管理主要涉及到三个功能模块&#xff0c;业务流程如下&#xff1a; 新增设备类型: 允许管理员定义新的售货机型号&#xff0c;包括其规格和容量。 新增设备: 在新的设备类型定义后&#xff0c;系统应允许添加新的售货机实例&#xff0c;并将它们分配到特定的…

建设指南 | Cloud Apps + AI Apps端到端智能应用开发平台

在“云AI”作为基础设施的时代&#xff0c;研发、运维、信息化等部门&#xff0c;通常会面临的棘手问题都有哪些&#xff1a; 算力资源难以统一调度和管理&#xff1b;AI算法研发环境搭建复杂&#xff1b;不同模型部署方式繁杂&#xff0c;统一监控难&#xff1b;AI应用开发效…

【灵动Mini-F5265-OB】vscode+gcc工程创建、下载、调试

【前言】 【灵动Mini-F5265-OB】在官方的例程中提供了mdk、IAR的开发环境&#xff0c;使用起来非常方便。有位大佬也提供了一个gcc的示例&#xff0c;但是我使用vscode的keil插件进行工程创建&#xff0c;但是提示pack是对不上的。所以我决定重新创建我的vscode来创建开发环境。…

【AI论文】VF-Eval:评估多模态大型语言模型(MLLM)在生成人工智能生成内容(AIGC)视频反馈方面的能力

摘要&#xff1a;多模态大型语言模型&#xff08;MLLMs&#xff09;最近在视频问答领域得到了广泛研究。然而&#xff0c;现有的大多数评估都侧重于自然视频&#xff0c;而忽视了合成视频&#xff0c;例如人工智能生成的内容&#xff08;AIGC&#xff09;。与此同时&#xff0c…

Docker 镜像(或 Docker 容器)中查找文件命令

在 Docker 镜像&#xff08;或 Docker 容器&#xff09;中运行如下两个命令时&#xff1a; cd / find . -name generate.py它们的含义如下&#xff0c;我们来一行一行详细拆解&#xff0c;并结合例子讲解&#xff1a; ✅ 第一行&#xff1a;cd / ✅ 含义 cd 是“change dire…

DiskGenius专业版v6.0.1.1645:分区管理、数据恢复、备份还原,一应俱全!

各位小伙伴&#xff0c;大家好&#xff01;今天阿灿给大家带来一款超好用的分区工具&#xff0c;DiskGenius专业版。这款工具堪称电脑管理界的“瑞士军刀”&#xff0c;功能强大&#xff0c;现在出了新版本v6.0.1.1645&#xff0c;简繁中文单文件便携版&#xff0c;使用超方便。…

‌CDGP|数据治理的低效性:企业AI落地的另一大挑战

在数字化转型的浪潮中&#xff0c;人工智能&#xff08;AI&#xff09;已成为推动企业创新发展的重要力量。然而&#xff0c;尽管AI技术具有巨大的潜力和优势&#xff0c;但许多企业在尝试落地AI项目时却面临着重重挑战。其中&#xff0c;数据治理的低效性尤为突出&#xff0c;…

linux学习第19、20天(父子进程)

ps ajx -->查看pid&#xff0c;ppid&#xff0c;gid&#xff0c;sid 父子进程 父子进程相同&#xff1a; 刚fork后&#xff0c;data段、text段、堆&#xff0c;栈、环境变量、全局变量、进程工作目录位置、信号处理方式 父子进程不同&#xff1a; 进程id、返回值、各自的…

AI写作革命:重塑创作未来

人工智能写作技术&#xff1a;革新创作方式的智能利器 人工智能写作技术&#xff08;AI写作技术&#xff09;是指利用自然语言处理&#xff08;NLP&#xff09;、机器学习&#xff08;ML&#xff09;等人工智能技术&#xff0c;辅助或自动化完成文本的创作、编辑与优化。这一技…

法律大语言模型(Legal LLM)技术架构

目录 摘要 1 法律AI大模型技术架构 1.1 核心架构分层 1.2 法律知识增强机制 2 关键技术突破与对比 2.1 法律专用组件创新 2.2 性能对比(合同审查场景) 3 开发部署实战指南 3.1 环境搭建流程 3.2 合同审查代码示例 4 行业应用与挑战 4.1 典型场景效能提升 4.2 关…

深入理解 C# Razor Pages:构建现代 Web 应用的利器

在现代 Web 开发中&#xff0c;选择合适的框架至关重要。ASP.NET Core 提供了多种开发模式&#xff0c;其中 Razor Pages 因其简单性、高效性和易用性&#xff0c;成为构建页面导向 Web 应用的首选方案。相比于传统的 MVC&#xff08;Model-View-Controller&#xff09;模式&am…

AgenticSeek 本地部署教程(Windows 系统)

#工作记录 Fosowl/agenticSeek&#xff1a;完全本地的 Manus AI。 部署排错参考资料在文末 或查找往期笔记。 AgenticSeek 本地部署教程&#xff08;Windows 系统&#xff09; 一、环境准备 1. 安装必备工具 Docker Desktop 下载地址&#xff1a;Docker Desktop 官网 安装后启…

后台管理系统八股

项⽬地址&#xff1a;https://github.com/Xiaodie-888/Frontend.git 前端 https://github.com/Xiaodie-888/backend.git 后端 技术栈&#xff1a;Vue3ViteTyprscriptPiniaElement-plusVue-RouterExpress.jsMySQL 核⼼⼯作与技术&#xff1a; 基础组件封装&#xff1a;基于 Ele…

014校园管理系统技术解析:构建智慧校园管理平台

校园管理系统技术解析&#xff1a;构建智慧校园管理平台 在教育信息化快速发展的当下&#xff0c;校园管理系统成为提升学校管理效率、优化校园服务的重要工具。该系统集成院校管理、投票管理等多个核心模块&#xff0c;面向管理员、用户和院内管理员三种角色&#xff0c;通过…