2
头图

最近我都没怎么发文,原来产品和开发一直在忙着迭代, EOAPI 又新增一些功能:像前后置脚本多语言以及远程数据源等等。那肯定会有小伙伴问,那你们的插件广场里的插件是不是也支持多语言啊!

必须支持!阅读本文,你将知道如何配置 Eoapi 支持多语言,最终效果如下图:

image.png
中文版插件

image.png
英文版插件

示例代码

https://github.com/eolinker/e...

可以通过示例代码的链接直接 debug 插件,更直观地看展示效果

image.png

配置

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

AB
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,我看到了都会及时回复的。


Postcat
320 声望14 粉丝

我叫 Postcat,我是一款开源 API 工具,我更轻量,同时可拓展!我可以简化你的 API 开发工作,让你更快更好地创建 API。