feat: add emqx_plugins i18n

This commit is contained in:
Zhongwen Deng 2022-04-21 22:18:38 +08:00
parent 05b4ed58e0
commit 985f83d231
3 changed files with 103 additions and 32 deletions

View File

@ -0,0 +1,93 @@
emqx_plugins_schema {
plugins {
desc {
en: """
Manage EMQX plugins.<br>
Plugins can be pre-built as a part of EMQX package,
or installed as a standalone package in a location specified by
<code>install_dir</code> config key<br>
The standalone-installed plugins are referred to as 'external' plugins.
"""
zh: """管理EMQX插件。<br>
插件可以是EMQX安装包中的一部分也可以是一个独立的安装包。<br>
独立安装的插件称为“外部插件”。
"""
}
label {
en: "Plugins"
zh: "插件"
}
}
state {
desc {
en: "A per-plugin config to describe the desired state of the plugin."
zh: "描述插件的状态"
}
label {
en: "State"
zh: "插件状态"
}
}
name_vsn {
desc {
en: """The {name}-{version} of the plugin.<br>
It should match the plugin application name-version as the for the plugin release package name<br>
For example: my_plugin-0.1.0.
"""
zh: """插件的名称{name}-{version}。<br>
它应该与插件的发布包名称一致如my_plugin-0.1.0。"""
}
label {
en: "Name-Version"
zh: "名称-版本"
}
}
enable {
desc {
en: "Set to 'true' to enable this plugin"
zh: "设置为“true”以启用此插件"
}
label {
en: "Enable"
zh: "启用"
}
}
states {
desc {
en: """An array of plugins in the desired states.<br>
The plugins are started in the defined order"""
zh: """一组插件的状态。插件将按照定义的顺序启动"""
}
label {
en: "States"
zh: "插件启动顺序及状态"
}
}
install_dir {
desc {
en: """
The installation directory for the external plugins.
The plugin beam files and configuration files should reside in
the subdirectory named as <code>emqx_foo_bar-0.1.0</code>.
<br>
NOTE: For security reasons, this directory should **NOT** be writable
by anyone except <code>emqx</code> (or any user which runs EMQX).
"""
zh: "插件安装包的目录, 不要自己创建, 只能由emqx用户创建与修改"
}
label {
en: "Install Directory"
zh: "安装目录"
}
}
check_interval {
desc {
en: """Check interval: check if the status of the plugins in the cluster is consistent, <br>
if the results of 3 consecutive checks are not consistent, then alarm.
"""
zh: """检查间隔:检查集群中插件的状态是否一致,<br>
如果连续3次检查结果不一致则报警。
"""
}
}
}

View File

@ -23,7 +23,7 @@
, namespace/0
]).
-include_lib("typerefl/include/types.hrl").
-include_lib("hocon/include/hoconsc.hrl").
-include("emqx_plugins.hrl").
namespace() -> "plugin".
@ -32,33 +32,22 @@ roots() -> [?CONF_ROOT].
fields(?CONF_ROOT) ->
#{fields => root_fields(),
desc => """
Manage EMQX plugins.
<br>
Plugins can be pre-built as a part of EMQX package,
or installed as a standalone package in a location specified by
<code>install_dir</code> config key
<br>
The standalone-installed plugins are referred to as 'external' plugins.
"""
desc => ?DESC(?CONF_ROOT)
};
fields(state) ->
#{ fields => state_fields(),
desc => "A per-plugin config to describe the desired state of the plugin."
desc => ?DESC(state)
}.
state_fields() ->
[ {name_vsn,
hoconsc:mk(string(),
#{ desc => "The {name}-{version} of the plugin.<br>"
"It should match the plugin application name-version as the "
"for the plugin release package name<br>"
"For example: my_plugin-0.1.0."
#{ desc => ?DESC(name_vsn)
, required => true
})}
, {enable,
hoconsc:mk(boolean(),
#{ desc => "Set to 'true' to enable this plugin"
#{ desc => ?DESC(enable)
, required => true
})}
].
@ -72,27 +61,16 @@ root_fields() ->
states(type) -> hoconsc:array(hoconsc:ref(?MODULE, state));
states(required) -> false;
states(default) -> [];
states(desc) -> "An array of plugins in the desired states.<br>"
"The plugins are started in the defined order";
states(desc) -> ?DESC(states);
states(_) -> undefined.
install_dir(type) -> string();
install_dir(required) -> false;
install_dir(default) -> "plugins"; %% runner's root dir
install_dir(T) when T =/= desc -> undefined;
install_dir(desc) -> """
The installation directory for the external plugins.
The plugin beam files and configuration files should reside in
the subdirectory named as <code>emqx_foo_bar-0.1.0</code>.
<br>
NOTE: For security reasons, this directory should **NOT** be writable
by anyone except <code>emqx</code> (or any user which runs EMQX).
""".
install_dir(desc) -> ?DESC(install_dir).
check_interval(type) -> emqx_schema:duration();
check_interval(default) -> "5s";
check_interval(T) when T =/= desc -> undefined;
check_interval(desc) -> """
Check interval: check if the status of the plugins in the cluster is consistent, <br>
if the results of 3 consecutive checks are not consistent, then alarm.
""".
check_interval(desc) -> ?DESC(check_interval).