当前位置: 首页 > news >正文

i18next在vue3中的应用,可参考写法或直接复用

i18next是一个国际化相关的的依赖,适配多种框,比如vue2/3,react,next.js等等,是一个非常实用的依赖。在一次项目中接触过i18n相关内容,因此今天就整理一下这个通用的插件。

官网:Introduction | i18next documentation

i18next使用步骤:

1.安装依赖:npm install -S vue3-i18next

2.编辑配置文件

//我放在了public下,public/locales.js
import i18next from "i18next";
import { createI18n } from "vue3-i18next";

const locales = {
    en: {
        message: {
            hello: 'Hello!',
            loadbundle: 'Load bundle language: {{lang}}',
        },
    },
    zh: {
        message: {//命名空间,相当于一个模块
            hello: '你好!',
            loadbundle: '当前语言: {{lang}}',
        },
        message2:{
            hello: '不好!',
            loadbundle: '当前语言: {{lang}}',
        }
    },
};
const options = {
    initImmediate: true,//是否异初始化
    lng: "zh",//默认语言
    fallbackLng: "zh",//回退语言,当前语言找不到对应翻译使用的语言
    saveMissing: true,//当翻译键缺失时,是否将缺失的翻译发送到服务器(适用于服务端管理语言包)。
    resources: {//设置更多语言
        en: {
            translation: locales.en,
        },
        zh: {
            translation: locales.zh,
        },
    },
};
i18next.init(options);
export const i18n = createI18n(i18next);

3.在main.js/main.ts中引入

import { createApp } from "vue";
import App from "./App.vue";
import {i18n} from "/public/locales"//引入第二步中暴露的内容

const app = createApp(App);
app.use(i18n);//使用配置的内容
app.mount("#app");

4.在组件中使用

<template>
  <div id="app">
    <p>{{ $t('message2.hello') }}</p>//两个设置的可切换语言的内容,命名空间+key
    <p>{{ loadbundle() }}</p>//因为loadbundle中有变量,所以使用方法传入变量

    <label for="language-select">选择语言:</label>//模拟切换语言
    <select id="language-select" v-model="lang" @change="changeLanguage(map[lang])">
      <option value="中文">中文</option>
      <option value="English">English</option>
    </select>
  </div>
</template>

<script lang="ts" setup>
import { useI18next } from "vue3-i18next";
import { ref, watch } from "vue";
const i18n = useI18next();
let lang=ref('中文');
const map={//提供页面展示和语言配置之间的映射关系
  '中文':"zh",
  'English':"en"
}
const loadbundle = () => i18n.t('message.loadbundle', {lang: `${lang.value}`});//i18n.t 是 i18next 提供的翻译方法 t,用来获取翻译字符串。

const changeLanguage = (val) => {
  i18n.changeLanguage(val); // 当select改变后切换语言
};

</script>

上述就是一个完整的使用过程,本文以vue3作为案例,在其他框架中使用方法也类似。

相关文章:

  • Web数据挖掘及其在电子商务中的研究与应用
  • 如何跨越RAG中的语义鸿沟,实现高效精准的信息检索?
  • Vue Diff算法原理深度解析:如何高效更新虚拟DOM
  • 【QT】QT中的信号与槽
  • LabVIEW液压控制系统开发要点
  • 异步加载+内存分析
  • linux内核`fixmap`和`memblock`有什么不同?
  • P2Rank网页端:预测蛋白结合口袋+vina分子对接
  • 力扣经典算法篇-6-轮转数组
  • C++ short类型的输入如何转换十进制
  • Kafka简要介绍与快速入门示例
  • java对接oracle存储过程基本知识(附Demo)
  • 设计模式 行为型设计模式
  • 记录关于Unitask的一些基础使用
  • Time spent invoking a CUDA kernel
  • 【Linux】系统文件的权限管理
  • open3d教程 (二)点云的读写
  • 常用天然地震链接
  • 【JAVA】十、基础知识“类和对象”干货分享~(一)
  • 香港理工视觉语言模型赋能智能制造最新综述!基于视觉语言模型的人机协作在智能制造中的应用
  • 为配合铁路建设,上海地铁3号线将在这两个周末局部缩时运营
  • 1309家县医院已达到三级医院能力,还有哪些短板要补?
  • 这群“工博士”,把论文“写”在车间里
  • 国家统计局督察组:江苏有关地区仍存在干预数据上报等问题
  • 关税战导致中国商品冲击周边市场?“对美出口减少并未导致对东盟出口激增”
  • 上海电视节发布海报、宣传片:三十而励,光影新程