vue3中使用i18n实现中英文切换,引入封装+全局切换

目录

1.安装

2.引入

3.页面中使用

4.切换语言


前言

名称由来:全称是 internationalization,插件名取了首字母 i 和尾字母 n,中间一共有 18 个字母,所以组合起来就叫 i18n。

作用:通过手动配置多种语言的翻译,且可快速切换。

正文开始↓

1.安装

npm install vue-i18n@9

这里是vue3使用,若使用vue2可 vue-i18n@8

2.引入

新建一个文件i18n.js,可以与main.js同级,引入i18n

import { createI18n } from 'vue-i18n';
import en from './lang/lang-en.js';
import zh from './lang/lang-zh_CN.js';

const i18n = createI18n({
  locale: navigator.language.slice(0, 2) || 'en', // 默认语言,可以根据浏览器语言自动设置
  fallbackLocale: 'en', // 如果当前选择的语言没有对应的翻译,则回退到这个语言
  messages: {
    en: en,
    zh: zh,
  },
});

export default i18n;

上述中的,./lang/lang-en.js./lang/lang-zh_CN.js便是我们配置中英文切换的文件,示例:

export default{
    LP:{
		username:' User name ',
		password:' Password ',
		verificationcode:' Verification code ',
		rememberPwd:' Remember passwords ',
		login:' Log in '
    }
}
export default{
    LP:{
		username:'用户名',
		password:'密码',
		verificationcode:'验证码',
		rememberPwd:'记住密码',
		login:'登录'
    }
}

main.js中注册挂载

import i18n from './i18n.js'

app.use(i18n).mount('#app')

3.页面中使用

html

$t 是一个全局方法,传递一个参数,这个参数通常是需要翻译的文本的键名

<el-form-item prop="username">
    <el-input class="user" :placeholder="$t('LP.username')" type="text" autocomplete="off" />
</el-form-item>
<el-form-item prop="password">
    <el-input class="password" :placeholder="$t('LP.password')" type="password" autocomplete="off" />
</el-form-item>

js

此处使用global,是为了全局切换语言时可以实时变化

import i18n from '../i18n.js'

ElMessage.success(i18n.global.t('LP.loginSuccessfully'))

4.切换语言

import i18n from '../i18n.js'

//可在任意页面使用自定义函数进行切换
i18n.global.locale = 'zh';
//或
i18n.global.locale = 'en';

### Vue3 中通过 i18n 使用 JSON 文件实现国际化配置 #### 安装 `vue-i18n` 和初始化项目 为了在 Vue3 项目中启用国际化功能,需先安装最新版本的 `vue-i18n@next`。可以通过 npm 或 yarn 进行安装: ```bash npm install vue-i18n@next --save ``` 或者 ```bash yarn add vue-i18n@next ``` 完成安装后,在项目的入口文件(通常是 `main.js` 或 `app.js`)中引入并初始化 `vue-i18n` 的实例[^1]。 --- #### 创建多语言 JSON 文件 通常会为每种语言单独创建一个 JSON 文件来存储对应的翻译内容。例如,可以分别创建如下两个文件用于英文和中文的支持: **en.json** ```json { "welcome": "Welcome to our website", "greeting": "Hello {{name}}" } ``` **zh-Hans.json** ```json { "welcome": "欢迎来到我们的网站", "greeting": "你好 {{name}}" } ``` 这些 JSON 文件应存放在统一目录下,比如 `src/assets/lang/` 下面[^2]。 --- #### 配置 i18n 实例 接下来需要定义 `createI18n` 方法,并将其注册到 Vue 应用程序中。以下是完整的配置示例: ```javascript // src/i18n/index.js import { createI18n } from &#39;vue-i18n&#39;; import en from &#39;./assets/lang/en.json&#39;; // 引入英语资源 import zhHans from &#39;./assets/lang/zh-Hans.json&#39;; // 引入简体中文资源 const i18n = createI18n({ legacy: false, // 声明使用组合式 API (Composition API) globalInjection: true, // 启用全局注入 $t() 函数 locale: navigator.language || &#39;en&#39;, // 默认语言设置 fallbackLocale: &#39;en&#39;, // 当未找到对应语言时使用的回退语言 messages: { en, &#39;zh-hans&#39;: zhHans } }); export default i18n; ``` 上述代码片段展示了如何加载不同语言包以及指定默认语言和回退语言。 --- #### 注册 i18nVue 应用 最后一步是在主应用文件中导入并挂载该 i18n 实例: ```javascript // main.js import { createApp } from &#39;vue&#39;; import App from &#39;./App.vue&#39;; import i18n from &#39;./i18n&#39;; const app = createApp(App); app.use(i18n); // 将 i18n 添加到 Vue 实例中 app.mount(&#39;#app&#39;); ``` 这样便完成了整个国际化的基础配置过程[^3]。 --- #### 动态切换语言 如果希望提供动态切换语言的功能,则可以在组件内部调用 `$i18n.locale` 属性更改当前语言环境: ```javascript this.$i18n.locale = newLanguageCode; // 如 &#39;en&#39; 或 &#39;zh-hans&#39; ``` 也可以封装成方法供其他地方调用。 --- #### 使用插件提升效率 推荐搭配 **i18n-Ally** 插件一起工作,它能够帮助开发者更方便地管理和维护多语言文件中的词条数据。具体来说,它可以自动检测缺失项、重复项等问题;还能集成在线翻译服务加速本地化流程。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值