最近我都没怎么发文,原来产品和开发一直在忙着迭代, EOAPI 又新增一些功能:像前后置脚本、多语言以及远程数据源等等。那肯定会有小伙伴问,那你们的插件广场里的插件是不是也支持多语言啊!
必须支持!阅读本文,你将知道如何配置 Eoapi 支持多语言,最终效果如下图:
示例代码
https://github.com/eolinker/e...
可以通过示例代码的链接直接 debug 插件,更直观地看展示效果
配置
package.json
在 package.json 配置 i18n
字段
// package.json
{
"name": "eoapi-i18n",
"version": "1.0.0",
"description": "The i18n example extension of eoapi",
"author": "scar",
"main": "dist/index.js",
"moduleID": "eoapi-i18n",
"moduleName": "eoapi-i18n",
"moduleType": "feature",
"logo": "http://dummyimage.com/125x125",
"scripts": {
"build": "rollup -c rollup.config.js",
"build:watch": "rollup -w -c rollup.config.js"
},
"devDependencies": {
"rollup": "^2.70.2"
},
"features": {
"apimanage.export": {
"action": "exportFunc",
"label": "${function.label}", //在 feature 中通过 ${i18n name} 使用
"description": "${function.description}",
"icon": "http://dummyimage.com/125x125",
"filename": "data.json"
},
//i18n 配置
"i18n": {
"sourceLocale": "en-US", //默认语言,使用 eoapi 规定的 localeID
"locales": [
"zh-Hans" //支持语言
]
}
}
}
配置语言包
插件根目录下新建名为 i18n
的文件夹,语言包名称为 LocaleID
A | B | |
---|---|---|
1 | 简体中文 | zh-Hans |
2 | 繁体中文 | zh-Hant |
3 | 英文-美国 | en-US |
4 | 法语 | fr-FR |
5 | 日语 | ja-JP |
6 | 俄罗斯 | ru-RU |
//en-US.json
{
"moduleName": "eoapi-i18n",
"description": "The i18n example extension of eoapi", //如果语言包 json 里面找不到,会使用 package.json 的文件
"logo": "http://dummyimage.com/125x125",
"function.label": "en Data(.json)",
"function.description": "export api data",
"now-lanuage": "Now lanuage is: {0}"
}
//zh-Hans.json
{
"moduleName": "eoapi-国际化",
"description": "国际化插件示例",
"author": "秦一",
"logo": "http://dummyimage.com/200x100",
"function.description": "导出 API 数据",
"function.label": "zh Data(.json)",
"now-lanuage": "当前语言是:{0}",
"multiple-variable": "替换多个变量: {0} {1}"
}
在 Javascript 中使用
通过 eo.i18n 函数
eo.i18n.localize:(originText:string,replacement:string,...variable)=>string;
export const exportFunc = (data = {}) => {
console.log(eo.i18n.localize("export-id", "I am origin text"));
//localize(id:string,originText:string,...args)
console.log(
eo.i18n.localize(
"now-lanuage",
"Now lanuage is: {0}",
eo.i18n.getSystemLanguage()
)
);
//id can be ignore in default localize i18n json
console.log(
eo.i18n.localize(
"multiple-variable",
"Replace multiple variable: {0} {1}",
0,
"1"
)
);
return {
name: "eoapi",
};
};
如果大家对插件系统如何实现插件多语言感兴趣,可以看看相应实现的 PR:https://github.com/eolinker/e...
最后还是介绍下我自己吧。
Eoapi 是一款类 Postman 的开源 API 工具,它更轻量,同时可拓展。
项目地址:
https://github.com/eolinker/e...
官网地址:
https://www.eoapi.io/?utm_sou...
如果你对于 Eoapi 有任何疑问或者建议,都可以去 Github 或者来这里找我,提个Issue,我看到了都会及时回复的。