多语言
2022年11月10日 14:34 大约 4 分钟
# 多语言
# 前端多语言
前端配置文件/public/apidoc/config.js
中配置LANG
,增加/修改你所需的语言,默认为简体中文,当配置大于1个语言时,页面右上角会出现语言切换功能
messages 中为前端页面中所需的语言变量
// /config.js
const config = {
//...
// 多语言
LANG: [
{
title: "简体中文",
lang: "zh-cn",
messages: {
"app.title": "Apidoc",
"home.title": "首页",
"home.appCount": "应用数",
"home.apiCount": "API数量",
"home.docsCount": "文档数量",
"common.ok": "确认",
"common.cancel": "取消",
"common.clear": "清空",
"common.desc": "说明",
"common.action": "操作",
"common.field": "字段",
"common.type": "类型",
"common.require": "必填",
"common.defaultValue": "默认值",
"common.value": "值",
"common.api": "API",
"common.docs": "文档",
"common.close": "关闭",
"common.view": "查看",
"common.copySuccess": "复制成功",
"common.page.404": "404-未知页面",
"common.notdata": "暂无数据",
"common.group": "分组",
"common.currentApp": "当前应用",
"lang.change.confirm.title": "您确认切换语言为 {langTitle} 吗?",
"lang.change.confirm.content": "确认后将刷新页面,并回到首页",
"host.change.confirm.title": "您确认切换Host为 {hostTitle} 吗?",
"auth.title": "授权访问",
"auth.input.placeholder": "请输入访问密码",
"apiPage.update.tip": "该接口有更新",
"apiPage.update.button": "点击此处更新",
"apiPage.author": "作者",
"apiPage.tag": "标签",
"apiPage.docs": "文档",
"apiPage.json": "Json",
"apiPage.debug": "调试",
"apiPage.title.header": "请求头Headers",
"apiPage.title.params": "请求参数Parameters",
"apiPage.title.responses": "响应结果Responses",
"apiPage.mdDetail.title": "{name} 字段的说明",
"apiPage.debug.mock.reload": "更新Mock",
"apiPage.debug.excute": "执行 Excute",
"layout.menu.reload": "更新菜单",
"layout.menu.openAll": "展开全部",
"layout.menu.hideAll": "收起全部",
"layout.cache.reload": "更新缓存",
"layout.tabs.leftSide": "左侧",
"layout.tabs.rightSide": "右侧",
"layout.tabs.notTab": "没有标签",
"layout.tabs.closeCurrent": "关闭当前",
"layout.tabs.closeLeft": "关闭左侧",
"layout.tabs.closeRight": "关闭右侧",
"layout.tabs.closeAll": "关闭全部",
"globalParam.title": "全局参数",
"globalParam.header": "Header",
"globalParam.header.message": "发送请求时,所有接口将自动携带以下Header参数。",
"globalParam.params": "Params",
"globalParam.params.message": "发送请求时,所有接口将自动携带以下Params参数。",
"globalParam.cancel.confirm": "确认清空以上所有参数吗?",
"globalParam.add": "添加参数",
"apiPage.json.formatError": "json 参数格式化错误",
"apiPage.debug.event.before": "请求前事件",
"apiPage.debug.event.after": "响应后事件",
"apiPage.debug.event.setHeader": "设置请求头参数",
"apiPage.debug.event.setGlobalHeader": "设置全局请求头参数",
"apiPage.debug.event.setGlobalParam": "设置全局请求参数",
"apiPage.debug.event.clearGlobalHeader": "清除全局请求头参数",
"apiPage.debug.event.clearGlobalParam": "清除全局请求参数",
"apiPage.debug.event.setParam": "设置请求参数",
"apiPage.debug.event.clearParam": "清除请求参数",
"apiPage.debug.event.handleParam": "处理请求参数",
},
},
{
title: "Engilsh",
lang: "en-us",
messages: {
// ...
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# 配置项多语言
如果的项目存在多种语言,希望在apidoc配置中也同样能进行多语言切换,可将apidoc.php配置文件进行如下调整
提示
你的项目需按TP多语言 (opens new window) 进行配置,并且对使用的变量进行定义
# 定义TP多语言变量
// /app/lang/zh-cn.php
return [
'apidoc' => [
'apps.admin' => '后台管理',
'group.base' => '基础模块',
'headers.shopId' => '店铺id',
'parameters.code' => '编码',
'responses.code' => '响应编码',
'responses.message' => '操作描述',
'doc.about' => '关于',
'api.lang.title' => "多语言接口",
'api.lang.desc' => "多语言测试接口",
'api.lang.age' => "年龄",
'api.lang.name' => "姓名",
]
];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// /app/lang/en-us.php
return [
'apidoc' => [
'apps.admin' => 'Admin',
'group.base' => 'Base Module',
'headers.shopId' => 'Shop Id',
'parameters.code' => 'Code',
'responses.code' => 'Code',
'responses.message' => 'Message',
'doc.about' => 'About',
'api.lang.title' => "Language Api",
'api.lang.desc' => "This is a language Test Api",
'api.lang.age' => "Age",
'api.lang.name' => "Name",
]
];
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 配置文件中使用
如下例子中的参数位置可使用
lang(多语言变量)
来引用多语言变量
// /config/apidoc.php
'apps' => [
[
'title'=>'lang(apidoc.apps.admin)',
'path'=>'app\admin\controller',
'folder'=>'admin',
'groups' => [
['title'=>'lang(apidoc.group.base)','name'=>'nouse'],
],
],
]
// 统一的请求Header
'headers'=>[
['name'=>'ShopId','type'=>'string','desc'=>'lang(apidoc.headers.shopId)'],
],
// 统一的请求参数Parameters
'parameters'=>[
['name'=>'code','type'=>'string','desc'=>'lang(apidoc.parameters.code)'],
],
// 统一的请求响应体
'responses'=>[
['name'=>'code','desc'=>'lang(apidoc.responses.code)','type'=>'int'],
['name'=>'message','desc'=>'lang(apidoc.responses.message)','type'=>'string'],
],
// md文档
'docs' => [
['title'=>'lang(apidoc.doc.about)','path'=>'docs/readme'],
],
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# API注解多语言
如果的项目存在多种语言,希望在API接口的参数说明也能进行多语言切换,可对注解进行多语言变量引用
首先定义TP多语言变量,参考定义TP多语言变量
/**
* @Apidoc\Title ("lang(apidoc.api.lang.title)")
* @Apidoc\Desc ("lang(apidoc.api.lang.desc)")
* @Apidoc\Param("age",type="int",desc="lang(apidoc.api.lang.age)")
* @Apidoc\Returned("name",type="string",desc="lang(apidoc.api.lang.name)")
*/
public function lang(Request $request){
//...
}
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
# 数据表字段描述
通常很多接口中的字段描述是通过ref解析模型对应的数据表注释来得到的,当我们希望apidoc读取数据表注释时,也能实现多语言切换,只需要在字段注释中加入lang(xxx)
即可,如下:
CREATE TABLE `user` (↵
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户id',
`username` varchar(64) NOT NULL COMMENT '用户名,lang(apidoc.table.user.username)',
`nickname` varchar(64) DEFAULT NULL COMMENT '昵称,lang(apidoc.table.user.nickname)',
`password` char(64) NOT NULL COMMENT '登录密码,lang(apidoc.table.user.password)',
PRIMARY KEY (`id`)↵) ENGINE=MyISAM AUTO_INCREMENT=23 DEFAULT CHARSET=utf8"
1
2
3
4
5
6
2
3
4
5
6
如上例子中,字段注释中加入了lang(xxx)
的内容,apidoc在解析该字段时,会使用多语言变量进行输出。