diff --git a/Makefile b/Makefile
index 13e3a6d43..a5adf0e0a 100644
--- a/Makefile
+++ b/Makefile
@@ -82,7 +82,7 @@ ct: $(REBAR) merge-config
static_checks:
@$(REBAR) as check do xref, dialyzer
@if [ "$${PROFILE}" = 'emqx-enterprise' ]; then $(REBAR) ct --suite apps/emqx/test/emqx_static_checks --readable $(CT_READABLE); fi
- @if [ "$${PROFILE}" = 'emqx-enterprise' ]; then ./scripts/check-i18n-style.sh; fi
+ ./scripts/check-i18n-style.sh
APPS=$(shell $(SCRIPTS)/find-apps.sh)
diff --git a/apps/emqx_gateway/src/emqx_gateway_schema.erl b/apps/emqx_gateway/src/emqx_gateway_schema.erl
index 2034a40eb..741fb98ae 100644
--- a/apps/emqx_gateway/src/emqx_gateway_schema.erl
+++ b/apps/emqx_gateway/src/emqx_gateway_schema.erl
@@ -453,20 +453,20 @@ fields(translator) ->
];
fields(udp_listeners) ->
[
- {udp, sc(map(name, ref(udp_listener)), #{desc => ?DESC(udp_listener)})},
- {dtls, sc(map(name, ref(dtls_listener)), #{desc => ?DESC(dtls_listener)})}
+ {udp, sc(map(name, ref(udp_listener)), #{desc => ?DESC(listener_name_to_settings_map)})},
+ {dtls, sc(map(name, ref(dtls_listener)), #{desc => ?DESC(listener_name_to_settings_map)})}
];
fields(tcp_listeners) ->
[
- {tcp, sc(map(name, ref(tcp_listener)), #{desc => ?DESC(tcp_listener)})},
- {ssl, sc(map(name, ref(ssl_listener)), #{desc => ?DESC(ssl_listener)})}
+ {tcp, sc(map(name, ref(tcp_listener)), #{desc => ?DESC(listener_name_to_settings_map)})},
+ {ssl, sc(map(name, ref(ssl_listener)), #{desc => ?DESC(listener_name_to_settings_map)})}
];
fields(tcp_udp_listeners) ->
[
- {tcp, sc(map(name, ref(tcp_listener)), #{desc => ?DESC(tcp_listener)})},
- {ssl, sc(map(name, ref(ssl_listener)), #{desc => ?DESC(ssl_listener)})},
- {udp, sc(map(name, ref(udp_listener)), #{desc => ?DESC(udp_listener)})},
- {dtls, sc(map(name, ref(dtls_listener)), #{desc => ?DESC(dtls_listener)})}
+ {tcp, sc(map(name, ref(tcp_listener)), #{desc => ?DESC(listener_name_to_settings_map)})},
+ {ssl, sc(map(name, ref(ssl_listener)), #{desc => ?DESC(listener_name_to_settings_map)})},
+ {udp, sc(map(name, ref(udp_listener)), #{desc => ?DESC(listener_name_to_settings_map)})},
+ {dtls, sc(map(name, ref(dtls_listener)), #{desc => ?DESC(listener_name_to_settings_map)})}
];
fields(tcp_listener) ->
%% some special configs for tcp listener
@@ -558,19 +558,19 @@ desc(udp_listeners) ->
desc(tcp_listeners) ->
"Settings for the TCP listeners.";
desc(tcp_udp_listeners) ->
- "Settings for the listeners.";
+ "Settings for TCP and UDP listeners.";
desc(tcp_listener) ->
- "Settings for the TCP listener.";
+ "Settings for TCP listener.";
desc(ssl_listener) ->
- "Settings for the SSL listener.";
+ "Settings for SSL listener.";
desc(udp_listener) ->
- "Settings for the UDP listener.";
+ "Settings for UDP listener.";
desc(dtls_listener) ->
- "Settings for the DTLS listener.";
+ "Settings for DTLS listener.";
desc(udp_opts) ->
- "Settings for the UDP sockets.";
+ "Settings for UDP sockets.";
desc(dtls_opts) ->
- "Settings for the DTLS protocol.";
+ "Settings for DTLS protocol.";
desc(_) ->
undefined.
@@ -625,7 +625,7 @@ mountpoint(Default) ->
binary(),
#{
default => iolist_to_binary(Default),
- desc => ?DESC(gateway_common_mountpoint)
+ desc => ?DESC(gateway_mountpoint)
}
).
@@ -674,7 +674,7 @@ common_listener_opts() ->
binary(),
#{
default => undefined,
- desc => ?DESC(gateway_common_listener_mountpoint)
+ desc => ?DESC(gateway_mountpoint)
}
)},
{access_rules,
diff --git a/lib-ee/emqx_ee_bridge/src/emqx_ee_bridge_kafka.erl b/lib-ee/emqx_ee_bridge/src/emqx_ee_bridge_kafka.erl
index e11ef1c93..529e28dea 100644
--- a/lib-ee/emqx_ee_bridge/src/emqx_ee_bridge_kafka.erl
+++ b/lib-ee/emqx_ee_bridge/src/emqx_ee_bridge_kafka.erl
@@ -233,7 +233,7 @@ fields(socket_opts) ->
boolean(),
#{
default => true,
- hidden => true,
+ importance => ?IMPORTANCE_HIDDEN,
desc => ?DESC(socket_nodelay)
}
)}
diff --git a/apps/emqx_authn/i18n/emqx_authn_api_i18n.conf b/rel/i18n/emqx_authn_api.hocon
similarity index 100%
rename from apps/emqx_authn/i18n/emqx_authn_api_i18n.conf
rename to rel/i18n/emqx_authn_api.hocon
diff --git a/apps/emqx_authn/i18n/emqx_authn_http_i18n.conf b/rel/i18n/emqx_authn_http.hocon
similarity index 100%
rename from apps/emqx_authn/i18n/emqx_authn_http_i18n.conf
rename to rel/i18n/emqx_authn_http.hocon
diff --git a/apps/emqx_authn/i18n/emqx_authn_jwt_i18n.conf b/rel/i18n/emqx_authn_jwt.hocon
similarity index 100%
rename from apps/emqx_authn/i18n/emqx_authn_jwt_i18n.conf
rename to rel/i18n/emqx_authn_jwt.hocon
diff --git a/apps/emqx_authn/i18n/emqx_authn_mnesia_i18n.conf b/rel/i18n/emqx_authn_mnesia.hocon
similarity index 100%
rename from apps/emqx_authn/i18n/emqx_authn_mnesia_i18n.conf
rename to rel/i18n/emqx_authn_mnesia.hocon
diff --git a/apps/emqx_authn/i18n/emqx_authn_mongodb_i18n.conf b/rel/i18n/emqx_authn_mongodb.hocon
similarity index 100%
rename from apps/emqx_authn/i18n/emqx_authn_mongodb_i18n.conf
rename to rel/i18n/emqx_authn_mongodb.hocon
diff --git a/apps/emqx_authn/i18n/emqx_authn_mysql_i18n.conf b/rel/i18n/emqx_authn_mysql.hocon
similarity index 100%
rename from apps/emqx_authn/i18n/emqx_authn_mysql_i18n.conf
rename to rel/i18n/emqx_authn_mysql.hocon
diff --git a/apps/emqx_authn/i18n/emqx_authn_pgsql_i18n.conf b/rel/i18n/emqx_authn_pgsql.hocon
similarity index 100%
rename from apps/emqx_authn/i18n/emqx_authn_pgsql_i18n.conf
rename to rel/i18n/emqx_authn_pgsql.hocon
diff --git a/apps/emqx_authn/i18n/emqx_authn_redis_i18n.conf b/rel/i18n/emqx_authn_redis.hocon
similarity index 100%
rename from apps/emqx_authn/i18n/emqx_authn_redis_i18n.conf
rename to rel/i18n/emqx_authn_redis.hocon
diff --git a/apps/emqx_authn/i18n/emqx_authn_schema_i18n.conf b/rel/i18n/emqx_authn_schema.hocon
similarity index 100%
rename from apps/emqx_authn/i18n/emqx_authn_schema_i18n.conf
rename to rel/i18n/emqx_authn_schema.hocon
diff --git a/apps/emqx_authn/i18n/emqx_authn_user_import_api_i18n.conf b/rel/i18n/emqx_authn_user_import_api.hocon
similarity index 100%
rename from apps/emqx_authn/i18n/emqx_authn_user_import_api_i18n.conf
rename to rel/i18n/emqx_authn_user_import_api.hocon
diff --git a/apps/emqx_authz/i18n/emqx_authz_api_cache_i18n.conf b/rel/i18n/emqx_authz_api_cache.hocon
similarity index 100%
rename from apps/emqx_authz/i18n/emqx_authz_api_cache_i18n.conf
rename to rel/i18n/emqx_authz_api_cache.hocon
diff --git a/apps/emqx_authz/i18n/emqx_authz_api_mnesia_i18n.conf b/rel/i18n/emqx_authz_api_mnesia.hocon
similarity index 100%
rename from apps/emqx_authz/i18n/emqx_authz_api_mnesia_i18n.conf
rename to rel/i18n/emqx_authz_api_mnesia.hocon
diff --git a/apps/emqx_authz/i18n/emqx_authz_api_schema_i18n.conf b/rel/i18n/emqx_authz_api_schema.hocon
similarity index 100%
rename from apps/emqx_authz/i18n/emqx_authz_api_schema_i18n.conf
rename to rel/i18n/emqx_authz_api_schema.hocon
diff --git a/apps/emqx_authz/i18n/emqx_authz_api_settings_i18n.conf b/rel/i18n/emqx_authz_api_settings.hocon
similarity index 100%
rename from apps/emqx_authz/i18n/emqx_authz_api_settings_i18n.conf
rename to rel/i18n/emqx_authz_api_settings.hocon
diff --git a/apps/emqx_authz/i18n/emqx_authz_api_sources_i18n.conf b/rel/i18n/emqx_authz_api_sources.hocon
similarity index 100%
rename from apps/emqx_authz/i18n/emqx_authz_api_sources_i18n.conf
rename to rel/i18n/emqx_authz_api_sources.hocon
diff --git a/apps/emqx_authz/i18n/emqx_authz_schema_i18n.conf b/rel/i18n/emqx_authz_schema.hocon
similarity index 100%
rename from apps/emqx_authz/i18n/emqx_authz_schema_i18n.conf
rename to rel/i18n/emqx_authz_schema.hocon
diff --git a/apps/emqx_auto_subscribe/i18n/emqx_auto_subscribe_api_i18n.conf b/rel/i18n/emqx_auto_subscribe_api.hocon
similarity index 100%
rename from apps/emqx_auto_subscribe/i18n/emqx_auto_subscribe_api_i18n.conf
rename to rel/i18n/emqx_auto_subscribe_api.hocon
diff --git a/apps/emqx_auto_subscribe/i18n/emqx_auto_subscribe_i18n.conf b/rel/i18n/emqx_auto_subscribe_schema.hocon
similarity index 100%
rename from apps/emqx_auto_subscribe/i18n/emqx_auto_subscribe_i18n.conf
rename to rel/i18n/emqx_auto_subscribe_schema.hocon
diff --git a/apps/emqx_bridge/i18n/emqx_bridge_api.conf b/rel/i18n/emqx_bridge_api.hocon
similarity index 100%
rename from apps/emqx_bridge/i18n/emqx_bridge_api.conf
rename to rel/i18n/emqx_bridge_api.hocon
diff --git a/apps/emqx_bridge/i18n/emqx_bridge_mqtt_schema.conf b/rel/i18n/emqx_bridge_mqtt_schema.hocon
similarity index 100%
rename from apps/emqx_bridge/i18n/emqx_bridge_mqtt_schema.conf
rename to rel/i18n/emqx_bridge_mqtt_schema.hocon
diff --git a/apps/emqx_bridge/i18n/emqx_bridge_schema.conf b/rel/i18n/emqx_bridge_schema.hocon
similarity index 100%
rename from apps/emqx_bridge/i18n/emqx_bridge_schema.conf
rename to rel/i18n/emqx_bridge_schema.hocon
diff --git a/apps/emqx_bridge/i18n/emqx_bridge_webhook_schema.conf b/rel/i18n/emqx_bridge_webhook_schema.hocon
similarity index 100%
rename from apps/emqx_bridge/i18n/emqx_bridge_webhook_schema.conf
rename to rel/i18n/emqx_bridge_webhook_schema.hocon
diff --git a/apps/emqx_gateway/i18n/emqx_coap_api_i18n.conf b/rel/i18n/emqx_coap_api.hocon
similarity index 100%
rename from apps/emqx_gateway/i18n/emqx_coap_api_i18n.conf
rename to rel/i18n/emqx_coap_api.hocon
diff --git a/apps/emqx_conf/i18n/emqx_conf_schema.conf b/rel/i18n/emqx_conf_schema.hocon
similarity index 100%
rename from apps/emqx_conf/i18n/emqx_conf_schema.conf
rename to rel/i18n/emqx_conf_schema.hocon
diff --git a/apps/emqx_connector/i18n/emqx_connector_api.conf b/rel/i18n/emqx_connector_api.hocon
similarity index 100%
rename from apps/emqx_connector/i18n/emqx_connector_api.conf
rename to rel/i18n/emqx_connector_api.hocon
diff --git a/apps/emqx_connector/i18n/emqx_connector_http.conf b/rel/i18n/emqx_connector_http.hocon
similarity index 100%
rename from apps/emqx_connector/i18n/emqx_connector_http.conf
rename to rel/i18n/emqx_connector_http.hocon
diff --git a/apps/emqx_connector/i18n/emqx_connector_ldap.conf b/rel/i18n/emqx_connector_ldap.hocon
similarity index 100%
rename from apps/emqx_connector/i18n/emqx_connector_ldap.conf
rename to rel/i18n/emqx_connector_ldap.hocon
diff --git a/apps/emqx_connector/i18n/emqx_connector_mongo.conf b/rel/i18n/emqx_connector_mongo.hocon
similarity index 100%
rename from apps/emqx_connector/i18n/emqx_connector_mongo.conf
rename to rel/i18n/emqx_connector_mongo.hocon
diff --git a/apps/emqx_connector/i18n/emqx_connector_mqtt.conf b/rel/i18n/emqx_connector_mqtt.hocon
similarity index 100%
rename from apps/emqx_connector/i18n/emqx_connector_mqtt.conf
rename to rel/i18n/emqx_connector_mqtt.hocon
diff --git a/apps/emqx_connector/i18n/emqx_connector_mqtt_schema.conf b/rel/i18n/emqx_connector_mqtt_schema.hocon
similarity index 100%
rename from apps/emqx_connector/i18n/emqx_connector_mqtt_schema.conf
rename to rel/i18n/emqx_connector_mqtt_schema.hocon
diff --git a/apps/emqx_connector/i18n/emqx_connector_mysql.conf b/rel/i18n/emqx_connector_mysql.hocon
similarity index 100%
rename from apps/emqx_connector/i18n/emqx_connector_mysql.conf
rename to rel/i18n/emqx_connector_mysql.hocon
diff --git a/apps/emqx_connector/i18n/emqx_connector_pgsql.conf b/rel/i18n/emqx_connector_pgsql.hocon
similarity index 100%
rename from apps/emqx_connector/i18n/emqx_connector_pgsql.conf
rename to rel/i18n/emqx_connector_pgsql.hocon
diff --git a/apps/emqx_connector/i18n/emqx_connector_redis.conf b/rel/i18n/emqx_connector_redis.hocon
similarity index 100%
rename from apps/emqx_connector/i18n/emqx_connector_redis.conf
rename to rel/i18n/emqx_connector_redis.hocon
diff --git a/apps/emqx_connector/i18n/emqx_connector_schema_lib.conf b/rel/i18n/emqx_connector_schema_lib.hocon
similarity index 100%
rename from apps/emqx_connector/i18n/emqx_connector_schema_lib.conf
rename to rel/i18n/emqx_connector_schema_lib.hocon
diff --git a/apps/emqx_dashboard/i18n/emqx_dashboard_api_i18n.conf b/rel/i18n/emqx_dashboard_api.hocon
similarity index 100%
rename from apps/emqx_dashboard/i18n/emqx_dashboard_api_i18n.conf
rename to rel/i18n/emqx_dashboard_api.hocon
diff --git a/apps/emqx_dashboard/i18n/emqx_dashboard_i18n.conf b/rel/i18n/emqx_dashboard_schema.hocon
similarity index 100%
rename from apps/emqx_dashboard/i18n/emqx_dashboard_i18n.conf
rename to rel/i18n/emqx_dashboard_schema.hocon
diff --git a/apps/emqx_modules/i18n/emqx_delayed_api_i18n.conf b/rel/i18n/emqx_delayed_api.hocon
similarity index 100%
rename from apps/emqx_modules/i18n/emqx_delayed_api_i18n.conf
rename to rel/i18n/emqx_delayed_api.hocon
diff --git a/lib-ee/emqx_ee_bridge/i18n/emqx_ee_bridge_cassa.conf b/rel/i18n/emqx_ee_bridge_cassa.hocon
similarity index 100%
rename from lib-ee/emqx_ee_bridge/i18n/emqx_ee_bridge_cassa.conf
rename to rel/i18n/emqx_ee_bridge_cassa.hocon
diff --git a/lib-ee/emqx_ee_bridge/i18n/emqx_ee_bridge_clickhouse.conf b/rel/i18n/emqx_ee_bridge_clickhouse.hocon
similarity index 98%
rename from lib-ee/emqx_ee_bridge/i18n/emqx_ee_bridge_clickhouse.conf
rename to rel/i18n/emqx_ee_bridge_clickhouse.hocon
index 5096f8590..5bc6f12b2 100644
--- a/lib-ee/emqx_ee_bridge/i18n/emqx_ee_bridge_clickhouse.conf
+++ b/rel/i18n/emqx_ee_bridge_clickhouse.hocon
@@ -6,11 +6,9 @@ emqx_ee_bridge_clickhouse {
matching the local_topic will be forwarded.
NOTE: if this bridge is used as the action of a rule (EMQX rule engine), and also local_topic is
configured, then both the data got from the rule and the MQTT messages that match local_topic
-will be forwarded.
-"""
+will be forwarded."""
zh: """发送到 'local_topic' 的消息都会转发到 Clickhouse。
-注意:如果这个 Bridge 被用作规则(EMQX 规则引擎)的输出,同时也配置了 'local_topic' ,那么这两部分的消息都会被转发。
-"""
+注意:如果这个 Bridge 被用作规则(EMQX 规则引擎)的输出,同时也配置了 'local_topic' ,那么这两部分的消息都会被转发。"""
}
label {
en: "Local Topic"
diff --git a/lib-ee/emqx_ee_bridge/i18n/emqx_ee_bridge_dynamo.conf b/rel/i18n/emqx_ee_bridge_dynamo.hocon
similarity index 100%
rename from lib-ee/emqx_ee_bridge/i18n/emqx_ee_bridge_dynamo.conf
rename to rel/i18n/emqx_ee_bridge_dynamo.hocon
diff --git a/lib-ee/emqx_ee_bridge/i18n/emqx_ee_bridge_gcp_pubsub.conf b/rel/i18n/emqx_ee_bridge_gcp_pubsub.hocon
similarity index 100%
rename from lib-ee/emqx_ee_bridge/i18n/emqx_ee_bridge_gcp_pubsub.conf
rename to rel/i18n/emqx_ee_bridge_gcp_pubsub.hocon
diff --git a/lib-ee/emqx_ee_bridge/i18n/emqx_ee_bridge_hstreamdb.conf b/rel/i18n/emqx_ee_bridge_hstreamdb.hocon
similarity index 100%
rename from lib-ee/emqx_ee_bridge/i18n/emqx_ee_bridge_hstreamdb.conf
rename to rel/i18n/emqx_ee_bridge_hstreamdb.hocon
diff --git a/lib-ee/emqx_ee_bridge/i18n/emqx_ee_bridge_influxdb.conf b/rel/i18n/emqx_ee_bridge_influxdb.hocon
similarity index 100%
rename from lib-ee/emqx_ee_bridge/i18n/emqx_ee_bridge_influxdb.conf
rename to rel/i18n/emqx_ee_bridge_influxdb.hocon
diff --git a/lib-ee/emqx_ee_bridge/i18n/emqx_ee_bridge_kafka.conf b/rel/i18n/emqx_ee_bridge_kafka.hocon
similarity index 99%
rename from lib-ee/emqx_ee_bridge/i18n/emqx_ee_bridge_kafka.conf
rename to rel/i18n/emqx_ee_bridge_kafka.hocon
index df32c1cae..d1a017416 100644
--- a/lib-ee/emqx_ee_bridge/i18n/emqx_ee_bridge_kafka.conf
+++ b/rel/i18n/emqx_ee_bridge_kafka.hocon
@@ -547,7 +547,7 @@ emqx_ee_bridge_kafka {
"ts
: message timestamp.\n"
"ts_type
: message timestamp type, which is one of"
" create
, append
or undefined
.\n"
- "value
: Kafka message value (uses the chosen value encoding).\n"
+ "value
: Kafka message value (uses the chosen value encoding)."
zh: "用于转换收到的 Kafka 消息的模板。 "
"默认情况下,它将使用 JSON 格式来序列化来自 Kafka 的所有字段。 "
"这些字段包括:"
@@ -558,7 +558,7 @@ emqx_ee_bridge_kafka {
"ts
: 消息的时间戳。\n"
"ts_type
:消息的时间戳类型,值可能是:"
" create
, append
或 undefined
。\n"
- "value
: Kafka 消息值(使用选择的编码方式编码)。\n"
+ "value
: Kafka 消息值(使用选择的编码方式编码)。"
}
label {
diff --git a/lib-ee/emqx_ee_bridge/i18n/emqx_ee_bridge_mongodb.conf b/rel/i18n/emqx_ee_bridge_mongodb.hocon
similarity index 100%
rename from lib-ee/emqx_ee_bridge/i18n/emqx_ee_bridge_mongodb.conf
rename to rel/i18n/emqx_ee_bridge_mongodb.hocon
diff --git a/lib-ee/emqx_ee_bridge/i18n/emqx_ee_bridge_mysql.conf b/rel/i18n/emqx_ee_bridge_mysql.hocon
similarity index 100%
rename from lib-ee/emqx_ee_bridge/i18n/emqx_ee_bridge_mysql.conf
rename to rel/i18n/emqx_ee_bridge_mysql.hocon
diff --git a/lib-ee/emqx_ee_bridge/i18n/emqx_ee_bridge_pgsql.conf b/rel/i18n/emqx_ee_bridge_pgsql.hocon
similarity index 100%
rename from lib-ee/emqx_ee_bridge/i18n/emqx_ee_bridge_pgsql.conf
rename to rel/i18n/emqx_ee_bridge_pgsql.hocon
diff --git a/lib-ee/emqx_ee_bridge/i18n/emqx_ee_bridge_redis.conf b/rel/i18n/emqx_ee_bridge_redis.hocon
similarity index 100%
rename from lib-ee/emqx_ee_bridge/i18n/emqx_ee_bridge_redis.conf
rename to rel/i18n/emqx_ee_bridge_redis.hocon
diff --git a/lib-ee/emqx_ee_bridge/i18n/emqx_ee_bridge_rocketmq.conf b/rel/i18n/emqx_ee_bridge_rocketmq.hocon
similarity index 100%
rename from lib-ee/emqx_ee_bridge/i18n/emqx_ee_bridge_rocketmq.conf
rename to rel/i18n/emqx_ee_bridge_rocketmq.hocon
diff --git a/lib-ee/emqx_ee_bridge/i18n/emqx_ee_bridge_tdengine.conf b/rel/i18n/emqx_ee_bridge_tdengine.hocon
similarity index 96%
rename from lib-ee/emqx_ee_bridge/i18n/emqx_ee_bridge_tdengine.conf
rename to rel/i18n/emqx_ee_bridge_tdengine.hocon
index 2d5af9f16..21fc013df 100644
--- a/lib-ee/emqx_ee_bridge/i18n/emqx_ee_bridge_tdengine.conf
+++ b/rel/i18n/emqx_ee_bridge_tdengine.hocon
@@ -6,11 +6,9 @@ emqx_ee_bridge_tdengine {
matching the local_topic will be forwarded.
NOTE: if this bridge is used as the action of a rule (EMQX rule engine), and also local_topic is
configured, then both the data got from the rule and the MQTT messages that match local_topic
-will be forwarded.
-"""
+will be forwarded."""
zh: """发送到 'local_topic' 的消息都会转发到 TDengine。
-注意:如果这个 Bridge 被用作规则(EMQX 规则引擎)的输出,同时也配置了 'local_topic' ,那么这两部分的消息都会被转发。
-"""
+注意:如果这个 Bridge 被用作规则(EMQX 规则引擎)的输出,同时也配置了 'local_topic' ,那么这两部分的消息都会被转发。"""
}
label {
en: "Local Topic"
diff --git a/lib-ee/emqx_ee_connector/i18n/emqx_ee_connector_cassa.conf b/rel/i18n/emqx_ee_connector_cassa.hocon
similarity index 100%
rename from lib-ee/emqx_ee_connector/i18n/emqx_ee_connector_cassa.conf
rename to rel/i18n/emqx_ee_connector_cassa.hocon
diff --git a/lib-ee/emqx_ee_connector/i18n/emqx_ee_connector_clickhouse.conf b/rel/i18n/emqx_ee_connector_clickhouse.hocon
similarity index 99%
rename from lib-ee/emqx_ee_connector/i18n/emqx_ee_connector_clickhouse.conf
rename to rel/i18n/emqx_ee_connector_clickhouse.hocon
index 069505a69..4d30e1715 100644
--- a/lib-ee/emqx_ee_connector/i18n/emqx_ee_connector_clickhouse.conf
+++ b/rel/i18n/emqx_ee_connector_clickhouse.hocon
@@ -1,4 +1,3 @@
-
emqx_ee_connector_clickhouse {
base_url {
diff --git a/lib-ee/emqx_ee_connector/i18n/emqx_ee_connector_dynamo.conf b/rel/i18n/emqx_ee_connector_dynamo.hocon
similarity index 63%
rename from lib-ee/emqx_ee_connector/i18n/emqx_ee_connector_dynamo.conf
rename to rel/i18n/emqx_ee_connector_dynamo.hocon
index e1fc11e03..295929a72 100644
--- a/lib-ee/emqx_ee_connector/i18n/emqx_ee_connector_dynamo.conf
+++ b/rel/i18n/emqx_ee_connector_dynamo.hocon
@@ -2,8 +2,8 @@ emqx_ee_connector_dynamo {
url {
desc {
- en: """The url of DynamoDB endpoint.
"""
- zh: """DynamoDB 的地址。
"""
+ en: """The url of DynamoDB endpoint."""
+ zh: """DynamoDB 的地址。"""
}
label: {
en: "DynamoDB Endpoint"
diff --git a/lib-ee/emqx_ee_connector/i18n/emqx_ee_connector_hstreamdb.conf b/rel/i18n/emqx_ee_connector_hstreamdb.hocon
similarity index 100%
rename from lib-ee/emqx_ee_connector/i18n/emqx_ee_connector_hstreamdb.conf
rename to rel/i18n/emqx_ee_connector_hstreamdb.hocon
diff --git a/lib-ee/emqx_ee_connector/i18n/emqx_ee_connector_influxdb.conf b/rel/i18n/emqx_ee_connector_influxdb.hocon
similarity index 100%
rename from lib-ee/emqx_ee_connector/i18n/emqx_ee_connector_influxdb.conf
rename to rel/i18n/emqx_ee_connector_influxdb.hocon
diff --git a/lib-ee/emqx_ee_connector/i18n/emqx_ee_connector_rocketmq.conf b/rel/i18n/emqx_ee_connector_rocketmq.hocon
similarity index 89%
rename from lib-ee/emqx_ee_connector/i18n/emqx_ee_connector_rocketmq.conf
rename to rel/i18n/emqx_ee_connector_rocketmq.hocon
index d4a610212..44dda7931 100644
--- a/lib-ee/emqx_ee_connector/i18n/emqx_ee_connector_rocketmq.conf
+++ b/rel/i18n/emqx_ee_connector_rocketmq.hocon
@@ -2,16 +2,12 @@ emqx_ee_connector_rocketmq {
server {
desc {
- en: """
-The IPv4 or IPv6 address or the hostname to connect to.
+ en: """The IPv4 or IPv6 address or the hostname to connect to.
A host entry has the following form: `Host[:Port]`.
-The RocketMQ default port 9876 is used if `[:Port]` is not specified.
-"""
- zh: """
-将要连接的 IPv4 或 IPv6 地址,或者主机名。
+The RocketMQ default port 9876 is used if `[:Port]` is not specified."""
+ zh: """将要连接的 IPv4 或 IPv6 地址,或者主机名。
主机名具有以下形式:`Host[:Port]`。
-如果未指定 `[:Port]`,则使用 RocketMQ 默认端口 9876。
-"""
+如果未指定 `[:Port]`,则使用 RocketMQ 默认端口 9876。"""
}
label: {
en: "Server Host"
diff --git a/lib-ee/emqx_ee_connector/i18n/emqx_ee_connector_tdengine.conf b/rel/i18n/emqx_ee_connector_tdengine.hocon
similarity index 69%
rename from lib-ee/emqx_ee_connector/i18n/emqx_ee_connector_tdengine.conf
rename to rel/i18n/emqx_ee_connector_tdengine.hocon
index c6c58d82d..02254124c 100644
--- a/lib-ee/emqx_ee_connector/i18n/emqx_ee_connector_tdengine.conf
+++ b/rel/i18n/emqx_ee_connector_tdengine.hocon
@@ -2,16 +2,12 @@ emqx_ee_connector_tdengine {
server {
desc {
- en: """
-The IPv4 or IPv6 address or the hostname to connect to.
+ en: """The IPv4 or IPv6 address or the hostname to connect to.
A host entry has the following form: `Host[:Port]`.
-The TDengine default port 6041 is used if `[:Port]` is not specified.
-"""
- zh: """
-将要连接的 IPv4 或 IPv6 地址,或者主机名。
+The TDengine default port 6041 is used if `[:Port]` is not specified."""
+ zh: """将要连接的 IPv4 或 IPv6 地址,或者主机名。
主机名具有以下形式:`Host[:Port]`。
-如果未指定 `[:Port]`,则使用 TDengine 默认端口 6041。
-"""
+如果未指定 `[:Port]`,则使用 TDengine 默认端口 6041。"""
}
label: {
en: "Server Host"
diff --git a/apps/emqx_exhook/i18n/emqx_exhook_api_i18n.conf b/rel/i18n/emqx_exhook_api.hocon
similarity index 100%
rename from apps/emqx_exhook/i18n/emqx_exhook_api_i18n.conf
rename to rel/i18n/emqx_exhook_api.hocon
diff --git a/apps/emqx_exhook/i18n/emqx_exhook_i18n.conf b/rel/i18n/emqx_exhook_schema.hocon
similarity index 100%
rename from apps/emqx_exhook/i18n/emqx_exhook_i18n.conf
rename to rel/i18n/emqx_exhook_schema.hocon
diff --git a/apps/emqx_gateway/i18n/emqx_gateway_api_i18n.conf b/rel/i18n/emqx_gateway_api.hocon
similarity index 100%
rename from apps/emqx_gateway/i18n/emqx_gateway_api_i18n.conf
rename to rel/i18n/emqx_gateway_api.hocon
diff --git a/apps/emqx_gateway/i18n/emqx_gateway_api_authn_i18n.conf b/rel/i18n/emqx_gateway_api_authn.hocon
similarity index 100%
rename from apps/emqx_gateway/i18n/emqx_gateway_api_authn_i18n.conf
rename to rel/i18n/emqx_gateway_api_authn.hocon
diff --git a/apps/emqx_gateway/i18n/emqx_gateway_api_clients_i18n.conf b/rel/i18n/emqx_gateway_api_clients.hocon
similarity index 100%
rename from apps/emqx_gateway/i18n/emqx_gateway_api_clients_i18n.conf
rename to rel/i18n/emqx_gateway_api_clients.hocon
diff --git a/apps/emqx_gateway/i18n/emqx_gateway_api_listeners_i18n.conf b/rel/i18n/emqx_gateway_api_listeners.hocon
similarity index 100%
rename from apps/emqx_gateway/i18n/emqx_gateway_api_listeners_i18n.conf
rename to rel/i18n/emqx_gateway_api_listeners.hocon
diff --git a/apps/emqx_gateway/i18n/emqx_gateway_schema_i18n.conf b/rel/i18n/emqx_gateway_schema.hocon
similarity index 97%
rename from apps/emqx_gateway/i18n/emqx_gateway_schema_i18n.conf
rename to rel/i18n/emqx_gateway_schema.hocon
index 74a70eb73..ebc955557 100644
--- a/apps/emqx_gateway/i18n/emqx_gateway_schema_i18n.conf
+++ b/rel/i18n/emqx_gateway_schema.hocon
@@ -370,13 +370,6 @@ After succeed observe a resource of LwM2M client, Gateway will send the notify e
}
}
- gateway_common_mountpoint {
- desc {
- en: """"""
- zh: """"""
- }
- }
-
gateway_common_clientinfo_override {
desc {
en: """ClientInfo override."""
@@ -431,10 +424,10 @@ After succeed observe a resource of LwM2M client, Gateway will send the notify e
}
}
- tcp_listener {
+ listener_name_to_settings_map{
desc {
- en: """"""
- zh: """"""
+ en: """A map from listener names to listener settings."""
+ zh: """从监听器名称到配置参数的映射。"""
}
}
@@ -468,13 +461,6 @@ EMQX will close the TCP connection if proxy protocol packet is not received with
}
}
- ssl_listener {
- desc {
- en: """"""
- zh: """"""
- }
- }
-
ssl_listener_options {
desc {
en: """SSL Socket options."""
@@ -482,13 +468,6 @@ EMQX will close the TCP connection if proxy protocol packet is not received with
}
}
- udp_listener {
- desc {
- en: """"""
- zh: """"""
- }
- }
-
udp_listener_udp_opts {
desc {
en: """Settings for the UDP sockets."""
@@ -533,13 +512,6 @@ See: https://erlang.org/doc/man/inet.html#setopts-2"""
}
}
- dtls_listener {
- desc {
- en: """"""
- zh: """"""
- }
- }
-
dtls_listener_acceptors {
desc {
en: """Size of the acceptor pool."""
@@ -592,7 +564,7 @@ When set to false
clients will be allowed to connect without authen
}
}
- gateway_common_listener_mountpoint {
+ gateway_mountpoint {
desc {
en: """When publishing or subscribing, prefix all topics with a mountpoint string.
The prefixed string will be removed from the topic name when the message is delivered to the subscriber.
diff --git a/lib-ee/emqx_license/i18n/emqx_license_http_api.conf b/rel/i18n/emqx_license_http_api.hocon
similarity index 100%
rename from lib-ee/emqx_license/i18n/emqx_license_http_api.conf
rename to rel/i18n/emqx_license_http_api.hocon
diff --git a/lib-ee/emqx_license/i18n/emqx_license_schema_i18n.conf b/rel/i18n/emqx_license_schema.hocon
similarity index 100%
rename from lib-ee/emqx_license/i18n/emqx_license_schema_i18n.conf
rename to rel/i18n/emqx_license_schema.hocon
diff --git a/apps/emqx/i18n/emqx_limiter_i18n.conf b/rel/i18n/emqx_limiter_schema.hocon
similarity index 100%
rename from apps/emqx/i18n/emqx_limiter_i18n.conf
rename to rel/i18n/emqx_limiter_schema.hocon
diff --git a/apps/emqx_gateway/i18n/emqx_lwm2m_api_i18n.conf b/rel/i18n/emqx_lwm2m_api.hocon
similarity index 100%
rename from apps/emqx_gateway/i18n/emqx_lwm2m_api_i18n.conf
rename to rel/i18n/emqx_lwm2m_api.hocon
diff --git a/apps/emqx_management/i18n/emqx_mgmt_api_alarms_i18n.conf b/rel/i18n/emqx_mgmt_api_alarms.hocon
similarity index 100%
rename from apps/emqx_management/i18n/emqx_mgmt_api_alarms_i18n.conf
rename to rel/i18n/emqx_mgmt_api_alarms.hocon
diff --git a/apps/emqx_management/i18n/emqx_mgmt_api_banned_i18n.conf b/rel/i18n/emqx_mgmt_api_banned.hocon
similarity index 100%
rename from apps/emqx_management/i18n/emqx_mgmt_api_banned_i18n.conf
rename to rel/i18n/emqx_mgmt_api_banned.hocon
diff --git a/apps/emqx_management/i18n/emqx_mgmt_api_key_i18n.conf b/rel/i18n/emqx_mgmt_api_key_schema.hocon
similarity index 100%
rename from apps/emqx_management/i18n/emqx_mgmt_api_key_i18n.conf
rename to rel/i18n/emqx_mgmt_api_key_schema.hocon
diff --git a/apps/emqx_management/i18n/emqx_mgmt_api_publish_i18n.conf b/rel/i18n/emqx_mgmt_api_publish.hocon
similarity index 99%
rename from apps/emqx_management/i18n/emqx_mgmt_api_publish_i18n.conf
rename to rel/i18n/emqx_mgmt_api_publish.hocon
index f91115df5..a09732cfc 100644
--- a/apps/emqx_management/i18n/emqx_mgmt_api_publish_i18n.conf
+++ b/rel/i18n/emqx_mgmt_api_publish.hocon
@@ -1,4 +1,3 @@
-
emqx_mgmt_api_publish {
publish_api {
desc {
diff --git a/apps/emqx_management/i18n/emqx_mgmt_api_status_i18n.conf b/rel/i18n/emqx_mgmt_api_status.hocon
similarity index 100%
rename from apps/emqx_management/i18n/emqx_mgmt_api_status_i18n.conf
rename to rel/i18n/emqx_mgmt_api_status.hocon
diff --git a/apps/emqx_modules/i18n/emqx_modules_schema_i18n.conf b/rel/i18n/emqx_modules_schema.hocon
similarity index 100%
rename from apps/emqx_modules/i18n/emqx_modules_schema_i18n.conf
rename to rel/i18n/emqx_modules_schema.hocon
diff --git a/apps/emqx_plugins/i18n/emqx_plugins_schema.conf b/rel/i18n/emqx_plugins_schema.hocon
similarity index 100%
rename from apps/emqx_plugins/i18n/emqx_plugins_schema.conf
rename to rel/i18n/emqx_plugins_schema.hocon
diff --git a/apps/emqx_prometheus/i18n/emqx_prometheus_schema_i18n.conf b/rel/i18n/emqx_prometheus_schema.hocon
similarity index 100%
rename from apps/emqx_prometheus/i18n/emqx_prometheus_schema_i18n.conf
rename to rel/i18n/emqx_prometheus_schema.hocon
diff --git a/apps/emqx_psk/i18n/emqx_psk_i18n.conf b/rel/i18n/emqx_psk_schema.hocon
similarity index 100%
rename from apps/emqx_psk/i18n/emqx_psk_i18n.conf
rename to rel/i18n/emqx_psk_schema.hocon
diff --git a/apps/emqx_resource/i18n/emqx_resource_schema_i18n.conf b/rel/i18n/emqx_resource_schema.hocon
similarity index 100%
rename from apps/emqx_resource/i18n/emqx_resource_schema_i18n.conf
rename to rel/i18n/emqx_resource_schema.hocon
diff --git a/apps/emqx_retainer/i18n/emqx_retainer_api_i18n.conf b/rel/i18n/emqx_retainer_api.hocon
similarity index 100%
rename from apps/emqx_retainer/i18n/emqx_retainer_api_i18n.conf
rename to rel/i18n/emqx_retainer_api.hocon
diff --git a/apps/emqx_retainer/i18n/emqx_retainer_i18n.conf b/rel/i18n/emqx_retainer_schema.hocon
similarity index 100%
rename from apps/emqx_retainer/i18n/emqx_retainer_i18n.conf
rename to rel/i18n/emqx_retainer_schema.hocon
diff --git a/apps/emqx_modules/i18n/emqx_rewrite_api_i18n.conf b/rel/i18n/emqx_rewrite_api.hocon
similarity index 100%
rename from apps/emqx_modules/i18n/emqx_rewrite_api_i18n.conf
rename to rel/i18n/emqx_rewrite_api.hocon
diff --git a/apps/emqx_rule_engine/i18n/emqx_rule_api_schema.conf b/rel/i18n/emqx_rule_api_schema.hocon
similarity index 99%
rename from apps/emqx_rule_engine/i18n/emqx_rule_api_schema.conf
rename to rel/i18n/emqx_rule_api_schema.hocon
index e4c2314de..f9b344666 100644
--- a/apps/emqx_rule_engine/i18n/emqx_rule_api_schema.conf
+++ b/rel/i18n/emqx_rule_api_schema.hocon
@@ -35,8 +35,8 @@ emqx_rule_api_schema {
event_username {
desc {
- en: "The User Name"
- zh: ""
+ en: "Username"
+ zh: "用户名"
}
label: {
en: "Username"
diff --git a/apps/emqx_rule_engine/i18n/emqx_rule_engine_api.conf b/rel/i18n/emqx_rule_engine_api.hocon
similarity index 100%
rename from apps/emqx_rule_engine/i18n/emqx_rule_engine_api.conf
rename to rel/i18n/emqx_rule_engine_api.hocon
diff --git a/apps/emqx_rule_engine/i18n/emqx_rule_engine_schema.conf b/rel/i18n/emqx_rule_engine_schema.hocon
similarity index 100%
rename from apps/emqx_rule_engine/i18n/emqx_rule_engine_schema.conf
rename to rel/i18n/emqx_rule_engine_schema.hocon
diff --git a/apps/emqx/i18n/emqx_schema_i18n.conf b/rel/i18n/emqx_schema.hocon
similarity index 99%
rename from apps/emqx/i18n/emqx_schema_i18n.conf
rename to rel/i18n/emqx_schema.hocon
index 28c58713d..d36809c3b 100644
--- a/apps/emqx/i18n/emqx_schema_i18n.conf
+++ b/rel/i18n/emqx_schema.hocon
@@ -1505,8 +1505,8 @@ In case PSK cipher suites are intended, make sure to configure
common_ssl_opts_schema_hibernate_after {
desc {
- en: """ Hibernate the SSL process after idling for amount of time reducing its memory footprint. """
- zh: """ 在闲置一定时间后休眠 SSL 进程,减少其内存占用。"""
+ en: """Hibernate the SSL process after idling for amount of time reducing its memory footprint."""
+ zh: """在闲置一定时间后休眠 SSL 进程,减少其内存占用。"""
}
label: {
en: "hibernate after"
diff --git a/apps/emqx_slow_subs/i18n/emqx_slow_subs_api_i18n.conf b/rel/i18n/emqx_slow_subs_api.hocon
similarity index 100%
rename from apps/emqx_slow_subs/i18n/emqx_slow_subs_api_i18n.conf
rename to rel/i18n/emqx_slow_subs_api.hocon
diff --git a/apps/emqx_slow_subs/i18n/emqx_slow_subs_i18n.conf b/rel/i18n/emqx_slow_subs_schema.hocon
similarity index 100%
rename from apps/emqx_slow_subs/i18n/emqx_slow_subs_i18n.conf
rename to rel/i18n/emqx_slow_subs_schema.hocon
diff --git a/apps/emqx_statsd/i18n/emqx_statsd_api_i18n.conf b/rel/i18n/emqx_statsd_api.hocon
similarity index 100%
rename from apps/emqx_statsd/i18n/emqx_statsd_api_i18n.conf
rename to rel/i18n/emqx_statsd_api.hocon
diff --git a/apps/emqx_statsd/i18n/emqx_statsd_schema_i18n.conf b/rel/i18n/emqx_statsd_schema.hocon
similarity index 100%
rename from apps/emqx_statsd/i18n/emqx_statsd_schema_i18n.conf
rename to rel/i18n/emqx_statsd_schema.hocon
diff --git a/apps/emqx_modules/i18n/emqx_telemetry_api_i18n.conf b/rel/i18n/emqx_telemetry_api.hocon
similarity index 100%
rename from apps/emqx_modules/i18n/emqx_telemetry_api_i18n.conf
rename to rel/i18n/emqx_telemetry_api.hocon
diff --git a/apps/emqx_modules/i18n/emqx_topic_metrics_api_i18n.conf b/rel/i18n/emqx_topic_metrics_api.hocon
similarity index 100%
rename from apps/emqx_modules/i18n/emqx_topic_metrics_api_i18n.conf
rename to rel/i18n/emqx_topic_metrics_api.hocon
diff --git a/scripts/check-i18n-style.escript b/scripts/check-i18n-style.escript
index 6ad6c1770..cbe79c82e 100755
--- a/scripts/check-i18n-style.escript
+++ b/scripts/check-i18n-style.escript
@@ -1,12 +1,15 @@
#!/usr/bin/env escript
+%% called from check-i18n-style.sh
+
-mode(compile).
--define(YELLOW, "\e[33m").
+% -define(YELLOW, "\e[33m"). % not used
-define(RED, "\e[31m").
-define(RESET, "\e[39m").
main([Files0]) ->
+ io:format(user, "checking i18n file styles", []),
_ = put(errors, 0),
Files = string:tokens(Files0, "\n"),
ok = load_hocon(),
@@ -46,7 +49,7 @@ logerr(Fmt, Args) ->
check(File) ->
- io:format(user, "checking: ~s~n", [File]),
+ io:format(user, ".", []),
{ok, C} = hocon:load(File),
maps:foreach(fun check_one_field/2, C),
ok.
@@ -84,7 +87,7 @@ do_check_desc(Name, _) ->
die("~s: missing 'zh' or 'en'~n", [Name]).
check_desc_string(Name, Tr, <<>>) ->
- io:format(standard_error, ?YELLOW ++ "WARNING: ~s.~s: empty string~n" ++ ?RESET, [Name, Tr]);
+ logerr("~s.~s: empty string~n", [Name, Tr]);
check_desc_string(Name, Tr, BinStr) ->
Str = unicode:characters_to_list(BinStr, utf8),
Err = fun(Reason) ->
diff --git a/scripts/check-i18n-style.sh b/scripts/check-i18n-style.sh
index 0be565f30..d21f43a72 100755
--- a/scripts/check-i18n-style.sh
+++ b/scripts/check-i18n-style.sh
@@ -3,6 +3,6 @@ set -euo pipefail
cd -P -- "$(dirname -- "$0")/.."
-all_files="$(git ls-files '*i18n*.conf')"
+all_files="$(git ls-files 'rel/i18n/*.hocon')"
./scripts/check-i18n-style.escript "$all_files"
diff --git a/scripts/merge-i18n.escript b/scripts/merge-i18n.escript
index 816cbe182..b2501d10a 100755
--- a/scripts/merge-i18n.escript
+++ b/scripts/merge-i18n.escript
@@ -4,12 +4,8 @@
main(_) ->
BaseConf = <<"">>,
- Cfgs0 = get_all_cfgs("apps/"),
- Cfgs1 = get_all_cfgs("lib-ee/"),
- Conf0 = merge(BaseConf, Cfgs0),
- Conf = [merge(Conf0, Cfgs1),
- io_lib:nl()
- ],
+ Cfgs0 = get_all_files(),
+ Conf = merge(BaseConf, Cfgs0),
OutputFile = "apps/emqx_dashboard/priv/i18n.conf",
ok = filelib:ensure_dir(OutputFile),
ok = file:write_file(OutputFile, Conf).
@@ -25,39 +21,7 @@ merge(BaseConf, Cfgs) ->
end
end, BaseConf, Cfgs).
-get_all_cfgs(Root) ->
- Apps = filelib:wildcard("*", Root) -- ["emqx_machine"],
- Dirs = [filename:join([Root, App]) || App <- Apps],
- lists:foldl(fun get_cfgs/2, [], Dirs).
-
-get_all_cfgs(Dir, Cfgs) ->
- Fun = fun(E, Acc) ->
- Path = filename:join([Dir, E]),
- get_cfgs(Path, Acc)
- end,
- lists:foldl(Fun, Cfgs, filelib:wildcard("*", Dir)).
-
-get_cfgs(Dir, Cfgs) ->
- case filelib:is_dir(Dir) of
- false ->
- Cfgs;
- _ ->
- Files = filelib:wildcard("*", Dir),
- case lists:member("i18n", Files) of
- false ->
- try_enter_child(Dir, Files, Cfgs);
- true ->
- EtcDir = filename:join([Dir, "i18n"]),
- Confs = filelib:wildcard("*.conf", EtcDir),
- NewCfgs = [filename:join([EtcDir, Name]) || Name <- Confs],
- try_enter_child(Dir, Files, NewCfgs ++ Cfgs)
- end
- end.
-
-try_enter_child(Dir, Files, Cfgs) ->
- case lists:member("src", Files) of
- false ->
- Cfgs;
- true ->
- get_all_cfgs(filename:join([Dir, "src"]), Cfgs)
- end.
+get_all_files() ->
+ Dir = filename:join(["rel","i18n"]),
+ Files = filelib:wildcard("*.hocon", Dir),
+ lists:map(fun(Name) -> filename:join([Dir, Name]) end, Files).