Skip to content

Latest commit

 

History

History
119 lines (80 loc) · 5.26 KB

README_zh-CN.md

File metadata and controls

119 lines (80 loc) · 5.26 KB

logo

English | 简体中文

适用于 JavaScript 的轻量、简单、灵活、自动翻译的国际化工具

npm-version npm-download

github-stars last-commit github-issues codecov

demo

目录

愿景
特性
Live Demo
原理
帮助文档
License

愿景

为了让接入国际化成为轻松且愉快的事😄💪🏻

特性

  • 轻量bundlesize
  • 简单:学习成本低,易上手
  • 灵活:支持 变量插值 、以及独特的类型标记和格式化回调(数字、货币、日期、时间、复数)
  • 自动翻译:一个命令即可自动提取文案并翻译生成语言包
    • 支持增量翻译模式:只翻译新增文案,智能移除未使用文案
    • 支持多翻译平台:谷歌X、OpenAI、谷歌、微软、腾讯、阿里云、有道、百度(除谷歌X外,其他平台需自行注册账号)
    • 支持多种翻译日志:多种类型翻译日志的输出,便于追踪与定位翻译问题
  • keyless:无需手动定义key, 翻译文案 即key

Live Demo

原理

翻译文案 作为key是该库所有功能实现的关键,如果对此有任何疑问,请查看

该库主要由两部分构成

  • 命令行工具
  • 函数API

命令行工具:根据指定规则(正则匹配)解析出需要翻译的文案,并通过翻译平台将文案翻译到指定目标语言,最后生成语言包文件

解析文案的 匹配规则 简易示例如下

/** 普通字符串 */

t('hello world')
t("hello world")
t(`hello world`)


/** 支持变量插值 */

t('hello {0}', '开发者朋友们'),
t('这是{0},欢迎{1},如果你觉得{2},请给予{3}支持', ' `i18n-pro` ', '使用', `对你有帮助`, ' ⭐️ ')


/** 插值变量类型标记,需配合对应的格式化回调 */

// 数字类型
t('用户数达到了{n0}', 100000000)

// 货币类型
t('售价为{c0}', 14999)

// 日期类型
t(`今天的日期是{d0}`, new Date())

// 时间类型
t('当前时间:{t0}', new Date())

// 复数类型
t('我有{p0个苹果},{p1个香蕉}和{p2个梨}', 5, 4, 3) 

函数API:将国际化语言包接入到项目中,由 initI18ntsetI18nwithI18n 构成

  • initI18n:用于初始化固定配置,最后返回包含如下 3 个 API 的对象
  • t:用于包裹 翻译文案 实现国际化,也作为命令行匹配 翻译文案 规则的标识
  • setI18n:设置语言、语言包
  • withI18n:适用于服务端,每个接口响应需要做国际化的处理

所以 命令行工具函数API 这两者搭配使用效果更佳,也正是由于这样的结构设计,使得 i18n-pro 库可以很方便集成到任何的 JavaScript 项目中

帮助文档

License

MIT

Copyright (c) 2022-present Eyelly Wu