vue-i18n国际化多语言与多套UI组件库使用(Element Plus、Ant Design Vue、Naive UI)

这篇具有很好参考价值的文章主要介绍了vue-i18n国际化多语言与多套UI组件库使用(Element Plus、Ant Design Vue、Naive UI)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

技术栈:Vue3+TypeScript+Vite+SCSS+(Element Plus、Ant Design Vue、Naive UI)

demo源码:Vue3 UI Lang

因调研需要,需在同一个项目中集成好几种UI组件库的多语言实现,查看各种组件库的表现情况,以便选定组件库。

注意:这只在调研过程中会如此,实际开发项目中极少存在一个项目中集成多个UI组件库的情况。

本demo实际试验阿拉伯语、法语、葡萄牙语、英语、中文五种语言。

VUE3+TypeScript+vue-i18n的项目基架参考本博客 VUE3 +TypeScript + i18n多语言结合使用

Element Plus

安装

npm install element-plus --save

main.ts 引入

import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
// ...
app.use(ElementPlus)

utils/common 获取当前语言

export const getCurrLang = () => {
  const localLang: string = navigator.language.split('-')[0]; // 浏览器语言
  const storageLang: string | null = sessionStorage.getItem("language"); // 本地存储语言
  return storageLang || localLang || 'en';
}

lang/index 多语言源

import { createI18n } from 'vue-i18n'
import { getCurrLang } from "@/utils/common"

// elementPlus
import EleAr from 'element-plus/dist/locale/ar.mjs'
import EleFr from 'element-plus/dist/locale/fr.mjs'
import ElePt from 'element-plus/dist/locale/pt.mjs'
import EleEn from 'element-plus/dist/locale/en.mjs'
import EleZhCn from 'element-plus/dist/locale/zh-cn.mjs'

const messages = {
  ar: {
    ele: EleAr
  },
  fr: {
    ele: EleFr
  },
  pt: {
    ele: ElePt
  },
  en: {
    ele: EleEn
  },
  zh: {
    ele: EleZhCn
  },
}
const i18n = createI18n({
  globalInjection: true, // 全局注入
  locale: getCurrLang(), // 当前语言
  messages,
  legacy: false,
})

export default i18n

App.vue 全局配置国际化

<script setup lang="ts">
import { computed } from 'vue';
import { RouterView } from 'vue-router'
import { ElConfigProvider } from 'element-plus'

import i18n from './lang';
const locale = computed(() => (i18n.global.messages.value[i18n.global.locale.value]))
console.log(i18n.global.messages.value[i18n.global.locale.value]) // 语言包中的当前语言环境包配置
console.log(i18n.global.messages.value) // 语言包完整配置
console.log(i18n.global.locale.value) // 当前语言环境
</script>

<template>
  <el-config-provider :locale="locale.ele">
    <RouterView />
  </el-config-provider>
</template>
<style scoped></style>

由此,就可在页面中使用涉及到国际化的组件了,比如el-color-pickerel-date-pickerel-time-pickerel-imageel-tree-selectel-popconfirmel-emptyel-calendarel-tableel-paginationel-page-header等。

效果

中文:
vue-i18n国际化多语言与多套UI组件库使用(Element Plus、Ant Design Vue、Naive UI),i18n,VUE3,vue.js,ui,前端
阿拉伯语:
vue-i18n国际化多语言与多套UI组件库使用(Element Plus、Ant Design Vue、Naive UI),i18n,VUE3,vue.js,ui,前端

Ant Design Vue

安装

npm i ant-design-vue -S
npm i unplugin-vue-components unplugin-auto-import -D // 按需引入需要的插件

vite.config.js 配置

import { fileURLToPath, URL } from 'node:url'

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import Components from 'unplugin-vue-components/vite'
import { AntDesignVueResolver } from 'unplugin-vue-components/resolvers'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [
    vue(),
    Components({
      resolvers: [
        AntDesignVueResolver({
          importStyle: 'less', // 一定要开启这个配置项
        }),
      ],
    })
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url)),
      'vue-i18n': 'vue-i18n/dist/vue-i18n.cjs.js',
    }
  }
})

lang/index 多语言源

import { createI18n } from 'vue-i18n'
import { getCurrLang } from "@/utils/common"

// Ant Design Vue
import AntAr from 'ant-design-vue/es/locale/ar_EG.js'
import AntFr from 'ant-design-vue/es/locale/fr_FR.js'
import AntPt from 'ant-design-vue/es/locale/pt_PT.js'
import AntEn from 'ant-design-vue/es/locale/en_US.js'
import AntZh from 'ant-design-vue/es/locale/zh_CN.js'

const messages = {
  ar: {
    ant: AntAr,
  },
  fr: {
    ant: AntFr,
  },
  pt: {
    ant: AntPt,
  },
  en: {
    ant: AntEn,
  },
  zh: {
    ant: AntZh,
  },
}

const i18n = createI18n({
  globalInjection: true, // 全局注入
  locale: getCurrLang(),
  messages,
  legacy: false,
})

export default i18n

App.vue 全局配置国际化

<script setup lang="ts">
import { computed } from 'vue';
import { RouterView } from 'vue-router'

import i18n from './lang';
const locale = computed(() => (i18n.global.messages.value[i18n.global.locale.value]))
console.log(i18n.global.messages.value[i18n.global.locale.value])
console.log(i18n.global.messages.value)
console.log(i18n.global.locale.value)
</script>

<template>
   <a-config-provider :locale="locale.ant">
      <RouterView />
   </a-config-provider>
</template>
<style scoped></style>

效果

中文:
vue-i18n国际化多语言与多套UI组件库使用(Element Plus、Ant Design Vue、Naive UI),i18n,VUE3,vue.js,ui,前端

阿拉伯语:
vue-i18n国际化多语言与多套UI组件库使用(Element Plus、Ant Design Vue、Naive UI),i18n,VUE3,vue.js,ui,前端

Naive UI

安装

npm i -D naive-ui
npm i -D vfonts // 安装字体

lang/index 多语言源

import { createI18n } from 'vue-i18n'
import { getCurrLang } from "@/utils/common"

// native UI
import { arDZ, frFR, ptBR, zhCN, enUS, } from 'naive-ui'

const messages = {
  ar: {
    nai: arDZ,
  },
  fr: {
    nai: frFR,
  },
  pt: {
    nai: ptBR,
  },
  en: {
    nai: enUS,
  },
  zh: {
    nai: zhCN,
  },
}

const i18n = createI18n({
  globalInjection: true, //全局生效$t
  locale: getCurrLang(),
  messages,
  legacy: false,
})

export default i18n

App.vue 全局配置国际化

<script setup lang="ts">
import { computed } from 'vue';
import { RouterView } from 'vue-router'
import { NConfigProvider,NMessageProvider } from 'naive-ui'

import i18n from './lang';
const locale = computed(() => (i18n.global.messages.value[i18n.global.locale.value]))
console.log(i18n.global.messages.value[i18n.global.locale.value])
console.log(i18n.global.messages.value)
console.log(i18n.global.locale.value)
</script>

<template>
      <n-config-provider :locale="locale.nai">
        <n-message-provider>
          <RouterView />
        </n-message-provider>
      </n-config-provider>
</template>
<style scoped></style>

效果

中文:
vue-i18n国际化多语言与多套UI组件库使用(Element Plus、Ant Design Vue、Naive UI),i18n,VUE3,vue.js,ui,前端
阿拉伯语:
vue-i18n国际化多语言与多套UI组件库使用(Element Plus、Ant Design Vue、Naive UI),i18n,VUE3,vue.js,ui,前端

最后

此处只编写了部分代码,完整源码请查看文章开始部分git链接。
此处只针对多语言文本进行调研,部分语言会有左对齐、右对齐的差异,这里并不包含这部分内容。文章来源地址https://www.toymoban.com/news/detail-715701.html

到了这里,关于vue-i18n国际化多语言与多套UI组件库使用(Element Plus、Ant Design Vue、Naive UI)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • electron+vue3全家桶+vite项目搭建【六】集成vue-i18n 国际化

    已发现 9.2.2版本的vue-i18n 如果使用cnpm安装,打包会报错,使用npm或者pnpm安装依赖没有问题 如果需要多语言支持,那么最好在项目搭建之初我们就集成好国际化 vue i18n官网 demo项目地址 关于多窗口国际化不同步更新状态的问题解决方案 1.我们现在src下面创建locals目录,里面创

    2023年04月12日
    浏览(87)
  • Vue3中,国际化插件vue-i18n使用记录,配合VSCode自动化翻译插件i18n Ally

    说明文档: vue-i18n 版本说明: vue: 3.0.0+ vue-i18n: 9.x版 src 目录下新建目录 lang ,存放 i18n 的配置。 新建目录名称: lang (语言)、 locales (语系设定)、 i18n ,这些名称都可被VSCode图标插件( vscode-icons )检测到并美化。 lang 目录下,新建 index.js 文件,引入 vue-i18n 。 语言的配置信

    2024年02月12日
    浏览(42)
  • 用i18n 实现vue2+element UI的国际化多语言切换详细步骤及代码

    这个地方要注意自己的vue版本和i1n8的匹配程度,如果是vue2点几,记得安装i18n的@8版本,不然会自动安装的最新版本,后面会报错哦,查询了下资料,好像最新版本是适配的vue3。 在src下面新建i18n文件夹,然后在里面新建index.js,里面的内容如下 新建i18n文件夹里面新建config文

    2024年02月14日
    浏览(45)
  • 【国际化Intl】Flutter 国际化多语言实践

    提示:这里参考一下几个链接 例如: https://github.com/ThinkerWing/language https://juejin.cn/post/6844903823119482888 这篇也很详细,还有包括兼容中文的繁体简体… 可以看看 该分支对应的提交是使用Android Studio 和 Flutter Intl插件 并根据掘金这篇文章的实践,兼容汉字简体和繁体字 https://g

    2023年04月23日
    浏览(63)
  • Vue - i18n 国际化的使用

    参考网址: 使用: https://huaweicloud.csdn.net/638f133edacf622b8df8eb26.html?spm=1001.2101.3001.6650.1utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Eactivity-1-125181861-blog-123845480.235%5Ev38%5Epc_relevant_anti_t3_basedepth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Ea

    2024年02月11日
    浏览(60)
  • SpringBoot集成国际化多语言配置

    在当今全球化的环境下,为了更好地满足用户的多语言需求,越来越多的应用程序需要支持国际化多语言配置。Spring Boot作为一种快速开发框架,提供了方便的国际化支持,使得应用程序可以轻松地适应不同的语言环境。通过集成Spring Boot的国际化多语言配置,应用程序可以根

    2024年02月07日
    浏览(59)
  • Flutter之国际化(多语言处理)

    项目内最近加入国际化内容,那么我们需要转化对应语言内容,来展示UI App国际化开发主要包括: 文本国际化 Widget显示的国际化 某些文本在对应语言环境下应该显示为所选择语言内容; 目前我项目内使用的是: Flutter Intl 插件: 1.安装 Flutter Intl 插件 在Android studio内直接搜

    2024年02月14日
    浏览(51)
  • Android 实现资源国际化(多语言)

    目录 一、介绍 二、字符串资源 三、图片资源 四、日期和时间格式 五、其他 六、应用内切换语言 七、资源文件命名规则         Android国际化(多语言)是一种开发技术,旨在使Android应用程序能够在 「不同语言和文化环境」 下运行,并为用户提供本地化的体验。这是为了

    2024年02月04日
    浏览(50)
  • WPF本地化/国际化,多语言切换

    之前写过winformwinform使用本地化,中英文切换_winform 中英文切换_故里2130的博客-CSDN博客 基本的技术差不多,但是后来又发现了一个ResXManager工具,可以更好方便快捷的使用。 首先下载,网络不好的话,去官网下载,然后安装,重启vs即可 wpf做多语言切换 有很多种,可以使用

    2024年02月11日
    浏览(53)
  • 如何在Vue3中配置国际化语言i18n

    1. 安装 vue-i18n 2. 创建一个i8n的配置文件 如:i18nConfig.js 3. 新建语言文件 zh-CN.js 和 en-US.js zh-CN.js 文件 en-US.js 文件 CONFIG.js 文件 4. 在 main.js 里面全局配置 通过上面四步即可配置完毕 下面说一下如何使用,分三种情况 在 .vue 组件中的 template 使用 在 .vue 组件中的 script 中使用 在

    2024年02月09日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包