Vue应用多语言支持工程化最佳实践

这篇具有很好参考价值的文章主要介绍了Vue应用多语言支持工程化最佳实践。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

VoerkaI18n是一款非常优秀的全新的开源国际化多语言解决方案,主要特性包括:

  • 全面工程化解决方案,提供初始化、提取文本、自动翻译、编译等工具链支持。
  • 符合直觉,不需要手动定义文本Key映射。
  • 强大的插值变量格式化器机制,可以扩展出强大的多语言特性。
  • 支持babel插件自动导入t翻译函数。
  • 支持nodejs、浏览器(vue/react/solid)等、React Native等任意JS场景
  • 采用工具链与运行时分开设计,发布时只需要集成很小的运行时。
  • 高度可扩展的复数、货币、数字等常用的多语言处理机制。
  • 翻译过程内,提取文本可以自动进行同步,并保留已翻译的内容。
  • 可以动态在线添加支持的语言
  • 支持发布后的在线打语言包补丁,修复翻译错误
  • 支持调用在线自动翻译对提取文本进行翻译。
  • 核心运行时@voerkai18n/runtime超过90%的测试覆盖率
  • 支持·TypeScript·开发

本节主要介绍如何在Vue 3应用中使用VoerkaI18n

创建Vue 3应用一般采用ViteVue Cli来创建工程。在Vue3应用中引入voerkai18n来添加国际化应用需要由两个插件来简化应用。

  • @voerkai18n/vue

    Vue插件,在初始化Vue应用时引入,提供访问当前语言切换语言自动更新等功能。

  • @voerkai18n/vite

    Vite插件,在vite.config.js中配置,用来实现自动文本映射t函数的自动导入等功能。

@voerkai18n/vue@voerkai18n/vite两件插件相互配合,安装配置好这两个插件后,就可以在Vue文件使用多语言t函数。

第一步:基本流程

Vue应用启用VoerkaI18n国际化功能的完整工程化流程如下:

  • 调用voerkai18n init初始化多语言工程
  • 调用voerkai18n extract提取要翻译的文本
  • 调用voerkai18n translate进行自动翻译或人工翻译
  • 调用voerkai18n compile编译语言包
  • Vue应用中引入@voerkai18n/vue@voerkai18n/vite插件
  • 在源码中使用t函数进行翻译

完整的工程化流程请参见工程化,以下简要介绍如何在Vue应用中使用VoerkaI18n

第二步:启用@voerkai18n/vite插件

@voerkai18n/vite插件作用是:

  • 可以根据idMap.ts映射文件将源码中的t("xxxxx")转换为t("<数字>")的形式,从而实现消除翻译内容的冗余内容。
  • 实现自动导入t函数的功能,省却手动导入的麻烦。

@voerkai18n/vite插件的安装非常简单,只需要在vite.config.(ts|js)中添加如下内容:


import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import Inspect from 'vite-plugin-inspect'
import Voerkai18nPlugin from "@voerkai18n/vite"
 
export default defineConfig({
  plugins: [    
    Inspect(),                // 可选    
    Voerkai18nPlugin(),       // 新增加
    vue()
  ],
})

  • @voerkai18n/vite插件仅在开发和构建阶段作用。事实上,如果不在乎文本内容的冗余,不安装此插件也是可以工作正常的。
  • vite-plugin-inspect仅用于调试,可以在http://localhost:3000/__inspect/查看当前工程中的@voerkai18n/vite是否正确地进行自动导入和idMap.ts映射,供开发阶段进行调试使用。
  • @voerkai18n/vite插件的完整使用说明。

第三步:配置@voerkai18n/vue插件

@voerkai18n/vue插件用来自动注入t函数、切换语言等功能。

安装方法如下:

import { createApp } from 'vue'
import './style.css'
import App from './App.vue'
// 导入插件
import i18nPlugin from '@voerkai18n/vue'
// 导入当前作用域
import { i18nScope } from './languages'

// 等待i18nScope初始化完成
i18nScope.ready(()=>{
  const app = createApp(App)
  // 应用插件
  app.use<VoerkaI18nPluginOptions>(i18nPlugin as any,{
      i18nScope
  })
  app.mount('#app')
})


@voerkai18n/vue插件本质上是为每一个Vue组件自动混入t函数

第四步:使用t翻译函数

Vue应用使用多语言本质是调用import { t } from 'langauges导入的t函数来进行翻译。


<script setup>
// 手动导入t函数
// 如果启用了@voerkai18n/vite插件,则可以省略此行实现自动导入
import { t } from "./languages"
console.log(t("Welcome to VoerkaI18n"))

</script>


// 直接使用t函数,不需要导入
<script>
export default {
    data(){
        return {
            username:"",
            password:"",
            title:t("认证")
        }
    },
    methods:{
        login(){
            alert(t("登录"))
        }
    }
}
</script>
// 直接使用
<template>
	<div>
        <h1>{{ t("请输入用户名称") }}</h1>
        <div>
            <span>{{t("用户名:")}}</span><input type="text" :placeholder="t('邮件/手机号码/帐号')"/>
            <span>{{t("密码:")}}</span><input type="password" :placeholder="t('至少6位的密码')"/>            
    	</div>            
    </div>
        <button @click="login">{{t("登录")}}</button>
    </div>
</template>

重点:

  • <script setup>中手动导入import { t } from "./languages"
  • <script><template>中可以直接使用t函数进行翻译。
  • @voerkai18n/vue插件本质上是为每一个Vue组件自动混入t函数,并在在语言切换时会自动重新渲染

第五步:切换语言

引入@voerkai18n/vue插件来实现切换语言和自动重新渲染的功能。文章来源地址https://www.toymoban.com/news/detail-777965.html


<script setup lang="ts">
import { injectVoerkaI18n } from "@voerkai18n/vue"

// 提供一个i18n对象
const i18n = injectVoerkaI18n()
</script>

<script>
export default {
   //......
}
</script>  
<template>
  <img alt="Vue logo" src="./assets/logo.png" />
  <h1>{{ t("中华人民共和国")}} </h1>
  <h2>{{ t("迎接中华民族的伟大复兴")}} </h2>
  <h5>默认语言:{{ i18n.defaultLanguage }}</h5>
  <h5>当前语言:{{ i18n.activeLanguage }}</h5>
  <!-- 遍历支持的语言  -->
  <button v-for="lng of i18n.languages" 
    @click="i18n.activeLanguage = lng.name"  
    >{{ lng.title }}</button>
</template>

小结

  • @voerkai18n/vue插件为Vue单文件组件提供自动注入t函数,可以在<script><template>中直接使用,在<script setup>中需要手动从language中导入t函数。
  • Vue应用的中普通js/ts文件需要手动从language中导入t函数。
  • 使用injectVoerkaI18n()来实现遍历支持的语言和切换语言的功能。
  • 当切换语言时会自动重新渲染组件。
  • @voerkai18n/vue插件只能用在Vue 3
  • 完整的示例请见这里

到了这里,关于Vue应用多语言支持工程化最佳实践的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 前端工程化-VUE

    高效的开发离不开基础工程的搭建。本章主要介绍如何使用Vue进行实际SPA项目的开发,这里使用的是目前热门的JavaScript应用程序模块打包工具Webpack,进行模块化开发、代码编译和打包。 Vue脚手架指的是Vue-cli,它是一个专门为单页面应用快速搭建繁杂程序的脚手架,它可以轻

    2024年02月08日
    浏览(79)
  • VUE工程化--vue组件注册

    组件注册的两种方式: 1. 局部注册:只能在注册的组件内使用 2. 全局注册:所有组件内都能使用   局部注册步骤:         1、导入         2、注册组件--注册成html标签(components中)         3、页面中使用标签 实现效果:   全局注册步骤( main.js ):         1、导入

    2024年01月18日
    浏览(39)
  • vue项目工程化入门

    mac电脑 使用Vue-cli来完成 通过命令先进入到图形化界面,然后再进行vue工程的创建 图形化界面如下: 到此,vue项目创建结束 我们通过VS Code打开之前创建的vue文件夹,打开之后,呈现如下图所示页面: vue项目的标准目录结构以及目录对应的解释如下图所示: 其中我们平时开发

    2024年02月08日
    浏览(53)
  • Vue3工程化项目搭建

    源码:vue3-quick-start 预览:vue3-quick-start 工程化概述 前端工程化大致可以分为模块化、组件化、规范化和自动化。 规范化 项目目录结构 语法提示 编码风格规范 联调规范 文件命名规范 代码样式规范 git flow 模块化 模块化是指将一个文件拆分成多个相互依赖的文件,最后进行

    2024年02月16日
    浏览(50)
  • 前端工程化实战:React 模块化开发、性能优化和组件化实践

    前端工程化实战是指通过组织工作流程、使用工具和技术来提高前端开发效率和质量的一种方法。常见的前端工程化实践包括模块化开发、自动化构建、代码检查和测试、性能优化等。下面将简要介绍模块化开发、性能优化和组件化实践。 模块化开发 在 React 中实现模块化开

    2023年04月10日
    浏览(72)
  • Vue2基础五、工程化开发

    1、工程化开发和脚手架 (1)开发 Vue 的两种方式 核心包传统开发模式:基于 html / css / js 文件,直接引入核心包,开发 Vue。 工程化开发模式:基于构建工具(例如:webpack ) 的环境中开发 Vue。 **工程化开发模式优点:**提高编码效率,比如使用JS新语法、Less/Sass、Typescript等

    2024年02月15日
    浏览(52)
  • Vue生命周期;综合案例;工程化开发入门

    思考: 什么时候可以发送初始化渲染请求?(越早越好:最早可以早到什么时候?) 什么时候可以开始 操作dom ?(至少dom得渲染出来) Vue生命周期 :一个Vue实例从***创建***到***销毁***的整个过程 new Vue( ) ①创建(生命就开始了)→②挂载→③更新→④销毁(比如网页被关

    2024年01月23日
    浏览(48)
  • vue2 生命周期,工程化开发入门

    1.生命周期 生命周期介绍 生命周期的四个阶段 生命周期钩子 声明周期案例 2.工程化开发入门 工程化开发和脚手架 项目运行流程 组件化 组件注册 思考:什么时候可以发送初始化渲染请求?(越早越好)什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期:就是一

    2024年02月11日
    浏览(62)
  • 17-工程化开发 & 脚手架 Vue CLI

    1.核心包传统开发模式: 基于 html/css /js 文件,直接引入核心包,开发 Vue。 2. 工程化开发模式: 基于构建工具 (例如: webpack)的环境中开发 Vue。    问题:         1. webpack 配置不简单         2. 雷同的基础配置         3. 缺乏统一标准 需要一个工具,生成标准化的配置 基本介

    2024年02月11日
    浏览(66)
  • Vite + Vue3 实现前端项目工程化

    Vue3 发布至今,周边的生态、技术方案已足够成熟,个人认为新项目是时候切换到 Vite + Vue3 了。今天就给大家操作一下这种技术方案实现前端工程化。 数字化管理平台 Vue3+Vite+VueRouter+Pinia+Axios+ElementPlus Vue权限系统案例 个人博客 通过官方脚手架初始化项目 第一种方式,这是使

    2024年02月03日
    浏览(74)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包