前端国际化之痛点(二):多包多库场景下联动多语言

news2024/11/16 15:29:58

前言

VoerkaI18n是一款非常优秀的前端国际化解决方案,其开发的出发点是为了解决现存多语言的一些痛点,接下来几篇文章将分别进行分析。

  • 前端国际化之痛点(一):让人头疼的词条Key
  • 前端国际化之痛点(二):多包多库场景下联动多语言
  • 前端国际化之痛点(三):上线后修改翻译内容

现有方案痛点

对于大型项目,一般会将项目拆分为多个库或monorepo包结构,一个工程可能包含1-N个子项目或库。如何进行国际化?

针对这样的场景,理想的多语言方案应该是这样:

  • 当主应用切换语言时,所有引用依赖库也会跟随主程序进行语言切换
  • 所有的每个子包或库均独立进行开发,并且引入其独立的多语言配置,不需要类似模块联邦一样进行复杂的配置。

随着monorepo的流行,针对此场景的多语言需求越来越迫切,但是比较遗憾的是,现有的多语言方案均未能提供比较便利的方案。

解决痛点

voerkai18n 支持多个库国际化的联动和协作,即当主程序切换语言时,所有引用依赖库也会跟随主程序进行语言切换,整个切换过程对所有库开发都是透明的。 库开发者不需要特殊配置,只需要像普通应用一样进行开发即可。

其基本原理是这样的:

image.png

当我们在开发一个应用或者库并import "./languages"时,在langauges/index.js进行了如下处理:

  • 创建一个i18nScope作用域实例

  • 检测当前应用环境下是否具有全局单例VoerkaI18n

    • 如果存在VoerkaI18n全局单例,则会将当前i18nScope实例注册到VoerkaI18n.scopes
    • 如果不存在VoerkaI18n全局单例,则使用当前i18nScope实例的参数来创建一个VoerkaI18n全局单例。
  • 在每个应用与库中均可以使用import { t } from ".langauges导入本工程的t翻译函数,该t翻译函数被绑定当前i18nScope作用域实例,因此翻译时就只会使用到本工程的文本。这样就割离了不同工程和库之间的翻译。

  • 由于所有引用的i18nScope均注册到了全局单例VoerkaI18n,当切换语言时,VoerkaI18n会刷新切换所有注册的i18nScope,这样就实现了各个i18nScope即独立,又可以联动语言切换。

小结

VoerkaI18n为多包多库场景下的多语言开发提供了比较完美的解决方案。有理由认为,未来所有的多语言方案均应该是这样的,赶紧上马 VoerkaI18n。

[VoerkaI18n多包多库场景下的多语言原理说明和使用介绍](https://zhangfisher.github.io/voerka-i18n/#/zh/guide/advanced/multi-libs)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1369008.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaScript数组sort()对负数排序的陷阱

前言 想着好久没去力扣刷题了,刚好手上的需求也差不多了,就去看了看。看到一个难度级别为困难的题,看到这个题想着直接使用JS现成的方法,先concat再sort。再取中间值不就实现了吗。是不是你们也这么想,哈哈哈。 就是…

人逢三六九,运势低迷路难走

很多人都希望自己各方面的运势都能够朝着好的方向旺盛发展,我们的运势将会如何发展跟我们的出生时间是离不开关系的。我们的祖先为了后人着想,不犯他们犯过的错误,少走一些弯路,总结了多年来的生活经验,创造出了一句句…

Unity3d 实现直播功能(无需sdk接入)

Unity3d 实现直播功能 需要插件 :VideoCapture 插件地址(免费的就行) 原理:客户端通过 VideoCapture 插件实现推流nodejs视频流转服务进行转发,播放器实现rtmp拉流 废话不多说,直接上 CaptureSource我选择的是屏幕录制,也可以是其他源 CaptureType选择LIVE–直播形式 LiveSt…

【面试高频算法解析】算法练习2 回溯(Backtracking)

前言 本专栏旨在通过分类学习算法,使您能够牢固掌握不同算法的理论要点。通过策略性地练习精选的经典题目,帮助您深度理解每种算法,避免出现刷了很多算法题,还是一知半解的状态 专栏导航 二分查找回溯(Backtracking&…

苹果QQ群聊天记录怎么删除?收藏好这两个技巧!

无论我们使用什么手机,我们都可以在QQ上与好友进行交流和社交。然而,有时候我们可能需要删除一些不需要的聊天记录,特别是群聊记录,以此来扩大手机内存。那么,苹果手机的qq群聊天记录怎么删除呢?小编将为大…

电子学会C/C++编程等级考试2023年12月(一级)真题解析

C/C++编程(1~8级)全部真题・点这里 第1题:数的输入和输出 输入一个整数和双精度浮点数,先将浮点数保留2位小数输出,然后输出整数。 时间限制:1000 内存限制:65536 输入 一行两个数,分别为整数N(不超过整型范围),双精度浮点数F,以一个空格分开。 输出 一行两个数,分…

使用 C# 和 WinForms 创建动态图表

使用 C# 和 WinForms 创建动态图表 这次我们将学习如何使用 C# 和 WinForms 创建动态图表。我们将使用 Chart 控件来创建图表,并使用多线程技术实现动态更新图表数据的效果。 方法一:在项目启动时实例化图表 在 DoWork 方法中,我们使用 Ra…

宝塔上的琉璃灯(for循环试炼)

8层宝塔上共有765盏琉璃灯,每层灯数都是上层的一倍,编程输出每层灯数。 (笔记模板由python脚本于2024年01月09日 16:41:22创建,本篇笔记适合熟悉循环编程的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网:https://www.python…

【教程】代码混淆详解

目录 引言 正文 什么是代码混淆 ProGuard混淆文件参数详解 代码混淆的方法 Ipa Guard工具的使用方法 IPA重签名与安装测试 总结 本文将对代码混淆进行详细解释,并介绍ProGuard代码混淆器以及Ipa Guard工具的使用方法。首先,我们将了解代码混淆的概…

ORPC-824,对标可替代ACPL-824/PC824等

提供隔离反馈 逻辑电路之间的接口 电平转换 DC和AC输入 SMPS中的调节反馈电路 消除接地环路 特征 电流传输比 ( CTR : 最低 20% 在 IF 1mA, VCE 5V ) 宽工作温度范围 -55~110C 高输入输出隔离电压 ( Viso 5&am…

【算法设计与分析】网络流

目录 max-flow 和 min-cut流网络 Flow network最小割 Min-cut最大流 Max-flow Greedy algorithmFord–Fulkerson algorithm剩余网络 Residual networkFord–Fulkerson algorithm算法流程 最大流最小割理论 max-flow min-cut theorem容量扩展算法 capacity-scaling algorithm时间…

leetcode 每日一题 2024年01月09日 字符串中的额外字符

题目 字符串中的额外字符 给你一个下标从 0 开始的字符串 s 和一个单词字典 dictionary 。你需要将 s 分割成若干个 互不重叠 的子字符串,每个子字符串都在 dictionary 中出现过。s 中可能会有一些 额外的字符 不在任何子字符串中。 请你采取最优策略分割 s &…

解决命令行无法启动scrapy爬虫

前言 最近在准备毕设项目,想使用scrapy架构来进行爬虫,找了一个之前写过的样例,没想到在用普通的启动命令时报错。报错如下 无法将“scrapy”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径…

【AI】AI和点云(1/2)

目录 一、什么是点云 二、点云的应用领域 三、点云的创建 四、点云感知 一、什么是点云 在三维技术领域中,点云被定义为一种数据结构,用于表示三维空间中一组离散的点。这些点通常由它们的坐标(x,y,z)…

全视通以“物联数据中台+边缘信息化”,建设“三位一体”智慧医院

随着医疗信息化的不断深入,智慧医院已经成为医疗行业的发展方向。智慧医院是指利用信息技术和物联网技术,实现医疗服务、医疗管理和医疗保障的高效协同,提高医疗质量和安全,降低医疗成本,满足患者和医务人员的需求&…

Java_Swing程序设计

swing组件允许编程人员在跨平台时指定统一的外观和风格。 Swing组件通常被称为轻量级组件, JFrame在程序中的语法格式: JFrame jfnew JFrame(title); Container containerjf.getContentPane(); jf:JFrame类的对象 container:Container类的对象。 J…

Flutter - Android 安卓 消息推送FireBase notification 手机状态栏图标不显示或 白板、白底问题。

一、问题: 使用flutterfirebase 开发进行消息推送时,安卓真机推送消息 状态栏的图标显示白色方块。 二、原因: 从Android 5.0(Lollipop)开始,随着Material Design的引入,Android的设计语言和U…

单因素方差分析--R

任务说明 三个剂量水平的药物处理受试者,每个剂量水平十个受试者,现在收集到数据后,问: 药物剂量水平显著影响受试者的response? 或者不同剂量药物处理受试者有显著效果的差异吗? 数据 library(tidyvers…

c JPEG编码,但有错误

#include <stdio.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdlib.h> #include <unistd.h> #include <sys/ioctl.h> #include <linux/videodev2.h> //v4l2 头文件 #include <strin…

3. SPSS数据文件的基本加工和处理

如何获取SPSS自带的案例数据文件&#xff1f; 首先找到SPSS的安装目录&#xff0c;然后找到Samples文件夹 可以看到有不同语言版本&#xff0c;选择简体中文 就能看到很多.sav文件 数据文件的整理 个案排序 单值排序 例&#xff1a;对于下面的数据集&#xff0c;将工资按…