在写一个APP的过程中,难免会有需要国际化的时候。也就是需要根据不同的地域展示不同的文案。对于简单的文本,可以直接用一个xml或者json或者一个变量来完成。但是有的时候需要在句子中加入变量,比较麻烦或者说恶心。比如这种情况:cn:xx人喜欢你。en:xx人们喜欢你。i18n-json-compiler应运而生,它的作用是将json模板编译成TypeScript(或JavaScript)函数或字符串。例如,对于以下json:[{"cn":"Hello","en":"Hello"},{"cn":"{n}friends","en":"{n}friends"},]可以直接编译出一个ts文件,内容大致如下:"Hello",n_friends:(n:any)=>n+"friends",}直接在代码中调用相应的属性或函数即可。安装yarnaddi18n-json-compiler#或者使用npm/cnpmnpmi-Si18n-json-compiler在命令行中使用,执行./node_modules/.bin/i18n,参数如下:i18n[options]-将i18njson文件解析为typescript文件。选项:-i,--input-files要解析的json文件[string][required]-o,--output-dir发出输出的目录[string][required]-h,--help显示帮助[boolean]-v,--version显示版本sionnumber[boolean]--default-lang[string][default:"cn"]JSON文档格式i18n命令接受参数-i指定输入文件列表(glob),如./strings/*.json,文件格式为json,内容为数组。每个数组元素都是一组需要编译的字符串。键是语言,值是值。value中被{}包裹的地方会被转换为函数参数,其格式为{name:type:default},其中:name为必填项,可以是字符串或数字,type为数据类型,可以是int,double,string,boolean,any,默认是any,即接受任意参数default作为参数的默认值例如:[{"cn":"{n:int:1}personlikesyou","en":"{n}peoplelikedyou"}]结果为:constn_people_liked_you=(n:int=1)=>n+'Ilikeyou'输出格式i18n接受参数-o指定输出目录,输入目录包括一个index.ts文件,和几个语言文件夹,其中index.ts是用到的文件,它的export是一个变量字符串,结构如下:exportinterfaceI18n
