插件介绍

介绍:Vuei18n 是 Vue.js 的国际化插件。它可以轻松地将一些本地化功能集成到你的 Vue.js 应用程序中。

安装:npm install vue-i18n 或者 yarn add vue-i18n

项目使用

在项目目录下面创建一个文件夹(随便叫啥名都行),这个文件夹主要用于处理i18n模块,做两件事情。

第一件事情是需要根据vue-i18n模块来导出一个i18n的实例对象,以供项目中能够直接使用。

第二件事情是需要提供具体的多语言支持文件,比如支持中文、中文繁体和英文,那么就需要提供特定字段的三种语言版本,以供按实际语言来进行显示。下面给出文件目录结构。

//index.ts文件中的代码示例:
//引入模块
import { createI18n } from 'vue-i18n';
//引入语言包(模块)
import zh from './zh';
import en from './en';
import tw from './tw'; //获取当前环境的语言
let language = navigator.language;
console.log('日志:language = ', language); //如果当前环境语言非'zh-TW', 'en-US', 'zh-CN' 则默认选择中文
if (!['zh-TW', 'en-US', 'zh-CN'].includes(language)) {
language = 'zh-CN';
} console.log('日志:多语言处理,当前语言环境为 = ', language);
// 创建i18n实例对象
const i18n = createI18n({
locale: language, // 设置语言
messages: { // 设置语言包
'zh-CN': zh,
'en-US': en,
'zh-TW': tw
}
}); export default i18n;

语言包其实就是就是需要多语言处理的字典,比如 我们有一个按钮,在不同的语言环境中需要分别被处理为:close、关闭、關閉,只需要在不同的语言包中写好对应的字典并在模块中返回,下面给出简单的对应关系。

//tw.ts文件内容
const tw = {
message: {
close: '關閉',
search: '搜索',
noFiles: '暫無文件'
}
}; export default tw; //zh.ts文件内容
const zh = {
message: {
close: '关闭',
search: '搜索',
noFiles: '暂无文件'
}
}; export default zh; //en.ts文件内容
const en = {
message: {
close: 'Close',
search: 'Search',
noFiles: 'No files'
}
}; export default en;

使用场景

项目中大概有两种场景,一种是在DOM节点中,一种是在JS的代码中。

如果是DOM节点中使用,那么可以直接通过$t('message.xxx')的方式来使用。

<!-- 01 节点的内容 -->
<div class="text">{{ $t('message.noFiles') }}</div> <!-- 02 节点的属性 -->
<InsertPanel :action="action === 'save' ? $t('message.save') : $t('message.insert')"/>

如果是在JS中使用,那么可以通过之前在src/i18n/index.ts中导出的实例对象来获取。

// 先导入模块
import i18n from '../i18n'; // 获取字段
let close = i18n.global.t('message.close');

参数处理

在处理字典的时候,可能有的字典中存在一些变量,比如我在Vue的节点中需要显示的内容为:当前选择20项,在进行多语言处理前,大概写法如下:

<div> 当前选择 {{  count }} 项 </div>

如果我们在语言包(以zh为例)中对应的字段为: selectCout,那么可以写成下面格式

//zh.ts 文件语言包代码示例
const zh = {
message: {
itemSelected: '当前选择{count}项'
}
};
export default zh; //使用页面的代码示例,其中count为全局可以访问的变量
<div> {{ $t('message.itemSelected',count:selectCount)}} </div>

前端开发系列055-基础篇之Vue项目实现多语言支持的更多相关文章

  1. 从0到1用react+antd+redux搭建一个开箱即用的企业级管理后台系列(基础篇)

    背景 ​ 最近因为要做一个新的管理后台项目,新公司大部分是用vue写的,技术栈这块也是想切到react上面来,所以,这次从0到1重新搭建一个react项目架子,需要考虑的东西的很多,包括目录结构.代码 ...

  2. 前端开发:css基础知识之盒模型以及浮动布局。

    前端开发:css基础知识之盒模型以及浮动布局 前言 楼主的蛮多朋友最近都在学习html5,他们都会问到同一个问题 浮动是什么东西?  为什么这个浮动没有效果?  这个问题楼主已经回答了n遍.今天则是把 ...

  3. ESP8266开发之旅 基础篇① 走进ESP8266的世界

    授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...

  4. ESP8266开发之旅 基础篇② 如何安装ESP8266的Arduino开发环境

    授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...

  5. ESP8266开发之旅 基础篇③ ESP8266与Arduino的开发说明

    授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...

  6. 1.基础篇之vue入门

    为了建立高效团队,很多公司会采用全栈工程师,虽然利弊兼有,对于成本优先的创业团队,肯定是首选,特别是对.net生态圈,大部分都是小公司,就更加重要了.这里记录的是对vue的学习点滴,希望对你有所助力. ...

  7. openlayers5-webpack 入门开发系列一初探篇(附源码下载)

    前言 openlayers5-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载 ...

  8. leaflet-webpack 入门开发系列一初探篇(附源码下载)

    前言 leaflet-webpack 入门开发系列环境知识点了解: node 安装包下载webpack 打包管理工具需要依赖 node 环境,所以 node 安装包必须安装,上面链接是官网下载地址 w ...

  9. 【Windows10 IoT开发系列】配置篇

    原文:[Windows10 IoT开发系列]配置篇 Windows10 For IoT是Windows 10家族的一个新星,其针对不同平台拥有不同的版本.而其最重要的一个版本是运行在Raspberry ...

  10. ESP8266开发之旅 基础篇④ ESP8266与EEPROM

    授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...

随机推荐

  1. AnnotationAwareAspectJAutoProxyCreator后置处理器的BeanDefinition定义信息导入和其对象实例创建过程

    步骤1 我们从配置类上的@EnableAspectJAutoProxy 注解入手,进入发现这个注解上又有一个@Import(AspectJAutoProxyRegistrar.class)注解, 了解 ...

  2. 2025dsfz集训Day9:树状数组、LCA、RMQ

    Day8 I:树状数组 \[Designed\ By\ FrankWkd\ -\ Luogu@Lwj54joy,uid=845400 \] \[特别感谢 此次课的主讲.图源侵删 \] 后记:关于本文的 ...

  3. Python3_python2打包exe文件

    最近要把绿盟报告导出脚本打包成一个exe,原本是一个py2的文件Vulreport.py,我做了如下步骤. 1.py2topy3 Python3 2to3.py -w Vulreport.py 2.p ...

  4. 领域驱动的事实与谬误 一 DDD 与 MVC

    本文有以下几个目的: 让新手少交智商税,少浪费时间看一些软文. 普及一个基本概念:了解一项观点的提出年代和最初初衷,才能更好地掌握其精粹. 我想指出市场上一些误人子弟的软文. 首先说明:文中所说的谬误 ...

  5. jdk源码目录说明

  6. 漏洞预警 | Netis Wifi路由器信息泄露漏洞

    0x00 漏洞编号 CVE-2024-48455 0x01 危险等级 高危 0x02 漏洞概述 Netis Wi-Fi路由器以其稳定的性能.易用的管理界面以及较高的性价比受到许多用户的青睐. 0x03 ...

  7. SpringBoot 在IDEA中用MAVEN打包报错

    今天在打包的时候遇到一个报错,项目可以正常运行但是就是无法使用MAVEN 的insert和package进行打包 报错如下 [ERROR] Tests run: 1, Failures: 0, Err ...

  8. mcp~客户端与服务端的通讯技术

    mcp通讯协议 stdio sse streamable http JSON_RPC MCP 的传输层负责将 MCP 协议消息转换为 JSON-RPC 格式进行传输,并将接收到的 JSON-RPC 消 ...

  9. Pycomcad中的过滤机制及访问引用块内对象简述

    1.过滤机制 所谓过滤机制,就是选择集的规则,过滤器列表由成对的参数组成.第一个参数标识过滤器的类型(例如对象),第二个参数指定要过滤的值(例如圆).过滤器类型是指定使用哪种过滤器的 DXF 组码. ...

  10. Jenkins自动化部署-----持续交付

    前言: 感谢之前带领过我的leader,让我能够知道什么是好的开发方法. 在很早之前就接触过敏捷开发.什么是敏捷开发,简单来说就是让软件可靠地,快速地发布出来的一种开发方法和技巧. 而敏捷开发中有许多 ...