di18n —— 滴滴前端国际化方案
di18n 是滴滴开源的自动转换、基于配置的前端国际化方案。它能自动扫描代码中的主语言,将其替换成国际化标记;同时将语言抽取成配置,可以放到服务端保存及更新。
工作原理
di18n 会先按如下步骤扫描源码:
- 使用 Babel 解析得到 AST,遍历 AST,并对特殊的节点进行检查,抽取出需要翻译的字符串;
- 自动为每一个字符串分配一个 key 因随机 key 可读性差,已改成使用主语言(如中文)文案为 key;
- 自动调用 Google 翻译服务(可选),得到一个英文的字符串。
注:对于 React,上面提到的特殊节点包括:
JSXText
StringLiteral
TemplateLiteral
等。
扫描之后,对于源代码:
- 构造
CallExpression
表达式intl.t('key1')
; - 替换原有节点
path.replaceWith(newNode)
; - 将新的 AST 通过 Babel 转换为代码;
- 使用 Prettier 格式化代码;
- 将新的代码落盘。
对于国际化资源:
- 将 key-value 转换为 i18n 配置文件格式。
流程图
安装
$ npm i -D di18n-cli # or $ yarn add -D di18n-cli
初始化
React
$ npx di18n init
注意:TypeScript
需要将配置文件 di18n.config.js 的 prettier.parser
改为 "typescript"
。
Vue
$ npx di18n init --vue
转换
$ npx di18n sync

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
每日一博 | 前端文件上传的几种交互造轮子
背景 前端文件上传本来是一个常规交互操作,没什么特殊性可言,但是最近在做文件上传,需要实现截图粘贴上传,去找了下有没有什么好用的组件,网上提供的方法有,但是没找完整的组件来支持cv上传,经过了解发现可以用剪贴板功能让自己的cv实现文件上传,于是自己就整合了目前几种文件上传的交互方式,码了一个支持cv的vue3文件上传组件(造个轮子)。 介绍 作为一个完整的组件内容还是挺多的,这里主要介绍下上传交互中一些主要功能,包括上传的几种交互方式, 上传进度的获取,上传类型的限制,默认上传请求和自定义上传请求。 以下代码都是非完整代码,大家用于参考实现过程,可以通过以下代码修改来完成自己想要的交互功能。 几种交互 1,点击选择上传 点击选择是最常见的上传交互,之前原生上传控件,样式修改比较麻烦,为了修改上传样式,我们可以把该控件设置隐藏,用其他元素通过从click交互, 来触发该文件选择控件。在选择文件控件上绑定onchange事件,该控件在change后获取到文件,然后调用上传方法,实现如下: <div class="uploader-content" @click="handleClic...
- 下一篇
Linus Torvalds 动手改进 Linux 用户模式堆栈扩展
时至今日,Linus Torvalds 实际上已经很少会亲自动手写内核代码;更多的是忙于监督上游的内核开发社区、审查代码、管理发布,并在邮件列表中进行讨论。不过近日,他就为 Linux 6.5 进行了将近 500 行的 code rework ,以改进用户模式的堆栈扩展代码。 他在合并报告中解释称: 这修改了我们的用户模式堆栈扩展代码,使其在修改VM布局之前始终获取 mmap_lock 进行写入。 实际上这是我们在技术上应该做到的事情,但是因为我们并不严格地需要它,所以我们有点偷懒("机会主义"听起来好多了,不是吗?)。并且在我们需要的地方设置了这个 hack,会在不进行适当锁定的情况下就地扩展堆栈 vma。 而且效果很好。我们只需要改变 vm_start(或者,在 grow-up stacks 的情况下,vm_end),再加上一些使用 anon_vma 锁和 mm>page_table_lock 的特殊的临时锁,这一切都相当简单明了。 也就是说这一切都很好,直到 Ruihan Li 指出,现在 vma 布局使用 maple tree code,我们真的不只是改变 vm_star...
相关文章
文章评论
共有0条评论来说两句吧...