You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dolphinscheduler.apache.org by li...@apache.org on 2022/06/17 04:38:49 UTC

[dolphinscheduler] branch 3.0.0-beta-2-prepare updated (57ade38939 -> 3181e1a7ee)

This is an automated email from the ASF dual-hosted git repository.

liudongkai pushed a change to branch 3.0.0-beta-2-prepare
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git


    from 57ade38939 [maven-release-plugin] prepare release 3.0.0-beta-1
     new 8ac6fa6dbc [doc] Refactor context parameter docment (#10227)
     new 3de7b65f9a [doc] Delete SPRING_DATASOURCE_DRIVER_CLASS_NAME in doc (#10228)
     new 1a79c2a200 [doc] Upgrade screenshot to latest version in dev document (#10242)
     new f35e0f1d5e [doc] Update the development environment to build the software version (#10246)
     new 7ac7f41562 [doc] Add switch task demo (#10247)
     new 1afa870abd [docs] Added local file configuration guide for resource center (#10264)
     new 1e9f62453e [Fix][UI] Fix status statistics card height is inconsistent. (#10268)
     new 093cd4627a [Fix] Fix the line.separator problem for alert-plugin' test case #10277 (#10278)
     new 3687eb7a9a [Fix][UI] Add mapping_columns filed for the data_quality ruleInputParamter. (#10286)
     new 4007382193 Fix database initialize late in standalone. (#10296)
     new 271ef65c38 [doc] Fix api standard error (#10292)
     new 32c8b7c9f2 [Style][UI] Split multilingual modules. (#10256)
     new 4593351cf3 [Fix][UI] Display the result page when the DB page has no data. (#10298)
     new 79b7e83051 [doc] Add how to use resource in shell task (#10308)
     new 30589121c4 [Style][UI] Format code. (#10314)
     new d95aa71383 [Fix-10317] [ui] Fix the tips of startTimeout in the jupyter form (#10319)
     new cbefb59bf8 [Fix][UI] Fixed the issue that the status statistics on the project overview page were inconsistent. (#10328)
     new 3181e1a7ee [Fix-10318][ui] Fix EMR Task UI custom parameters Is not correct (#10334)

The 18 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../cluster-test/mysql/dolphinscheduler_env.sh     |    1 -
 .../postgresql/dolphinscheduler_env.sh             |    1 -
 docs/docs/en/about/glossary.md                     |    7 +-
 docs/docs/en/architecture/configuration.md         |    1 -
 docs/docs/en/development/api-standard.md           |   36 +-
 .../development/development-environment-setup.md   |   12 +-
 .../docs/en/guide/alert/alert_plugin_user_guide.md |    8 +-
 docs/docs/en/guide/alert/dingtalk.md               |    2 +-
 docs/docs/en/guide/alert/telegram.md               |    2 +-
 docs/docs/en/guide/installation/pseudo-cluster.md  |    2 -
 docs/docs/en/guide/parameter/context.md            |   66 +-
 docs/docs/en/guide/parameter/priority.md           |   10 +-
 docs/docs/en/guide/resource/configuration.md       |   17 +-
 docs/docs/en/guide/start/docker.md                 |    6 -
 docs/docs/en/guide/task/shell.md                   |    5 +-
 docs/docs/en/guide/task/switch.md                  |   44 +-
 docs/docs/en/guide/upgrade.md                      |    1 -
 docs/docs/zh/about/glossary.md                     |   15 +-
 docs/docs/zh/architecture/configuration.md         |    1 -
 docs/docs/zh/development/api-standard.md           |   37 +-
 .../development/development-environment-setup.md   |   16 +-
 .../docs/zh/guide/alert/alert_plugin_user_guide.md |   10 +-
 docs/docs/zh/guide/alert/dingtalk.md               |    2 +-
 docs/docs/zh/guide/alert/telegram.md               |   10 +-
 docs/docs/zh/guide/installation/pseudo-cluster.md  |    2 -
 docs/docs/zh/guide/parameter/context.md            |   65 +-
 docs/docs/zh/guide/parameter/priority.md           |    8 +-
 docs/docs/zh/guide/resource/configuration.md       |   11 +
 docs/docs/zh/guide/start/docker.md                 |    6 -
 docs/docs/zh/guide/task/shell.md                   |   17 +-
 docs/docs/zh/guide/task/switch.md                  |   55 +-
 docs/docs/zh/guide/upgrade.md                      |    1 -
 docs/img/alert/alert_step_1.png                    |  Bin 70180 -> 0 bytes
 docs/img/alert/alert_step_2.png                    |  Bin 159166 -> 0 bytes
 docs/img/alert/alert_step_3.png                    |  Bin 240057 -> 0 bytes
 docs/img/alert/alert_step_4.png                    |  Bin 144842 -> 0 bytes
 docs/img/alert/dingtalk-plugin.png                 |  Bin 60958 -> 0 bytes
 docs/img/alert/telegram-plugin.png                 |  Bin 74412 -> 0 bytes
 docs/img/dag_examples_cn.jpg                       |  Bin 51498 -> 0 bytes
 docs/img/globalParam/image-20210723101242216.png   |  Bin 44625 -> 0 bytes
 docs/img/globalParam/image-20210723102522383.png   |  Bin 42919 -> 0 bytes
 docs/img/globalParam/image-20210723102938239.png   |  Bin 36581 -> 0 bytes
 docs/img/globalParam/image-20210723103316896.png   |  Bin 37954 -> 0 bytes
 docs/img/globalParam/image-20210723103937052.png   |  Bin 52946 -> 0 bytes
 docs/img/globalParam/image-20210723104411489.png   |  Bin 21894 -> 0 bytes
 docs/img/globalParam/image-20210723104957031.png   |  Bin 36588 -> 0 bytes
 docs/img/globalParam/image-20210723105026924.png   |  Bin 37906 -> 0 bytes
 docs/img/globalParam/image-20210723105131381.png   |  Bin 34311 -> 0 bytes
 docs/img/globalParam/image-20210723105255850.png   |  Bin 38332 -> 0 bytes
 docs/img/global_parameter.png                      |  Bin 94677 -> 0 bytes
 docs/img/new_ui/dev/about/glossary.png             |  Bin 0 -> 85151 bytes
 docs/img/new_ui/dev/alert/alert_dingtalk.png       |  Bin 0 -> 117481 bytes
 docs/img/new_ui/dev/alert/alert_instance01.png     |  Bin 0 -> 70279 bytes
 docs/img/new_ui/dev/alert/alert_instance02.png     |  Bin 0 -> 102718 bytes
 docs/img/new_ui/dev/alert/alert_instance03.png     |  Bin 0 -> 104143 bytes
 docs/img/new_ui/dev/alert/alert_instance04.png     |  Bin 0 -> 102625 bytes
 docs/img/new_ui/dev/alert/alert_telegram.png       |  Bin 0 -> 116700 bytes
 docs/img/new_ui/dev/parameter/context_log01.png    |  Bin 0 -> 311889 bytes
 docs/img/new_ui/dev/parameter/context_log02.png    |  Bin 0 -> 311298 bytes
 docs/img/new_ui/dev/parameter/context_log03.png    |  Bin 0 -> 297036 bytes
 .../new_ui/dev/parameter/context_parameter01.png   |  Bin 0 -> 165499 bytes
 .../new_ui/dev/parameter/context_parameter02.png   |  Bin 0 -> 160262 bytes
 .../new_ui/dev/parameter/context_parameter03.png   |  Bin 0 -> 157262 bytes
 .../new_ui/dev/parameter/context_parameter04.png   |  Bin 0 -> 150018 bytes
 .../new_ui/dev/parameter/priority_parameter01.png  |  Bin 0 -> 16159 bytes
 .../new_ui/dev/parameter/priority_parameter02.png  |  Bin 0 -> 50368 bytes
 .../new_ui/dev/parameter/priority_parameter03.png  |  Bin 0 -> 30142 bytes
 .../new_ui/dev/parameter/priority_parameter04.png  |  Bin 0 -> 173759 bytes
 docs/img/switch_configure.jpg                      |  Bin 142764 -> 0 bytes
 docs/img/tasks/demo/switch_01.png                  |  Bin 0 -> 117194 bytes
 docs/img/tasks/demo/switch_02.png                  |  Bin 0 -> 141217 bytes
 docs/img/tasks/demo/switch_03.png                  |  Bin 0 -> 148408 bytes
 docs/img/tasks/demo/switch_04.png                  |  Bin 0 -> 125565 bytes
 .../email/template/DefaultHTMLTemplateTest.java    |    2 +-
 .../dao/datasource/SpringConnectionFactory.java    |    9 +
 .../src/layouts/content/use-dataList.ts            |    6 +-
 dolphinscheduler-ui/src/locales/en_US/crontab.ts   |   78 ++
 .../src/locales/en_US/data-quality.ts              |  112 ++
 .../src/locales/en_US/datasource.ts                |   66 +
 .../fields/use-emr.ts => locales/en_US/home.ts}    |   46 +-
 dolphinscheduler-ui/src/locales/en_US/index.ts     |   50 +
 .../src/locales/{index.ts => en_US/login.ts}       |   23 +-
 dolphinscheduler-ui/src/locales/en_US/menu.ts      |   59 +
 .../src/locales/{index.ts => en_US/modal.ts}       |   19 +-
 dolphinscheduler-ui/src/locales/en_US/monitor.ts   |   74 +
 .../src/locales/{index.ts => en_US/password.ts}    |   25 +-
 .../fields/use-emr.ts => locales/en_US/profile.ts} |   44 +-
 dolphinscheduler-ui/src/locales/en_US/project.ts   |  623 +++++++++
 dolphinscheduler-ui/src/locales/en_US/resource.ts  |  170 +++
 dolphinscheduler-ui/src/locales/en_US/security.ts  |  265 ++++
 .../src/locales/{index.ts => en_US/theme.ts}       |   19 +-
 .../locales/{index.ts => en_US/user-dropdown.ts}   |   20 +-
 dolphinscheduler-ui/src/locales/index.ts           |    4 +-
 dolphinscheduler-ui/src/locales/modules/en_US.ts   | 1436 --------------------
 dolphinscheduler-ui/src/locales/modules/zh_CN.ts   | 1419 -------------------
 dolphinscheduler-ui/src/locales/zh_CN/crontab.ts   |   77 ++
 .../src/locales/zh_CN/data-quality.ts              |  111 ++
 .../src/locales/zh_CN/datasource.ts                |   63 +
 .../fields/use-emr.ts => locales/zh_CN/home.ts}    |   46 +-
 dolphinscheduler-ui/src/locales/zh_CN/index.ts     |   50 +
 .../src/locales/{index.ts => zh_CN/login.ts}       |   23 +-
 dolphinscheduler-ui/src/locales/zh_CN/menu.ts      |   59 +
 .../src/locales/{index.ts => zh_CN/modal.ts}       |   19 +-
 dolphinscheduler-ui/src/locales/zh_CN/monitor.ts   |   72 +
 .../src/locales/{index.ts => zh_CN/password.ts}    |   24 +-
 .../fields/use-emr.ts => locales/zh_CN/profile.ts} |   44 +-
 dolphinscheduler-ui/src/locales/zh_CN/project.ts   |  671 +++++++++
 dolphinscheduler-ui/src/locales/zh_CN/resource.ts  |  168 +++
 dolphinscheduler-ui/src/locales/zh_CN/security.ts  |  265 ++++
 .../src/locales/{index.ts => zh_CN/theme.ts}       |   19 +-
 .../locales/{index.ts => zh_CN/user-dropdown.ts}   |   20 +-
 .../src/views/home/components/state-card.tsx       |    2 +-
 .../src/views/monitor/servers/db/index.tsx         |   10 +-
 .../projects/overview/components/state-card.tsx    |    2 +-
 .../task/components/node/fields/use-emr.ts         |    6 +-
 .../task/components/node/fields/use-http.ts        |    4 +-
 .../task/components/node/fields/use-jupyter.ts     |  180 +++
 .../task/components/node/fields/use-openmldb.ts    |   87 ++
 .../task/components/node/fields/use-rules.ts       |   20 +-
 .../projects/task/components/node/format-data.ts   |    7 +-
 .../views/projects/task/components/node/types.ts   |    4 +-
 .../task-group/option/components/form-modal.tsx    |    2 +-
 script/env/dolphinscheduler_env.sh                 |    1 -
 123 files changed, 3785 insertions(+), 3317 deletions(-)
 delete mode 100644 docs/img/alert/alert_step_1.png
 delete mode 100644 docs/img/alert/alert_step_2.png
 delete mode 100644 docs/img/alert/alert_step_3.png
 delete mode 100644 docs/img/alert/alert_step_4.png
 delete mode 100644 docs/img/alert/dingtalk-plugin.png
 delete mode 100644 docs/img/alert/telegram-plugin.png
 delete mode 100644 docs/img/dag_examples_cn.jpg
 delete mode 100644 docs/img/globalParam/image-20210723101242216.png
 delete mode 100644 docs/img/globalParam/image-20210723102522383.png
 delete mode 100644 docs/img/globalParam/image-20210723102938239.png
 delete mode 100644 docs/img/globalParam/image-20210723103316896.png
 delete mode 100644 docs/img/globalParam/image-20210723103937052.png
 delete mode 100644 docs/img/globalParam/image-20210723104411489.png
 delete mode 100644 docs/img/globalParam/image-20210723104957031.png
 delete mode 100644 docs/img/globalParam/image-20210723105026924.png
 delete mode 100644 docs/img/globalParam/image-20210723105131381.png
 delete mode 100644 docs/img/globalParam/image-20210723105255850.png
 delete mode 100644 docs/img/global_parameter.png
 create mode 100644 docs/img/new_ui/dev/about/glossary.png
 create mode 100644 docs/img/new_ui/dev/alert/alert_dingtalk.png
 create mode 100644 docs/img/new_ui/dev/alert/alert_instance01.png
 create mode 100644 docs/img/new_ui/dev/alert/alert_instance02.png
 create mode 100644 docs/img/new_ui/dev/alert/alert_instance03.png
 create mode 100644 docs/img/new_ui/dev/alert/alert_instance04.png
 create mode 100644 docs/img/new_ui/dev/alert/alert_telegram.png
 create mode 100644 docs/img/new_ui/dev/parameter/context_log01.png
 create mode 100644 docs/img/new_ui/dev/parameter/context_log02.png
 create mode 100644 docs/img/new_ui/dev/parameter/context_log03.png
 create mode 100644 docs/img/new_ui/dev/parameter/context_parameter01.png
 create mode 100644 docs/img/new_ui/dev/parameter/context_parameter02.png
 create mode 100644 docs/img/new_ui/dev/parameter/context_parameter03.png
 create mode 100644 docs/img/new_ui/dev/parameter/context_parameter04.png
 create mode 100644 docs/img/new_ui/dev/parameter/priority_parameter01.png
 create mode 100644 docs/img/new_ui/dev/parameter/priority_parameter02.png
 create mode 100644 docs/img/new_ui/dev/parameter/priority_parameter03.png
 create mode 100644 docs/img/new_ui/dev/parameter/priority_parameter04.png
 delete mode 100644 docs/img/switch_configure.jpg
 create mode 100644 docs/img/tasks/demo/switch_01.png
 create mode 100644 docs/img/tasks/demo/switch_02.png
 create mode 100644 docs/img/tasks/demo/switch_03.png
 create mode 100644 docs/img/tasks/demo/switch_04.png
 create mode 100644 dolphinscheduler-ui/src/locales/en_US/crontab.ts
 create mode 100644 dolphinscheduler-ui/src/locales/en_US/data-quality.ts
 create mode 100644 dolphinscheduler-ui/src/locales/en_US/datasource.ts
 copy dolphinscheduler-ui/src/{views/projects/task/components/node/fields/use-emr.ts => locales/en_US/home.ts} (51%)
 create mode 100644 dolphinscheduler-ui/src/locales/en_US/index.ts
 copy dolphinscheduler-ui/src/locales/{index.ts => en_US/login.ts} (75%)
 create mode 100644 dolphinscheduler-ui/src/locales/en_US/menu.ts
 copy dolphinscheduler-ui/src/locales/{index.ts => en_US/modal.ts} (75%)
 create mode 100644 dolphinscheduler-ui/src/locales/en_US/monitor.ts
 copy dolphinscheduler-ui/src/locales/{index.ts => en_US/password.ts} (70%)
 copy dolphinscheduler-ui/src/{views/projects/task/components/node/fields/use-emr.ts => locales/en_US/profile.ts} (53%)
 create mode 100644 dolphinscheduler-ui/src/locales/en_US/project.ts
 create mode 100644 dolphinscheduler-ui/src/locales/en_US/resource.ts
 create mode 100644 dolphinscheduler-ui/src/locales/en_US/security.ts
 copy dolphinscheduler-ui/src/locales/{index.ts => en_US/theme.ts} (75%)
 copy dolphinscheduler-ui/src/locales/{index.ts => en_US/user-dropdown.ts} (75%)
 delete mode 100644 dolphinscheduler-ui/src/locales/modules/en_US.ts
 delete mode 100644 dolphinscheduler-ui/src/locales/modules/zh_CN.ts
 create mode 100644 dolphinscheduler-ui/src/locales/zh_CN/crontab.ts
 create mode 100644 dolphinscheduler-ui/src/locales/zh_CN/data-quality.ts
 create mode 100644 dolphinscheduler-ui/src/locales/zh_CN/datasource.ts
 copy dolphinscheduler-ui/src/{views/projects/task/components/node/fields/use-emr.ts => locales/zh_CN/home.ts} (52%)
 create mode 100644 dolphinscheduler-ui/src/locales/zh_CN/index.ts
 copy dolphinscheduler-ui/src/locales/{index.ts => zh_CN/login.ts} (75%)
 create mode 100644 dolphinscheduler-ui/src/locales/zh_CN/menu.ts
 copy dolphinscheduler-ui/src/locales/{index.ts => zh_CN/modal.ts} (75%)
 create mode 100644 dolphinscheduler-ui/src/locales/zh_CN/monitor.ts
 copy dolphinscheduler-ui/src/locales/{index.ts => zh_CN/password.ts} (73%)
 copy dolphinscheduler-ui/src/{views/projects/task/components/node/fields/use-emr.ts => locales/zh_CN/profile.ts} (55%)
 create mode 100644 dolphinscheduler-ui/src/locales/zh_CN/project.ts
 create mode 100644 dolphinscheduler-ui/src/locales/zh_CN/resource.ts
 create mode 100644 dolphinscheduler-ui/src/locales/zh_CN/security.ts
 copy dolphinscheduler-ui/src/locales/{index.ts => zh_CN/theme.ts} (75%)
 copy dolphinscheduler-ui/src/locales/{index.ts => zh_CN/user-dropdown.ts} (75%)
 create mode 100644 dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-jupyter.ts
 create mode 100644 dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-openmldb.ts


[dolphinscheduler] 16/18: [Fix-10317] [ui] Fix the tips of startTimeout in the jupyter form (#10319)

Posted by li...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

liudongkai pushed a commit to branch 3.0.0-beta-2-prepare
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git

commit d95aa7138385d4bb80c8d04616847c98141dceda
Author: aiwenmo <32...@users.noreply.github.com>
AuthorDate: Wed Jun 1 10:19:36 2022 +0800

    [Fix-10317] [ui] Fix the tips of startTimeout in the jupyter form (#10319)
    
    Co-authored-by: wenmo <32...@users.noreply.github.com>
    (cherry picked from commit 3f2a21293d1b7cc8fe12a5e951fda15d231b05ac)
---
 .../src/views/projects/task/components/node/fields/use-jupyter.ts       | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-jupyter.ts b/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-jupyter.ts
index 1f37f6ba00..a35510840f 100644
--- a/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-jupyter.ts
+++ b/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-jupyter.ts
@@ -146,7 +146,7 @@ export function useJupyter(model: { [field: string]: any }): IJsonItem[] {
       field: 'startTimeout',
       name: t('project.node.jupyter_start_timeout'),
       props: {
-        placeholder: t('project.node.zeppelin_note_id_tips')
+        placeholder: t('project.node.jupyter_start_timeout_tips')
       }
       //       validate: {
       //         trigger: ['input', 'blur'],


[dolphinscheduler] 11/18: [doc] Fix api standard error (#10292)

Posted by li...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

liudongkai pushed a commit to branch 3.0.0-beta-2-prepare
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git

commit 271ef65c38a8eca1b629313a400a6c43408a3912
Author: xiangzihao <46...@qq.com>
AuthorDate: Mon May 30 16:07:25 2022 +0800

    [doc] Fix api standard error (#10292)
    
    * fix api standard error
    * add patch method
    
    (cherry picked from commit 12a09f6d5dc6635fcfaa430dc1d45240d2d34a05)
---
 docs/docs/en/development/api-standard.md | 36 +++++++++++++++++++------------
 docs/docs/zh/development/api-standard.md | 37 ++++++++++++++++++++------------
 2 files changed, 45 insertions(+), 28 deletions(-)

diff --git a/docs/docs/en/development/api-standard.md b/docs/docs/en/development/api-standard.md
index 7a6421cd73..61d6622165 100644
--- a/docs/docs/en/development/api-standard.md
+++ b/docs/docs/en/development/api-standard.md
@@ -20,25 +20,25 @@ Use URI to locate the resource, and use GET to indicate query.
 + When the URI is a type of resource, it means to query a type of resource. For example, the following example indicates paging query `alter-groups`.
 ```
 Method: GET
-/api/dolphinscheduler/alert-groups
+/dolphinscheduler/alert-groups
 ```
 
 + When the URI is a single resource, it means to query this resource. For example, the following example means to query the specified `alter-group`.
 ```
 Method: GET
-/api/dolphinscheduler/alter-groups/{id}
+/dolphinscheduler/alter-groups/{id}
 ```
 
 + In addition, we can also express query sub-resources based on URI, as follows:
 ```
 Method: GET
-/api/dolphinscheduler/projects/{projectId}/tasks
+/dolphinscheduler/projects/{projectId}/tasks
 ```
 
 **The above examples all represent paging query. If we need to query all data, we need to add `/list` after the URI to distinguish. Do not mix the same API for both paged query and query.**
 ```
 Method: GET
-/api/dolphinscheduler/alert-groups/list
+/dolphinscheduler/alert-groups/list
 ```
 
 ### ② Create - POST
@@ -48,13 +48,13 @@ Use URI to locate the resource, use POST to indicate create, and then return the
 
 ```
 Method: POST
-/api/dolphinscheduler/alter-groups
+/dolphinscheduler/alter-groups
 ```
 
 + create sub-resources is also the same as above.
 ```
 Method: POST
-/api/dolphinscheduler/alter-groups/{alterGroupId}/tasks
+/dolphinscheduler/alter-groups/{alterGroupId}/tasks
 ```
 
 ### ③ Modify - PUT
@@ -62,7 +62,7 @@ Use URI to locate the resource, use PUT to indicate modify.
 + modify an `alert-group`
 ```
 Method: PUT
-/api/dolphinscheduler/alter-groups/{alterGroupId}
+/dolphinscheduler/alter-groups/{alterGroupId}
 ```
 
 ### ④ Delete -DELETE
@@ -71,20 +71,28 @@ Use URI to locate the resource, use DELETE to indicate delete.
 + delete an `alert-group`
 ```
 Method: DELETE
-/api/dolphinscheduler/alter-groups/{alterGroupId}
+/dolphinscheduler/alter-groups/{alterGroupId}
 ```
 
 + batch deletion: batch delete the id array,we should use POST. **(Do not use the DELETE method, because the body of the DELETE request has no semantic meaning, and it is possible that some gateways, proxies, and firewalls will directly strip off the request body after receiving the DELETE request.)**
 ```
 Method: POST
-/api/dolphinscheduler/alter-groups/batch-delete
+/dolphinscheduler/alter-groups/batch-delete
 ```
 
-### ⑤ Others
+### ⑤ Partial Modifications -PATCH
+Use URI to locate the resource, use PATCH to partial modifications.
+
+```
+Method: PATCH
+/dolphinscheduler/alter-groups/{alterGroupId}
+```
+
+### ⑥ Others
 In addition to creating, deleting, modifying and quering, we also locate the corresponding resource through url, and then append operations to it after the path, such as:
 ```
-/api/dolphinscheduler/alert-groups/verify-name
-/api/dolphinscheduler/projects/{projectCode}/process-instances/{code}/view-gantt
+/dolphinscheduler/alert-groups/verify-name
+/dolphinscheduler/projects/{projectCode}/process-instances/{code}/view-gantt
 ```
 
 ## 3. Parameter design
@@ -94,7 +102,7 @@ In the case of paging, if the parameter entered by the user is less than 1, the
 
 ## 4. Others design
 ### base URL
-The URI of the project needs to use `/api/<project_name>` as the base path, so as to identify that these APIs are under this project.
+The URI of the project needs to use `/<project_name>` as the base path, so as to identify that these APIs are under this project.
 ```
-/api/dolphinscheduler
+/dolphinscheduler
 ```
\ No newline at end of file
diff --git a/docs/docs/zh/development/api-standard.md b/docs/docs/zh/development/api-standard.md
index e3597608ab..0d528cea26 100644
--- a/docs/docs/zh/development/api-standard.md
+++ b/docs/docs/zh/development/api-standard.md
@@ -23,25 +23,25 @@ Restful URI 的设计基于资源:
 + 当 URI 为一类资源时表示查询一类资源,例如下面样例表示分页查询 `alter-groups`。
 ```
 Method: GET
-/api/dolphinscheduler/alert-groups
+/dolphinscheduler/alert-groups
 ```
 
 + 当 URI 为单个资源时表示查询此资源,例如下面样例表示查询对应的 `alter-group`。
 ```
 Method: GET
-/api/dolphinscheduler/alter-groups/{id}
+/dolphinscheduler/alter-groups/{id}
 ```
 
 + 此外,我们还可以根据 URI 来表示查询子资源,如下:
 ```
 Method: GET
-/api/dolphinscheduler/projects/{projectId}/tasks
+/dolphinscheduler/projects/{projectId}/tasks
 ```
 
 **上述的关于查询的方式都表示分页查询,如果我们需要查询全部数据的话,则需在 URI 的后面加 `/list` 来区分。分页查询和查询全部不要混用一个 API。**
 ```
 Method: GET
-/api/dolphinscheduler/alert-groups/list
+/dolphinscheduler/alert-groups/list
 ```
 
 ### ② 创建操作 - POST
@@ -51,20 +51,20 @@ Method: GET
 
 ```
 Method: POST
-/api/dolphinscheduler/alter-groups
+/dolphinscheduler/alter-groups
 ```
 
 + 创建子资源也是类似的操作:
 ```
 Method: POST
-/api/dolphinscheduler/alter-groups/{alterGroupId}/tasks
+/dolphinscheduler/alter-groups/{alterGroupId}/tasks
 ```
 
 ### ③ 修改操作 - PUT
 通过 URI 来定位某一资源,通过 PUT 指定对其修改。
 ```
 Method: PUT
-/api/dolphinscheduler/alter-groups/{alterGroupId}
+/dolphinscheduler/alter-groups/{alterGroupId}
 ```
 
 ### ④ 删除操作 -DELETE
@@ -73,20 +73,29 @@ Method: PUT
 + 下面例子表示删除 `alterGroupId` 对应的资源:
 ```
 Method: DELETE
-/api/dolphinscheduler/alter-groups/{alterGroupId}
+/dolphinscheduler/alter-groups/{alterGroupId}
 ```
 
 + 批量删除:对传入的 id 数组进行批量删除,使用 POST 方法。**(这里不要用 DELETE 方法,因为 DELETE 请求的 body 在语义上没有任何意义,而且有可能一些网关,代理,防火墙在收到 DELETE 请求后会把请求的 body 直接剥离掉。)**
 ```
 Method: POST
-/api/dolphinscheduler/alter-groups/batch-delete
+/dolphinscheduler/alter-groups/batch-delete
 ```
 
-### ⑤ 其他操作
+### ⑤ 部分更新操作 -PATCH
+通过 URI 来定位某一资源,通过 PATCH 指定对其部分更新。
+
++ 下面例子表示部分更新 `alterGroupId` 对应的资源:
+```
+Method: PATCH
+/dolphinscheduler/alter-groups/{alterGroupId}
+```
+
+### ⑥ 其他操作
 除增删改查外的操作,我们同样也通过 `url` 定位到对应的资源,然后再在路径后面追加对其进行的操作。例如:
 ```
-/api/dolphinscheduler/alert-groups/verify-name
-/api/dolphinscheduler/projects/{projectCode}/process-instances/{code}/view-gantt
+/dolphinscheduler/alert-groups/verify-name
+/dolphinscheduler/projects/{projectCode}/process-instances/{code}/view-gantt
 ```
 
 ## 3. 参数设计
@@ -96,7 +105,7 @@ Method: POST
 
 ## 4. 其他设计
 ### 基础路径
-整个项目的 URI 需要以 `/api/<project_name>` 作为基础路径,从而标识这类 API 都是项目下的,即:
+整个项目的 URI 需要以 `/<project_name>` 作为基础路径,从而标识这类 API 都是项目下的,即:
 ```
-/api/dolphinscheduler
+/dolphinscheduler
 ```
\ No newline at end of file


[dolphinscheduler] 01/18: [doc] Refactor context parameter docment (#10227)

Posted by li...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

liudongkai pushed a commit to branch 3.0.0-beta-2-prepare
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git

commit 8ac6fa6dbc1fb68f83f08fd8b826efcea6671137
Author: QuakeWang <45...@users.noreply.github.com>
AuthorDate: Mon May 30 11:44:10 2022 +0800

    [doc] Refactor context parameter docment (#10227)
    
    (cherry picked from commit cd36401a6a57fbbec9bc6da088fa6dbd0aa672ab)
---
 docs/docs/en/guide/parameter/context.md            |  66 ++++++++++++---------
 docs/docs/zh/guide/parameter/context.md            |  65 +++++++++++---------
 docs/img/globalParam/image-20210723101242216.png   | Bin 44625 -> 0 bytes
 docs/img/globalParam/image-20210723102522383.png   | Bin 42919 -> 0 bytes
 docs/img/globalParam/image-20210723104957031.png   | Bin 36588 -> 0 bytes
 docs/img/globalParam/image-20210723105026924.png   | Bin 37906 -> 0 bytes
 docs/img/globalParam/image-20210723105131381.png   | Bin 34311 -> 0 bytes
 docs/img/globalParam/image-20210723105255850.png   | Bin 38332 -> 0 bytes
 docs/img/global_parameter.png                      | Bin 94677 -> 0 bytes
 docs/img/new_ui/dev/parameter/context_log01.png    | Bin 0 -> 311889 bytes
 docs/img/new_ui/dev/parameter/context_log02.png    | Bin 0 -> 311298 bytes
 docs/img/new_ui/dev/parameter/context_log03.png    | Bin 0 -> 297036 bytes
 .../new_ui/dev/parameter/context_parameter01.png   | Bin 0 -> 165499 bytes
 .../new_ui/dev/parameter/context_parameter02.png   | Bin 0 -> 160262 bytes
 .../new_ui/dev/parameter/context_parameter03.png   | Bin 0 -> 157262 bytes
 .../new_ui/dev/parameter/context_parameter04.png   | Bin 0 -> 150018 bytes
 16 files changed, 76 insertions(+), 55 deletions(-)

diff --git a/docs/docs/en/guide/parameter/context.md b/docs/docs/en/guide/parameter/context.md
index e211e4bdd2..170477c078 100644
--- a/docs/docs/en/guide/parameter/context.md
+++ b/docs/docs/en/guide/parameter/context.md
@@ -6,10 +6,6 @@ DolphinScheduler provides the ability to refer to each other between parameters,
 
 The premise of local tasks referring global parameters is that you have already defined [Global Parameter](global.md). The usage is similar to the usage in [local parameters](local.md), but the value of the parameter needs to be configured as the key of the global parameter.
 
-![parameter-call-global-in-local](/img/global_parameter.png)
-
-As the figure above shows, `${biz_date}` and `${curdate}` are examples of local parameters that refer to global parameters. Observe the last line of the above figure, `local_param_bizdate` uses `${global_bizdate}` to refer to the global parameter. In the shell script, you can use `${local_param_bizdate}` to refer to the value of the global variable `global_bizdate`, or set the value of `local_param_bizdate` directly through JDBC. Similarly, `local_param` refers to the global parameters d [...]
-
 ## Pass Parameter From Upstream Task to Downstream
 
 DolphinScheduler allows parameter transfer between tasks. Currently, transfer direction only supports one-way transfer from upstream to downstream. The task types that support this feature are:
@@ -20,47 +16,63 @@ DolphinScheduler allows parameter transfer between tasks. Currently, transfer di
 
 When defining an upstream node, if there is a need to transmit the result of that node to a dependency related downstream node. You need to set an `OUT` direction parameter to [Custom Parameters] of the [Current Node Settings]. At present, we mainly focus on the SQL and shell nodes to pass parameters downstream.
 
-### SQL
+> Note: If there are no dependencies between nodes, local parameters cannot be passed upstream.
+
+### Example
+
+This sample shows how to use the parameter passing function. Create local parameters and assign them to downstream through the SHELL task. The SQL task completes the query operation by obtaining the parameters of the upstream task.
+
+#### Create a SHELL task and set parameters
+
+The user needs to pass the parameter when creating the shell script, the output statement format is `'${setValue(key=value)}'`, the key is the `prop` of the corresponding parameter, and value is the value of the parameter.
+
+Create a Node_A task, add output and value parameters to the custom parameters, and write the following script:
+
+![context-parameter01](/img/new_ui/dev/parameter/context_parameter01.png)
+
+Parameter Description:
 
-`prop` is user-specified; the direction selects `OUT`, and will define as an export parameter only when the direction is `OUT`. Choose data structures for data type according to the scenario, and the leave the value part blank.
+- value: The direction selection is IN, and the value is 66
+- output: The direction is selected as OUT, assigned through the script`'${setValue(output=1)}'`, and passed to the downstream parameters
 
-If the result of the SQL node has only one row, one or multiple fields, the name of the `prop` needs to be the same as the field name. The data type can choose structure except `LIST`. The parameter assigns the value according to the same column name in the SQL query result.
+When the SHELL node is defined, the log detects the format of `${setValue(output=1)}`, it will assign 1 to output, and the downstream node can directly use the value of the variable output. Similarly, you can find the corresponding node instance on the [Workflow Instance] page, and then you can view the value of this variable.
 
-If the result of the SQL node has multiple rows, one or more fields, the name of the `prop` needs to be the same as the field name. Choose the data type structure as `LIST`, and the SQL query result will be converted to `LIST<VARCHAR>`, and forward to convert to JSON as the parameter value.
+Create the Node_B task, which is mainly used to test and output the parameters passed by the upstream task Node_A.
 
-Let's make an example of the SQL node process in the above picture:
+![context-parameter02](/img/new_ui/dev/parameter/context_parameter02.png)
 
-The following defines the [createParam1] node in the above figure:
+#### Create SQL tasks and use parameters
 
-![png05](/img/globalParam/image-20210723104957031.png)
+When the SHELL task is completed, we can use the output passed upstream as the query object for the SQL. The id of the query is renamed to ID and is output as a parameter.
 
-The following defines the [createParam2] node:
+![context-parameter03](/img/new_ui/dev/parameter/context_parameter03.png)
 
-![png06](/img/globalParam/image-20210723105026924.png)
+> Note: If the result of the SQL node has only one row, one or multiple fields, the name of the `prop` needs to be the same as the field name. The data type can choose structure except `LIST`. The parameter assigns the value according to the same column name in the SQL query result.
+>
+>If the result of the SQL node has multiple rows, one or more fields, the name of the `prop` needs to be the same as the field name. Choose the data type structure as `LIST`, and the SQL query result will be converted to `LIST<VARCHAR>`, and forward to convert to JSON as the parameter value.
 
-Find the value of the variable in the [Workflow Instance] page corresponding to the node instance.
+#### Save the workflow and set the global parameters
 
-The following shows the Node instance [createparam1]:
+Click on the Save workflow icon and set the global parameters output and value.
 
-![png07](/img/globalParam/image-20210723105131381.png)
+![context-parameter03](/img/new_ui/dev/parameter/context_parameter04.png)
 
-Here, the value of "id" is 12.
+#### View results
 
-Let's see the case of the node instance [createparam2].
+After the workflow is created, run the workflow online and view its running results.
 
-![png08](/img/globalParam/image-20210723105255850.png)
+The result of Node_A is as follows:
 
-There is only the "id" value. Although the user-defined SQL query both "id" and "database_name" field, only set the `OUT` parameter `id` due to only one parameter "id" is defined for output. The length of the result list is 10 due to display reasons.
+![context-log01](/img/new_ui/dev/parameter/context_log01.png)
 
-### SHELL
+The result of Node_B is as follows:
 
-`prop` is user-specified and the direction is `OUT`. The output is defined as an export parameter only when the direction is `OUT`. Choose data structures for data type according to the scenario, and leave the value part blank.
-The user needs to pass the parameter when creating the shell script, the output statement format is `${setValue(key=value)}`, the key is the `prop` of the corresponding parameter, and value is the value of the parameter.
+![context-log02](/img/new_ui/dev/parameter/context_log02.png)
 
-For example, in the figure below:
+The result of Node_mysql is as follows:
 
-![png09](/img/globalParam/image-20210723101242216.png)
+![context-log03](/img/new_ui/dev/parameter/context_log03.png)
 
-When the log detects the `${setValue(key=value1)}` format in the shell node definition, it will assign value1 to the key, and downstream nodes can use the variable key directly. Similarly, you can find the corresponding node instance on the [Workflow Instance] page to see the value of the variable.
+Even though output is assigned a value of 1 in Node_A's script, the log still shows a value of 100. But according to the principle from [parameter priority](priority.md): `Local Parameter > Parameter Context > Global Parameter`, the output value in Node_B is 1. It proves that the output parameter is passed in the workflow with reference to the expected value, and the query operation is completed using this value in Node_mysql.
 
-![png10](/img/globalParam/image-20210723102522383.png)
+But the output value 66 only shows in the Node_A, the reason is that the direction of value is selected as IN, and only when the direction is OUT will it be defined as a variable output.
diff --git a/docs/docs/zh/guide/parameter/context.md b/docs/docs/zh/guide/parameter/context.md
index d014b9454e..2e55ac7414 100644
--- a/docs/docs/zh/guide/parameter/context.md
+++ b/docs/docs/zh/guide/parameter/context.md
@@ -4,11 +4,7 @@ DolphinScheduler 提供参数间相互引用的能力,包括:本地参数引
 
 ## 本地任务引用全局参数
 
-本地任务引用全局参数的前提是,你已经定义了[全局参数](global.md),使用方式和[本地参数](local.md)中的使用方式类似,但是参数的值需要配置成全局参数中的key
-
-![parameter-call-global-in-local](/img/global_parameter.png)
-
-如上图中的`${biz_date}`以及`${curdate}`,就是本地参数引用全局参数的例子。观察上图的最后一行,local_param_bizdate通过\${global_bizdate}来引用全局参数,在shell脚本中可以通过\${local_param_bizdate}来引全局变量 global_bizdate的值,或通过JDBC直接将local_param_bizdate的值set进去。同理,local_param通过${local_param}引用上一节中定义的全局参数。​biz_date、biz_curdate、system.datetime都是用户自定义的参数,通过${全局参数}进行赋值。
+本地任务引用全局参数的前提是,你已经定义了[全局参数](global.md),使用方式和[本地参数](local.md)中的使用方式类似,但是参数的值需要配置成全局参数中的 key。
 
 ## 上游任务传递给下游任务
 
@@ -20,50 +16,63 @@ DolphinScheduler 允许在任务间进行参数传递,目前传递方向仅支
 
 当定义上游节点时,如果有需要将该节点的结果传递给有依赖关系的下游节点,需要在【当前节点设置】的【自定义参数】设置一个方向是 OUT 的变量。目前我们主要针对 SQL 和 SHELL 节点做了可以向下传递参数的功能。
 
-### SQL
+> 注:若节点之间没有依赖关系,则局部参数无法通过上游传递。
+
+### 任务样例
+
+本样例展示了如何使用参数传递的功能,通过 SHELL 任务来创建本地参数并赋值传递给下游,SQL 任务通过获得上游任务的参数完成查询操作。
+
+#### 创建 SHELL 任务,设置参数
+
+> 用户需要传递参数,在定义 SHELL 脚本时,需要输出格式为 ${setValue(key=value)} 的语句,key 为对应参数的 prop,value 为该参数的值。
 
-prop 为用户指定;方向选择为 OUT,只有当方向为 OUT 时才会被定义为变量输出;数据类型可以根据需要选择不同数据结构;value 部分不需要填写。
+创建 Node_A 任务,在自定义参数中添加 output 和 value 参数,并编写如下脚本:
 
-如果 SQL 节点的结果只有一行,一个或多个字段,prop 的名字需要和字段名称一致。数据类型可选择为除 LIST 以外的其他类型。变量会选择 SQL 查询结果中的列名中与该变量名称相同的列对应的值。
+![context-parameter01](/img/new_ui/dev/parameter/context_parameter01.png)
 
-如果 SQL 节点的结果为多行,一个或多个字段,prop 的名字需要和字段名称一致。数据类型选择为LIST。获取到 SQL 查询结果后会将对应列转化为 LIST<VARCHAR>,并将该结果转化为 JSON 后作为对应变量的值。
+参数说明:
 
-我们再以上图中包含 SQL 节点的流程举例说明:
+- value:方向选择为 IN,并赋值为 66
+- output:方向选择为 OUT,通过脚本 `'${setValue(output=1)}'` 赋值,并传递给下游参数
 
-上图中节点【createParam1】的定义如下:
+SHELL 节点定义时当日志检测到 ${setValue(output=1)} 的格式时,会将 1 赋值给 output,下游节点便可以直接使用变量 output 的值。同样,您可以在【工作流实例】页面,找到对应的节点实例,便可以查看该变量的值。
 
-<img src="/img/globalParam/image-20210723104957031.png" alt="image-20210723104957031" style="zoom:50%;" />
+创建 Node_B 任务,主要用于测试输出上游任务 Node_A 传递的参数。
 
-节点【createParam2】的定义如下:
+![context-parameter02](/img/new_ui/dev/parameter/context_parameter02.png)
 
-<img src="/img/globalParam/image-20210723105026924.png" alt="image-20210723105026924" style="zoom:50%;" />
+#### 创建 SQL 任务,使用参数
 
-您可以在【工作流实例】页面,找到对应的节点实例,便可以查看该变量的值。
+完成上述的 SHELL 任务之后,我们可以使用上游所传递的 output 作为 SQL 的查询对象。其中将所查询的 id 重命名为 ID,作为参数输出。
 
-节点实例【createParam1】如下:
+![context-parameter03](/img/new_ui/dev/parameter/context_parameter03.png)
 
-<img src="/img/globalParam/image-20210723105131381.png" alt="image-20210723105131381" style="zoom:50%;" />
+> 注:如果 SQL 节点的结果只有一行,一个或多个字段,参数的名字需要和字段名称一致。数据类型可选择为除 LIST 以外的其他类型。变量会选择 SQL 查询结果中的列名中与该变量名称相同的列对应的值。
+>
+> 如果 SQL 节点的结果为多行,一个或多个字段,参数的名字需要和字段名称一致。数据类型选择为 LIST。获取到 SQL 查询结果后会将对应列转化为 LIST,并将该结果转化为 JSON 后作为对应变量的值。
 
-这里当然 "id" 的值会等于 12.
+#### 保存工作流,设置全局参数
 
-我们再来看节点实例【createParam2】的情况。
+点击保存工作流图标,并设置全局参数 output 和 value。
 
-<img src="/img/globalParam/image-20210723105255850.png" alt="image-20210723105255850" style="zoom:50%;" />
+![context-parameter03](/img/new_ui/dev/parameter/context_parameter04.png)
 
-这里只有 "id" 的值。尽管用户定义的 sql 查到的是 "id" 和 "database_name" 两个字段,但是由于只定义了一个为 out 的变量 "id",所以只会设置一个变量。由于显示的原因,这里已经替您查好了该 list 的长度为 10。
+#### 查看运行结果
 
-### SHELL
+创建完成工作流之后,上线运行该工作流,查看其运行结果。
 
-prop 为用户指定;方向选择为 OUT,只有当方向为 OUT 时才会被定义为变量输出;数据类型可以根据需要选择不同数据结构;value 部分不需要填写。
+Node_A 运行结果如下:
 
+![context-log01](/img/new_ui/dev/parameter/context_log01.png)
 
-用户需要传递参数,在定义 shell 脚本时,需要输出格式为 ${setValue(key=value)} 的语句,key 为对应参数的 prop,value 为该参数的值。
+Node_B 运行结果如下:
 
+![context-log02](/img/new_ui/dev/parameter/context_log02.png)
 
-例如下图中:
+Node_mysql 运行结果如下:
 
-<img src="/img/globalParam/image-20210723101242216.png" alt="image-20210723101242216" style="zoom:50%;" />
+![context-log03](/img/new_ui/dev/parameter/context_log03.png)
 
-shell 节点定义时当日志检测到 ${setValue(key=value1)} 的格式时,会将 value1 赋值给 key,下游节点便可以直接使用变量 key 的值。同样,您可以在【工作流实例】页面,找到对应的节点实例,便可以查看该变量的值。
+虽然在 Node_A 的脚本中为 output 赋值为 1,但日志中显示的值仍然为 100。但根据[参数优先级](priority.md)的原则:`本地参数 > 上游任务传递的参数 > 全局参数`,在 Node_B 中输出的值为 1。则证明 output 参数参照预期的值在该工作流中传递,并在 Node_mysql 中使用该值完成查询操作。
 
-<img src="/img/globalParam/image-20210723102522383.png" alt="image-20210723102522383" style="zoom:50%;" />
+但是 value 的值却只有在 Node_A 中输出为 66,其原因为 value 的方向选择为 IN,只有当方向为 OUT 时才会被定义为变量输出。
diff --git a/docs/img/globalParam/image-20210723101242216.png b/docs/img/globalParam/image-20210723101242216.png
deleted file mode 100644
index 649b333c95..0000000000
Binary files a/docs/img/globalParam/image-20210723101242216.png and /dev/null differ
diff --git a/docs/img/globalParam/image-20210723102522383.png b/docs/img/globalParam/image-20210723102522383.png
deleted file mode 100644
index ca04547b07..0000000000
Binary files a/docs/img/globalParam/image-20210723102522383.png and /dev/null differ
diff --git a/docs/img/globalParam/image-20210723104957031.png b/docs/img/globalParam/image-20210723104957031.png
deleted file mode 100644
index 13db035aeb..0000000000
Binary files a/docs/img/globalParam/image-20210723104957031.png and /dev/null differ
diff --git a/docs/img/globalParam/image-20210723105026924.png b/docs/img/globalParam/image-20210723105026924.png
deleted file mode 100644
index 3191d7847d..0000000000
Binary files a/docs/img/globalParam/image-20210723105026924.png and /dev/null differ
diff --git a/docs/img/globalParam/image-20210723105131381.png b/docs/img/globalParam/image-20210723105131381.png
deleted file mode 100644
index 3a8262962a..0000000000
Binary files a/docs/img/globalParam/image-20210723105131381.png and /dev/null differ
diff --git a/docs/img/globalParam/image-20210723105255850.png b/docs/img/globalParam/image-20210723105255850.png
deleted file mode 100644
index 6e3c34dae7..0000000000
Binary files a/docs/img/globalParam/image-20210723105255850.png and /dev/null differ
diff --git a/docs/img/global_parameter.png b/docs/img/global_parameter.png
deleted file mode 100644
index 4a88487752..0000000000
Binary files a/docs/img/global_parameter.png and /dev/null differ
diff --git a/docs/img/new_ui/dev/parameter/context_log01.png b/docs/img/new_ui/dev/parameter/context_log01.png
new file mode 100644
index 0000000000..d34094c9da
Binary files /dev/null and b/docs/img/new_ui/dev/parameter/context_log01.png differ
diff --git a/docs/img/new_ui/dev/parameter/context_log02.png b/docs/img/new_ui/dev/parameter/context_log02.png
new file mode 100644
index 0000000000..0519f95d5f
Binary files /dev/null and b/docs/img/new_ui/dev/parameter/context_log02.png differ
diff --git a/docs/img/new_ui/dev/parameter/context_log03.png b/docs/img/new_ui/dev/parameter/context_log03.png
new file mode 100644
index 0000000000..1732712b08
Binary files /dev/null and b/docs/img/new_ui/dev/parameter/context_log03.png differ
diff --git a/docs/img/new_ui/dev/parameter/context_parameter01.png b/docs/img/new_ui/dev/parameter/context_parameter01.png
new file mode 100644
index 0000000000..3cf9e1b62d
Binary files /dev/null and b/docs/img/new_ui/dev/parameter/context_parameter01.png differ
diff --git a/docs/img/new_ui/dev/parameter/context_parameter02.png b/docs/img/new_ui/dev/parameter/context_parameter02.png
new file mode 100644
index 0000000000..e8f7167a7a
Binary files /dev/null and b/docs/img/new_ui/dev/parameter/context_parameter02.png differ
diff --git a/docs/img/new_ui/dev/parameter/context_parameter03.png b/docs/img/new_ui/dev/parameter/context_parameter03.png
new file mode 100644
index 0000000000..d75f359c31
Binary files /dev/null and b/docs/img/new_ui/dev/parameter/context_parameter03.png differ
diff --git a/docs/img/new_ui/dev/parameter/context_parameter04.png b/docs/img/new_ui/dev/parameter/context_parameter04.png
new file mode 100644
index 0000000000..d472dbf9b3
Binary files /dev/null and b/docs/img/new_ui/dev/parameter/context_parameter04.png differ


[dolphinscheduler] 13/18: [Fix][UI] Display the result page when the DB page has no data. (#10298)

Posted by li...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

liudongkai pushed a commit to branch 3.0.0-beta-2-prepare
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git

commit 4593351cf33e00a3cdd9bf3dbed0765f92c11d2d
Author: songjianet <17...@qq.com>
AuthorDate: Mon May 30 19:28:36 2022 +0800

    [Fix][UI] Display the result page when the DB page has no data. (#10298)
    
    (cherry picked from commit 2e6d3f5190f5ce576094d6d5ea294f118be66ed3)
---
 dolphinscheduler-ui/src/locales/en_US/monitor.ts           |  5 ++++-
 dolphinscheduler-ui/src/locales/zh_CN/monitor.ts           |  5 ++++-
 dolphinscheduler-ui/src/views/monitor/servers/db/index.tsx | 10 +++++++++-
 3 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/dolphinscheduler-ui/src/locales/en_US/monitor.ts b/dolphinscheduler-ui/src/locales/en_US/monitor.ts
index d94d6e913c..85d2f13834 100644
--- a/dolphinscheduler-ui/src/locales/en_US/monitor.ts
+++ b/dolphinscheduler-ui/src/locales/en_US/monitor.ts
@@ -46,7 +46,10 @@ export default {
     health_state: 'Health State',
     max_connections: 'Max Connections',
     threads_connections: 'Threads Connections',
-    threads_running_connections: 'Threads Running Connections'
+    threads_running_connections: 'Threads Running Connections',
+    db_no_data_result_title: 'No DB Nodes Exist',
+    db_no_data_result_desc:
+      'Currently, there are no DB nodes exist, please create a DB node and refresh this page'
   },
   statistics: {
     command_number_of_waiting_for_running:
diff --git a/dolphinscheduler-ui/src/locales/zh_CN/monitor.ts b/dolphinscheduler-ui/src/locales/zh_CN/monitor.ts
index 4b2b4f0c67..62fd110b1a 100644
--- a/dolphinscheduler-ui/src/locales/zh_CN/monitor.ts
+++ b/dolphinscheduler-ui/src/locales/zh_CN/monitor.ts
@@ -46,7 +46,10 @@ export default {
     health_state: '健康状态',
     max_connections: '最大连接数',
     threads_connections: '当前连接数',
-    threads_running_connections: '数据库当前活跃连接数'
+    threads_running_connections: '数据库当前活跃连接数',
+    db_no_data_result_title: 'DB节点不存在',
+    db_no_data_result_desc:
+      '目前没有任何DB节点,请先创建DB节点,再访问该页面'
   },
   statistics: {
     command_number_of_waiting_for_running: '待执行的命令数',
diff --git a/dolphinscheduler-ui/src/views/monitor/servers/db/index.tsx b/dolphinscheduler-ui/src/views/monitor/servers/db/index.tsx
index ed20f667bd..0338eb987b 100644
--- a/dolphinscheduler-ui/src/views/monitor/servers/db/index.tsx
+++ b/dolphinscheduler-ui/src/views/monitor/servers/db/index.tsx
@@ -21,6 +21,7 @@ import { useI18n } from 'vue-i18n'
 import { useDatabase } from '@/views/monitor/servers/db/use-database'
 import { CheckCircleOutlined, CloseCircleOutlined } from '@vicons/antd'
 import Card from '@/components/card'
+import Result from '@/components/result'
 import styles from './index.module.scss'
 import type { Ref } from 'vue'
 import type { DatabaseRes } from '@/service/modules/monitor/types'
@@ -37,7 +38,14 @@ const db = defineComponent({
   render() {
     const { t, databaseRef } = this
 
-    return (
+    return databaseRef.length < 1 ? (
+      <Result
+        title={t('monitor.db.db_no_data_result_title')}
+        description={t('monitor.db.db_no_data_result_desc')}
+        status={'info'}
+        size={'medium'}
+      />
+    ) : (
       <NGrid x-gap='12' y-gap='8' cols='2 2xl:4' responsive='screen'>
         <NGi>
           <Card title={t('monitor.db.health_state')}>


[dolphinscheduler] 06/18: [docs] Added local file configuration guide for resource center (#10264)

Posted by li...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

liudongkai pushed a commit to branch 3.0.0-beta-2-prepare
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git

commit 1afa870abd080c3fad637a775e1510515e89bdcd
Author: Yiming Guo <49...@users.noreply.github.com>
AuthorDate: Mon May 30 12:07:29 2022 +0800

    [docs] Added local file configuration guide for resource center (#10264)
    
    * Added Local File Resource Configuration Guide to the document.
    * Removed contents with windows features in the documents and improved expression.
    * Specify `the user who deploy dolphinscheduler have read and write permissions` in en and zh docs.
    
    Co-authored-by: xiangzihao <46...@qq.com>
    (cherry picked from commit 2294160cdbe7bd0f4215a5e9950cc784aa0b5a7d)
---
 docs/docs/en/guide/resource/configuration.md | 17 ++++++++++++++---
 docs/docs/zh/guide/resource/configuration.md | 11 +++++++++++
 2 files changed, 25 insertions(+), 3 deletions(-)

diff --git a/docs/docs/en/guide/resource/configuration.md b/docs/docs/en/guide/resource/configuration.md
index 7506cc2a81..ffae6db97e 100644
--- a/docs/docs/en/guide/resource/configuration.md
+++ b/docs/docs/en/guide/resource/configuration.md
@@ -2,13 +2,24 @@
 
 The Resource Center is usually used for operations such as uploading files, UDF functions, and task group management. You can appoint the local file directory as the upload directory for a single machine (this operation does not need to deploy Hadoop). Or you can also upload to a Hadoop or MinIO cluster, at this time, you need to have Hadoop (2.6+) or MinIO or other related environments.
 
+## Local File Resource Configuration
+
+For a single machine, you can choose to use local file directory as the upload directory (no need to deploy Hadoop) by making the following configuration.
+
+### Configuring the `common.properties`
+
+Configure the file in the following paths: `api-server/conf/common.properties` and `worker-server/conf/common.properties`.
+
+- Change `data.basedir.path` to the local directory path. Please make sure the user who deploy dolphinscheduler have read and write permissions, such as: `data.basedir.path=/tmp/dolphinscheduler`. And the directory you configured will be auto-created if it does not exists.
+- Modify the following two parameters, `resource.storage.type=HDFS` and `fs.defaultFS=file:///`.
+
 ## HDFS Resource Configuration
 
 When it is necessary to use the Resource Center to create or upload relevant files, all files and resources will be stored on HDFS. Therefore the following configuration is required.
 
 ### Configuring the common.properties
 
-After version 3.0.0-alpha, if you want to upload resources using HDFS or S3 from the Resource Center, you will need to configure the following paths The following paths need to be configured: `api-server/conf/common.properties` and `worker-server/conf/common.properties`. This can be found as follows.
+After version 3.0.0-alpha, if you want to upload resources using HDFS or S3 from the Resource Center, the following paths need to be configured: `api-server/conf/common.properties` and `worker-server/conf/common.properties`. This can be found as follows.
 
 ```properties
 #
@@ -110,7 +121,7 @@ alert.rpc.port=50052
 ```
 
 > **_Note:_**
-> 
+>
 > *  If only the `api-server/conf/common.properties` file is configured, then resource uploading is enabled, but you can not use resources in task. If you want to use or execute the files in the workflow you need to configure `worker-server/conf/common.properties` too.
 > * If you want to use the resource upload function, the deployment user in [installation and deployment](../installation/standalone.md) must have relevant operation authority.
-> * If you using a Hadoop cluster with HA, you need to enable HDFS resource upload, and you need to copy the `core-site.xml` and `hdfs-site.xml` under the Hadoop cluster to `/opt/dolphinscheduler/conf`, otherwise skip this copy step.
+> * If you using a Hadoop cluster with HA, you need to enable HDFS resource upload, and you need to copy the `core-site.xml` and `hdfs-site.xml` under the Hadoop cluster to `/opt/dolphinscheduler/conf`, otherwise skip this copy step.
\ No newline at end of file
diff --git a/docs/docs/zh/guide/resource/configuration.md b/docs/docs/zh/guide/resource/configuration.md
index 1b02a02587..a12184a9db 100644
--- a/docs/docs/zh/guide/resource/configuration.md
+++ b/docs/docs/zh/guide/resource/configuration.md
@@ -2,6 +2,17 @@
 
 资源中心通常用于上传文件、 UDF 函数,以及任务组管理等操作。针对单机环境可以选择本地文件目录作为上传文件夹(此操作不需要部署 Hadoop)。当然也可以选择上传到 Hadoop or MinIO 集群上,此时则需要有 Hadoop(2.6+)或者 MinIOn 等相关环境。
 
+## 本地资源配置
+
+在单机环境下,可以选择使用本地文件目录作为上传文件夹(无需部署Hadoop),此时需要进行如下配置:
+
+### 配置 `common.properties` 文件
+
+对以下路径的文件进行配置:`api-server/conf/common.properties` 和 `worker-server/conf/common.properties`
+
+- 将 `data.basedir.path` 改为本地存储路径,请确保部署 DolphinScheduler 的用户拥有读写权限,例如:`data.basedir.path=/tmp/dolphinscheduler`。当路径不存在时会自动创建文件夹
+- 修改下列两个参数,分别是 `resource.storage.type=HDFS` 和 `fs.defaultFS=file:///`。
+
 ## HDFS 资源配置
 
 当需要使用资源中心进行相关文件的创建或者上传操作时,所有的文件和资源都会被存储在 HDFS 上。所以需要进行以下配置:


[dolphinscheduler] 14/18: [doc] Add how to use resource in shell task (#10308)

Posted by li...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

liudongkai pushed a commit to branch 3.0.0-beta-2-prepare
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git

commit 79b7e83051a64c881957fc1cc28a5eabcf333b24
Author: QuakeWang <45...@users.noreply.github.com>
AuthorDate: Wed Jun 1 17:28:27 2022 +0800

    [doc] Add how to use resource in shell task (#10308)
    
    (cherry picked from commit 6828c9e015d02b792c14aabf0a99394a158e9a87)
---
 docs/docs/en/guide/task/shell.md |  5 ++++-
 docs/docs/zh/guide/task/shell.md | 17 +++++++++--------
 2 files changed, 13 insertions(+), 9 deletions(-)

diff --git a/docs/docs/en/guide/task/shell.md b/docs/docs/en/guide/task/shell.md
index 5f6a6411f5..5a2d09cd44 100644
--- a/docs/docs/en/guide/task/shell.md
+++ b/docs/docs/en/guide/task/shell.md
@@ -43,6 +43,9 @@ After running this example, we would see "param_val" print in the log.
 ![demo-shell-custom-param](/img/tasks/demo/shell_custom_param.jpg)
 
 ## Attention
+
 The shell task type resolves whether the task log contains ```application_xxx_xxx``` to determine whether is the yarn task. If so, the corresponding application
 will be use to judge the running state of the current shell node. At this time, if stops the operation of the workflow, the corresponding ```application_id```
-will be killed.
\ No newline at end of file
+will be killed.
+
+If you want to use resource files in Shell tasks, you can upload corresponding files through the resource center and then use the resources in the Shell task. Reference: [file-manage](../resource/file-manage.md).
diff --git a/docs/docs/zh/guide/task/shell.md b/docs/docs/zh/guide/task/shell.md
index a656c098e7..239c00aecf 100644
--- a/docs/docs/zh/guide/task/shell.md
+++ b/docs/docs/zh/guide/task/shell.md
@@ -2,12 +2,11 @@
 
 ## 综述
 
-Shell 任务类型,用于创建 Shell 类型的任务并执行一系列的 Shell 脚本。worker 执行该任务的时候,会生成一个临时shell脚本,
-并使用与租户同名的 linux 用户执行这个脚本。
+Shell 任务类型,用于创建 Shell 类型的任务并执行一系列的 Shell 脚本。worker 执行该任务的时候,会生成一个临时 shell 脚本,并使用与租户同名的 linux 用户执行这个脚本。
 
 ## 创建任务
 
-- 点击项目管理-项目名称-工作流定义,点击"创建工作流"按钮,进入DAG编辑页面。
+- 点击项目管理-项目名称-工作流定义,点击"创建工作流"按钮,进入 DAG 编辑页面。
 - 工具栏中拖动 <img src="/img/tasks/icons/shell.png" width="15"/> 到画板中,即可完成创建。
 
 ## 任务参数
@@ -15,15 +14,15 @@ Shell 任务类型,用于创建 Shell 类型的任务并执行一系列的 She
 - 任务名称:设置任务的名称。一个工作流定义中的节点名称是唯一的。
 - 运行标志:标识这个节点是否能正常调度,如果不需要执行,可以打开禁止执行开关。
 - 描述:描述该节点的功能。
-- 任务优先级:worker线程数不足时,根据优先级从高到低依次执行,优先级一样时根据先进先出原则执行。
-- Worker分组:任务分配给worker组的机器机执行,选择Default,会随机选择一台worker机执行。
+- 任务优先级:worker 线程数不足时,根据优先级从高到低依次执行,优先级一样时根据先进先出原则执行。
+- Worker 分组:任务分配给 worker 组的机器机执行,选择 Default,会随机选择一台 worker 机执行。
 - 环境名称:配置运行脚本的环境。
 - 失败重试次数:任务失败重新提交的次数,支持下拉和手填。
 - 失败重试间隔:任务失败重新提交任务的时间间隔,支持下拉和手填。
 - 超时告警:勾选超时告警、超时失败,当任务超过"超时时长"后,会发送告警邮件并且任务执行失败.
-- 脚本:用户开发的SHELL程序。
+- 脚本:用户开发的 SHELL 程序。
 - 资源:是指脚本中需要调用的资源文件列表,资源中心-文件管理上传或创建的文件。
-- 自定义参数:是SHELL局部的用户自定义参数,会替换脚本中以${变量}的内容。
+- 自定义参数:是 SHELL 局部的用户自定义参数,会替换脚本中以 `${变量}` 的内容。
 - 前置任务:选择当前任务的前置任务,会将被选择的前置任务设置为当前任务的上游。
 
 ## 任务样例
@@ -45,4 +44,6 @@ Shell 任务类型,用于创建 Shell 类型的任务并执行一系列的 She
 
 ## 注意事项
 
-Shell 任务类型通过解析任务日志是否包含 ```application_xxx_xxx``` 的内容来判断是否 Yarn 任务,如果是则会将相应的 ```application_id``` 的状态作为当前 Shell 节点的运行状态判断,此时如果操作停止工作流则会 Kill 相应的 ```application_id```
\ No newline at end of file
+Shell 任务类型通过解析任务日志是否包含 ```application_xxx_xxx``` 的内容来判断是否 Yarn 任务,如果是则会将相应的 ```application_id``` 的状态作为当前 Shell 节点的运行状态判断,此时如果操作停止工作流则会 Kill 相应的 ```application_id```
+
+如果 Shell 任务中需要使用到用户自定义的脚本,可通过资源中心来上传对应的文件然后在 Shell 任务中引用他们,可参考:[文件管理](../resource/file-manage.md)。


[dolphinscheduler] 10/18: Fix database initialize late in standalone. (#10296)

Posted by li...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

liudongkai pushed a commit to branch 3.0.0-beta-2-prepare
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git

commit 40073821933cc3b863db5cecf096813a516c0fe7
Author: Wenjun Ruan <we...@apache.org>
AuthorDate: Tue May 31 11:52:00 2022 +0800

    Fix database initialize late in standalone. (#10296)
    
    (cherry picked from commit 3a9e67325e07e854c2ac796995891ee3b8b192b1)
---
 .../dolphinscheduler/dao/datasource/SpringConnectionFactory.java | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/datasource/SpringConnectionFactory.java b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/datasource/SpringConnectionFactory.java
index d477972ff1..74ca570fb1 100644
--- a/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/datasource/SpringConnectionFactory.java
+++ b/dolphinscheduler-dao/src/main/java/org/apache/dolphinscheduler/dao/datasource/SpringConnectionFactory.java
@@ -24,8 +24,11 @@ import org.apache.ibatis.type.JdbcType;
 
 import java.util.Properties;
 
+import javax.annotation.Resource;
 import javax.sql.DataSource;
 
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.jdbc.init.DataSourceScriptDatabaseInitializer;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
@@ -41,6 +44,12 @@ import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean;
 @Configuration
 public class SpringConnectionFactory {
 
+    /**
+     * Inject this field to make sure the database is initialized, this can solve the table not found issue #8432.
+     */
+    @Autowired(required = false)
+    public DataSourceScriptDatabaseInitializer dataSourceScriptDatabaseInitializer;
+
     @Bean
     public PaginationInterceptor paginationInterceptor() {
         return new PaginationInterceptor();


[dolphinscheduler] 09/18: [Fix][UI] Add mapping_columns filed for the data_quality ruleInputParamter. (#10286)

Posted by li...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

liudongkai pushed a commit to branch 3.0.0-beta-2-prepare
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git

commit 3687eb7a9a2a488ce32db4419df88d10d7c9ff3d
Author: Amy0104 <97...@users.noreply.github.com>
AuthorDate: Mon May 30 13:54:10 2022 +0800

    [Fix][UI] Add mapping_columns filed for the data_quality ruleInputParamter. (#10286)
    
    (cherry picked from commit e7fbfa3a26cfe1e697d8f99f1381c2942164d2d8)
---
 .../task/components/node/fields/use-rules.ts         | 20 ++++++++++++++++----
 .../projects/task/components/node/format-data.ts     |  7 ++++++-
 .../src/views/projects/task/components/node/types.ts |  4 +++-
 3 files changed, 25 insertions(+), 6 deletions(-)

diff --git a/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-rules.ts b/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-rules.ts
index 78c9592a6c..dde32cbc62 100644
--- a/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-rules.ts
+++ b/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-rules.ts
@@ -42,7 +42,7 @@ export function useRules(
   const targetTableColumnOptions = ref([] as { label: string; value: number }[])
   const writerDatasourceOptions = ref([] as { label: string; value: number }[])
 
-  const fixValueSpan = computed(() => model.comparison_type === 1 ? 24 : 0)
+  const fixValueSpan = computed(() => (model.comparison_type === 1 ? 24 : 0))
 
   let preItemLen = 0
 
@@ -67,7 +67,9 @@ export function useRules(
     if (ruleLoading.value) return
     ruleLoading.value = true
     const result = await getRuleFormCreateJson(ruleId)
-    const items = JSON.parse(result).map((item: IResponseJsonItem) => formatResponseJson(item))
+    const items = JSON.parse(result).map((item: IResponseJsonItem) =>
+      formatResponseJson(item)
+    )
     updateRules(items, preItemLen)
     preItemLen = items.length
     ruleLoading.value = false
@@ -76,7 +78,6 @@ export function useRules(
   const formatResponseJson = (
     responseItem: IResponseJsonItem
   ): IJsonItemParams => {
-    responseItem.props.placeholder = t('project.node.' + responseItem.props.placeholder.split(' ').join('_').split(',').join('').toLowerCase())
     const item: IJsonItemParams = {
       field: responseItem.field,
       options: responseItem.options,
@@ -95,7 +96,7 @@ export function useRules(
         child.span = Math.floor(22 / item.props.rules.length)
         return child
       })
-      model[item.field] = []
+      model[item.field] = model[item.field] || []
       delete item.props.rules
     }
     if (responseItem.emit) {
@@ -107,6 +108,17 @@ export function useRules(
         }
       })
     }
+    if (responseItem.props.placeholder) {
+      item.props.placeholder = t(
+        'project.node.' +
+          responseItem.props.placeholder
+            .split(' ')
+            .join('_')
+            .split(',')
+            .join('')
+            .toLowerCase()
+      )
+    }
     if (item.field === 'src_datasource_id') {
       item.options = srcDatasourceOptions
     }
diff --git a/dolphinscheduler-ui/src/views/projects/task/components/node/format-data.ts b/dolphinscheduler-ui/src/views/projects/task/components/node/format-data.ts
index c04c7daf7a..5d441635f0 100644
--- a/dolphinscheduler-ui/src/views/projects/task/components/node/format-data.ts
+++ b/dolphinscheduler-ui/src/views/projects/task/components/node/format-data.ts
@@ -294,7 +294,8 @@ export function formatParams(data: INodeData): {
       target_connector_type: data.target_connector_type,
       target_datasource_id: data.target_datasource_id,
       target_table: data.target_table,
-      threshold: data.threshold
+      threshold: data.threshold,
+      mapping_columns: JSON.stringify(data.mapping_columns)
     }
     taskParams.sparkParameters = {
       deployMode: data.deployMode,
@@ -524,6 +525,10 @@ export function formatModel(data: ITaskData) {
       data.taskParams.ruleInputParameter.target_datasource_id
     params.target_table = data.taskParams.ruleInputParameter.target_table
     params.threshold = data.taskParams.ruleInputParameter.threshold
+    if (data.taskParams.ruleInputParameter.mapping_columns)
+      params.mapping_columns = JSON.parse(
+        data.taskParams.ruleInputParameter.mapping_columns
+      )
   }
   if (data.taskParams?.sparkParameters) {
     params.deployMode = data.taskParams.sparkParameters.deployMode
diff --git a/dolphinscheduler-ui/src/views/projects/task/components/node/types.ts b/dolphinscheduler-ui/src/views/projects/task/components/node/types.ts
index bbcaecbc08..c909ec21a0 100644
--- a/dolphinscheduler-ui/src/views/projects/task/components/node/types.ts
+++ b/dolphinscheduler-ui/src/views/projects/task/components/node/types.ts
@@ -213,6 +213,7 @@ interface IRuleParameters {
   target_datasource_id?: number
   target_table?: string
   threshold?: string
+  mapping_columns?: string
 }
 
 interface ITaskParams {
@@ -322,7 +323,7 @@ interface INodeData
     >,
     ISqoopTargetData,
     ISqoopSourceData,
-    IRuleParameters {
+    Omit<IRuleParameters, 'mapping_columns'> {
   id?: string
   taskType?: ITaskType
   processName?: number
@@ -357,6 +358,7 @@ interface INodeData
   failedBranch?: number
   udfs?: string[]
   customConfig?: boolean
+  mapping_columns?: object[]
 }
 
 interface ITaskData


[dolphinscheduler] 18/18: [Fix-10318][ui] Fix EMR Task UI custom parameters Is not correct (#10334)

Posted by li...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

liudongkai pushed a commit to branch 3.0.0-beta-2-prepare
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git

commit 3181e1a7ee16eead208f53e51c842830e067eae6
Author: guodong <gu...@163.com>
AuthorDate: Thu Jun 2 18:51:43 2022 +0800

    [Fix-10318][ui] Fix EMR Task UI custom parameters Is not correct (#10334)
    
    * Modify useCustomParams isSimple: true
    
    (cherry picked from commit 96496f72550ec7afca8b3e8a6200641cf386dd80)
---
 .../src/views/projects/task/components/node/fields/use-emr.ts       | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-emr.ts b/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-emr.ts
index b603f8659b..a67b370d18 100644
--- a/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-emr.ts
+++ b/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-emr.ts
@@ -35,6 +35,10 @@ export function useEmr(model: { [field: string]: any }): IJsonItem[] {
         message: t('project.node.emr_flow_define_json_tips')
       }
     },
-    ...useCustomParams({ model, field: 'localParams', isSimple: false })
+    ...useCustomParams({
+      model,
+      field: 'localParams',
+      isSimple: true
+    })
   ]
 }


[dolphinscheduler] 17/18: [Fix][UI] Fixed the issue that the status statistics on the project overview page were inconsistent. (#10328)

Posted by li...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

liudongkai pushed a commit to branch 3.0.0-beta-2-prepare
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git

commit cbefb59bf8f78f28606468eab07a3c9692c7c59e
Author: songjianet <17...@qq.com>
AuthorDate: Wed Jun 1 21:50:43 2022 +0800

    [Fix][UI] Fixed the issue that the status statistics on the project overview page were inconsistent. (#10328)
    
    (cherry picked from commit e8ad62bcd03ecbf947d7044ba261aa19b81cec92)
---
 .../src/views/projects/overview/components/state-card.tsx               | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/dolphinscheduler-ui/src/views/projects/overview/components/state-card.tsx b/dolphinscheduler-ui/src/views/projects/overview/components/state-card.tsx
index d2a014561c..654270e359 100644
--- a/dolphinscheduler-ui/src/views/projects/overview/components/state-card.tsx
+++ b/dolphinscheduler-ui/src/views/projects/overview/components/state-card.tsx
@@ -65,7 +65,7 @@ const StateCard = defineComponent({
     } = this
     const { columnsRef } = useTable()
     return (
-      <Card title={title}>
+      <Card title={title} style={{ minHeight: '820px' }}>
         {{
           default: () => (
             <NGrid x-gap={12} cols={2}>


[dolphinscheduler] 07/18: [Fix][UI] Fix status statistics card height is inconsistent. (#10268)

Posted by li...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

liudongkai pushed a commit to branch 3.0.0-beta-2-prepare
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git

commit 1e9f62453e0e4d1fdf3296beed0b64acca3b90dd
Author: songjianet <17...@qq.com>
AuthorDate: Fri May 27 16:27:15 2022 +0800

    [Fix][UI] Fix status statistics card height is inconsistent. (#10268)
    
    (cherry picked from commit 1ac534be67826f3752bcde40a62428f95c88a334)
---
 dolphinscheduler-ui/src/views/home/components/state-card.tsx | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/dolphinscheduler-ui/src/views/home/components/state-card.tsx b/dolphinscheduler-ui/src/views/home/components/state-card.tsx
index d2a014561c..654270e359 100644
--- a/dolphinscheduler-ui/src/views/home/components/state-card.tsx
+++ b/dolphinscheduler-ui/src/views/home/components/state-card.tsx
@@ -65,7 +65,7 @@ const StateCard = defineComponent({
     } = this
     const { columnsRef } = useTable()
     return (
-      <Card title={title}>
+      <Card title={title} style={{ minHeight: '820px' }}>
         {{
           default: () => (
             <NGrid x-gap={12} cols={2}>


[dolphinscheduler] 02/18: [doc] Delete SPRING_DATASOURCE_DRIVER_CLASS_NAME in doc (#10228)

Posted by li...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

liudongkai pushed a commit to branch 3.0.0-beta-2-prepare
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git

commit 3de7b65f9a1d5614255381f8dafbeb4fbfa88be8
Author: 旺阳 <qi...@cisco.com>
AuthorDate: Wed May 25 11:45:16 2022 +0800

    [doc] Delete SPRING_DATASOURCE_DRIVER_CLASS_NAME in doc (#10228)
    
    (cherry picked from commit 87d9ec1deee4d7e492d4fe4da404ec513655636d)
---
 .github/workflows/cluster-test/mysql/dolphinscheduler_env.sh      | 1 -
 .github/workflows/cluster-test/postgresql/dolphinscheduler_env.sh | 1 -
 docs/docs/en/architecture/configuration.md                        | 1 -
 docs/docs/en/guide/installation/pseudo-cluster.md                 | 2 --
 docs/docs/en/guide/start/docker.md                                | 6 ------
 docs/docs/en/guide/upgrade.md                                     | 1 -
 docs/docs/zh/architecture/configuration.md                        | 1 -
 docs/docs/zh/guide/installation/pseudo-cluster.md                 | 2 --
 docs/docs/zh/guide/start/docker.md                                | 6 ------
 docs/docs/zh/guide/upgrade.md                                     | 1 -
 script/env/dolphinscheduler_env.sh                                | 1 -
 11 files changed, 23 deletions(-)

diff --git a/.github/workflows/cluster-test/mysql/dolphinscheduler_env.sh b/.github/workflows/cluster-test/mysql/dolphinscheduler_env.sh
index 07d5a8dbba..458fb9d5b2 100755
--- a/.github/workflows/cluster-test/mysql/dolphinscheduler_env.sh
+++ b/.github/workflows/cluster-test/mysql/dolphinscheduler_env.sh
@@ -21,7 +21,6 @@ export JAVA_HOME=${JAVA_HOME:-/usr/local/openjdk-8}
 # Database related configuration, set database type, username and password
 export DATABASE=${DATABASE:-mysql}
 export SPRING_PROFILES_ACTIVE=${DATABASE}
-export SPRING_DATASOURCE_DRIVER_CLASS_NAME=com.mysql.cj.jdbc.Driver
 export SPRING_DATASOURCE_URL="jdbc:mysql://mysql:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8&useSSL=false"
 export SPRING_DATASOURCE_USERNAME=root
 export SPRING_DATASOURCE_PASSWORD=123456
diff --git a/.github/workflows/cluster-test/postgresql/dolphinscheduler_env.sh b/.github/workflows/cluster-test/postgresql/dolphinscheduler_env.sh
index 9a6d9797e6..cc9364e31d 100644
--- a/.github/workflows/cluster-test/postgresql/dolphinscheduler_env.sh
+++ b/.github/workflows/cluster-test/postgresql/dolphinscheduler_env.sh
@@ -21,7 +21,6 @@ export JAVA_HOME=${JAVA_HOME:-/usr/local/openjdk-8}
 # Database related configuration, set database type, username and password
 export DATABASE=${DATABASE:-postgresql}
 export SPRING_PROFILES_ACTIVE=${DATABASE}
-export SPRING_DATASOURCE_DRIVER_CLASS_NAME=org.postgresql.Driver
 export SPRING_DATASOURCE_URL="jdbc:postgresql://postgres:5432/dolphinscheduler"
 export SPRING_DATASOURCE_USERNAME=postgres
 export SPRING_DATASOURCE_PASSWORD=postgres
diff --git a/docs/docs/en/architecture/configuration.md b/docs/docs/en/architecture/configuration.md
index e3689f9ae9..0f1df00372 100644
--- a/docs/docs/en/architecture/configuration.md
+++ b/docs/docs/en/architecture/configuration.md
@@ -450,7 +450,6 @@ export JAVA_HOME=${JAVA_HOME:-/opt/soft/java}
 # Database related configuration, set database type, username and password
 export DATABASE=${DATABASE:-postgresql}
 export SPRING_PROFILES_ACTIVE=${DATABASE}
-export SPRING_DATASOURCE_DRIVER_CLASS_NAME
 export SPRING_DATASOURCE_URL
 export SPRING_DATASOURCE_USERNAME
 export SPRING_DATASOURCE_PASSWORD
diff --git a/docs/docs/en/guide/installation/pseudo-cluster.md b/docs/docs/en/guide/installation/pseudo-cluster.md
index a37e0b58e4..eb0c0d95af 100644
--- a/docs/docs/en/guide/installation/pseudo-cluster.md
+++ b/docs/docs/en/guide/installation/pseudo-cluster.md
@@ -114,7 +114,6 @@ export JAVA_HOME=${JAVA_HOME:-/opt/soft/java}
 # Database related configuration, set database type, username and password
 export DATABASE=${DATABASE:-postgresql}
 export SPRING_PROFILES_ACTIVE=${DATABASE}
-export SPRING_DATASOURCE_DRIVER_CLASS_NAME=org.postgresql.Driver
 export SPRING_DATASOURCE_URL="jdbc:postgresql://127.0.0.1:5432/dolphinscheduler"
 export SPRING_DATASOURCE_USERNAME={user}
 export SPRING_DATASOURCE_PASSWORD={password}
@@ -179,7 +178,6 @@ Then, modify `./bin/env/dolphinscheduler_env.sh` to use mysql, change {user} and
 ```shell
 export DATABASE=${DATABASE:-mysql}
 export SPRING_PROFILES_ACTIVE=${DATABASE}
-export SPRING_DATASOURCE_DRIVER_CLASS_NAME=com.mysql.cj.jdbc.Driver
 export SPRING_DATASOURCE_URL="jdbc:mysql://127.0.0.1:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8&useSSL=false"
 export SPRING_DATASOURCE_USERNAME={user}
 export SPRING_DATASOURCE_PASSWORD={password}
diff --git a/docs/docs/en/guide/start/docker.md b/docs/docs/en/guide/start/docker.md
index 82bb609772..b12378f9c3 100644
--- a/docs/docs/en/guide/start/docker.md
+++ b/docs/docs/en/guide/start/docker.md
@@ -77,8 +77,6 @@ $ DOLPHINSCHEDULER_VERSION=3.0.0-beta-1
 # Initialize the database, make sure database <DATABASE> already exists
 $ docker run -d --name dolphinscheduler-tools \
     -e DATABASE="postgresql" \
-    # Use "com.mysql.cj.jdbc.driver" if you use MySQL
-    -e SPRING_DATASOURCE_DRIVER_CLASS_NAME="org.postgresql.Driver" \
     -e SPRING_DATASOURCE_URL="jdbc:postgresql://localhost:5432/<DATABASE>" \
     -e SPRING_DATASOURCE_USERNAME="<USER>" \
     -e SPRING_DATASOURCE_PASSWORD="<PASSWORD>" \
@@ -87,7 +85,6 @@ $ docker run -d --name dolphinscheduler-tools \
 # Starting DolphinScheduler service
 $ docker run -d --name dolphinscheduler-master \
     -e DATABASE="postgresql" \
-    -e SPRING_DATASOURCE_DRIVER_CLASS_NAME="org.postgresql.Driver" \
     -e SPRING_DATASOURCE_URL="jdbc:postgresql://localhost:5432/dolphinscheduler" \
     -e SPRING_DATASOURCE_USERNAME="<USER>" \
     -e SPRING_DATASOURCE_PASSWORD="<PASSWORD>" \
@@ -96,7 +93,6 @@ $ docker run -d --name dolphinscheduler-master \
     -d apache/dolphinscheduler-master:"${DOLPHINSCHEDULER_VERSION}"
 $ docker run -d --name dolphinscheduler-worker \
     -e DATABASE="postgresql" \
-    -e SPRING_DATASOURCE_DRIVER_CLASS_NAME="org.postgresql.Driver" \
     -e SPRING_DATASOURCE_URL="jdbc:postgresql://localhost:5432/dolphinscheduler" \
     -e SPRING_DATASOURCE_USERNAME="<USER>" \
     -e SPRING_DATASOURCE_PASSWORD="<PASSWORD>" \
@@ -105,7 +101,6 @@ $ docker run -d --name dolphinscheduler-worker \
     -d apache/dolphinscheduler-worker:"${DOLPHINSCHEDULER_VERSION}"
 $ docker run -d --name dolphinscheduler-api \
     -e DATABASE="postgresql" \
-    -e SPRING_DATASOURCE_DRIVER_CLASS_NAME="org.postgresql.Driver" \
     -e SPRING_DATASOURCE_URL="jdbc:postgresql://localhost:5432/dolphinscheduler" \
     -e SPRING_DATASOURCE_USERNAME="<USER>" \
     -e SPRING_DATASOURCE_PASSWORD="<PASSWORD>" \
@@ -114,7 +109,6 @@ $ docker run -d --name dolphinscheduler-api \
     -d apache/dolphinscheduler-api:"${DOLPHINSCHEDULER_VERSION}"
 $ docker run -d --name dolphinscheduler-alert-server \
     -e DATABASE="postgresql" \
-    -e SPRING_DATASOURCE_DRIVER_CLASS_NAME="org.postgresql.Driver" \
     -e SPRING_DATASOURCE_URL="jdbc:postgresql://localhost:5432/dolphinscheduler" \
     -e SPRING_DATASOURCE_USERNAME="<USER>" \
     -e SPRING_DATASOURCE_PASSWORD="<PASSWORD>" \
diff --git a/docs/docs/en/guide/upgrade.md b/docs/docs/en/guide/upgrade.md
index be901a6a50..5e4c7d5812 100644
--- a/docs/docs/en/guide/upgrade.md
+++ b/docs/docs/en/guide/upgrade.md
@@ -27,7 +27,6 @@ jar package and add it to the `./tools/libs` directory, then change `./bin/ env/
     ```shell
     export DATABASE=${DATABASE:-mysql}
     export SPRING_PROFILES_ACTIVE=${DATABASE}
-    export SPRING_DATASOURCE_DRIVER_CLASS_NAME=com.mysql.cj.jdbc.Driver
     export SPRING_DATASOURCE_URL=jdbc:mysql://127.0.0.1:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8
     export SPRING_DATASOURCE_USERNAME={user}
     export SPRING_DATASOURCE_PASSWORD={password}
diff --git a/docs/docs/zh/architecture/configuration.md b/docs/docs/zh/architecture/configuration.md
index 698a1c4aa2..14f79f1344 100644
--- a/docs/docs/zh/architecture/configuration.md
+++ b/docs/docs/zh/architecture/configuration.md
@@ -431,7 +431,6 @@ export JAVA_HOME=${JAVA_HOME:-/opt/soft/java}
 # Database related configuration, set database type, username and password
 export DATABASE=${DATABASE:-postgresql}
 export SPRING_PROFILES_ACTIVE=${DATABASE}
-export SPRING_DATASOURCE_DRIVER_CLASS_NAME
 export SPRING_DATASOURCE_URL
 export SPRING_DATASOURCE_USERNAME
 export SPRING_DATASOURCE_PASSWORD
diff --git a/docs/docs/zh/guide/installation/pseudo-cluster.md b/docs/docs/zh/guide/installation/pseudo-cluster.md
index f76b834adc..2ade7be397 100644
--- a/docs/docs/zh/guide/installation/pseudo-cluster.md
+++ b/docs/docs/zh/guide/installation/pseudo-cluster.md
@@ -111,7 +111,6 @@ export JAVA_HOME=${JAVA_HOME:-/opt/soft/java}
 # Database related configuration, set database type, username and password
 export DATABASE=${DATABASE:-postgresql}
 export SPRING_PROFILES_ACTIVE=${DATABASE}
-export SPRING_DATASOURCE_DRIVER_CLASS_NAME=org.postgresql.Driver
 export SPRING_DATASOURCE_URL="jdbc:postgresql://127.0.0.1:5432/dolphinscheduler"
 export SPRING_DATASOURCE_USERNAME={user}
 export SPRING_DATASOURCE_PASSWORD={password}
@@ -176,7 +175,6 @@ mysql> FLUSH PRIVILEGES;
 ```shell
 export DATABASE=${DATABASE:-mysql}
 export SPRING_PROFILES_ACTIVE=${DATABASE}
-export SPRING_DATASOURCE_DRIVER_CLASS_NAME=com.mysql.cj.jdbc.Driver
 export SPRING_DATASOURCE_URL="jdbc:mysql://127.0.0.1:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8&useSSL=false"
 export SPRING_DATASOURCE_USERNAME={user}
 export SPRING_DATASOURCE_PASSWORD={password}
diff --git a/docs/docs/zh/guide/start/docker.md b/docs/docs/zh/guide/start/docker.md
index 9a0e6f792b..193a3ec3ee 100644
--- a/docs/docs/zh/guide/start/docker.md
+++ b/docs/docs/zh/guide/start/docker.md
@@ -69,8 +69,6 @@ $ DOLPHINSCHEDULER_VERSION=3.0.0-beta-1
 # 初始化数据库,其确保数据库 <DATABASE> 已经存在
 $ docker run -d --name dolphinscheduler-tools \
     -e DATABASE="postgresql" \
-    # 如果使用 MySQL 则使用 "com.mysql.cj.jdbc.driver"
-    -e SPRING_DATASOURCE_DRIVER_CLASS_NAME="org.postgresql.Driver" \
     -e SPRING_DATASOURCE_URL="jdbc:postgresql://localhost:5432/<DATABASE>" \
     -e SPRING_DATASOURCE_USERNAME="<USER>" \
     -e SPRING_DATASOURCE_PASSWORD="<PASSWORD>" \
@@ -79,7 +77,6 @@ $ docker run -d --name dolphinscheduler-tools \
 # 启动 DolphinScheduler 对应的服务
 $ docker run -d --name dolphinscheduler-master \
     -e DATABASE="postgresql" \
-    -e SPRING_DATASOURCE_DRIVER_CLASS_NAME="org.postgresql.Driver" \
     -e SPRING_DATASOURCE_URL="jdbc:postgresql://localhost:5432/dolphinscheduler" \
     -e SPRING_DATASOURCE_USERNAME="<USER>" \
     -e SPRING_DATASOURCE_PASSWORD="<PASSWORD>" \
@@ -88,7 +85,6 @@ $ docker run -d --name dolphinscheduler-master \
     -d apache/dolphinscheduler-master:"${DOLPHINSCHEDULER_VERSION}"
 $ docker run -d --name dolphinscheduler-worker \
     -e DATABASE="postgresql" \
-    -e SPRING_DATASOURCE_DRIVER_CLASS_NAME="org.postgresql.Driver" \
     -e SPRING_DATASOURCE_URL="jdbc:postgresql://localhost:5432/dolphinscheduler" \
     -e SPRING_DATASOURCE_USERNAME="<USER>" \
     -e SPRING_DATASOURCE_PASSWORD="<PASSWORD>" \
@@ -97,7 +93,6 @@ $ docker run -d --name dolphinscheduler-worker \
     -d apache/dolphinscheduler-worker:"${DOLPHINSCHEDULER_VERSION}"
 $ docker run -d --name dolphinscheduler-api \
     -e DATABASE="postgresql" \
-    -e SPRING_DATASOURCE_DRIVER_CLASS_NAME="org.postgresql.Driver" \
     -e SPRING_DATASOURCE_URL="jdbc:postgresql://localhost:5432/dolphinscheduler" \
     -e SPRING_DATASOURCE_USERNAME="<USER>" \
     -e SPRING_DATASOURCE_PASSWORD="<PASSWORD>" \
@@ -106,7 +101,6 @@ $ docker run -d --name dolphinscheduler-api \
     -d apache/dolphinscheduler-api:"${DOLPHINSCHEDULER_VERSION}"
 $ docker run -d --name dolphinscheduler-alert-server \
     -e DATABASE="postgresql" \
-    -e SPRING_DATASOURCE_DRIVER_CLASS_NAME="org.postgresql.Driver" \
     -e SPRING_DATASOURCE_URL="jdbc:postgresql://localhost:5432/dolphinscheduler" \
     -e SPRING_DATASOURCE_USERNAME="<USER>" \
     -e SPRING_DATASOURCE_PASSWORD="<PASSWORD>" \
diff --git a/docs/docs/zh/guide/upgrade.md b/docs/docs/zh/guide/upgrade.md
index 763d9ac963..a9eb3e2188 100644
--- a/docs/docs/zh/guide/upgrade.md
+++ b/docs/docs/zh/guide/upgrade.md
@@ -26,7 +26,6 @@ jar 包 并添加到 `./tools/libs` 目录下,修改 `./bin/env/dolphinschedul
     ```shell
     export DATABASE=${DATABASE:-mysql}
     export SPRING_PROFILES_ACTIVE=${DATABASE}
-    export SPRING_DATASOURCE_DRIVER_CLASS_NAME=com.mysql.cj.jdbc.Driver
     export SPRING_DATASOURCE_URL=jdbc:mysql://127.0.0.1:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8
     export SPRING_DATASOURCE_USERNAME={user}
     export SPRING_DATASOURCE_PASSWORD={password}
diff --git a/script/env/dolphinscheduler_env.sh b/script/env/dolphinscheduler_env.sh
index 26eda694db..6e9d3aa78f 100755
--- a/script/env/dolphinscheduler_env.sh
+++ b/script/env/dolphinscheduler_env.sh
@@ -21,7 +21,6 @@ export JAVA_HOME=${JAVA_HOME:-/opt/soft/java}
 # Database related configuration, set database type, username and password
 export DATABASE=${DATABASE:-postgresql}
 export SPRING_PROFILES_ACTIVE=${DATABASE}
-export SPRING_DATASOURCE_DRIVER_CLASS_NAME
 export SPRING_DATASOURCE_URL
 export SPRING_DATASOURCE_USERNAME
 export SPRING_DATASOURCE_PASSWORD


[dolphinscheduler] 04/18: [doc] Update the development environment to build the software version (#10246)

Posted by li...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

liudongkai pushed a commit to branch 3.0.0-beta-2-prepare
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git

commit f35e0f1d5eee789a7b544cdfb5c11b3f25650254
Author: Mr.An <42...@users.noreply.github.com>
AuthorDate: Mon May 30 14:46:12 2022 +0800

    [doc] Update the development environment to build the software version (#10246)
    
    (cherry picked from commit 8d26d4fe72aa81437103716b22f52ef6dc515a14)
---
 .../docs/en/development/development-environment-setup.md | 12 ++++++------
 .../docs/zh/development/development-environment-setup.md | 16 ++++++++--------
 2 files changed, 14 insertions(+), 14 deletions(-)

diff --git a/docs/docs/en/development/development-environment-setup.md b/docs/docs/en/development/development-environment-setup.md
index 4f2dc22e1c..518bfb010e 100644
--- a/docs/docs/en/development/development-environment-setup.md
+++ b/docs/docs/en/development/development-environment-setup.md
@@ -1,13 +1,13 @@
 # DolphinScheduler development
 
-## Software Requests
-
+## Software Requirements
 Before setting up the DolphinScheduler development environment, please make sure you have installed the software as below:
 
-* [Git](https://git-scm.com/downloads): DolphinScheduler version control system
-* [JDK](https://www.oracle.com/technetwork/java/javase/downloads/index.html): DolphinScheduler backend language, have to use version after JDK 1.8
-* [Maven](http://maven.apache.org/download.cgi): Java Package Management System
-* [Node](https://nodejs.org/en/download): DolphinScheduler frontend, have to use version after Node 12.20.2
+* [Git](https://git-scm.com/downloads)
+* [JDK](https://www.oracle.com/technetwork/java/javase/downloads/index.html): v1.8.x (Currently does not support jdk 11)
+* [Maven](http://maven.apache.org/download.cgi): v3.5+
+* [Node](https://nodejs.org/en/download): v16.13+ (dolphinScheduler version is lower than 3.0, please install node v12.20+)
+* [Pnpm](https://pnpm.io/installation): v6.x
 
 ### Clone Git Repository
 
diff --git a/docs/docs/zh/development/development-environment-setup.md b/docs/docs/zh/development/development-environment-setup.md
index 858e85296c..cd7cdd1721 100644
--- a/docs/docs/zh/development/development-environment-setup.md
+++ b/docs/docs/zh/development/development-environment-setup.md
@@ -1,13 +1,13 @@
 # DolphinScheduler 开发手册
 
-## 前置条件
-
-在搭建 DolphinScheduler 开发环境之前请确保你已经安装一下软件
-
-* [Git](https://git-scm.com/downloads): 版本控制系统
-* [JDK](https://www.oracle.com/technetwork/java/javase/downloads/index.html): 后端开发,必须使用JDK1.8及以后的版本
-* [Maven](http://maven.apache.org/download.cgi): Java包管理系统
-* [Node](https://nodejs.org/en/download): 前端开发,必须使用Node12.20.2及以后的版本
+## 软件要求
+在搭建 DolphinScheduler 开发环境之前请确保你已经安装以下软件:
+
+* [Git](https://git-scm.com/downloads)
+* [JDK](https://www.oracle.com/technetwork/java/javase/downloads/index.html): v1.8.x (当前暂不支持 jdk 11)
+* [Maven](http://maven.apache.org/download.cgi): v3.5+
+* [Node](https://nodejs.org/en/download): v16.13+ (dolphinScheduler 版本低于 3.0, 请安装 node v12.20+)
+* [Pnpm](https://pnpm.io/installation): v6.x
 
 ### 克隆代码库
 


[dolphinscheduler] 08/18: [Fix] Fix the line.separator problem for alert-plugin' test case #10277 (#10278)

Posted by li...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

liudongkai pushed a commit to branch 3.0.0-beta-2-prepare
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git

commit 093cd4627a087cfb3b7570a6c754895ba1798a3b
Author: juzimao <57...@qq.com>
AuthorDate: Sun May 29 18:44:26 2022 +0800

    [Fix] Fix the line.separator problem for alert-plugin' test case #10277 (#10278)
    
    * [Fix] Fix the line.separator problem for alert-plugin' test case
    
    * [Fix] Fix the line.separator problem for alert-plugin' test case
    
    (cherry picked from commit 62bd9d2c4c0ee110687d1454a34209a77f175d94)
---
 .../plugin/alert/email/template/DefaultHTMLTemplateTest.java            | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-email/src/test/java/org/apache/dolphinscheduler/plugin/alert/email/template/DefaultHTMLTemplateTest.java b/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-email/src/test/java/org/apache/dolphinscheduler/plugin/alert/email/template/DefaultHTMLTemplateTest.java
index d53c95bfbd..bc357cd34a 100644
--- a/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-email/src/test/java/org/apache/dolphinscheduler/plugin/alert/email/template/DefaultHTMLTemplateTest.java
+++ b/dolphinscheduler-alert/dolphinscheduler-alert-plugins/dolphinscheduler-alert-email/src/test/java/org/apache/dolphinscheduler/plugin/alert/email/template/DefaultHTMLTemplateTest.java
@@ -76,7 +76,7 @@ public class DefaultHTMLTemplateTest {
         return EmailConstants.HTML_HEADER_PREFIX
             + "<thead>"
             + "<tr><th>mysql service name</th><th>mysql address</th><th>database client connections</th><th>port</th><th>no index of number</th></tr>"
-            + "</thead>\n"
+            + "</thead>"+System.getProperty("line.separator")
             + "<tr><td>mysql200</td><td>192.168.xx.xx</td><td>190</td><td>3306</td><td>80</td></tr>"
             + "<tr><td>mysql210</td><td>192.168.xx.xx</td><td>90</td><td>3306</td><td>10</td></tr>"
             + EmailConstants.TABLE_BODY_HTML_TAIL;


[dolphinscheduler] 15/18: [Style][UI] Format code. (#10314)

Posted by li...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

liudongkai pushed a commit to branch 3.0.0-beta-2-prepare
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git

commit 30589121c48c8415f137a255cdf39226e61077aa
Author: songjianet <17...@qq.com>
AuthorDate: Tue May 31 21:01:36 2022 +0800

    [Style][UI] Format code. (#10314)
    
    (cherry picked from commit 8584aad490123ade96326f8b50b08e5130dfd323)
---
 dolphinscheduler-ui/src/locales/en_US/crontab.ts   |   2 +-
 .../src/locales/en_US/data-quality.ts              |   2 +-
 .../src/locales/en_US/datasource.ts                |   2 +-
 dolphinscheduler-ui/src/locales/en_US/home.ts      |   2 +-
 dolphinscheduler-ui/src/locales/en_US/login.ts     |   2 +-
 dolphinscheduler-ui/src/locales/en_US/menu.ts      |   2 +-
 dolphinscheduler-ui/src/locales/en_US/modal.ts     |   2 +-
 dolphinscheduler-ui/src/locales/en_US/monitor.ts   |   2 +-
 dolphinscheduler-ui/src/locales/en_US/password.ts  |   2 +-
 dolphinscheduler-ui/src/locales/en_US/profile.ts   |   2 +-
 dolphinscheduler-ui/src/locales/en_US/project.ts   |   6 +-
 dolphinscheduler-ui/src/locales/en_US/resource.ts  |   2 +-
 dolphinscheduler-ui/src/locales/en_US/security.ts  |   2 +-
 dolphinscheduler-ui/src/locales/en_US/theme.ts     |   2 +-
 .../src/locales/en_US/user-dropdown.ts             |   2 +-
 dolphinscheduler-ui/src/locales/zh_CN/crontab.ts   |   2 +-
 .../src/locales/zh_CN/data-quality.ts              |   2 +-
 .../src/locales/zh_CN/datasource.ts                |   2 +-
 dolphinscheduler-ui/src/locales/zh_CN/home.ts      |   2 +-
 dolphinscheduler-ui/src/locales/zh_CN/login.ts     |   2 +-
 dolphinscheduler-ui/src/locales/zh_CN/menu.ts      |   2 +-
 dolphinscheduler-ui/src/locales/zh_CN/modal.ts     |   2 +-
 dolphinscheduler-ui/src/locales/zh_CN/monitor.ts   |   5 +-
 dolphinscheduler-ui/src/locales/zh_CN/password.ts  |   2 +-
 dolphinscheduler-ui/src/locales/zh_CN/profile.ts   |   2 +-
 dolphinscheduler-ui/src/locales/zh_CN/project.ts   |  57 +++++++
 dolphinscheduler-ui/src/locales/zh_CN/resource.ts  |   2 +-
 dolphinscheduler-ui/src/locales/zh_CN/security.ts  |   2 +-
 dolphinscheduler-ui/src/locales/zh_CN/theme.ts     |   2 +-
 .../src/locales/zh_CN/user-dropdown.ts             |   2 +-
 .../task/components/node/fields/use-http.ts        |   4 +-
 .../task/components/node/fields/use-jupyter.ts     | 180 +++++++++++++++++++++
 .../task/components/node/fields/use-openmldb.ts    |  87 ++++++++++
 .../task-group/option/components/form-modal.tsx    |   2 +-
 34 files changed, 359 insertions(+), 36 deletions(-)

diff --git a/dolphinscheduler-ui/src/locales/en_US/crontab.ts b/dolphinscheduler-ui/src/locales/en_US/crontab.ts
index 0bc96147b7..e14817a207 100644
--- a/dolphinscheduler-ui/src/locales/en_US/crontab.ts
+++ b/dolphinscheduler-ui/src/locales/en_US/crontab.ts
@@ -75,4 +75,4 @@ export default {
   specific_year_tip: 'Please enter a year',
   one_hour: 'hour',
   one_day: 'day'
-}
\ No newline at end of file
+}
diff --git a/dolphinscheduler-ui/src/locales/en_US/data-quality.ts b/dolphinscheduler-ui/src/locales/en_US/data-quality.ts
index c01556cefe..7df4180a64 100644
--- a/dolphinscheduler-ui/src/locales/en_US/data-quality.ts
+++ b/dolphinscheduler-ui/src/locales/en_US/data-quality.ts
@@ -109,4 +109,4 @@ export default {
     SrcTableTotalRows: 'SrcTableTotalRows',
     TargetTableTotalRows: 'TargetTableTotalRows'
   }
-}
\ No newline at end of file
+}
diff --git a/dolphinscheduler-ui/src/locales/en_US/datasource.ts b/dolphinscheduler-ui/src/locales/en_US/datasource.ts
index a6a34a78b3..681bce904e 100644
--- a/dolphinscheduler-ui/src/locales/en_US/datasource.ts
+++ b/dolphinscheduler-ui/src/locales/en_US/datasource.ts
@@ -63,4 +63,4 @@ export default {
   user_password: 'Password',
   user_password_tips: 'Please enter your password',
   jdbc_format_tips: 'jdbc connection parameters is not a correct JSON format'
-}
\ No newline at end of file
+}
diff --git a/dolphinscheduler-ui/src/locales/en_US/home.ts b/dolphinscheduler-ui/src/locales/en_US/home.ts
index 6f4ec60bad..55edce32ed 100644
--- a/dolphinscheduler-ui/src/locales/en_US/home.ts
+++ b/dolphinscheduler-ui/src/locales/en_US/home.ts
@@ -39,4 +39,4 @@ export default {
   dispatch: 'DISPATCH',
   ready_block: 'READY_BLOCK',
   block: 'BLOCK'
-}
\ No newline at end of file
+}
diff --git a/dolphinscheduler-ui/src/locales/en_US/login.ts b/dolphinscheduler-ui/src/locales/en_US/login.ts
index 2776397304..d72af8f6fc 100644
--- a/dolphinscheduler-ui/src/locales/en_US/login.ts
+++ b/dolphinscheduler-ui/src/locales/en_US/login.ts
@@ -22,4 +22,4 @@ export default {
   userPassword: 'Password',
   userPassword_tips: 'Please enter your password',
   login: 'Login'
-}
\ No newline at end of file
+}
diff --git a/dolphinscheduler-ui/src/locales/en_US/menu.ts b/dolphinscheduler-ui/src/locales/en_US/menu.ts
index ab95e43df5..a731f7b8ac 100644
--- a/dolphinscheduler-ui/src/locales/en_US/menu.ts
+++ b/dolphinscheduler-ui/src/locales/en_US/menu.ts
@@ -56,4 +56,4 @@ export default {
   data_quality: 'Data Quality',
   task_result: 'Task Result',
   rule: 'Rule management'
-}
\ No newline at end of file
+}
diff --git a/dolphinscheduler-ui/src/locales/en_US/modal.ts b/dolphinscheduler-ui/src/locales/en_US/modal.ts
index f81fa9a7a4..3c17d1dd48 100644
--- a/dolphinscheduler-ui/src/locales/en_US/modal.ts
+++ b/dolphinscheduler-ui/src/locales/en_US/modal.ts
@@ -18,4 +18,4 @@
 export default {
   cancel: 'Cancel',
   confirm: 'Confirm'
-}
\ No newline at end of file
+}
diff --git a/dolphinscheduler-ui/src/locales/en_US/monitor.ts b/dolphinscheduler-ui/src/locales/en_US/monitor.ts
index 85d2f13834..2b9102f20e 100644
--- a/dolphinscheduler-ui/src/locales/en_US/monitor.ts
+++ b/dolphinscheduler-ui/src/locales/en_US/monitor.ts
@@ -71,4 +71,4 @@ export default {
     delete: 'Delete',
     read: 'Read'
   }
-}
\ No newline at end of file
+}
diff --git a/dolphinscheduler-ui/src/locales/en_US/password.ts b/dolphinscheduler-ui/src/locales/en_US/password.ts
index 870b787dc3..a9cde2c18c 100644
--- a/dolphinscheduler-ui/src/locales/en_US/password.ts
+++ b/dolphinscheduler-ui/src/locales/en_US/password.ts
@@ -24,4 +24,4 @@ export default {
   two_password_entries_are_inconsistent:
     'Two password entries are inconsistent',
   submit: 'Submit'
-}
\ No newline at end of file
+}
diff --git a/dolphinscheduler-ui/src/locales/en_US/profile.ts b/dolphinscheduler-ui/src/locales/en_US/profile.ts
index 08d048019f..bffdb0cc7d 100644
--- a/dolphinscheduler-ui/src/locales/en_US/profile.ts
+++ b/dolphinscheduler-ui/src/locales/en_US/profile.ts
@@ -37,4 +37,4 @@ export default {
   disable: 'Disable',
   timezone_success: 'Time zone updated successful',
   please_select_timezone: 'Choose timeZone'
-}
\ No newline at end of file
+}
diff --git a/dolphinscheduler-ui/src/locales/en_US/project.ts b/dolphinscheduler-ui/src/locales/en_US/project.ts
index 7f2f7f4577..6815c3822a 100644
--- a/dolphinscheduler-ui/src/locales/en_US/project.ts
+++ b/dolphinscheduler-ui/src/locales/en_US/project.ts
@@ -614,8 +614,10 @@ export default {
     please_select_source_datasource_id: 'Please select source datasource id',
     please_enter_source_table_name: 'Please select source table name',
     please_enter_filter_expression: 'Please enter filter expression',
-    please_enter_column_only_single_column_is_supported: 'Please select column, only single column is supported',
-    please_enter_threshold_number_is_needed: 'Please enter threshold number is needed',
+    please_enter_column_only_single_column_is_supported:
+      'Please select column, only single column is supported',
+    please_enter_threshold_number_is_needed:
+      'Please enter threshold number is needed',
     please_enter_comparison_title: 'please select comparison title'
   }
 }
diff --git a/dolphinscheduler-ui/src/locales/en_US/resource.ts b/dolphinscheduler-ui/src/locales/en_US/resource.ts
index 1e5651d19e..45e2d16c7f 100644
--- a/dolphinscheduler-ui/src/locales/en_US/resource.ts
+++ b/dolphinscheduler-ui/src/locales/en_US/resource.ts
@@ -167,4 +167,4 @@ export default {
     update_time: 'Update time',
     edit_priority: 'Edit the task priority'
   }
-}
\ No newline at end of file
+}
diff --git a/dolphinscheduler-ui/src/locales/en_US/security.ts b/dolphinscheduler-ui/src/locales/en_US/security.ts
index 0f3ec1f163..19b82f6665 100644
--- a/dolphinscheduler-ui/src/locales/en_US/security.ts
+++ b/dolphinscheduler-ui/src/locales/en_US/security.ts
@@ -262,4 +262,4 @@ export default {
     delete: 'Delete',
     delete_confirm: 'Delete?'
   }
-}
\ No newline at end of file
+}
diff --git a/dolphinscheduler-ui/src/locales/en_US/theme.ts b/dolphinscheduler-ui/src/locales/en_US/theme.ts
index 5281a2f2d7..66ea07d560 100644
--- a/dolphinscheduler-ui/src/locales/en_US/theme.ts
+++ b/dolphinscheduler-ui/src/locales/en_US/theme.ts
@@ -18,4 +18,4 @@
 export default {
   light: 'Light',
   dark: 'Dark'
-}
\ No newline at end of file
+}
diff --git a/dolphinscheduler-ui/src/locales/en_US/user-dropdown.ts b/dolphinscheduler-ui/src/locales/en_US/user-dropdown.ts
index 4bcf593f14..c356b7f5de 100644
--- a/dolphinscheduler-ui/src/locales/en_US/user-dropdown.ts
+++ b/dolphinscheduler-ui/src/locales/en_US/user-dropdown.ts
@@ -19,4 +19,4 @@ export default {
   profile: 'Profile',
   password: 'Password',
   logout: 'Logout'
-}
\ No newline at end of file
+}
diff --git a/dolphinscheduler-ui/src/locales/zh_CN/crontab.ts b/dolphinscheduler-ui/src/locales/zh_CN/crontab.ts
index 607cd30a71..8a5a961586 100644
--- a/dolphinscheduler-ui/src/locales/zh_CN/crontab.ts
+++ b/dolphinscheduler-ui/src/locales/zh_CN/crontab.ts
@@ -74,4 +74,4 @@ export default {
   specific_year_tip: '请选择具体年数',
   one_hour: '小时',
   one_day: '日'
-}
\ No newline at end of file
+}
diff --git a/dolphinscheduler-ui/src/locales/zh_CN/data-quality.ts b/dolphinscheduler-ui/src/locales/zh_CN/data-quality.ts
index ca1bbc843e..0593cfbe42 100644
--- a/dolphinscheduler-ui/src/locales/zh_CN/data-quality.ts
+++ b/dolphinscheduler-ui/src/locales/zh_CN/data-quality.ts
@@ -108,4 +108,4 @@ export default {
     SrcTableTotalRows: '源表总行数',
     TargetTableTotalRows: '目标表总行数'
   }
-}
\ No newline at end of file
+}
diff --git a/dolphinscheduler-ui/src/locales/zh_CN/datasource.ts b/dolphinscheduler-ui/src/locales/zh_CN/datasource.ts
index 105b04a13a..8eaba984a8 100644
--- a/dolphinscheduler-ui/src/locales/zh_CN/datasource.ts
+++ b/dolphinscheduler-ui/src/locales/zh_CN/datasource.ts
@@ -60,4 +60,4 @@ export default {
   user_password: '密码',
   user_password_tips: '请输入密码',
   jdbc_format_tips: 'jdbc连接参数不是一个正确的JSON格式'
-}
\ No newline at end of file
+}
diff --git a/dolphinscheduler-ui/src/locales/zh_CN/home.ts b/dolphinscheduler-ui/src/locales/zh_CN/home.ts
index 399215dfc2..25e4c33184 100644
--- a/dolphinscheduler-ui/src/locales/zh_CN/home.ts
+++ b/dolphinscheduler-ui/src/locales/zh_CN/home.ts
@@ -39,4 +39,4 @@ export default {
   dispatch: '派发',
   ready_block: '准备阻断',
   block: '阻断'
-}
\ No newline at end of file
+}
diff --git a/dolphinscheduler-ui/src/locales/zh_CN/login.ts b/dolphinscheduler-ui/src/locales/zh_CN/login.ts
index 656af40510..90c679060d 100644
--- a/dolphinscheduler-ui/src/locales/zh_CN/login.ts
+++ b/dolphinscheduler-ui/src/locales/zh_CN/login.ts
@@ -22,4 +22,4 @@ export default {
   userPassword: '密码',
   userPassword_tips: '请输入密码',
   login: '登录'
-}
\ No newline at end of file
+}
diff --git a/dolphinscheduler-ui/src/locales/zh_CN/menu.ts b/dolphinscheduler-ui/src/locales/zh_CN/menu.ts
index 59e9420b0c..f5395beb54 100644
--- a/dolphinscheduler-ui/src/locales/zh_CN/menu.ts
+++ b/dolphinscheduler-ui/src/locales/zh_CN/menu.ts
@@ -56,4 +56,4 @@ export default {
   data_quality: '数据质量',
   task_result: '任务结果',
   rule: '规则管理'
-}
\ No newline at end of file
+}
diff --git a/dolphinscheduler-ui/src/locales/zh_CN/modal.ts b/dolphinscheduler-ui/src/locales/zh_CN/modal.ts
index 6e78e45975..603647e12c 100644
--- a/dolphinscheduler-ui/src/locales/zh_CN/modal.ts
+++ b/dolphinscheduler-ui/src/locales/zh_CN/modal.ts
@@ -18,4 +18,4 @@
 export default {
   cancel: '取消',
   confirm: '确定'
-}
\ No newline at end of file
+}
diff --git a/dolphinscheduler-ui/src/locales/zh_CN/monitor.ts b/dolphinscheduler-ui/src/locales/zh_CN/monitor.ts
index 62fd110b1a..1d319297a6 100644
--- a/dolphinscheduler-ui/src/locales/zh_CN/monitor.ts
+++ b/dolphinscheduler-ui/src/locales/zh_CN/monitor.ts
@@ -48,8 +48,7 @@ export default {
     threads_connections: '当前连接数',
     threads_running_connections: '数据库当前活跃连接数',
     db_no_data_result_title: 'DB节点不存在',
-    db_no_data_result_desc:
-      '目前没有任何DB节点,请先创建DB节点,再访问该页面'
+    db_no_data_result_desc: '目前没有任何DB节点,请先创建DB节点,再访问该页面'
   },
   statistics: {
     command_number_of_waiting_for_running: '待执行的命令数',
@@ -70,4 +69,4 @@ export default {
     delete: '删除',
     read: '读取'
   }
-}
\ No newline at end of file
+}
diff --git a/dolphinscheduler-ui/src/locales/zh_CN/password.ts b/dolphinscheduler-ui/src/locales/zh_CN/password.ts
index 543fe6cbe8..ceff17fd72 100644
--- a/dolphinscheduler-ui/src/locales/zh_CN/password.ts
+++ b/dolphinscheduler-ui/src/locales/zh_CN/password.ts
@@ -23,4 +23,4 @@ export default {
   confirm_password_tips: '请输入确认密码',
   two_password_entries_are_inconsistent: '两次密码输入不一致',
   submit: '提交'
-}
\ No newline at end of file
+}
diff --git a/dolphinscheduler-ui/src/locales/zh_CN/profile.ts b/dolphinscheduler-ui/src/locales/zh_CN/profile.ts
index 9e86f89414..81f6a8b789 100644
--- a/dolphinscheduler-ui/src/locales/zh_CN/profile.ts
+++ b/dolphinscheduler-ui/src/locales/zh_CN/profile.ts
@@ -37,4 +37,4 @@ export default {
   disable: '禁用',
   timezone_success: '时区更新成功',
   please_select_timezone: '请选择时区'
-}
\ No newline at end of file
+}
diff --git a/dolphinscheduler-ui/src/locales/zh_CN/project.ts b/dolphinscheduler-ui/src/locales/zh_CN/project.ts
index 721e31357a..5d7914a673 100644
--- a/dolphinscheduler-ui/src/locales/zh_CN/project.ts
+++ b/dolphinscheduler-ui/src/locales/zh_CN/project.ts
@@ -591,6 +591,63 @@ export default {
     zeppelin_note_id_tips: '请输入zeppelin note id',
     zeppelin_paragraph_id: 'zeppelin_paragraph_id',
     zeppelin_paragraph_id_tips: '请输入zeppelin paragraph id',
+    zeppelin_parameters: 'parameters',
+    zeppelin_parameters_tips: '请输入zeppelin dynamic form参数',
+    jupyter_conda_env_name: 'condaEnvName',
+    jupyter_conda_env_name_tips: '请输入papermill所在的conda环境名',
+    jupyter_input_note_path: 'inputNotePath',
+    jupyter_input_note_path_tips: '请输入jupyter note的输入路径',
+    jupyter_output_note_path: 'outputNotePath',
+    jupyter_output_note_path_tips: '请输入jupyter note的输出路径',
+    jupyter_parameters: 'parameters',
+    jupyter_parameters_tips: '请输入jupyter parameterization参数',
+    jupyter_kernel: 'kernel',
+    jupyter_kernel_tips: '请输入jupyter kernel名',
+    jupyter_engine: 'engine',
+    jupyter_engine_tips: '请输入引擎名称',
+    jupyter_execution_timeout: 'executionTimeout',
+    jupyter_execution_timeout_tips: '请输入jupyter note cell的执行最长时间',
+    jupyter_start_timeout: 'startTimeout',
+    jupyter_start_timeout_tips: '请输入jupyter kernel的启动最长时间',
+    jupyter_others: 'others',
+    jupyter_others_tips: '请输入papermill的其他参数',
+    mlflow_algorithm: '算法',
+    mlflow_algorithm_tips: 'svm',
+    mlflow_params: '参数',
+    mlflow_params_tips: ' ',
+    mlflow_searchParams: '参数搜索空间',
+    mlflow_searchParams_tips: ' ',
+    mlflow_isSearchParams: '是否搜索参数',
+    mlflow_dataPath: '数据路径',
+    mlflow_dataPath_tips:
+      ' 文件/文件夹的绝对路径, 若文件需以.csv结尾, 文件夹需包含train.csv和test.csv ',
+    mlflow_dataPath_error_tips: ' 数据路径不能为空 ',
+    mlflow_experimentName: '实验名称',
+    mlflow_experimentName_tips: 'experiment_001',
+    mlflow_registerModel: '注册模型',
+    mlflow_modelName: '注册的模型名称',
+    mlflow_modelName_tips: 'model_001',
+    mlflow_mlflowTrackingUri: 'mlflow server tracking uri',
+    mlflow_mlflowTrackingUri_tips: 'http://127.0.0.1:5000',
+    mlflow_mlflowTrackingUri_error_tips: ' mlflow server tracking uri 不能为空',
+    mlflow_jobType: '任务类型',
+    mlflow_automlTool: 'AutoML工具',
+    mlflow_taskType: 'MLflow 任务类型',
+    mlflow_deployType: '部署类型',
+    mlflow_deployModelKey: '部署的模型uri',
+    mlflow_deployPort: '监听端口',
+    mlflowProjectRepository: '运行仓库',
+    mlflowProjectRepository_tips: '可以为github仓库或worker上的路径',
+    mlflowProjectVersion: '项目版本',
+    mlflowProjectVersion_tips: '项目git版本',
+    openmldb_zk_address: 'zookeeper地址',
+    openmldb_zk_address_tips: '请输入zookeeper地址',
+    openmldb_zk_path: 'zookeeper路径',
+    openmldb_zk_path_tips: '请输入zookeeper路径',
+    openmldb_execute_mode: '执行模式',
+    openmldb_execute_mode_tips: '请选择执行模式',
+    openmldb_execute_mode_offline: '离线',
+    openmldb_execute_mode_online: '在线',
     send_email: '发送邮件',
     log_display: '日志显示',
     rows_of_result: '行查询结果',
diff --git a/dolphinscheduler-ui/src/locales/zh_CN/resource.ts b/dolphinscheduler-ui/src/locales/zh_CN/resource.ts
index b795c5132b..0c49060665 100644
--- a/dolphinscheduler-ui/src/locales/zh_CN/resource.ts
+++ b/dolphinscheduler-ui/src/locales/zh_CN/resource.ts
@@ -165,4 +165,4 @@ export default {
     update_time: '更新时间',
     edit_priority: '修改优先级'
   }
-}
\ No newline at end of file
+}
diff --git a/dolphinscheduler-ui/src/locales/zh_CN/security.ts b/dolphinscheduler-ui/src/locales/zh_CN/security.ts
index 10b36fdc8a..d17d701a61 100644
--- a/dolphinscheduler-ui/src/locales/zh_CN/security.ts
+++ b/dolphinscheduler-ui/src/locales/zh_CN/security.ts
@@ -262,4 +262,4 @@ export default {
     delete: '删除',
     delete_confirm: '确定删除吗?'
   }
-}
\ No newline at end of file
+}
diff --git a/dolphinscheduler-ui/src/locales/zh_CN/theme.ts b/dolphinscheduler-ui/src/locales/zh_CN/theme.ts
index 77df7f2fc1..0becc83772 100644
--- a/dolphinscheduler-ui/src/locales/zh_CN/theme.ts
+++ b/dolphinscheduler-ui/src/locales/zh_CN/theme.ts
@@ -18,4 +18,4 @@
 export default {
   light: '浅色',
   dark: '深色'
-}
\ No newline at end of file
+}
diff --git a/dolphinscheduler-ui/src/locales/zh_CN/user-dropdown.ts b/dolphinscheduler-ui/src/locales/zh_CN/user-dropdown.ts
index 554f40872e..778d3f008e 100644
--- a/dolphinscheduler-ui/src/locales/zh_CN/user-dropdown.ts
+++ b/dolphinscheduler-ui/src/locales/zh_CN/user-dropdown.ts
@@ -19,4 +19,4 @@ export default {
   profile: '用户信息',
   password: '密码管理',
   logout: '退出登录'
-}
\ No newline at end of file
+}
diff --git a/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-http.ts b/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-http.ts
index 855d34c226..9e3a9af921 100644
--- a/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-http.ts
+++ b/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-http.ts
@@ -55,9 +55,7 @@ export function useHttp(model: { [field: string]: any }): IJsonItem[] {
           if (!value) {
             return new Error(t('project.node.http_url_tips'))
           }
-          if (
-            value.search(new RegExp(/http[s]{0,1}:\/\/\S*/, 'i'))
-          ) {
+          if (value.search(new RegExp(/http[s]{0,1}:\/\/\S*/, 'i'))) {
             return new Error(t('project.node.http_url_validator'))
           }
         }
diff --git a/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-jupyter.ts b/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-jupyter.ts
new file mode 100644
index 0000000000..1f37f6ba00
--- /dev/null
+++ b/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-jupyter.ts
@@ -0,0 +1,180 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import { useI18n } from 'vue-i18n'
+import { useCustomParams } from '.'
+import type { IJsonItem } from '../types'
+
+export function useJupyter(model: { [field: string]: any }): IJsonItem[] {
+  const { t } = useI18n()
+
+  return [
+    {
+      type: 'input',
+      field: 'condaEnvName',
+      name: t('project.node.jupyter_conda_env_name'),
+      props: {
+        placeholder: t('project.node.jupyter_conda_env_name_tips')
+      },
+      validate: {
+        trigger: ['input', 'blur'],
+        required: true,
+        validator(validate: any, value: string) {
+          if (!value) {
+            return new Error(t('project.node.jupyter_conda_env_name_tips'))
+          }
+        }
+      }
+    },
+    {
+      type: 'input',
+      field: 'inputNotePath',
+      name: t('project.node.jupyter_input_note_path'),
+      props: {
+        placeholder: t('project.node.jupyter_input_note_path_tips')
+      },
+      validate: {
+        trigger: ['input', 'blur'],
+        required: true,
+        validator(validate: any, value: string) {
+          if (!value) {
+            return new Error(t('project.node.jupyter_input_note_path_tips'))
+          }
+        }
+      }
+    },
+    {
+      type: 'input',
+      field: 'outputNotePath',
+      name: t('project.node.jupyter_output_note_path'),
+      props: {
+        placeholder: t('project.node.jupyter_output_note_path_tips')
+      },
+      validate: {
+        trigger: ['input', 'blur'],
+        required: true,
+        validator(validate: any, value: string) {
+          if (!value) {
+            return new Error(t('project.node.jupyter_output_note_path_tips'))
+          }
+        }
+      }
+    },
+    {
+      type: 'input',
+      field: 'parameters',
+      name: t('project.node.jupyter_parameters'),
+      props: {
+        placeholder: t('project.node.jupyter_parameters_tips')
+      }
+      //       validate: {
+      //         trigger: ['input', 'blur'],
+      //         required: false,
+      //         validator(validate: any, value: string) {
+      //           if (!value) {
+      //             return new Error(t('project.node.jupyter_parameters_tips'))
+      //           }
+      //         }
+      //       }
+    },
+    {
+      type: 'input',
+      field: 'kernel',
+      name: t('project.node.jupyter_kernel'),
+      props: {
+        placeholder: t('project.node.jupyter_kernel_tips')
+      }
+      //       validate: {
+      //         trigger: ['input', 'blur'],
+      //         required: false,
+      //         validator(validate: any, value: string) {
+      //           if (!value) {
+      //             return new Error(t('project.node.jupyter_kernel_tips'))
+      //           }
+      //         }
+      //       }
+    },
+    {
+      type: 'input',
+      field: 'engine',
+      name: t('project.node.jupyter_engine'),
+      props: {
+        placeholder: t('project.node.jupyter_engine_tips')
+      }
+      //       validate: {
+      //         trigger: ['input', 'blur'],
+      //         required: false,
+      //         validator(validate: any, value: string) {
+      //           if (!value) {
+      //             return new Error(t('project.node.jupyter_engine_tips'))
+      //           }
+      //         }
+      //       }
+    },
+    {
+      type: 'input',
+      field: 'executionTimeout',
+      name: t('project.node.jupyter_execution_timeout'),
+      props: {
+        placeholder: t('project.node.jupyter_execution_timeout_tips')
+      }
+      //       validate: {
+      //         trigger: ['input', 'blur'],
+      //         required: false,
+      //         validator(validate: any, value: string) {
+      //           if (!value) {
+      //             return new Error(t('project.node.jupyter_execution_timeout_tips'))
+      //           }
+      //         }
+      //       }
+    },
+    {
+      type: 'input',
+      field: 'startTimeout',
+      name: t('project.node.jupyter_start_timeout'),
+      props: {
+        placeholder: t('project.node.zeppelin_note_id_tips')
+      }
+      //       validate: {
+      //         trigger: ['input', 'blur'],
+      //         required: false,
+      //         validator(validate: any, value: string) {
+      //           if (!value) {
+      //             return new Error(t('project.node.jupyter_start_timeout_tips'))
+      //           }
+      //         }
+      //       }
+    },
+    {
+      type: 'input',
+      field: 'others',
+      name: t('project.node.jupyter_others'),
+      props: {
+        placeholder: t('project.node.jupyter_others_tips')
+      }
+      //       validate: {
+      //         trigger: ['input', 'blur'],
+      //         required: false,
+      //         validator(validate: any, value: string) {
+      //           if (!value) {
+      //             return new Error(t('project.node.jupyter_others_tips'))
+      //           }
+      //         }
+      //       }
+    },
+    ...useCustomParams({ model, field: 'localParams', isSimple: false })
+  ]
+}
diff --git a/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-openmldb.ts b/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-openmldb.ts
new file mode 100644
index 0000000000..742d404900
--- /dev/null
+++ b/dolphinscheduler-ui/src/views/projects/task/components/node/fields/use-openmldb.ts
@@ -0,0 +1,87 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+import { useI18n } from 'vue-i18n'
+import { useCustomParams, useResources } from '.'
+import type { IJsonItem } from '../types'
+
+export function useOpenmldb(model: { [field: string]: any }): IJsonItem[] {
+  const { t } = useI18n()
+  const options = [
+    {
+      label: t('project.node.openmldb_execute_mode_offline'),
+      value: 'offline'
+    },
+    {
+      label: t('project.node.openmldb_execute_mode_online'),
+      value: 'online'
+    }
+  ]
+  return [
+    {
+      type: 'input',
+      field: 'zk',
+      name: t('project.node.openmldb_zk_address'),
+      props: {
+        placeholder: t('project.node.openmldb_zk_address_tips')
+      },
+      validate: {
+        trigger: ['input', 'blur'],
+        required: true,
+        validator(validate: any, value: string) {
+          if (!value) {
+            return new Error(t('project.node.openmldb_zk_address_tips'))
+          }
+        }
+      }
+    },
+    {
+      type: 'input',
+      field: 'zkPath',
+      name: t('project.node.openmldb_zk_path'),
+      props: {
+        placeholder: t('project.node.openmldb_zk_path_tips')
+      },
+      validate: {
+        trigger: ['input', 'blur'],
+        required: true,
+        validator(validate: any, value: string) {
+          if (!value) {
+            return new Error(t('project.node.openmldb_zk_path_tips'))
+          }
+        }
+      }
+    },
+    {
+      type: 'radio',
+      field: 'executeMode',
+      name: t('project.node.openmldb_execute_mode'),
+      options: options
+    },
+    {
+      type: 'editor',
+      field: 'sql',
+      name: t('project.node.sql_statement'),
+      validate: {
+        trigger: ['input', 'trigger'],
+        required: true,
+        message: t('project.node.sql_empty_tips')
+      }
+    },
+    useResources(),
+    ...useCustomParams({ model, field: 'localParams', isSimple: false })
+  ]
+}
diff --git a/dolphinscheduler-ui/src/views/resource/task-group/option/components/form-modal.tsx b/dolphinscheduler-ui/src/views/resource/task-group/option/components/form-modal.tsx
index 259d0a361e..c2f83d82a8 100644
--- a/dolphinscheduler-ui/src/views/resource/task-group/option/components/form-modal.tsx
+++ b/dolphinscheduler-ui/src/views/resource/task-group/option/components/form-modal.tsx
@@ -135,7 +135,7 @@ const FormModal = defineComponent({
           >
             <NInputNumber
               v-model:value={this.formData.groupSize}
-              style={{width: '100%'}}
+              style={{ width: '100%' }}
               min={1}
               placeholder={t(
                 'resource.task_group_option.please_enter_resource_pool_size'


[dolphinscheduler] 12/18: [Style][UI] Split multilingual modules. (#10256)

Posted by li...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

liudongkai pushed a commit to branch 3.0.0-beta-2-prepare
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git

commit 32c8b7c9f222ad16b055d5d3351f224d36d40309
Author: songjianet <17...@qq.com>
AuthorDate: Thu May 26 19:22:27 2022 +0800

    [Style][UI] Split multilingual modules. (#10256)
    
    (cherry picked from commit 4c1ef0a89a81e3e7464300a7d010a4786abd3e7b)
---
 .../src/layouts/content/use-dataList.ts            |    6 +-
 dolphinscheduler-ui/src/locales/en_US/crontab.ts   |   78 ++
 .../src/locales/en_US/data-quality.ts              |  112 ++
 .../src/locales/en_US/datasource.ts                |   66 +
 .../src/locales/{index.ts => en_US/home.ts}        |   40 +-
 dolphinscheduler-ui/src/locales/en_US/index.ts     |   50 +
 .../src/locales/{index.ts => en_US/login.ts}       |   23 +-
 dolphinscheduler-ui/src/locales/en_US/menu.ts      |   59 +
 .../src/locales/{index.ts => en_US/modal.ts}       |   19 +-
 dolphinscheduler-ui/src/locales/en_US/monitor.ts   |   71 +
 .../src/locales/{index.ts => en_US/password.ts}    |   25 +-
 .../src/locales/{index.ts => en_US/profile.ts}     |   38 +-
 dolphinscheduler-ui/src/locales/en_US/project.ts   |  621 +++++++++
 dolphinscheduler-ui/src/locales/en_US/resource.ts  |  170 +++
 dolphinscheduler-ui/src/locales/en_US/security.ts  |  265 ++++
 .../src/locales/{index.ts => en_US/theme.ts}       |   19 +-
 .../locales/{index.ts => en_US/user-dropdown.ts}   |   20 +-
 dolphinscheduler-ui/src/locales/index.ts           |    4 +-
 dolphinscheduler-ui/src/locales/modules/en_US.ts   | 1436 --------------------
 dolphinscheduler-ui/src/locales/modules/zh_CN.ts   | 1419 -------------------
 dolphinscheduler-ui/src/locales/zh_CN/crontab.ts   |   77 ++
 .../src/locales/zh_CN/data-quality.ts              |  111 ++
 .../src/locales/zh_CN/datasource.ts                |   63 +
 .../src/locales/{index.ts => zh_CN/home.ts}        |   40 +-
 dolphinscheduler-ui/src/locales/zh_CN/index.ts     |   50 +
 .../src/locales/{index.ts => zh_CN/login.ts}       |   23 +-
 dolphinscheduler-ui/src/locales/zh_CN/menu.ts      |   59 +
 .../src/locales/{index.ts => zh_CN/modal.ts}       |   19 +-
 dolphinscheduler-ui/src/locales/zh_CN/monitor.ts   |   70 +
 .../src/locales/{index.ts => zh_CN/password.ts}    |   24 +-
 .../src/locales/{index.ts => zh_CN/profile.ts}     |   38 +-
 dolphinscheduler-ui/src/locales/zh_CN/project.ts   |  614 +++++++++
 dolphinscheduler-ui/src/locales/zh_CN/resource.ts  |  168 +++
 dolphinscheduler-ui/src/locales/zh_CN/security.ts  |  265 ++++
 .../src/locales/{index.ts => zh_CN/theme.ts}       |   19 +-
 .../locales/{index.ts => zh_CN/user-dropdown.ts}   |   20 +-
 36 files changed, 3131 insertions(+), 3070 deletions(-)

diff --git a/dolphinscheduler-ui/src/layouts/content/use-dataList.ts b/dolphinscheduler-ui/src/layouts/content/use-dataList.ts
index 242edd414a..b1045c5156 100644
--- a/dolphinscheduler-ui/src/layouts/content/use-dataList.ts
+++ b/dolphinscheduler-ui/src/layouts/content/use-dataList.ts
@@ -327,17 +327,17 @@ export function useDataList() {
   const changeUserDropdown = (state: any) => {
     state.userDropdownOptions = [
       {
-        label: t('userDropdown.profile'),
+        label: t('user_dropdown.profile'),
         key: 'profile',
         icon: renderIcon(UserOutlined)
       },
       {
-        label: t('userDropdown.password'),
+        label: t('user_dropdown.password'),
         key: 'password',
         icon: renderIcon(KeyOutlined)
       },
       {
-        label: t('userDropdown.logout'),
+        label: t('user_dropdown.logout'),
         key: 'logout',
         icon: renderIcon(LogoutOutlined)
       }
diff --git a/dolphinscheduler-ui/src/locales/en_US/crontab.ts b/dolphinscheduler-ui/src/locales/en_US/crontab.ts
new file mode 100644
index 0000000000..0bc96147b7
--- /dev/null
+++ b/dolphinscheduler-ui/src/locales/en_US/crontab.ts
@@ -0,0 +1,78 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export default {
+  second: 'second',
+  minute: 'minute',
+  hour: 'hour',
+  day: 'day',
+  month: 'month',
+  year: 'year',
+  monday: 'Monday',
+  tuesday: 'Tuesday',
+  wednesday: 'Wednesday',
+  thursday: 'Thursday',
+  friday: 'Friday',
+  saturday: 'Saturday',
+  sunday: 'Sunday',
+  every_second: 'Every second',
+  every: 'Every',
+  second_carried_out: 'second carried out',
+  second_start: 'Start',
+  specific_second: 'Specific second(multiple)',
+  specific_second_tip: 'Please enter a specific second',
+  cycle_from: 'Cycle from',
+  to: 'to',
+  every_minute: 'Every minute',
+  minute_carried_out: 'minute carried out',
+  minute_start: 'Start',
+  specific_minute: 'Specific minute(multiple)',
+  specific_minute_tip: 'Please enter a specific minute',
+  every_hour: 'Every hour',
+  hour_carried_out: 'hour carried out',
+  hour_start: 'Start',
+  specific_hour: 'Specific hour(multiple)',
+  specific_hour_tip: 'Please enter a specific hour',
+  every_day: 'Every day',
+  week_carried_out: 'week carried out',
+  start: 'Start',
+  day_carried_out: 'day carried out',
+  day_start: 'Start',
+  specific_week: 'Specific day of the week(multiple)',
+  specific_week_tip: 'Please enter a specific week',
+  specific_day: 'Specific days(multiple)',
+  specific_day_tip: 'Please enter a days',
+  last_day_of_month: 'On the last day of the month',
+  last_work_day_of_month: 'On the last working day of the month',
+  last_of_month: 'At the last of this month',
+  before_end_of_month: 'Before the end of this month',
+  recent_business_day_to_month:
+    'The most recent business day (Monday to Friday) to this month',
+  in_this_months: 'In this months',
+  every_month: 'Every month',
+  month_carried_out: 'month carried out',
+  month_start: 'Start',
+  specific_month: 'Specific months(multiple)',
+  specific_month_tip: 'Please enter a months',
+  every_year: 'Every year',
+  year_carried_out: 'year carried out',
+  year_start: 'Start',
+  specific_year: 'Specific year(multiple)',
+  specific_year_tip: 'Please enter a year',
+  one_hour: 'hour',
+  one_day: 'day'
+}
\ No newline at end of file
diff --git a/dolphinscheduler-ui/src/locales/en_US/data-quality.ts b/dolphinscheduler-ui/src/locales/en_US/data-quality.ts
new file mode 100644
index 0000000000..c01556cefe
--- /dev/null
+++ b/dolphinscheduler-ui/src/locales/en_US/data-quality.ts
@@ -0,0 +1,112 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export default {
+  task_result: {
+    task_name: 'Task Name',
+    workflow_instance: 'Workflow Instance',
+    rule_type: 'Rule Type',
+    rule_name: 'Rule Name',
+    state: 'State',
+    actual_value: 'Actual Value',
+    excepted_value: 'Excepted Value',
+    check_type: 'Check Type',
+    operator: 'Operator',
+    threshold: 'Threshold',
+    failure_strategy: 'Failure Strategy',
+    excepted_value_type: 'Excepted Value Type',
+    error_output_path: 'Error Output Path',
+    username: 'Username',
+    create_time: 'Create Time',
+    update_time: 'Update Time',
+    undone: 'Undone',
+    success: 'Success',
+    failure: 'Failure',
+    single_table: 'Single Table',
+    single_table_custom_sql: 'Single Table Custom Sql',
+    multi_table_accuracy: 'Multi Table Accuracy',
+    multi_table_comparison: 'Multi Table Comparison',
+    expected_and_actual_or_expected: '(Expected - Actual) / Expected x 100%',
+    expected_and_actual: 'Expected - Actual',
+    actual_and_expected: 'Actual - Expected',
+    actual_or_expected: 'Actual / Expected x 100%'
+  },
+  rule: {
+    actions: 'Actions',
+    name: 'Rule Name',
+    type: 'Rule Type',
+    username: 'User Name',
+    create_time: 'Create Time',
+    update_time: 'Update Time',
+    input_item: 'Rule input item',
+    view_input_item: 'View input items',
+    input_item_title: 'Input item title',
+    input_item_placeholder: 'Input item placeholder',
+    input_item_type: 'Input item type',
+    src_connector_type: 'SrcConnType',
+    src_datasource_id: 'SrcSource',
+    src_table: 'SrcTable',
+    src_filter: 'SrcFilter',
+    src_field: 'SrcField',
+    statistics_name: 'ActualValName',
+    check_type: 'CheckType',
+    operator: 'Operator',
+    threshold: 'Threshold',
+    failure_strategy: 'FailureStrategy',
+    target_connector_type: 'TargetConnType',
+    target_datasource_id: 'TargetSourceId',
+    target_table: 'TargetTable',
+    target_filter: 'TargetFilter',
+    mapping_columns: 'OnClause',
+    statistics_execute_sql: 'ActualValExecSql',
+    comparison_name: 'ExceptedValName',
+    comparison_execute_sql: 'ExceptedValExecSql',
+    comparison_type: 'ExceptedValType',
+    writer_connector_type: 'WriterConnType',
+    writer_datasource_id: 'WriterSourceId',
+    target_field: 'TargetField',
+    field_length: 'FieldLength',
+    logic_operator: 'LogicOperator',
+    regexp_pattern: 'RegexpPattern',
+    deadline: 'Deadline',
+    datetime_format: 'DatetimeFormat',
+    enum_list: 'EnumList',
+    begin_time: 'BeginTime',
+    fix_value: 'FixValue',
+    null_check: 'NullCheck',
+    custom_sql: 'Custom Sql',
+    single_table: 'Single Table',
+    single_table_custom_sql: 'Single Table Custom Sql',
+    multi_table_accuracy: 'Multi Table Accuracy',
+    multi_table_value_comparison: 'Multi Table Compare',
+    field_length_check: 'FieldLengthCheck',
+    uniqueness_check: 'UniquenessCheck',
+    regexp_check: 'RegexpCheck',
+    timeliness_check: 'TimelinessCheck',
+    enumeration_check: 'EnumerationCheck',
+    table_count_check: 'TableCountCheck',
+    all: 'All',
+    FixValue: 'FixValue',
+    DailyAvg: 'DailyAvg',
+    WeeklyAvg: 'WeeklyAvg',
+    MonthlyAvg: 'MonthlyAvg',
+    Last7DayAvg: 'Last7DayAvg',
+    Last30DayAvg: 'Last30DayAvg',
+    SrcTableTotalRows: 'SrcTableTotalRows',
+    TargetTableTotalRows: 'TargetTableTotalRows'
+  }
+}
\ No newline at end of file
diff --git a/dolphinscheduler-ui/src/locales/en_US/datasource.ts b/dolphinscheduler-ui/src/locales/en_US/datasource.ts
new file mode 100644
index 0000000000..a6a34a78b3
--- /dev/null
+++ b/dolphinscheduler-ui/src/locales/en_US/datasource.ts
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export default {
+  datasource: 'DataSource',
+  create_datasource: 'Create DataSource',
+  search_input_tips: 'Please input the keywords',
+  datasource_name: 'Datasource Name',
+  datasource_name_tips: 'Please enter datasource name',
+  datasource_user_name: 'Owner',
+  datasource_type: 'Datasource Type',
+  datasource_parameter: 'Datasource Parameter',
+  description: 'Description',
+  description_tips: 'Please enter description',
+  create_time: 'Create Time',
+  update_time: 'Update Time',
+  operation: 'Operation',
+  click_to_view: 'Click to view',
+  delete: 'Delete',
+  confirm: 'Confirm',
+  delete_confirm: 'Delete?',
+  cancel: 'Cancel',
+  create: 'Create',
+  edit: 'Edit',
+  success: 'Success',
+  test_connect: 'Test Connect',
+  ip: 'IP',
+  ip_tips: 'Please enter IP',
+  port: 'Port',
+  port_tips: 'Please enter port',
+  database_name: 'Database Name',
+  database_name_tips: 'Please enter database name',
+  oracle_connect_type: 'ServiceName or SID',
+  oracle_connect_type_tips: 'Please select serviceName or SID',
+  oracle_service_name: 'ServiceName',
+  oracle_sid: 'SID',
+  jdbc_connect_parameters: 'jdbc connect parameters',
+  principal_tips: 'Please enter Principal',
+  krb5_conf_tips:
+    'Please enter the kerberos authentication parameter java.security.krb5.conf',
+  keytab_username_tips:
+    'Please enter the kerberos authentication parameter login.user.keytab.username',
+  keytab_path_tips:
+    'Please enter the kerberos authentication parameter login.user.keytab.path',
+  format_tips: 'Please enter format',
+  connection_parameter: 'connection parameter',
+  user_name: 'User Name',
+  user_name_tips: 'Please enter your username',
+  user_password: 'Password',
+  user_password_tips: 'Please enter your password',
+  jdbc_format_tips: 'jdbc connection parameters is not a correct JSON format'
+}
\ No newline at end of file
diff --git a/dolphinscheduler-ui/src/locales/index.ts b/dolphinscheduler-ui/src/locales/en_US/home.ts
similarity index 51%
copy from dolphinscheduler-ui/src/locales/index.ts
copy to dolphinscheduler-ui/src/locales/en_US/home.ts
index 31a3cd9835..6f4ec60bad 100644
--- a/dolphinscheduler-ui/src/locales/index.ts
+++ b/dolphinscheduler-ui/src/locales/en_US/home.ts
@@ -15,18 +15,28 @@
  * limitations under the License.
  */
 
-import { createI18n } from 'vue-i18n'
-import zh_CN from './modules/zh_CN'
-import en_US from './modules/en_US'
-
-const i18n = createI18n({
-  legacy: false,
-  globalInjection: true,
-  locale: 'zh_CN',
-  messages: {
-    zh_CN,
-    en_US
-  }
-})
-
-export default i18n
+export default {
+  task_state_statistics: 'Task State Statistics',
+  process_state_statistics: 'Process State Statistics',
+  process_definition_statistics: 'Process Definition Statistics',
+  number: 'Number',
+  state: 'State',
+  submitted_success: 'SUBMITTED_SUCCESS',
+  running_execution: 'RUNNING_EXECUTION',
+  ready_pause: 'READY_PAUSE',
+  pause: 'PAUSE',
+  ready_stop: 'READY_STOP',
+  stop: 'STOP',
+  failure: 'FAILURE',
+  success: 'SUCCESS',
+  need_fault_tolerance: 'NEED_FAULT_TOLERANCE',
+  kill: 'KILL',
+  waiting_thread: 'WAITING_THREAD',
+  waiting_depend: 'WAITING_DEPEND',
+  delay_execution: 'DELAY_EXECUTION',
+  forced_success: 'FORCED_SUCCESS',
+  serial_wait: 'SERIAL_WAIT',
+  dispatch: 'DISPATCH',
+  ready_block: 'READY_BLOCK',
+  block: 'BLOCK'
+}
\ No newline at end of file
diff --git a/dolphinscheduler-ui/src/locales/en_US/index.ts b/dolphinscheduler-ui/src/locales/en_US/index.ts
new file mode 100644
index 0000000000..d04b7efcc2
--- /dev/null
+++ b/dolphinscheduler-ui/src/locales/en_US/index.ts
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import crontab from '@/locales/en_US/crontab'
+import data_quality from '@/locales/en_US/data-quality'
+import datasource from '@/locales/en_US/datasource'
+import home from '@/locales/en_US/home'
+import login from '@/locales/en_US/login'
+import menu from '@/locales/en_US/menu'
+import modal from '@/locales/en_US/modal'
+import monitor from '@/locales/en_US/monitor'
+import password from '@/locales/en_US/password'
+import profile from '@/locales/en_US/profile'
+import project from '@/locales/en_US/project'
+import resource from '@/locales/en_US/resource'
+import security from '@/locales/en_US/security'
+import theme from '@/locales/en_US/theme'
+import user_dropdown from '@/locales/en_US/user-dropdown'
+
+export default {
+  login,
+  modal,
+  theme,
+  user_dropdown,
+  menu,
+  home,
+  password,
+  profile,
+  monitor,
+  resource,
+  project,
+  security,
+  datasource,
+  data_quality,
+  crontab
+}
diff --git a/dolphinscheduler-ui/src/locales/index.ts b/dolphinscheduler-ui/src/locales/en_US/login.ts
similarity index 75%
copy from dolphinscheduler-ui/src/locales/index.ts
copy to dolphinscheduler-ui/src/locales/en_US/login.ts
index 31a3cd9835..2776397304 100644
--- a/dolphinscheduler-ui/src/locales/index.ts
+++ b/dolphinscheduler-ui/src/locales/en_US/login.ts
@@ -15,18 +15,11 @@
  * limitations under the License.
  */
 
-import { createI18n } from 'vue-i18n'
-import zh_CN from './modules/zh_CN'
-import en_US from './modules/en_US'
-
-const i18n = createI18n({
-  legacy: false,
-  globalInjection: true,
-  locale: 'zh_CN',
-  messages: {
-    zh_CN,
-    en_US
-  }
-})
-
-export default i18n
+export default {
+  test: 'Test',
+  userName: 'Username',
+  userName_tips: 'Please enter your username',
+  userPassword: 'Password',
+  userPassword_tips: 'Please enter your password',
+  login: 'Login'
+}
\ No newline at end of file
diff --git a/dolphinscheduler-ui/src/locales/en_US/menu.ts b/dolphinscheduler-ui/src/locales/en_US/menu.ts
new file mode 100644
index 0000000000..ab95e43df5
--- /dev/null
+++ b/dolphinscheduler-ui/src/locales/en_US/menu.ts
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export default {
+  home: 'Home',
+  project: 'Project',
+  resources: 'Resources',
+  datasource: 'Datasource',
+  monitor: 'Monitor',
+  security: 'Security',
+  project_overview: 'Project Overview',
+  workflow_relation: 'Workflow Relation',
+  workflow: 'Workflow',
+  workflow_definition: 'Workflow Definition',
+  workflow_instance: 'Workflow Instance',
+  task: 'Task',
+  task_instance: 'Task Instance',
+  task_definition: 'Task Definition',
+  file_manage: 'File Manage',
+  udf_manage: 'UDF Manage',
+  resource_manage: 'Resource Manage',
+  function_manage: 'Function Manage',
+  service_manage: 'Service Manage',
+  master: 'Master',
+  worker: 'Worker',
+  db: 'DB',
+  statistical_manage: 'Statistical Manage',
+  statistics: 'Statistics',
+  audit_log: 'Audit Log',
+  tenant_manage: 'Tenant Manage',
+  user_manage: 'User Manage',
+  alarm_group_manage: 'Alarm Group Manage',
+  alarm_instance_manage: 'Alarm Instance Manage',
+  worker_group_manage: 'Worker Group Manage',
+  yarn_queue_manage: 'Yarn Queue Manage',
+  environment_manage: 'Environment Manage',
+  k8s_namespace_manage: 'K8S Namespace Manage',
+  token_manage: 'Token Manage',
+  task_group_manage: 'Task Group Manage',
+  task_group_option: 'Task Group Option',
+  task_group_queue: 'Task Group Queue',
+  data_quality: 'Data Quality',
+  task_result: 'Task Result',
+  rule: 'Rule management'
+}
\ No newline at end of file
diff --git a/dolphinscheduler-ui/src/locales/index.ts b/dolphinscheduler-ui/src/locales/en_US/modal.ts
similarity index 75%
copy from dolphinscheduler-ui/src/locales/index.ts
copy to dolphinscheduler-ui/src/locales/en_US/modal.ts
index 31a3cd9835..f81fa9a7a4 100644
--- a/dolphinscheduler-ui/src/locales/index.ts
+++ b/dolphinscheduler-ui/src/locales/en_US/modal.ts
@@ -15,18 +15,7 @@
  * limitations under the License.
  */
 
-import { createI18n } from 'vue-i18n'
-import zh_CN from './modules/zh_CN'
-import en_US from './modules/en_US'
-
-const i18n = createI18n({
-  legacy: false,
-  globalInjection: true,
-  locale: 'zh_CN',
-  messages: {
-    zh_CN,
-    en_US
-  }
-})
-
-export default i18n
+export default {
+  cancel: 'Cancel',
+  confirm: 'Confirm'
+}
\ No newline at end of file
diff --git a/dolphinscheduler-ui/src/locales/en_US/monitor.ts b/dolphinscheduler-ui/src/locales/en_US/monitor.ts
new file mode 100644
index 0000000000..d94d6e913c
--- /dev/null
+++ b/dolphinscheduler-ui/src/locales/en_US/monitor.ts
@@ -0,0 +1,71 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export default {
+  master: {
+    cpu_usage: 'CPU Usage',
+    memory_usage: 'Memory Usage',
+    load_average: 'Load Average',
+    create_time: 'Create Time',
+    last_heartbeat_time: 'Last Heartbeat Time',
+    directory_detail: 'Directory Detail',
+    host: 'Host',
+    directory: 'Directory',
+    master_no_data_result_title: 'No Master Nodes Exist',
+    master_no_data_result_desc:
+      'Currently, there are no master nodes exist, please create a master node and refresh this page'
+  },
+  worker: {
+    cpu_usage: 'CPU Usage',
+    memory_usage: 'Memory Usage',
+    load_average: 'Load Average',
+    create_time: 'Create Time',
+    last_heartbeat_time: 'Last Heartbeat Time',
+    directory_detail: 'Directory Detail',
+    host: 'Host',
+    directory: 'Directory',
+    worker_no_data_result_title: 'No Worker Nodes Exist',
+    worker_no_data_result_desc:
+      'Currently, there are no worker nodes exist, please create a worker node and refresh this page'
+  },
+  db: {
+    health_state: 'Health State',
+    max_connections: 'Max Connections',
+    threads_connections: 'Threads Connections',
+    threads_running_connections: 'Threads Running Connections'
+  },
+  statistics: {
+    command_number_of_waiting_for_running:
+      'Command Number Of Waiting For Running',
+    failure_command_number: 'Failure Command Number'
+  },
+  audit_log: {
+    user_name: 'User Name',
+    resource_type: 'Resource Type',
+    project_name: 'Project Name',
+    operation_type: 'Operation Type',
+    create_time: 'Create Time',
+    start_time: 'Start Time',
+    end_time: 'End Time',
+    user_audit: 'User Audit',
+    project_audit: 'Project Audit',
+    create: 'Create',
+    update: 'Update',
+    delete: 'Delete',
+    read: 'Read'
+  }
+}
\ No newline at end of file
diff --git a/dolphinscheduler-ui/src/locales/index.ts b/dolphinscheduler-ui/src/locales/en_US/password.ts
similarity index 70%
copy from dolphinscheduler-ui/src/locales/index.ts
copy to dolphinscheduler-ui/src/locales/en_US/password.ts
index 31a3cd9835..870b787dc3 100644
--- a/dolphinscheduler-ui/src/locales/index.ts
+++ b/dolphinscheduler-ui/src/locales/en_US/password.ts
@@ -15,18 +15,13 @@
  * limitations under the License.
  */
 
-import { createI18n } from 'vue-i18n'
-import zh_CN from './modules/zh_CN'
-import en_US from './modules/en_US'
-
-const i18n = createI18n({
-  legacy: false,
-  globalInjection: true,
-  locale: 'zh_CN',
-  messages: {
-    zh_CN,
-    en_US
-  }
-})
-
-export default i18n
+export default {
+  edit_password: 'Edit Password',
+  password: 'Password',
+  confirm_password: 'Confirm Password',
+  password_tips: 'Please enter your password',
+  confirm_password_tips: 'Please enter your confirm password',
+  two_password_entries_are_inconsistent:
+    'Two password entries are inconsistent',
+  submit: 'Submit'
+}
\ No newline at end of file
diff --git a/dolphinscheduler-ui/src/locales/index.ts b/dolphinscheduler-ui/src/locales/en_US/profile.ts
similarity index 53%
copy from dolphinscheduler-ui/src/locales/index.ts
copy to dolphinscheduler-ui/src/locales/en_US/profile.ts
index 31a3cd9835..08d048019f 100644
--- a/dolphinscheduler-ui/src/locales/index.ts
+++ b/dolphinscheduler-ui/src/locales/en_US/profile.ts
@@ -15,18 +15,26 @@
  * limitations under the License.
  */
 
-import { createI18n } from 'vue-i18n'
-import zh_CN from './modules/zh_CN'
-import en_US from './modules/en_US'
-
-const i18n = createI18n({
-  legacy: false,
-  globalInjection: true,
-  locale: 'zh_CN',
-  messages: {
-    zh_CN,
-    en_US
-  }
-})
-
-export default i18n
+export default {
+  profile: 'Profile',
+  edit: 'Edit',
+  username: 'Username',
+  email: 'Email',
+  phone: 'Phone',
+  state: 'State',
+  permission: 'Permission',
+  create_time: 'Create Time',
+  update_time: 'Update Time',
+  administrator: 'Administrator',
+  ordinary_user: 'Ordinary User',
+  edit_profile: 'Edit Profile',
+  username_tips: 'Please enter your username',
+  email_tips: 'Please enter your email',
+  email_correct_tips: 'Please enter your email in the correct format',
+  phone_tips: 'Please enter your phone',
+  state_tips: 'Please choose your state',
+  enable: 'Enable',
+  disable: 'Disable',
+  timezone_success: 'Time zone updated successful',
+  please_select_timezone: 'Choose timeZone'
+}
\ No newline at end of file
diff --git a/dolphinscheduler-ui/src/locales/en_US/project.ts b/dolphinscheduler-ui/src/locales/en_US/project.ts
new file mode 100644
index 0000000000..7f2f7f4577
--- /dev/null
+++ b/dolphinscheduler-ui/src/locales/en_US/project.ts
@@ -0,0 +1,621 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export default {
+  list: {
+    create_project: 'Create Project',
+    edit_project: 'Edit Project',
+    project_list: 'Project List',
+    project_tips: 'Please enter your project',
+    description_tips: 'Please enter your description',
+    username_tips: 'Please enter your username',
+    project_name: 'Project Name',
+    project_description: 'Project Description',
+    owned_users: 'Owned Users',
+    workflow_define_count: 'Workflow Define Count',
+    process_instance_running_count: 'Process Instance Running Count',
+    description: 'Description',
+    create_time: 'Create Time',
+    update_time: 'Update Time',
+    operation: 'Operation',
+    edit: 'Edit',
+    delete: 'Delete',
+    confirm: 'Confirm',
+    cancel: 'Cancel',
+    delete_confirm: 'Delete?'
+  },
+  workflow: {
+    workflow_relation: 'Workflow Relation',
+    create_workflow: 'Create Workflow',
+    import_workflow: 'Import Workflow',
+    workflow_name: 'Workflow Name',
+    current_selection: 'Current Selection',
+    online: 'Online',
+    offline: 'Offline',
+    refresh: 'Refresh',
+    show_hide_label: 'Show / Hide Label',
+    workflow_offline: 'Workflow Offline',
+    schedule_offline: 'Schedule Offline',
+    schedule_start_time: 'Schedule Start Time',
+    schedule_end_time: 'Schedule End Time',
+    crontab_expression: 'Crontab',
+    workflow_publish_status: 'Workflow Publish Status',
+    schedule_publish_status: 'Schedule Publish Status',
+    workflow_definition: 'Workflow Definition',
+    workflow_instance: 'Workflow Instance',
+    status: 'Status',
+    create_time: 'Create Time',
+    update_time: 'Update Time',
+    description: 'Description',
+    create_user: 'Create User',
+    modify_user: 'Modify User',
+    operation: 'Operation',
+    edit: 'Edit',
+    start: 'Start',
+    timing: 'Timing',
+    timezone: 'Timezone',
+    up_line: 'Online',
+    down_line: 'Offline',
+    copy_workflow: 'Copy Workflow',
+    cron_manage: 'Cron manage',
+    delete: 'Delete',
+    tree_view: 'Tree View',
+    tree_limit: 'Limit Size',
+    export: 'Export',
+    batch_copy: 'Batch Copy',
+    version_info: 'Version Info',
+    version: 'Version',
+    file_upload: 'File Upload',
+    upload_file: 'Upload File',
+    upload: 'Upload',
+    file_name: 'File Name',
+    success: 'Success',
+    set_parameters_before_starting: 'Please set the parameters before starting',
+    set_parameters_before_timing: 'Set parameters before timing',
+    start_and_stop_time: 'Start and stop time',
+    next_five_execution_times: 'Next five execution times',
+    execute_time: 'Execute time',
+    failure_strategy: 'Failure Strategy',
+    notification_strategy: 'Notification Strategy',
+    workflow_priority: 'Workflow Priority',
+    worker_group: 'Worker Group',
+    environment_name: 'Environment Name',
+    alarm_group: 'Alarm Group',
+    complement_data: 'Complement Data',
+    startup_parameter: 'Startup Parameter',
+    whether_dry_run: 'Whether Dry-Run',
+    continue: 'Continue',
+    end: 'End',
+    none_send: 'None',
+    success_send: 'Success',
+    failure_send: 'Failure',
+    all_send: 'All',
+    whether_complement_data: 'Whether it is a complement process?',
+    schedule_date: 'Schedule date',
+    mode_of_execution: 'Mode of execution',
+    serial_execution: 'Serial execution',
+    parallel_execution: 'Parallel execution',
+    parallelism: 'Parallelism',
+    custom_parallelism: 'Custom Parallelism',
+    please_enter_parallelism: 'Please enter Parallelism',
+    please_choose: 'Please Choose',
+    start_time: 'Start Time',
+    end_time: 'End Time',
+    crontab: 'Crontab',
+    delete_confirm: 'Delete?',
+    enter_name_tips: 'Please enter name',
+    switch_version: 'Switch To This Version',
+    confirm_switch_version: 'Confirm Switch To This Version?',
+    current_version: 'Current Version',
+    run_type: 'Run Type',
+    scheduling_time: 'Scheduling Time',
+    duration: 'Duration',
+    run_times: 'Run Times',
+    fault_tolerant_sign: 'Fault-tolerant Sign',
+    dry_run_flag: 'Dry-run Flag',
+    executor: 'Executor',
+    host: 'Host',
+    start_process: 'Start Process',
+    execute_from_the_current_node: 'Execute from the current node',
+    recover_tolerance_fault_process: 'Recover tolerance fault process',
+    resume_the_suspension_process: 'Resume the suspension process',
+    execute_from_the_failed_nodes: 'Execute from the failed nodes',
+    scheduling_execution: 'Scheduling execution',
+    rerun: 'Rerun',
+    stop: 'Stop',
+    pause: 'Pause',
+    recovery_waiting_thread: 'Recovery waiting thread',
+    recover_serial_wait: 'Recover serial wait',
+    recovery_suspend: 'Recovery Suspend',
+    recovery_failed: 'Recovery Failed',
+    gantt: 'Gantt',
+    name: 'Name',
+    all_status: 'AllStatus',
+    submit_success: 'Submitted successfully',
+    running: 'Running',
+    ready_to_pause: 'Ready to pause',
+    ready_to_stop: 'Ready to stop',
+    failed: 'Failed',
+    need_fault_tolerance: 'Need fault tolerance',
+    kill: 'Kill',
+    waiting_for_thread: 'Waiting for thread',
+    waiting_for_dependence: 'Waiting for dependence',
+    waiting_for_dependency_to_complete: 'Waiting for dependency to complete',
+    delay_execution: 'Delay execution',
+    forced_success: 'Forced success',
+    serial_wait: 'Serial wait',
+    dispatch: 'Dispatch',
+    pending: 'Pending',
+    executing: 'Executing',
+    startup_type: 'Startup Type',
+    complement_range: 'Complement Range',
+    parameters_variables: 'Parameters variables',
+    global_parameters: 'Global parameters',
+    local_parameters: 'Local parameters',
+    type: 'Type',
+    retry_count: 'Retry Count',
+    submit_time: 'Submit Time',
+    refresh_status_succeeded: 'Refresh status succeeded',
+    view_log: 'View log',
+    update_log_success: 'Update log success',
+    no_more_log: 'No more logs',
+    no_log: 'No log',
+    loading_log: 'Loading Log...',
+    close: 'Close',
+    download_log: 'Download Log',
+    refresh_log: 'Refresh Log',
+    enter_full_screen: 'Enter full screen',
+    cancel_full_screen: 'Cancel full screen',
+    task_state: 'Task status',
+    mode_of_dependent: 'Mode of dependent',
+    open: 'Open',
+    project_name_required: 'Project name is required',
+    related_items: 'Related items',
+    project_name: 'Project Name',
+    project_tips: 'Please select project name',
+    workflow_relation_no_data_result_title:
+      'Can not find any relations of workflows.',
+    workflow_relation_no_data_result_desc:
+      'There is not any workflows. Please create a workflow, and then visit this page again.'
+  },
+  task: {
+    cancel_full_screen: 'Cancel full screen',
+    enter_full_screen: 'Enter full screen',
+    current_task_settings: 'Current task settings',
+    online: 'Online',
+    offline: 'Offline',
+    task_name: 'Task Name',
+    task_type: 'Task Type',
+    create_task: 'Create Task',
+    workflow_instance: 'Workflow Instance',
+    workflow_name: 'Workflow Name',
+    workflow_name_tips: 'Please select workflow name',
+    workflow_state: 'Workflow State',
+    version: 'Version',
+    current_version: 'Current Version',
+    switch_version: 'Switch To This Version',
+    confirm_switch_version: 'Confirm Switch To This Version?',
+    description: 'Description',
+    move: 'Move',
+    upstream_tasks: 'Upstream Tasks',
+    executor: 'Executor',
+    node_type: 'Node Type',
+    state: 'State',
+    submit_time: 'Submit Time',
+    start_time: 'Start Time',
+    create_time: 'Create Time',
+    update_time: 'Update Time',
+    end_time: 'End Time',
+    duration: 'Duration',
+    retry_count: 'Retry Count',
+    dry_run_flag: 'Dry Run Flag',
+    host: 'Host',
+    operation: 'Operation',
+    edit: 'Edit',
+    delete: 'Delete',
+    delete_confirm: 'Delete?',
+    forced_success: 'Forced Success',
+    view_log: 'View Log',
+    download_log: 'Download Log',
+    refresh: 'Refresh'
+  },
+  dag: {
+    create: 'Create Workflow',
+    search: 'Search',
+    download_png: 'Download PNG',
+    fullscreen_open: 'Open Fullscreen',
+    fullscreen_close: 'Close Fullscreen',
+    save: 'Save',
+    close: 'Close',
+    format: 'Format',
+    refresh_dag_status: 'Refresh DAG status',
+    layout_type: 'Layout Type',
+    grid_layout: 'Grid',
+    dagre_layout: 'Dagre',
+    rows: 'Rows',
+    cols: 'Cols',
+    copy_success: 'Copy Success',
+    workflow_name: 'Workflow Name',
+    description: 'Description',
+    tenant: 'Tenant',
+    timeout_alert: 'Timeout Alert',
+    process_execute_type: 'Process execute type',
+    parallel: 'parallel',
+    serial_wait: 'Serial wait',
+    serial_discard: 'Serial discard',
+    serial_priority: 'Serial priority',
+    recover_serial_wait: 'Recover serial wait',
+    global_variables: 'Global Variables',
+    basic_info: 'Basic Information',
+    minute: 'Minute',
+    key: 'Key',
+    value: 'Value',
+    success: 'Success',
+    delete_cell: 'Delete selected edges and nodes',
+    online_directly: 'Whether to go online the workflow definition',
+    update_directly: 'Whether to update the workflow definition',
+    dag_name_empty: 'DAG graph name cannot be empty',
+    positive_integer: 'Please enter a positive integer greater than 0',
+    prop_empty: 'prop is empty',
+    prop_repeat: 'prop is repeat',
+    node_not_created: 'Failed to save node not created',
+    copy_name: 'Copy Name',
+    view_variables: 'View Variables',
+    startup_parameter: 'Startup Parameter',
+    online: 'Online'
+  },
+  node: {
+    return_back: 'Return',
+    current_node_settings: 'Current node settings',
+    instructions: 'Instructions',
+    view_history: 'View history',
+    view_log: 'View log',
+    enter_this_child_node: 'Enter this child node',
+    name: 'Node Name',
+    task_name: 'Task Name',
+    task_name_tips: 'Please select a task (required)',
+    name_tips: 'Please enter name (required)',
+    task_type: 'Task Type',
+    task_type_tips: 'Please select a task type (required)',
+    workflow_name: 'Workflow Name',
+    workflow_name_tips: 'Please select a workflow (required)',
+    child_node: 'Child Node',
+    child_node_tips: 'Please select a child node (required)',
+    run_flag: 'Run flag',
+    normal: 'Normal',
+    prohibition_execution: 'Prohibition execution',
+    description: 'Description',
+    description_tips: 'Please enter description',
+    task_priority: 'Task priority',
+    worker_group: 'Worker group',
+    worker_group_tips:
+      'The Worker group no longer exists, please select the correct Worker group!',
+    environment_name: 'Environment Name',
+    task_group_name: 'Task group name',
+    task_group_queue_priority: 'Priority',
+    number_of_failed_retries: 'Number of failed retries',
+    times: 'Times',
+    failed_retry_interval: 'Failed retry interval',
+    minute: 'Minute',
+    delay_execution_time: 'Delay execution time',
+    state: 'State',
+    branch_flow: 'Branch flow',
+    cancel: 'Cancel',
+    loading: 'Loading...',
+    confirm: 'Confirm',
+    success: 'Success',
+    failed: 'Failed',
+    backfill_tips:
+      'The newly created sub-Process has not yet been executed and cannot enter the sub-Process',
+    task_instance_tips:
+      'The task has not been executed and cannot enter the sub-Process',
+    branch_tips:
+      'Cannot select the same node for successful branch flow and failed branch flow',
+    timeout_alarm: 'Timeout alarm',
+    timeout_strategy: 'Timeout strategy',
+    timeout_strategy_tips: 'Timeout strategy must be selected',
+    timeout_failure: 'Timeout failure',
+    timeout_period: 'Timeout period',
+    timeout_period_tips: 'Timeout must be a positive integer',
+    script: 'Script',
+    script_tips: 'Please enter script(required)',
+    init_script: 'Initialization script',
+    init_script_tips: 'Please enter initialization script',
+    resources: 'Resources',
+    resources_tips: 'Please select resources',
+    non_resources_tips: 'Please delete all non-existent resources',
+    useless_resources_tips: 'Unauthorized or deleted resources',
+    custom_parameters: 'Custom Parameters',
+    copy_success: 'Copy success',
+    copy_failed: 'The browser does not support automatic copying',
+    prop_tips: 'prop(required)',
+    prop_repeat: 'prop is repeat',
+    value_tips: 'value(optional)',
+    value_required_tips: 'value(required)',
+    pre_tasks: 'Pre tasks',
+    program_type: 'Program Type',
+    spark_version: 'Spark Version',
+    main_class: 'Main Class',
+    main_class_tips: 'Please enter main class',
+    main_package: 'Main Package',
+    main_package_tips: 'Please enter main package',
+    deploy_mode: 'Deploy Mode',
+    app_name: 'App Name',
+    app_name_tips: 'Please enter app name(optional)',
+    driver_cores: 'Driver Cores',
+    driver_cores_tips: 'Please enter Driver cores',
+    driver_memory: 'Driver Memory',
+    driver_memory_tips: 'Please enter Driver memory',
+    executor_number: 'Executor Number',
+    executor_number_tips: 'Please enter Executor number',
+    executor_memory: 'Executor Memory',
+    executor_memory_tips: 'Please enter Executor memory',
+    executor_cores: 'Executor Cores',
+    executor_cores_tips: 'Please enter Executor cores',
+    main_arguments: 'Main Arguments',
+    main_arguments_tips: 'Please enter main arguments',
+    option_parameters: 'Option Parameters',
+    option_parameters_tips: 'Please enter option parameters',
+    positive_integer_tips: 'should be a positive integer',
+    flink_version: 'Flink Version',
+    job_manager_memory: 'JobManager Memory',
+    job_manager_memory_tips: 'Please enter JobManager memory',
+    task_manager_memory: 'TaskManager Memory',
+    task_manager_memory_tips: 'Please enter TaskManager memory',
+    slot_number: 'Slot Number',
+    slot_number_tips: 'Please enter Slot number',
+    parallelism: 'Parallelism',
+    custom_parallelism: 'Configure parallelism',
+    parallelism_tips: 'Please enter Parallelism',
+    parallelism_number_tips: 'Parallelism number should be positive integer',
+    parallelism_complement_tips:
+      'If there are a large number of tasks requiring complement, you can use the custom parallelism to ' +
+      'set the complement task thread to a reasonable value to avoid too large impact on the server.',
+    task_manager_number: 'TaskManager Number',
+    task_manager_number_tips: 'Please enter TaskManager number',
+    http_url: 'Http Url',
+    http_url_tips: 'Please Enter Http Url',
+    http_url_validator: 'The request address must contain HTTP or HTTPS',
+    http_method: 'Http Method',
+    http_parameters: 'Http Parameters',
+    http_check_condition: 'Http Check Condition',
+    http_condition: 'Http Condition',
+    http_condition_tips: 'Please Enter Http Condition',
+    timeout_settings: 'Timeout Settings',
+    connect_timeout: 'Connect Timeout',
+    ms: 'ms',
+    socket_timeout: 'Socket Timeout',
+    status_code_default: 'Default response code 200',
+    status_code_custom: 'Custom response code',
+    body_contains: 'Content includes',
+    body_not_contains: 'Content does not contain',
+    http_parameters_position: 'Http Parameters Position',
+    target_task_name: 'Target Task Name',
+    target_task_name_tips: 'Please enter the Pigeon task name(required)',
+    datasource_type: 'Datasource types',
+    datasource_instances: 'Datasource instances',
+    sql_type: 'SQL Type',
+    sql_type_query: 'Query',
+    sql_type_non_query: 'Non Query',
+    sql_statement: 'SQL Statement',
+    pre_sql_statement: 'Pre SQL Statement',
+    post_sql_statement: 'Post SQL Statement',
+    sql_input_placeholder: 'Please enter non-query sql.',
+    sql_empty_tips: 'The sql can not be empty.',
+    procedure_method: 'SQL Statement',
+    procedure_method_tips: 'Please enter the procedure script',
+    procedure_method_snippet:
+      '--Please enter the procedure script \n\n--call procedure:call <procedure-name>[(<arg1>,<arg2>, ...)]\n\n--call function:?= call <procedure-name>[(<arg1>,<arg2>, ...)]',
+    start: 'Start',
+    edit: 'Edit',
+    copy: 'Copy',
+    delete: 'Delete',
+    custom_job: 'Custom Job',
+    custom_script: 'Custom Script',
+    sqoop_job_name: 'Job Name',
+    sqoop_job_name_tips: 'Please enter Job Name(required)',
+    direct: 'Direct',
+    hadoop_custom_params: 'Hadoop Params',
+    sqoop_advanced_parameters: 'Sqoop Advanced Parameters',
+    data_source: 'Data Source',
+    type: 'Type',
+    datasource: 'Datasource',
+    datasource_tips: 'Please select the datasource',
+    model_type: 'ModelType',
+    form: 'Form',
+    table: 'Table',
+    table_tips: 'Please enter Mysql Table(required)',
+    column_type: 'ColumnType',
+    all_columns: 'All Columns',
+    some_columns: 'Some Columns',
+    column: 'Column',
+    column_tips: 'Please enter Columns (Comma separated)',
+    database: 'Database',
+    database_tips: 'Please enter Hive Database(required)',
+    hive_table_tips: 'Please enter Hive Table(required)',
+    hive_partition_keys: 'Hive partition Keys',
+    hive_partition_keys_tips: 'Please enter Hive Partition Keys',
+    hive_partition_values: 'Hive partition Values',
+    hive_partition_values_tips: 'Please enter Hive Partition Values',
+    export_dir: 'Export Dir',
+    export_dir_tips: 'Please enter Export Dir(required)',
+    sql_statement_tips: 'SQL Statement(required)',
+    map_column_hive: 'Map Column Hive',
+    map_column_java: 'Map Column Java',
+    data_target: 'Data Target',
+    create_hive_table: 'CreateHiveTable',
+    drop_delimiter: 'DropDelimiter',
+    over_write_src: 'OverWriteSrc',
+    hive_target_dir: 'Hive Target Dir',
+    hive_target_dir_tips: 'Please enter hive target dir',
+    replace_delimiter: 'ReplaceDelimiter',
+    replace_delimiter_tips: 'Please enter Replace Delimiter',
+    target_dir: 'Target Dir',
+    target_dir_tips: 'Please enter Target Dir(required)',
+    delete_target_dir: 'DeleteTargetDir',
+    compression_codec: 'CompressionCodec',
+    file_type: 'FileType',
+    fields_terminated: 'FieldsTerminated',
+    fields_terminated_tips: 'Please enter Fields Terminated',
+    lines_terminated: 'LinesTerminated',
+    lines_terminated_tips: 'Please enter Lines Terminated',
+    is_update: 'IsUpdate',
+    update_key: 'UpdateKey',
+    update_key_tips: 'Please enter Update Key',
+    update_mode: 'UpdateMode',
+    only_update: 'OnlyUpdate',
+    allow_insert: 'AllowInsert',
+    concurrency: 'Concurrency',
+    concurrency_tips: 'Please enter Concurrency',
+    sea_tunnel_master: 'Master',
+    sea_tunnel_master_url: 'Master URL',
+    sea_tunnel_queue: 'Queue',
+    sea_tunnel_master_url_tips:
+      'Please enter the master url, e.g., 127.0.0.1:7077',
+    add_pre_task_check_condition: 'Add pre task check condition',
+    switch_condition: 'Condition',
+    switch_branch_flow: 'Branch Flow',
+    and: 'and',
+    or: 'or',
+    datax_custom_template: 'Custom Template',
+    datax_json_template: 'JSON',
+    datax_target_datasource_type: 'Target Datasource Types',
+    datax_target_database: 'Target Database',
+    datax_target_table: 'Target Table',
+    datax_target_table_tips: 'Please enter the name of the target table',
+    datax_target_database_pre_sql: 'Pre SQL Statement',
+    datax_target_database_post_sql: 'Post SQL Statement',
+    datax_non_query_sql_tips: 'Please enter the non-query sql statement',
+    datax_job_speed_byte: 'Speed(Byte count)',
+    datax_job_speed_byte_info: '(0 means unlimited)',
+    datax_job_speed_record: 'Speed(Record count)',
+    datax_job_speed_record_info: '(0 means unlimited)',
+    datax_job_runtime_memory: 'Runtime Memory Limits',
+    datax_job_runtime_memory_xms: 'Low Limit Value',
+    datax_job_runtime_memory_xmx: 'High Limit Value',
+    datax_job_runtime_memory_unit: 'G',
+    current_hour: 'CurrentHour',
+    last_1_hour: 'Last1Hour',
+    last_2_hour: 'Last2Hours',
+    last_3_hour: 'Last3Hours',
+    last_24_hour: 'Last24Hours',
+    today: 'today',
+    last_1_days: 'Last1Days',
+    last_2_days: 'Last2Days',
+    last_3_days: 'Last3Days',
+    last_7_days: 'Last7Days',
+    this_week: 'ThisWeek',
+    last_week: 'LastWeek',
+    last_monday: 'LastMonday',
+    last_tuesday: 'LastTuesday',
+    last_wednesday: 'LastWednesday',
+    last_thursday: 'LastThursday',
+    last_friday: 'LastFriday',
+    last_saturday: 'LastSaturday',
+    last_sunday: 'LastSunday',
+    this_month: 'ThisMonth',
+    this_month_begin: 'ThisMonthBegin',
+    last_month: 'LastMonth',
+    last_month_begin: 'LastMonthBegin',
+    last_month_end: 'LastMonthEnd',
+    month: 'month',
+    week: 'week',
+    day: 'day',
+    hour: 'hour',
+    add_dependency: 'Add dependency',
+    waiting_dependent_start: 'Waiting Dependent start',
+    check_interval: 'Check interval',
+    waiting_dependent_complete: 'Waiting Dependent complete',
+    project_name: 'Project Name',
+    project_name_tips: 'Please select a project(required)',
+    process_name: 'Workflow Name',
+    process_name_tips: 'Please select a workflow(required)',
+    cycle_time: 'Cycle Time',
+    cycle_time_tips: 'Please select a cycle time(required)',
+    date_tips: 'Please select a date(required)',
+    rule_name: 'Rule Name',
+    null_check: 'NullCheck',
+    custom_sql: 'CustomSql',
+    multi_table_accuracy: 'MulTableAccuracy',
+    multi_table_value_comparison: 'MulTableCompare',
+    field_length_check: 'FieldLengthCheck',
+    uniqueness_check: 'UniquenessCheck',
+    regexp_check: 'RegexpCheck',
+    timeliness_check: 'TimelinessCheck',
+    enumeration_check: 'EnumerationCheck',
+    table_count_check: 'TableCountCheck',
+    src_connector_type: 'SrcConnType',
+    src_datasource_id: 'SrcSource',
+    src_table: 'SrcTable',
+    src_filter: 'SrcFilter',
+    src_field: 'SrcField',
+    statistics_name: 'ActualValName',
+    check_type: 'CheckType',
+    operator: 'Operator',
+    threshold: 'Threshold',
+    failure_strategy: 'FailureStrategy',
+    target_connector_type: 'TargetConnType',
+    target_datasource_id: 'TargetSourceId',
+    target_table: 'TargetTable',
+    target_filter: 'TargetFilter',
+    mapping_columns: 'OnClause',
+    statistics_execute_sql: 'ActualValExecSql',
+    comparison_name: 'ExceptedValName',
+    comparison_execute_sql: 'ExceptedValExecSql',
+    comparison_type: 'ExceptedValType',
+    writer_connector_type: 'WriterConnType',
+    writer_datasource_id: 'WriterSourceId',
+    target_field: 'TargetField',
+    field_length: 'FieldLength',
+    logic_operator: 'LogicOperator',
+    regexp_pattern: 'RegexpPattern',
+    deadline: 'Deadline',
+    datetime_format: 'DatetimeFormat',
+    enum_list: 'EnumList',
+    begin_time: 'BeginTime',
+    fix_value: 'FixValue',
+    required: 'required',
+    emr_flow_define_json: 'jobFlowDefineJson',
+    emr_flow_define_json_tips: 'Please enter the definition of the job flow.',
+    segment_separator: 'Segment Execution Separator',
+    segment_separator_tips: 'Please enter the segment execution separator',
+    zeppelin_note_id: 'zeppelinNoteId',
+    zeppelin_note_id_tips: 'Please enter the note id of your zeppelin note',
+    zeppelin_paragraph_id: 'zeppelinParagraphId',
+    zeppelin_paragraph_id_tips:
+      'Please enter the paragraph id of your zeppelin paragraph',
+    send_email: 'Send Email',
+    log_display: 'Log display',
+    rows_of_result: 'rows of result',
+    title: 'Title',
+    title_tips: 'Please enter the title of email',
+    alarm_group: 'Alarm group',
+    alarm_group_tips: 'Alarm group required',
+    integer_tips: 'Please enter a positive integer',
+    sql_parameter: 'SQL Parameter',
+    format_tips: 'Please enter format',
+    udf_function: 'UDF Function',
+    unlimited: 'unlimited',
+    please_select_source_connector_type: 'Please select source connector type',
+    please_select_source_datasource_id: 'Please select source datasource id',
+    please_enter_source_table_name: 'Please select source table name',
+    please_enter_filter_expression: 'Please enter filter expression',
+    please_enter_column_only_single_column_is_supported: 'Please select column, only single column is supported',
+    please_enter_threshold_number_is_needed: 'Please enter threshold number is needed',
+    please_enter_comparison_title: 'please select comparison title'
+  }
+}
diff --git a/dolphinscheduler-ui/src/locales/en_US/resource.ts b/dolphinscheduler-ui/src/locales/en_US/resource.ts
new file mode 100644
index 0000000000..1e5651d19e
--- /dev/null
+++ b/dolphinscheduler-ui/src/locales/en_US/resource.ts
@@ -0,0 +1,170 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export default {
+  file: {
+    file_manage: 'File Manage',
+    create_folder: 'Create Folder',
+    create_file: 'Create File',
+    upload_files: 'Upload Files',
+    enter_keyword_tips: 'Please enter keyword',
+    name: 'Name',
+    user_name: 'Resource userName',
+    whether_directory: 'Whether directory',
+    file_name: 'File Name',
+    description: 'Description',
+    size: 'Size',
+    update_time: 'Update Time',
+    operation: 'Operation',
+    edit: 'Edit',
+    rename: 'Rename',
+    download: 'Download',
+    delete: 'Delete',
+    yes: 'Yes',
+    no: 'No',
+    folder_name: 'Folder Name',
+    enter_name_tips: 'Please enter name',
+    enter_description_tips: 'Please enter description',
+    enter_content_tips: 'Please enter the resource content',
+    file_format: 'File Format',
+    file_content: 'File Content',
+    delete_confirm: 'Delete?',
+    confirm: 'Confirm',
+    cancel: 'Cancel',
+    success: 'Success',
+    file_details: 'File Details',
+    return: 'Return',
+    save: 'Save'
+  },
+  udf: {
+    udf_resources: 'UDF resources',
+    create_folder: 'Create Folder',
+    upload_udf_resources: 'Upload UDF Resources',
+    udf_source_name: 'UDF Resource Name',
+    user_name: 'Resource userName',
+    whether_directory: 'Whether directory',
+    file_name: 'File Name',
+    file_size: 'File Size',
+    description: 'Description',
+    create_time: 'Create Time',
+    update_time: 'Update Time',
+    operation: 'Operation',
+    yes: 'Yes',
+    no: 'No',
+    edit: 'Edit',
+    download: 'Download',
+    delete: 'Delete',
+    delete_confirm: 'Delete?',
+    success: 'Success',
+    folder_name: 'Folder Name',
+    upload: 'Upload',
+    upload_files: 'Upload Files',
+    file_upload: 'File Upload',
+    enter_keyword_tips: 'Please enter keyword',
+    enter_name_tips: 'Please enter name',
+    enter_description_tips: 'Please enter description'
+  },
+  function: {
+    udf_function: 'UDF Function',
+    create_udf_function: 'Create UDF Function',
+    edit_udf_function: 'Create UDF Function',
+    udf_function_name: 'UDF Function Name',
+    user_name: 'Resource userName',
+    class_name: 'Class Name',
+    type: 'Type',
+    description: 'Description',
+    jar_package: 'Jar Package',
+    update_time: 'Update Time',
+    operation: 'Operation',
+    rename: 'Rename',
+    edit: 'Edit',
+    delete: 'Delete',
+    success: 'Success',
+    package_name: 'Package Name',
+    udf_resources: 'UDF Resources',
+    instructions: 'Instructions',
+    upload_resources: 'Upload Resources',
+    udf_resources_directory: 'UDF resources directory',
+    delete_confirm: 'Delete?',
+    enter_keyword_tips: 'Please enter keyword',
+    enter_udf_unction_name_tips: 'Please enter a UDF function name',
+    enter_package_name_tips: 'Please enter a Package name',
+    enter_select_udf_resources_tips: 'Please select UDF resources',
+    enter_select_udf_resources_directory_tips:
+      'Please select UDF resources directory',
+    enter_instructions_tips: 'Please enter a instructions',
+    enter_name_tips: 'Please enter name',
+    enter_description_tips: 'Please enter description',
+    upload: 'Upload',
+    upload_udf_resources: 'Upload UDF Resources'
+  },
+  task_group_option: {
+    manage: 'Task group manage',
+    option: 'Task group option',
+    create: 'Create task group',
+    edit: 'Edit task group',
+    delete: 'Delete task group',
+    view_queue: 'View the queue of the task group',
+    switch_status: 'Switch status',
+    code: 'Task group code',
+    name: 'Task group name',
+    project_name: 'Project name',
+    resource_pool_size: 'Resource pool size',
+    resource_used_pool_size: 'Used resource',
+    desc: 'Task group desc',
+    status: 'Task group status',
+    enable_status: 'Enable',
+    disable_status: 'Disable',
+    please_enter_name: 'Please enter task group name',
+    please_enter_desc: 'Please enter task group description',
+    please_enter_resource_pool_size:
+      'Please enter task group resource pool size',
+    positive_integer_tips: 'should be a positive integer',
+    please_select_project: 'Please select a project',
+    create_time: 'Create time',
+    update_time: 'Update time',
+    actions: 'Actions',
+    please_enter_keywords: 'Please enter keywords'
+  },
+  task_group_queue: {
+    actions: 'Actions',
+    task_name: 'Task name',
+    task_group_name: 'Task group name',
+    project_name: 'Project name',
+    task_instance_name: 'Task instance',
+    workflow_instance_name: 'Workflow instance',
+    queue: 'Task group queue',
+    priority: 'Priority',
+    priority_be_a_number:
+      'The priority of the task group queue should be a positive number',
+    force_starting_status: 'Starting status',
+    in_queue: 'In queue',
+    task_status: 'Task status',
+    view: 'View task group queue',
+    the_status_of_waiting: 'Waiting into the queue',
+    the_status_of_queuing: 'Queuing',
+    the_status_of_releasing: 'Released',
+    modify_priority: 'Edit the priority',
+    start_task: 'Start the task',
+    priority_not_empty: 'The value of priority can not be empty',
+    priority_must_be_number: 'The value of priority should be number',
+    please_select_task_name: 'Please select a task name',
+    create_time: 'Create time',
+    update_time: 'Update time',
+    edit_priority: 'Edit the task priority'
+  }
+}
\ No newline at end of file
diff --git a/dolphinscheduler-ui/src/locales/en_US/security.ts b/dolphinscheduler-ui/src/locales/en_US/security.ts
new file mode 100644
index 0000000000..0f3ec1f163
--- /dev/null
+++ b/dolphinscheduler-ui/src/locales/en_US/security.ts
@@ -0,0 +1,265 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export default {
+  tenant: {
+    tenant_manage: 'Tenant Manage',
+    create_tenant: 'Create Tenant',
+    search_tips: 'Please enter keywords',
+    tenant_code: 'Operating System Tenant',
+    description: 'Description',
+    queue_name: 'QueueName',
+    create_time: 'Create Time',
+    update_time: 'Update Time',
+    actions: 'Operation',
+    edit_tenant: 'Edit Tenant',
+    tenant_code_tips: 'Please enter the operating system tenant',
+    queue_name_tips: 'Please select queue',
+    description_tips: 'Please enter a description',
+    delete_confirm: 'Delete?',
+    edit: 'Edit',
+    delete: 'Delete'
+  },
+  alarm_group: {
+    create_alarm_group: 'Create Alarm Group',
+    edit_alarm_group: 'Edit Alarm Group',
+    search_tips: 'Please enter keywords',
+    alert_group_name_tips: 'Please enter your alert group name',
+    alarm_plugin_instance: 'Alarm Plugin Instance',
+    alarm_plugin_instance_tips: 'Please select alert plugin instance',
+    alarm_group_description_tips: 'Please enter your alarm group description',
+    alert_group_name: 'Alert Group Name',
+    alarm_group_description: 'Alarm Group Description',
+    create_time: 'Create Time',
+    update_time: 'Update Time',
+    operation: 'Operation',
+    delete_confirm: 'Delete?',
+    edit: 'Edit',
+    delete: 'Delete'
+  },
+  worker_group: {
+    create_worker_group: 'Create Worker Group',
+    edit_worker_group: 'Edit Worker Group',
+    search_tips: 'Please enter keywords',
+    operation: 'Operation',
+    delete_confirm: 'Delete?',
+    edit: 'Edit',
+    delete: 'Delete',
+    group_name: 'Group Name',
+    group_name_tips: 'Please enter your group name',
+    worker_addresses: 'Worker Addresses',
+    worker_addresses_tips: 'Please select worker addresses',
+    create_time: 'Create Time',
+    update_time: 'Update Time'
+  },
+  yarn_queue: {
+    create_queue: 'Create Queue',
+    edit_queue: 'Edit Queue',
+    search_tips: 'Please enter keywords',
+    queue_name: 'Queue Name',
+    queue_value: 'Queue Value',
+    create_time: 'Create Time',
+    update_time: 'Update Time',
+    operation: 'Operation',
+    edit: 'Edit',
+    queue_name_tips: 'Please enter your queue name',
+    queue_value_tips: 'Please enter your queue value'
+  },
+  environment: {
+    create_environment: 'Create Environment',
+    edit_environment: 'Edit Environment',
+    search_tips: 'Please enter keywords',
+    edit: 'Edit',
+    delete: 'Delete',
+    environment_name: 'Environment Name',
+    environment_config: 'Environment Config',
+    environment_desc: 'Environment Desc',
+    worker_groups: 'Worker Groups',
+    create_time: 'Create Time',
+    update_time: 'Update Time',
+    operation: 'Operation',
+    delete_confirm: 'Delete?',
+    environment_name_tips: 'Please enter your environment name',
+    environment_config_tips: 'Please enter your environment config',
+    environment_description_tips: 'Please enter your environment description',
+    worker_group_tips: 'Please select worker group'
+  },
+  token: {
+    create_token: 'Create Token',
+    edit_token: 'Edit Token',
+    search_tips: 'Please enter keywords',
+    user: 'User',
+    user_tips: 'Please select user',
+    token: 'Token',
+    token_tips: 'Please click to get token',
+    expiration_time: 'Expiration Time',
+    expiration_time_tips: 'Please select expiration time',
+    create_time: 'Create Time',
+    update_time: 'Update Time',
+    operation: 'Operation',
+    edit: 'Edit',
+    delete: 'Delete',
+    delete_confirm: 'Delete?'
+  },
+  user: {
+    user_manage: 'User Manage',
+    create_user: 'Create User',
+    edit_user: 'Edit User',
+    delete_user: 'Delete User',
+    delete_confirm: 'Are you sure to delete?',
+    delete_confirm_tip:
+      'Deleting user is a dangerous operation,please be careful',
+    project: 'Project',
+    resource: 'Resource',
+    file_resource: 'File Resource',
+    udf_resource: 'UDF Resource',
+    datasource: 'Datasource',
+    udf: 'UDF Function',
+    namespace: 'Namespace',
+    authorize_project: 'Project Authorize',
+    authorize_resource: 'Resource Authorize',
+    authorize_namespace: 'Namespace Authorize',
+    authorize_datasource: 'Datasource Authorize',
+    authorize_udf: 'UDF Function Authorize',
+    username: 'Username',
+    username_exists: 'The username already exists',
+    username_tips: 'Please enter username',
+    user_password: 'Password',
+    user_password_tips:
+      'Please enter a password containing letters and numbers with a length between 6 and 20',
+    user_type: 'User Type',
+    ordinary_user: 'Ordinary users',
+    administrator: 'Administrator',
+    tenant_code: 'Tenant',
+    tenant_id_tips: 'Please select tenant',
+    queue: 'Queue',
+    queue_tips: 'Please select a queue',
+    email: 'Email',
+    email_empty_tips: 'Please enter email',
+    emial_correct_tips: 'Please enter the correct email format',
+    phone: 'Phone',
+    phone_empty_tips: 'Please enter phone number',
+    phone_correct_tips: 'Please enter the correct mobile phone format',
+    state: 'State',
+    state_enabled: 'Enabled',
+    state_disabled: 'Disabled',
+    create_time: 'Create Time',
+    update_time: 'Update Time',
+    operation: 'Operation',
+    edit: 'Edit',
+    delete: 'Delete',
+    authorize: 'Authorize',
+    save_error_msg: 'Failed to save, please retry',
+    delete_error_msg: 'Failed to delete, please retry',
+    auth_error_msg: 'Failed to authorize, please retry',
+    auth_success_msg: 'Authorize succeeded',
+    enable: 'Enable',
+    disable: 'Disable'
+  },
+  alarm_instance: {
+    search_input_tips: 'Please input the keywords',
+    alarm_instance_manage: 'Alarm instance manage',
+    alarm_instance_name: 'Alarm instance name',
+    alarm_instance_name_tips: 'Please enter alarm plugin instance name',
+    alarm_plugin_name: 'Alarm plugin name',
+    create_time: 'Create Time',
+    update_time: 'Update Time',
+    operation: 'Operation',
+    edit_alarm_instance: 'Edit Alarm Instance',
+    delete: 'Delete',
+    edit: 'Edit',
+    delete_confirm: 'Delete?',
+    confirm: 'Confirm',
+    cancel: 'Cancel',
+    submit: 'Submit',
+    create_alarm_instance: 'Create Alarm Instance',
+    select_plugin: 'Select plugin',
+    select_plugin_tips: 'Select Alarm plugin',
+    instance_parameter_exception: 'Instance parameter exception',
+    WebHook: 'WebHook',
+    webHook: 'WebHook',
+    WarningType: 'Warning Type',
+    IsEnableProxy: 'Enable Proxy',
+    Proxy: 'Proxy',
+    Port: 'Port',
+    User: 'User',
+    corpId: 'CorpId',
+    secret: 'Secret',
+    Secret: 'Secret',
+    users: 'Users',
+    userSendMsg: 'UserSendMsg',
+    'agentId/chatId': 'AgentId or ChatId',
+    showType: 'Show Type',
+    receivers: 'Receivers',
+    receiverCcs: 'ReceiverCcs',
+    serverHost: 'SMTP Host',
+    serverPort: 'SMTP Port',
+    sender: 'Sender',
+    enableSmtpAuth: 'SMTP Auth',
+    Password: 'Password',
+    starttlsEnable: 'SMTP STARTTLS Enable',
+    sslEnable: 'SMTP SSL Enable',
+    smtpSslTrust: 'SMTP SSL Trust',
+    url: 'URL',
+    requestType: 'Request Type',
+    headerParams: 'Headers',
+    bodyParams: 'Body',
+    contentField: 'Content Field',
+    Keyword: 'Keyword',
+    userParams: 'User Params',
+    path: 'Script Path',
+    type: 'Type',
+    sendType: 'Send Type',
+    username: 'Username',
+    botToken: 'Bot Token',
+    chatId: 'Channel Chat Id',
+    parseMode: 'Parse Mode',
+    IntegrationKey: 'Integration Key',
+    BotAccessToken: 'Bot Access Token',
+    RoomId: 'Room Id',
+    ToPersonId: 'To Person Id',
+    ToPersonEmail: 'To Person Email',
+    AtSomeoneInRoom: 'At Someone In Room',
+    Destination: 'Destination',
+    AtMobiles: 'At User Mobiles',
+    AtUserIds: 'At User Ids',
+    MsgType: 'Msg Type',
+    // eslint-disable-next-line quotes
+    IsAtAll: "{'@'}All"
+  },
+  k8s_namespace: {
+    create_namespace: 'Create Namespace',
+    edit_namespace: 'Edit Namespace',
+    search_tips: 'Please enter keywords',
+    k8s_namespace: 'K8S Namespace',
+    k8s_namespace_tips: 'Please enter k8s namespace',
+    k8s_cluster: 'K8S Cluster',
+    k8s_cluster_tips: 'Please enter k8s cluster',
+    owner: 'Owner',
+    owner_tips: 'Please enter owner',
+    limit_cpu: 'Limit CPU',
+    limit_cpu_tips: 'Please enter limit CPU',
+    limit_memory: 'Limit Memory',
+    limit_memory_tips: 'Please enter limit memory',
+    create_time: 'Create Time',
+    update_time: 'Update Time',
+    operation: 'Operation',
+    edit: 'Edit',
+    delete: 'Delete',
+    delete_confirm: 'Delete?'
+  }
+}
\ No newline at end of file
diff --git a/dolphinscheduler-ui/src/locales/index.ts b/dolphinscheduler-ui/src/locales/en_US/theme.ts
similarity index 75%
copy from dolphinscheduler-ui/src/locales/index.ts
copy to dolphinscheduler-ui/src/locales/en_US/theme.ts
index 31a3cd9835..5281a2f2d7 100644
--- a/dolphinscheduler-ui/src/locales/index.ts
+++ b/dolphinscheduler-ui/src/locales/en_US/theme.ts
@@ -15,18 +15,7 @@
  * limitations under the License.
  */
 
-import { createI18n } from 'vue-i18n'
-import zh_CN from './modules/zh_CN'
-import en_US from './modules/en_US'
-
-const i18n = createI18n({
-  legacy: false,
-  globalInjection: true,
-  locale: 'zh_CN',
-  messages: {
-    zh_CN,
-    en_US
-  }
-})
-
-export default i18n
+export default {
+  light: 'Light',
+  dark: 'Dark'
+}
\ No newline at end of file
diff --git a/dolphinscheduler-ui/src/locales/index.ts b/dolphinscheduler-ui/src/locales/en_US/user-dropdown.ts
similarity index 75%
copy from dolphinscheduler-ui/src/locales/index.ts
copy to dolphinscheduler-ui/src/locales/en_US/user-dropdown.ts
index 31a3cd9835..4bcf593f14 100644
--- a/dolphinscheduler-ui/src/locales/index.ts
+++ b/dolphinscheduler-ui/src/locales/en_US/user-dropdown.ts
@@ -15,18 +15,8 @@
  * limitations under the License.
  */
 
-import { createI18n } from 'vue-i18n'
-import zh_CN from './modules/zh_CN'
-import en_US from './modules/en_US'
-
-const i18n = createI18n({
-  legacy: false,
-  globalInjection: true,
-  locale: 'zh_CN',
-  messages: {
-    zh_CN,
-    en_US
-  }
-})
-
-export default i18n
+export default {
+  profile: 'Profile',
+  password: 'Password',
+  logout: 'Logout'
+}
\ No newline at end of file
diff --git a/dolphinscheduler-ui/src/locales/index.ts b/dolphinscheduler-ui/src/locales/index.ts
index 31a3cd9835..2f691a11f9 100644
--- a/dolphinscheduler-ui/src/locales/index.ts
+++ b/dolphinscheduler-ui/src/locales/index.ts
@@ -16,8 +16,8 @@
  */
 
 import { createI18n } from 'vue-i18n'
-import zh_CN from './modules/zh_CN'
-import en_US from './modules/en_US'
+import zh_CN from './zh_CN'
+import en_US from './en_US'
 
 const i18n = createI18n({
   legacy: false,
diff --git a/dolphinscheduler-ui/src/locales/modules/en_US.ts b/dolphinscheduler-ui/src/locales/modules/en_US.ts
deleted file mode 100644
index 8223e4de8c..0000000000
--- a/dolphinscheduler-ui/src/locales/modules/en_US.ts
+++ /dev/null
@@ -1,1436 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-const login = {
-  test: 'Test',
-  userName: 'Username',
-  userName_tips: 'Please enter your username',
-  userPassword: 'Password',
-  userPassword_tips: 'Please enter your password',
-  login: 'Login'
-}
-
-const modal = {
-  cancel: 'Cancel',
-  confirm: 'Confirm'
-}
-
-const theme = {
-  light: 'Light',
-  dark: 'Dark'
-}
-
-const userDropdown = {
-  profile: 'Profile',
-  password: 'Password',
-  logout: 'Logout'
-}
-
-const menu = {
-  home: 'Home',
-  project: 'Project',
-  resources: 'Resources',
-  datasource: 'Datasource',
-  monitor: 'Monitor',
-  security: 'Security',
-  project_overview: 'Project Overview',
-  workflow_relation: 'Workflow Relation',
-  workflow: 'Workflow',
-  workflow_definition: 'Workflow Definition',
-  workflow_instance: 'Workflow Instance',
-  task: 'Task',
-  task_instance: 'Task Instance',
-  task_definition: 'Task Definition',
-  file_manage: 'File Manage',
-  udf_manage: 'UDF Manage',
-  resource_manage: 'Resource Manage',
-  function_manage: 'Function Manage',
-  service_manage: 'Service Manage',
-  master: 'Master',
-  worker: 'Worker',
-  db: 'DB',
-  statistical_manage: 'Statistical Manage',
-  statistics: 'Statistics',
-  audit_log: 'Audit Log',
-  tenant_manage: 'Tenant Manage',
-  user_manage: 'User Manage',
-  alarm_group_manage: 'Alarm Group Manage',
-  alarm_instance_manage: 'Alarm Instance Manage',
-  worker_group_manage: 'Worker Group Manage',
-  yarn_queue_manage: 'Yarn Queue Manage',
-  environment_manage: 'Environment Manage',
-  k8s_namespace_manage: 'K8S Namespace Manage',
-  token_manage: 'Token Manage',
-  task_group_manage: 'Task Group Manage',
-  task_group_option: 'Task Group Option',
-  task_group_queue: 'Task Group Queue',
-  data_quality: 'Data Quality',
-  task_result: 'Task Result',
-  rule: 'Rule management'
-}
-
-const home = {
-  task_state_statistics: 'Task State Statistics',
-  process_state_statistics: 'Process State Statistics',
-  process_definition_statistics: 'Process Definition Statistics',
-  number: 'Number',
-  state: 'State',
-  submitted_success: 'SUBMITTED_SUCCESS',
-  running_execution: 'RUNNING_EXECUTION',
-  ready_pause: 'READY_PAUSE',
-  pause: 'PAUSE',
-  ready_stop: 'READY_STOP',
-  stop: 'STOP',
-  failure: 'FAILURE',
-  success: 'SUCCESS',
-  need_fault_tolerance: 'NEED_FAULT_TOLERANCE',
-  kill: 'KILL',
-  waiting_thread: 'WAITING_THREAD',
-  waiting_depend: 'WAITING_DEPEND',
-  delay_execution: 'DELAY_EXECUTION',
-  forced_success: 'FORCED_SUCCESS',
-  serial_wait: 'SERIAL_WAIT',
-  dispatch: 'DISPATCH',
-  ready_block: 'READY_BLOCK',
-  block: 'BLOCK'
-}
-
-const password = {
-  edit_password: 'Edit Password',
-  password: 'Password',
-  confirm_password: 'Confirm Password',
-  password_tips: 'Please enter your password',
-  confirm_password_tips: 'Please enter your confirm password',
-  two_password_entries_are_inconsistent:
-    'Two password entries are inconsistent',
-  submit: 'Submit'
-}
-
-const profile = {
-  profile: 'Profile',
-  edit: 'Edit',
-  username: 'Username',
-  email: 'Email',
-  phone: 'Phone',
-  state: 'State',
-  permission: 'Permission',
-  create_time: 'Create Time',
-  update_time: 'Update Time',
-  administrator: 'Administrator',
-  ordinary_user: 'Ordinary User',
-  edit_profile: 'Edit Profile',
-  username_tips: 'Please enter your username',
-  email_tips: 'Please enter your email',
-  email_correct_tips: 'Please enter your email in the correct format',
-  phone_tips: 'Please enter your phone',
-  state_tips: 'Please choose your state',
-  enable: 'Enable',
-  disable: 'Disable',
-  timezone_success: 'Time zone updated successful',
-  please_select_timezone: 'Choose timeZone'
-}
-
-const monitor = {
-  master: {
-    cpu_usage: 'CPU Usage',
-    memory_usage: 'Memory Usage',
-    load_average: 'Load Average',
-    create_time: 'Create Time',
-    last_heartbeat_time: 'Last Heartbeat Time',
-    directory_detail: 'Directory Detail',
-    host: 'Host',
-    directory: 'Directory',
-    master_no_data_result_title: 'No Master Nodes Exist',
-    master_no_data_result_desc:
-      'Currently, there are no master nodes exist, please create a master node and refresh this page'
-  },
-  worker: {
-    cpu_usage: 'CPU Usage',
-    memory_usage: 'Memory Usage',
-    load_average: 'Load Average',
-    create_time: 'Create Time',
-    last_heartbeat_time: 'Last Heartbeat Time',
-    directory_detail: 'Directory Detail',
-    host: 'Host',
-    directory: 'Directory',
-    worker_no_data_result_title: 'No Worker Nodes Exist',
-    worker_no_data_result_desc:
-      'Currently, there are no worker nodes exist, please create a worker node and refresh this page'
-  },
-  db: {
-    health_state: 'Health State',
-    max_connections: 'Max Connections',
-    threads_connections: 'Threads Connections',
-    threads_running_connections: 'Threads Running Connections'
-  },
-  statistics: {
-    command_number_of_waiting_for_running:
-      'Command Number Of Waiting For Running',
-    failure_command_number: 'Failure Command Number'
-  },
-  audit_log: {
-    user_name: 'User Name',
-    resource_type: 'Resource Type',
-    project_name: 'Project Name',
-    operation_type: 'Operation Type',
-    create_time: 'Create Time',
-    start_time: 'Start Time',
-    end_time: 'End Time',
-    user_audit: 'User Audit',
-    project_audit: 'Project Audit',
-    create: 'Create',
-    update: 'Update',
-    delete: 'Delete',
-    read: 'Read'
-  }
-}
-
-const resource = {
-  file: {
-    file_manage: 'File Manage',
-    create_folder: 'Create Folder',
-    create_file: 'Create File',
-    upload_files: 'Upload Files',
-    enter_keyword_tips: 'Please enter keyword',
-    name: 'Name',
-    user_name: 'Resource userName',
-    whether_directory: 'Whether directory',
-    file_name: 'File Name',
-    description: 'Description',
-    size: 'Size',
-    update_time: 'Update Time',
-    operation: 'Operation',
-    edit: 'Edit',
-    rename: 'Rename',
-    download: 'Download',
-    delete: 'Delete',
-    yes: 'Yes',
-    no: 'No',
-    folder_name: 'Folder Name',
-    enter_name_tips: 'Please enter name',
-    enter_description_tips: 'Please enter description',
-    enter_content_tips: 'Please enter the resource content',
-    file_format: 'File Format',
-    file_content: 'File Content',
-    delete_confirm: 'Delete?',
-    confirm: 'Confirm',
-    cancel: 'Cancel',
-    success: 'Success',
-    file_details: 'File Details',
-    return: 'Return',
-    save: 'Save'
-  },
-  udf: {
-    udf_resources: 'UDF resources',
-    create_folder: 'Create Folder',
-    upload_udf_resources: 'Upload UDF Resources',
-    udf_source_name: 'UDF Resource Name',
-    user_name: 'Resource userName',
-    whether_directory: 'Whether directory',
-    file_name: 'File Name',
-    file_size: 'File Size',
-    description: 'Description',
-    create_time: 'Create Time',
-    update_time: 'Update Time',
-    operation: 'Operation',
-    yes: 'Yes',
-    no: 'No',
-    edit: 'Edit',
-    download: 'Download',
-    delete: 'Delete',
-    delete_confirm: 'Delete?',
-    success: 'Success',
-    folder_name: 'Folder Name',
-    upload: 'Upload',
-    upload_files: 'Upload Files',
-    file_upload: 'File Upload',
-    enter_keyword_tips: 'Please enter keyword',
-    enter_name_tips: 'Please enter name',
-    enter_description_tips: 'Please enter description'
-  },
-  function: {
-    udf_function: 'UDF Function',
-    create_udf_function: 'Create UDF Function',
-    edit_udf_function: 'Create UDF Function',
-    udf_function_name: 'UDF Function Name',
-    user_name: 'Resource userName',
-    class_name: 'Class Name',
-    type: 'Type',
-    description: 'Description',
-    jar_package: 'Jar Package',
-    update_time: 'Update Time',
-    operation: 'Operation',
-    rename: 'Rename',
-    edit: 'Edit',
-    delete: 'Delete',
-    success: 'Success',
-    package_name: 'Package Name',
-    udf_resources: 'UDF Resources',
-    instructions: 'Instructions',
-    upload_resources: 'Upload Resources',
-    udf_resources_directory: 'UDF resources directory',
-    delete_confirm: 'Delete?',
-    enter_keyword_tips: 'Please enter keyword',
-    enter_udf_unction_name_tips: 'Please enter a UDF function name',
-    enter_package_name_tips: 'Please enter a Package name',
-    enter_select_udf_resources_tips: 'Please select UDF resources',
-    enter_select_udf_resources_directory_tips:
-      'Please select UDF resources directory',
-    enter_instructions_tips: 'Please enter a instructions',
-    enter_name_tips: 'Please enter name',
-    enter_description_tips: 'Please enter description',
-    upload: 'Upload',
-    upload_udf_resources: 'Upload UDF Resources'
-  },
-  task_group_option: {
-    manage: 'Task group manage',
-    option: 'Task group option',
-    create: 'Create task group',
-    edit: 'Edit task group',
-    delete: 'Delete task group',
-    view_queue: 'View the queue of the task group',
-    switch_status: 'Switch status',
-    code: 'Task group code',
-    name: 'Task group name',
-    project_name: 'Project name',
-    resource_pool_size: 'Resource pool size',
-    resource_used_pool_size: 'Used resource',
-    desc: 'Task group desc',
-    status: 'Task group status',
-    enable_status: 'Enable',
-    disable_status: 'Disable',
-    please_enter_name: 'Please enter task group name',
-    please_enter_desc: 'Please enter task group description',
-    please_enter_resource_pool_size:
-      'Please enter task group resource pool size',
-    positive_integer_tips: 'should be a positive integer',
-    please_select_project: 'Please select a project',
-    create_time: 'Create time',
-    update_time: 'Update time',
-    actions: 'Actions',
-    please_enter_keywords: 'Please enter keywords'
-  },
-  task_group_queue: {
-    actions: 'Actions',
-    task_name: 'Task name',
-    task_group_name: 'Task group name',
-    project_name: 'Project name',
-    task_instance_name: 'Task instance',
-    workflow_instance_name: 'Workflow instance',
-    queue: 'Task group queue',
-    priority: 'Priority',
-    priority_be_a_number:
-      'The priority of the task group queue should be a positive number',
-    force_starting_status: 'Starting status',
-    in_queue: 'In queue',
-    task_status: 'Task status',
-    view: 'View task group queue',
-    the_status_of_waiting: 'Waiting into the queue',
-    the_status_of_queuing: 'Queuing',
-    the_status_of_releasing: 'Released',
-    modify_priority: 'Edit the priority',
-    start_task: 'Start the task',
-    priority_not_empty: 'The value of priority can not be empty',
-    priority_must_be_number: 'The value of priority should be number',
-    please_select_task_name: 'Please select a task name',
-    create_time: 'Create time',
-    update_time: 'Update time',
-    edit_priority: 'Edit the task priority'
-  }
-}
-
-const project = {
-  list: {
-    create_project: 'Create Project',
-    edit_project: 'Edit Project',
-    project_list: 'Project List',
-    project_tips: 'Please enter your project',
-    description_tips: 'Please enter your description',
-    username_tips: 'Please enter your username',
-    project_name: 'Project Name',
-    project_description: 'Project Description',
-    owned_users: 'Owned Users',
-    workflow_define_count: 'Workflow Define Count',
-    process_instance_running_count: 'Process Instance Running Count',
-    description: 'Description',
-    create_time: 'Create Time',
-    update_time: 'Update Time',
-    operation: 'Operation',
-    edit: 'Edit',
-    delete: 'Delete',
-    confirm: 'Confirm',
-    cancel: 'Cancel',
-    delete_confirm: 'Delete?'
-  },
-  workflow: {
-    workflow_relation: 'Workflow Relation',
-    create_workflow: 'Create Workflow',
-    import_workflow: 'Import Workflow',
-    workflow_name: 'Workflow Name',
-    current_selection: 'Current Selection',
-    online: 'Online',
-    offline: 'Offline',
-    refresh: 'Refresh',
-    show_hide_label: 'Show / Hide Label',
-    workflow_offline: 'Workflow Offline',
-    schedule_offline: 'Schedule Offline',
-    schedule_start_time: 'Schedule Start Time',
-    schedule_end_time: 'Schedule End Time',
-    crontab_expression: 'Crontab',
-    workflow_publish_status: 'Workflow Publish Status',
-    schedule_publish_status: 'Schedule Publish Status',
-    workflow_definition: 'Workflow Definition',
-    workflow_instance: 'Workflow Instance',
-    status: 'Status',
-    create_time: 'Create Time',
-    update_time: 'Update Time',
-    description: 'Description',
-    create_user: 'Create User',
-    modify_user: 'Modify User',
-    operation: 'Operation',
-    edit: 'Edit',
-    start: 'Start',
-    timing: 'Timing',
-    timezone: 'Timezone',
-    up_line: 'Online',
-    down_line: 'Offline',
-    copy_workflow: 'Copy Workflow',
-    cron_manage: 'Cron manage',
-    delete: 'Delete',
-    tree_view: 'Tree View',
-    tree_limit: 'Limit Size',
-    export: 'Export',
-    batch_copy: 'Batch Copy',
-    version_info: 'Version Info',
-    version: 'Version',
-    file_upload: 'File Upload',
-    upload_file: 'Upload File',
-    upload: 'Upload',
-    file_name: 'File Name',
-    success: 'Success',
-    set_parameters_before_starting: 'Please set the parameters before starting',
-    set_parameters_before_timing: 'Set parameters before timing',
-    start_and_stop_time: 'Start and stop time',
-    next_five_execution_times: 'Next five execution times',
-    execute_time: 'Execute time',
-    failure_strategy: 'Failure Strategy',
-    notification_strategy: 'Notification Strategy',
-    workflow_priority: 'Workflow Priority',
-    worker_group: 'Worker Group',
-    environment_name: 'Environment Name',
-    alarm_group: 'Alarm Group',
-    complement_data: 'Complement Data',
-    startup_parameter: 'Startup Parameter',
-    whether_dry_run: 'Whether Dry-Run',
-    continue: 'Continue',
-    end: 'End',
-    none_send: 'None',
-    success_send: 'Success',
-    failure_send: 'Failure',
-    all_send: 'All',
-    whether_complement_data: 'Whether it is a complement process?',
-    schedule_date: 'Schedule date',
-    mode_of_execution: 'Mode of execution',
-    serial_execution: 'Serial execution',
-    parallel_execution: 'Parallel execution',
-    parallelism: 'Parallelism',
-    custom_parallelism: 'Custom Parallelism',
-    please_enter_parallelism: 'Please enter Parallelism',
-    please_choose: 'Please Choose',
-    start_time: 'Start Time',
-    end_time: 'End Time',
-    crontab: 'Crontab',
-    delete_confirm: 'Delete?',
-    enter_name_tips: 'Please enter name',
-    switch_version: 'Switch To This Version',
-    confirm_switch_version: 'Confirm Switch To This Version?',
-    current_version: 'Current Version',
-    run_type: 'Run Type',
-    scheduling_time: 'Scheduling Time',
-    duration: 'Duration',
-    run_times: 'Run Times',
-    fault_tolerant_sign: 'Fault-tolerant Sign',
-    dry_run_flag: 'Dry-run Flag',
-    executor: 'Executor',
-    host: 'Host',
-    start_process: 'Start Process',
-    execute_from_the_current_node: 'Execute from the current node',
-    recover_tolerance_fault_process: 'Recover tolerance fault process',
-    resume_the_suspension_process: 'Resume the suspension process',
-    execute_from_the_failed_nodes: 'Execute from the failed nodes',
-    scheduling_execution: 'Scheduling execution',
-    rerun: 'Rerun',
-    stop: 'Stop',
-    pause: 'Pause',
-    recovery_waiting_thread: 'Recovery waiting thread',
-    recover_serial_wait: 'Recover serial wait',
-    recovery_suspend: 'Recovery Suspend',
-    recovery_failed: 'Recovery Failed',
-    gantt: 'Gantt',
-    name: 'Name',
-    all_status: 'AllStatus',
-    submit_success: 'Submitted successfully',
-    running: 'Running',
-    ready_to_pause: 'Ready to pause',
-    ready_to_stop: 'Ready to stop',
-    failed: 'Failed',
-    need_fault_tolerance: 'Need fault tolerance',
-    kill: 'Kill',
-    waiting_for_thread: 'Waiting for thread',
-    waiting_for_dependence: 'Waiting for dependence',
-    waiting_for_dependency_to_complete: 'Waiting for dependency to complete',
-    delay_execution: 'Delay execution',
-    forced_success: 'Forced success',
-    serial_wait: 'Serial wait',
-    dispatch: 'Dispatch',
-    pending: 'Pending',
-    executing: 'Executing',
-    startup_type: 'Startup Type',
-    complement_range: 'Complement Range',
-    parameters_variables: 'Parameters variables',
-    global_parameters: 'Global parameters',
-    local_parameters: 'Local parameters',
-    type: 'Type',
-    retry_count: 'Retry Count',
-    submit_time: 'Submit Time',
-    refresh_status_succeeded: 'Refresh status succeeded',
-    view_log: 'View log',
-    update_log_success: 'Update log success',
-    no_more_log: 'No more logs',
-    no_log: 'No log',
-    loading_log: 'Loading Log...',
-    close: 'Close',
-    download_log: 'Download Log',
-    refresh_log: 'Refresh Log',
-    enter_full_screen: 'Enter full screen',
-    cancel_full_screen: 'Cancel full screen',
-    task_state: 'Task status',
-    mode_of_dependent: 'Mode of dependent',
-    open: 'Open',
-    project_name_required: 'Project name is required',
-    related_items: 'Related items',
-    project_name: 'Project Name',
-    project_tips: 'Please select project name',
-    workflow_relation_no_data_result_title:
-      'Can not find any relations of workflows.',
-    workflow_relation_no_data_result_desc:
-      'There is not any workflows. Please create a workflow, and then visit this page again.'
-  },
-  task: {
-    cancel_full_screen: 'Cancel full screen',
-    enter_full_screen: 'Enter full screen',
-    current_task_settings: 'Current task settings',
-    online: 'Online',
-    offline: 'Offline',
-    task_name: 'Task Name',
-    task_type: 'Task Type',
-    create_task: 'Create Task',
-    workflow_instance: 'Workflow Instance',
-    workflow_name: 'Workflow Name',
-    workflow_name_tips: 'Please select workflow name',
-    workflow_state: 'Workflow State',
-    version: 'Version',
-    current_version: 'Current Version',
-    switch_version: 'Switch To This Version',
-    confirm_switch_version: 'Confirm Switch To This Version?',
-    description: 'Description',
-    move: 'Move',
-    upstream_tasks: 'Upstream Tasks',
-    executor: 'Executor',
-    node_type: 'Node Type',
-    state: 'State',
-    submit_time: 'Submit Time',
-    start_time: 'Start Time',
-    create_time: 'Create Time',
-    update_time: 'Update Time',
-    end_time: 'End Time',
-    duration: 'Duration',
-    retry_count: 'Retry Count',
-    dry_run_flag: 'Dry Run Flag',
-    host: 'Host',
-    operation: 'Operation',
-    edit: 'Edit',
-    delete: 'Delete',
-    delete_confirm: 'Delete?',
-    forced_success: 'Forced Success',
-    view_log: 'View Log',
-    download_log: 'Download Log',
-    refresh: 'Refresh'
-  },
-  dag: {
-    create: 'Create Workflow',
-    search: 'Search',
-    download_png: 'Download PNG',
-    fullscreen_open: 'Open Fullscreen',
-    fullscreen_close: 'Close Fullscreen',
-    save: 'Save',
-    close: 'Close',
-    format: 'Format',
-    refresh_dag_status: 'Refresh DAG status',
-    layout_type: 'Layout Type',
-    grid_layout: 'Grid',
-    dagre_layout: 'Dagre',
-    rows: 'Rows',
-    cols: 'Cols',
-    copy_success: 'Copy Success',
-    workflow_name: 'Workflow Name',
-    description: 'Description',
-    tenant: 'Tenant',
-    timeout_alert: 'Timeout Alert',
-    process_execute_type: 'Process execute type',
-    parallel: 'parallel',
-    serial_wait: 'Serial wait',
-    serial_discard: 'Serial discard',
-    serial_priority: 'Serial priority',
-    recover_serial_wait: 'Recover serial wait',
-    global_variables: 'Global Variables',
-    basic_info: 'Basic Information',
-    minute: 'Minute',
-    key: 'Key',
-    value: 'Value',
-    success: 'Success',
-    delete_cell: 'Delete selected edges and nodes',
-    online_directly: 'Whether to go online the workflow definition',
-    update_directly: 'Whether to update the workflow definition',
-    dag_name_empty: 'DAG graph name cannot be empty',
-    positive_integer: 'Please enter a positive integer greater than 0',
-    prop_empty: 'prop is empty',
-    prop_repeat: 'prop is repeat',
-    node_not_created: 'Failed to save node not created',
-    copy_name: 'Copy Name',
-    view_variables: 'View Variables',
-    startup_parameter: 'Startup Parameter',
-    online: 'Online'
-  },
-  node: {
-    return_back: 'Return',
-    current_node_settings: 'Current node settings',
-    instructions: 'Instructions',
-    view_history: 'View history',
-    view_log: 'View log',
-    enter_this_child_node: 'Enter this child node',
-    name: 'Node Name',
-    task_name: 'Task Name',
-    task_name_tips: 'Please select a task (required)',
-    name_tips: 'Please enter name (required)',
-    task_type: 'Task Type',
-    task_type_tips: 'Please select a task type (required)',
-    workflow_name: 'Workflow Name',
-    workflow_name_tips: 'Please select a workflow (required)',
-    child_node: 'Child Node',
-    child_node_tips: 'Please select a child node (required)',
-    run_flag: 'Run flag',
-    normal: 'Normal',
-    prohibition_execution: 'Prohibition execution',
-    description: 'Description',
-    description_tips: 'Please enter description',
-    task_priority: 'Task priority',
-    worker_group: 'Worker group',
-    worker_group_tips:
-      'The Worker group no longer exists, please select the correct Worker group!',
-    environment_name: 'Environment Name',
-    task_group_name: 'Task group name',
-    task_group_queue_priority: 'Priority',
-    number_of_failed_retries: 'Number of failed retries',
-    times: 'Times',
-    failed_retry_interval: 'Failed retry interval',
-    minute: 'Minute',
-    delay_execution_time: 'Delay execution time',
-    state: 'State',
-    branch_flow: 'Branch flow',
-    cancel: 'Cancel',
-    loading: 'Loading...',
-    confirm: 'Confirm',
-    success: 'Success',
-    failed: 'Failed',
-    backfill_tips:
-      'The newly created sub-Process has not yet been executed and cannot enter the sub-Process',
-    task_instance_tips:
-      'The task has not been executed and cannot enter the sub-Process',
-    branch_tips:
-      'Cannot select the same node for successful branch flow and failed branch flow',
-    timeout_alarm: 'Timeout alarm',
-    timeout_strategy: 'Timeout strategy',
-    timeout_strategy_tips: 'Timeout strategy must be selected',
-    timeout_failure: 'Timeout failure',
-    timeout_period: 'Timeout period',
-    timeout_period_tips: 'Timeout must be a positive integer',
-    script: 'Script',
-    script_tips: 'Please enter script(required)',
-    init_script: 'Initialization script',
-    init_script_tips: 'Please enter initialization script',
-    resources: 'Resources',
-    resources_tips: 'Please select resources',
-    non_resources_tips: 'Please delete all non-existent resources',
-    useless_resources_tips: 'Unauthorized or deleted resources',
-    custom_parameters: 'Custom Parameters',
-    copy_success: 'Copy success',
-    copy_failed: 'The browser does not support automatic copying',
-    prop_tips: 'prop(required)',
-    prop_repeat: 'prop is repeat',
-    value_tips: 'value(optional)',
-    value_required_tips: 'value(required)',
-    pre_tasks: 'Pre tasks',
-    program_type: 'Program Type',
-    spark_version: 'Spark Version',
-    main_class: 'Main Class',
-    main_class_tips: 'Please enter main class',
-    main_package: 'Main Package',
-    main_package_tips: 'Please enter main package',
-    deploy_mode: 'Deploy Mode',
-    app_name: 'App Name',
-    app_name_tips: 'Please enter app name(optional)',
-    driver_cores: 'Driver Cores',
-    driver_cores_tips: 'Please enter Driver cores',
-    driver_memory: 'Driver Memory',
-    driver_memory_tips: 'Please enter Driver memory',
-    executor_number: 'Executor Number',
-    executor_number_tips: 'Please enter Executor number',
-    executor_memory: 'Executor Memory',
-    executor_memory_tips: 'Please enter Executor memory',
-    executor_cores: 'Executor Cores',
-    executor_cores_tips: 'Please enter Executor cores',
-    main_arguments: 'Main Arguments',
-    main_arguments_tips: 'Please enter main arguments',
-    option_parameters: 'Option Parameters',
-    option_parameters_tips: 'Please enter option parameters',
-    positive_integer_tips: 'should be a positive integer',
-    flink_version: 'Flink Version',
-    job_manager_memory: 'JobManager Memory',
-    job_manager_memory_tips: 'Please enter JobManager memory',
-    task_manager_memory: 'TaskManager Memory',
-    task_manager_memory_tips: 'Please enter TaskManager memory',
-    slot_number: 'Slot Number',
-    slot_number_tips: 'Please enter Slot number',
-    parallelism: 'Parallelism',
-    custom_parallelism: 'Configure parallelism',
-    parallelism_tips: 'Please enter Parallelism',
-    parallelism_number_tips: 'Parallelism number should be positive integer',
-    parallelism_complement_tips:
-      'If there are a large number of tasks requiring complement, you can use the custom parallelism to ' +
-      'set the complement task thread to a reasonable value to avoid too large impact on the server.',
-    task_manager_number: 'TaskManager Number',
-    task_manager_number_tips: 'Please enter TaskManager number',
-    http_url: 'Http Url',
-    http_url_tips: 'Please Enter Http Url',
-    http_url_validator: 'The request address must contain HTTP or HTTPS',
-    http_method: 'Http Method',
-    http_parameters: 'Http Parameters',
-    http_check_condition: 'Http Check Condition',
-    http_condition: 'Http Condition',
-    http_condition_tips: 'Please Enter Http Condition',
-    timeout_settings: 'Timeout Settings',
-    connect_timeout: 'Connect Timeout',
-    ms: 'ms',
-    socket_timeout: 'Socket Timeout',
-    status_code_default: 'Default response code 200',
-    status_code_custom: 'Custom response code',
-    body_contains: 'Content includes',
-    body_not_contains: 'Content does not contain',
-    http_parameters_position: 'Http Parameters Position',
-    target_task_name: 'Target Task Name',
-    target_task_name_tips: 'Please enter the Pigeon task name(required)',
-    datasource_type: 'Datasource types',
-    datasource_instances: 'Datasource instances',
-    sql_type: 'SQL Type',
-    sql_type_query: 'Query',
-    sql_type_non_query: 'Non Query',
-    sql_statement: 'SQL Statement',
-    pre_sql_statement: 'Pre SQL Statement',
-    post_sql_statement: 'Post SQL Statement',
-    sql_input_placeholder: 'Please enter non-query sql.',
-    sql_empty_tips: 'The sql can not be empty.',
-    procedure_method: 'SQL Statement',
-    procedure_method_tips: 'Please enter the procedure script',
-    procedure_method_snippet:
-      '--Please enter the procedure script \n\n--call procedure:call <procedure-name>[(<arg1>,<arg2>, ...)]\n\n--call function:?= call <procedure-name>[(<arg1>,<arg2>, ...)]',
-    start: 'Start',
-    edit: 'Edit',
-    copy: 'Copy',
-    delete: 'Delete',
-    custom_job: 'Custom Job',
-    custom_script: 'Custom Script',
-    sqoop_job_name: 'Job Name',
-    sqoop_job_name_tips: 'Please enter Job Name(required)',
-    direct: 'Direct',
-    hadoop_custom_params: 'Hadoop Params',
-    sqoop_advanced_parameters: 'Sqoop Advanced Parameters',
-    data_source: 'Data Source',
-    type: 'Type',
-    datasource: 'Datasource',
-    datasource_tips: 'Please select the datasource',
-    model_type: 'ModelType',
-    form: 'Form',
-    table: 'Table',
-    table_tips: 'Please enter Mysql Table(required)',
-    column_type: 'ColumnType',
-    all_columns: 'All Columns',
-    some_columns: 'Some Columns',
-    column: 'Column',
-    column_tips: 'Please enter Columns (Comma separated)',
-    database: 'Database',
-    database_tips: 'Please enter Hive Database(required)',
-    hive_table_tips: 'Please enter Hive Table(required)',
-    hive_partition_keys: 'Hive partition Keys',
-    hive_partition_keys_tips: 'Please enter Hive Partition Keys',
-    hive_partition_values: 'Hive partition Values',
-    hive_partition_values_tips: 'Please enter Hive Partition Values',
-    export_dir: 'Export Dir',
-    export_dir_tips: 'Please enter Export Dir(required)',
-    sql_statement_tips: 'SQL Statement(required)',
-    map_column_hive: 'Map Column Hive',
-    map_column_java: 'Map Column Java',
-    data_target: 'Data Target',
-    create_hive_table: 'CreateHiveTable',
-    drop_delimiter: 'DropDelimiter',
-    over_write_src: 'OverWriteSrc',
-    hive_target_dir: 'Hive Target Dir',
-    hive_target_dir_tips: 'Please enter hive target dir',
-    replace_delimiter: 'ReplaceDelimiter',
-    replace_delimiter_tips: 'Please enter Replace Delimiter',
-    target_dir: 'Target Dir',
-    target_dir_tips: 'Please enter Target Dir(required)',
-    delete_target_dir: 'DeleteTargetDir',
-    compression_codec: 'CompressionCodec',
-    file_type: 'FileType',
-    fields_terminated: 'FieldsTerminated',
-    fields_terminated_tips: 'Please enter Fields Terminated',
-    lines_terminated: 'LinesTerminated',
-    lines_terminated_tips: 'Please enter Lines Terminated',
-    is_update: 'IsUpdate',
-    update_key: 'UpdateKey',
-    update_key_tips: 'Please enter Update Key',
-    update_mode: 'UpdateMode',
-    only_update: 'OnlyUpdate',
-    allow_insert: 'AllowInsert',
-    concurrency: 'Concurrency',
-    concurrency_tips: 'Please enter Concurrency',
-    sea_tunnel_master: 'Master',
-    sea_tunnel_master_url: 'Master URL',
-    sea_tunnel_queue: 'Queue',
-    sea_tunnel_master_url_tips:
-      'Please enter the master url, e.g., 127.0.0.1:7077',
-    add_pre_task_check_condition: 'Add pre task check condition',
-    switch_condition: 'Condition',
-    switch_branch_flow: 'Branch Flow',
-    and: 'and',
-    or: 'or',
-    datax_custom_template: 'Custom Template',
-    datax_json_template: 'JSON',
-    datax_target_datasource_type: 'Target Datasource Types',
-    datax_target_database: 'Target Database',
-    datax_target_table: 'Target Table',
-    datax_target_table_tips: 'Please enter the name of the target table',
-    datax_target_database_pre_sql: 'Pre SQL Statement',
-    datax_target_database_post_sql: 'Post SQL Statement',
-    datax_non_query_sql_tips: 'Please enter the non-query sql statement',
-    datax_job_speed_byte: 'Speed(Byte count)',
-    datax_job_speed_byte_info: '(0 means unlimited)',
-    datax_job_speed_record: 'Speed(Record count)',
-    datax_job_speed_record_info: '(0 means unlimited)',
-    datax_job_runtime_memory: 'Runtime Memory Limits',
-    datax_job_runtime_memory_xms: 'Low Limit Value',
-    datax_job_runtime_memory_xmx: 'High Limit Value',
-    datax_job_runtime_memory_unit: 'G',
-    current_hour: 'CurrentHour',
-    last_1_hour: 'Last1Hour',
-    last_2_hour: 'Last2Hours',
-    last_3_hour: 'Last3Hours',
-    last_24_hour: 'Last24Hours',
-    today: 'today',
-    last_1_days: 'Last1Days',
-    last_2_days: 'Last2Days',
-    last_3_days: 'Last3Days',
-    last_7_days: 'Last7Days',
-    this_week: 'ThisWeek',
-    last_week: 'LastWeek',
-    last_monday: 'LastMonday',
-    last_tuesday: 'LastTuesday',
-    last_wednesday: 'LastWednesday',
-    last_thursday: 'LastThursday',
-    last_friday: 'LastFriday',
-    last_saturday: 'LastSaturday',
-    last_sunday: 'LastSunday',
-    this_month: 'ThisMonth',
-    this_month_begin: 'ThisMonthBegin',
-    last_month: 'LastMonth',
-    last_month_begin: 'LastMonthBegin',
-    last_month_end: 'LastMonthEnd',
-    month: 'month',
-    week: 'week',
-    day: 'day',
-    hour: 'hour',
-    add_dependency: 'Add dependency',
-    waiting_dependent_start: 'Waiting Dependent start',
-    check_interval: 'Check interval',
-    waiting_dependent_complete: 'Waiting Dependent complete',
-    project_name: 'Project Name',
-    project_name_tips: 'Please select a project(required)',
-    process_name: 'Workflow Name',
-    process_name_tips: 'Please select a workflow(required)',
-    cycle_time: 'Cycle Time',
-    cycle_time_tips: 'Please select a cycle time(required)',
-    date_tips: 'Please select a date(required)',
-    rule_name: 'Rule Name',
-    null_check: 'NullCheck',
-    custom_sql: 'CustomSql',
-    multi_table_accuracy: 'MulTableAccuracy',
-    multi_table_value_comparison: 'MulTableCompare',
-    field_length_check: 'FieldLengthCheck',
-    uniqueness_check: 'UniquenessCheck',
-    regexp_check: 'RegexpCheck',
-    timeliness_check: 'TimelinessCheck',
-    enumeration_check: 'EnumerationCheck',
-    table_count_check: 'TableCountCheck',
-    src_connector_type: 'SrcConnType',
-    src_datasource_id: 'SrcSource',
-    src_table: 'SrcTable',
-    src_filter: 'SrcFilter',
-    src_field: 'SrcField',
-    statistics_name: 'ActualValName',
-    check_type: 'CheckType',
-    operator: 'Operator',
-    threshold: 'Threshold',
-    failure_strategy: 'FailureStrategy',
-    target_connector_type: 'TargetConnType',
-    target_datasource_id: 'TargetSourceId',
-    target_table: 'TargetTable',
-    target_filter: 'TargetFilter',
-    mapping_columns: 'OnClause',
-    statistics_execute_sql: 'ActualValExecSql',
-    comparison_name: 'ExceptedValName',
-    comparison_execute_sql: 'ExceptedValExecSql',
-    comparison_type: 'ExceptedValType',
-    writer_connector_type: 'WriterConnType',
-    writer_datasource_id: 'WriterSourceId',
-    target_field: 'TargetField',
-    field_length: 'FieldLength',
-    logic_operator: 'LogicOperator',
-    regexp_pattern: 'RegexpPattern',
-    deadline: 'Deadline',
-    datetime_format: 'DatetimeFormat',
-    enum_list: 'EnumList',
-    begin_time: 'BeginTime',
-    fix_value: 'FixValue',
-    required: 'required',
-    emr_flow_define_json: 'jobFlowDefineJson',
-    emr_flow_define_json_tips: 'Please enter the definition of the job flow.',
-    segment_separator: 'Segment Execution Separator',
-    segment_separator_tips: 'Please enter the segment execution separator',
-    zeppelin_note_id: 'zeppelinNoteId',
-    zeppelin_note_id_tips: 'Please enter the note id of your zeppelin note',
-    zeppelin_paragraph_id: 'zeppelinParagraphId',
-    zeppelin_paragraph_id_tips:
-      'Please enter the paragraph id of your zeppelin paragraph',
-    send_email: 'Send Email',
-    log_display: 'Log display',
-    rows_of_result: 'rows of result',
-    title: 'Title',
-    title_tips: 'Please enter the title of email',
-    alarm_group: 'Alarm group',
-    alarm_group_tips: 'Alarm group required',
-    integer_tips: 'Please enter a positive integer',
-    sql_parameter: 'SQL Parameter',
-    format_tips: 'Please enter format',
-    udf_function: 'UDF Function',
-    unlimited: 'unlimited',
-    please_select_source_connector_type: 'Please select source connector type',
-    please_select_source_datasource_id: 'Please select source datasource id',
-    please_enter_source_table_name: 'Please select source table name',
-    please_enter_filter_expression: 'Please enter filter expression',
-    please_enter_column_only_single_column_is_supported: 'Please select column, only single column is supported',
-    please_enter_threshold_number_is_needed: 'Please enter threshold number is needed',
-    please_enter_comparison_title: 'please select comparison title'
-  }
-}
-
-const security = {
-  tenant: {
-    tenant_manage: 'Tenant Manage',
-    create_tenant: 'Create Tenant',
-    search_tips: 'Please enter keywords',
-    tenant_code: 'Operating System Tenant',
-    description: 'Description',
-    queue_name: 'QueueName',
-    create_time: 'Create Time',
-    update_time: 'Update Time',
-    actions: 'Operation',
-    edit_tenant: 'Edit Tenant',
-    tenant_code_tips: 'Please enter the operating system tenant',
-    queue_name_tips: 'Please select queue',
-    description_tips: 'Please enter a description',
-    delete_confirm: 'Delete?',
-    edit: 'Edit',
-    delete: 'Delete'
-  },
-  alarm_group: {
-    create_alarm_group: 'Create Alarm Group',
-    edit_alarm_group: 'Edit Alarm Group',
-    search_tips: 'Please enter keywords',
-    alert_group_name_tips: 'Please enter your alert group name',
-    alarm_plugin_instance: 'Alarm Plugin Instance',
-    alarm_plugin_instance_tips: 'Please select alert plugin instance',
-    alarm_group_description_tips: 'Please enter your alarm group description',
-    alert_group_name: 'Alert Group Name',
-    alarm_group_description: 'Alarm Group Description',
-    create_time: 'Create Time',
-    update_time: 'Update Time',
-    operation: 'Operation',
-    delete_confirm: 'Delete?',
-    edit: 'Edit',
-    delete: 'Delete'
-  },
-  worker_group: {
-    create_worker_group: 'Create Worker Group',
-    edit_worker_group: 'Edit Worker Group',
-    search_tips: 'Please enter keywords',
-    operation: 'Operation',
-    delete_confirm: 'Delete?',
-    edit: 'Edit',
-    delete: 'Delete',
-    group_name: 'Group Name',
-    group_name_tips: 'Please enter your group name',
-    worker_addresses: 'Worker Addresses',
-    worker_addresses_tips: 'Please select worker addresses',
-    create_time: 'Create Time',
-    update_time: 'Update Time'
-  },
-  yarn_queue: {
-    create_queue: 'Create Queue',
-    edit_queue: 'Edit Queue',
-    search_tips: 'Please enter keywords',
-    queue_name: 'Queue Name',
-    queue_value: 'Queue Value',
-    create_time: 'Create Time',
-    update_time: 'Update Time',
-    operation: 'Operation',
-    edit: 'Edit',
-    queue_name_tips: 'Please enter your queue name',
-    queue_value_tips: 'Please enter your queue value'
-  },
-  environment: {
-    create_environment: 'Create Environment',
-    edit_environment: 'Edit Environment',
-    search_tips: 'Please enter keywords',
-    edit: 'Edit',
-    delete: 'Delete',
-    environment_name: 'Environment Name',
-    environment_config: 'Environment Config',
-    environment_desc: 'Environment Desc',
-    worker_groups: 'Worker Groups',
-    create_time: 'Create Time',
-    update_time: 'Update Time',
-    operation: 'Operation',
-    delete_confirm: 'Delete?',
-    environment_name_tips: 'Please enter your environment name',
-    environment_config_tips: 'Please enter your environment config',
-    environment_description_tips: 'Please enter your environment description',
-    worker_group_tips: 'Please select worker group'
-  },
-  token: {
-    create_token: 'Create Token',
-    edit_token: 'Edit Token',
-    search_tips: 'Please enter keywords',
-    user: 'User',
-    user_tips: 'Please select user',
-    token: 'Token',
-    token_tips: 'Please click to get token',
-    expiration_time: 'Expiration Time',
-    expiration_time_tips: 'Please select expiration time',
-    create_time: 'Create Time',
-    update_time: 'Update Time',
-    operation: 'Operation',
-    edit: 'Edit',
-    delete: 'Delete',
-    delete_confirm: 'Delete?'
-  },
-  user: {
-    user_manage: 'User Manage',
-    create_user: 'Create User',
-    edit_user: 'Edit User',
-    delete_user: 'Delete User',
-    delete_confirm: 'Are you sure to delete?',
-    delete_confirm_tip:
-      'Deleting user is a dangerous operation,please be careful',
-    project: 'Project',
-    resource: 'Resource',
-    file_resource: 'File Resource',
-    udf_resource: 'UDF Resource',
-    datasource: 'Datasource',
-    udf: 'UDF Function',
-    namespace: 'Namespace',
-    authorize_project: 'Project Authorize',
-    authorize_resource: 'Resource Authorize',
-    authorize_namespace: 'Namespace Authorize',
-    authorize_datasource: 'Datasource Authorize',
-    authorize_udf: 'UDF Function Authorize',
-    username: 'Username',
-    username_exists: 'The username already exists',
-    username_tips: 'Please enter username',
-    user_password: 'Password',
-    user_password_tips:
-      'Please enter a password containing letters and numbers with a length between 6 and 20',
-    user_type: 'User Type',
-    ordinary_user: 'Ordinary users',
-    administrator: 'Administrator',
-    tenant_code: 'Tenant',
-    tenant_id_tips: 'Please select tenant',
-    queue: 'Queue',
-    queue_tips: 'Please select a queue',
-    email: 'Email',
-    email_empty_tips: 'Please enter email',
-    emial_correct_tips: 'Please enter the correct email format',
-    phone: 'Phone',
-    phone_empty_tips: 'Please enter phone number',
-    phone_correct_tips: 'Please enter the correct mobile phone format',
-    state: 'State',
-    state_enabled: 'Enabled',
-    state_disabled: 'Disabled',
-    create_time: 'Create Time',
-    update_time: 'Update Time',
-    operation: 'Operation',
-    edit: 'Edit',
-    delete: 'Delete',
-    authorize: 'Authorize',
-    save_error_msg: 'Failed to save, please retry',
-    delete_error_msg: 'Failed to delete, please retry',
-    auth_error_msg: 'Failed to authorize, please retry',
-    auth_success_msg: 'Authorize succeeded',
-    enable: 'Enable',
-    disable: 'Disable'
-  },
-  alarm_instance: {
-    search_input_tips: 'Please input the keywords',
-    alarm_instance_manage: 'Alarm instance manage',
-    alarm_instance_name: 'Alarm instance name',
-    alarm_instance_name_tips: 'Please enter alarm plugin instance name',
-    alarm_plugin_name: 'Alarm plugin name',
-    create_time: 'Create Time',
-    update_time: 'Update Time',
-    operation: 'Operation',
-    edit_alarm_instance: 'Edit Alarm Instance',
-    delete: 'Delete',
-    edit: 'Edit',
-    delete_confirm: 'Delete?',
-    confirm: 'Confirm',
-    cancel: 'Cancel',
-    submit: 'Submit',
-    create_alarm_instance: 'Create Alarm Instance',
-    select_plugin: 'Select plugin',
-    select_plugin_tips: 'Select Alarm plugin',
-    instance_parameter_exception: 'Instance parameter exception',
-    WebHook: 'WebHook',
-    webHook: 'WebHook',
-    WarningType: 'Warning Type',
-    IsEnableProxy: 'Enable Proxy',
-    Proxy: 'Proxy',
-    Port: 'Port',
-    User: 'User',
-    corpId: 'CorpId',
-    secret: 'Secret',
-    Secret: 'Secret',
-    users: 'Users',
-    userSendMsg: 'UserSendMsg',
-    'agentId/chatId': 'AgentId or ChatId',
-    showType: 'Show Type',
-    receivers: 'Receivers',
-    receiverCcs: 'ReceiverCcs',
-    serverHost: 'SMTP Host',
-    serverPort: 'SMTP Port',
-    sender: 'Sender',
-    enableSmtpAuth: 'SMTP Auth',
-    Password: 'Password',
-    starttlsEnable: 'SMTP STARTTLS Enable',
-    sslEnable: 'SMTP SSL Enable',
-    smtpSslTrust: 'SMTP SSL Trust',
-    url: 'URL',
-    requestType: 'Request Type',
-    headerParams: 'Headers',
-    bodyParams: 'Body',
-    contentField: 'Content Field',
-    Keyword: 'Keyword',
-    userParams: 'User Params',
-    path: 'Script Path',
-    type: 'Type',
-    sendType: 'Send Type',
-    username: 'Username',
-    botToken: 'Bot Token',
-    chatId: 'Channel Chat Id',
-    parseMode: 'Parse Mode',
-    IntegrationKey: 'Integration Key',
-    BotAccessToken: 'Bot Access Token',
-    RoomId: 'Room Id',
-    ToPersonId: 'To Person Id',
-    ToPersonEmail: 'To Person Email',
-    AtSomeoneInRoom: 'At Someone In Room',
-    Destination: 'Destination',
-    AtMobiles: 'At User Mobiles',
-    AtUserIds: 'At User Ids',
-    MsgType: 'Msg Type',
-    // eslint-disable-next-line quotes
-    IsAtAll: "{'@'}All"
-  },
-  k8s_namespace: {
-    create_namespace: 'Create Namespace',
-    edit_namespace: 'Edit Namespace',
-    search_tips: 'Please enter keywords',
-    k8s_namespace: 'K8S Namespace',
-    k8s_namespace_tips: 'Please enter k8s namespace',
-    k8s_cluster: 'K8S Cluster',
-    k8s_cluster_tips: 'Please enter k8s cluster',
-    owner: 'Owner',
-    owner_tips: 'Please enter owner',
-    tag: 'Tag',
-    tag_tips: 'Please enter tag',
-    limit_cpu: 'Limit CPU',
-    limit_cpu_tips: 'Please enter limit CPU',
-    limit_memory: 'Limit Memory',
-    limit_memory_tips: 'Please enter limit memory',
-    create_time: 'Create Time',
-    update_time: 'Update Time',
-    operation: 'Operation',
-    edit: 'Edit',
-    delete: 'Delete',
-    delete_confirm: 'Delete?'
-  }
-}
-
-const datasource = {
-  datasource: 'DataSource',
-  create_datasource: 'Create DataSource',
-  search_input_tips: 'Please input the keywords',
-  datasource_name: 'Datasource Name',
-  datasource_name_tips: 'Please enter datasource name',
-  datasource_user_name: 'Owner',
-  datasource_type: 'Datasource Type',
-  datasource_parameter: 'Datasource Parameter',
-  description: 'Description',
-  description_tips: 'Please enter description',
-  create_time: 'Create Time',
-  update_time: 'Update Time',
-  operation: 'Operation',
-  click_to_view: 'Click to view',
-  delete: 'Delete',
-  confirm: 'Confirm',
-  delete_confirm: 'Delete?',
-  cancel: 'Cancel',
-  create: 'Create',
-  edit: 'Edit',
-  success: 'Success',
-  test_connect: 'Test Connect',
-  ip: 'IP',
-  ip_tips: 'Please enter IP',
-  port: 'Port',
-  port_tips: 'Please enter port',
-  database_name: 'Database Name',
-  database_name_tips: 'Please enter database name',
-  oracle_connect_type: 'ServiceName or SID',
-  oracle_connect_type_tips: 'Please select serviceName or SID',
-  oracle_service_name: 'ServiceName',
-  oracle_sid: 'SID',
-  jdbc_connect_parameters: 'jdbc connect parameters',
-  principal_tips: 'Please enter Principal',
-  krb5_conf_tips:
-    'Please enter the kerberos authentication parameter java.security.krb5.conf',
-  keytab_username_tips:
-    'Please enter the kerberos authentication parameter login.user.keytab.username',
-  keytab_path_tips:
-    'Please enter the kerberos authentication parameter login.user.keytab.path',
-  format_tips: 'Please enter format',
-  connection_parameter: 'connection parameter',
-  user_name: 'User Name',
-  user_name_tips: 'Please enter your username',
-  user_password: 'Password',
-  user_password_tips: 'Please enter your password',
-  jdbc_format_tips: 'jdbc connection parameters is not a correct JSON format'
-}
-
-const data_quality = {
-  task_result: {
-    task_name: 'Task Name',
-    workflow_instance: 'Workflow Instance',
-    rule_type: 'Rule Type',
-    rule_name: 'Rule Name',
-    state: 'State',
-    actual_value: 'Actual Value',
-    excepted_value: 'Excepted Value',
-    check_type: 'Check Type',
-    operator: 'Operator',
-    threshold: 'Threshold',
-    failure_strategy: 'Failure Strategy',
-    excepted_value_type: 'Excepted Value Type',
-    error_output_path: 'Error Output Path',
-    username: 'Username',
-    create_time: 'Create Time',
-    update_time: 'Update Time',
-    undone: 'Undone',
-    success: 'Success',
-    failure: 'Failure',
-    single_table: 'Single Table',
-    single_table_custom_sql: 'Single Table Custom Sql',
-    multi_table_accuracy: 'Multi Table Accuracy',
-    multi_table_comparison: 'Multi Table Comparison',
-    expected_and_actual_or_expected: '(Expected - Actual) / Expected x 100%',
-    expected_and_actual: 'Expected - Actual',
-    actual_and_expected: 'Actual - Expected',
-    actual_or_expected: 'Actual / Expected x 100%'
-  },
-  rule: {
-    actions: 'Actions',
-    name: 'Rule Name',
-    type: 'Rule Type',
-    username: 'User Name',
-    create_time: 'Create Time',
-    update_time: 'Update Time',
-    input_item: 'Rule input item',
-    view_input_item: 'View input items',
-    input_item_title: 'Input item title',
-    input_item_placeholder: 'Input item placeholder',
-    input_item_type: 'Input item type',
-    src_connector_type: 'SrcConnType',
-    src_datasource_id: 'SrcSource',
-    src_table: 'SrcTable',
-    src_filter: 'SrcFilter',
-    src_field: 'SrcField',
-    statistics_name: 'ActualValName',
-    check_type: 'CheckType',
-    operator: 'Operator',
-    threshold: 'Threshold',
-    failure_strategy: 'FailureStrategy',
-    target_connector_type: 'TargetConnType',
-    target_datasource_id: 'TargetSourceId',
-    target_table: 'TargetTable',
-    target_filter: 'TargetFilter',
-    mapping_columns: 'OnClause',
-    statistics_execute_sql: 'ActualValExecSql',
-    comparison_name: 'ExceptedValName',
-    comparison_execute_sql: 'ExceptedValExecSql',
-    comparison_type: 'ExceptedValType',
-    writer_connector_type: 'WriterConnType',
-    writer_datasource_id: 'WriterSourceId',
-    target_field: 'TargetField',
-    field_length: 'FieldLength',
-    logic_operator: 'LogicOperator',
-    regexp_pattern: 'RegexpPattern',
-    deadline: 'Deadline',
-    datetime_format: 'DatetimeFormat',
-    enum_list: 'EnumList',
-    begin_time: 'BeginTime',
-    fix_value: 'FixValue',
-    null_check: 'NullCheck',
-    custom_sql: 'Custom Sql',
-    single_table: 'Single Table',
-    single_table_custom_sql: 'Single Table Custom Sql',
-    multi_table_accuracy: 'Multi Table Accuracy',
-    multi_table_value_comparison: 'Multi Table Compare',
-    field_length_check: 'FieldLengthCheck',
-    uniqueness_check: 'UniquenessCheck',
-    regexp_check: 'RegexpCheck',
-    timeliness_check: 'TimelinessCheck',
-    enumeration_check: 'EnumerationCheck',
-    table_count_check: 'TableCountCheck',
-    all: 'All',
-    FixValue: 'FixValue',
-    DailyAvg: 'DailyAvg',
-    WeeklyAvg: 'WeeklyAvg',
-    MonthlyAvg: 'MonthlyAvg',
-    Last7DayAvg: 'Last7DayAvg',
-    Last30DayAvg: 'Last30DayAvg',
-    SrcTableTotalRows: 'SrcTableTotalRows',
-    TargetTableTotalRows: 'TargetTableTotalRows'
-  }
-}
-
-const crontab = {
-  second: 'second',
-  minute: 'minute',
-  hour: 'hour',
-  day: 'day',
-  month: 'month',
-  year: 'year',
-  monday: 'Monday',
-  tuesday: 'Tuesday',
-  wednesday: 'Wednesday',
-  thursday: 'Thursday',
-  friday: 'Friday',
-  saturday: 'Saturday',
-  sunday: 'Sunday',
-  every_second: 'Every second',
-  every: 'Every',
-  second_carried_out: 'second carried out',
-  second_start: 'Start',
-  specific_second: 'Specific second(multiple)',
-  specific_second_tip: 'Please enter a specific second',
-  cycle_from: 'Cycle from',
-  to: 'to',
-  every_minute: 'Every minute',
-  minute_carried_out: 'minute carried out',
-  minute_start: 'Start',
-  specific_minute: 'Specific minute(multiple)',
-  specific_minute_tip: 'Please enter a specific minute',
-  every_hour: 'Every hour',
-  hour_carried_out: 'hour carried out',
-  hour_start: 'Start',
-  specific_hour: 'Specific hour(multiple)',
-  specific_hour_tip: 'Please enter a specific hour',
-  every_day: 'Every day',
-  week_carried_out: 'week carried out',
-  start: 'Start',
-  day_carried_out: 'day carried out',
-  day_start: 'Start',
-  specific_week: 'Specific day of the week(multiple)',
-  specific_week_tip: 'Please enter a specific week',
-  specific_day: 'Specific days(multiple)',
-  specific_day_tip: 'Please enter a days',
-  last_day_of_month: 'On the last day of the month',
-  last_work_day_of_month: 'On the last working day of the month',
-  last_of_month: 'At the last of this month',
-  before_end_of_month: 'Before the end of this month',
-  recent_business_day_to_month:
-    'The most recent business day (Monday to Friday) to this month',
-  in_this_months: 'In this months',
-  every_month: 'Every month',
-  month_carried_out: 'month carried out',
-  month_start: 'Start',
-  specific_month: 'Specific months(multiple)',
-  specific_month_tip: 'Please enter a months',
-  every_year: 'Every year',
-  year_carried_out: 'year carried out',
-  year_start: 'Start',
-  specific_year: 'Specific year(multiple)',
-  specific_year_tip: 'Please enter a year',
-  one_hour: 'hour',
-  one_day: 'day'
-}
-
-export default {
-  login,
-  modal,
-  theme,
-  userDropdown,
-  menu,
-  home,
-  password,
-  profile,
-  monitor,
-  resource,
-  project,
-  security,
-  datasource,
-  data_quality,
-  crontab
-}
diff --git a/dolphinscheduler-ui/src/locales/modules/zh_CN.ts b/dolphinscheduler-ui/src/locales/modules/zh_CN.ts
deleted file mode 100644
index 150a5e9acb..0000000000
--- a/dolphinscheduler-ui/src/locales/modules/zh_CN.ts
+++ /dev/null
@@ -1,1419 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-const login = {
-  test: '测试',
-  userName: '用户名',
-  userName_tips: '请输入用户名',
-  userPassword: '密码',
-  userPassword_tips: '请输入密码',
-  login: '登录'
-}
-
-const modal = {
-  cancel: '取消',
-  confirm: '确定'
-}
-
-const theme = {
-  light: '浅色',
-  dark: '深色'
-}
-
-const userDropdown = {
-  profile: '用户信息',
-  password: '密码管理',
-  logout: '退出登录'
-}
-
-const menu = {
-  home: '首页',
-  project: '项目管理',
-  resources: '资源中心',
-  datasource: '数据源中心',
-  monitor: '监控中心',
-  security: '安全中心',
-  project_overview: '项目概览',
-  workflow_relation: '工作流关系',
-  workflow: '工作流',
-  workflow_definition: '工作流定义',
-  workflow_instance: '工作流实例',
-  task: '任务',
-  task_instance: '任务实例',
-  task_definition: '任务定义',
-  file_manage: '文件管理',
-  udf_manage: 'UDF管理',
-  resource_manage: '资源管理',
-  function_manage: '函数管理',
-  service_manage: '服务管理',
-  master: 'Master',
-  worker: 'Worker',
-  db: 'DB',
-  statistical_manage: '统计管理',
-  statistics: 'Statistics',
-  audit_log: '审计日志',
-  tenant_manage: '租户管理',
-  user_manage: '用户管理',
-  alarm_group_manage: '告警组管理',
-  alarm_instance_manage: '告警实例管理',
-  worker_group_manage: 'Worker分组管理',
-  yarn_queue_manage: 'Yarn队列管理',
-  environment_manage: '环境管理',
-  k8s_namespace_manage: 'K8S命名空间管理',
-  token_manage: '令牌管理',
-  task_group_manage: '任务组管理',
-  task_group_option: '任务组配置',
-  task_group_queue: '任务组队列',
-  data_quality: '数据质量',
-  task_result: '任务结果',
-  rule: '规则管理'
-}
-
-const home = {
-  task_state_statistics: '任务状态统计',
-  process_state_statistics: '流程状态统计',
-  process_definition_statistics: '流程定义统计',
-  number: '数量',
-  state: '状态',
-  submitted_success: '提交成功',
-  running_execution: '正在运行',
-  ready_pause: '准备暂停',
-  pause: '暂停',
-  ready_stop: '准备停止',
-  stop: '停止',
-  failure: '失败',
-  success: '成功',
-  need_fault_tolerance: '需要容错',
-  kill: 'KILL',
-  waiting_thread: '等待线程',
-  waiting_depend: '等待依赖完成',
-  delay_execution: '延时执行',
-  forced_success: '强制成功',
-  serial_wait: '串行等待',
-  dispatch: '派发',
-  ready_block: '准备阻断',
-  block: '阻断'
-}
-
-const password = {
-  edit_password: '修改密码',
-  password: '密码',
-  confirm_password: '确认密码',
-  password_tips: '请输入密码',
-  confirm_password_tips: '请输入确认密码',
-  two_password_entries_are_inconsistent: '两次密码输入不一致',
-  submit: '提交'
-}
-
-const profile = {
-  profile: '用户信息',
-  edit: '编辑',
-  username: '用户名',
-  email: '邮箱',
-  phone: '手机',
-  state: '状态',
-  permission: '权限',
-  create_time: '创建时间',
-  update_time: '更新时间',
-  administrator: '管理员',
-  ordinary_user: '普通用户',
-  edit_profile: '编辑用户',
-  username_tips: '请输入用户名',
-  email_tips: '请输入邮箱',
-  email_correct_tips: '请输入正确格式的邮箱',
-  phone_tips: '请输入手机号',
-  state_tips: '请选择状态',
-  enable: '启用',
-  disable: '禁用',
-  timezone_success: '时区更新成功',
-  please_select_timezone: '请选择时区'
-}
-
-const monitor = {
-  master: {
-    cpu_usage: '处理器使用量',
-    memory_usage: '内存使用量',
-    load_average: '平均负载量',
-    create_time: '创建时间',
-    last_heartbeat_time: '最后心跳时间',
-    directory_detail: '目录详情',
-    host: '主机',
-    directory: '注册目录',
-    master_no_data_result_title: 'Master节点不存在',
-    master_no_data_result_desc:
-      '目前没有任何Master节点,请先创建Master节点,再访问该页面'
-  },
-  worker: {
-    cpu_usage: '处理器使用量',
-    memory_usage: '内存使用量',
-    load_average: '平均负载量',
-    create_time: '创建时间',
-    last_heartbeat_time: '最后心跳时间',
-    directory_detail: '目录详情',
-    host: '主机',
-    directory: '注册目录',
-    worker_no_data_result_title: 'Worker节点不存在',
-    worker_no_data_result_desc:
-      '目前没有任何Worker节点,请先创建Worker节点,再访问该页面'
-  },
-  db: {
-    health_state: '健康状态',
-    max_connections: '最大连接数',
-    threads_connections: '当前连接数',
-    threads_running_connections: '数据库当前活跃连接数'
-  },
-  statistics: {
-    command_number_of_waiting_for_running: '待执行的命令数',
-    failure_command_number: '执行失败的命令数'
-  },
-  audit_log: {
-    user_name: '用户名称',
-    resource_type: '资源类型',
-    project_name: '项目名称',
-    operation_type: '操作类型',
-    create_time: '创建时间',
-    start_time: '开始时间',
-    end_time: '结束时间',
-    user_audit: '用户管理审计',
-    project_audit: '项目管理审计',
-    create: '创建',
-    update: '更新',
-    delete: '删除',
-    read: '读取'
-  }
-}
-
-const resource = {
-  file: {
-    file_manage: '文件管理',
-    create_folder: '创建文件夹',
-    create_file: '创建文件',
-    upload_files: '上传文件',
-    enter_keyword_tips: '请输入关键词',
-    name: '名称',
-    user_name: '所属用户',
-    whether_directory: '是否文件夹',
-    file_name: '文件名称',
-    description: '描述',
-    size: '大小',
-    update_time: '更新时间',
-    operation: '操作',
-    edit: '编辑',
-    rename: '重命名',
-    download: '下载',
-    delete: '删除',
-    yes: '是',
-    no: '否',
-    folder_name: '文件夹名称',
-    enter_name_tips: '请输入名称',
-    enter_description_tips: '请输入描述',
-    enter_content_tips: '请输入资源内容',
-    enter_suffix_tips: '请输入文件后缀',
-    file_format: '文件格式',
-    file_content: '文件内容',
-    delete_confirm: '确定删除吗?',
-    confirm: '确定',
-    cancel: '取消',
-    success: '成功',
-    file_details: '文件详情',
-    return: '返回',
-    save: '保存'
-  },
-  udf: {
-    udf_resources: 'UDF资源',
-    create_folder: '创建文件夹',
-    upload_udf_resources: '上传UDF资源',
-    udf_source_name: 'UDF资源名称',
-    user_name: '所属用户',
-    whether_directory: '是否文件夹',
-    file_name: '文件名称',
-    file_size: '文件大小',
-    description: '描述',
-    create_time: '创建时间',
-    update_time: '更新时间',
-    operation: '操作',
-    yes: '是',
-    no: '否',
-    edit: '编辑',
-    download: '下载',
-    delete: '删除',
-    success: '成功',
-    folder_name: '文件夹名称',
-    upload: '上传',
-    upload_files: '上传文件',
-    file_upload: '文件上传',
-    delete_confirm: '确定删除吗?',
-    enter_keyword_tips: '请输入关键词',
-    enter_name_tips: '请输入名称',
-    enter_description_tips: '请输入描述'
-  },
-  function: {
-    udf_function: 'UDF函数',
-    create_udf_function: '创建UDF函数',
-    edit_udf_function: '编辑UDF函数',
-    udf_function_name: 'UDF函数名称',
-    user_name: '所属用户',
-    class_name: '类名',
-    type: '类型',
-    description: '描述',
-    jar_package: 'jar包',
-    update_time: '更新时间',
-    operation: '操作',
-    rename: '重命名',
-    edit: '编辑',
-    delete: '删除',
-    success: '成功',
-    package_name: '包名类名',
-    udf_resources: 'UDF资源',
-    instructions: '使用说明',
-    upload_resources: '上传资源',
-    udf_resources_directory: 'UDF资源目录',
-    delete_confirm: '确定删除吗?',
-    enter_keyword_tips: '请输入关键词',
-    enter_udf_unction_name_tips: '请输入UDF函数名称',
-    enter_package_name_tips: '请输入包名类名',
-    enter_select_udf_resources_tips: '请选择UDF资源',
-    enter_select_udf_resources_directory_tips: '请选择UDF资源目录',
-    enter_instructions_tips: '请输入使用说明',
-    enter_name_tips: '请输入名称',
-    enter_description_tips: '请输入描述',
-    upload: '上传',
-    upload_udf_resources: '上传UDF资源'
-  },
-  task_group_option: {
-    manage: '任务组管理',
-    option: '任务组配置',
-    create: '创建任务组',
-    edit: '编辑任务组',
-    delete: '删除任务组',
-    view_queue: '查看任务组队列',
-    switch_status: '切换任务组状态',
-    code: '任务组编号',
-    name: '任务组名称',
-    project_name: '项目名称',
-    resource_pool_size: '资源容量',
-    resource_used_pool_size: '已用资源',
-    desc: '描述信息',
-    status: '任务组状态',
-    enable_status: '启用',
-    disable_status: '不可用',
-    please_enter_name: '请输入任务组名称',
-    please_enter_desc: '请输入任务组描述',
-    please_enter_resource_pool_size: '请输入资源容量大小',
-    positive_integer_tips: '应为正整数',
-    please_select_project: '请选择项目',
-    create_time: '创建时间',
-    update_time: '更新时间',
-    actions: '操作',
-    please_enter_keywords: '请输入搜索关键词'
-  },
-  task_group_queue: {
-    actions: '操作',
-    task_name: '任务名称',
-    task_group_name: '任务组名称',
-    project_name: '项目名称',
-    task_instance_name: '任务实例',
-    workflow_instance_name: '工作流实例',
-    queue: '任务组队列',
-    priority: '组内优先级',
-    priority_be_a_number: '优先级必须是大于等于0的数值',
-    force_starting_status: '是否强制启动',
-    in_queue: '是否排队中',
-    task_status: '任务状态',
-    view_task_group_queue: '查看任务组队列',
-    the_status_of_waiting: '等待入队',
-    the_status_of_queuing: '排队中',
-    the_status_of_releasing: '已释放',
-    modify_priority: '修改优先级',
-    start_task: '强制启动',
-    priority_not_empty: '优先级不能为空',
-    priority_must_be_number: '优先级必须是数值',
-    please_select_task_name: '请选择节点名称',
-    create_time: '创建时间',
-    update_time: '更新时间',
-    edit_priority: '修改优先级'
-  }
-}
-
-const project = {
-  list: {
-    create_project: '创建项目',
-    edit_project: '编辑项目',
-    project_list: '项目列表',
-    project_tips: '请输入项目名称',
-    description_tips: '请输入项目描述',
-    username_tips: '请输入所属用户',
-    project_name: '项目名称',
-    project_description: '项目描述',
-    owned_users: '所属用户',
-    workflow_define_count: '工作流定义数',
-    process_instance_running_count: '正在运行的流程数',
-    description: '描述',
-    create_time: '创建时间',
-    update_time: '更新时间',
-    operation: '操作',
-    edit: '编辑',
-    delete: '删除',
-    confirm: '确定',
-    cancel: '取消',
-    delete_confirm: '确定删除吗?'
-  },
-  workflow: {
-    workflow_relation: '工作流关系',
-    create_workflow: '创建工作流',
-    import_workflow: '导入工作流',
-    workflow_name: '工作流名称',
-    current_selection: '当前选择',
-    online: '已上线',
-    offline: '已下线',
-    refresh: '刷新',
-    show_hide_label: '显示 / 隐藏标签',
-    workflow_offline: '工作流下线',
-    schedule_offline: '调度下线',
-    schedule_start_time: '定时开始时间',
-    schedule_end_time: '定时结束时间',
-    crontab_expression: 'Crontab',
-    workflow_publish_status: '工作流上线状态',
-    schedule_publish_status: '定时状态',
-    workflow_definition: '工作流定义',
-    workflow_instance: '工作流实例',
-    status: '状态',
-    create_time: '创建时间',
-    update_time: '更新时间',
-    description: '描述',
-    create_user: '创建用户',
-    modify_user: '修改用户',
-    operation: '操作',
-    edit: '编辑',
-    confirm: '确定',
-    cancel: '取消',
-    start: '运行',
-    timing: '定时',
-    timezone: '时区',
-    up_line: '上线',
-    down_line: '下线',
-    copy_workflow: '复制工作流',
-    cron_manage: '定时管理',
-    delete: '删除',
-    tree_view: '工作流树形图',
-    tree_limit: '限制大小',
-    export: '导出',
-    batch_copy: '批量复制',
-    version_info: '版本信息',
-    version: '版本',
-    file_upload: '文件上传',
-    upload_file: '上传文件',
-    upload: '上传',
-    file_name: '文件名称',
-    success: '成功',
-    set_parameters_before_starting: '启动前请先设置参数',
-    set_parameters_before_timing: '定时前请先设置参数',
-    start_and_stop_time: '起止时间',
-    next_five_execution_times: '接下来五次执行时间',
-    execute_time: '执行时间',
-    failure_strategy: '失败策略',
-    notification_strategy: '通知策略',
-    workflow_priority: '流程优先级',
-    worker_group: 'Worker分组',
-    environment_name: '环境名称',
-    alarm_group: '告警组',
-    complement_data: '补数',
-    startup_parameter: '启动参数',
-    whether_dry_run: '是否空跑',
-    continue: '继续',
-    end: '结束',
-    none_send: '都不发',
-    success_send: '成功发',
-    failure_send: '失败发',
-    all_send: '成功或失败都发',
-    whether_complement_data: '是否是补数',
-    schedule_date: '调度日期',
-    mode_of_execution: '执行方式',
-    serial_execution: '串行执行',
-    parallel_execution: '并行执行',
-    parallelism: '并行度',
-    custom_parallelism: '自定义并行度',
-    please_enter_parallelism: '请输入并行度',
-    please_choose: '请选择',
-    start_time: '开始时间',
-    end_time: '结束时间',
-    crontab: 'Crontab',
-    delete_confirm: '确定删除吗?',
-    enter_name_tips: '请输入名称',
-    switch_version: '切换到该版本',
-    confirm_switch_version: '确定切换到该版本吗?',
-    current_version: '当前版本',
-    run_type: '运行类型',
-    scheduling_time: '调度时间',
-    duration: '运行时长',
-    run_times: '运行次数',
-    fault_tolerant_sign: '容错标识',
-    dry_run_flag: '空跑标识',
-    executor: '执行用户',
-    host: '主机',
-    start_process: '启动工作流',
-    execute_from_the_current_node: '从当前节点开始执行',
-    recover_tolerance_fault_process: '恢复被容错的工作流',
-    resume_the_suspension_process: '恢复运行流程',
-    execute_from_the_failed_nodes: '从失败节点开始执行',
-    scheduling_execution: '调度执行',
-    rerun: '重跑',
-    stop: '停止',
-    pause: '暂停',
-    recovery_waiting_thread: '恢复等待线程',
-    recover_serial_wait: '串行恢复',
-    recovery_suspend: '恢复运行',
-    recovery_failed: '重跑失败任务',
-    gantt: '甘特图',
-    name: '名称',
-    all_status: '全部状态',
-    submit_success: '提交成功',
-    running: '正在运行',
-    ready_to_pause: '准备暂停',
-    ready_to_stop: '准备停止',
-    failed: '失败',
-    need_fault_tolerance: '需要容错',
-    kill: 'Kill',
-    waiting_for_thread: '等待线程',
-    waiting_for_dependence: '等待依赖',
-    waiting_for_dependency_to_complete: '等待依赖完成',
-    delay_execution: '延时执行',
-    forced_success: '强制成功',
-    serial_wait: '串行等待',
-    dispatch: '派发',
-    pending: '挂起',
-    executing: '正在执行',
-    startup_type: '启动类型',
-    complement_range: '补数范围',
-    parameters_variables: '参数变量',
-    global_parameters: '全局参数',
-    local_parameters: '局部参数',
-    type: '类型',
-    retry_count: '重试次数',
-    submit_time: '提交时间',
-    refresh_status_succeeded: '刷新状态成功',
-    view_log: '查看日志',
-    update_log_success: '更新日志成功',
-    no_more_log: '暂无更多日志',
-    no_log: '暂无日志',
-    loading_log: '正在努力请求日志中...',
-    close: '关闭',
-    download_log: '下载日志',
-    refresh_log: '刷新日志',
-    enter_full_screen: '进入全屏',
-    cancel_full_screen: '取消全屏',
-    task_state: '任务状态',
-    mode_of_dependent: '依赖模式',
-    open: '打开',
-    project_name_required: '项目名称必填',
-    related_items: '关联项目',
-    project_name: '项目名称',
-    project_tips: '请选择项目',
-    workflow_relation_no_data_result_title: '工作流关系不存在',
-    workflow_relation_no_data_result_desc:
-      '目前没有任何工作流,请先创建工作流,再访问该页面'
-  },
-  task: {
-    cancel_full_screen: '取消全屏',
-    enter_full_screen: '全屏',
-    current_task_settings: '当前任务设置',
-    online: '已上线',
-    offline: '已下线',
-    task_name: '任务名称',
-    task_type: '任务类型',
-    create_task: '创建任务',
-    workflow_instance: '工作流实例',
-    workflow_name: '工作流名称',
-    workflow_name_tips: '请选择工作流名称',
-    workflow_state: '工作流状态',
-    version: '版本',
-    current_version: '当前版本',
-    switch_version: '切换到该版本',
-    confirm_switch_version: '确定切换到该版本吗?',
-    description: '描述',
-    move: '移动',
-    upstream_tasks: '上游任务',
-    executor: '执行用户',
-    node_type: '节点类型',
-    state: '状态',
-    submit_time: '提交时间',
-    start_time: '开始时间',
-    create_time: '创建时间',
-    update_time: '更新时间',
-    end_time: '结束时间',
-    duration: '运行时间',
-    retry_count: '重试次数',
-    dry_run_flag: '空跑标识',
-    host: '主机',
-    operation: '操作',
-    edit: '编辑',
-    delete: '删除',
-    delete_confirm: '确定删除吗?',
-    forced_success: '强制成功',
-    view_log: '查看日志',
-    download_log: '下载日志',
-    refresh: '刷新'
-  },
-  dag: {
-    create: '创建工作流',
-    search: '搜索',
-    download_png: '下载工作流图片',
-    fullscreen_open: '全屏',
-    fullscreen_close: '退出全屏',
-    save: '保存',
-    close: '关闭',
-    format: '格式化',
-    refresh_dag_status: '刷新DAG状态',
-    layout_type: '布局类型',
-    grid_layout: '网格布局',
-    dagre_layout: '层次布局',
-    rows: '行数',
-    cols: '列数',
-    copy_success: '复制成功',
-    workflow_name: '工作流名称',
-    description: '描述',
-    tenant: '租户',
-    timeout_alert: '超时告警',
-    process_execute_type: '执行策略',
-    parallel: '并行',
-    serial_wait: '串行等待',
-    serial_discard: '串行抛弃',
-    serial_priority: '串行优先',
-    recover_serial_wait: '串行恢复',
-    global_variables: '全局变量',
-    basic_info: '基本信息',
-    minute: '分',
-    key: '键',
-    value: '值',
-    success: '成功',
-    delete_cell: '删除选中的线或节点',
-    online_directly: '是否上线工作流定义',
-    update_directly: '是否更新工作流定义',
-    dag_name_empty: 'DAG图名称不能为空',
-    positive_integer: '请输入大于 0 的正整数',
-    prop_empty: '自定义参数prop不能为空',
-    prop_repeat: 'prop中有重复',
-    node_not_created: '未创建节点保存失败',
-    copy_name: '复制名称',
-    view_variables: '查看变量',
-    startup_parameter: '启动参数',
-    online: '已上线'
-  },
-  node: {
-    return_back: '返回上一节点',
-    current_node_settings: '当前节点设置',
-    instructions: '使用说明',
-    view_history: '查看历史',
-    view_log: '查看日志',
-    enter_this_child_node: '进入该子节点',
-    name: '节点名称',
-    task_name: '任务名称',
-    task_name_tips: '任务名称(必填)',
-    name_tips: '请输入名称(必填)',
-    task_type: '任务类型',
-    task_type_tips: '请选择任务类型(必选)',
-    workflow_name: '工作流名称',
-    workflow_name_tips: '请选择工作流(必选)',
-    child_node: '子节点',
-    child_node_tips: '请选择子节点(必选)',
-    run_flag: '运行标志',
-    normal: '正常',
-    prohibition_execution: '禁止执行',
-    description: '描述',
-    description_tips: '请输入描述',
-    task_priority: '任务优先级',
-    worker_group: 'Worker分组',
-    worker_group_tips: '该Worker分组已经不存在,请选择正确的Worker分组!',
-    environment_name: '环境名称',
-    task_group_name: '任务组名称',
-    task_group_queue_priority: '组内优先级',
-    number_of_failed_retries: '失败重试次数',
-    times: '次',
-    failed_retry_interval: '失败重试间隔',
-    minute: '分',
-    delay_execution_time: '延时执行时间',
-    state: '状态',
-    branch_flow: '分支流转',
-    cancel: '取消',
-    loading: '正在努力加载中...',
-    confirm: '确定',
-    success: '成功',
-    failed: '失败',
-    backfill_tips: '新创建子工作流还未执行,不能进入子工作流',
-    task_instance_tips: '该任务还未执行,不能进入子工作流',
-    branch_tips: '成功分支流转和失败分支流转不能选择同一个节点',
-    timeout_alarm: '超时告警',
-    timeout_strategy: '超时策略',
-    timeout_strategy_tips: '超时策略必须选一个',
-    timeout_failure: '超时失败',
-    timeout_period: '超时时长',
-    timeout_period_tips: '超时时长必须为正整数',
-    script: '脚本',
-    script_tips: '请输入脚本(必填)',
-    init_script: '初始化脚本',
-    init_script_tips: '请输入初始化脚本',
-    resources: '资源',
-    resources_tips: '请选择资源',
-    no_resources_tips: '请删除所有未授权或已删除资源',
-    useless_resources_tips: '未授权或已删除资源',
-    custom_parameters: '自定义参数',
-    copy_failed: '该浏览器不支持自动复制',
-    prop_tips: 'prop(必填)',
-    prop_repeat: 'prop中有重复',
-    value_tips: 'value(选填)',
-    value_required_tips: 'value(必填)',
-    pre_tasks: '前置任务',
-    program_type: '程序类型',
-    spark_version: 'Spark版本',
-    main_class: '主函数的Class',
-    main_class_tips: '请填写主函数的Class',
-    main_package: '主程序包',
-    main_package_tips: '请选择主程序包',
-    deploy_mode: '部署方式',
-    app_name: '任务名称',
-    app_name_tips: '请输入任务名称(选填)',
-    driver_cores: 'Driver核心数',
-    driver_cores_tips: '请输入Driver核心数',
-    driver_memory: 'Driver内存数',
-    driver_memory_tips: '请输入Driver内存数',
-    executor_number: 'Executor数量',
-    executor_number_tips: '请输入Executor数量',
-    executor_memory: 'Executor内存数',
-    executor_memory_tips: '请输入Executor内存数',
-    executor_cores: 'Executor核心数',
-    executor_cores_tips: '请输入Executor核心数',
-    main_arguments: '主程序参数',
-    main_arguments_tips: '请输入主程序参数',
-    option_parameters: '选项参数',
-    option_parameters_tips: '请输入选项参数',
-    positive_integer_tips: '应为正整数',
-    flink_version: 'Flink版本',
-    job_manager_memory: 'JobManager内存数',
-    job_manager_memory_tips: '请输入JobManager内存数',
-    task_manager_memory: 'TaskManager内存数',
-    task_manager_memory_tips: '请输入TaskManager内存数',
-    slot_number: 'Slot数量',
-    slot_number_tips: '请输入Slot数量',
-    parallelism: '并行度',
-    custom_parallelism: '自定义并行度',
-    parallelism_tips: '请输入并行度',
-    parallelism_number_tips: '并行度必须为正整数',
-    parallelism_complement_tips:
-      '如果存在大量任务需要补数时,可以利用自定义并行度将补数的任务线程设置成合理的数值,避免对服务器造成过大的影响',
-    task_manager_number: 'TaskManager数量',
-    task_manager_number_tips: '请输入TaskManager数量',
-    http_url: '请求地址',
-    http_url_tips: '请填写请求地址(必填)',
-    http_url_validator: '请求地址需包含http或者https',
-    http_method: '请求类型',
-    http_parameters: '请求参数',
-    http_check_condition: '校验条件',
-    http_condition: '校验内容',
-    http_condition_tips: '请填写校验内容',
-    timeout_settings: '超时设置',
-    connect_timeout: '连接超时',
-    ms: '毫秒',
-    socket_timeout: 'Socket超时',
-    status_code_default: '默认响应码200',
-    status_code_custom: '自定义响应码',
-    body_contains: '内容包含',
-    body_not_contains: '内容不包含',
-    http_parameters_position: '参数位置',
-    target_task_name: '目标任务名',
-    target_task_name_tips: '请输入Pigeon任务名(必填)',
-    datasource_type: '数据源类型',
-    datasource_instances: '数据源实例',
-    sql_type: 'SQL类型',
-    sql_type_query: '查询',
-    sql_type_non_query: '非查询',
-    sql_statement: 'SQL语句',
-    pre_sql_statement: '前置SQL语句',
-    post_sql_statement: '后置SQL语句',
-    sql_input_placeholder: '请输入非查询SQL语句',
-    sql_empty_tips: '语句不能为空',
-    procedure_method: 'SQL语句',
-    procedure_method_tips: '请输入存储脚本',
-    procedure_method_snippet:
-      '--请输入存储脚本 \n\n--调用存储过程: call <procedure-name>[(<arg1>,<arg2>, ...)] \n\n--调用存储函数:?= call <procedure-name>[(<arg1>,<arg2>, ...)]',
-    start: '运行',
-    edit: '编辑',
-    copy: '复制节点',
-    delete: '删除',
-    custom_job: '自定义任务',
-    custom_script: '自定义脚本',
-    sqoop_job_name: '任务名称',
-    sqoop_job_name_tips: '请输入任务名称(必填)',
-    direct: '流向',
-    hadoop_custom_params: 'Hadoop参数',
-    sqoop_advanced_parameters: 'Sqoop参数',
-    data_source: '数据来源',
-    type: '类型',
-    datasource: '数据源',
-    datasource_tips: '请选择数据源',
-    model_type: '模式',
-    form: '表单',
-    table: '表名',
-    table_tips: '请输入Mysql表名(必填)',
-    column_type: '列类型',
-    all_columns: '全表导入',
-    some_columns: '选择列',
-    column: '列',
-    column_tips: '请输入列名,用 , 隔开',
-    database: '数据库',
-    database_tips: '请输入Hive数据库(必填)',
-    hive_table_tips: '请输入Hive表名(必填)',
-    hive_partition_keys: 'Hive 分区键',
-    hive_partition_keys_tips: '请输入分区键',
-    hive_partition_values: 'Hive 分区值',
-    hive_partition_values_tips: '请输入分区值',
-    export_dir: '数据源路径',
-    export_dir_tips: '请输入数据源路径(必填)',
-    sql_statement_tips: 'SQL语句(必填)',
-    map_column_hive: 'Hive类型映射',
-    map_column_java: 'Java类型映射',
-    data_target: '数据目的',
-    create_hive_table: '是否创建新表',
-    drop_delimiter: '是否删除分隔符',
-    over_write_src: '是否覆盖数据源',
-    hive_target_dir: 'Hive目标路径',
-    hive_target_dir_tips: '请输入Hive临时目录',
-    replace_delimiter: '替换分隔符',
-    replace_delimiter_tips: '请输入替换分隔符',
-    target_dir: '目标路径',
-    target_dir_tips: '请输入目标路径(必填)',
-    delete_target_dir: '是否删除目录',
-    compression_codec: '压缩类型',
-    file_type: '保存格式',
-    fields_terminated: '列分隔符',
-    fields_terminated_tips: '请输入列分隔符',
-    lines_terminated: '行分隔符',
-    lines_terminated_tips: '请输入行分隔符',
-    is_update: '是否更新',
-    update_key: '更新列',
-    update_key_tips: '请输入更新列',
-    update_mode: '更新类型',
-    only_update: '只更新',
-    allow_insert: '无更新便插入',
-    concurrency: '并发度',
-    concurrency_tips: '请输入并发度',
-    sea_tunnel_master: 'Master',
-    sea_tunnel_master_url: 'Master URL',
-    sea_tunnel_queue: '队列',
-    sea_tunnel_master_url_tips: '请直接填写地址,例如:127.0.0.1:7077',
-    add_pre_task_check_condition: '添加前置检查条件',
-    switch_condition: '条件',
-    switch_branch_flow: '分支流转',
-    and: '且',
-    or: '或',
-    datax_custom_template: '自定义模板',
-    datax_json_template: 'JSON',
-    datax_target_datasource_type: '目标源类型',
-    datax_target_database: '目标源实例',
-    datax_target_table: '目标表',
-    datax_target_table_tips: '请输入目标表名',
-    datax_target_database_pre_sql: '目标库前置SQL',
-    datax_target_database_post_sql: '目标库后置SQL',
-    datax_non_query_sql_tips: '请输入非查询SQL语句',
-    datax_job_speed_byte: '限流(字节数)',
-    datax_job_speed_byte_info: '(KB,0代表不限制)',
-    datax_job_speed_record: '限流(记录数)',
-    datax_job_speed_record_info: '(0代表不限制)',
-    datax_job_runtime_memory: '运行内存',
-    datax_job_runtime_memory_xms: '最小内存',
-    datax_job_runtime_memory_xmx: '最大内存',
-    datax_job_runtime_memory_unit: 'G',
-    current_hour: '当前小时',
-    last_1_hour: '前1小时',
-    last_2_hour: '前2小时',
-    last_3_hour: '前3小时',
-    last_24_hour: '前24小时',
-    today: '今天',
-    last_1_days: '昨天',
-    last_2_days: '前两天',
-    last_3_days: '前三天',
-    last_7_days: '前七天',
-    this_week: '本周',
-    last_week: '上周',
-    last_monday: '上周一',
-    last_tuesday: '上周二',
-    last_wednesday: '上周三',
-    last_thursday: '上周四',
-    last_friday: '上周五',
-    last_saturday: '上周六',
-    last_sunday: '上周日',
-    this_month: '本月',
-    this_month_begin: '本月初',
-    last_month: '上月',
-    last_month_begin: '上月初',
-    last_month_end: '上月末',
-    month: '月',
-    week: '周',
-    day: '日',
-    hour: '时',
-    add_dependency: '添加依赖',
-    waiting_dependent_start: '等待依赖启动',
-    check_interval: '检查间隔',
-    waiting_dependent_complete: '等待依赖完成',
-    project_name: '项目名称',
-    project_name_tips: '项目名称(必填)',
-    process_name: '工作流名称',
-    process_name_tips: '工作流名称(必填)',
-    cycle_time: '时间周期',
-    cycle_time_tips: '时间周期(必填)',
-    date_tips: '日期(必填)',
-    rule_name: '规则名称',
-    null_check: '空值检测',
-    custom_sql: '自定义SQL',
-    multi_table_accuracy: '多表准确性',
-    multi_table_value_comparison: '两表值比对',
-    field_length_check: '字段长度校验',
-    uniqueness_check: '唯一性校验',
-    regexp_check: '正则表达式',
-    timeliness_check: '及时性校验',
-    enumeration_check: '枚举值校验',
-    table_count_check: '表行数校验',
-    src_connector_type: '源数据类型',
-    src_datasource_id: '源数据源',
-    src_table: '源数据表',
-    src_filter: '源表过滤条件',
-    src_field: '源表检测列',
-    statistics_name: '实际值名',
-    check_type: '校验方式',
-    operator: '校验操作符',
-    threshold: '阈值',
-    failure_strategy: '失败策略',
-    target_connector_type: '目标数据类型',
-    target_datasource_id: '目标数据源',
-    target_table: '目标数据表',
-    target_filter: '目标表过滤条件',
-    mapping_columns: 'ON语句',
-    statistics_execute_sql: '实际值计算SQL',
-    comparison_name: '期望值名',
-    comparison_execute_sql: '期望值计算SQL',
-    comparison_type: '期望值类型',
-    writer_connector_type: '输出数据类型',
-    writer_datasource_id: '输出数据源',
-    target_field: '目标表检测列',
-    field_length: '字段长度限制',
-    logic_operator: '逻辑操作符',
-    regexp_pattern: '正则表达式',
-    deadline: '截止时间',
-    datetime_format: '时间格式',
-    enum_list: '枚举值列表',
-    begin_time: '起始时间',
-    fix_value: '固定值',
-    required: '必填',
-    emr_flow_define_json: 'jobFlowDefineJson',
-    emr_flow_define_json_tips: '请输入工作流定义',
-    segment_separator: '分段执行符号',
-    segment_separator_tips: '请输入分段执行符号',
-    zeppelin_note_id: 'zeppelin_note_id',
-    zeppelin_note_id_tips: '请输入zeppelin note id',
-    zeppelin_paragraph_id: 'zeppelin_paragraph_id',
-    zeppelin_paragraph_id_tips: '请输入zeppelin paragraph id',
-    send_email: '发送邮件',
-    log_display: '日志显示',
-    rows_of_result: '行查询结果',
-    title: '主题',
-    title_tips: '请输入邮件主题',
-    alarm_group: '告警组',
-    alarm_group_tips: '告警组必填',
-    integer_tips: '请输入一个正整数',
-    sql_parameter: 'sql参数',
-    format_tips: '请输入格式为',
-    udf_function: 'UDF函数',
-    unlimited: '不限制',
-    please_select_source_connector_type: '请选择源数据类型',
-    please_select_source_datasource_id: '请选择源数据源',
-    please_enter_source_table_name: '请选择源数据表',
-    please_enter_filter_expression: '请输入源表过滤条件',
-    please_enter_column_only_single_column_is_supported: '请选择源表检测列',
-    please_enter_threshold_number_is_needed: '请输入阈值',
-    please_enter_comparison_title: '请选择期望值类型'
-  }
-}
-
-const security = {
-  tenant: {
-    tenant_manage: '租户管理',
-    create_tenant: '创建租户',
-    search_tips: '请输入关键词',
-    tenant_code: '操作系统租户',
-    description: '描述',
-    queue_name: '队列',
-    create_time: '创建时间',
-    update_time: '更新时间',
-    actions: '操作',
-    edit_tenant: '编辑租户',
-    tenant_code_tips: '请输入操作系统租户',
-    queue_name_tips: '请选择队列',
-    description_tips: '请输入描述',
-    delete_confirm: '确定删除吗?',
-    edit: '编辑',
-    delete: '删除'
-  },
-  alarm_group: {
-    create_alarm_group: '创建告警组',
-    edit_alarm_group: '编辑告警组',
-    search_tips: '请输入关键词',
-    alert_group_name_tips: '请输入告警组名称',
-    alarm_plugin_instance: '告警组实例',
-    alarm_plugin_instance_tips: '请选择告警组实例',
-    alarm_group_description_tips: '请输入告警组描述',
-    alert_group_name: '告警组名称',
-    alarm_group_description: '告警组描述',
-    create_time: '创建时间',
-    update_time: '更新时间',
-    operation: '操作',
-    delete_confirm: '确定删除吗?',
-    edit: '编辑',
-    delete: '删除'
-  },
-  worker_group: {
-    create_worker_group: '创建Worker分组',
-    edit_worker_group: '编辑Worker分组',
-    search_tips: '请输入关键词',
-    operation: '操作',
-    delete_confirm: '确定删除吗?',
-    edit: '编辑',
-    delete: '删除',
-    group_name: '分组名称',
-    group_name_tips: '请输入分组名称',
-    worker_addresses: 'Worker地址',
-    worker_addresses_tips: '请选择Worker地址',
-    create_time: '创建时间',
-    update_time: '更新时间'
-  },
-  yarn_queue: {
-    create_queue: '创建队列',
-    edit_queue: '编辑队列',
-    search_tips: '请输入关键词',
-    queue_name: '队列名',
-    queue_value: '队列值',
-    create_time: '创建时间',
-    update_time: '更新时间',
-    operation: '操作',
-    edit: '编辑',
-    queue_name_tips: '请输入队列名',
-    queue_value_tips: '请输入队列值'
-  },
-  environment: {
-    create_environment: '创建环境',
-    edit_environment: '编辑环境',
-    search_tips: '请输入关键词',
-    edit: '编辑',
-    delete: '删除',
-    environment_name: '环境名称',
-    environment_config: '环境配置',
-    environment_desc: '环境描述',
-    worker_groups: 'Worker分组',
-    create_time: '创建时间',
-    update_time: '更新时间',
-    operation: '操作',
-    delete_confirm: '确定删除吗?',
-    environment_name_tips: '请输入环境名',
-    environment_config_tips: '请输入环境配置',
-    environment_description_tips: '请输入环境描述',
-    worker_group_tips: '请选择Worker分组'
-  },
-  token: {
-    create_token: '创建令牌',
-    edit_token: '编辑令牌',
-    search_tips: '请输入关键词',
-    user: '用户',
-    user_tips: '请选择用户',
-    token: '令牌',
-    token_tips: '请点击获取令牌',
-    expiration_time: '失效时间',
-    expiration_time_tips: '请选择失效时间',
-    create_time: '创建时间',
-    update_time: '更新时间',
-    operation: '操作',
-    edit: '编辑',
-    delete: '删除',
-    delete_confirm: '确定删除吗?'
-  },
-  user: {
-    user_manage: '用户管理',
-    create_user: '创建用户',
-    edit_user: '编辑用户',
-    delete_user: '删除用户',
-    delete_confirm: '确定删除吗?',
-    project: '项目',
-    resource: '资源',
-    file_resource: '文件资源',
-    udf_resource: 'UDF资源',
-    datasource: '数据源',
-    udf: 'UDF函数',
-    namespace: '命名空间',
-    authorize_project: '项目授权',
-    authorize_resource: '资源授权',
-    authorize_namespace: '命名空间授权',
-    authorize_datasource: '数据源授权',
-    authorize_udf: 'UDF函数授权',
-    username: '用户名',
-    username_exists: '用户名已存在',
-    username_tips: '请输入用户名',
-    user_password: '密码',
-    user_password_tips: '请输入包含字母和数字,长度在6~20之间的密码',
-    user_type: '用户类型',
-    ordinary_user: '普通用户',
-    administrator: '管理员',
-    tenant_code: '租户',
-    tenant_id_tips: '请选择租户',
-    queue: '队列',
-    queue_tips: '默认为租户关联队列',
-    email: '邮件',
-    email_empty_tips: '请输入邮箱',
-    emial_correct_tips: '请输入正确的邮箱格式',
-    phone: '手机',
-    phone_empty_tips: '请输入手机号码',
-    phone_correct_tips: '请输入正确的手机格式',
-    state: '状态',
-    state_enabled: '启用',
-    state_disabled: '停用',
-    create_time: '创建时间',
-    update_time: '更新时间',
-    operation: '操作',
-    edit: '编辑',
-    delete: '删除',
-    authorize: '授权',
-    save_error_msg: '保存失败,请重试',
-    delete_error_msg: '删除失败,请重试',
-    auth_error_msg: '授权失败,请重试',
-    auth_success_msg: '授权成功',
-    enable: '启用',
-    disable: '停用'
-  },
-  alarm_instance: {
-    search_input_tips: '请输入关键字',
-    alarm_instance_manage: '告警实例管理',
-    alarm_instance_name: '告警实例名称',
-    alarm_instance_name_tips: '请输入告警实例名称',
-    alarm_plugin_name: '告警插件名称',
-    create_time: '创建时间',
-    update_time: '更新时间',
-    operation: '操作',
-    edit_alarm_instance: '编辑告警实例',
-    delete: '删除',
-    edit: '编辑',
-    delete_confirm: '删除?',
-    confirm: '确定',
-    cancel: '取消',
-    submit: '提交',
-    create_alarm_instance: '创建告警实例',
-    select_plugin: '选择插件',
-    select_plugin_tips: '请选择告警插件',
-    instance_parameter_exception: '实例参数异常',
-    WebHook: 'Web钩子',
-    webHook: 'Web钩子',
-    WarningType: '告警类型',
-    IsEnableProxy: '启用代理',
-    Proxy: '代理',
-    Port: '端口',
-    User: '用户',
-    corpId: '企业ID',
-    secret: '密钥',
-    Secret: '密钥',
-    users: '群员',
-    userSendMsg: '群员信息',
-    'agentId/chatId': '应用ID或群聊ID',
-    showType: '内容展示类型',
-    receivers: '收件人',
-    receiverCcs: '抄送人',
-    serverHost: 'SMTP服务器',
-    serverPort: 'SMTP端口',
-    sender: '发件人',
-    enableSmtpAuth: '请求认证',
-    Password: '密码',
-    starttlsEnable: 'STARTTLS连接',
-    sslEnable: 'SSL连接',
-    smtpSslTrust: 'SSL证书信任',
-    url: 'URL',
-    requestType: '请求方式',
-    headerParams: '请求头',
-    bodyParams: '请求体',
-    contentField: '内容字段',
-    Keyword: '关键词',
-    userParams: '自定义参数',
-    path: '脚本路径',
-    type: '类型',
-    sendType: '发送类型',
-    username: '用户名',
-    botToken: '机器人Token',
-    chatId: '频道ID',
-    parseMode: '解析类型',
-    IntegrationKey: '集成密钥',
-    BotAccessToken: '访问令牌',
-    RoomId: '房间',
-    ToPersonId: '用户',
-    ToPersonEmail: '用户邮箱',
-    // eslint-disable-next-line quotes
-    AtSomeoneInRoom: "{'@'}房间中的成员",
-    Destination: '目的地',
-    // eslint-disable-next-line quotes
-    AtMobiles: "被{'@'}人的手机号",
-    // eslint-disable-next-line quotes
-    AtUserIds: "被{'@'}人的用户ID",
-    MsgType: '消息类型',
-    // eslint-disable-next-line quotes
-    IsAtAll: "{'@'}所有人"
-  },
-  k8s_namespace: {
-    create_namespace: '创建命名空间',
-    edit_namespace: '编辑命名空间',
-    search_tips: '请输入关键词',
-    k8s_namespace: 'K8S命名空间',
-    k8s_namespace_tips: '请输入k8s命名空间',
-    k8s_cluster: 'K8S集群',
-    k8s_cluster_tips: '请输入k8s集群',
-    owner: '负责人',
-    owner_tips: '请输入负责人',
-    tag: '标签',
-    tag_tips: '请输入标签',
-    limit_cpu: '最大CPU',
-    limit_cpu_tips: '请输入最大CPU',
-    limit_memory: '最大内存',
-    limit_memory_tips: '请输入最大内存',
-    create_time: '创建时间',
-    update_time: '更新时间',
-    operation: '操作',
-    edit: '编辑',
-    delete: '删除',
-    delete_confirm: '确定删除吗?'
-  }
-}
-
-const datasource = {
-  datasource: '数据源',
-  create_datasource: '创建数据源',
-  search_input_tips: '请输入关键字',
-  datasource_name: '数据源名称',
-  datasource_name_tips: '请输入数据源名称',
-  datasource_user_name: '所属用户',
-  datasource_type: '数据源类型',
-  datasource_parameter: '数据源参数',
-  description: '描述',
-  description_tips: '请输入描述',
-  create_time: '创建时间',
-  update_time: '更新时间',
-  operation: '操作',
-  click_to_view: '点击查看',
-  delete: '删除',
-  confirm: '确定',
-  delete_confirm: '删除?',
-  cancel: '取消',
-  create: '创建',
-  edit: '编辑',
-  success: '成功',
-  test_connect: '测试连接',
-  ip: 'IP主机名',
-  ip_tips: '请输入IP主机名',
-  port: '端口',
-  port_tips: '请输入端口',
-  database_name: '数据库名',
-  database_name_tips: '请输入数据库名',
-  oracle_connect_type: '服务名或SID',
-  oracle_connect_type_tips: '请选择服务名或SID',
-  oracle_service_name: '服务名',
-  oracle_sid: 'SID',
-  jdbc_connect_parameters: 'jdbc连接参数',
-  principal_tips: '请输入Principal',
-  krb5_conf_tips: '请输入kerberos认证参数 java.security.krb5.conf',
-  keytab_username_tips: '请输入kerberos认证参数 login.user.keytab.username',
-  keytab_path_tips: '请输入kerberos认证参数 login.user.keytab.path',
-  format_tips: '请输入格式为',
-  connection_parameter: '连接参数',
-  user_name: '用户名',
-  user_name_tips: '请输入用户名',
-  user_password: '密码',
-  user_password_tips: '请输入密码',
-  jdbc_format_tips: 'jdbc连接参数不是一个正确的JSON格式'
-}
-
-const data_quality = {
-  task_result: {
-    task_name: '任务名称',
-    workflow_instance: '工作流实例',
-    rule_type: '规则类型',
-    rule_name: '规则名称',
-    state: '状态',
-    actual_value: '实际值',
-    excepted_value: '期望值',
-    check_type: '检测类型',
-    operator: '操作符',
-    threshold: '阈值',
-    failure_strategy: '失败策略',
-    excepted_value_type: '期望值类型',
-    error_output_path: '错误数据路径',
-    username: '用户名',
-    create_time: '创建时间',
-    update_time: '更新时间',
-    undone: '未完成',
-    success: '成功',
-    failure: '失败',
-    single_table: '单表检测',
-    single_table_custom_sql: '自定义SQL',
-    multi_table_accuracy: '多表准确性',
-    multi_table_comparison: '两表值对比',
-    expected_and_actual_or_expected: '(期望值-实际值)/实际值 x 100%',
-    expected_and_actual: '期望值-实际值',
-    actual_and_expected: '实际值-期望值',
-    actual_or_expected: '实际值/期望值 x 100%'
-  },
-  rule: {
-    actions: '操作',
-    name: '规则名称',
-    type: '规则类型',
-    username: '用户名',
-    create_time: '创建时间',
-    update_time: '更新时间',
-    input_item: '规则输入项',
-    view_input_item: '查看规则输入项信息',
-    input_item_title: '输入项标题',
-    input_item_placeholder: '输入项占位符',
-    input_item_type: '输入项类型',
-    src_connector_type: '源数据类型',
-    src_datasource_id: '源数据源',
-    src_table: '源数据表',
-    src_filter: '源表过滤条件',
-    src_field: '源表检测列',
-    statistics_name: '实际值名',
-    check_type: '校验方式',
-    operator: '校验操作符',
-    threshold: '阈值',
-    failure_strategy: '失败策略',
-    target_connector_type: '目标数据类型',
-    target_datasource_id: '目标数据源',
-    target_table: '目标数据表',
-    target_filter: '目标表过滤条件',
-    mapping_columns: 'ON语句',
-    statistics_execute_sql: '实际值计算SQL',
-    comparison_name: '期望值名',
-    comparison_execute_sql: '期望值计算SQL',
-    comparison_type: '期望值类型',
-    writer_connector_type: '输出数据类型',
-    writer_datasource_id: '输出数据源',
-    target_field: '目标表检测列',
-    field_length: '字段长度限制',
-    logic_operator: '逻辑操作符',
-    regexp_pattern: '正则表达式',
-    deadline: '截止时间',
-    datetime_format: '时间格式',
-    enum_list: '枚举值列表',
-    begin_time: '起始时间',
-    fix_value: '固定值',
-    null_check: '空值检测',
-    custom_sql: '自定义SQL',
-    single_table: '单表检测',
-    multi_table_accuracy: '多表准确性',
-    multi_table_value_comparison: '两表值比对',
-    field_length_check: '字段长度校验',
-    uniqueness_check: '唯一性校验',
-    regexp_check: '正则表达式',
-    timeliness_check: '及时性校验',
-    enumeration_check: '枚举值校验',
-    table_count_check: '表行数校验',
-    all: '全部',
-    FixValue: '固定值',
-    DailyAvg: '日均值',
-    WeeklyAvg: '周均值',
-    MonthlyAvg: '月均值',
-    Last7DayAvg: '最近7天均值',
-    Last30DayAvg: '最近30天均值',
-    SrcTableTotalRows: '源表总行数',
-    TargetTableTotalRows: '目标表总行数'
-  }
-}
-const crontab = {
-  second: '秒',
-  minute: '分',
-  hour: '时',
-  day: '天',
-  month: '月',
-  year: '年',
-  monday: '星期一',
-  tuesday: '星期二',
-  wednesday: '星期三',
-  thursday: '星期四',
-  friday: '星期五',
-  saturday: '星期六',
-  sunday: '星期天',
-  every_second: '每一秒钟',
-  every: '每隔',
-  second_carried_out: '秒执行 从',
-  second_start: '秒开始',
-  specific_second: '具体秒数(可多选)',
-  specific_second_tip: '请选择具体秒数',
-  cycle_from: '周期从',
-  to: '到',
-  every_minute: '每一分钟',
-  minute_carried_out: '分执行 从',
-  minute_start: '分开始',
-  specific_minute: '具体分钟数(可多选)',
-  specific_minute_tip: '请选择具体分钟数',
-  every_hour: '每一小时',
-  hour_carried_out: '小时执行 从',
-  hour_start: '小时开始',
-  specific_hour: '具体小时数(可多选)',
-  specific_hour_tip: '请选择具体小时数',
-  every_day: '每一天',
-  week_carried_out: '周执行 从',
-  start: '开始',
-  day_carried_out: '天执行 从',
-  day_start: '天开始',
-  specific_week: '具体星期几(可多选)',
-  specific_week_tip: '请选择具体周几',
-  specific_day: '具体天数(可多选)',
-  specific_day_tip: '请选择具体天数',
-  last_day_of_month: '在这个月的最后一天',
-  last_work_day_of_month: '在这个月的最后一个工作日',
-  last_of_month: '在这个月的最后一个',
-  before_end_of_month: '在本月底前',
-  recent_business_day_to_month: '最近的工作日(周一至周五)至本月',
-  in_this_months: '在这个月的第',
-  every_month: '每一月',
-  month_carried_out: '月执行 从',
-  month_start: '月开始',
-  specific_month: '具体月数(可多选)',
-  specific_month_tip: '请选择具体月数',
-  every_year: '每一年',
-  year_carried_out: '年执行 从',
-  year_start: '年开始',
-  specific_year: '具体年数(可多选)',
-  specific_year_tip: '请选择具体年数',
-  one_hour: '小时',
-  one_day: '日'
-}
-
-export default {
-  login,
-  modal,
-  theme,
-  userDropdown,
-  menu,
-  home,
-  password,
-  profile,
-  monitor,
-  resource,
-  project,
-  security,
-  datasource,
-  data_quality,
-  crontab
-}
diff --git a/dolphinscheduler-ui/src/locales/zh_CN/crontab.ts b/dolphinscheduler-ui/src/locales/zh_CN/crontab.ts
new file mode 100644
index 0000000000..607cd30a71
--- /dev/null
+++ b/dolphinscheduler-ui/src/locales/zh_CN/crontab.ts
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export default {
+  second: '秒',
+  minute: '分',
+  hour: '时',
+  day: '天',
+  month: '月',
+  year: '年',
+  monday: '星期一',
+  tuesday: '星期二',
+  wednesday: '星期三',
+  thursday: '星期四',
+  friday: '星期五',
+  saturday: '星期六',
+  sunday: '星期天',
+  every_second: '每一秒钟',
+  every: '每隔',
+  second_carried_out: '秒执行 从',
+  second_start: '秒开始',
+  specific_second: '具体秒数(可多选)',
+  specific_second_tip: '请选择具体秒数',
+  cycle_from: '周期从',
+  to: '到',
+  every_minute: '每一分钟',
+  minute_carried_out: '分执行 从',
+  minute_start: '分开始',
+  specific_minute: '具体分钟数(可多选)',
+  specific_minute_tip: '请选择具体分钟数',
+  every_hour: '每一小时',
+  hour_carried_out: '小时执行 从',
+  hour_start: '小时开始',
+  specific_hour: '具体小时数(可多选)',
+  specific_hour_tip: '请选择具体小时数',
+  every_day: '每一天',
+  week_carried_out: '周执行 从',
+  start: '开始',
+  day_carried_out: '天执行 从',
+  day_start: '天开始',
+  specific_week: '具体星期几(可多选)',
+  specific_week_tip: '请选择具体周几',
+  specific_day: '具体天数(可多选)',
+  specific_day_tip: '请选择具体天数',
+  last_day_of_month: '在这个月的最后一天',
+  last_work_day_of_month: '在这个月的最后一个工作日',
+  last_of_month: '在这个月的最后一个',
+  before_end_of_month: '在本月底前',
+  recent_business_day_to_month: '最近的工作日(周一至周五)至本月',
+  in_this_months: '在这个月的第',
+  every_month: '每一月',
+  month_carried_out: '月执行 从',
+  month_start: '月开始',
+  specific_month: '具体月数(可多选)',
+  specific_month_tip: '请选择具体月数',
+  every_year: '每一年',
+  year_carried_out: '年执行 从',
+  year_start: '年开始',
+  specific_year: '具体年数(可多选)',
+  specific_year_tip: '请选择具体年数',
+  one_hour: '小时',
+  one_day: '日'
+}
\ No newline at end of file
diff --git a/dolphinscheduler-ui/src/locales/zh_CN/data-quality.ts b/dolphinscheduler-ui/src/locales/zh_CN/data-quality.ts
new file mode 100644
index 0000000000..ca1bbc843e
--- /dev/null
+++ b/dolphinscheduler-ui/src/locales/zh_CN/data-quality.ts
@@ -0,0 +1,111 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export default {
+  task_result: {
+    task_name: '任务名称',
+    workflow_instance: '工作流实例',
+    rule_type: '规则类型',
+    rule_name: '规则名称',
+    state: '状态',
+    actual_value: '实际值',
+    excepted_value: '期望值',
+    check_type: '检测类型',
+    operator: '操作符',
+    threshold: '阈值',
+    failure_strategy: '失败策略',
+    excepted_value_type: '期望值类型',
+    error_output_path: '错误数据路径',
+    username: '用户名',
+    create_time: '创建时间',
+    update_time: '更新时间',
+    undone: '未完成',
+    success: '成功',
+    failure: '失败',
+    single_table: '单表检测',
+    single_table_custom_sql: '自定义SQL',
+    multi_table_accuracy: '多表准确性',
+    multi_table_comparison: '两表值对比',
+    expected_and_actual_or_expected: '(期望值-实际值)/实际值 x 100%',
+    expected_and_actual: '期望值-实际值',
+    actual_and_expected: '实际值-期望值',
+    actual_or_expected: '实际值/期望值 x 100%'
+  },
+  rule: {
+    actions: '操作',
+    name: '规则名称',
+    type: '规则类型',
+    username: '用户名',
+    create_time: '创建时间',
+    update_time: '更新时间',
+    input_item: '规则输入项',
+    view_input_item: '查看规则输入项信息',
+    input_item_title: '输入项标题',
+    input_item_placeholder: '输入项占位符',
+    input_item_type: '输入项类型',
+    src_connector_type: '源数据类型',
+    src_datasource_id: '源数据源',
+    src_table: '源数据表',
+    src_filter: '源表过滤条件',
+    src_field: '源表检测列',
+    statistics_name: '实际值名',
+    check_type: '校验方式',
+    operator: '校验操作符',
+    threshold: '阈值',
+    failure_strategy: '失败策略',
+    target_connector_type: '目标数据类型',
+    target_datasource_id: '目标数据源',
+    target_table: '目标数据表',
+    target_filter: '目标表过滤条件',
+    mapping_columns: 'ON语句',
+    statistics_execute_sql: '实际值计算SQL',
+    comparison_name: '期望值名',
+    comparison_execute_sql: '期望值计算SQL',
+    comparison_type: '期望值类型',
+    writer_connector_type: '输出数据类型',
+    writer_datasource_id: '输出数据源',
+    target_field: '目标表检测列',
+    field_length: '字段长度限制',
+    logic_operator: '逻辑操作符',
+    regexp_pattern: '正则表达式',
+    deadline: '截止时间',
+    datetime_format: '时间格式',
+    enum_list: '枚举值列表',
+    begin_time: '起始时间',
+    fix_value: '固定值',
+    null_check: '空值检测',
+    custom_sql: '自定义SQL',
+    single_table: '单表检测',
+    multi_table_accuracy: '多表准确性',
+    multi_table_value_comparison: '两表值比对',
+    field_length_check: '字段长度校验',
+    uniqueness_check: '唯一性校验',
+    regexp_check: '正则表达式',
+    timeliness_check: '及时性校验',
+    enumeration_check: '枚举值校验',
+    table_count_check: '表行数校验',
+    all: '全部',
+    FixValue: '固定值',
+    DailyAvg: '日均值',
+    WeeklyAvg: '周均值',
+    MonthlyAvg: '月均值',
+    Last7DayAvg: '最近7天均值',
+    Last30DayAvg: '最近30天均值',
+    SrcTableTotalRows: '源表总行数',
+    TargetTableTotalRows: '目标表总行数'
+  }
+}
\ No newline at end of file
diff --git a/dolphinscheduler-ui/src/locales/zh_CN/datasource.ts b/dolphinscheduler-ui/src/locales/zh_CN/datasource.ts
new file mode 100644
index 0000000000..105b04a13a
--- /dev/null
+++ b/dolphinscheduler-ui/src/locales/zh_CN/datasource.ts
@@ -0,0 +1,63 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export default {
+  datasource: '数据源',
+  create_datasource: '创建数据源',
+  search_input_tips: '请输入关键字',
+  datasource_name: '数据源名称',
+  datasource_name_tips: '请输入数据源名称',
+  datasource_user_name: '所属用户',
+  datasource_type: '数据源类型',
+  datasource_parameter: '数据源参数',
+  description: '描述',
+  description_tips: '请输入描述',
+  create_time: '创建时间',
+  update_time: '更新时间',
+  operation: '操作',
+  click_to_view: '点击查看',
+  delete: '删除',
+  confirm: '确定',
+  delete_confirm: '删除?',
+  cancel: '取消',
+  create: '创建',
+  edit: '编辑',
+  success: '成功',
+  test_connect: '测试连接',
+  ip: 'IP主机名',
+  ip_tips: '请输入IP主机名',
+  port: '端口',
+  port_tips: '请输入端口',
+  database_name: '数据库名',
+  database_name_tips: '请输入数据库名',
+  oracle_connect_type: '服务名或SID',
+  oracle_connect_type_tips: '请选择服务名或SID',
+  oracle_service_name: '服务名',
+  oracle_sid: 'SID',
+  jdbc_connect_parameters: 'jdbc连接参数',
+  principal_tips: '请输入Principal',
+  krb5_conf_tips: '请输入kerberos认证参数 java.security.krb5.conf',
+  keytab_username_tips: '请输入kerberos认证参数 login.user.keytab.username',
+  keytab_path_tips: '请输入kerberos认证参数 login.user.keytab.path',
+  format_tips: '请输入格式为',
+  connection_parameter: '连接参数',
+  user_name: '用户名',
+  user_name_tips: '请输入用户名',
+  user_password: '密码',
+  user_password_tips: '请输入密码',
+  jdbc_format_tips: 'jdbc连接参数不是一个正确的JSON格式'
+}
\ No newline at end of file
diff --git a/dolphinscheduler-ui/src/locales/index.ts b/dolphinscheduler-ui/src/locales/zh_CN/home.ts
similarity index 52%
copy from dolphinscheduler-ui/src/locales/index.ts
copy to dolphinscheduler-ui/src/locales/zh_CN/home.ts
index 31a3cd9835..399215dfc2 100644
--- a/dolphinscheduler-ui/src/locales/index.ts
+++ b/dolphinscheduler-ui/src/locales/zh_CN/home.ts
@@ -15,18 +15,28 @@
  * limitations under the License.
  */
 
-import { createI18n } from 'vue-i18n'
-import zh_CN from './modules/zh_CN'
-import en_US from './modules/en_US'
-
-const i18n = createI18n({
-  legacy: false,
-  globalInjection: true,
-  locale: 'zh_CN',
-  messages: {
-    zh_CN,
-    en_US
-  }
-})
-
-export default i18n
+export default {
+  task_state_statistics: '任务状态统计',
+  process_state_statistics: '流程状态统计',
+  process_definition_statistics: '流程定义统计',
+  number: '数量',
+  state: '状态',
+  submitted_success: '提交成功',
+  running_execution: '正在运行',
+  ready_pause: '准备暂停',
+  pause: '暂停',
+  ready_stop: '准备停止',
+  stop: '停止',
+  failure: '失败',
+  success: '成功',
+  need_fault_tolerance: '需要容错',
+  kill: 'KILL',
+  waiting_thread: '等待线程',
+  waiting_depend: '等待依赖完成',
+  delay_execution: '延时执行',
+  forced_success: '强制成功',
+  serial_wait: '串行等待',
+  dispatch: '派发',
+  ready_block: '准备阻断',
+  block: '阻断'
+}
\ No newline at end of file
diff --git a/dolphinscheduler-ui/src/locales/zh_CN/index.ts b/dolphinscheduler-ui/src/locales/zh_CN/index.ts
new file mode 100644
index 0000000000..132fd14f75
--- /dev/null
+++ b/dolphinscheduler-ui/src/locales/zh_CN/index.ts
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import crontab from '@/locales/zh_CN/crontab'
+import data_quality from '@/locales/zh_CN/data-quality'
+import datasource from '@/locales/zh_CN/datasource'
+import home from '@/locales/zh_CN/home'
+import login from '@/locales/zh_CN/login'
+import menu from '@/locales/zh_CN/menu'
+import modal from '@/locales/zh_CN/modal'
+import monitor from '@/locales/zh_CN/monitor'
+import password from '@/locales/zh_CN/password'
+import profile from '@/locales/zh_CN/profile'
+import project from '@/locales/zh_CN/project'
+import resource from '@/locales/zh_CN/resource'
+import security from '@/locales/zh_CN/security'
+import theme from '@/locales/zh_CN/theme'
+import user_dropdown from '@/locales/zh_CN/user-dropdown'
+
+export default {
+  login,
+  modal,
+  theme,
+  user_dropdown,
+  menu,
+  home,
+  password,
+  profile,
+  monitor,
+  resource,
+  project,
+  security,
+  datasource,
+  data_quality,
+  crontab
+}
diff --git a/dolphinscheduler-ui/src/locales/index.ts b/dolphinscheduler-ui/src/locales/zh_CN/login.ts
similarity index 75%
copy from dolphinscheduler-ui/src/locales/index.ts
copy to dolphinscheduler-ui/src/locales/zh_CN/login.ts
index 31a3cd9835..656af40510 100644
--- a/dolphinscheduler-ui/src/locales/index.ts
+++ b/dolphinscheduler-ui/src/locales/zh_CN/login.ts
@@ -15,18 +15,11 @@
  * limitations under the License.
  */
 
-import { createI18n } from 'vue-i18n'
-import zh_CN from './modules/zh_CN'
-import en_US from './modules/en_US'
-
-const i18n = createI18n({
-  legacy: false,
-  globalInjection: true,
-  locale: 'zh_CN',
-  messages: {
-    zh_CN,
-    en_US
-  }
-})
-
-export default i18n
+export default {
+  test: '测试',
+  userName: '用户名',
+  userName_tips: '请输入用户名',
+  userPassword: '密码',
+  userPassword_tips: '请输入密码',
+  login: '登录'
+}
\ No newline at end of file
diff --git a/dolphinscheduler-ui/src/locales/zh_CN/menu.ts b/dolphinscheduler-ui/src/locales/zh_CN/menu.ts
new file mode 100644
index 0000000000..59e9420b0c
--- /dev/null
+++ b/dolphinscheduler-ui/src/locales/zh_CN/menu.ts
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export default {
+  home: '首页',
+  project: '项目管理',
+  resources: '资源中心',
+  datasource: '数据源中心',
+  monitor: '监控中心',
+  security: '安全中心',
+  project_overview: '项目概览',
+  workflow_relation: '工作流关系',
+  workflow: '工作流',
+  workflow_definition: '工作流定义',
+  workflow_instance: '工作流实例',
+  task: '任务',
+  task_instance: '任务实例',
+  task_definition: '任务定义',
+  file_manage: '文件管理',
+  udf_manage: 'UDF管理',
+  resource_manage: '资源管理',
+  function_manage: '函数管理',
+  service_manage: '服务管理',
+  master: 'Master',
+  worker: 'Worker',
+  db: 'DB',
+  statistical_manage: '统计管理',
+  statistics: 'Statistics',
+  audit_log: '审计日志',
+  tenant_manage: '租户管理',
+  user_manage: '用户管理',
+  alarm_group_manage: '告警组管理',
+  alarm_instance_manage: '告警实例管理',
+  worker_group_manage: 'Worker分组管理',
+  yarn_queue_manage: 'Yarn队列管理',
+  environment_manage: '环境管理',
+  k8s_namespace_manage: 'K8S命名空间管理',
+  token_manage: '令牌管理',
+  task_group_manage: '任务组管理',
+  task_group_option: '任务组配置',
+  task_group_queue: '任务组队列',
+  data_quality: '数据质量',
+  task_result: '任务结果',
+  rule: '规则管理'
+}
\ No newline at end of file
diff --git a/dolphinscheduler-ui/src/locales/index.ts b/dolphinscheduler-ui/src/locales/zh_CN/modal.ts
similarity index 75%
copy from dolphinscheduler-ui/src/locales/index.ts
copy to dolphinscheduler-ui/src/locales/zh_CN/modal.ts
index 31a3cd9835..6e78e45975 100644
--- a/dolphinscheduler-ui/src/locales/index.ts
+++ b/dolphinscheduler-ui/src/locales/zh_CN/modal.ts
@@ -15,18 +15,7 @@
  * limitations under the License.
  */
 
-import { createI18n } from 'vue-i18n'
-import zh_CN from './modules/zh_CN'
-import en_US from './modules/en_US'
-
-const i18n = createI18n({
-  legacy: false,
-  globalInjection: true,
-  locale: 'zh_CN',
-  messages: {
-    zh_CN,
-    en_US
-  }
-})
-
-export default i18n
+export default {
+  cancel: '取消',
+  confirm: '确定'
+}
\ No newline at end of file
diff --git a/dolphinscheduler-ui/src/locales/zh_CN/monitor.ts b/dolphinscheduler-ui/src/locales/zh_CN/monitor.ts
new file mode 100644
index 0000000000..4b2b4f0c67
--- /dev/null
+++ b/dolphinscheduler-ui/src/locales/zh_CN/monitor.ts
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export default {
+  master: {
+    cpu_usage: '处理器使用量',
+    memory_usage: '内存使用量',
+    load_average: '平均负载量',
+    create_time: '创建时间',
+    last_heartbeat_time: '最后心跳时间',
+    directory_detail: '目录详情',
+    host: '主机',
+    directory: '注册目录',
+    master_no_data_result_title: 'Master节点不存在',
+    master_no_data_result_desc:
+      '目前没有任何Master节点,请先创建Master节点,再访问该页面'
+  },
+  worker: {
+    cpu_usage: '处理器使用量',
+    memory_usage: '内存使用量',
+    load_average: '平均负载量',
+    create_time: '创建时间',
+    last_heartbeat_time: '最后心跳时间',
+    directory_detail: '目录详情',
+    host: '主机',
+    directory: '注册目录',
+    worker_no_data_result_title: 'Worker节点不存在',
+    worker_no_data_result_desc:
+      '目前没有任何Worker节点,请先创建Worker节点,再访问该页面'
+  },
+  db: {
+    health_state: '健康状态',
+    max_connections: '最大连接数',
+    threads_connections: '当前连接数',
+    threads_running_connections: '数据库当前活跃连接数'
+  },
+  statistics: {
+    command_number_of_waiting_for_running: '待执行的命令数',
+    failure_command_number: '执行失败的命令数'
+  },
+  audit_log: {
+    user_name: '用户名称',
+    resource_type: '资源类型',
+    project_name: '项目名称',
+    operation_type: '操作类型',
+    create_time: '创建时间',
+    start_time: '开始时间',
+    end_time: '结束时间',
+    user_audit: '用户管理审计',
+    project_audit: '项目管理审计',
+    create: '创建',
+    update: '更新',
+    delete: '删除',
+    read: '读取'
+  }
+}
\ No newline at end of file
diff --git a/dolphinscheduler-ui/src/locales/index.ts b/dolphinscheduler-ui/src/locales/zh_CN/password.ts
similarity index 73%
copy from dolphinscheduler-ui/src/locales/index.ts
copy to dolphinscheduler-ui/src/locales/zh_CN/password.ts
index 31a3cd9835..543fe6cbe8 100644
--- a/dolphinscheduler-ui/src/locales/index.ts
+++ b/dolphinscheduler-ui/src/locales/zh_CN/password.ts
@@ -15,18 +15,12 @@
  * limitations under the License.
  */
 
-import { createI18n } from 'vue-i18n'
-import zh_CN from './modules/zh_CN'
-import en_US from './modules/en_US'
-
-const i18n = createI18n({
-  legacy: false,
-  globalInjection: true,
-  locale: 'zh_CN',
-  messages: {
-    zh_CN,
-    en_US
-  }
-})
-
-export default i18n
+export default {
+  edit_password: '修改密码',
+  password: '密码',
+  confirm_password: '确认密码',
+  password_tips: '请输入密码',
+  confirm_password_tips: '请输入确认密码',
+  two_password_entries_are_inconsistent: '两次密码输入不一致',
+  submit: '提交'
+}
\ No newline at end of file
diff --git a/dolphinscheduler-ui/src/locales/index.ts b/dolphinscheduler-ui/src/locales/zh_CN/profile.ts
similarity index 55%
copy from dolphinscheduler-ui/src/locales/index.ts
copy to dolphinscheduler-ui/src/locales/zh_CN/profile.ts
index 31a3cd9835..9e86f89414 100644
--- a/dolphinscheduler-ui/src/locales/index.ts
+++ b/dolphinscheduler-ui/src/locales/zh_CN/profile.ts
@@ -15,18 +15,26 @@
  * limitations under the License.
  */
 
-import { createI18n } from 'vue-i18n'
-import zh_CN from './modules/zh_CN'
-import en_US from './modules/en_US'
-
-const i18n = createI18n({
-  legacy: false,
-  globalInjection: true,
-  locale: 'zh_CN',
-  messages: {
-    zh_CN,
-    en_US
-  }
-})
-
-export default i18n
+export default {
+  profile: '用户信息',
+  edit: '编辑',
+  username: '用户名',
+  email: '邮箱',
+  phone: '手机',
+  state: '状态',
+  permission: '权限',
+  create_time: '创建时间',
+  update_time: '更新时间',
+  administrator: '管理员',
+  ordinary_user: '普通用户',
+  edit_profile: '编辑用户',
+  username_tips: '请输入用户名',
+  email_tips: '请输入邮箱',
+  email_correct_tips: '请输入正确格式的邮箱',
+  phone_tips: '请输入手机号',
+  state_tips: '请选择状态',
+  enable: '启用',
+  disable: '禁用',
+  timezone_success: '时区更新成功',
+  please_select_timezone: '请选择时区'
+}
\ No newline at end of file
diff --git a/dolphinscheduler-ui/src/locales/zh_CN/project.ts b/dolphinscheduler-ui/src/locales/zh_CN/project.ts
new file mode 100644
index 0000000000..721e31357a
--- /dev/null
+++ b/dolphinscheduler-ui/src/locales/zh_CN/project.ts
@@ -0,0 +1,614 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export default {
+  list: {
+    create_project: '创建项目',
+    edit_project: '编辑项目',
+    project_list: '项目列表',
+    project_tips: '请输入项目名称',
+    description_tips: '请输入项目描述',
+    username_tips: '请输入所属用户',
+    project_name: '项目名称',
+    project_description: '项目描述',
+    owned_users: '所属用户',
+    workflow_define_count: '工作流定义数',
+    process_instance_running_count: '正在运行的流程数',
+    description: '描述',
+    create_time: '创建时间',
+    update_time: '更新时间',
+    operation: '操作',
+    edit: '编辑',
+    delete: '删除',
+    confirm: '确定',
+    cancel: '取消',
+    delete_confirm: '确定删除吗?'
+  },
+  workflow: {
+    workflow_relation: '工作流关系',
+    create_workflow: '创建工作流',
+    import_workflow: '导入工作流',
+    workflow_name: '工作流名称',
+    current_selection: '当前选择',
+    online: '已上线',
+    offline: '已下线',
+    refresh: '刷新',
+    show_hide_label: '显示 / 隐藏标签',
+    workflow_offline: '工作流下线',
+    schedule_offline: '调度下线',
+    schedule_start_time: '定时开始时间',
+    schedule_end_time: '定时结束时间',
+    crontab_expression: 'Crontab',
+    workflow_publish_status: '工作流上线状态',
+    schedule_publish_status: '定时状态',
+    workflow_definition: '工作流定义',
+    workflow_instance: '工作流实例',
+    status: '状态',
+    create_time: '创建时间',
+    update_time: '更新时间',
+    description: '描述',
+    create_user: '创建用户',
+    modify_user: '修改用户',
+    operation: '操作',
+    edit: '编辑',
+    confirm: '确定',
+    cancel: '取消',
+    start: '运行',
+    timing: '定时',
+    timezone: '时区',
+    up_line: '上线',
+    down_line: '下线',
+    copy_workflow: '复制工作流',
+    cron_manage: '定时管理',
+    delete: '删除',
+    tree_view: '工作流树形图',
+    tree_limit: '限制大小',
+    export: '导出',
+    batch_copy: '批量复制',
+    version_info: '版本信息',
+    version: '版本',
+    file_upload: '文件上传',
+    upload_file: '上传文件',
+    upload: '上传',
+    file_name: '文件名称',
+    success: '成功',
+    set_parameters_before_starting: '启动前请先设置参数',
+    set_parameters_before_timing: '定时前请先设置参数',
+    start_and_stop_time: '起止时间',
+    next_five_execution_times: '接下来五次执行时间',
+    execute_time: '执行时间',
+    failure_strategy: '失败策略',
+    notification_strategy: '通知策略',
+    workflow_priority: '流程优先级',
+    worker_group: 'Worker分组',
+    environment_name: '环境名称',
+    alarm_group: '告警组',
+    complement_data: '补数',
+    startup_parameter: '启动参数',
+    whether_dry_run: '是否空跑',
+    continue: '继续',
+    end: '结束',
+    none_send: '都不发',
+    success_send: '成功发',
+    failure_send: '失败发',
+    all_send: '成功或失败都发',
+    whether_complement_data: '是否是补数',
+    schedule_date: '调度日期',
+    mode_of_execution: '执行方式',
+    serial_execution: '串行执行',
+    parallel_execution: '并行执行',
+    parallelism: '并行度',
+    custom_parallelism: '自定义并行度',
+    please_enter_parallelism: '请输入并行度',
+    please_choose: '请选择',
+    start_time: '开始时间',
+    end_time: '结束时间',
+    crontab: 'Crontab',
+    delete_confirm: '确定删除吗?',
+    enter_name_tips: '请输入名称',
+    switch_version: '切换到该版本',
+    confirm_switch_version: '确定切换到该版本吗?',
+    current_version: '当前版本',
+    run_type: '运行类型',
+    scheduling_time: '调度时间',
+    duration: '运行时长',
+    run_times: '运行次数',
+    fault_tolerant_sign: '容错标识',
+    dry_run_flag: '空跑标识',
+    executor: '执行用户',
+    host: '主机',
+    start_process: '启动工作流',
+    execute_from_the_current_node: '从当前节点开始执行',
+    recover_tolerance_fault_process: '恢复被容错的工作流',
+    resume_the_suspension_process: '恢复运行流程',
+    execute_from_the_failed_nodes: '从失败节点开始执行',
+    scheduling_execution: '调度执行',
+    rerun: '重跑',
+    stop: '停止',
+    pause: '暂停',
+    recovery_waiting_thread: '恢复等待线程',
+    recover_serial_wait: '串行恢复',
+    recovery_suspend: '恢复运行',
+    recovery_failed: '重跑失败任务',
+    gantt: '甘特图',
+    name: '名称',
+    all_status: '全部状态',
+    submit_success: '提交成功',
+    running: '正在运行',
+    ready_to_pause: '准备暂停',
+    ready_to_stop: '准备停止',
+    failed: '失败',
+    need_fault_tolerance: '需要容错',
+    kill: 'Kill',
+    waiting_for_thread: '等待线程',
+    waiting_for_dependence: '等待依赖',
+    waiting_for_dependency_to_complete: '等待依赖完成',
+    delay_execution: '延时执行',
+    forced_success: '强制成功',
+    serial_wait: '串行等待',
+    dispatch: '派发',
+    pending: '挂起',
+    executing: '正在执行',
+    startup_type: '启动类型',
+    complement_range: '补数范围',
+    parameters_variables: '参数变量',
+    global_parameters: '全局参数',
+    local_parameters: '局部参数',
+    type: '类型',
+    retry_count: '重试次数',
+    submit_time: '提交时间',
+    refresh_status_succeeded: '刷新状态成功',
+    view_log: '查看日志',
+    update_log_success: '更新日志成功',
+    no_more_log: '暂无更多日志',
+    no_log: '暂无日志',
+    loading_log: '正在努力请求日志中...',
+    close: '关闭',
+    download_log: '下载日志',
+    refresh_log: '刷新日志',
+    enter_full_screen: '进入全屏',
+    cancel_full_screen: '取消全屏',
+    task_state: '任务状态',
+    mode_of_dependent: '依赖模式',
+    open: '打开',
+    project_name_required: '项目名称必填',
+    related_items: '关联项目',
+    project_name: '项目名称',
+    project_tips: '请选择项目',
+    workflow_relation_no_data_result_title: '工作流关系不存在',
+    workflow_relation_no_data_result_desc:
+      '目前没有任何工作流,请先创建工作流,再访问该页面'
+  },
+  task: {
+    cancel_full_screen: '取消全屏',
+    enter_full_screen: '全屏',
+    current_task_settings: '当前任务设置',
+    online: '已上线',
+    offline: '已下线',
+    task_name: '任务名称',
+    task_type: '任务类型',
+    create_task: '创建任务',
+    workflow_instance: '工作流实例',
+    workflow_name: '工作流名称',
+    workflow_name_tips: '请选择工作流名称',
+    workflow_state: '工作流状态',
+    version: '版本',
+    current_version: '当前版本',
+    switch_version: '切换到该版本',
+    confirm_switch_version: '确定切换到该版本吗?',
+    description: '描述',
+    move: '移动',
+    upstream_tasks: '上游任务',
+    executor: '执行用户',
+    node_type: '节点类型',
+    state: '状态',
+    submit_time: '提交时间',
+    start_time: '开始时间',
+    create_time: '创建时间',
+    update_time: '更新时间',
+    end_time: '结束时间',
+    duration: '运行时间',
+    retry_count: '重试次数',
+    dry_run_flag: '空跑标识',
+    host: '主机',
+    operation: '操作',
+    edit: '编辑',
+    delete: '删除',
+    delete_confirm: '确定删除吗?',
+    forced_success: '强制成功',
+    view_log: '查看日志',
+    download_log: '下载日志',
+    refresh: '刷新'
+  },
+  dag: {
+    create: '创建工作流',
+    search: '搜索',
+    download_png: '下载工作流图片',
+    fullscreen_open: '全屏',
+    fullscreen_close: '退出全屏',
+    save: '保存',
+    close: '关闭',
+    format: '格式化',
+    refresh_dag_status: '刷新DAG状态',
+    layout_type: '布局类型',
+    grid_layout: '网格布局',
+    dagre_layout: '层次布局',
+    rows: '行数',
+    cols: '列数',
+    copy_success: '复制成功',
+    workflow_name: '工作流名称',
+    description: '描述',
+    tenant: '租户',
+    timeout_alert: '超时告警',
+    process_execute_type: '执行策略',
+    parallel: '并行',
+    serial_wait: '串行等待',
+    serial_discard: '串行抛弃',
+    serial_priority: '串行优先',
+    recover_serial_wait: '串行恢复',
+    global_variables: '全局变量',
+    basic_info: '基本信息',
+    minute: '分',
+    key: '键',
+    value: '值',
+    success: '成功',
+    delete_cell: '删除选中的线或节点',
+    online_directly: '是否上线工作流定义',
+    update_directly: '是否更新工作流定义',
+    dag_name_empty: 'DAG图名称不能为空',
+    positive_integer: '请输入大于 0 的正整数',
+    prop_empty: '自定义参数prop不能为空',
+    prop_repeat: 'prop中有重复',
+    node_not_created: '未创建节点保存失败',
+    copy_name: '复制名称',
+    view_variables: '查看变量',
+    startup_parameter: '启动参数',
+    online: '已上线'
+  },
+  node: {
+    return_back: '返回上一节点',
+    current_node_settings: '当前节点设置',
+    instructions: '使用说明',
+    view_history: '查看历史',
+    view_log: '查看日志',
+    enter_this_child_node: '进入该子节点',
+    name: '节点名称',
+    task_name: '任务名称',
+    task_name_tips: '任务名称(必填)',
+    name_tips: '请输入名称(必填)',
+    task_type: '任务类型',
+    task_type_tips: '请选择任务类型(必选)',
+    workflow_name: '工作流名称',
+    workflow_name_tips: '请选择工作流(必选)',
+    child_node: '子节点',
+    child_node_tips: '请选择子节点(必选)',
+    run_flag: '运行标志',
+    normal: '正常',
+    prohibition_execution: '禁止执行',
+    description: '描述',
+    description_tips: '请输入描述',
+    task_priority: '任务优先级',
+    worker_group: 'Worker分组',
+    worker_group_tips: '该Worker分组已经不存在,请选择正确的Worker分组!',
+    environment_name: '环境名称',
+    task_group_name: '任务组名称',
+    task_group_queue_priority: '组内优先级',
+    number_of_failed_retries: '失败重试次数',
+    times: '次',
+    failed_retry_interval: '失败重试间隔',
+    minute: '分',
+    delay_execution_time: '延时执行时间',
+    state: '状态',
+    branch_flow: '分支流转',
+    cancel: '取消',
+    loading: '正在努力加载中...',
+    confirm: '确定',
+    success: '成功',
+    failed: '失败',
+    backfill_tips: '新创建子工作流还未执行,不能进入子工作流',
+    task_instance_tips: '该任务还未执行,不能进入子工作流',
+    branch_tips: '成功分支流转和失败分支流转不能选择同一个节点',
+    timeout_alarm: '超时告警',
+    timeout_strategy: '超时策略',
+    timeout_strategy_tips: '超时策略必须选一个',
+    timeout_failure: '超时失败',
+    timeout_period: '超时时长',
+    timeout_period_tips: '超时时长必须为正整数',
+    script: '脚本',
+    script_tips: '请输入脚本(必填)',
+    init_script: '初始化脚本',
+    init_script_tips: '请输入初始化脚本',
+    resources: '资源',
+    resources_tips: '请选择资源',
+    no_resources_tips: '请删除所有未授权或已删除资源',
+    useless_resources_tips: '未授权或已删除资源',
+    custom_parameters: '自定义参数',
+    copy_failed: '该浏览器不支持自动复制',
+    prop_tips: 'prop(必填)',
+    prop_repeat: 'prop中有重复',
+    value_tips: 'value(选填)',
+    value_required_tips: 'value(必填)',
+    pre_tasks: '前置任务',
+    program_type: '程序类型',
+    spark_version: 'Spark版本',
+    main_class: '主函数的Class',
+    main_class_tips: '请填写主函数的Class',
+    main_package: '主程序包',
+    main_package_tips: '请选择主程序包',
+    deploy_mode: '部署方式',
+    app_name: '任务名称',
+    app_name_tips: '请输入任务名称(选填)',
+    driver_cores: 'Driver核心数',
+    driver_cores_tips: '请输入Driver核心数',
+    driver_memory: 'Driver内存数',
+    driver_memory_tips: '请输入Driver内存数',
+    executor_number: 'Executor数量',
+    executor_number_tips: '请输入Executor数量',
+    executor_memory: 'Executor内存数',
+    executor_memory_tips: '请输入Executor内存数',
+    executor_cores: 'Executor核心数',
+    executor_cores_tips: '请输入Executor核心数',
+    main_arguments: '主程序参数',
+    main_arguments_tips: '请输入主程序参数',
+    option_parameters: '选项参数',
+    option_parameters_tips: '请输入选项参数',
+    positive_integer_tips: '应为正整数',
+    flink_version: 'Flink版本',
+    job_manager_memory: 'JobManager内存数',
+    job_manager_memory_tips: '请输入JobManager内存数',
+    task_manager_memory: 'TaskManager内存数',
+    task_manager_memory_tips: '请输入TaskManager内存数',
+    slot_number: 'Slot数量',
+    slot_number_tips: '请输入Slot数量',
+    parallelism: '并行度',
+    custom_parallelism: '自定义并行度',
+    parallelism_tips: '请输入并行度',
+    parallelism_number_tips: '并行度必须为正整数',
+    parallelism_complement_tips:
+      '如果存在大量任务需要补数时,可以利用自定义并行度将补数的任务线程设置成合理的数值,避免对服务器造成过大的影响',
+    task_manager_number: 'TaskManager数量',
+    task_manager_number_tips: '请输入TaskManager数量',
+    http_url: '请求地址',
+    http_url_tips: '请填写请求地址(必填)',
+    http_url_validator: '请求地址需包含http或者https',
+    http_method: '请求类型',
+    http_parameters: '请求参数',
+    http_check_condition: '校验条件',
+    http_condition: '校验内容',
+    http_condition_tips: '请填写校验内容',
+    timeout_settings: '超时设置',
+    connect_timeout: '连接超时',
+    ms: '毫秒',
+    socket_timeout: 'Socket超时',
+    status_code_default: '默认响应码200',
+    status_code_custom: '自定义响应码',
+    body_contains: '内容包含',
+    body_not_contains: '内容不包含',
+    http_parameters_position: '参数位置',
+    target_task_name: '目标任务名',
+    target_task_name_tips: '请输入Pigeon任务名(必填)',
+    datasource_type: '数据源类型',
+    datasource_instances: '数据源实例',
+    sql_type: 'SQL类型',
+    sql_type_query: '查询',
+    sql_type_non_query: '非查询',
+    sql_statement: 'SQL语句',
+    pre_sql_statement: '前置SQL语句',
+    post_sql_statement: '后置SQL语句',
+    sql_input_placeholder: '请输入非查询SQL语句',
+    sql_empty_tips: '语句不能为空',
+    procedure_method: 'SQL语句',
+    procedure_method_tips: '请输入存储脚本',
+    procedure_method_snippet:
+      '--请输入存储脚本 \n\n--调用存储过程: call <procedure-name>[(<arg1>,<arg2>, ...)] \n\n--调用存储函数:?= call <procedure-name>[(<arg1>,<arg2>, ...)]',
+    start: '运行',
+    edit: '编辑',
+    copy: '复制节点',
+    delete: '删除',
+    custom_job: '自定义任务',
+    custom_script: '自定义脚本',
+    sqoop_job_name: '任务名称',
+    sqoop_job_name_tips: '请输入任务名称(必填)',
+    direct: '流向',
+    hadoop_custom_params: 'Hadoop参数',
+    sqoop_advanced_parameters: 'Sqoop参数',
+    data_source: '数据来源',
+    type: '类型',
+    datasource: '数据源',
+    datasource_tips: '请选择数据源',
+    model_type: '模式',
+    form: '表单',
+    table: '表名',
+    table_tips: '请输入Mysql表名(必填)',
+    column_type: '列类型',
+    all_columns: '全表导入',
+    some_columns: '选择列',
+    column: '列',
+    column_tips: '请输入列名,用 , 隔开',
+    database: '数据库',
+    database_tips: '请输入Hive数据库(必填)',
+    hive_table_tips: '请输入Hive表名(必填)',
+    hive_partition_keys: 'Hive 分区键',
+    hive_partition_keys_tips: '请输入分区键',
+    hive_partition_values: 'Hive 分区值',
+    hive_partition_values_tips: '请输入分区值',
+    export_dir: '数据源路径',
+    export_dir_tips: '请输入数据源路径(必填)',
+    sql_statement_tips: 'SQL语句(必填)',
+    map_column_hive: 'Hive类型映射',
+    map_column_java: 'Java类型映射',
+    data_target: '数据目的',
+    create_hive_table: '是否创建新表',
+    drop_delimiter: '是否删除分隔符',
+    over_write_src: '是否覆盖数据源',
+    hive_target_dir: 'Hive目标路径',
+    hive_target_dir_tips: '请输入Hive临时目录',
+    replace_delimiter: '替换分隔符',
+    replace_delimiter_tips: '请输入替换分隔符',
+    target_dir: '目标路径',
+    target_dir_tips: '请输入目标路径(必填)',
+    delete_target_dir: '是否删除目录',
+    compression_codec: '压缩类型',
+    file_type: '保存格式',
+    fields_terminated: '列分隔符',
+    fields_terminated_tips: '请输入列分隔符',
+    lines_terminated: '行分隔符',
+    lines_terminated_tips: '请输入行分隔符',
+    is_update: '是否更新',
+    update_key: '更新列',
+    update_key_tips: '请输入更新列',
+    update_mode: '更新类型',
+    only_update: '只更新',
+    allow_insert: '无更新便插入',
+    concurrency: '并发度',
+    concurrency_tips: '请输入并发度',
+    sea_tunnel_master: 'Master',
+    sea_tunnel_master_url: 'Master URL',
+    sea_tunnel_queue: '队列',
+    sea_tunnel_master_url_tips: '请直接填写地址,例如:127.0.0.1:7077',
+    add_pre_task_check_condition: '添加前置检查条件',
+    switch_condition: '条件',
+    switch_branch_flow: '分支流转',
+    and: '且',
+    or: '或',
+    datax_custom_template: '自定义模板',
+    datax_json_template: 'JSON',
+    datax_target_datasource_type: '目标源类型',
+    datax_target_database: '目标源实例',
+    datax_target_table: '目标表',
+    datax_target_table_tips: '请输入目标表名',
+    datax_target_database_pre_sql: '目标库前置SQL',
+    datax_target_database_post_sql: '目标库后置SQL',
+    datax_non_query_sql_tips: '请输入非查询SQL语句',
+    datax_job_speed_byte: '限流(字节数)',
+    datax_job_speed_byte_info: '(KB,0代表不限制)',
+    datax_job_speed_record: '限流(记录数)',
+    datax_job_speed_record_info: '(0代表不限制)',
+    datax_job_runtime_memory: '运行内存',
+    datax_job_runtime_memory_xms: '最小内存',
+    datax_job_runtime_memory_xmx: '最大内存',
+    datax_job_runtime_memory_unit: 'G',
+    current_hour: '当前小时',
+    last_1_hour: '前1小时',
+    last_2_hour: '前2小时',
+    last_3_hour: '前3小时',
+    last_24_hour: '前24小时',
+    today: '今天',
+    last_1_days: '昨天',
+    last_2_days: '前两天',
+    last_3_days: '前三天',
+    last_7_days: '前七天',
+    this_week: '本周',
+    last_week: '上周',
+    last_monday: '上周一',
+    last_tuesday: '上周二',
+    last_wednesday: '上周三',
+    last_thursday: '上周四',
+    last_friday: '上周五',
+    last_saturday: '上周六',
+    last_sunday: '上周日',
+    this_month: '本月',
+    this_month_begin: '本月初',
+    last_month: '上月',
+    last_month_begin: '上月初',
+    last_month_end: '上月末',
+    month: '月',
+    week: '周',
+    day: '日',
+    hour: '时',
+    add_dependency: '添加依赖',
+    waiting_dependent_start: '等待依赖启动',
+    check_interval: '检查间隔',
+    waiting_dependent_complete: '等待依赖完成',
+    project_name: '项目名称',
+    project_name_tips: '项目名称(必填)',
+    process_name: '工作流名称',
+    process_name_tips: '工作流名称(必填)',
+    cycle_time: '时间周期',
+    cycle_time_tips: '时间周期(必填)',
+    date_tips: '日期(必填)',
+    rule_name: '规则名称',
+    null_check: '空值检测',
+    custom_sql: '自定义SQL',
+    multi_table_accuracy: '多表准确性',
+    multi_table_value_comparison: '两表值比对',
+    field_length_check: '字段长度校验',
+    uniqueness_check: '唯一性校验',
+    regexp_check: '正则表达式',
+    timeliness_check: '及时性校验',
+    enumeration_check: '枚举值校验',
+    table_count_check: '表行数校验',
+    src_connector_type: '源数据类型',
+    src_datasource_id: '源数据源',
+    src_table: '源数据表',
+    src_filter: '源表过滤条件',
+    src_field: '源表检测列',
+    statistics_name: '实际值名',
+    check_type: '校验方式',
+    operator: '校验操作符',
+    threshold: '阈值',
+    failure_strategy: '失败策略',
+    target_connector_type: '目标数据类型',
+    target_datasource_id: '目标数据源',
+    target_table: '目标数据表',
+    target_filter: '目标表过滤条件',
+    mapping_columns: 'ON语句',
+    statistics_execute_sql: '实际值计算SQL',
+    comparison_name: '期望值名',
+    comparison_execute_sql: '期望值计算SQL',
+    comparison_type: '期望值类型',
+    writer_connector_type: '输出数据类型',
+    writer_datasource_id: '输出数据源',
+    target_field: '目标表检测列',
+    field_length: '字段长度限制',
+    logic_operator: '逻辑操作符',
+    regexp_pattern: '正则表达式',
+    deadline: '截止时间',
+    datetime_format: '时间格式',
+    enum_list: '枚举值列表',
+    begin_time: '起始时间',
+    fix_value: '固定值',
+    required: '必填',
+    emr_flow_define_json: 'jobFlowDefineJson',
+    emr_flow_define_json_tips: '请输入工作流定义',
+    segment_separator: '分段执行符号',
+    segment_separator_tips: '请输入分段执行符号',
+    zeppelin_note_id: 'zeppelin_note_id',
+    zeppelin_note_id_tips: '请输入zeppelin note id',
+    zeppelin_paragraph_id: 'zeppelin_paragraph_id',
+    zeppelin_paragraph_id_tips: '请输入zeppelin paragraph id',
+    send_email: '发送邮件',
+    log_display: '日志显示',
+    rows_of_result: '行查询结果',
+    title: '主题',
+    title_tips: '请输入邮件主题',
+    alarm_group: '告警组',
+    alarm_group_tips: '告警组必填',
+    integer_tips: '请输入一个正整数',
+    sql_parameter: 'sql参数',
+    format_tips: '请输入格式为',
+    udf_function: 'UDF函数',
+    unlimited: '不限制',
+    please_select_source_connector_type: '请选择源数据类型',
+    please_select_source_datasource_id: '请选择源数据源',
+    please_enter_source_table_name: '请选择源数据表',
+    please_enter_filter_expression: '请输入源表过滤条件',
+    please_enter_column_only_single_column_is_supported: '请选择源表检测列',
+    please_enter_threshold_number_is_needed: '请输入阈值',
+    please_enter_comparison_title: '请选择期望值类型'
+  }
+}
diff --git a/dolphinscheduler-ui/src/locales/zh_CN/resource.ts b/dolphinscheduler-ui/src/locales/zh_CN/resource.ts
new file mode 100644
index 0000000000..b795c5132b
--- /dev/null
+++ b/dolphinscheduler-ui/src/locales/zh_CN/resource.ts
@@ -0,0 +1,168 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export default {
+  file: {
+    file_manage: '文件管理',
+    create_folder: '创建文件夹',
+    create_file: '创建文件',
+    upload_files: '上传文件',
+    enter_keyword_tips: '请输入关键词',
+    name: '名称',
+    user_name: '所属用户',
+    whether_directory: '是否文件夹',
+    file_name: '文件名称',
+    description: '描述',
+    size: '大小',
+    update_time: '更新时间',
+    operation: '操作',
+    edit: '编辑',
+    rename: '重命名',
+    download: '下载',
+    delete: '删除',
+    yes: '是',
+    no: '否',
+    folder_name: '文件夹名称',
+    enter_name_tips: '请输入名称',
+    enter_description_tips: '请输入描述',
+    enter_content_tips: '请输入资源内容',
+    enter_suffix_tips: '请输入文件后缀',
+    file_format: '文件格式',
+    file_content: '文件内容',
+    delete_confirm: '确定删除吗?',
+    confirm: '确定',
+    cancel: '取消',
+    success: '成功',
+    file_details: '文件详情',
+    return: '返回',
+    save: '保存'
+  },
+  udf: {
+    udf_resources: 'UDF资源',
+    create_folder: '创建文件夹',
+    upload_udf_resources: '上传UDF资源',
+    udf_source_name: 'UDF资源名称',
+    user_name: '所属用户',
+    whether_directory: '是否文件夹',
+    file_name: '文件名称',
+    file_size: '文件大小',
+    description: '描述',
+    create_time: '创建时间',
+    update_time: '更新时间',
+    operation: '操作',
+    yes: '是',
+    no: '否',
+    edit: '编辑',
+    download: '下载',
+    delete: '删除',
+    success: '成功',
+    folder_name: '文件夹名称',
+    upload: '上传',
+    upload_files: '上传文件',
+    file_upload: '文件上传',
+    delete_confirm: '确定删除吗?',
+    enter_keyword_tips: '请输入关键词',
+    enter_name_tips: '请输入名称',
+    enter_description_tips: '请输入描述'
+  },
+  function: {
+    udf_function: 'UDF函数',
+    create_udf_function: '创建UDF函数',
+    edit_udf_function: '编辑UDF函数',
+    udf_function_name: 'UDF函数名称',
+    user_name: '所属用户',
+    class_name: '类名',
+    type: '类型',
+    description: '描述',
+    jar_package: 'jar包',
+    update_time: '更新时间',
+    operation: '操作',
+    rename: '重命名',
+    edit: '编辑',
+    delete: '删除',
+    success: '成功',
+    package_name: '包名类名',
+    udf_resources: 'UDF资源',
+    instructions: '使用说明',
+    upload_resources: '上传资源',
+    udf_resources_directory: 'UDF资源目录',
+    delete_confirm: '确定删除吗?',
+    enter_keyword_tips: '请输入关键词',
+    enter_udf_unction_name_tips: '请输入UDF函数名称',
+    enter_package_name_tips: '请输入包名类名',
+    enter_select_udf_resources_tips: '请选择UDF资源',
+    enter_select_udf_resources_directory_tips: '请选择UDF资源目录',
+    enter_instructions_tips: '请输入使用说明',
+    enter_name_tips: '请输入名称',
+    enter_description_tips: '请输入描述',
+    upload: '上传',
+    upload_udf_resources: '上传UDF资源'
+  },
+  task_group_option: {
+    manage: '任务组管理',
+    option: '任务组配置',
+    create: '创建任务组',
+    edit: '编辑任务组',
+    delete: '删除任务组',
+    view_queue: '查看任务组队列',
+    switch_status: '切换任务组状态',
+    code: '任务组编号',
+    name: '任务组名称',
+    project_name: '项目名称',
+    resource_pool_size: '资源容量',
+    resource_used_pool_size: '已用资源',
+    desc: '描述信息',
+    status: '任务组状态',
+    enable_status: '启用',
+    disable_status: '不可用',
+    please_enter_name: '请输入任务组名称',
+    please_enter_desc: '请输入任务组描述',
+    please_enter_resource_pool_size: '请输入资源容量大小',
+    positive_integer_tips: '应为正整数',
+    please_select_project: '请选择项目',
+    create_time: '创建时间',
+    update_time: '更新时间',
+    actions: '操作',
+    please_enter_keywords: '请输入搜索关键词'
+  },
+  task_group_queue: {
+    actions: '操作',
+    task_name: '任务名称',
+    task_group_name: '任务组名称',
+    project_name: '项目名称',
+    task_instance_name: '任务实例',
+    workflow_instance_name: '工作流实例',
+    queue: '任务组队列',
+    priority: '组内优先级',
+    priority_be_a_number: '优先级必须是大于等于0的数值',
+    force_starting_status: '是否强制启动',
+    in_queue: '是否排队中',
+    task_status: '任务状态',
+    view_task_group_queue: '查看任务组队列',
+    the_status_of_waiting: '等待入队',
+    the_status_of_queuing: '排队中',
+    the_status_of_releasing: '已释放',
+    modify_priority: '修改优先级',
+    start_task: '强制启动',
+    priority_not_empty: '优先级不能为空',
+    priority_must_be_number: '优先级必须是数值',
+    please_select_task_name: '请选择节点名称',
+    create_time: '创建时间',
+    update_time: '更新时间',
+    edit_priority: '修改优先级'
+  }
+}
\ No newline at end of file
diff --git a/dolphinscheduler-ui/src/locales/zh_CN/security.ts b/dolphinscheduler-ui/src/locales/zh_CN/security.ts
new file mode 100644
index 0000000000..10b36fdc8a
--- /dev/null
+++ b/dolphinscheduler-ui/src/locales/zh_CN/security.ts
@@ -0,0 +1,265 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+export default {
+  tenant: {
+    tenant_manage: '租户管理',
+    create_tenant: '创建租户',
+    search_tips: '请输入关键词',
+    tenant_code: '操作系统租户',
+    description: '描述',
+    queue_name: '队列',
+    create_time: '创建时间',
+    update_time: '更新时间',
+    actions: '操作',
+    edit_tenant: '编辑租户',
+    tenant_code_tips: '请输入操作系统租户',
+    queue_name_tips: '请选择队列',
+    description_tips: '请输入描述',
+    delete_confirm: '确定删除吗?',
+    edit: '编辑',
+    delete: '删除'
+  },
+  alarm_group: {
+    create_alarm_group: '创建告警组',
+    edit_alarm_group: '编辑告警组',
+    search_tips: '请输入关键词',
+    alert_group_name_tips: '请输入告警组名称',
+    alarm_plugin_instance: '告警组实例',
+    alarm_plugin_instance_tips: '请选择告警组实例',
+    alarm_group_description_tips: '请输入告警组描述',
+    alert_group_name: '告警组名称',
+    alarm_group_description: '告警组描述',
+    create_time: '创建时间',
+    update_time: '更新时间',
+    operation: '操作',
+    delete_confirm: '确定删除吗?',
+    edit: '编辑',
+    delete: '删除'
+  },
+  worker_group: {
+    create_worker_group: '创建Worker分组',
+    edit_worker_group: '编辑Worker分组',
+    search_tips: '请输入关键词',
+    operation: '操作',
+    delete_confirm: '确定删除吗?',
+    edit: '编辑',
+    delete: '删除',
+    group_name: '分组名称',
+    group_name_tips: '请输入分组名称',
+    worker_addresses: 'Worker地址',
+    worker_addresses_tips: '请选择Worker地址',
+    create_time: '创建时间',
+    update_time: '更新时间'
+  },
+  yarn_queue: {
+    create_queue: '创建队列',
+    edit_queue: '编辑队列',
+    search_tips: '请输入关键词',
+    queue_name: '队列名',
+    queue_value: '队列值',
+    create_time: '创建时间',
+    update_time: '更新时间',
+    operation: '操作',
+    edit: '编辑',
+    queue_name_tips: '请输入队列名',
+    queue_value_tips: '请输入队列值'
+  },
+  environment: {
+    create_environment: '创建环境',
+    edit_environment: '编辑环境',
+    search_tips: '请输入关键词',
+    edit: '编辑',
+    delete: '删除',
+    environment_name: '环境名称',
+    environment_config: '环境配置',
+    environment_desc: '环境描述',
+    worker_groups: 'Worker分组',
+    create_time: '创建时间',
+    update_time: '更新时间',
+    operation: '操作',
+    delete_confirm: '确定删除吗?',
+    environment_name_tips: '请输入环境名',
+    environment_config_tips: '请输入环境配置',
+    environment_description_tips: '请输入环境描述',
+    worker_group_tips: '请选择Worker分组'
+  },
+  token: {
+    create_token: '创建令牌',
+    edit_token: '编辑令牌',
+    search_tips: '请输入关键词',
+    user: '用户',
+    user_tips: '请选择用户',
+    token: '令牌',
+    token_tips: '请点击获取令牌',
+    expiration_time: '失效时间',
+    expiration_time_tips: '请选择失效时间',
+    create_time: '创建时间',
+    update_time: '更新时间',
+    operation: '操作',
+    edit: '编辑',
+    delete: '删除',
+    delete_confirm: '确定删除吗?'
+  },
+  user: {
+    user_manage: '用户管理',
+    create_user: '创建用户',
+    edit_user: '编辑用户',
+    delete_user: '删除用户',
+    delete_confirm: '确定删除吗?',
+    project: '项目',
+    resource: '资源',
+    file_resource: '文件资源',
+    udf_resource: 'UDF资源',
+    datasource: '数据源',
+    udf: 'UDF函数',
+    namespace: '命名空间',
+    authorize_project: '项目授权',
+    authorize_resource: '资源授权',
+    authorize_namespace: '命名空间授权',
+    authorize_datasource: '数据源授权',
+    authorize_udf: 'UDF函数授权',
+    username: '用户名',
+    username_exists: '用户名已存在',
+    username_tips: '请输入用户名',
+    user_password: '密码',
+    user_password_tips: '请输入包含字母和数字,长度在6~20之间的密码',
+    user_type: '用户类型',
+    ordinary_user: '普通用户',
+    administrator: '管理员',
+    tenant_code: '租户',
+    tenant_id_tips: '请选择租户',
+    queue: '队列',
+    queue_tips: '默认为租户关联队列',
+    email: '邮件',
+    email_empty_tips: '请输入邮箱',
+    emial_correct_tips: '请输入正确的邮箱格式',
+    phone: '手机',
+    phone_empty_tips: '请输入手机号码',
+    phone_correct_tips: '请输入正确的手机格式',
+    state: '状态',
+    state_enabled: '启用',
+    state_disabled: '停用',
+    create_time: '创建时间',
+    update_time: '更新时间',
+    operation: '操作',
+    edit: '编辑',
+    delete: '删除',
+    authorize: '授权',
+    save_error_msg: '保存失败,请重试',
+    delete_error_msg: '删除失败,请重试',
+    auth_error_msg: '授权失败,请重试',
+    auth_success_msg: '授权成功',
+    enable: '启用',
+    disable: '停用'
+  },
+  alarm_instance: {
+    search_input_tips: '请输入关键字',
+    alarm_instance_manage: '告警实例管理',
+    alarm_instance_name: '告警实例名称',
+    alarm_instance_name_tips: '请输入告警实例名称',
+    alarm_plugin_name: '告警插件名称',
+    create_time: '创建时间',
+    update_time: '更新时间',
+    operation: '操作',
+    edit_alarm_instance: '编辑告警实例',
+    delete: '删除',
+    edit: '编辑',
+    delete_confirm: '删除?',
+    confirm: '确定',
+    cancel: '取消',
+    submit: '提交',
+    create_alarm_instance: '创建告警实例',
+    select_plugin: '选择插件',
+    select_plugin_tips: '请选择告警插件',
+    instance_parameter_exception: '实例参数异常',
+    WebHook: 'Web钩子',
+    webHook: 'Web钩子',
+    WarningType: '告警类型',
+    IsEnableProxy: '启用代理',
+    Proxy: '代理',
+    Port: '端口',
+    User: '用户',
+    corpId: '企业ID',
+    secret: '密钥',
+    Secret: '密钥',
+    users: '群员',
+    userSendMsg: '群员信息',
+    'agentId/chatId': '应用ID或群聊ID',
+    showType: '内容展示类型',
+    receivers: '收件人',
+    receiverCcs: '抄送人',
+    serverHost: 'SMTP服务器',
+    serverPort: 'SMTP端口',
+    sender: '发件人',
+    enableSmtpAuth: '请求认证',
+    Password: '密码',
+    starttlsEnable: 'STARTTLS连接',
+    sslEnable: 'SSL连接',
+    smtpSslTrust: 'SSL证书信任',
+    url: 'URL',
+    requestType: '请求方式',
+    headerParams: '请求头',
+    bodyParams: '请求体',
+    contentField: '内容字段',
+    Keyword: '关键词',
+    userParams: '自定义参数',
+    path: '脚本路径',
+    type: '类型',
+    sendType: '发送类型',
+    username: '用户名',
+    botToken: '机器人Token',
+    chatId: '频道ID',
+    parseMode: '解析类型',
+    IntegrationKey: '集成密钥',
+    BotAccessToken: '访问令牌',
+    RoomId: '房间',
+    ToPersonId: '用户',
+    ToPersonEmail: '用户邮箱',
+    // eslint-disable-next-line quotes
+    AtSomeoneInRoom: "{'@'}房间中的成员",
+    Destination: '目的地',
+    // eslint-disable-next-line quotes
+    AtMobiles: "被{'@'}人的手机号",
+    // eslint-disable-next-line quotes
+    AtUserIds: "被{'@'}人的用户ID",
+    MsgType: '消息类型',
+    // eslint-disable-next-line quotes
+    IsAtAll: "{'@'}所有人"
+  },
+  k8s_namespace: {
+    create_namespace: '创建命名空间',
+    edit_namespace: '编辑命名空间',
+    search_tips: '请输入关键词',
+    k8s_namespace: 'K8S命名空间',
+    k8s_namespace_tips: '请输入k8s命名空间',
+    k8s_cluster: 'K8S集群',
+    k8s_cluster_tips: '请输入k8s集群',
+    owner: '负责人',
+    owner_tips: '请输入负责人',
+    limit_cpu: '最大CPU',
+    limit_cpu_tips: '请输入最大CPU',
+    limit_memory: '最大内存',
+    limit_memory_tips: '请输入最大内存',
+    create_time: '创建时间',
+    update_time: '更新时间',
+    operation: '操作',
+    edit: '编辑',
+    delete: '删除',
+    delete_confirm: '确定删除吗?'
+  }
+}
\ No newline at end of file
diff --git a/dolphinscheduler-ui/src/locales/index.ts b/dolphinscheduler-ui/src/locales/zh_CN/theme.ts
similarity index 75%
copy from dolphinscheduler-ui/src/locales/index.ts
copy to dolphinscheduler-ui/src/locales/zh_CN/theme.ts
index 31a3cd9835..77df7f2fc1 100644
--- a/dolphinscheduler-ui/src/locales/index.ts
+++ b/dolphinscheduler-ui/src/locales/zh_CN/theme.ts
@@ -15,18 +15,7 @@
  * limitations under the License.
  */
 
-import { createI18n } from 'vue-i18n'
-import zh_CN from './modules/zh_CN'
-import en_US from './modules/en_US'
-
-const i18n = createI18n({
-  legacy: false,
-  globalInjection: true,
-  locale: 'zh_CN',
-  messages: {
-    zh_CN,
-    en_US
-  }
-})
-
-export default i18n
+export default {
+  light: '浅色',
+  dark: '深色'
+}
\ No newline at end of file
diff --git a/dolphinscheduler-ui/src/locales/index.ts b/dolphinscheduler-ui/src/locales/zh_CN/user-dropdown.ts
similarity index 75%
copy from dolphinscheduler-ui/src/locales/index.ts
copy to dolphinscheduler-ui/src/locales/zh_CN/user-dropdown.ts
index 31a3cd9835..554f40872e 100644
--- a/dolphinscheduler-ui/src/locales/index.ts
+++ b/dolphinscheduler-ui/src/locales/zh_CN/user-dropdown.ts
@@ -15,18 +15,8 @@
  * limitations under the License.
  */
 
-import { createI18n } from 'vue-i18n'
-import zh_CN from './modules/zh_CN'
-import en_US from './modules/en_US'
-
-const i18n = createI18n({
-  legacy: false,
-  globalInjection: true,
-  locale: 'zh_CN',
-  messages: {
-    zh_CN,
-    en_US
-  }
-})
-
-export default i18n
+export default {
+  profile: '用户信息',
+  password: '密码管理',
+  logout: '退出登录'
+}
\ No newline at end of file


[dolphinscheduler] 03/18: [doc] Upgrade screenshot to latest version in dev document (#10242)

Posted by li...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

liudongkai pushed a commit to branch 3.0.0-beta-2-prepare
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git

commit 1a79c2a2002ca8e3e4f8059b0f5e7f57eba0d2da
Author: QuakeWang <45...@users.noreply.github.com>
AuthorDate: Mon May 30 11:04:42 2022 +0800

    [doc] Upgrade screenshot to latest version in dev document (#10242)
    
    * fix issue-9898
    * delete no use pictures
    
    (cherry picked from commit 58b1e1da1e43788fd2d0f0f5d370c00c102ac4c3)
---
 docs/docs/en/about/glossary.md                         |   7 +------
 docs/docs/en/guide/alert/alert_plugin_user_guide.md    |   8 ++++----
 docs/docs/en/guide/alert/dingtalk.md                   |   2 +-
 docs/docs/en/guide/alert/telegram.md                   |   2 +-
 docs/docs/en/guide/parameter/priority.md               |  10 +++++-----
 docs/docs/zh/about/glossary.md                         |  15 +++++----------
 docs/docs/zh/guide/alert/alert_plugin_user_guide.md    |  10 +++++-----
 docs/docs/zh/guide/alert/dingtalk.md                   |   2 +-
 docs/docs/zh/guide/alert/telegram.md                   |  10 +++++-----
 docs/docs/zh/guide/parameter/priority.md               |   8 ++++----
 docs/img/alert/alert_step_1.png                        | Bin 70180 -> 0 bytes
 docs/img/alert/alert_step_2.png                        | Bin 159166 -> 0 bytes
 docs/img/alert/alert_step_3.png                        | Bin 240057 -> 0 bytes
 docs/img/alert/alert_step_4.png                        | Bin 144842 -> 0 bytes
 docs/img/alert/dingtalk-plugin.png                     | Bin 60958 -> 0 bytes
 docs/img/alert/telegram-plugin.png                     | Bin 74412 -> 0 bytes
 docs/img/dag_examples_cn.jpg                           | Bin 51498 -> 0 bytes
 docs/img/globalParam/image-20210723102938239.png       | Bin 36581 -> 0 bytes
 docs/img/globalParam/image-20210723103316896.png       | Bin 37954 -> 0 bytes
 docs/img/globalParam/image-20210723103937052.png       | Bin 52946 -> 0 bytes
 docs/img/globalParam/image-20210723104411489.png       | Bin 21894 -> 0 bytes
 docs/img/new_ui/dev/about/glossary.png                 | Bin 0 -> 85151 bytes
 docs/img/new_ui/dev/alert/alert_dingtalk.png           | Bin 0 -> 117481 bytes
 docs/img/new_ui/dev/alert/alert_instance01.png         | Bin 0 -> 70279 bytes
 docs/img/new_ui/dev/alert/alert_instance02.png         | Bin 0 -> 102718 bytes
 docs/img/new_ui/dev/alert/alert_instance03.png         | Bin 0 -> 104143 bytes
 docs/img/new_ui/dev/alert/alert_instance04.png         | Bin 0 -> 102625 bytes
 docs/img/new_ui/dev/alert/alert_telegram.png           | Bin 0 -> 116700 bytes
 docs/img/new_ui/dev/parameter/priority_parameter01.png | Bin 0 -> 16159 bytes
 docs/img/new_ui/dev/parameter/priority_parameter02.png | Bin 0 -> 50368 bytes
 docs/img/new_ui/dev/parameter/priority_parameter03.png | Bin 0 -> 30142 bytes
 docs/img/new_ui/dev/parameter/priority_parameter04.png | Bin 0 -> 173759 bytes
 32 files changed, 32 insertions(+), 42 deletions(-)

diff --git a/docs/docs/en/about/glossary.md b/docs/docs/en/about/glossary.md
index 541d57245b..0dd2ed0caf 100644
--- a/docs/docs/en/about/glossary.md
+++ b/docs/docs/en/about/glossary.md
@@ -9,12 +9,7 @@ scheduling system
 form of a directed acyclic graph, and topological traversal is performed from nodes with zero degrees of entry until
 there are no subsequent nodes. Examples are as follows:
 
-<p align="center">
-  <img src="/img/dag_examples_cn.jpg" alt="dag example"  width="60%" />
-  <p align="center">
-        <em>dag example</em>
-  </p>
-</p>
+![about-glossary](/img/new_ui/dev/about/glossary.png)
 
 **Process definition**: Visualization formed by dragging task nodes and establishing task node associations**DAG**
 
diff --git a/docs/docs/en/guide/alert/alert_plugin_user_guide.md b/docs/docs/en/guide/alert/alert_plugin_user_guide.md
index aeaba871e4..f04b0a6d9b 100644
--- a/docs/docs/en/guide/alert/alert_plugin_user_guide.md
+++ b/docs/docs/en/guide/alert/alert_plugin_user_guide.md
@@ -12,7 +12,7 @@ First, go to the Security Center page. Select Alarm Group Management, click Alar
 
 Then select Alarm Group Management, create an alarm group, and choose the corresponding alarm instance.
 
-<img src="/img/alert/alert_step_1.png">
-<img src="/img/alert/alert_step_2.png">
-<img src="/img/alert/alert_step_3.png">
-<img src="/img/alert/alert_step_4.png">
+![alert-instance01](/img/new_ui/dev/alert/alert_instance01.png)
+![alert-instance02](/img/new_ui/dev/alert/alert_instance02.png)
+![alert-instance03](/img/new_ui/dev/alert/alert_instance03.png)
+![alert-instance04](/img/new_ui/dev/alert/alert_instance04.png)
diff --git a/docs/docs/en/guide/alert/dingtalk.md b/docs/docs/en/guide/alert/dingtalk.md
index 2cc30436ba..2c0708e275 100644
--- a/docs/docs/en/guide/alert/dingtalk.md
+++ b/docs/docs/en/guide/alert/dingtalk.md
@@ -3,7 +3,7 @@
 If you need to use `DingTalk` for alerting, create an alert instance in the alert instance management and select the DingTalk plugin. 
 The following shows the `DingTalk` configuration example:
 
-![dingtalk-plugin](/img/alert/dingtalk-plugin.png)
+![alert-dingtalk](/img/new_ui/dev/alert/alert_dingtalk.png)
 
 ## Parameter Configuration
 
diff --git a/docs/docs/en/guide/alert/telegram.md b/docs/docs/en/guide/alert/telegram.md
index 203ab4f851..d6fed91806 100644
--- a/docs/docs/en/guide/alert/telegram.md
+++ b/docs/docs/en/guide/alert/telegram.md
@@ -3,7 +3,7 @@
 If you need `Telegram` to alert, create an alert instance in the alert instance management, and choose the `Telegram` plugin.
 The following shows the `Telegram` configuration example:
 
-![telegram-plugin](/img/alert/telegram-plugin.png)
+![alert-telegram](/img/new_ui/dev/alert/alert_telegram.png)
 
 ## Parameter Configuration
 
diff --git a/docs/docs/en/guide/parameter/priority.md b/docs/docs/en/guide/parameter/priority.md
index bbd97930ea..4997af5bec 100644
--- a/docs/docs/en/guide/parameter/priority.md
+++ b/docs/docs/en/guide/parameter/priority.md
@@ -19,22 +19,22 @@ Followings are examples shows task parameters priority problems:#############
 
 1: Use shell nodes to explain the first case.
 
-![png01](/img/globalParam/image-20210723102938239.png)
+![priority-parameter01](/img/new_ui/dev/parameter/priority_parameter01.png)
 
 The [useParam] node can use the parameters which are set in the [createParam] node. The [useParam] node cannot obtain the parameters from the [noUseParam] node due to there is no dependency between them. Other task node types have the same usage rules with the Shell example here.
 
-![png02](/img/globalParam/image-20210723103316896.png)
+![priority-parameter02](/img/new_ui/dev/parameter/priority_parameter02.png)
 
 The [createParam] node can use parameters directly. In addition, the node creates two parameters named "key" and "key1", and "key1" has the same name as the one passed by the upstream node and assign value "12". However, due to the priority rules, the value assignment will assign "12" and the value from the upstream node is discarded.
 
 2: Use SQL nodes to explain another case.
 
-![png03](/img/globalParam/image-20210723103937052.png)
+![priority-parameter03](/img/new_ui/dev/parameter/priority_parameter03.png)
 
 The following shows the definition of the [use_create] node:
 
-![png04](/img/globalParam/image-20210723104411489.png)
+![priority-parameter04](/img/new_ui/dev/parameter/priority_parameter04.png)
 
 "status" is the own parameters of the node set by the current node. However, the user also sets the "status" parameter (global parameter) when saving the process definition and assign its value to -1. Then the value of status will be 2 with higher priority when the SQL executes. The global parameter value is discarded.
 
-The "ID" here is the parameter set by the upstream node. The user sets the parameters of the same parameter name "ID" for the [createparam1] node and [createparam2] node. And the [use_create] node uses the value of [createParam1] which is finished first.
\ No newline at end of file
+The "ID" here is the parameter set by the upstream node. The user sets the parameters of the same parameter name "ID" for the [createparam1] node and [createparam2] node. And the [use_create] node uses the value of [createParam1] which is finished first.
diff --git a/docs/docs/zh/about/glossary.md b/docs/docs/zh/about/glossary.md
index bcd28ac246..d39171a9eb 100644
--- a/docs/docs/zh/about/glossary.md
+++ b/docs/docs/zh/about/glossary.md
@@ -1,17 +1,12 @@
 ## 名词解释
 
-在对Apache DolphinScheduler了解之前,我们先来认识一下调度系统常用的名词
+在对 Apache DolphinScheduler 了解之前,我们先来认识一下调度系统常用的名词
 
 ### 1.名词解释
 
-**DAG:** 全称Directed Acyclic Graph,简称DAG。工作流中的Task任务以有向无环图的形式组装起来,从入度为零的节点进行拓扑遍历,直到无后继节点为止。举例如下图:
+**DAG:** 全称 Directed Acyclic Graph,简称 DAG。工作流中的 Task 任务以有向无环图的形式组装起来,从入度为零的节点进行拓扑遍历,直到无后继节点为止。举例如下图:
 
-<p align="center">
-  <img src="/img/dag_examples_cn.jpg" alt="dag示例"  width="60%" />
-  <p align="center">
-        <em>dag示例</em>
-  </p>
-</p>
+![about-glossary](/img/new_ui/dev/about/glossary.png)
 
 **流程定义**:通过拖拽任务节点并建立任务节点的关联所形成的可视化**DAG**
 
@@ -19,10 +14,10 @@
 
 **任务实例**:任务实例是流程定义中任务节点的实例化,标识着具体的任务执行状态
 
-**任务类型**:目前支持有SHELL、SQL、SUB_PROCESS(子流程)、PROCEDURE、MR、SPARK、PYTHON、DEPENDENT(依赖)、,同时计划支持动态插件扩展,注意:其中子 **SUB_PROCESS**
+**任务类型**:目前支持有 SHELL、SQL、SUB_PROCESS(子流程)、PROCEDURE、MR、SPARK、PYTHON、DEPENDENT(依赖),同时计划支持动态插件扩展,注意:其中子 **SUB_PROCESS**
 也是一个单独的流程定义,是可以单独启动执行的
 
-**调度方式**:系统支持基于cron表达式的定时调度和手动调度。命令类型支持:启动工作流、从当前节点开始执行、恢复被容错的工作流、恢复暂停流程、从失败节点开始执行、补数、定时、重跑、暂停、停止、恢复等待线程。
+**调度方式**:系统支持基于 cron 表达式的定时调度和手动调度。命令类型支持:启动工作流、从当前节点开始执行、恢复被容错的工作流、恢复暂停流程、从失败节点开始执行、补数、定时、重跑、暂停、停止、恢复等待线程。
 其中 **恢复被容错的工作流** 和 **恢复等待线程** 两种命令类型是由调度内部控制使用,外部无法调用
 
 **定时调度**:系统采用 **quartz** 分布式调度器,并同时支持cron表达式可视化的生成
diff --git a/docs/docs/zh/guide/alert/alert_plugin_user_guide.md b/docs/docs/zh/guide/alert/alert_plugin_user_guide.md
index 065adc4dd0..231d6558a4 100644
--- a/docs/docs/zh/guide/alert/alert_plugin_user_guide.md
+++ b/docs/docs/zh/guide/alert/alert_plugin_user_guide.md
@@ -1,6 +1,6 @@
 ## 如何创建告警插件以及告警组
 
-在2.0.0版本中,用户需要创建告警实例,在创建告警实例时,需要选择告警策略,有三个选项,成功发、失败发,以及成功和失败都发。在执行完工作流或任务时,如果触发告警,调用告警实例发送方法会进行逻辑判断,将告警实例与任务状态进行匹配,匹配则执行该告警实例发送逻辑,不匹配则过滤。创建完告警实例后,需要同告警组进行关联,一个告警组可以使用多个告警实例。
+在 2.0.0 版本中,用户需要创建告警实例,在创建告警实例时,需要选择告警策略,有三个选项,成功发、失败发,以及成功和失败都发。在执行完工作流或任务时,如果触发告警,调用告警实例发送方法会进行逻辑判断,将告警实例与任务状态进行匹配,匹配则执行该告警实例发送逻辑,不匹配则过滤。创建完告警实例后,需要同告警组进行关联,一个告警组可以使用多个告警实例。
 告警模块支持场景如下:
 <img src="/img/alert/alert_scenarios_zh.png">
 
@@ -10,7 +10,7 @@
 
 然后选择告警组管理,创建告警组,选择相应的告警实例即可。
 
-<img src="/img/alert/alert_step_1.png">
-<img src="/img/alert/alert_step_2.png">
-<img src="/img/alert/alert_step_3.png">
-<img src="/img/alert/alert_step_4.png">
+![alert-instance01](/img/new_ui/dev/alert/alert_instance01.png)
+![alert-instance02](/img/new_ui/dev/alert/alert_instance02.png)
+![alert-instance03](/img/new_ui/dev/alert/alert_instance03.png)
+![alert-instance04](/img/new_ui/dev/alert/alert_instance04.png)
diff --git a/docs/docs/zh/guide/alert/dingtalk.md b/docs/docs/zh/guide/alert/dingtalk.md
index 8df9c3f61e..ec6f874ea7 100644
--- a/docs/docs/zh/guide/alert/dingtalk.md
+++ b/docs/docs/zh/guide/alert/dingtalk.md
@@ -2,7 +2,7 @@
 
 如果您需要使用到钉钉进行告警,请在告警实例管理里创建告警实例,选择 DingTalk 插件。钉钉的配置样例如下:
 
-![dingtalk-plugin](/img/alert/dingtalk-plugin.png)
+![alert-dingtalk](/img/new_ui/dev/alert/alert_dingtalk.png)
 
 参数配置
 
diff --git a/docs/docs/zh/guide/alert/telegram.md b/docs/docs/zh/guide/alert/telegram.md
index 3cc750fc70..c586eb7052 100644
--- a/docs/docs/zh/guide/alert/telegram.md
+++ b/docs/docs/zh/guide/alert/telegram.md
@@ -1,14 +1,14 @@
 # Telegram
 
-如果您需要使用`Telegram`进行告警,请在告警实例管理模块创建告警实例,选择`Telegram`插件。
+如果您需要使用 `Telegram` 进行告警,请在告警实例管理模块创建告警实例,选择 `Telegram` 插件。
 
-`Telegram`的配置样例如下:
+`Telegram` 的配置样例如下:
 
-![telegram-plugin](/img/alert/telegram-plugin.png)
+![alert-telegram](/img/new_ui/dev/alert/alert_telegram.png)
 
 参数配置:
 * WebHook:
-  > 使用 Telegram 的机器人,发送消息的WebHook。
+  > 使用 Telegram 的机器人,发送消息的 WebHook。
 * botToken
   > 创建 Telegram 的机器人,获取的访问令牌。
 * chatId
@@ -26,7 +26,7 @@
 * Password
   > 代理鉴权密码
 
-**注意**:用户配置的WebHook需要能够接收和使用与DolphinScheduler构造的HTTP POST请求BODY相同的结构,JSON结构如下:
+**注意**:用户配置的 WebHook 需要能够接收和使用与 DolphinScheduler 构造的 HTTP POST 请求 BODY 相同的结构,JSON 结构如下:
 
 ```json
 {
diff --git a/docs/docs/zh/guide/parameter/priority.md b/docs/docs/zh/guide/parameter/priority.md
index 1f8d9a6c61..8bf7506c08 100644
--- a/docs/docs/zh/guide/parameter/priority.md
+++ b/docs/docs/zh/guide/parameter/priority.md
@@ -19,21 +19,21 @@ DolphinScheduler 中所涉及的参数值的定义可能来自三种类型:
 
 1:先以 shell 节点解释第一种情况
 
-<img src="/img/globalParam/image-20210723102938239.png" alt="image-20210723102938239" style="zoom:50%;" />
+![priority-parameter01](/img/new_ui/dev/parameter/priority_parameter01.png)
 
 节点 【useParam】可以使用到节点【createParam】中设置的变量。而节点 【useParam】与节点【noUseParam】中并没有依赖关系,所以并不会获取到节点【noUseParam】的变量。上图中只是以 shell 节点作为例子,其他类型节点具有相同的使用规则。
 
-<img src="/img/globalParam/image-20210723103316896.png" alt="image-20210723103316896" style="zoom:50%;" />
+![priority-parameter02](/img/new_ui/dev/parameter/priority_parameter02.png)
 
 其中节点【createParam】在使用变量时直接使用即可。另外该节点设置了 "key" 和 "key1" 两个变量,这里用户用定义了一个与上游节点传递的变量名相同的变量 key1,并且赋值为 "12",但是由于我们设置的优先级的关系,这里的值 "12" 会被使用,最终上游节点设置的变量值会被抛弃。
 
 2:我们再以 sql 节点来解释另外一种情况
 
-<img src="/img/globalParam/image-20210723103937052.png" alt="image-20210723103937052" style="zoom:50%;" />
+![priority-parameter03](/img/new_ui/dev/parameter/priority_parameter03.png)
 
 节点【use_create】的定义如下:
 
-![image-20210723104411489](/img/globalParam/image-20210723104411489.png)
+![priority-parameter04](/img/new_ui/dev/parameter/priority_parameter04.png)
 
 "status" 是当前节点设置的节点的自有变量。但是用户在保存工作流时也同样设置了 "status" 变量(全局参数),并且赋值为 -1。那在该 SQL 执行时,status 的值为优先级更高的 2。抛弃了全局变量中的值。
 
diff --git a/docs/img/alert/alert_step_1.png b/docs/img/alert/alert_step_1.png
deleted file mode 100644
index 69e42f1527..0000000000
Binary files a/docs/img/alert/alert_step_1.png and /dev/null differ
diff --git a/docs/img/alert/alert_step_2.png b/docs/img/alert/alert_step_2.png
deleted file mode 100644
index 75fbe3ee21..0000000000
Binary files a/docs/img/alert/alert_step_2.png and /dev/null differ
diff --git a/docs/img/alert/alert_step_3.png b/docs/img/alert/alert_step_3.png
deleted file mode 100644
index 0501d84ab4..0000000000
Binary files a/docs/img/alert/alert_step_3.png and /dev/null differ
diff --git a/docs/img/alert/alert_step_4.png b/docs/img/alert/alert_step_4.png
deleted file mode 100644
index 0ed8893d98..0000000000
Binary files a/docs/img/alert/alert_step_4.png and /dev/null differ
diff --git a/docs/img/alert/dingtalk-plugin.png b/docs/img/alert/dingtalk-plugin.png
deleted file mode 100644
index 0cb2a2f772..0000000000
Binary files a/docs/img/alert/dingtalk-plugin.png and /dev/null differ
diff --git a/docs/img/alert/telegram-plugin.png b/docs/img/alert/telegram-plugin.png
deleted file mode 100644
index 6e2429c634..0000000000
Binary files a/docs/img/alert/telegram-plugin.png and /dev/null differ
diff --git a/docs/img/dag_examples_cn.jpg b/docs/img/dag_examples_cn.jpg
deleted file mode 100644
index f40b575880..0000000000
Binary files a/docs/img/dag_examples_cn.jpg and /dev/null differ
diff --git a/docs/img/globalParam/image-20210723102938239.png b/docs/img/globalParam/image-20210723102938239.png
deleted file mode 100644
index 47653c09c8..0000000000
Binary files a/docs/img/globalParam/image-20210723102938239.png and /dev/null differ
diff --git a/docs/img/globalParam/image-20210723103316896.png b/docs/img/globalParam/image-20210723103316896.png
deleted file mode 100644
index d5e471e38c..0000000000
Binary files a/docs/img/globalParam/image-20210723103316896.png and /dev/null differ
diff --git a/docs/img/globalParam/image-20210723103937052.png b/docs/img/globalParam/image-20210723103937052.png
deleted file mode 100644
index 9a1ad823ef..0000000000
Binary files a/docs/img/globalParam/image-20210723103937052.png and /dev/null differ
diff --git a/docs/img/globalParam/image-20210723104411489.png b/docs/img/globalParam/image-20210723104411489.png
deleted file mode 100644
index 02e3025c8d..0000000000
Binary files a/docs/img/globalParam/image-20210723104411489.png and /dev/null differ
diff --git a/docs/img/new_ui/dev/about/glossary.png b/docs/img/new_ui/dev/about/glossary.png
new file mode 100644
index 0000000000..b3f9015bf2
Binary files /dev/null and b/docs/img/new_ui/dev/about/glossary.png differ
diff --git a/docs/img/new_ui/dev/alert/alert_dingtalk.png b/docs/img/new_ui/dev/alert/alert_dingtalk.png
new file mode 100644
index 0000000000..3bd2203402
Binary files /dev/null and b/docs/img/new_ui/dev/alert/alert_dingtalk.png differ
diff --git a/docs/img/new_ui/dev/alert/alert_instance01.png b/docs/img/new_ui/dev/alert/alert_instance01.png
new file mode 100644
index 0000000000..c5a515254f
Binary files /dev/null and b/docs/img/new_ui/dev/alert/alert_instance01.png differ
diff --git a/docs/img/new_ui/dev/alert/alert_instance02.png b/docs/img/new_ui/dev/alert/alert_instance02.png
new file mode 100644
index 0000000000..37be6dd859
Binary files /dev/null and b/docs/img/new_ui/dev/alert/alert_instance02.png differ
diff --git a/docs/img/new_ui/dev/alert/alert_instance03.png b/docs/img/new_ui/dev/alert/alert_instance03.png
new file mode 100644
index 0000000000..094c38b65f
Binary files /dev/null and b/docs/img/new_ui/dev/alert/alert_instance03.png differ
diff --git a/docs/img/new_ui/dev/alert/alert_instance04.png b/docs/img/new_ui/dev/alert/alert_instance04.png
new file mode 100644
index 0000000000..c0eef6ddab
Binary files /dev/null and b/docs/img/new_ui/dev/alert/alert_instance04.png differ
diff --git a/docs/img/new_ui/dev/alert/alert_telegram.png b/docs/img/new_ui/dev/alert/alert_telegram.png
new file mode 100644
index 0000000000..9fa98df13c
Binary files /dev/null and b/docs/img/new_ui/dev/alert/alert_telegram.png differ
diff --git a/docs/img/new_ui/dev/parameter/priority_parameter01.png b/docs/img/new_ui/dev/parameter/priority_parameter01.png
new file mode 100644
index 0000000000..ec34510e90
Binary files /dev/null and b/docs/img/new_ui/dev/parameter/priority_parameter01.png differ
diff --git a/docs/img/new_ui/dev/parameter/priority_parameter02.png b/docs/img/new_ui/dev/parameter/priority_parameter02.png
new file mode 100644
index 0000000000..044b438522
Binary files /dev/null and b/docs/img/new_ui/dev/parameter/priority_parameter02.png differ
diff --git a/docs/img/new_ui/dev/parameter/priority_parameter03.png b/docs/img/new_ui/dev/parameter/priority_parameter03.png
new file mode 100644
index 0000000000..000733d6e8
Binary files /dev/null and b/docs/img/new_ui/dev/parameter/priority_parameter03.png differ
diff --git a/docs/img/new_ui/dev/parameter/priority_parameter04.png b/docs/img/new_ui/dev/parameter/priority_parameter04.png
new file mode 100644
index 0000000000..ec5ae4f498
Binary files /dev/null and b/docs/img/new_ui/dev/parameter/priority_parameter04.png differ


[dolphinscheduler] 05/18: [doc] Add switch task demo (#10247)

Posted by li...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

liudongkai pushed a commit to branch 3.0.0-beta-2-prepare
in repository https://gitbox.apache.org/repos/asf/dolphinscheduler.git

commit 7ac7f415623b07faaa295bdf53b8feb5a9bd9516
Author: chuxing <92...@qq.com>
AuthorDate: Wed Jun 8 14:17:05 2022 +0800

    [doc] Add switch task demo (#10247)
    
    Co-authored-by: QuakeWang <45...@users.noreply.github.com>
    (cherry picked from commit 7e39e0d48de07183f15504fa4e087c790f2479e7)
---
 docs/docs/en/guide/task/switch.md |  44 +++++++++++++++++++++---------
 docs/docs/zh/guide/task/switch.md |  55 ++++++++++++++++++++++++++------------
 docs/img/switch_configure.jpg     | Bin 142764 -> 0 bytes
 docs/img/tasks/demo/switch_01.png | Bin 0 -> 117194 bytes
 docs/img/tasks/demo/switch_02.png | Bin 0 -> 141217 bytes
 docs/img/tasks/demo/switch_03.png | Bin 0 -> 148408 bytes
 docs/img/tasks/demo/switch_04.png | Bin 0 -> 125565 bytes
 7 files changed, 69 insertions(+), 30 deletions(-)

diff --git a/docs/docs/en/guide/task/switch.md b/docs/docs/en/guide/task/switch.md
index 341567b3ed..fb6e8bf456 100644
--- a/docs/docs/en/guide/task/switch.md
+++ b/docs/docs/en/guide/task/switch.md
@@ -1,10 +1,12 @@
 # Switch
 
 The switch is a conditional judgment node, decide the branch executes according to the value of [global variable](../parameter/global.md) and the expression result written by the user.
+**Note** Execute expressions using javax.script.ScriptEngine.eval.
 
-## Create
+## Create Task
+Click Project -> Management-Project -> Name-Workflow Definition, and click the Create Workflow button to enter the DAG editing page.
+Drag from the toolbar <img src="../../../../img/switch.png" width="20"/> task node to canvas to create a task. 
 
-Drag from the toolbar <img src="/img/switch.png" width="20"/>  task node to canvas to create a task. 
 **Note** After created a switch task, you must first configure the upstream and downstream, then configure the parameter of task branches.
 
 ## Parameter
@@ -14,26 +16,42 @@ Drag from the toolbar <img src="/img/switch.png" width="20"/>  task node to canv
 - Descriptive information: Describe the function of the node.
 - Task priority: When the number of worker threads is insufficient, execute in the order of priority from high to low, and tasks with the same priority will execute in a first-in first-out order.
 - Worker grouping: Assign tasks to the machines of the worker group to execute. If `Default` is selected, randomly select a worker machine for execution.
+- Environment name: The environment in Security, if not configured, it will not be used.
+- Task group name: The group in Resources, if not configured, it will not be used.
 - Times of failed retry attempts: The number of times the task failed to resubmit. You can select from drop-down or fill-in a number.
 - Failed retry interval: The time interval for resubmitting the task after a failed task. You can select from drop-down or fill-in a number.
+- Delay execution time: Task delay execution time.
 - Timeout alarm: Check the timeout alarm and timeout failure. When the task runs exceed the "timeout", an alarm email will send and the task execution will fail.
 - Condition: You can configure multiple conditions for the switch task. When the conditions are satisfied, execute the configured branch. You can configure multiple different conditions to satisfy different businesses.
 - Branch flow: The default branch flow, when all the conditions are not satisfied, execute this branch flow.
 
-## Detail
+## Task Example
 
-Here we have three tasks, the dependencies are `A -> B -> [C, D]`, and `task_a` is a shell task and `task_b` is a switch task
+This is demonstrated using one switch task and three shell tasks.
 
-- In task A, a global variable named `id` is defined through [global variable](../parameter/global.md), and the declaration method is `${setValue(id=1)}`
-- Task B adds conditions and uses global variables declared upstream to achieve conditional judgment (Note: switch can get the global variables value, as long as its direct or indirect upstream have already assigned the global variables before switch acquires). We want to execute task C when `id = 1`, otherwise run task D
-  - Configure task C to run when the global variable `id=1`. Then edit `${id} == 1` in the condition of task B, and select `C` as branch flow
-  - For other tasks, select `D` as branch flow
+### Create a workflow
 
-The following shows the switch task configuration:
+Create a new switch task, and three shell tasks downstream. The shell task is not required.
+The switch task needs to be connected with the downstream task to configure the relationship before the downstream task can be selected.
 
-![task-switch-configure](/img/switch_configure.jpg)
+![switch_01](../../../../img/tasks/demo/switch_01.png)
 
-## Related Task
+### Set conditions
 
-[condition](conditions.md):[Condition](conditions.md)task mainly executes the corresponding branch based on the execution result status (success, failure) of the upstream node. 
-The [Switch](switch.md) task mainly executes the corresponding branch based on the value of the [global parameter](../parameter/global.md) and the judgment expression result written by the user.
\ No newline at end of file
+Configure the conditions and default branches. If the conditions are met, the specified branch will be taken. If the conditions are not met, the default branch will be taken.
+In the figure, if the value of the variable is "A", the branch taskA is executed, if the value of the variable is "B", the branch taskB is executed, and default is executed if both are not satisfied.
+
+![switch_02](../../../../img/tasks/demo/switch_02.png)
+
+Conditions use global variables, please refer to [Global Parameter](../parameter/global.md).
+The value of the global variable configured here is A.
+
+![switch_03](../../../../img/tasks/demo/switch_03.png)
+
+If executed correctly, then taskA will be executed correctly.
+
+### Execute
+
+Execute and see if it works as expected. It can be seen that the specified downstream tasksA are executed as expected.
+
+![switch_04](../../../../img/tasks/demo/switch_04.png)
\ No newline at end of file
diff --git a/docs/docs/zh/guide/task/switch.md b/docs/docs/zh/guide/task/switch.md
index 7a385ae38f..8b6af21b65 100644
--- a/docs/docs/zh/guide/task/switch.md
+++ b/docs/docs/zh/guide/task/switch.md
@@ -1,37 +1,58 @@
 # Switch
 
-Switch是一个条件判断节点,依据[全局变量](../parameter/global.md)的值和用户所编写的表达式判断结果执行对应分支。
+Switch 是一个条件判断节点,依据[全局变量](../parameter/global.md)的值和用户所编写的表达式判断结果执行对应分支。
+**注意**使用 javax.script.ScriptEngine.eval 执行表达式。
 
 ## 创建任务
 
-拖动工具栏中的<img src="/img/switch.png" width="20"/>任务节点到画板中即能完成任务创建,**注意**switch任务创建后,要先配置上下游,才能配置任务分支的参数
+点击项目管理 -> 项目名称 -> 工作流定义,点击"创建工作流"按钮,进入 DAG 编辑页面。
+拖动工具栏中的 <img src="../../../../img/switch.png" width="20"/> 任务节点到画板中即能完成任务创建。
+**注意** switch 任务创建后,要先配置上下游,才能配置任务分支的参数。
 
 ## 任务参数
 
 - 节点名称:一个工作流定义中的节点名称是唯一的。
 - 运行标志:标识这个节点是否能正常调度,如果不需要执行,可以打开禁止执行开关。
 - 描述信息:描述该节点的功能。
-- 任务优先级:worker线程数不足时,根据优先级从高到低依次执行,优先级一样时根据先进先出原则执行。
-- Worker分组:任务分配给worker组的机器机执行,选择Default,会随机选择一台worker机执行。
+- 任务优先级:worker 线程数不足时,根据优先级从高到低依次执行,优先级一样时根据先进先出原则执行。
+- Worker 分组:任务分配给 worker 组的机器机执行,选择 Default,会随机选择一台 worker 机执行。
+- 环境名称:安全中心中配置的环境,不配置则不使用。
+- 任务组名称:资源中心中配置的任务组,不配置则不使用。
 - 失败重试次数:任务失败重新提交的次数,支持下拉和手填。
 - 失败重试间隔:任务失败重新提交任务的时间间隔,支持下拉和手填。
-- 超时告警:勾选超时告警、超时失败,当任务超过"超时时长"后,会发送告警邮件并且任务执行失败.
-- 条件:可以为switch任务配置多个条件,当条件满足时,就会执行指定的分支,可以配置多个不同的条件来满足不同的业务
-- 分支流转:默认的流转内容,当**条件**中的内容为全部不符合要求时,则运行**分支流转**中指定的分支
+- 延时执行时间:任务延迟执行的时间。
+- 超时告警:勾选超时告警、超时失败,当任务超过"超时时长"后,会发送告警邮件并且任务执行失败。
+- 条件:可以为 switch 任务配置多个条件,当条件满足时,就会执行指定的分支,可以配置多个不同的条件来满足不同的业务,使用字符串判断时需要使用""。
+- 分支流转:默认的流转内容,当**条件**中的内容为全部不符合要求时,则运行**分支流转**中指定的分支。
 
-## 详细流程
+## 任务样例
 
-假设我们三个任务,其依赖关系是 `A -> B -> [C, D]` 其中task_a是shell任务,task_b是switch任务
+这里使用一个 switch 任务以及三个 shell 任务来演示。
 
-- 任务A中通过[全局变量](../parameter/global.md)定义了名为`id`的全局变量,声明方式为`${setValue(id=1)}`
-- 任务B增加条件,使用上游声明的全局变量实现条件判断(注意:只要直接、非直接上游在switch运行前对全局变量赋值,switch运行时就可以获取该全局变量)。下面我们想要实现当id为1时,运行任务C,其他运行任务D
-  - 配置当全局变量`id=1`时,运行任务C。则在任务B的条件中编辑`${id} == 1`,分支流转选择`C`
-  - 对于其他任务,在分支流转中选择`D`
+### 创建工作流
 
-最终switch任务的配置如下
+新建 switch 任务,以及下游的三个 shell 任务。shell 任务没有要求。
+switch 任务需要和下游任务连线配置关系后,才可以进行下游任务的选择。
 
-![task-switch-configure](/img/switch_configure.jpg)
+![switch_01](../../../../img/tasks/demo/switch_01.png)
 
-## 相关任务
+### 设置条件
+
+配置条件和默认分支,满足条件会走指定分支,都不满足则走默认分支。
+图中如果变量的值为 "A" 则执行分支 taskA,如果变量的值为 "B" 则执行分支 taskB ,都不满足则执行 default。
+
+![switch_02](../../../../img/tasks/demo/switch_02.png)
+
+条件使用了全局变量,请参考[全局变量](../parameter/global.md)。
+这里配置全局变量的值为 A。
+
+![switch_03](../../../../img/tasks/demo/switch_03.png)
+
+如果执行正确,那么 taskA 会被正确执行。
+
+### 执行
+
+执行,并且查看是否符合预期。可以看到符合预期,执行了指定的下游任务 taskA。
+
+![switch_04](../../../../img/tasks/demo/switch_04.png)
 
-[condition](conditions.md):[Condition](conditions.md)节点主要依据上游节点的执行状态(成功、失败)执行对应分支。Switch节点主要依据全局变量的值和用户所编写的表达式判断结果执行对应分支
diff --git a/docs/img/switch_configure.jpg b/docs/img/switch_configure.jpg
deleted file mode 100644
index 75bbd9c29e..0000000000
Binary files a/docs/img/switch_configure.jpg and /dev/null differ
diff --git a/docs/img/tasks/demo/switch_01.png b/docs/img/tasks/demo/switch_01.png
new file mode 100644
index 0000000000..c99c7edca4
Binary files /dev/null and b/docs/img/tasks/demo/switch_01.png differ
diff --git a/docs/img/tasks/demo/switch_02.png b/docs/img/tasks/demo/switch_02.png
new file mode 100644
index 0000000000..48aa3edec1
Binary files /dev/null and b/docs/img/tasks/demo/switch_02.png differ
diff --git a/docs/img/tasks/demo/switch_03.png b/docs/img/tasks/demo/switch_03.png
new file mode 100644
index 0000000000..d4509bac50
Binary files /dev/null and b/docs/img/tasks/demo/switch_03.png differ
diff --git a/docs/img/tasks/demo/switch_04.png b/docs/img/tasks/demo/switch_04.png
new file mode 100644
index 0000000000..57144049b0
Binary files /dev/null and b/docs/img/tasks/demo/switch_04.png differ