@thinke/i18n
TypeScript icon, indicating that this package has built-in type declarations

0.0.14 • Public • Published

i18n json to mjs

灵感来源 https://inlang.com/m/gerre34r/library-inlang-paraglideJs

将多语言的 json 文件转为 mjs,支持Tree-shaking减少代码体积

支持 ts 有完整的类型提示

npx tk-i18n

i18n.config.jsonc

{
  // 支持的语言
  "language": ["zh", "en"],
  // 默认 or 兜底 语言
  "defaultLanguage": "zh",
  // 多语言 文件夹
  "inputDir": "messages",
  // 输出文件夹
  "outputDir": "./src/i18n"
}

支持的格式 jsonc json5 json

支持的语法

  1. 基础类型、变量
{
  "name": "Thin Ke",
  "hello": "hello {user} !",
  "num": 123,
  "bool0": false,
  "bool1": true,
  "nil": null
}
  1. 数组、对象
{
  "arr": [1, 2, 3],
  "arr_str": ["T", "h", "i", "n"],
  "obj": {
    "txt": "hello",
    "var": "hello {user} .",
    "num": 123,
    "arr_str": ["T", "h", "i", "n"]
  }
}
  1. 自引用
{
  "name": "Thin Ke",
  "hello": "hello {@name} !" // => hello Thin Ke !
}
  1. 变量处理
// 支持链式、函数式; 支持任意全局函数或对应类型的方法
{
  // 1 链式调用
  "hello": "hello {name|..toUpperCase()} !",
  // 2 函数方式
  "fn": "max age is {age|>Math.max(99,#)}",
  // 支持混合使用
  "test1": "max age is {age|>Math.max(99,#)|..toFixed(2)}",
  // 自引用 也支持处理
  "name": "Thin Ke",
  "name_test": "hello {@name|..toUpperCase()} !"
}

注意点

  1. key 最终转为函数名,所有 要遵循 命名规则
  2. 多语言文件名 需要遵循 命名规则(同 1 所示)

Dependents (0)

Package Sidebar

Install

npm i @thinke/i18n

Weekly Downloads

0

Version

0.0.14

License

MIT

Unpacked Size

30.9 kB

Total Files

20

Last publish

Collaborators

  • thinke_w