You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hop.apache.org by ha...@apache.org on 2022/04/01 12:53:12 UTC

[hop] branch master updated: i18n for zh_CN

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

hansva pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hop.git


The following commit(s) were added to refs/heads/master by this push:
     new a6a8ef6  i18n for zh_CN
     new 22bc4f4  Merge pull request #1439 from shlxue/master
a6a8ef6 is described below

commit a6a8ef687dbfc4ba4f28d5be2e6ce62822e867a8
Author: Shl Xue <xu...@gmail.com>
AuthorDate: Fri Apr 1 12:04:29 2022 +0800

    i18n for zh_CN
---
 .../messages/messages_zh_CN.properties             |    7 +-
 .../database/messages/messages_zh_CN.properties    |   69 +-
 .../logging/messages/messages_zh_CN.properties     |  177 ++-
 .../hop/core/messages/messages_zh_CN.properties    |   49 +-
 .../plugins/messages/messages_zh_CN.properties     |   29 +-
 .../core/util/messages/messages_zh_CN.properties   |   11 +-
 .../core/vfs/messages/messages_zh_CN.properties    |    5 +-
 .../hop/i18n/messages/messages_zh_CN.properties    |  131 +-
 .../core/impl/messages/messages_zh_CN.properties   |    9 +-
 .../auth/core/messages/messages_zh_CN.properties   |    5 +-
 .../core/auth/messages/messages_zh_CN.properties   |    5 +-
 .../core/undo/messages/messages_zh_CN.properties   |   47 +-
 .../pipeline/messages/messages_zh_CN.properties    |  453 +++---
 .../messages/messages_zh_CN.properties             |   11 +-
 .../transform/messages/messages_zh_CN.properties   |  216 +--
 .../dummy/messages/messages_zh_CN.properties       |   13 +-
 .../file/messages/messages_zh_CN.properties        |    5 +-
 .../injector/messages/messages_zh_CN.properties    |   19 +-
 .../missing/messages/messages_zh_CN.properties     |    5 +-
 .../resource/messages/messages_zh_CN.properties    |    9 +-
 .../hop/server/messages/messages_zh_CN.properties  |   31 +-
 .../config/messages/messages_zh_CN.properties      |   47 +-
 .../dummy/messages/messages_zh_CN.properties       |    9 +-
 .../start/messages/messages_zh_CN.properties       |   37 +-
 .../remote}/messages/messages_zh_CN.properties     |    6 +-
 .../workflow/messages/messages_zh_CN.properties    |  138 +-
 .../hop/www/messages/messages_zh_CN.properties     |  258 ++--
 .../abort/messages/messages_zh_CN.properties       |   26 +-
 .../messages/messages_zh_CN.properties             |   74 +-
 .../messages/messages_zh_CN.properties             |   47 +
 .../messages/messages_zh_CN.properties             |   54 +-
 .../messages/messages_zh_CN.properties             |   71 +-
 .../messages/messages_zh_CN.properties             |   51 +-
 .../copyfiles/messages/messages_zh_CN.properties   |  157 +-
 .../messages/messages_zh_CN.properties             |  106 +-
 .../createfile/messages/messages_zh_CN.properties  |   27 +-
 .../messages/messages_zh_CN.properties             |   17 +-
 .../delay/messages/messages_zh_CN.properties       |   19 +-
 .../deletefile/messages/messages_zh_CN.properties  |   35 +-
 .../deletefiles/messages/messages_zh_CN.properties |   78 +-
 .../messages/messages_zh_CN.properties             |   62 +-
 .../messages/messages_zh_CN.properties             |   31 +-
 .../dostounix/messages/messages_zh_CN.properties   |  108 +-
 .../eval/messages/messages_zh_CN.properties        |   22 +-
 .../messages/messages_zh_CN.properties             |  136 +-
 .../messages/messages_zh_CN.properties             |   89 +-
 .../filecompare/messages/messages_zh_CN.properties |   29 +-
 .../fileexists/messages/messages_zh_CN.properties  |   28 +-
 .../filesexist/messages/messages_zh_CN.properties  |   37 +-
 .../messages/messages_zh_CN.properties             |   25 +-
 .../messages/messages_zh_CN.properties             |   69 +-
 .../actions/ftp/messages/messages_zh_CN.properties |  248 ++--
 .../ftpdelete/messages/messages_zh_CN.properties   |  158 +-
 .../ftpput/messages/messages_zh_CN.properties      |  144 +-
 .../sftp/messages/messages_zh_CN.properties        |  129 +-
 .../sftpput/messages/messages_zh_CN.properties     |  154 +-
 .../util/messages/messages_zh_CN.properties        |   19 +-
 .../getpop/messages/messages_zh_CN.properties      |  332 +++--
 .../http/messages/messages_zh_CN.properties        |   90 +-
 .../mail/messages/messages_zh_CN.properties        |  205 +--
 .../movefiles/messages/messages_zh_CN.properties   |  198 ++-
 .../msgboxinfo/messages/messages_zh_CN.properties  |   16 +-
 .../messages/messages_zh_CN.properties             |  122 +-
 .../messages/messages_zh_CN.properties             |   84 +-
 .../messages/messages_zh_CN.properties             |   76 +-
 .../messages/messages_zh_CN.properties             |  208 +--
 .../messages/messages_zh_CN.properties             |  232 +--
 .../pgpverify/messages/messages_zh_CN.properties   |   27 +-
 .../ping/messages/messages_zh_CN.properties        |   50 +-
 .../pipeline/messages/messages_zh_CN.properties    |  109 +-
 .../repeat/messages/messages_zh_CN.properties      |   45 +
 .../messages/messages_zh_CN.properties             |   75 +-
 .../messages/messages_zh_CN.properties             |   44 +-
 .../shell/messages/messages_zh_CN.properties       |   61 +-
 .../simpleeval/messages/messages_zh_CN.properties  |  119 +-
 .../snmptrap/messages/messages_zh_CN.properties    |   70 +-
 .../actions/sql/messages/messages_zh_CN.properties |   47 +-
 .../success/messages/messages_zh_CN.properties     |   12 +-
 .../tableexists/messages/messages_zh_CN.properties |   28 +-
 .../telnet/messages/messages_zh_CN.properties      |   23 +-
 .../messages/messages_zh_CN.properties             |   46 +-
 .../unzip/messages/messages_zh_CN.properties       |  215 +--
 .../waitforfile/messages/messages_zh_CN.properties |   33 +-
 .../waitforsql/messages/messages_zh_CN.properties  |   95 +-
 .../messages/messages_zh_CN.properties             |   24 +-
 .../workflow/messages/messages_zh_CN.properties    |  112 +-
 .../writetofile/messages/messages_zh_CN.properties |   41 +-
 .../writetolog/messages/messages_zh_CN.properties  |   20 +-
 .../messages/messages_zh_CN.properties             |   31 +-
 .../messages/messages_zh_CN.properties             |  100 +-
 .../messages/messages_zh_CN.properties             |   30 +-
 .../xml/xslt/messages/messages_zh_CN.properties    |   80 +-
 .../zipfile/messages/messages_zh_CN.properties     |  200 +--
 .../messages/messages_zh_CN.properties             |    5 +-
 .../mariadb}/messages/messages_zh_CN.properties    |    7 +-
 .../mysql}/messages/messages_zh_CN.properties      |    7 +-
 .../beam/gui/messages/messages_zh_CN.properties    |   32 +
 .../metadata}/messages/messages_zh_CN.properties   |   14 +-
 .../bigtable/messages/messages_zh_CN.properties    |   37 +
 .../bq/messages/messages_zh_CN.properties          |   36 +
 .../io}/messages/messages_zh_CN.properties         |   15 +-
 .../kafka/messages/messages_zh_CN.properties       |   43 +
 .../pubsub}/messages/messages_zh_CN.properties     |   15 +-
 .../window}/messages/messages_zh_CN.properties     |   20 +-
 .../www/async}/messages/messages_zh_CN.properties  |   10 +-
 .../hop/git/messages/messages_zh_CN.properties     |   35 +-
 .../git/model/messages/messages_zh_CN.properties   |    5 +-
 .../imports/gui/messages/messages_zh_CN.properties |    3 +-
 .../kettle/messages/messages_zh_CN.properties      |   21 +-
 .../config/messages/messages_zh_CN.properties      |   25 +-
 .../environment/messages/messages_zh_CN.properties |   23 +-
 .../gui/messages/messages_zh_CN.properties         |  101 +-
 .../project/messages/messages_zh_CN.properties     |   48 +-
 .../meta/messages/messages_zh_CN.properties        |   19 +-
 .../transform/messages/messages_zh_CN.properties   |   11 +-
 .../probe/meta/messages/messages_zh_CN.properties  |   13 +-
 .../transform/messages/messages_zh_CN.properties   |    7 +-
 .../reader/meta/messages/messages_zh_CN.properties |    3 +-
 .../meta/messages/messages_zh_CN.properties        |   19 +-
 .../transform/messages/messages_zh_CN.properties   |    9 +-
 .../runtests/messages/messages_zh_CN.properties    |    7 +-
 .../testing/gui/messages/messages_zh_CN.properties |  134 +-
 .../hop/testing/messages/messages_zh_CN.properties |    7 +-
 .../exectests/messages/messages_zh_CN.properties   |   23 +-
 .../util/messages/messages_zh_CN.properties        |   11 +-
 .../testing/xp/messages/messages_zh_CN.properties  |    5 +-
 .../ui/testing/messages/messages_zh_CN.properties  |   73 +-
 .../avrodecode}/messages/messages_zh_CN.properties |   16 +-
 .../avroencode}/messages/messages_zh_CN.properties |   14 +-
 .../avroinput}/messages/messages_zh_CN.properties  |   10 +-
 .../s3/s3/vfs}/messages/messages_zh_CN.properties  |    7 +-
 .../s3common}/messages/messages_zh_CN.properties   |   10 +-
 .../listen}/messages/messages_zh_CN.properties     |    8 +-
 .../write}/messages/messages_zh_CN.properties      |    8 +-
 .../util}/messages/messages_zh_CN.properties       |    3 +-
 .../messages/messages_zh_CN.properties             |   43 +
 .../messages/messages_zh_CN.properties             |   63 +
 .../messages/messages_zh_CN.properties             |   37 +
 .../execcql}/messages/messages_zh_CN.properties    |   14 +-
 .../check}/messages/messages_zh_CN.properties      |   10 +-
 .../constraint/messages/messages_zh_CN.properties  |   31 +
 .../messages/messages_zh_CN.properties             |   18 +-
 .../index/messages/messages_zh_CN.properties       |   32 +
 .../model}/messages/messages_zh_CN.properties      |   11 +-
 .../perspective/messages/messages_zh_CN.properties |   52 +
 .../shared/messages/messages_zh_CN.properties      |   39 +
 .../cypher}/messages/messages_zh_CN.properties     |   20 +-
 .../gencsv}/messages/messages_zh_CN.properties     |    8 +-
 .../graph}/messages/messages_zh_CN.properties      |    3 +-
 .../importer}/messages/messages_zh_CN.properties   |    8 +-
 .../loginfo/messages/messages_zh_CN.properties     |   35 +
 .../output/messages/messages_zh_CN.properties      |   59 +
 .../split}/messages/messages_zh_CN.properties      |    8 +-
 .../input}/messages/messages_zh_CN.properties      |   20 +-
 .../output/messages/messages_zh_CN.properties      |   41 +
 .../abort/messages/messages_zh_CN.properties       |   35 +-
 .../addsequence/messages/messages_zh_CN.properties |   81 +-
 .../messages/messages_zh_CN.properties             |   45 +-
 .../append/messages/messages_zh_CN.properties      |   23 +-
 .../messages/messages_zh_CN.properties             |   45 +-
 .../messages/messages_zh_CN.properties             |   26 +-
 .../calculator/messages/messages_zh_CN.properties  |   76 +-
 .../messages/messages_zh_CN.properties             |   92 +-
 .../checksum/messages/messages_zh_CN.properties    |   36 +-
 .../clonerow/messages/messages_zh_CN.properties    |   71 +-
 .../closure/messages/messages_zh_CN.properties     |   30 +
 .../coalesce/messages/messages_zh_CN.properties    |   48 +
 .../messages/messages_zh_CN.properties             |   77 +-
 .../messages/messages_zh_CN.properties             |  137 +-
 .../messages/messages_zh_CN.properties             |   52 +
 .../constant/messages/messages_zh_CN.properties    |   26 +-
 .../messages/messages_zh_CN.properties             |   48 +-
 .../cubeinput/messages/messages_zh_CN.properties   |   33 +-
 .../cubeoutput/messages/messages_zh_CN.properties  |   38 +-
 .../messages/messages_zh_CN.properties             |   90 +-
 .../messages/messages_zh_CN.properties             |  177 +--
 .../datagrid/messages/messages_zh_CN.properties    |   39 +-
 .../dbproc/messages/messages_zh_CN.properties      |   73 +-
 .../delay/messages/messages_zh_CN.properties       |   35 +-
 .../delete/messages/messages_zh_CN.properties      |  101 +-
 .../messages/messages_zh_CN.properties             |   94 +-
 .../messages/messages_zh_CN.properties             |   13 +-
 .../messages/messages_zh_CN.properties             |   25 +-
 .../messages/messages_zh_CN.properties             |  302 ++--
 .../messages/messages_zh_CN.properties             |   47 +-
 .../edi2xml}/messages/messages_zh_CN.properties    |   18 +-
 .../excelinput/messages/messages_zh_CN.properties  |  263 ++--
 .../excelwriter/messages/messages_zh_CN.properties |  178 ++-
 .../execprocess/messages/messages_zh_CN.properties |   59 +-
 .../execsqlrow/messages/messages_zh_CN.properties  |   43 +-
 .../fake}/messages/messages_zh_CN.properties       |   12 +-
 .../messages/messages_zh_CN.properties             |   31 +-
 .../messages/messages_zh_CN.properties             |   68 +-
 .../fileexists/messages/messages_zh_CN.properties  |   57 +-
 .../filelocked/messages/messages_zh_CN.properties  |   49 +-
 .../messages/messages_zh_CN.properties             |   18 +-
 .../messages/messages_zh_CN.properties             |   13 +-
 .../messages/messages_zh_CN.properties             |   27 +-
 .../filterrows/messages/messages_zh_CN.properties  |  115 +-
 .../flattener/messages/messages_zh_CN.properties   |   42 +-
 .../fuzzymatch/messages/messages_zh_CN.properties  |  177 +--
 .../messages/messages_zh_CN.properties             |  129 +-
 .../messages/messages_zh_CN.properties             |  147 +-
 .../messages/messages_zh_CN.properties             |   37 +
 .../messages/messages_zh_CN.properties             |   66 +-
 .../messages/messages_zh_CN.properties             |  127 +-
 .../getvariable/messages/messages_zh_CN.properties |   20 +-
 .../groupby/messages/messages_zh_CN.properties     |  108 +-
 .../http/messages/messages_zh_CN.properties        |  101 +-
 .../httppost/messages/messages_zh_CN.properties    |   89 ++
 .../ifnull/messages/messages_zh_CN.properties      |   67 +-
 .../messages/messages_zh_CN.properties             |  154 +-
 .../janino/messages/messages_zh_CN.properties      |   16 +-
 .../javafilter/messages/messages_zh_CN.properties  |   59 +-
 .../messages/messages_zh_CN.properties             |  126 +-
 .../javascript/messages/messages_zh_CN.properties  |  167 ++-
 .../joinrows/messages/messages_zh_CN.properties    |   67 +-
 .../jsoninput/messages/messages_zh_CN.properties   |  263 ++--
 .../jsonoutput/messages/messages_zh_CN.properties  |  107 +-
 .../messages/messages_zh_CN.properties             |   85 ++
 .../consumer/messages/messages_zh_CN.properties    |   55 +
 .../producer/messages/messages_zh_CN.properties    |   40 +
 .../ldapinput/messages/messages_zh_CN.properties   |  124 +-
 .../ldapoutput/messages/messages_zh_CN.properties  |   93 +-
 .../messages/messages_zh_CN.properties             |  247 ++--
 .../mail/messages/messages_zh_CN.properties        |  300 ++--
 .../mailinput/messages/messages_zh_CN.properties   |  169 ++-
 .../input/messages/messages_zh_CN.properties       |   19 +-
 .../mapping/messages/messages_zh_CN.properties     |  195 +--
 .../output/messages/messages_zh_CN.properties      |   29 +-
 .../memgroupby/messages/messages_zh_CN.properties  |  102 +-
 .../mergejoin/messages/messages_zh_CN.properties   |   47 +-
 .../mergerows/messages/messages_zh_CN.properties   |   47 +-
 .../metainput/messages/messages_zh_CN.properties   |   32 +
 .../metainject/messages/messages_zh_CN.properties  |  117 +-
 .../messages/messages_zh_CN.properties             |   35 +-
 .../messages/messages_zh_CN.properties             |   82 +-
 .../hop/mongo/messages/messages_zh_CN.properties   |   27 +
 .../field/messages/messages_zh_CN.properties       |   27 +
 .../wrapper/messages/messages_zh_CN.properties     |   29 +
 .../messages/messages_zh_CN.properties             |   50 +-
 .../messages/messages_zh_CN.properties             |  110 ++
 .../multimerge/messages/messages_zh_CN.properties  |   44 +
 .../normaliser/messages/messages_zh_CN.properties  |   31 +-
 .../nullif/messages/messages_zh_CN.properties      |   22 +-
 .../numberrange/messages/messages_zh_CN.properties |   17 +-
 .../messages/messages_zh_CN.properties             |  207 +--
 .../messages/messages_zh_CN.properties             |   58 +
 .../messages/messages_zh_CN.properties             |   57 +
 .../messages/messages_zh_CN.properties             |   90 ++
 .../messages/messages_zh_CN.properties             |   68 +-
 .../messages/messages_zh_CN.properties             |  212 +--
 .../messages/messages_zh_CN.properties             |   80 +-
 .../randomvalue/messages/messages_zh_CN.properties |   24 +-
 .../regexeval/messages/messages_zh_CN.properties   |  121 +-
 .../messages/messages_zh_CN.properties             |   57 +-
 .../messages/messages_zh_CN.properties             |    9 +-
 .../rest/messages/messages_zh_CN.properties        |  107 ++
 .../messages/messages_zh_CN.properties             |   49 +-
 .../messages/messages_zh_CN.properties             |    8 +-
 .../messages/messages_zh_CN.properties             |   20 +-
 .../messages/messages_zh_CN.properties             |   10 +-
 .../salesforce/messages/messages_zh_CN.properties  |   70 +
 .../messages/messages_zh_CN.properties             |   45 +-
 .../messages/messages_zh_CN.properties             |  115 +-
 .../messages/messages_zh_CN.properties             |   69 +-
 .../messages/messages_zh_CN.properties             |   57 +-
 .../messages/messages_zh_CN.properties             |   86 ++
 .../messages/messages_zh_CN.properties             |    5 +-
 .../samplerows/messages/messages_zh_CN.properties  |   31 +-
 .../sasinput/messages/messages_zh_CN.properties    |   23 +-
 .../messages/messages_zh_CN.properties             |  155 +-
 .../messages/messages_zh_CN.properties             |   36 +
 .../messages/messages_zh_CN.properties             |   43 +-
 .../messages/messages_zh_CN.properties             |   21 +-
 .../setvariable/messages/messages_zh_CN.properties |   44 +-
 .../sort/messages/messages_zh_CN.properties        |   62 +-
 .../sortedmerge/messages/messages_zh_CN.properties |   35 +-
 .../messages/messages_zh_CN.properties             |   47 +-
 .../messages/messages_zh_CN.properties             |    7 +-
 .../hop/splunk}/messages/messages_zh_CN.properties |   10 +-
 .../sql/messages/messages_zh_CN.properties         |   87 +-
 .../messages/messages_zh_CN.properties             |  111 +-
 .../ssh/messages/messages_zh_CN.properties         |   78 +-
 .../messages/messages_zh_CN.properties             |   48 +
 .../messages/messages_zh_CN.properties             |  118 +-
 .../messages/messages_zh_CN.properties             |   15 +-
 .../stringcut/messages/messages_zh_CN.properties   |   47 +-
 .../messages/messages_zh_CN.properties             |   62 +-
 .../switchcase/messages/messages_zh_CN.properties  |   63 +-
 .../messages/messages_zh_CN.properties             |  143 +-
 .../systemdata/messages/messages_zh_CN.properties  |  104 +-
 .../messages/messages_zh_CN.properties             |  127 +-
 .../tableexists/messages/messages_zh_CN.properties |   47 +-
 .../tableinput/messages/messages_zh_CN.properties  |   60 +-
 .../tableoutput/messages/messages_zh_CN.properties |  132 +-
 .../terafast/messages/messages_zh_CN.properties    |   35 +-
 .../csvinput/messages/messages_zh_CN.properties    |   95 +-
 .../fileinput/messages/messages_zh_CN.properties   |  436 +++---
 .../text/messages/messages_zh_CN.properties        |  434 +++---
 .../messages/messages_zh_CN.properties             |  119 +-
 .../tika/messages/messages_zh_CN.properties        |  105 ++
 .../messages/messages_zh_CN.properties             |   80 ++
 .../uniquerows/messages/messages_zh_CN.properties  |   49 +-
 .../messages/messages_zh_CN.properties             |   31 +-
 .../update/messages/messages_zh_CN.properties      |  148 +-
 .../valuemapper/messages/messages_zh_CN.properties |   28 +-
 .../messages/messages_zh_CN.properties             |   31 +-
 .../webservices/messages/messages_zh_CN.properties |   91 +-
 .../wsdl}/messages/messages_zh_CN.properties       |    4 +-
 .../messages/messages_zh_CN.properties             |  149 +-
 .../writetolog/messages/messages_zh_CN.properties  |   35 +-
 .../xml/addxml/messages/messages_zh_CN.properties  |   47 +-
 .../getxmldata/messages/messages_zh_CN.properties  |  295 ++--
 .../messages/messages_zh_CN.properties             |   73 +-
 .../xml/xmljoin/messages/messages_zh_CN.properties |   60 +-
 .../xmloutput/messages/messages_zh_CN.properties   |  106 +-
 .../messages/messages_zh_CN.properties             |   79 +-
 .../xml/xslt/messages/messages_zh_CN.properties    |   87 +-
 .../yamlinput/messages/messages_zh_CN.properties   |  106 +-
 .../zipfile/messages/messages_zh_CN.properties     |   89 +-
 .../dialog/messages/messages_zh_CN.properties      |  137 +-
 .../database/messages/messages_zh_CN.properties    |  179 +--
 .../wizard/messages/messages_zh_CN.properties      |   81 +-
 .../core/dialog/messages/messages_zh_CN.properties |  439 +++---
 .../metadata/messages/messages_zh_CN.properties    |   11 +-
 .../ui/core/vfs/messages/messages_zh_CN.properties |   65 +-
 .../core/widget/messages/messages_zh_CN.properties |  143 +-
 .../metadata/messages/messages_zh_CN.properties    |    5 +-
 .../delegates/messages/messages_zh_CN.properties   |    3 +-
 .../dialog/messages/messages_zh_CN.properties      |   95 +-
 .../hopgui/file/messages/messages_zh_CN.properties |    3 +-
 .../context/messages/messages_zh_CN.properties     |    5 +-
 .../pipeline/messages/messages_zh_CN.properties    |  129 +-
 .../context/messages/messages_zh_CN.properties     |    5 +-
 .../delegates/messages/messages_zh_CN.properties   |   17 +-
 .../workflow/messages/messages_zh_CN.properties    | 1511 ++++++++++----------
 .../ui/hopgui/messages/messages_zh_CN.properties   | 1356 +++++++++---------
 .../dataorch/messages/messages_zh_CN.properties    |    7 +-
 .../explorer/messages/messages_zh_CN.properties    |   33 +-
 .../metadata/messages/messages_zh_CN.properties    |   19 +-
 .../messages/messages_zh_CN.properties             |    7 +-
 .../search/messages/messages_zh_CN.properties      |   23 +-
 .../wizards/messages/messages_zh_CN.properties     |   23 +-
 .../i18n/editor/messages/messages_zh_CN.properties |   63 +-
 .../partition/messages/messages_zh_CN.properties   |   17 +-
 .../debug/messages/messages_zh_CN.properties       |   23 +-
 .../dialog/messages/messages_zh_CN.properties      |  353 +++--
 .../common/messages/messages_zh_CN.properties      |   35 +-
 .../missing/messages/messages_zh_CN.properties     |    9 +-
 .../ui/server/messages/messages_zh_CN.properties   |   55 +-
 .../actions/messages/messages_zh_CN.properties     |   83 +-
 .../missing/messages/messages_zh_CN.properties     |    9 +-
 .../config/messages/messages_zh_CN.properties      |   23 +-
 .../dialog/messages/messages_zh_CN.properties      |  191 ++-
 .../www/service/messages/messages_zh_CN.properties |   17 +-
 356 files changed, 16434 insertions(+), 10964 deletions(-)

diff --git a/core/src/main/resources/org/apache/hop/compatibility/messages/messages_zh_CN.properties b/core/src/main/resources/org/apache/hop/compatibility/messages/messages_zh_CN.properties
index 8177b55..7cff9ce 100644
--- a/core/src/main/resources/org/apache/hop/compatibility/messages/messages_zh_CN.properties
+++ b/core/src/main/resources/org/apache/hop/compatibility/messages/messages_zh_CN.properties
@@ -16,11 +16,10 @@
 # limitations under the License.
 #
 #
-#
 Row.EndOfFileReached=\u5230\u8FBE\u6587\u4EF6\u672B\u5C3E
-Row.ErrorDeserializing=\u4ECE\u5B57\u8282\u6570\u7EC4\u4E2D\u53CD\u5E8F\u5217\u5316\u6210\u884C\u6570\u636E\u65F6\u53D1\u751F\u9519\u8BEF
-Row.RowError=\u8BFB\u884C\u4FE1\u606F\u65F6\u53D1\u751F\u884C\u9519\u8BEF(ROW Error)
 Row.EndOfFileReadingRow=\u8BFB\u884C\u65F6\u5230\u8FBE\u672B\u5C3E(EOF)
-Row.ErrorWritingRow=\u5411\u8F93\u51FA\u6D41\u4E2D\u5199\u5165\u884C\u6570\u636E\u65F6\u53D1\u751F\u9519\u8BEF
+Row.ErrorDeserializing=\u4ECE\u5B57\u8282\u6570\u7EC4\u4E2D\u53CD\u5E8F\u5217\u5316\u6210\u884C\u6570\u636E\u65F6\u53D1\u751F\u9519\u8BEF
 Row.ErrorReadingRowData=\u4ECE\u8F93\u5165\u6D41\u4E2D\u8BFB\u53D6\u884C\u6570\u636E\u65F6\u53D1\u751F\u9519\u8BEF
 Row.ErrorSerializing=\u5C06\u884C\u6570\u636E\u5E8F\u5217\u5316\u6210\u5B57\u8282\u6570\u7EC4\u65F6\u53D1\u751F\u9519\u8BEF
+Row.ErrorWritingRow=\u5411\u8F93\u51FA\u6D41\u4E2D\u5199\u5165\u884C\u6570\u636E\u65F6\u53D1\u751F\u9519\u8BEF
+Row.RowError=\u8BFB\u884C\u4FE1\u606F\u65F6\u53D1\u751F\u884C\u9519\u8BEF(ROW Error)
diff --git a/core/src/main/resources/org/apache/hop/core/database/messages/messages_zh_CN.properties b/core/src/main/resources/org/apache/hop/core/database/messages/messages_zh_CN.properties
index c555def..000c4e9 100644
--- a/core/src/main/resources/org/apache/hop/core/database/messages/messages_zh_CN.properties
+++ b/core/src/main/resources/org/apache/hop/core/database/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,49 +15,47 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.core.database' in locale 'zh_CN'
-#
 #
-DatabaseMeta.report.Hostname=\u4E3B\u673A\u540D\: 
-DatabaseMeta.Info.GettingProcedures=\u83B7\u53D6\u5B58\u50A8\u8FC7\u7A0B...
-DatabaseMeta.Info.ConnectingDb=\u8FDE\u63A5\u5230\u6570\u636E\u5E93
-DatabaseMeta.Info.GettingMetaData=\u83B7\u53D6\u6570\u636E\u5E93\u5143\u4FE1\u606F
+BaseDatabaseMeta.TestConnectionReportNotImplemented.Message=\u62B1\u6B49,\u4E0D\u80FD\u4E3A\u8BE5\u6570\u636E\u5E93\u521B\u5EFA\u6D4B\u8BD5\u62A5\u544A.
 Database.CreatedConnectionPool=\u4E3A "{0}" \u521B\u5EFA\u6570\u636E\u5E93\u8FDE\u63A5\u6C60\u6210\u529F
-GenericDatabaseMeta.report.customDriverClass=\u81EA\u5B9A\u4E49\u9A71\u52A8\u7A0B\u5E8F\u7C7B\:
-Database.UnableToPreLoadConnectionToConnectionPool.Exception=\u4E0D\u80FD\u4E3A\u8FDE\u63A5\u6C60\u9884\u52A0\u8F7D\u8FDE\u63A5
 Database.CreatingConnectionPool=\u4E3A "{0}" \u521B\u5EFA\u6570\u636E\u5E93\u8FDE\u63A5\u6C60...
-Database.Exception.UnableToSetSavepoint=\u65E0\u6CD5\u8BBE\u7F6E\u4E8B\u52A1\u7684\u4FDD\u5B58\u70B9
+Database.Exception.EmptyConnectionError=\u8FDE\u63A5\u6570\u636E\u5E93 [{0}] \u65F6\u51FA\u9519
+Database.Exception.ErrorClosingCallableStatement=\u65E0\u6CD5\u5173\u95ED\u56DE\u8C03 Statement
+Database.Exception.UnableToDisableAutoCommit=\u65E0\u6CD5\u5173\u95ED\u6570\u636E\u5E93\u8FDE\u63A5 "{0}" \u4E0A\u7684\u81EA\u52A8\u63D0\u4EA4.
+Database.Exception.UnableToEnableAutoCommit=\u65E0\u6CD5\u6253\u5F00\u6570\u636E\u5E93\u8FDE\u63A5"{0}"\u4E0A\u7684\u81EA\u52A8\u63D0\u4EA4
+Database.Exception.UnableToFindClassMissingDriver=\u627E\u4E0D\u5230 JDBC \u9A71\u52A8\u7A0B\u5E8F\u7C7B\u201C{0}\u201D, \u8BF7\u786E\u4FDD\u5DF2\u5B89\u88C5\u201C{1}\u201D\u9A71\u52A8\u7A0B\u5E8F(jar \u6587\u4EF6).
+Database.Exception.UnableToGetMetadata=\u65E0\u6CD5\u4ECE\u6570\u636E\u5E93\u8FDE\u63A5\u83B7\u53D6\u6570\u636E\u5E93\u5143\u6570\u636E\u4FE1\u606F
+Database.Exception.UnableToReleaseSavepoint=\u65E0\u6CD5\u91CA\u653E\u4E8B\u52A1\u4FDD\u5B58\u70B9
 Database.Exception.UnableToRollbackToSavepoint=\u65E0\u6CD5\u56DE\u6EDA\u5230\u4E8B\u52A1\u4FDD\u5B58\u70B9
-DatabaseMeta.report.ConnectionOk=\u6B63\u786E\u8FDE\u63A5\u5230\u6570\u636E\u5E93[{0}] 
+Database.Exception.UnableToSetSavepoint=\u65E0\u6CD5\u8BBE\u7F6E\u4E8B\u52A1\u7684\u4FDD\u5B58\u70B9
+Database.Exception.UnableToSetSavepointName=\u65E0\u6CD5\u8BBE\u7F6E\u540D\u79F0\u4E3A"{0}"\u7684\u4E8B\u52A1\u4FDD\u5B58\u70B9
+Database.UnableToCheckIfConnectionPoolExists.Exception=\u68C0\u67E5\u8FDE\u63A5\u6C60\u662F\u5426\u88AB\u6CE8\u518C\u65F6\u53D1\u751F\u9519\u8BEF.
+Database.UnableToLoadConnectionPoolDriver.Exception=\u4E0D\u80FD\u4E3A\u8FDE\u63A5\u6C60 [{0}] \u548C\u7C7B [{1}] \u52A0\u8F7D\u9A71\u52A8
+Database.UnableToPreLoadConnectionToConnectionPool.Exception=\u4E0D\u80FD\u4E3A\u8FDE\u63A5\u6C60\u9884\u52A0\u8F7D\u8FDE\u63A5
+DatabaseMeta.BadConnectionName=\u8BF7\u6307\u5B9A\u6570\u636E\u5E93\u8FDE\u63A5\u540D\u79F0
+DatabaseMeta.BadDatabaseName=\u8BF7\u6307\u5B9A\u6570\u636E\u5E93\u540D\u79F0
+DatabaseMeta.BadInterface=\u672A\u6307\u5B9A\u6570\u636E\u5E93\u7C7B\u578B
+DatabaseMeta.Error.DatabaseInterfaceNotFound=\u672A\u627E\u5230\u6570\u636E\u5E93\u63A5\u53E3 {0} \u7684\u5B9E\u73B0\u7C7B
+DatabaseMeta.Error.UnableRetrieveDbInfo=\u56E0\u4E3A\u9519\u8BEF\u4E0D\u80FD\u63D0\u53D6\u6570\u636E\u5E93\u4FE1\u606F
+DatabaseMeta.Error.UnexpectedCatalogError=\u83B7\u53D6\u6570\u636E\u5E93\u76EE\u5F55\u4FE1\u606F\u65F6\u53D1\u751F\u9519\u8BEF
+DatabaseMeta.Error.UnexpectedError=\u83B7\u53D6\u6570\u636E\u5E93\u6A21\u5F0F\u4FE1\u606F\u65F6\u53D1\u751F\u9519\u8BEF
 DatabaseMeta.Info.ClosingDbConnection=\u5173\u95ED\u6570\u636E\u5E93\u8FDE\u63A5
-Database.Exception.EmptyConnectionError=\u8FDE\u63A5\u6570\u636E\u5E93 [{0}] \u65F6\u51FA\u9519
+DatabaseMeta.Info.ConnectingDb=\u8FDE\u63A5\u5230\u6570\u636E\u5E93
+DatabaseMeta.Info.GettingInfo=\u83B7\u53D6\u76EE\u5F55\u4FE1\u606F
 DatabaseMeta.Info.GettingInfoFromDb=\u6B63\u5728\u4ECE\u6570\u636E\u5E93\u8BFB\u53D6\u4FE1\u606F...
-DatabaseMeta.report.ConnectionWithPartError=\u9519\u8BEF\u8FDE\u63A5\u5206\u533AID\u4E3A[{1}]\u7684\u6570\u636E\u5E93[{0}]\: {2}
+DatabaseMeta.Info.GettingMetaData=\u83B7\u53D6\u6570\u636E\u5E93\u5143\u4FE1\u606F
+DatabaseMeta.Info.GettingProcedures=\u83B7\u53D6\u5B58\u50A8\u8FC7\u7A0B...
+DatabaseMeta.Info.GettingSchemaInfo=\u83B7\u53D6\u6A21\u5F0F\u4FE1\u606F
+DatabaseMeta.Info.GettingSynonyms=\u83B7\u53D6\u6570\u636E\u5E93\u5BF9\u8C61\u7684\u522B\u540D
+DatabaseMeta.Info.GettingTables=\u83B7\u53D6\u8868
+DatabaseMeta.Info.GettingViews=\u83B7\u53D6\u89C6\u56FE
 DatabaseMeta.report.ConnectionError=\u9519\u8BEF\u8FDE\u63A5\u6570\u636E\u5E93 [{0}]\: 
-Database.Exception.UnableToGetMetadata=\u65E0\u6CD5\u4ECE\u8BE5\u6570\u636E\u5E93\u83B7\u53D6\u5176\u5143\u6570\u636E
+DatabaseMeta.report.ConnectionOk=\u6B63\u786E\u8FDE\u63A5\u5230\u6570\u636E\u5E93[{0}] 
+DatabaseMeta.report.ConnectionWithPartError=\u9519\u8BEF\u8FDE\u63A5\u5206\u533AID\u4E3A[{1}]\u7684\u6570\u636E\u5E93[{0}]\: {2}
+DatabaseMeta.report.ConnectionWithPartOk=\u6B63\u786E\u8FDE\u63A5\u5206\u533AID\u4E3A[{1}]\u7684\u6570\u636E\u5E93[{0}]
 DatabaseMeta.report.DatabaseName=\u6570\u636E\u5E93\u540D\:
-DatabaseMeta.Info.GettingInfo=\u83B7\u53D6\u76EE\u5F55\u4FE1\u606F
-DatabaseMeta.Info.GettingViews=\u83B7\u53D6\u89C6\u56FE
-DatabaseMeta.Error.UnexpectedCatalogError=\u83B7\u53D6\u6570\u636E\u5E93\u76EE\u5F55\u4FE1\u606F\u65F6\u53D1\u751F\u9519\u8BEF
-DatabaseMeta.BadConnectionName=\u8BF7\u4E3A\u8BE5\u6570\u636E\u5E93\u8FDE\u63A5\u547D\u540D
-DatabaseMeta.BadDatabaseName=\u8BF7\u6307\u5B9A\u8FD9\u4E2A\u6570\u636E\u5E93\u7684\u540D\u79F0
-Database.UnableToCheckIfConnectionPoolExists.Exception=\u68C0\u67E5\u8FDE\u63A5\u6C60\u662F\u5426\u88AB\u6CE8\u518C\u65F6\u53D1\u751F\u9519\u8BEF\u3002
-Database.Exception.UnableToEnableAutoCommit=\u65E0\u6CD5\u6253\u5F00\u6570\u636E\u5E93\u8FDE\u63A5"{0}"\u4E0A\u7684\u81EA\u52A8\u63D0\u4EA4
-Database.UnableToLoadConnectionPoolDriver.Exception=\u4E0D\u80FD\u4E3A\u8FDE\u63A5\u6C60 [{0}] \u548C\u7C7B [{1}] \u52A0\u8F7D\u9A71\u52A8
-Database.Exception.UnableToSetSavepointName=\u65E0\u6CD5\u8BBE\u7F6E\u540D\u79F0\u4E3A"{0}"\u7684\u4E8B\u52A1\u4FDD\u5B58\u70B9
-DatabaseMeta.Info.GettingTables=\u83B7\u53D6\u8868
-DatabaseMeta.Error.DatabaseInterfaceNotFound=\u672A\u627E\u5230\u6570\u636E\u5E93\u63A5\u53E3 {0}
-DatabaseMeta.Info.GettingSynonyms=\u83B7\u53D6\u6570\u636E\u5E93\u5BF9\u8C61\u7684\u522B\u540D
-BaseDatabaseMeta.TestConnectionReportNotImplemented.Message=\u62B1\u6B49,\u4E0D\u80FD\u4E3A\u8BE5\u6570\u636E\u5E93\u521B\u5EFA\u6D4B\u8BD5\u62A5\u544A\u3002
+DatabaseMeta.report.Hostname=\u4E3B\u673A\u540D\: 
 DatabaseMeta.report.Port=\u7AEF\u53E3\: 
-DatabaseMeta.report.ConnectionWithPartOk=\u6B63\u786E\u8FDE\u63A5\u5206\u533AID\u4E3A[{1}]\u7684\u6570\u636E\u5E93[{0}]
-Database.Exception.ErrorClosingCallableStatement=\u65E0\u6CD5\u5173\u95ED callable statement
-DatabaseMeta.Info.GettingSchemaInfo=\u83B7\u53D6\u6A21\u5F0F\u4FE1\u606F
 DatabaseUtil.DSNotFound=\u65E0\u6548\u7684\u6570\u636E\u6E90\: "{0}"
-DatabaseMeta.Error.UnexpectedError=\u83B7\u53D6\u6570\u636E\u5E93\u6A21\u5F0F\u4FE1\u606F\u65F6\u53D1\u751F\u9519\u8BEF
+GenericDatabaseMeta.report.customDriverClass=\u81EA\u5B9A\u4E49\u9A71\u52A8\u7A0B\u5E8F\u7C7B\:
 GenericDatabaseMeta.report.customUrl=\u81EA\u5B9A\u4E49\u7F51\u5740\:
-DatabaseMeta.BadInterface=\u672A\u9009\u62E9\u6570\u636E\u5E93\u7C7B\u578B
-Database.Exception.UnableToFindClassMissingDriver=\u65E0\u6CD5\u627E\u5230 JDBC \u9A71\u52A8\u7C7B "{0}"\uFF0C\u8BF7\u786E\u8BA4\u5DF2\u7ECF\u5B89\u88C5 "{1}" \u9A71\u52A8(jar \u6587\u4EF6)
-Database.Exception.UnableToReleaseSavepoint=\u65E0\u6CD5\u91CA\u653E\u4E8B\u52A1\u4FDD\u5B58\u70B9
-Database.Exception.UnableToDisableAutoCommit=\u65E0\u6CD5\u5173\u95ED\u6570\u636E\u5E93\u8FDE\u63A5 "{0}" \u4E0A\u7684\u81EA\u52A8\u63D0\u4EA4\u3002
-DatabaseMeta.Error.UnableRetrieveDbInfo=\u56E0\u4E3A\u9519\u8BEF\u4E0D\u80FD\u63D0\u53D6\u6570\u636E\u5E93\u4FE1\u606F
diff --git a/core/src/main/resources/org/apache/hop/core/logging/messages/messages_zh_CN.properties b/core/src/main/resources/org/apache/hop/core/logging/messages/messages_zh_CN.properties
index 1313cb7..d6b333f 100644
--- a/core/src/main/resources/org/apache/hop/core/logging/messages/messages_zh_CN.properties
+++ b/core/src/main/resources/org/apache/hop/core/logging/messages/messages_zh_CN.properties
@@ -16,110 +16,109 @@
 # limitations under the License.
 #
 #
-#
+ActionLogTable.FieldName.ActionName=Action \u540D\u79F0
+ActionLogTable.FieldName.ChannelId=\u901A\u9053 ID
+ActionLogTable.FieldName.CopyNr=\u590D\u5236\u884C
+ActionLogTable.FieldName.Errors=\u9519\u8BEF
+ActionLogTable.FieldName.IdBatch=\u6279\u6B21 ID
+ActionLogTable.FieldName.JobName=\u4F5C\u4E1A\u540D
+ActionLogTable.FieldName.LinesInput=\u8F93\u5165
+ActionLogTable.FieldName.LinesOutput=\u8F93\u51FA
+ActionLogTable.FieldName.LinesRead=\u8BFB
+ActionLogTable.FieldName.LinesRejected=\u820D\u5F03
+ActionLogTable.FieldName.LinesUpdated=\u66F4\u65B0
+ActionLogTable.FieldName.LinesWritten=\u5199
+ActionLogTable.FieldName.LogDate=\u65E5\u5FD7\u65E5\u671F
+ActionLogTable.FieldName.LogField=\u65E5\u5FD7\u5B57\u6BB5
 ActionLogTable.FieldName.NrResultFiles=\u7ED3\u679C\u6587\u4EF6\u6570
-PipelineLogTable.FieldName.DepDate=\u4F9D\u8D56\u65E5\u671F
-PerformanceLogTable.FieldName.TransformCopy=\u590D\u5236
-PerformanceLogTable.FieldName.Errors=\u9519\u8BEF
-TransformLogTable.FieldName.LinesUpdated=\u66F4\u65B0
-PipelineLogTable.FieldName.ChannelID=\u901A\u9053 ID
-JobLogTable.FieldName.LogDate=\u65E5\u5FD7\u65E5\u671F
+ActionLogTable.FieldName.NrResultRows=\u7ED3\u679C\u8BB0\u5F55\u6570
 ActionLogTable.FieldName.Result=\u7ED3\u679C
+ActionLogTable.Type.Description=Action \u65E5\u5FD7\u8868
+ChannelLogTable.FieldDescription.IdBatch=\u6279\u6B21 ID
+ChannelLogTable.FieldName.ChannelId=\u901A\u9053 ID
+ChannelLogTable.FieldName.Filename=\u6587\u4EF6\u540D
+ChannelLogTable.FieldName.IdBatch=\u6279\u6B21 ID
 ChannelLogTable.FieldName.LogDate=\u65E5\u5FD7\u65E5\u671F
-JobLogTable.FieldName.LinesRejected=\u820D\u5F03
-ChannelLogTable.FieldName.RootChannelId=\u6839\u901A\u9053 ID
-TransformLogTable.FieldName.Errors=\u9519\u8BEF
-LogWriter.Level.Error.LongDesc=\u9519\u8BEF\u65E5\u5FD7
-JobLogTable.FieldName.LinesOutput=\u8F93\u51FA
-LogWriter.Level.Nothing.LongDesc=\u6CA1\u6709\u65E5\u5FD7
-TransformLogTable.FieldName.LinesRejected=\u820D\u5F03
+ChannelLogTable.FieldName.ObjectCopy=\u590D\u5236
+ChannelLogTable.FieldName.ObjectName=\u540D\u79F0
+ChannelLogTable.FieldName.ObjectRevision=\u4FEE\u8BA2
 ChannelLogTable.FieldName.ObjectType=\u7C7B\u578B
-TransformLogTable.FieldName.LogDate=\u65E5\u5FD7\u65E5\u671F
-LogWriter.Level.Minimal.LongDesc=\u6700\u5C0F\u65E5\u5FD7
+ChannelLogTable.FieldName.ParentChannelId=\u7236\u901A\u9053 ID
+ChannelLogTable.FieldName.RootChannelId=\u6839\u901A\u9053 ID
+ChannelLogTable.Type.Description=\u65E5\u5FD7\u901A\u9053\u65E5\u5FD7\u8868
+JobLogTable.FieldName.BatchID=\u6279\u6B21 ID
+JobLogTable.FieldName.ChannelID=\u901A\u9053 ID
 JobLogTable.FieldName.DepDate=\u4F9D\u8D56\u65E5\u671F
-PerformanceLogTable.FieldName.LinesInput=\u8F93\u5165
+JobLogTable.FieldName.EndDateRange=\u7ED3\u675F\u65E5\u671F
+JobLogTable.FieldName.Errors=\u9519\u8BEF
+JobLogTable.FieldName.JobName=\u4F5C\u4E1A\u540D\u79F0
+JobLogTable.FieldName.LinesInput=\u8F93\u5165
+JobLogTable.FieldName.LinesOutput=\u8F93\u51FA
+JobLogTable.FieldName.LinesRead=\u8BFB
+JobLogTable.FieldName.LinesRejected=\u820D\u5F03
+JobLogTable.FieldName.LinesUpdated=\u66F4\u65B0
 JobLogTable.FieldName.LinesWritten=\u5199
-PerformanceLogTable.FieldName.LinesUpdated=\u66F4\u65B0
-ActionLogTable.FieldName.LinesWritten=\u5199
-ActionLogTable.FieldName.LinesRejected=\u820D\u5F03
-ChannelLogTable.FieldName.ObjectName=\u540D\u79F0
-ActionLogTable.FieldName.LinesOutput=\u8F93\u51FA
-ChannelLogTable.FieldName.ChannelId=\u901A\u9053 ID
-PipelineLogTable.FieldName.LinesUpdated=\u66F4\u65B0
-PerformanceLogTable.FieldName.SeqNr=\u7F16\u53F7
-PerformanceLogTable.FieldName.InputBufferRows=\u8F93\u5165\u7F13\u51B2\u533A
-JobLogTable.Type.Description=\u4F5C\u4E1A\u65E5\u5FD7\u8868
-JobLogTable.FieldName.Status=\u72B6\u6001
-PerformanceLogTable.FieldName.TransformName=Transform \u540D\u79F0
-ActionLogTable.FieldName.NrResultRows=\u7ED3\u679C\u8BB0\u5F55\u6570
+JobLogTable.FieldName.LogDate=\u65E5\u5FD7\u65E5\u671F
 JobLogTable.FieldName.LogField=\u65E5\u5FD7\u5B57\u6BB5
-PerformanceLogTable.FieldName.LinesRejected=\u820D\u5F03
-PerformanceLogTable.FieldDescription.BatchID=\u6279\u6B21 ID
-ActionLogTable.FieldName.LogField=\u65E5\u5FD7\u5B57\u6BB5
-TransformLogTable.FieldName.PipelineName=Pipeline \u540D\u79F0
-ChannelLogTable.FieldName.ParentChannelId=\u7236\u901A\u9053 ID
-PipelineLogTable.FieldName.LogField=\u65E5\u5FD7\u5B57\u6BB5
-PipelineLogTable.FieldName.PipelineName=Pipeline \u540D\u79F0
 JobLogTable.FieldName.ReplayDate=\u542F\u52A8\u65F6\u95F4
-ActionLogTable.FieldName.IdBatch=\u6279\u6B21 ID
-LogWriter.Level.Rowlevel.LongDesc=\u884C\u7EA7\u65E5\u5FD7(\u975E\u5E38\u8BE6\u7EC6)
-PipelineLogTable.FieldName.EndDateRange=\u7ED3\u675F\u65E5\u671F
-PipelineLogTable.Type.Description=Pipeline \u65E5\u5FD7\u8868
 JobLogTable.FieldName.StartDateRange=\u542F\u52A8\u65E5\u671F
-TransformLogTable.FieldName.LinesWritten=\u5199
-TransformLogTable.FieldName.LogField=\u65E5\u5FD7\u5B57\u6BB5
-PipelineLogTable.FieldName.Status=\u72B6\u6001
-PerformanceLogTable.FieldDescription.Errors=\u9519\u8BEF
-TransformLogTable.FieldName.LinesInput=\u8F93\u5165
-ActionLogTable.FieldName.LinesRead=\u8BFB
+JobLogTable.FieldName.Status=\u72B6\u6001
+JobLogTable.Type.Description=\u4F5C\u4E1A\u65E5\u5FD7\u8868
 LogWriter.Level.Basic.LongDesc=\u57FA\u672C\u65E5\u5FD7
-PipelineLogTable.FieldName.LinesRejected=\u820D\u5F03
-ActionLogTable.FieldName.JobName=\u4F5C\u4E1A\u540D
-TransformLogTable.FieldName.TransformCopy=\u590D\u5236
-JobLogTable.FieldName.LinesRead=\u8BFB
-PipelineLogTable.FieldName.ReplayDate=\u542F\u52A8\u65F6\u95F4
-ActionLogTable.FieldName.ActionName=\u4F5C\u4E1A\u9879\u540D\u79F0
-JobLogTable.FieldName.Errors=\u9519\u8BEF
-ChannelLogTable.FieldName.Filename=\u6587\u4EF6\u540D
-PerformanceLogTable.FieldName.PipelineName=Pipeline \u540D\u79F0
-ActionLogTable.Type.Description=\u4F5C\u4E1A\u9879\u65E5\u5FD7\u8868
-TransformLogTable.FieldName.LinesRead=\u8BFB
-ActionLogTable.FieldName.CopyNr=\u590D\u5236\u884C
 LogWriter.Level.Debug.LongDesc=\u8C03\u8BD5
-PipelineLogTable.FieldName.LinesRead=\u8BFB
-PerformanceLogTable.FieldName.LinesWritten=\u5199
-ActionLogTable.FieldName.LinesUpdated=\u66F4\u65B0
-JobLogTable.FieldName.LinesInput=\u8F93\u5165
-ActionLogTable.FieldName.ChannelId=\u901A\u9053 ID
-TransformLogTable.FieldName.ChannelId=\u901A\u9053 ID
 LogWriter.Level.Detailed.LongDesc=\u8BE6\u7EC6\u65E5\u5FD7
-PipelineLogTable.FieldName.LinesWritten=\u5199
-PipelineLogTable.FieldName.BatchID=\u6279\u6B21 ID
-PipelineLogTable.FieldName.Errors=\u9519\u8BEF
-PipelineLogTable.FieldName.StartDateRange=\u542F\u52A8\u65E5\u671F
-ChannelLogTable.FieldName.IdBatch=\u6279\u6B21 ID
-JobLogTable.FieldName.JobName=\u4F5C\u4E1A\u540D\u79F0
-PipelineLogTable.FieldName.LogDate=\u65E5\u5FD7\u65E5\u671F
-JobLogTable.FieldName.LinesUpdated=\u66F4\u65B0
+LogWriter.Level.Error.LongDesc=\u9519\u8BEF\u65E5\u5FD7
+LogWriter.Level.Minimal.LongDesc=\u6700\u5C0F\u65E5\u5FD7
+LogWriter.Level.Nothing.LongDesc=\u6CA1\u6709\u65E5\u5FD7
+LogWriter.Level.Rowlevel.LongDesc=\u884C\u7EA7\u65E5\u5FD7(\u975E\u5E38\u8BE6\u7EC6)
+PerformanceLogTable.FieldDescription.BatchID=\u6279\u6B21 ID
+PerformanceLogTable.FieldDescription.Errors=\u9519\u8BEF
 PerformanceLogTable.FieldName.BatchID=\u6279\u6B21 ID
-PipelineLogTable.FieldName.LinesOutput=\u8F93\u51FA
-PerformanceLogTable.FieldName.OutputBufferRows=\u8F93\u51FA\u7F13\u51B2\u533A
-ActionLogTable.FieldName.LogDate=\u65E5\u5FD7\u65E5\u671F
-JobLogTable.FieldName.ChannelID=\u901A\u9053 ID
+PerformanceLogTable.FieldName.Errors=\u9519\u8BEF
+PerformanceLogTable.FieldName.InputBufferRows=\u8F93\u5165\u7F13\u51B2\u533A
+PerformanceLogTable.FieldName.LinesInput=\u8F93\u5165
 PerformanceLogTable.FieldName.LinesOutput=\u8F93\u51FA
-PipelineLogTable.FieldName.LinesInput=\u8F93\u5165
-ChannelLogTable.FieldDescription.IdBatch=\u6279\u6B21 ID
-ChannelLogTable.Type.Description=\u65E5\u5FD7\u901A\u9053\u65E5\u5FD7\u8868
-TransformLogTable.FieldName.IdBatch=\u6279\u6B21 ID
 PerformanceLogTable.FieldName.LinesRead=\u8BFB
-TransformLogTable.FieldName.TransformName=Transform \u540D\u79F0
-ActionLogTable.FieldName.LinesInput=\u8F93\u5165
+PerformanceLogTable.FieldName.LinesRejected=\u820D\u5F03
+PerformanceLogTable.FieldName.LinesUpdated=\u66F4\u65B0
+PerformanceLogTable.FieldName.LinesWritten=\u5199
+PerformanceLogTable.FieldName.LogDate=\u65E5\u5FD7\u65E5\u671F
+PerformanceLogTable.FieldName.OutputBufferRows=\u8F93\u51FA\u7F13\u51B2\u533A
+PerformanceLogTable.FieldName.PipelineName=Pipeline \u540D\u79F0
+PerformanceLogTable.FieldName.SeqNr=\u7F16\u53F7
+PerformanceLogTable.FieldName.TransformCopy=\u590D\u5236
+PerformanceLogTable.FieldName.TransformName=Transform \u540D\u79F0
 PerformanceLogTable.Type.Description=Transform \u65E5\u5FD7\u8868
-ChannelLogTable.FieldName.ObjectRevision=\u4FEE\u8BA2
-ActionLogTable.FieldName.Errors=\u9519\u8BEF
-JobLogTable.FieldName.BatchID=\u6279\u6B21 ID
+PipelineLogTable.FieldName.BatchID=\u6279\u6B21 ID
+PipelineLogTable.FieldName.ChannelID=\u901A\u9053 ID
+PipelineLogTable.FieldName.DepDate=\u4F9D\u8D56\u65E5\u671F
+PipelineLogTable.FieldName.EndDateRange=\u7ED3\u675F\u65E5\u671F
+PipelineLogTable.FieldName.Errors=\u9519\u8BEF
+PipelineLogTable.FieldName.LinesInput=\u8F93\u5165
+PipelineLogTable.FieldName.LinesOutput=\u8F93\u51FA
+PipelineLogTable.FieldName.LinesRead=\u8BFB
+PipelineLogTable.FieldName.LinesRejected=\u820D\u5F03
+PipelineLogTable.FieldName.LinesUpdated=\u66F4\u65B0
+PipelineLogTable.FieldName.LinesWritten=\u5199
+PipelineLogTable.FieldName.LogDate=\u65E5\u5FD7\u65E5\u671F
+PipelineLogTable.FieldName.LogField=\u65E5\u5FD7\u5B57\u6BB5
+PipelineLogTable.FieldName.PipelineName=Pipeline \u540D\u79F0
+PipelineLogTable.FieldName.ReplayDate=\u542F\u52A8\u65F6\u95F4
+PipelineLogTable.FieldName.StartDateRange=\u542F\u52A8\u65E5\u671F
+PipelineLogTable.FieldName.Status=\u72B6\u6001
+PipelineLogTable.Type.Description=Pipeline \u65E5\u5FD7\u8868
+TransformLogTable.FieldName.ChannelId=\u901A\u9053 ID
+TransformLogTable.FieldName.Errors=\u9519\u8BEF
+TransformLogTable.FieldName.IdBatch=\u6279\u6B21 ID
+TransformLogTable.FieldName.LinesInput=\u8F93\u5165
 TransformLogTable.FieldName.LinesOutput=\u8F93\u51FA
-ChannelLogTable.FieldName.ObjectCopy=\u590D\u5236
-PerformanceLogTable.FieldName.LogDate=\u65E5\u5FD7\u65E5\u671F
-JobLogTable.FieldName.EndDateRange=\u7ED3\u675F\u65E5\u671F
+TransformLogTable.FieldName.LinesRead=\u8BFB
+TransformLogTable.FieldName.LinesRejected=\u820D\u5F03
+TransformLogTable.FieldName.LinesUpdated=\u66F4\u65B0
+TransformLogTable.FieldName.LinesWritten=\u5199
+TransformLogTable.FieldName.LogDate=\u65E5\u5FD7\u65E5\u671F
+TransformLogTable.FieldName.LogField=\u65E5\u5FD7\u5B57\u6BB5
+TransformLogTable.FieldName.PipelineName=Pipeline \u540D\u79F0
+TransformLogTable.FieldName.TransformCopy=\u590D\u5236
+TransformLogTable.FieldName.TransformName=Transform \u540D\u79F0
 TransformLogTable.Type.Description=Transform \u65E5\u5FD7\u8868
diff --git a/core/src/main/resources/org/apache/hop/core/messages/messages_zh_CN.properties b/core/src/main/resources/org/apache/hop/core/messages/messages_zh_CN.properties
index 9385b7c..a3c58e2 100644
--- a/core/src/main/resources/org/apache/hop/core/messages/messages_zh_CN.properties
+++ b/core/src/main/resources/org/apache/hop/core/messages/messages_zh_CN.properties
@@ -16,35 +16,34 @@
 # limitations under the License.
 #
 #
-#
-HopGui.Log.SavePropertiesFailed=\u4FDD\u5B58 HopGui \u7684\u5C5E\u6027\u5931\u8D25\:
-HopGui.Log.SaveProperties=\u4FDD\u5B58 HopGui \u7684\u5C5E\u6027
-ResultFile.FileType.ErrorLine=\u9519\u8BEF\u884C
 CheckResult.Error=\u9519\u8BEF
-ValueMeta.TrimType.None=\u4E0D\u53BB\u6389\u7A7A\u683C
-Props.Log.Error.UnableToCreateDefaultHopProperties.Message=\u4E0D\u80FD\u521B\u5EFA\u7F3A\u7701\u7684 {0} \u6587\u4EF6\: {1}
-CheckResult.Warning=\u8B66\u544A
-ValueMeta.TrimType.Left=\u53BB\u6389\u5DE6\u7A7A\u683C
-Props.Hop.Properties.Sample.Line10=\#
-SearchResult.FieldName=\u4F4D\u7F6E
 CheckResult.OK=Ok
-ValueMeta.TrimType.Both=\u53BB\u6389\u5DE6\u53F3\u4E24\u7AEF\u7A7A\u683C
-ValueMeta.TrimType.Right=\u53BB\u6389\u53F3\u7A7A\u683C
-ResultFile.FileType.General=\u4E00\u822C
 CheckResult.Remark=\u6807\u8BB0
+CheckResult.Warning=\u8B66\u544A
+HopGui.Log.SaveProperties=\u4FDD\u5B58 HopGui \u7684\u5C5E\u6027
+HopGui.Log.SavePropertiesFailed=\u4FDD\u5B58 HopGui \u7684\u5C5E\u6027\u5931\u8D25\:
 HopGui.Log.SavePropertiesFailedWindowsBugAttr=\u56E0\u4E3A\u4F60\u5728\u4F7F\u7528 Windows \u800C\u4E14\u6587\u4EF6\u7684\u5C5E\u6027\u662F\u9690\u85CF(Java)
+Props.Hop.Properties.Sample.Line01=\# This file was generated by Hop version {0}.
+Props.Hop.Properties.Sample.Line02=\# 
+Props.Hop.Properties.Sample.Line03=\# Here are a few examples of variables to set\: 
+Props.Hop.Properties.Sample.Line04=\#
+Props.Hop.Properties.Sample.Line05=\# PRODUCTION_SERVER \= hercules
+Props.Hop.Properties.Sample.Line06=\# TEST_SERVER \= zeus
+Props.Hop.Properties.Sample.Line07=\# DEVELOPMENT_SERVER \= thor
+Props.Hop.Properties.Sample.Line08=\#
+Props.Hop.Properties.Sample.Line09=\# Note\: lines like these with a \# in front of it are comments
+Props.Hop.Properties.Sample.Line10=\#
+Props.Log.Error.UnableToCreateDefaultHopProperties.Message=\u4E0D\u80FD\u521B\u5EFA\u7F3A\u7701\u7684 {0} \u6587\u4EF6\: {1}
 ResultFile.FileType.Error=\u9519\u8BEF
+ResultFile.FileType.ErrorLine=\u9519\u8BEF\u884C
+ResultFile.FileType.General=\u4E00\u822C
+ResultFile.FileType.Log=\u65E5\u5FD7
 ResultFile.FileType.Warning=\u8B66\u544A
-SearchResult.TransformDatabaseNotice=Transform/\u6570\u636E\u5E93\u8FDE\u63A5/\u6CE8\u91CA
-Props.Hop.Properties.Sample.Line09=\# Note\: lines like these with a \# in front of it are comments
-Props.Hop.Properties.Sample.Line08=\#
-Props.Hop.Properties.Sample.Line07=\# DEVELOPMENT_SERVER \= thor
-Props.Hop.Properties.Sample.Line06=\# TEST_SERVER \= zeus
-Props.Hop.Properties.Sample.Line05=\# PRODUCTION_SERVER \= hercules
-Props.Hop.Properties.Sample.Line04=\#
-Props.Hop.Properties.Sample.Line03=\# Here are a few examples of variables to set\: 
-SearchResult.String=\u5B57\u7B26\u4E32
-Props.Hop.Properties.Sample.Line02=\# 
-Props.Hop.Properties.Sample.Line01=\# This file was generated by Hop version {0}\u3002
+SearchResult.FieldName=\u4F4D\u7F6E
 SearchResult.PipelineOrWorkflow=Pipeline/Workflow
-ResultFile.FileType.Log=\u65E5\u5FD7
+SearchResult.String=\u5B57\u7B26\u4E32
+SearchResult.TransformDatabaseNotice=Transform/\u6570\u636E\u5E93\u8FDE\u63A5/\u6CE8\u91CA
+ValueMeta.TrimType.Both=\u53BB\u6389\u5DE6\u53F3\u4E24\u7AEF\u7A7A\u683C
+ValueMeta.TrimType.Left=\u53BB\u6389\u5DE6\u7A7A\u683C
+ValueMeta.TrimType.None=\u4E0D\u53BB\u6389\u7A7A\u683C
+ValueMeta.TrimType.Right=\u53BB\u6389\u53F3\u7A7A\u683C
diff --git a/core/src/main/resources/org/apache/hop/core/plugins/messages/messages_zh_CN.properties b/core/src/main/resources/org/apache/hop/core/plugins/messages/messages_zh_CN.properties
index 2ec7637..aacb1fc 100644
--- a/core/src/main/resources/org/apache/hop/core/plugins/messages/messages_zh_CN.properties
+++ b/core/src/main/resources/org/apache/hop/core/plugins/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,25 +15,23 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.core.plugins' in locale 'zh_CN'
-#
 #
+HopURLClassLoader.Exception.UnableToReadClass=\u65E0\u6CD5\u4ECE\u8F93\u5165\u6D41\u8BFB\u53D6\u7C7B\: 
+PluginRegistry.Information.Category.Label=\u7C7B\u522B
 PluginRegistry.Information.ClassName.Label=\u5B9E\u73B0\u7C7B
 PluginRegistry.Information.Description.Label=\u63CF\u8FF0
-PluginRegistry.Information.Name.Label=\u540D\u79F0
-PluginRegistry.Information.Keywords.Label=\u5173\u952E\u8BCD
-PluginRegistry.Information.Category.Label=\u7C7B\u522B
-PluginRegistry.RuntimeError.IllegalAccessToClass.PLUGINREGISTRY005=\u975E\u6CD5\u8BBF\u95EE\u7C7B
-PluginRegistry.RuntimeError.UnExpectedErrorLoadingClass.PLUGINREGISTRY007=\u52A0\u8F7D\u7C7B\u65F6\u610F\u5916\u9519\u8BEF\:
-PluginRegistry.RuntimeError.UnableToInstantiateClass.PLUGINREGISTRY004=\u65E0\u6CD5\u5B9E\u4F8B\u5316\u7C7B
-PluginRegistry.RuntimeError.NoValidClassRequested.PLUGINREGISTRY002=\u63D2\u4EF6 "{0}" \u65E0\u6CD5\u52A0\u8F7D\u7C7B {1}
-PluginRegistry.Information.ImageFile.Label=\u56FE\u6807\u6587\u4EF6
-PluginRegistry.RuntimeError.NoValidTransformOrPlugin.PLUGINREGISTRY001=\u4E0D\u662F\u4E00\u4E2A\u6709\u6548\u7684\u63D2\u4EF6
-PluginRegistry.RuntimeError.MalformedURL.PLUGINREGISTRY006=\u683C\u5F0F\u9519\u8BEF\u7684\u7F51\u5740
+PluginRegistry.Information.DocumentationUrl.Label=\u6587\u6863 URL
 PluginRegistry.Information.ID.Label=ID
+PluginRegistry.Information.ImageFile.Label=\u56FE\u6807\u6587\u4EF6
+PluginRegistry.Information.Keywords.Label=\u5173\u952E\u8BCD
 PluginRegistry.Information.Libraries.Label=jar \u6587\u4EF6
+PluginRegistry.Information.Name.Label=\u540D\u79F0
 PluginRegistry.Information.Type.Label=\u63D2\u4EF6\u7C7B\u578B
-HopURLClassLoader.Exception.UnableToReadClass=\u65E0\u6CD5\u4ECE\u8F93\u5165\u6D41\u8BFB\u53D6\u7C7B\: 
-PluginRegistry.RuntimeError.UnExpectedCreatingClassLoader.PLUGINREGISTRY008=\u521B\u5EFA class loader \u65F6\u51FA\u9519
 PluginRegistry.RuntimeError.ClassNotFound.PLUGINREGISTRY003=\u627E\u4E0D\u5230\u7C7B
-PluginRegistry.Information.DocumentationUrl.Label=\u6587\u6863\u7F51\u5740
+PluginRegistry.RuntimeError.IllegalAccessToClass.PLUGINREGISTRY005=\u975E\u6CD5\u8BBF\u95EE\u7C7B
+PluginRegistry.RuntimeError.MalformedURL.PLUGINREGISTRY006=\u65E0\u6548\u7684 URL
+PluginRegistry.RuntimeError.NoValidClassRequested.PLUGINREGISTRY002=\u63D2\u4EF6 "{0}" \u65E0\u6CD5\u52A0\u8F7D\u7C7B {1}
+PluginRegistry.RuntimeError.NoValidTransformOrPlugin.PLUGINREGISTRY001=\u65E0\u6548\u63D2\u4EF6
+PluginRegistry.RuntimeError.UnExpectedCreatingClassLoader.PLUGINREGISTRY008=\u521B\u5EFA ClassLoader \u65F6\u51FA\u9519
+PluginRegistry.RuntimeError.UnExpectedErrorLoadingClass.PLUGINREGISTRY007=\u52A0\u8F7D\u7C7B\u65F6\u610F\u5916\u51FA\u9519\:
+PluginRegistry.RuntimeError.UnableToInstantiateClass.PLUGINREGISTRY004=\u65E0\u6CD5\u5B9E\u4F8B\u5316\u7C7B
diff --git a/core/src/main/resources/org/apache/hop/core/util/messages/messages_zh_CN.properties b/core/src/main/resources/org/apache/hop/core/util/messages/messages_zh_CN.properties
index 2dcf321..492f532 100644
--- a/core/src/main/resources/org/apache/hop/core/util/messages/messages_zh_CN.properties
+++ b/core/src/main/resources/org/apache/hop/core/util/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,14 +15,12 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.core.util' in locale 'zh_CN'
-#
 #
-ActionPipeline.Log.ParentLogFolderNotExist=\u4E0A\u7EA7\u76EE\u5F55 {0} \u4E0D\u5B58\u5728
 ActionPipeline.Error.ChekingParentLogFolder=\u9519\u8BEF
+ActionPipeline.Error.ChekingParentLogFolderTitle=\u68C0\u67E5\u4E0A\u7EA7\u76EE\u5F55 {0} \u65F6\u51FA\u9519
 ActionPipeline.Log.ParentLogFolderCreated=\u4E0A\u7EA7\u76EE\u5F55 {0} \u5DF2\u521B\u5EFA
-UUIDUtil.ERROR_0002_GET_MAC_ADDR=Can't get primary ethernet adapter MAC address - falling back to dummy/generated address\u3002
 ActionPipeline.Log.ParentLogFolderExists=\u4E0A\u7EA7\u76EE\u5F55 {0} \u5B58\u5728
-ActionPipeline.Error.ChekingParentLogFolderTitle=\u68C0\u67E5\u4E0A\u7EA7\u76EE\u5F55 {0} \u65F6\u51FA\u9519
+ActionPipeline.Log.ParentLogFolderNotExist=\u4E0A\u7EA7\u76EE\u5F55 {0} \u4E0D\u5B58\u5728
 UUIDUtil.ERROR_0001_LOADING_ETHERNET_ADDRESS=\u52A0\u8F7D "EthernetAddress" \u672C\u5730\u5E93
-UUIDUtil.ERROR_0003_GENERATEFAILED=\u4E0D\u80FD\u751F\u6210 UUID\u3002
+UUIDUtil.ERROR_0002_GET_MAC_ADDR=Can't get primary ethernet adapter MAC address - falling back to dummy/generated address.
+UUIDUtil.ERROR_0003_GENERATEFAILED=\u4E0D\u80FD\u751F\u6210 UUID.
diff --git a/core/src/main/resources/org/apache/hop/core/vfs/messages/messages_zh_CN.properties b/core/src/main/resources/org/apache/hop/core/vfs/messages/messages_zh_CN.properties
index 38c7ad5..35573ed 100644
--- a/core/src/main/resources/org/apache/hop/core/vfs/messages/messages_zh_CN.properties
+++ b/core/src/main/resources/org/apache/hop/core/vfs/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,7 +15,5 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.core.vfs' in locale 'zh_CN'
-#
 #
-HopVFS.Exception.ParentDirectoryDoesNotExist=\u4E0A\u7EA7\u76EE\u5F55 {0} \u4E0D\u5B58\u5728\uFF01
+HopVFS.Exception.ParentDirectoryDoesNotExist=\u4E0A\u7EA7\u76EE\u5F55 {0} \u4E0D\u5B58\u5728!
diff --git a/core/src/main/resources/org/apache/hop/i18n/messages/messages_zh_CN.properties b/core/src/main/resources/org/apache/hop/i18n/messages/messages_zh_CN.properties
index 40c6066..03070cc 100644
--- a/core/src/main/resources/org/apache/hop/i18n/messages/messages_zh_CN.properties
+++ b/core/src/main/resources/org/apache/hop/i18n/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,74 +15,88 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.i18n' in locale 'zh_CN'
-#
 #
-System.Help.Metadata.IsNotAvailable=\u5143\u6570\u636E "{0}" \u7684\u5E2E\u52A9\u4E0D\u53EF\u7528\u3002
+LineNr=\u884C\u53F7 {0}
+MESSUTIL.ERROR_FORMAT_MASK=\u9519\u8BEF\u53F7\u662F[{0}]\u7684\u9519\u8BEF\u53D1\u751F\: [{1}]
+System.ActionNameMissing.Msg=Action \u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A
+System.ActionNameMissing.Title=\u7F3A\u5931 Action \u540D\u79F0
+System.Button.Browse=\u6D4F\u89C8(&B)...
+System.Button.Cancel=\u53D6\u6D88(&C)
+System.Button.Close=\u5173\u95ED(&C)
+System.Button.Delete=\u5220\u9664
+System.Button.Details=\u7EC6\u8282(&D)
+System.Button.Edit=\u7F16\u8F91
+System.Button.GetFields=\u83B7\u53D6\u5B57\u6BB5 
+System.Button.GetVariables=\u83B7\u53D6\u53D8\u91CF
+System.Button.Help=\u5E2E\u52A9
+System.Button.New=\u65B0\u5EFA
+System.Button.No=\u5426
+System.Button.OK=\u786E\u5B9A(&O)
+System.Button.Open=\u6253\u5F00(&O)
+System.Button.Preview=\u9884\u89C8(&P) 
 System.Button.Refresh=\u5237\u65B0(&R)
-System.DialogTitle.Error=\u9519\u8BEF
-System.Column.Format=\u683C\u5F0F
-System.Button.Yes=\u662F
-System.Log.StartingToRun=\u5F00\u59CB\u8FD0\u884C...
+System.Button.SQL=SQL
 System.Button.Save=\u4FDD\u5B58(&S)
 System.Button.Show=\u663E\u793A(&S) 
-System.Column.Type=\u7C7B\u578B
-System.Dialog.EnterPreviewSize.Title=\u8F93\u5165\u9884\u89C8\u8BB0\u5F55\u6570
-System.Column.Currency=\u8D27\u5E01\u7C7B\u578B
-System.Tooltip.Browse=\u6D4F\u89C8\u6587\u4EF6\u5939\u548C\u6587\u4EF6...
-System.Button.Edit=\u7F16\u8F91
 System.Button.Test=\u6D4B\u8BD5(&T)
+System.Button.Variable=\u53D8\u91CF(&V)...
+System.Button.Yes=\u662F
+System.Column.Currency=\u8D27\u5E01\u7C7B\u578B
+System.Column.Decimal=\u5C0F\u6570
+System.Column.Format=\u683C\u5F0F
+System.Column.Group=\u5206\u7EC4
+System.Column.Length=\u957F\u5EA6
 System.Column.Name=\u540D\u79F0
-System.Dialog.SelectEnvironmentVar.Message=\u9009\u62E9\u4E00\u4E2A\u73AF\u5883\u53D8\u91CF
-System.Help.Action.IsNotAvailable=Action {0} \u7684\u5E2E\u52A9\u4E0D\u53EF\u7528\u3002
-System.Tooltip.VariableToDir=\u5728\u76EE\u5F55\u63D2\u5165\u4E00\u4E2A\u53D8\u91CF
-System.FileType.XMLFiles=XML\u6587\u4EF6
-System.Tooltip.VariableToFileOrDir=\u63D2\u5165\u4E00\u4E2A\u53D8\u91CF\u5230\u6587\u4EF6\u540D\u6216\u76EE\u5F55
+System.Column.Precision=\u7CBE\u5EA6
+System.Column.SetEmptyString=\u7A7A\u5B57\u7B26
+System.Column.Type=\u7C7B\u578B
+System.Column.Value=\u503C
+System.Combo.No=\u5426
+System.Combo.Yes=\u662F
+System.Deprecated=\u4E0D\u63A8\u8350\u7684
+System.Dialog.AvailableSchemas.ConnectionError=\u4ECE\u6570\u636E\u5E93\u8FDE\u63A5\u83B7\u53D6 Schema \u4FE1\u606F\u65F6\u51FA\u9519
+System.Dialog.AvailableSchemas.Empty.Message=\u8BE5\u8FDE\u63A5\u6CA1\u6709\u53EF\u7528\u7684 Schema
+System.Dialog.AvailableSchemas.Empty.Title=Schema
+System.Dialog.AvailableSchemas.Message=\u8BF7\u9009\u62E9 Schema
+System.Dialog.AvailableSchemas.Title=\u8FDE\u63A5 [{0}] \u4E0A\u7684\u53EF\u7528 Schema
+System.Dialog.ConnectionError.DialogMessage=\u4ECE\u6570\u636E\u5E93\u8FDE\u63A5\u83B7\u53D6\u8868\u4FE1\u606F\u65F6\u51FA\u9519
+System.Dialog.EnterPreviewSize.Message=\u8F93\u5165\u4F60\u60F3\u9884\u89C8\u7684\u8BB0\u5F55\u884C\u6570\:
+System.Dialog.EnterPreviewSize.Title=\u8F93\u5165\u9884\u89C8\u8BB0\u5F55\u6570
+System.Dialog.Error.Title=\u9519\u8BEF
 System.Dialog.GetFieldsFailed.Message=\u56E0\u4E3A\u4E00\u4E2A\u9519\u8BEF\u65E0\u6CD5\u4ECE\u4EE5\u524D\u7684Transform \u91CC\u83B7\u53D6\u5B57\u6BB5
+System.Dialog.GetFieldsFailed.Title=\u83B7\u53D6\u5B57\u6BB5\u5931\u8D25
+System.Dialog.PreviewError.Message=\u5728\u9884\u89C8\u65F6\u53D1\u751F\u4E00\u4E2A\u4EE5\u4E0A\u7684\u9519\u8BEF\! \u8BF7\u68C0\u67E5\u65E5\u5FD7\u6587\u4EF6\u6765\u4E86\u89E3\u9519\u8BEF\u8BE6\u7EC6\u4FE1\u606F.
+System.Dialog.PreviewError.Title=\u9519\u8BEF
+System.Dialog.SelectEnvironmentVar.Message=\u9009\u62E9\u4E00\u4E2A\u73AF\u5883\u53D8\u91CF
 System.Dialog.SelectEnvironmentVar.Title=\u9009\u62E9\u4E00\u4E2A\u73AF\u5883\u53D8\u91CF
-System.Button.SQL=&SQL  
-System.Label.TransformName=Transform \u540D\u79F0 
-System.Button.Cancel=\u53D6\u6D88(&C)
-System.Tooltip.BrowseForFileOrDirAndAdd=\u6D4F\u89C8\u4E00\u4E2A\u6587\u4EF6\u6216\u76EE\u5F55\u5E76\u6DFB\u52A0\u5230\u5217\u8868\u91CC
-System.FileType.CSVFiles=\u9017\u53F7\u5206\u9694\u503C\u7684\u6587\u4EF6
+System.DialogTitle.Error=\u9519\u8BEF
+System.Error.TransformNameMissing.Message=\u8BF7\u6307\u5B9A\u8BE5 Transform \u7684\u540D\u79F0
+System.Error.TransformNameMissing.Title=\u9519\u8BEF
 System.FileType.AllFiles=\u6240\u6709\u6587\u4EF6
-System.Tooltip.BrowseForDir=\u6D4F\u89C8\u4E00\u4E2A\u76EE\u5F55
-System.Button.Details=\u7EC6\u8282(&D)
-System.Combo.Yes=\u662F
-System.Button.New=\u65B0\u5EFA
-System.Help.Database.IsNotAvailable=\u6570\u636E\u5E93 {0} \u7684\u5E2E\u52A9\u4E0D\u53EF\u7528\u3002
-System.Button.Delete=\u5220\u9664
-System.Tooltip.Help=\u663E\u793A\u8BE6\u7EC6\u4FE1\u606F
-System.Warning=\u8B66\u544A
+System.FileType.CSVFiles=\u9017\u53F7\u5206\u9694\u503C\u7684\u6587\u4EF6
+System.FileType.ExcelFiles=Excel \u6587\u4EF6
+System.FileType.JsonFiles=JSON \u6587\u4EF6
+System.FileType.PEMFiles=SSH PEM \u6587\u4EF6
+System.FileType.Pipeline=Pipeline \u6587\u4EF6
+System.FileType.TextFiles=\u6587\u672C\u6587\u4EF6
+System.FileType.XMLFiles=XML\u6587\u4EF6
+System.FileType.ZIPFiles=Zip \u6587\u4EF6
+System.Help.Action.IsNotAvailable=Action \u63D2\u4EF6 {0} \u7684\u5E2E\u52A9\u65E0\u6548
+System.Help.Database.IsNotAvailable=\u6570\u636E\u5E93 \u63D2\u4EF6 {0} \u7684\u5E2E\u52A9\u65E0\u6548
+System.Help.Metadata.IsNotAvailable=\u5143\u6570\u636E\u63D2\u4EF6 {0} \u7684\u5E2E\u52A9\u65E0\u6548
+System.Help.Transform.IsNotAvailable=Transform \u63D2\u4EF6 {0} \u7684\u5E2E\u52A9\u65E0\u6548
 System.Label.Extension=\u6269\u5C55\u540D 
-System.Button.Close=\u5173\u95ED(&C)
-System.Dialog.GetFieldsFailed.Title=\u83B7\u53D6\u5B57\u6BB5\u5931\u8D25
-System.Button.GetFields=\u83B7\u53D6\u5B57\u6BB5 
-MESSUTIL.ERROR_FORMAT_MASK=\u9519\u8BEF\u53F7\u662F[{0}]\u7684\u9519\u8BEF\u53D1\u751F\: [{1}]
-System.Tooltip.GetFields=\u5728\u4EE5\u524DTransform \u91CC\u83B7\u53D6\u5B57\u6BB5\u4F5C\u4E3A\u5B9A\u4E49\u3002
-System.Button.Variable=\u53D8\u91CF(&V)...
-System.Button.OK=\u786E\u5B9A(&O)  
-LineNr=\u884C\u53F7 {0}
-System.Dialog.Error.Title=\u9519\u8BEF
-System.Button.No=\u5426
 System.Label.Filename=\u6587\u4EF6\u540D
-System.Dialog.PreviewError.Title=\u9519\u8BEF
-System.Combo.No=\u5426
-System.Deprecated=\u4E0D\u63A8\u8350\u7684
-System.Column.Decimal=\u5C0F\u6570
-System.Column.Value=\u503C
+System.Label.TransformName=Transform \u540D\u79F0 
+System.Log.StartingToRun=\u5F00\u59CB\u8FD0\u884C...
 System.Log.UnexpectedError=Unexpected error
-System.Button.Help=\u5E2E\u52A9
-System.Column.Group=\u5206\u7EC4
-System.Column.Precision=\u7CBE\u5EA6
-System.Button.Open=\u6253\u5F00(&O)
+System.Tooltip.Browse=\u6D4F\u89C8\u6587\u4EF6\u5939\u548C\u6587\u4EF6...
+System.Tooltip.BrowseForDir=\u6D4F\u89C8\u4E00\u4E2A\u76EE\u5F55
 System.Tooltip.BrowseForFile=\u6D4F\u89C8\u4E00\u4E2A\u6587\u4EF6
-System.Button.Preview=\u9884\u89C8(&P) 
-System.Dialog.PreviewError.Message=\u5728\u9884\u89C8\u65F6\u53D1\u751F\u4E00\u4E2A\u4EE5\u4E0A\u7684\u9519\u8BEF\uFF01  \u8BF7\u68C0\u67E5\u65E5\u5FD7\u6587\u4EF6\u6765\u4E86\u89E3\u9519\u8BEF\u8BE6\u7EC6\u4FE1\u606F\u3002
-System.FileType.TextFiles=\u6587\u672C\u6587\u4EF6
-System.Dialog.EnterPreviewSize.Message=\u8F93\u5165\u4F60\u60F3\u9884\u89C8\u7684\u8BB0\u5F55\u884C\u6570
-System.Column.Length=\u957F\u5EA6
-System.Button.Browse=\u6D4F\u89C8(&B)...
-System.Help.Transform.IsNotAvailable=Transform {0} \u7684\u5E2E\u52A9\u4E0D\u53EF\u7528\u3002
-System.FileType.ZIPFiles=Zip \u6587\u4EF6
-System.FileType.ExcelFiles=Excel \u6587\u4EF6
+System.Tooltip.BrowseForFileOrDirAndAdd=\u6D4F\u89C8\u4E00\u4E2A\u6587\u4EF6\u6216\u76EE\u5F55\u5E76\u6DFB\u52A0\u5230\u5217\u8868\u91CC
+System.Tooltip.GetFields=\u5728\u4EE5\u524D Transform \u91CC\u83B7\u53D6\u5B57\u6BB5\u4F5C\u4E3A\u5B9A\u4E49.
+System.Tooltip.Help=\u663E\u793A\u8BE6\u7EC6\u4FE1\u606F
+System.Tooltip.VariableToDir=\u5728\u76EE\u5F55\u63D2\u5165\u4E00\u4E2A\u53D8\u91CF
+System.Tooltip.VariableToFileOrDir=\u63D2\u5165\u4E00\u4E2A\u53D8\u91CF\u5230\u6587\u4EF6\u540D\u6216\u76EE\u5F55
+System.TransformActionNameMissing.Title=\u9519\u8BEF
+System.Warning=\u8B66\u544A
diff --git a/engine/src/main/resources/org/apache/hop/core/auth/core/impl/messages/messages_zh_CN.properties b/engine/src/main/resources/org/apache/hop/core/auth/core/impl/messages/messages_zh_CN.properties
index d55f915..6ed3460 100644
--- a/engine/src/main/resources/org/apache/hop/core/auth/core/impl/messages/messages_zh_CN.properties
+++ b/engine/src/main/resources/org/apache/hop/core/auth/core/impl/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,9 +15,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.core.auth.core.impl' in locale 'zh_CN'
-#
 #
-DefaultAuthenticationConsumerFactory.Consume=\u65E0\u6CD5\u5728 {0} \u4E0A\u627E\u53EA\u6709 1 \u4E2A\u53C2\u6570\u7684 consume \u65B9\u6CD5\u3002
-DefaultAuthenticationConsumerFactory.Constructor={0} \u8981\u6C42 {1} \u6709\u4E00\u4E2A\u4E14\u53EA\u6709\u4E00\u4E2A\u6784\u9020\u51FD\u6570\u3002
-DefaultAuthenticationConsumerFactory.Constructor.Arg={0} \u8981\u6C42 {1} \u6709\u4E00\u4E2A\u4E14\u53EA\u6709\u4E00\u4E2A\u6784\u9020\u51FD\u6570\u53C2\u6570\u3002
+DefaultAuthenticationConsumerFactory.Constructor={0} \u8981\u6C42 {1} \u6709\u4E00\u4E2A\u4E14\u53EA\u6709\u4E00\u4E2A\u6784\u9020\u51FD\u6570.
+DefaultAuthenticationConsumerFactory.Constructor.Arg={0} \u8981\u6C42 {1} \u6709\u4E00\u4E2A\u4E14\u53EA\u6709\u4E00\u4E2A\u6784\u9020\u51FD\u6570\u53C2\u6570.
+DefaultAuthenticationConsumerFactory.Consume=\u65E0\u6CD5\u5728 {0} \u4E0A\u627E\u53EA\u6709 1 \u4E2A\u53C2\u6570\u7684 consume \u65B9\u6CD5.
diff --git a/engine/src/main/resources/org/apache/hop/core/auth/core/messages/messages_zh_CN.properties b/engine/src/main/resources/org/apache/hop/core/auth/core/messages/messages_zh_CN.properties
index c061e33..91e6734 100644
--- a/engine/src/main/resources/org/apache/hop/core/auth/core/messages/messages_zh_CN.properties
+++ b/engine/src/main/resources/org/apache/hop/core/auth/core/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,7 +15,5 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.core.auth.core' in locale 'zh_CN'
-#
 #
-AuthenticationManager.ConsumedTypeError=\u65E0\u6CD5\u6CE8\u518C\u8EAB\u4EFD\u8BA4\u8BC1 factory \u7C7B\: {0}\uFF0C\u56E0\u4E3A\u5176\u4F7F\u7528\u7684\u7C7B\u578B\u6CA1\u6709\u5B9E\u73B0\u8EAB\u4EFD\u9A8C\u8BC1\u9A71\u52A8\u63A5\u53E3
+AuthenticationManager.ConsumedTypeError=\u65E0\u6CD5\u6CE8\u518C\u8EAB\u4EFD\u8BA4\u8BC1 factory \u7C7B\: {0}, \u56E0\u4E3A\u5176\u4F7F\u7528\u7684\u7C7B\u578B\u6CA1\u6709\u5B9E\u73B0\u8EAB\u4EFD\u9A8C\u8BC1\u9A71\u52A8\u63A5\u53E3
diff --git a/engine/src/main/resources/org/apache/hop/core/auth/messages/messages_zh_CN.properties b/engine/src/main/resources/org/apache/hop/core/auth/messages/messages_zh_CN.properties
index 0f7b46c..d7863d0 100644
--- a/engine/src/main/resources/org/apache/hop/core/auth/messages/messages_zh_CN.properties
+++ b/engine/src/main/resources/org/apache/hop/core/auth/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,7 +15,5 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.core.auth' in locale 'zh_CN'
-#
 #
-AuthenticationPersistenceManager.NotConsumerType=\u63D2\u4EF6\u5B9E\u73B0\u7C7B {0} \u7684\u7C7B\u578B\u4E0D\u6B63\u786E\uFF0C\u5E94\u8BE5\u5B9E\u73B0 {1}
+AuthenticationPersistenceManager.NotConsumerType=\u63D2\u4EF6\u5B9E\u73B0\u7C7B {0} \u7684\u7C7B\u578B\u4E0D\u6B63\u786E, \u5E94\u8BE5\u5B9E\u73B0 {1}
diff --git a/engine/src/main/resources/org/apache/hop/core/undo/messages/messages_zh_CN.properties b/engine/src/main/resources/org/apache/hop/core/undo/messages/messages_zh_CN.properties
index feee28a..2594570 100644
--- a/engine/src/main/resources/org/apache/hop/core/undo/messages/messages_zh_CN.properties
+++ b/engine/src/main/resources/org/apache/hop/core/undo/messages/messages_zh_CN.properties
@@ -16,36 +16,35 @@
 # limitations under the License.
 #
 #
-#
-TransAction.label.DeleteConnection=\u5220\u9664\u6570\u636E\u5E93\u8FDE\u63A5
-TransAction.label.NewAction=\u65B0\u4F5C\u4E1A\u9879
-TransAction.label.DeleteWorkflowHop=\u5220\u9664\u4F5C\u4E1A\u8282\u70B9\u8FDE\u63A5
+TransAction.label.ChangeAction=\u6539\u53D8 Action
+TransAction.label.ChangeConnection=\u6539\u53D8\u6570\u636E\u5E93\u8FDE\u63A5
 TransAction.label.ChangeHop=\u6539\u53D8\u8282\u70B9\u8FDE\u63A5
-TransAction.label.DeleteAction=\u5220\u9664\u4F5C\u4E1A\u9879
+TransAction.label.ChangeNote=\u6539\u53D8\u6CE8\u91CA
+TransAction.label.ChangeRelationship=\u6539\u53D8\u5173\u7CFB
+TransAction.label.ChangeTable=\u6539\u53D8\u8868
+TransAction.label.ChangeTableRow=\u6539\u53D8\u8868\u7684\u884C
+TransAction.label.ChangeTransform=\u6539\u53D8 Transform
+TransAction.label.ChangeWorkflowHop=\u6539\u53D8 Workflow \u8282\u70B9\u8FDE\u63A5
+TransAction.label.DeleteAction=\u5220\u9664 Action
+TransAction.label.DeleteConnection=\u5220\u9664\u6570\u636E\u5E93\u8FDE\u63A5
+TransAction.label.DeleteHop=\u5220\u9664\u8282\u70B9\u8FDE\u63A5
 TransAction.label.DeleteNote=\u5220\u9664\u6CE8\u91CA
-TransAction.label.DeleteTable=\u5220\u9664\u8868
 TransAction.label.DeleteRelationship=\u5220\u9664\u5173\u7CFB
-TransAction.label.DeleteHop=\u5220\u9664\u8282\u70B9\u8FDE\u63A5
-TransAction.label.ChangeRelationship=\u6539\u53D8\u5173\u7CFB
-TransAction.label.NewRelationship=\u65B0\u5173\u7CFB
+TransAction.label.DeleteTable=\u5220\u9664\u8868
+TransAction.label.DeleteTableRow=\u5220\u9664\u8868\u7684\u884C
 TransAction.label.DeleteTransform=\u5220\u9664 Transform
+TransAction.label.DeleteWorkflowHop=\u5220\u9664\u4F5C\u4E1A\u8282\u70B9\u8FDE\u63A5
+TransAction.label.NewAction=\u65B0\u4F5C\u4E1A\u9879
 TransAction.label.NewConnection=\u65B0\u6570\u636E\u5E93\u8FDE\u63A5
-TransAction.label.ChangeWorkflowHop=\u6539\u53D8 Workflow \u8282\u70B9\u8FDE\u63A5
-TransAction.label.NewTableRow=\u65B0\u8868\u7684\u884C
-TransAction.label.DeleteTableRow=\u5220\u9664\u8868\u7684\u884C
-TransAction.label.ChangeNote=\u6539\u53D8\u6CE8\u91CA
-TransAction.label.ChangeTableRow=\u6539\u53D8\u8868\u7684\u884C
-TransAction.label.NewTable=\u65B0\u8868
+TransAction.label.NewHop=\u65B0\u8282\u70B9\u8FDE\u63A5
 TransAction.label.NewNote=\u65B0\u6CE8\u91CA
-TransAction.label.PositionNote=\u79FB\u52A8\u6CE8\u91CA
-TransAction.label.ChangeTransform=\u6539\u53D8 Transform
-TransAction.label.ChangeAction=\u6539\u53D8\u4F5C\u4E1A\u9879
-TransAction.label.PositionTableRow=\u79FB\u52A8\u8868\u7684\u884C
+TransAction.label.NewRelationship=\u65B0\u5173\u7CFB
+TransAction.label.NewTable=\u65B0\u8868
+TransAction.label.NewTableRow=\u65B0\u8868\u7684\u884C
 TransAction.label.NewTransform=\u65B0\u5EFA Transform
-TransAction.label.PositionTransform=\u79FB\u52A8 Transform
-TransAction.label.ChangeTable=\u6539\u53D8\u8868
-TransAction.label.ChangeConnection=\u6539\u53D8\u6570\u636E\u5E93\u8FDE\u63A5
+TransAction.label.NewWorkflowHop=\u65B0 Workflow \u8282\u70B9\u8FDE\u63A5
 TransAction.label.PositionAction=\u79FB\u52A8\u4F5C\u4E1A\u9879
+TransAction.label.PositionNote=\u79FB\u52A8\u6CE8\u91CA
 TransAction.label.PositionTable=\u79FB\u52A8\u8868
-TransAction.label.NewHop=\u65B0\u8282\u70B9\u8FDE\u63A5
-TransAction.label.NewWorkflowHop=\u65B0 Workflow \u8282\u70B9\u8FDE\u63A5
+TransAction.label.PositionTableRow=\u79FB\u52A8\u8868\u7684\u884C
+TransAction.label.PositionTransform=\u79FB\u52A8 Transform
diff --git a/engine/src/main/resources/org/apache/hop/pipeline/messages/messages_zh_CN.properties b/engine/src/main/resources/org/apache/hop/pipeline/messages/messages_zh_CN.properties
index 46d6406..af8f32c 100644
--- a/engine/src/main/resources/org/apache/hop/pipeline/messages/messages_zh_CN.properties
+++ b/engine/src/main/resources/org/apache/hop/pipeline/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,258 +15,256 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.pipeline' in locale 'zh_CN'
-#
 #
-PipelineMeta.SearchMetadata.TransformDescription=Transform \u63CF\u8FF0
-PipelineMeta.Log.WeHaveHops=\u6211\u4EEC\u6709 
-PipelineMeta.Monitor.LoadingPipelineDetailsTask.Title=\u52A0\u8F7D\u8F6C\u6362\u8BE6\u7EC6\u4FE1\u606F
-Pipeline.Log.NumberOfTransformsToRun=\u9700\u8981\u8FD0\u884C\u7684 Transform \u6570\: {0}  , \u8282\u70B9\u6570\: {1}
+DatabaseImpact.RowDesc.Label.Database=\u6570\u636E\u5E93
+DatabaseImpact.RowDesc.Label.Field=\u5B57\u6BB5
 DatabaseImpact.RowDesc.Label.Pipeline=Pipeline
-PipelineMeta.CheckResult.TypeResultOK.Description=\u6CA1\u6709\u4EFB\u4F55\u5B57\u6BB5\u540D\u770B\u8D77\u6765\u5305\u542B\u7A7A\u683C\u6216\u8005\u5176\u4ED6\u6570\u636E\u5E93\u4E0D\u53CB\u597D\u7684\u5B57\u7B26(OK)
-TransformPlugin.Information.Category.Label=Transform \u7C7B\u522B
-PipelineMeta.Log.UserCancelledPipelineSave=\u7528\u6237\u53D6\u6D88\u4FDD\u5B58\u8F6C\u6362\u3002
-Pipeline.FinishListeners.Exception=pipeline \u76D1\u542C\u5668\u8FD0\u884C\u5B8C\u6210\u65F6\u51FA\u9519
-PipelineMeta.Monitor.CheckingTransformTask.Title=\u68C0\u67E5 Transform [{0}]
-TransformPlugin.Information.IconFile.Label=\u56FE\u6807\u6587\u4EF6
-HopURLClassLoader.Exception.UnableToReadClass=\u65E0\u6CD5\u4ECE\u8F93\u5165\u6D41\u8BFB\u53D6\u7C7B\: 
-Pipeline.Log.Status.End=\u7ED3\u675F
-PipelineMeta.CheckResult.TypeResultWarning.Description=\u5B57\u6BB5 [{0}]\: {1} \u5728 Transform [{2}]
-PipelineMeta.Log.LoadedPipeline2=\u52A0\u8F7D\u8F6C\u6362[{0}] , \u76EE\u5F55 \=\= \u7A7A\: {1}
-TransformPlugin.Label=\u901A\u7528
-DatabaseImpact.TypeDesc.Label.Read=\u8BFB
-DatabaseImpact.RowDesc.Label.ValueOrigin=\u539F\u59CB\u503C
-PipelineMeta.UndoTypeDesc.UndoPosition=\u64A4\u9500\u4F4D\u7F6E\u53D8\u66F4
-PipelineMeta.Exception.NotValidPipelineXML=\u65E0\u6548\u7684 Pipeline \u6587\u4EF6 \u201C{0}\u201D(XML\u683C\u5F0F)\u3002
-Pipeline.Log.OpeningLogConnection=\u6253\u5F00\u65E5\u5FD7\u6570\u636E\u5E93\u8FDE\u63A5[{0}]
-PipelineMeta.Monitor.ReadingTransformsTask.Title=\u8BFB\u53D6 Transform...
-PipelineMeta.Log.CheckingTransformTypes=\u68C0\u67E5 Transform \u7C7B\u578B...
-Pipeline.Log.AllocatingRowsets=\u5206\u6D3E\u8BB0\u5F55\u96C6...
-PeekMetric.Column.Written=\u5199
-PipelineMeta.Exception.TransformNameNotFound=\u6CA1\u6709\u53D1\u73B0\u540D\u79F0\u4E3A"{0}"\u7684 Transform
-PipelineMeta.Monitor.SavingPipelineTask.Title=\u4FDD\u5B58 Pipeline 
-Pipeline.Exception.ConnectionCouldNotBeFound=\u6570\u636E\u5E93\u8FDE\u63A5 [{0}]\u65E0\u6CD5\u627E\u5230\uFF01
-TransformLoader.RuntimeError.UnExpectedErrorLoadingClass.PIPELINE0009=\u5F53\u8F7D\u5165\u7C7B\u65F6\u53D1\u751F\u4E86\u4E0D\u53EF\u9884\u6599\u7684\u9519\u8BEF
+DatabaseImpact.RowDesc.Label.Remarks=\u6CE8\u91CA
 DatabaseImpact.RowDesc.Label.SQL=SQL\u8BED\u53E5
-TransformPlugin.Information.ID.Label=ID
-Pipeline.Exception.ErrorRollingBackUniqueConnection=Pipeline \u7ED3\u675F\u540E\u5F53\u8BD5\u56FE\u56DE\u6EDA\u8FDE\u63A5"{0}"\u4E0A\u7684\u4E8B\u52A1\u65F6\uFF0C\u53D1\u751F\u4E86\u4E00\u4E2A\u9519\u8BEF\u3002
-DatabaseImpact.RowDesc.Label.Value=\u503C
-Pipeline.Log.StartDateFound=\u4ECE\u524D\u4E00\u4E2A\u65E5\u5FD7\u5165\u53E3\u53D1\u73B0\u4E86\u5F00\u59CB\u65E5\u671F\: 
-PipelineMeta.Monitor.CheckingTheLoggingTableTask.Title=\u68C0\u67E5\u65E5\u5FD7\u8868...
-PipelineMeta.Monitor.FinishingTask.Title=\u5B8C\u6210...
-PipelineMeta.Value.CheckingFieldName.FieldNameContainsUnfriendlyCodes.Description=\u5B57\u6BB5\u540D\u542B\u6709\u4E00\u4E2A\u6216\u66F4\u591A\u4E0D\u53CB\u597D\u7684\u4EE3\u7801 {0}  (\u6570\u636E\u5E93\u4E0D\u591F\u53CB\u597D\uFF01)
-DatabaseImpact.RowDesc.Label.Database=\u6570\u636E\u5E93
-Pipeline.Exception.ErrorHandlingPipelineTransaction=Pipeline \u7ED3\u675F\u540E\u5728\u5904\u7406\u6570\u636E\u5E93\u4E8B\u52A1\u6216\u5173\u95ED\u8FDE\u63A5\u65F6\u53D1\u751F\u4E86\u4E00\u4E2A\u9519\u8BEF\uFF0C\u53D7\u5230\u5F71\u54CD\u7684\u6570\u636E\u5E93\u8FDE\u63A5\u662F "{0}". 
-PipelineMeta.ErrorReadingSharedObjects.Message=\u5F53\u8BFB\u5171\u4EAB\u6587\u4EF6\u65F6\u53D1\u751F\u9519\u8BEF(\u7EE7\u7EED\u52A0\u8F7D)\: {0}
-PipelineMeta.MissingPluginsFoundWhileLoadingPipeline.Exception=\u52A0\u8F7D Pipeline \u65F6\u53D1\u73B0\u7F3A\u5931\u63D2\u4EF6
-PipelineMeta.Monitor.SortingTransformsTask.Title=\u6392\u5E8F Transform
 DatabaseImpact.RowDesc.Label.Table=\u8868
-PipelineMeta.Exception.PipelineDoesNotExist=\u8FD9\u4E2A\u8F6C\u6362\u4E0D\u5B58\u5728\: 
-Pipeline.Exception.ErrorConnectingToDatabase=\u6B63\u5728\u8FDE\u63A5\u5230\u6570\u636E\u5E93\u65F6\u53D1\u751F\u9519\u8BEF [{0}]
-PipelineMeta.CheckResult.TypeResultOK.ConnectingWorks.Description=Pipeline \u65E5\u5FD7\u8FDE\u63A5\u652F\u6301\: \u8FDE\u63A5\u53EF\u4EE5\u5DE5\u4F5C
-Pipeline.Log.FoundDefferentTransforms=\u6211\u627E\u5230 {0} \u4E2A\u4E0D\u540C\u7684\u8981\u6267\u884C\u7684 Transform\u3002
-PipelineMeta.SearchMetadata.DatabaseConnectionName=Database connection name
-PipelineMeta.Monitor.DeterminingImpactTask.Title=\u8BC4\u4F30\u5F71\u54CD...
+DatabaseImpact.RowDesc.Label.Transform=Transform
+DatabaseImpact.RowDesc.Label.Type=\u7C7B\u578B
+DatabaseImpact.RowDesc.Label.Value=\u503C
+DatabaseImpact.RowDesc.Label.ValueOrigin=\u539F\u59CB\u503C
+DatabaseImpact.TypeDesc.Label.Delete=\u5220\u9664
+DatabaseImpact.TypeDesc.Label.None=\u65E0
+DatabaseImpact.TypeDesc.Label.Read=\u8BFB
 DatabaseImpact.TypeDesc.Label.ReadOrWrite=\u8BFB/\u5199
-PipelineMeta.Log.TimeExecutionTransformSort=\u6309\u6570\u636E\u6D41\u6392\u5E8F Transform \u7EC4\u4EF6\u8017\u65F6 {0} \u6BEB\u79D2(\u524D\u7F6E\u7EC4\u4EF6\u4E2A\u6570 {1} )
-TransformLoader.RuntimeError.UnableToReadPluginXML.PIPELINE0001=\u9519\u8BEF\u5730\u8BFB\u53D6\u63D2\u4EF6XML\u6587\u4EF6\: 
-Pipeline.Log.Start=\u542F\u52A8
-PipelineMeta.CheckResult.TypeResultWarning.HaveTheSameNameField.Description=\u6211\u5DF2\u7ECF\u627E\u5230\u4E86\u8F93\u5165\u5B57\u6BB5\u6709\u91CD\u590D\u540D\u79F0 [{0}]
+DatabaseImpact.TypeDesc.Label.Truncate=\u88C1\u526A
+DatabaseImpact.TypeDesc.Label.Update=\u66F4\u65B0
 DatabaseImpact.TypeDesc.Label.Write=\u5199
-Pipeline.Log.PipelineCanBeReplayed=\u8FD9\u9879\u8F6C\u6362\u53EF\u4EE5\u88AB\u56DE\u653E \u56DE\u653E\u65E5\u671F\u662F\: 
-Pipeline.Log.InitialisingTransforms=\u6B63\u5728\u521D\u59CB\u5316 {0} Transform...
-PipelineMeta.SearchMetadata.DatabaseUsername=\u6570\u636E\u5E93\u7528\u6237\u540D
-PipelineMeta.Monitor.LoadingPipelineTask.Title=\u52A0\u8F7D Pipeline 
-PeekMetric.Column.TransformName=Transform \u540D\u79F0
-Pipeline.Log.TransformInitialized=Transform [{0}] \u521D\u59CB\u5316\u4E0D\u5B8C\u5168\uFF0C\u6709\u7F3A\u9677\u3002
-TransformPlugin.Type.Plugin.Desc=\u63D2\u4EF6
-Pipeline.Log.PipelineIsInPreviewMode=Pipeline \u5904\u4E8E\u9884\u89C8\u6A21\u5F0F...
-Pipeline.Log.FoundDateFromTable=\u4ECE\u8868\u683C\u4E2D\u53D1\u73B0\u4E86\u65E5\u671F {0}{1}{2}
-PipelineMeta.PipelineType.SingleThreaded=\u5355\u7EBF\u7A0B(Hadoop \u4E13\u7528)
-Pipeline.Log.NoLastDateFoundOnTheMaxdateConnection=\u5728\u6700\u6301\u4E45\u8FDE\u63A5\u4E0A\u6CA1\u6709\u627E\u5230\u6700\u540E\u65E5\u671F\uFF01
-PeekMetric.Column.Rejected=\u62D2\u7EDD
-PipelineMeta.UndoTypeDesc.UndoDelete=\u53D6\u6D88\u5220\u9664
-Pipeline.Log.ExecutionStartedForPipeline=\u4E3A\u4E86\u8F6C\u6362\u89E3\u9664\u8865\u4E01\u5F00\u59CB  [{0}]
-PipelineMeta.Log.LookingAtHop=\u5BDF\u770B\u8282\u70B9\u8FDE\u63A5 \#
-PipelineMeta.Log.FoundFieldsToAdd=\u53D1\u73B0\u5B57\u6BB5\u9700\u8981\u6DFB\u52A0\: 
+HopURLClassLoader.Exception.UnableToReadClass=\u65E0\u6CD5\u4ECE\u8F93\u5165\u6D41\u8BFB\u53D6\u7C7B\: 
+PeekMetric.Column.Active=\u6FC0\u6D3B
+PeekMetric.Column.Copynr=\u526F\u672C\u5E8F\u53F7
+PeekMetric.Column.Errors=\u9519\u8BEF
 PeekMetric.Column.Input=\u8F93\u5165
-Pipeline.Log.NumberOfTransformsToPreview=\u9700\u8981\u9884\u89C8\u7684 Transform \u6570\: {0}, \u8282\u70B9\u6570\: {1}
-PipelineMeta.Monitor.ReadingTheAvailableDatabaseTask.Title=\u4ECE\u8D44\u6E90\u5E93\u8BFB\u53D6\u53EF\u83B7\u5F97\u7684\u6570\u636E\u5E93
-PipelineMeta.Exception.OneMappingInputTransformRequired=\u6307\u5B9A\u7684\u6620\u5C04\u9700\u8981\u4E00\u4E2A'\u6620\u5C04\u8F93\u5165' Transform ,\u4F46\u662F\u6CA1\u6709\u8FD9\u4E2A Transform\u3002
-TransformPlugin.Information.Description.Label=\u63CF\u8FF0
-PipelineMeta.Exception.ErrorReadingPipeline=\u9519\u8BEF\u4ECEXML\u6587\u4EF6\u8BFB\u53D6 Pipeline
-Pipeline.Log.ExecutionStartedForFilename=\u5DF2\u7ECF\u5F00\u59CB\u4E3A\u6587\u4EF6\u540D\u89E3\u9664\u8865\u4E01 [{0}]
+PeekMetric.Column.Output=\u8F93\u51FA
+PeekMetric.Column.PriorityBufferSizes=Pri/in/out
+PeekMetric.Column.Read=\u8BFB
+PeekMetric.Column.Rejected=\u62D2\u7EDD
+PeekMetric.Column.Speed=\u901F\u5EA6(\u6761/\u79D2)
+PeekMetric.Column.Time=\u65F6\u95F4
+PeekMetric.Column.TransformName=Transform \u540D\u79F0
+PeekMetric.Column.Updated=\u66F4\u65B0
+PeekMetric.Column.Written=\u5199
+Pipeline.Dialog.Description.NoFileNamePreloadedPipeline=\u6CA1\u6709\u6587\u4EF6\u540D, \u9884\u8F7D\u5165 Pipeline
+Pipeline.Dialog.Description.NoFileNamePreviewMode=\u6CA1\u6709\u6587\u4EF6\u540D, \u9884\u89C8\u6A21\u5F0F
+Pipeline.Exception.ConnectionCouldNotBeFound=\u6570\u636E\u5E93\u8FDE\u63A5 [{0}]\u65E0\u6CD5\u627E\u5230\!
+Pipeline.Exception.ErrorCommittingUniqueConnection=\u9519\u8BEF\u63D0\u4EA4\u8FDE\u63A5\: {0}
+Pipeline.Exception.ErrorConnectingToDatabase=\u6B63\u5728\u8FDE\u63A5\u5230\u6570\u636E\u5E93\u65F6\u53D1\u751F\u9519\u8BEF [{0}]
+Pipeline.Exception.ErrorHandlingPipelineTransaction=Pipeline \u7ED3\u675F\u540E\u5728\u5904\u7406\u6570\u636E\u5E93\u4E8B\u52A1\u6216\u5173\u95ED\u8FDE\u63A5\u65F6\u53D1\u751F\u4E86\u4E00\u4E2A\u9519\u8BEF, \u53D7\u5230\u5F71\u54CD\u7684\u6570\u636E\u5E93\u8FDE\u63A5\u662F "{0}". 
+Pipeline.Exception.ErrorInDatabase=\u9519\u8BEF\u53D1\u751F\u5728\u6570\u636E\u5E93 [{0}]
+Pipeline.Exception.ErrorRollingBackUniqueConnection=Pipeline \u7ED3\u675F\u540E\u5F53\u8BD5\u56FE\u56DE\u6EDA\u8FDE\u63A5"{0}"\u4E0A\u7684\u4E8B\u52A1\u65F6, \u53D1\u751F\u4E86\u4E00\u4E2A\u9519\u8BEF.
 Pipeline.Exception.ErrorWritingLogRecordToTable=\u9519\u8BEF\u5730\u5199\u65E5\u5FD7\u8BB0\u5F55\u5230\u8868[{0}]
+Pipeline.Exception.MaximumDateConnectionCouldNotBeFound=\u6700\u6301\u4E45\u8FDE\u63A5 [{0}] \u4E0D\u80FD\u627E\u5230!
+Pipeline.Exception.NoLogTableDefined=Pipeline \u6CA1\u6709\u5B9A\u4E49\u65E5\u5FD7\u8868
+Pipeline.Exception.NoPipelineNameAvailableForLogging=\u5728\u8FDC\u7A0B\u670D\u52A1\u5668\u4E0A, Pipeline \u9700\u8981\u4E00\u4E2A\u552F\u4E00\u6807\u8BC6\u540D\u79F0.
+Pipeline.Exception.TransactionsCommittedOnConnection=Pipeline \u7ED3\u675F\u65F6,\u6570\u636E\u5E93\u8FDE\u63A5"{0}"\u4E0A\u7684\u6240\u6709\u4E8B\u52A1\u90FD\u88AB\u63D0\u4EA4
+Pipeline.Exception.TransactionsRolledBackOnConnection=Pipeline \u7ED3\u675F\u65F6,\u6570\u636E\u5E93\u8FDE\u63A5"{0}"\u4E0A\u7684\u6240\u6709\u4E8B\u52A1\u90FD\u88AB\u56DE\u6EDA
 Pipeline.Exception.UnableToBeginProcessingPipeline=\u4E0D\u80FD\u5F00\u59CB\u8FDB\u884C Pipeline
-PipelineMeta.SearchMetadata.DatabaseServer=\u6570\u636E\u5E93\u540D\u79F0
-PipelineMeta.Log.SavingFinished=\u4FDD\u5B58\u5B8C\u6210...
+Pipeline.Exception.UnableToGetDependencyInfoFromDB=\u65E0\u6CD5\u83B7\u53D6\u4F9D\u8D56\u4FE1\u606F, \u6765\u81EA[{0}{1}{2}]
+Pipeline.Exception.UnableToLoadPipeline=\u65E0\u6CD5\u52A0\u8F7D Pipeline [{0} ] \u56E0\u4E3A\u76EE\u5F55\u4E0D\u80FD\u88AB\u627E\u5230\: [{1}]
+Pipeline.Exception.UnableToOpenPipeline=Pipeline \u65E0\u6CD5\u6253\u5F00 [{0}]
+Pipeline.FinishListeners.Exception=pipeline \u76D1\u542C\u5668\u8FD0\u884C\u5B8C\u6210\u65F6\u51FA\u9519
 Pipeline.Log.AllocatedRowsets=\ \u5DF2\u5206\u914D {0} \u884C\u7EC4\u4E3A Transform {1} --> {2} 
-DatabaseImpact.TypeDesc.Label.Truncate=\u88C1\u526A
-PipelineHopMeta.Exception.UnableToLoadHopInfo=\u65E0\u6CD5\u4ECEXML\u8282\u70B9\u52A0\u8F7D\u8282\u70B9\u8FDE\u63A5\u4FE1\u606F
-Pipeline.Log.LastDateFoundOnTheMaxdateConnection=\u5728\u6700\u6301\u4E45\u8FDE\u63A5\u4E0A\u627E\u5230\u4E86\u6700\u540E\u65E5\u671F\: 
-Pipeline.PipelineAllocatedNewRowset=Pipeline \u5206\u914D\u4E86\u65B0\u7684\u884C\u7EC4 [{0}]
-PipelineMeta.CheckResult.TypeResultOK.LoggingTableExists.Description=\u65E5\u5FD7\u8868[{0}] \u5B58\u5728\u3002
-Pipeline.Log.PipelineError=Pipeline \u9519\u8BEF\: 
-PipelineMeta.Log.FromTransformALookingAtPreviousTransform=\u4ECE Transform\: {0}, \u5BFB\u627E {1} \u524D1\u4E2A Transform.
-PipelineMeta.Exception.ErrorOfSortingTransforms=Transform \u6392\u5E8F\u65F6\u53D1\u751F\u5F02\u5E38\: 
-Pipeline.Log.TransformCopiesNotCorrectlyDefined=\u5BF9\u4E8E transform {0}\uFF0C\u5176\u526F\u672C\u7684\u6570\u91CF\u4E0D\u4F1A\u89E3\u6790\u4E3A\u5C0F\u4E8E\u96F6\u7684\u6570\u5B57.
-TransformLoader.RuntimeError.IllegalAccessToClass.PIPELINE0007=\u975E\u6CD5\u8BBF\u95EE\u7C7B
-Pipeline.Log.ProcessErrorInfo2=\u8FDB\u7A0B {0}{1} \u51FA\u73B0 {2} \u4E2A\u9519\u8BEF \u5728\u5904\u7406 {3} \u884C \u5728  {4} \u79D2\u5185
+Pipeline.Log.AllocateingRowsetsForTransform=\ \u6B63\u5728\u5206\u914D\u884C\u7EC4\u4E3A Transform {0} --> {1}
+Pipeline.Log.AllocatingRowsets=\u5206\u6D3E\u8BB0\u5F55\u96C6...
 Pipeline.Log.AllocatingTransformsAndTransformData=\u6B63\u5728\u5206\u914D Transform \u548C Transform \u6570\u636E...
-Pipeline.Exception.UnableToLoadPipeline=\u65E0\u6CD5\u52A0\u8F7D Pipeline [{0} ] \u56E0\u4E3A\u76EE\u5F55\u4E0D\u80FD\u88AB\u627E\u5230\: [{1}]
-PipelineMeta.Log.SavingTransforms=\u4FDD\u5B58 Transform...
-PipelineMeta.Log.SavingHops=\u4FDD\u5B58\u8282\u70B9\u8FDE\u63A5...
-TransformPlugin.Information.Type.Label=\u7C7B\u578B
-PipelineMeta.PipelineType.Normal=\u666E\u901A
-DatabaseImpact.TypeDesc.Label.None=\u65E0
-PipelineMeta.Exception.DatabaseErrorOccuredReadingPipeline2=\u4E00\u4E2A\u6570\u636E\u5E93\u9519\u8BEF\u53D1\u751F\u5728\u4ECE\u8D44\u6E90\u5E93\u6587\u4EF6\u8BFB\u53D6\u8F6C\u6362\u65F6
-PipelineMeta.Log.LookingForPipeline=\u67E5\u627E\u8F6C\u6362[{0}] \u5728\u76EE\u5F55 [{1}]
-DatabaseImpact.RowDesc.Label.Field=\u5B57\u6BB5
-PipelineMeta.Log.LoadingTransformWithID=\u4EE5 Transform ID\u52A0\u8F7D\: 
-PipelineMeta.Monitor.SavingHopTask.Title=\u4FDD\u5B58\u8282\u70B9\u8FDE\u63A5 \#
-TransformPlugin.Information.ErrorHelpFile.Label=\u9519\u8BEF\u5E2E\u52A9\u6587\u4EF6
-DatabaseImpact.TypeDesc.Label.Delete=\u5220\u9664
-PipelineMeta.Log.DatabaseErrorOccuredReadingPipeline=\u4E00\u4E2A\u6570\u636E\u5E93\u9519\u8BEF\u53D1\u751F\u5728\u4ECE\u8D44\u6E90\u5E93\u6587\u4EF6\u8BFB\u53D6\u8F6C\u6362\u65F6
+Pipeline.Log.AllowedRelationships=\u53EA\u6709 1-1, 1-n, n-1 \u548C n-n \u7684\u5BF9\u5E94\u5173\u7CFB\u88AB\u5141\u8BB8!
+Pipeline.Log.CannotHaveXYRelationships=\u8FD9\u8BF4\u660E\u4F60\u4E0D\u80FD\u6709 x-y \u7684\u5BF9\u5E94\u5173\u7CFB!
+Pipeline.Log.CheckingForMaxDependencyDate=\u6B63\u5728\u68C0\u67E5\u6700\u5927\u53EF\u9760\u65E5\u671F!
+Pipeline.Log.ErrorInitializingTransform=\u9519\u8BEF\u521D\u59CB\u5316 Transform [{0}]
+Pipeline.Log.ExecutionStartedForFilename=\u5DF2\u7ECF\u5F00\u59CB\u4E3A\u6587\u4EF6\u540D\u89E3\u9664\u8865\u4E01 [{0}]
+Pipeline.Log.ExecutionStartedForPipeline=\u4E3A\u4E86 Pipeline \u89E3\u9664\u8865\u4E01\u5F00\u59CB [{0}]
+Pipeline.Log.FailToInitializeAtLeastOneTransform=\u65E0\u6CD5\u521D\u59CB\u5316\u81F3\u5C11\u4E00\u4E2A Transform. \u6267\u884C\u65E0\u6CD5\u5F00\u59CB!
+Pipeline.Log.FinishedProcessing=\u5B8C\u6210\u5904\u7406(\u8F93\u5165\={0}, \u8F93\u51FA\={1}, \u8BFB\={2}
+Pipeline.Log.FinishedProcessing2=, \u5199\={0}, \u66F4\u65B0\={1}, \u9519\u8BEF\={2})
+Pipeline.Log.FoundDateFromTable=\u4ECE\u8868\u683C\u4E2D\u53D1\u73B0\u4E86\u65E5\u671F {0}{1}{2}
+Pipeline.Log.FoundDefferentTransforms=\u6211\u627E\u5230 {0} \u4E2A\u4E0D\u540C\u7684\u8981\u6267\u884C\u7684 Transform.
+Pipeline.Log.InitialisingTransforms=\u6B63\u5728\u521D\u59CB\u5316 {0} Transform...
+Pipeline.Log.LastDateFoundOnTheMaxdateConnection=\u5728\u6700\u6301\u4E45\u8FDE\u63A5\u4E0A\u627E\u5230\u4E86\u6700\u540E\u65E5\u671F\: 
+Pipeline.Log.LookingAtTransform=\u5BDF\u770B Transform\: 
 Pipeline.Log.LookingForMaxdateConnection=\u6B63\u5728\u5BFB\u627E\u6700\u6301\u4E45\u7684\u8FDE\u63A5\: [{0}]
+Pipeline.Log.Maxdepdate=\u6700\u5927\u53EF\u9760\u65E5\u671F \= 
+Pipeline.Log.NoLastDateFoundOnTheMaxdateConnection=\u5728\u6700\u6301\u4E45\u8FDE\u63A5\u4E0A\u6CA1\u6709\u627E\u5230\u6700\u540E\u65E5\u671F\!
+Pipeline.Log.NumberOfArgumentsDetected=\u5DF2\u7ECF\u627E\u5230\u7684\u53C2\u6570\u6570\u91CF\:{0} 
+Pipeline.Log.NumberOfTransformsToPreview=\u9700\u8981\u9884\u89C8\u7684 Transform \u6570\: {0}, \u8282\u70B9\u6570\: {1}
+Pipeline.Log.NumberOfTransformsToRun=\u9700\u8981\u8FD0\u884C\u7684 Transform \u6570\: {0} , \u8282\u70B9\u6570\: {1}
+Pipeline.Log.OpeningLogConnection=\u6253\u5F00\u65E5\u5FD7\u6570\u636E\u5E93\u8FDE\u63A5[{0}]
+Pipeline.Log.OpeningMaximumDateConnection=\u6B63\u5728\u6253\u5F00\u6700\u6301\u4E45\u7684\u8FDE\u63A5...
+Pipeline.Log.PipelineCanBeReplayed=\u8FD9\u9879 Pipeline \u53EF\u4EE5\u88AB\u56DE\u653E \u56DE\u653E\u65E5\u671F\u662F\: 
+Pipeline.Log.PipelineDetectedErrors=Pipeline \u88AB\u68C0\u6D4B 
+Pipeline.Log.PipelineEnded=Pipeline \u7ED3\u675F.
+Pipeline.Log.PipelineError=Pipeline \u9519\u8BEF\: 
+Pipeline.Log.PipelineErrors=Pipeline \u9519\u8BEF\: 
+Pipeline.Log.PipelineErrorsDetected=\u9519\u8BEF\u88AB\u68C0\u6D4B\u5230!
+Pipeline.Log.PipelineHasAllocated=Pipeline \u5DF2\u7ECF\u5206\u914D\u4E86 {0} \u7EBF\u7A0B \u548C {1} \u5217\u7EC4.
+Pipeline.Log.PipelineHasAllocatedANewTransform=Pipeline \u5DF2\u7ECF\u5206\u914D\u4E86\u4E00\u4E2A\u65B0\u7684 Transform\: [{0}].{1}
+Pipeline.Log.PipelineIsInPreviewMode=Pipeline \u5904\u4E8E\u9884\u89C8\u6A21\u5F0F...
+Pipeline.Log.PipelineIsKillingTheOtherTransforms=Pipeline \u6B63\u5728\u6740\u6B7B\u5176\u4ED6 Transform!
+Pipeline.Log.PipelineIsPreloaded=Pipeline \u5DF2\u7ECF\u4ECE\u8D44\u6E90\u5E93\u9884\u5148\u8F7D\u5165.
+Pipeline.Log.PipelineIsToAllocateTransform=Pipeline \u5927\u7EA6\u5206\u914D\u4E86 Transform [{0}] \u7C7B\u578B\u7684 [{1}]
 Pipeline.Log.ProcessErrorInfo=\u8FDB\u7A0B {0}{1} \u51FA\u73B0 {2} \u4E2A\u9519\u8BEF \u5728\u5904\u7406 {3} \u884C\u4E4B\u540E. ({4} \u884C/\u79D2)
-PeekMetric.Column.Copynr=\u590D\u5236\u7684\u8BB0\u5F55\u884C\u6570
-TransformPlugin.Information.JarFiles.Label=Jar \u6587\u4EF6\u5217\u8868
-PipelineMeta.CheckResult.TypeResultError.ErrorOccurredGettingInputFields.Description=\u53D1\u751F\u4E86\u4E00\u4E2A\u9519\u8BEF\uFF0C\u6B63\u5728\u83B7\u5F97\u8F93\u5165\u5B57\u6BB5 Transform [{0}]\:{1}
-Pipeline.Log.AllowedRelationships=\u53EA\u6709 1-1, 1-n, n-1 \u548C n-n \u7684\u5BF9\u5E94\u5173\u7CFB\u88AB\u5141\u8BB8\uFF01
-PipelineMeta.Log.FoundFieldsToAdd2=\u53D1\u73B0\u5B57\u6BB5\u9700\u8981\u6DFB\u52A0\: 
+Pipeline.Log.ProcessErrorInfo2=\u8FDB\u7A0B {0}{1} \u51FA\u73B0 {2} \u4E2A\u9519\u8BEF \u5728\u5904\u7406 {3} \u884C \u5728 {4} \u79D2\u5185
+Pipeline.Log.ProcessSuccessfullyInfo=\u8FDB\u7A0B {0}{1} \u6210\u529F\u7ED3\u675F, \u5904\u7406\u4E86 {2} \u884C. ( {3} \u884C/\u79D2)
+Pipeline.Log.SafeModeIsEnabled=\u4E3A\u8BE5 Pipeline \u5B89\u5168\u6A21\u5F0F\u5DF2\u7ECF\u5F00\u542F
+Pipeline.Log.Start=\u5F00\u59CB
+Pipeline.Log.StartDateFound=\u4ECE\u524D\u4E00\u4E2A\u65E5\u5FD7\u5165\u53E3\u53D1\u73B0\u4E86\u5F00\u59CB\u65E5\u671F\: 
+Pipeline.Log.Status.End=\u7ED3\u675F
+Pipeline.Log.ThisIsAReplayPipeline=\u8FD9\u662F\u4E00\u4E2A\u56DE\u653E\u7684 Pipeline \: 
+Pipeline.Log.ThisIsNotAReplayPipeline=\u8FD9\u6CA1\u6709\u4E00\u4E2A\u91CD\u653E\u7684 Pipeline
+Pipeline.Log.TransformCopiesNotCorrectlyDefined=\u5BF9\u4E8E transform {0}, \u5176\u526F\u672C\u7684\u6570\u91CF\u4E0D\u4F1A\u89E3\u6790\u4E3A\u5C0F\u4E8E\u96F6\u7684\u6570\u5B57.
+Pipeline.Log.TransformFailedToInit=Transform [{0}] \u521D\u59CB\u5316\u5931\u8D25!
+Pipeline.Log.TransformHasNumberRowCopies=\  Transform \u5DF2\u7ECF\u6709\u4E86\u526F\u672C\={0}
+Pipeline.Log.TransformInitialized=Transform [{0}] \u521D\u59CB\u5316\u4E0D\u5B8C\u5168, \u6709\u7F3A\u9677.
+Pipeline.Log.UnexpectedErrorAtPipelineEnd=\u5728 pipeline \u5B8C\u6210\u65F6\u5F15\u53D1\u610F\u5916\u5F02\u5E38
+Pipeline.Log.copiesInfo=\  \u524D\u4E00\u4E2A\u526F\u672C \= {0}, \u4E0B\u4E00\u4E2A\u526F\u672C\={1}
+Pipeline.PipelineAllocatedNewRowset=Pipeline \u5206\u914D\u4E86\u65B0\u7684\u884C\u7EC4 [{0}]
 Pipeline.Row.Status.End=\u7ED3\u675F
+PipelineDependency.Exception.UnableToLoadPipeline=\u65E0\u6CD5\u4ECEXML\u52A0\u8F7D Pipeline \u4F9D\u8D56
+PipelineHopMeta.Exception.UnableToLoadHopInfo=\u65E0\u6CD5\u4ECEXML\u8282\u70B9\u52A0\u8F7D\u8282\u70B9\u8FDE\u63A5\u4FE1\u606F
+PipelineMeta.CheckResult.TypeResultError.CannotFindPreviousFields.Description=\u65E0\u6CD5\u4ECE Transform \u91CC\u627E\u5230\u4EE5\u524D\u7684\u5B57\u6BB5\: 
+PipelineMeta.CheckResult.TypeResultError.ErrorOccurredGettingInputFields.Description=\u53D1\u751F\u4E86\u4E00\u4E2A\u9519\u8BEF, \u6B63\u5728\u83B7\u5F97\u8F93\u5165\u5B57\u6BB5 Transform [{0}]\:{1}
+PipelineMeta.CheckResult.TypeResultError.ErrorOccurredGettingTransformMetaFields.Description=\u53D1\u751F\u4E86\u4E00\u4E2A\u9519\u8BEF, \u6B63\u5728\u83B7\u5F97\u4FE1\u606F\u5B57\u6BB5 Transform [{0}]\:{1}
 PipelineMeta.CheckResult.TypeResultError.LogTableNotSpecified.Description=\u65E5\u5FD7\u8868\u6CA1\u6709\u6307\u5B9A, \u65E5\u5FD7\u6570\u636E\u5E93\u8FDE\u63A5\u662F
-PipelineMeta.Log.DestinationOfHopCannotBeNull=\u5185\u90E8\u9519\u8BEF\u88AB\u68C0\u6D4B\u5230, \u8282\u70B9\u8FDE\u63A5\u7684\u76EE\u6807\u4E0D\u80FD\u4E3A\u7A7A\uFF01
-Pipeline.Log.CheckingForMaxDependencyDate=\u6B63\u5728\u68C0\u67E5\u6700\u5927\u53EF\u9760\u65E5\u671F\uFF01
-PipelineMeta.CheckResult.TypeResultError.ErrorOccurredGettingTransformMetaFields.Description=\u53D1\u751F\u4E86\u4E00\u4E2A\u9519\u8BEF\uFF0C\u6B63\u5728\u83B7\u5F97\u4FE1\u606F\u5B57\u6BB5 Transform [{0}]\:{1}
-PipelineMeta.Monitor.ReadingTheDependenciesTask.Title=\u8BFB\u53D6\u4F9D\u8D56
-Pipeline.Exception.NoLogTableDefined=Pipeline \u6CA1\u6709\u5B9A\u4E49\u65E5\u5FD7\u8868
-PeekMetric.Column.Output=\u8F93\u51FA
-Pipeline.Log.PipelineDetectedErrors=Pipeline \u88AB\u68C0\u6D4B 
-PipelineMeta.Exception.InvalidXMLPath=Pipeline \u8DEF\u5F84 {0} \u65E0\u6548\uFF0C\u65E0\u6CD5\u6210\u529F\u8FD0\u884C.
-PipelineMeta.Log.NumberOfTransformReaded=\u8BFB\u53D6\u7684 Transform \u6570\u91CF\: 
-TransformPlugin.Type.Native.Desc=\u5185\u7F6E\u7684
-PipelineMeta.Log.NumberOfHopsReaded=\u8BFB\u53D6\u7684\u8282\u70B9\u8FDE\u63A5\u6570\u91CF\: 
-PipelineMeta.UndoTypeDesc.UndoChange=\u53D6\u6D88\u53D8\u66F4
-PipelineMeta.SearchMetadata.DatabasePassword=\u6570\u636E\u5E93\u5BC6\u7801
-TransformLoader.Log.ReplaceExistingPlugid=\u8986\u76D6\u5DF2\u5B58\u5728\u7684\u63D2\u4EF6 \u4F7F\u7528ID\: 
-PipelineMeta.Monitor.ReadingPipelineInfoTask.Title=\u8BFB\u53D6\u8F6C\u6362\u4FE1\u606F
-Pipeline.Log.FinishedProcessing2=, \u5199\={0}, \u66F4\u65B0\={1}, \u9519\u8BEF\={2})
-PipelineMeta.Exception.DatabaseErrorOccuredReadingPipeline=\u4E00\u4E2A\u6570\u636E\u5E93\u9519\u8BEF\u53D1\u751F\u5728\u4ECE\u8D44\u6E90\u5E93\u6587\u4EF6\u8BFB\u53D6\u8F6C\u6362\u65F6
-Pipeline.Log.copiesInfo=\  \u524D\u4E00\u4E2A\u526F\u672C \= {0}, \u4E0B\u4E00\u4E2A\u526F\u672C\={1}
-Pipeline.Log.ThisIsNotAReplayPipeline=\u8FD9\u6CA1\u6709\u4E00\u4E2A\u91CD\u653E\u7684 Pipeline
-Pipeline.Log.SafeModeIsEnabled=\u4E3A\u8FD9\u4E2A\u8F6C\u6362\u5B89\u5168\u6A21\u5F0F\u5DF2\u7ECF\u5F00\u542F
-PeekMetric.Column.Updated=\u66F4\u65B0
+PipelineMeta.CheckResult.TypeResultError.LoggingTableDoesNotExist.Description=\u5728\u8FD9\u4E2A\u65E5\u5FD7\u6570\u636E\u5E93\u8FDE\u63A5\u91CC\u4E0D\u5B58\u5728\u65E5\u5FD7\u8868
 PipelineMeta.CheckResult.TypeResultError.LoggingTableNeedsAdjustments.Description=\u65E5\u5FD7\u8868\u9700\u8981\u4E00\u4E9B\u8C03\u6574\:
-PipelineDependency.Exception.UnableToLoadPipeline=\u65E0\u6CD5\u4ECEXML\u52A0\u8F7D\u8F6C\u6362\u4F9D\u8D56
-Pipeline.Log.AllocateingRowsetsForTransform=\ \u6B63\u5728\u5206\u914D\u884C\u7EC4\u4E3A Transform {0} --> {1}
-Pipeline.Log.Maxdepdate=\u6700\u5927\u53EF\u9760\u65E5\u671F \= 
-Pipeline.Log.FailToInitializeAtLeastOneTransform=\u65E0\u6CD5\u521D\u59CB\u5316\u81F3\u5C11\u4E00\u4E2A Transform.  \u6267\u884C\u65E0\u6CD5\u5F00\u59CB\uFF01
-PipelineMeta.Exception.OnlyOneMappingOutputTransformAllowed=\u5F53\u6CA1\u6709\u6307\u5B9A\u7279\u5B9A\u7684\u5199\u5165 Transform \u540D\u79F0,\u5728\u6620\u5C04\u91CC\u53EA\u80FD\u6709\u4E00\u4E2A'\u6620\u5C04\u8F93\u51FA' Transform ,\u53D1\u73B0\u4E86{0}.
-TransformLoader.RuntimeError.UnableToLoadClass.PIPELINE0003=\u65E0\u6CD5\u52A0\u8F7D\u5E26\u8BF4\u660E\u7684\u7528\u4E8E Transform /\u63D2\u4EF6\u5904\u7406\u7684\u7C7B  [{0} \u68C0\u67E5 Hop\u5206\u914D\u63D2\u4EF6\u5B50\u76EE\u5F55\u7684\u63D2\u4EF6\u662F\u5426\u53EF\u7528.
-Pipeline.Log.FinishedProcessing=\u5B8C\u6210\u5904\u7406(\u8F93\u5165\={0}, \u8F93\u51FA\={1}, \u8BFB\={2}
+PipelineMeta.CheckResult.TypeResultOK.ConnectingWorks.Description=Pipeline \u65E5\u5FD7\u8FDE\u63A5\u652F\u6301\: \u8FDE\u63A5\u53EF\u4EE5\u5DE5\u4F5C
+PipelineMeta.CheckResult.TypeResultOK.CorrectLayout.Description=\u65E5\u5FD7\u8868\u6709\u6B63\u786E\u7684\u5E03\u5C40.
+PipelineMeta.CheckResult.TypeResultOK.Description=\u6CA1\u6709\u4EFB\u4F55\u5B57\u6BB5\u540D\u770B\u8D77\u6765\u5305\u542B\u7A7A\u683C\u6216\u8005\u5176\u4ED6\u6570\u636E\u5E93\u4E0D\u53CB\u597D\u7684\u5B57\u7B26(OK)
+PipelineMeta.CheckResult.TypeResultOK.LoggingTableExists.Description=\u65E5\u5FD7\u8868[{0}] \u5B58\u5728.
+PipelineMeta.CheckResult.TypeResultWarning.Description=\u5B57\u6BB5 [{0}]\: {1} \u5728 Transform [{2}]
+PipelineMeta.CheckResult.TypeResultWarning.HaveTheSameNameField.Description=\u6211\u5DF2\u7ECF\u627E\u5230\u4E86\u8F93\u5165\u5B57\u6BB5\u6709\u91CD\u590D\u540D\u79F0 [{0}]
 PipelineMeta.CheckResult.TypeResultWarning.TransformIsNotUsed.Description=Pipeline \u91CC\u6CA1\u6709\u4F7F\u7528\u8FD9\u4E2A Transform.
-PipelineMeta.Log.WeHaveConnections=\u8FD9\u6709{0} \u6570\u636E\u5E93\u8FDE\u63A5...
-Pipeline.Log.NumberOfArgumentsDetected=\u5DF2\u7ECF\u627E\u5230\u7684\u53C2\u6570\u6570\u91CF\:{0} 
-DatabaseImpact.RowDesc.Label.Remarks=\u6CE8\u91CA
-Pipeline.Dialog.Description.NoFileNamePreviewMode=\u6CA1\u6709\u6587\u4EF6\u540D, \u9884\u89C8\u6A21\u5F0F
-TransformPlugin.Information.SeparateClassloader.Label=\u9694\u79BB\u7684\u7C7B\u52A0\u8F7D\u5668
-Pipeline.Dialog.Description.NoFileNamePreloadedPipeline=\u6CA1\u6709\u6587\u4EF6\u540D, \u9884\u8F7D\u5165 Pipeline
-PipelineMeta.Monitor.ReadingNoteTask.Title=\u8BFB\u53D6\u6CE8\u91CA...
-PipelineMeta.Monitor.CheckingForDatabaseUnfriendlyCharactersInFieldNamesTask.Title=\u68C0\u67E5\u5B57\u6BB5\u540D\u79F0\u91CC(\u5BF9\u4E8E\u6570\u636E\u5E93)\u975E\u6CD5\u7684\u5B57\u7B26\u4E32...
-PipelineMeta.SearchMetadata.DatabaseHostName=\u6570\u636E\u5E93\u670D\u52A1\u5668\u540D
-Pipeline.Log.PipelineHasAllocatedANewTransform=Pipeline \u5DF2\u7ECF\u5206\u914D\u4E86\u4E00\u4E2A\u65B0\u7684 Transform\: [{0}].{1}
-PipelineMeta.Log.LoadedPipeline=\u52A0\u8F7D\u8F6C\u6362[{0}]\u5728\u76EE\u5F55 {1}
-Pipeline.Log.TransformHasNumberRowCopies=\  Transform \u5DF2\u7ECF\u6709\u4E86\u526F\u672C\={0}
-TransformPlugin.Information.ToolTip.Label=\u63D0\u793A
+PipelineMeta.ErrorReadingSharedObjects.Message=\u5F53\u8BFB\u5171\u4EAB\u6587\u4EF6\u65F6\u53D1\u751F\u9519\u8BEF(\u7EE7\u7EED\u52A0\u8F7D)\: {0}
+PipelineMeta.Exception.DatabaseErrorOccuredReadingPipeline=\u4E00\u4E2A\u6570\u636E\u5E93\u9519\u8BEF\u53D1\u751F\u5728\u4ECE\u8D44\u6E90\u5E93\u6587\u4EF6\u8BFB\u53D6 Pipeline \u65F6
+PipelineMeta.Exception.DatabaseErrorOccuredReadingPipeline2=\u4E00\u4E2A\u6570\u636E\u5E93\u9519\u8BEF\u53D1\u751F\u5728\u4ECE\u8D44\u6E90\u5E93\u6587\u4EF6\u8BFB\u53D6 Pipeline \u65F6
+PipelineMeta.Exception.ErrorOfSortingTransforms=Transform \u6392\u5E8F\u65F6\u53D1\u751F\u5F02\u5E38\: 
+PipelineMeta.Exception.ErrorOpeningOrValidatingTheXMLFile=\u53D1\u751F\u4E86\u4E00\u4E2A\u9519\u8BEF, \u5F53\u6253\u5F00/\u9A8C\u8BC1 XML \u6587\u4EF6 "{0}"!
+PipelineMeta.Exception.ErrorReadingPipeline=\u9519\u8BEF\u4ECEXML\u6587\u4EF6\u8BFB\u53D6 Pipeline
+PipelineMeta.Exception.InvalidXMLPath=Pipeline \u8DEF\u5F84 {0} \u65E0\u6548, \u65E0\u6CD5\u6210\u529F\u8FD0\u884C.
+PipelineMeta.Exception.MissingXMLFilePath=\u65E0\u6CD5\u542F\u52A8 Pipeline, \u6CA1\u6709\u6307\u5B9A Pipeline \u6587\u4EF6\u7684\u8DEF\u5F84.
+PipelineMeta.Exception.NotValidPipelineXML=\u65E0\u6548\u7684 Pipeline \u6587\u4EF6 \u201C{0}\u201D(XML\u683C\u5F0F).
+PipelineMeta.Exception.OneMappingInputTransformRequired=\u6307\u5B9A\u7684\u6620\u5C04\u9700\u8981\u4E00\u4E2A'\u6620\u5C04\u8F93\u5165' Transform ,\u4F46\u662F\u6CA1\u6709\u8FD9\u4E2A Transform.
+PipelineMeta.Exception.OneMappingOutputTransformRequired=\u6307\u5B9A\u7684\u6620\u5C04\u9700\u8981\u4E00\u4E2A'\u6620\u5C04\u8F93\u51FA' Transform ,\u4F46\u662F\u6CA1\u6709\u8FD9\u4E2A Transform.
+PipelineMeta.Exception.OnlyOneMappingInputTransformAllowed=\u5F53\u6CA1\u6709\u6307\u5B9A\u7279\u5B9A\u7684\u8BFB\u5165 Transform \u540D\u79F0,\u5728\u6620\u5C04\u91CC\u53EA\u80FD\u6709\u4E00\u4E2A'\u6620\u5C04\u8F93\u5165' Transform ,\u53D1\u73B0\u4E86{0}.
+PipelineMeta.Exception.OnlyOneMappingOutputTransformAllowed=\u5F53\u6CA1\u6709\u6307\u5B9A\u7279\u5B9A\u7684\u5199\u5165 Transform \u540D\u79F0,\u5728\u6620\u5C04\u91CC\u53EA\u80FD\u6709\u4E00\u4E2A'\u6620\u5C04\u8F93\u51FA' Transform ,\u53D1\u73B0\u4E86{0}.
+PipelineMeta.Exception.PipelineDoesNotExist=\u8BE5 Pipeline \u4E0D\u5B58\u5728\: 
+PipelineMeta.Exception.PlsSelectAValidDirectoryBeforeSavingThePipeline=\u8BF7\u9009\u62E9\u4E00\u4E2A\u53EF\u7528\u7684\u76EE\u5F55\u5728\u4FDD\u5B58 Pipeline \u4E4B\u524D!
+PipelineMeta.Exception.TransformNameNotFound=\u6CA1\u6709\u53D1\u73B0\u540D\u79F0\u4E3A"{0}"\u7684 Transform
+PipelineMeta.Log.CheckingTransformTypes=\u68C0\u67E5 Transform \u7C7B\u578B...
+PipelineMeta.Log.DatabaseError=Hop \u6570\u636E\u5E93\u9519\u8BEF\: 
+PipelineMeta.Log.DatabaseErrorOccuredReadingPipeline=\u4E00\u4E2A\u6570\u636E\u5E93\u9519\u8BEF\u53D1\u751F\u5728\u4ECE\u8D44\u6E90\u5E93\u6587\u4EF6\u8BFB\u53D6 Pipeline \u65F6
+PipelineMeta.Log.DeletingOldVersionPipeline=\u5220\u9664\u65E7\u7248\u672C\u7684 Pipeline ...
+PipelineMeta.Log.DestinationOfHopCannotBeNull=\u5185\u90E8\u9519\u8BEF\u88AB\u68C0\u6D4B\u5230, \u8282\u70B9\u8FDE\u63A5\u7684\u76EE\u6807\u4E0D\u80FD\u4E3A\u7A7A!
+PipelineMeta.Log.EmptySharedObjectsFile=\u6B63\u5728\u4F7F\u7528\u7684\u5171\u4EAB\u5BF9\u8C61\u6587\u4EF6 "{0}"\u4E0D\u5305\u542B\u4EFB\u4F55\u5171\u4EAB\u5BF9\u8C61 (\u6216\u4E0D\u5B58\u5728)
+PipelineMeta.Log.FoundFieldsToAdd=\u53D1\u73B0\u5B57\u6BB5\u9700\u8981\u6DFB\u52A0\: 
+PipelineMeta.Log.FoundFieldsToAdd2=\u53D1\u73B0\u5B57\u6BB5\u9700\u8981\u6DFB\u52A0\: 
+PipelineMeta.Log.FromTransformALookingAtPreviousTransform=\u4ECE Transform\: {0}, \u5BFB\u627E {1} \u524D1\u4E2A Transform.
+PipelineMeta.Log.GettingFieldsFromTransform=\u4ECE Transform \u83B7\u53D6\u5B57\u6BB5\: {0}, \u7C7B\u578B\={1}
+PipelineMeta.Log.LoadedPipeline=\u52A0\u8F7D Pipeline [{0}]\u5728\u76EE\u5F55 {1}
+PipelineMeta.Log.LoadedPipeline2=\u52A0\u8F7D Pipeline [{0}] , \u76EE\u5F55 \=\= \u7A7A\: {1}
+PipelineMeta.Log.LoadingPipeline=\u4ECE\u8D44\u6E90\u5E93\u52A0\u8F7D Pipeline [{0}]...
+PipelineMeta.Log.LoadingTransformWithID=\u4EE5 Transform ID\u52A0\u8F7D\: 
 PipelineMeta.Log.LookingAtConnection=\u5BDF\u770B\u6570\u636E\u5E93\u8FDE\u63A5 \#
-DatabaseImpact.RowDesc.Label.Transform=Transform
-PeekMetric.Column.PriorityBufferSizes=Pri/in/out
-PipelineMeta.Monitor.SavingDatabaseTask.Title=\u4FDD\u5B58\u6570\u636E\u5E93 \#
-PipelineMeta.Exception.PlsSelectAValidDirectoryBeforeSavingThePipeline=\u8BF7\u9009\u62E9\u4E00\u4E2A\u53EF\u7528\u7684\u76EE\u5F55\u5728\u4FDD\u5B58\u8F6C\u6362\u4E4B\u524D\uFF01
-PipelineMeta.CheckResult.TypeResultError.CannotFindPreviousFields.Description=\u65E0\u6CD5\u4ECE Transform \u91CC\u627E\u5230\u4EE5\u524D\u7684\u5B57\u6BB5\: 
-DatabaseImpact.RowDesc.Label.Type=\u7C7B\u578B
+PipelineMeta.Log.LookingAtHop=\u5BDF\u770B\u8282\u70B9\u8FDE\u63A5 \#
+PipelineMeta.Log.LookingAtTransform=\u5BDF\u770B Transform \#
+PipelineMeta.Log.LookingForPipeline=\u67E5\u627E Pipeline [{0}] \u5728\u76EE\u5F55 [{1}]
+PipelineMeta.Log.NumberOfHopsReaded=\u8BFB\u53D6\u7684\u8282\u70B9\u8FDE\u63A5\u6570\u91CF\: 
+PipelineMeta.Log.NumberOfTransformReaded=\u8BFB\u53D6\u7684 Transform \u6570\u91CF\: 
+PipelineMeta.Log.OldVersionOfPipelineRemoved=\u65E7\u7248\u672C\u7684 Pipeline \u88AB\u5220\u9664.
+PipelineMeta.Log.ReadingTransforms=\u8BFB\u53D6 
+PipelineMeta.Log.SavingDatabaseConnections=\u4FDD\u5B58\u6570\u636E\u5E93\u8FDE\u63A5...
 PipelineMeta.Log.SavingDependencies=\u4FDD\u5B58\u4F9D\u8D56...
-TransformLoader.RuntimeError.MalformedURL.PIPELINE0008=\u96BE\u770B\u7684 URL
-TransformPlugin.Information.ClassName.Label=\u7C7B\u540D
+PipelineMeta.Log.SavingFinished=\u4FDD\u5B58\u5B8C\u6210...
+PipelineMeta.Log.SavingHops=\u4FDD\u5B58\u8282\u70B9\u8FDE\u63A5...
+PipelineMeta.Log.SavingNotes=\u4FDD\u5B58\u6CE8\u91CA...
+PipelineMeta.Log.SavingOfPipelineStarted=\u5F00\u59CB\u4FDD\u5B58 Pipeline .
+PipelineMeta.Log.SavingPipelineInfo=\u4FDD\u5B58 Pipeline \u4FE1\u606F...
+PipelineMeta.Log.SavingTransforms=\u4FDD\u5B58 Transform...
+PipelineMeta.Log.TimeExecutionTransformSort=\u6309\u6570\u636E\u6D41\u6392\u5E8F Transform \u7EC4\u4EF6\u8017\u65F6 {0} \u6BEB\u79D2(\u524D\u7F6E\u7EC4\u4EF6\u4E2A\u6570 {1} )
+PipelineMeta.Log.UserCancelledPipelineSave=\u7528\u6237\u53D6\u6D88\u4FDD\u5B58 Pipeline .
+PipelineMeta.Log.WeHaveConnections=\u8FD9\u6709{0} \u6570\u636E\u5E93\u8FDE\u63A5...
+PipelineMeta.Log.WeHaveHops=\u6211\u4EEC\u6709 
+PipelineMeta.MissingPluginsFoundWhileLoadingPipeline.Exception=\u52A0\u8F7D Pipeline \u65F6\u53D1\u73B0\u7F3A\u5931\u63D2\u4EF6
+PipelineMeta.Monitor.CheckingForDatabaseUnfriendlyCharactersInFieldNamesTask.Title=\u68C0\u67E5\u5B57\u6BB5\u540D\u79F0\u91CC(\u5BF9\u4E8E\u6570\u636E\u5E93)\u975E\u6CD5\u7684\u5B57\u7B26\u4E32...
+PipelineMeta.Monitor.CheckingTheLoggingTableTask.Title=\u68C0\u67E5\u65E5\u5FD7\u8868...
+PipelineMeta.Monitor.CheckingTransformTask.Title=\u68C0\u67E5 Transform [{0}]
+PipelineMeta.Monitor.DeletingOldVersionPipelineTask.Title=\u5220\u9664\u65E7\u7248\u672C\u7684 Pipeline ...
+PipelineMeta.Monitor.DeterminingImpactTask.Title=\u8BC4\u4F30\u5F71\u54CD...
+PipelineMeta.Monitor.FinishingTask.Title=\u5B8C\u6210...
+PipelineMeta.Monitor.GettingFieldsFromTransformTask.Title=\u83B7\u53D6\u5B57\u6BB5\u6765\u81EA [{0}]
+PipelineMeta.Monitor.GettingTheSQLForPipelineTask.Title=\u6B63\u5728\u83B7\u53D6\u8FDB\u884C\u8BE5 Pipeline \u6240\u9700\u8981\u7684 SQL ...
+PipelineMeta.Monitor.GettingTheSQLForPipelineTask.Title2=\u83B7\u53D6\u5BF9\u4E8E\u8BE5 Pipeline \u7684SQL\u8BED\u53E5(\u65E5\u5FD7\u8868\u7B49.)
+PipelineMeta.Monitor.GettingTheSQLForTransformTask.Title=\u4E3A Transform [{0}]\u83B7\u53D6SQL\u8BED\u53E5 
+PipelineMeta.Monitor.HandlingOldVersionPipelineTask.Title=\u5904\u7406\u65E7\u7248\u672C\u7684 Pipeline (\u5982\u679C\u5B58\u5728)...
+PipelineMeta.Monitor.LoadingPipelineDetailsTask.Title=\u52A0\u8F7D Pipeline \u8BE6\u7EC6\u4FE1\u606F
+PipelineMeta.Monitor.LoadingPipelineTask.Title=\u52A0\u8F7D Pipeline 
+PipelineMeta.Monitor.LookingAtTransformTask.Title=\u67E5\u627E Transform \#
+PipelineMeta.Monitor.ReadingHopTask.Title=\u8BFB\u53D6\u8282\u70B9\u8FDE\u63A5
+PipelineMeta.Monitor.ReadingNoteTask.Title=\u8BFB\u53D6\u6CE8\u91CA...
+PipelineMeta.Monitor.ReadingPipelineInfoTask.Title=\u8BFB\u53D6 Pipeline \u4FE1\u606F
+PipelineMeta.Monitor.ReadingTheAvailableDatabaseTask.Title=\u4ECE\u8D44\u6E90\u5E93\u8BFB\u53D6\u53EF\u83B7\u5F97\u7684\u6570\u636E\u5E93
 PipelineMeta.Monitor.ReadingTheAvailableSharedObjectsTask.Title=\u4ECE\u8D44\u6E90\u5E93\u91CC\u8BFB\u53D6\u53EF\u7528\u7684\u5171\u4EAB\u5BF9\u8C61
-Pipeline.Exception.TransactionsRolledBackOnConnection=Pipeline \u7ED3\u675F\u65F6,\u6570\u636E\u5E93\u8FDE\u63A5"{0}"\u4E0A\u7684\u6240\u6709\u4E8B\u52A1\u90FD\u88AB\u56DE\u6EDA
-TransformPlugin.Information.Directory.Label=\u76EE\u5F55
-PeekMetric.Column.Time=\u65F6\u95F4
-Pipeline.Log.UnexpectedErrorAtPipelineEnd=\u5728 pipeline \u5B8C\u6210\u65F6\u5F15\u53D1\u610F\u5916\u5F02\u5E38
-Pipeline.Exception.NoPipelineNameAvailableForLogging=\u5728\u8FDC\u7A0B\u670D\u52A1\u5668\u4E0A,\u8F6C\u6362\u9700\u8981\u4E00\u4E2A\u552F\u4E00\u6807\u8BC6\u540D\u79F0.
-PipelineMeta.SearchMetadata.DatabaseTypeDescription=\u6570\u636E\u5E93\u7C7B\u578B\u63CF\u8FF0
+PipelineMeta.Monitor.ReadingTheDependenciesTask.Title=\u8BFB\u53D6\u4F9D\u8D56
+PipelineMeta.Monitor.ReadingTransformTask.Title=\u8BFB\u53D6 Transform \#
+PipelineMeta.Monitor.ReadingTransformsTask.Title=\u8BFB\u53D6 Transform...
+PipelineMeta.Monitor.SavingDatabaseTask.Title=\u4FDD\u5B58\u6570\u636E\u5E93 \#
+PipelineMeta.Monitor.SavingHopTask.Title=\u4FDD\u5B58\u8282\u70B9\u8FDE\u63A5 \#
+PipelineMeta.Monitor.SavingNoteTask.Title=\u4FDD\u5B58\u6CE8\u91CA \#
+PipelineMeta.Monitor.SavingPipelineTask.Title=\u4FDD\u5B58 Pipeline 
+PipelineMeta.Monitor.SavingTransformTask.Title=\u4FDD\u5B58 Transform \#
+PipelineMeta.Monitor.SortingTransformsTask.Title=\u6392\u5E8F Transform
+PipelineMeta.Monitor.VerifyingThisPipelineTask.Title=\u6821\u9A8C\u8BE5 Pipeline ...
+PipelineMeta.Monitor.VerifyingTransformTask.Title=\u6821\u9A8C Transform [{0}]
+PipelineMeta.PipelineType.Normal=\u666E\u901A
+PipelineMeta.PipelineType.SingleThreaded=\u5355\u7EBF\u7A0B(\u4E13\u4E3A Hop \u8BBE\u8BA1)
+PipelineMeta.SQLStatement.ErrorDesc.ErrorObtainingPipelineLogTableInfo=\u6B63\u5728\u83B7\u5F97 Pipeline \u65E5\u5FD7\u8868\u683C\u4FE1\u606F\u65F6\u51FA\u9519\: 
+PipelineMeta.SearchMetadata.DatabaseConnectionName=Database connection name
+PipelineMeta.SearchMetadata.DatabaseHostName=\u6570\u636E\u5E93\u670D\u52A1\u5668\u540D
+PipelineMeta.SearchMetadata.DatabaseName=\u6570\u636E\u5E93\u540D\u79F0
+PipelineMeta.SearchMetadata.DatabasePassword=\u6570\u636E\u5E93\u5BC6\u7801
 PipelineMeta.SearchMetadata.DatabasePort=\u6570\u636E\u5E93\u7AEF\u53E3
-Pipeline.Log.OpeningMaximumDateConnection=\u6B63\u5728\u6253\u5F00\u6700\u6301\u4E45\u7684\u8FDE\u63A5...
-Pipeline.Log.ProcessSuccessfullyInfo=\u8FDB\u7A0B {0}{1} \u6210\u529F\u7ED3\u675F, \u5904\u7406\u4E86 {2} \u884C. ( {3} \u884C/\u79D2)
-TransformLoader.RuntimeError.CouldNotFindDirectory.PIPELINE0002=\u65E0\u6CD5\u627E\u5230\u76EE\u5F55[{0}]
-PipelineMeta.Monitor.GettingTheSQLForPipelineTask.Title2=\u83B7\u53D6\u5BF9\u4E8E\u8FD9\u4E2A\u8F6C\u6362\u7684SQL\u8BED\u53E5(\u65E5\u5FD7\u8868\u7B49.)
-PipelineMeta.Log.EmptySharedObjectsFile=\u6B63\u5728\u4F7F\u7528\u7684\u5171\u4EAB\u5BF9\u8C61\u6587\u4EF6 "{0}"\u4E0D\u5305\u542B\u4EFB\u4F55\u5171\u4EAB\u5BF9\u8C61 (\u6216\u4E0D\u5B58\u5728)
-PipelineMeta.Value.CheckingFieldName.FieldNameContainsSpaces.Description=\u5B57\u6BB5\u540D\u542B\u6709\u4E00\u4E2A\u6216\u66F4\u591A\u7A7A\u683C.  (\u6570\u636E\u5E93\u4E0D\u591F\u53CB\u597D\uFF01)
+PipelineMeta.SearchMetadata.DatabaseServer=\u6570\u636E\u5E93\u540D\u79F0
+PipelineMeta.SearchMetadata.DatabaseTypeDescription=\u6570\u636E\u5E93\u7C7B\u578B\u63CF\u8FF0
+PipelineMeta.SearchMetadata.DatabaseUsername=\u6570\u636E\u5E93\u7528\u6237\u540D
+PipelineMeta.SearchMetadata.NotepadText=Notepad text
+PipelineMeta.SearchMetadata.TransformDescription=Transform \u63CF\u8FF0
 PipelineMeta.SearchMetadata.TransformName=Transform \u540D\u79F0
+PipelineMeta.UndoTypeDesc.UndoChange=\u53D6\u6D88\u53D8\u66F4
+PipelineMeta.UndoTypeDesc.UndoDelete=\u53D6\u6D88\u5220\u9664
+PipelineMeta.UndoTypeDesc.UndoNew=\u64A4\u9500\u65B0\u5EFA
+PipelineMeta.UndoTypeDesc.UndoPosition=\u64A4\u9500\u4F4D\u7F6E\u53D8\u66F4
+PipelineMeta.Value.CheckingFieldName.FieldNameContainsSpaces.Description=\u5B57\u6BB5\u540D\u542B\u6709\u4E00\u4E2A\u6216\u66F4\u591A\u7A7A\u683C. (\u6570\u636E\u5E93\u4E0D\u591F\u53CB\u597D\!)
+PipelineMeta.Value.CheckingFieldName.FieldNameContainsUnfriendlyCodes.Description=\u5B57\u6BB5\u540D\u542B\u6709\u4E00\u4E2A\u6216\u66F4\u591A\u4E0D\u53CB\u597D\u7684\u4EE3\u7801 {0} (\u6570\u636E\u5E93\u4E0D\u591F\u53CB\u597D\!)
+PipelineMeta.Value.CheckingFieldName.FieldNameIsEmpty.Description=\u5B57\u6BB5\u540D\u79F0\u4E3A\u7A7A.
+SingleThreadedPipeline.Log.SummaryInfo=\u5904\u7406\u5B8C\u6210 (I\={0}, O\={1}, R\={2}, W\={3}, U\={4}, E\={5})
+TransformLoader.Log.ReplaceExistingPlugid=\u8986\u76D6\u5DF2\u5B58\u5728\u7684\u63D2\u4EF6 \u4F7F\u7528ID\: 
 TransformLoader.Log.TransformLoader.Description=\u5728\u76EE\u5F55\u91CC\u67E5\u627E\u63D2\u4EF6\: 
-Pipeline.Exception.ErrorCommittingUniqueConnection=\u9519\u8BEF\u63D0\u4EA4\u8FDE\u63A5\: {0}
-Pipeline.Log.PipelineIsPreloaded=Pipeline \u5DF2\u7ECF\u4ECE\u8D44\u6E90\u5E93\u9884\u5148\u8F7D\u5165.
-Pipeline.Log.PipelineHasAllocated=Pipeline \u5DF2\u7ECF\u5206\u914D\u4E86 {0} \u7EBF\u7A0B \u548C {1} \u5217\u7EC4.
-PipelineMeta.SearchMetadata.DatabaseName=\u6570\u636E\u5E93\u540D\u79F0
-TransformLoader.RuntimeError.ClassNotFound.PIPELINE0005=\u7C7B\u627E\u4E0D\u5230
 TransformLoader.Log.TransformLoader.Title=Transform \u52A0\u8F7D\u5668
-PipelineMeta.Exception.OneMappingOutputTransformRequired=\u6307\u5B9A\u7684\u6620\u5C04\u9700\u8981\u4E00\u4E2A'\u6620\u5C04\u8F93\u51FA' Transform ,\u4F46\u662F\u6CA1\u6709\u8FD9\u4E2A Transform.
-PipelineMeta.Monitor.VerifyingTransformTask.Title=\u6821\u9A8C Transform [{0}]
-PipelineMeta.Log.OldVersionOfPipelineRemoved=\u65E7\u7248\u672C\u7684\u8F6C\u6362\u88AB\u5220\u9664.
-TransformLoader.RuntimeError.UnknownPluginType.PIPELINE0004=\u672A\u77E5\u7684\u63D2\u4EF6\u7C7B\u578B\: 
-PipelineMeta.Monitor.ReadingHopTask.Title=\u8BFB\u53D6\u8282\u70B9\u8FDE\u63A5
-PipelineMeta.Monitor.SavingNoteTask.Title=\u4FDD\u5B58\u6CE8\u91CA \#
-PeekMetric.Column.Read=\u8BFB
-Pipeline.Log.PipelineErrors=Pipeline \u9519\u8BEF\: 
-Pipeline.Exception.MaximumDateConnectionCouldNotBeFound=\u6700\u6301\u4E45\u8FDE\u63A5 [{0}] \u4E0D\u80FD\u627E\u5230\uFF01
-PipelineMeta.CheckResult.TypeResultError.LoggingTableDoesNotExist.Description=\u5728\u8FD9\u4E2A\u65E5\u5FD7\u6570\u636E\u5E93\u8FDE\u63A5\u91CC\u4E0D\u5B58\u5728\u65E5\u5FD7\u8868
-PipelineMeta.Monitor.SavingTransformTask.Title=\u4FDD\u5B58 Transform \#
-PipelineMeta.Monitor.GettingFieldsFromTransformTask.Title=\u83B7\u53D6\u5B57\u6BB5\u6765\u81EA [{0}]
-PipelineMeta.SearchMetadata.NotepadText=Notepad text
-PipelineMeta.Log.DatabaseError=Hop \u6570\u636E\u5E93\u9519\u8BEF\: 
-Pipeline.Log.ErrorInitializingTransform=\u9519\u8BEF\u521D\u59CB\u5316 Transform [{0}]
-PipelineMeta.Monitor.DeletingOldVersionPipelineTask.Title=\u5220\u9664\u65E7\u7248\u672C\u7684\u8F6C\u6362...
-Pipeline.Exception.UnableToGetDependencyInfoFromDB=\u65E0\u6CD5\u83B7\u53D6\u4F9D\u8D56\u4FE1\u606F\uFF0C\u6765\u81EA[{0}{1}{2}]
-PeekMetric.Column.Errors=\u9519\u8BEF
-PipelineMeta.Monitor.GettingTheSQLForPipelineTask.Title=\u6B63\u5728\u83B7\u53D6\u8FDB\u884C\u8FD9\u4E2A\u8F6C\u6362\u6240\u9700\u8981\u7684 SQL ...
+TransformLoader.RuntimeError.ClassNotFound.PIPELINE0005=\u7C7B\u627E\u4E0D\u5230
+TransformLoader.RuntimeError.CouldNotFindDirectory.PIPELINE0002=\u65E0\u6CD5\u627E\u5230\u76EE\u5F55[{0}]
+TransformLoader.RuntimeError.IllegalAccessToClass.PIPELINE0007=\u975E\u6CD5\u8BBF\u95EE\u7C7B
+TransformLoader.RuntimeError.MalformedURL.PIPELINE0008=\u96BE\u770B\u7684 URL
 TransformLoader.RuntimeError.NoValidTransformOrPlugin.PIPELINE0010=\u65E0\u6548\u7684 Transform /\u63D2\u4EF6.
-PipelineMeta.CheckResult.TypeResultOK.CorrectLayout.Description=\u65E5\u5FD7\u8868\u6709\u6B63\u786E\u7684\u5E03\u5C40.
-Pipeline.Log.TransformFailedToInit=Transform [{0}] \u521D\u59CB\u5316\u5931\u8D25\uFF01
-PipelineMeta.Log.SavingOfPipelineStarted=\u5F00\u59CB\u4FDD\u5B58\u8F6C\u6362.
-PipelineMeta.Monitor.GettingTheSQLForTransformTask.Title=\u4E3A Transform [{0}]\u83B7\u53D6SQL\u8BED\u53E5 
-PipelineMeta.Log.GettingFieldsFromTransform=\u4ECE Transform \u83B7\u53D6\u5B57\u6BB5\: {0}, \u7C7B\u578B\={1}
-PipelineMeta.Exception.OnlyOneMappingInputTransformAllowed=\u5F53\u6CA1\u6709\u6307\u5B9A\u7279\u5B9A\u7684\u8BFB\u5165 Transform \u540D\u79F0,\u5728\u6620\u5C04\u91CC\u53EA\u80FD\u6709\u4E00\u4E2A'\u6620\u5C04\u8F93\u5165' Transform ,\u53D1\u73B0\u4E86{0}.
-PipelineMeta.Monitor.ReadingTransformTask.Title=\u8BFB\u53D6 Transform \#
-PipelineMeta.UndoTypeDesc.UndoNew=\u64A4\u9500\u65B0\u5EFA
-PipelineMeta.Log.DeletingOldVersionPipeline=\u5220\u9664\u65E7\u7248\u672C\u7684\u8F6C\u6362...
-PipelineMeta.Monitor.LookingAtTransformTask.Title=\u67E5\u627E Transform \#
-SingleThreadedPipeline.Log.SummaryInfo=\u5904\u7406\u5B8C\u6210  (I\={0}, O\={1}, R\={2}, W\={3}, U\={4}, E\={5})
-PipelineMeta.Log.ReadingTransforms=\u8BFB\u53D6 
-PipelineMeta.Exception.ErrorOpeningOrValidatingTheXMLFile=\u53D1\u751F\u4E86\u4E00\u4E2A\u9519\u8BEF\uFF0C\u5F53\u6253\u5F00/\u9A8C\u8BC1 XML \u6587\u4EF6 "{0}"\uFF01
-Pipeline.Exception.ErrorInDatabase=\u9519\u8BEF\u53D1\u751F\u5728\u6570\u636E\u5E93 [{0}]
+TransformLoader.RuntimeError.UnExpectedErrorLoadingClass.PIPELINE0009=\u5F53\u8F7D\u5165\u7C7B\u65F6\u53D1\u751F\u4E86\u4E0D\u53EF\u9884\u6599\u7684\u9519\u8BEF
 TransformLoader.RuntimeError.UnableToInstantiateClass.PIPELINE0006=\u65E0\u6CD5\u5B9E\u4F8B\u5316\u7C7B
-PeekMetric.Column.Active=\u6FC0\u6D3B
-PipelineMeta.Exception.MissingXMLFilePath=\u65E0\u6CD5\u542F\u52A8 Pipeline, \u6CA1\u6709\u6307\u5B9A Pipeline \u6587\u4EF6\u7684\u8DEF\u5F84.
+TransformLoader.RuntimeError.UnableToLoadClass.PIPELINE0003=\u65E0\u6CD5\u52A0\u8F7D\u5E26\u8BF4\u660E\u7684\u7528\u4E8E Transform /\u63D2\u4EF6\u5904\u7406\u7684\u7C7B [{0} \u68C0\u67E5 Hop\u5206\u914D\u63D2\u4EF6\u5B50\u76EE\u5F55\u7684\u63D2\u4EF6\u662F\u5426\u53EF\u7528.
+TransformLoader.RuntimeError.UnableToReadPluginXML.PIPELINE0001=\u9519\u8BEF\u5730\u8BFB\u53D6\u63D2\u4EF6XML\u6587\u4EF6\: 
+TransformLoader.RuntimeError.UnknownPluginType.PIPELINE0004=\u672A\u77E5\u7684\u63D2\u4EF6\u7C7B\u578B\: 
+TransformPlugin.Information.Category.Label=Transform \u7C7B\u522B
+TransformPlugin.Information.ClassName.Label=\u7C7B\u540D
+TransformPlugin.Information.Description.Label=\u63CF\u8FF0
+TransformPlugin.Information.Directory.Label=\u76EE\u5F55
+TransformPlugin.Information.ErrorHelpFile.Label=\u9519\u8BEF\u5E2E\u52A9\u6587\u4EF6
+TransformPlugin.Information.ID.Label=ID
+TransformPlugin.Information.IconFile.Label=\u56FE\u6807\u6587\u4EF6
+TransformPlugin.Information.JarFiles.Label=Jar \u6587\u4EF6\u5217\u8868
+TransformPlugin.Information.SeparateClassloader.Label=\u9694\u79BB\u7684\u7C7B\u52A0\u8F7D\u5668
+TransformPlugin.Information.ToolTip.Label=\u63D0\u793A
+TransformPlugin.Information.Type.Label=\u7C7B\u578B
+TransformPlugin.Label=\u901A\u7528
 TransformPlugin.Type.All.Desc=\u6240\u6709
-Pipeline.Exception.TransactionsCommittedOnConnection=Pipeline \u7ED3\u675F\u65F6,\u6570\u636E\u5E93\u8FDE\u63A5"{0}"\u4E0A\u7684\u6240\u6709\u4E8B\u52A1\u90FD\u88AB\u63D0\u4EA4
+TransformPlugin.Type.Native.Desc=\u5185\u7F6E\u7684
+TransformPlugin.Type.Plugin.Desc=\u63D2\u4EF6
 TransformWithMappingMeta.Exception.UnableToLoadPipeline=\u65E0\u6CD5\u52A0\u8F7D Pipeline [{0}]\: \u627E\u4E0D\u5230\u76EE\u5F55
-PipelineMeta.Log.LookingAtTransform=\u5BDF\u770B Transform \#
-DatabaseImpact.TypeDesc.Label.Update=\u66F4\u65B0
-Pipeline.Log.LookingAtTransform=\u5BDF\u770B Transform\: 
-Pipeline.Log.CannotHaveXYRelationships=\u8FD9\u8BF4\u660E\u4F60\u4E0D\u80FD\u6709 x-y \u7684\u5BF9\u5E94\u5173\u7CFB\uFF01
-PipelineMeta.Monitor.HandlingOldVersionPipelineTask.Title=\u5904\u7406\u65E7\u7248\u672C\u7684\u8F6C\u6362(\u5982\u679C\u5B58\u5728)...
-Pipeline.Log.PipelineEnded=Pipeline \u7ED3\u675F.
-PipelineMeta.Value.CheckingFieldName.FieldNameIsEmpty.Description=\u5B57\u6BB5\u540D\u79F0\u4E3A\u7A7A.
-Pipeline.Log.PipelineErrorsDetected=\u9519\u8BEF\u88AB\u68C0\u6D4B\u5230\uFF01
-PipelineMeta.Log.SavingPipelineInfo=\u4FDD\u5B58\u8F6C\u6362\u4FE1\u606F...
-Pipeline.Log.ThisIsAReplayPipeline=\u8FD9\u662F\u4E00\u4E2A\u56DE\u653E\u7684\u8F6C\u6362\: 
-PipelineMeta.Log.SavingNotes=\u4FDD\u5B58\u6CE8\u91CA...
-Pipeline.Log.PipelineIsKillingTheOtherTransforms=Pipeline \u6B63\u5728\u6740\u6B7B\u5176\u4ED6 Transform\uFF01
-Pipeline.Exception.UnableToOpenPipeline=Pipeline \u65E0\u6CD5\u6253\u5F00 [{0}]
-PeekMetric.Column.Speed=\u901F\u5EA6 (\u6761\u8BB0\u5F55/\u79D2)
-PipelineMeta.SQLStatement.ErrorDesc.ErrorObtainingPipelineLogTableInfo=\u6B63\u5728\u83B7\u5F97\u8F6C\u6362\u65E5\u5FD7\u8868\u683C\u4FE1\u606F\u65F6\u51FA\u9519\: 
-PipelineMeta.Log.SavingDatabaseConnections=\u4FDD\u5B58\u6570\u636E\u5E93\u8FDE\u63A5...
-PipelineMeta.Log.LoadingPipeline=\u4ECE\u8D44\u6E90\u5E93\u52A0\u8F7D Pipeline [{0}]...
-PipelineMeta.Monitor.VerifyingThisPipelineTask.Title=\u6821\u9A8C\u8FD9\u4E2A\u8F6C\u6362...
-Pipeline.Log.PipelineIsToAllocateTransform=Pipeline \u5927\u7EA6\u5206\u914D\u4E86 Transform [{0}] \u7C7B\u578B\u7684 [{1}]
diff --git a/engine/src/main/resources/org/apache/hop/pipeline/transform/errorhandling/messages/messages_zh_CN.properties b/engine/src/main/resources/org/apache/hop/pipeline/transform/errorhandling/messages/messages_zh_CN.properties
index ed2e95c..ee362ad 100644
--- a/engine/src/main/resources/org/apache/hop/pipeline/transform/errorhandling/messages/messages_zh_CN.properties
+++ b/engine/src/main/resources/org/apache/hop/pipeline/transform/errorhandling/messages/messages_zh_CN.properties
@@ -16,12 +16,11 @@
 # limitations under the License.
 #
 #
-#
+AbstractFileErrorHandler.Exception.CouldNotCloseFile=\u65E0\u6CD5\u5173\u95ED\u6587\u4EF6
+AbstractFileErrorHandler.Exception.CouldNotCreateFileErrorHandlerForFile=\u4E0D\u80FD\u4E3A\u6587\u4EF6\u521B\u5EFA\u6587\u4EF6\u9519\u8BEF\u53E5\u67C4\:
+AbstractFileErrorHandler.Log.CouldNotFlushContentToFile=\u4E0D\u80FD\u5237\u65B0\u5185\u5BB9\u5230\u6587\u4EF6
 FileErrorHandlerContentLineNumber.Exception.CouldNotCreateWriteLine=\u4E0D\u80FD\u521B\u5EFA\u5199\u4E00\u884C\:
+FileErrorHandlerMissingFiles.Exception.CouldNotCreateNonAccessibleFile=\u4E0D\u80FD\u521B\u5EFA \u4E0D\u53EF\u8BBF\u95EE\u7684\u6587\u4EF6\u4E3A\u4E86 \:
+FileErrorHandlerMissingFiles.Exception.CouldNotCreateNonExistantFile=\u4E0D\u80FD\u521B\u5EFA \u4E0D\u5B58\u5728\u7684\u6587\u4EF6\u4E3A\u4E86 \:
 FileErrorHandlerMissingFiles.FILE_DOES_NOT_EXIST=\u6587\u4EF6\u4E0D\u5B58\u5728
 FileErrorHandlerMissingFiles.FILE_WAS_NOT_ACCESSIBLE=\u6587\u4EF6\u4E0D\u80FD\u8BBF\u95EE
-FileErrorHandlerMissingFiles.Exception.CouldNotCreateNonExistantFile=\u4E0D\u80FD\u521B\u5EFA \u4E0D\u5B58\u5728\u7684\u6587\u4EF6\u4E3A\u4E86 \:
-FileErrorHandlerMissingFiles.Exception.CouldNotCreateNonAccessibleFile=\u4E0D\u80FD\u521B\u5EFA \u4E0D\u53EF\u8BBF\u95EE\u7684\u6587\u4EF6\u4E3A\u4E86 \:
-AbstractFileErrorHandler.Exception.CouldNotCreateFileErrorHandlerForFile=\u4E0D\u80FD\u4E3A\u6587\u4EF6\u521B\u5EFA\u6587\u4EF6\u9519\u8BEF\u53E5\u67C4\:
-AbstractFileErrorHandler.Log.CouldNotFlushContentToFile=\u4E0D\u80FD\u5237\u65B0\u5185\u5BB9\u5230\u6587\u4EF6
-AbstractFileErrorHandler.Exception.CouldNotCloseFile=\u65E0\u6CD5\u5173\u95ED\u6587\u4EF6
diff --git a/engine/src/main/resources/org/apache/hop/pipeline/transform/messages/messages_zh_CN.properties b/engine/src/main/resources/org/apache/hop/pipeline/transform/messages/messages_zh_CN.properties
index 50e5d9b..918f929 100644
--- a/engine/src/main/resources/org/apache/hop/pipeline/transform/messages/messages_zh_CN.properties
+++ b/engine/src/main/resources/org/apache/hop/pipeline/transform/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,127 +15,128 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.pipeline.transform' in locale 'zh_CN'
-#
 #
-BaseTransform.Category.Scripting=\u811A\u672C
-BaseTransform.status.Paused=\u6682\u505C
-BaseTransform.status.Init=\u521D\u59CB\u5316
-BaseTransform.Log.ErrorInThreadSleeping=Interupted while trying to put a new row in a buffer\:
-BaseTransformDialog.ErrorHandling.TransformName.Label=\u9519\u8BEF\u5904\u7406 Transform \u540D
-BaseTransformDialog.FailedToGetFields.Title=\u9519\u8BEF
-BaseTransform.TypeTooltipDesc.Dummy=\u8FD9\u4E2A Transform \u7C7B\u578B\u4EC0\u4E48\u90FD\u4E0D\u4F5C.{0} \u5F53\u4F60\u60F3\u6D4B\u8BD5\u6216\u62C6\u5206\u6570\u636E\u6D41\u7684\u65F6\u5019\u6709\u7528\u3002
-BaseTransformDialog.ErrorHandling.MaxPctErr.Label=\u5141\u8BB8\u7684\u6700\u5927\u9519\u8BEF\u767E\u5206\u6BD4 (\u7A7A\=\=100%)
+BaseTransform.Category.BigData=\u5927\u6570\u636E
+BaseTransform.Category.Bulk=\u6279\u91CF\u52A0\u8F7D
+BaseTransform.Category.Cryptography=\u52A0\u5BC6
+BaseTransform.Category.DataQuality=\u6570\u636E\u8D28\u91CF
+BaseTransform.Category.DataWarehouse=\u6570\u636E\u4ED3\u5E93
+BaseTransform.Category.Experimental=\u5B9E\u9A8C
+BaseTransform.Category.Flow=\u6D41\u7A0B
+BaseTransform.Category.Inline=\u5185\u8054
 BaseTransform.Category.Input=\u8F93\u5165
+BaseTransform.Category.Joins=\u8FDE\u63A5
+BaseTransform.Category.Lookup=\u67E5\u8BE2
 BaseTransform.Category.Mapping=\u6620\u5C04
-BaseTransformDialog.FailedToGetFieldsPrevious.DialogTitle=\u9519\u8BEF\u5B57\u6BB5
-BaseTransform.ColumnName.TransformName=Transform \u540D\u79F0
-BaseTransform.Log.AllowedRelationships=Only 1-1, 1-n, n-1 and n-n relationships are allowed\uFF01
-BaseTransformDialog.ErrorHandling.ErrCodeFieldName.Label=\u9519\u8BEF\u7F16\u7801\u5217\u540D
-TransformMeta.Exception.UnableToLoadClass=Unable to load class for transform/plugin with id [{0}]. Check if the plugin is available in the plugins subdirectory of the Hop distribution\u3002
-TransformOption.CheckResult.NotABoolean=\u201C{0}\u201D\u503C\u65E0\u6548\uFF0C\u8BF7\u5C06\u503C\u8BBE\u7F6E\u4E3A true \u6216 false
-BaseTransformDialog.Connection.Tooltip=\u9009\u62E9\u8981\u4F7F\u7528\u7684\u5173\u7CFB\u6570\u636E\u5E93\u8FDE\u63A5
-BaseTransform.SafeMode.Exception.DoubleFieldnames=\u76F8\u540C\u7684\u5217\u540D\u51FA\u73B0\u4E24\u6B21,\u4E0D\u5141\u8BB8\u8FD9\u6837\u3002
-BaseTransform.Category.Inline=\u5185\u8054
-BaseTransformDialog.ErrorHandling.ErrDescField.Label=\u9519\u8BEF\u63CF\u8FF0\u5217\u540D
-BaseTransformDialog.ErrorHandling.Title.Label=Transform \u9519\u8BEF\u5904\u7406\u8BBE\u7F6E
-BaseTransform.Property.MaxPercentErrors.Name=\u9519\u8BEF\u767E\u5206\u6BD4\u4E0A\u9650
-BaseTransformDialog.FailedToGetFieldsPrevious.DialogMessage=\u4ECE\u5148\u524D\u7684 transform \u4E2D\u83B7\u53D6\u5B57\u6BB5\u65F6\u51FA\u9519\uFF01
-BaseTransformDialog.GetFieldsChoice.Title=\u95EE\u9898
-BaseTransformDialog.ErrorHandling.MinErr.Label=\u5728\u8BA1\u7B97\u767E\u5206\u6BD4\u524D\u6700\u5C11\u8981\u8BFB\u5165\u7684\u884C\u6570
-BaseTransform.Exception.SourceTransformToReadFromCantRunInMultipleCopies=\u8981\u4ECE Transform [{0}] \u4E2D\u8BFB\u53D6\u6570\u636E\u884C\u7684\u65B9\u5F0F\u65E0\u6CD5\u6267\u884C\uFF0C\u56E0\u4E3A\u8BE5 Transform \u4E0B\u53D1\u6570\u636E\u5230 ({1}) \u4E2A\u526F\u672C\u4E2D\u3002 \u53EF\u4EE5\u63D2\u5165\u4E00\u4E2A \u6865\u63A5 Transform \u6765\u89E3\u51B3\u8FD9\u79CD\u60C5\u51B5
-BaseTransform.Log.FoundInputRowset=\u53D1\u73B0\u8F93\u5165\u8BB0\u5F55\u96C6\u5408 [{0}]
-BaseTransform.Log.OutputDone=Signaling "output done" to {0}\\u8f93\u51FA rowsets\u3002
-BaseTransform.SafeMode.Exception.MixingTypes=\u7B2C{0}\u5217\u7684\u6570\u636E\u7C7B\u578B\u548C\u63A5\u6536\u5230\u7684\u7B2C\u4E00\u884C\u7684\u6570\u636E\u7C7B\u578B\u4E0D\u540C\: \u4E0D\u540C\u683C\u5F0F\u7684\u884C\u88AB\u6DF7\u5728\u4E86\u4E00\u8D77,Field [{1}] \u548C field [{2}]\u7684\u6570\u636E\u7C7B\u578B\u4E0D\u540C\u3002
-BaseTransform.PartitionedToRow=\u5C06 \#{0} \u5206\u53D1\u5230 {1}\uFF0Crow\={2}
-BaseTransform.Log.MaxPercentageRejectedReached=\u8FBE\u5230\u4E86\u9519\u8BEF\u884C\u6570\u7684\u6700\u5927\u767E\u5206\u6BD4{0}.{2}\u884C\u91CC\u7684{1}\u9519\u8BEF.\u8F6C\u6362\u88AB\u8981\u6C42\u505C\u6B62\u3002
+BaseTransform.Category.OpenERP=OpenERP
+BaseTransform.Category.Output=\u8F93\u51FA
+BaseTransform.Category.Palo=Palo
+BaseTransform.Category.Scripting=\u811A\u672C
+BaseTransform.Category.Statistics=\u7EDF\u8BA1
+BaseTransform.Category.Streaming=\u6D41
+BaseTransform.Category.Transform=Pipeline
+BaseTransform.Category.Utility=\u5E94\u7528
+BaseTransform.Category.Validation=\u68C0\u9A8C
+BaseTransform.Category.Workflow=\u4F5C\u4E1A
 BaseTransform.ColumnName.Copy=\u590D\u5236
-BaseTransform.ColumnName.StartDate=\u5F00\u59CB\u65E5\u671F
-BaseTransformDialog.AddNew=\u589E\u52A0\u65B0\u7684(&N)
-BaseTransform.Log.UnableToRetrievePartitionId=\u65E0\u6CD5\u4ECE\u5206\u533A Schema \u4E2D\u68C0\u7D22\u5230\u5206\u533A ID\: {0}
-BaseTransform.SafeMode.Exception.VaryingSize=\u884C\u7684\u5217\u6570\u4E0D\u540C,\u8FD9\u5728\u8F6C\u6362\u91CC\u662F\u4E0D\u5141\u8BB8\u7684.\u7B2C\u4E00\u884C\u5305\u62EC{0}\u5217,\u53E6\u4E00\u884C\u5305\u62EC{1}\u5217\: {2}
 BaseTransform.ColumnName.EndDate=\u7ED3\u675F\u65E5\u671F
-BaseTransform.status.Stopped=\u5DF2\u505C\u6B62
-BaseTransformDialog.GetFieldsChoice.Message=\u8868\u4E2D\u5DF2\u7ECF\u6709{0}\u884C\u6570\u636E,\u5982\u4F55\u5904\u7406\u65B0\u627E\u5230\u4E86{1}\u5217?
-BaseTransformDialog.EditConnectionButton.Label=\u7F16\u8F91(&E)...
-BaseTransform.Category.OpenERP=OpenERP
+BaseTransform.ColumnName.Errors=\u9519\u8BEF
+BaseTransform.ColumnName.LinesReaded=lines_read
+BaseTransform.ColumnName.LinesSkipped=lines_skipped
+BaseTransform.ColumnName.LinesUpdated=lines_updated
+BaseTransform.ColumnName.LinesWritten=lines_written
+BaseTransform.ColumnName.StartDate=\u5F00\u59CB\u65E5\u671F
+BaseTransform.ColumnName.TransformName=Transform \u540D\u79F0
+BaseTransform.Exception.MetadataDoesntMatchDataRowSize=\u9047\u5230\u610F\u5916\u9519\u8BEF\: \u5143\u6570\u636E ({0}) \u4E2D\u7684\u5B57\u6BB5\u6570\u4E0E\u6570\u636E\u884C ({1}) \u4E2D\u7684\u5B57\u6BB5\u6570\u4E0D\u4E00\u81F4
+BaseTransform.Exception.SourceTransformToReadFromCantRunInMultipleCopies=\u8981\u4ECE Transform [{0}] \u4E2D\u8BFB\u53D6\u6570\u636E\u884C\u7684\u65B9\u5F0F\u65E0\u6CD5\u6267\u884C, \u56E0\u4E3A\u8BE5 Transform \u4E0B\u53D1\u6570\u636E\u5230 ({1}) \u4E2A\u526F\u672C\u4E2D. \u53EF\u4EE5\u63D2\u5165\u4E00\u4E2A \u6865\u63A5 Transform \u6765\u89E3\u51B3\u8FD9\u79CD\u60C5\u51B5
+BaseTransform.Exception.SourceTransformToReadFromDoesntExist=\u627E\u4E0D\u5230\u8BFB\u53D6\u6570\u636E\u7684\u4E0A\u6E38 Transform [{0}].
+BaseTransform.Exception.TargetTransformToWriteToCantRunInMultipleCopies=\u8981\u8F93\u51FA\u5230\u636E\u6709 ({1}) \u4E2A\u526F\u672C\u7684 Transform [{0}] \u65E0\u6CD5\u8FD0\u884C, \u4E0D\u652F\u6301.
+BaseTransform.Exception.TargetTransformToWriteToDoesntExist=\u8981\u8F93\u51FA\u5230\u76EE\u6807\u7684 Transform [{0}] \u4E0D\u5B58\u5728.
+BaseTransform.Exception.UnableToFindRowset=Unable to find rowset for target transform [{0}]
+BaseTransform.Log.AllowedRelationships=Only 1-1, 1-n, n-1 and n-n relationships are allowed!
+BaseTransform.Log.DistributionActivated=\u5206\u6563\u88AB\u6FC0\u6D3B
 BaseTransform.Log.DistributionDeactivated=\u5206\u6563\u88AB\u53BB\u6FC0\u6D3B
-BaseTransform.Log.SleepInterupted=Sleep interupted\uFF01 Stopping\:
+BaseTransform.Log.ErrorInThreadSleeping=Interupted while trying to put a new row in a buffer\:
+BaseTransform.Log.ErrorSettingPriority=Error occured setting priorityFrom
+BaseTransform.Log.FinishedDispatching=\u5B8C\u6210\u5206\u53D1
+BaseTransform.Log.FoundInputRowset=\u53D1\u73B0\u8F93\u5165\u8BB0\u5F55\u96C6\u5408 [{0}]
 BaseTransform.Log.FoundOutputRowset=\u53D1\u73B0\u8F93\u51FA rowset [{0}]
-TransformMeta.Log.SaveTransformDetails=TRANSFORM SAVE details...
-TransformMeta.Exception.UnableToLoadTransformMeta=Unable to load transform info from XML transform node
-BaseTransform.Category.Cryptography=\u52A0\u5BC6
-BaseTransform.Log.StopLookingForMoreRows=Stopped looking for more rows\u3002
-BaseTransform.Log.UnableToFindInputRowset=\u65E0\u6CD5\u627E\u5230\u8F93\u5165\u8BB0\u5F55\u96C6\uFF01
-BaseTransform.ColumnName.LinesUpdated=lines_updated
-BaseTransform.Log.NumberFormatException=Transform {1} \u7684 {0} \u503C\u88AB\u8BBE\u7F6E\u4E3A {2}\u3002 \u4F46\u5B83\u5FC5\u987B\u662F\u4E00\u4E2A\u6570\u5B57\u3002
+BaseTransform.Log.GotPreviousTransform=\u83B7\u53D6\u6765\u81EA\u524D\u4E00 Transform [{0}] \#{1} --> {2}
+BaseTransform.Log.InputRowInfo=input rel is {0}\:{1}
+BaseTransform.Log.MaxPercentageRejectedReached=\u8FBE\u5230\u4E86\u9519\u8BEF\u884C\u6570\u7684\u6700\u5927\u767E\u5206\u6BD4{0}.{2}\u884C\u91CC\u7684{1}\u9519\u8BEF.\u8F6C\u6362\u88AB\u8981\u6C42\u505C\u6B62.
+BaseTransform.Log.NumberFormatException=Transform {1} \u7684 {0} \u503C\u88AB\u8BBE\u7F6E\u4E3A {2}. \u4F46\u5B83\u5FC5\u987B\u662F\u4E00\u4E2A\u6570\u5B57.
+BaseTransform.Log.OutputDone=Signaling "output done" to {0}\\u8f93\u51FA rowsets.
 BaseTransform.Log.OutputRowInfo=output rel. is {0}\:{1}
-BaseTransform.Category.Validation=\u68C0\u9A8C
-BaseTransform.status.Disposed=\u5DF2\u5904\u7406
+BaseTransform.Log.SleepInterupted=Sleep interupted! Stopping\:
 BaseTransform.Log.SleepInterupted2=Sleep interupted while looking for more rows from transform [{0}] -->
-BaseTransform.TypeTooltipDesc.Injector=\u6CE8\u5165 Transform \u5141\u8BB8\u901A\u8FC7 java API \u5C06\u6570\u636E\u884C\u6CE8\u5165\u5230 Pipeline
 BaseTransform.Log.SleepInterupted3=Interupted while looking for more rows from transform [{0}]
-TransformMeta.Log.EndOfReadXML=end of readXML()
-BaseTransform.ColumnName.LinesWritten=lines_written
-BaseTransform.Exception.UnableToFindRowset=Unable to find rowset for target transform [{0}]
-BaseTransformDialog.ErrorHandling.NrErrField.Label=\u9519\u8BEF\u6570\u5217\u540D
-BaseTransform.RowHandler.PutRowToNotSupported=\u8BE5 Transform \u5B9E\u73B0\u7C7B {0} \u4E0D\u652F\u6301\u5199\u5165\u6570\u636E\u884C\u5230\u5176\u5B83 Transform
-BaseTransform.Log.TransformMeta=Transform \u4FE1\u606F\: \u8F93\u5165\u6570\u91CF\={0} \u8F93\u51FA\u6570\u91CF\={1}
-BaseTransformDialog.ClearAndAdd=\u6E05\u9664\u5E76\u589E\u52A0\u6240\u6709(&C)
-BaseTransformDialog.NewConnectionButton.Label=\u65B0\u5EFA(&N)...
-BaseTransform.Category.Palo=Palo
 BaseTransform.Log.StartingBuffersAllocation=Starting allocation of buffers & new threads...
-BaseTransform.status.Finished=\u5DF2\u5B8C\u6210
-BaseTransform.Category.Flow=\u6D41\u7A0B
-BaseTransform.Category.Utility=\u5E94\u7528
-BaseTransform.SafeMode.Exception.MixingLayout=\u7B2C{0}\u5217\u7684\u5217\u540D\u548C\u63A5\u6536\u5230\u7684\u7B2C\u4E00\u884C\u7684\u5217\u540D\u4E0D\u540C\: \u4E0D\u540C\u683C\u5F0F\u7684\u884C\u88AB\u6DF7\u5728\u4E86\u4E00\u8D77,Field [{1}] \u548C field [{2}]\u7684\u5217\u540D\u4E0D\u540C\u3002
-BaseTransform.Category.Lookup=\u67E5\u8BE2
-BaseTransform.Log.SummaryInfo=\u5B8C\u6210\u5904\u7406 (I\={0}, O\={1}, R\={2}, W\={3}, U\={4}, E\={5})
-BaseTransform.Log.GotPreviousTransform=\u83B7\u53D6\u6765\u81EA\u524D\u4E00 Transform [{0}] \#{1} --> {2}
-BaseTransform.status.Empty=\u7A7A
-BaseTransform.TypeLongDesc.Injector=\u8BB0\u5F55\u6CE8\u5C04
-BaseTransform.Log.TooManyRejectedRows=\u592A\u591A\u7684\u884C\u51FA\u9519,{0} \u662F\u6700\u5927\u884C\u6570,{1}\u884C\u9519\u8BEF, \u8F6C\u6362\u88AB\u8981\u6C42\u505C\u6B62\u3002
-BaseTransform.TypeLongDesc.Dummy=\u7A7A\u64CD\u4F5C (\u4EC0\u4E48\u4E5F\u4E0D\u505A)
-TransformMeta.Log.SpecificLoadedTransform=specifics loaded for {0}
-BaseTransform.Category.Joins=\u8FDE\u63A5
-BaseTransform.Log.UnableToFindOutputRowset=\u65E0\u6CD5\u627E\u5230\u8F93\u51FA\u8BB0\u5F55\u96C6\uFF01
-BaseTransform.Exception.TargetTransformToWriteToDoesntExist=\u8981\u8F93\u51FA\u5230\u76EE\u6807\u7684 Transform [{0}] \u4E0D\u5B58\u5728\u3002
-BaseTransform.Log.ErrorSettingPriority=Error occured setting priorityFrom
-BaseTransform.Category.Output=\u8F93\u51FA
-BaseTransform.Exception.MetadataDoesntMatchDataRowSize=\u9047\u5230\u610F\u5916\u9519\u8BEF\: \u5143\u6570\u636E ({0}) \u4E2D\u7684\u5B57\u6BB5\u6570\u4E0E\u6570\u636E\u884C ({1}) \u4E2D\u7684\u5B57\u6BB5\u6570\u4E0D\u4E00\u81F4
-BaseTransform.SafeMode.Exception.MixingStorageTypes=\u914D\u7F6E\u5B57\u6BB5 \#{0} \u7684\u6570\u636E\u7C7B\u578B\u4E0E\u5B9E\u9645\u6570\u636E\u884C\u4E2D\u7684\u7C7B\u578B\u4E0D\u76F8\u540C\u540C\: \u60A8\u7684\u6570\u636E\u6D41\u4E2D\u6DF7\u6709\u4E0D\u540C\u7C7B\u578B\u7684\u6570\u636E\u884C\u3002 \u5B57\u6BB5 [{1}] \u4E0E\u5B57\u6BB5 [{2}] \u7684\u6570\u636E\u7C7B\u578B\u4E0D\u4E00\u81F4
+BaseTransform.Log.StopLookingForMoreRows=Stopped looking for more rows.
 BaseTransform.Log.StopPuttingARow=Stopped while putting a row on the buffer
+BaseTransform.Log.SummaryInfo=\u5B8C\u6210\u5904\u7406 (I\={0}, O\={1}, R\={2}, W\={3}, U\={4}, E\={5})
+BaseTransform.Log.TooManyRejectedRows=\u592A\u591A\u7684\u884C\u51FA\u9519,{0} \u662F\u6700\u5927\u884C\u6570,{1}\u884C\u9519\u8BEF, \u8F6C\u6362\u88AB\u8981\u6C42\u505C\u6B62.
+BaseTransform.Log.TransformMeta=Transform \u4FE1\u606F\: \u8F93\u5165\u6570\u91CF\={0} \u8F93\u51FA\u6570\u91CF\={1}
+BaseTransform.Log.UnableToFindInputRowset=\u65E0\u6CD5\u627E\u5230\u8F93\u5165\u8BB0\u5F55\u96C6!
+BaseTransform.Log.UnableToFindOutputRowset=\u65E0\u6CD5\u627E\u5230\u8F93\u51FA\u8BB0\u5F55\u96C6!
+BaseTransform.Log.UnableToRetrievePartitionId=\u65E0\u6CD5\u4ECE\u5206\u533A Schema \u4E2D\u68C0\u7D22\u5230\u5206\u533A ID\: {0}
+BaseTransform.Log.XYRelationshipsNotAllowed=This means you can''t have x-y relationships!
+BaseTransform.PartitionedToRow=\u5C06 \#{0} \u5206\u53D1\u5230 {1}, row\={2}
+BaseTransform.Property.MaxErrors.Name=\u9519\u8BEF\u6B21\u6570\u4E0A\u9650
+BaseTransform.Property.MaxPercentErrors.Name=\u9519\u8BEF\u767E\u5206\u6BD4\u4E0A\u9650
 BaseTransform.Property.MinRowsForErrorsPercentCalc.Name=\u5728\u8BA1\u7B97 \u201C\u9519\u8BEF\u767E\u5206\u6BD4\u4E0A\u9650\u201D \u4E4B\u524D\u8981\u8BFB\u53D6\u7684\u6700\u5C0F\u884C\u6570
-BaseTransform.Category.Bulk=\u6279\u91CF\u52A0\u8F7D
-TransformMeta.Log.SaveNewTransform=TRANSFORM SAVE insert general...
-BaseTransform.Log.InputRowInfo=input rel is {0}\:{1}
-BaseTransform.Category.Transform=Pipeline
-BaseTransform.status.Idle=\u7A7A\u95F2
-BaseTransform.Log.DistributionActivated=\u5206\u6563\u88AB\u6FC0\u6D3B
+BaseTransform.RowHandler.GetRowFromNotSupported=\u8BE5\u5B9E\u73B0\u7C7B {0} \u4E0D\u652F\u6301\u4ECE\u524D\u7F6E Transform \u8BFB\u53D6\u6570\u636E\u884C
+BaseTransform.RowHandler.PutRowToNotSupported=\u8BE5 Transform \u5B9E\u73B0\u7C7B {0} \u4E0D\u652F\u6301\u5199\u5165\u6570\u636E\u884C\u5230\u5176\u5B83 Transform
+BaseTransform.SafeMode.Exception.DoubleFieldnames=\u76F8\u540C\u7684\u5217\u540D\u51FA\u73B0\u4E24\u6B21,\u4E0D\u5141\u8BB8\u8FD9\u6837.
+BaseTransform.SafeMode.Exception.MixingLayout=\u7B2C{0}\u5217\u7684\u5217\u540D\u548C\u63A5\u6536\u5230\u7684\u7B2C\u4E00\u884C\u7684\u5217\u540D\u4E0D\u540C\: \u4E0D\u540C\u683C\u5F0F\u7684\u884C\u88AB\u6DF7\u5728\u4E86\u4E00\u8D77,Field [{1}] \u548C field [{2}]\u7684\u5217\u540D\u4E0D\u540C.
+BaseTransform.SafeMode.Exception.MixingStorageTypes=\u914D\u7F6E\u5B57\u6BB5 \#{0} \u7684\u6570\u636E\u7C7B\u578B\u4E0E\u5B9E\u9645\u6570\u636E\u884C\u4E2D\u7684\u7C7B\u578B\u4E0D\u76F8\u540C\u540C\: \u60A8\u7684\u6570\u636E\u6D41\u4E2D\u6DF7\u6709\u4E0D\u540C\u7C7B\u578B\u7684\u6570\u636E\u884C. \u5B57\u6BB5 [{1}] \u4E0E\u5B57\u6BB5 [{2}] \u7684\u6570\u636E\u7C7B\u578B\u4E0D\u4E00\u81F4
+BaseTransform.SafeMode.Exception.MixingTypes=\u7B2C{0}\u5217\u7684\u6570\u636E\u7C7B\u578B\u548C\u63A5\u6536\u5230\u7684\u7B2C\u4E00\u884C\u7684\u6570\u636E\u7C7B\u578B\u4E0D\u540C\: \u4E0D\u540C\u683C\u5F0F\u7684\u884C\u88AB\u6DF7\u5728\u4E86\u4E00\u8D77,Field [{1}] \u548C field [{2}]\u7684\u6570\u636E\u7C7B\u578B\u4E0D\u540C.
+BaseTransform.SafeMode.Exception.VaryingSize=\u884C\u7684\u5217\u6570\u4E0D\u540C,\u8FD9\u5728\u8F6C\u6362\u91CC\u662F\u4E0D\u5141\u8BB8\u7684.\u7B2C\u4E00\u884C\u5305\u62EC{0}\u5217,\u53E6\u4E00\u884C\u5305\u62EC{1}\u5217\: {2}
+BaseTransform.TargetRowsetIsNotAvailable=\u76EE\u6807\u6570\u636E\u96C6\u5728\u76EE\u6807\u5206\u533A\u4E0A\u65E0\u6548, partitionNr \= {0}
+BaseTransform.TypeLongDesc.Dummy=\u7A7A\u64CD\u4F5C (\u4EC0\u4E48\u4E5F\u4E0D\u505A)
+BaseTransform.TypeLongDesc.Injector=\u8BB0\u5F55\u6CE8\u5C04
+BaseTransform.TypeTooltipDesc.Dummy=\u8FD9\u4E2A Transform \u7C7B\u578B\u4EC0\u4E48\u90FD\u4E0D\u4F5C.{0} \u5F53\u4F60\u60F3\u6D4B\u8BD5\u6216\u62C6\u5206\u6570\u636E\u6D41\u7684\u65F6\u5019\u6709\u7528.
+BaseTransform.TypeTooltipDesc.Injector=\u6CE8\u5165 Transform \u5141\u8BB8\u901A\u8FC7 java API \u5C06\u6570\u636E\u884C\u6CE8\u5165\u5230 Pipeline
+BaseTransform.status.Disposed=\u5DF2\u5904\u7406
+BaseTransform.status.Empty=\u7A7A
+BaseTransform.status.Finished=\u5DF2\u5B8C\u6210
+BaseTransform.status.Halted=\u7EC8\u6B62
 BaseTransform.status.Halting=\u505C\u6B62\u4E2D
-BaseTransformDialog.ErrorHandling.MaxErr.Label=\u5141\u8BB8\u7684\u6700\u5927\u9519\u8BEF\u6570
-BaseTransform.Exception.SourceTransformToReadFromDoesntExist=\u627E\u4E0D\u5230\u8BFB\u53D6\u6570\u636E\u7684\u4E0A\u6E38 Transform [{0}]\u3002
-BaseTransformDialog.Cancel=\u53D6\u6D88(&C)
-TransformMeta.Log.LookingForTheRightTransformNode=looking for the right transform node ({0})
-BaseTransform.TargetRowsetIsNotAvailable=\u76EE\u6807\u6570\u636E\u96C6\u5728\u76EE\u6807\u5206\u533A\u4E0A\u65E0\u6548\uFF0CpartitionNr \= {0}
-BaseTransform.Category.Experimental=\u5B9E\u9A8C
-BaseTransform.Log.XYRelationshipsNotAllowed=This means you can''t have x-y relationships\uFF01
+BaseTransform.status.Idle=\u7A7A\u95F2
+BaseTransform.status.Init=\u521D\u59CB\u5316
+BaseTransform.status.Paused=\u6682\u505C
 BaseTransform.status.Running=\u5728\u8FD0\u884C
-BaseTransform.Category.Statistics=\u7EDF\u8BA1
-BaseTransformDialog.ErrorHandling.TargetTransform.Label=\u76EE\u6807 Transform
-BaseTransformDialog.ErrorHandling.Enable.Label=\u542F\u7528\u9519\u8BEF\u5904\u7406
-BaseTransform.status.Halted=\u7EC8\u6B62
-BaseTransform.ColumnName.LinesReaded=lines_read
-BaseTransformDialog.ErrorHandling.ErrFieldName.Label=\u9519\u8BEF\u5217\u7684\u5217\u540D
-TransformOption.CheckResult.NotAInteger=\u201C{0}\u201D\u503C\u65E0\u6548\uFF0C\u8BF7\u5C06\u503C\u8BBE\u7F6E\u4E3A\u6574\u6570
-BaseTransform.Property.MaxErrors.Name=\u9519\u8BEF\u6B21\u6570\u4E0A\u9650
+BaseTransform.status.Stopped=\u5DF2\u505C\u6B62
 BaseTransformDialog.Add=\u589E\u52A0\u6240\u6709(&A)
-BaseTransform.Category.Workflow=\u4F5C\u4E1A
-BaseTransform.RowHandler.GetRowFromNotSupported=\u8BE5\u5B9E\u73B0\u7C7B {0} \u4E0D\u652F\u6301\u4ECE\u524D\u7F6E Transform \u8BFB\u53D6\u6570\u636E\u884C
-BaseTransform.ColumnName.LinesSkipped=lines_skipped
-BaseTransform.Exception.TargetTransformToWriteToCantRunInMultipleCopies=\u8981\u8F93\u51FA\u5230\u636E\u6709 ({1}) \u4E2A\u526F\u672C\u7684 Transform [{0}] \u65E0\u6CD5\u8FD0\u884C\uFF0C\u4E0D\u652F\u6301\u3002
-BaseTransform.ColumnName.Errors=\u9519\u8BEF
+BaseTransformDialog.AddNew=\u589E\u52A0\u65B0\u7684(&N)
+BaseTransformDialog.Cancel=\u53D6\u6D88(&C)
+BaseTransformDialog.ClearAndAdd=\u6E05\u9664\u5E76\u589E\u52A0\u6240\u6709(&C)
 BaseTransformDialog.Connection.Label=\u6570\u636E\u5E93\u8FDE\u63A5 
-BaseTransformDialog.FailedToGetFields.Message=\u4E3A\u4E86"{0}" Transform \u800C\u4ECE\u4E0A\u4E00\u4E2A Transform \u83B7\u53D6\u5217\u7684\u5217\u8868\u65F6\u53D1\u751F\u9519\u8BEF\u3002
-BaseTransform.Log.FinishedDispatching=\u5B8C\u6210\u5206\u53D1
-BaseTransform.Category.DataWarehouse=\u6570\u636E\u4ED3\u5E93
+BaseTransformDialog.Connection.Tooltip=\u9009\u62E9\u8981\u4F7F\u7528\u7684\u5173\u7CFB\u6570\u636E\u5E93\u8FDE\u63A5
+BaseTransformDialog.EditConnectionButton.Label=\u7F16\u8F91(&E)...
+BaseTransformDialog.ErrorHandling.Enable.Label=\u542F\u7528\u9519\u8BEF\u5904\u7406
+BaseTransformDialog.ErrorHandling.ErrCodeFieldName.Label=\u9519\u8BEF\u7F16\u7801\u5217\u540D
+BaseTransformDialog.ErrorHandling.ErrDescField.Label=\u9519\u8BEF\u63CF\u8FF0\u5217\u540D
+BaseTransformDialog.ErrorHandling.ErrFieldName.Label=\u9519\u8BEF\u5217\u7684\u5217\u540D
+BaseTransformDialog.ErrorHandling.MaxErr.Label=\u5141\u8BB8\u7684\u6700\u5927\u9519\u8BEF\u6570
+BaseTransformDialog.ErrorHandling.MaxPctErr.Label=\u5141\u8BB8\u7684\u6700\u5927\u9519\u8BEF\u767E\u5206\u6BD4 (\u7A7A\=\=100%)
+BaseTransformDialog.ErrorHandling.MinErr.Label=\u5728\u8BA1\u7B97\u767E\u5206\u6BD4\u524D\u6700\u5C11\u8981\u8BFB\u5165\u7684\u884C\u6570
+BaseTransformDialog.ErrorHandling.NrErrField.Label=\u9519\u8BEF\u6570\u5217\u540D
+BaseTransformDialog.ErrorHandling.TargetTransform.Label=\u76EE\u6807 Transform
+BaseTransformDialog.ErrorHandling.Title.Label=Transform \u9519\u8BEF\u5904\u7406\u8BBE\u7F6E
+BaseTransformDialog.ErrorHandling.TransformName.Label=\u9519\u8BEF\u5904\u7406 Transform \u540D
+BaseTransformDialog.FailedToGetFields.Message=\u4E3A\u4E86"{0}" Transform \u800C\u4ECE\u4E0A\u4E00\u4E2A Transform \u83B7\u53D6\u5217\u7684\u5217\u8868\u65F6\u53D1\u751F\u9519\u8BEF.
+BaseTransformDialog.FailedToGetFields.Title=\u9519\u8BEF
+BaseTransformDialog.FailedToGetFieldsPrevious.DialogMessage=\u4ECE\u5148\u524D\u7684 transform \u4E2D\u83B7\u53D6\u5B57\u6BB5\u65F6\u51FA\u9519!
+BaseTransformDialog.FailedToGetFieldsPrevious.DialogTitle=\u9519\u8BEF\u5B57\u6BB5
+BaseTransformDialog.GetFieldsChoice.Message=\u8868\u4E2D\u5DF2\u7ECF\u6709{0}\u884C\u6570\u636E,\u5982\u4F55\u5904\u7406\u65B0\u627E\u5230\u4E86{1}\u5217?
+BaseTransformDialog.GetFieldsChoice.Title=\u95EE\u9898
+BaseTransformDialog.NewConnectionButton.Label=\u65B0\u5EFA(&N)...
+TransformMeta.Exception.UnableToLoadClass=Unable to load class for transform/plugin with id [{0}]. Check if the plugin is available in the plugins subdirectory of the Hop distribution.
+TransformMeta.Exception.UnableToLoadTransformMeta=Unable to load transform info from XML transform node
+TransformMeta.Log.EndOfReadXML=end of readXML()
+TransformMeta.Log.LookingForTheRightTransformNode=looking for the right transform node ({0})
+TransformMeta.Log.SaveNewTransform=TRANSFORM SAVE insert general...
+TransformMeta.Log.SaveTransformDetails=TRANSFORM SAVE details...
+TransformMeta.Log.SpecificLoadedTransform=specifics loaded for {0}
+TransformOption.CheckResult.NotABoolean=\u201C{0}\u201D\u503C\u65E0\u6548, \u8BF7\u5C06\u503C\u8BBE\u7F6E\u4E3A true \u6216 false
+TransformOption.CheckResult.NotAInteger=\u201C{0}\u201D\u503C\u65E0\u6548, \u8BF7\u5C06\u503C\u8BBE\u7F6E\u4E3A\u6574\u6570
diff --git a/engine/src/main/resources/org/apache/hop/pipeline/transforms/dummy/messages/messages_zh_CN.properties b/engine/src/main/resources/org/apache/hop/pipeline/transforms/dummy/messages/messages_zh_CN.properties
index 363cd0f..fad1370 100644
--- a/engine/src/main/resources/org/apache/hop/pipeline/transforms/dummy/messages/messages_zh_CN.properties
+++ b/engine/src/main/resources/org/apache/hop/pipeline/transforms/dummy/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,14 +15,12 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.pipeline.transforms.dummy' in locale 'zh_CN'
-#
 #
-DummyMeta.CheckResult.TransformRecevingData2=Transform \u6B63\u5728\u63A5\u6536\u6765\u81EA\u522B\u7684 Transform \u7684\u4FE1\u606F\u3002
-DummyMeta.keyword=dummy
 Dummy.Log.LineNumber=\u884C\u53F7
-DummyMeta.CheckResult.NotReceivingFields=\u524D\u7F6E Transform \u7684\u6CA1\u6709\u8F93\u51FA\u4EFB\u4F55\u5B57\u6BB5\uFF01
 DummyDialog.Shell.Title=\u6865\u63A5
-DummyMeta.CheckResult.NoInputReceivedFromOtherTransforms=\u4ECE\u522B\u7684 Transform \u6CA1\u6709\u63A5\u6536\u5230\u4EFB\u4F55\u8F93\u5165\uFF01
+DummyDialog.TransformName.Label=Transform \u540D\u79F0
+DummyMeta.CheckResult.NoInputReceivedFromOtherTransforms=\u4ECE\u522B\u7684 Transform \u6CA1\u6709\u63A5\u6536\u5230\u4EFB\u4F55\u8F93\u5165!
+DummyMeta.CheckResult.NotReceivingFields=\u524D\u7F6E Transform \u7684\u6CA1\u6709\u8F93\u51FA\u4EFB\u4F55\u5B57\u6BB5!
 DummyMeta.CheckResult.TransformRecevingData=Transform \u6B63\u5728\u8FDE\u63A5\u524D\u4E00\u4E2A Transform , \u63A5\u6536 {0} \u4E2A\u5B57\u6BB5
-DummyDialog.TransformName.Label=Transform \u540D\u79F0  
+DummyMeta.CheckResult.TransformRecevingData2=Transform \u6B63\u5728\u63A5\u6536\u6765\u81EA\u522B\u7684 Transform \u7684\u4FE1\u606F.
+DummyMeta.keyword=dummy
diff --git a/engine/src/main/resources/org/apache/hop/pipeline/transforms/file/messages/messages_zh_CN.properties b/engine/src/main/resources/org/apache/hop/pipeline/transforms/file/messages/messages_zh_CN.properties
index 7b7c014..97cc9f0 100644
--- a/engine/src/main/resources/org/apache/hop/pipeline/transforms/file/messages/messages_zh_CN.properties
+++ b/engine/src/main/resources/org/apache/hop/pipeline/transforms/file/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,9 +15,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.pipeline.transforms.file' in locale 'zh_CN'
-#
 #
+BaseFileInputTransform.Log.Error.NoFilesSpecified=\u6CA1\u6709\u6307\u5B9A\u6587\u4EF6! \u505C\u6B62\u5904\u7406\u8FDB\u7A0B
 BaseFileInputTransform.Log.Error.UnableToCreateFileObject=\u65E0\u6CD5\u521B\u5EFA\u6587\u4EF6 [{0}]
-BaseFileInputTransform.Log.Error.NoFilesSpecified=\u6CA1\u6709\u6307\u5B9A\u6587\u4EF6\uFF01\u505C\u6B62\u5904\u7406\u8FDB\u7A0B
 BaseFileInputTransform.Log.Error.UnableToFindFilenameField=\u5728\u8F93\u5165\u884C\u4E2D\u627E\u4E0D\u5230\u6587\u4EF6\u5B57\u6BB5 [{0}]
diff --git a/engine/src/main/resources/org/apache/hop/pipeline/transforms/injector/messages/messages_zh_CN.properties b/engine/src/main/resources/org/apache/hop/pipeline/transforms/injector/messages/messages_zh_CN.properties
index ab76cea..86dcc46 100644
--- a/engine/src/main/resources/org/apache/hop/pipeline/transforms/injector/messages/messages_zh_CN.properties
+++ b/engine/src/main/resources/org/apache/hop/pipeline/transforms/injector/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,19 +15,17 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.pipeline.transforms.injector' in locale 'zh_CN'
-#
 #
-InjectorMeta.CheckResult.NoInputReceivedError=\u6CA1\u6709\u4ECE\u5176\u4ED6 Transform \u6536\u5230\u8F93\u5165\u4FE1\u606F\u3002
+Injector.Log.LineNumber=\u884C\u53F7 
+Injector.Log.StartingToRun=\u6B63\u5728\u5F00\u59CB\u8FD0\u884C...
+Injector.Log.UnexpectedError=\u4E0D\u53EF\u9884\u6599\u7684\u9519\u8BEF\u53D1\u751F\u5728 "
+InjectorDialog.ColumnInfo.Fieldname=\u5B57\u6BB5\u540D\u79F0
 InjectorDialog.ColumnInfo.Length=\u957F\u5EA6
 InjectorDialog.ColumnInfo.Precision=\u7CBE\u5EA6
-InjectorDialog.ColumnInfo.Fieldname=\u5B57\u6BB5\u540D\u79F0
-Injector.Log.UnexpectedError=\u4E0D\u53EF\u9884\u6599\u7684\u9519\u8BEF\u53D1\u751F\u5728 "
-Injector.Log.StartingToRun=\u6B63\u5728\u5F00\u59CB\u8FD0\u884C...
-InjectorDialog.Shell.Title=\u8BB0\u5F55\u6CE8\u5C04\u5668
 InjectorDialog.ColumnInfo.Type=\u7C7B\u578B
 InjectorDialog.Fields.Label=\u5B57\u6BB5\:
-InjectorMeta.CheckResult.TransformExpectingNoReadingInfoFromOtherTransforms=\u8FD9\u4E2A Transform \u6CA1\u6709\u671F\u5F85\u4E5F\u6CA1\u6709\u4ECE\u5176\u4ED6 Transform \u8BFB\u53D6\u4FE1\u606F\u3002
+InjectorDialog.Shell.Title=\u8BB0\u5F55\u6CE8\u5C04\u5668
+InjectorDialog.TransformName.Label=Transform \u540D\u79F0\:
+InjectorMeta.CheckResult.NoInputReceivedError=\u6CA1\u6709\u4ECE\u5176\u4ED6 Transform \u6536\u5230\u8F93\u5165\u4FE1\u606F.
+InjectorMeta.CheckResult.TransformExpectingNoReadingInfoFromOtherTransforms=\u8FD9\u4E2A Transform \u6CA1\u6709\u671F\u5F85\u4E5F\u6CA1\u6709\u4ECE\u5176\u4ED6 Transform \u8BFB\u53D6\u4FE1\u606F.
 InjectorMeta.keyword=\u6CE8\u5165
-InjectorDialog.TransformName.Label=Transform \u540D\u79F0
-Injector.Log.LineNumber=\u884C\u53F7 
diff --git a/engine/src/main/resources/org/apache/hop/pipeline/transforms/missing/messages/messages_zh_CN.properties b/engine/src/main/resources/org/apache/hop/pipeline/transforms/missing/messages/messages_zh_CN.properties
index da264ee..5a147bf 100644
--- a/engine/src/main/resources/org/apache/hop/pipeline/transforms/missing/messages/messages_zh_CN.properties
+++ b/engine/src/main/resources/org/apache/hop/pipeline/transforms/missing/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,7 +15,5 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.pipeline.transforms.missing' in locale 'zh_CN'
-#
 #
-MissingPipelineTransform.Log.CannotRunPipeline=\u7531\u4E8E\u7F3A\u5C11\u63D2\u4EF6\uFF0C\u65E0\u6CD5\u8FD0\u884C pipeline
+MissingPipelineTransform.Log.CannotRunPipeline=\u7531\u4E8E\u7F3A\u5C11\u63D2\u4EF6, \u65E0\u6CD5\u8FD0\u884C pipeline
diff --git a/engine/src/main/resources/org/apache/hop/resource/messages/messages_zh_CN.properties b/engine/src/main/resources/org/apache/hop/resource/messages/messages_zh_CN.properties
index 212362f..fa96140 100644
--- a/engine/src/main/resources/org/apache/hop/resource/messages/messages_zh_CN.properties
+++ b/engine/src/main/resources/org/apache/hop/resource/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,11 +15,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.resource' in locale 'zh_CN'
-#
 #
-ResourceUtil.Exception.ErrorClosingZipStream=\u5173\u95ED ZIP \u6587\u4EF6 [{0}] \u65F6\u51FA\u9519\u3002
-ResourceUtil.Exception.NoResourcesFoundToExport=\u627E\u4E0D\u5230\u8981\u5BFC\u51FA\u7684\u8D44\u6E90\: \u6B63\u5728\u4E2D\u6B62\uFF01
-ResourceUtil.ExportResourcesExplanation=\u8BE5\u8D44\u6E90\u53CA\u6240\u6709\u5F15\u7528\u8D44\u6E90\u5DF2\u88AB\u5BFC\u51FA\u5230 ZIP \u6587\u4EF6 [{0}] \u4E2D\u3002{3} \u5F15\u7528\u8F93\u5165\u6587\u4EF6\u7684\u76F8\u5BF9\u8DEF\u5F84\u5DF2\u66F4\u6539\uFF0C\u56E0\u4E3A\u6211\u4EEC\u5C3D\u53EF\u80FD\u66F4\u65B0 Transform \u4E2D\u53C2\u6570\u5185\u7EDD\u5BF9\u8DEF\u5F84\u7684\u5F15\u7528\u3002{3}\u6CE8\u610F: \u7EDD\u5BF9\u8DEF\u5F84\u8BBE\u7F6E\u4E3A\u751F\u6210\u53C2\u6570\u7684\u9ED8 [...]
+ResourceUtil.Exception.ErrorClosingZipStream=\u5173\u95ED ZIP \u6587\u4EF6 [{0}] \u65F6\u51FA\u9519.
 ResourceUtil.Exception.ErrorSerializingExportInterface=\u5E8F\u5217\u5316\u5BFC\u51FA\u63A5\u53E3 [{0}] \u65F6\u51FA\u9519
+ResourceUtil.Exception.NoResourcesFoundToExport=\u627E\u4E0D\u5230\u8981\u5BFC\u51FA\u7684\u8D44\u6E90\: \u6B63\u5728\u4E2D\u6B62!
+ResourceUtil.ExportResourcesExplanation=\u8BE5\u8D44\u6E90\u53CA\u6240\u6709\u5F15\u7528\u8D44\u6E90\u5DF2\u88AB\u5BFC\u51FA\u5230 ZIP \u6587\u4EF6 [{0}] \u4E2D. {3} \u5F15\u7528\u8F93\u5165\u6587\u4EF6\u7684\u76F8\u5BF9\u8DEF\u5F84\u5DF2\u66F4\u6539, \u56E0\u4E3A\u6211\u4EEC\u5C3D\u53EF\u80FD\u66F4\u65B0 Transform \u4E2D\u53C2\u6570\u5185\u7EDD\u5BF9\u8DEF\u5F84\u7684\u5F15\u7528. {3}\u6CE8\u610F\: \u7EDD\u5BF9\u8DEF\u5F84\u8BBE\u7F6E\u4E3A\u751F\u6210\u53C2\u6570\u7684\u9ED8\u8BA4\u503 [...]
 ResourceUtil.SerializeResourceExportInterface.ZipEntryComment.OriginatingFile=\u539F\u59CB\u6587\u4EF6\: {0} ({1})
diff --git a/engine/src/main/resources/org/apache/hop/server/messages/messages_zh_CN.properties b/engine/src/main/resources/org/apache/hop/server/messages/messages_zh_CN.properties
index 2a13b85..63a9370 100644
--- a/engine/src/main/resources/org/apache/hop/server/messages/messages_zh_CN.properties
+++ b/engine/src/main/resources/org/apache/hop/server/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,25 +15,23 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.server' in locale 'zh_CN'
-#
 #
-HopServer.CannotCloseStream=\u4E0D\u80FD\u5173\u95ED\u6D41\: {0}
-HopServer.HopServerCouldNotBeFound=\u5185\u90E8\u8D44\u6E90\u5E93\u9519\u8BEF\:\u6CA1\u6709\u53D1\u73B0id \u4E3A [{0}] \u7684\u4ECE\u670D\u52A1\u5668\uFF01
-HopServer.StartReadingReply=\u5F00\u59CB\u4ECE web \u670D\u52A1\u5668\u4E0A\u8BFB\u53D6\u56DE\u590D\u3002
-HopServer.DEBUG_ResponseBody="\u54CD\u5E94\u4E3B\u4F53\: {0}
-HopServer.Error.404.Title=\u65E0\u6CD5\u8FDE\u63A5\u5230\u670D\u52A1\u5668
-HopServer.UrlIsInvalid=\u6307\u5B9A\u7684 URL \u65E0\u6548 [{0}]\: {1}
 ClusterSchema.NoHopServerDefined=\u5728\u96C6\u7FA4\u6A21\u5F0F[{0}]\u91CC\u6CA1\u6709\u5B9A\u4E49\u4ECE\u670D\u52A1\u5668
-HopServer.DETAILED_ExecutedService=\u5728\u4E3B\u673A [{1}]\u4E0A\u6267\u884C\u670D\u52A1[{0}] 
-HopServer.DETAILED_FinishedReading=\u5728\u670D\u52A1\u5668\u4E0A\u8BFB\u53D6\u4E86{0} \u4E2A\u5B57\u8282\u3002
-HopServer.ErrorReceivingFile=\u4ECE HTTP \u4E0A\u83B7\u53D6\u6587\u4EF6\u53D1\u751F\u9519\u8BEF\: {0}
+ClusterSchema.NoMasterServerDefined=\u5728\u96C6\u7FA4\u6A21\u5F0F[{0}]\u91CC\u6CA1\u6709\u5B9A\u4E49\u4E3B\u670D\u52A1\u5668
+HopServer.CannotCloseStream=\u4E0D\u80FD\u5173\u95ED\u6D41\: {0}
+HopServer.CannotContactURLForSecurityInformation=\u4E0D\u80FD\u8FDE\u63A5URL [{0}]\u4EE5\u83B7\u5F97\u5B89\u5168\u5F15\u7528\u4FE1\u606F
 HopServer.CannotSaveDueToIOError=\u7531\u4E8E\u4E00\u4E2A I/O \u9519\u8BEF\u4E0D\u80FD\u5C06 HTTP \u7ED3\u679C\u4FDD\u5B58\u5230\u6587\u4EF6\: {0}
+HopServer.DEBUG_ConnectingTo=\u8FDE\u63A5\u5230\: [{0}]
+HopServer.DEBUG_ResponseBody="\u54CD\u5E94\u4E3B\u4F53\: {0}
 HopServer.DEBUG_ResponseStatus=\u54CD\u5E94\u72B6\u6001\u7801\: [{0}]
+HopServer.DETAILED_ExecutedService=\u5728\u4E3B\u673A [{1}]\u4E0A\u6267\u884C\u670D\u52A1[{0}] 
+HopServer.DETAILED_FinishedReading=\u5728\u670D\u52A1\u5668\u4E0A\u8BFB\u53D6\u4E86{0} \u4E2A\u5B57\u8282.
+HopServer.DETAILED_SentExportToService=\u4E0A\u4F20\u5BFC\u51FA\u6587\u4EF6\u5230\u4E3B\u673A [{1}] \u4E0A\u7684 [{0}] \u670D\u52A1\u4E2D
 HopServer.DETAILED_SentXmlToService=\u5728\u4E3B\u673A [{1}] \u4E0A\u53D1\u9001 XML \u7ED9\u670D\u52A1 [{0}]
-ClusterSchema.NoMasterServerDefined=\u5728\u96C6\u7FA4\u6A21\u5F0F[{0}]\u91CC\u6CA1\u6709\u5B9A\u4E49\u4E3B\u670D\u52A1\u5668
-HopServer.DEBUG_ConnectingTo=\u8FDE\u63A5\u5230\: [{0}]
-HopServer.CannotContactURLForSecurityInformation=\u4E0D\u80FD\u8FDE\u63A5URL [{0}]\u4EE5\u83B7\u5F97\u5B89\u5168\u5F15\u7528\u4FE1\u606F
+HopServer.Error.404.Message=\u60A8\u597D\u50CF\u65E0\u6CD5\u8FDE\u63A5\u5230\u670D\u52A1\u5668. \u68C0\u67E5\u60A8\u6307\u5B9A\u7684\u670D\u52A1\u5668\u53CA\u5176\u8DEF\u5F84\u5E76\u786E\u4FDD\u8BE5\u670D\u52A1\u5DF2\u6B63\u5E38\u8FD0\u884C.
+HopServer.Error.404.Title=\u65E0\u6CD5\u8FDE\u63A5\u5230\u670D\u52A1\u5668
+HopServer.ErrorReceivingFile=\u4ECE HTTP \u4E0A\u83B7\u53D6\u6587\u4EF6\u53D1\u751F\u9519\u8BEF\: {0}
 HopServer.FinishedReadingResponse=\u4ECE web \u670D\u52A1\u5668\u4E0A\u8BFB\u53D6\u4E86{0} \u4E2A\u5B57\u8282\u7684\u54CD\u5E94\u4FE1\u606F
-HopServer.Error.404.Message=\u60A8\u4F3C\u4E4E\u6CA1\u6709\u8FDE\u63A5\u5230\u670D\u52A1\u5668\u3002 \u68C0\u67E5\u60A8\u6B63\u5728\u4F7F\u7528\u7684\u8DEF\u5F84\u5E76\u786E\u4FDD\u670D\u52A1\u5668\u5DF2\u542F\u52A8\u5E76\u6B63\u5728\u8FD0\u884C\u3002
-HopServer.DETAILED_SentExportToService=\u5C06\u5BFC\u51FA\u6587\u4EF6\u53D1\u9001\u5230\u4E3B\u673A [{1}] \u4E0A\u7684\u670D\u52A1 [{0}]
+HopServer.HopServerCouldNotBeFound=\u5185\u90E8\u8D44\u6E90\u5E93\u9519\u8BEF\:\u6CA1\u6709\u53D1\u73B0id \u4E3A [{0}] \u7684\u4ECE\u670D\u52A1\u5668\!
+HopServer.StartReadingReply=\u5F00\u59CB\u4ECE web \u670D\u52A1\u5668\u4E0A\u8BFB\u53D6\u56DE\u590D.
+HopServer.UrlIsInvalid=\u6307\u5B9A\u7684 URL \u65E0\u6548 [{0}]\: {1}
diff --git a/engine/src/main/resources/org/apache/hop/ui/pipeline/config/messages/messages_zh_CN.properties b/engine/src/main/resources/org/apache/hop/ui/pipeline/config/messages/messages_zh_CN.properties
index ebb0514..5b49103 100644
--- a/engine/src/main/resources/org/apache/hop/ui/pipeline/config/messages/messages_zh_CN.properties
+++ b/engine/src/main/resources/org/apache/hop/ui/pipeline/config/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,34 +15,32 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.ui.pipeline.config' in locale 'zh_CN'
-#
 #
-PipelineRunConfigurationDialog.ExportResources.ToolTip=\u8BE5\u9009\u9879\u4E0D\u4EC5\u4F1A\u9009\u62E9\u60A8\u6B63\u5728\u8FDC\u7A0B\u6267\u884C\u7684 Pipeline\uFF0C\u8FD8\u4F1A\u9009\u62E9\u5F15\u7528\u7684 Piepline \u548C Workflow\u3002
+PipelineRunConfigurationDialog.ExportResources.Label=\u5BFC\u51FA\u94FE\u63A5\u8D44\u6E90\u5230\u670D\u52A1\u5668
+PipelineRunConfigurationDialog.ExportResources.ToolTip=\u8BE5\u9009\u9879\u4E0D\u4EC5\u4F1A\u9009\u62E9\u60A8\u6B63\u5728\u8FDC\u7A0B\u6267\u884C\u7684 Pipeline, \u8FD8\u4F1A\u9009\u62E9\u5F15\u7528\u7684 Piepline \u548C Workflow.
+PipelineRunConfigurationDialog.FeedbackShown.Label=\u65E5\u5FD7\u884C\u53CD\u9988\:
+PipelineRunConfigurationDialog.FeedbackSize.Label=\u95F4\u9694\u884C\u6570(\u4E0A\u62A5 Metrics)\:
+PipelineRunConfigurationDialog.GatheringMetrics.Label=\u6536\u96C6 Metrics\:
 PipelineRunConfigurationDialog.HopServer.Label=Hop \u670D\u52A1
-PipelineRunConfigurationDialog.Transactional.Label=\u4E8B\u52A1\u578B Pipeline
 PipelineRunConfigurationDialog.MainTab.TabTitle=\u5B9E\u73B0\u7C7B
-PipelineRunConfigurationDialog.RowSetSize.Label=\u6570\u636E\u96C6\u884C\u6570
+PipelineRunConfigurationDialog.NamedResourceSourceFolder.Label=\u547D\u540D\u8D44\u6E90\u5F15\u7528\u6E90\u6587\u4EF6\u5939
+PipelineRunConfigurationDialog.NamedResourceSourceFolder.ToolTip=\u5F53\u524D\u6B63\u5728\u4F7F\u7528\u7684\u547D\u540D\u8D44\u6E90\u7684\u6E90\u76EE\u5F55(\u4F8B\u5982\u201C$'{'PROJECT_HOME}\u201D)
+PipelineRunConfigurationDialog.NamedResourceTargetFolder.Label=\u547D\u540D\u8D44\u6E90\u5F15\u7528\u76EE\u6807\u76EE\u5F55
+PipelineRunConfigurationDialog.NamedResourceTargetFolder.ToolTip=\u60A8\u5E0C\u671B\u6E90\u76EE\u5F55\u6620\u5C04\u5230\u8FDC\u7A0B\u670D\u52A1\u5668\u4E0A\u7684\u4F4D\u7F6E.
+PipelineRunConfigurationDialog.RowSetSize.Label=\u6570\u636E\u96C6\u884C\u6570\:
+PipelineRunConfigurationDialog.RunConfiguration.Label=\u8FD0\u884C\u914D\u7F6E
+PipelineRunConfigurationDialog.SafeModeEnabled.Label=\u5B89\u5168\u6A21\u5F0F\:
+PipelineRunConfigurationDialog.SampleSize.Label=\u91C7\u6837\u7684\u884C\u6570\:
+PipelineRunConfigurationDialog.SampleTypeInGui.Label=\u8FD0\u884C\u65F6 GUI \u91C7\u6837\u65B9\u5F0F\:
+PipelineRunConfigurationDialog.ServerPollDelay.Label=\u670D\u52A1\u5668\u8F6E\u8BE2\u5EF6\u8FDF(\u6BEB\u79D2)\:
+PipelineRunConfigurationDialog.ServerPollInterval.Label=\u670D\u52A1\u5668\u8F6E\u8BE2\u95F4\u9694(\u6BEB\u79D2)\:
+PipelineRunConfigurationDialog.SortTransformsTopologically.Label=\u6392\u5E8F Transform\:
+PipelineRunConfigurationDialog.Transactional.Label=\u4E8B\u52A1\u578B Pipeline\:
+PipelineRunConfigurationDialog.Transactional.ToolTip=\u5982\u679C\u542F\u7528\u8BE5\u529F\u80FD, \u6BCF\u4E2A\u6570\u636E\u5E93\u5C06\u59CB\u7EC8\u53EA\u4F7F\u7528\u540C\u4E00\u8FDE\u63A5. \u5728 Pipeline \u7ED3\u675F\u65F6, \u5C06\u540C\u65F6\u5BF9\u6240\u6709\u547D\u540D\u8FDE\u63A5\u8FDB\u884C\u63D0\u4EA4\u6216\u56DE\u6EDA(\u4EE5\u9632\u51FA\u9519).
 PipelineRunConfigurationDialog.Variables.Column.Description=\u63CF\u8FF0
-PipelineRunConfigurationDialog.Transactional.ToolTip=\u5982\u679C\u542F\u7528\u8BE5\u529F\u80FD\uFF0C\u6BCF\u4E2A\u6570\u636E\u5E93\u5C06\u59CB\u7EC8\u53EA\u4F7F\u7528\u540C\u4E00\u8FDE\u63A5\u3002 \u5728 Pipeline \u7ED3\u675F\u65F6\uFF0C\u5C06\u540C\u65F6\u5BF9\u6240\u6709\u547D\u540D\u8FDE\u63A5\u8FDB\u884C\u63D0\u4EA4\u6216\u56DE\u6EDA(\u4EE5\u9632\u51FA\u9519)\u3002
 PipelineRunConfigurationDialog.Variables.Column.Name=\u53D8\u91CF\u540D
-PipelineRunConfigurationDialog.ExportResources.Label=\u5BFC\u51FA\u94FE\u63A5\u8D44\u6E90\u5230\u670D\u52A1\u5668
-PipelineRunConfigurationDialog.label.EngineType=\u5F15\u64CE\u7C7B\u578B
-PipelineRunConfigurationDialog.NamedResourceTargetFolder.Label=\u547D\u540D\u8D44\u6E90\u5F15\u7528\u76EE\u6807\u76EE\u5F55
-PipelineRunConfigurationDialog.ServerPollInterval.Label=\u670D\u52A1\u5668\u8F6E\u8BE2\u95F4\u9694(\u6BEB\u79D2)
 PipelineRunConfigurationDialog.Variables.Column.Value=\u503C
 PipelineRunConfigurationDialog.VariablesTab.TabTitle=\u53D8\u91CF
-PipelineRunConfigurationDialog.SafeModeEnabled.Label=\u5B89\u5168\u6A21\u5F0F
-PipelineRunConfigurationDialog.FeedbackShown.Label=\u65E5\u5FD7\u884C\u53CD\u9988
-PipelineRunConfigurationDialog.SampleTypeInGui.Label=GUI \u4E2D\u8FD0\u884C\u65F6\u7684\u6837\u672C\u7C7B\u578B
-PipelineRunConfigurationDialog.NamedResourceSourceFolder.ToolTip=\u5F53\u524D\u6B63\u5728\u4F7F\u7528\u7684\u547D\u540D\u8D44\u6E90\u7684\u6E90\u76EE\u5F55(\u4F8B\u5982\u201C$'{'PROJECT_HOME}\u201D)
-PipelineRunConfigurationDialog.RunConfiguration.Label=\u8FD0\u884C\u914D\u7F6E
-PipelineRunConfigurationDialog.FeedbackSize.Label=\u95F4\u9694\u884C\u6570(\u4E0A\u62A5 Metrics)
-PipelineRunConfigurationDialog.label.Description=\u63CF\u8FF0
-PipelineRunConfigurationDialog.label.name=\u540D\u79F0
-PipelineRunConfigurationDialog.ServerPollDelay.Label=\u670D\u52A1\u5668\u8F6E\u8BE2\u5EF6\u8FDF(\u6BEB\u79D2)
-PipelineRunConfigurationDialog.NamedResourceTargetFolder.ToolTip=\u60A8\u5E0C\u671B\u6E90\u76EE\u5F55\u6620\u5C04\u5230\u8FDC\u7A0B\u670D\u52A1\u5668\u4E0A\u7684\u4F4D\u7F6E\u3002
-PipelineRunConfigurationDialog.NamedResourceSourceFolder.Label=\u547D\u540D\u8D44\u6E90\u5F15\u7528\u6E90\u6587\u4EF6\u5939
-PipelineRunConfigurationDialog.SortTransformsTopologically.Label=\u6392\u5E8F Transform
-PipelineRunConfigurationDialog.GatheringMetrics.Label=\u6536\u96C6 Metrics
-PipelineRunConfigurationDialog.SampleSize.Label=GUI \u4E2D\u91C7\u6837\u7684\u884C\u6570
+PipelineRunConfigurationDialog.label.Description=\u63CF\u8FF0\:
+PipelineRunConfigurationDialog.label.EngineType=\u5F15\u64CE\u7C7B\u578B\:
+PipelineRunConfigurationDialog.label.name=\u540D\u79F0\:
diff --git a/engine/src/main/resources/org/apache/hop/workflow/actions/dummy/messages/messages_zh_CN.properties b/engine/src/main/resources/org/apache/hop/workflow/actions/dummy/messages/messages_zh_CN.properties
index 59bf2be..43050c2 100644
--- a/engine/src/main/resources/org/apache/hop/workflow/actions/dummy/messages/messages_zh_CN.properties
+++ b/engine/src/main/resources/org/apache/hop/workflow/actions/dummy/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,11 +15,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.workflow.actions.dummy' in locale 'zh_CN'
-#
 #
-ActionDummyDialog.Title=Action \u6837\u672C
-ActionDummy.Name=\u6A21\u62DF\u6837\u672C
-ActionDummyDialog.Name.Label=Action \u540D\u79F0
 ActionDummy.Description=\u8BE5 Action \u4EC0\u4E48\u4E5F\u4E0D\u505A
+ActionDummy.Name=\u6A21\u62DF\u6837\u672C
 ActionDummy.keyword=\u6837\u672C
+ActionDummyDialog.Name.Label=Action \u540D\u79F0
+ActionDummyDialog.Title=Action \u6837\u672C
diff --git a/engine/src/main/resources/org/apache/hop/workflow/actions/start/messages/messages_zh_CN.properties b/engine/src/main/resources/org/apache/hop/workflow/actions/start/messages/messages_zh_CN.properties
index 32a48c3..56c944a 100644
--- a/engine/src/main/resources/org/apache/hop/workflow/actions/start/messages/messages_zh_CN.properties
+++ b/engine/src/main/resources/org/apache/hop/workflow/actions/start/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,30 +15,28 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.workflow.actions.start' in locale 'zh_CN'
-#
 #
-ActionStart.Scheduling.Label=\u4F5C\u4E1A\u5B9A\u65F6\u8C03\u5EA6
-ActionStart.keyword=start
-ActionStart.IntervalSeconds.Label=\u4EE5\u79D2\u8BA1\u7B97\u7684\u95F4\u9694\:
-ActionStart.Type.Daily=\u5929
-ActionStart.Description=\u542F\u52A8 Action \u662F Workflow \u6267\u884C\u7684\u8D77\u59CB\u70B9
-ActionStart.DayOfWeek.Saturday=\u661F\u671F\u516D
-ActionStart.Type.Interval=\u65F6\u95F4\u95F4\u9694
-ActionStart.DayOfWeek.Tuesday=\u661F\u671F\u4E8C
-ActionStart.Name=\u542F\u52A8
-ActionStart.Type.Label=\u7C7B\u578B\: 
-ActionStart.TimeOfDay.Label=\u6BCF\u5929\:
-ActionStart.Type.Monthly=\u6708
 ActionStart.DayOfMonth.Label=\u6BCF\u6708\:
+ActionStart.DayOfWeek.Friday=\u661F\u671F\u4E94
+ActionStart.DayOfWeek.Label=\u6BCF\u5468\:
+ActionStart.DayOfWeek.Monday=\u661F\u671F\u4E00
+ActionStart.DayOfWeek.Saturday=\u661F\u671F\u516D
 ActionStart.DayOfWeek.Sunday=\u661F\u671F\u5929
-ActionStart.DayOfWeek.Wednesday=\u661F\u671F\u4E09
 ActionStart.DayOfWeek.Thursday=\u661F\u671F\u56DB
+ActionStart.DayOfWeek.Tuesday=\u661F\u671F\u4E8C
+ActionStart.DayOfWeek.Wednesday=\u661F\u671F\u4E09
+ActionStart.Description=\u542F\u52A8 Action \u662F Workflow \u6267\u884C\u7684\u8D77\u59CB\u70B9
 ActionStart.IntervalMinutes.Label=\u4EE5\u5206\u949F\u8BA1\u7B97\u7684\u95F4\u9694\: 
+ActionStart.IntervalSeconds.Label=\u4EE5\u79D2\u8BA1\u7B97\u7684\u95F4\u9694\:
+ActionStart.Name=\u542F\u52A8
 ActionStart.Name.Label=Action \u540D\u79F0
-ActionStart.Type.Weekly=\u5468
 ActionStart.Repeat.Label=\u91CD\u590D\: 
-ActionStart.DayOfWeek.Monday=\u661F\u671F\u4E00
-ActionStart.DayOfWeek.Label=\u6BCF\u5468\:
+ActionStart.Scheduling.Label=\u4F5C\u4E1A\u5B9A\u65F6\u8C03\u5EA6
+ActionStart.TimeOfDay.Label=\u6BCF\u5929\:
+ActionStart.Type.Daily=\u5929
+ActionStart.Type.Interval=\u65F6\u95F4\u95F4\u9694
+ActionStart.Type.Label=\u7C7B\u578B\: 
+ActionStart.Type.Monthly=\u6708
 ActionStart.Type.NoScheduling=\u4E0D\u9700\u8981\u5B9A\u65F6
-ActionStart.DayOfWeek.Friday=\u661F\u671F\u4E94
+ActionStart.Type.Weekly=\u5468
+ActionStart.keyword=start
diff --git a/plugins/misc/import/src/main/resources/org/apache/hop/imports/gui/messages/messages_zh_CN.properties b/engine/src/main/resources/org/apache/hop/workflow/engines/remote/messages/messages_zh_CN.properties
similarity index 83%
copy from plugins/misc/import/src/main/resources/org/apache/hop/imports/gui/messages/messages_zh_CN.properties
copy to engine/src/main/resources/org/apache/hop/workflow/engines/remote/messages/messages_zh_CN.properties
index 3402aed..2b6df42 100644
--- a/plugins/misc/import/src/main/resources/org/apache/hop/imports/gui/messages/messages_zh_CN.properties
+++ b/engine/src/main/resources/org/apache/hop/workflow/engines/remote/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,7 +15,6 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.imports.gui' in locale 'zh_CN'
-#
 #
-HopGuiImport.Menu.Item=\u4ECE Kettle/PDI \u5BFC\u5165...
+Workflow.Log.NoHopServerSpecified=\u672A\u6307\u5B9A Hop \u670D\u52A1\u5668
+Workflow.Log.UniqueWorkflowName=Workflow \u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A
diff --git a/engine/src/main/resources/org/apache/hop/workflow/messages/messages_zh_CN.properties b/engine/src/main/resources/org/apache/hop/workflow/messages/messages_zh_CN.properties
index 7dd1428..2a4a619 100644
--- a/engine/src/main/resources/org/apache/hop/workflow/messages/messages_zh_CN.properties
+++ b/engine/src/main/resources/org/apache/hop/workflow/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,89 +15,88 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.workflow' in locale 'zh_CN'
-#
 #
-WorkflowMeta.Monitor.ReadingWorkflowHopNr=Reading workflow hop \#
+ActionCategory.Category.BigData=\u5927\u6570\u636E
+ActionCategory.Category.BulkLoading=\u6279\u91CF\u52A0\u8F7D
+ActionCategory.Category.Conditions=\u6761\u4EF6
 ActionCategory.Category.Experimental=\u5B9E\u9A8C
-Workflow.Log.NoHopServerSpecified=\u6CA1\u6709\u6307\u5B9A\u4ECE\u670D\u52A1\u5668
-WorkflowMeta.SearchMetadata.DatabaseTypeDescription=\u6570\u636E\u5E93\u7C7B\u578B\u63CF\u8FF0
-WorkflowMeta.Monitor.GettingSQLForActionCopy=Getting SQL statements for action copy [
-WorkflowMeta.ErrorReadingSharedObjects.Message=There was an error while reading the shared objects (continuing load)\: {0}
-Workflow.Log.ConversionError=\u4ECE{0}\u53D6\u5230\u6700\u540E\u4E00\u6761\u65E5\u5FD7\u6570\u636E\u540E,\u53D1\u751F\u4E86\u4E00\u4E2A\u8F6C\u6362\u9519\u8BEF
-WorkflowMeta.Monitor.VerifyingThisActionTask.Title=\u6821\u9A8C\u4F5C\u4E1A\u9879\u4EFB\u52A1
-Workflow.Reason.StartOfAction=Start of action
-WorkflowMeta.Exception.CanNotFindWorkflow=Can''t find workflow\: 
-WorkflowMeta.Monitor.SavingPipeline=\u6B63\u5728\u4FDD\u5B58 Pipeline 
-Workflow.Reason.Finished=\u5B8C\u6210
+ActionCategory.Category.FileEncryption=\u6587\u4EF6\u52A0\u5BC6
 ActionCategory.Category.FileManagement=\u6587\u4EF6\u7BA1\u7406
+ActionCategory.Category.FileTransfer=\u6587\u4EF6\u4F20\u8F93
+ActionCategory.Category.General=\u901A\u7528
 ActionCategory.Category.Mail=\u90AE\u4EF6
-WorkflowMeta.DummyAction.Name=\u6865\u63A5
-Workflow.Log.ErrorExecWorkflow=A serious error occurred during workflow execution\: {0}
-WorkflowHopMeta.Exception.UnableToLoadHopInfoXML=\u4E0D\u80FD\u4ECE XML \u4E2D\u52A0\u8F7D\u4F5C\u4E1A\u9879\u7684\u8282\u70B9\u8FDE\u63A5
+ActionCategory.Category.Scripting=\u811A\u672C
+ActionCategory.Category.Utility=\u5E94\u7528
+ActionCategory.Category.XML=XML
+Workflow.Comment.FollowedFailure=Followed link after failure
+Workflow.Comment.FollowedSuccess=Followed link after success
 Workflow.Comment.FollowedUnconditional=Followed\u65E0\u6761\u4EF6\u7684\u94FE\u63A5
-WorkflowMeta.Dialog.ConnectionExistsOverWrite.Message=Connection [{0}] already exists, do you want to overwrite this database connection?
-WorkflowMeta.Monitor.FinishedLoadOfWorkflow=Finishing load
-WorkflowMeta.Monitor.SavingNoteNr=Saving note \#
-WorkflowMeta.Monitor.SavingActionNr=\u6B63\u5728\u4FDD\u5B58\u4F5C\u4E1A\u9879 \#
 Workflow.Comment.WorkflowFinished=\u4EFB\u52A1\u6267\u884C\u5B8C\u6BD5
-Workflow.Log.LaunchedActionInParallel=\u5E76\u884C\u542F\u52A8\u4F5C\u4E1A\u9879 [{0}] 
-WorkflowMeta.Exception.AnErrorOccuredReadingWorkflow=\u8BFB\u53D6 Workflow \u6587\u4EF6 {0} \u65F6\u51FA\u9519
-WorkflowMeta.Dialog.ConnectionExistsOverWrite.DontShowAnyMoreMessage=Please, don''t show this warning anymore.
-WorkflowMeta.StartAction.Name=Start
-WorkflowMeta.SearchMetadata.DatabasePassword=\u6570\u636E\u5E93\u5BC6\u7801
-WorkflowMeta.SQLFeedback.ErrorObtainingWorkflowLogTableInfo=Error obtaining workflow log table info\: 
-ActionCategory.Category.BulkLoading=\u6279\u91CF\u52A0\u8F7D
-WorkflowMeta.SpecialAction.Name=SPECIAL
-WorkflowMeta.SearchMetadata.ActionDescription=Action description
-WorkflowMeta.Log.SavingDatabaseConnections=\u4FDD\u5B58\u6570\u636E\u5E93\u8FDE\u63A5
-WorkflowHopMeta.Msg.ExecNextActionFlawLess=\u5982\u679C\u4E0A\u4E00\u4E2A\u4F5C\u4E1A\u9879\u6267\u884C\u6210\u529F,\u6267\u884C\u4E0B\u4E00\u4E2A\u4F5C\u4E1A\u9879.
-ActionCategory.Category.Conditions=\u6761\u4EF6
-WorkflowMeta.Monitor.SavingWorkflowDetails=\u6B63\u5728\u4FDD\u5B58\u4F5C\u4E1A\u8BE6\u7EC6\u4FE1\u606F...
-WorkflowMeta.DummyAction.Description=A dummy entry.
+Workflow.Comment.WorkflowStarted=\u5F00\u59CB\u6267\u884C\u4EFB\u52A1
+Workflow.Log.ConversionError=\u4ECE{0}\u53D6\u5230\u6700\u540E\u4E00\u6761\u65E5\u5FD7\u6570\u636E\u540E,\u53D1\u751F\u4E86\u4E00\u4E2A\u8F6C\u6362\u9519\u8BEF
 Workflow.Log.CounldNotFindStartingPoint=\u65E0\u6CD5\u627E\u5230\u4F5C\u4E1A\u7684\u5F00\u59CB\u70B9
-Workflow.Log.StartingAction=\u5F00\u59CB\u9879[{0}]
-WorkflowMeta.SQLFeedback.ThisWorkflow=<this workflow>
-WorkflowMeta.Monitor.GettingSQLNeededForThisWorkflow=Getting the SQL needed for this workflow...
-ActionCategory.Category.FileTransfer=\u6587\u4EF6\u4F20\u8F93
-WorkflowMeta.StartAction.Description=A workflow starts to process here.
-WorkflowMeta.OkAction.Name=OK
-WorkflowMeta.SearchMetadata.DatabaseName=\u6570\u636E\u5E93\u540D\u79F0
-Workflow.Comment.FollowedFailure=Followed link after failure
 Workflow.Log.ErrorAllocatingNewWorkflow=Error allocating new workflow\: {0}
-WorkflowMeta.Monitor.ReadingActionNr=Reading action \#
-Workflow.Log.UniqueWorkflowName=\u4F5C\u4E1A\u9700\u8981\u5728\u8FDC\u7A0B\u670D\u52A1\u4E0A\u6709\u4E00\u4E2A\u552F\u4E00\u7684\u540D\u5B57\u6765\u6807\u8BC6
-WorkflowMeta.Exception.ErrorReadingFromXMLFile=Error reading/validating information from XML file\: 
-WorkflowMeta.Monitor.VerifyingAction.Title=Verifying action [{0}]
-ActionCategory.Category.General=\u901A\u7528
-Workflow.Reason.Started=\u542F\u52A8
-Workflow.Comment.FollowedSuccess=Followed link after success
-WorkflowMeta.SearchMetadata.DatabaseHostName=\u6570\u636E\u5E93\u670D\u52A1\u5668\u540D
-WorkflowMeta.SearchMetadata.DatabaseServer=\u6570\u636E\u5E93\u540D\u79F0
-WorkflowMeta.Exception.UnableToLoadWorkflowFromXMLNode=Unable to load workflow info from XML node
-ActionCategory.Category.Utility=\u5E94\u7528
-WorkflowMeta.SearchMetadata.ActionName=Action name
-WorkflowMeta.Monitor.VerifyingThisAction.Title=Verifying this Workflow...
-WorkflowMeta.SearchMetadata.DatabasePort=\u6570\u636E\u5E93\u7AEF\u53E3
+Workflow.Log.ErrorExecWorkflow=A serious error occurred during workflow execution\: {0}
+Workflow.Log.FinishedAction=\u5B8C\u6210\u4F5C\u4E1A\u9879[{0}] (\u7ED3\u679C\=[{1}])
+Workflow.Log.LaunchedActionInParallel=\u5E76\u884C\u542F\u52A8\u4F5C\u4E1A\u9879 [{0}] 
+Workflow.Log.NoHopServerSpecified=\u6CA1\u6709\u6307\u5B9A\u4ECE\u670D\u52A1\u5668
+Workflow.Log.StartingAction=\u5F00\u59CB\u9879[{0}]
 Workflow.Log.UnableToProcessLoggingStart=\u4E0D\u80FD\u5C06\u5F00\u59CB\u9879\u8BB0\u5F55\u5230\u65E5\u5FD7\u8868{0}\u4E2D
 Workflow.Log.UnexpectedError=\u5F53\u542F\u52A8\u9879\u76EE[{0}]\u65F6\u53D1\u751F\u65E0\u6CD5\u9884\u6599\u7684\u9519\u8BEF
+Workflow.Log.UnexpectedErrorWhileWaitingForAction=\u5728\u7B49\u5F85\u4F5C\u4E1A\u9879 [{0}] \u6267\u884C\u5B8C\u6210\u65F6\u53D1\u751F\u9519\u8BEF.
+Workflow.Log.UniqueWorkflowName=\u4F5C\u4E1A\u9700\u8981\u5728\u8FDC\u7A0B\u670D\u52A1\u4E0A\u6709\u4E00\u4E2A\u552F\u4E00\u7684\u540D\u5B57\u6765\u6807\u8BC6
+Workflow.Reason.Finished=\u5B8C\u6210
+Workflow.Reason.StartOfAction=Start of action
+Workflow.Reason.Started=\u542F\u52A8
 WorkflowHopMeta.Exception.UnableToLoadHopInfo=\u65E0\u6CD5\u52A0\u8F7D Hop \u5143\u6570\u636E\u4FE1\u606F
-WorkflowMeta.ErrorAction.Name=Error
-WorkflowMeta.Monitor.GettingSQLStatementsForJobLogTables=Getting SQL statements for the workflow (logtable, etc.)
-WorkflowMeta.SearchMetadata.NotepadText=Notepad text
-Workflow.Log.FinishedAction=\u5B8C\u6210\u4F5C\u4E1A\u9879[{0}] (\u7ED3\u679C\=[{1}])
-WorkflowMeta.Monitor.ReadingNoteNr=Reading note \#
-ActionCategory.Category.XML=XML
+WorkflowHopMeta.Exception.UnableToLoadHopInfoXML=\u4E0D\u80FD\u4ECE XML \u4E2D\u52A0\u8F7D\u4F5C\u4E1A\u9879\u7684\u8282\u70B9\u8FDE\u63A5
+WorkflowHopMeta.Msg.ExecNextActionFailed=\u5982\u679C\u4E0A\u4E00\u4E2A\u4F5C\u4E1A\u9879\u5931\u8D25,\u6267\u884C\u4E0B\u4E00\u4E2A\u4F5C\u4E1A\u9879
+WorkflowHopMeta.Msg.ExecNextActionFlawLess=\u5982\u679C\u4E0A\u4E00\u4E2A\u4F5C\u4E1A\u9879\u6267\u884C\u6210\u529F,\u6267\u884C\u4E0B\u4E00\u4E2A\u4F5C\u4E1A\u9879.
 WorkflowHopMeta.Msg.ExecNextActionUncondition=\u65E0\u6761\u4EF6\u6267\u884C\u4E0B\u4E00\u4E2A\u4F5C\u4E1A\u9879
-ActionCategory.Category.Scripting=\u811A\u672C
-WorkflowMeta.Monitor.SavingDatabaseTask.Title=\u4FDD\u5B58\u6570\u636E\u5E93\u8FDE\u63A5
-ActionCategory.Category.FileEncryption=\u6587\u4EF6\u52A0\u5BC6
+WorkflowMeta.Dialog.ConnectionExistsOverWrite.DontShowAnyMoreMessage=Please, don''t show this warning anymore.
+WorkflowMeta.Dialog.ConnectionExistsOverWrite.Message=Connection [{0}] already exists, do you want to overwrite this database connection?
+WorkflowMeta.DummyAction.Description=A dummy entry.
+WorkflowMeta.DummyAction.Name=\u6865\u63A5
+WorkflowMeta.ErrorAction.Name=Error
+WorkflowMeta.ErrorReadingSharedObjects.Message=There was an error while reading the shared objects (continuing load)\: {0}
+WorkflowMeta.Exception.AnErrorOccuredReadingWorkflow=\u8BFB\u53D6 Workflow \u6587\u4EF6 {0} \u65F6\u51FA\u9519
+WorkflowMeta.Exception.CanNotFindWorkflow=Can''t find workflow\: 
+WorkflowMeta.Exception.ErrorReadingFromXMLFile=Error reading/validating information from XML file\: 
 WorkflowMeta.Exception.UnableToLoadWorkflowFromXMLFile=Unable to load the workflow from XML file [
+WorkflowMeta.Exception.UnableToLoadWorkflowFromXMLNode=Unable to load workflow info from XML node
+WorkflowMeta.Log.SavingDatabaseConnections=\u4FDD\u5B58\u6570\u636E\u5E93\u8FDE\u63A5
+WorkflowMeta.Monitor.FinishedLoadOfWorkflow=Finishing load
+WorkflowMeta.Monitor.GettingSQLForActionCopy=Getting SQL statements for action copy [
+WorkflowMeta.Monitor.GettingSQLNeededForThisWorkflow=Getting the SQL needed for this workflow...
+WorkflowMeta.Monitor.GettingSQLStatementsForJobLogTables=Getting SQL statements for the workflow (logtable, etc.)
 WorkflowMeta.Monitor.HandlingPreviousVersionOfWorkflow=Handling previous version of workflow...
-Workflow.Log.UnexpectedErrorWhileWaitingForAction=\u5728\u7B49\u5F85\u4F5C\u4E1A\u9879 [{0}] \u6267\u884C\u5B8C\u6210\u65F6\u53D1\u751F\u9519\u8BEF.
-WorkflowHopMeta.Msg.ExecNextActionFailed=\u5982\u679C\u4E0A\u4E00\u4E2A\u4F5C\u4E1A\u9879\u5931\u8D25,\u6267\u884C\u4E0B\u4E00\u4E2A\u4F5C\u4E1A\u9879
-Workflow.Comment.WorkflowStarted=\u5F00\u59CB\u6267\u884C\u4EFB\u52A1
-WorkflowMeta.SearchMetadata.DatabaseConnectionName=Database connection name
 WorkflowMeta.Monitor.LoadingWorkflow=Loading workflow 
+WorkflowMeta.Monitor.ReadingActionNr=Reading action \#
+WorkflowMeta.Monitor.ReadingNoteNr=Reading note \#
+WorkflowMeta.Monitor.ReadingWorkflowHopNr=Reading workflow hop \#
 WorkflowMeta.Monitor.ReadingWorkflowInformation=Reading the workflow information
+WorkflowMeta.Monitor.SavingActionNr=\u6B63\u5728\u4FDD\u5B58\u4F5C\u4E1A\u9879 \#
+WorkflowMeta.Monitor.SavingDatabaseTask.Title=\u4FDD\u5B58\u6570\u636E\u5E93\u8FDE\u63A5
+WorkflowMeta.Monitor.SavingNoteNr=Saving note \#
+WorkflowMeta.Monitor.SavingPipeline=\u6B63\u5728\u4FDD\u5B58 Pipeline 
+WorkflowMeta.Monitor.SavingWorkflowDetails=\u6B63\u5728\u4FDD\u5B58\u4F5C\u4E1A\u8BE6\u7EC6\u4FE1\u606F...
+WorkflowMeta.Monitor.VerifyingAction.Title=Verifying action [{0}]
+WorkflowMeta.Monitor.VerifyingThisAction.Title=Verifying this Workflow...
+WorkflowMeta.Monitor.VerifyingThisActionTask.Title=\u6821\u9A8C\u4F5C\u4E1A\u9879\u4EFB\u52A1
+WorkflowMeta.OkAction.Name=OK
+WorkflowMeta.SQLFeedback.ErrorObtainingWorkflowLogTableInfo=Error obtaining workflow log table info\: 
+WorkflowMeta.SQLFeedback.ThisWorkflow=<this workflow>
+WorkflowMeta.SearchMetadata.ActionDescription=Action description
+WorkflowMeta.SearchMetadata.ActionName=Action \u540D\u79F0
+WorkflowMeta.SearchMetadata.DatabaseConnectionName=Database connection name
+WorkflowMeta.SearchMetadata.DatabaseHostName=\u6570\u636E\u5E93\u670D\u52A1\u5668\u540D
+WorkflowMeta.SearchMetadata.DatabaseName=\u6570\u636E\u5E93\u540D\u79F0
+WorkflowMeta.SearchMetadata.DatabasePassword=\u6570\u636E\u5E93\u5BC6\u7801
+WorkflowMeta.SearchMetadata.DatabasePort=\u6570\u636E\u5E93\u7AEF\u53E3
+WorkflowMeta.SearchMetadata.DatabaseServer=\u6570\u636E\u5E93\u540D\u79F0
+WorkflowMeta.SearchMetadata.DatabaseTypeDescription=\u6570\u636E\u5E93\u7C7B\u578B\u63CF\u8FF0
 WorkflowMeta.SearchMetadata.DatabaseUsername=\u6570\u636E\u5E93\u7528\u6237\u540D
+WorkflowMeta.SearchMetadata.NotepadText=Notepad text
+WorkflowMeta.SpecialAction.Name=SPECIAL
+WorkflowMeta.StartAction.Description=A workflow starts to process here.
+WorkflowMeta.StartAction.Name=Start
diff --git a/engine/src/main/resources/org/apache/hop/www/messages/messages_zh_CN.properties b/engine/src/main/resources/org/apache/hop/www/messages/messages_zh_CN.properties
index e5b9a3d..0f6eb3a 100644
--- a/engine/src/main/resources/org/apache/hop/www/messages/messages_zh_CN.properties
+++ b/engine/src/main/resources/org/apache/hop/www/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,128 +15,171 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.www' in locale 'zh_CN'
-#
 #
-GetStatusServlet.StartPipeline.Failure.Body=\u672A\u542F\u52A8
-GetStatusServlet.PreparePipeline.Title=\u51C6\u5907\u6267\u884C
-HopServerStatusServlet.StopPipeline=\u505C\u6B62\u8FD0\u884C\u4E2D\u7684 Pipeline
-HopServer.Error.NoServerFound=\u65E0\u6CD5\u8FDE\u63A5 {0}\:{1} \u4E0A\u7684 Hop Server
-HopServerStatusServlet.BackToHopServerStatus=\u8FD4\u56DE Hop Server \u72B6\u6001\u9875\u9762
-HopServerStatusServlet.RemoveWorkflow=\u5220\u9664 Workflow
+CleanupPipelineServlet.Log.PipelineCleanedUp=Pipeline [{0}]\u88AB\u6E05\u9664 
+CleanupPipelineServlet.Log.PipelineCleanupRequested=\u9700\u8981\u6E05\u9664 Pipeline
+GetPipelineImageServlet.Log.PipelineImageRequested=\u8BF7\u6C42 Pipeline \u7684\u56FE\u50CF\u8D44\u6E90
 GetRootServlet.HopHopServer.Title=Hop web server
-PausePipelineServlet.PausePipeline=\u6682\u505C Pipeline
+GetRootServlet.HopServerMenu=Hop \u670D\u52A1\u5668\u83DC\u5355
+GetRootServlet.RootRequested=/ \u8D44\u6E90\u8BF7\u6C42
+GetRootServlet.ShowStatus=\u663E\u793A\u72B6\u6001
+GetStatusServlet.Button.No=No
+GetStatusServlet.Button.OK=OK
+GetStatusServlet.Button.YesRemove=\u662F, \u79FB\u9664
+GetStatusServlet.ConfigurationDetails.Advice=\u53EF\u4EE5\u5728 Hop \u670D\u52A1\u5668\u7684 XML \u914D\u7F6E\u6587\u4EF6 {0} \u4E2D\u8BBE\u7F6E\u8FD9\u4E9B\u53C2\u6570
+GetStatusServlet.ConfigurationDetails.Title=\u8BE6\u7EC6\u914D\u7F6E\:
+GetStatusServlet.ConfigurationDetails.UsingDefaults=(\u7528\u9ED8\u8BA4)
+GetStatusServlet.HopHopServerStatus=Hop \u670D\u52A1\u5668\u72B6\u6001
+GetStatusServlet.LastLogTime=\u6700\u8FD1\u8BB0\u5F55\u65F6\u95F4
+GetStatusServlet.Lines=\u884C
+GetStatusServlet.Minutes=\u5206\u949F
+GetStatusServlet.NoLimit=\u65E0\u9650\u5236
+GetStatusServlet.Parameter.MaxLogLines=\u4E3B\u8981\u65E5\u5FD7\u7F13\u51B2\u533A\u7684\u6700\u5927\u5927\u5C0F
+GetStatusServlet.Parameter.MaxLogLinesAge=\u65E5\u5FD7\u6587\u4EF6\u7684\u6700\u5927\u8FC7\u671F\u65F6\u957F
+GetStatusServlet.Parameter.MaxObjectsAge=\u72B6\u6001\u5BF9\u8C61\u7684\u6700\u5927\u8FC7\u671F\u65F6\u957F
+GetStatusServlet.PausePipeline.Failure.Body=\u65E0\u6CD5\u6682\u505C
+GetStatusServlet.PausePipeline.Success.Body=\u5DF2\u6682\u505C
+GetStatusServlet.PausePipeline.Title=\u6682\u505C Pipeline
+GetStatusServlet.PipelineName=\u540D\u79F0
+GetStatusServlet.PipelineStop.Success.Body1=\u505C\u6B62\u8BF7\u6C42
+GetStatusServlet.PipelineStop.Success.Body2=\u6210\u529F
+GetStatusServlet.PreparePipeline.Failure.Body=\u65E0\u6CD5\u9884\u5904\u7406\u6267\u884C.
+GetStatusServlet.PreparePipeline.Success.Body=\u9884\u5904\u7406\u6210\u529F
+GetStatusServlet.PreparePipeline.Title=\u51C6\u5907\u6267\u884C
+GetStatusServlet.RemovePipeline.Confirm.Body=\u60A8\u786E\u5B9A\u60F3\u8981\u5220\u9664?
 GetStatusServlet.RemovePipeline.Failure.Body=\u65E0\u6CD5\u5220\u9664\u6240\u9009 Pipeline
-PipelineStatusServlet.Written=\u5199
+GetStatusServlet.RemovePipeline.Success.Body=\u5DF2\u5220\u9664
+GetStatusServlet.RemovePipeline.Title=\u5220\u9664 Pipeline
+GetStatusServlet.RemoveWorkflow.Confirm.Body=\u60A8\u786E\u5B9A\u8981\u5220\u9664?
+GetStatusServlet.RemoveWorkflow.Failure.Body=\u65E0\u6CD5\u5220\u9664
+GetStatusServlet.RemoveWorkflow.Success.Body=\u5DF2\u5220\u9664
+GetStatusServlet.RemoveWorkflow.Title=\u5220\u9664 Workflow
+GetStatusServlet.ResumePipeline.Failure.Body=\u65E0\u6CD5\u6062\u590D
+GetStatusServlet.ResumePipeline.Success.Body=\u5DF2\u6062\u590D
+GetStatusServlet.ResumePipeline.Title=\u6062\u590D Pipeline
+GetStatusServlet.ServerId=Hop \u670D\u52A1\u5668 ID
 GetStatusServlet.StartDate=\u542F\u52A8\u65F6\u95F4
-WorkflowStatusServlet.BackToWorkflowStatusPage=\u8FD4\u56DE Workflow \u72B6\u6001\u9875\u9762
-GetStatusServlet.TopStatus=Hop \u670D\u52A1\u5668\u72B6\u6001
-GetStatusServlet.StopWorkflow.Failure.Body=\u65E0\u6CD5\u505C\u6B62
-GetPipelineImageServlet.Log.PipelineImageRequested=\u8BF7\u6C42 Pipeline \u7684\u56FE\u50CF\u8D44\u6E90
-PipelineStatusServlet.BackToStatusPage=\u8FD4\u56DE\u5230\u670D\u52A1\u5668\u72B6\u6001\u9875\u9762
-PipelineStatusServlet.ShowAsXml=\u663E\u793A\u6210XML\u683C\u5F0F
-PipelineStatusServlet.Log.CoundNotFindSpecPipeline=\u6CA1\u6709\u627E\u5230\u6307\u5B9A\u7684 Pipeline [{0}] 
-HopServerStatusServlet.ViewWorkflowDetails=\u67E5\u770B Workflow \u8BE6\u7EC6\u4FE1\u606F
-HopServerStatusServlet.RemovePipeline=\u5220\u9664 Pipeline
+GetStatusServlet.StartPipeline.Failure.Body=\u672A\u542F\u52A8
+GetStatusServlet.StartPipeline.Success.Body=\u5DF2\u542F\u52A8
+GetStatusServlet.StartPipeline.Title=\u8FD0\u884C Pipeline
 GetStatusServlet.StartWorkflow.Failure.Body=\u672A\u542F\u52A8
-GetStatusServlet.PreparePipeline.Success.Body=\u9884\u5904\u7406\u6210\u529F
-PipelineStatusServlet.Log.PipelineStatusRequested=\u8BF7\u6C42\u8F6C\u6362\u72B6\u6001
-PipelineStatusServlet.PreparePipeline=\u51C6\u5907\u6267\u884C
-PipelineStatusServlet.Updated=\u66F4\u65B0
-GetStatusServlet.ServerId=Hop \u670D\u52A1\u5668 ID
-HopServerStatusServlet.StopWorkflow=\u505C\u6B62\u8FD0\u884C\u4E2D\u7684 Workflow
-GetStatusServlet.RemovePipeline.Confirm.Body=\u60A8\u786E\u5B9A\u60F3\u8981\u5220\u9664?
+GetStatusServlet.StartWorkflow.Success.Body=\u5DF2\u542F\u52A8
+GetStatusServlet.StartWorkflow.Title=\u8FD0\u884C Workflow
+GetStatusServlet.Status=\u72B6\u6001
+GetStatusServlet.StatusRequested=/hop/status \u8BF7\u6C42
+GetStatusServlet.StopInputPipeline.Failure.Body=\u65E0\u6CD5\u505C\u6B62\u52A0\u8F7D\u8FDB\u7A0B
+GetStatusServlet.StopInputPipeline.Success.Body1=\u505C\u6B62\u8F93\u5165\u8FDB\u7A0B\u8BF7\u6C42\u5728
+GetStatusServlet.StopInputPipeline.Success.Body2=\u6210\u529F
 GetStatusServlet.StopInputPipeline.Title=\u505C\u6B62\u52A0\u8F7D\u8FDB\u7A0B
-StopWorkflowServlet.Log.CoundNotFindWorkflow=\u65E0\u6CD5\u627E\u5230 Workflow [{0}]
-StartWorkflowServlet.Log.WorkflowStarted=Workflow [{0}] \u5DF2\u542F\u52A8
 GetStatusServlet.StopPipeline.Failure.Body=\u65E0\u6CD5\u505C\u6B62
-GetStatusServlet.ResumePipeline.Success.Body=\u5DF2\u6062\u590D
+GetStatusServlet.StopPipeline.Title=\u505C\u6B62 Pipeline
+GetStatusServlet.StopWorkflow.Failure.Body=\u65E0\u6CD5\u505C\u6B62
+GetStatusServlet.StopWorkflow.Success.Body1=\u505C\u6B62\u8BF7\u6C42
+GetStatusServlet.StopWorkflow.Success.Body2=\u6210\u529F
+GetStatusServlet.StopWorkflow.Title=\u505C\u6B62 Workflow
+GetStatusServlet.ThePipeline.Label=Pipeline
 GetStatusServlet.TheWorkflow.Label=Workflow
+GetStatusServlet.TopStatus=Hop \u670D\u52A1\u5668\u72B6\u6001
+GetStatusServlet.UnableTo.Label=\u65E0\u6CD5
+GetStatusServlet.WorkflowName=\u540D\u79F0
 GetWorkflowImageServlet.Log.WorkflowImageRequested=\u8BF7\u6C42 Workflow \u56FE\u50CF\u8D44\u6E90
-PipelineStatusServlet.ServerObjectId=Hop Server ID
-GetStatusServlet.RemoveWorkflow.Failure.Body=\u65E0\u6CD5\u5220\u9664
-CleanupPipelineServlet.Log.PipelineCleanupRequested=\u9700\u8981\u6E05\u9664 Pipeline
-GetStatusServlet.StopWorkflow.Title=\u505C\u6B62 Workflow
-GetStatusServlet.LastLogTime=\u6700\u8FD1\u8BB0\u5F55\u65F6\u95F4
-GetStatusServlet.PipelineStop.Success.Body2=\u6210\u529F
+GetWorkflowStatusServlet.HopWorkflowStatus=Hop Workflow \u72B6\u6001
+GetWorkflowStatusServlet.Log.WorkflowStatusRequested=Workflow \u72B6\u6001\u8BF7\u6C42
+GetWorkflowStatusServlet.WorkflowStatus={0} \u72B6\u6001
+HopServer.Error.CanNotPartPort=\u65E0\u6CD5\u89E3\u6790\u7AEF\u53E3 [{0}], \u4F7F\u7528\u9ED8\u8BA4\u7AEF\u53E3 [{1}]
+HopServer.Error.NoServerFound=\u65E0\u6CD5\u8FDE\u63A5 {0}\:{1} \u4E0A\u7684 Hop Server
 HopServer.Error.NoShutdown=\u65E0\u6CD5\u5173\u95ED Hop Server {0}\:{1} 
-WebServer.Log.CreateListener=\u521B\u5EFA web \u670D\u52A1\u76D1\u542C\u5668 @ \u5730\u5740\: {0}\:{1}
-GetStatusServlet.PipelineStop.Success.Body1=\u505C\u6B62\u8BF7\u6C42
-WorkflowStatusServlet.BackToStatusPage=\u8FD4\u56DE\u72B6\u6001\u9875\u9762
-PipelineStatusServlet.Refresh=\u5237\u65B0
-PipelineStatusServlet.Log.CoundNotFindPipeline=\u6CA1\u6709\u627E\u5230\u6307\u5B9A\u7684 Pipeline [{0}]
-GetStatusServlet.PreparePipeline.Failure.Body=\u65E0\u6CD5\u9884\u5904\u7406\u6267\u884C\u3002
+HopServer.Error.illegalStop=\u5173\u95ED\u7684 Hop Server \u65E0\u6CD5\u4F7F\u7528\u914D\u7F6E\u6587\u4EF6
+HopServer.Usage.Example=\u6837\u4F8B
+HopServerStatusServlet.BackToHopServerStatus=\u8FD4\u56DE Hop Server \u72B6\u6001\u9875\u9762
 HopServerStatusServlet.CleanupPipeline=\u6E05\u7406 Pipeline
-GetStatusServlet.Status=\u72B6\u6001
+HopServerStatusServlet.RemovePipeline=\u5220\u9664 Pipeline
+HopServerStatusServlet.RemoveWorkflow=\u5220\u9664 Workflow
+HopServerStatusServlet.Run=\u8FD0\u884C
+HopServerStatusServlet.StopPipeline=\u505C\u6B62\u8FD0\u884C\u4E2D\u7684 Pipeline
+HopServerStatusServlet.StopWorkflow=\u505C\u6B62\u8FD0\u884C\u4E2D\u7684 Workflow
+HopServerStatusServlet.ViewPipelineDetails=\u67E5\u770B Pipeline \u8BE6\u7EC6\u4FE1\u606F
+HopServerStatusServlet.ViewWorkflowDetails=\u67E5\u770B Workflow \u8BE6\u7EC6\u4FE1\u606F
+PausePipelineServlet.CanNotFindPipeline=\u627E\u4E0D\u5230\u8981\u6682\u505C\u7684 Pipeline [{0}]
+PausePipelineServlet.PauseOfPipelineRequested=Pipeline \u6682\u505C\u8BF7\u6C42
+PausePipelineServlet.PausePipeline=\u6682\u505C Pipeline
+PausePipelineServlet.PipelinePauseRequested=Pipeline [{0}]\: \u6682\u505C\u8BF7\u6C42
+PausePipelineServlet.PipelineResumeRequested=Pipeline [{0}]\: \u6062\u590D\u8BF7\u6C42
+PipelineStatusServlet.Active=\u8FD0\u884C
 PipelineStatusServlet.BackToPipelineStatusPage=\u8FD4\u56DE Pipeline \u72B6\u6001\u9875\u9762
-GetStatusServlet.StopInputPipeline.Failure.Body=\u65E0\u6CD5\u505C\u6B62\u52A0\u8F7D\u8FDB\u7A0B
-PrepareExecutionPipelineServlet.PipelinePrepared=Pipeline [{0}] \u5B8C\u6210\u521D\u59CB\u5316
-GetStatusServlet.PausePipeline.Failure.Body=\u65E0\u6CD5\u6682\u505C
-WebServer.Error.FailedToStop.Msg=\u505C\u6B62\u7F51\u7EDC\u670D\u52A1\u5931\u8D25
-HopServer.Usage.Example=\u6837\u4F8B
-RemovePipelineServlet.PipelineRemoved=Pipeline \u5DF2\u7ECF\u5220\u9664
-GetStatusServlet.WorkflowName=\u540D\u79F0
-PipelineStatusServlet.Input=\u8F93\u5165
-GetStatusServlet.StopPipeline.Title=\u505C\u6B62 Pipeline
-PipelineStatusServlet.PipelineName=Pipeline \u540D\u79F0
-PipelineStatusServlet.Speed=\u901F\u5EA6
-GetStatusServlet.StartWorkflow.Title=\u8FD0\u884C Workflow
-GetStatusServlet.RemovePipeline.Title=\u5220\u9664 Pipeline
+PipelineStatusServlet.BackToStatusPage=\u8FD4\u56DE\u5230\u670D\u52A1\u5668\u72B6\u6001\u9875\u9762
+PipelineStatusServlet.CopyNr=\u526F\u672C
 PipelineStatusServlet.Errors=\u9519\u8BEF
-PipelineStatusServlet.Active=\u8FD0\u884C
-GetStatusServlet.RemoveWorkflow.Confirm.Body=\u60A8\u786E\u5B9A\u8981\u5220\u9664?
-PausePipelineServlet.CanNotFindPipeline=\u627E\u4E0D\u5230\u8981\u6682\u505C\u7684 Pipeline [{0}]
-GetStatusServlet.PipelineName=\u540D\u79F0
-WebResult.Error.UnableCreateResult=\u65E0\u6CD5\u4ECEXML\u83B7\u5F97\u7ED3\u679C
-WebServer.Log.SslModeUsing=SSL \u6A21\u5F0F
-GetStatusServlet.Lines=\u884C
-PipelineStatusServlet.Read=\u8BFB\u53D6
 PipelineStatusServlet.HopPipelineStatus=Hop Pipeline \u72B6\u6001
-GetRootServlet.HopServerMenu=Hop \u670D\u52A1\u5668\u83DC\u5355
-PipelineStatusServlet.StopPipeline=\u505C\u6B62 Pipeline
-GetStatusServlet.ResumePipeline.Failure.Body=\u65E0\u6CD5\u6062\u590D
-GetRootServlet.ShowStatus=\u663E\u793A\u72B6\u6001
-WebServer.Log.ConfigOptionsInvalid=\u65E0\u6548\u7684\u914D\u7F6E\u9009\u9879 [{0}]\: {1}, \u4F7F\u7528\u670D\u52A1\u5668\u9ED8\u8BA4\u914D\u7F6E\u3002
-PipelineStatusServlet.StartPipeline=\u5F00\u59CB Pipeline
-StartPipelineServlet.Log.PipelineStarted=Pipeline [{0}] \u5DF2\u7ECF\u542F\u52A8\u3002
-GetStatusServlet.Button.YesRemove=\u662F\uFF0C\u79FB\u9664
-GetStatusServlet.StatusRequested=/hop/status \u8BF7\u6C42
-GetRootServlet.RootRequested=/ \u8D44\u6E90\u8BF7\u6C42
+PipelineStatusServlet.Input=\u8F93\u5165
+PipelineStatusServlet.Log.CoundNotFindPipeline=\u6CA1\u6709\u627E\u5230\u6307\u5B9A\u7684 Pipeline [{0}]
+PipelineStatusServlet.Log.CoundNotFindSpecPipeline=\u6CA1\u6709\u627E\u5230\u6307\u5B9A\u7684 Pipeline [{0}] 
+PipelineStatusServlet.Log.PipelineStatusRequested=\u8BF7\u6C42 Pipeline \u72B6\u6001
+PipelineStatusServlet.Log.RemovePipelineRequested=Pipeline \u7684\u79FB\u9664\u8BF7\u6C42
+PipelineStatusServlet.Log.SniffTransformRequested=Transform \u7684\u55C5\u63A2\u8BF7\u6C42
+PipelineStatusServlet.Output=\u8F93\u51FA
+PipelineStatusServlet.PipelineName=Pipeline \u540D\u79F0
 PipelineStatusServlet.PipelineStatus=\u72B6\u6001
-WebServer.Log.HopHTTPListener=\ [{0}]\u7684 Hop HTTP \u76D1\u542C\u5668
-GetStatusServlet.StopWorkflow.Success.Body2=\u6210\u529F
-GetStatusServlet.PausePipeline.Success.Body=\u5DF2\u6682\u505C
-GetStatusServlet.RemovePipeline.Success.Body=\u5DF2\u5220\u9664
-GetStatusServlet.StopInputPipeline.Success.Body2=\u6210\u529F
-GetStatusServlet.StartPipeline.Title=\u8FD0\u884C Pipeline
-GetStatusServlet.StartWorkflow.Success.Body=\u5DF2\u542F\u52A8
-StartPipelineServlet.Log.StartOfPipeline=\u542F\u52A8 Pipeline
-PipelineStatusServlet.TransformName=Transform \u540D\u79F0
-GetStatusServlet.ResumePipeline.Title=\u6062\u590D Pipeline
-WebServer.Error.FailedToStop.Title=\u7F51\u7EDC\u670D\u52A1\u9519\u8BEF
-StopPipelineServlet.StopPipeline=\u505C\u6B62 Pipeline
-PipelineStatusServlet.TopPipelineStatus=\u72B6\u6001\u8F6C\u6362\: [{0}]
-GetStatusServlet.StartPipeline.Success.Body=\u5DF2\u542F\u52A8
-HopServerStatusServlet.Run=\u8FD0\u884C
-RemoveWorkflowServlet.WorkflowRemoved=Workflow \u5DF2\u5220\u9664\uFF01
-GetWorkflowStatusServlet.WorkflowStatus={0} \u72B6\u6001
-GetStatusServlet.NoLimit=\u65E0\u9650\u5236
-GetStatusServlet.ConfigurationDetails.Title=\u8BE6\u7EC6\u914D\u7F6E\:
-PipelineStatusServlet.StartDate=\u542F\u52A8\u65F6\u95F4
-HopServer.Error.CanNotPartPort=\u65E0\u6CD5\u89E3\u6790\u7AEF\u53E3 [{0}], \u4F7F\u7528\u9ED8\u8BA4\u7AEF\u53E3 [{1}]
-GetStatusServlet.Button.No=No
-GetStatusServlet.ConfigurationDetails.UsingDefaults=(\u7528\u9ED8\u8BA4)
-GetWorkflowStatusServlet.HopWorkflowStatus=Hop Workflow \u72B6\u6001
-HopServerStatusServlet.ViewPipelineDetails=\u67E5\u770B Pipeline \u8BE6\u7EC6\u4FE1\u606F
-GetStatusServlet.RemoveWorkflow.Success.Body=\u5DF2\u5220\u9664
-CleanupPipelineServlet.Log.PipelineCleanedUp=Pipeline [{0}]\u88AB\u6E05\u9664 
-GetStatusServlet.ThePipeline.Label=Pipeline
-GetStatusServlet.Button.OK=OK
-GetStatusServlet.PausePipeline.Title=\u6682\u505C Pipeline
+PipelineStatusServlet.PreparePipeline=\u51C6\u5907\u6267\u884C
+PipelineStatusServlet.Read=\u8BFB\u53D6
+PipelineStatusServlet.Refresh=\u5237\u65B0
 PipelineStatusServlet.Rejected=\u62D2\u7EDD
+PipelineStatusServlet.ServerObjectId=Hop Server ID
+PipelineStatusServlet.ShowAsJson=\u67E5\u770B(JSON)
+PipelineStatusServlet.ShowAsXml=\u663E\u793A\u6210XML\u683C\u5F0F
+PipelineStatusServlet.Speed=\u901F\u5EA6
+PipelineStatusServlet.StartDate=\u542F\u52A8\u65F6\u95F4
+PipelineStatusServlet.StartPipeline=\u5F00\u59CB Pipeline
+PipelineStatusServlet.StopPipeline=\u505C\u6B62 Pipeline
 PipelineStatusServlet.Time=\u65F6\u95F4
-GetStatusServlet.RemoveWorkflow.Title=\u5220\u9664 Workflow
-GetStatusServlet.Minutes=\u5206\u949F
-PipelineStatusServlet.Output=\u8F93\u51FA
-GetStatusServlet.HopHopServerStatus=Hop \u670D\u52A1\u5668\u72B6\u6001
+PipelineStatusServlet.TopPipelineStatus=\u72B6\u6001\u8F6C\u6362\: [{0}]
+PipelineStatusServlet.TransformName=Transform \u540D\u79F0
+PipelineStatusServlet.Updated=\u66F4\u65B0
+PipelineStatusServlet.Written=\u5199
+PipelineStatusServlet.prinout=pr/in/out
+PrepareExecutionPipelineServlet.Error.PipelineInitFailed=Pipeline \u521D\u59CB\u5316\u5931\u8D25\: {0}
+PrepareExecutionPipelineServlet.Error.UnexpectedError=Pipeline \u9884\u5904\u7406\u671F\u95F4\u610F\u5916\u51FA\u9519\: {0}
+PrepareExecutionPipelineServlet.Log.PipelineNotInit=Pipeline [{0}] \u672A\u6B63\u786E\u521D\u59CB\u5316
+PrepareExecutionPipelineServlet.PipelinePrepareExecution=\u51C6\u5907\u6267\u884C Pipeline
+PrepareExecutionPipelineServlet.PipelinePrepareExecutionRequested=\u51C6\u5907\u6267\u884C Pipeline \u8BF7\u6C42
+PrepareExecutionPipelineServlet.PipelinePrepared=Pipeline [{0}] \u5B8C\u6210\u521D\u59CB\u5316
+RemovePipelineServlet.PipelineRemoved=Pipeline \u5DF2\u7ECF\u5220\u9664
+RemovePipelineServlet.PipelineRemoved.Log.CoundNotFindPipeline=Hop Server \u4E0A\u627E\u4E0D\u5230\u540D\u4E3A [{0}], Object ID\u4E3A {1} \u7684 Pipeline
+RemovePipelineServlet.ThePipelineWasRemoved=\u540D\u4E3A [{0}] \u4E14 Object ID \u4E3A {1} \u7684 Pipeline \u5DF2\u7ECF\u4ECE Hop Server \u4E0A\u79FB\u9664
+RemoveWorkflowServlet.Log.CoundNotFindSpecWorkflow=\u65E0\u6CD5\u627E\u5230 Workflow\: [{0}]\!
+RemoveWorkflowServlet.Log.RemoveWorkflowRequested=\u79FB\u9664 Workflow \u8BF7\u6C42
+RemoveWorkflowServlet.TheWorkflowWasRemoved=\u540D\u4E3A [{0}] \u4E14 Object ID \u4E3A {1} \u7684 Workflow \u5DF2\u7ECF\u4ECE Hop Server \u4E0A\u79FB\u9664
+RemoveWorkflowServlet.WorkflowRemoved=Workflow \u5DF2\u5220\u9664!
+RemoveWorkflowServlet.WorkflowRemoved.Log.CoundNotFindWorkflow=Hop Server \u4E0A\u627E\u4E0D\u5230\u540D\u4E3A [{0}] \u4E14 Object ID \u4E3A {1} \u7684 Workflow
+SniffTransformServlet.Log.CoundNotFindPipeline=\u627E\u4E0D\u5230 Pipeline\: {0}
+SniffTransformServlet.Log.CoundNotFindSpecPipeline=\u627E\u4E0D\u5230\u6307\u5B9A Pipeline\: {0}
+SniffTransformServlet.Log.CoundNotFindSpecTransform=\u627E\u4E0D\u5230\u6307\u5B9A Transform\: {0}
+SniffTransformServlet.SniffResults=Transform \u55C5\u63A2\u7ED3\u679C
+SniffTransformServlet.SniffResultsForTransform=Transform \u7684\u55C5\u63A2\u7ED3\u679C\: {0}
+StartPipelineServlet.Error.UnexpectedError=\u542F\u52A8 Pipeline \u671F\u95F4\u610F\u5916\u51FA\u9519\: {0}
+StartPipelineServlet.Log.PipelineStartRequested=\u542F\u52A8 Pipeline \u8BF7\u6C42
+StartPipelineServlet.Log.PipelineStarted=Pipeline [{0}] \u5DF2\u7ECF\u542F\u52A8.
+StartPipelineServlet.Log.StartOfPipeline=\u542F\u52A8 Pipeline
+StartWorkflowServlet.Error.UnexpectedError=\u542F\u52A8 Workflow \u671F\u95F4\u610F\u5916\u51FA\u9519\: {0}
+StartWorkflowServlet.Log.SpecifiedWorkflowNotFound=\u627E\u4E0D\u5230\u6307\u5B9A Workflow [{0}]
+StartWorkflowServlet.Log.StartWorkflowRequested=\u542F\u52A8 Workflow \u8BF7\u6C42
+StartWorkflowServlet.Log.WorkflowStarted=Workflow [{0}] \u5DF2\u542F\u52A8
 StopPipelineServlet.CanNotFindPipeline=\u6CA1\u6709\u627E\u5230 Pipeline [{0}]
+StopPipelineServlet.PipelineStopRequested=Pipeline [{0}] \u505C\u6B62\u8BF7\u6C42
+StopPipelineServlet.StopOfPipelineRequested=\u505C\u6B62 Pipeline \u8BF7\u6C42
+StopPipelineServlet.StopPipeline=\u505C\u6B62 Pipeline
+StopWorkflowServlet.Log.CoundNotFindWorkflow=\u65E0\u6CD5\u627E\u5230 Workflow [{0}]
+StopWorkflowServlet.log.StopWorkflowRequested=\u505C\u6B62 Workflow \u8BF7\u6C42
+WebResult.Error.UnableCreateResult=\u65E0\u6CD5\u4ECEXML\u83B7\u5F97\u7ED3\u679C
+WebServer.Error.FailedToStop.Msg=\u505C\u6B62\u7F51\u7EDC\u670D\u52A1\u5931\u8D25
+WebServer.Error.FailedToStop.Title=\u7F51\u7EDC\u670D\u52A1\u9519\u8BEF
+WebServer.Error.IllegalSslParameter={0} \u4E0D\u80FD\u4E3A {1}
+WebServer.Log.ConfigOptions=\u914D\u7F6E\u9009\u9879 [{0}] \u8BBE\u7F6E\u5728 {1} \u4E2D
+WebServer.Log.ConfigOptionsInvalid=\u65E0\u6548\u7684\u914D\u7F6E\u9009\u9879 [{0}]\: {1}, \u4F7F\u7528\u670D\u52A1\u5668\u9ED8\u8BA4\u914D\u7F6E.
+WebServer.Log.CreateListener=\u521B\u5EFA web \u670D\u52A1\u76D1\u542C\u5668 @ \u5730\u5740\: {0}\:{1}
+WebServer.Log.HopHTTPListener=\ [{0}]\u7684 Hop HTTP \u76D1\u542C\u5668
+WebServer.Log.SslModeUsing=SSL \u6A21\u5F0F
+WebServiceServlet.Log.WebServiceRequested=\u8BF7\u6C42 Web \u670D\u52A1
+WorkflowStatusServlet.BackToStatusPage=\u8FD4\u56DE\u72B6\u6001\u9875\u9762
+WorkflowStatusServlet.BackToWorkflowStatusPage=\u8FD4\u56DE Workflow \u72B6\u6001\u9875\u9762
+WorkflowStatusServlet.Log.WorkflowStopRequested=Workflow [{0}] \u505C\u6B62\u8BF7\u6C42
diff --git a/plugins/actions/abort/src/main/resources/org/apache/hop/workflow/actions/abort/messages/messages_zh_CN.properties b/plugins/actions/abort/src/main/resources/org/apache/hop/workflow/actions/abort/messages/messages_zh_CN.properties
index 41dc458..1975849 100644
--- a/plugins/actions/abort/src/main/resources/org/apache/hop/workflow/actions/abort/messages/messages_zh_CN.properties
+++ b/plugins/actions/abort/src/main/resources/org/apache/hop/workflow/actions/abort/messages/messages_zh_CN.properties
@@ -16,16 +16,16 @@
 # limitations under the License.
 #
 #
-#
-ActionAbort.Name=\u4e2d\u6b62\u4f5c\u4e1a
-ActionAbort.Description=\u7ec8\u6b62\u4efb\u52a1
-ActionAbort.UnableToLoadFromXml.Label=\u4e0d\u80fd\u4ece XML \u4e2d\u52a0\u8f7d
-ActionAbort.UnableToSaveToRepo.Label=\u4e0d\u80fd\u4fdd\u5b58\u5230\u8d44\u6e90\u5e93\u4e2d
-ActionAbort.UnableToLoadFromRepo.Label=\u4e0d\u80fd\u4ece\u8d44\u6e90\u5e93\u4e2d\u52a0\u8f7d
-ActionAbort.Meta.CheckResult.Label=\u4e2d\u6b62\u4f5c\u4e1a.
-ActionAbort.Meta.CheckResult.CouldNotExecute=\u4e0d\u80fd\u6267\u884c\u4e2d\u6b62\u4f5c\u4e1a\u9879\:
-ActionAbortDialog.MessageAbort.Label=\u6d88\u606f\:
-ActionAbortDialog.Jobname.Label=\u4f5c\u4e1a\u9879\u540d\u79f0
-ActionAbortDialog.Label=\u4e2d\u6b62\u4f5c\u4e1a
-ActionAbortDialog.Title=\u4e2d\u6b62\u4f5c\u4e1a
-ActionAbortDialog.MessageAbort.Tooltip=\u65e5\u5fd7\u4e2d\u663e\u793a\u7684\u6d88\u606f
+ActionAbort.Description=\u7EC8\u6B62\u4EFB\u52A1
+ActionAbort.Meta.CheckResult.CouldNotExecute=\u4E0D\u80FD\u6267\u884C\u7EC8\u6B62 Action\:
+ActionAbort.Meta.CheckResult.Label=\u7EC8\u6B62 Action.
+ActionAbort.Name=\u7EC8\u6B62\u4F5C\u4E1A
+ActionAbort.UnableToLoadFromRepo.Label=\u4E0D\u80FD\u4ECE\u8D44\u6E90\u5E93\u4E2D\u52A0\u8F7D
+ActionAbort.UnableToLoadFromXml.Label=\u4E0D\u80FD\u4ECE XML \u4E2D\u52A0\u8F7D
+ActionAbort.UnableToSaveToRepo.Label=\u4E0D\u80FD\u4FDD\u5B58\u5230\u8D44\u6E90\u5E93\u4E2D
+ActionAbort.keyword=abort
+ActionAbortDialog.Jobname.Label=Action \u540D\u79F0:
+ActionAbortDialog.Label=\u7EC8\u6B62\u4F5C\u4E1A
+ActionAbortDialog.MessageAbort.Label=\u6D88\u606F\:
+ActionAbortDialog.MessageAbort.Tooltip=\u65E5\u5FD7\u4E2D\u663E\u793A\u7684\u6D88\u606F
+ActionAbortDialog.Title=\u7EC8\u6B62\u4F5C\u4E1A
diff --git a/plugins/actions/addresultfilenames/src/main/resources/org/apache/hop/workflow/actions/addresultfilenames/messages/messages_zh_CN.properties b/plugins/actions/addresultfilenames/src/main/resources/org/apache/hop/workflow/actions/addresultfilenames/messages/messages_zh_CN.properties
index ddc8897..6078087 100644
--- a/plugins/actions/addresultfilenames/src/main/resources/org/apache/hop/workflow/actions/addresultfilenames/messages/messages_zh_CN.properties
+++ b/plugins/actions/addresultfilenames/src/main/resources/org/apache/hop/workflow/actions/addresultfilenames/messages/messages_zh_CN.properties
@@ -16,41 +16,41 @@
 # limitations under the License.
 #
 #
-#
-ActionAddResultFilenames.Name=\u6dfb\u52a0\u6587\u4ef6\u5230\u7ed3\u679c\u6587\u4ef6\u4e2d
-ActionAddResultFilenames.Description=\u6dfb\u52a0\u6587\u4ef6\u5230\u7ed3\u679c\u6587\u4ef6\u4e2d
-ActionAddResultFilenames.FoundPreviousRows=\u627e\u5230{0}\u4e2a\u7ed3\u679c\u884c
-ActionAddResultFilenames.ProcessingRow=\u5904\u7406\u884c [{0}].. \u901a\u914d\u7b26 [{1}] 
-ActionAddResultFilenames.CouldNotProcess=\u4e0d\u80fd\u5904\u7406 [{0}], \u5f02\u5e38\: {1}
-ActionAddResultFilenames.ProcessingArg=\u5904\u7406\u53c2\u6570 [{0}].. \u901a\u914d\u7b26 [{1}] 
-ActionAddResultFilenames.log.DeletedFiles=\u6e05\u9664\u7ed3\u679c\u6587\u4ef6\u540d\u5217\u8868.[{0}]\u4e2a\u6587\u4ef6\u88ab\u5220\u9664
-ActionAddResultFilenames.UnableToLoadFromXml=\u4e0d\u80fd\u4ece XML \u4e2d\u52a0\u8f7d\u7c7b\u578b\u4e3a '\u589e\u52a0\u7ed3\u679c\u6587\u4ef6\u540d' \u7684\u4f5c\u4e1a\u9879
-ActionAddResultFilenames.FileCanNotbeFound=\u627e\u4e0d\u5230\u6587\u4ef6 [{0}] 
-ActionAddResultFilenames.log.FilesFound=\u5728\u7ed3\u679c\u6587\u4ef6\u540d\u5217\u8868\u4e2d\u53d1\u73b0\u4e86[{0}]\u4e2a\u6587\u4ef6...
-ActionAddResultFilenames.AddingFileToResult=\u5c06\u6587\u4ef6 [{0}] \u6dfb\u52a0\u5230\u7ed3\u679c\u6587\u4ef6\u540d\u5217\u8868\u4e2d
-ActionAddResultFilenames.Fields.Column=\u6307\u5b9a\u8981\u5220\u9664\u7684\u6587\u4ef6
-ActionAddResultFilenames.FilenameEdit.Tooltip=\u7f16\u8f91\u9009\u4e2d\u7684\u6587\u4ef6
-ActionAddResultFilenames.IncludeSubfolders.Label=\u5305\u62ec\u5b50\u6587\u4ef6\u5939?
-ActionAddResultFilenames.FilenameAdd.Button=\u589e\u52a0(&A)
-ActionAddResultFilenames.DeleteAllBefore.Tooltip=\u5728\u589e\u52a0\u6587\u4ef6\u540d\u4e4b\u524d\u6e05\u9664\u7ed3\u679c
-ActionAddResultFilenames.BrowseFiles.Label=\u6587\u4ef6...
-ActionAddResultFilenames.FilenameDelete.Tooltip=\u79fb\u53bb\u9009\u4e2d\u7684\u6587\u4ef6
-ActionAddResultFilenames.Name.Default=\u589e\u52a0\u7ed3\u679c\u6587\u4ef6\u540d
-ActionAddResultFilenames.Fields.Argument.Label=\u6587\u4ef6/\u76ee\u5f55
-ActionAddResultFilenames.Settings.Label=\u8bbe\u7f6e
-ActionAddResultFilenames.Fields.Label=\u591a\u4e2a\u6587\u4ef6/\u591a\u4e2a\u76ee\u5f55
-ActionAddResultFilenames.Wildcard.Column=\u6307\u5b9a\u4e00\u4e2a\u901a\u914d\u7b26
-ActionAddResultFilenames.Previous.Tooltip=\u5c06\u4e0a\u4e00\u4e2a\u4f5c\u4e1a\u9879\u7684\u7ed3\u679c\u4f5c\u4e3a\u672c\u4f5c\u4e1a\u9879\u7684\u53c2\u6570
-ActionAddResultFilenames.Title=\u6dfb\u52a0\u5230\u7ed3\u679c\u6587\u4ef6\u5217\u8868
-ActionAddResultFilenames.Previous.Label=\u5c06\u4e0a\u4e00\u4e2a\u4f5c\u4e1a\u9879\u7684\u7ed3\u679c\u4f5c\u4e3a\u53c2\u6570
-ActionAddResultFilenames.DeleteAllBefore.Label=\u6e05\u9664\u7ed3\u679c\u6587\u4ef6\u540d
-ActionAddResultFilenames.FilenameEdit.Button=\u7f16\u8f91(&E)
+ActionAddResultFilenames.AddingFileToResult=\u5C06\u6587\u4EF6 [{0}] \u6DFB\u52A0\u5230\u7ED3\u679C\u6587\u4EF6\u540D\u5217\u8868\u4E2D
+ActionAddResultFilenames.BrowseFiles.Label=\u6587\u4EF6...
+ActionAddResultFilenames.BrowseFolders.Label=\u76EE\u5F55...
+ActionAddResultFilenames.CouldNotProcess=\u4E0D\u80FD\u5904\u7406 [{0}], \u5F02\u5E38\: {1}
+ActionAddResultFilenames.DeleteAllBefore.Label=\u6E05\u9664\u7ED3\u679C\u6587\u4EF6\u540D\:
+ActionAddResultFilenames.DeleteAllBefore.Tooltip=\u5728\u589E\u52A0\u6587\u4EF6\u540D\u4E4B\u524D\u6E05\u9664\u7ED3\u679C
+ActionAddResultFilenames.Description=\u6DFB\u52A0\u6587\u4EF6\u5230\u7ED3\u679C\u6587\u4EF6\u4E2D
+ActionAddResultFilenames.Fields.Argument.Label=\u6587\u4EF6/\u76EE\u5F55
+ActionAddResultFilenames.Fields.Column=\u6307\u5B9A\u8981\u5220\u9664\u7684\u6587\u4EF6
+ActionAddResultFilenames.Fields.Label=\u591A\u4E2A\u6587\u4EF6/\u591A\u4E2A\u76EE\u5F55\:
+ActionAddResultFilenames.Fields.Wildcard.Label=\u901A\u914D\u7B26
+ActionAddResultFilenames.FileCanNotbeFound=\u627E\u4E0D\u5230\u6587\u4EF6 [{0}] 
+ActionAddResultFilenames.Filename.Label=\u6587\u4EF6/\u76EE\u5F55\:
+ActionAddResultFilenames.FilenameAdd.Button=\u589E\u52A0(&A)
 ActionAddResultFilenames.FilenameDelete.Button=\u5220\u9664(&D)
-ActionAddResultFilenames.Fields.Wildcard.Label=\u901a\u914d\u7b26
-ActionAddResultFilenames.Filename.Label=\u6587\u4ef6/\u76ee\u5f55
-ActionAddResultFilenames.BrowseFolders.Label=\u76ee\u5f55...
-ActionAddResultFilenames.Wildcard.Label=\u901a\u914d\u7b26
-ActionAddResultFilenames.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0\:
-ActionAddResultFilenames.Wildcard.Tooltip=\u901a\u914d\u7b26
-ActionAddResultFilenames.Filetype.All=\u6240\u6709\u6587\u4ef6
-ActionAddResultFilenames.IncludeSubfolders.Tooltip=\u5305\u62ec\u5b50\u6587\u4ef6\u5939
+ActionAddResultFilenames.FilenameDelete.Tooltip=\u79FB\u53BB\u9009\u4E2D\u7684\u6587\u4EF6
+ActionAddResultFilenames.FilenameEdit.Button=\u7F16\u8F91(&E)
+ActionAddResultFilenames.FilenameEdit.Tooltip=\u7F16\u8F91\u9009\u4E2D\u7684\u6587\u4EF6
+ActionAddResultFilenames.Filetype.All=\u6240\u6709\u6587\u4EF6
+ActionAddResultFilenames.FoundPreviousRows=\u627E\u5230{0}\u4E2A\u7ED3\u679C\u884C
+ActionAddResultFilenames.IncludeSubfolders.Label=\u5305\u62EC\u5B50\u6587\u4EF6\u5939\:
+ActionAddResultFilenames.IncludeSubfolders.Tooltip=\u5305\u62EC\u5B50\u6587\u4EF6\u5939
+ActionAddResultFilenames.Name=\u6DFB\u52A0\u6587\u4EF6\u5230\u7ED3\u679C\u6587\u4EF6\u4E2D
+ActionAddResultFilenames.Name.Default=\u589E\u52A0\u7ED3\u679C\u6587\u4EF6\u540D
+ActionAddResultFilenames.Name.Label=Action \u540D\u79F0\:
+ActionAddResultFilenames.Previous.Label=\u5C06\u4E0A\u4E00\u4E2A Action \u7684\u7ED3\u679C\u4F5C\u4E3A\u53C2\u6570\:
+ActionAddResultFilenames.Previous.Tooltip=\u5C06\u4E0A\u4E00\u4E2A Action \u7684\u7ED3\u679C\u4F5C\u4E3A\u672C Action \u9879\u7684\u53C2\u6570
+ActionAddResultFilenames.ProcessingArg=\u5904\u7406\u53C2\u6570 [{0}].. \u901A\u914D\u7B26 [{1}] 
+ActionAddResultFilenames.ProcessingRow=\u5904\u7406\u884C [{0}].. \u901A\u914D\u7B26 [{1}] 
+ActionAddResultFilenames.Settings.Label=\u8BBE\u7F6E
+ActionAddResultFilenames.Title=\u6DFB\u52A0\u5230\u7ED3\u679C\u6587\u4EF6\u5217\u8868
+ActionAddResultFilenames.UnableToLoadFromXml=\u4E0D\u80FD\u4ECE XML \u4E2D\u52A0\u8F7D\u7C7B\u578B\u4E3A '\u589E\u52A0\u7ED3\u679C\u6587\u4EF6\u540D' \u7684 Action \u9879
+ActionAddResultFilenames.Wildcard.Column=\u6307\u5B9A\u4E00\u4E2A\u901A\u914D\u7B26
+ActionAddResultFilenames.Wildcard.Label=\u901A\u914D\u7B26\:
+ActionAddResultFilenames.Wildcard.Tooltip=\u901A\u914D\u7B26
+ActionAddResultFilenames.keyword=add,result,filenames
+ActionAddResultFilenames.log.DeletedFiles=\u6E05\u9664\u7ED3\u679C\u6587\u4EF6\u540D\u5217\u8868.[{0}]\u4E2A\u6587\u4EF6\u88AB\u5220\u9664
+ActionAddResultFilenames.log.FilesFound=\u5728\u7ED3\u679C\u6587\u4EF6\u540D\u5217\u8868\u4E2D\u53D1\u73B0\u4E86[{0}]\u4E2A\u6587\u4EF6...
diff --git a/plugins/actions/as400command/src/main/resources/org/apache/hop/workflow/actions/as400command/messages/messages_zh_CN.properties b/plugins/actions/as400command/src/main/resources/org/apache/hop/workflow/actions/as400command/messages/messages_zh_CN.properties
new file mode 100644
index 0000000..d4ed0d7
--- /dev/null
+++ b/plugins/actions/as400command/src/main/resources/org/apache/hop/workflow/actions/as400command/messages/messages_zh_CN.properties
@@ -0,0 +1,47 @@
+#
+#
+# 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.
+#
+#
+ActionAs400Command.Description=\u8C03\u7528 AS/400 CL \u547D\u4EE4(\u9002\u7528\u4E8E IBM \u5546\u7528\u4E2D\u5C0F\u578B\u673A\u4E0A\u7684\u64CD\u4F5C\u7CFB\u7EDF)
+ActionAs400Command.Log.CommandFailed=\u65E0\u6CD5\u5728\u670D\u52A1\u5668 {0} \u4E0A\u6267\u884C\u547D\u4EE4 [{1}]
+ActionAs400Command.Log.CommandRun=\u6267\u884C\u547D\u4EE4\: {0}
+ActionAs400Command.Log.CommandSuccess=\u5728\u670D\u52A1\u5668 {0} \u4E0A, \u547D\u4EE4 [{1}] \u6267\u884C\u6210\u529F
+ActionAs400Command.Log.Connected=\u8FDE\u63A5\u5230\u670D\u52A1\u5668 {0}
+ActionAs400Command.Log.Connecting=\u7528\u6237 [{1}] \u8FDE\u63A5\u670D\u52A1\u5668 {0}
+ActionAs400Command.Log.Started=\u5F00\u59CB\u6267\u884C AS/400 \u547D\u4EE4
+ActionAs400Command.Name=AS/400 Command
+ActionAs400Command.keyword=AS,400
+ActionAs400CommandDialog.Command.Group.Label=\u547D\u4EE4
+ActionAs400CommandDialog.Command.Label=\u8981\u8C03\u7528\u547D\u4EE4
+ActionAs400CommandDialog.Command.Tooltip=\u8FD0\u884C\u5728 AS/400 \u7CFB\u7EDF\u4E0A\u7684\u547D\u4EE4. \u5982\u679C\u547D\u4EE4\u4E0D\u5728\u9650\u5B9A\u7684\u76EE\u5F55\u4E2D, \u5219\u4ECE\u76EE\u5F55\u5217\u8868\u4E2D\u67E5\u627E\u8BE5\u547D\u4EE4.
+ActionAs400CommandDialog.Name.Default=AS/400 \u547D\u4EE4
+ActionAs400CommandDialog.Name.Label=Action \u540D\u79F0
+ActionAs400CommandDialog.Password.Label=\u5BC6\u7801
+ActionAs400CommandDialog.Proxy.Group.Label=\u4EE3\u7406
+ActionAs400CommandDialog.ProxyHost.Label=\u4E3B\u673A\u540D
+ActionAs400CommandDialog.ProxyHost.Tooltip=\u4E3B\u673A\u540D\u6216 IP
+ActionAs400CommandDialog.ProxyPort.Label=\u7AEF\u53E3
+ActionAs400CommandDialog.Server.Label=\u670D\u52A1\u5668
+ActionAs400CommandDialog.Server.Tooltip=\u4E3B\u673A\u540D\u6216 IP \u5730\u5740
+ActionAs400CommandDialog.Shell.Title=AS/400 \u547D\u4EE4
+ActionAs400CommandDialog.System.Group.Label=\u7CFB\u7EDF
+ActionAs400CommandDialog.TestConnection.Failed=\u8FDE\u63A5\u5230\u670D\u52A1\u5668 {0} \u5931\u8D25, {1}
+ActionAs400CommandDialog.TestConnection.Label=\u6D4B\u8BD5\u8FDE\u63A5
+ActionAs400CommandDialog.TestConnection.Shell.Title=\u6D4B\u8BD5\u8FDE\u63A5\u5230 AS/400
+ActionAs400CommandDialog.TestConnection.Success=\u8FDE\u63A5\u670D\u52A1\u5668 {0} \u6210\u529F
+ActionAs400CommandDialog.User.Label=\u7528\u6237\u540D
+ActionAs400CommandDialog.User.Tooltip=AS/400 \u7CFB\u7EDF\u7684\u7528\u6237\u540D
diff --git a/plugins/actions/checkdbconnection/src/main/resources/org/apache/hop/workflow/actions/checkdbconnection/messages/messages_zh_CN.properties b/plugins/actions/checkdbconnection/src/main/resources/org/apache/hop/workflow/actions/checkdbconnection/messages/messages_zh_CN.properties
index 5fe67fb..a29ae46 100644
--- a/plugins/actions/checkdbconnection/src/main/resources/org/apache/hop/workflow/actions/checkdbconnection/messages/messages_zh_CN.properties
+++ b/plugins/actions/checkdbconnection/src/main/resources/org/apache/hop/workflow/actions/checkdbconnection/messages/messages_zh_CN.properties
@@ -16,30 +16,32 @@
 # limitations under the License.
 #
 #
-#
-ActionCheckDbConnections.Log.Info.ConnectionsInSuccess=[{0}]\u8fde\u63a5\u88ab\u6210\u529f\u6821\u9a8c
-ActionCheckDbConnections.ERROR_0003_Cannot_Save_Job_Entry=\u4e0d\u80fd\u5c06\u4f5c\u4e1a\u9879\u201c\u6570\u636e\u5e93\u8fde\u63a5\u6821\u9a8c\u201d\u4fdd\u5b58\u5230\u8d44\u6e90\u5e93\uff0c\u4fdd\u5b58id\={0}\uff0c \u5f02\u5e38\uff1a{1}
-ActionCheckDbConnections.UnitTimeMinute.Label=\u5206\u949f
-ActionCheckDbConnections.ERROR_0001_Cannot_Load_Job_Entry_From_Xml_Node=\u4e0d\u80fd\u4eceXML\u8282\u70b9\u4e2d\u52a0\u8f7d\u4f5c\u4e1a\u9879\u201c\u6570\u636e\u5e93\u8fde\u63a5\u6821\u9a8c\u201d\uff0c\u5f02\u5e38\uff1a{0}
-ActionCheckDbConnections.UnitTimeMilliSecond.Label=\u6beb\u79d2
-ActionCheckDbConnections.Connected=\u8fde\u63a5\u5230\u6570\u636e\u5e93[{0}](\u8fde\u63a5[{1}])\u2026\u2026
-ActionCheckDbConnections.UnitTimeSecond.Label=\u79d2
-ActionCheckDbConnections.ConnectionOK=\u6210\u529f\u8fde\u63a5\u5230\u6570\u636e\u5e93[{0}](\u8fde\u63a5[{1}])
-ActionCheckDbConnections.UnitTimeHour.Label=\u5c0f\u65f6
-ActionCheckDbConnections.Log.Info.ConnectionsInError=[{0}]\u9519\u8bef\u7684\u8fde\u63a5
-ActionCheckDbConnections.Exception=\u4e0d\u80fd\u8fde\u63a5\u5230\u6570\u636e\u5e93[{0}](\u8fde\u63a5[{1}])\u3002\u5f02\u5e38\uff1a[{2}]
-ActionCheckDbConnections.Wait=\u9700\u8981\u6253\u5f00\u8fde\u63a5{0} {1}
-ActionCheckDbConnections.WaitTimeIsElapsed.Label=\u6570\u636e\u5e93[{0}](\u8fde\u63a5[{1}])\u7b49\u5f85\u8d85\u65f6\u3002\u8fde\u63a5\u5c06\u88ab\u5173\u95ed
-ActionCheckDbConnections.Name.Default=\u6570\u636e\u5e93\u8fde\u63a5\u6821\u9a8c
+ActionCheckDbConnections.Connected=\u8FDE\u63A5\u5230\u6570\u636E\u5E93[{0}](\u8FDE\u63A5[{1}])\u2026\u2026
+ActionCheckDbConnections.ConnectionOK=\u6210\u529F\u8FDE\u63A5\u5230\u6570\u636E\u5E93[{0}](\u8FDE\u63A5[{1}])
 ActionCheckDbConnections.DeleteEntry=\u5220\u9664
-ActionCheckDbConnections.Fields.Column=\u8fde\u63a5
-ActionCheckDbConnections.Fields.Label=\u8fde\u63a5
-ActionCheckDbConnections.DeleteSourceFileButton.Label=\u4ece\u5217\u8868\u4e2d\u5220\u9664\u9009\u4e2d\u9879
-ActionCheckDbConnections.GetConnections.Tooltip=\u83b7\u53d6\u53ef\u7528\u7684\u6570\u636e\u5e93\u8fde\u63a5
-ActionCheckDbConnections.GetConnections=\u83b7\u53d6\u8fde\u63a5
-ActionCheckDbConnections.Fields.WaitFor.Label=\u7b49\u5f85
-ActionCheckDbConnections.Fields.Argument.Label=\u8fde\u63a5
-ActionCheckDbConnections.Title=\u68c0\u67e5\u6570\u636e\u5e93\u8fde\u63a5
-ActionCheckDbConnections.Fields.WaitForTime.Label=\u65f6\u95f4\u5355\u4f4d
-ActionCheckDbConnections.WaitFor.ToolTip=\u6253\u5f00\u8fde\u63a5\u540e\u7b49\u5f85 X(\u79d2\uff0c\u6beb\u79d2\u2026\u2026\uff09
-ActionCheckDbConnections.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0
+ActionCheckDbConnections.DeleteSourceFileButton.Label=\u4ECE\u5217\u8868\u4E2D\u5220\u9664\u9009\u4E2D\u9879
+ActionCheckDbConnections.Description=\u68C0\u6D4B\u5355\u4E2A\u6216\u591A\u4E2A\u6570\u636E\u5E93\u8FDE\u63A5\u662F\u5426\u6709\u6548
+ActionCheckDbConnections.ERROR_0001_Cannot_Load_Job_Entry_From_Xml_Node=\u4E0D\u80FD\u4ECEXML\u8282\u70B9\u4E2D\u52A0\u8F7D Action \u9879\u201C\u6570\u636E\u5E93\u8FDE\u63A5\u6821\u9A8C\u201D, \u5F02\u5E38\uFF1A{0}
+ActionCheckDbConnections.ERROR_0003_Cannot_Save_Job_Entry=\u4E0D\u80FD\u5C06 Action \u9879\u201C\u6570\u636E\u5E93\u8FDE\u63A5\u6821\u9A8C\u201D\u4FDD\u5B58\u5230\u8D44\u6E90\u5E93, \u4FDD\u5B58id\={0}, \u5F02\u5E38\uFF1A{1}
+ActionCheckDbConnections.Exception=\u4E0D\u80FD\u8FDE\u63A5\u5230\u6570\u636E\u5E93[{0}](\u8FDE\u63A5[{1}]). \u5F02\u5E38\uFF1A[{2}]
+ActionCheckDbConnections.Fields.Argument.Label=\u8FDE\u63A5
+ActionCheckDbConnections.Fields.Column=\u8FDE\u63A5
+ActionCheckDbConnections.Fields.Label=\u8FDE\u63A5
+ActionCheckDbConnections.Fields.WaitFor.Label=\u7B49\u5F85
+ActionCheckDbConnections.Fields.WaitForTime.Label=\u65F6\u95F4\u5355\u4F4D
+ActionCheckDbConnections.GetConnections=\u83B7\u53D6\u8FDE\u63A5
+ActionCheckDbConnections.GetConnections.Tooltip=\u83B7\u53D6\u53EF\u7528\u7684\u6570\u636E\u5E93\u8FDE\u63A5
+ActionCheckDbConnections.Log.Info.ConnectionsInError=[{0}]\u9519\u8BEF\u7684\u8FDE\u63A5
+ActionCheckDbConnections.Log.Info.ConnectionsInSuccess=[{0}]\u8FDE\u63A5\u88AB\u6210\u529F\u6821\u9A8C
+ActionCheckDbConnections.Name=\u68C0\u6D4B DB
+ActionCheckDbConnections.Name.Default=\u6570\u636E\u5E93\u8FDE\u63A5\u6821\u9A8C
+ActionCheckDbConnections.Name.Label=Action \u540D\u79F0:
+ActionCheckDbConnections.Title=\u68C0\u67E5\u6570\u636E\u5E93\u8FDE\u63A5
+ActionCheckDbConnections.UnitTimeHour.Label=\u5C0F\u65F6
+ActionCheckDbConnections.UnitTimeMilliSecond.Label=\u6BEB\u79D2
+ActionCheckDbConnections.UnitTimeMinute.Label=\u5206\u949F
+ActionCheckDbConnections.UnitTimeSecond.Label=\u79D2
+ActionCheckDbConnections.Wait=\u9700\u8981\u6253\u5F00\u8FDE\u63A5{0} {1}
+ActionCheckDbConnections.WaitFor.ToolTip=\u6253\u5F00\u8FDE\u63A5\u540E\u7B49\u5F85 X(\u79D2, \u6BEB\u79D2\u2026\u2026)
+ActionCheckDbConnections.WaitTimeIsElapsed.Label=\u6570\u636E\u5E93[{0}](\u8FDE\u63A5[{1}])\u7B49\u5F85\u8D85\u65F6. \u8FDE\u63A5\u5C06\u88AB\u5173\u95ED
+ActionCheckDbConnections.keyword=check,db,database,connection
diff --git a/plugins/actions/checkfilelocked/src/main/resources/org/apache/hop/workflow/actions/checkfilelocked/messages/messages_zh_CN.properties b/plugins/actions/checkfilelocked/src/main/resources/org/apache/hop/workflow/actions/checkfilelocked/messages/messages_zh_CN.properties
index 4fa794c..bacd09d 100644
--- a/plugins/actions/checkfilelocked/src/main/resources/org/apache/hop/workflow/actions/checkfilelocked/messages/messages_zh_CN.properties
+++ b/plugins/actions/checkfilelocked/src/main/resources/org/apache/hop/workflow/actions/checkfilelocked/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,30 +15,46 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-ActionCheckFilesLocked.Name=\u68c0\u67e5\u6587\u4ef6\u662f\u5426\u88ab\u9501
-ActionCheckFilesLocked.Log.FileLocked=\u6587\u4ef6[{0}]\u88ab\u9501\u5b9a
-ActionCheckFilesLocked.IncludeSubfolders.Tooltip=\u5305\u542b\u5b50\u6587\u4ef6\u5939
-ActionCheckFilesLocked.Filetype.All=\u6240\u6709\u6587\u4ef6
-ActionCheckFilesLocked.Fields.Argument.Label=\u6587\u4ef6/\u6587\u4ef6\u5939
-ActionCheckFilesLocked.Settings.Label=\u8bbe\u7f6e
-ActionCheckFilesLocked.Log.FileNotLocked=\u6587\u4ef6[{0}]\u672a\u88ab\u9501\u5b9a
-ActionCheckFilesLocked.Previous.Label=\u5c06\u4e0a\u4e00\u6b65\u7ed3\u679c\u4fdd\u5b58\u5230\u53c2\u6570
-ActionCheckFilesLocked.FilenameDelete.Tooltip=\u4ece\u8868\u683c\u4e2d\u79fb\u9664\u9009\u4e2d\u7684\u6587\u4ef6
-ActionCheckFilesLocked.Wildcard.Label=\u901a\u914d\u7b26
-ActionCheckFilesLocked.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0
-ActionCheckFilesLocked.FilenameDelete.Button=&\u5220\u9664
-ActionCheckFilesLocked.Wildcard.Column=\u5728\u6b64\u5904\u6307\u5b9a\u901a\u914d\u7b26
-ActionCheckFilesLocked.Fields.Column=\u5728\u6b64\u5904\u6307\u5b9a\u8981\u6821\u9a8c\u7684\u6587\u4ef6
-ActionCheckFilesLocked.BrowseFolders.Label=\u6587\u4ef6\u5939...
-ActionCheckFilesLocked.Error.Exception.Process=\u6821\u9a8c\u6587\u4ef6[{0}]\u51fa\u9519
-ActionCheckFilesLocked.FilenameEdit.Button=&\u7f16\u8f91
-ActionCheckFilesLocked.FilenameAdd.Button=&\u6dfb\u52a0
-ActionCheckFilesLocked.Fields.Label=\u6587\u4ef6/\u6587\u4ef6\u5939
-ActionCheckFilesLocked.BrowseFiles.Label=\u6587\u4ef6...
-ActionCheckFilesLocked.Fields.Wildcard.Label=\u901a\u914d\u7b26
-ActionCheckFilesLocked.FilenameEdit.Tooltip=\u7f16\u8f91\u9009\u4e2d\u7684\u6587\u4ef6
-ActionCheckFilesLocked.IncludeSubfolders.Label=\u5305\u542b\u5b50\u6587\u4ef6\u5939
-ActionCheckFilesLocked.Wildcard.Tooltip=\u901a\u914d\u7b26
-ActionCheckFilesLocked.Error.Exception.ProcessError=\u9519\u8bef
-ActionCheckFilesLocked.Filename.Label=\u6587\u4ef6/\u6587\u4ef6\u5939
-ActionCheckFilesLocked.Title=\u68c0\u67e5\u6587\u4ef6\u662f\u5426\u88ab\u9501
+#
+ActionCheckFilesLocked.BrowseFiles.Label=\u6587\u4EF6...
+ActionCheckFilesLocked.BrowseFolders.Label=\u6587\u4EF6\u5939...
+ActionCheckFilesLocked.CheckingFile=\u68C0\u6D4B\u6587\u4EF6 [{0}]...
+ActionCheckFilesLocked.CouldNotProcess=\u65E0\u6CD5\u5904\u7406\u6587\u4EF6 [{0}], \u5F02\u5E38\: {1}
+ActionCheckFilesLocked.Description=\u68C0\u6D4B\u5355\u4E2A\u6587\u4EF6\u6216\u591A\u4E2A\u6587\u4EF6\u662F\u5426\u88AB\u5176\u5B83\u8FDB\u7A0B\u9501\u5B9A
+ActionCheckFilesLocked.Error.Exception.Process=\u6821\u9A8C\u6587\u4EF6[{0}]\u51FA\u9519
+ActionCheckFilesLocked.Error.Exception.ProcessError=\u9519\u8BEF
+ActionCheckFilesLocked.ErrorRunningAction=\u8FD0\u884C\u8BE5 Action \u65F6\u51FA\u9519\! {0}
+ActionCheckFilesLocked.Fields.Argument.Label=\u6587\u4EF6/\u6587\u4EF6\u5939
+ActionCheckFilesLocked.Fields.Column=\u5728\u6B64\u5904\u6307\u5B9A\u8981\u6821\u9A8C\u7684\u6587\u4EF6
+ActionCheckFilesLocked.Fields.Label=\u6587\u4EF6/\u6587\u4EF6\u5939
+ActionCheckFilesLocked.Fields.Wildcard.Label=\u901A\u914D\u7B26
+ActionCheckFilesLocked.FileNotExist=\u65E0\u6CD5\u627E\u5230\u6587\u4EF6 [{0}].
+ActionCheckFilesLocked.Filename.Label=\u6587\u4EF6/\u6587\u4EF6\u5939\:
+ActionCheckFilesLocked.FilenameAdd.Button=\u6DFB\u52A0
+ActionCheckFilesLocked.FilenameDelete.Button=\u5220\u9664
+ActionCheckFilesLocked.FilenameDelete.Tooltip=\u4ECE\u8868\u683C\u4E2D\u79FB\u9664\u9009\u4E2D\u7684\u6587\u4EF6
+ActionCheckFilesLocked.FilenameEdit.Button=\u7F16\u8F91
+ActionCheckFilesLocked.FilenameEdit.Tooltip=\u7F16\u8F91\u9009\u4E2D\u7684\u6587\u4EF6
+ActionCheckFilesLocked.Filetype.All=\u6240\u6709\u6587\u4EF6
+ActionCheckFilesLocked.FoundPreviousRows=\u4ECE\u524D\u7F6E\u8FD4\u56DE\u7ED3\u679C\u5217\u8868\u4E2D\u6536\u5230 {0} \u884C\u6570\u636E
+ActionCheckFilesLocked.IncludeSubfolders.Label=\u5305\u542B\u5B50\u6587\u4EF6\u5939\:
+ActionCheckFilesLocked.IncludeSubfolders.Tooltip=\u5305\u542B\u5B50\u6587\u4EF6\u5939
+ActionCheckFilesLocked.Log.FileLocked=\u6587\u4EF6[{0}]\u88AB\u9501\u5B9A
+ActionCheckFilesLocked.Log.FileNotLocked=\u6587\u4EF6[{0}]\u672A\u88AB\u9501\u5B9A
+ActionCheckFilesLocked.Name=\u68C0\u6D4B\u6587\u4EF6\u9501
+ActionCheckFilesLocked.Name.Default=\u68C0\u6D4B\u6587\u4EF6\u662F\u5426\u88AB\u9501
+ActionCheckFilesLocked.Name.Label=Action \u540D\u79F0:
+ActionCheckFilesLocked.Previous.Label=\u5C06\u4E0A\u4E00\u6B65\u7ED3\u679C\u4FDD\u5B58\u5230\u53C2\u6570\:
+ActionCheckFilesLocked.Previous.Tooltip=\u9009\u4E2D\u8BE5\u9009\u9879\u5219\u5C06\u524D\u7F6E\u901A\u9053\u4E2D\u4F20\u9012\u8FC7\u6765\u7684\u6570\u636E\u884C\u505A\u4E3A\u8BE5 Action \u7684\u53C2\u6570
+ActionCheckFilesLocked.ProcessingArg=\u5904\u7406\u8DEF\u5F84\u53C2\u6570 [{0}]..\u5339\u914D\u7B26 [{1}]
+ActionCheckFilesLocked.ProcessingFile=\u5904\u7406\u6587\u4EF6 [{0}]
+ActionCheckFilesLocked.ProcessingFolder=\u5904\u7406\u76EE\u5F55 [{0}]
+ActionCheckFilesLocked.ProcessingRow=\u5904\u7406\u6570\u636E\u884C [{0}]..\u5339\u914D\u7B26 [{1}]
+ActionCheckFilesLocked.Settings.Label=\u8BBE\u7F6E
+ActionCheckFilesLocked.Title=\u68C0\u6D4B\u6587\u4EF6\u662F\u5426\u88AB\u9501
+ActionCheckFilesLocked.TotalFilesToCheck=\u8981\u68C0\u6D4B\u7684\u6587\u4EF6\u603B\u6570\: {0}
+ActionCheckFilesLocked.UnableToLoadFromXml=\u65E0\u6CD5\u4ECE XML \u8282\u70B9\u52A0\u8F7D "\u68C0\u6D4B\u6587\u4EF6\u9501" \u7C7B\u578B\u7684 Action
+ActionCheckFilesLocked.Wildcard.Column=\u5728\u6B64\u5904\u6307\u5B9A\u901A\u914D\u7B26
+ActionCheckFilesLocked.Wildcard.Label=\u901A\u914D\u7B26\:
+ActionCheckFilesLocked.Wildcard.Tooltip=\u901A\u914D\u7B26
+ActionCheckFilesLocked.keyword=check,file,locked
diff --git a/plugins/actions/columnsexist/src/main/resources/org/apache/hop/workflow/actions/columnsexist/messages/messages_zh_CN.properties b/plugins/actions/columnsexist/src/main/resources/org/apache/hop/workflow/actions/columnsexist/messages/messages_zh_CN.properties
index ed6a070..e2cc902 100644
--- a/plugins/actions/columnsexist/src/main/resources/org/apache/hop/workflow/actions/columnsexist/messages/messages_zh_CN.properties
+++ b/plugins/actions/columnsexist/src/main/resources/org/apache/hop/workflow/actions/columnsexist/messages/messages_zh_CN.properties
@@ -16,30 +16,31 @@
 # limitations under the License.
 #
 #
-#
-ActionColumnsExist.Name=Check if one or several columns exist in a table on a specified connection
-ActionColumnsExist.Description=\u68c0\u67e5\u5217\u662f\u5426\u5b58\u5728
-ActionColumnsExist.Error.UnexpectedError=\u6267\u884c\u4f5c\u4e1a\u9879\:{0}\u65f6\u53d1\u751f\u4e86\u4e00\u4e2a\u9519\u8bef
-ActionColumnsExist.Error.NoDbConnection=\u6ca1\u6709\u5b9a\u4e49\u6570\u636e\u5e93\u8fde\u63a5
-ActionColumnsExist.Schemaname.Label=\u6a21\u5f0f\u540d\:
-ActionColumnsExist.FilenameDelete.Button=\u5220\u9664
-ActionColumnsExist.Log.ColumnExists=\u5217 [{0}] \u5b58\u5728\u4e8e\u8868 [{1}] \u4e2d
+ActionColumnsExist.ConnectionError.DialogMessage=1111
+ActionColumnsExist.ConnectionError2.DialogMessage=\u4ECE\u8868 [{0}] \u4E2D\u83B7\u53D6\u5217\u65F6\u53D1\u751F\u9519\u8BEF\!
+ActionColumnsExist.Description=\u68C0\u67E5\u5217\u662F\u5426\u5B58\u5728
+ActionColumnsExist.Error.ColumnameEmpty=\u5217\u540D\u4E3A\u7A7A,\u5FC5\u987B\u6307\u5B9A\u4E00\u4E2A\u5217\u540D.
+ActionColumnsExist.Error.NoDbConnection=\u6CA1\u6709\u5B9A\u4E49\u6570\u636E\u5E93\u8FDE\u63A5
+ActionColumnsExist.Error.TablenameEmpty=\u8868\u540D\u4E3A\u7A7A,\u5FC5\u987B\u6307\u5B9A\u4E00\u4E2A\u8868\u540D
+ActionColumnsExist.Error.UnexpectedError=\u6267\u884C Action\:{0}\u65F6\u53D1\u751F\u4E86\u4E00\u4E2A\u9519\u8BEF
+ActionColumnsExist.Fields.Argument.Label=\u5217
 ActionColumnsExist.Fields.Column=\u5217
 ActionColumnsExist.Fields.Label=\u5217
-ActionColumnsExist.Name.Default=\u5217\u5b58\u5728
-ActionColumnsExist.Schemaname.Tooltip=\u6a21\u5f0f\u540d
-ActionColumnsExist.Meta.UnableLoadXml=\u4e0d\u80fd\u4eceXML\u6587\u4ef6\u4e2d\u52a0\u8f7d '\u5217\u5b58\u5728' \u4f5c\u4e1a\u9879
-ActionColumnsExist.GetColums.Button=\u83b7\u5f97\u5217\u540d
-ActionColumnsExist.Title=\u68c0\u67e5\u5217\u662f\u5426\u5b58\u5728
-ActionColumnsExist.Tablename.Label=\u8868\u540d\:
-ActionColumnsExist.Log.ColumnNotExists=\u5217 [{0}] \u4e0d\u5b58\u5728\u4e8e\u8868[{1}] \u4e2d
-ActionColumnsExist.GetColums.Tooltip=\u4ece\u6307\u5b9a\u7684\u8868\u91cc\u83b7\u5f97\u5217\u540d
-ActionColumnsExist.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0
-ActionColumnsExist.Error.TablenameEmpty=\u8868\u540d\u4e3a\u7a7a,\u5fc5\u987b\u6307\u5b9a\u4e00\u4e2a\u8868\u540d
-ActionColumnsExist.Error.ColumnameEmpty=\u5217\u540d\u4e3a\u7a7a,\u5fc5\u987b\u6307\u5b9a\u4e00\u4e2a\u5217\u540d.
-ActionColumnsExist.GetListColumsNoRow.DialogMessage=\u83b7\u5f97\u5217\u540d\u65f6\u53d1\u751f\u9519\u8bef,\u8bf7\u68c0\u67e5\u8fde\u63a5\u548c\u8868.
-ActionColumnsExist.Fields.Argument.Label=\u5217
-ActionColumnsExist.Log.TableExists=\u8868 [{0}] \u5b58\u5728.
-ActionColumnsExist.FilenameDelete.Tooltip=\u4ece\u8868\u683c\u4e2d\u5220\u9664\u9009\u4e2d\u7684\u9879
-ActionColumnsExist.Log.TableNotExists=\u8868 [{0}] \u4e0d\u5b58\u5728
-ActionColumnsExist.ConnectionError2.DialogMessage=\u4ece\u8868 [{0}] \u4e2d\u83b7\u53d6\u5217\u65f6\u53d1\u751f\u9519\u8bef\!
+ActionColumnsExist.FilenameDelete.Button=\u5220\u9664
+ActionColumnsExist.FilenameDelete.Tooltip=\u4ECE\u8868\u683C\u4E2D\u5220\u9664\u9009\u4E2D\u7684\u9879
+ActionColumnsExist.GetColums.Button=\u83B7\u5F97\u5217\u540D
+ActionColumnsExist.GetColums.Tooltip=\u4ECE\u6307\u5B9A\u7684\u8868\u91CC\u83B7\u5F97\u5217\u540D
+ActionColumnsExist.GetListColumsNoRow.DialogMessage=\u83B7\u5F97\u5217\u540D\u65F6\u53D1\u751F\u9519\u8BEF,\u8BF7\u68C0\u67E5\u8FDE\u63A5\u548C\u8868.
+ActionColumnsExist.Log.ColumnExists=\u5217 [{0}] \u5B58\u5728\u4E8E\u8868 [{1}] \u4E2D
+ActionColumnsExist.Log.ColumnNotExists=\u5217 [{0}] \u4E0D\u5B58\u5728\u4E8E\u8868[{1}] \u4E2D
+ActionColumnsExist.Log.TableExists=\u8868 [{0}] \u5B58\u5728.
+ActionColumnsExist.Log.TableNotExists=\u8868 [{0}] \u4E0D\u5B58\u5728
+ActionColumnsExist.Meta.UnableLoadXml=\u4E0D\u80FD\u4ECEXML\u6587\u4EF6\u4E2D\u52A0\u8F7D '\u5217\u5B58\u5728' Action
+ActionColumnsExist.Name=\u8868\u5B57\u6BB5\u5B58\u5728
+ActionColumnsExist.Name.Default=\u5217\u5B58\u5728
+ActionColumnsExist.Name.Label=Action \u540D\u79F0:
+ActionColumnsExist.Schemaname.Label=\u6A21\u5F0F\u540D\:
+ActionColumnsExist.Schemaname.Tooltip=\u6A21\u5F0F\u540D
+ActionColumnsExist.Tablename.Label=\u8868\u540D\:
+ActionColumnsExist.Title=\u68C0\u67E5\u5217\u662F\u5426\u5B58\u5728
+ActionColumnsExist.keyword=1111
diff --git a/plugins/actions/copyfiles/src/main/resources/org/apache/hop/workflow/actions/copyfiles/messages/messages_zh_CN.properties b/plugins/actions/copyfiles/src/main/resources/org/apache/hop/workflow/actions/copyfiles/messages/messages_zh_CN.properties
index 0c7d8cd..ca8093d 100644
--- a/plugins/actions/copyfiles/src/main/resources/org/apache/hop/workflow/actions/copyfiles/messages/messages_zh_CN.properties
+++ b/plugins/actions/copyfiles/src/main/resources/org/apache/hop/workflow/actions/copyfiles/messages/messages_zh_CN.properties
@@ -16,82 +16,85 @@
 # limitations under the License.
 #
 #
-#
+ActionCopyFiles.AddFileToResult.Label=\u589E\u52A0\u6587\u4EF6
+ActionCopyFiles.AddFileToResult.Tooltip=\u5C06\u6587\u4EF6\u6DFB\u52A0\u5230\u6587\u4EF6\u540D\u5217\u8868\u4E2D.\u5728\u4F7F\u7528\u53D1\u9001\u90AE\u4EF6 Action \u65F6,\u53EF\u4EE5\u7528\u6765\u7C98\u8D34\u591A\u4E2A\u6587\u4EF6\u4F5C\u4E3A\u9644\u4EF6
+ActionCopyFiles.BrowseFiles.Label=\u6587\u4EF6
+ActionCopyFiles.BrowseFolders.Label=\u76EE\u5F55...
+ActionCopyFiles.CopyEmptyFolders.Label=\u590D\u5236\u7A7A\u76EE\u5F55
+ActionCopyFiles.CopyEmptyFolders.Tooltip=\u53EA\u6709\u5728\u6CA1\u6709\u6307\u5B9A\u901A\u914D\u7B26\u4E14\u9009\u4E2D\u4E86 ''\u5305\u62EC\u5B50\u76EE\u5F55 ''\u9009\u9879\u65F6, \u590D\u5236\u7A7A\u76EE\u5F55\u9009\u9879\u624D\u8D77\u4F5C\u7528.\r\n
+ActionCopyFiles.CreateDestinationFolder.Label=\u521B\u5EFA\u76EE\u6807\u76EE\u5F55
+ActionCopyFiles.CreateDestinationFolder.Tooltip=\u5982\u679C\u5FC5\u8981\u521B\u5EFA\u76EE\u6807\u76EE\u5F55.\r\n\u5982\u679C\u76EE\u6807\u76EE\u5F55\u662F\u4E00\u4E2A\u6587\u4EF6,\u82E5\u5FC5\u8981\u5C06\u521B\u5EFA\u7236\u76EE\u5F55
 ActionCopyFiles.Description=Copy files
-ActionCopyFiles.Name=\u590d\u5236\u6587\u4ef6
-ActionCopyFiles.Log.ArgFromPrevious.Found=\u4ece\u4e0a\u4e00\u4e2a\u7ed3\u679c\u4e2d\u627e\u5230\u4e86  [{0}] \u4e2a \u53c2\u6570
-ActionCopyFiles.Tab.General.Label=\u4e00\u822c
-ActionCopyFiles.BrowseFiles.Label=\u6587\u4ef6
-ActionCopyFiles.Log.CausedBy=\u539f\u56e0\uff1a{0}
-ActionCopyFiles.Error.Exception.CopyProcessError=\u5c06\u6587\u4ef6  [{0}] \u590d\u5236\u5230  [{1}] \u65f6\u53d1\u751f\u9519\u8bef \:\u3000 [{2}]
-ActionCopyFiles.Error.Exception.CopyProcessFileSystemException=\u6587\u4ef6\u7cfb\u7edf\u5f02\u5e38\uff1a{0}
-ActionCopyFiles.Fields.Label=\u6587\u4ef6/\u76ee\u5f55
-ActionCopyFiles.Filetype.All=\u6240\u6709\u6587\u4ef6
-ActionCopyFiles.SourceFileFolder.Tooltip=\u8f93\u5165\u8981\u590d\u5236\u7684\u6587\u4ef6\u6216\u76ee\u5f55\r\n \u5982\u679c\u662f\u76ee\u5f55, \u53ea\u6709\u9009\u4e2d\u4e86''\u5305\u62ec\u5b50\u76ee\u5f55''\u9009\u9879, Apache Hop \u624d\u4f1a\u8bfb\u53d6\u6587\u4ef6
-ActionCopyFiles.Fields.Wildcard.Tooltip=\u6307\u5b9a\u8981\u5339\u914d\u7684\u901a\u914d\u7b26.\r\n \u53ea\u6709\u7b26\u5408\u901a\u914d\u7b26\u7684\u6587\u4ef6\u4f1a\u88ab\u590d\u5236
-ActionCopyFiles.DestinationFileFolder.Tooltip=\u8f93\u5165\u76ee\u6807\u76ee\u5f55.\u5982\u679c\u9009\u62e9\u4e86\u6587\u4ef6\u4f5c\u4e3a\u6e90,\u53ef\u4ee5\u6307\u5b9a\u4e00\u4e2a\u6587\u4ef6\u4f5c\u4e3a\u76ee\u6807.
-ActionCopyFiles.Error.DestinationFolderNotFound=\u76ee\u6807\u76ee\u5f55\u4e0d\u5b58\u5728\!
-ActionCopyFiles.Log.FileExistsInfos=\u6587\u4ef6\u5b58\u5728\!
-ActionCopyFiles.Log.FileOverwrite=\u6587\u4ef6[{0}] \u88ab\u8986\u76d6
-ActionCopyFiles.DestinationIsAFile.Tooltip=Apache Hop \u5c06\u628a\u8be5\u76ee\u6807\u4f5c\u4e3a\u4e00\u4e2a\u6587\u4ef6.
-ActionCopyFiles.Error.Exception.CopyProcess=\u4e0d\u80fd\u5c06\u6587\u4ef6/\u76ee\u5f55  [{0}] \u590d\u5236\u5230  [{1}]. \u5f02\u5e38\:  [{2}]
+ActionCopyFiles.DestinationFileFolder.Label=\u76EE\u6807\u6587\u4EF6/\u76EE\u5F55
+ActionCopyFiles.DestinationFileFolder.Tooltip=\u8F93\u5165\u76EE\u6807\u76EE\u5F55.\u5982\u679C\u9009\u62E9\u4E86\u6587\u4EF6\u4F5C\u4E3A\u6E90,\u53EF\u4EE5\u6307\u5B9A\u4E00\u4E2A\u6587\u4EF6\u4F5C\u4E3A\u76EE\u6807.
+ActionCopyFiles.DestinationIsAFile.Label=\u76EE\u6807\u662F\u6587\u4EF6
+ActionCopyFiles.DestinationIsAFile.Tooltip=Apache Hop \u5C06\u628A\u8BE5\u76EE\u6807\u4F5C\u4E3A\u4E00\u4E2A\u6587\u4EF6.
+ActionCopyFiles.Error.DestinationFolderNotFound=\u76EE\u6807\u76EE\u5F55\u4E0D\u5B58\u5728\!
+ActionCopyFiles.Error.Exception.CanRemoveFileFolder=\u4E0D\u80FD\u5220\u9664\u6587\u4EF6/\u76EE\u5F55  [{0}]
+ActionCopyFiles.Error.Exception.CopyProcess=\u4E0D\u80FD\u5C06\u6587\u4EF6/\u76EE\u5F55  [{0}] \u590D\u5236\u5230  [{1}]. \u5F02\u5E38\:  [{2}]
+ActionCopyFiles.Error.Exception.CopyProcessError=\u5C06\u6587\u4EF6  [{0}] \u590D\u5236\u5230  [{1}] \u65F6\u53D1\u751F\u9519\u8BEF \:\u3000 [{2}]
+ActionCopyFiles.Error.Exception.CopyProcessFileSystemException=\u6587\u4EF6\u7CFB\u7EDF\u5F02\u5E38\uFF1A{0}
+ActionCopyFiles.Error.Exception.UnableLoadXML=\u4E0D\u80FD\u4ECEXML\u6587\u4EF6\u4E2D\u52A0\u8F7D "\u590D\u5236\u6587\u4EF6" Action \u9879
+ActionCopyFiles.Error.SourceFileNotExists=\u6587\u4EF6/\u76EE\u5F55 [{0}] \u4E0D\u5B58\u5728\!
+ActionCopyFiles.Fields.DestinationEnvironment.Label=\u76EE\u6807\u73AF\u5883
+ActionCopyFiles.Fields.DestinationFileFolder.Label=\u76EE\u6807\u6587\u4EF6/\u76EE\u5F55
+ActionCopyFiles.Fields.DestinationFileFolder.Tooltip=\u8F93\u5165\u76EE\u6807\u76EE\u5F55.\u5982\u679C\u9009\u62E9\u4E86\u6587\u4EF6\u4F5C\u4E3A\u6E90,\u53EF\u4EE5\u6307\u5B9A\u4E00\u4E2A\u6587\u4EF6\u4F5C\u4E3A\u76EE\u6807.
+ActionCopyFiles.Fields.Label=\u6587\u4EF6/\u76EE\u5F55
+ActionCopyFiles.Fields.SourceEnvironment.Label=\u6E90\u73AF\u5883
+ActionCopyFiles.Fields.SourceFileFolder.Label=\u6E90\u6587\u4EF6/\u76EE\u5F55
+ActionCopyFiles.Fields.SourceFileFolder.Tooltip=\u8F93\u5165\u8981\u590D\u5236\u7684\u6587\u4EF6\u6216\u76EE\u5F55\r\n \u5982\u679C\u662F\u76EE\u5F55, \u5F53\u9009\u4E2D "\u5305\u62EC\u5B50\u76EE\u5F55" \u9009\u9879\u65F6, Apache Hop \u4F1A\u9884\u53D6\u6570\u636E. 
+ActionCopyFiles.Fields.Wildcard.Label=\u901A\u914D\u7B26
+ActionCopyFiles.Fields.Wildcard.Tooltip=\u6307\u5B9A\u8981\u5339\u914D\u7684\u901A\u914D\u7B26.\r\n \u53EA\u6709\u7B26\u5408\u901A\u914D\u7B26\u7684\u6587\u4EF6\u4F1A\u88AB\u590D\u5236
+ActionCopyFiles.FileResult.Group.Label=\u7ED3\u679C\u6587\u4EF6\u540D
+ActionCopyFiles.FilenameAdd.Button=\u589E\u52A0(&A)
 ActionCopyFiles.FilenameDelete.Button=\u5220\u9664(&D)
-ActionCopyFiles.Log.FolderCopied=\u76ee\u5f55 [{0}] \u88ab\u590d\u5236\u5230 [{1}]
-ActionCopyFiles.Fields.DestinationFileFolder.Label=\u76ee\u6807\u6587\u4ef6/\u76ee\u5f55
-ActionCopyFiles.Log.FileCopied=\u6587\u4ef6 [{0}] \u88ab\u590d\u5236\u5230 [{1}] 
-ActionCopyFiles.FilenameAdd.Button=\u589e\u52a0(&A)
-ActionCopyFiles.Title=\u590d\u5236\u6587\u4ef6
-ActionCopyFiles.Log.FetchFolder=\u6b63\u5728\u83b7\u53d6\: [{0}]
-ActionCopyFiles.Error.SourceFileNotExists=\u6587\u4ef6/\u76ee\u5f55 [{0}] \u4e0d\u5b58\u5728\!
-ActionCopyFiles.FilenameEdit.Button=\u7f16\u8f91(&E)
-ActionCopyFiles.Log.FolderExistsInfos=\u76ee\u5f55\u5b58\u5728\!
-ActionCopyFiles.RemoveSourceFiles.Tooltip=\u590d\u5236\u5b8c\u6210\u540e\u79fb\u9664\u6e90\u6587\u4ef6\r\n\u53ea\u79fb\u9664\u6587\u4ef6
-ActionCopyFiles.CreateDestinationFolder.Label=\u521b\u5efa\u76ee\u6807\u76ee\u5f55
-ActionCopyFiles.Log.ProcessingRow=\u6b63\u5728\u5904\u7406\u884c, \u6e90\u6587\u4ef6/\u76ee\u5f55\: [{0}] ... \u76ee\u6807\u6587\u4ef6/\u76ee\u5f55 \: [{1}]... \u901a\u914d\u7b26 \: [{2}]
-ActionCopyFiles.Log.FileOverwriteInfos=\u6587\u4ef6
-ActionCopyFiles.Log.FileFolderRemoved=\u6587\u4ef6/\u76ee\u5f55 [{0}] \u88ab\u5220\u9664
-ActionCopyFiles.Log.CanNotCopyFolderToFile=\u4e0d\u80fd\u590d\u5236\u76ee\u5f55  [{0}] \u5230\u6587\u4ef6 [{1}]
-ActionCopyFiles.IncludeSubfolders.Label=\u5305\u62ec\u5b50\u76ee\u5f55
-ActionCopyFiles.Log.Forbidden=\u7981\u6b62
-ActionCopyFiles.AddFileToResult.Label=\u589e\u52a0\u6587\u4ef6
-ActionCopyFiles.FilenameEdit.Tooltip=\u7f16\u8f91\u9009\u4e2d\u7684\u6587\u4ef6
-ActionCopyFiles.Log.Starting=\u5f00\u59cb...
-ActionCopyFiles.Log.FolderOverwriteInfos=\u76ee\u5f55
-ActionCopyFiles.CopyEmptyFolders.Label=\u590d\u5236\u7a7a\u76ee\u5f55
-ActionCopyFiles.DestinationIsAFile.Label=\u76ee\u6807\u662f\u6587\u4ef6
-ActionCopyFiles.RemoveSourceFiles.Label=\u79fb\u9664\u6e90\u6587\u4ef6
-ActionCopyFiles.Fields.Wildcard.Label=\u901a\u914d\u7b26
-ActionCopyFiles.OverwriteFiles.Tooltip=\u5f53\u76ee\u6807\u6587\u4ef6\u5b58\u5728,\u5982\u679c\u8981\u66ff\u6362\u5df2\u5b58\u5728\u7684\u6587\u4ef6\u9009\u4e2d\u8be5\u9009\u9879.\u5426\u5219\u4e0d\u66ff\u6362
-ActionCopyFiles.Log.FileAddedToResultFilesName=\u6587\u4ef6 [{0}] \u5df2\u7ecf\u88ab\u6dfb\u52a0\u5230\u7ed3\u679c\u6587\u4ef6\u4e2d.
-ActionCopyFiles.Log.FileCopiedInfos=\u590d\u5236\u7684\u6587\u4ef6
-ActionCopyFiles.Error.Exception.CanRemoveFileFolder=\u4e0d\u80fd\u5220\u9664\u6587\u4ef6/\u76ee\u5f55  [{0}]
-ActionCopyFiles.CopyEmptyFolders.Tooltip=\u53ea\u6709\u5728\u6ca1\u6709\u6307\u5b9a\u901a\u914d\u7b26\u4e14\u9009\u4e2d\u4e86 ''\u5305\u62ec\u5b50\u76ee\u5f55 ''\u9009\u9879\u65f6, \u590d\u5236\u7a7a\u76ee\u5f55\u9009\u9879\u624d\u8d77\u4f5c\u7528.\r\n
-ActionCopyFiles.FileResult.Group.Label=\u7ed3\u679c\u6587\u4ef6\u540d
-ActionCopyFiles.Log.Error=\u9519\u8bef
-ActionCopyFiles.FilenameDelete.Tooltip=\u79fb\u53bb\u9009\u4e2d\u7684\u6587\u4ef6
-ActionCopyFiles.OverwriteFiles.Label=\u66ff\u6362\u5df2\u7ecf\u5b58\u5728\u7684\u6587\u4ef6
-ActionCopyFiles.Log.FolderOverwrite=\u76ee\u5f55 [{0}] \u88ab\u8986\u76d6
-ActionCopyFiles.CreateDestinationFolder.Tooltip=\u5982\u679c\u5fc5\u8981\u521b\u5efa\u76ee\u6807\u76ee\u5f55.\r\n\u5982\u679c\u76ee\u6807\u76ee\u5f55\u662f\u4e00\u4e2a\u6587\u4ef6,\u82e5\u5fc5\u8981\u5c06\u521b\u5efa\u7236\u76ee\u5f55
-ActionCopyFiles.Wildcard.Tooltip=\u6307\u5b9a\u8981\u5339\u914d\u7684\u901a\u914d\u7b26\r\n \u53ea\u590d\u5236\u5339\u914d\u7684\u6587\u4ef6
-ActionCopyFiles.Fields.DestinationFileFolder.Tooltip=\u8f93\u5165\u76ee\u6807\u76ee\u5f55.\u5982\u679c\u9009\u62e9\u4e86\u6587\u4ef6\u4f5c\u4e3a\u6e90,\u53ef\u4ee5\u6307\u5b9a\u4e00\u4e2a\u6587\u4ef6\u4f5c\u4e3a\u76ee\u6807.
-ActionCopyFiles.Previous.Tooltip=\u9009\u4e2d\u8be5\u9009\u9879,\u53ef\u4ee5\u5c06\u4e0a\u4e00\u4e2a\u4f5c\u4e1a\u9879\u7684\u7ed3\u679c\u4f5c\u4e3a\u672c\u4f5c\u4e1a\u9879\u7684\u53c2\u6570.\u8981\u6ce8\u610f\u53c2\u6570\u7684\u987a\u5e8f.\r\n\u4f8b\u5982\: (1) \u6e90\u76ee\u5f55/\u6587\u4ef6, (2) \u76ee\u6807\u76ee\u5f55/\u6587\u4ef6, (3) \u901a\u914d\u7b26
-ActionCopyFiles.Settings.Label=\u8bbe\u7f6e
-ActionCopyFiles.Log.FolderCopiedInfos=\u590d\u5236\u7684\u76ee\u5f55
-ActionCopyFiles.Name.Label=\u4f5c\u4e1a\u540d\u79f0\:
-ActionCopyFiles.Error.Exception.UnableLoadXML=\u4e0d\u80fd\u4eceXML\u6587\u4ef6\u4e2d\u52a0\u8f7d''\u590d\u5236\u6587\u4ef6''\u4f5c\u4e1a\u9879
-ActionCopyFiles.Name.Default=\u590d\u5236\u6587\u4ef6
-ActionCopyFiles.Log.FolderExists=\u76ee\u5f55 [{0}] \u5b58\u5728\!
-ActionCopyFiles.Previous.Label=\u590d\u5236\u4e0a\u4e00\u4e2a\u4f5c\u4e1a\u7ed3\u679c\u4f5c\u4e3a\u53c2\u6570
-ActionCopyFiles.Log.FileExists=\u6587\u4ef6 [{0}] \u5b58\u5728\!
-ActionCopyFiles.Tab.AddResultFilesName.Label=\u7ed3\u679c\u6587\u4ef6
-ActionCopyFiles.Fields.SourceFileFolder.Tooltip=\u8f93\u5165\u8981\u590d\u5236\u7684\u6587\u4ef6\u6216\u76ee\u5f55\r\n \u5982\u679c\u662f\u76ee\u5f55, \u5f53\u9009\u4e2d''\u5305\u62ec\u5b50\u76ee\u5f55''\u9009\u9879\u65f6, Apache Hop \u4f1a\u9884\u53d6\u6570\u636e. 
-ActionCopyFiles.Log.IgnoringRow=\u5ffd\u7565\u4e86\u6e90\u6216\u76ee\u6807\u662f\u7a7a\u7684\u884c,\u6e90\u6587\u4ef6/\u76ee\u5f55\: [{0}], \u76ee\u6807\u6587\u4ef6/\u76ee\u5f55\: [{1}], \u901a\u914d\u7b26\: [{2}]
-ActionCopyFiles.DestinationFileFolder.Label=\u76ee\u6807\u6587\u4ef6/\u76ee\u5f55
-ActionCopyFiles.Log.FileFolderRemovedInfos=\u5220\u9664\u6587\u4ef6/\u76ee\u5f55
-ActionCopyFiles.BrowseFolders.Label=\u76ee\u5f55...
-ActionCopyFiles.Log.ResultFilesName=\u7ed3\u679c\u6587\u4ef6\u540d
-ActionCopyFiles.IncludeSubfolders.Tooltip=\u9009\u4e2d\u8be5\u9009\u9879\u4ee5\u83b7\u53d6\u5b50\u76ee\u5f55,\u53ea\u6709\u5f53\u590d\u5236\u6e90\u662f\u76ee\u5f55\u65f6\u8be5\u9009\u9879\u624d\u6709\u6548.
-ActionCopyFiles.SourceFileFolder.Label=\u6e90\u6587\u4ef6/\u76ee\u5f55
-ActionCopyFiles.Wildcard.Label=\u901a\u914d\u7b26
-ActionCopyFiles.AddFileToResult.Tooltip=\u5c06\u6587\u4ef6\u6dfb\u52a0\u5230\u6587\u4ef6\u540d\u5217\u8868\u4e2d.\u5728\u4f7f\u7528\u53d1\u9001\u90ae\u4ef6\u4f5c\u4e1a\u65f6,\u53ef\u4ee5\u7528\u6765\u7c98\u8d34\u591a\u4e2a\u6587\u4ef6\u4f5c\u4e3a\u9644\u4ef6
-ActionCopyFiles.Fields.SourceFileFolder.Label=\u6e90\u6587\u4ef6/\u76ee\u5f55
+ActionCopyFiles.FilenameDelete.Tooltip=\u79FB\u53BB\u9009\u4E2D\u7684\u6587\u4EF6
+ActionCopyFiles.FilenameEdit.Button=\u7F16\u8F91(&E)
+ActionCopyFiles.FilenameEdit.Tooltip=\u7F16\u8F91\u9009\u4E2D\u7684\u6587\u4EF6
+ActionCopyFiles.Filetype.All=\u6240\u6709\u6587\u4EF6
+ActionCopyFiles.IncludeSubfolders.Label=\u5305\u62EC\u5B50\u76EE\u5F55
+ActionCopyFiles.IncludeSubfolders.Tooltip=\u9009\u4E2D\u8BE5\u9009\u9879\u4EE5\u83B7\u53D6\u5B50\u76EE\u5F55,\u53EA\u6709\u5F53\u590D\u5236\u6E90\u662F\u76EE\u5F55\u65F6\u8BE5\u9009\u9879\u624D\u6709\u6548.
+ActionCopyFiles.Log.ArgFromPrevious.Found=\u4ECE\u4E0A\u4E00\u4E2A\u7ED3\u679C\u4E2D\u627E\u5230\u4E86  [{0}] \u4E2A \u53C2\u6570
+ActionCopyFiles.Log.CanNotCopyFolderToFile=\u4E0D\u80FD\u590D\u5236\u76EE\u5F55  [{0}] \u5230\u6587\u4EF6 [{1}]
+ActionCopyFiles.Log.CausedBy=\u539F\u56E0\uFF1A{0}
+ActionCopyFiles.Log.Error=\u9519\u8BEF
+ActionCopyFiles.Log.FetchFolder=\u6B63\u5728\u83B7\u53D6\: [{0}]
+ActionCopyFiles.Log.FileAddedToResultFilesName=\u6587\u4EF6 [{0}] \u5DF2\u7ECF\u88AB\u6DFB\u52A0\u5230\u7ED3\u679C\u6587\u4EF6\u4E2D.
+ActionCopyFiles.Log.FileCopied=\u6587\u4EF6 [{0}] \u88AB\u590D\u5236\u5230 [{1}] 
+ActionCopyFiles.Log.FileCopiedInfos=\u590D\u5236\u7684\u6587\u4EF6
+ActionCopyFiles.Log.FileExists=\u6587\u4EF6 [{0}] \u5B58\u5728\!
+ActionCopyFiles.Log.FileExistsInfos=\u6587\u4EF6\u5B58\u5728\!
+ActionCopyFiles.Log.FileFolderRemoved=\u6587\u4EF6/\u76EE\u5F55 [{0}] \u88AB\u5220\u9664
+ActionCopyFiles.Log.FileFolderRemovedInfos=\u5220\u9664\u6587\u4EF6/\u76EE\u5F55
+ActionCopyFiles.Log.FileOverwrite=\u6587\u4EF6[{0}] \u88AB\u8986\u76D6
+ActionCopyFiles.Log.FileOverwriteInfos=\u6587\u4EF6
+ActionCopyFiles.Log.FolderCopied=\u76EE\u5F55 [{0}] \u88AB\u590D\u5236\u5230 [{1}]
+ActionCopyFiles.Log.FolderCopiedInfos=\u590D\u5236\u7684\u76EE\u5F55
+ActionCopyFiles.Log.FolderExists=\u76EE\u5F55 [{0}] \u5B58\u5728\!
+ActionCopyFiles.Log.FolderExistsInfos=\u76EE\u5F55\u5B58\u5728\!
+ActionCopyFiles.Log.FolderOverwrite=\u76EE\u5F55 [{0}] \u88AB\u8986\u76D6
+ActionCopyFiles.Log.FolderOverwriteInfos=\u76EE\u5F55
+ActionCopyFiles.Log.Forbidden=\u7981\u6B62
+ActionCopyFiles.Log.IgnoringRow=\u5FFD\u7565\u4E86\u6E90\u6216\u76EE\u6807\u662F\u7A7A\u7684\u884C,\u6E90\u6587\u4EF6/\u76EE\u5F55\: [{0}], \u76EE\u6807\u6587\u4EF6/\u76EE\u5F55\: [{1}], \u901A\u914D\u7B26\: [{2}]
+ActionCopyFiles.Log.ProcessingRow=\u6B63\u5728\u5904\u7406\u884C, \u6E90\u6587\u4EF6/\u76EE\u5F55\: [{0}] ... \u76EE\u6807\u6587\u4EF6/\u76EE\u5F55 \: [{1}]... \u901A\u914D\u7B26 \: [{2}]
+ActionCopyFiles.Log.ResultFilesName=\u7ED3\u679C\u6587\u4EF6\u540D
+ActionCopyFiles.Log.Starting=\u5F00\u59CB...
+ActionCopyFiles.Name=\u590D\u5236\u6587\u4EF6
+ActionCopyFiles.Name.Default=\u590D\u5236\u6587\u4EF6
+ActionCopyFiles.Name.Label=Action \u540D\u79F0\:
+ActionCopyFiles.OverwriteFiles.Label=\u66FF\u6362\u5DF2\u7ECF\u5B58\u5728\u7684\u6587\u4EF6
+ActionCopyFiles.OverwriteFiles.Tooltip=\u5F53\u76EE\u6807\u6587\u4EF6\u5B58\u5728,\u5982\u679C\u8981\u66FF\u6362\u5DF2\u5B58\u5728\u7684\u6587\u4EF6\u9009\u4E2D\u8BE5\u9009\u9879.\u5426\u5219\u4E0D\u66FF\u6362
+ActionCopyFiles.Previous.Label=\u590D\u5236\u4E0A\u4E00\u4E2A Action \u7ED3\u679C\u4F5C\u4E3A\u53C2\u6570
+ActionCopyFiles.Previous.Tooltip=\u9009\u4E2D\u8BE5\u9009\u9879,\u53EF\u4EE5\u5C06\u4E0A\u4E00\u4E2A Action \u9879\u7684\u7ED3\u679C\u4F5C\u4E3A\u672C Action \u9879\u7684\u53C2\u6570.\u8981\u6CE8\u610F\u53C2\u6570\u7684\u987A\u5E8F.\r\n\u4F8B\u5982\: (1) \u6E90\u76EE\u5F55/\u6587\u4EF6, (2) \u76EE\u6807\u76EE\u5F55/\u6587\u4EF6, (3) \u901A\u914D\u7B26
+ActionCopyFiles.RemoveSourceFiles.Label=\u79FB\u9664\u6E90\u6587\u4EF6
+ActionCopyFiles.RemoveSourceFiles.Tooltip=\u590D\u5236\u5B8C\u6210\u540E\u79FB\u9664\u6E90\u6587\u4EF6\r\n\u53EA\u79FB\u9664\u6587\u4EF6
+ActionCopyFiles.Settings.Label=\u8BBE\u7F6E
+ActionCopyFiles.SourceFileFolder.Label=\u6E90\u6587\u4EF6/\u76EE\u5F55
+ActionCopyFiles.SourceFileFolder.Tooltip=\u8F93\u5165\u8981\u590D\u5236\u7684\u6587\u4EF6\u6216\u76EE\u5F55\r\n \u5982\u679C\u662F\u76EE\u5F55, \u53EA\u6709\u9009\u4E2D\u4E86 "\u5305\u62EC\u5B50\u76EE\u5F55" \u9009\u9879, Apache Hop \u624D\u4F1A\u8BFB\u53D6\u6587\u4EF6
+ActionCopyFiles.Tab.AddResultFilesName.Label=\u7ED3\u679C\u6587\u4EF6
+ActionCopyFiles.Tab.Files.Label=\u6587\u4EF6
+ActionCopyFiles.Tab.General.Label=\u4E00\u822C
+ActionCopyFiles.Title=\u590D\u5236\u6587\u4EF6
+ActionCopyFiles.Wildcard.Label=\u901A\u914D\u7B26
+ActionCopyFiles.Wildcard.Tooltip=\u6307\u5B9A\u8981\u5339\u914D\u7684\u901A\u914D\u7B26\r\n \u53EA\u590D\u5236\u5339\u914D\u7684\u6587\u4EF6
+ActionCopyFiles.keyword=copy,files
diff --git a/plugins/actions/copymoveresultfilenames/src/main/resources/org/apache/hop/workflow/actions/copymoveresultfilenames/messages/messages_zh_CN.properties b/plugins/actions/copymoveresultfilenames/src/main/resources/org/apache/hop/workflow/actions/copymoveresultfilenames/messages/messages_zh_CN.properties
index bbad259..49d90bc 100644
--- a/plugins/actions/copymoveresultfilenames/src/main/resources/org/apache/hop/workflow/actions/copymoveresultfilenames/messages/messages_zh_CN.properties
+++ b/plugins/actions/copymoveresultfilenames/src/main/resources/org/apache/hop/workflow/actions/copymoveresultfilenames/messages/messages_zh_CN.properties
@@ -16,54 +16,62 @@
 # limitations under the License.
 #
 #
-#
-ActionCopyMoveResultFilenames.Description=Copy, move or delete result filenames
-ActionCopyMoveResultFilenames.Name=\u590d\u5236/\u79fb\u52a8\u7ed3\u679c\u6587\u4ef6
-ActionCopyMoveResultFilenames.AddedFileToResult=\u6587\u4ef6\u540d[{0}]\u88ab\u6dfb\u52a0\u5230\u7ed3\u679c\u6587\u4ef6\u540d
-ActionCopyMoveResultFilenames.SuccessCondition.Label=\u6210\u529f\u6761\u4ef6
-ActionCopyMoveResultFilenames.WildcardExclude.Label=\u6392\u9664\u901a\u914d\u7b26\uff08\u6b63\u5219\u8868\u8fbe\u5f0f\uff09
-ActionCopyMoveResultFilenames.AddDestinationFilename.Label=\u6dfb\u52a0\u76ee\u6807\u6587\u4ef6\u540d\u5230\u7ed3\u679c
-ActionCopyMoveResultFilenames.Error=\u9519\u8bef\uff1a{0}
-ActionCopyMoveResultFilenames.AddDate.Tooltip=\u6dfb\u52a0\u65e5\u671f\u5230\u6587\u4ef6\u540d
-ActionCopyMoveResultFilenames.CanNotLoadFromXML=\u65e0\u6cd5\u4eceXML\u8282\u70b9\u4e2d\u52a0\u8f7d\u2018\u590d\u5236\u79fb\u52a8\u7ed3\u679c\u6587\u4ef6\u540d\u2019\u4f5c\u4e1a\u9879
+ActionCopyMoveResultFilenames.Action.Label=\u52A8\u4F5C
+ActionCopyMoveResultFilenames.AddDate.Label=\u6DFB\u52A0\u65E5\u671F\u5230\u6587\u4EF6\u540D
+ActionCopyMoveResultFilenames.AddDate.Tooltip=\u6DFB\u52A0\u65E5\u671F\u5230\u6587\u4EF6\u540D
+ActionCopyMoveResultFilenames.AddDateBeforeExtension.Label=\u5728\u6269\u5C55\u540D\u524D\u6DFB\u52A0\u65E5\u671F
+ActionCopyMoveResultFilenames.AddDateBeforeExtension.Tooltip=\u5982\u679C\u9009\u4E2D\u6B64\u9879, PDI\u5C06\u5728\u6587\u4EF6\u6269\u5C55\u540D (\u6700\u540E\u4E00\u4E2A".")\u524D\u6DFB\u52A0\u65E5\u671F\u548C\u65F6\u95F4
+ActionCopyMoveResultFilenames.AddDestinationFilename.Label=\u6DFB\u52A0\u76EE\u6807\u6587\u4EF6\u540D\u5230\u7ED3\u679C
+ActionCopyMoveResultFilenames.AddDestinationFilename.Tooltip=\u5728\u590D\u5236/\u79FB\u52A8\u7ED3\u675F\u540E\u628A\u76EE\u6807\u6587\u4EF6\u540D\u6DFB\u52A0\u5230\u7ED3\u679C\u6587\u4EF6\u540D
+ActionCopyMoveResultFilenames.AddTime.Label=\u6DFB\u52A0\u65F6\u95F4\u5230\u6587\u4EF6\u540D
+ActionCopyMoveResultFilenames.AddTime.Tooltip=\u6DFB\u52A0\u65F6\u95F4\u5230\u6587\u4EF6\u540D
+ActionCopyMoveResultFilenames.AddedFileToResult=\u6587\u4EF6\u540D[{0}]\u88AB\u6DFB\u52A0\u5230\u7ED3\u679C\u6587\u4EF6\u540D
+ActionCopyMoveResultFilenames.CanNotDeletedFile=\u65E0\u6CD5\u5220\u9664\u6587\u4EF6[{0}]!
+ActionCopyMoveResultFilenames.CanNotLoadFromXML=\u65E0\u6CD5\u4ECEXML\u8282\u70B9\u4E2D\u52A0\u8F7D\u2018\u590D\u5236\u79FB\u52A8\u7ED3\u679C\u6587\u4EF6\u540D\u2019 Action \u9879
+ActionCopyMoveResultFilenames.Copy.Label=\u590D\u5236
+ActionCopyMoveResultFilenames.CreateDestinationFolder.Label=\u521B\u5EFA\u76EE\u6807\u6587\u4EF6\u5939
+ActionCopyMoveResultFilenames.CreateDestinationFolder.Tooltip=\u5982\u679C\u9700\u8981, \u521B\u5EFA\u76EE\u6807\u6587\u4EF6\u5939
+ActionCopyMoveResultFilenames.DateTimeFormat.Label=\u65E5\u671F\u65F6\u95F4\u683C\u5F0F
 ActionCopyMoveResultFilenames.Delete.Label=\u5220\u9664
-ActionCopyMoveResultFilenames.Title=\u590d\u5236/\u79fb\u52a8\u7ed3\u679c\u6587\u4ef6
-ActionCopyMoveResultFilenames.AddDestinationFilename.Tooltip=\u5728\u590d\u5236/\u79fb\u52a8\u7ed3\u675f\u540e\u628a\u76ee\u6807\u6587\u4ef6\u540d\u6dfb\u52a0\u5230\u7ed3\u679c\u6587\u4ef6\u540d
-ActionCopyMoveResultFilenames.SpecifyFormat.Tooltip=\u6307\u5b9a\u65e5\u671f\u65f6\u95f4\u683c\u5f0f
-ActionCopyMoveResultFilenames.Log.CanNotCreatedFolder=\u65e0\u6cd5\u521b\u5efa\u6587\u4ef6\u5939[{0}]. \u5f02\u5e38\uff1a{1}
-ActionCopyMoveResultFilenames.CanNotDeletedFile=\u65e0\u6cd5\u5220\u9664\u6587\u4ef6[{0}]\uff01
-ActionCopyMoveResultFilenames.Copy.Label=\u590d\u5236
-ActionCopyMoveResultFilenames.AddDate.Label=\u6dfb\u52a0\u65e5\u671f\u5230\u6587\u4ef6\u540d
-ActionCopyMoveResultFilenames.Foldername.Label=\u76ee\u6807\u6587\u4ef6\u5939
-ActionCopyMoveResultFilenames.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0\uff1a
-ActionCopyMoveResultFilenames.NrErrorsLessThan.Label=\u6570\u503c
-ActionCopyMoveResultFilenames.RemovedFileFromResult=\u4ece\u7ed3\u679c\u6587\u4ef6\u540d\u4e2d\u79fb\u9664\u6587\u4ef6\u540d[{0}]
-ActionCopyMoveResultFilenames.SuccessWhenAllWorksFine.Label=\u5f53\u6ca1\u6709\u9519\u8bef\u53d1\u751f\u65f6
-ActionCopyMoveResultFilenames.Wildcard.Label=\u901a\u914d\u7b26\uff08\u6b63\u5219\u8868\u8fbe\u5f0f\uff09
-ActionCopyMoveResultFilenames.AddDateBeforeExtension.Tooltip=\u5982\u679c\u9009\u4e2d\u6b64\u9879\uff0cPDI\u5c06\u5728\u6587\u4ef6\u6269\u5c55\u540d\uff08\u6700\u540e\u4e00\u4e2a"."\uff09\u524d\u6dfb\u52a0\u65e5\u671f\u548c\u65f6\u95f4
-ActionCopyMoveResultFilenames.RemovedSourceFilename.Label=\u4ece\u7ed3\u679c\u4e2d\u79fb\u9664\u6e90\u6587\u4ef6\u540d
-ActionCopyMoveResultFilenames.SpecifyFormat.Label=\u6307\u5b9a\u65e5\u671f\u65f6\u95f4\u683c\u5f0f
-ActionCopyMoveResultFilenames.SuccessWhenErrorsLessThan.Label=\u5f53\u9519\u8bef\u6570\u5c11\u4e8e
-ActionCopyMoveResultFilenames.AddTime.Label=\u6dfb\u52a0\u65f6\u95f4\u5230\u6587\u4ef6\u540d
-ActionCopyMoveResultFilenames.CreateDestinationFolder.Tooltip=\u5982\u679c\u9700\u8981\uff0c\u521b\u5efa\u76ee\u6807\u6587\u4ef6\u5939
-ActionCopyMoveResultFilenames.log.CopiedFile={0} \u88ab\u590d\u5236\u5230 {1}
+ActionCopyMoveResultFilenames.Description=Copy, move or delete result filenames
+ActionCopyMoveResultFilenames.Error=\u9519\u8BEF\uFF1A{0}
+ActionCopyMoveResultFilenames.Error.SuccessConditionbroken=\u5931\u8D25! \u6709{0}\u4E2A\u9519\u8BEF
+ActionCopyMoveResultFilenames.Foldername.Label=\u76EE\u6807\u6587\u4EF6\u5939
 ActionCopyMoveResultFilenames.Group.LimitTo.Label=\u9650\u5236
-ActionCopyMoveResultFilenames.Action.Label=\u52a8\u4f5c
-ActionCopyMoveResultFilenames.OverwriteFile.Tooltip=\u5f53\u9009\u4e2d\u6b64\u9009\u9879\u65f6\uff0cPDI\u4f1a\u66ff\u6362\u5df2\u5b58\u5728\u7684\u6587\u4ef6\uff0c\u5426\u5219PDI\u4f1a\u5ffd\u7565
-ActionCopyMoveResultFilenames.SuccessWhenAtLeat.Label=\u5f53\u5df2\u5904\u7406\u7684\u6587\u4ef6\u6570\u5927\u4e8e
-ActionCopyMoveResultFilenames.log.ErrorCanNotFindFile=\u627e\u4e0d\u5230\u6587\u4ef6[{0}]
-ActionCopyMoveResultFilenames.Error.SuccessConditionbroken=\u5931\u8d25\uff01\u6709{0}\u4e2a\u9519\u8bef
-ActionCopyMoveResultFilenames.AddDateBeforeExtension.Label=\u5728\u6269\u5c55\u540d\u524d\u6dfb\u52a0\u65e5\u671f
-ActionCopyMoveResultFilenames.AddTime.Tooltip=\u6dfb\u52a0\u65f6\u95f4\u5230\u6587\u4ef6\u540d
-ActionCopyMoveResultFilenames.Wildcard.Tooltip=\u901a\u914d\u7b26
-ActionCopyMoveResultFilenames.WildcardExclude.Tooltip=\u4e0d\u7b26\u5408\u6761\u4ef6\u7684\u6587\u4ef6\u7684\u901a\u914d\u7b26
-ActionCopyMoveResultFilenames.SuccessOn.Group.Label=\u6210\u529f\u6761\u4ef6
-ActionCopyMoveResultFilenames.OverwriteFile.Label=\u66ff\u6362\u5df2\u7ecf\u5b58\u5728\u7684\u6587\u4ef6
-ActionCopyMoveResultFilenames.NrErrorsLessThan.Tooltip=\u5f53\u9519\u8bef\u6570\u5c11\u4e8e
-ActionCopyMoveResultFilenames.CreateDestinationFolder.Label=\u521b\u5efa\u76ee\u6807\u6587\u4ef6\u5939
-ActionCopyMoveResultFilenames.RemovedSourceFilename.Tooltip=\u590d\u5236/\u79fb\u52a8\u7ed3\u675f\u540e\u4ece\u7ed3\u679c\u6587\u4ef6\u540d\u4e2d\u79fb\u9664\u6e90\u6587\u4ef6\u540d
-ActionCopyMoveResultFilenames.SpecifyWildcard.Label=\u52a8\u4f5c\u8303\u56f4
-ActionCopyMoveResultFilenames.Move.Label=\u79fb\u52a8
-ActionCopyMoveResultFilenames.log.DeletedFile=\u6587\u4ef6[{0}]\u88ab\u5220\u9664
-ActionDeleteResultFilenames.Name.Default=\u590d\u5236\u79fb\u52a8\u7ed3\u679c\u6587\u4ef6\u540d
-ActionCopyMoveResultFilenames.DateTimeFormat.Label=\u65e5\u671f\u65f6\u95f4\u683c\u5f0f
+ActionCopyMoveResultFilenames.Log.CanNotCreatedFolder=\u65E0\u6CD5\u521B\u5EFA\u6587\u4EF6\u5939[{0}]. \u5F02\u5E38\uFF1A{1}
+ActionCopyMoveResultFilenames.Log.ErrorProcessing=\u5904\u7406\u6587\u4EF6\u65F6\u51FA\u9519, \u5F02\u5E38\: {0}
+ActionCopyMoveResultFilenames.Log.FileExists=\u6587\u4EF6 [{0}] \u5B58\u5728\!
+ActionCopyMoveResultFilenames.Log.FolderCreated=\u76EE\u5F55 [{0}] \u521B\u5EFA\u6210\u529F.
+ActionCopyMoveResultFilenames.Log.FolderExists=\u76EE\u5F55 [{0}] \u5B58\u5728.
+ActionCopyMoveResultFilenames.Log.FolderNotExists=\u65E0\u6CD5\u627E\u5230\u76EE\u5F55 [{0}]\!
+ActionCopyMoveResultFilenames.Move.Label=\u79FB\u52A8
+ActionCopyMoveResultFilenames.Name=\u590D\u5236/\u79FB\u52A8\u7ED3\u679C\u6587\u4EF6
+ActionCopyMoveResultFilenames.Name.Label=Action \u540D\u79F0\:
+ActionCopyMoveResultFilenames.NrErrorsLessThan.Label=\u6570\u503C
+ActionCopyMoveResultFilenames.NrErrorsLessThan.Tooltip=\u5F53\u9519\u8BEF\u6570\u5C11\u4E8E
+ActionCopyMoveResultFilenames.OverwriteFile.Label=\u66FF\u6362\u5DF2\u7ECF\u5B58\u5728\u7684\u6587\u4EF6
+ActionCopyMoveResultFilenames.OverwriteFile.Tooltip=\u5F53\u9009\u4E2D\u6B64\u9009\u9879\u65F6, PDI\u4F1A\u66FF\u6362\u5DF2\u5B58\u5728\u7684\u6587\u4EF6, \u5426\u5219PDI\u4F1A\u5FFD\u7565
+ActionCopyMoveResultFilenames.RemovedFileFromResult=\u4ECE\u7ED3\u679C\u6587\u4EF6\u540D\u4E2D\u79FB\u9664\u6587\u4EF6\u540D[{0}]
+ActionCopyMoveResultFilenames.RemovedSourceFilename.Label=\u4ECE\u7ED3\u679C\u4E2D\u79FB\u9664\u6E90\u6587\u4EF6\u540D
+ActionCopyMoveResultFilenames.RemovedSourceFilename.Tooltip=\u590D\u5236/\u79FB\u52A8\u7ED3\u675F\u540E\u4ECE\u7ED3\u679C\u6587\u4EF6\u540D\u4E2D\u79FB\u9664\u6E90\u6587\u4EF6\u540D
+ActionCopyMoveResultFilenames.SpecifyFormat.Label=\u6307\u5B9A\u65E5\u671F\u65F6\u95F4\u683C\u5F0F
+ActionCopyMoveResultFilenames.SpecifyFormat.Tooltip=\u6307\u5B9A\u65E5\u671F\u65F6\u95F4\u683C\u5F0F
+ActionCopyMoveResultFilenames.SpecifyWildcard.Label=\u52A8\u4F5C\u8303\u56F4
+ActionCopyMoveResultFilenames.SpecifyWildcard.Tooltip=\u4EC5\u590D\u5236\u6216\u79FB\u52A8\u4E0E\u6B63\u5219\u8868\u8FBE\u5F0F\u5339\u914D\u4E14\u4E0D\u5339\u914D "\u6392\u9664\u901A\u914D\u7B26" \u7684\u6587\u4EF6\u540D
+ActionCopyMoveResultFilenames.SuccessCondition.Label=\u6210\u529F\u6761\u4EF6
+ActionCopyMoveResultFilenames.SuccessOn.Group.Label=\u6210\u529F\u6761\u4EF6
+ActionCopyMoveResultFilenames.SuccessWhenAllWorksFine.Label=\u5F53\u6CA1\u6709\u9519\u8BEF\u53D1\u751F\u65F6
+ActionCopyMoveResultFilenames.SuccessWhenAtLeat.Label=\u5F53\u5DF2\u5904\u7406\u7684\u6587\u4EF6\u6570\u5927\u4E8E
+ActionCopyMoveResultFilenames.SuccessWhenErrorsLessThan.Label=\u5F53\u9519\u8BEF\u6570\u5C11\u4E8E
+ActionCopyMoveResultFilenames.Title=\u590D\u5236/\u79FB\u52A8\u7ED3\u679C\u6587\u4EF6
+ActionCopyMoveResultFilenames.Wildcard.Label=\u901A\u914D\u7B26 (\u6B63\u5219\u8868\u8FBE\u5F0F)
+ActionCopyMoveResultFilenames.Wildcard.Tooltip=\u901A\u914D\u7B26
+ActionCopyMoveResultFilenames.WildcardExclude.Label=\u6392\u9664\u901A\u914D\u7B26 (\u6B63\u5219\u8868\u8FBE\u5F0F)
+ActionCopyMoveResultFilenames.WildcardExclude.Tooltip=\u4E0D\u7B26\u5408\u6761\u4EF6\u7684\u6587\u4EF6\u7684\u901A\u914D\u7B26
+ActionCopyMoveResultFilenames.keyword=copy,move,result,filenames
+ActionCopyMoveResultFilenames.log.CopiedFile={0} \u88AB\u590D\u5236\u5230 {1}
+ActionCopyMoveResultFilenames.log.DeletedFile=\u6587\u4EF6[{0}]\u88AB\u5220\u9664
+ActionCopyMoveResultFilenames.log.ErrorCanNotFindFile=\u627E\u4E0D\u5230\u6587\u4EF6[{0}]
+ActionCopyMoveResultFilenames.log.FilesFound=\u5728\u7ED3\u679C\u6587\u4EF6\u5217\u8868\u4E2D\u627E\u5230 {0} \u4E2A\u6587\u4EF6
+ActionCopyMoveResultFilenames.log.MovedFile=\u6587\u4EF6 {0} \u88AB\u79FB\u52A8\u5230 {1}
+ActionDeleteResultFilenames.Name.Default=\u590D\u5236\u79FB\u52A8\u7ED3\u679C\u6587\u4EF6\u540D
diff --git a/plugins/actions/createfile/src/main/resources/org/apache/hop/workflow/actions/createfile/messages/messages_zh_CN.properties b/plugins/actions/createfile/src/main/resources/org/apache/hop/workflow/actions/createfile/messages/messages_zh_CN.properties
index ce8b1f1..d7bd15b 100644
--- a/plugins/actions/createfile/src/main/resources/org/apache/hop/workflow/actions/createfile/messages/messages_zh_CN.properties
+++ b/plugins/actions/createfile/src/main/resources/org/apache/hop/workflow/actions/createfile/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,15 +15,17 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-ActionCreateFile.Description=\u65b0\u5efa(\u4e00\u4e2a\u7a7a)\u6587\u4ef6
-ActionCreateFile.Name=\u521b\u5efa\u6587\u4ef6
-ActionCreateFile.Filename.Label=\u6587\u4ef6\u540d
-ActionCreateFile.AddFilenameToResult.Label=\u7ed3\u679c\u4e2d\u6dfb\u52a0\u6587\u4ef6\u540d
-ActionCreateFile.FileAddedToResult=\u6587\u4ef6\u540d {0} \u5df2\u7ecf\u88ab\u6dfb\u52a0\u5230\u7ed3\u679c\u6587\u4ef6\u540d\u4e2d
-ActionCreateFile.AddFilenameToResult.Tooltip=\u5c06\u6587\u4ef6\u540d\u6dfb\u52a0\u5230\u7ed3\u679c\u6587\u4ef6\u540d\u5217\u8868
-ActionCreateFile.Title=\u521b\u5efa\u6587\u4ef6
-ActionCreateFile.Name.Label=\u4f5c\u4e1a\u540d\u79f0\:
-ActionCreateFile.Name.Default=\u521b\u5efa\u6587\u4ef6
-ActionCreateFile.FailIfExists.Label=\u5982\u679c\u6587\u4ef6\u5b58\u5728\u5219\u521b\u5efa\u5931\u8d25\:
-ActionCreateFile.Filetype.All=\u6240\u6709\u6587\u4ef6
-ActionCreateFile.FailIfExists.Tooltip=\u5982\u679c\u6587\u4ef6\u5df2\u7ecf\u5b58\u5728\u4e86,\u5219\u521b\u5efa\u6587\u4ef6\u5931\u8d25
+#
+ActionCreateFile.AddFilenameToResult.Label=\u7ED3\u679C\u4E2D\u6DFB\u52A0\u6587\u4EF6\u540D\:
+ActionCreateFile.AddFilenameToResult.Tooltip=\u5C06\u6587\u4EF6\u540D\u6DFB\u52A0\u5230\u7ED3\u679C\u6587\u4EF6\u540D\u5217\u8868
+ActionCreateFile.Description=\u65B0\u5EFA(\u4E00\u4E2A\u7A7A)\u6587\u4EF6
+ActionCreateFile.FailIfExists.Label=\u5982\u679C\u6587\u4EF6\u5B58\u5728\u5219\u521B\u5EFA\u5931\u8D25\:
+ActionCreateFile.FailIfExists.Tooltip=\u5982\u679C\u6587\u4EF6\u5DF2\u7ECF\u5B58\u5728\u4E86,\u5219\u521B\u5EFA\u6587\u4EF6\u5931\u8D25
+ActionCreateFile.FileAddedToResult=\u6587\u4EF6\u540D {0} \u5DF2\u7ECF\u88AB\u6DFB\u52A0\u5230\u7ED3\u679C\u6587\u4EF6\u540D\u4E2D
+ActionCreateFile.Filename.Label=\u6587\u4EF6\u540D\:
+ActionCreateFile.Filetype.All=\u6240\u6709\u6587\u4EF6
+ActionCreateFile.Name=\u521B\u5EFA\u6587\u4EF6
+ActionCreateFile.Name.Default=\u521B\u5EFA\u6587\u4EF6
+ActionCreateFile.Name.Label=Action \u540D\u79F0\:
+ActionCreateFile.Title=\u521B\u5EFA\u6587\u4EF6
+ActionCreateFile.keyword=create,file
diff --git a/plugins/actions/createfolder/src/main/resources/org/apache/hop/workflow/actions/createfolder/messages/messages_zh_CN.properties b/plugins/actions/createfolder/src/main/resources/org/apache/hop/workflow/actions/createfolder/messages/messages_zh_CN.properties
index 02cd702..9d7ee93 100644
--- a/plugins/actions/createfolder/src/main/resources/org/apache/hop/workflow/actions/createfolder/messages/messages_zh_CN.properties
+++ b/plugins/actions/createfolder/src/main/resources/org/apache/hop/workflow/actions/createfolder/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,11 +15,13 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
+#
 ActionCreateFolder.Description=Create a folder
-ActionCreateFolder.Name=\u521b\u5efa\u4e00\u4e2a\u76ee\u5f55
-ActionCreateFolder.Foldername.Label=\u76ee\u5f55\u540d\:
-ActionCreateFolder.Name.Default=\u521b\u5efa\u76ee\u5f55
-ActionCreateFolder.Name.Label=\u4f5c\u4e1a\u540d\u79f0\:
-ActionCreateFolder.FailIfExists.Tooltip=\u5982\u679c\u76ee\u5f55\u5df2\u7ecf\u5b58\u5728,\u5219\u521b\u5efa\u76ee\u5f55\u5931\u8d25
-ActionCreateFolder.Title=\u521b\u5efa\u4e00\u4e2a\u76ee\u5f55
-ActionCreateFolder.FailIfExists.Label=\u5982\u679c\u76ee\u5f55\u5b58\u5728\u5219\u5931\u8d25\:
+ActionCreateFolder.FailIfExists.Label=\u5982\u679C\u76EE\u5F55\u5B58\u5728\u5219\u5931\u8D25\:
+ActionCreateFolder.FailIfExists.Tooltip=\u5982\u679C\u76EE\u5F55\u5DF2\u7ECF\u5B58\u5728,\u5219\u521B\u5EFA\u76EE\u5F55\u5931\u8D25
+ActionCreateFolder.Foldername.Label=\u76EE\u5F55\u540D\:
+ActionCreateFolder.Name=\u521B\u5EFA\u4E00\u4E2A\u76EE\u5F55
+ActionCreateFolder.Name.Default=\u521B\u5EFA\u76EE\u5F55
+ActionCreateFolder.Name.Label=Action \u540D\u79F0\:
+ActionCreateFolder.Title=\u521B\u5EFA\u4E00\u4E2A\u76EE\u5F55
+ActionCreateFolder.keyword=create,folder
diff --git a/plugins/actions/delay/src/main/resources/org/apache/hop/workflow/actions/delay/messages/messages_zh_CN.properties b/plugins/actions/delay/src/main/resources/org/apache/hop/workflow/actions/delay/messages/messages_zh_CN.properties
index c4b2572..9888c97 100644
--- a/plugins/actions/delay/src/main/resources/org/apache/hop/workflow/actions/delay/messages/messages_zh_CN.properties
+++ b/plugins/actions/delay/src/main/resources/org/apache/hop/workflow/actions/delay/messages/messages_zh_CN.properties
@@ -16,16 +16,17 @@
 # limitations under the License.
 #
 #
-#
-ActionDelay.Description=Wait for a delay
-ActionDelay.Name=\u7b49\u5f85
-ActionDelay.Name.Label=\u4F5C\u4E1A\u540D\u79F0
-ActionDelay.WaitTimeIsElapsed.Label=\u7B49\u5F85\u65F6\u95F4\u5DF2\u5230.
-ActionDelay.Title=\u7B49\u5F85
+ActionDelay.Description=\u7B49\u5F85\u5EF6\u8FDF
+ActionDelay.HrScaleTime.Label=\u5C0F\u65F6
+ActionDelay.LetsWaitFor.Label=\u5F00\u59CB\u7B49\u5F85{0} {1}..
 ActionDelay.MaximumTimeReset.Label=\u6700\u5927\u8D85\u65F6\u65E0\u6548,\u91CD\u7F6E\u4E3A\: {0} {1}
-ActionDelay.MaximumTimeout.Label=\u6700\u5927\u8D85\u65F6
+ActionDelay.MaximumTimeout.Label=\u6700\u5927\u8D85\u65F6\:
 ActionDelay.MaximumTimeout.Tooltip=\u7B49\u5F85\u7684\u65F6\u95F4\u5355\u4F4D
-ActionDelay.HrScaleTime.Label=\u5C0F\u65F6
 ActionDelay.MnScaleTime.Label=\u5206\u949F
+ActionDelay.Name=\u7B49\u5F85
+ActionDelay.Name.Label=Action \u540D\u79F0\:
 ActionDelay.SScaleTime.Label=\u79D2
-ActionDelay.LetsWaitFor.Label=\u5F00\u59CB\u7B49\u5F85{0} {1}..
+ActionDelay.Title=\u7B49\u5F85
+ActionDelay.UnableToLoadFromXml.Label=\u65E0\u6CD5\u4ECE XML \u8282\u70B9\u52A0\u8F7D "\u7B49\u5F85" \u7C7B\u578B\u7684 Action
+ActionDelay.WaitTimeIsElapsed.Label=\u7B49\u5F85\u65F6\u95F4\u5DF2\u5230.
+ActionDelay.keyword=delay
diff --git a/plugins/actions/deletefile/src/main/resources/org/apache/hop/workflow/actions/deletefile/messages/messages_zh_CN.properties b/plugins/actions/deletefile/src/main/resources/org/apache/hop/workflow/actions/deletefile/messages/messages_zh_CN.properties
index 85960d2..ace97d7 100644
--- a/plugins/actions/deletefile/src/main/resources/org/apache/hop/workflow/actions/deletefile/messages/messages_zh_CN.properties
+++ b/plugins/actions/deletefile/src/main/resources/org/apache/hop/workflow/actions/deletefile/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,19 +15,21 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-ActionDeleteFile.Description=\u5220\u9664\u4e00\u4e2a\u6587\u4ef6
-ActionDeleteFile.Name=\u5220\u9664\u4e00\u4e2a\u6587\u4ef6
-ActionDeleteFile.FailIfExists.Tooltip=\u5982\u679c\u6587\u4ef6\u4e0d\u5b58\u5728\u5219\u5931\u8d25\:
-ActionDeleteFile.File_Deleted=\u6587\u4ef6 [{0}] \u88ab\u5220\u9664\!
-ActionDeleteFile.ERROR_0005_Could_Not_Delete_File=\u4e0d\u80fd\u5220\u9664\u6587\u4ef6 [{0}] .
-ActionDeleteFile.Name.Default=\u5220\u9664\u4e00\u4e2a\u6587\u4ef6
-ActionDeleteFile.Name.Label=\u4f5c\u4e1a\u540d\u79f0\:
-ActionDeleteFile.ERROR_0004_File_Does_Not_Exist=\u6587\u4ef6 [{0}] \u4e0d\u5b58\u5728,\u5931\u8d25.
-ActionDeleteFile.FailIfExists.Label=\u5982\u679c\u6587\u4ef6\u4e0d\u5b58\u5728\u5219\u5931\u8d25\:
-ActionDeleteFile.Filename.Label=\u6587\u4ef6\u540d\:
-ActionDeleteFile.ERROR_0007_No_Filename_Is_Defined=\u6ca1\u6709\u6307\u5b9a\u6587\u4ef6\u540d
-ActionDeleteFile.ERROR_0006_Exception_Deleting_File=\u4e0d\u80fd\u5220\u9664\u6587\u4ef6 [{0}] ,\u5f02\u5e38\: [{1}] 
-ActionDeleteFile.Title=\u5220\u9664\u4e00\u4e2a\u6587\u4ef6...
-ActionDeleteFile.Error_0001_Unable_To_Load_Job_From_Xml_Node=\u4e0d\u80fd\u4ece XML \u6587\u4ef6\u4e2d\u52a0\u8f7d'\u5220\u9664\u6587\u4ef6'\u4f5c\u4e1a\u9879
-ActionDeleteFile.Filetype.All=\u6240\u6709\u6587\u4ef6
-ActionDeleteFile.File_Already_Deleted=\u6587\u4ef6 [{0}] \u5df2\u7ecf\u5220\u9664
+#
+ActionDeleteFile.Description=\u5220\u9664\u4E00\u4E2A\u6587\u4EF6
+ActionDeleteFile.ERROR_0004_File_Does_Not_Exist=\u6587\u4EF6 [{0}] \u4E0D\u5B58\u5728,\u5931\u8D25.
+ActionDeleteFile.ERROR_0005_Could_Not_Delete_File=\u4E0D\u80FD\u5220\u9664\u6587\u4EF6 [{0}] .
+ActionDeleteFile.ERROR_0006_Exception_Deleting_File=\u4E0D\u80FD\u5220\u9664\u6587\u4EF6 [{0}] ,\u5F02\u5E38\: [{1}] 
+ActionDeleteFile.ERROR_0007_No_Filename_Is_Defined=\u6CA1\u6709\u6307\u5B9A\u6587\u4EF6\u540D
+ActionDeleteFile.Error_0001_Unable_To_Load_Job_From_Xml_Node=\u4E0D\u80FD\u4ECE XML \u6587\u4EF6\u4E2D\u52A0\u8F7D'\u5220\u9664\u6587\u4EF6' Action \u9879
+ActionDeleteFile.FailIfExists.Label=\u5982\u679C\u6587\u4EF6\u4E0D\u5B58\u5728\u5219\u5931\u8D25\:
+ActionDeleteFile.FailIfExists.Tooltip=\u5982\u679C\u6587\u4EF6\u4E0D\u5B58\u5728\u5219\u5931\u8D25\:
+ActionDeleteFile.File_Already_Deleted=\u6587\u4EF6 [{0}] \u5DF2\u7ECF\u5220\u9664
+ActionDeleteFile.File_Deleted=\u6587\u4EF6 [{0}] \u88AB\u5220\u9664\!
+ActionDeleteFile.Filename.Label=\u6587\u4EF6\u540D\:
+ActionDeleteFile.Filetype.All=\u6240\u6709\u6587\u4EF6
+ActionDeleteFile.Name=\u5355\u6587\u4EF6\u5220\u9664
+ActionDeleteFile.Name.Default=\u5220\u9664\u5355\u4E2A\u6587\u4EF6
+ActionDeleteFile.Name.Label=Action \u540D\u79F0\:
+ActionDeleteFile.Title=\u5220\u9664\u5355\u4E2A\u6587\u4EF6
+ActionDeleteFile.keyword=delete,file
diff --git a/plugins/actions/deletefiles/src/main/resources/org/apache/hop/workflow/actions/deletefiles/messages/messages_zh_CN.properties b/plugins/actions/deletefiles/src/main/resources/org/apache/hop/workflow/actions/deletefiles/messages/messages_zh_CN.properties
index e6dc934..ce00da5 100644
--- a/plugins/actions/deletefiles/src/main/resources/org/apache/hop/workflow/actions/deletefiles/messages/messages_zh_CN.properties
+++ b/plugins/actions/deletefiles/src/main/resources/org/apache/hop/workflow/actions/deletefiles/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,36 +15,47 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-ActionDeleteFiles.Description=\u5220\u9664\u6587\u4ef6
-ActionDeleteFiles.Name=\u5220\u9664\u591a\u4e2a\u6587\u4ef6
-ActionDeleteFiles.Settings.Label=\u8bbe\u7f6e
-ActionDeleteFiles.Filetype.All=\u6240\u6709\u6587\u4ef6
-ActionDeleteFiles.FileAlreadyDeleted=\u6587\u4ef6[{0}]\u5df2\u7ecf\u88ab\u5220\u9664
-ActionDeleteFiles.FileDeleted=\u5220\u9664\u6587\u4ef6[{0}] \!
-ActionDeleteFiles.FilenameDelete.Tooltip=\u4ece\u8868\u683c\u4e2d\u79fb\u9664\u9009\u4e2d\u7684\u6587\u4ef6
-ActionDeleteFiles.Previous.Label=\u590d\u5236\u4e0a\u4e00\u6b65\u7ed3\u679c\u5230\u53c2\u6570
-ActionDeleteFiles.Fields.Column=\u5728\u6b64\u5904\u6307\u5b9a\u8981\u88ab\u5220\u9664\u7684\u6587\u4ef6
-ActionDeleteFiles.FilenameAdd.Button=&\u6dfb\u52a0
-ActionDeleteFiles.Wildcard.Column=\u6307\u5b9a\u4e00\u4e2a\u901a\u914d\u7b26\uff08\u6b63\u5219\u8868\u8fbe\u5f0f\uff09
-ActionDeleteFiles.Wildcard.Label=\u901a\u914d\u7b26(\u6b63\u5219\u8868\u8fbe\u5f0f)
-ActionDeleteFiles.Name.Default=\u5220\u9664\u6587\u4ef6
-ActionDeleteFiles.DeletingFile=\u5220\u9664\u6587\u4ef6[{0}]
-ActionDeleteFiles.FilenameEdit.Tooltip=\u7f16\u8f91\u9009\u4e2d\u7684\u6587\u4ef6
-ActionDeleteFiles.Filename.Label=\u6587\u4ef6/\u6587\u4ef6\u5939
-ActionDeleteFiles.FilenameDelete.Button=&\u5220\u9664
-ActionDeleteFiles.TotalDeleted=\u4e00\u5171\u5220\u9664\u6587\u4ef6 \= {0}
-ActionDeleteFiles.Wildcard.Tooltip=\u901a\u914d\u7b26(\u6b63\u5219\u8868\u8fbe\u5f0f)
-ActionDeleteFiles.IncludeSubfolders.Label=\u5305\u542b\u5b50\u6587\u4ef6\u5939
-ActionDeleteFiles.IncludeSubfolders.Tooltip=\u5305\u542b\u5b50\u6587\u4ef6\u5939
-ActionDeleteFiles.FilenameEdit.Button=&\u7f16\u8f91
-ActionDeleteFiles.CouldNotDeleteFile=\u4e0d\u80fd\u5220\u9664\u6587\u4ef6[{0}]
-ActionDeleteFiles.Fields.Label=\u6587\u4ef6/\u6587\u4ef6\u5939\:
-ActionDeleteFiles.Fields.Wildcard.Label=\u901a\u914d\u7b26\uff08\u6b63\u5219\u8868\u8fbe\u5f0f\uff09
-ActionDeleteFiles.Error.Exception.DeleteProcessError=\u9519\u8bef
-ActionDeleteFiles.Error.Exception.DeleteProcess=\u5220\u9664\u6587\u4ef6[{0}]\u65f6\u53d1\u751f\u9519\u8bef\uff1a\u5f02\u5e38\uff1a[{1}]
-ActionDeleteFiles.BrowseFiles.Label=\u6587\u4ef6...
-ActionDeleteFiles.CouldNotProcess=\u4e0d\u80fd\u8fd0\u884c[{0}],\u5f02\u5e38\uff1a{1}
-ActionDeleteFiles.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0
-ActionDeleteFiles.Title=\u5220\u9664\u591a\u4e2a\u6587\u4ef6
-ActionDeleteFiles.BrowseFolders.Label=\u6587\u4ef6\u5939
-ActionDeleteFiles.Fields.Argument.Label=\u6587\u4ef6/\u6587\u4ef6\u5939
+#
+ActionDeleteFiles.BrowseFiles.Label=\u6587\u4EF6...
+ActionDeleteFiles.BrowseFolders.Label=\u6587\u4EF6\u5939...
+ActionDeleteFiles.CouldNotDeleteFile=\u4E0D\u80FD\u5220\u9664\u6587\u4EF6[{0}]
+ActionDeleteFiles.CouldNotProcess=\u4E0D\u80FD\u8FD0\u884C[{0}],\u5F02\u5E38\uFF1A{1}
+ActionDeleteFiles.DeletingFile=\u5220\u9664\u6587\u4EF6[{0}]
+ActionDeleteFiles.Description=\u5220\u9664\u6587\u4EF6
+ActionDeleteFiles.Error.Exception.DeleteProcess=\u5220\u9664\u6587\u4EF6[{0}]\u65F6\u53D1\u751F\u9519\u8BEF\uFF1A\u5F02\u5E38\uFF1A[{1}]
+ActionDeleteFiles.Error.Exception.DeleteProcessError=\u9519\u8BEF
+ActionDeleteFiles.Error.InvalidNumberOfRowsFromPrevMeta=\u8981\u6267\u884C\u8BE5 Action, \u60A8\u5E94\u8BE5\u63D0\u4F9B\u81F3\u5C11\u5305\u542B\u4E24\u4E2A\u5B57\u6BB5\u7684\u6570\u636E\u884C(\u6587\u4EF6\u8DEF\u5F84\u53CA\u901A\u914D\u7B26). \u4EC5\u627E\u5230 {0} \u884C\u6570\u636E.
+ActionDeleteFiles.Fields.Argument.Label=\u6587\u4EF6/\u6587\u4EF6\u5939
+ActionDeleteFiles.Fields.Column=\u5728\u6B64\u5904\u6307\u5B9A\u8981\u88AB\u5220\u9664\u7684\u6587\u4EF6
+ActionDeleteFiles.Fields.Label=\u6587\u4EF6/\u6587\u4EF6\u5939\:
+ActionDeleteFiles.Fields.Wildcard.Label=\u901A\u914D\u7B26(\u6B63\u5219\u8868\u8FBE\u5F0F)
+ActionDeleteFiles.FileAlreadyDeleted=\u6587\u4EF6[{0}]\u5DF2\u7ECF\u88AB\u5220\u9664
+ActionDeleteFiles.FileDeleted=\u5220\u9664\u6587\u4EF6[{0}] \!
+ActionDeleteFiles.Filename.Label=\u6587\u4EF6/\u6587\u4EF6\u5939\:
+ActionDeleteFiles.FilenameAdd.Button=\u6DFB\u52A0
+ActionDeleteFiles.FilenameDelete.Button=\u5220\u9664
+ActionDeleteFiles.FilenameDelete.Tooltip=\u4ECE\u8868\u683C\u4E2D\u79FB\u9664\u9009\u4E2D\u7684\u6587\u4EF6
+ActionDeleteFiles.FilenameEdit.Button=\u7F16\u8F91
+ActionDeleteFiles.FilenameEdit.Tooltip=\u7F16\u8F91\u9009\u4E2D\u7684\u6587\u4EF6
+ActionDeleteFiles.Filetype.All=\u6240\u6709\u6587\u4EF6
+ActionDeleteFiles.FoundPreviousRows=\u4ECE\u524D\u7F6E\u6267\u884C\u7ED3\u679C\u4E2D\u6536\u5230 {0} \u884C\u6570\u636E
+ActionDeleteFiles.IncludeSubfolders.Label=\u5305\u542B\u5B50\u6587\u4EF6\u5939\:
+ActionDeleteFiles.IncludeSubfolders.Tooltip=\u5305\u542B\u5B50\u6587\u4EF6\u5939
+ActionDeleteFiles.Name=\u5220\u9664\u6587\u4EF6
+ActionDeleteFiles.Name.Default=\u5220\u9664\u6587\u4EF6
+ActionDeleteFiles.Name.Label=Action \u540D\u79F0:
+ActionDeleteFiles.NoPathProvided=\u5FFD\u7565\u7A7A\u8DEF\u5F84\u7684\u53C2\u6570
+ActionDeleteFiles.Previous.Label=\u590D\u5236\u4E0A\u4E00\u6B65\u7ED3\u679C\u5230\u53C2\u6570\:
+ActionDeleteFiles.Previous.Tooltip=\u9009\u4E2D\u8BE5\u9009\u9879\u5219\u5C06\u524D\u7F6E\u901A\u9053\u4E2D\u4F20\u9012\u8FC7\u6765\u7684\u6570\u636E\u884C\u505A\u4E3A\u8BE5 Action \u7684\u53C2\u6570
+ActionDeleteFiles.ProcessingArg=\u5904\u7406\u8DEF\u5F84\u53C2\u6570 [{0}]..\u5339\u914D [{1}]
+ActionDeleteFiles.ProcessingFile=\u5904\u7406\u6587\u4EF6 [{0}]
+ActionDeleteFiles.ProcessingFolder=\u5904\u7406\u76EE\u5F55 [{0}]
+ActionDeleteFiles.ProcessingRow=\u5904\u7406\u6570\u636E\u884C [{0}], \u5339\u914D [{1}]
+ActionDeleteFiles.Settings.Label=\u8BBE\u7F6E
+ActionDeleteFiles.Title=\u5220\u9664\u6587\u4EF6
+ActionDeleteFiles.TotalDeleted=\u4E00\u5171\u5220\u9664\u6587\u4EF6 \= {0}
+ActionDeleteFiles.UnableToLoadFromXml=\u65E0\u6CD5\u4ECE XML \u8282\u70B9\u52A0\u8F7D "\u5220\u9664\u6587\u4EF6" \u7C7B\u578B\u7684 Action
+ActionDeleteFiles.Wildcard.Column=\u6307\u5B9A\u4E00\u4E2A\u901A\u914D\u7B26 (\u6B63\u5219\u8868\u8FBE\u5F0F)
+ActionDeleteFiles.Wildcard.Label=\u901A\u914D\u7B26(\u6B63\u5219\u8868\u8FBE\u5F0F)\:
+ActionDeleteFiles.Wildcard.Tooltip=\u901A\u914D\u7B26(\u6B63\u5219\u8868\u8FBE\u5F0F)
+ActionDeleteFiles.keyword=delete,file
diff --git a/plugins/actions/deletefolders/src/main/resources/org/apache/hop/workflow/actions/deletefolders/messages/messages_zh_CN.properties b/plugins/actions/deletefolders/src/main/resources/org/apache/hop/workflow/actions/deletefolders/messages/messages_zh_CN.properties
index 6e48be9..b2f5488 100644
--- a/plugins/actions/deletefolders/src/main/resources/org/apache/hop/workflow/actions/deletefolders/messages/messages_zh_CN.properties
+++ b/plugins/actions/deletefolders/src/main/resources/org/apache/hop/workflow/actions/deletefolders/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,26 +15,41 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-ActionDeleteFolders.Name=\u5220\u9664\u76ee\u5f55
-ActionDeleteFolders.Fields.Argument.Label=\u6587\u4ef6\u5939
-ActionDeleteFolders.Previous.Label=\u4fdd\u5b58\u4e0a\u4e00\u6b65\u7684\u7ed3\u679c\u5230\u53c2\u6570
-ActionDeleteFolders.FilenameEdit.Tooltip=\u7f16\u8f91\u9009\u4e2d\u7684\u6587\u4ef6\u5939
-ActionDeleteFolders.Filename.Label=\u6587\u4ef6\u5939
-ActionDeleteFolders.LimitFolders.Tooltip=\u8be5\u6570\u91cf\u662f\u6210\u529f\u6761\u4ef6\u4e2d\u7684 x
-ActionDeleteFolders.FilenameAdd.Button=&\u6dfb\u52a0
-ActionDeleteFolders.SuccessWhenAllWorksFine.Label=\u6ca1\u6709\u51fa\u9519
-ActionDeleteFolders.SuccessCondition.Label=\u6210\u529f\u6761\u4ef6
-ActionDeleteFolders.SuccessOn.Group.Label=\u8fd0\u884c\u6210\u529f\u6761\u4ef6
-ActionDeleteFolders.FilenameDelete.Button=&\u5220\u9664
-ActionDeleteFolders.Name.Default=\u5220\u9664\u6587\u4ef6\u5939
-ActionDeleteFolders.LimitFolders.Label=\u6570\u91cf
-ActionDeleteFolders.Fields.Column=\u5728\u6b64\u5904\u6307\u5b9a\u8981\u5220\u9664\u7684\u6587\u4ef6\u5939
-ActionDeleteFolders.BrowseFolders.Label=\u6587\u4ef6\u5939
-ActionDeleteFolders.SuccessWhenAtLeat.Label=\u81f3\u5c11\u6709x\u4e2a\u6587\u4ef6\u5939\u88ab\u5220\u9664
-ActionDeleteFolders.FilenameEdit.Button=&\u7f16\u8f91
-ActionDeleteFolders.FilenameDelete.Tooltip=\u4ece\u8868\u683c\u4e2d\u79fb\u9664\u9009\u4e2d\u7684\u6587\u4ef6\u5939
-ActionDeleteFolders.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0
-ActionDeleteFolders.SuccessWhenErrorsLessThan.Label=\u9519\u8bef\u6570\u5c11\u4e8ex\u4e2a
-ActionDeleteFolders.Title=\u5220\u9664\u76ee\u5f55
-ActionDeleteFolders.Fields.Label=\u6587\u4ef6\u5939\:
-ActionDeleteFolders.Settings.Label=\u8bbe\u7f6e
+#
+ActionDeleteFolders.BrowseFolders.Label=\u6587\u4EF6\u5939
+ActionDeleteFolders.CouldNotDelete=\u65E0\u6CD5\u5220\u9664\u76EE\u5F55 [{0}, \u5F02\u5E38\: {1}
+ActionDeleteFolders.Description=\u5220\u9664\u6307\u5B9A\u76EE\u5F55.\n\u63D0\u9192\: Apache Hop \u5C06\u5220\u9664\u8BE5\u76EE\u5F55\u53CA\u5176\u4E0B\u9762\u6240\u6709\u6587\u4EF6
+ActionDeleteFolders.Error.EmptyLine=\u5FFD\u7565\u7A7A\u884C
+ActionDeleteFolders.Error.NotFolder=\u9519\u8BEF, \u975E\u76EE\u5F55 {0}\!
+ActionDeleteFolders.Error.SuccessConditionbroken=\u7EC8\u6B62\u6210\u529F\u6761\u4EF6\u68C0\u6D4B, \u51FA\u73B0 {0} \u9519\u8BEF, \u6267\u884C\u5931\u8D25\!
+ActionDeleteFolders.Fields.Argument.Label=\u6587\u4EF6\u5939
+ActionDeleteFolders.Fields.Column=\u5728\u6B64\u5904\u6307\u5B9A\u8981\u5220\u9664\u7684\u6587\u4EF6\u5939
+ActionDeleteFolders.Fields.Label=\u6587\u4EF6\u5939\:
+ActionDeleteFolders.Filename.Label=\u6587\u4EF6\u5939
+ActionDeleteFolders.FilenameAdd.Button=\u6DFB\u52A0(&A)
+ActionDeleteFolders.FilenameDelete.Button=\u5220\u9664(&D)
+ActionDeleteFolders.FilenameDelete.Tooltip=\u4ECE\u8868\u683C\u4E2D\u79FB\u9664\u9009\u4E2D\u7684\u6587\u4EF6\u5939
+ActionDeleteFolders.FilenameEdit.Button=\u7F16\u8F91(&E)
+ActionDeleteFolders.FilenameEdit.Tooltip=\u7F16\u8F91\u9009\u4E2D\u7684\u6587\u4EF6\u5939
+ActionDeleteFolders.FolderAlreadyDeleted=\u76EE\u5F55 [{0}] \u5DF2\u5220\u9664.
+ActionDeleteFolders.FoundPreviousRows=\u4ECE\u524D\u7F6E\u8FD4\u56DE\u7ED3\u679C\u4E2D\u6536\u5230 {0} \u884C\u6570\u636E
+ActionDeleteFolders.LimitFolders.Label=\u6570\u91CF
+ActionDeleteFolders.LimitFolders.Tooltip=\u8BE5\u6570\u91CF\u662F\u6210\u529F\u6761\u4EF6\u4E2D\u7684 x
+ActionDeleteFolders.Log.Info.NrDeletedFolders=\u5220\u9664\u76EE\u5F55\u6570\: {0}
+ActionDeleteFolders.Log.Info.NrError=\u51FA\u9519\u6B21\u6570\: {0}
+ActionDeleteFolders.Name=\u5220\u9664\u76EE\u5F55
+ActionDeleteFolders.Name.Default=\u5220\u9664\u76EE\u5F55
+ActionDeleteFolders.Name.Label=Action \u540D\u79F0:
+ActionDeleteFolders.Previous.Label=\u4FDD\u5B58\u4E0A\u4E00\u6B65\u7684\u7ED3\u679C\u5230\u53C2\u6570
+ActionDeleteFolders.Previous.Tooltip=\u9009\u4E2D\u8BE5\u9009\u9879\u5219\u5C06\u524D\u7F6E\u901A\u9053\u4E2D\u4F20\u9012\u8FC7\u6765\u7684\u6570\u636E\u884C\u505A\u4E3A\u8BE5 Action \u7684\u53C2\u6570
+ActionDeleteFolders.ProcessingFolder=\u5904\u7406\u76EE\u5F55 [{0}]
+ActionDeleteFolders.Settings.Label=\u8BBE\u7F6E
+ActionDeleteFolders.SuccessCondition.Label=\u6210\u529F\u6761\u4EF6
+ActionDeleteFolders.SuccessOn.Group.Label=\u8FD0\u884C\u6210\u529F\u6761\u4EF6
+ActionDeleteFolders.SuccessWhenAllWorksFine.Label=\u6CA1\u6709\u51FA\u9519
+ActionDeleteFolders.SuccessWhenAtLeat.Label=\u81F3\u5C11\u6709x\u4E2A\u6587\u4EF6\u5939\u88AB\u5220\u9664
+ActionDeleteFolders.SuccessWhenErrorsLessThan.Label=\u9519\u8BEF\u6570\u5C11\u4E8Ex\u4E2A
+ActionDeleteFolders.Title=\u5220\u9664\u76EE\u5F55
+ActionDeleteFolders.TotalDeleted=\u5DF2\u5220\u9664\u76EE\u5F55 {0}, \u603B\u5171\u5220\u9664 {0} \u4E2A\u6587\u4EF6
+ActionDeleteFolders.UnableToLoadFromXml=\u65E0\u6CD5\u4ECE XML \u8282\u70B9\u52A0\u8F7D "\u5220\u9664\u76EE\u5F55" \u7C7B\u578B\u7684 Action
+ActionDeleteFolders.keyword=delete,folders
diff --git a/plugins/actions/deleteresultfilenames/src/main/resources/org/apache/hop/workflow/actions/deleteresultfilenames/messages/messages_zh_CN.properties b/plugins/actions/deleteresultfilenames/src/main/resources/org/apache/hop/workflow/actions/deleteresultfilenames/messages/messages_zh_CN.properties
index dd388c5..12336af 100644
--- a/plugins/actions/deleteresultfilenames/src/main/resources/org/apache/hop/workflow/actions/deleteresultfilenames/messages/messages_zh_CN.properties
+++ b/plugins/actions/deleteresultfilenames/src/main/resources/org/apache/hop/workflow/actions/deleteresultfilenames/messages/messages_zh_CN.properties
@@ -16,17 +16,20 @@
 # limitations under the License.
 #
 #
-#
-ActionDeleteResultFilenames.Description=Delete filenames from result
-ActionDeleteResultFilenames.Name=\u4ece\u7ed3\u679c\u6587\u4ef6\u4e2d\u5220\u9664\u6587\u4ef6
-ActionDeleteResultFilenames.log.DeletedFiles={0}\u6587\u4ef6\u88ab\u5220\u9664\u3002
-ActionDeleteResultFilenames.WildcardExclude.Label=\u4f8b\u5916\u901a\u914d\u7b26\uff08\u6b63\u5219\u8868\u8fbe\u5f0f\uff09
-ActionDeleteResultFilenames.WildcardExclude.Tooltip=\u4f8b\u5916\u7684\u6587\u4ef6\u540d\u7684\u6b63\u5219\u8868\u8fbe\u5f0f
-ActionDeleteResultFilenames.Wildcard.Tooltip=\u901a\u914d\u7b26\uff08\u6b63\u5219\u8868\u8fbe\u5f0f\uff09
-ActionDeleteResultFilenames.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0
-ActionDeleteResultFilenames.log.FilesFound=\u5728\u6587\u4ef6\u540d\u7ed3\u679c\u96c6\u4e2d\u627e\u5230{0}\u4e2a\u6587\u4ef6
-ActionDeleteResultFilenames.log.DeletedFile={0}\u88ab\u4ece\u7ed3\u679c\u6587\u4ef6\u540d\u4e2d\u79fb\u9664
-ActionDeleteResultFilenames.Wildcard.Label=\u901a\u914d\u7b26\uff08\u6b63\u5219\u8868\u8fbe\u5f0f\uff09
-ActionDeleteResultFilenames.SpecifyWildcard.Label=\u53ea\u5220\u9664\u6ee1\u8db3\u4ee5\u4e0b\u6761\u4ef6\u7684\u6587\u4ef6
-ActionDeleteResultFilenames.SpecifyWildcard.Tooltip=\u53ea\u5220\u9664\u5339\u914d\u901a\u914d\u7b26\u7684\u6587\u4ef6\u548c\u4e0d\u5339\u914d\u4f8b\u5916\u901a\u914d\u7b26\u7684\u6587\u4ef6
-ActionDeleteResultFilenames.Title=\u4ece\u7ed3\u679c\u6587\u4ef6\u4e2d\u5220\u9664\u6587\u4ef6
\ No newline at end of file
+ActionDeleteResultFilenames.CanNotLoadFromXML=\u65E0\u6CD5\u4ECE XML \u8282\u70B9\u52A0\u8F7D "\u5220\u9664\u8FD4\u56DE\u6587\u4EF6" \u7C7B\u578B\u7684 Action
+ActionDeleteResultFilenames.Description=\u4ECE\u8FD4\u56DE\u7ED3\u679C\u6587\u4EF6\u5217\u8868\u4E2D\u5220\u9664\u6587\u4EF6
+ActionDeleteResultFilenames.Error=\u51FA\u9519\: {0}
+ActionDeleteResultFilenames.Name=\u5220\u9664\u8FD4\u56DE\u6587\u4EF6
+ActionDeleteResultFilenames.Name.Default=\u5220\u9664\u8FD4\u56DE\u6587\u4EF6
+ActionDeleteResultFilenames.Name.Label=Action \u540D\u79F0:
+ActionDeleteResultFilenames.SpecifyWildcard.Label=\u53EA\u5220\u9664\u6EE1\u8DB3\u4EE5\u4E0B\u6761\u4EF6\u7684\u6587\u4EF6
+ActionDeleteResultFilenames.SpecifyWildcard.Tooltip=\u53EA\u5220\u9664\u5339\u914D\u901A\u914D\u7B26\u7684\u6587\u4EF6\u548C\u4E0D\u5339\u914D\u4F8B\u5916\u901A\u914D\u7B26\u7684\u6587\u4EF6
+ActionDeleteResultFilenames.Title=\u5220\u9664\u8FD4\u56DE\u6587\u4EF6
+ActionDeleteResultFilenames.Wildcard.Label=\u901A\u914D\u7B26(\u6B63\u5219\u8868\u8FBE\u5F0F)
+ActionDeleteResultFilenames.Wildcard.Tooltip=\u901A\u914D\u7B26 (\u6B63\u5219\u8868\u8FBE\u5F0F)
+ActionDeleteResultFilenames.WildcardExclude.Label=\u4F8B\u5916\u901A\u914D\u7B26 (\u6B63\u5219\u8868\u8FBE\u5F0F)
+ActionDeleteResultFilenames.WildcardExclude.Tooltip=\u4F8B\u5916\u7684\u6587\u4EF6\u540D\u7684\u6B63\u5219\u8868\u8FBE\u5F0F
+ActionDeleteResultFilenames.keyword=delete,result,filenames
+ActionDeleteResultFilenames.log.DeletedFile={0}\u88AB\u4ECE\u7ED3\u679C\u6587\u4EF6\u540D\u4E2D\u79FB\u9664
+ActionDeleteResultFilenames.log.DeletedFiles={0}\u6587\u4EF6\u88AB\u5220\u9664.
+ActionDeleteResultFilenames.log.FilesFound=\u5728\u6587\u4EF6\u540D\u7ED3\u679C\u96C6\u4E2D\u627E\u5230{0}\u4E2A\u6587\u4EF6
diff --git a/plugins/actions/dostounix/src/main/resources/org/apache/hop/workflow/actions/dostounix/messages/messages_zh_CN.properties b/plugins/actions/dostounix/src/main/resources/org/apache/hop/workflow/actions/dostounix/messages/messages_zh_CN.properties
index 8a6fec4..5279f96 100644
--- a/plugins/actions/dostounix/src/main/resources/org/apache/hop/workflow/actions/dostounix/messages/messages_zh_CN.properties
+++ b/plugins/actions/dostounix/src/main/resources/org/apache/hop/workflow/actions/dostounix/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,43 +15,70 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-ActionDosToUnix.Description=Convert file content between DOS and UNIX.\nConverting to UNIX will replace CRLF (Carriage Return and line Feed) by LF (Line Feed)
-ActionDosToUnix.Name=DOS\u548cUNIX\u4e4b\u95f4\u7684\u6587\u672c\u8f6c\u6362
-ActionDosToUnix.AddOnlyErrorFilenames.Label=\u53ea\u6dfb\u52a0\u9519\u8bef\u7684\u6587\u4ef6\u540d
-ActionDosToUnix.Fields.Label=\u6587\u4ef6/\u6587\u4ef6\u5939
-ActionDosToUnix.Title=DOS\u548cUNIX\u4e4b\u95f4\u7684\u6587\u672c\u8f6c\u6362
-ActionDosToUnix.FilenameAdd.Button=&\u6dfb\u52a0
-ActionDosToUnix.Previous.Label=\u590d\u5236\u4e0a\u4e00\u6b65\u7ed3\u679c\u5230\u53c2\u6570
-ActionDosToUnix.IncludeSubfolders.Label=\u5305\u542b\u5b50\u6587\u4ef6\u5939
-ActionDosToUnix.FilenameDelete.Tooltip=\u4ece\u8868\u683c\u4e2d\u5220\u9664\u9009\u4e2d\u7684\u6587\u4ef6
-ActionDosToUnix.SuccessWhenAtLeat.Label=\u8f6c\u6362\u6210\u529f\u7684\u6587\u4ef6\u4e2a\u6570\u4e0d\u5c11\u4e8e
-ActionDosToUnix.FileResult.Group.Label=\u7ed3\u679c\u6587\u4ef6\u540d
-ActionDosToUnix.SuccessOn.Group.Label=\u8fd0\u884c\u6210\u529f\u6761\u4ef6
-ActionDosToUnix.AddNoFilesToResult.Label=\u4e0d\u6dfb\u52a0\u6587\u4ef6\u540d
-ActionDosToUnix.SuccessWhenAllWorksFine.Label=\u6240\u6709\u7684\u6587\u4ef6\u8f6c\u6362\u6210\u529f
-ActionDosToUnix.FilenameEdit.Tooltip=\u7f16\u8f91\u9009\u4e2d\u7684\u6587\u4ef6
-ActionDosToUnix.Wildcard.Label=\u901a\u914d\u7b26
-ActionDosToUnix.FilenameEdit.Button=&\u7f16\u8f91
-ActionDosToUnix.SourceFileFolder.Label=\u6e90\u6587\u4ef6/\u6587\u4ef6\u5939
-ActionDosToUnix.IncludeSubfolders.Tooltip=\u5305\u542b\u5b50\u6587\u4ef6\u5939
-ActionDosToUnix.FilenameDelete.Button=&\u5220\u9664
-ActionDosToUnix.SourceFileFolder.Tooltip=\u6e90\u6587\u4ef6/\u6587\u4ef6\u5939
-ActionDosToUnix.Fields.Wildcard.Label=\u901a\u914d\u7b26
-ActionDosToUnix.BrowseFolders.Label=\u6587\u4ef6\u5939
-ActionDosToUnix.AddAllFilenamesToResult.Label=\u6dfb\u52a0\u6240\u6709\u6587\u4ef6\u540d
-ActionDosToUnix.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0
-ActionDosToUnix.NrErrorFilesCountLessThan.Tooltip=\u9519\u8bef\u6570\u5c11\u4e8e 
-ActionDosToUnix.SuccessCondition.Label=\u6210\u529f\u6761\u4ef6
-ActionDosToUnix.Tab.General.Label=\u4e00\u822c
-ActionDosToUnix.Tab.Advanced.Label=\u9ad8\u7ea7
-ActionDosToUnix.Fields.ConversionType.Label=\u8f6c\u6362
-ActionDosToUnix.Filetype.All=\u5168\u90e8\u6587\u4ef6
-ActionDosToUnix.Filetype.Xml=XML\u6587\u4ef6
-ActionDosToUnix.Fields.SourceFileFolder.Label=\u6e90\u6587\u4ef6/\u6587\u4ef6\u5939
-ActionDosToUnix.SuccessWhenBadFormedLessThan.Label=\u9519\u8bef\u6570\u5c0f\u4e8e 
-ActionDosToUnix.Settings.Label=\u8bbe\u7f6e
-ActionDosToUnix.AddOnlyProcessedFilenames.Label=\u53ea\u6dfb\u52a0\u8f6c\u6362\u6210\u529f\u7684\u6587\u4ef6\u540d
-ActionDosToUnix.BrowseFiles.Label=\u6587\u4ef6
-ActionDosToUnix.Name.Default=Dos\uff0cUnix \u6587\u4ef6\u8f6c\u6362
-ActionDosToUnix.AddFilenameToResult.Label=\u6dfb\u52a0\u6587\u4ef6\u540d
-ActionDosToUnix.NrErrorFilesCountLessThan.Label=\u6587\u4ef6\u4e2a\u6570
+#
+ActionDosToUnix.AddAllFilenamesToResult.Label=\u6DFB\u52A0\u6240\u6709\u6587\u4EF6\u540D
+ActionDosToUnix.AddFilenameToResult.Label=\u6DFB\u52A0\u6587\u4EF6\u540D\:
+ActionDosToUnix.AddNoFilesToResult.Label=\u4E0D\u6DFB\u52A0\u6587\u4EF6\u540D\:
+ActionDosToUnix.AddOnlyErrorFilenames.Label=\u53EA\u6DFB\u52A0\u9519\u8BEF\u7684\u6587\u4EF6\u540D
+ActionDosToUnix.AddOnlyProcessedFilenames.Label=\u53EA\u6DFB\u52A0\u8F6C\u6362\u6210\u529F\u7684\u6587\u4EF6\u540D
+ActionDosToUnix.BrowseFiles.Label=\u6587\u4EF6
+ActionDosToUnix.BrowseFolders.Label=\u6587\u4EF6\u5939
+ActionDosToUnix.ConversionType.DosToUnix.Label=Windows \u5230 Unix
+ActionDosToUnix.ConversionType.Guess.Label=\u81EA\u52A8\u68C0\u6D4B
+ActionDosToUnix.ConversionType.UnixToDos.Label=Unix \u5230 Windows
+ActionDosToUnix.Description=\u8F6C\u6362\u6587\u4EF6\u7684\u6362\u884C\u7B26\: \u5904\u7406 DOS \u548C UNIX \u5E73\u53F0\u4E4B\u95F4\u6587\u4EF6\u6362\u884C\u7B26\u7684\u5DEE\u5F02.\n\u8F6C\u6362\u4E3A UNIX \u4F1A\u5C06 CRLF(\u56DE\u8F66\u548C\u6362\u884C)\u66FF\u6362\u4E3A LF(\u6362\u884C), \u53CD\u4E4B\u4F9D\u7136
+ActionDosToUnix.Error.Exception.UnableLoadXML=\u65E0\u6CD5\u4ECE XML \u8282\u70B9\u52A0\u8F7D "\u6362\u884C\u7B26\u8F6C\u6362" \u7C7B\u578B\u7684 Action
+ActionDosToUnix.Error.FileConverted=\u6587\u4EF6 [{0}] \u88AB\u8F6C\u6362\u4E3A {0} \u683C\u5F0F
+ActionDosToUnix.Error.FileNotConverted=\u8F6C\u6362 [{0}] \u65F6\u51FA\u9519\!
+ActionDosToUnix.Error.SourceFileNotExists=\u6587\u4EF6\u6216\u76EE\u5F55 [{0}] \u4E0D\u5B58\u5728\!
+ActionDosToUnix.Error.SuccessConditionbroken=\u7EC8\u6B62\u6210\u529F\u6761\u4EF6\u7684\u68C0\u6D4B\! \u51FA\u73B0 {0} \u9519\u8BEF
+ActionDosToUnix.Error.UnknowFileFormat=\u672A\u77E5\u6587\u4EF6 [{0}] \u7684\u7C7B\u578B\!
+ActionDosToUnix.Fields.ConversionType.Label=\u8F6C\u6362
+ActionDosToUnix.Fields.Label=\u6587\u4EF6/\u6587\u4EF6\u5939
+ActionDosToUnix.Fields.SourceFileFolder.Label=\u6E90\u6587\u4EF6/\u6587\u4EF6\u5939
+ActionDosToUnix.Fields.SourceFileFolder.Tooltip=\u8981\u5904\u7406\u7684\u76EE\u5F55\u6216\u6587\u4EF6.\n\u5F53\u6307\u5B9A\u76EE\u5F55\u65F6\u4E14\u9009\u4E2D "\u5305\u542B\u5B50\u76EE\u5F55" \u9009\u9879\u65F6, \u5C06\u904D\u5386\u6240\u6709\u5B50\u76EE\u5F55.
+ActionDosToUnix.Fields.Wildcard.Label=\u901A\u914D\u7B26
+ActionDosToUnix.Fields.Wildcard.Tooltip=\u901A\u8FC7\u901A\u914D\u7B26\u5339\u914D\u6587\u4EF6, \u4EC5\u5339\u914D\u6587\u4EF6\u4F1A\u88AB\u5904\u7406.
+ActionDosToUnix.FileResult.Group.Label=\u7ED3\u679C\u6587\u4EF6\u540D
+ActionDosToUnix.FilenameAdd.Button=\u6DFB\u52A0(&A)
+ActionDosToUnix.FilenameDelete.Button=\u5220\u9664(&D)
+ActionDosToUnix.FilenameDelete.Tooltip=\u4ECE\u8868\u683C\u4E2D\u5220\u9664\u9009\u4E2D\u7684\u6587\u4EF6
+ActionDosToUnix.FilenameEdit.Button=\u7F16\u8F91(&E)
+ActionDosToUnix.FilenameEdit.Tooltip=\u7F16\u8F91\u9009\u4E2D\u7684\u6587\u4EF6
+ActionDosToUnix.Filetype.All=\u5168\u90E8\u6587\u4EF6
+ActionDosToUnix.Filetype.Xml=XML\u6587\u4EF6
+ActionDosToUnix.IncludeSubfolders.Label=\u5305\u542B\u5B50\u6587\u4EF6\u5939
+ActionDosToUnix.IncludeSubfolders.Tooltip=\u5305\u542B\u5B50\u6587\u4EF6\u5939
+ActionDosToUnix.Log.ConvertingFileToDos=\u5C06\u6587\u4EF6 [{0}] \u8F6C\u6362\u4E3A Windows \u683C\u5F0F...
+ActionDosToUnix.Log.ConvertingFileToUnix=\u5C06\u6587\u4EF6 [{0}] \u8F6C\u6362\u4E3A Unix \u683C\u5F0F...
+ActionDosToUnix.Log.CreatingTempFile=\u521B\u5EFA\u4E34\u65F6\u6587\u4EF6 [{0}]...
+ActionDosToUnix.Log.DeletingSourceFile=\u5220\u9664\u7802\u8D28\u6587\u4EF6 [{0}]...
+ActionDosToUnix.Log.ErrorConvertingFile=\u8F6C\u6362\u6587\u4EF6 [{0}] \u65F6\u51FA\u9519, \u5F02\u5E38\: {1}
+ActionDosToUnix.Log.FileAddedToResultFilesName=\u6587\u4EF6 [{0}] \u5DF2\u6DFB\u52A0\u5230\u8FD4\u56DE\u6587\u4EF6\u5217\u8868\u4E2D
+ActionDosToUnix.Log.FileExists=\u6587\u4EF6 [{0}] \u5B58\u5728.
+ActionDosToUnix.Log.Info.ErrorFiles=\u51FA\u9519\u6587\u4EF6\u603B\u6570\: {0}
+ActionDosToUnix.Log.Info.Errors=\u9519\u8BEF\u603B\u6570\: {0}
+ActionDosToUnix.Log.Info.FilesProcessed=\u6210\u529F\u5904\u7406 {0} \u4E2A\u6587\u4EF6
+ActionDosToUnix.Log.ProcessingRow=\u5904\u7406\u6587\u4EF6\u8DEF\u5F84\: [{0}]..\u5339\u914D [{1}]
+ActionDosToUnix.Name=\u6362\u884C\u7B26\u8F6C\u6362
+ActionDosToUnix.Name.Default=\u8F6C\u6362\u6587\u672C\u6587\u4EF6\u7684\u6362\u884C\u7B26
+ActionDosToUnix.Name.Label=Action \u540D\u79F0:
+ActionDosToUnix.NrErrorFilesCountLessThan.Label=\u6587\u4EF6\u4E2A\u6570
+ActionDosToUnix.NrErrorFilesCountLessThan.Tooltip=\u9519\u8BEF\u6570\u5C11\u4E8E 
+ActionDosToUnix.Previous.Label=\u590D\u5236\u4E0A\u4E00\u6B65\u7ED3\u679C\u5230\u53C2\u6570
+ActionDosToUnix.Previous.Tooltip=\u9009\u4E2D\u8BE5\u9009\u9879\u5219\u5C06\u524D\u7F6E\u901A\u9053\u4E2D\u4F20\u9012\u8FC7\u6765\u7684\u6570\u636E\u884C\u505A\u4E3A\u8BE5 Action \u7684\u53C2\u6570.\n\u8BF7\u6CE8\u610F, \u4F20\u9012\u8FC7\u6765\u53C2\u6570\u7684\u987A\u5E8F\u5FC5\u987B\u4E0E\u914D\u7F6E\u53C2\u6570\u7684\u987A\u5E8F\u4E00\u81F4! \u5373\:\n  1. \u6E90\u6587\u4EF6\u5939/\u6587\u4EF6\n 2. \u901A\u914D\u7B26
+ActionDosToUnix.Settings.Label=\u8BBE\u7F6E
+ActionDosToUnix.SourceFileFolder.Label=\u6E90\u6587\u4EF6/\u6587\u4EF6\u5939
+ActionDosToUnix.SourceFileFolder.Tooltip=\u6E90\u6587\u4EF6/\u6587\u4EF6\u5939
+ActionDosToUnix.SuccessCondition.Label=\u6210\u529F\u6761\u4EF6
+ActionDosToUnix.SuccessOn.Group.Label=\u8FD0\u884C\u6210\u529F\u6761\u4EF6
+ActionDosToUnix.SuccessWhenAllWorksFine.Label=\u6240\u6709\u7684\u6587\u4EF6\u8F6C\u6362\u6210\u529F
+ActionDosToUnix.SuccessWhenAtLeat.Label=\u8F6C\u6362\u6210\u529F\u7684\u6587\u4EF6\u4E2A\u6570\u4E0D\u5C11\u4E8E
+ActionDosToUnix.SuccessWhenBadFormedLessThan.Label=\u9519\u8BEF\u6570\u5C0F\u4E8E 
+ActionDosToUnix.Tab.Advanced.Label=\u9AD8\u7EA7
+ActionDosToUnix.Tab.General.Label=\u4E00\u822C
+ActionDosToUnix.Title=DOS \u548C UNIX \u7684\u6362\u884C\u7B26\u8F6C\u6362
+ActionDosToUnix.Wildcard.Label=\u901A\u914D\u7B26
+ActionDosToUnix.Wildcard.Tooltip=\u901A\u8FC7\u901A\u914D\u7B26\u5339\u914D\u6587\u4EF6, \u4EC5\u5904\u7406\u5339\u914D\u5230\u7684\u6587\u4EF6
+ActionDosToUnix.keyword=dos,unix,crlf
+ActionDosToUnix.log.FileFolderEmpty=\u76EE\u5F55\u540D\u79F0\u4E3A\u7A7A\!
diff --git a/plugins/actions/eval/src/main/resources/org/apache/hop/workflow/actions/eval/messages/messages_zh_CN.properties b/plugins/actions/eval/src/main/resources/org/apache/hop/workflow/actions/eval/messages/messages_zh_CN.properties
index 219819d..b88f1ce 100644
--- a/plugins/actions/eval/src/main/resources/org/apache/hop/workflow/actions/eval/messages/messages_zh_CN.properties
+++ b/plugins/actions/eval/src/main/resources/org/apache/hop/workflow/actions/eval/messages/messages_zh_CN.properties
@@ -16,14 +16,16 @@
 # limitations under the License.
 #
 #
-#
-ActionEval.LineNr.Label=\u884c\u53f7\: {0}
-ActionEval.Script.Label=JavaScirpt
-ActionEval.Name.Default=\u5224\u65ad\u6761\u4ef6
-ActionEval.Script.Default=\u811a\u672c
+ActionEval.ActionName.Label=Action \u540D\u79F0:
+ActionEval.CouldNotCompile=\u4E0D\u80FD\u7F16\u8BD1 javascript\: {0}
+ActionEval.Description=\u5728\u524D\u7F6E Action \u7684\u6267\u884C\u5B8C\u6210\u540E\u6267\u884C\u8BE5\u811A\u672C\u4E2D\u7684\u903B\u8F91
+ActionEval.ErrorEvaluating=\u5728 [{0}] \u91CC\u6709\u9519\u8BEF\u7684\u5224\u65AD\u6761\u4EF6\u8868\u8FBE\u5F0F \: {1}
+ActionEval.LineNr.Label=\u884C\u53F7\: {0}
+ActionEval.Name=JavaScript
+ActionEval.Name.Default=\u5224\u65AD\u6761\u4EF6
+ActionEval.Position.Label=\u884C {0} \u5217 {1}
+ActionEval.Script.Default=\u811A\u672C
+ActionEval.Script.Label=JavaScirpt \u811A\u672C\:
 ActionEval.Title=JavaScript
-ActionEval.Position.Label=\u884c {0} \u5217 {1}
-ActionEval.ErrorEvaluating=\u5728 [{0}] \u91cc\u6709\u9519\u8bef\u7684\u5224\u65ad\u6761\u4ef6\u8868\u8fbe\u5f0f \: {1}
-ActionEval.UnableToLoadFromXml=\u4e0d\u80fd\u4ece XML \u8282\u70b9\u52a0\u8f7d '\u5224\u65ad\u6761\u4ef6' \u4f5c\u4e1a\u9879\u7c7b\u578b
-ActionEval.ActionName.Label=\u4f5c\u4e1a\u9879\u540d\u79f0
-ActionEval.CouldNotCompile=\u4e0d\u80fd\u7f16\u8bd1 javascript\: {0}
+ActionEval.UnableToLoadFromXml=\u4E0D\u80FD\u4ECE XML \u8282\u70B9\u52A0\u8F7D '\u5224\u65AD\u6761\u4EF6' Action \u9879\u7C7B\u578B
+ActionEval.keyword=evaluation
diff --git a/plugins/actions/evalfilesmetrics/src/main/resources/org/apache/hop/workflow/actions/evalfilesmetrics/messages/messages_zh_CN.properties b/plugins/actions/evalfilesmetrics/src/main/resources/org/apache/hop/workflow/actions/evalfilesmetrics/messages/messages_zh_CN.properties
index 53d2b16..5a02ddc 100644
--- a/plugins/actions/evalfilesmetrics/src/main/resources/org/apache/hop/workflow/actions/evalfilesmetrics/messages/messages_zh_CN.properties
+++ b/plugins/actions/evalfilesmetrics/src/main/resources/org/apache/hop/workflow/actions/evalfilesmetrics/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,64 +15,89 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
+#
+ActionEvalFilesMetrics.BrowseFiles.Label=\u6587\u4EF6
+ActionEvalFilesMetrics.BrowseFolders.Label=\u6587\u4EF6\u5939
+ActionEvalFilesMetrics.Bytes.Label=\u5B57\u8282
 ActionEvalFilesMetrics.Description=Evaluate files size or files count
-ActionEvalFilesMetrics.Name=\u8ba1\u7b97\u6587\u4ef6\u5927\u5c0f\u6216\u4e2a\u6570
-ActionEvalIncludeSubFolderssMetrics.ResultFieldIncludeSubFolders.Tooltip=\u5305\u542b\u5b50\u6587\u4ef6\u5939\u4fe1\u606f\u7684\u7ed3\u679c\u884c\u5b57\u6bb5
-ActionEvalIncludeSubFolderssMetrics.ResultFieldIncludeSubFolders.Label=\u5305\u542b\u5b50\u6587\u4ef6\u7ed3\u679c\u5b57\u6bb5
-ActionEvalWildcardsMetrics.ResultFieldWildcard.Tooltip=\u5305\u542b\u901a\u914d\u7b26\u7684\u7ed3\u679c\u884c\u5b57\u6bb5
-ActionEvalFilesMetrics.Title=\u8ba1\u7b97\u6587\u4ef6\u5927\u5c0f\u6216\u8005\u4e2a\u6570
-ActionEvalFilesMetrics.FilenameDelete.Button=&\u5220\u9664
-ActionEvalFilesMetrics.Fields.Wildcard.Label=\u901a\u914d\u7b26
-ActionEvalFilesMetrics.SourceFiles.Files.Label=\u6587\u4ef6/\u6587\u4ef6\u5939
-ActionEvalWildcardsMetrics.ResultFieldWildcard.Label=\u901a\u914d\u7b26\u7ed3\u679c\u5b57\u6bb5
-ActionEvalFilesMetrics.EvaluationType.Count.Label=\u5168\u90e8\u6587\u4ef6\u6570
-ActionEvalFilesMetrics.FilenameAdd.Button=&\u6dfb\u52a0
-ActionEvalFilesMetrics.SourceFiles.FilenamesResult.Label=\u6587\u4ef6\u540d\u7ed3\u679c\u96c6
-ActionEvalFilesMetricsDialog.MaxValue.Label=\u6700\u5927\u503c
-ActionEvalFilesMetrics.Fields.Label=\u6587\u4ef6/\u6587\u4ef6\u5939\uff1a
-ActionEvalFilesMetricsDialog.CompareValue.Tooltip=\u6bd4\u8f83\u503c
-ActionEvalFilesMetricsDialog.MinValue.Tooltip=\u6700\u5c0f\u503c
-ActionEvalFilesMetrics.Fields.Wildcard.Tooltip=\u6307\u5b9a\u901a\u914d\u7b26\uff0c\u53ea\u6709\u6587\u4ef6\u540d\u7b26\u5408\u901a\u914d\u7b26\u7684\u6587\u4ef6\u624d\u4f1a\u88ab\u79fb\u52a8
+ActionEvalFilesMetrics.Error.CanNotFindField=\u5728\u8FD4\u56DE\u7ED3\u679C\u4E2D\u65E0\u6CD5\u627E\u5230\u5B57\u6BB5 [{0}]\!
+ActionEvalFilesMetrics.Error.Exception.Processing=\u5904\u7406\u6587\u4EF6 [{0}] \u65F6\u51FA\u9519, \u5F02\u5E38\: {1}
+ActionEvalFilesMetrics.Error.Exception.UnableLoadXML=\u65E0\u6CD5\u4ECE XML \u8282\u70B9\u52A0\u8F7D "\u6587\u4EF6 Metrics" \u7C7B\u578B\u7684 Action
+ActionEvalFilesMetrics.Error.FilesGridEmpty=\u6587\u4EF6/\u76EE\u5F55\u8868\u683C\u662F\u7A7A\u7684\!
+ActionEvalFilesMetrics.Error.GettingFileFromResultFilenames=\u4ECE\u8FD4\u56DE\u6587\u4EF6\u5217\u8868\u4E2D\u83B7\u53D6\u6587\u4EF6 [{0}] \u65F6\u51FA\u9519, \u5F02\u5E38\: {1}
+ActionEvalFilesMetrics.Error.GettingFileSize=\u83B7\u53D6\u6587\u4EF6 [{0}] \u7684\u5927\u5C0F\u65F6\u51FA\u9519, \u5F02\u5E38\: {1}
+ActionEvalFilesMetrics.Error.Init=\u521D\u59CB\u5316\u8981\u6BD4\u8F83\u7684\u503C\u65F6\u51FA\u9519, \u8BF7\u68C0\u67E5 compare/min/max \u503C. \u5F02\u5E38\: {0}
+ActionEvalFilesMetrics.Error.ResultFieldsFileMissing=\u7F3A\u5931\u8FD4\u56DE\u7684\u6587\u4EF6\u5B57\u6BB5\u540D\u79F0\!
+ActionEvalFilesMetrics.Error.SourceFileNotExists=\u6587\u4EF6/\u76EE\u5F55 [{0}] \u4E0D\u5B58\u5728\!
+ActionEvalFilesMetrics.Error.UnknowFileFormat=\u65E0\u6CD5\u83B7\u53D6\u6587\u4EF6 [{0}] \u7684\u6587\u4EF6\u7C7B\u578B\!
+ActionEvalFilesMetrics.EvaluationType.Count.Label=\u5168\u90E8\u6587\u4EF6\u6570
+ActionEvalFilesMetrics.EvaluationType.Size.Label=\u6587\u4EF6\u603B\u5927\u5C0F
+ActionEvalFilesMetrics.Fields.IncludeSubDirs.Label=\u5305\u542B\u5B50\u6587\u4EF6\u5939
+ActionEvalFilesMetrics.Fields.Label=\u6587\u4EF6/\u6587\u4EF6\u5939\:
+ActionEvalFilesMetrics.Fields.SourceFileFolder.Label=\u6E90\u6587\u4EF6/\u6587\u4EF6\u5939
+ActionEvalFilesMetrics.Fields.SourceFileFolder.Tooltip=\u8F93\u5165\u8981\u5904\u7406\u7684\u6587\u4EF6\u6216\u6587\u4EF6\u5939, \u5982\u679C\u662F\u6587\u4EF6\u5939\u8BF7\u9009\u4E2D\u5305\u542B\u5B50\u6587\u4EF6\u5939
+ActionEvalFilesMetrics.Fields.Wildcard.Label=\u901A\u914D\u7B26
+ActionEvalFilesMetrics.Fields.Wildcard.Tooltip=\u6307\u5B9A\u901A\u914D\u7B26, \u53EA\u6709\u6587\u4EF6\u540D\u7B26\u5408\u901A\u914D\u7B26\u7684\u6587\u4EF6\u624D\u4F1A\u88AB\u79FB\u52A8
+ActionEvalFilesMetrics.FilenameAdd.Button=\u6DFB\u52A0(&A)
+ActionEvalFilesMetrics.FilenameDelete.Button=\u5220\u9664(&D)
+ActionEvalFilesMetrics.FilenameDelete.Tooltip=\u4ECE\u8868\u683C\u5220\u9664\u9009\u4E2D\u7684\u6587\u4EF6
+ActionEvalFilesMetrics.FilenameEdit.Button=\u7F16\u8F91(&E)
+ActionEvalFilesMetrics.Filetype.All=\u5168\u90E8\u6587\u4EF6
 ActionEvalFilesMetrics.GBytes.Label=GB
-ActionEvalFilesMetricsDialog.MinValue.Label=\u6700\u5c0f\u503c
-ActionEvalFilesMetrics.ResultFieldFile.Label=\u6587\u4ef6\u7ed3\u679c\u5b57\u6bb5
-ActionEvalFilesMetrics.SourceFileFolder.Tooltip=\u6e90\u6587\u4ef6/\u6587\u4ef6\u5939
-ActionEvalFilesMetrics.FilenameEdit.Button=&\u7f16\u8f91
-ActionEvalFilesMetrics.log.FileFolderEmpty=\u6587\u4ef6\u540d\u4e3a\u7a7a\uff01
-ActionEvalFilesMetrics.Wildcard.Label=\u901a\u914d\u7b26
 ActionEvalFilesMetrics.KBytes.Label=KB
-ActionEvalFilesMetrics.FilenameDelete.Tooltip=\u4ece\u8868\u683c\u5220\u9664\u9009\u4e2d\u7684\u6587\u4ef6
-ActionEvalFilesMetrics.BrowseFolders.Label=\u6587\u4ef6\u5939
+ActionEvalFilesMetrics.Log.AddedFileSize=\u4ECE\u6587\u4EF6 [{1}] \u5DF2\u6DFB\u52A0 {0} \u5B57\u8282
+ActionEvalFilesMetrics.Log.ArgFromPrevious.Found=\u4ECE\u524D\u7F6E\u901A\u9053\u4E2D\u6536\u5230 {0} \u884C\u6570\u636E\u4F5C\u4E3A\u53C2\u6570
+ActionEvalFilesMetrics.Log.CompareWithValue=\u6BD4\u8F83\u6587\u4EF6\u5927\u5C0F {0} \u7528\u503C {1}...
+ActionEvalFilesMetrics.Log.CompareWithValues=\u6BD4\u8F83\u6587\u4EF6\u5927\u5C0F {0} \u5E94\u5728 [{1}, {2}] \u8303\u56F4\u5185...
+ActionEvalFilesMetrics.Log.FileExists=\u5B58\u5728\u6587\u4EF6 [{0}]\!
+ActionEvalFilesMetrics.Log.GetFile=\u83B7\u53D6\u6587\u4EF6 [{0}](\u5E8F\u53F7 {1})
+ActionEvalFilesMetrics.Log.Info.FilesCount=\u6587\u4EF6\u603B\u6570\: {0}
+ActionEvalFilesMetrics.Log.Info.FilesSize=\u6587\u4EF6\u5927\u5C0F\: {0} \u5B57\u8282
+ActionEvalFilesMetrics.Log.Info.NrErrors=\u51FA\u9519\u6587\u4EF6\u4E2A\u6570\: {0}
+ActionEvalFilesMetrics.Log.ProcessingRow=\u5904\u7406\u6570\u636E\u884C \u6E90\u8DEF\u5F84\: [{0}, \u5339\u914D\: [{1}]
+ActionEvalFilesMetrics.Log.ResultFilenames.Found=\u4ECE\u8FD4\u56DE\u6587\u4EF6\u5217\u8868\u627E\u5230 {0} \u4E2A\u6587\u4EF6
 ActionEvalFilesMetrics.MBytes.Label=MB
-ActionEvalFilesMetrics.ResultFilenamesWildcard.Tooltip=\u901a\u914d\u7b26
-ActionEvalFilesMetricsDialog.MaxValue.Tooltip=\u6700\u5927\u503c
-ActionEvalFilesMetricsDialog.Scale.Label=\u5355\u4f4d
-ActionEvalFilesMetrics.ResultFieldFile.Tooltip=\u7ed3\u679c\u7684\u884c\u5b57\u6bb5\u5305\u542b\u6587\u4ef6/\u6587\u4ef6\u5939\u540d
-ActionEvalFilesMetrics.Wildcard.Tooltip=\u53ea\u6709\u6587\u4ef6\u540d\u7b26\u5408\u901a\u914d\u7b26\u5b9a\u4e49\u7684\u6587\u4ef6\u624d\u4f1a\u88ab\u68c0\u67e5
-ActionEvalFilesMetrics.ResultFilenamesWildcard.Label=\u901a\u914d\u7b26
-ActionEvalFilesMetrics.Tab.Advanced.Label=\u9ad8\u7ea7
-ActionEvalFilesMetricsDialog.SourceFiles.Label=\u6e90\u6587\u4ef6
-ActionEvalFilesMetricsDialog.SuccessCondition.Label=\u6210\u529f\u6761\u4ef6
-ActionEvalFilesMetrics.Tab.General.Label=\u4e00\u822c
-ActionEvalFilesMetrics.Filetype.All=\u5168\u90e8\u6587\u4ef6
-ActionEvalFilesMetrics.Fields.SourceFileFolder.Label=\u6e90\u6587\u4ef6/\u6587\u4ef6\u5939
-ActionEvalFilesMetrics.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0\uff1a
-ActionEvalFilesMetricsDialog.CompareValue.Label=\u503c
-ActionEvalFilesMetrics.SourceFileFolder.Label=\u6e90\u6587\u4ef6/\u6587\u4ef6\u5939
-ActionEvalFilesMetrics.Bytes.Label=\u5b57\u8282
-ActionEvalFilesMetrics.SuccessOn.Group.Label=\u6210\u529f\u6761\u4ef6
-ActionEvalFilesMetrics.SuccessWhenDifferent.Label=\u5982\u679c\u503c\u4e0d\u7b49\u4e8e
-ActionEvalFilesMetrics.SuccessWhenEqual.Label=\u5982\u679c\u503c\u4e0d\u7b49\u4e8e
-ActionEvalFilesMetrics.SuccessWhenGreaterThan.Label=\u5982\u679c\u503c\u5927\u4e8e
+ActionEvalFilesMetrics.Name=\u8BA1\u7B97\u6587\u4EF6\u5927\u5C0F\u6216\u4E2A\u6570
+ActionEvalFilesMetrics.Name.Default=\u6587\u4EF6 Metrics
+ActionEvalFilesMetrics.Name.Label=Action \u540D\u79F0\:
+ActionEvalFilesMetrics.ResultFieldFile.Label=\u6587\u4EF6\u7ED3\u679C\u5B57\u6BB5
+ActionEvalFilesMetrics.ResultFieldFile.Tooltip=\u7ED3\u679C\u7684\u884C\u5B57\u6BB5\u5305\u542B\u6587\u4EF6/\u6587\u4EF6\u5939\u540D
+ActionEvalFilesMetrics.ResultFilenamesWildcard.Label=\u901A\u914D\u7B26
+ActionEvalFilesMetrics.ResultFilenamesWildcard.Tooltip=\u901A\u914D\u7B26
+ActionEvalFilesMetrics.Settings.Label=\u8BBE\u7F6E
+ActionEvalFilesMetrics.SourceFileFolder.Label=\u6E90\u6587\u4EF6/\u6587\u4EF6\u5939
+ActionEvalFilesMetrics.SourceFileFolder.Tooltip=\u6E90\u6587\u4EF6/\u6587\u4EF6\u5939
+ActionEvalFilesMetrics.SourceFiles.FilenamesResult.Label=\u6587\u4EF6\u540D\u7ED3\u679C\u96C6
+ActionEvalFilesMetrics.SourceFiles.Files.Label=\u6587\u4EF6/\u6587\u4EF6\u5939
+ActionEvalFilesMetrics.SourceFiles.PreviousResult.Label=\u4E0A\u4E00\u6B65\u7ED3\u679C\u884C
+ActionEvalFilesMetrics.SuccessBetween.Label=\u5982\u679C\u503C\u5728\u533A\u95F4\u8303\u56F4\u5185
+ActionEvalFilesMetrics.SuccessOn.Group.Label=\u6210\u529F\u6761\u4EF6
+ActionEvalFilesMetrics.SuccessWhenDifferent.Label=\u5982\u679C\u503C\u4E0D\u7B49\u4E8E
+ActionEvalFilesMetrics.SuccessWhenEqual.Label=\u5982\u679C\u503C\u4E0D\u7B49\u4E8E
 ActionEvalFilesMetrics.SuccessWhenGreaterOrEqualThan.Label=If value is greater or equal
-ActionEvalFilesMetrics.SuccessWhenSmallThan.Label=\u5982\u679c\u503c\u5c0f\u4e8e
+ActionEvalFilesMetrics.SuccessWhenGreaterThan.Label=\u5982\u679C\u503C\u5927\u4E8E
+ActionEvalFilesMetrics.SuccessWhenInList.Label=\u5982\u679C\u503C\u5728\u5217\u8868\u4E2D
+ActionEvalFilesMetrics.SuccessWhenNotInList.Label=\u5982\u679C\u503C\u4E0D\u5728\u5217\u8868\u4E2D
 ActionEvalFilesMetrics.SuccessWhenSmallOrEqualThan.Label=If value is smaller or equal
-ActionEvalFilesMetrics.SuccessWhenInList.Label=\u5982\u679c\u503c\u5728\u5217\u8868\u4e2d
-ActionEvalFilesMetrics.SuccessWhenNotInList.Label=\u5982\u679c\u503c\u4e0d\u5728\u5217\u8868\u4e2d
-ActionEvalFilesMetrics.Fields.SourceFileFolder.Tooltip=\u8f93\u5165\u8981\u5904\u7406\u7684\u6587\u4ef6\u6216\u6587\u4ef6\u5939\uff0c\u5982\u679c\u662f\u6587\u4ef6\u5939\u8bf7\u9009\u4e2d\u5305\u542b\u5b50\u6587\u4ef6\u5939
-ActionEvalFilesMetrics.Fields.IncludeSubDirs.Label=\u5305\u542b\u5b50\u6587\u4ef6\u5939
-ActionEvalFilesMetricsDialog.EvaluationType.Label=\u8bc4\u4f30
-ActionEvalFilesMetrics.EvaluationType.Size.Label=\u6587\u4ef6\u603b\u5927\u5c0f
-ActionEvalFilesMetrics.Settings.Label=\u8bbe\u7f6e
-ActionEvalFilesMetrics.SourceFiles.PreviousResult.Label=\u4e0a\u4e00\u6b65\u7ed3\u679c\u884c
-ActionEvalFilesMetrics.BrowseFiles.Label=\u6587\u4ef6
+ActionEvalFilesMetrics.SuccessWhenSmallThan.Label=\u5982\u679C\u503C\u5C0F\u4E8E
+ActionEvalFilesMetrics.Tab.Advanced.Label=\u9AD8\u7EA7
+ActionEvalFilesMetrics.Tab.General.Label=\u4E00\u822C
+ActionEvalFilesMetrics.Title=\u8BA1\u7B97\u6587\u4EF6\u5927\u5C0F\u6216\u8005\u4E2A\u6570
+ActionEvalFilesMetrics.Wildcard.Label=\u901A\u914D\u7B26
+ActionEvalFilesMetrics.Wildcard.Tooltip=\u53EA\u6709\u6587\u4EF6\u540D\u7B26\u5408\u901A\u914D\u7B26\u5B9A\u4E49\u7684\u6587\u4EF6\u624D\u4F1A\u88AB\u68C0\u67E5
+ActionEvalFilesMetrics.keyword=evaluation,files
+ActionEvalFilesMetrics.log.FileFolderEmpty=\u6587\u4EF6\u540D\u4E3A\u7A7A!
+ActionEvalFilesMetricsDialog.CompareValue.Label=\u503C
+ActionEvalFilesMetricsDialog.CompareValue.Tooltip=\u6BD4\u8F83\u503C
+ActionEvalFilesMetricsDialog.EvaluationType.Label=\u8BC4\u4F30
+ActionEvalFilesMetricsDialog.MaxValue.Label=\u6700\u5927\u503C
+ActionEvalFilesMetricsDialog.MaxValue.Tooltip=\u6700\u5927\u503C
+ActionEvalFilesMetricsDialog.MinValue.Label=\u6700\u5C0F\u503C
+ActionEvalFilesMetricsDialog.MinValue.Tooltip=\u6700\u5C0F\u503C
+ActionEvalFilesMetricsDialog.Scale.Label=\u5355\u4F4D
+ActionEvalFilesMetricsDialog.SourceFiles.Label=\u6E90\u6587\u4EF6
+ActionEvalFilesMetricsDialog.SuccessCondition.Label=\u6210\u529F\u6761\u4EF6
+ActionEvalIncludeSubFolderssMetrics.ResultFieldIncludeSubFolders.Label=\u5305\u542B\u5B50\u6587\u4EF6\u7ED3\u679C\u5B57\u6BB5
+ActionEvalIncludeSubFolderssMetrics.ResultFieldIncludeSubFolders.Tooltip=\u5305\u542B\u5B50\u6587\u4EF6\u5939\u4FE1\u606F\u7684\u7ED3\u679C\u884C\u5B57\u6BB5
+ActionEvalWildcardsMetrics.ResultFieldWildcard.Label=\u901A\u914D\u7B26\u7ED3\u679C\u5B57\u6BB5
+ActionEvalWildcardsMetrics.ResultFieldWildcard.Tooltip=\u5305\u542B\u901A\u914D\u7B26\u7684\u7ED3\u679C\u884C\u5B57\u6BB5
diff --git a/plugins/actions/evaluatetablecontent/src/main/resources/org/apache/hop/workflow/actions/evaluatetablecontent/messages/messages_zh_CN.properties b/plugins/actions/evaluatetablecontent/src/main/resources/org/apache/hop/workflow/actions/evaluatetablecontent/messages/messages_zh_CN.properties
index 1ff6b52..c71066e 100644
--- a/plugins/actions/evaluatetablecontent/src/main/resources/org/apache/hop/workflow/actions/evaluatetablecontent/messages/messages_zh_CN.properties
+++ b/plugins/actions/evaluatetablecontent/src/main/resources/org/apache/hop/workflow/actions/evaluatetablecontent/messages/messages_zh_CN.properties
@@ -16,40 +16,55 @@
 # limitations under the License.
 #
 #
-#
-ActionEvalTableContent.Description=Evaluate the content of a table.\n You can also specify a SQL query.
-ActionEvalTableContent.Name=\u8ba1\u7b97\u8868\u4e2d\u7684\u8bb0\u5f55\u6570
-ActionEvalTableContent.DialogCaptionError2=\u9519\u8bef
-ActionEvalTableContent.AnErrorOccurred=\u51fa\u73b0\u4e86\u4e00\u4e2a\u9519\u8bef
-ActionEvalTableContent.Limit.Tooltip=\u6570\u503c
-ActionEvalTableContent.SuccessWhenRowCountDifferent.Label=\u4e0d\u7b49\u4e8e
-ActionEvalTableContent.Name.Default=\u9a8c\u8bc1\u8868\u4e2d\u7684\u884c\u6570
-ActionEvalTableContent.AddRowsToResult.Label=\u5728\u7ed3\u679c\u4e2d\u6dfb\u52a0\u884c
-ActionEvalTableContent.NoDbConnection=\u6ca1\u6709\u5b9a\u4e49\u6570\u636e\u5e93\u8fde\u63a5
-ActionEvalTableContent.Schemaname.Tooltip=\u8868\u7684\u6a21\u5f0f\u7684\u540d\u79f0
-ActionEvalTableContent.Tablename.Tooltip=\u9700\u8981\u5bfc\u5165\u7684\u8868\u6216\u8005\u89c6\u56fe
-ActionEvalTableContent.SuccessWhenRowCountSmallerOrEqualThan.Label=\u4e0d\u5927\u4e8e
-ActionEvalTableContent.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0:
-ActionEvalTableContent.ConnectionNoLongerAvailable=\u8fde\u63a5\u4e0d\u53ef\u7528
-ActionEvalTableContent.Schemaname.Label=\u76ee\u6807\u6a21\u5f0f
-ActionEvalTableContent.Limit.Label=\u6570\u503c
-ActionEvalTableContent.customSQL.Tooltip=\u81ea\u5b9a\u4e49SQL
-ActionEvalTableContent.Tablename.Label=\u76ee\u6807\u8868\u540d\u79f0:
-ActionEvalTableContent.SuccessWhenRowCountGreaterOrEqual.Label=\u4e0d\u5c0f\u4e8e
-ActionEvalTableContent.Title=\u8ba1\u7b97\u8868\u4e2d\u7684\u8bb0\u5f55\u6570
-ActionEvalTableContent.CustomGroup.Group.Label=\u81ea\u5b9a\u4e49SQL
-ActionEvalTableContent.customSQL.Label=\u81ea\u5b9a\u4e49SQL
-ActionEvalTableContent.SuccessWhenRowCountSmallerThan.Label=\u5c0f\u4e8e
-ActionEvalTableContent.SuccessGroup.Group.Label=\u6210\u529f\u6761\u4ef6
-ActionEvalTableContent.SuccessWhenRowCountEqual.Label=\u7b49\u4e8e
-ActionEvalTableContent.ConnectionError2.DialogMessage=\u8bf7\u9009\u62e9\u4e00\u4e2a\u53ef\u7528\u7684\u6570\u636e\u5e93\u8fde\u63a5
-ActionEvalTableContent.ClearResultList.Label=\u5728\u6267\u884c\u524d\u6e05\u7a7a\u7ed3\u679c\u884c\u5217\u8868
-ActionEvalTableContent.DialogCaptionQuestion=\u95ee\u9898\uff1f
-ActionEvalTableContent.SuccessCondition.Label=\u6ee1\u8db3\u6210\u529f\u6761\u4ef6\u7684\u884c\u6570
-ActionEvalTableContent.SuccessWhenRowCountGreaterThan.Label=\u5927\u4e8e
-ActionEvalTableContent.Script.Label=SQL\u811a\u672c
-ActionEvalTableContent.ClearResultList.Tooltip=\u5728\u8fd0\u884c\u4f5c\u4e1a\u9879\u4e4b\u524d\u5220\u9664\u7ed3\u679c\u4e2d\u6240\u6709\u7684\u6570\u636e\u884c
-ActionEvalTableContent.DialogCaptionError4=\u9519\u8bef
-ActionEvalTableContent.DialogCaptionError3=\u9519\u8bef\uff01
-ActionEvalTableContent.UseVariableSubst.Label=\u4f7f\u7528\u53d8\u91cf\u66ff\u6362 
-ActionEvalTableContent.GetSQLAndSelectStatement=\u83b7\u53d6 SELECT SQL...
+ActionEvalTableContent.AddRowsToResult.Label=\u5728\u7ED3\u679C\u4E2D\u6DFB\u52A0\u884C
+ActionEvalTableContent.AddRowsToResult.Tooltip=\u67E5\u8BE2\u7ED3\u679C\u96C6\u6DFB\u52A0\u5230\u8FD4\u56DE\u7ED3\u679C\u4E2D
+ActionEvalTableContent.AnErrorOccurred=\u51FA\u73B0\u4E86\u4E00\u4E2A\u9519\u8BEF
+ActionEvalTableContent.ClearResultList.Label=\u5728\u6267\u884C\u524D\u6E05\u7A7A\u7ED3\u679C\u884C\u5217\u8868
+ActionEvalTableContent.ClearResultList.Tooltip=\u5728\u8FD0\u884C Action \u9879\u4E4B\u524D\u5220\u9664\u7ED3\u679C\u4E2D\u6240\u6709\u7684\u6570\u636E\u884C
+ActionEvalTableContent.ConnectionError2.DialogMessage=\u8BF7\u9009\u62E9\u4E00\u4E2A\u53EF\u7528\u7684\u6570\u636E\u5E93\u8FDE\u63A5
+ActionEvalTableContent.ConnectionNoLongerAvailable=\u8FDE\u63A5\u4E0D\u53EF\u7528
+ActionEvalTableContent.CustomGroup.Group.Label=\u81EA\u5B9A\u4E49SQL
+ActionEvalTableContent.Description=\u9A8C\u8BC1\u8868\u4E2D\u8BB0\u5F55\u6570\u662F\u5426\u7B26\u5408\u6307\u5B9A\u6761\u4EF6, \u53EF\u81EA\u5B9A\u4E49\u8FC7\u6EE4\u6761\u4EF6
+ActionEvalTableContent.DialogCaptionError2=\u9519\u8BEF
+ActionEvalTableContent.DialogCaptionError3=\u9519\u8BEF!
+ActionEvalTableContent.DialogCaptionError4=\u9519\u8BEF
+ActionEvalTableContent.DialogCaptionQuestion=\u95EE\u9898?
+ActionEvalTableContent.ERROR_CouldNotRetrieveFields=\u62B1\u6B49, \u65E0\u6CD5\u68C0\u7D22\u5B57\u6BB5\u5143\u6570\u636E\u4FE1\u606F\!
+ActionEvalTableContent.Error.NoCustomSQL=\u5FC5\u9700\u6307\u5B9A\u81EA\u5B9A\u4E49 SQL \u67E5\u8BE2\u811A\u672C\u6216\u7981\u7528 [\u81EA\u5B9A\u4E49 SQL] \u9009\u9879\!
+ActionEvalTableContent.Error.NoTableName=\u672A\u6307\u5B9A\u8868\u540D\u79F0\!
+ActionEvalTableContent.Error.RunningEntry=\u6267\u884C\u8BE5 Action \u65F6\u51FA\u9519\: {0}
+ActionEvalTableContent.GetSQLAndSelectStatement=\u83B7\u53D6 SELECT SQL...
+ActionEvalTableContent.IncludeFieldNamesInSQL=\u60A8\u60F3\u5728 SQL \u811A\u672C\u4E2D\u4F7F\u7528\u5E26\u5B57\u6BB5\u540D\u79F0\u7684\u67E5\u8BE2\u65B9\u5F0F\u5417?
+ActionEvalTableContent.Limit.Label=\u6570\u503C
+ActionEvalTableContent.Limit.Tooltip=\u6570\u503C
+ActionEvalTableContent.Log.EnteredCustomSQL=\u4F7F\u7528\u4E0B\u9762 SQL \u811A\u672C\u67E5\u8BE2\: {0}
+ActionEvalTableContent.Log.NrRowsReturned=\u6CA1\u6709\u8FD4\u56DE\u6570\u636E\u884C
+ActionEvalTableContent.Log.RunSQLStatement=\u5C06\u4F7F\u7528\u4E0B\u9762 SQL \u811A\u672C\u8FDB\u884C\u67E5\u8BE2\: {0}
+ActionEvalTableContent.Log.customSQLreturnedNothing=\u81EA\u5B9A\u4E49 SQL \u811A\u672C\u6CA1\u6709\u8FD4\u56DE\u4EFB\u4F55\u6570\u636E\: {0}
+ActionEvalTableContent.Log.nrRowsLimit=\u9650\u5236\u6700\u5927\u884C\u6570\: {0}
+ActionEvalTableContent.Name=\u9A8C\u8BC1\u8868\u884C\u6570
+ActionEvalTableContent.Name.Default=\u9A8C\u8BC1\u8868\u884C\u6570
+ActionEvalTableContent.Name.Label=Action \u540D\u79F0\:
+ActionEvalTableContent.NoDbConnection=\u6CA1\u6709\u5B9A\u4E49\u6570\u636E\u5E93\u8FDE\u63A5
+ActionEvalTableContent.PerhapsNoPermissions=\u60A8\u53EF\u80FD\u6CA1\u6709\u67E5\u8BE2\u5143\u6570\u636E\u7684\u6743\u9650?
+ActionEvalTableContent.Position.Label=\u884C {0} \u5217 {1}
+ActionEvalTableContent.Schemaname.Label=\u76EE\u6807\u6A21\u5F0F
+ActionEvalTableContent.Schemaname.Tooltip=\u8868\u7684\u6A21\u5F0F\u7684\u540D\u79F0
+ActionEvalTableContent.Script.Label=SQL\u811A\u672C
+ActionEvalTableContent.SuccessCondition.Label=\u6EE1\u8DB3\u6210\u529F\u6761\u4EF6\u7684\u884C\u6570
+ActionEvalTableContent.SuccessGroup.Group.Label=\u6210\u529F\u6761\u4EF6
+ActionEvalTableContent.SuccessWhenRowCountDifferent.Label=\u4E0D\u7B49\u4E8E
+ActionEvalTableContent.SuccessWhenRowCountEqual.Label=\u7B49\u4E8E
+ActionEvalTableContent.SuccessWhenRowCountGreaterOrEqual.Label=\u4E0D\u5C0F\u4E8E
+ActionEvalTableContent.SuccessWhenRowCountGreaterThan.Label=\u5927\u4E8E
+ActionEvalTableContent.SuccessWhenRowCountSmallerOrEqualThan.Label=\u4E0D\u5927\u4E8E
+ActionEvalTableContent.SuccessWhenRowCountSmallerThan.Label=\u5C0F\u4E8E
+ActionEvalTableContent.Tablename.Label=\u76EE\u6807\u8868\u540D\u79F0\:
+ActionEvalTableContent.Tablename.Tooltip=\u9700\u8981\u5BFC\u5165\u7684\u8868\u6216\u8005\u89C6\u56FE
+ActionEvalTableContent.Title=\u9A8C\u8BC1\u8868\u884C\u6570
+ActionEvalTableContent.UnableLoadXML=\u65E0\u6CD5\u4ECE XML \u8282\u70B9\u52A0\u8F7D "\u9A8C\u8BC1\u8868\u884C\u6570" \u7C7B\u578B\u7684 Action
+ActionEvalTableContent.UseVariableSubst.Label=\u4F7F\u7528\u53D8\u91CF\u66FF\u6362 
+ActionEvalTableContent.UseVariableSubst.Tooltip=\u5C06 SQL \u811A\u672C\u4E2D\u7684\u73AF\u5883\u53D8\u91CF\u66FF\u6362\u4E3A\u5176\u5B9E\u9645\u503C.\n\u73AF\u5883\u53D8\u91CF\u7684\u683C\u5F0F\u53D6\u51B3\u4E8E\u64CD\u4F5C\u7CFB\u7EDF(\u5747\u4E0D\u5E26\u5F15\u53F7)\uFF1A\n * \u5728 Windows \u4E0A, \u4F7F\u7528 "\#\#" \u62EC\u8D77\u6765\n * \u5728 Unix \u4E0A, \u4F7F\u7528 "${}" \u62EC\u8D77\u6765
+ActionEvalTableContent.customSQL.Label=\u81EA\u5B9A\u4E49SQL
+ActionEvalTableContent.customSQL.Tooltip=\u81EA\u5B9A\u4E49SQL
+ActionEvalTableContent.keyword=evaluation,tabale,content
diff --git a/plugins/actions/filecompare/src/main/resources/org/apache/hop/workflow/actions/filecompare/messages/messages_zh_CN.properties b/plugins/actions/filecompare/src/main/resources/org/apache/hop/workflow/actions/filecompare/messages/messages_zh_CN.properties
index 10c6fe0..46f6be5 100644
--- a/plugins/actions/filecompare/src/main/resources/org/apache/hop/workflow/actions/filecompare/messages/messages_zh_CN.properties
+++ b/plugins/actions/filecompare/src/main/resources/org/apache/hop/workflow/actions/filecompare/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,13 +15,21 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-ActionFileCompare.Description=\u6bd4\u8f83\u4e24\u4e2a\u6587\u4ef6
-ActionFileCompare.Name=\u6bd4\u8f83\u6587\u4ef6
-ActionFileCompare.Filename2.Label=\u6587\u4ef62
-ActionFileCompare.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0
-ActionWaitForFile.FilenameAdded=\u6587\u4ef6\u540d[{0}]\u88ab\u6dfb\u52a0\u5230\u6587\u4ef6\u540d\u7ed3\u679c\u96c6\u4e2d
-ActionFileCompare.Filetype.All=\u6240\u6709\u6587\u4ef6
-ActionFileCompare.AddFilenameResult.Label=\u6dfb\u52a0\u6587\u4ef6\u540d\u5230\u7ed3\u679c\u4e2d
-ActionFileCompare.Title=\u6bd4\u8f83\u6587\u4ef6
-ActionFileCompare.Name.Default=\u6bd4\u8f83\u6587\u4ef6
-ActionFileCompare.Filename1.Label=\u6587\u4ef61
+#
+ActionFileCompare.AddFilenameResult.Label=\u6DFB\u52A0\u6587\u4EF6\u540D\u5230\u7ED3\u679C\u4E2D\:
+ActionFileCompare.AddFilenameResult.Tooltip=\u9009\u4E2D\u8BE5\u9009\u9879\u5C06\u6DFB\u52A0\u6587\u4EF6\u5230\u8FD4\u56DE\u6587\u4EF6\u5217\u8868\u4E2D
+ActionFileCompare.Description=\u6BD4\u8F83\u4E24\u4E2A\u6587\u4EF6
+ActionFileCompare.ERROR_0001_Unable_To_Load_From_Xml_Node=\u65E0\u6CD5\u4ECE XML \u8282\u70B9\u52A0\u8F7D "\u6BD4\u8F83\u6587\u4EF6" \u7C7B\u578B\u7684 Action
+ActionFileCompare.ERROR_0004_File1_Does_Not_Exist=\u7B2C\u4E00\u4E2A\u6587\u4EF6 [{0}] \u4E0D\u5B58\u5728.
+ActionFileCompare.ERROR_0005_File2_Does_Not_Exist=\u7B2C\u4E8C\u4E2A\u6587\u4EF6 [{0}] \u4E0D\u5B58\u5728.
+ActionFileCompare.ERROR_0006_Need_Two_Filenames=\u6BD4\u8F83\u6587\u4EF6\u5185\u5BB9\u9700\u8981 2 \u4E2A\u6587\u4EF6\u540D\u79F0.
+ActionFileCompare.ERROR_0007_Comparing_Files=\u6BD4\u8F83\u6587\u4EF6 [{0}] \u4E0E [{1}] \u65F6\u53D1\u751F\u9519\u8BEF\: {2}
+ActionFileCompare.Filename1.Label=\u6587\u4EF61\:
+ActionFileCompare.Filename2.Label=\u6587\u4EF62\:
+ActionFileCompare.Filetype.All=\u6240\u6709\u6587\u4EF6
+ActionFileCompare.Name=\u6BD4\u8F83\u6587\u4EF6
+ActionFileCompare.Name.Default=\u6BD4\u8F83\u6587\u4EF6
+ActionFileCompare.Name.Label=Action \u540D\u79F0:
+ActionFileCompare.Title=\u6BD4\u8F83\u6587\u4EF6
+ActionFileCompare.keyword=file,compare
+ActionWaitForFile.FilenameAdded=\u6587\u4EF6\u540D[{0}]\u88AB\u6DFB\u52A0\u5230\u6587\u4EF6\u540D\u7ED3\u679C\u96C6\u4E2D
diff --git a/plugins/actions/fileexists/src/main/resources/org/apache/hop/workflow/actions/fileexists/messages/messages_zh_CN.properties b/plugins/actions/fileexists/src/main/resources/org/apache/hop/workflow/actions/fileexists/messages/messages_zh_CN.properties
index 6844b69..dedbda0 100644
--- a/plugins/actions/fileexists/src/main/resources/org/apache/hop/workflow/actions/fileexists/messages/messages_zh_CN.properties
+++ b/plugins/actions/fileexists/src/main/resources/org/apache/hop/workflow/actions/fileexists/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,14 +15,21 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
+#
+ActionFileExists.Description=\u68C0\u6D4B\u6587\u4EF6\u662F\u5426\u5B58\u5728
+ActionFileExists.ERROR_0001_Cannot_Load_Job_Entry_From_Xml_Node=\u65E0\u6CD5\u4ECE XML \u8282\u70B9\u52A0\u8F7D "\u6587\u4EF6\u5B58\u5728" \u7C7B\u578B\u7684 Action
+ActionFileExists.ERROR_0004_IO_Exception=\u68C0\u6D4B\u6587\u4EF6\u662F\u5426\u5B58\u5728\u65F6\u51FA\u9519\: {0}
+ActionFileExists.ERROR_0005_No_Filename_Defined=\u672A\u6307\u5B9A\u6587\u4EF6\u540D.
+ActionFileExists.File_Does_Not_Exist=\u6587\u4EF6[{0}]\u4E0D\u5B58\u5728
+ActionFileExists.File_Exists=\u6587\u4EF6[{0}]\u5B58\u5728
+ActionFileExists.Filename.Label=\u6587\u4EF6\u540D\:
+ActionFileExists.Filetype.All=\u6240\u6709\u6587\u4EF6
+ActionFileExists.Filetype.CSV=CSV\u6587\u4EF6
+ActionFileExists.Filetype.Text=\u6587\u672C\u6587\u4EF6
+ActionFileExists.Name=\u6587\u4EF6\u5B58\u5728
+ActionFileExists.Name.Default=\u6587\u4EF6\u5B58\u5728
+ActionFileExists.Name.Label=Action \u540D\u79F0:
+ActionFileExists.Title=\u68C0\u67E5\u4E00\u4E2A\u6587\u4EF6\u662F\u5426\u5B58\u5728
+ActionFileExists.keyword=file,exist
 ActionFilesExist.Description=Checks if files exists
-ActionFilesExist.Name=\u68c0\u67e5\u591a\u4e2a\u6587\u4ef6\u662f\u5426\u5b58\u5728
-ActionFileExists.Filetype.CSV=CSV\u6587\u4ef6
-ActionFileExists.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0
-ActionFileExists.File_Does_Not_Exist=\u6587\u4ef6[{0}]\u4e0d\u5b58\u5728
-ActionFileExists.Title=\u68c0\u67e5\u4e00\u4e2a\u6587\u4ef6\u662f\u5426\u5b58\u5728
-ActionFileExists.Name.Default=\u6587\u4ef6\u5b58\u5728
-ActionFileExists.Filetype.Text=\u6587\u672c\u6587\u4ef6
-ActionFileExists.File_Exists=\u6587\u4ef6[{0}]\u5b58\u5728
-ActionFileExists.Filetype.All=\u6240\u6709\u6587\u4ef6
-ActionFileExists.Filename.Label=\u6587\u4ef6\u540d\uff1a
+ActionFilesExist.Name=\u68C0\u67E5\u591A\u4E2A\u6587\u4EF6\u662F\u5426\u5B58\u5728
diff --git a/plugins/actions/filesexist/src/main/resources/org/apache/hop/workflow/actions/filesexist/messages/messages_zh_CN.properties b/plugins/actions/filesexist/src/main/resources/org/apache/hop/workflow/actions/filesexist/messages/messages_zh_CN.properties
index b7a3a29..91a783c 100644
--- a/plugins/actions/filesexist/src/main/resources/org/apache/hop/workflow/actions/filesexist/messages/messages_zh_CN.properties
+++ b/plugins/actions/filesexist/src/main/resources/org/apache/hop/workflow/actions/filesexist/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,24 +15,28 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-ActionFilesExist.Description=Checks if files exists
-ActionFilesExist.Name=\u68c0\u67e5\u591a\u4e2a\u6587\u4ef6\u662f\u5426\u5b58\u5728
-ActionFilesExist.FilenameEdit.Tooltip=\u7F16\u8F91\u9009\u4E2D\u7684\u6587\u4EF6
-ActionFilesExist.Fields.Label=\u6587\u4EF6/\u6587\u4EF6\u5939\uFF1A
-ActionFilesExist.FilenameDelete.Button=&\u5220\u9664
-ActionFilesExist.Filename.Label=\u6587\u4EF6/\u6587\u4EF6\u5939\u540D\uFF1A
-ActionFilesExist.File_Does_Not_Exist=\u6587\u4EF6[{0}]\u4E0D\u5B58\u5728\uFF01
-ActionFilesExist.FilenameAdd.Button=&\u6DFB\u52A0
-ActionFilesExist.FilenameDelete.Tooltip=\u4ECE\u8868\u683C\u4E2D\u5220\u9664\u9009\u4E2D\u7684\u6587\u4EF6
-ActionFilesExist.Title=\u68C0\u67E5\u591A\u4E2A\u6587\u4EF6\u662F\u5426\u5B58\u5728
-ActionFilesExist.Filetype.Text=\u6587\u672C\u6587\u4EF6
-ActionFilesExist.File_Exists=\u6587\u4EF6[{0}]\u5B58\u5728
+#
+ActionFilesExist.BrowseFiles.Label=\u6587\u4EF6
 ActionFilesExist.BrowseFolders.Label=\u6587\u4EF6\u5939
-ActionFilesExist.FilenameEdit.Button=&\u7F16\u8F91
-ActionFilesExist.Name.Label=\u4F5C\u4E1A\u9879\u540D\u79F0\uFF1A
+ActionFilesExist.Description=Checks if files exists
+ActionFilesExist.ERROR_0001_Cannot_Load_Job_Entry_From_Xml_Node=\u65E0\u6CD5\u4ECE XML \u8282\u70B9\u52A0\u8F7D "\u6587\u4EF6\u5B58\u5728" \u7C7B\u578B\u7684 Action
+ActionFilesExist.ERROR_0004_IO_Exception=\u68C0\u67E5\u6587\u4EF6\u662F\u5426\u5B58\u5728\u65F6\u53D1\u751F\u9519\u8BEF\: {0}
+ActionFilesExist.Fields.Argument.Label=\u6587\u4EF6/\u6587\u4EF6\u5939
 ActionFilesExist.Fields.Column=\u6307\u5B9A\u8981\u5220\u9664\u7684\u6587\u4EF6
+ActionFilesExist.Fields.Label=\u6587\u4EF6/\u6587\u4EF6\u5939\:
+ActionFilesExist.File_Does_Not_Exist=\u6587\u4EF6[{0}]\u4E0D\u5B58\u5728!
+ActionFilesExist.File_Exists=\u6587\u4EF6[{0}]\u5B58\u5728
+ActionFilesExist.Filename.Label=\u6587\u4EF6/\u6587\u4EF6\u5939\u540D\:
+ActionFilesExist.FilenameAdd.Button=\u6DFB\u52A0
+ActionFilesExist.FilenameDelete.Button=\u5220\u9664
+ActionFilesExist.FilenameDelete.Tooltip=\u4ECE\u8868\u683C\u4E2D\u5220\u9664\u9009\u4E2D\u7684\u6587\u4EF6
+ActionFilesExist.FilenameEdit.Button=\u7F16\u8F91
+ActionFilesExist.FilenameEdit.Tooltip=\u7F16\u8F91\u9009\u4E2D\u7684\u6587\u4EF6
 ActionFilesExist.Filetype.All=\u5168\u90E8\u6587\u4EF6
 ActionFilesExist.Filetype.CSV=CSV\u6587\u4EF6
+ActionFilesExist.Filetype.Text=\u6587\u672C\u6587\u4EF6
+ActionFilesExist.Name=\u68C0\u67E5\u591A\u4E2A\u6587\u4EF6\u662F\u5426\u5B58\u5728
 ActionFilesExist.Name.Default=\u6587\u4EF6\u5B58\u5728
-ActionFilesExist.Fields.Argument.Label=\u6587\u4EF6/\u6587\u4EF6\u5939
-ActionFilesExist.BrowseFiles.Label=\u6587\u4EF6
+ActionFilesExist.Name.Label=Action \u540D\u79F0\:
+ActionFilesExist.Title=\u68C0\u67E5\u591A\u4E2A\u6587\u4EF6\u662F\u5426\u5B58\u5728
+ActionFilesExist.keyword=files,exist
diff --git a/plugins/actions/folderisempty/src/main/resources/org/apache/hop/workflow/actions/folderisempty/messages/messages_zh_CN.properties b/plugins/actions/folderisempty/src/main/resources/org/apache/hop/workflow/actions/folderisempty/messages/messages_zh_CN.properties
index 98d4cc1..0ad0d6a 100644
--- a/plugins/actions/folderisempty/src/main/resources/org/apache/hop/workflow/actions/folderisempty/messages/messages_zh_CN.properties
+++ b/plugins/actions/folderisempty/src/main/resources/org/apache/hop/workflow/actions/folderisempty/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,14 +15,18 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
+#
 ActionFolderIsEmpty.Description=Check if a folder is empty
-ActionFolderIsEmpty.Name=\u68c0\u67e5\u76ee\u5f55\u662f\u5426\u4e3a\u7a7a
-ActionFolderIsEmpty.SpecifyWildcard.Label=\u9650\u5236\u641c\u7d22\uff08\u6b63\u5219\u8868\u8fbe\u5f0f\uff09
-ActionFolderIsEmpty.Name.Default=\u68c0\u67e5\u6587\u4ef6\u5939\u662f\u5426\u4e3a\u7a7a
-ActionFolderIsEmpty.IncludeSubFolders.Label=\u5305\u542b\u5b50\u6587\u4ef6\u5939
-ActionFolderIsEmpty.Title=\u68c0\u67e5\u76ee\u5f55\u662f\u5426\u4e3a\u7a7a
-ActionFolderIsEmpty.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0\uff1a
-ActionFolderIsEmpty.Wildcard.Label=\u901a\u914d\u7b26\uff08\u6b63\u5219\u8868\u8fbe\u5f0f\uff09
-ActionFolderIsEmpty.IncludeSubFolders.Tooltip=\u5982\u679c\u67e5\u627e\u8303\u56f4\u5305\u542b\u5b50\u6587\u4ef6\u5939\uff0c\u8bf7\u9009\u4e2d\u6b64\u9009\u9879
-ActionFolderIsEmpty.Foldername.Label=\u6587\u4ef6\u5939\uff1a
-ActionFolderIsEmpty.SpecifyWildcard.Tooltip=\u53ea\u641c\u7d22\u5339\u914d\u6b63\u5219\u8868\u8fbe\u5f0f\u7684\u76ee\u5f55
+ActionFolderIsEmpty.Error=\u9519\u8BEF
+ActionFolderIsEmpty.Error.Exception=\u83B7\u53D6\u6587\u4EF6 [{0}] \u65F6\u5F02\u5E38\: {1}
+ActionFolderIsEmpty.Foldername.Label=\u6587\u4EF6\u5939\:
+ActionFolderIsEmpty.IncludeSubFolders.Label=\u5305\u542B\u5B50\u6587\u4EF6\u5939\:
+ActionFolderIsEmpty.IncludeSubFolders.Tooltip=\u5982\u679C\u67E5\u627E\u8303\u56F4\u5305\u542B\u5B50\u6587\u4EF6\u5939, \u8BF7\u9009\u4E2D\u6B64\u9009\u9879
+ActionFolderIsEmpty.Name=\u68C0\u67E5\u76EE\u5F55\u662F\u5426\u4E3A\u7A7A
+ActionFolderIsEmpty.Name.Default=\u68C0\u67E5\u6587\u4EF6\u5939\u662F\u5426\u4E3A\u7A7A
+ActionFolderIsEmpty.Name.Label=Action \u540D\u79F0\:
+ActionFolderIsEmpty.SpecifyWildcard.Label=\u9650\u5236\u641C\u7D22(\u6B63\u5219\u8868\u8FBE\u5F0F)\:
+ActionFolderIsEmpty.SpecifyWildcard.Tooltip=\u53EA\u641C\u7D22\u5339\u914D\u6B63\u5219\u8868\u8FBE\u5F0F\u7684\u76EE\u5F55
+ActionFolderIsEmpty.Title=\u68C0\u67E5\u76EE\u5F55\u662F\u5426\u4E3A\u7A7A
+ActionFolderIsEmpty.Wildcard.Label=\u901A\u914D\u7B26(\u6B63\u5219\u8868\u8FBE\u5F0F)\:
+ActionFolderIsEmpty.keyword=folder,empty
diff --git a/plugins/actions/folderscompare/src/main/resources/org/apache/hop/workflow/actions/folderscompare/messages/messages_zh_CN.properties b/plugins/actions/folderscompare/src/main/resources/org/apache/hop/workflow/actions/folderscompare/messages/messages_zh_CN.properties
index 2f86ac5..f19b853 100644
--- a/plugins/actions/folderscompare/src/main/resources/org/apache/hop/workflow/actions/folderscompare/messages/messages_zh_CN.properties
+++ b/plugins/actions/folderscompare/src/main/resources/org/apache/hop/workflow/actions/folderscompare/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,29 +15,45 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-ActionFoldersCompare.Description=compare two folders (or two files)
-ActionFoldersCompare.Name=\u6bd4\u8f83\u76ee\u5f55
-ActionFoldersCompare.All_CompareOnly.Label=\u5168\u90e8
-ActionFoldersCompare.CompareFileSize.Label=\u6bd4\u8f83\u6587\u4ef6\u5927\u5c0f
-ActionFoldersCompare.FileBrowse.Label=\u6587\u4ef6
-ActionFoldersCompare.Filetype.All=\u5168\u90e8\u6587\u4ef6
-ActionFoldersCompare.FolderBrowse.Label=\u6587\u4ef6\u5939
-ActionFoldersCompare.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0
-ActionFoldersCompare.Folders_CompareOnly.Label=\u53ea\u6bd4\u8f83\u6587\u4ef6\u5939
-ActionFoldersCompare.Name.Default=\u6587\u4ef6\u5939\u6bd4\u5bf9
-ActionFoldersCompare.Specify_CompareOnly.Label=\u81ea\u5b9a\u4e49
-ActionFoldersCompare.Filename2.Label=\u6587\u4ef6/\u6587\u4ef6\u5939 2
-ActionFileCompare.Log.FileNotExist=\u627e\u4e0d\u5230\u6587\u4ef6[{0}]
-ActionFoldersCompare.IncludeSubfolders.Label=\u5305\u542b\u5b50\u6587\u4ef6\u5939
-ActionFoldersCompare.Log.CanNotCompareFilesFolders=\u4e0d\u80fd\u540c\u65f6\u6bd4\u8f83\u6587\u4ef6\u548c\u6587\u4ef6\u5939
-ActionFoldersCompare.Filename1.Label=\u6587\u4ef6/\u6587\u4ef6\u5939 1
-ActionFoldersCompare.Settings.Label=\u8bbe\u7f6e
-ActionFoldersCompare.Title=\u6bd4\u8f83\u76ee\u5f55
-ActionFoldersCompare.IncludeSubfolders.Tooltip=\u5305\u542b\u5b50\u6587\u4ef6\u5939
-ActionFoldersCompare.CompareFileContent.Tooltip=\u6bd4\u8f83\u6587\u4ef6\u5185\u5bb9
-ActionFoldersCompare.CompareFileContent.Label=\u6bd4\u8f83\u6587\u4ef6\u5185\u5bb9
-ActionFoldersCompare.Wildcard.Tooltip=\u901a\u914d\u7b26\uff08\u6b63\u5219\u8868\u8fbe\u5f0f\uff09
-ActionFoldersCompare.CompareFileSize.Tooltip=\u6bd4\u8f83\u6587\u4ef6\u5927\u5c0f
-ActionFoldersCompare.Wildcard.Label=\u901a\u914d\u7b26\uff08\u6b63\u5219\u8868\u8fbe\u5f0f\uff09
-ActionFoldersCompare.Files_CompareOnly.Label=\u53ea\u6bd4\u8f83\u6587\u4ef6
-ActionFoldersCompare.CompareOnly.Label=\u6bd4\u8f83
+#
+ActionFileCompare.Log.FileNotExist=\u627E\u4E0D\u5230\u6587\u4EF6[{0}]
+ActionFoldersCompare.All_CompareOnly.Label=\u5168\u90E8
+ActionFoldersCompare.CompareFileContent.Label=\u6BD4\u8F83\u6587\u4EF6\u5185\u5BB9\:
+ActionFoldersCompare.CompareFileContent.Tooltip=\u6BD4\u8F83\u6587\u4EF6\u5185\u5BB9
+ActionFoldersCompare.CompareFileSize.Label=\u6BD4\u8F83\u6587\u4EF6\u5927\u5C0F\:
+ActionFoldersCompare.CompareFileSize.Tooltip=\u6BD4\u8F83\u6587\u4EF6\u5927\u5C0F
+ActionFoldersCompare.CompareOnly.Label=\u6BD4\u8F83\:
+ActionFoldersCompare.Description=\u6BD4\u5BF9\u4E24\u4E2A\u76EE\u5F55\u6216\u4E24\u4E2A\u6587\u4EF6
+ActionFoldersCompare.FileBrowse.Label=\u6587\u4EF6
+ActionFoldersCompare.Filename1.Label=\u6587\u4EF6/\u6587\u4EF6\u5939 1\:
+ActionFoldersCompare.Filename2.Label=\u6587\u4EF6/\u6587\u4EF6\u5939 2\:
+ActionFoldersCompare.Files_CompareOnly.Label=\u53EA\u6BD4\u8F83\u6587\u4EF6
+ActionFoldersCompare.Filetype.All=\u5168\u90E8\u6587\u4EF6
+ActionFoldersCompare.FolderBrowse.Label=\u6587\u4EF6\u5939
+ActionFoldersCompare.Folders_CompareOnly.Label=\u53EA\u6BD4\u8F83\u6587\u4EF6\u5939
+ActionFoldersCompare.IncludeSubfolders.Label=\u5305\u542B\u5B50\u6587\u4EF6\u5939\:
+ActionFoldersCompare.IncludeSubfolders.Tooltip=\u5305\u542B\u5B50\u6587\u4EF6\u5939
+ActionFoldersCompare.Log.CanNotCompareFilesFolders=\u4E0D\u80FD\u540C\u65F6\u6BD4\u8F83\u6587\u4EF6\u548C\u6587\u4EF6\u5939
+ActionFoldersCompare.Log.ErrorComparing=\u5C1D\u8BD5\u6BD4\u5BF9\u8DEF\u5F84 [{0}] \u4E0E [{1}] \u65F6\u51FA\u9519, \u5F02\u5E38\: {2}
+ActionFoldersCompare.Log.FileCanNotBeFoundIn=\u5728\u8DEF\u5F84 [{1}] \u4E2D\u6CA1\u6709\u627E\u5230\u6587\u4EF6 [{0}]
+ActionFoldersCompare.Log.FileIsFoundIn=\u5728\u8DEF\u5F84 [{1}] \u4E2D\u6CA1\u6709\u627E\u5230\u6587\u4EF6 [{0}]\!
+ActionFoldersCompare.Log.FilesNotSameContent=\u6587\u4EF6 [{0}] \u4E0E [{1}] \u5185\u5BB9\u4E0D\u4E00\u81F41
+ActionFoldersCompare.Log.FilesNotSameSize=\u6587\u4EF6 [{0}] \u4E0E [{1}] \u5927\u5C0F\u76F8\u540C.
+ActionFoldersCompare.Log.FilesNotSameType=\u6587\u4EF6 [{0}] \u4E0E [{1}] \u6587\u4EF6\u7C7B\u578B\u4E0D\u4E00\u81F4\!
+ActionFoldersCompare.Log.FolderContains=\u76EE\u5F55 [{0}] \u4E2D\u5305\u542B {1} \u4E2A\u6587\u4EF6
+ActionFoldersCompare.Log.FoldersDifferentFiles=\u76EE\u5F55 [{0}] \u4E0E [{1}] \u4E2D\u7684\u6587\u4EF6\u6570\u91CF\u4E0D\u4E00\u81F4\!
+ActionFoldersCompare.Log.IsAFile=[{0}] \u662F\u6587\u4EF6.
+ActionFoldersCompare.Log.IsAFolder=[{0}] \u662F\u76EE\u5F55.
+ActionFoldersCompare.Log.IsUnknownFileType=\u65E0\u6CD5\u83B7\u53D6\u6587\u4EF6 {0} \u7684\u6587\u4EF6\u7C7B\u578B.
+ActionFoldersCompare.Log.Need2Files=\u8BE5 Action \u9700\u8981 2 \u4E2A\u8DEF\u5F84\u540D\u79F0\u8FDB\u884C\u6BD4\u8F83\!
+ActionFoldersCompare.Log.SizeFileIs=\u6587\u4EF6 [{0}] \u7684\u5927\u5C0F\: {1} \u5B57\u8282
+ActionFoldersCompare.Meta.UnableLoadXML=\u65E0\u6CD5\u4ECE XML \u8282\u70B9\u52A0\u8F7D "\u5BF9\u6BD4\u76EE\u5F55" \u7C7B\u578B\u7684 Action, \u5F02\u5E38\: {0}
+ActionFoldersCompare.Name=\u6BD4\u5BF9\u76EE\u5F55
+ActionFoldersCompare.Name.Default=\u6587\u4EF6\u5939\u6BD4\u5BF9
+ActionFoldersCompare.Name.Label=Action \u540D\u79F0:
+ActionFoldersCompare.Settings.Label=\u8BBE\u7F6E
+ActionFoldersCompare.Specify_CompareOnly.Label=\u81EA\u5B9A\u4E49
+ActionFoldersCompare.Title=\u6BD4\u5BF9\u76EE\u5F55
+ActionFoldersCompare.Wildcard.Label=\u901A\u914D\u7B26(\u6B63\u5219\u8868\u8FBE\u5F0F)\:
+ActionFoldersCompare.Wildcard.Tooltip=\u901A\u914D\u7B26 (\u6B63\u5219\u8868\u8FBE\u5F0F)
+ActionFoldersCompare.keyword=folder,compare
diff --git a/plugins/actions/ftp/src/main/resources/org/apache/hop/workflow/actions/ftp/messages/messages_zh_CN.properties b/plugins/actions/ftp/src/main/resources/org/apache/hop/workflow/actions/ftp/messages/messages_zh_CN.properties
index 01c6038..1d82999 100644
--- a/plugins/actions/ftp/src/main/resources/org/apache/hop/workflow/actions/ftp/messages/messages_zh_CN.properties
+++ b/plugins/actions/ftp/src/main/resources/org/apache/hop/workflow/actions/ftp/messages/messages_zh_CN.properties
@@ -16,123 +16,131 @@
 # limitations under the License.
 #
 #
-#
-ActionFTP.Description=\u901a\u8fc7FTP\u83b7\u53d6\u6587\u4ef6 (File Transfer Protocol)
-ActionFTP.Name=FTP \u4e0b\u8f7d
-ActionFtp.RemoveFiles.Label=\u83b7\u53d6\u540e\u5220\u9664\u6587\u4ef6.
-ActionFtp.Name.Tooltip=\u8fd9\u4e2a\u4f5c\u4e1a\u9879\u7684\u540d\u79f0
-ActionFtp.ProxyPort.Tooltip=\u4ee3\u7406\u670d\u52a1\u5668\u7aef\u53e3.\u5982\u679c\u6ca1\u6709\u6307\u5b9a\u4ee3\u7406\u670d\u52a1\u5668,\u8be5\u503c\u4f1a\u88ab\u5ffd\u7565.
-ActionFTP.DeletedFile=\u5220\u9664\u7684\u6587\u4ef6[{0}]
-ActionFtp.ControlEncoding.Tooltip=\u5bf9\u4e8e\u6587\u4ef6\u540d/\u76ee\u5f55,\u4f7f\u7528\u54ea\u79cd\u5b57\u7b26\u96c6
-ActionFtp.CreateMoveFolder.Tooltip=\u65b0\u5efa\u6587\u4ef6\u5939
-ActionFtp.Timeout.Label=\u8d85\u65f6\:
-ActionFtp.FolderExists.Title.Bad=\u9519\u8bef
-ActionFtp.SpecifyFormat.Tooltip=\u6307\u5b9a\u65e5\u671f\u65f6\u95f4\u683c\u5f0f
-ActionFtp.TestConnection.Label=\u6d4b\u8bd5\u8fde\u63a5
-ActionFtp.TargetDir.Label=\u76ee\u6807\u76ee\u5f55\:
-ActionFtp.ActiveConns.Tooltip=\u6fc0\u6d3b\u4ee5\u4f7f\u7528\u6d3b\u52a8\u7684 FTP \u8fde\u63a5
-ActionFtp.Connected.NOK.ConnectionBad=\u4e0d\u80fd\u8fde\u63a5\u5230{0}
-ActionFTP.GotFile=\u83b7\u5f97\u6587\u4ef6[{0}]
-ActionFtp.Password.Label=\u5bc6\u7801\:
-ActionFtp.IfFileExists.Label=\u5982\u679c\u6587\u4ef6\u5df2\u5b58\u5728
-ActionFtp.Skip.Label=\u8df3\u8fc7
-ActionFtp.SocksProxyPassword.Tooltip=\u4ee3\u7406\u670d\u52a1\u5668\u5bc6\u7801
-ActionFtp.SocksProxyPort.Tooltip=Socks\u4ee3\u7406\u7aef\u53e3
-ActionFtp.Server.Label=FTP \u670d\u52a1\u5668\u540d\u79f0 / IP \u5730\u5740\:
-ActionFTP.Start=FTP \u4f5c\u4e1a\u9879\u5f00\u59cb
-ActionFtp.SuccessWhenAllWorksFine.Label=\u4e00\u5207\u5de5\u4f5c\u6b63\u5e38
-ActionFtp.MoveFiles.Tooltip=\u6062\u590d\u6216\u8005\u91cd\u65b0\u83b7\u53d6\u6587\u4ef6\u540e\u79fb\u52a8\u6587\u4ef6\u5230\u6587\u4ef6\u5939
-ActionFtp.Name.Default=\u901a\u8fc7 FTP \u83b7\u5f97\u6587\u4ef6
-ActionFtp.ProxyUsername.Tooltip=\u4ee3\u7406\u670d\u52a1\u5668\u7684\u7528\u6237\u540d.\u5982\u679c\u6ca1\u6709\u4e0d\u586b\u5199.
-ActionFtp.ErrorConnect.NOK=\u9519\u8bef\u7684\u8fde\u63a5:{0}
-ActionFtp.AddTime.Tooltip=\u5982\u679c\u60f3\u5728\u6587\u4ef6\u540d\u4e2d\u5305\u542b\u65f6\u95f4\uff0c\u8bf7\u9009\u4e2d\u6b64\u9879
-ActionFtp.DontOverwrite.Label=\u4e0d\u80fd\u8986\u76d6\u6587\u4ef6\:
-ActionFTP.LocalFileExists=\u672c\u5730\u6587\u4ef6[{0}]\u5b58\u5728\uff01
-ActionFtp.Wildcard.Tooltip=\u8f93\u5165\u4e00\u4e2a\u6b63\u5219\u8868\u8fbe\u5f0f\u6765\u6307\u5b9a\u8981\u83b7\u53d6\u7684\u6587\u4ef6.\r\n\u4f8b\u5982 "*\\.txt" (\u6ca1\u6709\u53cc\u5f15\u53f7),\u6765\u4e0b\u8f7d\u6240\u6709\u7684 txt \u6587\u4ef6
-ActionFtp.AddDateBeforeExtension.Label=\u5728\u6269\u5c55\u540d\u524d\u6dfb\u52a0\u65e5\u671f
-ActionFtp.RemoteDir.Label=\u8fdc\u7a0b\u76ee\u5f55\:
-ActionFtp.ErrorConnect.Title.Bad=\u9519\u8bef
-ActionFTP.Started=\u5f00\u59cb\u7684 FTP \u4f5c\u4e1a\u5230 {0}
-ActionFtp.FolderExists.Title.Ok=\u786e\u8ba4
-ActionFtp.Fail.Label=\u5931\u8d25
-ActionFtp.BrowseFolders.Label=\u6d4f\u89c8
-ActionFtp.TargetDir.Tooltip=\u672c\u5730\u76ee\u5f55
-ActionFTP.UnableToLoadFromXml=\u4e0d\u80fd\u4ece XML \u8282\u70b9\u52a0\u8f7d FTP \u4f5c\u4e1a\u9879
-ActionFtp.Connected.Title.Bad=\u9519\u8bef
-ActionFtp.NrBadFormedLessThan.Label=\u6570\u91cf
-ActionFtp.FolderExists.OK=\u6587\u4ef6\u5939 {0} \u5df2\u5b58\u5728 \uff01
-ActionFtp.UnexpectedError=\u672a\u77e5\u9519\u8bef:{0}
-ActionFTP.Log.Info.FilesInError=\u9519\u8bef\u6570:{0}
-ActionFTP.FoundNFiles=\u5728\u8fdc\u7a0bFTP\u76ee\u5f55\u4e0b\u53d1\u73b0{0}\u4e2a\u6587\u4ef6
-ActionFTP.AnalysingFile=\u5206\u6790\u8fdc\u7a0b\u6587\u4ef6[{0}]...
-ActionFtp.BinaryMode.Label=\u4e8c\u8fdb\u5236\u6a21\u5f0f?
-ActionFtp.MoveToDirectory.Tooltip=\u79fb\u52a8\u5230\u6587\u4ef6\u5939
-ActionFtp.Tab.Socks.Label=Socks\u4ee3\u7406
-ActionFtp.RemoveFiles.Tooltip=\u4f20\u8f93\u5b8c\u6210\u540e\u5220\u9664\u8fdc\u7a0b\u670d\u52a1\u5668\u4e0a\u7684\u6587\u4ef6.\u8bf7\u5c0f\u5fc3\u4f7f\u7528\u8be5\u9009\u9879,\u4e0d\u80fd\u6062\u590d.
-ActionFTP.LocalFileNotExists=\u672c\u5730\u6587\u4ef6[{0}]\u4e0d\u5b58\u5728
-ActionFTP.Downloaded=\u4eceFTP\u670d\u52a1\u5668{0}\u4e0b\u8f7d 
-ActionFtp.SocksProxy.Group.Label=\u4ee3\u7406
-ActionFtp.Wildcard.Label=\u901a\u914d\u7b26(\u6b63\u5219\u8868\u8fbe\u5f0f)\:
-ActionFtp.LocalSettings.Group.Label=\u672c\u5730
-ActionFtp.Title=FTP \u4e0b\u8f7d
-ActionFtp.Tab.Files.Label=\u6587\u4ef6
-ActionFTP.CheckMoveToFolder=\u68c0\u67e5\u6587\u4ef6\u5939[{0}]...
-ActionFtp.Timeout.Tooltip=\u4f20\u8f93\u8d85\u65f6\u9650\u5236,\u4ee5\u79d2\u4e3a\u5355\u4f4d (0\u4e3a\u6ca1\u6709\u8d85\u65f6)
-ActionFtp.CreateMoveFolder.Label=\u65b0\u5efa\u6587\u4ef6\u5939
-ActionFtp.MoveFolder.Tooltip=\u6307\u5b9a\u79fb\u52a8\u5230\u7684\u6587\u4ef6\u5939
-ActionFtp.AddTime.Label=\u5728\u6587\u4ef6\u540d\u4e2d\u5305\u542b\u65f6\u95f4
-ActionFtp.Tab.Advanced.Label=\u9ad8\u7ea7
-ActionFtp.ProxyHost.Tooltip=\u4ee3\u7406\u670d\u52a1\u5668\u7684\u540d\u79f0\u6216\u5730\u5740.\u5982\u679c\u4e0d\u4f7f\u7528\u4ee3\u7406\u670d\u52a1\u5668,\u4e0d\u586b\u5199.
-ActionFtp.ProxyPassword.Tooltip=\u4ee3\u7406\u670d\u52a1\u5668\u7684\u5bc6\u7801,\u5982\u679c\u6ca1\u6709\u5bc6\u7801,\u4e0d\u586b\u5199.
-ActionFtp.ProxyPassword.Label=\u4ee3\u7406\u670d\u52a1\u5668\u5bc6\u7801\:
-ActionFtp.Password.Tooltip=\u8f93\u5165 FTP \u670d\u52a1\u5668\u5bc6\u7801
-ActionFtp.AddDate.Label=\u5728\u6587\u4ef6\u540d\u4e2d\u5305\u542b\u65e5\u671f
-ActionFtp.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0
-ActionFtp.ProxyUsername.Label=\u4ee3\u7406\u670d\u52a1\u5668\u7528\u6237\u540d\:
-ActionFtp.AddDateBeforeExtension.Tooltip=\u5982\u679c\u4f60\u60f3\u5728\u6269\u5c55\u540d\u524d\u9762\u6dfb\u52a0\u65e5\u671f\u548c\u65f6\u95f4\uff0c\u8bf7\u9009\u4e2d\u6b64\u9879
-ActionFtp.Give_Unique_Name.Label=\u7ed9\u672c\u5730\u6587\u4ef6\u6307\u5b9a\u552f\u4e00\u540d\u79f0
-ActionFtp.SocksProxyPort.Label=\u7aef\u53e3:
-ActionFtp.TestConnection.Tooltip=\u6d4b\u8bd5\u8fde\u63a5
-ActionFtp.User.Tooltip=\u8f93\u5165 FTP \u670d\u52a1\u5668\u7528\u6237\u540d\:
-ActionFtp.AddFilenameToResult.Label=\u5728\u7ed3\u679c\u4e2d\u6dfb\u52a0\u6587\u4ef6\u540d
-ActionFtp.RemoteDir.Tooltip=FTP \u670d\u52a1\u5668\u4e0a\u7684\u76ee\u5f55.
-ActionFTP.ErrorQuitting=\u9000\u51faFTP\u8fde\u63a5\u65f6\u53d1\u751f\u9519\u8bef\: {0}
-ActionFtp.Tab.General.Label=\u4e00\u822c
-ActionFtp.AddFilenameToResult.Tooltip=\u5728\u7ed3\u679c\u6587\u4ef6\u540d\u4e2d\u6dfb\u52a0\u6587\u4ef6\u540d
-ActionFTP.FileAddedToResult=\u6587\u4ef6\u540d[{0}]\u88ab\u6dfb\u52a0\u5230\u7ed3\u679c\u6587\u4ef6\u540d\u4e2d
-ActionFtp.Connected.OK=\u8fde\u63a5\u5230{0}
-ActionFtp.User.Label=\u7528\u6237\u540d\:
-ActionFtp.BinaryMode.Tooltip=\u9009\u4e2d\u4ee5\u4f20\u8f93\u4e8c\u8fdb\u5236\u6587\u4ef6
-ActionFtp.SocksProxyPassword.Label=\u5bc6\u7801:
-ActionFtp.Port.Tooltip=\u670d\u52a1\u5668\u7aef\u53e3
-ActionFtp.ProxyPort.Label=\u4ee3\u7406\u670d\u52a1\u5668\u7aef\u53e3\:
-ActionFTP.MoveToFolderCreated=\u6587\u4ef6\u5939{0}\u88ab\u521b\u5efa
-ActionFtp.SocksProxyUsername.Label=\u7528\u6237\u540d:
-ActionFtp.SuccessWhenNrErrorsLessThan.Label=\u9519\u8bef\u6570\u5c0f\u4e8e
-ActionFtp.ControlEncoding.Label=\u63a7\u5236\u7f16\u7801\:
-ActionFtp.SpecifyFormat.Label=\u6307\u5b9a\u65e5\u671f\u65f6\u95f4\u683c\u5f0f
-ActionFtp.SuccessCondition.Label=\u6210\u529f\u6761\u4ef6
-ActionFTP.GettingFile=\u5c06\u6587\u4ef6 [{0}] \u4fdd\u5b58\u5230\u76ee\u5f55 [{1}]
-ActionFtp.Server.Tooltip=FTP \u670d\u52a1\u5668\u540d\u79f0\u6216 IP \u5730\u5740
-ActionFtp.SocksProxyHost.Tooltip=\u4e3b\u673a\u540d\u79f0\u6216\u8005\u4e3b\u673aIP\u5730\u5740
-ActionFtp.MoveFolder.Label=\u79fb\u52a8\u5230\u6587\u4ef6\u5939
-ActionFtp.ActiveConns.Label=\u4f7f\u7528\u6d3b\u52a8\u7684 FTP \u8fde\u63a5\:
-ActionFTP.ChangedDir=\u5207\u6362\u5230\u76ee\u5f55[{0}]
-ActionFtp.DateTimeFormat.Label=\u65e5\u671f\u65f6\u95f4\u683c\u5f0f
-ActionFtp.SuccessOn.Group.Label=\u6210\u529f\u6761\u4ef6
-ActionFtp.DontOverwrite.Tooltip=\u5982\u679c\u88ab\u6fc0\u6d3b,\u53ea\u4f20\u8f93\u672c\u5730\u6ca1\u6709\u7684\u6587\u4ef6.
-ActionFTP.ErrorGetting=\u4ece FTP\:{0} \u83b7\u53d6\u6587\u4ef6\u65f6\u53d1\u751f\u9519\u8bef
-ActionFtp.SuccessWhenAtLeat.Label=\u83b7\u53d6\u6587\u4ef6\u6570\u4e0d\u5c0f\u4e8e
-ActionFtp.Port.Label=\u670d\u52a1\u5668\u7aef\u53e3
-ActionFtp.ProxyHost.Label=\u4ee3\u7406\u670d\u52a1\u5668\:
-ActionFtp.MoveFiles.Label=\u6062\u590d\u540e\u79fb\u52a8\u6587\u4ef6
-ActionFTP.SetEncoding=\u8bbe\u7f6e\u63a7\u5236\u7f16\u7801\u4e3a{0}
-ActionFtp.TestFolderExists.Label=\u68c0\u67e5\u6587\u4ef6\u5939
-ActionFtp.ServerSettings.Group.Label=\u670d\u52a1\u5668
-ActionFTP.WorkflowStopped=\u4f5c\u4e1a\u505c\u6b62\uff01
-ActionFtp.SocksProxyHost.Label=\u4e3b\u673a:
-ActionFtp.FolderExists.NOK=\u627e\u4e0d\u5230\u6587\u4ef6\u5939 {0} \uff01
-ActionFtp.AdvancedSettings.Group.Label=\u9ad8\u7ea7
-ActionFtp.AddDate.Tooltip=\u5982\u679c\u4f60\u60f3\u5728\u6587\u4ef6\u540d\u4e2d\u5305\u542b\u65e5\u671f\uff0c\u8bf7\u9009\u4e2d\u6b64\u9879
-ActionFtp.Connected.Title.Ok=\u8fde\u63a5\u6210\u529f
-ActionFtp.RemoteSettings.Group.Label=\u8fdc\u7a0b
+ActionFTP.AnalysingFile=\u5206\u6790\u8FDC\u7A0B\u6587\u4EF6[{0}]...
+ActionFTP.ChangedDir=\u5207\u6362\u5230\u76EE\u5F55[{0}]
+ActionFTP.CheckMoveToFolder=\u68C0\u67E5\u6587\u4EF6\u5939[{0}]...
+ActionFTP.CheckMoveToFolderSwitchBack=\u5207\u6362\u56DE\u76EE\u5F55 [{0}]
+ActionFTP.DeletedFile=\u5220\u9664\u7684\u6587\u4EF6[{0}]
+ActionFTP.Description=\u901A\u8FC7FTP\u83B7\u53D6\u6587\u4EF6 (File Transfer Protocol)
+ActionFTP.Downloaded=\u4ECEFTP\u670D\u52A1\u5668{0}\u4E0B\u8F7D 
+ActionFTP.ErrorGetting=\u4ECE FTP\:{0} \u83B7\u53D6\u6587\u4EF6\u65F6\u53D1\u751F\u9519\u8BEF
+ActionFTP.ErrorQuitting=\u9000\u51FAFTP\u8FDE\u63A5\u65F6\u53D1\u751F\u9519\u8BEF\: {0}
+ActionFTP.FileAddedToResult=\u6587\u4EF6\u540D[{0}]\u88AB\u6DFB\u52A0\u5230\u7ED3\u679C\u6587\u4EF6\u540D\u4E2D
+ActionFTP.FoundNFiles=\u5728\u8FDC\u7A0BFTP\u76EE\u5F55\u4E0B\u53D1\u73B0{0}\u4E2A\u6587\u4EF6
+ActionFTP.GettingFile=\u5C06\u6587\u4EF6 [{0}] \u4FDD\u5B58\u5230\u76EE\u5F55 [{1}]
+ActionFTP.GotFile=\u83B7\u5F97\u6587\u4EF6[{0}]
+ActionFTP.LocalFileExists=\u672C\u5730\u6587\u4EF6[{0}]\u5B58\u5728!
+ActionFTP.LocalFileNotExists=\u672C\u5730\u6587\u4EF6[{0}]\u4E0D\u5B58\u5728
+ActionFTP.Log.Info.FilesInError=\u9519\u8BEF\u6570\:{0}
+ActionFTP.Log.Info.FilesRetrieved=\u5DF2\u4E0B\u8F7D\u6587\u4EF6\u6570\: {0}
+ActionFTP.MoveToFolderCreated=\u6587\u4EF6\u5939{0}\u88AB\u521B\u5EFA
+ActionFTP.MoveToFolderEmpty=\u672A\u6307\u5B9A\u76EE\u6807\u76EE\u5F55(\u4E0B\u8F7D\u5B8C\u6210\u540E)\!
+ActionFTP.MoveToFolderNotExist=\u6CA1\u6709\u627E\u5230 ftp \u8FDC\u7A0B\u76EE\u5F55\!
+ActionFTP.MovedFile=\u6587\u4EF6 [{0}] \u88AB\u79FB\u52A8\u5230\u76EE\u5F55 [{1}](\u5747\u4E3A ftp \u7684\u8FDC\u7A0B\u8DEF\u5F84)
+ActionFTP.Name=FTP \u4E0B\u8F7D
+ActionFTP.SetEncoding=\u8BBE\u7F6E\u63A7\u5236\u7F16\u7801\u4E3A{0}
+ActionFTP.SkippingNotAFile=\u8DF3\u8FC7\u8DEF\u5F84 [{0}], \u56E0\u5176\u4E0D\u662F\u6587\u4EF6\!
+ActionFTP.Start=FTP Action \u9879\u5F00\u59CB
+ActionFTP.Started=\u5F00\u59CB\u7684 FTP \u4F5C\u4E1A\u5230 {0}
+ActionFTP.SuccesConditionBroken=\u7EC8\u6B62\u6210\u529F\u6761\u4EF6\u68C0\u6D4B\! \u51FA\u73B0 {0} \u4E2A\u9519\u8BEF
+ActionFTP.UnableToLoadFromXml=\u4E0D\u80FD\u4ECE XML \u8282\u70B9\u52A0\u8F7D FTP Action \u9879
+ActionFTP.WorkflowStopped=Action \u505C\u6B62!
+ActionFtp.ActiveConns.Label=\u4F7F\u7528\u6D3B\u52A8\u7684 FTP \u8FDE\u63A5\:
+ActionFtp.ActiveConns.Tooltip=\u6FC0\u6D3B\u4EE5\u4F7F\u7528\u6D3B\u52A8\u7684 FTP \u8FDE\u63A5
+ActionFtp.AddDate.Label=\u5728\u6587\u4EF6\u540D\u4E2D\u5305\u542B\u65E5\u671F
+ActionFtp.AddDate.Tooltip=\u5982\u679C\u4F60\u60F3\u5728\u6587\u4EF6\u540D\u4E2D\u5305\u542B\u65E5\u671F, \u8BF7\u9009\u4E2D\u6B64\u9879
+ActionFtp.AddDateBeforeExtension.Label=\u5728\u6269\u5C55\u540D\u524D\u6DFB\u52A0\u65E5\u671F
+ActionFtp.AddDateBeforeExtension.Tooltip=\u5982\u679C\u4F60\u60F3\u5728\u6269\u5C55\u540D\u524D\u9762\u6DFB\u52A0\u65E5\u671F\u548C\u65F6\u95F4, \u8BF7\u9009\u4E2D\u6B64\u9879
+ActionFtp.AddFilenameToResult.Label=\u5728\u7ED3\u679C\u4E2D\u6DFB\u52A0\u6587\u4EF6\u540D\:
+ActionFtp.AddFilenameToResult.Tooltip=\u5728\u7ED3\u679C\u6587\u4EF6\u540D\u4E2D\u6DFB\u52A0\u6587\u4EF6\u540D
+ActionFtp.AddTime.Label=\u5728\u6587\u4EF6\u540D\u4E2D\u5305\u542B\u65F6\u95F4
+ActionFtp.AddTime.Tooltip=\u5982\u679C\u60F3\u5728\u6587\u4EF6\u540D\u4E2D\u5305\u542B\u65F6\u95F4, \u8BF7\u9009\u4E2D\u6B64\u9879
+ActionFtp.AdvancedSettings.Group.Label=\u9AD8\u7EA7
+ActionFtp.BinaryMode.Label=\u4E8C\u8FDB\u5236\u6A21\u5F0F\:
+ActionFtp.BinaryMode.Tooltip=\u9009\u4E2D\u4EE5\u4F20\u8F93\u4E8C\u8FDB\u5236\u6587\u4EF6
+ActionFtp.BrowseFolders.Label=\u6D4F\u89C8
+ActionFtp.Connected.NOK.ConnectionBad=\u4E0D\u80FD\u8FDE\u63A5\u5230{0}
+ActionFtp.Connected.OK=\u8FDE\u63A5\u5230{0}
+ActionFtp.Connected.Title.Bad=\u9519\u8BEF
+ActionFtp.Connected.Title.Ok=\u8FDE\u63A5\u6210\u529F
+ActionFtp.ControlEncoding.Label=\u63A7\u5236\u7F16\u7801\:
+ActionFtp.ControlEncoding.Tooltip=\u5BF9\u4E8E\u6587\u4EF6\u540D/\u76EE\u5F55,\u4F7F\u7528\u54EA\u79CD\u5B57\u7B26\u96C6
+ActionFtp.CreateMoveFolder.Label=\u65B0\u5EFA\u6587\u4EF6\u5939
+ActionFtp.CreateMoveFolder.Tooltip=\u65B0\u5EFA\u6587\u4EF6\u5939
+ActionFtp.DateTimeFormat.Label=\u65E5\u671F\u65F6\u95F4\u683C\u5F0F
+ActionFtp.DontOverwrite.Label=\u4E0D\u80FD\u8986\u76D6\u6587\u4EF6\:
+ActionFtp.DontOverwrite.Tooltip=\u5982\u679C\u88AB\u6FC0\u6D3B,\u53EA\u4F20\u8F93\u672C\u5730\u6CA1\u6709\u7684\u6587\u4EF6.
+ActionFtp.ErrorConnect.NOK=\u9519\u8BEF\u7684\u8FDE\u63A5\:{0}
+ActionFtp.ErrorConnect.Title.Bad=\u9519\u8BEF
+ActionFtp.Fail.Label=\u5931\u8D25
+ActionFtp.FolderExists.NOK=\u627E\u4E0D\u5230\u6587\u4EF6\u5939 {0} !
+ActionFtp.FolderExists.OK=\u6587\u4EF6\u5939 {0} \u5DF2\u5B58\u5728 !
+ActionFtp.FolderExists.Title.Bad=\u9519\u8BEF
+ActionFtp.FolderExists.Title.Ok=\u786E\u8BA4
+ActionFtp.Give_Unique_Name.Label=\u7ED9\u672C\u5730\u6587\u4EF6\u6307\u5B9A\u552F\u4E00\u540D\u79F0
+ActionFtp.IfFileExists.Label=\u5982\u679C\u6587\u4EF6\u5DF2\u5B58\u5728
+ActionFtp.LocalSettings.Group.Label=\u672C\u5730
+ActionFtp.MoveFiles.Label=\u6062\u590D\u540E\u79FB\u52A8\u6587\u4EF6
+ActionFtp.MoveFiles.Tooltip=\u6062\u590D\u6216\u8005\u91CD\u65B0\u83B7\u53D6\u6587\u4EF6\u540E\u79FB\u52A8\u6587\u4EF6\u5230\u6587\u4EF6\u5939
+ActionFtp.MoveFolder.Label=\u79FB\u52A8\u5230\u6587\u4EF6\u5939
+ActionFtp.MoveFolder.Tooltip=\u6307\u5B9A\u79FB\u52A8\u5230\u7684\u6587\u4EF6\u5939
+ActionFtp.MoveToDirectory.Tooltip=\u79FB\u52A8\u5230\u6587\u4EF6\u5939
+ActionFtp.Name.Default=\u901A\u8FC7 FTP \u83B7\u5F97\u6587\u4EF6
+ActionFtp.Name.Label=Action \u540D\u79F0:
+ActionFtp.Name.Tooltip=\u8FD9\u4E2A Action \u7684\u540D\u79F0
+ActionFtp.NrBadFormedLessThan.Label=\u6570\u91CF
+ActionFtp.NrBadFormedLessThan.Tooltip=\u6700\u5927\u6587\u4EF6\u6570
+ActionFtp.Password.Label=\u5BC6\u7801\:
+ActionFtp.Password.Tooltip=\u8F93\u5165 FTP \u670D\u52A1\u5668\u5BC6\u7801
+ActionFtp.Port.Label=\u670D\u52A1\u5668\u7AEF\u53E3
+ActionFtp.Port.Tooltip=\u670D\u52A1\u5668\u7AEF\u53E3
+ActionFtp.ProxyHost.Label=\u4EE3\u7406\u670D\u52A1\u5668\:
+ActionFtp.ProxyHost.Tooltip=\u4EE3\u7406\u670D\u52A1\u5668\u7684\u540D\u79F0\u6216\u5730\u5740.\u5982\u679C\u4E0D\u4F7F\u7528\u4EE3\u7406\u670D\u52A1\u5668,\u4E0D\u586B\u5199.
+ActionFtp.ProxyPassword.Label=\u4EE3\u7406\u670D\u52A1\u5668\u5BC6\u7801\:
+ActionFtp.ProxyPassword.Tooltip=\u4EE3\u7406\u670D\u52A1\u5668\u7684\u5BC6\u7801,\u5982\u679C\u6CA1\u6709\u5BC6\u7801,\u4E0D\u586B\u5199.
+ActionFtp.ProxyPort.Label=\u4EE3\u7406\u670D\u52A1\u5668\u7AEF\u53E3\:
+ActionFtp.ProxyPort.Tooltip=\u4EE3\u7406\u670D\u52A1\u5668\u7AEF\u53E3.\u5982\u679C\u6CA1\u6709\u6307\u5B9A\u4EE3\u7406\u670D\u52A1\u5668,\u8BE5\u503C\u4F1A\u88AB\u5FFD\u7565.
+ActionFtp.ProxyUsername.Label=\u4EE3\u7406\u670D\u52A1\u5668\u7528\u6237\u540D\:
+ActionFtp.ProxyUsername.Tooltip=\u4EE3\u7406\u670D\u52A1\u5668\u7684\u7528\u6237\u540D.\u5982\u679C\u6CA1\u6709\u4E0D\u586B\u5199.
+ActionFtp.RemoteDir.Label=\u8FDC\u7A0B\u76EE\u5F55\:
+ActionFtp.RemoteDir.Tooltip=FTP \u670D\u52A1\u5668\u4E0A\u7684\u76EE\u5F55.
+ActionFtp.RemoteSettings.Group.Label=\u8FDC\u7A0B
+ActionFtp.RemoveFiles.Label=\u83B7\u53D6\u540E\u5220\u9664\u6587\u4EF6.
+ActionFtp.RemoveFiles.Tooltip=\u4F20\u8F93\u5B8C\u6210\u540E\u5220\u9664\u8FDC\u7A0B\u670D\u52A1\u5668\u4E0A\u7684\u6587\u4EF6.\u8BF7\u5C0F\u5FC3\u4F7F\u7528\u8BE5\u9009\u9879,\u4E0D\u80FD\u6062\u590D.
+ActionFtp.Server.Label=FTP \u670D\u52A1\u5668\u540D\u79F0 / IP \u5730\u5740\:
+ActionFtp.Server.Tooltip=FTP \u670D\u52A1\u5668\u540D\u79F0\u6216 IP \u5730\u5740
+ActionFtp.ServerSettings.Group.Label=\u670D\u52A1\u5668
+ActionFtp.Skip.Label=\u8DF3\u8FC7
+ActionFtp.SocksProxy.Group.Label=\u4EE3\u7406
+ActionFtp.SocksProxyHost.Label=\u4E3B\u673A\:
+ActionFtp.SocksProxyHost.Tooltip=\u4E3B\u673A\u540D\u79F0\u6216\u8005\u4E3B\u673AIP\u5730\u5740
+ActionFtp.SocksProxyPassword.Label=\u5BC6\u7801\:
+ActionFtp.SocksProxyPassword.Tooltip=\u4EE3\u7406\u670D\u52A1\u5668\u5BC6\u7801
+ActionFtp.SocksProxyPort.Label=\u7AEF\u53E3\:
+ActionFtp.SocksProxyPort.Tooltip=Socks\u4EE3\u7406\u7AEF\u53E3
+ActionFtp.SocksProxyUsername.Label=\u7528\u6237\u540D\:
+ActionFtp.SpecifyFormat.Label=\u6307\u5B9A\u65E5\u671F\u65F6\u95F4\u683C\u5F0F
+ActionFtp.SpecifyFormat.Tooltip=\u6307\u5B9A\u65E5\u671F\u65F6\u95F4\u683C\u5F0F
+ActionFtp.SuccessCondition.Label=\u6210\u529F\u6761\u4EF6
+ActionFtp.SuccessOn.Group.Label=\u6210\u529F\u6761\u4EF6
+ActionFtp.SuccessWhenAllWorksFine.Label=\u4E00\u5207\u5DE5\u4F5C\u6B63\u5E38
+ActionFtp.SuccessWhenAtLeat.Label=\u83B7\u53D6\u6587\u4EF6\u6570\u4E0D\u5C0F\u4E8E
+ActionFtp.SuccessWhenNrErrorsLessThan.Label=\u9519\u8BEF\u6570\u5C0F\u4E8E
+ActionFtp.Tab.Advanced.Label=\u9AD8\u7EA7
+ActionFtp.Tab.Files.Label=\u6587\u4EF6
+ActionFtp.Tab.General.Label=\u4E00\u822C
+ActionFtp.Tab.Socks.Label=Socks\u4EE3\u7406
+ActionFtp.TargetDir.Label=\u76EE\u6807\u76EE\u5F55\:
+ActionFtp.TargetDir.Tooltip=\u672C\u5730\u76EE\u5F55
+ActionFtp.TestConnection.Label=\u6D4B\u8BD5\u8FDE\u63A5
+ActionFtp.TestConnection.Tooltip=\u6D4B\u8BD5\u8FDE\u63A5
+ActionFtp.TestFolderExists.Label=\u68C0\u67E5\u6587\u4EF6\u5939
+ActionFtp.Timeout.Label=\u8D85\u65F6\:
+ActionFtp.Timeout.Tooltip=\u4F20\u8F93\u8D85\u65F6\u9650\u5236,\u4EE5\u79D2\u4E3A\u5355\u4F4D (0\u4E3A\u6CA1\u6709\u8D85\u65F6)
+ActionFtp.Title=FTP \u4E0B\u8F7D
+ActionFtp.UnexpectedError=\u672A\u77E5\u9519\u8BEF\:{0}
+ActionFtp.User.Label=\u7528\u6237\u540D\:
+ActionFtp.User.Tooltip=\u8F93\u5165 FTP \u670D\u52A1\u5668\u7528\u6237\u540D\:
+ActionFtp.Wildcard.Label=\u901A\u914D\u7B26(\u6B63\u5219\u8868\u8FBE\u5F0F)\:
+ActionFtp.Wildcard.Tooltip=\u8F93\u5165\u4E00\u4E2A\u6B63\u5219\u8868\u8FBE\u5F0F\u6765\u6307\u5B9A\u8981\u83B7\u53D6\u7684\u6587\u4EF6.\r\n\u4F8B\u5982 "*\\.txt" (\u6CA1\u6709\u53CC\u5F15\u53F7),\u6765\u4E0B\u8F7D\u6240\u6709\u7684 txt \u6587\u4EF6
+ActionFtp.keyword=ftp,file,transfer
diff --git a/plugins/actions/ftp/src/main/resources/org/apache/hop/workflow/actions/ftpdelete/messages/messages_zh_CN.properties b/plugins/actions/ftp/src/main/resources/org/apache/hop/workflow/actions/ftpdelete/messages/messages_zh_CN.properties
index 0a6ec34..c4134f3 100644
--- a/plugins/actions/ftp/src/main/resources/org/apache/hop/workflow/actions/ftpdelete/messages/messages_zh_CN.properties
+++ b/plugins/actions/ftp/src/main/resources/org/apache/hop/workflow/actions/ftpdelete/messages/messages_zh_CN.properties
@@ -16,79 +16,91 @@
 # limitations under the License.
 #
 #
-#
+ActionFTPDelete.AnalysingFile=\u6B63\u5728\u5206\u6790\u8FDC\u7A0B\u6587\u4EF6 [{0}]...
+ActionFTPDelete.ArgsFromPreviousNothing=\u6CA1\u6709\u4ECE\u4E0A\u4E00\u6B65\u83B7\u53D6\u4EFB\u4F55\u4FE1\u606F!
+ActionFTPDelete.ChangedDir=\u5207\u6362\u5230\u76EE\u5F55 [{0}]
 ActionFTPDelete.Description=Delete files in a remote host
+ActionFTPDelete.ErrorGetting=\u4ECE FTP \u83B7\u53D6\u6587\u4EF6\u65F6\u51FA\u9519\: {0}
+ActionFTPDelete.ErrorQuitting=\u9000\u51FA FTP \u8FDE\u63A5\u65F6\u51FA\u9519\: {0}
 ActionFTPDelete.Name=FTP \u5220\u9664
-ActionFtpDelete.Server.Label=FTP\u670d\u52a1\u5668\u540d\u79f0/IP\u5730\u5740:
-ActionFtpDelete.RemoteSettings.Group.Label=\u8fdc\u7a0b
-ActionFtpDelete.Name.Default=\u901a\u8fc7FTP\u5220\u9664\u6587\u4ef6
-ActionFtpDelete.keyfilePass.Label=\u52a0\u5bc6\u5bc6\u94a5
-ActionFtpDelete.ProxyHost.Tooltip=\u4ee3\u7406\u4e3b\u673a
-ActionFtpDelete.Tab.Socks.Label=socks\u4ee3\u7406
-ActionFtpDelete.SocksProxyPort.Tooltip=socks\u4ee3\u7406\u7aef\u53e3
-ActionFtpDelete.Timeout.Tooltip=\u8d85\u65f6\u65f6\u95f4\uff0c\u4ee5\u79d2\u4e3a\u5355\u4f4d\uff0c0\u8868\u793a\u65e0\u9650\u5236
-ActionFtpDelete.usePublicKeyFiles.Tooltip=\u4f7f\u7528\u516c\u94a5\u5bc6\u94a5
-ActionFtpDelete.ActiveConns.Tooltip=\u4f7f\u7528\u6d3b\u52a8\u7684FTP\u8fde\u63a5
-ActionFtpDelete.RemoteDir.Tooltip=\u5728FTP\u670d\u52a1\u5668\u4e0a\u7684\u8fdc\u7a0b\u76ee\u5f55
-ActionFtpDelete.SocksProxyPort.Label=\u7aef\u53e3:
-ActionFtpDelete.Tab.General.Label=\u4e00\u822c
-ActionFtpDelete.ErrorConnect.NOK=\u9519\u8bef\u8fde\u63a5:{0}
-ActionFtpDelete.ProxyUsername.Tooltip=\u4ee3\u7406\u7528\u6237\u540d
-ActionFtpDelete.Filetype.All=\u5168\u90e8\u6587\u4ef6
-ActionFtpDelete.Wildcard.Tooltip=\u8bbe\u7f6e\u6b63\u5219\u8868\u8fbe\u5f0f\u6765\u5236\u5b9a\u8981\u83b7\u53d6\u7684\u6587\u4ef6\u540d\uff0c\u4f8b\u5982:".*\\.txt" \u4e0b\u8f7d\u6240\u6709\u7684\u6587\u672c\u6587\u4ef6
-ActionFtpDelete.Tab.Files.Label=\u6587\u4ef6
-ActionFtpDelete.ErrorConnect.Title.Bad=\u9519\u8bef
-ActionFtpDelete.ActiveConns.Label=\u4f7f\u7528\u6d3b\u52a8\u7684FTP\u8fde\u63a5
-ActionFtpDelete.Wildcard.Label=\u901a\u914d\u7b26(\u6b63\u5219\u8868\u8fbe\u5f0f):
-ActionFtpDelete.SocksProxyPassword.Tooltip=socks\u4ee3\u7406\u5bc6\u7801
-ActionFtpDelete.FolderExists.Title.Ok=\u6587\u4ef6\u5939\u5df2\u5b58\u5728
-ActionFtpDelete.KeyFilename.Label=\u516c\u94a5\u6587\u4ef6:
-ActionFtpDelete.Connected.Title.Bad=\u9519\u8bef
-ActionFtpDelete.SocksProxy.Group.Label=\u4ee3\u7406
-ActionFtpDelete.ProxyPort.Tooltip=\u4ee3\u7406\u7aef\u53e3
-ActionFtpDelete.ProxyPort.Label=\u4ee3\u7406\u7aef\u53e3:
-ActionFtpDelete.useProxy.Tooltip=\u4f7f\u7528\u4ee3\u7406
-ActionFtpDelete.Server.Tooltip=FTP\u670d\u52a1\u5668\u540d\u79f0\u6216\u8005IP\u5730\u5740
-ActionFtpDelete.SocksProxyHost.Label=\u4e3b\u673a:
-ActionFtpDelete.getPrevious.Label=\u4ece\u4e0a\u4e00\u6b65\u7ed3\u679c\u590d\u5236\u53c2\u6570
-ActionFtpDelete.User.Tooltip=FTP\u670d\u52a1\u5668\u7528\u6237\u540d
-ActionFtpDelete.SuccessWhenAtLeat.Label=\u5220\u9664\u7684\u6587\u4ef6\u6570\u4e0d\u5c11\u4e8e
-ActionFtpDelete.getPrevious.Tooltip=\u4ece\u4e0a\u4e00\u6b65\u7ed3\u679c\u590d\u5236\u53c2\u6570
-ActionFtpDelete.ProxyPassword.Tooltip=\u4ee3\u7406\u5bc6\u7801
-ActionFtpDelete.Port.Tooltip=\u670d\u52a1\u5668\u7aef\u53e3
-ActionFtpDelete.TestConnection.Tooltip=\u6d4b\u8bd5\u8fde\u63a5
-ActionFtpDelete.Protocol.Label=\u534f\u8bae:
-ActionFtpDelete.TestConnection.Label=\u6d4b\u8bd5\u8fde\u63a5
-ActionFtpDelete.KeyFilename.Tooltip=\u516c\u94a5\u6587\u4ef6
-ActionFtpDelete.ProxyHost.Label=\u4ee3\u7406\u4e3b\u673a:
-ActionFtpDelete.ProxyPassword.Label=\u4ee3\u7406\u5bc6\u7801:
-ActionFtpDelete.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0
-ActionFtpDelete.AdvancedSettings.Group.Label=\u9ad8\u7ea7
-ActionFtpDelete.ProxyUsername.Label=\u4ee3\u7406\u7528\u6237\u540d:
-ActionFtpDelete.keyfilePass.Tooltip=\u52a0\u5bc6\u5bc6\u94a5
-ActionFtpDelete.Password.Tooltip=\u8f93\u5165FTP\u670d\u52a1\u5668\u5bc6\u7801
-ActionFtpDelete.NrBadFormedLessThan.Label=\u6570\u91cf
-ActionFtpDelete.User.Label=\u7528\u6237\u540d:
-ActionFtpDelete.SuccessCondition.Label=\u6210\u529f\u6761\u4ef6
-ActionFtpDelete.SocksProxyHost.Tooltip=\u4e3b\u673a\u540d\u79f0\u6216\u8005IP\u5730\u5740\u6216\u8005socks\u4ee3\u7406\u4e3b\u673a
-ActionFtpDelete.ConnectionType.Label=\u8fde\u63a5\u7c7b\u578b
-ActionFtpDelete.NrBadFormedLessThan.Tooltip=\u6570\u91cf
-ActionFtpDelete.SuccessWhenNrErrorsLessThan.Label=\u9519\u8bef\u6570\u5c11\u4e8e
-ActionFtpDelete.SuccessWhenAllWorksFine.Label=\u4e00\u5207\u5de5\u4f5c\u6b63\u5e38
-ActionFtpDelete.SuccessOn.Group.Label=\u6210\u529f\u6761\u4ef6
+ActionFTPDelete.Start=\u5F00\u59CB FTP \u64CD\u4F5C
+ActionFTPDelete.Started=\u5728 FTP \u670D\u52A1\u5668 {0} \u4E0A\u542F\u52A8\u8BE5\u5DE5\u4F5C\u6D41
+ActionFTPDelete.SuccesConditionBroken=FTP \u8FDE\u63A5\u88AB\u4E2D\u65AD\!
+ActionFtp.UnexpectedError=\u672A\u77E5\u9519\u8BEF\: {0}
+ActionFtpDelete.ActiveConns.Label=\u4F7F\u7528\u6D3B\u52A8\u7684FTP\u8FDE\u63A5
+ActionFtpDelete.ActiveConns.Tooltip=\u4F7F\u7528\u6D3B\u52A8\u7684FTP\u8FDE\u63A5
+ActionFtpDelete.AdvancedSettings.Group.Label=\u9AD8\u7EA7
+ActionFtpDelete.Connected.OK=\u4E00\u5207\u6B63\u5E38, \u4ECE FTP \u670D\u52A1\u5668\u4E0A\u7EE7\u7EED\u5220\u9664\u6587\u4EF6.
+ActionFtpDelete.Connected.Title.Bad=\u9519\u8BEF
+ActionFtpDelete.Connected.Title.Ok=\u8FDE\u63A5\u6B63\u5E38
+ActionFtpDelete.ConnectionType.Label=\u8FDE\u63A5\u7C7B\u578B
+ActionFtpDelete.ErrorConnect.NOK=\u9519\u8BEF\u8FDE\u63A5\:{0}
+ActionFtpDelete.ErrorConnect.Title.Bad=\u9519\u8BEF
+ActionFtpDelete.Filetype.All=\u5168\u90E8\u6587\u4EF6
+ActionFtpDelete.Filetype.Pem=PEM \u6587\u4EF6
+ActionFtpDelete.FolderExists.NOK=\u65E0\u6CD5\u627E\u5230\u8FDC\u7A0B\u76EE\u5F55 {0}\!
+ActionFtpDelete.FolderExists.OK=FTP \u8FDC\u7A0B\u76EE\u5F55 {0} \u5B58\u5728.
+ActionFtpDelete.FolderExists.Title.Bad=\u627E\u4E0D\u5230\u6587\u4EF6\u5939
+ActionFtpDelete.FolderExists.Title.Ok=\u6587\u4EF6\u5939\u5DF2\u5B58\u5728
+ActionFtpDelete.KeyFilename.Label=\u516C\u94A5\u6587\u4EF6\:
+ActionFtpDelete.KeyFilename.Tooltip=\u516C\u94A5\u6587\u4EF6
+ActionFtpDelete.Name.Default=\u901A\u8FC7FTP\u5220\u9664\u6587\u4EF6
+ActionFtpDelete.Name.Label=Action \u540D\u79F0:
+ActionFtpDelete.Name.Tooltip=Action \u540D\u79F0
+ActionFtpDelete.NrBadFormedLessThan.Label=\u6570\u91CF
+ActionFtpDelete.NrBadFormedLessThan.Tooltip=\u6570\u91CF
+ActionFtpDelete.Password.Label=\u5BC6\u7801\:
+ActionFtpDelete.Password.Tooltip=\u8F93\u5165FTP\u670D\u52A1\u5668\u5BC6\u7801
+ActionFtpDelete.Port.Label=\u670D\u52A1\u5668\u7AEF\u53E3\:
+ActionFtpDelete.Port.Tooltip=\u670D\u52A1\u5668\u7AEF\u53E3
+ActionFtpDelete.Protocol.Label=\u534F\u8BAE\:
+ActionFtpDelete.Protocol.Tooltip=\u534F\u8BAE
+ActionFtpDelete.ProxyHost.Label=\u4EE3\u7406\u4E3B\u673A\:
+ActionFtpDelete.ProxyHost.Tooltip=\u4EE3\u7406\u4E3B\u673A
+ActionFtpDelete.ProxyPassword.Label=\u4EE3\u7406\u5BC6\u7801\:
+ActionFtpDelete.ProxyPassword.Tooltip=\u4EE3\u7406\u5BC6\u7801
+ActionFtpDelete.ProxyPort.Label=\u4EE3\u7406\u7AEF\u53E3\:
+ActionFtpDelete.ProxyPort.Tooltip=\u4EE3\u7406\u7AEF\u53E3
+ActionFtpDelete.ProxyUsername.Label=\u4EE3\u7406\u7528\u6237\u540D\:
+ActionFtpDelete.ProxyUsername.Tooltip=\u4EE3\u7406\u7528\u6237\u540D
+ActionFtpDelete.RemoteDir.Label=\u8FDC\u7A0B\u76EE\u5F55\:
+ActionFtpDelete.RemoteDir.Tooltip=\u5728FTP\u670D\u52A1\u5668\u4E0A\u7684\u8FDC\u7A0B\u76EE\u5F55
+ActionFtpDelete.RemoteSettings.Group.Label=\u8FDC\u7A0B
+ActionFtpDelete.Server.Label=FTP\u670D\u52A1\u5668\u540D\u79F0/IP\u5730\u5740\:
+ActionFtpDelete.Server.Tooltip=FTP\u670D\u52A1\u5668\u540D\u79F0\u6216\u8005IP\u5730\u5740
+ActionFtpDelete.ServerSettings.Group.Label=\u670D\u52A1\u5668
+ActionFtpDelete.SocksProxy.Group.Label=\u4EE3\u7406
+ActionFtpDelete.SocksProxyHost.Label=\u4E3B\u673A\:
+ActionFtpDelete.SocksProxyHost.Tooltip=\u4E3B\u673A\u540D\u79F0\u6216\u8005IP\u5730\u5740\u6216\u8005socks\u4EE3\u7406\u4E3B\u673A
+ActionFtpDelete.SocksProxyPassword.Label=\u5BC6\u7801\:
+ActionFtpDelete.SocksProxyPassword.Tooltip=socks\u4EE3\u7406\u5BC6\u7801
+ActionFtpDelete.SocksProxyPort.Label=\u7AEF\u53E3\:
+ActionFtpDelete.SocksProxyPort.Tooltip=socks\u4EE3\u7406\u7AEF\u53E3
+ActionFtpDelete.SocksProxyUsername.Label=\u7528\u6237\u540D\:
+ActionFtpDelete.SuccessCondition.Label=\u6210\u529F\u6761\u4EF6
+ActionFtpDelete.SuccessOn.Group.Label=\u6210\u529F\u6761\u4EF6
+ActionFtpDelete.SuccessWhenAllWorksFine.Label=\u4E00\u5207\u5DE5\u4F5C\u6B63\u5E38
+ActionFtpDelete.SuccessWhenAtLeat.Label=\u5220\u9664\u7684\u6587\u4EF6\u6570\u4E0D\u5C11\u4E8E
+ActionFtpDelete.SuccessWhenNrErrorsLessThan.Label=\u9519\u8BEF\u6570\u5C11\u4E8E
+ActionFtpDelete.Tab.Files.Label=\u6587\u4EF6
+ActionFtpDelete.Tab.General.Label=\u4E00\u822C
+ActionFtpDelete.Tab.Socks.Label=socks\u4EE3\u7406
+ActionFtpDelete.TestConnection.Label=\u6D4B\u8BD5\u8FDE\u63A5
+ActionFtpDelete.TestConnection.Tooltip=\u6D4B\u8BD5\u8FDE\u63A5
+ActionFtpDelete.TestFolderExists.Label=\u68C0\u67E5\u6587\u4EF6\u5939
+ActionFtpDelete.Timeout.Label=\u8D85\u65F6\:
+ActionFtpDelete.Timeout.Tooltip=\u8D85\u65F6\u65F6\u95F4, \u4EE5\u79D2\u4E3A\u5355\u4F4D, 0\u8868\u793A\u65E0\u9650\u5236
 ActionFtpDelete.Title=FTP\u5220\u9664
-ActionFtpDelete.RemoteDir.Label=\u8fdc\u7a0b\u76ee\u5f55:
-ActionFtpDelete.TestFolderExists.Label=\u68c0\u67e5\u6587\u4ef6\u5939
-ActionFtpDelete.Name.Tooltip=\u4f5c\u4e1a\u9879\u540d\u79f0
-ActionFtpDelete.Password.Label=\u5bc6\u7801:
-ActionFtpDelete.Connected.Title.Ok=\u8fde\u63a5\u6b63\u5e38
-ActionFtpDelete.usePublicKeyFiles.Label=\u4f7f\u7528\u516c\u94a5\u79d8\u5bc6\u94a5
-ActionFtpDelete.Port.Label=\u670d\u52a1\u5668\u7aef\u53e3:
-ActionFtpDelete.useProxy.Label=\u4f7f\u7528\u4ee3\u7406
-ActionFtpDelete.Protocol.Tooltip=\u534f\u8bae
-ActionFTPDelete.ArgsFromPreviousNothing=\u6ca1\u6709\u4ece\u4e0a\u4e00\u6b65\u83b7\u53d6\u4efb\u4f55\u4fe1\u606f\uff01
-ActionFtpDelete.SocksProxyPassword.Label=\u5bc6\u7801:
-ActionFtpDelete.Timeout.Label=\u8d85\u65f6:
-ActionFtpDelete.FolderExists.Title.Bad=\u627e\u4e0d\u5230\u6587\u4ef6\u5939
-ActionFtpDelete.SocksProxyUsername.Label=\u7528\u6237\u540d:
-ActionFtpDelete.ServerSettings.Group.Label=\u670d\u52a1\u5668
+ActionFtpDelete.User.Label=\u7528\u6237\u540D\:
+ActionFtpDelete.User.Tooltip=FTP\u670D\u52A1\u5668\u7528\u6237\u540D
+ActionFtpDelete.Wildcard.Label=\u901A\u914D\u7B26(\u6B63\u5219\u8868\u8FBE\u5F0F)\:
+ActionFtpDelete.Wildcard.Tooltip=\u8BBE\u7F6E\u6B63\u5219\u8868\u8FBE\u5F0F\u6765\u5236\u5B9A\u8981\u83B7\u53D6\u7684\u6587\u4EF6\u540D, \u4F8B\u5982\:".*\\.txt" \u4E0B\u8F7D\u6240\u6709\u7684\u6587\u672C\u6587\u4EF6
+ActionFtpDelete.getPrevious.Label=\u4ECE\u4E0A\u4E00\u6B65\u7ED3\u679C\u590D\u5236\u53C2\u6570
+ActionFtpDelete.getPrevious.Tooltip=\u4ECE\u4E0A\u4E00\u6B65\u7ED3\u679C\u590D\u5236\u53C2\u6570
+ActionFtpDelete.keyfilePass.Label=\u52A0\u5BC6\u5BC6\u94A5
+ActionFtpDelete.keyfilePass.Tooltip=\u52A0\u5BC6\u5BC6\u94A5
+ActionFtpDelete.keyword=ftp,delete,file,transfer
+ActionFtpDelete.useProxy.Label=\u4F7F\u7528\u4EE3\u7406
+ActionFtpDelete.useProxy.Tooltip=\u4F7F\u7528\u4EE3\u7406
+ActionFtpDelete.usePublicKeyFiles.Label=\u4F7F\u7528\u516C\u94A5\u79D8\u5BC6\u94A5
+ActionFtpDelete.usePublicKeyFiles.Tooltip=\u4F7F\u7528\u516C\u94A5\u5BC6\u94A5
diff --git a/plugins/actions/ftp/src/main/resources/org/apache/hop/workflow/actions/ftpput/messages/messages_zh_CN.properties b/plugins/actions/ftp/src/main/resources/org/apache/hop/workflow/actions/ftpput/messages/messages_zh_CN.properties
index fa0ec89..3900a15 100644
--- a/plugins/actions/ftp/src/main/resources/org/apache/hop/workflow/actions/ftpput/messages/messages_zh_CN.properties
+++ b/plugins/actions/ftp/src/main/resources/org/apache/hop/workflow/actions/ftpput/messages/messages_zh_CN.properties
@@ -16,72 +16,80 @@
 # limitations under the License.
 #
 #
-#
 ActionFTPPut.Description=Put a file with FTP
-ActionFTPPut.Name=FTP \u4e0a\u4f20
-ActionFtpPut.ProxyPassword.Tooltip=\u4ee3\u7406\u5bc6\u7801
-ActionFtpPut.Log.ChangedDirectory=\u5207\u6362\u5230\u76ee\u5f55 [{0}]
-ActionFtpPut.LocalDir.Tooltip=\u76ee\u5f55\u5728\u672c\u5730\u670d\u52a1\u5668
-ActionFtpPut.ProxyPort.Label=\u4ee3\u7406\u7aef\u53e3:
-ActionFtpPut.SocksProxyPassword.Tooltip=socks\u4ee3\u7406\u7684\u5bc6\u7801
-ActionFtpPut.Log.ErrorPuttingFiles=\u4f20\u8f93\u5230 FTP \: {0}\u65f6\u53d1\u751f\u9519\u8bef
-ActionFtpPut.Timeout.Label=\u8d85\u65f6:
-ActionFtpPut.TestConnection.Label=\u6d4b\u8bd5\u8fde\u63a5
-ActionFtpPut.Log.BinaryMode=\u8bbe\u7f6e\u4e3a\u4e8c\u8fdb\u5236\u6a21\u5f0f
-ActionFtpPut.FolderExists.Title.Ok=\u786e\u5b9a
-ActionFtpPut.BrowseFolders.Label=\u6d4f\u89c8...
-ActionFtpPut.ErrorConnect.Title.Bad=\u9519\u8bef
-ActionFtpPut.Port.Label=\u7aef\u53e3:
-ActionFtpPut.ControlEncoding.Label=\u63a7\u5236\u7f16\u7801\:
-ActionFtpPut.Log.Logged=\u4ee5\u7528\u6237 [{0}] \u767b\u9646
-ActionFtpPut.Password.Label=\u5bc6\u7801:
-ActionFtpPut.RemoteDir.Tooltip=\u8fdc\u7a0bFTP\u670d\u52a1\u5668\u4e0a\u7684\u76ee\u5f55
-ActionFtpPut.RemoveFiles.Label=\u4e0a\u4f20\u6587\u4ef6\u540e\u5220\u9664\u672c\u5730\u6587\u4ef6
-ActionFtpPut.BinaryMode.Label=\u4e8c\u8fdb\u5236\u6a21\u5f0f?
-ActionFtpPut.SocksProxyHost.Label=\u4e3b\u673a:
-ActionFtpPut.TestFolderExists.Label=\u6d4b\u8bd5\u76ee\u5f55
-ActionFtpPut.Username.Label=\u7528\u6237\u540d:
-ActionFtpPut.TargetSettings.Group.Label=\u76ee\u6807(\u8fdc\u7a0b)\u6587\u4ef6
-ActionFtpPut.ProxyUsername.Tooltip=\u4ee3\u7406\u7528\u6237\u540d
-ActionFtpPut.SocksProxy.Group.Label=\u4ee3\u7406
-ActionFtpPut.Wildcard.Tooltip=\u8bbe\u7f6e\u4e00\u4e2a\u6b63\u5219\u8868\u8fbe\u5f0f\u6765\u6307\u5b9a\u9700\u8981\u83b7\u53d6\u7684\u6587\u4ef6
-ActionFtpPut.Tab.Socks.Label=Socks\u4ee3\u7406
-ActionFtpPut.ActiveConns.Label=\u4f7f\u7528\u6d3b\u52a8\u7684 FTP \u8fde\u63a5\:
-ActionFtpPut.Name.Default=\u901a\u8fc7FTP\u4e0a\u4f20\u6587\u4ef6
-ActionFtpPut.LocalDir.Label=\u672c\u5730\u76ee\u5f55\:
-ActionFtpPut.Port.Tooltip=\u7aef\u53e3
-ActionFtpPut.FolderExists.OK=\u6587\u4ef6\u5939{0}\u5df2\u5b58\u5728
-ActionFtpPut.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0:
-ActionFtpPut.Log.FoundFileLocalDirectory=\u5728\u672c\u5730\u76ee\u5f55 [{1}] \u4e0b\u53d1\u73b0\u4e86 [{0}] \u4e2a\u6587\u4ef6
-ActionFtpPut.AdvancedSettings.Group.Label=\u9ad8\u7ea7\u8bbe\u7f6e
-ActionFtpPut.Timeout.Tooltip=\u4f20\u8f93\u8d85\u65f6\u65f6\u95f4\uff0c\u4ee5\u79d2\u4e3a\u5355\u4f4d\uff0c0\u8868\u793a\u65e0\u9650\u5236
-ActionFtpPut.ProxyHost.Label=\u4ee3\u7406\u4e3b\u673a:
-ActionFtpPut.Wildcard.Label=\u901a\u914d\u7b26(\u6b63\u5219\u8868\u8fbe\u5f0f)
-ActionFtpPut.Log.FileExists=\u6587\u4ef6 [{0}] \u5728\u8fdc\u7a0b\u4e3b\u673a\u4e0a\u5b58\u5728. 
-ActionFtpPut.ServerSettings.Group.Label=\u670d\u52a1\u5668\u8bbe\u7f6e
-ActionFtpPut.ProxyHost.Tooltip=\u4ee3\u7406\u4e3b\u673a
-ActionFtpPut.SocksProxyHost.Tooltip=\u4e3b\u673a\u540d\u79f0\u6216\u8005socks\u4ee3\u7406\u7684IP\u5730\u5740
-ActionFtpPut.DontOverwrite.Label=\u4e0d\u8986\u76d6\u6587\u4ef6\:
-ActionFtpPut.ControlEncoding.Tooltip=\u5bf9\u4e8e\u6587\u4ef6\u540d/\u76ee\u5f55\u4f7f\u7528\u54ea\u79cd\u5b57\u7b26\u96c6
-ActionFtpPut.Log.DeletedFile=\u5220\u9664\u7684\u672c\u5730\u6587\u4ef6 [{0}]
-ActionFtpPut.ProxyPort.Tooltip=\u4ee3\u7406\u7aef\u53e3
-ActionFtpPut.SourceSettings.Group.Label=\u6e90(\u672c\u5730)\u6587\u4ef6
-ActionFtpPut.SocksProxyPort.Tooltip=Socks\u4ee3\u7406\u7aef\u53e3
-ActionFtpPut.BinaryMode.Tooltip=\u9009\u4e2d\u4ee5\u4f20\u8f93\u4e8c\u8fdb\u5236\u6587\u4ef6
-ActionFtpPut.RemoteDir.Label=\u8fdc\u7a0b\u76ee\u5f55:
-ActionFtpPut.ActiveConns.Tooltip=\u6fc0\u6d3b\u4ee5\u4f7f\u7528\u6d3b\u52a8\u7684 FTP \u8fde\u63a5
-ActionFtpPut.SocksProxyPassword.Label=\u5bc6\u7801:
-ActionFtpPut.Tab.Files.Label=\u6587\u4ef6
-ActionFtpPut.Tab.General.Label=\u4e00\u822c
-ActionFtpPut.Log.ErrorQuitingFTP=\u9000\u51fa FTP \u8fde\u63a5\u65f6\u53d1\u751f\u9519\u8bef\: {0}
-ActionFtpPut.Server.Label=FTP\u670d\u52a1\u5668\u540d\u79f0/IP\u5730\u5740:
-ActionFtpPut.DontOverwrite.Tooltip=\u5982\u679c\u88ab\u6fc0\u6d3b,\u53ea\u4f20\u8f93\u672c\u5730\u6ca1\u6709\u7684\u6587\u4ef6.
-ActionFtpPut.ProxyPassword.Label=\u4ee3\u7406\u5bc6\u7801:
-ActionFtpPut.RemoveFiles.Tooltip=\u5b8c\u6210\u540e\u5220\u9664\u8fdc\u7a0b\u670d\u52a1\u5668\u4e0a\u7684\u6587\u4ef6\u3002\u8bf7\u5c0f\u5fc3\u4f7f\u7528\u8be5\u9009\u9879\uff0c\u6709\u53ef\u80fd\u6587\u4ef6\u65e0\u6cd5\u5220\u9664
-ActionFtpPut.SocksProxyPort.Label=\u7aef\u53e3:
-ActionFtpPut.SocksProxyUsername.Label=\u7528\u6237\u540d:
-ActionFtpPut.ProxyUsername.Label=\u4ee3\u7406\u7528\u6237\u540d:
-ActionFtpPut.Log.FileDoesNotExists=\u6587\u4ef6 [{0}] \u5728\u8fdc\u7a0b\u4e3b\u673a\u4e0a\u4e0d\u5b58\u5728\!
-ActionFtpPut.FolderExists.Title.Bad=\u9519\u8bef
-ActionFtpPut.TestConnection.Tooltip=\u6d4b\u8bd5FTP\u8fde\u63a5
-ActionFtpPut.Title=FTP \u4e0a\u4f20
+ActionFTPPut.Name=FTP \u4E0A\u4F20
+ActionFtpPut.ActiveConns.Label=\u4F7F\u7528\u6D3B\u52A8\u7684 FTP \u8FDE\u63A5\:
+ActionFtpPut.ActiveConns.Tooltip=\u6FC0\u6D3B\u4EE5\u4F7F\u7528\u6D3B\u52A8\u7684 FTP \u8FDE\u63A5
+ActionFtpPut.AdvancedSettings.Group.Label=\u9AD8\u7EA7\u8BBE\u7F6E
+ActionFtpPut.BinaryMode.Label=\u4E8C\u8FDB\u5236\u6A21\u5F0F\:
+ActionFtpPut.BinaryMode.Tooltip=\u9009\u4E2D\u4EE5\u4F20\u8F93\u4E8C\u8FDB\u5236\u6587\u4EF6
+ActionFtpPut.BrowseFolders.Label=\u6D4F\u89C8...
+ActionFtpPut.Connected.OK=\u4E00\u5207\u6B63\u5E38, \u7EE7\u7EED\u4E0A\u4F20\u6587\u4EF6\u5230 FTP \u670D\u52A1\u5668\u4E0A.
+ActionFtpPut.Connected.Title.Ok=\u8FDE\u63A5\u6210\u529F
+ActionFtpPut.ControlEncoding.Label=\u63A7\u5236\u7F16\u7801\:
+ActionFtpPut.ControlEncoding.Tooltip=\u5BF9\u4E8E\u6587\u4EF6\u540D/\u76EE\u5F55\u4F7F\u7528\u54EA\u79CD\u5B57\u7B26\u96C6
+ActionFtpPut.DontOverwrite.Label=\u4E0D\u8986\u76D6\u6587\u4EF6\:
+ActionFtpPut.DontOverwrite.Tooltip=\u5982\u679C\u88AB\u6FC0\u6D3B,\u53EA\u4F20\u8F93\u672C\u5730\u6CA1\u6709\u7684\u6587\u4EF6.
+ActionFtpPut.ErrorConnect.NOK=\u65E0\u6CD5\u8FDE\u63A5\u5230 FTP \u670D\u52A1\u5668 {0}, \u8BE6\u7EC6\: {1}
+ActionFtpPut.ErrorConnect.Title.Bad=\u9519\u8BEF
+ActionFtpPut.FolderExists.OK=\u6587\u4EF6\u5939{0}\u5DF2\u5B58\u5728
+ActionFtpPut.FolderExists.Title.Bad=\u9519\u8BEF
+ActionFtpPut.FolderExists.Title.Ok=\u786E\u5B9A
+ActionFtpPut.LocalDir.Label=\u672C\u5730\u76EE\u5F55\:
+ActionFtpPut.LocalDir.NotSpecified=\u8BF7\u6307\u5B9A\u672C\u5730\u8DEF\u5F84
+ActionFtpPut.LocalDir.Tooltip=\u76EE\u5F55\u5728\u672C\u5730\u670D\u52A1\u5668
+ActionFtpPut.Log.BinaryMode=\u8BBE\u7F6E\u4E3A\u4E8C\u8FDB\u5236\u6A21\u5F0F
+ActionFtpPut.Log.ChangedDirectory=\u5207\u6362\u5230\u76EE\u5F55 [{0}]
+ActionFtpPut.Log.DeletedFile=\u5220\u9664\u7684\u672C\u5730\u6587\u4EF6 [{0}]
+ActionFtpPut.Log.ErrorPuttingFiles=\u4F20\u8F93\u5230 FTP \: {0}\u65F6\u53D1\u751F\u9519\u8BEF
+ActionFtpPut.Log.ErrorQuitingFTP=\u9000\u51FA FTP \u8FDE\u63A5\u65F6\u53D1\u751F\u9519\u8BEF\: {0}
+ActionFtpPut.Log.FileDoesNotExists=\u6587\u4EF6 [{0}] \u5728\u8FDC\u7A0B\u4E3B\u673A\u4E0A\u4E0D\u5B58\u5728\!
+ActionFtpPut.Log.FileExists=\u6587\u4EF6 [{0}] \u5728\u8FDC\u7A0B\u4E3B\u673A\u4E0A\u5B58\u5728. 
+ActionFtpPut.Log.FoundFileLocalDirectory=\u5728\u672C\u5730\u76EE\u5F55 [{1}] \u4E0B\u53D1\u73B0\u4E86 [{0}] \u4E2A\u6587\u4EF6
+ActionFtpPut.Log.Logged=\u4EE5\u7528\u6237 [{0}] \u767B\u9646
+ActionFtpPut.Log.PuttingFileToRemoteDirectory=\u4E0A\u4F20\u6587\u4EF6 [{0}] \u5230\u8FDC\u7A0B\u76EE\u5F55 [{1}]
+ActionFtpPut.Log.Starting=\u5F00\u59CB FTP \u4E0A\u4F20\u64CD\u4F5C
+ActionFtpPut.Log.UnableToLoadFromXml=\u65E0\u6CD5\u4ECE XML \u8282\u70B9\u52A0\u8F7D "FTP \u4E0A\u4F20" \u7C7B\u578B\u7684 Action
+ActionFtpPut.Log.WeHavePut=\u4E0A\u4F20\u6587\u4EF6 [{0}] \u5230 FTP \u670D\u52A1\u5668.
+ActionFtpPut.Name.Default=\u901A\u8FC7FTP\u4E0A\u4F20\u6587\u4EF6
+ActionFtpPut.Name.Label=Action \u540D\u79F0\:
+ActionFtpPut.Password.Label=\u5BC6\u7801\:
+ActionFtpPut.Port.Label=\u7AEF\u53E3\:
+ActionFtpPut.Port.Tooltip=\u7AEF\u53E3
+ActionFtpPut.ProxyHost.Label=\u4EE3\u7406\u4E3B\u673A\:
+ActionFtpPut.ProxyHost.Tooltip=\u4EE3\u7406\u4E3B\u673A
+ActionFtpPut.ProxyPassword.Label=\u4EE3\u7406\u5BC6\u7801\:
+ActionFtpPut.ProxyPassword.Tooltip=\u4EE3\u7406\u5BC6\u7801
+ActionFtpPut.ProxyPort.Label=\u4EE3\u7406\u7AEF\u53E3\:
+ActionFtpPut.ProxyPort.Tooltip=\u4EE3\u7406\u7AEF\u53E3
+ActionFtpPut.ProxyUsername.Label=\u4EE3\u7406\u7528\u6237\u540D\:
+ActionFtpPut.ProxyUsername.Tooltip=\u4EE3\u7406\u7528\u6237\u540D
+ActionFtpPut.RemoteDir.Label=\u8FDC\u7A0B\u76EE\u5F55\:
+ActionFtpPut.RemoteDir.Tooltip=\u8FDC\u7A0BFTP\u670D\u52A1\u5668\u4E0A\u7684\u76EE\u5F55
+ActionFtpPut.RemoveFiles.Label=\u4E0A\u4F20\u6587\u4EF6\u540E\u5220\u9664\u672C\u5730\u6587\u4EF6
+ActionFtpPut.RemoveFiles.Tooltip=\u5B8C\u6210\u540E\u5220\u9664\u8FDC\u7A0B\u670D\u52A1\u5668\u4E0A\u7684\u6587\u4EF6. \u8BF7\u5C0F\u5FC3\u4F7F\u7528\u8BE5\u9009\u9879, \u6709\u53EF\u80FD\u6587\u4EF6\u65E0\u6CD5\u5220\u9664
+ActionFtpPut.Server.Label=FTP\u670D\u52A1\u5668\u540D\u79F0/IP\u5730\u5740\:
+ActionFtpPut.ServerSettings.Group.Label=\u670D\u52A1\u5668\u8BBE\u7F6E
+ActionFtpPut.SocksProxy.Group.Label=\u4EE3\u7406
+ActionFtpPut.SocksProxyHost.Label=\u4E3B\u673A\:
+ActionFtpPut.SocksProxyHost.Tooltip=\u4E3B\u673A\u540D\u79F0\u6216\u8005socks\u4EE3\u7406\u7684IP\u5730\u5740
+ActionFtpPut.SocksProxyPassword.Label=\u5BC6\u7801\:
+ActionFtpPut.SocksProxyPassword.Tooltip=socks\u4EE3\u7406\u7684\u5BC6\u7801
+ActionFtpPut.SocksProxyPort.Label=\u7AEF\u53E3\:
+ActionFtpPut.SocksProxyPort.Tooltip=Socks\u4EE3\u7406\u7AEF\u53E3
+ActionFtpPut.SocksProxyUsername.Label=\u7528\u6237\u540D\:
+ActionFtpPut.SourceSettings.Group.Label=\u6E90(\u672C\u5730)\u6587\u4EF6
+ActionFtpPut.Tab.Files.Label=\u6587\u4EF6
+ActionFtpPut.Tab.General.Label=\u4E00\u822C
+ActionFtpPut.Tab.Socks.Label=Socks\u4EE3\u7406
+ActionFtpPut.TargetSettings.Group.Label=\u76EE\u6807(\u8FDC\u7A0B)\u6587\u4EF6
+ActionFtpPut.TestConnection.Label=\u6D4B\u8BD5\u8FDE\u63A5
+ActionFtpPut.TestConnection.Tooltip=\u6D4B\u8BD5FTP\u8FDE\u63A5
+ActionFtpPut.TestFolderExists.Label=\u6D4B\u8BD5\u76EE\u5F55
+ActionFtpPut.Timeout.Label=\u8D85\u65F6\:
+ActionFtpPut.Timeout.Tooltip=\u4F20\u8F93\u8D85\u65F6\u65F6\u95F4, \u4EE5\u79D2\u4E3A\u5355\u4F4D, 0\u8868\u793A\u65E0\u9650\u5236
+ActionFtpPut.Title=FTP \u4E0A\u4F20
+ActionFtpPut.Username.Label=\u7528\u6237\u540D\:
+ActionFtpPut.Wildcard.Label=\u901A\u914D\u7B26(\u6B63\u5219\u8868\u8FBE\u5F0F)
+ActionFtpPut.Wildcard.Tooltip=\u8BBE\u7F6E\u4E00\u4E2A\u6B63\u5219\u8868\u8FBE\u5F0F\u6765\u6307\u5B9A\u9700\u8981\u83B7\u53D6\u7684\u6587\u4EF6
+ActionFtpPut.keyword=file,ftp,transfer,put
diff --git a/plugins/actions/ftp/src/main/resources/org/apache/hop/workflow/actions/sftp/messages/messages_zh_CN.properties b/plugins/actions/ftp/src/main/resources/org/apache/hop/workflow/actions/sftp/messages/messages_zh_CN.properties
index c03d92a..1381862 100644
--- a/plugins/actions/ftp/src/main/resources/org/apache/hop/workflow/actions/sftp/messages/messages_zh_CN.properties
+++ b/plugins/actions/ftp/src/main/resources/org/apache/hop/workflow/actions/sftp/messages/messages_zh_CN.properties
@@ -16,57 +16,80 @@
 # limitations under the License.
 #
 #
-#
-ActionSFTP.Description=\u4f7f\u7528\u52a0\u5bc6\u7684FTP\u83b7\u53d6\u6587\u4ef6 (Secure File Transfer Protocol)
-ActionSFTP.Name=SFTP \u4e0b\u8f7d
-ActionSftp.ProxyPassword.Tooltip=\u4ee3\u7406\u5bc6\u7801
-ActionSftp.Wildcard.Label=\u901a\u914d\u7b26(\u6b63\u5219\u8868\u8fbe\u5f0f):
-ActionSftp.TestConnection.Tooltip=\u6d4b\u8bd5SFTP\u8fde\u63a5
-ActionSftp.ServerSettings.Group.Label=\u670d\u52a1\u5668\u8bbe\u7f6e
-ActionSftp.ProxyHost.Tooltip=\u4ee3\u7406\u4e3b\u673a
-ActionSftp.ProxyHost.Label=\u4ee3\u7406\u4e3b\u673a
-ActionSftp.TargetFiles.Group.Label=\u76ee\u6807\u6587\u4ef6
-ActionSftp.ProxyPort.Tooltip=\u4ee3\u7406\u7aef\u53e3
-ActionSftp.BrowseFolders.Label=\u6d4f\u89c8
-ActionSftp.Name.Default=\u540c\u8fc7SFTP\u83b7\u53d6\u6587\u4ef6
-ActionSftp.Port.Tooltip=SFTP\u670d\u52a1\u5668\u7aef\u53e3\u3002\u9ed8\u8ba4\u7aef\u53e3\u53f7\u4e3a22(\u5f53\u8f93\u5165\u4e3a\u7a7a\u6216\u80050\u65f6\uff0c\u4f7f\u7528\u9ed8\u8ba4\u7aef\u53e3)
-ActionSftp.useKeyFile.Label=\u4f7f\u7528\u79c1\u94a5\u6587\u4ef6
-ActionSftp.ProxyUsername.Tooltip=\u5982\u679c\u4f7f\u7528\u4ee3\u7406\u7684\u8bdd\uff0c\u8bbe\u7f6e\u4ee3\u7406\u7528\u6237\u540d\u6216\u8005\u7aef\u53e3
-ActionSftp.TargetDir.Tooltip=\u672c\u5730\u7684\u76ee\u6807\u76ee\u5f55
-ActionSftp.RemoteDir.Label=\u8fdc\u7a0b\u76ee\u5f55:
-ActionSftp.CreateTargetFolder.Label=\u521b\u5efa\u76ee\u6807\u6587\u4ef6
-ActionSftp.Title=SFTP \u4e0b\u8f7d
-ActionSftp.Tab.General.Label=\u4e00\u822c
-ActionSftp.Tab.Files.Label=\u6587\u4ef6
-ActionSftp.Port.Label=\u7aef\u53e3
-ActionSftp.TestConnection.Label=\u6d4b\u8bd5\u8fde\u63a5
-ActionSftp.TargetDir.Label=\u76ee\u6807\u76ee\u5f55
-ActionSftp.KeyFilename.Tooltip=\u8f93\u5165\u79c1\u94a5\u6587\u4ef6\u7684\u5168\u8def\u5f84\u548c\u6587\u4ef6\u540d\u3002\u4f60\u5fc5\u987b\u6709\u4e00\u4e2a.pem\u6587\u4ef6\uff0c\u4e0d\u80fd\u4f7f\u7528.ppk(putty)\u6587\u4ef6\u3002\u5982\u679c\u4f60\u6709putty\u6587\u4ef6\uff0c\u8bf7\u4f7f\u7528puttygen\u5de5\u5177\u8f6c\u6362\u6210OpenSSH key
-ActionSftp.TestFolderExists.Label=\u6d4b\u8bd5\u6587\u4ef6\u5939
-ActionSftp.Filetype.Pem=PEM\u6587\u4ef6
-ActionSftp.AddFilenameToResult.Tooltip=\u6dfb\u52a0\u6587\u4ef6\u540d\u5230\u7ed3\u679c\u6587\u4ef6
+ActionSFTP.Description=\u4F7F\u7528\u52A0\u5BC6\u7684FTP\u83B7\u53D6\u6587\u4EF6 (Secure File Transfer Protocol)
+ActionSFTP.Name=SFTP \u4E0B\u8F7D
+ActionSftp.AddFilenameToResult.Label=\u6DFB\u52A0\u6587\u4EF6\u540D\u5230\u7ED3\u679C
+ActionSftp.AddFilenameToResult.Tooltip=\u6DFB\u52A0\u6587\u4EF6\u540D\u5230\u7ED3\u679C\u6587\u4EF6
+ActionSftp.ArgsFromPreviousNothing=\u4ECE\u524D\u7F6E\u8FD4\u56DE\u7ED3\u679C\u4E2D\u672A\u6536\u5230\u4EFB\u4F55\u6570\u636E\u884C\!
+ActionSftp.BrowseFolders.Label=\u6D4F\u89C8
+ActionSftp.Compression.Label=\u538B\u7F29
+ActionSftp.Connected.OK=\u4E00\u5207\u6B63\u5E38, \u7EE7\u7EED\u4ECE\u9009\u62E9\u670D\u52A1\u5668\u4E0B\u8F7D\u6587\u4EF6.
 ActionSftp.Connected.Title.Bad=NOK
-ActionSftp.Wildcard.Tooltip=\u8f93\u5165\u6b63\u5219\u8868\u8fbe\u5f0f\u6765\u5339\u914d\u8981\u83b7\u53d6\u7684\u6587\u4ef6\uff0c\u4f8b\u5982: \u201c*.txt\u201d\u5c06\u83b7\u53d6\u6240\u6709\u7684\u6587\u672c\u6587\u4ef6
-ActionSftp.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0:
-ActionSftp.Connected.Title.Ok=\u786e\u8ba4
-ActionSftp.getPrevious.Tooltip=\u53ea\u4e0b\u8f7d\u4ece\u524d\u4e00\u4f5c\u4e1a\u9879\u83b7\u5f97\u7684\u7ed3\u679c\u6587\u4ef6\u5217\u8868\u4e2d\u7684\u6587\u4ef6
-ActionSftp.ProxyType.Label=\u4ee3\u7406\u7c7b\u578b
-ActionSftp.Server.Label=SFTP\u670d\u52a1\u5668\u540d\u79f0/IP
-ActionSftp.keyfilePass.Tooltip=\u5bc6\u94a5
-ActionSftp.ProxyPort.Label=\u4ee3\u7406\u7aef\u53e3
-ActionSftp.CreateTargetFolder.Tooltip=\u5fc5\u8981\u65f6\u521b\u5efa\u76ee\u6807\u6587\u4ef6\u5939\u3002\u5982\u679c\u4e0d\u9009\u4e2d\u6b64\u9879\uff0c\u5f53\u76ee\u6807\u6587\u4ef6\u5939\u4e0d\u5b58\u5728\u65f6\u4f1a\u62a5\u9519
-ActionSftp.Password.Label=\u5bc6\u7801:
-ActionSftp.keyfilePass.Label=\u5bc6\u94a5
-ActionSftp.getPrevious.Label=\u590d\u5236\u4e0a\u4e00\u4e2a\u4f5c\u4e1a\u9879\u7684\u7ed3\u679c\u4f5c\u4e3a\u53c2\u6570
-ActionSftp.Compression.Label=\u538b\u7f29
-ActionSftp.SourceFiles.Group.Label=\u6e90\u6587\u4ef6
-ActionSftp.RemoteDir.Tooltip=\u5728SFTP\u4e0a\u7684\u8fdc\u7a0b\u76ee\u5f55
-ActionSftp.AddFilenameToResult.Label=\u6dfb\u52a0\u6587\u4ef6\u540d\u5230\u7ed3\u679c
-ActionSftp.Username.Label=\u7528\u6237\u540d:\r\n
-ActionSftp.RemoveFiles.Label=\u83b7\u53d6\u540e\u5220\u9664\u670d\u52a1\u5668\u6587\u4ef6
-ActionSftp.useKeyFile.Tooltip=\u4f7f\u7528\u5bc6\u94a5\u6587\u4ef6
-ActionSftp.KeyFilename.Label=\u79c1\u94a5\u6587\u4ef6
-ActionSftp.RemoveFiles.Tooltip=\u4f20\u8f93\u5b8c\u6bd5\u540e\u5220\u9664\u670d\u52a1\u5668\u4e0a\u7684\u6587\u4ef6\u3002\u8981\u5c0f\u5fc3\uff0c\u5220\u9664\u64cd\u4f5c\u4e0d\u53ef\u9006
-ActionSftp.ProxyPassword.Label=\u4ee3\u7406\u5bc6\u7801
-ActionSftp.Filetype.All=\u5168\u90e8\u6587\u4ef6
-ActionSftp.ProxyUsername.Label=\u4ee3\u7406\u7528\u6237\u540d
+ActionSftp.Connected.Title.Ok=\u786E\u8BA4
+ActionSftp.CreateTargetFolder.Label=\u521B\u5EFA\u76EE\u6807\u6587\u4EF6
+ActionSftp.CreateTargetFolder.Tooltip=\u5FC5\u8981\u65F6\u521B\u5EFA\u76EE\u6807\u6587\u4EF6\u5939. \u5982\u679C\u4E0D\u9009\u4E2D\u6B64\u9879, \u5F53\u76EE\u6807\u6587\u4EF6\u5939\u4E0D\u5B58\u5728\u65F6\u4F1A\u62A5\u9519
+ActionSftp.Error.ArgFromPrevious=\u4ECE\u524D\u7F6E\u8FD4\u56DE\u7ED3\u679C\u4E2D\u83B7\u53D6\u6587\u4EF6\u540D\u79F0\u65F6\u5931\u8D25\!
+ActionSftp.Error.CanNotFindRemoteFolder=\u5728\u8FDC\u7A0B\u4E3B\u673A\u4E0A\u6CA1\u6709\u627E\u5230\u76EE\u5F55 {0}\!
+ActionSftp.Error.GettingFiles=\u4ECE SFTP \u83B7\u53D6\u6587\u4EF6\u65F6\u51FA\u9519\: {0}
+ActionSftp.Error.KeyFileMissing=\u7F3A\u5931\u79C1\u94A5\u6587\u4EF6\u540D\u79F0\!
+ActionSftp.Error.KeyFileNotFound=\u65E0\u6CD5\u627E\u5230\u79C1\u94A5\u6587\u4EF6 [{0}]\!
+ActionSftp.Error.TargetFolderNotExists=\u65E0\u6CD5\u627E\u5230\u76EE\u6807\u76EE\u5F55 {0}\!
+ActionSftp.ErrorConnect.NOK=\u65E0\u6CD5\u8FDE\u63A5\u5230 STP \u670D\u52A1\u5668 {0}\n\u8BE6\u7EC6\: {1}
+ActionSftp.ErrorConnect.Title.Bad=\u6D4B\u8BD5\u8FDE\u63A5\u5931\u8D25
+ActionSftp.Filetype.All=\u5168\u90E8\u6587\u4EF6
+ActionSftp.Filetype.Pem=PEM\u6587\u4EF6
+ActionSftp.FolderExists.OK=\u8FDC\u7A0B\u76EE\u5F55 {0} \u4E0D\u5B58\u5728.
+ActionSftp.FolderExists.Title.Ok=\u76EE\u5F55\u5B58\u5728
+ActionSftp.KeyFilename.Label=\u79C1\u94A5\u6587\u4EF6
+ActionSftp.KeyFilename.Tooltip=\u8F93\u5165\u79C1\u94A5\u6587\u4EF6\u7684\u5168\u8DEF\u5F84\u548C\u6587\u4EF6\u540D. \u4F60\u5FC5\u987B\u6709\u4E00\u4E2A.pem\u6587\u4EF6, \u4E0D\u80FD\u4F7F\u7528.ppk(putty)\u6587\u4EF6. \u5982\u679C\u4F60\u6709putty\u6587\u4EF6, \u8BF7\u4F7F\u7528puttygen\u5DE5\u5177\u8F6C\u6362\u6210OpenSSH key
+ActionSftp.Log.ChangedDirectory=\u5207\u6362\u5230\u76EE\u5F55 [{0}]
+ActionSftp.Log.DeletedFile=\u5220\u9664\u6587\u4EF6 [{0}]
+ActionSftp.Log.FilenameAddedToResultFilenames=\u5C06\u6587\u4EF6 [{0}] \u6DFB\u52A0\u5230\u8FD4\u56DE\u6587\u4EF6\u5217\u8868\u4E2D
+ActionSftp.Log.FilenameFromResult=\u4ECE\u524D\u7F6E\u8FD4\u56DE\u7ED3\u679C\u5217\u8868\u4E2D\u83B7\u53D6\u6587\u4EF6 {0}...
+ActionSftp.Log.Found=\u5728\u8FDC\u7A0B\u8DEF\u5F84\u4E2D\u627E\u5230\u6587\u4EF6 {0}
+ActionSftp.Log.GettingFiles=\u5C06\u6587\u4EF6 [{0}] \u5199\u5230\u76EE\u5F55 [{1}]
+ActionSftp.Log.OpenedConnection=\u4F7F\u7528\u7528\u6237 [{2}] \u8FDE\u63A5\u5230 SFTP \u670D\u52A1\u5668 [{0}\:{1}]
+ActionSftp.Log.StartAction=\u5F00\u59CB SFTP \u64CD\u4F5C
+ActionSftp.Log.TargetFolderCreated=\u5DF2\u521B\u5EFA\u76EE\u5F55 {0}.
+ActionSftp.Log.TargetFolderExists=\u76EE\u6807\u76EE\u5F55 {0} \u5B58\u5728.
+ActionSftp.Log.TransferedFile=\u4E0B\u8F7D\u6587\u4EF6 [{0}]
+ActionSftp.Name.Default=\u901A\u8FC7 SFTP \u83B7\u53D6\u6587\u4EF6
+ActionSftp.Name.Label=Action \u540D\u79F0\:
+ActionSftp.Password.Label=\u5BC6\u7801\:
+ActionSftp.Port.Label=\u7AEF\u53E3
+ActionSftp.Port.Tooltip=SFTP\u670D\u52A1\u5668\u7AEF\u53E3. \u9ED8\u8BA4\u7AEF\u53E3\u53F7\u4E3A22(\u5F53\u8F93\u5165\u4E3A\u7A7A\u6216\u80050\u65F6, \u4F7F\u7528\u9ED8\u8BA4\u7AEF\u53E3)
+ActionSftp.ProxyHost.Label=\u4EE3\u7406\u4E3B\u673A
+ActionSftp.ProxyHost.Tooltip=\u4EE3\u7406\u4E3B\u673A
+ActionSftp.ProxyPassword.Label=\u4EE3\u7406\u5BC6\u7801
+ActionSftp.ProxyPassword.Tooltip=\u4EE3\u7406\u5BC6\u7801
+ActionSftp.ProxyPort.Label=\u4EE3\u7406\u7AEF\u53E3
+ActionSftp.ProxyPort.Tooltip=\u4EE3\u7406\u7AEF\u53E3
+ActionSftp.ProxyType.Label=\u4EE3\u7406\u7C7B\u578B
+ActionSftp.ProxyUsername.Label=\u4EE3\u7406\u7528\u6237\u540D
+ActionSftp.ProxyUsername.Tooltip=\u5982\u679C\u4F7F\u7528\u4EE3\u7406\u7684\u8BDD, \u8BBE\u7F6E\u4EE3\u7406\u7528\u6237\u540D\u6216\u8005\u7AEF\u53E3
+ActionSftp.RemoteDir.Label=\u8FDC\u7A0B\u76EE\u5F55\:
+ActionSftp.RemoteDir.Tooltip=\u5728SFTP\u4E0A\u7684\u8FDC\u7A0B\u76EE\u5F55
+ActionSftp.RemoveFiles.Label=\u83B7\u53D6\u540E\u5220\u9664\u670D\u52A1\u5668\u6587\u4EF6
+ActionSftp.RemoveFiles.Tooltip=\u4F20\u8F93\u5B8C\u6BD5\u540E\u5220\u9664\u670D\u52A1\u5668\u4E0A\u7684\u6587\u4EF6. \u8981\u5C0F\u5FC3, \u5220\u9664\u64CD\u4F5C\u4E0D\u53EF\u9006
+ActionSftp.Server.Label=SFTP\u670D\u52A1\u5668\u540D\u79F0/IP
+ActionSftp.ServerSettings.Group.Label=\u670D\u52A1\u5668\u8BBE\u7F6E
+ActionSftp.SourceFiles.Group.Label=\u6E90\u6587\u4EF6
+ActionSftp.Tab.Files.Label=\u6587\u4EF6
+ActionSftp.Tab.General.Label=\u4E00\u822C
+ActionSftp.TargetDir.Label=\u76EE\u6807\u76EE\u5F55
+ActionSftp.TargetDir.Tooltip=\u672C\u5730\u7684\u76EE\u6807\u76EE\u5F55
+ActionSftp.TargetFiles.Group.Label=\u76EE\u6807\u6587\u4EF6
+ActionSftp.TestConnection.Label=\u6D4B\u8BD5\u8FDE\u63A5
+ActionSftp.TestConnection.Tooltip=\u6D4B\u8BD5SFTP\u8FDE\u63A5
+ActionSftp.TestFolderExists.Label=\u6D4B\u8BD5\u6587\u4EF6\u5939
+ActionSftp.Title=SFTP \u4E0B\u8F7D
+ActionSftp.Username.Label=\u7528\u6237\u540D\:\r\n
+ActionSftp.Wildcard.Label=\u901A\u914D\u7B26(\u6B63\u5219\u8868\u8FBE\u5F0F)\:
+ActionSftp.Wildcard.Tooltip=\u8F93\u5165\u6B63\u5219\u8868\u8FBE\u5F0F\u6765\u5339\u914D\u8981\u83B7\u53D6\u7684\u6587\u4EF6, \u4F8B\u5982\: \u201C*.txt\u201D\u5C06\u83B7\u53D6\u6240\u6709\u7684\u6587\u672C\u6587\u4EF6
+ActionSftp.getPrevious.Label=\u590D\u5236\u4E0A\u4E00\u4E2A Action \u7684\u7ED3\u679C\u4F5C\u4E3A\u53C2\u6570
+ActionSftp.getPrevious.Tooltip=\u53EA\u4E0B\u8F7D\u4ECE\u524D\u4E00 Action \u83B7\u5F97\u7684\u7ED3\u679C\u6587\u4EF6\u5217\u8868\u4E2D\u7684\u6587\u4EF6
+ActionSftp.keyfilePass.Label=\u5BC6\u94A5
+ActionSftp.keyfilePass.Tooltip=\u5BC6\u94A5
+ActionSftp.keyword=security,file,transfer
+ActionSftp.useKeyFile.Label=\u4F7F\u7528\u79C1\u94A5\u6587\u4EF6
+ActionSftp.useKeyFile.Tooltip=\u4F7F\u7528\u5BC6\u94A5\u6587\u4EF6
diff --git a/plugins/actions/ftp/src/main/resources/org/apache/hop/workflow/actions/sftpput/messages/messages_zh_CN.properties b/plugins/actions/ftp/src/main/resources/org/apache/hop/workflow/actions/sftpput/messages/messages_zh_CN.properties
index 72b1955..2b7006d 100644
--- a/plugins/actions/ftp/src/main/resources/org/apache/hop/workflow/actions/sftpput/messages/messages_zh_CN.properties
+++ b/plugins/actions/ftp/src/main/resources/org/apache/hop/workflow/actions/sftpput/messages/messages_zh_CN.properties
@@ -16,67 +16,95 @@
 # limitations under the License.
 #
 #
-#
-ActionSFTPPut.Description=\u4f7f\u7528SFTP\u4e0a\u4f20\u6587\u4ef6 (Secure File Transfer Protocol)
-ActionSFTPPut.Name=SFTP \u4e0a\u4f20
-ActionSftpPut.TestFolderExists.Label=\u6d4b\u8bd5\u6587\u4ef6\u5939
-ActionSftpPut.DestinationFolder.Tooltip=SFTP\u4e0a\u4f20\u6587\u4ef6\u4e4b\u540e\u7684\u76ee\u6807\u6587\u4ef6\u5939\u3002\u8fd9\u4e2a\u6587\u4ef6\u4e0d\u5728\u8fdc\u7a0b\u4e3b\u673a(\u5728\u672c\u5730)
-ActionSftpPut.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0:
-ActionSftpPut.Tab.General.Label=\u4e00\u822c
-ActionSftpPut.getPrevious.Tooltip=\u53ea\u4e0b\u8f7d\u4e0a\u4e00\u6b65\u7ed3\u679c\u6587\u4ef6\u5217\u8868\u4e2d\u7684\u6587\u4ef6
-ActionSftpPut.FolderExists.Title.Ok=\u6587\u4ef6\u5939\u5df2\u5b58\u5728
-ActionSftpPut.CreateDestinationFolder.Label=\u521b\u5efa\u76ee\u6807\u6587\u4ef6\u5939
-ActionSftpPut.RemoteDir.Label=\u8fdc\u7a0b\u76ee\u5f55:
-ActionSftpPut.keyfilePass.Tooltip=\u5bc6\u94a5
-ActionSftpPut.CreateDestinationFolder.Tooltip=\u5fc5\u8981\u65f6\u521b\u5efa\u76ee\u6807\u6587\u4ef6\u5939
-ActionSftpPut.AfterSFTP.Move.Label=\u79fb\u52a8\u6587\u4ef6\u5230
-ActionSftpPut.Tab.Files.Label=\u6587\u4ef6
-ActionSftpPut.DestinationFolder.Label=\u76ee\u6807\u6587\u4ef6\u5939
-ActionSftpPut.Wildcard.Tooltip=\u8f93\u5165\u7528\u6765\u5339\u914d\u6587\u4ef6\u7684\u6b63\u5219\u8868\u8fbe\u5f0f\uff0c\u4f8b\u5982: *.txt \u8868\u793a\u4e0b\u8f7d\u6240\u6709\u7684\u6587\u672c\u6587\u4ef6
-ActionSftpPut.Filetype.Pem=PEM\u6587\u4ef6
-ActionSftpPut.ProxyUsername.Tooltip=\u5982\u679c\u4f7f\u7528\u4e86\u4ee3\u7406\u8bf7\u8bbe\u7f6e\u4ee3\u7406\u7528\u6237\u540d\u548c\u7aef\u53e3
-ActionSftpPut.TargetFiles.Group.Label=\u76ee\u6807(\u8fdc\u7a0b)\u6587\u4ef6\u5939
-ActionSftpPut.Password.Label=\u5bc6\u7801:
-ActionSftpPut.AfterSFTP.Delete.Label=\u5220\u9664\u6587\u4ef6
-ActionSftpPut.ProxyPassword.Label=\u4ee3\u7406\u5bc6\u7801
-ActionSftpPut.AddfilenametoResult.Tooltip=\u6dfb\u52a0\u6587\u4ef6\u5230\u7ed3\u679c\u6587\u4ef6\u5217\u8868
-ActionSftpPut.Username.Label=\u7528\u6237\u540d:
-ActionSftpPut.ProxyType.Label=\u4ee3\u7406\u7c7b\u578b
-ActionSftpPut.Server.Label=SFTP\u670d\u52a1\u5668\u540d\u79f0/IP
-ActionSftpPut.Connected.Title.Ok=\u786e\u8ba4
-ActionSftpPut.Username.Tooltip=\u7528\u6237\u540d
-ActionSftpPut.LocalDir.Label=\u672c\u5730\u76ee\u5f55:
-ActionSftpPut.ProxyUsername.Label=\u4ee3\u7406\u7528\u6237\u540d
-ActionSftpPut.keyfilePass.Label=\u5bc6\u94a5
-ActionSftpPut.ProxyPort.Label=\u4ee3\u7406\u7aef\u53e3
-ActionSftpPut.getPrevious.Label=\u5c06\u4e0a\u4e00\u4f5c\u4e1a\u9879\u7684\u7ed3\u679c\u4f5c\u4e3a\u53c2\u6570
-ActionSftpPut.Compression.Label=\u538b\u7f29
-ActionSftpPut.RemoteDir.Tooltip=\u5728SecureFTP\u670d\u52a1\u5668\u4e0a\u7684\u8fdc\u7a0b\u76ee\u5f55
-ActionSftpPut.AddfilenametoResult.Label=\u6dfb\u52a0\u6587\u4ef6\u5230\u7ed3\u679c\u6587\u4ef6\u5217\u8868
-ActionSftpPut.AfterSFTP.DoNothing.Label=\u4ec0\u4e48\u4e5f\u4e0d\u505a
-ActionSftpPut.Wildcard.Label=\u901a\u914d\u7b26(\u6b63\u5219\u8868\u8fbe\u5f0f):
-ActionSftpPut.KeyFilename.Label=\u79c1\u94a5\u6587\u4ef6
-ActionSftpPut.TestConnection.Tooltip=\u6d4b\u8bd5SFTP\u8fde\u63a5
-ActionSftpPut.FolderExists.Title.Bad=\u9519\u8bef\u6587\u4ef6\u5939
-ActionSftpPut.useKeyFile.Tooltip=\u4f7f\u7528\u5bc6\u94a5\u6587\u4ef6
-ActionSftpPut.Filetype.All=\u5168\u90e8\u6587\u4ef6
-ActionSftpPut.CreateRemoteFolderFiles.Tooltip=\u5fc5\u8981\u65f6\u521b\u5efa\u8fdc\u7a0b\u6587\u4ef6\u5939
-ActionSftpPut.BrowseFolders.Label=\u6587\u4ef6\u5939
-ActionSftpPut.TestConnection.Label=\u6d4b\u8bd5\u8fde\u63a5
-ActionSftpPut.Title=SFTP \u4e0a\u4f20
-ActionSftpPut.SuccessWhenNoFile.Tooltip=\u9009\u4e2d\u6b64\u9009\u9879\u8868\u793a\u53ea\u6709\u5f53\u6ca1\u6709\u6587\u4ef6\u4f20\u8f93\u65f6\u8868\u793a\u4f5c\u4e1a\u8fd0\u884c\u6210\u529f\uff0c\u5426\u5219\u4f5c\u4e1a\u8fd0\u884c\u5931\u8d25
-ActionSftpPut.SuccessWhenNoFile.Label=\u5f53\u672c\u5730\u6ca1\u6709\u6587\u4ef6\u65f6\u8fd0\u884c\u6210\u529f
-ActionSftpPut.ProxyHost.Tooltip=\u4ee3\u7406\u4e3b\u673a
-ActionSftpPut.Port.Label=\u7aef\u53e3
-ActionSftpPut.AfterFTPPut.Label=SFTP\u4e0a\u4f20\u540e
-ActionSftpPut.CreateRemoteFolderFiles.Label=\u521b\u5efa\u6587\u4ef6\u5939
-ActionSftpPut.SourceFiles.Group.Label=\u6e90(\u672c\u5730)\u6587\u4ef6
-ActionSftpPut.KeyFilename.Tooltip=\u8f93\u5165\u79c1\u94a5\u6587\u4ef6\u540d\u53ca\u5176\u5168\u8def\u5f84\u3002\u79c1\u94a5\u6587\u4ef6\u5fc5\u987b\u662f.pem\u683c\u5f0f\u7684\uff0c\u4e0d\u80fd\u662f.ppk(putty)\u683c\u5f0f\u7684\uff0c\u5982\u679c\u4f60\u6709putty\u6587\u4ef6\uff0c\u8bf7\u7528puttygen\u5de5\u5177\u8f6c\u6362\u6210 OpenSSH\u5bc6\u94a5
-ActionSftpPut.ProxyPort.Tooltip=\u4ee3\u7406\u7aef\u53e3
-ActionSftpPut.ProxyHost.Label=\u4ee3\u7406\u4e3b\u673a
-ActionSftpPut.useKeyFile.Label=\u4f7f\u7528\u79c1\u94a5\u6587\u4ef6
-ActionSftpPut.LocalDir.Tooltip=\u672c\u5730\u76ee\u5f55
-ActionSftpPut.ProxyPassword.Tooltip=\u4ee3\u7406\u5bc6\u7801
-ActionSftpPut.ServerSettings.Group.Label=\u670d\u52a1\u5668\u8bbe\u7f6e
-ActionSftpPut.Port.Tooltip=SFTP\u670d\u52a1\u5668\u7aef\u53e3\uff0c\u9ed8\u8ba4\u4e3a22(\u5f53\u6ca1\u6709\u586b\u5199\u7aef\u53e3\u6216\u8005\u4e3a0\u65f6\uff0c\u8868\u793a\u4f7f\u7528\u9ed8\u8ba4\u7aef\u53e3)
+ActionSFTPPut.Description=\u4F7F\u7528SFTP\u4E0A\u4F20\u6587\u4EF6 (Secure File Transfer Protocol)
+ActionSFTPPut.Name=SFTP \u4E0A\u4F20
+ActionSSH2PUT.Log.DestinatFolderMissing=\u7F3A\u5931\u76EE\u6807\u76EE\u5F55\!
+ActionSSH2PUT.Log.DestinatFolderNotExist=\u6CA1\u6709\u627E\u5230\u76EE\u6807\u76EE\u5F55 [{0}]\!
+ActionSftp.Error.KeyFileMissing=\u7F3A\u5931\u79C1\u94A5\u6587\u4EF6\u540D\u79F0\!
+ActionSftp.Error.KeyFileNotFound=\u6CA1\u6709\u627E\u5230\u6587\u4EF6 [{0}]\!
+ActionSftpPut.AddfilenametoResult.Label=\u6DFB\u52A0\u6587\u4EF6\u5230\u7ED3\u679C\u6587\u4EF6\u5217\u8868
+ActionSftpPut.AddfilenametoResult.Tooltip=\u6DFB\u52A0\u6587\u4EF6\u5230\u7ED3\u679C\u6587\u4EF6\u5217\u8868
+ActionSftpPut.AfterFTPPut.Label=SFTP\u4E0A\u4F20\u540E
+ActionSftpPut.AfterSFTP.Delete.Label=\u5220\u9664\u6587\u4EF6
+ActionSftpPut.AfterSFTP.DoNothing.Label=\u4EC0\u4E48\u4E5F\u4E0D\u505A
+ActionSftpPut.AfterSFTP.Move.Label=\u79FB\u52A8\u6587\u4EF6\u5230
+ActionSftpPut.ArgsFromPreviousNothing=\u65E0\u6CD5\u4ECE\u524D\u7F6E\u8FD4\u56DE\u7ED3\u679C\u4E2D\u6536\u5230\u4EFB\u4F55\u6570\u636E\!
+ActionSftpPut.ArgsFromPreviousNothingFiles=\u65E0\u6CD5\u4ECE\u524D\u7F6E\u8FD4\u56DE\u7ED3\u679C\u4E2D\u6536\u5230\u4EFB\u4F55\u6570\u636E\!
+ActionSftpPut.BrowseFolders.Label=\u6587\u4EF6\u5939
+ActionSftpPut.Compression.Label=\u538B\u7F29
+ActionSftpPut.Connected.OK=\u4E00\u5207\u6B63\u5E38, \u7EE7\u7EED\u4E0A\u4F20\u6587\u4EF6\u5230\u6307\u5B9A SFTP \u670D\u52A1\u5668.
 ActionSftpPut.Connected.Title.Bad=NOK
+ActionSftpPut.Connected.Title.Ok=\u786E\u8BA4
+ActionSftpPut.CreateDestinationFolder.Label=\u521B\u5EFA\u76EE\u6807\u6587\u4EF6\u5939
+ActionSftpPut.CreateDestinationFolder.Tooltip=\u5FC5\u8981\u65F6\u521B\u5EFA\u76EE\u6807\u6587\u4EF6\u5939
+ActionSftpPut.CreateRemoteFolderFiles.Label=\u521B\u5EFA\u6587\u4EF6\u5939
+ActionSftpPut.CreateRemoteFolderFiles.Tooltip=\u5FC5\u8981\u65F6\u521B\u5EFA\u8FDC\u7A0B\u6587\u4EF6\u5939
+ActionSftpPut.DestinationFolder.Label=\u76EE\u6807\u6587\u4EF6\u5939
+ActionSftpPut.DestinationFolder.Tooltip=SFTP\u4E0A\u4F20\u6587\u4EF6\u4E4B\u540E\u7684\u76EE\u6807\u6587\u4EF6\u5939. \u8FD9\u4E2A\u6587\u4EF6\u4E0D\u5728\u8FDC\u7A0B\u4E3B\u673A(\u5728\u672C\u5730)
+ActionSftpPut.Error.ArgFromPrevious=\u5C1D\u8BD5\u4ECE\u524D\u7F6E\u8FD4\u56DE\u7ED3\u679C\u4E2D\u83B7\u53D6\u6587\u4EF6\u540D\u79F0\u65F6\u5931\u8D25\!
+ActionSftpPut.Error.CanNotFindRemoteFolder=\u65E0\u6CD5\u627E\u5230\u8FDC\u7A0B\u76EE\u5F55 [{0}]\!
+ActionSftpPut.Error.NoFileToSend=\u6CA1\u6709\u627E\u5230\u8981\u4E0A\u4F20\u7684\u6587\u4EF6\!
+ActionSftpPut.ErrorConnect.NOK=\u65E0\u6CD5\u8FDE\u63A5\u5230 SFTP \u670D\u52A1\u5668 {0}\n\u8BE6\u7EC6\: {1}
+ActionSftpPut.ErrorConnect.Title.Bad=\u6D4B\u8BD5\u8FDE\u63A5\u5931\u8D25
+ActionSftpPut.Exception=\u5C1D\u8BD5\u4E0A\u4F20\u6587\u4EF6\u65F6\u51FA\u9519, \u5F02\u5E38\: {0}
+ActionSftpPut.Filetype.All=\u5168\u90E8\u6587\u4EF6
+ActionSftpPut.Filetype.Pem=PEM\u6587\u4EF6
+ActionSftpPut.FolderExists.OK=\u8FDC\u7A0B\u76EE\u5F55 {0} \u5B58\u5728.
+ActionSftpPut.FolderExists.Title.Bad=\u9519\u8BEF\u6587\u4EF6\u5939
+ActionSftpPut.FolderExists.Title.Ok=\u6587\u4EF6\u5939\u5DF2\u5B58\u5728
+ActionSftpPut.KeyFilename.Label=\u79C1\u94A5\u6587\u4EF6
+ActionSftpPut.KeyFilename.Tooltip=\u8F93\u5165\u79C1\u94A5\u6587\u4EF6\u540D\u53CA\u5176\u5168\u8DEF\u5F84. \u79C1\u94A5\u6587\u4EF6\u5FC5\u987B\u662F.pem\u683C\u5F0F\u7684, \u4E0D\u80FD\u662F.ppk(putty)\u683C\u5F0F\u7684, \u5982\u679C\u4F60\u6709putty\u6587\u4EF6, \u8BF7\u7528puttygen\u5DE5\u5177\u8F6C\u6362\u6210 OpenSSH\u5BC6\u94A5
+ActionSftpPut.LocalDir.Label=\u672C\u5730\u76EE\u5F55\:
+ActionSftpPut.LocalDir.Tooltip=\u672C\u5730\u76EE\u5F55
+ActionSftpPut.Log.ChangedDirectory=\u5207\u6362\u5230\u76EE\u5F55 [{0}]
+ActionSftpPut.Log.DeletedFile=\u5DF2\u5220\u9664\u6587\u4EF6 [{0}].
+ActionSftpPut.Log.FileMoved=\u6587\u4EF6 [{0}] \u79FB\u52A8\u5230\u76EE\u5F55 [{1}]
+ActionSftpPut.Log.FilefromPreviousNotFound=\u6CA1\u6709\u627E\u5230\u4ECE\u524D\u7F6E\u8FD4\u56DE\u7ED3\u679C\u4F20\u9012\u8FC7\u6765\u7684\u6587\u4EF6 {0}, \u8DF3\u8FC7...
+ActionSftpPut.Log.FilenameAddedToResultFilenames=\u6DFB\u52A0\u6587\u4EF6 [{0}] \u5230\u8FD4\u56DE\u6587\u4EF6\u5217\u8868\u4E2D...
+ActionSftpPut.Log.FilenameFromResult=\u524D\u7F6E\u8FD4\u56DE\u7ED3\u679C\u4F20\u9012\u8FC7\u6765\u7684\u6587\u4EF6 {0} \u5B58\u5728.
+ActionSftpPut.Log.OpenedConnection=\u4F7F\u7528\u7528\u6237 {2} \u8FDE\u63A5\u5230 SFTP \u670D\u52A1\u5668 [{0}\:{1}]
+ActionSftpPut.Log.PuttingFile=\u4E0A\u4F20\u6587\u4EF6 [{0}] \u5230\u76EE\u5F55 [{1}]
+ActionSftpPut.Log.RemoteFolderCreated=\u8FDC\u7A0B\u76EE\u5F55 [{0}] \u5DF2\u521B\u5EFA.
+ActionSftpPut.Log.RowsFromPreviousResult=\u4ECE\u524D\u7F6E\u8FD4\u56DE\u7ED3\u679C\u4E2D\u4F20\u9012\u8FC7\u6765 {0} \u4E2A\u6587\u4EF6\u8DEF\u5F84
+ActionSftpPut.Log.StartAction=\u5F00\u59CB SFTP \u64CD\u4F5C
+ActionSftpPut.Log.TransferredFile=\u4E0A\u4F20\u6587\u4EF6 [{0}]
+ActionSftpPut.Name.Label=Action \u540D\u79F0\:
+ActionSftpPut.Password.Label=\u5BC6\u7801\:
+ActionSftpPut.Port.Label=\u7AEF\u53E3
+ActionSftpPut.Port.Tooltip=SFTP\u670D\u52A1\u5668\u7AEF\u53E3, \u9ED8\u8BA4\u4E3A22(\u5F53\u6CA1\u6709\u586B\u5199\u7AEF\u53E3\u6216\u8005\u4E3A0\u65F6, \u8868\u793A\u4F7F\u7528\u9ED8\u8BA4\u7AEF\u53E3)
+ActionSftpPut.ProxyHost.Label=\u4EE3\u7406\u4E3B\u673A
+ActionSftpPut.ProxyHost.Tooltip=\u4EE3\u7406\u4E3B\u673A
+ActionSftpPut.ProxyPassword.Label=\u4EE3\u7406\u5BC6\u7801
+ActionSftpPut.ProxyPassword.Tooltip=\u4EE3\u7406\u5BC6\u7801
+ActionSftpPut.ProxyPort.Label=\u4EE3\u7406\u7AEF\u53E3
+ActionSftpPut.ProxyPort.Tooltip=\u4EE3\u7406\u7AEF\u53E3
+ActionSftpPut.ProxyType.Label=\u4EE3\u7406\u7C7B\u578B
+ActionSftpPut.ProxyUsername.Label=\u4EE3\u7406\u7528\u6237\u540D
+ActionSftpPut.ProxyUsername.Tooltip=\u5982\u679C\u4F7F\u7528\u4E86\u4EE3\u7406\u8BF7\u8BBE\u7F6E\u4EE3\u7406\u7528\u6237\u540D\u548C\u7AEF\u53E3
+ActionSftpPut.RemoteDir.Label=\u8FDC\u7A0B\u76EE\u5F55\:
+ActionSftpPut.RemoteDir.Tooltip=\u5728SecureFTP\u670D\u52A1\u5668\u4E0A\u7684\u8FDC\u7A0B\u76EE\u5F55
+ActionSftpPut.Server.Label=SFTP\u670D\u52A1\u5668\u540D\u79F0/IP
+ActionSftpPut.ServerSettings.Group.Label=\u670D\u52A1\u5668\u8BBE\u7F6E
+ActionSftpPut.SourceFiles.Group.Label=\u6E90(\u672C\u5730)\u6587\u4EF6
+ActionSftpPut.SuccessWhenNoFile.Label=\u5F53\u672C\u5730\u6CA1\u6709\u6587\u4EF6\u65F6\u8FD0\u884C\u6210\u529F
+ActionSftpPut.SuccessWhenNoFile.Tooltip=\u9009\u4E2D\u6B64\u9009\u9879\u8868\u793A\u53EA\u6709\u5F53\u6CA1\u6709\u6587\u4EF6\u4F20\u8F93\u65F6\u8868\u793A Action \u8FD0\u884C\u6210\u529F, \u5426\u5219 Action \u8FD0\u884C\u5931\u8D25
+ActionSftpPut.Tab.Files.Label=\u6587\u4EF6
+ActionSftpPut.Tab.General.Label=\u4E00\u822C
+ActionSftpPut.TargetFiles.Group.Label=\u76EE\u6807(\u8FDC\u7A0B)\u6587\u4EF6\u5939
+ActionSftpPut.TestConnection.Label=\u6D4B\u8BD5\u8FDE\u63A5
+ActionSftpPut.TestConnection.Tooltip=\u6D4B\u8BD5SFTP\u8FDE\u63A5
+ActionSftpPut.TestFolderExists.Label=\u6D4B\u8BD5\u6587\u4EF6\u5939
+ActionSftpPut.Title=SFTP \u4E0A\u4F20
+ActionSftpPut.Username.Label=\u7528\u6237\u540D\:
+ActionSftpPut.Username.Tooltip=\u7528\u6237\u540D
+ActionSftpPut.Wildcard.Label=\u901A\u914D\u7B26(\u6B63\u5219\u8868\u8FBE\u5F0F)\:
+ActionSftpPut.Wildcard.Tooltip=\u8F93\u5165\u7528\u6765\u5339\u914D\u6587\u4EF6\u7684\u6B63\u5219\u8868\u8FBE\u5F0F, \u4F8B\u5982\: *.txt \u8868\u793A\u4E0B\u8F7D\u6240\u6709\u7684\u6587\u672C\u6587\u4EF6
+ActionSftpPut.getPrevious.Label=\u524D\u7F6E\u8FD4\u56DE\u7ED3\u679C\u4F5C\u4E3A\u53C2\u6570
+ActionSftpPut.getPrevious.Tooltip=\u53EA\u4E0B\u8F7D\u4E0A\u4E00\u6B65\u7ED3\u679C\u6587\u4EF6\u5217\u8868\u4E2D\u7684\u6587\u4EF6
+ActionSftpPut.getPreviousFiles.Label=\u524D\u7F6E\u8FD4\u56DE\u6587\u4EF6\u505A\u4E3A\u53C2\u6570
+ActionSftpPut.getPreviousFiles.Tooltip=\u9009\u4E2D\u8BE5\u9009\u9879\u5219\u4ECE\u5176\u5B83 Pipeline \u6216 Action \u52A8\u6001\u751F\u6210\u7684\u6587\u4EF6\u5C06\u4F5C\u4E3A\u8981\u4E0A\u4F20\u7684\u6587\u4EF6.\n\u5728\u4E0A\u4F20\u6587\u4EF6\u65F6, \u5FFD\u7565\u4E0D\u5B58\u5728\u7684\u6587\u4EF6
+ActionSftpPut.keyfilePass.Label=\u5BC6\u94A5
+ActionSftpPut.keyfilePass.Tooltip=\u5BC6\u94A5
+ActionSftpPut.keyword=security,file,transfer
+ActionSftpPut.useKeyFile.Label=\u4F7F\u7528\u79C1\u94A5\u6587\u4EF6
+ActionSftpPut.useKeyFile.Tooltip=\u4F7F\u7528\u5BC6\u94A5\u6587\u4EF6
diff --git a/plugins/actions/ftp/src/main/resources/org/apache/hop/workflow/actions/util/messages/messages_zh_CN.properties b/plugins/actions/ftp/src/main/resources/org/apache/hop/workflow/actions/util/messages/messages_zh_CN.properties
index 3c83fcb..1bb6a52 100644
--- a/plugins/actions/ftp/src/main/resources/org/apache/hop/workflow/actions/util/messages/messages_zh_CN.properties
+++ b/plugins/actions/ftp/src/main/resources/org/apache/hop/workflow/actions/util/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -15,10 +16,14 @@
 # limitations under the License.
 #
 #
-ActionFTP.LoggedIn=\u4ee5\u7528\u6237 {0} \u767b\u9646
-ActionFTP.SetActive=\u8bbe\u7f6eFTP\u8fde\u63a5\u6a21\u5f0f
-ActionFTP.SetPassive=\u8bbe\u7f6e\u88ab\u52a8 FTP \u8fde\u63a5\u6a21\u5f0f
-ActionFTP.SetBinary=\u8bbe\u7f6e\u4e8c\u8fdb\u5236\u4f20\u8f93\u6a21\u5f0f
-ActionFTP.SetAscii=\u8bbe\u7f6e ASCII \u4f20\u8f93\u6a21\u5f0f
-ActionFTP.SetTimeout=\u8bbe\u7f6e\u8d85\u65f6 {0}
-ActionFTP.SetEncoding=\u8bbe\u7f6e\u63a7\u5236\u7f16\u7801\u4e3a{0}
+ActionFTP.LoggedIn=\u4EE5\u7528\u6237 {0} \u767B\u9646
+ActionFTP.OpenedConnection=\u5DF2\u8FDE\u63A5\u5230 FTP \u670D\u52A1\u5668 [{0}]
+ActionFTP.OpenedProxyConnectionOn=\u5DF2\u8FDE\u63A5\u5230 FTP \u7684\u4EE3\u7406\u670D\u52A1\u5668 [{0}]
+ActionFTP.SetActive=\u8BBE\u7F6EFTP\u8FDE\u63A5\u6A21\u5F0F
+ActionFTP.SetAscii=\u8BBE\u7F6E ASCII \u4F20\u8F93\u6A21\u5F0F
+ActionFTP.SetBinary=\u8BBE\u7F6E\u4E8C\u8FDB\u5236\u4F20\u8F93\u6A21\u5F0F
+ActionFTP.SetEncoding=\u8BBE\u7F6E\u63A7\u5236\u7F16\u7801\u4E3A{0}
+ActionFTP.SetPassive=\u8BBE\u7F6E\u88AB\u52A8 FTP \u8FDE\u63A5\u6A21\u5F0F
+ActionFTP.SetTimeout=\u8BBE\u7F6E\u8D85\u65F6 {0}
+ActionFTP.SocksProxy.IncompleteCredentials=Socks \u4EE3\u7406\u7684\u8EAB\u4EFD\u9A8C\u8BC1\u4FE1\u606F\u4E0D\u5B8C\u6574. \u5982\u679C\u4E0D\u9700\u8981\u8EAB\u4EFD\u9A8C\u8BC1\u5219\u6E05\u9664\u7528\u6237\u540D\u548C\u5BC6\u7801.
+ActionFTP.SocksProxy.PortMissingException=\u6CA1\u6709\u6307\u5B9A socks \u4EE3\u7406\u670D\u52A1\u5668 {0} \u7684\u7AEF\u53E3.
diff --git a/plugins/actions/getpop/src/main/resources/org/apache/hop/workflow/actions/getpop/messages/messages_zh_CN.properties b/plugins/actions/getpop/src/main/resources/org/apache/hop/workflow/actions/getpop/messages/messages_zh_CN.properties
index 233c435..8de5359 100644
--- a/plugins/actions/getpop/src/main/resources/org/apache/hop/workflow/actions/getpop/messages/messages_zh_CN.properties
+++ b/plugins/actions/getpop/src/main/resources/org/apache/hop/workflow/actions/getpop/messages/messages_zh_CN.properties
@@ -16,144 +16,194 @@
 # limitations under the License.
 #
 #
-#
-ActionGetPOP.Description=\u4ece\u4e00\u4e2aPOP server\u83b7\u53d6\u6587\u4ef6\u5e76\u4e14\u628a\u90ae\u4ef6\u4fdd\u5b58\u5728\u672c\u5730\u6307\u5b9a\u7684\u76ee\u5f55\u3002
-ActionGetPOP.Name=POP \u6536\u4fe1
-ActionGetPOP.ReadTo.Tooltip=\u65e5\u671f 2
-ActionGetPOP.SelectFolderConnection.Tooltip=\u9009\u62e9\u4e00\u4e2a\u6587\u4ef6\u5939
-ActionGetMailsFromPOP.EmailFrom.Label=\u6d88\u606f\u6765\u81ea\uff1a{0}
-ActionGetPOP.Subject.Label=\u4e3b\u9898
-ActionGetPOP.ReadFrom.Tooltip=\u65e5\u671f 1
-ActionGetPOP.IMAPListGetNotAnswered.Label=\u83b7\u53d6\u672a\u88ab\u56de\u590d\u90ae\u4ef6
-ActionGetPOP.ConditionGreater.Label=\u5927\u4e8e
-ActionGetPOP.DifferentFolderForAttachmentMails.Tooltip=\u4fdd\u5b58\u9644\u4ef6\u5230\u53e6\u4e00\u4e2a\u6587\u4ef6\u5939
-ActionGetPOP.SSLPort.Label=\u7aef\u53e3
-ActionGetPOP.GetAttachmentMails.Label=\u83b7\u53d6\u90ae\u4ef6\u9644\u4ef6
-ActionGetPOP.AttachmentFolder.Label=\u9644\u4ef6\u6587\u4ef6\u5939
-ActionGetPOP.IMAPListGetDraft.Label=\u83b7\u53d6\u8349\u7a3f\u4fe1\u606f
-ActionGetMailsFromPOP.FolderNotExists2.Label=] \u4e0d\u5b58\u5728
-ActionGetPOP.DifferentFolderForAttachmentMails.Label=\u9644\u8fd1\u4fdd\u5b58\u5230\u53e6\u5916\u4e00\u4e2a\u6587\u4ef6\u5939\u4e2d
-ActionGetPOP.AttachmentWildcard.Tooltip=\u901a\u914d\u7b26
-ActionGetPOP.ActionType.DeleteMessages.Label=\u5220\u9664\u6d88\u606f
-ActionGetPOP.createMoveToFolderMails.Tooltip=\u5982\u5fc5\u8981\uff0c\u65b0\u5efa\u6587\u4ef6\u5939
-ActionGetPOP.NegateBody.Tooltip=\u65e0\u6548\u5185\u5bb9
-ActionGetPOP.TestConnection.Label=\u6d4b\u8bd5\u8fde\u63a5
-ActionGetPOP.Server.Label=\u6e90\u4e3b\u673a
-ActionGetPOP.ReceivedDate.Group.Label=\u63a5\u6536\u65e5\u671f
-ActionGetPOP.ReadTo.Label=\u65e5\u671f 2
-ActionGetPOP.Name.Default=\u4ecePOP\u83b7\u53d6\u90ae\u4ef6
-ActionGetPOP.Body.Label=\u5185\u5bb9
-ActionGetMailsFromPOP.FolderNotExists1.Label=\u6587\u4ef6\u5939 [
-ActionGetPOP.IMAPListGetNew.Label=\u83b7\u53d6\u65b0\u4fe1\u606f
-ActionGetPOP.OutputDirectory.Tooltip=\u76ee\u6807\u76ee\u5f55
-ActionGetPOP.createLocalFolder.Tooltip=\u5982\u5fc5\u8981\uff0c\u65b0\u5efa\u6587\u4ef6\u5939
-ActionGetPOP.ConditionEqual.Label=\u7b49\u540c\u4e8e
-ActionGetPOP.TestIMAPFolderConnection.Label=\u6d4b\u8bd5\u6587\u4ef6\u5939
-ActionGetPOP.IMAPFolderExists.OK=\u6587\u4ef6\u5939[{0}]\u5b58\u5728
-ActionGetMailsFromPOP.FolderOpened.FullName=\u6587\u4ef6\u5939\u5168\u540d\uff1a[{0}]
-ActionGetPOP.GetMessageMails.Label=\u4fdd\u5b58\u6d88\u606f\u5185\u5bb9
-ActionGetPOP.NegateReceipient.Tooltip=\u65e0\u6548
-ActionGetMailsFromPOP.FolderOpened.Name=\u6587\u4ef6\u5939\uff1a[{0}]
-ActionGetPOP.IMAPListGetUnFlagged.Label=\u83b7\u53d6\u672a\u88ab\u6807\u8bb0\u7684\u90ae\u4ef6
-ActionGetPOP.ReadFrom.Label=\u65e5\u671f 1
-ActionGetPOP.Title=POP\u6536\u4fe1
-ActionGetPOP.SelectFolderConnection.Label=\u9009\u62e9\u4e00\u4e2a\u6587\u4ef6\u5939
-ActionGetPOP.ConditionSmaller.Label=\u5c0f\u4e8e
-ActionGetPOP.IMAPListGetFlagged.Label=\u83b7\u53d6\u6807\u8bb0\u7684\u4fe1\u606f
-ActionGetPOP.IMAPListGetNotDraft.Label=\u83b7\u53d6\u975e\u8349\u7a3f\u90ae\u4ef6
-ActionGetPOP.afterGetIMAP.MoveTo.Label=\u79fb\u52a8\u6d88\u606f\u5230\u6587\u4ef6\u5939
-ActionGetPOP.DeleteMails.Tooltip=\u63a5\u6536\u90ae\u4ef6\u540e\u5220\u9664\u670d\u52a1\u5668\u4e0a\u7684\u90ae\u4ef6
-ActionGetPOP.SelectDate=\u9009\u62e9\u4e00\u4e2a\u65e5\u671f
-ActionGetPOP.ActionType.Label=\u52a8\u4f5c
-ActionGetPOP.UseProxyMails.Tooltip=\u4f7f\u7528\u4ee3\u7406
-ActionGetPOP.IMAPListGetOld.Label=\u83b7\u53d6\u5df2\u8bfb\u90ae\u4ef6
-ActionGetPOP.Tab.Pop.Label=\u8bbe\u7f6e
-ActionGetPOP.IMAPListGetAll.Label=\u83b7\u53d6\u6240\u6709\u6d88\u606f
-ActionGetPOP.MoveToFolder.Tooltip=\u79fb\u52a8\u5230\u6587\u4ef6\u5939
-ActionGetPOP.AttachmentWildcard.Label=\u9644\u4ef6\u901a\u914d\u7b26
-ActionGetPOP.IMAPFolder.Label=IMAP\u6587\u4ef6\u5939
-MailConnection.Error.FetchingMessages=\u83b7\u53d6\u4e0b\u4e00\u6761\u4fe1\u606f\u51fa\u9519
-MailConnection.Error.MovingMessage=\u79fb\u52a8\u90ae\u4ef6\u51fa\u9519\uff08\u6570\u91cf{0}\u5230\u6587\u4ef6\u5939[{1}]\uff09
-ActionGetPOP.BrowseFolders.Label=\u9009\u62e9\u76ee\u6807\u6587\u4ef6\u5939
-MailConnection.Error.DeletingMessage=\u5220\u9664\u4fe1\u606f\u51fa\u9519
-ActionGetPOP.GetAttachmentMails.Tooltip=\u83b7\u53d6\u90ae\u4ef6\u9644\u8fd1\u5e76\u4fdd\u5b58
-ActionGetPOP.Connected.Title.Bad=\u9519\u8bef
-ActionGetPOP.ConditionOnReceivedDate.Label=\u6761\u4ef6
-ActionGetPOP.Header.Group.Label=\u5934\u90e8
-ActionGetPOP.ActionType.MoveMessages.Label=\u79fb\u52a8\u90ae\u4ef6\u5230\u6587\u4ef6\u5939
-ActionGetPOP.Content.Group.Label=\u5185\u5bb9
-ActionGetPOP.Tab.General.Label=\u4e00\u822c
-ActionGetMailsFromPOP.InvalidFolder.Label=\u6709\u6548\u6587\u4ef6\u5939
-ActionGetMailsFromPOP.EmailSubject.Label=\u6d88\u606f\u4e3b\u9898\uff1a{0}
-ActionGetPOP.Protocol.Label=\u534f\u8bae
-ActionGetPOP.IMAPFirstmails.Label=\u83b7\u53d6\u7b2c\u4e00\u5c01\u90ae\u4ef6
-ActionGetPOP.IMAPFolderExists.Title.Bad=\u9519\u8bef
-MailConnection.ConnectionClosed=\u8fde\u63a5\u5df2\u5173\u95ed
-ActionGetPOP.GetMessageMails.Tooltip=\u4fdd\u5b58\u6d88\u606f\u5185\u5bb9
-ActionGetMailsFromPOP.InvalidDefaultFolder.Label=\u65e0\u6548\u7684\u9ed8\u8ba4\u6587\u4ef6\u5939\uff01
-ActionGetPOP.TestConnection.Tooltip=\u6d4b\u8bd5\u8fde\u63a5
-SelectFolderDialog.Dialog.Main.Title=\u53ef\u7528\u6587\u4ef6\u5939
-ActionGetMailsFromPOP.MessageNumber.Label=\u6d88\u606f\u6570\u91cf\uff1a{0}
-ActionGetPOP.AttachmentFolder.Tooltip=\u4fdd\u5b58\u9644\u4ef6\u5230\u8fd9\u4e2a\u6587\u4ef6\u5939
-ActionGetPOP.IMAPListGetAnswered.Label=\u83b7\u53d6\u56de\u590d\u6d88\u606f
-ActionGetPOP.TargetFolder.Group.Label=\u76ee\u6807\u6587\u4ef6\u5939
-ActionGetPOP.Connected.Title.Ok=\u8fde\u63a5\u6b63\u786e
-ActionGetPOP.POP3Settings.Group.Label=POP3\u8bbe\u7f6e
-ActionGetPOP.createLocalFolder.Label=\u65b0\u5efa\u6587\u4ef6\u5939
-ActionGetPOP.afterGetIMAP.Delete.Label=\u5220\u9664\u90ae\u4ef6
-ActionGetPOP.TestIMAPFolderConnection.Tooltip=\u6d4b\u8bd5\u6587\u4ef6\u5939
-ActionGetPOP.IMAPListGetRead.Label=\u83b7\u53d6\u5df2\u8bfb\u90ae\u4ef6
-ActionGetPOP.IMAPFolderExists.Title.Ok=\u6587\u4ef6\u5939\u5b58\u5728
-ActionGetPOP.Tab.Search.Label=\u8fc7\u6ee4
-ActionGetPOP.ServerSettings.Group.Label=\u670d\u52a1\u5668\u8bbe\u7f6e
-ActionGetPOP.TestMoveToFolderConnection.Tooltip=\u6d4b\u8bd5\u6587\u4ef6\u5939
-ActionGetMailsFromPOP.MessageMoved=\u6d88\u606f{0}\u88ab\u79fb\u52a8\u5230\u6587\u4ef6\u5939[{1}]
-ActionGetMailsFromPOP.Log.OutputFolderNotExist=\u627e\u4e0d\u5230\u8f93\u51fa\u6587\u4ef6\u5939[{0}]\uff01\u9700\u8981\u521b\u5efa\u8be5\u6587\u4ef6\u5939
-ActionGetPOP.RetrieveUnreadMails.Label=\u672a\u8bfb\u90ae\u4ef6
-ActionGetPOP.IMAPListmails.Label=\u6536\u53d6\u90ae\u4ef6
-ActionGetPOP.RetrieveFirstMails.Label=\u63a5\u6536\u7b2c\u4e00\u5c01\u90ae\u4ef6
-ActionGetPOP.SelectMoveToFolderConnection.Tooltip=\u9009\u62e9\u6587\u4ef6\u5939
-ActionGetPOP.Username.Label=\u7528\u6237\u540d
-ActionGetPOP.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0
-ActionGetPOP.ProxyUsername.Label=\u4ee3\u7406\u7528\u6237\u540d
-ActionGetPOP.IMAPSettings.Groupp.Label=IMAP\u8bbe\u7f6e
-ActionGetPOP.UseProxyMails.Label=\u4f7f\u7528\u4ee3\u7406
-ActionGetPOP.IMAPListGetUnread.Label=\u83b7\u53d6\u672a\u8bfb\u90ae\u4ef6
-ActionGetMailsFromPOP.Log.OutputFolderExists=\u8f93\u51fa\u6587\u4ef6\u5939[{0}]\u5b58\u5728
-ActionGetPOP.Password.Label=\u5bc6\u7801
-ActionGetPOP.Username.Tooltip=\u7528\u6237\u540d
-ActionGetMailsFromPOP.MessageDeleted={0}\u6761\u6d88\u606f\u88ab\u5220\u9664
-ActionGetPOP.MoveToFolder.Label=\u79fb\u52a8\u5230\u6587\u4ef6\u5939
-ActionGetMailsFromPOP.FolderOpened.Label=\u6587\u4ef6\u5939[{0}]\u88ab\u6253\u5f00
-ActionGetPOP.UseSSLMails.Label=\u4f7f\u7528SSL
-MailConnection.ClosingConnection=\u5173\u95ed\u8fde\u63a5...
-ActionGetPOP.UseSSLMails.Tooltip=\u5982\u679c\u4f60\u7684\u670d\u52a1\u5668\u53ea\u652f\u6301SSL\u8fde\u63a5\uff0c\u8bf7\u9009\u4e2d\u6b64\u9009\u9879
-ActionGetPOP.ProxyUsername.Tooltip=\u4ee3\u7406\u7528\u6237\u540d
-ActionGetPOP.FilenamePattern.Label=\u76ee\u6807\u6587\u4ef6\u540d\u6837\u5f0f
-ActionGetPOP.IncludeSubFoldersMails.Label=\u5305\u542b\u5b50\u6587\u4ef6\u5939
-ActionGetPOP.DeleteMails.Label=\u63a5\u6536\u5b8c\u90ae\u4ef6\u540e\u5220\u9664\u670d\u52a1\u5668\u4e0a\u7684\u90ae\u4ef6
-MailConnection.DefaultFolderCanNotHoldMessage=\u9ed8\u8ba4\u6587\u4ef6\u5939\u4e0d\u80fd\u5305\u542b\u4fe1\u606f\uff01
-ActionGetPOP.SSLPort.Tooltip=\u7aef\u53e3
-ActionGetPOP.createMoveToFolderMails.Label=\u65b0\u5efa\u6587\u4ef6\u5939
-ActionGetPOP.FilenamePattern.Tooltip=\u76ee\u6807\u6587\u4ef6\u540d\u6837\u5f0f\uff0c\u4f8b\u5982\uff1amypattern_hhmmss_MMddyyyy_0.mail
-MailConnection.Error.CountingAttachedFiles=\u8ba1\u7b97\u6d88\u606f\u53f7{0}\u7684\u9644\u4ef6\u6570\u91cf....
-ActionGetPOP.OutputDirectory.Label=\u76ee\u6807\u76ee\u5f55
-ActionGetPOP.afterGetIMAP.Nothing.Label=\u4ec0\u4e48\u4e5f\u4e0d\u505a
-ActionGetPOP.wSender.Label=\u53d1\u4ef6\u4eba
-ActionGetPOP.Log.Info.AttachedMessagesSuccess=\u6210\u529f\u4fdd\u5b58{0}\u9644\u4ef6
-ActionGetMailsFromPOP.ReceivedDate.Label=\u6d88\u606f\u63a5\u6536\u65e5\u671f\uff1a{0}
-ActionGetPOP.SelectMoveToFolderConnection.Label=\u9009\u62e9\u6587\u4ef6\u5939
-ActionGetPOP.Firstmails.Label=\u63a5\u6536\u7b2c\u4e00\u5c01\u90ae\u4ef6
-ActionGetPOP.IMAPFolder.Tooltip=IMAP\u6587\u4ef6\u5939
-ActionGetPOP.TestMoveToFolderConnection.Label=\u6d4b\u8bd5\u6587\u4ef6\u5939
-ActionGetPOP.NegateSender.Tooltip=\u65e0\u6548\u53d1\u4ef6\u4eba
-MailConnection.ClosingFolder=\u5173\u95ed\u6587\u4ef6\u5939[{0}]...
-ActionGetPOP.Connected.NOK.ConnectionBad=\u65e0\u6cd5\u8fde\u63a5\u5230{0}
-ActionGetMailsFromPOP.LocalFilename.Label=\u4fdd\u5b58\u6d88\u606f\u5230\u6587\u4ef6[{0}]
-ActionGetPOP.RetrieveAllMails.Label=\u6240\u6709\u90ae\u4ef6
-MailConnection.Error.FolderNotFound=\u627e\u4e0d\u5230\u6587\u4ef6\u5939[{0}]
-ActionGetPOP.Receipient.Label=\u6536\u4ef6\u4eba
-ActionGetPOP.ActionType.GetMessages.Label=\u6536\u90ae\u4ef6
-ActionGetPOP.POP3Message.Label=\u5bf9\u4e8ePOP3, \u4ec5\u6536\u4ef6\u7bb1\u53ef\u7528
-ActionGetPOP.AfterGetIMAP.Label=\u6536\u53d6\u90ae\u4ef6\u540e
-ActionGetPOP.Listmails.Label=\u6536\u53d6\u90ae\u4ef6
\ No newline at end of file
+ActionGetMailsFromPOP.AttachedFileSaved=\u76EE\u5F55 [{2}] \u4E2D\u7684\u7B2C {1} \u5C01\u90AE\u4EF6\u7684\u9644\u4EF6\u5DF2\u4FDD\u5B58\u5230\u6587\u4EF6 [{0}]
+ActionGetMailsFromPOP.Connected=\u4F7F\u7528\u7528\u6237 [{1}] \u8FDE\u63A5\u5230\u90AE\u4EF6\u670D\u52A1\u5668 [{0}\:{2}]
+ActionGetMailsFromPOP.Connecting=\u4F7F\u7528\u7528\u6237 [{1}] \u8FDE\u63A5\u90AE\u4EF6\u670D\u52A1\u5668 [{0}\:{2}]...
+ActionGetMailsFromPOP.ContentType.Label=\u8FDE\u63A5\u65B9\u5F0F\: {0}
+ActionGetMailsFromPOP.EmailFrom.Label=\u6D88\u606F\u6765\u81EA\uFF1A{0}
+ActionGetMailsFromPOP.EmailSubject.Label=\u6D88\u606F\u4E3B\u9898\uFF1A{0}
+ActionGetMailsFromPOP.Error.AttachmentFolderEmpty=\u672A\u6307\u5B9A\u9644\u4EF6\u76EE\u5F55. \u60A8\u5DF2\u7ECF\u542F\u7528 \u4F7F\u7528\u5176\u5B83\u9644\u4EF6\u76EE\u5F55 \u9009\u9879, \u8BF7\u6307\u5B9A\u8BE5\u76EE\u5F55\!
+ActionGetMailsFromPOP.Error.AttachmentFolderNotAFolder=\u6587\u4EF6 [{0}] \u4E0D\u662F\u76EE\u5F55\! \u60A8\u8BD5\u56FE\u5C06\u8BE5\u6587\u4EF6\u505A\u4E3A\u4E00\u4E2A\u76EE\u5F55\u7528\u6765\u4FDD\u5B58\u6240\u6709\u9644\u4EF6.
+ActionGetMailsFromPOP.Error.AttachmentFolderNotExist=\u65E0\u6CD5\u627E\u5230\u9644\u4EF6\u76EE\u5F55 [{0}]\!
+ActionGetMailsFromPOP.Error.ClosingConnection=\u51FA\u9519, \u65E0\u6CD5\u5173\u95ED\u8FDE\u63A5\!
+ActionGetMailsFromPOP.Error.ClosingFolder=\u51FA\u9519\! \u65E0\u6CD5\u5173\u95ED\u76EE\u5F55 [{0}]\!
+ActionGetMailsFromPOP.Error.Connecting=\u7528\u6237 [{1}] \u8FDE\u63A5\u90AE\u4EF6\u670D\u52A1\u5668 [{0}\:{2}] \u65F6\u51FA\u9519
+ActionGetMailsFromPOP.Error.MoveToIMAPFolderEmpty=\u672A\u6307\u5B9A\u8981\u79FB\u52A8\u7684 IMAP \u76EE\u6807\u76EE\u5F55\!
+ActionGetMailsFromPOP.Error.NewConnection=\u521B\u5EFA\u5230\u90AE\u4EF6\u670D\u52A1\u5668 [{0}] \u7684\u65B0\u8FDE\u63A5\u65F6\u51FA\u9519\!
+ActionGetMailsFromPOP.Error.NotAFolderNot=\u975E\u76EE\u5F55 [{0}]\!
+ActionGetMailsFromPOP.Error.OpeningDefaultFolder=\u65E0\u6CD5\u6253\u5F00\u9ED8\u8BA4\u76EE\u5F55, \u51FA\u9519\!
+ActionGetMailsFromPOP.Error.OpeningFolder=\u65E0\u6CD5\u6253\u5F00\u76EE\u5F55 [{0}], \u51FA\u9519\!
+ActionGetMailsFromPOP.Error.OutputFolderEmpty=\u672A\u6307\u5B9A\u8F93\u51FA\u76EE\u5F55
+ActionGetMailsFromPOP.Error.OutputFolderNotExist=\u672A\u627E\u5230\u8F93\u51FA\u76EE\u5F55 [{0}]\!
+ActionGetMailsFromPOP.Error.ReceivedDateSearchTermEmpty=\u60A8\u5FC5\u987B\u4E00\u4E2A\u8D77\u59CB\u65E5\u671F\u7528\u4E8E\u6839\u636E\u63A5\u6536\u65E5\u671F\u6765\u641C\u7D22\u90AE\u4EF6!
+ActionGetMailsFromPOP.Error.ReceivedDatesSearchTermEmpty=\u60A8\u5FC5\u9700\u6307\u5B9A\u4E00\u4E2A\u8D77\u59CB\u65E5\u671F\u4EE5\u6839\u636E\u90AE\u4EF6\u63A5\u6536\u65F6\u95F4\u6765\u641C\u7D22\!
+ActionGetMailsFromPOP.FolderNotExists1.Label=\u6587\u4EF6\u5939 [
+ActionGetMailsFromPOP.FolderNotExists2.Label=] \u4E0D\u5B58\u5728
+ActionGetMailsFromPOP.FolderOpened.FullName=\u6587\u4EF6\u5939\u5168\u540D\uFF1A[{0}]
+ActionGetMailsFromPOP.FolderOpened.Label=\u6587\u4EF6\u5939[{0}]\u88AB\u6253\u5F00
+ActionGetMailsFromPOP.FolderOpened.Name=\u6587\u4EF6\u5939\uFF1A[{0}]
+ActionGetMailsFromPOP.FolderOpened.Subscribed=\u8BA2\u9605\u76EE\u5F55\: [{0}]
+ActionGetMailsFromPOP.FolderOpened.Url=\u76EE\u5F55 URL\: [{0}]
+ActionGetMailsFromPOP.InvalidDefaultFolder.Label=\u65E0\u6548\u7684\u9ED8\u8BA4\u6587\u4EF6\u5939!
+ActionGetMailsFromPOP.InvalidFolder.Label=\u6709\u6548\u6587\u4EF6\u5939
+ActionGetMailsFromPOP.LocalFilename.Label=\u4FDD\u5B58\u6D88\u606F\u5230\u6587\u4EF6[{0}]
+ActionGetMailsFromPOP.Log.AttachmentFolderExists=\u9644\u4EF6\u76EE\u5F55 {0] \u5B58\u5728.
+ActionGetMailsFromPOP.Log.OutputFolderExists=\u8F93\u51FA\u6587\u4EF6\u5939[{0}]\u5B58\u5728
+ActionGetMailsFromPOP.Log.OutputFolderNotExist=\u627E\u4E0D\u5230\u8F93\u51FA\u6587\u4EF6\u5939[{0}]! \u9700\u8981\u521B\u5EFA\u8BE5\u6587\u4EF6\u5939
+ActionGetMailsFromPOP.MessageDeleted={0}\u6761\u6D88\u606F\u88AB\u5220\u9664
+ActionGetMailsFromPOP.MessageMoved=\u6D88\u606F{0}\u88AB\u79FB\u52A8\u5230\u6587\u4EF6\u5939[{1}]
+ActionGetMailsFromPOP.MessageNumber.Label=\u6D88\u606F\u6570\u91CF\uFF1A{0}
+ActionGetMailsFromPOP.MessageSaved.Label=\u5DF2\u4FDD\u5B58\u76EE\u5F55 [{2}] \u4E2D\u7684\u90AE\u4EF6 {0} \u5230\u6587\u4EF6 [{1}].
+ActionGetMailsFromPOP.MessagesDeleted=\u5220\u9664 {0} \u5C01\u90AE\u4EF6.
+ActionGetMailsFromPOP.MessagesMoved=\u79FB\u52A8 {0} \u5C01\u90AE\u4EF6\u5230\u76EE\u5F55 [{1}].
+ActionGetMailsFromPOP.NewConnectionDefined=\u5DF2\u5B9A\u4E49\u65B0\u7684\u90AE\u4EF6\u670D\u52A1\u5668\u8FDE\u63A5.
+ActionGetMailsFromPOP.ReceivedDate.Label=\u6D88\u606F\u63A5\u6536\u65E5\u671F\uFF1A{0}
+ActionGetMailsFromPOP.TotalMessagesFolder.Label=\u5728\u76EE\u5F55 [{1}] \u4E2D\u627E\u5230 {0} \u5C01\u90AE\u4EF6...
+ActionGetPOP.ActionType.DeleteMessages.Label=\u5220\u9664\u6D88\u606F
+ActionGetPOP.ActionType.GetMessages.Label=\u6536\u90AE\u4EF6
+ActionGetPOP.ActionType.Label=\u52A8\u4F5C
+ActionGetPOP.ActionType.MoveMessages.Label=\u79FB\u52A8\u90AE\u4EF6\u5230\u6587\u4EF6\u5939
+ActionGetPOP.AfterGetIMAP.Label=\u6536\u53D6\u90AE\u4EF6\u540E
+ActionGetPOP.AttachmentFolder.Label=\u9644\u4EF6\u6587\u4EF6\u5939
+ActionGetPOP.AttachmentFolder.Tooltip=\u4FDD\u5B58\u9644\u4EF6\u5230\u8FD9\u4E2A\u6587\u4EF6\u5939
+ActionGetPOP.AttachmentWildcard.Label=\u9644\u4EF6\u901A\u914D\u7B26
+ActionGetPOP.AttachmentWildcard.Tooltip=\u901A\u914D\u7B26
+ActionGetPOP.Body.Label=\u5185\u5BB9
+ActionGetPOP.BrowseFolders.Label=\u9009\u62E9\u76EE\u6807\u6587\u4EF6\u5939
+ActionGetPOP.ConditionBetween.Label=\u5728 .. \u4E0E .. \u4E4B\u95F4
+ActionGetPOP.ConditionEqual.Label=\u7B49\u540C\u4E8E
+ActionGetPOP.ConditionGreater.Label=\u5927\u4E8E
+ActionGetPOP.ConditionIgnore.Label=\u65E0
+ActionGetPOP.ConditionOnReceivedDate.Label=\u6761\u4EF6
+ActionGetPOP.ConditionSmaller.Label=\u5C0F\u4E8E
+ActionGetPOP.Connected.NOK.ConnectionBad=\u65E0\u6CD5\u8FDE\u63A5\u5230{0}
+ActionGetPOP.Connected.NOK.IMAPFolderExists=\u65E0\u6CD5\u627E\u5230\u76EE\u5F55 [{0}]\!
+ActionGetPOP.Connected.OK=\u6210\u529F\u8FDE\u63A5\u5230\u670D\u52A1\u5668 {0}
+ActionGetPOP.Connected.Title.Bad=\u9519\u8BEF
+ActionGetPOP.Connected.Title.Ok=\u8FDE\u63A5\u6B63\u786E
+ActionGetPOP.Content.Group.Label=\u5185\u5BB9
+ActionGetPOP.DeleteMails.Label=\u63A5\u6536\u5B8C\u90AE\u4EF6\u540E\u5220\u9664\u670D\u52A1\u5668\u4E0A\u7684\u90AE\u4EF6
+ActionGetPOP.DeleteMails.Tooltip=\u63A5\u6536\u90AE\u4EF6\u540E\u5220\u9664\u670D\u52A1\u5668\u4E0A\u7684\u90AE\u4EF6
+ActionGetPOP.Description=\u4ECE \u90AE\u4EF6\u670D\u52A1\u5668\u83B7\u53D6\u90AE\u4EF6\u5E76\u628A\u90AE\u4EF6\u4FDD\u5B58\u5728\u672C\u5730\u6307\u5B9A\u7684\u76EE\u5F55
+ActionGetPOP.DifferentFolderForAttachmentMails.Label=\u9644\u8FD1\u4FDD\u5B58\u5230\u53E6\u5916\u4E00\u4E2A\u6587\u4EF6\u5939\u4E2D
+ActionGetPOP.DifferentFolderForAttachmentMails.Tooltip=\u4FDD\u5B58\u9644\u4EF6\u5230\u53E6\u4E00\u4E2A\u6587\u4EF6\u5939
+ActionGetPOP.FetchingSubFolders=\u904D\u5386\u5B50\u76EE\u5F55...
+ActionGetPOP.FilenamePattern.Label=\u76EE\u6807\u6587\u4EF6\u540D\u6837\u5F0F
+ActionGetPOP.FilenamePattern.Tooltip=\u76EE\u6807\u6587\u4EF6\u540D\u6837\u5F0F, \u4F8B\u5982\uFF1Amypattern_hhmmss_MMddyyyy_0.mail
+ActionGetPOP.Firstmails.Label=\u63A5\u6536\u7B2C\u4E00\u5C01\u90AE\u4EF6
+ActionGetPOP.GetAttachmentMails.Label=\u83B7\u53D6\u90AE\u4EF6\u9644\u4EF6
+ActionGetPOP.GetAttachmentMails.Tooltip=\u83B7\u53D6\u90AE\u4EF6\u9644\u8FD1\u5E76\u4FDD\u5B58
+ActionGetPOP.GetMessageMails.Label=\u4FDD\u5B58\u6D88\u606F\u5185\u5BB9
+ActionGetPOP.GetMessageMails.Tooltip=\u4FDD\u5B58\u6D88\u606F\u5185\u5BB9
+ActionGetPOP.Header.Group.Label=\u5934\u90E8
+ActionGetPOP.IMAPFirstmails.Label=\u83B7\u53D6\u7B2C\u4E00\u5C01\u90AE\u4EF6
+ActionGetPOP.IMAPFolder.Label=IMAP\u6587\u4EF6\u5939
+ActionGetPOP.IMAPFolder.Tooltip=IMAP\u6587\u4EF6\u5939
+ActionGetPOP.IMAPFolderExists.OK=\u6587\u4EF6\u5939[{0}]\u5B58\u5728
+ActionGetPOP.IMAPFolderExists.Title.Bad=\u9519\u8BEF
+ActionGetPOP.IMAPFolderExists.Title.Ok=\u6587\u4EF6\u5939\u5B58\u5728
+ActionGetPOP.IMAPListGetAll.Label=\u83B7\u53D6\u6240\u6709\u6D88\u606F
+ActionGetPOP.IMAPListGetAnswered.Label=\u83B7\u53D6\u56DE\u590D\u6D88\u606F
+ActionGetPOP.IMAPListGetDraft.Label=\u83B7\u53D6\u8349\u7A3F\u4FE1\u606F
+ActionGetPOP.IMAPListGetFlagged.Label=\u83B7\u53D6\u6807\u8BB0\u7684\u4FE1\u606F
+ActionGetPOP.IMAPListGetNew.Label=\u83B7\u53D6\u65B0\u4FE1\u606F
+ActionGetPOP.IMAPListGetNotAnswered.Label=\u83B7\u53D6\u672A\u88AB\u56DE\u590D\u90AE\u4EF6
+ActionGetPOP.IMAPListGetNotDraft.Label=\u83B7\u53D6\u975E\u8349\u7A3F\u90AE\u4EF6
+ActionGetPOP.IMAPListGetOld.Label=\u83B7\u53D6\u5DF2\u8BFB\u90AE\u4EF6
+ActionGetPOP.IMAPListGetRead.Label=\u83B7\u53D6\u5DF2\u8BFB\u90AE\u4EF6
+ActionGetPOP.IMAPListGetUnFlagged.Label=\u83B7\u53D6\u672A\u88AB\u6807\u8BB0\u7684\u90AE\u4EF6
+ActionGetPOP.IMAPListGetUnread.Label=\u83B7\u53D6\u672A\u8BFB\u90AE\u4EF6
+ActionGetPOP.IMAPListmails.Label=\u6536\u53D6\u90AE\u4EF6
+ActionGetPOP.IMAPSettings.Groupp.Label=IMAP\u8BBE\u7F6E
+ActionGetPOP.IncludeSubFoldersMails.Label=\u5305\u542B\u5B50\u6587\u4EF6\u5939
+ActionGetPOP.IncludeSubFoldersMails.Tooltip=\u904D\u5386\u6240\u6709\u5B50\u76EE\u5F55
+ActionGetPOP.Listmails.Label=\u6536\u53D6\u90AE\u4EF6
+ActionGetPOP.Log.Info.AttachedMessagesSuccess=\u6210\u529F\u4FDD\u5B58{0}\u9644\u4EF6
+ActionGetPOP.Log.Info.DeletedMessages=\u5220\u9664 {0} \u5C01\u90AE\u4EF6
+ActionGetPOP.Log.Info.MovedMessages=\u79FB\u52A8 {0} \u5C01\u90AE\u4EF6
+ActionGetPOP.Log.Info.SavedMessages=\u6210\u529F\u4FDD\u5B58 {0} \u5C01\u90AE\u4EF6
+ActionGetPOP.MoveToFolder.Label=\u79FB\u52A8\u5230\u6587\u4EF6\u5939
+ActionGetPOP.MoveToFolder.Tooltip=\u79FB\u52A8\u5230\u6587\u4EF6\u5939
+ActionGetPOP.Name=\u63A5\u6536\u90AE\u4EF6
+ActionGetPOP.Name.Default=\u4ECEPOP\u83B7\u53D6\u90AE\u4EF6
+ActionGetPOP.Name.Label=Action \u540D\u79F0:
+ActionGetPOP.NegateBody.Tooltip=\u65E0\u6548\u5185\u5BB9
+ActionGetPOP.NegateReceipient.Tooltip=\u65E0\u6548
+ActionGetPOP.NegateReceivedDate.Tooltip=\u63A5\u6536\u65E5\u671F\u4E0D\u5728\u8FD9\u4E00\u5929
+ActionGetPOP.NegateSender.Tooltip=\u65E0\u6548\u53D1\u4EF6\u4EBA
+ActionGetPOP.NegateSubject.Tooltip=\u4E3B\u9898\u4E2D\u4E0D\u5305\u542B
+ActionGetPOP.NoNameMessageBox.Message=\u8BF7\u6307\u5B9A\u8BE5 Action \u7684\u540D\u79F0
+ActionGetPOP.NoNameMessageBox.Text=\u672A\u547D\u540D\u8BE5 Action
+ActionGetPOP.NoSubFolders=\u672A\u627E\u5230\u5B50\u76EE\u5F55\!
+ActionGetPOP.OpenCalendar=\u83B7\u53D6\u65E5\u5386
+ActionGetPOP.OutputDirectory.Label=\u76EE\u6807\u76EE\u5F55
+ActionGetPOP.OutputDirectory.Tooltip=\u76EE\u6807\u76EE\u5F55
+ActionGetPOP.POP3Message.Label=\u5BF9\u4E8EPOP3, \u4EC5\u6536\u4EF6\u7BB1\u53EF\u7528
+ActionGetPOP.POP3Settings.Group.Label=POP3\u8BBE\u7F6E
+ActionGetPOP.Password.Label=\u5BC6\u7801
+ActionGetPOP.Protocol.Label=\u534F\u8BAE
+ActionGetPOP.ProxyUsername.Label=\u4EE3\u7406\u7528\u6237\u540D
+ActionGetPOP.ProxyUsername.Tooltip=\u4EE3\u7406\u7528\u6237\u540D
+ActionGetPOP.ReadFrom.Label=\u65E5\u671F 1
+ActionGetPOP.ReadFrom.Tooltip=\u65E5\u671F 1
+ActionGetPOP.ReadTo.Label=\u65E5\u671F 2
+ActionGetPOP.ReadTo.Tooltip=\u65E5\u671F 2
+ActionGetPOP.Receipient.Label=\u6536\u4EF6\u4EBA
+ActionGetPOP.ReceivedDate.Group.Label=\u63A5\u6536\u65E5\u671F
+ActionGetPOP.RetrieveAllMails.Label=\u6240\u6709\u90AE\u4EF6
+ActionGetPOP.RetrieveFirstMails.Label=\u63A5\u6536\u7B2C\u4E00\u5C01\u90AE\u4EF6
+ActionGetPOP.RetrieveUnreadMails.Label=\u672A\u8BFB\u90AE\u4EF6
+ActionGetPOP.SSLPort.Label=\u7AEF\u53E3
+ActionGetPOP.SSLPort.Tooltip=\u7AEF\u53E3
+ActionGetPOP.SelectDate=\u9009\u62E9\u4E00\u4E2A\u65E5\u671F
+ActionGetPOP.SelectFolderConnection.Label=\u9009\u62E9\u4E00\u4E2A\u6587\u4EF6\u5939
+ActionGetPOP.SelectFolderConnection.Tooltip=\u9009\u62E9\u4E00\u4E2A\u6587\u4EF6\u5939
+ActionGetPOP.SelectMoveToFolderConnection.Label=\u9009\u62E9\u6587\u4EF6\u5939
+ActionGetPOP.SelectMoveToFolderConnection.Tooltip=\u9009\u62E9\u6587\u4EF6\u5939
+ActionGetPOP.Server.Label=\u6E90\u4E3B\u673A
+ActionGetPOP.ServerSettings.Group.Label=\u670D\u52A1\u5668\u8BBE\u7F6E
+ActionGetPOP.Subject.Label=\u4E3B\u9898
+ActionGetPOP.Tab.General.Label=\u4E00\u822C
+ActionGetPOP.Tab.Pop.Label=\u8BBE\u7F6E
+ActionGetPOP.Tab.Search.Label=\u8FC7\u6EE4
+ActionGetPOP.TargetFolder.Group.Label=\u76EE\u6807\u6587\u4EF6\u5939
+ActionGetPOP.TestConnection.Label=\u6D4B\u8BD5\u8FDE\u63A5
+ActionGetPOP.TestConnection.Tooltip=\u6D4B\u8BD5\u8FDE\u63A5
+ActionGetPOP.TestIMAPFolderConnection.Label=\u6D4B\u8BD5\u6587\u4EF6\u5939
+ActionGetPOP.TestIMAPFolderConnection.Tooltip=\u6D4B\u8BD5\u6587\u4EF6\u5939
+ActionGetPOP.TestMoveToFolderConnection.Label=\u6D4B\u8BD5\u6587\u4EF6\u5939
+ActionGetPOP.TestMoveToFolderConnection.Tooltip=\u6D4B\u8BD5\u6587\u4EF6\u5939
+ActionGetPOP.Title=POP\u6536\u4FE1
+ActionGetPOP.UseProxyMails.Label=\u4F7F\u7528\u4EE3\u7406
+ActionGetPOP.UseProxyMails.Tooltip=\u4F7F\u7528\u4EE3\u7406
+ActionGetPOP.UseSSLMails.Label=\u4F7F\u7528SSL
+ActionGetPOP.UseSSLMails.Tooltip=\u5982\u679C\u4F60\u7684\u670D\u52A1\u5668\u53EA\u652F\u6301SSL\u8FDE\u63A5, \u8BF7\u9009\u4E2D\u6B64\u9009\u9879
+ActionGetPOP.Username.Label=\u7528\u6237\u540D
+ActionGetPOP.Username.Tooltip=\u7528\u6237\u540D
+ActionGetPOP.afterGetIMAP.Delete.Label=\u5220\u9664\u90AE\u4EF6
+ActionGetPOP.afterGetIMAP.MoveTo.Label=\u79FB\u52A8\u6D88\u606F\u5230\u6587\u4EF6\u5939
+ActionGetPOP.afterGetIMAP.Nothing.Label=\u4EC0\u4E48\u4E5F\u4E0D\u505A
+ActionGetPOP.createLocalFolder.Label=\u65B0\u5EFA\u6587\u4EF6\u5939
+ActionGetPOP.createLocalFolder.Tooltip=\u5982\u5FC5\u8981, \u65B0\u5EFA\u6587\u4EF6\u5939
+ActionGetPOP.createMoveToFolderMails.Label=\u65B0\u5EFA\u6587\u4EF6\u5939
+ActionGetPOP.createMoveToFolderMails.Tooltip=\u5982\u5FC5\u8981, \u65B0\u5EFA\u6587\u4EF6\u5939
+ActionGetPOP.keyword=get,pop
+ActionGetPOP.wSender.Label=\u53D1\u4EF6\u4EBA
+MailConnection.ClosingConnection=\u5173\u95ED\u8FDE\u63A5...
+MailConnection.ClosingFolder=\u5173\u95ED\u6587\u4EF6\u5939[{0}]...
+MailConnection.ConnectionClosed=\u8FDE\u63A5\u5DF2\u5173\u95ED
+MailConnection.DefaultFolderCanNotHoldMessage=\u9ED8\u8BA4\u6587\u4EF6\u5939\u4E0D\u80FD\u5305\u542B\u4FE1\u606F!
+MailConnection.Error.CountingAttachedFiles=\u8BA1\u7B97\u6D88\u606F\u53F7{0}\u7684\u9644\u4EF6\u6570\u91CF....
+MailConnection.Error.DeletingMessage=\u5220\u9664\u4FE1\u606F\u51FA\u9519
+MailConnection.Error.FetchingMessages=\u83B7\u53D6\u4E0B\u4E00\u6761\u4FE1\u606F\u51FA\u9519
+MailConnection.Error.FolderNotFound=\u627E\u4E0D\u5230\u6587\u4EF6\u5939[{0}]
+MailConnection.Error.MovingMessage=\u79FB\u52A8\u90AE\u4EF6\u51FA\u9519 (\u6570\u91CF{0}\u5230\u6587\u4EF6\u5939[{1}])
+MailConnection.Error.MovingMessages=\u79FB\u52A8\u6D88\u606F\u5230\u76EE\u5F55 [{0}] \u65F6\u51FA\u9519\!
+MailConnection.Error.ReceivedDatePOP3Unsupported=\u5F53\u4F7F\u7528 POP3 \u534F\u8BAE\u65F6, \u65E0\u6CD5\u901A\u8FC7\u63A5\u6536\u65F6\u95F4\u8FC7\u6EE4\u90AE\u4EF6\!
+MailConnection.Error.RetrieveMessages=\u4ECE\u76EE\u5F55 [{0}] \u63A5\u6536\u90AE\u4EF6\u65F6\u51FA\u9519\!
+MailConnection.Error.SavingAttachedFiles=\u4FDD\u5B58\u76EE\u5F55 [{1}] \u4E2D\u7684\u7B2C {0} \u5C01\u90AE\u4EF6\u7684\u9644\u4EF6\u65F6\u51FA\u9519\!
+MailConnection.Error.SavingMessageContent=\u4FDD\u5B58\u76EE\u5F55 [{2}] \u4E2D\u7684\u90AE\u4EF6\u5185\u5BB9(\u7B2C {0} \u5C01)\u5230\u6587\u4EF6 {1} \u65F6\u51FA\u9519\!
+MailConnection.FolderClosed=\u5DF2\u5173\u95ED\u76EE\u5F55 [{0}].
+MailConnection.OpeningFolderInReadMode.Label=\u4EE5\u53EA\u8BFB\u6A21\u5F0F\u6253\u5F00\u76EE\u5F55 [{0}]...
+MailConnection.OpeningFolderInWriteMode.Label=\u4EE5\u8BFB\u5199\u6A21\u5F0F\u6253\u5F00\u76EE\u5F55 [{0}]...
+SelectFolderDialog.Dialog.Main.Title=\u53EF\u7528\u6587\u4EF6\u5939
diff --git a/plugins/actions/http/src/main/resources/org/apache/hop/workflow/actions/http/messages/messages_zh_CN.properties b/plugins/actions/http/src/main/resources/org/apache/hop/workflow/actions/http/messages/messages_zh_CN.properties
index 6741004..2e2e0a6 100644
--- a/plugins/actions/http/src/main/resources/org/apache/hop/workflow/actions/http/messages/messages_zh_CN.properties
+++ b/plugins/actions/http/src/main/resources/org/apache/hop/workflow/actions/http/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,35 +15,64 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-ActionHTTP.Description=\u4f7f\u7528HTTP\u83b7\u53d6\u6216\u4e0a\u4f20\u6587\u4ef6 (HyperText Transfer Protocol)
+#
+ActionHTTP.AddFilenameToResult.Label=\u6DFB\u52A0\u6587\u4EF6\u540D\u5230\u7ED3\u679C\u6587\u4EF6\u540D
+ActionHTTP.AddFilenameToResult.Tooltip=\u6DFB\u52A0\u6587\u4EF6\u5230\u8FD4\u56DE\u6587\u4EF6\u5217\u8868
+ActionHTTP.Authentication.Group.Label=\u9A8C\u8BC1\u4FE1\u606F
+ActionHTTP.ColumnInfo.Name=\u540D\u79F0
+ActionHTTP.ColumnInfo.Value=\u503C
+ActionHTTP.Description=\u4F7F\u7528 HTTP \u534F\u8BAE\u4E0B\u8F7D\u6216\u4E0A\u4F20\u6587\u4EF6 (HyperText Transfer Protocol)
+ActionHTTP.Error.CanNotCloseStream=\u65E0\u6CD5\u5173\u95ED\u6D41\: {0}
+ActionHTTP.Error.CanNotSaveHTTPResult=\u65E0\u6CD5\u4FDD\u5B58 HTTP \u7ED3\u679C\u5230\u6587\u4EF6\u4E2D, \u56E0\u4E3A IO \u9519\u8BEF\: {0}
+ActionHTTP.Error.ErrorGettingFromHTTP=\u4ECE HTTP \u83B7\u53D6\u6587\u4EF6\u65F6\u51FA\u9519\: {0}
+ActionHTTP.Error.NotValidURL=\u6307\u5B9A URL [{0}] \u65E0\u6548\: {1}
+ActionHTTP.Error.UnableGetResultPrevious=\u65E0\u6CD5\u4ECE\u524D\u7F6E\u901A\u9053\u4E2D\u83B7\u53D6\u8FD4\u56DE\u7ED3\u679C, \u65E0\u6CD5\u7EE7\u7EED.
+ActionHTTP.Filetype.All=\u5168\u90E8\u6587\u4EF6
+ActionHTTP.InputField.Label=\u5305\u542B\u4E86 URL \u7684\u8F93\u5165\u5B57\u6BB5
+ActionHTTP.InputField.Tooltip=\u5982\u679C\u4ECE\u524D\u7F6E\u901A\u9053\u8F93\u5165\u5B57\u6BB5\u4E2D\u5305\u62EC\u4E86 URL ,\u8BF7\u6307\u5B9A\u8FD9\u4E2A\u5B57\u6BB5.
+ActionHTTP.InputFieldDest.Label=\u5305\u542B\u76EE\u6807\u6587\u4EF6\u540D\u7684\u5B57\u6BB5\u540D\u79F0
+ActionHTTP.InputFieldDest.Tooltip=\u5728\u6B64\u5904\u6307\u5B9A\u76EE\u6807\u6587\u4EF6\u540D\u6765\u81EA\u524D\u7F6E\u901A\u9053\u4F20\u8FC7\u6765\u7684\u8F93\u5165\u5B57\u6BB5(\u9ED8\u8BA4\u503C\uFF1ADESTINATION)
+ActionHTTP.InputFieldUpload.Label=\u5305\u542B\u4E0A\u4F20\u6587\u4EF6\u540D\u7684\u8F93\u5165\u5B57\u6BB5
+ActionHTTP.InputFieldUpload.Tooltip=\u5728\u8FD9\u91CC\u6307\u5B9A\u524D\u7F6E\u901A\u9053\u4F20\u5165\u7684\u5305\u542B\u4E0A\u4F20\u6587\u4EF6\u540D\u7684\u8F93\u5165\u5B57\u6BB5\u540D\u79F0(\u9ED8\u8BA4\u503C\: UPLOAD)
+ActionHTTP.Log.ConnectingURL=\u8BF7\u6C42 URL\: {0}
+ActionHTTP.Log.FinisedWritingReply=\u5DF2\u5199\u5165 {0} \u5B57\u8282\u5230\u8FD4\u56DE\u6587\u4EF6 [{1}]
+ActionHTTP.Log.FinishedSendingFile=\u5411 HTTP \u670D\u52A1\u5668\u4E0A\u4F20\u5185\u5BB9\u5DF2\u53D1\u9001\u5B8C.
+ActionHTTP.Log.HeaderSet=Http header\: {0} \= {1}
+ActionHTTP.Log.HeadersProvided=\u4F7F\u7528\u6307\u5B9A HTTP Headers
+ActionHTTP.Log.ReplayInfo=\u8FD4\u56DE Content-Type\: {0}, Last-Modified\: {1}
+ActionHTTP.Log.SendingFile=\u5F00\u59CB\u53D1\u9001\u6587\u4EF6 [{0}] \u5230 HTTP \u670D\u52A1\u5668.
+ActionHTTP.Log.StartReadingReply=\u5F00\u59CB\u4ECE Web \u670D\u52A1\u5668\u8BFB\u53D6\u54CD\u5E94.
 ActionHTTP.Name=HTTP
-ActionHTTP.Tab.General.Label=\u4e00\u822c
-ActionHTTP.RunForEveryRow.Label=\u6bcf\u4e2a\u7ed3\u679c\u884c\u8fd0\u884c\u4e00\u904d
-ActionHTTP.Tab.Headers.Label=\u5934\u90e8
-ActionHTTP.TargetFileExt.Label=\u76ee\u6807\u6587\u4ef6\u6269\u5c55\u540d
-ActionHTTP.InputField.Tooltip=\u5982\u679c\u4ece\u4e0a\u4e00\u4e2a\u6b65\u9aa4\u6765\u7684\u8f93\u5165\u5b57\u6bb5\u4e2d\u5305\u62ec\u4e86 URL ,\u8bf7\u6307\u5b9a\u8fd9\u4e2a\u5b57\u6bb5.
-ActionHTTP.ColumnInfo.Name=\u540d\u79f0
-ActionHTTP.ProxyPort.Tooltip=\u4ee3\u7406\u670d\u52a1\u5668\u7684\u7aef\u53e3,\u5982\u679c\u6307\u5b9a\u4e86\u4ee3\u7406\u670d\u52a1\u5668\u800c\u6ca1\u6709\u6307\u5b9a\u7aef\u53e3\u5219\u4f7f\u75288080
-ActionHTTP.ProxyHost.Tooltip=\u5982\u679c\u6709\u4ee3\u7406\u670d\u52a1\u5668,\u8981\u6307\u5b9a.
-ActionHTTP.TargetFile.Label=\u76ee\u6807\u6587\u4ef6:
-ActionHTTP.ColumnInfo.Value=\u503c
-ActionHTTP.ProxyIgnoreRegexp.Tooltip=\u6307\u5b9a\u8981\u5ffd\u7565\u4ee3\u7406\u670d\u52a1\u5668\u7684\u4e3b\u673a.\u8fd9\u662f\u4e00\u4e2a\u4ee5'|'\u5206\u5272\u7684\u6b63\u5219\u8868\u8fbe\u5f0f\u5217\u8868.
-ActionHTTP.URL.Label=URL:
-ActionHTTP.TargetFileExt.Tooltip=\u76ee\u6807\u6587\u4ef6\u6269\u5c55\u540d
-ActionHTTP.AddFilenameToResult.Label=\u6dfb\u52a0\u6587\u4ef6\u540d\u5230\u7ed3\u679c\u6587\u4ef6\u540d
-ActionHTTP.TargetFileAppend.Label=\u8ffd\u52a0\u5230\u6307\u5b9a\u7684\u76ee\u6807\u6587\u4ef6
-ActionHTTP.UploadPassword.Label=\u5bc6\u7801:
-ActionHTTP.Name.Label=\u4f5c\u4e1a\u540d\u79f0\:
-ActionHTTP.TargetFileGroup.Group.Label=\u670d\u52a1\u5668\u54cd\u5e94
-ActionHTTP.ProxyPort.Label=\u4ee3\u7406\u7aef\u53e3\:
-ActionHTTP.Filetype.All=\u5168\u90e8\u6587\u4ef6
-ActionHTTP.Authentication.Group.Label=\u9a8c\u8bc1\u4fe1\u606f
-ActionHTTP.InputField.Label=\u5305\u542b\u4e86 URL \u7684\u8f93\u5165\u5b57\u6bb5
-ActionHTTP.TargetFilenameAddDate.Label=\u8ffd\u52a0\u65f6\u95f4\u548c\u65e5\u671f\u5230\u6587\u4ef6\u540d\u540e
-ActionHTTP.ProxyIgnoreRegexp.Label=\u5bf9\u4e8e\u4e0b\u5217\u4e3b\u673a\u5ffd\u7565\u4ee3\u7406\u670d\u52a1\u5668\:
-ActionHTTP.Name.Default=\u901a\u8fc7 HTTP \u83b7\u53d6\u6216\u4e0a\u4f20\u6587\u4ef6
+ActionHTTP.Name.Default=\u901A\u8FC7 HTTP \u4E0B\u8F7D\u6216\u4E0A\u4F20\u6587\u4EF6
+ActionHTTP.Name.Label=Action \u540D\u79F0\:
+ActionHTTP.ProxyHost.Label=\u4E0A\u4F20\u4EE3\u7406\u670D\u52A1\u5668\:
+ActionHTTP.ProxyHost.Tooltip=\u5982\u679C\u6709\u4EE3\u7406\u670D\u52A1\u5668,\u8981\u6307\u5B9A.
+ActionHTTP.ProxyIgnoreRegexp.Label=\u5BF9\u4E8E\u4E0B\u5217\u4E3B\u673A\u5FFD\u7565\u4EE3\u7406\u670D\u52A1\u5668\:
+ActionHTTP.ProxyIgnoreRegexp.Tooltip=\u6307\u5B9A\u8981\u5FFD\u7565\u4EE3\u7406\u670D\u52A1\u5668\u7684\u4E3B\u673A.\u8FD9\u662F\u4E00\u4E2A\u4EE5'|'\u5206\u5272\u7684\u6B63\u5219\u8868\u8FBE\u5F0F\u5217\u8868.
+ActionHTTP.ProxyPort.Label=\u4EE3\u7406\u7AEF\u53E3\:
+ActionHTTP.ProxyPort.Tooltip=\u4EE3\u7406\u670D\u52A1\u5668\u7684\u7AEF\u53E3,\u5982\u679C\u6307\u5B9A\u4E86\u4EE3\u7406\u670D\u52A1\u5668\u800C\u6CA1\u6709\u6307\u5B9A\u7AEF\u53E3\u5219\u4F7F\u75288080
+ActionHTTP.RunForEveryRow.Label=\u6BCF\u4E2A\u7ED3\u679C\u884C\u8FD0\u884C\u4E00\u904D
+ActionHTTP.RunForEveryRow.Tooltip=\u9009\u4E2D\u8BE5\u9009\u9879\u5219\u5FAA\u73AF\u5904\u7406\u6240\u6709\u4F20\u5165\u7684\u6570\u636E\u884C.
+ActionHTTP.StartAction=\u5F00\u59CB HTTP \u8BF7\u6C42
+ActionHTTP.Tab.General.Label=\u901A\u7528
+ActionHTTP.Tab.Headers.Label=Headers
+ActionHTTP.TargetFile.Label=\u76EE\u6807\u6587\u4EF6\:
+ActionHTTP.TargetFile.Tooltip=\u5305\u542B\u4E0B\u8F7D\u6587\u4EF6\u5185\u5BB9\u7684\u76EE\u6807\u6587\u4EF6
+ActionHTTP.TargetFileAppend.Label=\u8FFD\u52A0\u5230\u6307\u5B9A\u7684\u76EE\u6807\u6587\u4EF6
+ActionHTTP.TargetFileAppend.Tooltip=\u9009\u4E2D\u8BE5\u9009\u9879\u5219\u5C06\u4E0B\u8F7D\u7684\u5185\u5BB9\u8FFD\u52A0\u5230\u5DF2\u5B58\u5728\u7684\u6587\u4EF6\u4E2D, \u5426\u5219\u5C06\u8986\u76D6
+ActionHTTP.TargetFileExt.Label=\u76EE\u6807\u6587\u4EF6\u6269\u5C55\u540D
+ActionHTTP.TargetFileExt.Tooltip=\u76EE\u6807\u6587\u4EF6\u6269\u5C55\u540D
+ActionHTTP.TargetFileGroup.Group.Label=\u670D\u52A1\u5668\u54CD\u5E94
+ActionHTTP.TargetFilenameAddDate.Label=\u8FFD\u52A0\u65F6\u95F4\u548C\u65E5\u671F\u5230\u6587\u4EF6\u540D\u540E
+ActionHTTP.TargetFilenameAddDate.Tooltip=\u81EA\u52A8\u6DFB\u52A0\u65F6\u95F4\u6233\u5230\u6587\u4EF6\u540D\u4E2D(\u786E\u4FDD\u591A\u6B21\u4E0B\u8F7D\u7684\u6587\u4EF6\u540D\u79F0\u552F\u4E00)
 ActionHTTP.Title=HTTP
-ActionHTTP.UploadFile.Label=\u4e0a\u4f20\u7684\u6587\u4ef6:
-ActionHTTP.ProxyHost.Label=\u4e0a\u4f20\u4ee3\u7406\u670d\u52a1\u5668\:
-ActionHTTP.UpLoadFile.Group.Label=\u4e0a\u4f20\u6587\u4ef6
-ActionHTTP.UploadUser.Label=\u7528\u6237\u540d:
+ActionHTTP.URL.Label=URL\:
+ActionHTTP.URL.Tooltip=\u8BF7\u6C42\u7684 URL \u5730\u5740
+ActionHTTP.UpLoadFile.Group.Label=\u4E0A\u4F20\u6587\u4EF6
+ActionHTTP.UploadFile.Label=\u4E0A\u4F20\u7684\u6587\u4EF6\:
+ActionHTTP.UploadFile.Tooltip=\u901A\u8FC7 HTTP \u4E0A\u4F20\u6587\u4EF6
+ActionHTTP.UploadPassword.Label=\u5BC6\u7801\:
+ActionHTTP.UploadPassword.Tooltip=\u8BF7\u6C42 HTTP \u670D\u52A1\u5668\u8EAB\u4EFD\u9A8C\u8BC1\u7684\u5BC6\u7801
+ActionHTTP.UploadUser.Label=\u7528\u6237\u540D\:
+ActionHTTP.UploadUser.Tooltip=\u8BF7\u6C42 HTTP \u670D\u52A1\u5668\u8EAB\u4EFD\u9A8C\u8BC1\u7684\u7528\u6237\u540D
+ActionHttp.keyword=http
diff --git a/plugins/actions/mail/src/main/resources/org/apache/hop/workflow/actions/mail/messages/messages_zh_CN.properties b/plugins/actions/mail/src/main/resources/org/apache/hop/workflow/actions/mail/messages/messages_zh_CN.properties
index d4329ab..d9c0556 100644
--- a/plugins/actions/mail/src/main/resources/org/apache/hop/workflow/actions/mail/messages/messages_zh_CN.properties
+++ b/plugins/actions/mail/src/main/resources/org/apache/hop/workflow/actions/mail/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,105 +15,113 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-ActionMail.Description=\u53d1\u9001\u4e00\u4e2ae-Mail
-ActionMail.Name=\u53d1\u9001\u90ae\u4ef6
-ActionMail.ZipFiles.Label=\u538b\u7f29\u6210\u7edf\u4e00\u6587\u4ef6\u683c\u5f0f? 
-ActionMail.IncludeDate.Label=\u4fe1\u606f\u91cc\u5e26\u65e5\u671f?  
-ActionMail.Port.Tooltip=SMTP\u6216SMTPS\u534f\u8bae\u7684\u7aef\u53e3
-ActionMail.SMTPServer.Tooltip=SMTP\u670d\u52a1\u5668
-ActionMail.ReplyAddress.Tooltip=\u56de\u590d\u5730\u5740
-ActionMail.Priority.High.Label=\u9ad8
-ActionMail.ReplyName.Tooltip=\u56de\u590d\u5168\u540d
-ActionMail.AuthenticationUser.Tooltip=\u7528\u6237\u540d
-ActionMail.Encoding.Label=\u7f16\u7801
-ActionMail.Log.Comment.LinesUpdated=\u66f4\u65b0\u884c
-ActionMail.ContactPerson.Label=\u8054\u7cfb\u4eba\: 
-ActionMail.Group.SMTPServer.Label=\u90ae\u4ef6\u670d\u52a1\u5668
-ActionMail.Log.Comment.Tel=\u7535\u8bdd\u53f7\u7801
-ActionMail.Error.ReplyEmailNotFilled=\u6ca1\u6709\u586b\u5199\u56de\u590d\u90ae\u4ef6\u5730\u5740
-ActionMail.ImageFilenameEdit.Tooltip=\u7f16\u8f91\u5165\u53e3
-ActionMail.UseHTMLInBody.Label=\u4f7f\u7528 HTML \u90ae\u4ef6\u683c\u5f0f?
-ActionMail.Group.AddPreviousFiles.Label=\u9884\u89c8\u6587\u4ef6\u540d\u79f0
-ActionMail.Fields.Image.Label=\u56fe\u7247
-ActionMail.ZipFilename.Tooltip=\u538b\u7f29\u6587\u4ef6\u540d\u79f0
-ActionMail.Log.Comment.PreviousResult=\u4e0a\u6b21\u7684\u7ed3\u679c
-ActionMail.Group.Authentification.Label=\u9a8c\u8bc1
-ActionMail.Log.Comment.PathToJobentry=\u4f5c\u4e1a\u9879\u7684\u8def\u5f84
-ActionMail.ImageFilenameDelete.Tooltip=\u5220\u9664\u9009\u4e2d\u9879
-ActionMail.Fields.Image.Tooltip=\u6307\u5b9a\u8981\u5185\u5d4c\u7684\u56fe\u7247\u7684\u5168\u8def\u5f84
-ActionMail.Fields.ContentID.Label=\u5185\u5bb9ID
-ActionMail.ReplyName.Label=\u56de\u590d\u540d\u79f0
-ActionMail.Log.Comment.LinesInput=\u8f93\u5165
-ActionMail.DestinationAddress.Tooltip=\u7a7a\u683c\u5206\u9694\u7684\u591a\u4e2a\u76ee\u6807\u5730\u5740
-ActionMail.Priority.Label=\u4f18\u5148\u7ea7
+#
+ActionMail.AttachFiles.Label=\u5E26\u9644\u4EF6? 
+ActionMail.AuthenticationPassword.Label=\u5BC6\u7801\: 
+ActionMail.AuthenticationPassword.Tooltip=\u5BC6\u7801
+ActionMail.AuthenticationUser.Label=\u7528\u6237\u540D\: 
+ActionMail.AuthenticationUser.Tooltip=\u7528\u6237\u540D
+ActionMail.BrowseFiles.Label=\u6D4F\u89C8
+ActionMail.Comment.Label=\u6CE8\u91CA\: 
+ActionMail.ContactPerson.Label=\u8054\u7CFB\u4EBA\: 
+ActionMail.ContactPerson.Tooltip=\u7B2C\u4E8C\u8054\u7CFB\u4EBA
+ActionMail.ContactPhone.Label=\u8054\u7CFB\u7535\u8BDD\: 
+ActionMail.ContactPhone.Tooltip=\u8054\u7CFB\u7535\u8BDD\u53F7\u7801
+ActionMail.ContentID.Label=\u5185\u5BB9ID
+ActionMail.ContentID.Tooltip=\u5185\u5BB9ID
+ActionMail.Description=\u53D1\u9001\u4E00\u4E2Ae-Mail
+ActionMail.DestinationAddress.Label=\u6536\u4EF6\u4EBA\u5730\u5740\: 
+ActionMail.DestinationAddress.Tooltip=\u7A7A\u683C\u5206\u9694\u7684\u591A\u4E2A\u76EE\u6807\u5730\u5740
 ActionMail.DestinationAddressBCc.Label=\u6697\u9001\: 
-ActionMail.AuthenticationPassword.Tooltip=\u5bc6\u7801
-ActionMail.Log.Comment.ContactInfo=\u8054\u7cfb\u4fe1\u606f
-ActionMail.Comment.Label=\u6ce8\u91ca\: 
-ActionMail.OnlyCommentInBody.Label=\u53ea\u53d1\u9001\u90ae\u4ef6\u6ce8\u91ca? 
-ActionMail.Log.Comment.JobDirectory=\u76ee\u5f55
-ActionMail.AttachFiles.Label=\u5e26\u9644\u4ef6? 
-ActionMail.Error.HostNotSpecified=\u6ca1\u6709\u6307\u5b9a\u90ae\u4ef6\u670d\u52a1\u5668 (SMTP host)
-ActionMail.Subject.Label=\u4e3b\u9898\: 
-ActionMail.ImageFilenameDelete.Button=\u5220\u9664
-ActionMail.Log.Comment.Status=Script exist status
-ActionMail.ZipFilename.Label=\u538b\u7f29\u6587\u4ef6\u540d\u79f0\: 
-ActionMail.Log.Comment.ActionNr=\u4f5c\u4e1a\u9879\u7f16\u53f7
-ActionMail.AuthenticationPassword.Label=\u5bc6\u7801\: 
-ActionMail.UseAuthentication.Label=\u7528\u6237\u9a8c\u8bc1? 
-ActionMail.Priority.Normal.Label=\u666e\u901a
-ActionMail.UseSecAuthentication.Label=\u4f7f\u7528\u5b89\u5168\u9a8c\u8bc1? 
-ActionMail.SelectFileTypes.Label=\u6587\u4ef6\u7c7b\u578b\:
-ActionMail.Port.Label=\u7aef\u53e3\u53f7\: 
-ActionMail.NameOfEntry.Label=\u90ae\u4ef6\u4f5c\u4e1a\u540d\u79f0\:
-ActionMail.UsePriority.Tooltip=\u5141\u8bb8\u7ba1\u7406\u90ae\u4ef6\u4f18\u5148\u7ea7
-ActionMail.NameOfEntry.Tooltip=\u90ae\u4ef6\u4f5c\u4e1a\u540d\u79f0\:
-ActionMail.DestinationAddress.Label=\u6536\u4ef6\u4eba\u5730\u5740\: 
-ActionMail.ReplyToAddress.Label=\u56de\u590d\u5730\u5740
-ActionMail.Log.Comment.LinesWritten=\u5199\u5165\u884c
-ActionMail.Filetype.Jpeg=JEPG
-ActionMail.ImageFilenameAdd.Button=\u6dfb\u52a0
-ActionMail.Group.EmbeddedImages.Label=\u5185\u5d4c\u56fe\u7247
-ActionMailDialog.Server.Label=\u670d\u52a1\u5668
-ActionMail.DestinationAddressBCc.Tooltip=\u7a7a\u683c\u5206\u9694\u7684\u591a\u4e2a\u6697\u9001\u6536\u4ef6\u4eba
-ActionMail.SecureConnectionType.Label=\u5b89\u5168\u8fde\u63a5\u7c7b\u578b
-ActionMail.Log.Comment.MsgDate=\u6d88\u606f\u65e5\u671f
-ActionMail.ContactPerson.Tooltip=\u7b2c\u4e8c\u8054\u7cfb\u4eba
-ActionMail.Importance.Label=\u91cd\u8981
-ActionMail.Group.MessageSettings.Label=\u6d88\u606f\u8bbe\u7f6e
-ActionMail.ContactPhone.Tooltip=\u8054\u7cfb\u7535\u8bdd\u53f7\u7801
-ActionMail.ImageFilenameEdit.Button=\u7f16\u8f91
-ActionMail.Filetype.All=\u5168\u90e8
-ActionMail.Log.Comment.Errors=\u9519\u8bef
-ActionMail.ReplyAddress.Label=\u53d1\u4ef6\u4eba\u5730\u5740\: 
-ActionMail.Priority.Low.Label=\u4f4e
-ActionMail.Group.Message.Label=\u6d88\u606f
-ActionMail.ContentID.Tooltip=\u5185\u5bb9ID
-ActionMail.UsePriority.Label=\u7ba1\u7406\u4f18\u5148\u7ea7
-ActionMail.Log.Comment.Action=\u4f5c\u4e1a\u9879
-ActionMail.Fields.Label=\u5185\u5d4c\u56fe\u7247
-ActionMail.Log.Comment.LinesOutput=\u8f93\u51fa\u884c
-ActionMail.AuthenticationUser.Label=\u7528\u6237\u540d\: 
-ActionMail.Log.Comment.PersonToContact=\u8054\u7cfb\u4eba
-ActionMail.DestinationAddressCc.Tooltip=\u7a7a\u683c\u5206\u9694\u7684\u591a\u4e2a\u6284\u9001\u6536\u4ef6\u4eba
-ActionMail.SMTPServer.Label=SMTP\u670d\u52a1\u5668\:
-ActionMail.Log.Comment.JobName=\u4f5c\u4e1a\u540d
-ActionMail.Group.Reply.Label=\u53d1\u4ef6\u4eba
+ActionMail.DestinationAddressBCc.Tooltip=\u7A7A\u683C\u5206\u9694\u7684\u591A\u4E2A\u6697\u9001\u6536\u4EF6\u4EBA
 ActionMail.DestinationAddressCc.Label=\u6284\u9001\: 
-ActionMail.ReplyToAddress.Tooltip=\u6bcf\u4e2a\u56de\u590d\u5730\u5740\u4e4b\u95f4\u7528\u7a7a\u683c\u9694\u5f00
-ActionMail.Log.Comment.Workflow=\u4f5c\u4e1a\:
+ActionMail.DestinationAddressCc.Tooltip=\u7A7A\u683C\u5206\u9694\u7684\u591A\u4E2A\u6284\u9001\u6536\u4EF6\u4EBA
+ActionMail.Encoding.Label=\u7F16\u7801
+ActionMail.Error.HostNotSpecified=\u6CA1\u6709\u6307\u5B9A\u90AE\u4EF6\u670D\u52A1\u5668 (SMTP host)
+ActionMail.Error.ReplyEmailNotFilled=\u6CA1\u6709\u586B\u5199\u56DE\u590D\u90AE\u4EF6\u5730\u5740
+ActionMail.Fields.ContentID.Label=\u5185\u5BB9ID
+ActionMail.Fields.ContentID.Tooltip=\u6BCF\u5F20\u56FE\u7247\u90FD\u6709\u552F\u4E00\u7684\u5185\u5BB9ID, \u4F8B\u5982\u5728\u6D88\u606F\u4E2D\u56FE\u7247id\u7684\u5F62\u5F0F\u662F<img\=src"cid\:myid"/>
+ActionMail.Fields.Image.Label=\u56FE\u7247
+ActionMail.Fields.Image.Tooltip=\u6307\u5B9A\u8981\u5185\u5D4C\u7684\u56FE\u7247\u7684\u5168\u8DEF\u5F84
+ActionMail.Fields.Label=\u5185\u5D4C\u56FE\u7247
+ActionMail.Filetype.All=\u5168\u90E8
+ActionMail.Filetype.Gif=GIF
+ActionMail.Filetype.Jpeg=JEPG
 ActionMail.Filetype.Png=PNG
-ActionMail.Log.Comment.LinesRead=\u8bfb\u53d6\u884c
-ActionMail.Group.DestinationAddress.Label=\u6536\u4ef6\u4eba
-ActionMail.Tab.AttachedFiles.Label=\u9644\u4ef6
-ActionMail.ContentID.Label=\u5185\u5bb9ID
-ActionMail.Tab.Message.Label=\u90ae\u4ef6\u6d88\u606f
-ActionMail.Fields.ContentID.Tooltip=\u6bcf\u5f20\u56fe\u7247\u90fd\u6709\u552f\u4e00\u7684\u5185\u5bb9ID\uff0c\u4f8b\u5982\u5728\u6d88\u606f\u4e2d\u56fe\u7247id\u7684\u5f62\u5f0f\u662f<img\=src"cid\:myid"/>
-ActionMail.Log.Comment.Result=\u7ed3\u679c
-ActionMail.Header=\u53d1\u9001\u90ae\u4ef6
-ActionMail.ImageFilename.Label=\u6587\u4ef6\u540d
+ActionMail.Group.AddPreviousFiles.Label=\u9884\u89C8\u6587\u4EF6\u540D\u79F0
+ActionMail.Group.Authentification.Label=\u9A8C\u8BC1
+ActionMail.Group.DestinationAddress.Label=\u6536\u4EF6\u4EBA
+ActionMail.Group.EmbeddedImages.Label=\u5185\u5D4C\u56FE\u7247
+ActionMail.Group.Message.Label=\u6D88\u606F
+ActionMail.Group.MessageSettings.Label=\u6D88\u606F\u8BBE\u7F6E
+ActionMail.Group.Reply.Label=\u53D1\u4EF6\u4EBA
+ActionMail.Group.SMTPServer.Label=\u90AE\u4EF6\u670D\u52A1\u5668
+ActionMail.Header=\u53D1\u9001\u90AE\u4EF6
+ActionMail.ImageFilename.Label=\u6587\u4EF6\u540D
+ActionMail.ImageFilenameAdd.Button=\u6DFB\u52A0
+ActionMail.ImageFilenameDelete.Button=\u5220\u9664
+ActionMail.ImageFilenameDelete.Tooltip=\u5220\u9664\u9009\u4E2D\u9879
+ActionMail.ImageFilenameEdit.Button=\u7F16\u8F91
+ActionMail.ImageFilenameEdit.Tooltip=\u7F16\u8F91\u5165\u53E3
+ActionMail.Importance.Label=\u91CD\u8981
+ActionMail.IncludeDate.Label=\u4FE1\u606F\u91CC\u5E26\u65E5\u671F?
+ActionMail.Log.Comment.Action=\u4F5C\u4E1A\u9879
+ActionMail.Log.Comment.ActionNr=Action \u7F16\u53F7
+ActionMail.Log.Comment.ContactInfo=\u8054\u7CFB\u4FE1\u606F
+ActionMail.Log.Comment.Errors=\u9519\u8BEF
+ActionMail.Log.Comment.JobDirectory=\u76EE\u5F55
+ActionMail.Log.Comment.JobName=\u4F5C\u4E1A\u540D
+ActionMail.Log.Comment.LinesInput=\u8F93\u5165
+ActionMail.Log.Comment.LinesOutput=\u8F93\u51FA\u884C
+ActionMail.Log.Comment.LinesRead=\u8BFB\u53D6\u884C
+ActionMail.Log.Comment.LinesRejected=\u88AB\u62D2\u7EDD\u7684\u884C
+ActionMail.Log.Comment.LinesUpdated=\u66F4\u65B0\u884C
+ActionMail.Log.Comment.LinesWritten=\u5199\u5165\u884C
+ActionMail.Log.Comment.MsgDate=\u6D88\u606F\u65E5\u671F
+ActionMail.Log.Comment.PathToJobentry=Action \u7684\u8DEF\u5F84
+ActionMail.Log.Comment.PersonToContact=\u8054\u7CFB\u4EBA
+ActionMail.Log.Comment.PreviousResult=\u4E0A\u6B21\u7684\u7ED3\u679C
+ActionMail.Log.Comment.Result=\u7ED3\u679C
+ActionMail.Log.Comment.Status=Script exist status
+ActionMail.Log.Comment.Tel=\u7535\u8BDD\u53F7\u7801
+ActionMail.Log.Comment.Workflow=\u4F5C\u4E1A\:
+ActionMail.Name=\u53D1\u9001\u90AE\u4EF6
+ActionMail.NameOfEntry.Label=\u90AE\u4EF6\u4F5C\u4E1A\u540D\u79F0\:
+ActionMail.NameOfEntry.Tooltip=\u90AE\u4EF6\u4F5C\u4E1A\u540D\u79F0\:
+ActionMail.OnlyCommentInBody.Label=\u53EA\u53D1\u9001\u90AE\u4EF6\u6CE8\u91CA? 
+ActionMail.Port.Label=\u7AEF\u53E3\u53F7\: 
+ActionMail.Port.Tooltip=SMTP\u6216SMTPS\u534F\u8BAE\u7684\u7AEF\u53E3
+ActionMail.Priority.High.Label=\u9AD8
+ActionMail.Priority.Label=\u4F18\u5148\u7EA7
+ActionMail.Priority.Low.Label=\u4F4E
+ActionMail.Priority.Normal.Label=\u666E\u901A
+ActionMail.ReplyAddress.Label=\u53D1\u4EF6\u4EBA\u5730\u5740\: 
+ActionMail.ReplyAddress.Tooltip=\u56DE\u590D\u5730\u5740
+ActionMail.ReplyName.Label=\u56DE\u590D\u540D\u79F0
+ActionMail.ReplyName.Tooltip=\u56DE\u590D\u5168\u540D
+ActionMail.ReplyToAddress.Label=\u56DE\u590D\u5730\u5740
+ActionMail.ReplyToAddress.Tooltip=\u6BCF\u4E2A\u56DE\u590D\u5730\u5740\u4E4B\u95F4\u7528\u7A7A\u683C\u9694\u5F00
+ActionMail.SMTPServer.Label=SMTP\u670D\u52A1\u5668\:
+ActionMail.SMTPServer.Tooltip=SMTP\u670D\u52A1\u5668
+ActionMail.SecureConnectionType.Label=\u5B89\u5168\u8FDE\u63A5\u7C7B\u578B
+ActionMail.SelectFileTypes.Label=\u6587\u4EF6\u7C7B\u578B\:
+ActionMail.Sensitivity.Label=\u654F\u611F\u7EA7\u522B
+ActionMail.Sensitivity.confidential.Label=Confidential
+ActionMail.Sensitivity.normal.Label=Normal
+ActionMail.Sensitivity.personal.Label=Personal
+ActionMail.Sensitivity.private.Label=Private
+ActionMail.Subject.Label=\u4E3B\u9898\: 
+ActionMail.Subject.Tooltip=\u4E3B\u9898
+ActionMail.Tab.AttachedFiles.Label=\u9644\u4EF6
 ActionMail.Tab.General.Label=\u5730\u5740
-ActionMail.Filetype.Gif=GIF
-ActionMail.ContactPhone.Label=\u8054\u7cfb\u7535\u8bdd\: 
-ActionMail.BrowseFiles.Label=\u6d4f\u89c8
-ActionMail.Subject.Tooltip=\u4e3b\u9898
+ActionMail.Tab.Message.Label=\u90AE\u4EF6\u6D88\u606F
+ActionMail.UseAuthentication.Label=\u7528\u6237\u9A8C\u8BC1? 
+ActionMail.UseHTMLInBody.Label=\u4F7F\u7528 HTML \u90AE\u4EF6\u683C\u5F0F\:
+ActionMail.UsePriority.Label=\u7BA1\u7406\u4F18\u5148\u7EA7
+ActionMail.UsePriority.Tooltip=\u5141\u8BB8\u7BA1\u7406\u90AE\u4EF6\u4F18\u5148\u7EA7
+ActionMail.UseSecAuthentication.Label=\u4F7F\u7528\u5B89\u5168\u9A8C\u8BC1? 
+ActionMail.ZipFilename.Label=\u538B\u7F29\u6587\u4EF6\u540D\u79F0\: 
+ActionMail.ZipFilename.Tooltip=\u538B\u7F29\u6587\u4EF6\u540D\u79F0
+ActionMail.ZipFiles.Label=\u538B\u7F29\u6210\u7EDF\u4E00\u6587\u4EF6\u683C\u5F0F? 
+ActionMail.keyword=mail
+ActionMailDialog.Server.Label=\u670D\u52A1\u5668
diff --git a/plugins/actions/movefiles/src/main/resources/org/apache/hop/workflow/actions/movefiles/messages/messages_zh_CN.properties b/plugins/actions/movefiles/src/main/resources/org/apache/hop/workflow/actions/movefiles/messages/messages_zh_CN.properties
index 60537dc..c142d95 100644
--- a/plugins/actions/movefiles/src/main/resources/org/apache/hop/workflow/actions/movefiles/messages/messages_zh_CN.properties
+++ b/plugins/actions/movefiles/src/main/resources/org/apache/hop/workflow/actions/movefiles/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,80 +15,125 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
+#
+ActionMoveFiles.AddDate.Label=\u6DFB\u52A0\u65E5\u671F\u5230\u6587\u4EF6\u540D
+ActionMoveFiles.AddDate.Tooltip=\u6DFB\u52A0\u65E5\u671F\u5230\u6587\u4EF6\u540D
+ActionMoveFiles.AddDateBeforeExtension.Label=\u6DFB\u52A0\u65E5\u671F\u5230\u6269\u5C55\u540D\u524D\u9762
+ActionMoveFiles.AddDateBeforeExtension.Tooltip=\u9009\u4E2D\u8BE5\u9009\u9879\u5219\u8FFD\u52A0\u65F6\u95F4\u6233\u5230\u6587\u4EF6\u540D\u4E2D
+ActionMoveFiles.AddFileToResult.Label=\u6DFB\u52A0\u6587\u4EF6\u5230\u7ED3\u679C\u6587\u4EF6\u540D
+ActionMoveFiles.AddFileToResult.Tooltip=\u6DFB\u52A0\u76EE\u6807\u6587\u4EF6\u5230\u8FD4\u56DE\u6587\u4EF6\u5217\u8868.\n\u5728\u4F7F\u7528 \u53D1\u9001\u90AE\u4EF6 Action \u65F6, \u8BE5\u529F\u80FD\u6709\u52A9\u4E8E\u60A8\u5C06\u8FD9\u4E9B\u6587\u4EF6\u505A\u4E3A\u9644\u4EF6\u6DFB\u52A0\u5230\u90AE\u4EF6\u4E2D
+ActionMoveFiles.AddMovedDate.Label=\u6DFB\u52A0\u65E5\u671F
+ActionMoveFiles.AddMovedDate.Tooltip=\u6DFB\u52A0\u65E5\u671F
+ActionMoveFiles.AddMovedDateBeforeExtension.Label=\u6DFB\u52A0\u65E5\u671F\u5230\u6587\u4EF6\u6269\u5C55\u540D\u524D\u9762
+ActionMoveFiles.AddMovedDateBeforeExtension.Tooltip=\u6DFB\u52A0\u65E5\u671F\u5230\u6587\u4EF6\u6269\u5C55\u540D\u524D\u9762
+ActionMoveFiles.AddMovedTime.Label=\u6DFB\u52A0\u65F6\u95F4
+ActionMoveFiles.AddMovedTime.Tooltip=\u6DFB\u52A0\u65F6\u95F4
+ActionMoveFiles.AddTime.Label=\u6DFB\u52A0\u65F6\u95F4\u5230\u6587\u4EF6\u540D
+ActionMoveFiles.AddTime.Tooltip=\u6DFB\u52A0\u65F6\u95F4\u5230\u6587\u4EF6\u540D
+ActionMoveFiles.BrowseFiles.Label=\u6587\u4EF6
+ActionMoveFiles.BrowseFolders.Label=\u6587\u4EF6\u5939
+ActionMoveFiles.CreateDestinationFolder.Label=\u65B0\u5EFA\u76EE\u6807\u6587\u4EF6\u5939
+ActionMoveFiles.CreateDestinationFolder.Tooltip=\u81EA\u52A8\u521B\u5EFA\u76EE\u6807\u76EE\u5F55. \u5982\u679C\u76EE\u6807\u8DEF\u5F84\u662F\u666E\u901A\u6587\u4EF6, \u5176\u4E0A\u7EA7\u76EE\u5F55\u4E5F\u4F1A\u81EA\u52A8\u521B\u5EFA
+ActionMoveFiles.CreateMoveToFolder.Label=\u65B0\u5EFA\u6587\u4EF6\u5939
+ActionMoveFiles.CreateMoveToFolder.Tooltip=\u5FC5\u8981\u65F6\u65B0\u5EFA\u6587\u4EF6\u5939
+ActionMoveFiles.DateTimeFormat.Label=\u65F6\u95F4\u65E5\u671F\u683C\u5F0F
+ActionMoveFiles.Delete_Source_File_IfFileExists.Label=\u5220\u9664\u6E90\u6587\u4EF6
 ActionMoveFiles.Description=Move Files
-ActionMoveFiles.Name=\u79fb\u52a8\u6587\u4ef6
-ActionMoveFiles.SpecifyFormat.Label=\u6307\u5b9a\u65e5\u671f\u683c\u5f0f
-ActionMoveFiles.Fields.Label=\u6587\u4ef6/\u6587\u4ef6\u5939\uff1a
-ActionMoveFiles.Fields.Wildcard.Label=\u901a\u914d\u7b26\uff08\u6b63\u5219\u8868\u8fbe\u5f0f\uff09
-ActionMoveFiles.Previous.Label=\u590d\u5236\u4e0a\u4e00\u6b65\u7684\u7ed3\u679c\u5230\u53c2\u6570
-ActionMoveFiles.AddDateBeforeExtension.Label=\u6dfb\u52a0\u65e5\u671f\u5230\u6269\u5c55\u540d\u524d\u9762
-ActionMoveFiles.Fail_IfMovedFileExists.Label=\u5931\u8d25
-ActionMoveFiles.IfFileExists.Label=\u5982\u679c\u76ee\u6807\u6587\u4ef6\u5df2\u5b58\u5728
-ActionMoveFiles.DoNotKeepFolderStructure.Label=\u4e0d\u4fdd\u6301\u76ee\u5f55\u7ed3\u6784
-ActionMoveFiles.Overwrite_Filename_IffMovedFileExists.Label=\u8986\u76d6\u6587\u4ef6
-ActionMoveFiles.Title=\u79fb\u52a8\u6587\u4ef6
-ActionMoveFiles.Delete_Source_File_IfFileExists.Label=\u5220\u9664\u6e90\u6587\u4ef6
-ActionMoveFiles.SourceFileFolder.Label=\u6e90\u6587\u4ef6/\u6587\u4ef6\u5939
-ActionMoveFiles.BrowseFiles.Label=\u6587\u4ef6
-ActionMoveFiles.FilenameAdd.Button=&\u6dfb\u52a0
-ActionMoveFiles.Fields.DestinationFileFolder.Label=\u76ee\u6807\u6587\u4ef6/\u6587\u4ef6\u5939
-ActionMoveFiles.Wildcard.Label=\u901a\u914d\u7b26\uff08\u6b63\u5219\u8868\u8fbe\u5f0f\uff09
-ActionMoveFiles.Simulate.Tooltip=\u5982\u679c\u4f60\u60f3\u9884\u5148\u6a21\u62df\u8fd9\u4e2a\u8f6c\u6362\uff0c\u53ef\u4ee5\u9009\u4e2d\u6b64\u9009\u9879\u3002PDI\u4e0d\u4f1a\u771f\u6b63\u79fb\u52a8\u6587\u4ef6
-ActionMoveFiles.SuccessWhenAtLeat.Label=\u88ab\u6210\u529f\u79fb\u52a8\u7684\u6587\u4ef6\u6570\u4e0d\u5c11\u4e8e
-ActionMoveFiles.AddTime.Tooltip=\u6dfb\u52a0\u65f6\u95f4\u5230\u6587\u4ef6\u540d
-ActionMoveFiles.Do_Nothing_IfFileExists.Label=\u4ec0\u4e48\u4e5f\u4e0d\u505a
-ActionMoveFiles.Overwrite_File_IfFileExists.Label=\u8986\u76d6\u76ee\u6807\u6587\u4ef6
-ActionMoveFiles.SuccessOn.Group.Label=\u6210\u529f\u6761\u4ef6
-ActionMoveFiles.SpecifyMoveFormat.Tooltip=\u6307\u5b9a\u683c\u5f0f
-ActionMoveFiles.Simulate.Label=\u6a21\u62df
-ActionMoveFiles.Tab.Advanced.Label=\u9ad8\u7ea7
-ActionMoveFiles.DestinationIsAFile.Label=\u76ee\u6807\u662f\u4e00\u4e2a\u6587\u4ef6
-ActionMoveFiles.AddMovedDate.Tooltip=\u6dfb\u52a0\u65e5\u671f
-ActionMoveFiles.Do_Nothing_IfMovedFileExists.Label=\u4ec0\u4e48\u4e5f\u4e0d\u505a
-ActionMoveFiles.Fail_IfFileExists.Label=\u5931\u8d25
-ActionMoveFiles.AddMovedTime.Label=\u6dfb\u52a0\u65f6\u95f4
-ActionMoveFiles.SpecifyFormat.Tooltip=\u6307\u5b9a\u65e5\u671f\u65f6\u95f4\u683c\u5f0f
-ActionMoveFiles.Unique_Name_IfFileExists.Label=\u521b\u5efa\u975e\u91cd\u590d\u540d\u79f0\u7684\u6587\u4ef6
-ActionMoveFiles.NrErrorsLessThan.Tooltip=\u5f53\u9519\u8bef\u6570\u5c11\u4e8e\u6307\u5b9a\u4e2a\u6570\u65f6\u8fd0\u884c\u6210\u529f
-ActionMoveFiles.SuccessCondition.Label=\u6210\u529f\u6761\u4ef6
-ActionMoveFiles.SuccessWhenAllWorksFine.Label=\u6240\u6709\u5de5\u4f5c\u6b63\u5e38
-ActionMoveFiles.FilenameEdit.Tooltip=\u7f16\u8f91\u9009\u4e2d\u7684\u6587\u4ef6
-ActionMoveFiles.BrowseFolders.Label=\u6587\u4ef6\u5939
-ActionMoveFiles.AddMovedDate.Label=\u6dfb\u52a0\u65e5\u671f
-ActionMoveFiles.MoveEmptyFolders.Label=\u79fb\u52a8\u7a7a\u76ee\u5f55
-ActionMoveFiles.AddMovedTime.Tooltip=\u6dfb\u52a0\u65f6\u95f4
-ActionMoveFiles.MoveEmptyFolders.Tooltip=\u53ea\u6709\u5728\u6ca1\u6709\u8bbe\u7f6e\u901a\u914d\u7b26\u5e76\u4e14\u9009\u4e2d\u201c\u5305\u542b\u5b50\u76ee\u5f55\u201d\u7684\u60c5\u51b5\u4e0b\uff0c\u79fb\u52a8\u7a7a\u76ee\u5f55\u624d\u8d77\u4f5c\u7528
-ActionMoveFiles.Fields.SourceFileFolder.Label=\u6e90\u6587\u4ef6/\u6587\u4ef6\u5939
-ActionMoveFiles.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0
-ActionMoveFiles.FilenameDelete.Button=&\u5220\u9664
-ActionMoveFiles.DestinationFileTab.Label=\u76ee\u6807\u6587\u4ef6
-ActionMoveFiles.SuccessWhenErrorsLessThan.Label=\u5f53\u53d1\u751f\u7684\u9519\u8bef\u6570\u5c0f\u4e8e
-ActionMoveFiles.UniqueName_IfMovedFileExists.Label=\u552f\u4e00\u540d\u79f0
-ActionMoveFiles.Move_To_Folder_IfFileExists.Label=\u79fb\u52a8\u6e90\u6587\u4ef6\u5230\u6587\u4ef6\u5939
-ActionMoveFiles.FileResult.Group.Label=\u7ed3\u679c\u6587\u4ef6\u540d
-ActionMoveFiles.Name.Default=\u79fb\u52a8\u6587\u4ef6
-ActionMoveFiles.AddMovedDateBeforeExtension.Tooltip=\u6dfb\u52a0\u65e5\u671f\u5230\u6587\u4ef6\u6269\u5c55\u540d\u524d\u9762
-ActionMoveFiles.GroupDestinationFile.Label=\u76ee\u6807\u6587\u4ef6
-ActionMoveFiles.FilenameDelete.Tooltip=\u4ece\u8868\u683c\u4e2d\u79fb\u9664\u9009\u4e2d\u7684\u6587\u4ef6
-ActionMoveFiles.SpecifyMoveFormat.Label=\u6307\u5b9a\u683c\u5f0f
-ActionMoveFiles.NrErrorsLessThan.Label=\u6570\u503c
-ActionMoveFiles.MovedDateTimeFormat.Label=\u65e5\u671f\u683c\u5f0f
-ActionMoveFiles.CreateMoveToFolder.Tooltip=\u5fc5\u8981\u65f6\u65b0\u5efa\u6587\u4ef6\u5939
-ActionMoveFiles.IncludeSubfolders.Label=\u5305\u542b\u5b50\u6587\u4ef6\u5939
-ActionMoveFiles.CreateMoveToFolder.Label=\u65b0\u5efa\u6587\u4ef6\u5939
-ActionMoveFiles.AddTime.Label=\u6dfb\u52a0\u65f6\u95f4\u5230\u6587\u4ef6\u540d
-ActionMoveFiles.GroupMoveToGroup.Label=\u79fb\u52a8\u5230\u6587\u4ef6\u5939
-ActionMoveFiles.AddDate.Label=\u6dfb\u52a0\u65e5\u671f\u5230\u6587\u4ef6\u540d
-ActionMoveFiles.IfMovedFileExists.Label=\u5982\u679c\u6587\u4ef6\u5728\u76ee\u6807\u6587\u4ef6\u5939\u4e2d\u5df2\u5b58\u5728
-ActionMoveFiles.DateTimeFormat.Label=\u65f6\u95f4\u65e5\u671f\u683c\u5f0f
-ActionMoveFiles.CreateDestinationFolder.Label=\u65b0\u5efa\u76ee\u6807\u6587\u4ef6\u5939
-ActionMoveFiles.Filetype.All=\u5168\u90e8\u6587\u4ef6
-ActionMoveFiles.DestinationFolder.Label=\u76ee\u6807\u6587\u4ef6\u5939
-ActionMoveFiles.Settings.Label=\u8bbe\u7f6e
-ActionMoveFiles.AddFileToResult.Label=\u6dfb\u52a0\u6587\u4ef6\u5230\u7ed3\u679c\u6587\u4ef6\u540d
-ActionMoveFiles.SourceFileFolder.Tooltip=\u5728\u6b64\u5904\u6307\u5b9a\u8981\u79fb\u52a8\u7684\u6587\u4ef6\u6216\u8005\u6587\u4ef6\u5939\u3002\u5982\u679c\u6709\u5fc5\u8981\u8bf7\u9009\u4e2d\u201c\u5305\u542b\u5b50\u76ee\u5f55\u201d
-ActionMoveFiles.AddDate.Tooltip=\u6dfb\u52a0\u65e5\u671f\u5230\u6587\u4ef6\u540d
-ActionMoveFiles.DestinationFileFolder.Label=\u76ee\u6807\u6587\u4ef6/\u6587\u4ef6\u5939
-ActionMoveFiles.FilenameEdit.Button=&\u7f16\u8f91
-ActionMoveFiles.AddMovedDateBeforeExtension.Label=\u6dfb\u52a0\u65e5\u671f\u5230\u6587\u4ef6\u6269\u5c55\u540d\u524d\u9762
-ActionMoveFiles.Tab.General.Label=\u4e00\u822c
+ActionMoveFiles.DestinationFileFolder.Label=\u76EE\u6807\u6587\u4EF6/\u6587\u4EF6\u5939
+ActionMoveFiles.DestinationFileFolder.Tooltip=\u8F93\u5165\u8981\u79FB\u52A8\u7684\u76EE\u6807\u8DEF\u5F84. \u5982\u679C\u6E90\u8DEF\u5F84\u662F\u666E\u901A\u6587\u4EF6, \u4F60\u4E5F\u53EF\u4EE5\u6307\u5B9A\u76EE\u6807\u6587\u4EF6\u540D\u79F0.
+ActionMoveFiles.DestinationFileTab.Label=\u76EE\u6807\u6587\u4EF6
+ActionMoveFiles.DestinationFolder.Label=\u76EE\u6807\u6587\u4EF6\u5939
+ActionMoveFiles.DestinationIsAFile.Label=\u76EE\u6807\u662F\u4E00\u4E2A\u6587\u4EF6
+ActionMoveFiles.DestinationIsAFile.Tooltip=\u76EE\u6807\u6587\u4EF6\u662F\u4E00\u4E2A\u666E\u901A\u6587\u4EF6(\u975E\u76EE\u5F55)
+ActionMoveFiles.DoNotKeepFolderStructure.Label=\u4E0D\u4FDD\u6301\u76EE\u5F55\u7ED3\u6784
+ActionMoveFiles.DoNotKeepFolderStructure.Tooltip=\u9009\u4E2D\u8BE5\u9009\u9879\u5C06\u5FFD\u7565\u539F\u6709\u76EE\u5F55\u7ED3\u6784
+ActionMoveFiles.Do_Nothing_IfFileExists.Label=\u4EC0\u4E48\u4E5F\u4E0D\u505A
+ActionMoveFiles.Do_Nothing_IfMovedFileExists.Label=\u4EC0\u4E48\u4E5F\u4E0D\u505A
+ActionMoveFiles.Error.AddingToFilenameResult=\u6DFB\u52A0\u6587\u4EF6 [{0}] \u5230\u8FD4\u56DE\u6587\u4EF6\u5217\u8868\u65F6\u51FA\u9519, \u5F02\u5E38\: {1}
+ActionMoveFiles.Error.DestinationFolderNotFound=\u76EE\u6807\u76EE\u5F55\u4E0D\u5B58\u5728\!
+ActionMoveFiles.Error.Exception.MoveProcess=\u65E0\u6CD5\u79FB\u52A8\u6587\u4EF6 [{0}] \u5230 [{1}]. \u5F02\u5E38\: {2}
+ActionMoveFiles.Error.Exception.MoveProcessError=\u79FB\u52A8\u6587\u4EF6 [{0}] \u5230 [{1}] \u65F6\u51FA\u9519\: {2}
+ActionMoveFiles.Error.Exception.UnableLoadXML=\u65E0\u6CD5\u4ECE XML \u8282\u70B9\u52A0\u8F7D "\u79FB\u52A8\u6587\u4EF6" \u7C7B\u578B\u7684 Action
+ActionMoveFiles.Error.GettingFilename=\u8BBF\u95EE\u6587\u4EF6 [{0}] \u65F6\u51FA\u9519, \u5F02\u5E38\: {1}
+ActionMoveFiles.Error.SourceFileNotExists=\u6587\u4EF6 [{0}] \u4E0D\u5B58\u5728\!
+ActionMoveFiles.Error.SuccessConditionbroken=\u7EC8\u6B62\u6210\u529F\u6761\u4EF6\u68C0\u6D4B. \u51FA\u73B0 {0} \u4E2A\u9519\u8BEF
+ActionMoveFiles.Fail_IfFileExists.Label=\u5931\u8D25
+ActionMoveFiles.Fail_IfMovedFileExists.Label=\u5931\u8D25
+ActionMoveFiles.Fields.DestinationFileFolder.Label=\u76EE\u6807\u6587\u4EF6/\u6587\u4EF6\u5939
+ActionMoveFiles.Fields.DestinationFileFolder.Tooltip=\u8F93\u5165\u8981\u4F7F\u7528\u7684\u76EE\u6807\u6587\u4EF6/\u76EE\u5F55\u7684\u8DEF\u5F84.\n\u5982\u679C\u6E90\u8DEF\u5F84\u662F\u666E\u901A\u6587\u4EF6, \u4F60\u53EF\u4EE5\u6307\u5B9A\u5176\u76EE\u6807\u6587\u4EF6\u540D
+ActionMoveFiles.Fields.Label=\u6587\u4EF6/\u6587\u4EF6\u5939\:
+ActionMoveFiles.Fields.SourceFileFolder.Label=\u6E90\u6587\u4EF6/\u6587\u4EF6\u5939
+ActionMoveFiles.Fields.SourceFileFolder.Tooltip=\u8F93\u5165\u4F60\u8981\u79FB\u52A8\u5230\u7684\u76EE\u5F55\u6216\u6587\u4EF6\u8DEF\u5F84.\n\u5F53\u6E90\u8DEF\u5F84\u662F\u76EE\u5F55\u4E14\u60A8\u9009\u4E2D\u4E86 "\u5305\u542B\u5B50\u76EE\u5F55" \u9009\u9879, \u5219\u904D\u5386\u5176\u4E0B\u6240\u6709\u5339\u914D\u6587\u4EF6\u8FDB\u884C\u5904\u7406.
+ActionMoveFiles.Fields.Wildcard.Label=\u901A\u914D\u7B26 (\u6B63\u5219\u8868\u8FBE\u5F0F)
+ActionMoveFiles.Fields.Wildcard.Tooltip=\u6307\u5B9A\u8981\u5339\u914D\u6587\u4EF6\u7684\u901A\u914D\u7B26(\u6B63\u5219\u8868\u8FBE\u5F0F).\n\u53EA\u6709\u7B26\u5408\u5339\u914D\u7684\u6587\u4EF6\u624D\u4F1A\u88AB\u79FB\u52A8.
+ActionMoveFiles.FileResult.Group.Label=\u7ED3\u679C\u6587\u4EF6\u540D
+ActionMoveFiles.FilenameAdd.Button=\u6DFB\u52A0(&A)
+ActionMoveFiles.FilenameDelete.Button=\u5220\u9664(&D)
+ActionMoveFiles.FilenameDelete.Tooltip=\u4ECE\u8868\u683C\u4E2D\u79FB\u9664\u9009\u4E2D\u7684\u6587\u4EF6
+ActionMoveFiles.FilenameEdit.Button=\u7F16\u8F91(&E)
+ActionMoveFiles.FilenameEdit.Tooltip=\u7F16\u8F91\u9009\u4E2D\u7684\u6587\u4EF6
+ActionMoveFiles.Filetype.All=\u5168\u90E8\u6587\u4EF6
+ActionMoveFiles.GroupDestinationFile.Label=\u76EE\u6807\u6587\u4EF6
+ActionMoveFiles.GroupMoveToGroup.Label=\u79FB\u52A8\u5230\u6587\u4EF6\u5939
+ActionMoveFiles.IfFileExists.Label=\u5982\u679C\u76EE\u6807\u6587\u4EF6\u5DF2\u5B58\u5728
+ActionMoveFiles.IfMovedFileExists.Label=\u5982\u679C\u6587\u4EF6\u5728\u76EE\u6807\u6587\u4EF6\u5939\u4E2D\u5DF2\u5B58\u5728
+ActionMoveFiles.IncludeSubfolders.Label=\u5305\u542B\u5B50\u6587\u4EF6\u5939
+ActionMoveFiles.IncludeSubfolders.Tooltip=\u9009\u4E2D\u8BE5\u9009\u9879\u5C06\u904D\u5386\u6240\u6709\u5B50\u76EE\u5F55(\u4EC5\u6E90\u8DEF\u5F84\u662F\u76EE\u5F55\u65F6\u624D\u4F1A\u751F\u6548)
+ActionMoveFiles.Log.ArgFromPrevious.Found=\u4ECE\u524D\u7F6E\u901A\u9053\u4E2D\u627E\u5230 [{0}] \u4E2A\u53C2\u6570
+ActionMoveFiles.Log.CanNotCreateParentFolder=\u65E0\u6CD5\u521B\u5EFA\u4E0A\u7EA7\u76EE\u5F55 {0}\!
+ActionMoveFiles.Log.CanNotMoveFolderToFile=\u65E0\u6CD5\u79FB\u52A8\u76EE\u5F55 [{0}] \u5230\u6587\u4EF6 [{1}]
+ActionMoveFiles.Log.Error=\u5904\u7406\u65F6\u51FA\u9519\: {0}
+ActionMoveFiles.Log.Error.FolderMissing=\u65E0\u6CD5\u627E\u5230\u76EE\u5F55 [{0}]\!
+ActionMoveFiles.Log.Error.GettingMoveToFolder=\u65E0\u6CD5\u8BBF\u95EE\u76EE\u5F55 [{0}], \u5F02\u5E38\: {1}
+ActionMoveFiles.Log.Error.MoveToFolderMissing=\u7F3A\u5931\u76EE\u6807\u76EE\u5F55
+ActionMoveFiles.Log.Error.NotFolder=\u975E\u76EE\u5F55 [{0}]\!
+ActionMoveFiles.Log.FetchFolder=\u904D\u5386\u76EE\u5F55 [{0}]
+ActionMoveFiles.Log.FileAddedToResultFilesName=\u5C06\u6587\u4EF6 [{0}] \u6DFB\u52A0\u5230\u8FD4\u56DE\u6587\u4EF6\u5217\u8868
+ActionMoveFiles.Log.FileDeleted=\u5DF2\u5220\u9664\u6E90\u6587\u4EF6 [{0}]
+ActionMoveFiles.Log.FileExists=\u6587\u4EF6 [{0}] \u5B58\u5728\!
+ActionMoveFiles.Log.FileMoved=\u79FB\u52A8\u6587\u4EF6 [{0}] \u5230 {1}
+ActionMoveFiles.Log.FileOverwrite=\u8986\u76D6\u6587\u4EF6 [{0}]
+ActionMoveFiles.Log.FolderNotExist=\u76EE\u5F55 {0} \u4E0D\u5B58\u5728\!
+ActionMoveFiles.Log.FolderWasCreated=\u5DF2\u521B\u5EFA\u4E0A\u7EA7\u76EE\u5F55 {0}.
+ActionMoveFiles.Log.Forbidden=\u88AB\u62D2
+ActionMoveFiles.Log.IgnoringRow=\u5FFD\u7565\u65E0\u6548\u7684\u7A7A\u503C\u6570\u636E. \u6E90\u8DEF\u5F84\: [{0}], \u76EE\u6807\u8DEF\u5F84\: [{1}], \u5339\u914D\: [{2}]
+ActionMoveFiles.Log.IncludeSubFoldersOn=\u904D\u5386\u5B50\u76EE\u5F55...
+ActionMoveFiles.Log.Info.FilesInError=\u51FA\u9519\u6587\u4EF6\u603B\u6570\: {0}
+ActionMoveFiles.Log.Info.FilesInSuccess=\u6210\u529F\u5904\u7406\u6587\u4EF6\u603B\u6570\: {0}
+ActionMoveFiles.Log.ProcessingRow=\u5904\u7406\u884C \u6E90\u8DEF\u5F84\: [{0}], \u76EE\u6807\u8DEF\u5F84\: [{1}], \u5339\u914D\: [{2}]
+ActionMoveFiles.Log.SimulationOn=\u5F00\u542F\u6A21\u62DF\u6A21\u5F0F
+ActionMoveFiles.MoveEmptyFolders.Label=\u79FB\u52A8\u7A7A\u76EE\u5F55
+ActionMoveFiles.MoveEmptyFolders.Tooltip=\u53EA\u6709\u5728\u6CA1\u6709\u8BBE\u7F6E\u901A\u914D\u7B26\u5E76\u4E14\u9009\u4E2D\u201C\u5305\u542B\u5B50\u76EE\u5F55\u201D\u7684\u60C5\u51B5\u4E0B, \u79FB\u52A8\u7A7A\u76EE\u5F55\u624D\u8D77\u4F5C\u7528
+ActionMoveFiles.Move_To_Folder_IfFileExists.Label=\u79FB\u52A8\u6E90\u6587\u4EF6\u5230\u6587\u4EF6\u5939
+ActionMoveFiles.MovedDateTimeFormat.Label=\u65E5\u671F\u683C\u5F0F
+ActionMoveFiles.Name=\u79FB\u52A8\u6587\u4EF6
+ActionMoveFiles.Name.Default=\u79FB\u52A8\u6587\u4EF6
+ActionMoveFiles.Name.Label=Action \u540D\u79F0:
+ActionMoveFiles.NrErrorsLessThan.Label=\u6570\u503C
+ActionMoveFiles.NrErrorsLessThan.Tooltip=\u5F53\u9519\u8BEF\u6570\u5C11\u4E8E\u6307\u5B9A\u4E2A\u6570\u65F6\u8FD0\u884C\u6210\u529F
+ActionMoveFiles.Overwrite_File_IfFileExists.Label=\u8986\u76D6\u76EE\u6807\u6587\u4EF6
+ActionMoveFiles.Overwrite_Filename_IffMovedFileExists.Label=\u8986\u76D6\u6587\u4EF6
+ActionMoveFiles.Previous.Label=\u590D\u5236\u4E0A\u4E00\u6B65\u7684\u7ED3\u679C\u5230\u53C2\u6570
+ActionMoveFiles.Previous.Tooltip=\u9009\u4E2D\u8BE5\u9009\u9879\u5219\u524D\u7F6E\u901A\u9053\u4F20\u5165\u7684\u8FD4\u56DE\u7ED3\u679C\u5C06\u4F5C\u4E3A\u53C2\u6570\u5904\u7406.\n\u63D0\u9192, \u4F20\u5165\u7ED3\u679C\u96C6\u7684\u5B57\u6BB5\u4FE1\u606F\u4E0E\u914D\u7F6E\u53C2\u6570\u5FC5\u8981\u4E00\u81F4\!\n\u5373\: 1. \u6E90\u76EE\u5F55/\u6587\u4EF6; 2. \u76EE\u6807\u76EE\u5F55/\u6587\u4EF6; 3. \u901A\u914D\u7B26
+ActionMoveFiles.Settings.Label=\u8BBE\u7F6E
+ActionMoveFiles.Simulate.Label=\u6A21\u62DF
+ActionMoveFiles.Simulate.Tooltip=\u5982\u679C\u4F60\u60F3\u9884\u5148\u6A21\u62DF\u8BE5 Pipeline , \u53EF\u4EE5\u9009\u4E2D\u6B64\u9009\u9879. PDI\u4E0D\u4F1A\u771F\u6B63\u79FB\u52A8\u6587\u4EF6
+ActionMoveFiles.SourceFileFolder.Label=\u6E90\u6587\u4EF6/\u6587\u4EF6\u5939
+ActionMoveFiles.SourceFileFolder.Tooltip=\u5728\u6B64\u5904\u6307\u5B9A\u8981\u79FB\u52A8\u7684\u6587\u4EF6\u6216\u8005\u6587\u4EF6\u5939. \u5982\u679C\u6709\u5FC5\u8981\u8BF7\u9009\u4E2D\u201C\u5305\u542B\u5B50\u76EE\u5F55\u201D
+ActionMoveFiles.SpecifyFormat.Label=\u6307\u5B9A\u65E5\u671F\u683C\u5F0F
+ActionMoveFiles.SpecifyFormat.Tooltip=\u6307\u5B9A\u65E5\u671F\u65F6\u95F4\u683C\u5F0F
+ActionMoveFiles.SpecifyMoveFormat.Label=\u6307\u5B9A\u683C\u5F0F
+ActionMoveFiles.SpecifyMoveFormat.Tooltip=\u6307\u5B9A\u683C\u5F0F
+ActionMoveFiles.SuccessCondition.Label=\u6210\u529F\u6761\u4EF6
+ActionMoveFiles.SuccessOn.Group.Label=\u6210\u529F\u6761\u4EF6
+ActionMoveFiles.SuccessWhenAllWorksFine.Label=\u6240\u6709\u5DE5\u4F5C\u6B63\u5E38
+ActionMoveFiles.SuccessWhenAtLeat.Label=\u88AB\u6210\u529F\u79FB\u52A8\u7684\u6587\u4EF6\u6570\u4E0D\u5C11\u4E8E
+ActionMoveFiles.SuccessWhenErrorsLessThan.Label=\u5F53\u53D1\u751F\u7684\u9519\u8BEF\u6570\u5C0F\u4E8E
+ActionMoveFiles.Tab.Advanced.Label=\u9AD8\u7EA7
+ActionMoveFiles.Tab.General.Label=\u4E00\u822C
+ActionMoveFiles.Title=\u79FB\u52A8\u6587\u4EF6
+ActionMoveFiles.UniqueName_IfMovedFileExists.Label=\u552F\u4E00\u540D\u79F0
+ActionMoveFiles.Unique_Name_IfFileExists.Label=\u521B\u5EFA\u975E\u91CD\u590D\u540D\u79F0\u7684\u6587\u4EF6
+ActionMoveFiles.Wildcard.Label=\u901A\u914D\u7B26 (\u6B63\u5219\u8868\u8FBE\u5F0F)
+ActionMoveFiles.Wildcard.Tooltip=\u6307\u5B9A\u8981\u5339\u914D\u6587\u4EF6\u7684\u901A\u914D\u7B26(\u6B63\u5219\u8868\u8FBE\u5F0F). \u4EC5\u5339\u914D\u6587\u4EF6\u624D\u4F1A\u88AB\u79FB\u52A8
+ActionMoveFiles.keyword=move,files
diff --git a/plugins/actions/msgboxinfo/src/main/resources/org/apache/hop/workflow/actions/msgboxinfo/messages/messages_zh_CN.properties b/plugins/actions/msgboxinfo/src/main/resources/org/apache/hop/workflow/actions/msgboxinfo/messages/messages_zh_CN.properties
index 2c0068a..b2d33be 100644
--- a/plugins/actions/msgboxinfo/src/main/resources/org/apache/hop/workflow/actions/msgboxinfo/messages/messages_zh_CN.properties
+++ b/plugins/actions/msgboxinfo/src/main/resources/org/apache/hop/workflow/actions/msgboxinfo/messages/messages_zh_CN.properties
@@ -16,11 +16,11 @@
 # limitations under the License.
 #
 #
-#
-ActionMsgBoxInfo.Description=\u5c55\u793a\u4e00\u4e2a\u7b80\u5355\u7684\u6d88\u606f\u6846
-ActionMsgBoxInfo.Name=\u663e\u793a\u6d88\u606f\u5bf9\u8bdd\u6846
-MsgBoxInfo.BodyMessage.Label=\u6d88\u606f\u4e3b\u4f53:
-MsgBoxInfo.Label=\u4f5c\u4e1a\u9879\u540d\u79f0:
-MsgBoxInfo.Name.Default=\u663e\u793a\u6d88\u606f\u5bf9\u8bdd\u6846
-MsgBoxInfo.Title=\u6d88\u606f\u5bf9\u8bdd\u6846
-MsgBoxInfo.TitleMessage.Label=\u6d88\u606f\u6807\u9898:
+ActionMsgBoxInfo.Description=\u5C55\u793A\u4E00\u4E2A\u7B80\u5355\u7684\u6D88\u606F\u6846
+ActionMsgBoxInfo.Name=\u663E\u793A\u6D88\u606F\u5BF9\u8BDD\u6846
+ActionMsgBoxInfo.keyword=message,box,information
+MsgBoxInfo.BodyMessage.Label=\u6D88\u606F\u4E3B\u4F53\:
+MsgBoxInfo.Label=Action \u540D\u79F0\:
+MsgBoxInfo.Name.Default=\u663E\u793A\u6D88\u606F\u5BF9\u8BDD\u6846
+MsgBoxInfo.Title=\u6D88\u606F\u5BF9\u8BDD\u6846
+MsgBoxInfo.TitleMessage.Label=\u6D88\u606F\u6807\u9898\:
diff --git a/plugins/actions/mssqlbulkload/src/main/resources/org/apache/hop/workflow/actions/mssqlbulkload/messages/messages_zh_CN.properties b/plugins/actions/mssqlbulkload/src/main/resources/org/apache/hop/workflow/actions/mssqlbulkload/messages/messages_zh_CN.properties
index b09fe2b..d2cddbc 100644
--- a/plugins/actions/mssqlbulkload/src/main/resources/org/apache/hop/workflow/actions/mssqlbulkload/messages/messages_zh_CN.properties
+++ b/plugins/actions/mssqlbulkload/src/main/resources/org/apache/hop/workflow/actions/mssqlbulkload/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,73 +15,82 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-ActionMssqlBulkLoad.Name=SQLServer \u6279\u91cf\u52a0\u8f7d
-ActionMysqlBulkFile.Description=\u6279\u91cf\u628amysql\u6570\u636e\u8868\u7684\u6570\u636e\u5bfc\u51fa\u5230\u4e00\u4e2a\u6587\u4ef6 
-ActionMssqlBulkLoad.BatchSize.Label=\u6279\u91CF\u5927\u5C0F
-ActionMssqlBulkLoad.FireTriggers.Tooltip=\u6307\u5B9A\u6279\u91CF\u5BFC\u5165\u65F6\u662F\u5426\u6FC0\u6D3B
-ActionMssqlBulkLoad.BatchSize.Tooltip=\u6307\u5B9A\u6279\u91CF\u63D0\u4EA4\u7684\u884C\u6570\uFF0C\u6BCF\u4E00\u4E2A\u6279\u91CF\u63D0\u4EA4\u4F5C\u4E3A\u4E00\u4E2A\u4E8B\u7269\u5904\u7406\u3002\r\n\u7F3A\u7701\u60C5\u51B5\u4E0B\uFF0C\u6587\u4EF6\u91CC\u7684\u6240\u6709\u6570\u636E\u5728\u4E00\u4E2A\u6279\u91CF\u91CC\u3002
-ActionMssqlBulkLoad.Filename.Tooltip=\u6570\u636E\u6587\u4EF6\u7684\u5168\u8DEF\u5F84\u540D
-ActionMysqlBulkLoad.OrderDirectionAsc.Label=\u5347\u5E8F
-ActionMssqlBulkLoad.SelectColumns.Message=\u5217
-ActionMysqlBulkLoad.OrderDirection.Label=\u65B9\u5411
-ActionMssqlBulkLoad.Schemaname.Tooltip=\u6A21\u5F0F\u540D\u4E3A\u53EF\u9009\u9879,\u7F3A\u7701\u4E3A\u5F53\u524D\u7528\u6237\u7684\u6A21\u5F0F
-ActionMssqlBulkLoad.FormatFilename.Tooltip=\u6307\u5B9A\u683C\u5F0F\u6587\u4EF6\u7684\u5168\u8DEF\u5F84,\r\n\u683C\u5F0F\u6587\u4EF6\u7528\u4E8E\u63CF\u8FF0\u6570\u636E\u6587\u4EF6, \u7531\u6279\u91CF\u5BFC\u51FA\u5DE5\u5177\u751F\u6210.
-ActionMssqlBulkLoad.Filename.Label=\u6E90\u6587\u4EF6\u540D
-ActionMssqlBulkLoad.Tablename.Label=\u76EE\u6807\u8868\u540D
-ActionMysqlBulkLoad.ErrorFilename.Tooltip=\u6307\u5B9A\u5B58\u653E\u683C\u5F0F\u9519\u8BEF\u7684\u6570\u636E\u884C\u7684\u6587\u4EF6\u3002\u8FD9\u4E9B\u9519\u8BEF\u884C\u6309\u7167\u539F\u6837\u4FDD\u5B58\u5728\u65E5\u5FD7\u6587\u4EF6\u4E2D\u3002\r\n\u9519\u8BEF\u6587\u4EF6\u5728\u6267\u884C\u65F6\u521B\u5EFA\uFF0C\u5982\u679C\u5DF2\u7ECF\u5B58\u5728\u5219\u62A5\u9519\u3002\r\n\u53E6\u5916\uFF0C\u4E00\u4E2A\u6269\u5C55\u540D\u662F.ERROR \u7684\u63A7\u5236\u6587\u4EF6\u4E5F\u88AB\u521B\u5 [...]
+#
+ActionMssqlBulkLoad.AddDateTime.Label=\u589E\u52A0\u65E5\u671F\u65F6\u95F4
+ActionMssqlBulkLoad.AddDateTime.Tooltip=\u7ED9\u9519\u8BEF\u6587\u4EF6\u540D\u540E\u9762\u589E\u52A0\u65E5\u671F\u548C\u65F6\u95F4
 ActionMssqlBulkLoad.AddFileToResult.Label=\u5C06\u6587\u4EF6\u52A0\u5165\u5230\u7ED3\u679C\u6587\u4EF6\u4E2D
-ActionMssqlBulkLoad.MaxErrors.Label=\u6700\u5927\u9519\u8BEF\u6570
-ActionMssqlBulkLoad.DataFileGroup.Group.Label=\u6570\u636E\u6587\u4EF6
-ActionMssqlBulkLoad.Title=SQLServer \u6279\u91CF\u52A0\u8F7D
-ActionMssqlBulkLoad.Name.Default=SQLServer\u6279\u91CF\u52A0\u8F7D
+ActionMssqlBulkLoad.AddFileToResult.Tooltip=\u9009\u4E2D\u8BE5\u9009\u9879\u53EF\u4EE5\u5C06\u8BE5 Action \u8F93\u51FA\u7684\u6587\u4EF6\u52A0\u5165\u5230\u7ED3\u679C\u6587\u4EF6\u4E2D, \u4EE5\u4FBF\u540E\u9762\u5904\u7406, \u5982\u4F5C\u4E3A\u90AE\u4EF6\u9644\u4EF6.
+ActionMssqlBulkLoad.BatchSize.Label=\u6279\u91CF\u5927\u5C0F
+ActionMssqlBulkLoad.BatchSize.Tooltip=\u6307\u5B9A\u6279\u91CF\u63D0\u4EA4\u7684\u884C\u6570, \u6BCF\u4E00\u4E2A\u6279\u91CF\u63D0\u4EA4\u4F5C\u4E3A\u4E00\u4E2A\u4E8B\u7269\u5904\u7406. \r\n\u7F3A\u7701\u60C5\u51B5\u4E0B, \u6587\u4EF6\u91CC\u7684\u6240\u6709\u6570\u636E\u5728\u4E00\u4E2A\u6279\u91CF\u91CC.
 ActionMssqlBulkLoad.CheckConstraints.Label=\u4E00\u81F4\u6027\u68C0\u67E5
+ActionMssqlBulkLoad.CheckConstraints.Tooltip=\u9009\u4E2D\u8BE5\u9009\u9879, \u5728\u64CD\u4F5C\u8FC7\u7A0B\u4E2D, \u540C\u65F6\u8FDB\u884C\u5916\u952E\u7EA6\u675F\u3001\u68C0\u67E5\u7EA6\u675F\u7684\u68C0\u9A8C. \r\n\u5982\u679C\u4E0D\u5E0C\u671B\u68C0\u67E5, \u53D6\u6D88\u8BE5\u9009\u9879.
+ActionMssqlBulkLoad.CodePage.Specific=\u81EA\u5B9A\u4E49
+ActionMssqlBulkLoad.ConnectionError2.DialogMessage=\u8BF7\u5148\u9009\u62E9\u4E00\u4E2A\u6709\u6548\u7684\u6570\u636E\u5E93\u8FDE\u63A5\!
+ActionMssqlBulkLoad.ConnectionGroup.Group.Label=\u76EE\u6807\u8868
+ActionMssqlBulkLoad.DataFileGroup.Group.Label=\u6570\u636E\u6587\u4EF6
+ActionMssqlBulkLoad.Description=\u5C06\u6587\u4EF6\u4E2D\u7684\u6570\u636E\u6279\u91CF\u5199\u5165 MSSQL \u7684\u8868\u4E2D
+ActionMssqlBulkLoad.EndFile.Label=\u7ED3\u675F\u884C
+ActionMssqlBulkLoad.EndFile.Tooltip=\u5F53\u5230\u8FBE\u8BE5\u884C\u65F6\u6587\u4EF6\u7ED3\u675F
 ActionMssqlBulkLoad.Error.DbNotMSSQL=\u76EE\u6807\u6570\u636E\u5E93 {0} \u4E0D\u662F SQLServer \u6570\u636E\u5E93
+ActionMssqlBulkLoad.Error.ErrorFileExists=\u8F93\u51FA\u6587\u4EF6\u5DF2\u5B58\u5728\u9519\u8BEF! \u6267\u884C\u547D\u4EE4\u65F6\u4F1A\u4E3A\u53EF\u80FD\u9519\u8BEF\u521B\u5EFA\u8F93\u51FA\u6587\u4EF6, \u8BF7\u5220\u9664\u8BE5\u6587\u4EF6\u6216\u542F\u7528 \u201C\u6DFB\u52A0\u65E5\u671F\u65F6\u95F4\u201D \u9009\u9879!
+ActionMssqlBulkLoad.Error.FieldTerminatorMissing=\u672A\u6307\u5B9A\u6570\u636E\u6587\u4EF6\u7684\u5B57\u6BB5\u5206\u9694\u7B26\!
+ActionMssqlBulkLoad.Error.FileNotExists=\u6587\u4EF6 [{0}] \u4E0D\u5B58\u5728\!
+ActionMssqlBulkLoad.Error.OnlyLocalFileSupported=\u5F53\u524D\u7248\u672C\u4EC5\u652F\u6301\u672C\u5730\u6587\u4EF6, \u800C\u6587\u4EF6 [{0}] \u975E\u672C\u5730\u6587\u4EF6.
+ActionMssqlBulkLoad.Error.SpecificCodePageMissing=\u672A\u6307\u5B9A\u9875\u7F16\u7801\! \u8BE5\u503C\u7684\u6709\u6548\u8303\u56F4\u5E94\u8BE5\u662F\u5927\u4E8E 127 \u6216\u5C0F\u4E8E 32.
+ActionMssqlBulkLoad.Error.TableNotExists=\u8868 [{0}] \u4E0D\u5B58\u5728\!
+ActionMssqlBulkLoad.FieldTerminator.Label=\u5B57\u6BB5\u5206\u9694\u7B26
+ActionMssqlBulkLoad.FieldTerminator.Tooltip=\u6307\u5B9A\u5B57\u6BB5\u5206\u9694\u7B26, \u7F3A\u7701\u5206\u9694\u7B26\u662F\u5236\u8868\u7B26.
+ActionMssqlBulkLoad.FileExists.Label=\u6587\u4EF6 [{0}] \u5B58\u5728.
+ActionMssqlBulkLoad.FileResult.Group.Label=\u7ED3\u679C\u6587\u4EF6\u540D
+ActionMssqlBulkLoad.Filename.Label=\u6E90\u6587\u4EF6\u540D
+ActionMssqlBulkLoad.Filename.Tooltip=\u6570\u636E\u6587\u4EF6\u7684\u5168\u8DEF\u5F84\u540D
+ActionMssqlBulkLoad.Filetype.All=\u6240\u6709\u6587\u4EF6
 ActionMssqlBulkLoad.Filetype.Csv=CSV \u6587\u4EF6
-ActionMssqlBulkLoad.Nodatabase.Label=\u6CA1\u6709\u5B9A\u4E49\u6570\u636E\u5E93\u8FDE\u63A5
-ActionMysqlBulkLoad.CodePage.Label=\u7F16\u7801\u9875
+ActionMssqlBulkLoad.Filetype.Text=\u6587\u672C\u6587\u4EF6
+ActionMssqlBulkLoad.FireTriggers.Label=\u6FC0\u6D3B\u89E6\u53D1\u5668
+ActionMssqlBulkLoad.FireTriggers.Tooltip=\u6307\u5B9A\u6279\u91CF\u5BFC\u5165\u65F6\u662F\u5426\u6FC0\u6D3B
+ActionMssqlBulkLoad.FormatFilename.Label=\u683C\u5F0F\u6587\u4EF6
+ActionMssqlBulkLoad.FormatFilename.Tooltip=\u6307\u5B9A\u683C\u5F0F\u6587\u4EF6\u7684\u5168\u8DEF\u5F84,\r\n\u683C\u5F0F\u6587\u4EF6\u7528\u4E8E\u63CF\u8FF0\u6570\u636E\u6587\u4EF6, \u7531\u6279\u91CF\u5BFC\u51FA\u5DE5\u5177\u751F\u6210.
 ActionMssqlBulkLoad.KeepIdentity.Label=\u4FDD\u6301\u552F\u4E00\u5217
-ActionMssqlBulkLoad.Truncate.Tooltip=\u63D2\u5165\u6570\u636E\u524D\u6E05\u7A7A\u8868
+ActionMssqlBulkLoad.KeepIdentity.Tooltip=\u6307\u5B9A\u5BFC\u5165\u6587\u4EF6\u7684\u5305\u542B\u552F\u4E00\u503C\u7684\u5217\u4F5C\u4E3A\u8868\u7684\u552F\u4E00\u5217
+ActionMssqlBulkLoad.KeepNulls.Label=\u4FDD\u6301\u7A7A
+ActionMssqlBulkLoad.KeepNulls.Tooltip=\u9009\u4E2D\u8BE5\u9009\u9879,\u6570\u636E\u6587\u4EF6\u4E2D\u7684\u7A7A\u5217\u5BFC\u5165\u5230\u6570\u636E\u5E93\u4E2D\u4ECD\u4E3A\u7A7A\u5217, \u5426\u5219\u5C06\u63D2\u5165\u7F3A\u7701\u503C. 
 ActionMssqlBulkLoad.Lineterminated.Label=\u884C\u5206\u9694\u7B26
+ActionMssqlBulkLoad.Lineterminated.Tooltip=\u6307\u5B9A\u6570\u636E\u7684\u884C\u5206\u5272\u7B26
+ActionMssqlBulkLoad.MaxErrors.Label=\u6700\u5927\u9519\u8BEF\u6570
+ActionMssqlBulkLoad.MaxErrors.Tooltip=\u6307\u5B9A\u5141\u8BB8\u7684\u6700\u5927\u9519\u8BEF\u6570,\u6BCF\u4E00\u4E2A\u4E0D\u80FD\u63D2\u5165\u7684\u884C\u90FD\u4F5C\u4E3A\u4E00\u4E2A\u9519\u8BEF
+ActionMssqlBulkLoad.Name=SQLServer \u6279\u91CF\u52A0\u8F7D
+ActionMssqlBulkLoad.Name.Default=SQLServer\u6279\u91CF\u52A0\u8F7D
+ActionMssqlBulkLoad.Name.Label=Action \u540D\u79F0:
+ActionMssqlBulkLoad.Nodatabase.Label=\u6CA1\u6709\u5B9A\u4E49\u6570\u636E\u5E93\u8FDE\u63A5
+ActionMssqlBulkLoad.Nofilename.Label=\u6CA1\u6709\u5B9A\u4E49\u6587\u4EF6\u540D
+ActionMssqlBulkLoad.OrderBy.Label=\u6392\u5E8F
+ActionMssqlBulkLoad.OrderBy.Tooltip=\u6307\u5B9A\u6570\u636E\u6587\u4EF6\u91CC\u7684\u6570\u636E\u5982\u4F55\u6392\u5E8F.\r\n\u5982\u679C\u8981\u52A0\u8F7D\u7684\u6587\u4EF6\u91CC\u7684\u6570\u636E\u5DF2\u7ECF\u6309\u7167\u8868\u7684\u805A\u96C6\u7D22\u5F15\u6392\u597D\u5E8F, \u6279\u91CF\u52A0\u8F7D\u7684\u6027\u80FD\u5C06\u5F97\u5230\u63D0\u9AD8.\r\n\u5982\u679C\u6570\u636E\u6587\u4EF6\u662F\u4E0D\u540C\u4E8E\u805A\u96C6\u7D22\u5F15\u7684\u987A\u5E8F\u6392\u5E8F,\u6216\u8005\u8868\u6CA [...]
 ActionMssqlBulkLoad.RowsPerBatch.Label=\u6279\u91CF\u63D0\u4EA4\u884C\u6570
-ActionMssqlBulkLoad.EndFile.Label=\u7ED3\u675F\u884C
-ActionMssqlBulkLoad.FireTriggers.Label=\u6FC0\u6D3B\u89E6\u53D1\u5668
-ActionMssqlBulkLoad.Tab.General.Label=\u4E00\u822C
-ActionMssqlBulkLoad.FieldTerminator.Label=\u5B57\u6BB5\u5206\u9694\u7B26
-ActionMssqlBulkLoad.FormatFilename.Label=\u683C\u5F0F\u6587\u4EF6
+ActionMssqlBulkLoad.Schemaname.Label=\u76EE\u6807\u6A21\u5F0F
+ActionMssqlBulkLoad.Schemaname.Tooltip=\u6A21\u5F0F\u540D\u4E3A\u53EF\u9009\u9879,\u7F3A\u7701\u4E3A\u5F53\u524D\u7528\u6237\u7684\u6A21\u5F0F
+ActionMssqlBulkLoad.SelectColumns.Message=\u5217
+ActionMssqlBulkLoad.SelectColumns.Title=\u8868\u4E2D\u7684\u5217
+ActionMssqlBulkLoad.SpecificCodePage.Label=\u81EA\u5B9A\u4E49\u7F16\u7801\u9875
 ActionMssqlBulkLoad.StartFile.Label=\u5F00\u59CB\u884C
 ActionMssqlBulkLoad.StartFile.Tooltip=\u5F53\u5230\u8FBE\u8BE5\u884C\u662F\u5F00\u59CB\u8BFB\u53D6\u6587\u4EF6\u91CC\u7684\u6570\u636E
-ActionMssqlBulkLoad.EndFile.Tooltip=\u5F53\u5230\u8FBE\u8BE5\u884C\u65F6\u6587\u4EF6\u7ED3\u675F
 ActionMssqlBulkLoad.Tab.Advanced.Label=\u9AD8\u7EA7
-ActionMssqlBulkLoad.Name.Label=\u4F5C\u4E1A\u9879\u540D\u79F0
-ActionMssqlBulkLoad.ConnectionError2.DialogMessage=\u8BF7\u5148\u9009\u62E9\u4E00\u4E2A\u6709\u6548\u7684\u6570\u636E\u5E93\u8FDE\u63A5\!
-ActionMysqlBulkLoad.ErrorFilename.Label=\u9519\u8BEF\u6587\u4EF6
-ActionMysqlBulkLoad.DataFiletype.Label=\u6570\u636E\u6587\u4EF6\u7C7B\u578B
-ActionMssqlBulkLoad.AddDateTime.Label=\u589E\u52A0\u65E5\u671F\u65F6\u95F4
-ActionMssqlBulkLoad.Tablock.Tooltip=\u5728\u505A\u6279\u91CF\u8F7D\u5165\u65F6\u5148\u83B7\u53D6\u8868\u7EA7\u9501\u3002\r\n\u5728\u8BBE\u7F6E\u4E86\u8868\u7EA7\u9501\u4E14\u8868\u6CA1\u6709\u7D22\u5F15\u7684\u60C5\u51B5\u4E0B\uFF0C\u53EF\u4EE5\u591A\u4E2A\u5BA2\u6237\u7AEF\u5E76\u53D1\u5BF9\u540C\u4E00\u4E2A\u8868\u8FDB\u884C\u6279\u91CF\u52A0\u8F7D\uFF0C\u4EE5\u63D0\u9AD8\u6027\u80FD\u3002
-ActionMssqlBulkLoad.Lineterminated.Tooltip=\u6307\u5B9A\u6570\u636E\u7684\u884C\u5206\u5272\u7B26
-ActionMssqlBulkLoad.FileExists.Label=\u6587\u4EF6 [{0}] \u5B58\u5728.
-ActionMssqlBulkLoad.FileResult.Group.Label=\u7ED3\u679C\u6587\u4EF6\u540D
+ActionMssqlBulkLoad.Tab.General.Label=\u4E00\u822C
 ActionMssqlBulkLoad.TableExists.Label=\u8868 {0} \u5B58\u5728
-ActionMssqlBulkLoad.CodePage.Specific=\u81EA\u5B9A\u4E49
-ActionMssqlBulkLoad.FieldTerminator.Tooltip=\u6307\u5B9A\u5B57\u6BB5\u5206\u9694\u7B26, \u7F3A\u7701\u5206\u9694\u7B26\u662F\u5236\u8868\u7B26.
-ActionMssqlBulkLoad.OrderBy.Label=\u6392\u5E8F
-ActionMssqlBulkLoad.Truncate.Label=\u6E05\u7A7A\u8868
-ActionMssqlBulkLoad.KeepNulls.Tooltip=\u9009\u4E2D\u8BE5\u9009\u9879,\u6570\u636E\u6587\u4EF6\u4E2D\u7684\u7A7A\u5217\u5BFC\u5165\u5230\u6570\u636E\u5E93\u4E2D\u4ECD\u4E3A\u7A7A\u5217, \u5426\u5219\u5C06\u63D2\u5165\u7F3A\u7701\u503C. 
-ActionMssqlBulkLoad.KeepIdentity.Tooltip=\u6307\u5B9A\u5BFC\u5165\u6587\u4EF6\u7684\u5305\u542B\u552F\u4E00\u503C\u7684\u5217\u4F5C\u4E3A\u8868\u7684\u552F\u4E00\u5217
-ActionMssqlBulkLoad.Filetype.Text=\u6587\u672C\u6587\u4EF6
-ActionMssqlBulkLoad.SpecificCodePage.Label=\u81EA\u5B9A\u4E49\u7F16\u7801\u9875
-ActionMssqlBulkLoad.Schemaname.Label=\u76EE\u6807\u6A21\u5F0F
-ActionMssqlBulkLoad.SelectColumns.Title=\u8868\u4E2D\u7684\u5217
+ActionMssqlBulkLoad.Tablename.Label=\u76EE\u6807\u8868\u540D
+ActionMssqlBulkLoad.Tablename.Tooltip=\u8981\u52A0\u8F7D\u6570\u636E\u7684\u8868\u6216\u89C6\u56FE
 ActionMssqlBulkLoad.Tablock.Label=\u8868\u7EA7\u9501
-ActionMssqlBulkLoad.AddDateTime.Tooltip=\u7ED9\u9519\u8BEF\u6587\u4EF6\u540D\u540E\u9762\u589E\u52A0\u65E5\u671F\u548C\u65F6\u95F4
-ActionMssqlBulkLoad.KeepNulls.Label=\u4FDD\u6301\u7A7A
-ActionMssqlBulkLoad.Nofilename.Label=\u6CA1\u6709\u5B9A\u4E49\u6587\u4EF6\u540D
-ActionMssqlBulkLoad.MaxErrors.Tooltip=\u6307\u5B9A\u5141\u8BB8\u7684\u6700\u5927\u9519\u8BEF\u6570,\u6BCF\u4E00\u4E2A\u4E0D\u80FD\u63D2\u5165\u7684\u884C\u90FD\u4F5C\u4E3A\u4E00\u4E2A\u9519\u8BEF
+ActionMssqlBulkLoad.Tablock.Tooltip=\u5728\u505A\u6279\u91CF\u8F7D\u5165\u65F6\u5148\u83B7\u53D6\u8868\u7EA7\u9501. \r\n\u5728\u8BBE\u7F6E\u4E86\u8868\u7EA7\u9501\u4E14\u8868\u6CA1\u6709\u7D22\u5F15\u7684\u60C5\u51B5\u4E0B, \u53EF\u4EE5\u591A\u4E2A\u5BA2\u6237\u7AEF\u5E76\u53D1\u5BF9\u540C\u4E00\u4E2A\u8868\u8FDB\u884C\u6279\u91CF\u52A0\u8F7D, \u4EE5\u63D0\u9AD8\u6027\u80FD.
+ActionMssqlBulkLoad.Title=SQLServer \u6279\u91CF\u52A0\u8F7D
+ActionMssqlBulkLoad.Truncate.Label=\u6E05\u7A7A\u8868
+ActionMssqlBulkLoad.Truncate.Tooltip=\u63D2\u5165\u6570\u636E\u524D\u6E05\u7A7A\u8868
 ActionMssqlBulkLoad.UnexpectedError.Label=\u53D1\u751F\u4E86\u4E00\u4E2A\u672A\u9884\u6599\u7684\u9519\u8BEF
-ActionMssqlBulkLoad.Filetype.All=\u6240\u6709\u6587\u4EF6
-ActionMssqlBulkLoad.ConnectionGroup.Group.Label=\u76EE\u6807\u8868
-ActionMssqlBulkLoad.CheckConstraints.Tooltip=\u9009\u4E2D\u8BE5\u9009\u9879\uFF0C\u5728\u64CD\u4F5C\u8FC7\u7A0B\u4E2D\uFF0C\u540C\u65F6\u8FDB\u884C\u5916\u952E\u7EA6\u675F\u3001\u68C0\u67E5\u7EA6\u675F\u7684\u68C0\u9A8C\u3002\r\n\u5982\u679C\u4E0D\u5E0C\u671B\u68C0\u67E5\uFF0C\u53D6\u6D88\u8BE5\u9009\u9879\u3002
-ActionMssqlBulkLoad.OrderBy.Tooltip=\u6307\u5B9A\u6570\u636E\u6587\u4EF6\u91CC\u7684\u6570\u636E\u5982\u4F55\u6392\u5E8F.\r\n\u5982\u679C\u8981\u52A0\u8F7D\u7684\u6587\u4EF6\u91CC\u7684\u6570\u636E\u5DF2\u7ECF\u6309\u7167\u8868\u7684\u805A\u96C6\u7D22\u5F15\u6392\u597D\u5E8F\uFF0C\u6279\u91CF\u52A0\u8F7D\u7684\u6027\u80FD\u5C06\u5F97\u5230\u63D0\u9AD8.\r\n\u5982\u679C\u6570\u636E\u6587\u4EF6\u662F\u4E0D\u540C\u4E8E\u805A\u96C6\u7D22\u5F15\u7684\u987A\u5E8F\u6392\u5E8F,\u6216\u8005\u8868\ [...]
-ActionMssqlBulkLoad.Tablename.Tooltip=\u8981\u52A0\u8F7D\u6570\u636E\u7684\u8868\u6216\u89C6\u56FE
+ActionMssqlBulkLoad.keyword=mssql,bulk,load
+ActionMysqlBulkFile.Description=\u6279\u91CF\u628Amysql\u6570\u636E\u8868\u7684\u6570\u636E\u5BFC\u51FA\u5230\u4E00\u4E2A\u6587\u4EF6 
+ActionMysqlBulkLoad.CodePage.Label=\u7F16\u7801\u9875
+ActionMysqlBulkLoad.DataFiletype.Label=\u6570\u636E\u6587\u4EF6\u7C7B\u578B
+ActionMysqlBulkLoad.ErrorFilename.Label=\u9519\u8BEF\u6587\u4EF6
+ActionMysqlBulkLoad.ErrorFilename.Tooltip=\u6307\u5B9A\u5B58\u653E\u683C\u5F0F\u9519\u8BEF\u7684\u6570\u636E\u884C\u7684\u6587\u4EF6. \u8FD9\u4E9B\u9519\u8BEF\u884C\u6309\u7167\u539F\u6837\u4FDD\u5B58\u5728\u65E5\u5FD7\u6587\u4EF6\u4E2D. \r\n\u9519\u8BEF\u6587\u4EF6\u5728\u6267\u884C\u65F6\u521B\u5EFA, \u5982\u679C\u5DF2\u7ECF\u5B58\u5728\u5219\u62A5\u9519. \r\n\u53E6\u5916, \u4E00\u4E2A\u6269\u5C55\u540D\u662F.ERROR \u7684\u63A7\u5236\u6587\u4EF6\u4E5F\u88AB\u521B\u5EFA, \u8FD9\u4E2A\u6 [...]
+ActionMysqlBulkLoad.OrderDirection.Label=\u65B9\u5411
+ActionMysqlBulkLoad.OrderDirectionAsc.Label=\u5347\u5E8F
 ActionMysqlBulkLoad.OrderDirectionDesc.Label=\u964D\u5E8F
-ActionMssqlBulkLoad.AddFileToResult.Tooltip=\u9009\u4E2D\u8BE5\u9009\u9879\u53EF\u4EE5\u5C06\u8BE5\u4F5C\u4E1A\u9879\u8F93\u51FA\u7684\u6587\u4EF6\u52A0\u5165\u5230\u7ED3\u679C\u6587\u4EF6\u4E2D\uFF0C\u4EE5\u4FBF\u540E\u9762\u5904\u7406\uFF0C\u5982\u4F5C\u4E3A\u90AE\u4EF6\u9644\u4EF6\u3002
diff --git a/plugins/actions/mysqlbulkfile/src/main/resources/org/apache/hop/workflow/actions/mysqlbulkfile/messages/messages_zh_CN.properties b/plugins/actions/mysqlbulkfile/src/main/resources/org/apache/hop/workflow/actions/mysqlbulkfile/messages/messages_zh_CN.properties
index d28f66b..5781a5f 100644
--- a/plugins/actions/mysqlbulkfile/src/main/resources/org/apache/hop/workflow/actions/mysqlbulkfile/messages/messages_zh_CN.properties
+++ b/plugins/actions/mysqlbulkfile/src/main/resources/org/apache/hop/workflow/actions/mysqlbulkfile/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,38 +15,51 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-ActionMysqlBulkFile.Description=\u6279\u91cf\u628amysql\u6570\u636e\u8868\u7684\u6570\u636e\u5bfc\u51fa\u5230\u4e00\u4e2a\u6587\u4ef6 
-ActionMysqlBulkFile.Name=\u4ece MySQL \u6279\u91cf\u5bfc\u51fa\u5230\u6587\u4ef6
-ActionMysqlBulkFile.Do_Nothing_IfFileExists.Label=\u4ec0\u4e48\u4e5f\u4e0d\u505a
-ActionMysqlBulkFile.OutFileValue.Label=\u8f93\u51fa\u6587\u4ef6
-ActionMysqlBulkFile.TableName.Tooltip=\u6e90\u8868\u540d\u79f0
-ActionMysqlBulkFile.LimitLines.Label=\u524d...\u884c
-ActionMysqlBulkFile.HighPriority.Label=\u9ad8\u4f18\u5148\u7ea7
-ActionMysqlBulkFile.FileResult.Group.Label=\u7ed3\u679c\u6587\u4ef6\u540d
-ActionMysqlBulkFile.LimitLines.Tooltip=\u53ea\u5bfc\u51fa\u524d..\u884c\u6570\u636e\u5230\u6587\u4ef6
-ActionMysqlBulkFile.Filetype.All=\u5168\u90e8\u6587\u4ef6
-ActionMysqlBulkFile.Enclosed.Label=\u5b57\u6bb5\u5c01\u95ed\u7b26
-ActionMysqlBulkFile.HighPriority.Tooltip=\u9ad8\u4f18\u5148\u7ea7\u4f1a\u7ed9SELECT\u8bed\u53e5\u66f4\u9ad8\u7684\u4f18\u5148\u7ea7\u3002\u5f53\u4f60\u9700\u8981\u9a6c\u4e0a\u5f97\u5230\u7ed3\u679c\u65f6\u624d\u9009\u4e2d\u6b64\u9009\u9879
-ActionMysqlBulkFile.AddFileToResult.Label=\u6dfb\u52a0\u6587\u4ef6\u5230\u7ed3\u679c\u6587\u4ef6
-ActionMysqlBulkFile.ListColumn.Label=\u5217\u540d
-ActionMysqlBulkFile.OptionEnclosed.Tooltip=\u9009\u4e2d\u6b64\u9009\u9879\uff0c\u5219 \u5c01\u95ed\u7b26\uff08ENCLOSED BY)\u53ea\u6709\u5728\u5217\u6570\u636e\u662f\u5b57\u7b26\u4e32\u7c7b\u578b\u65f6\u88ab\u4f7f\u7528\u3002\u5426\u5219\u6240\u6709\u7684\u5217\u6570\u636e\u90fd\u4f7f\u7528\u5c01\u95ed\u7b26
-ActionMysqlBulkFile.IfFileExists.Label=\u5982\u679c\u6587\u4ef6\u5b58\u5728
-ActionMysqlBulkFile.Name.Default=\u4eceMySQL\u5bfc\u51fa\u6570\u636e\u5230\u6587\u4ef6
-ActionMysqlBulkFile.NoDatabase.Label=\u6ca1\u6709\u5b9a\u4e49\u6570\u636e\u5e93\u8fde\u63a5
-ActionMysqlBulkFile.DumpFileValue.Label=\u5220\u9664\u6587\u4ef6
-ActionMysqlBulkFile.SelectColumns.Title=\u9009\u62e9\u5217
-ActionMysqlBulkFile.Title=\u4eceMySQL\u6279\u91cf\u5bfc\u51fa\u5230\u6587\u4ef6
-ActionMysqlBulkFile.Separator.Label=\u5b57\u6bb5\u5206\u9694\u7b26
-ActionMysqlBulkFile.Filetype.Text=\u6587\u672c\u6587\u4ef6
-ActionMysqlBulkFile.TableName.Label=\u6e90\u8868
-ActionMysqlBulkFile.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0:
-ActionMysqlBulkFile.NoFileName.Label=\u6ca1\u6709\u5b9a\u4e49\u6587\u4ef6\u540d
-ActionMysqlBulkFile.ListColumn.Tooltip=\u6570\u636e\u6587\u4ef6\u4e2d\u5b9a\u4e49\u7684\u5217\u540d\u5217\u8868\uff0c\u4e24\u4e2a\u5217\u540d\u4e4b\u95f4\u7528\u9017\u53f7\u9694\u5f00
-ActionMysqlBulkFile.SchemaName.Label=\u6e90\u6a21\u5f0f
-ActionMysqlBulkFile.LineTerminated.Label=\u884c\u7ec8\u6b62\u7b26
-ActionMysqlBulkFile.Filename.Label=\u76ee\u6807\u6587\u4ef6\u540d
-ActionMysqlBulkFile.SelectColumns.Message=\u9009\u4e2d\u8981\u5bfc\u51fa\u5230\u6587\u4ef6\u7684\u5217
-ActionMysqlBulkFile.OptionEnclosed.Label=\u53ef\u9009\u5c01\u95ed\u7b26
-ActionMysqlBulkFile.AddFileToResult.Tooltip=\u9009\u4e2d\u6b64\u9009\u9879\u4f1a\u5c06\u6587\u4ef6\u6dfb\u52a0\u5230\u7ed3\u679c\u6587\u4ef6\u4e2d\uff0c\u65b9\u4fbf\u540e\u7eed\u6b65\u9aa4\u7684\u4f7f\u7528\uff0c\u4f8b\u5982\u4f5c\u4e3a\u90ae\u4ef6\u9644\u4ef6
-ActionMysqlBulkFile.OutDumpValue.Label=\u7c7b\u578b
-ActionMysqlBulkFile.SchemaName.Tooltip=\u6e90\u6a21\u5f0f\u540d\u79f0
+#
+ActionMysqlBulkFile.AddFileToResult.Label=\u6DFB\u52A0\u6587\u4EF6\u5230\u7ED3\u679C\u6587\u4EF6
+ActionMysqlBulkFile.AddFileToResult.Tooltip=\u9009\u4E2D\u6B64\u9009\u9879\u4F1A\u5C06\u6587\u4EF6\u6DFB\u52A0\u5230\u7ED3\u679C\u6587\u4EF6\u4E2D, \u65B9\u4FBF\u4E0B\u6E38\u901A\u9053\u7684\u4F7F\u7528, \u4F8B\u5982\u4F5C\u4E3A\u90AE\u4EF6\u9644\u4EF6
+ActionMysqlBulkFile.ConnectionError2.DialogMessage=\u8BF7\u5148\u6307\u5B9A\u6709\u6548\u6570\u636E\u5E93\u8FDE\u63A5\!
+ActionMysqlBulkFile.Create_NewFile_IfFileExists.Label=\u521B\u5EFA\u65B0\u7684\u552F\u4E00\u6027\u540D\u79F0
+ActionMysqlBulkFile.Description=\u6279\u91CF\u628Amysql\u6570\u636E\u8868\u7684\u6570\u636E\u5BFC\u51FA\u5230\u4E00\u4E2A\u6587\u4EF6 
+ActionMysqlBulkFile.Do_Nothing_IfFileExists.Label=\u4EC0\u4E48\u4E5F\u4E0D\u505A
+ActionMysqlBulkFile.DumpFileValue.Label=\u5220\u9664\u6587\u4EF6
+ActionMysqlBulkFile.Enclosed.Label=\u5B57\u6BB5\u5C01\u95ED\u7B26
+ActionMysqlBulkFile.Error.Label=\u6267\u884C\u8BE5 Action \u65F6\u51FA\u9519\:
+ActionMysqlBulkFile.Fail_IfFileExists.Label=\u5931\u8D25
+ActionMysqlBulkFile.FileExists1.Label=\u76EE\u6807\u6587\u4EF6 [
+ActionMysqlBulkFile.FileExists2.Label=] \u5DF2\u5B58\u5728\!
+ActionMysqlBulkFile.FileNameChange1.Label=\u521B\u5EFA\u65B0\u6587\u4EF6 [
+ActionMysqlBulkFile.FileResult.Group.Label=\u7ED3\u679C\u6587\u4EF6\u540D
+ActionMysqlBulkFile.Filename.Label=\u76EE\u6807\u6587\u4EF6\u540D
+ActionMysqlBulkFile.Filetype.All=\u5168\u90E8\u6587\u4EF6
+ActionMysqlBulkFile.Filetype.Text=\u6587\u672C\u6587\u4EF6
+ActionMysqlBulkFile.HighPriority.Label=\u9AD8\u4F18\u5148\u7EA7
+ActionMysqlBulkFile.HighPriority.Tooltip=\u9AD8\u4F18\u5148\u7EA7\u4F1A\u7ED9SELECT\u8BED\u53E5\u66F4\u9AD8\u7684\u4F18\u5148\u7EA7. \u5F53\u4F60\u9700\u8981\u9A6C\u4E0A\u5F97\u5230\u7ED3\u679C\u65F6\u624D\u9009\u4E2D\u6B64\u9009\u9879
+ActionMysqlBulkFile.IfFileExists.Label=\u5982\u679C\u6587\u4EF6\u5B58\u5728
+ActionMysqlBulkFile.LimitLines.Label=\u524D...\u884C
+ActionMysqlBulkFile.LimitLines.Tooltip=\u53EA\u5BFC\u51FA\u524D..\u884C\u6570\u636E\u5230\u6587\u4EF6
+ActionMysqlBulkFile.LineTerminated.Label=\u884C\u7EC8\u6B62\u7B26
+ActionMysqlBulkFile.ListColumn.Label=\u5217\u540D
+ActionMysqlBulkFile.ListColumn.Tooltip=\u6570\u636E\u6587\u4EF6\u4E2D\u5B9A\u4E49\u7684\u5217\u540D\u5217\u8868, \u4E24\u4E2A\u5217\u540D\u4E4B\u95F4\u7528\u9017\u53F7\u9694\u5F00
+ActionMysqlBulkFile.Name=\u4ECE MySQL \u6279\u91CF\u5BFC\u51FA\u5230\u6587\u4EF6
+ActionMysqlBulkFile.Name.Default=\u4ECEMySQL\u5BFC\u51FA\u6570\u636E\u5230\u6587\u4EF6
+ActionMysqlBulkFile.Name.Label=Action \u540D\u79F0\:
+ActionMysqlBulkFile.NoDatabase.Label=\u6CA1\u6709\u5B9A\u4E49\u6570\u636E\u5E93\u8FDE\u63A5
+ActionMysqlBulkFile.NoFileName.Label=\u6CA1\u6709\u5B9A\u4E49\u6587\u4EF6\u540D
+ActionMysqlBulkFile.OptionEnclosed.Label=\u53EF\u9009\u5C01\u95ED\u7B26
+ActionMysqlBulkFile.OptionEnclosed.Tooltip=\u9009\u4E2D\u6B64\u9009\u9879, \u5219 \u5C01\u95ED\u7B26(ENCLOSED BY)\u53EA\u6709\u5728\u5217\u6570\u636E\u662F\u5B57\u7B26\u4E32\u7C7B\u578B\u65F6\u88AB\u4F7F\u7528. \u5426\u5219\u6240\u6709\u7684\u5217\u6570\u636E\u90FD\u4F7F\u7528\u5C01\u95ED\u7B26
+ActionMysqlBulkFile.OutDumpValue.Label=\u7C7B\u578B
+ActionMysqlBulkFile.OutFileValue.Label=\u8F93\u51FA\u6587\u4EF6
+ActionMysqlBulkFile.SchemaName.Label=\u6E90\u6A21\u5F0F
+ActionMysqlBulkFile.SchemaName.Tooltip=\u6E90\u6A21\u5F0F\u540D\u79F0
+ActionMysqlBulkFile.SelectColumns.Message=\u9009\u4E2D\u8981\u5BFC\u51FA\u5230\u6587\u4EF6\u7684\u5217
+ActionMysqlBulkFile.SelectColumns.Title=\u9009\u62E9\u5217
+ActionMysqlBulkFile.Separator.Label=\u5B57\u6BB5\u5206\u9694\u7B26
+ActionMysqlBulkFile.TableExists1.Label=\u6E90\u8868 [
+ActionMysqlBulkFile.TableExists2.Label=\u5B58\u5728.
+ActionMysqlBulkFile.TableName.Label=\u6E90\u8868
+ActionMysqlBulkFile.TableName.Tooltip=\u6E90\u8868\u540D\u79F0
+ActionMysqlBulkFile.TableNotExists1.Label=\u6E90\u8868 [
+ActionMysqlBulkFile.TableNotExists2.Label=] \u4E0D\u5B58\u5728\!
+ActionMysqlBulkFile.Title=\u4ECEMySQL\u6279\u91CF\u5BFC\u51FA\u5230\u6587\u4EF6
+ActionMysqlBulkFile.keyword=mysql,bulk,file
diff --git a/plugins/actions/mysqlbulkload/src/main/resources/org/apache/hop/workflow/actions/mysqlbulkload/messages/messages_zh_CN.properties b/plugins/actions/mysqlbulkload/src/main/resources/org/apache/hop/workflow/actions/mysqlbulkload/messages/messages_zh_CN.properties
index b50a2f7..a71e70b 100644
--- a/plugins/actions/mysqlbulkload/src/main/resources/org/apache/hop/workflow/actions/mysqlbulkload/messages/messages_zh_CN.properties
+++ b/plugins/actions/mysqlbulkload/src/main/resources/org/apache/hop/workflow/actions/mysqlbulkload/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,39 +15,42 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-ActionMysqlBulkLoad.Description=\u6279\u91cf\u628a\u6570\u636e\u4ece\u4e00\u4e2a\u6587\u4ef6\u5bfc\u5165\u5230\u4e00\u4e2aMysql\u6570\u636e\u8868
-ActionMysqlBulkLoad.Name=MySQL \u6279\u91cf\u52a0\u8f7d
-ActionMysqlBulkLoad.Listattribut.Label=\u5b57\u6bb5:
-ActionMysqlBulkLoad.ConProrityValue.Label=\u5e76\u53d1
-ActionMysqlBulkLoad.Escaped.Tooltip=\u5982\u679c\u5b57\u6bb5\u9003\u9038\u7b26\u4e0d\u4e3a\u7a7a\uff0c\u5219\u90a3\u4e2a\u5b57\u7b26\u4f1a\u88ab\u5ffd\u7565\uff0c\u4f46\u662f\u5176\u540e\u7684\u6240\u6709\u5b57\u7b26\u4ecd\u4f1a\u662f\u8be5\u5b57\u6bb5\u503c\u7684\u4e00\u90e8\u5206
-ActionMysqlBulkLoad.Ignorelines.Label=\u5ffd\u7565\u524d...\u884c
-ActionMysqlBulkLoad.AddFileToResult.Label=\u5c06\u6587\u4ef6\u6dfb\u52a0\u7ed3\u679c\u6587\u4ef6\u4e2d
-ActionMysqlBulkLoad.ConnectionError2.DialogMessage=\u8bf7\u5148\u9009\u62e9\u4e00\u4e2a\u53ef\u7528\u7684\u6570\u636e\u5e93\u8fde\u63a5
-ActionMysqlBulkLoad.Nofilename.Label=\u6ca1\u6709\u6307\u5b9a\u6587\u4ef6\u540d
-ActionMysqlBulkLoad.NorProrityValue.Label=\u666e\u901a
-ActionMysqlBulkLoad.LocalInfile.Tooltip=\u5982\u679c\u6b64\u9009\u9879\u9009\u4e2d\uff0c\u5219\u6587\u4ef6\u5728\u5ba2\u6237\u7aef\u672c\u5730\u88ab\u8bfb\u53d6\uff0c\u7136\u540e\u53d1\u9001\u5230\u670d\u52a1\u7aef\u3002\r\n\u5982\u679c\u6ca1\u6709\u9009\u4e2d\u6b64\u9009\u9879\uff0c\u5219\u6587\u4ef6\u5fc5\u987b\u5b58\u5728\u4e8e\u670d\u52a1\u5668\u4e0a\u5e76\u4e14\u76f4\u63a5\u88ab\u670d\u52a1\u5668\u8bfb\u53d6
-ActionMysqlBulkLoad.Filetype.Text=\u6587\u672c\u6587\u4ef6
-ActionMysqlBulkLoad.Linestarted.Label=\u5f00\u59cb\u884c
-ActionMysqlBulkLoad.Enclosed.Label=\u5b57\u7b26\u5c01\u95ed\u7b26
-ActionMysqlBulkLoad.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0:
-ActionMysqlBulkLoad.LowProrityValue.Label=\u4f4e\u4f18\u5148\u7ea7
-ActionMysqlBulkLoad.Escaped.Label=\u5b57\u6bb5\u9003\u9038\u7b26
-ActionMysqlBulkLoad.AddFileToResult.Tooltip=\u9009\u4e2d\u6b64\u9009\u9879\u4f1a\u5c06\u8f93\u51fa\u6587\u4ef6\u6dfb\u52a0\u5230\u7ed3\u679c\u6587\u4ef6\u4e2d\uff0c\u4ee5\u4fbf\u540e\u9762\u6b65\u9aa4\u4f7f\u7528\u3002\u4f8b\u5982\u5c06\u6587\u4ef6\u4f5c\u4e3a\u90ae\u4ef6\u7684\u9644\u4ef6
-ActionMysqlBulkLoad.Separator.Label=\u5b57\u6bb5\u5206\u9694\u7b26:
-ActionMysqlBulkLoad.Replacedata.Label=\u66ff\u6362\u6570\u636e
-ActionMysqlBulkLoad.Title=MySQL\u6279\u91cf\u52a0\u8f7d
-ActionMysqlBulkLoad.Tablename.Label=\u76ee\u6807\u8868\u540d:
-ActionMysqlBulkLoad.FileResult.Group.Label=\u7ed3\u679c\u6587\u4ef6\u540d
-ActionMysqlBulkLoad.Filetype.All=\u5168\u90e8\u6587\u4ef6
-ActionMysqlBulkLoad.LocalInfile.Label=\u672c\u5730:
-ActionMysqlBulkLoad.ProrityValue.Label=\u5c5e\u6027:
-ActionMysqlBulkLoad.Lineterminated.Label=\u5b57\u6bb5\u5206\u9694\u7b26:
-ActionMysqlBulkLoad.Schemaname.Label=\u76ee\u6807\u6a21\u5f0f:
-ActionMysqlBulkLoad.Schemaname.Tooltip=\u6307\u5b9a\u76ee\u6807\u6a21\u5f0f\u540d\u79f0
-ActionMysqlBulkLoad.Listattribut.Tooltip=\u5217\u51fa\u5728\u6570\u636e\u6587\u4ef6\u4e2d\u5b9a\u4e49\u7684\u8868\u7684\u5c5e\u6027\u540d\uff0c\u7528\u9017\u53f7\u9694\u5f00\u3002\u5982\u679c\u6ca1\u6709\u6307\u5b9a\uff0c\u5219\u7f6e\u4e3anull
-ActionMysqlBulkLoad.Name.Default=MySQL\u6279\u91cf\u52a0\u8f7d
-ActionMysqlBulkLoad.SelectColumns.Title=\u9009\u62e9\u5217
-ActionMysqlBulkLoad.Replacedata.Tooltip=\u9009\u4e2d\u7684\u6b64\u9009\u9879\u8868\u793a\u5982\u679c\u6709\u91cd\u590d\u7684\u6570\u636e\uff0c\u65e7\u7684\u6570\u636e\u5c06\u88ab\u5220\u9664
-ActionMysqlBulkLoad.UnexpectedError.Label=\u672a\u77e5\u9519\u8bef
-ActionMysqlBulkLoad.Filename.Label=\u6e90\u6587\u4ef6\u540d:
-ActionMysqlBulkLoad.Nodatabase.Label=\u6ca1\u6709\u5b9a\u4e49\u6570\u636e\u5e93\u8fde\u63a5
+#
+ActionMysqlBulkLoad.AddFileToResult.Label=\u5C06\u6587\u4EF6\u6DFB\u52A0\u7ED3\u679C\u6587\u4EF6\u4E2D
+ActionMysqlBulkLoad.AddFileToResult.Tooltip=\u9009\u4E2D\u6B64\u9009\u9879\u4F1A\u5C06\u8F93\u51FA\u6587\u4EF6\u6DFB\u52A0\u5230\u7ED3\u679C\u6587\u4EF6\u4E2D, \u4EE5\u4FBF\u4E0B\u6E38\u901A\u9053\u4F7F\u7528. \u4F8B\u5982\u5C06\u6587\u4EF6\u4F5C\u4E3A\u90AE\u4EF6\u7684\u9644\u4EF6
+ActionMysqlBulkLoad.ConProrityValue.Label=\u5E76\u53D1
+ActionMysqlBulkLoad.ConnectionError2.DialogMessage=\u8BF7\u5148\u9009\u62E9\u4E00\u4E2A\u53EF\u7528\u7684\u6570\u636E\u5E93\u8FDE\u63A5
+ActionMysqlBulkLoad.Description=\u6279\u91CF\u628A\u6570\u636E\u4ECE\u4E00\u4E2A\u6587\u4EF6\u5BFC\u5165\u5230\u4E00\u4E2AMysql\u6570\u636E\u8868
+ActionMysqlBulkLoad.Enclosed.Label=\u5B57\u7B26\u5C01\u95ED\u7B26
+ActionMysqlBulkLoad.Escaped.Label=\u5B57\u6BB5\u9003\u9038\u7B26
+ActionMysqlBulkLoad.Escaped.Tooltip=\u5982\u679C\u5B57\u6BB5\u9003\u9038\u7B26\u4E0D\u4E3A\u7A7A, \u5219\u90A3\u4E2A\u5B57\u7B26\u4F1A\u88AB\u5FFD\u7565, \u4F46\u662F\u5176\u540E\u7684\u6240\u6709\u5B57\u7B26\u4ECD\u4F1A\u662F\u8BE5\u5B57\u6BB5\u503C\u7684\u4E00\u90E8\u5206
+ActionMysqlBulkLoad.FileResult.Group.Label=\u7ED3\u679C\u6587\u4EF6\u540D
+ActionMysqlBulkLoad.Filename.Label=\u6E90\u6587\u4EF6\u540D\:
+ActionMysqlBulkLoad.Filetype.All=\u5168\u90E8\u6587\u4EF6
+ActionMysqlBulkLoad.Filetype.Text=\u6587\u672C\u6587\u4EF6
+ActionMysqlBulkLoad.Ignorelines.Label=\u5FFD\u7565\u524D...\u884C
+ActionMysqlBulkLoad.Linestarted.Label=\u5F00\u59CB\u884C
+ActionMysqlBulkLoad.Lineterminated.Label=\u5B57\u6BB5\u5206\u9694\u7B26\:
+ActionMysqlBulkLoad.Listattribut.Label=\u5B57\u6BB5\:
+ActionMysqlBulkLoad.Listattribut.Tooltip=\u5217\u51FA\u5728\u6570\u636E\u6587\u4EF6\u4E2D\u5B9A\u4E49\u7684\u8868\u7684\u5C5E\u6027\u540D, \u7528\u9017\u53F7\u9694\u5F00. \u5982\u679C\u6CA1\u6709\u6307\u5B9A, \u5219\u7F6E\u4E3Anull
+ActionMysqlBulkLoad.LocalInfile.Label=\u672C\u5730\:
+ActionMysqlBulkLoad.LocalInfile.Tooltip=\u5982\u679C\u6B64\u9009\u9879\u9009\u4E2D, \u5219\u6587\u4EF6\u5728\u5BA2\u6237\u7AEF\u672C\u5730\u88AB\u8BFB\u53D6, \u7136\u540E\u53D1\u9001\u5230\u670D\u52A1\u7AEF. \r\n\u5982\u679C\u6CA1\u6709\u9009\u4E2D\u6B64\u9009\u9879, \u5219\u6587\u4EF6\u5FC5\u987B\u5B58\u5728\u4E8E\u670D\u52A1\u5668\u4E0A\u5E76\u4E14\u76F4\u63A5\u88AB\u670D\u52A1\u5668\u8BFB\u53D6
+ActionMysqlBulkLoad.LowProrityValue.Label=\u4F4E\u4F18\u5148\u7EA7
+ActionMysqlBulkLoad.Name=MySQL \u6279\u91CF\u52A0\u8F7D
+ActionMysqlBulkLoad.Name.Default=MySQL\u6279\u91CF\u52A0\u8F7D
+ActionMysqlBulkLoad.Name.Label=Action \u540D\u79F0\:
+ActionMysqlBulkLoad.Nodatabase.Label=\u6CA1\u6709\u5B9A\u4E49\u6570\u636E\u5E93\u8FDE\u63A5
+ActionMysqlBulkLoad.Nofilename.Label=\u6CA1\u6709\u6307\u5B9A\u6587\u4EF6\u540D
+ActionMysqlBulkLoad.NorProrityValue.Label=\u666E\u901A
+ActionMysqlBulkLoad.ProrityValue.Label=\u5C5E\u6027\:
+ActionMysqlBulkLoad.Replacedata.Label=\u66FF\u6362\u6570\u636E
+ActionMysqlBulkLoad.Replacedata.Tooltip=\u9009\u4E2D\u7684\u6B64\u9009\u9879\u8868\u793A\u5982\u679C\u6709\u91CD\u590D\u7684\u6570\u636E, \u65E7\u7684\u6570\u636E\u5C06\u88AB\u5220\u9664
+ActionMysqlBulkLoad.Schemaname.Label=\u76EE\u6807\u6A21\u5F0F\:
+ActionMysqlBulkLoad.Schemaname.Tooltip=\u6307\u5B9A\u76EE\u6807\u6A21\u5F0F\u540D\u79F0
+ActionMysqlBulkLoad.SelectColumns.Message=\u6839\u636E\u6570\u636E\u6587\u4EF6\u9009\u62E9\u8981\u5BFC\u5165\u7684\u5217\:
+ActionMysqlBulkLoad.SelectColumns.Title=\u9009\u62E9\u5217
+ActionMysqlBulkLoad.Separator.Label=\u5B57\u6BB5\u5206\u9694\u7B26\:
+ActionMysqlBulkLoad.Tablename.Label=\u76EE\u6807\u8868\u540D\:
+ActionMysqlBulkLoad.Title=MySQL\u6279\u91CF\u52A0\u8F7D
+ActionMysqlBulkLoad.UnexpectedError.Label=\u672A\u77E5\u9519\u8BEF
+ActionMysqlBulkLoad.keyword=mysql,bulk,load
diff --git a/plugins/actions/pgpfiles/src/main/resources/org/apache/hop/workflow/actions/pgpdecryptfiles/messages/messages_zh_CN.properties b/plugins/actions/pgpfiles/src/main/resources/org/apache/hop/workflow/actions/pgpdecryptfiles/messages/messages_zh_CN.properties
index 1126bb6..1f4a0ce 100644
--- a/plugins/actions/pgpfiles/src/main/resources/org/apache/hop/workflow/actions/pgpdecryptfiles/messages/messages_zh_CN.properties
+++ b/plugins/actions/pgpfiles/src/main/resources/org/apache/hop/workflow/actions/pgpdecryptfiles/messages/messages_zh_CN.properties
@@ -16,91 +16,123 @@
 # limitations under the License.
 #
 #
-#
-ActionPGPDecryptFiles.Description=Decrypt files encrypted with PGP (Pretty Good Privacy).\nThis action need GnuPG to work properly.
-ActionPGPDecryptFiles.Name=\u7528PGP\u89e3\u5bc6\u6587\u4ef6
-ActionPGPDecryptFiles.AddMovedTime.Label=\u6dfb\u52a0\u65f6\u95f4
-ActionPGPDecryptFiles.Overwrite_Filename_IffMovedFileExists.Label=\u8986\u76d6\u6587\u4ef6
-ActionPGPDecryptFiles.AddMovedDate.Label=\u6dfb\u52a0\u65e5\u671f
-ActionPGPDecryptFiles.SourceFileFolder.Label=\u6e90\u6587\u4ef6/\u6587\u4ef6\u5939
-ActionPGPDecryptFiles.DestinationFileFolder.Label=\u76ee\u6807\u6587\u4ef6/\u6587\u4ef6\u5939
-ActionPGPDecryptFiles.AddTime.Tooltip=\u6dfb\u52a0\u65f6\u95f4\u5230\u6587\u4ef6\u540d
-ActionPGPDecryptFiles.SourceFileFolder.Tooltip=\u8f93\u5165\u8981\u79fb\u52a8\u7684\u6587\u4ef6\u6216\u8005\u6587\u4ef6\u5939\u3002\u5982\u679c\u662f\u6587\u4ef6\u5939\uff0c\u5fc5\u8981\u65f6\u9009\u4e2d\u9009\u9879\u201c\u5305\u542b\u5b50\u6587\u4ef6\u5939\u201d\!
-ActionPGPDecryptFiles.SuccessWhenAtLeat.Label=\u5f53\u89e3\u5bc6\u6587\u4ef6\u6570\u4e0d\u5c11\u4e8e
-ActionPGPDecryptFiles.FilenameDelete.Button=&\u5220\u9664
-ActionPGPDecryptFiles.FilenameEdit.Tooltip=\u7f16\u8f91\u9009\u4e2d\u7684\u6587\u4ef6
-ActionPGPDecryptFiles.Fields.SourceFileFolder.Label=\u6e90\u6587\u4ef6/\u6587\u4ef6\u5939
-ActionPGPDecryptFiles.Settings.Label=\u8bbe\u7f6e
-ActionPGPDecryptFiles.FilenameEdit.Button=&\u7f16\u8f91
-ActionPGPDecryptFiles.SuccessWhenAllWorksFine.Label=\u4e00\u5207\u5de5\u4f5c\u6b63\u5e38
-ActionPGPDecryptFiles.Overwrite_File_IfFileExists.Label=\u8986\u76d6\u76ee\u6807\u6587\u4ef6
-ActionPGPDecryptFiles.Fields.DestinationFileFolder.Tooltip=\u8f93\u5165\u76ee\u6807\u6587\u4ef6\u5939\uff0c\u5982\u679c\u4f60\u9009\u62e9\u4e00\u4e2a\u6e90\u6587\u4ef6\uff0c\u4f60\u5c31\u53ef\u4ee5\u5b9a\u4e49\u4e00\u4e2a\u76ee\u6807\u6587\u4ef6
-ActionPGPDecryptFiles.AddMovedTime.Tooltip=\u6dfb\u52a0\u65f6\u95f4
-ActionPGPDecryptFiles.DoNotKeepFolderStructure.Tooltip=\u5982\u679c\u4f60\u4e0d\u60f3\u4fdd\u6301\u76ee\u6807\u6587\u4ef6\u5939\u7684\u7ed3\u6784 \u5e76 \u5728\u76ee\u6807\u6587\u4ef6\u5939\u4e2d\u521b\u5efa\u89e3\u5bc6\u6587\u4ef6\uff0c\u8bf7\u9009\u4e2d\u6b64\u9879
-ActionPGPDecryptFiles.SpecifyFormat.Label=\u6307\u5b9a\u65e5\u671f\u65f6\u95f4\u683c\u5f0f
-ActionPGPDecryptFiles.Fields.DestinationFileFolder.Label=\u76ee\u6807\u6587\u4ef6/\u6587\u4ef6\u5939
-ActionPGPDecryptFiles.Previous.Label=\u590d\u5236\u4e0a\u4e00\u6b65\u7ed3\u679c\u4f5c\u4e3a\u53c2\u6570
-ActionPGPDecryptFiles.MovedDateTimeFormat.Label=\u65e5\u671f\u683c\u5f0f
-ActionPGPDecryptFiles.AddFileToResult.Tooltip=\u6dfb\u52a0\u76ee\u6807\u6587\u4ef6\u5230\u7ed3\u679c\u6587\u4ef6\uff0c\u8fd9\u6837\u53ef\u4ee5\u5728\u540e\u9762\u7684\u6b65\u9aa4\u4e2d\u4f7f\u7528\u8fd9\u4e9b\u6587\u4ef6\uff0c\u4f8b\u5982\u4f5c\u4e3a\u90ae\u4ef6\u9644\u4ef6
-ActionPGPDecryptFiles.AddMovedDateBeforeExtension.Tooltip=\u5728\u6269\u5c55\u540d\u524d\u6dfb\u52a0\u65e5\u671f
-ActionPGPDecryptFiles.Tab.General.Label=\u4e00\u822c
-ActionPGPDecryptFiles.Unique_Name_IfFileExists.Label=\u4f7f\u7528\u552f\u4e00\u540d\u79f0\u521b\u5efa\u6587\u4ef6
-ActionPGPDecryptFiles.BrowseFiles.Label=\u6587\u4ef6
-ActionPGPDecryptFiles.AddFileToResult.Label=\u6dfb\u52a0\u6587\u4ef6\u5230\u7ed3\u679c\u6587\u4ef6\u540d
-ActionPGPDecryptFiles.DestinationIsAFile.Tooltip=Apache Hop\u4f1a\u5c06\u76ee\u6807\u770b\u6210\u4e00\u4e2a\u6587\u4ef6
-ActionPGPDecryptFiles.GpgExe.Tooltip=\u6307\u5b9a GPG \u6587\u4ef6\u8def\u5f84
-ActionPGPDecryptFiles.Wildcard.Label=\u901a\u914d\u7b26
-ActionPGPDecryptFiles.IncludeSubfolders.Tooltip=\u9009\u4e2d\u6b64\u9009\u9879\u8868\u793a\u5728\u5904\u7406\u4e00\u4e2a\u6587\u4ef6\u5939\u65f6\u4f1a\u540c\u65f6\u5904\u7406\u8be5\u6587\u4ef6\u5939\u4e0b\u7684\u6240\u6709\u5b50\u6587\u4ef6\u5939
-ActionPGPDecryptFiles.DestinationFileFolder.Tooltip=\u5982\u679c\u4f60\u9009\u62e9\u4e00\u4e2a\u6587\u4ef6\u505a\u4e3a\u6e90\uff0c\u4f60\u4e5f\u53ef\u4ee5\u9876\u4e00\u4e2a\u6587\u4ef6\u4f5c\u4e3a\u76ee\u6807
-ActionPGPDecryptFiles.Fields.Wildcard.Tooltip=\u6307\u5b9a\u7528\u6765\u5339\u914d\u6587\u4ef6\u7684\u901a\u914d\u7b26
-ActionPGPDecryptFiles.Fields.Wildcard.Label=\u901a\u914d\u7b26
-ActionPGPDecryptFiles.GpgExe.Label=GPG\u6587\u4ef6\u8def\u5f84
-ActionPGPDecryptFiles.AddTime.Label=\u6dfb\u52a0\u65f6\u95f4\u5230\u6587\u4ef6\u540d
-ActionPGPDecryptFiles.DateTimeFormat.Label=\u65e5\u671f\u65f6\u95f4\u683c\u5f0f
-ActionPGPDecryptFiles.AddDateBeforeExtension.Label=\u5728\u6269\u5c55\u540d\u586b\u6dfb\u52a0\u65e5\u671f
-ActionPGPDecryptFiles.IfFileExists.Label=\u5982\u679c\u76ee\u6807\u6587\u4ef6\u5df2\u5b58\u5728
-ActionPGPDecryptFiles.SuccessCondition.Label=\u6210\u529f\u6761\u4ef6
-ActionPGPDecryptFiles.AddDate.Label=\u6dfb\u52a0\u65e5\u671f\u5230\u6587\u4ef6\u540d
-ActionPGPDecryptFiles.Do_Nothing_IfMovedFileExists.Label=\u4ec0\u4e48\u4e5f\u4e0d\u505a
-ActionPGPDecryptFiles.CreateDestinationFolder.Label=\u521b\u5efa\u76ee\u6807\u6587\u4ef6\u5939
-ActionPGPDecryptFiles.Delete_Source_File_IfFileExists.Label=\u5220\u9664\u6e90\u6587\u4ef6
-ActionPGPDecryptFiles.FileResult.Group.Label=\u7ed3\u679c\u6587\u4ef6\u540d
-ActionPGPDecryptFiles.FilenameAdd.Button=&\u6dfb\u52a0
-ActionPGPDecryptFiles.CreateDestinationFolder.Tooltip=\u5fc5\u8981\u65f6\u521b\u5efa\u76ee\u6807\u6587\u4ef6\u5939\u3002\u5982\u679c\u76ee\u6807\u662f\u4e00\u4e2a\u6587\u4ef6\uff0c\u5219\u5b83\u7684\u7236\u6587\u4ef6\u5939\u4e5f\u4f1a\u88ab\u521b\u5efa
-ActionPGPDecryptFiles.DestinationIsAFile.Label=\u76ee\u6807\u662f\u4e00\u4e2a\u6587\u4ef6
-ActionPGPDecryptFiles.SpecifyMoveFormat.Tooltip=\u6307\u5b9a\u683c\u5f0f
-ActionPGPDecryptFiles.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0\uff1a
-ActionPGPDecryptFiles.NrErrorsLessThan.Tooltip=\u4e0a\u4e00\u9009\u9879\u4e2d\u7684\u6761\u4ef6\u503c
-ActionPGPDecryptFiles.Name.Default=\u79fb\u52a8\u6587\u4ef6
-ActionPGPDecryptFiles.SuccessOn.Group.Label=\u6210\u529f\u6761\u4ef6
-ActionPGPDecryptFiles.SpecifyMoveFormat.Label=\u6307\u5b9a\u683c\u5f0f
-ActionPGPDecryptFiles.IncludeSubfolders.Label=\u5305\u542b\u5b50\u6587\u4ef6\u5939
-ActionPGPDecryptFiles.Do_Nothing_IfFileExists.Label=\u4ec0\u4e48\u90fd\u4e0d\u505a
-ActionPGPDecryptFiles.FilenameDelete.Tooltip=\u5220\u9664\u9009\u4e2d\u7684\u6587\u4ef6
-ActionPGPDecryptFiles.Fields.PassPhrase.Tooltip=\u5bc6\u94a5
-ActionPGPDecryptFiles.AddDateBeforeExtension.Tooltip=\u9009\u4e2d\u6b64\u9009\u9879\uff0cPDI\u4f1a\u6dfb\u52a0\u65e5\u671f\u5230\u6587\u4ef6\u6269\u5c55\u540d\u524d
-ActionPGPDecryptFiles.NrErrorsLessThan.Label=\u6570\u503c
-ActionPGPDecryptFiles.SuccessWhenErrorsLessThan.Label=\u5f53\u9519\u8bef\u6570\u4e0d\u591a\u4e8e
-ActionPGPDecryptFiles.IfMovedFileExists.Label=\u5982\u679c\u6587\u4ef6\u5728\u76ee\u6807\u6587\u4ef6\u5939\u4e2d\u5df2\u5b58\u5728
-ActionPGPDecryptFiles.GroupMoveToGroup.Label=\u79fb\u52a8\u5230\u6587\u4ef6\u5939
-ActionPGPDecryptFiles.Tab.Advanced.Label=\u9ad8\u7ea7
-ActionPGPDecryptFiles.Fields.SourceFileFolder.Tooltip=\u8981\u79fb\u52a8\u7684\u6587\u4ef6\u6216\u8005\u6587\u4ef6\u5939\u3002\u5982\u679c\u8f93\u5165\u7684\u662f\u6587\u4ef6\uff0c\u5219\u53ea\u6709\u5f53\u201c\u5305\u542b\u5b50\u6587\u4ef6\u5939\u201d\u9009\u9879\u9009\u4e2d\u65f6\uff0c\u4f5c\u4e1a\u9879\u624d\u4f1a\u5904\u7406\u8be5\u6587\u4ef6\u5939
-ActionPGPDecryptFiles.BrowseFolders.Label=\u6587\u4ef6\u5939
-ActionPGPDecryptFiles.AddDate.Tooltip=\u6dfb\u52a0\u65e5\u671f\u5230\u6587\u4ef6\u540d
-ActionPGPDecryptFiles.Move_To_Folder_IfFileExists.Label=\u79fb\u52a8\u6e90\u6587\u4ef6\u5230\u6587\u4ef6\u5939
-ActionPGPDecryptFiles.Fields.Label=\u6587\u4ef6/\u6587\u4ef6\u5939
-ActionPGPDecryptFiles.Filetype.All=\u5168\u90e8\u6587\u4ef6
-ActionPGPDecryptFiles.DestinationFolder.Label=\u76ee\u6807\u6587\u4ef6\u5939
-ActionPGPDecryptFiles.GroupDestinationFile.Label=\u76ee\u6807\u6587\u4ef6
-ActionPGPDecryptFiles.UniqueName_IfMovedFileExists.Label=\u552f\u4e00\u540d\u79f0
-ActionPGPDecryptFiles.DestinationFileTab.Label=\u76ee\u6807\u6587\u4ef6
-ActionPGPDecryptFiles.DoNotKeepFolderStructure.Label=\u4e0d\u4fdd\u6301\u6587\u4ef6\u5939\u7684\u7ed3\u6784
-ActionPGPDecryptFiles.CreateMoveToFolder.Tooltip=\u5fc5\u8981\u65f6\u521b\u5efa\u6587\u4ef6\u5939
-ActionPGPDecryptFiles.Fields.PassPhrase.Label=\u5bc6\u94a5
-ActionPGPDecryptFiles.Title=\u7528PGP\u89e3\u5bc6\u6587\u4ef6
-ActionPGPDecryptFiles.SpecifyFormat.Tooltip=\u6307\u5b9a\u65e5\u671f\u65f6\u95f4\u683c\u5f0f
-ActionPGPDecryptFiles.AddMovedDateBeforeExtension.Label=\u5728\u6269\u5c55\u540d\u524d\u6dfb\u52a0\u65e5\u671f
-ActionPGPDecryptFiles.AddMovedDate.Tooltip=\u6dfb\u52a0\u65e5\u671f
-ActionPGPDecryptFiles.Wildcard.Tooltip=\u6307\u5b9a\u5339\u914d\u6587\u4ef6\u7684\u901a\u914d\u7b26
-ActionPGPDecryptFiles.Previous.Tooltip=\u9009\u4e2d\u6b64\u9009\u9879\u8868\u793a\u590d\u5236\u4e0a\u4e00\u4f5c\u4e1a\u9879\u7684\u7ed3\u679c\u4f5c\u4e3a\u8fd9\u4e00\u6b65\u7684\u53c2\u6570\u3002\r\n\u6ce8\u610f\uff0c\u53c2\u6570\u7684\u987a\u5e8f\u5fc5\u987b\u76f8\u540c\!\r\n\u4f8b\u5982\uff1a\uff081\uff09\u6e90\u6587\u4ef6\u5939/\u6587\u4ef6\r\n\t\uff082\uff09\u901a\u914d\u7b26\r\n\t\uff083\uff09\u5bc6\u94a5\r\n\t\uff084\uff09\u76ee\u6807\u6587\u4ef6/\u6587\u4ef6\u5939
-ActionPGPDecryptFiles.CreateMoveToFolder.Label=\u521b\u5efa\u6587\u4ef6\u5939
+ActionPGPDecryptFiles.AddDate.Label=\u6DFB\u52A0\u65E5\u671F\u5230\u6587\u4EF6\u540D
+ActionPGPDecryptFiles.AddDate.Tooltip=\u6DFB\u52A0\u65E5\u671F\u5230\u6587\u4EF6\u540D
+ActionPGPDecryptFiles.AddDateBeforeExtension.Label=\u5728\u6269\u5C55\u540D\u586B\u6DFB\u52A0\u65E5\u671F
+ActionPGPDecryptFiles.AddDateBeforeExtension.Tooltip=\u9009\u4E2D\u6B64\u9009\u9879, PDI\u4F1A\u6DFB\u52A0\u65E5\u671F\u5230\u6587\u4EF6\u6269\u5C55\u540D\u524D
+ActionPGPDecryptFiles.AddFileToResult.Label=\u6DFB\u52A0\u6587\u4EF6\u5230\u7ED3\u679C\u6587\u4EF6\u540D
+ActionPGPDecryptFiles.AddFileToResult.Tooltip=\u6DFB\u52A0\u76EE\u6807\u6587\u4EF6\u5230\u7ED3\u679C\u6587\u4EF6, \u8FD9\u6837\u53EF\u4EE5\u5728\u4E0B\u6E38\u901A\u9053\u4E2D\u4F7F\u7528\u8FD9\u4E9B\u6587\u4EF6, \u4F8B\u5982\u4F5C\u4E3A\u90AE\u4EF6\u9644\u4EF6
+ActionPGPDecryptFiles.AddMovedDate.Label=\u6DFB\u52A0\u65E5\u671F
+ActionPGPDecryptFiles.AddMovedDate.Tooltip=\u6DFB\u52A0\u65E5\u671F
+ActionPGPDecryptFiles.AddMovedDateBeforeExtension.Label=\u5728\u6269\u5C55\u540D\u524D\u6DFB\u52A0\u65E5\u671F
+ActionPGPDecryptFiles.AddMovedDateBeforeExtension.Tooltip=\u5728\u6269\u5C55\u540D\u524D\u6DFB\u52A0\u65E5\u671F
+ActionPGPDecryptFiles.AddMovedTime.Label=\u6DFB\u52A0\u65F6\u95F4
+ActionPGPDecryptFiles.AddMovedTime.Tooltip=\u6DFB\u52A0\u65F6\u95F4
+ActionPGPDecryptFiles.AddTime.Label=\u6DFB\u52A0\u65F6\u95F4\u5230\u6587\u4EF6\u540D
+ActionPGPDecryptFiles.AddTime.Tooltip=\u6DFB\u52A0\u65F6\u95F4\u5230\u6587\u4EF6\u540D
+ActionPGPDecryptFiles.BrowseFiles.Label=\u6587\u4EF6
+ActionPGPDecryptFiles.BrowseFolders.Label=\u6587\u4EF6\u5939
+ActionPGPDecryptFiles.CreateDestinationFolder.Label=\u521B\u5EFA\u76EE\u6807\u6587\u4EF6\u5939
+ActionPGPDecryptFiles.CreateDestinationFolder.Tooltip=\u5FC5\u8981\u65F6\u521B\u5EFA\u76EE\u6807\u6587\u4EF6\u5939. \u5982\u679C\u76EE\u6807\u662F\u4E00\u4E2A\u6587\u4EF6, \u5219\u5B83\u7684\u7236\u6587\u4EF6\u5939\u4E5F\u4F1A\u88AB\u521B\u5EFA
+ActionPGPDecryptFiles.CreateMoveToFolder.Label=\u521B\u5EFA\u6587\u4EF6\u5939
+ActionPGPDecryptFiles.CreateMoveToFolder.Tooltip=\u5FC5\u8981\u65F6\u521B\u5EFA\u6587\u4EF6\u5939
+ActionPGPDecryptFiles.DateTimeFormat.Label=\u65E5\u671F\u65F6\u95F4\u683C\u5F0F
+ActionPGPDecryptFiles.Delete_Source_File_IfFileExists.Label=\u5220\u9664\u6E90\u6587\u4EF6
+ActionPGPDecryptFiles.Description=\u89E3\u5BC6\u4F7F\u7528 PGP \u52A0\u5BC6\u7684\u6587\u4EF6(\u79C1\u5BC6\u6027\u8F83\u597D).\n\u8BE5 Action \u4F9D\u8D56\u4E8E GnuPG \u624D\u80FD\u6B63\u5E38\u4F7F\u7528.
+ActionPGPDecryptFiles.DestinationFileFolder.Label=\u76EE\u6807\u6587\u4EF6/\u6587\u4EF6\u5939
+ActionPGPDecryptFiles.DestinationFileFolder.Tooltip=\u5982\u679C\u4F60\u9009\u62E9\u4E00\u4E2A\u6587\u4EF6\u505A\u4E3A\u6E90, \u4F60\u4E5F\u53EF\u4EE5\u9876\u4E00\u4E2A\u6587\u4EF6\u4F5C\u4E3A\u76EE\u6807
+ActionPGPDecryptFiles.DestinationFileTab.Label=\u76EE\u6807\u6587\u4EF6
+ActionPGPDecryptFiles.DestinationFolder.Label=\u76EE\u6807\u6587\u4EF6\u5939
+ActionPGPDecryptFiles.DestinationIsAFile.Label=\u76EE\u6807\u662F\u4E00\u4E2A\u6587\u4EF6
+ActionPGPDecryptFiles.DestinationIsAFile.Tooltip=Apache Hop\u4F1A\u5C06\u76EE\u6807\u770B\u6210\u4E00\u4E2A\u6587\u4EF6
+ActionPGPDecryptFiles.DoNotKeepFolderStructure.Label=\u4E0D\u4FDD\u6301\u6587\u4EF6\u5939\u7684\u7ED3\u6784
+ActionPGPDecryptFiles.DoNotKeepFolderStructure.Tooltip=\u5982\u679C\u4F60\u4E0D\u60F3\u4FDD\u6301\u76EE\u6807\u6587\u4EF6\u5939\u7684\u7ED3\u6784 \u5E76 \u5728\u76EE\u6807\u6587\u4EF6\u5939\u4E2D\u521B\u5EFA\u89E3\u5BC6\u6587\u4EF6, \u8BF7\u9009\u4E2D\u6B64\u9879
+ActionPGPDecryptFiles.Do_Nothing_IfFileExists.Label=\u4EC0\u4E48\u90FD\u4E0D\u505A
+ActionPGPDecryptFiles.Do_Nothing_IfMovedFileExists.Label=\u4EC0\u4E48\u4E5F\u4E0D\u505A
+ActionPGPDecryptFiles.Error.AddingToFilenameResult=\u6DFB\u52A0\u6587\u4EF6 [{0}] \u5230\u8FD4\u56DE\u6587\u4EF6\u5217\u8868\u65F6\u51FA\u9519, \u5F02\u5E38\: {1}
+ActionPGPDecryptFiles.Error.DestinationFolderNotFound=\u76EE\u6807\u76EE\u5F55\u4E0D\u5B58\u5728\!
+ActionPGPDecryptFiles.Error.Exception.MoveProcess=\u65E0\u6CD5\u79FB\u52A8\u6587\u4EF6 [{0}] \u5230 [{1}], \u5F02\u5E38\: {2}
+ActionPGPDecryptFiles.Error.Exception.MoveProcessError=\u79FB\u52A8\u6587\u4EF6 [{0}] \u5230 [{1}] \u65F6\u51FA\u9519\: {2}
+ActionPGPDecryptFiles.Error.Exception.UnableLoadXML=\u65E0\u6CD5\u4ECE XML \u8282\u70B9\u52A0\u8F7D "PGP \u89E3\u5BC6" \u7C7B\u578B\u7684 Action
+ActionPGPDecryptFiles.Error.GettingFilename=\u8BBF\u95EE\u6587\u4EF6 [{0}] \u65F6\u51FA\u9519, \u5F02\u5E38\: {1}
+ActionPGPDecryptFiles.Error.SourceFileNotExists=\u6587\u4EF6 [{0}] \u4E0D\u5B58\u5728\!
+ActionPGPDecryptFiles.Error.SuccessConditionbroken=\u7EC8\u6B62\u6210\u529F\u6761\u4EF6\u68C0\u6D4B. \u51FA\u9519 {0} \u4E2A\u9519\u8BEF
+ActionPGPDecryptFiles.Fail_IfFileExists.Label=\u5931\u8D25
+ActionPGPDecryptFiles.Fail_IfMovedFileExists.Label=\u5931\u8D25
+ActionPGPDecryptFiles.Fields.DestinationFileFolder.Label=\u76EE\u6807\u6587\u4EF6/\u6587\u4EF6\u5939
+ActionPGPDecryptFiles.Fields.DestinationFileFolder.Tooltip=\u8F93\u5165\u76EE\u6807\u6587\u4EF6\u5939, \u5982\u679C\u4F60\u9009\u62E9\u4E00\u4E2A\u6E90\u6587\u4EF6, \u4F60\u5C31\u53EF\u4EE5\u5B9A\u4E49\u4E00\u4E2A\u76EE\u6807\u6587\u4EF6
+ActionPGPDecryptFiles.Fields.Label=\u6587\u4EF6/\u6587\u4EF6\u5939
+ActionPGPDecryptFiles.Fields.PassPhrase.Label=\u5BC6\u94A5
+ActionPGPDecryptFiles.Fields.PassPhrase.Tooltip=\u5BC6\u94A5
+ActionPGPDecryptFiles.Fields.SourceFileFolder.Label=\u6E90\u6587\u4EF6/\u6587\u4EF6\u5939
+ActionPGPDecryptFiles.Fields.SourceFileFolder.Tooltip=\u8981\u79FB\u52A8\u7684\u6587\u4EF6\u6216\u8005\u6587\u4EF6\u5939. \u5982\u679C\u8F93\u5165\u7684\u662F\u6587\u4EF6, \u5219\u53EA\u6709\u5F53\u201C\u5305\u542B\u5B50\u6587\u4EF6\u5939\u201D\u9009\u9879\u9009\u4E2D\u65F6, Action \u624D\u4F1A\u5904\u7406\u8BE5\u6587\u4EF6\u5939
+ActionPGPDecryptFiles.Fields.Wildcard.Label=\u901A\u914D\u7B26
+ActionPGPDecryptFiles.Fields.Wildcard.Tooltip=\u6307\u5B9A\u7528\u6765\u5339\u914D\u6587\u4EF6\u7684\u901A\u914D\u7B26
+ActionPGPDecryptFiles.FileResult.Group.Label=\u7ED3\u679C\u6587\u4EF6\u540D
+ActionPGPDecryptFiles.FilenameAdd.Button=\u6DFB\u52A0(&A)
+ActionPGPDecryptFiles.FilenameDelete.Button=\u5220\u9664(&D)
+ActionPGPDecryptFiles.FilenameDelete.Tooltip=\u5220\u9664\u9009\u4E2D\u7684\u6587\u4EF6
+ActionPGPDecryptFiles.FilenameEdit.Button=\u7F16\u8F91(&E)
+ActionPGPDecryptFiles.FilenameEdit.Tooltip=\u7F16\u8F91\u9009\u4E2D\u7684\u6587\u4EF6
+ActionPGPDecryptFiles.Filetype.All=\u5168\u90E8\u6587\u4EF6
+ActionPGPDecryptFiles.GpgExe.Label=GPG\u6587\u4EF6\u8DEF\u5F84
+ActionPGPDecryptFiles.GpgExe.Tooltip=\u6307\u5B9A GPG \u6587\u4EF6\u8DEF\u5F84
+ActionPGPDecryptFiles.GroupDestinationFile.Label=\u76EE\u6807\u6587\u4EF6
+ActionPGPDecryptFiles.GroupMoveToGroup.Label=\u79FB\u52A8\u5230\u6587\u4EF6\u5939
+ActionPGPDecryptFiles.IfFileExists.Label=\u5982\u679C\u76EE\u6807\u6587\u4EF6\u5DF2\u5B58\u5728
+ActionPGPDecryptFiles.IfMovedFileExists.Label=\u5982\u679C\u6587\u4EF6\u5728\u76EE\u6807\u6587\u4EF6\u5939\u4E2D\u5DF2\u5B58\u5728
+ActionPGPDecryptFiles.IncludeSubfolders.Label=\u5305\u542B\u5B50\u6587\u4EF6\u5939
+ActionPGPDecryptFiles.IncludeSubfolders.Tooltip=\u9009\u4E2D\u6B64\u9009\u9879\u8868\u793A\u5728\u5904\u7406\u4E00\u4E2A\u6587\u4EF6\u5939\u65F6\u4F1A\u540C\u65F6\u5904\u7406\u8BE5\u6587\u4EF6\u5939\u4E0B\u7684\u6240\u6709\u5B50\u6587\u4EF6\u5939
+ActionPGPDecryptFiles.Log.ArgFromPrevious.Found=\u4ECE\u524D\u7F6E\u901A\u9053\u7684\u8FD4\u56DE\u7ED3\u679C\u4E2D\u627E\u5230 {0} \u4E2A\u53C2\u6570
+ActionPGPDecryptFiles.Log.CanNotCreateParentFolder=\u65E0\u6CD5\u521B\u5EFA\u4E0A\u7EA7\u76EE\u5F55 {0}\!
+ActionPGPDecryptFiles.Log.CanNotMoveFolderToFile=\u65E0\u6CD5\u89E3\u5BC6\u76EE\u5F55\u5185\u5BB9 [{0}] \u5230\u6587\u4EF6 [{1}]
+ActionPGPDecryptFiles.Log.Error=\u89E3\u5BC6\u65F6\u51FA\u9519\: {0}
+ActionPGPDecryptFiles.Log.Error.FolderMissing=\u65E0\u6CD5\u627E\u5230\u76EE\u5F55 [{0}]\!
+ActionPGPDecryptFiles.Log.Error.GettingMoveToFolder=\u65E0\u6CD5\u8BBF\u95EE\u76EE\u5F55 [{0}]. \u5F02\u5E38\: {1}
+ActionPGPDecryptFiles.Log.Error.MoveToFolderMissing=\u7F3A\u5931\u76EE\u6807\u8DEF\u5F84
+ActionPGPDecryptFiles.Log.Error.NotFolder=\u975E\u76EE\u5F55 [{0}]\!
+ActionPGPDecryptFiles.Log.FetchFolder=\u904D\u5386\u76EE\u5F55 [{0}]
+ActionPGPDecryptFiles.Log.FileAddedToResultFilesName=\u6DFB\u52A0\u6587\u4EF6 [{0}] \u5230\u8FD4\u56DE\u6587\u4EF6\u5217\u8868
+ActionPGPDecryptFiles.Log.FileDecrypted=\u6587\u4EF6 [{0}] \u89E3\u5BC6\u5230 {1}
+ActionPGPDecryptFiles.Log.FileDeleted=\u5DF2\u5220\u9664\u6E90\u6587\u4EF6 [{0}]
+ActionPGPDecryptFiles.Log.FileExists=\u6587\u4EF6 [{0}] \u5B58\u5728\!
+ActionPGPDecryptFiles.Log.FileOverwrite=\u8986\u76D6\u6587\u4EF6 [{0}]
+ActionPGPDecryptFiles.Log.FolderNotExist=\u76EE\u5F55 {0} \u4E0D\u5B58\u5728\!
+ActionPGPDecryptFiles.Log.FolderWasCreated=\u5DF2\u521B\u5EFA\u7236\u76EE\u5F55 {0}
+ActionPGPDecryptFiles.Log.Forbidden=\u88AB\u62D2
+ActionPGPDecryptFiles.Log.IgnoringRow=\u5FFD\u7565\u65E0\u6548\u7A7A\u6570\u636E\u884C. \u6E90\u8DEF\u5F84\: [{0}], \u76EE\u6807\u8DEF\u5F84\: [{1}], \u5339\u914D\: [{2}]
+ActionPGPDecryptFiles.Log.IncludeSubFoldersOn=\u904D\u5386\u5B50\u76EE\u5F55...
+ActionPGPDecryptFiles.Log.Info.FilesInError=\u51FA\u9519\u6587\u4EF6\u603B\u6570\: {0}
+ActionPGPDecryptFiles.Log.Info.FilesInSuccess=\u6210\u529F\u5904\u7406\u6587\u4EF6\u6570\u91CF \: {0}
+ActionPGPDecryptFiles.Log.ProcessingRow=\u5904\u7406\u6570\u636E\u884C, \u6E90\u8DEF\u5F84\: [{0}], \u76EE\u6807\u8DEF\u5F84\: [{1}], \u5339\u914D\: [{2}]
+ActionPGPDecryptFiles.Move_To_Folder_IfFileExists.Label=\u79FB\u52A8\u6E90\u6587\u4EF6\u5230\u6587\u4EF6\u5939
+ActionPGPDecryptFiles.MovedDateTimeFormat.Label=\u65E5\u671F\u683C\u5F0F
+ActionPGPDecryptFiles.Name=PGP\u89E3\u5BC6
+ActionPGPDecryptFiles.Name.Default=\u79FB\u52A8\u6587\u4EF6
+ActionPGPDecryptFiles.Name.Label=Action \u540D\u79F0\:
+ActionPGPDecryptFiles.NrErrorsLessThan.Label=\u6570\u503C
+ActionPGPDecryptFiles.NrErrorsLessThan.Tooltip=\u4E0A\u4E00\u9009\u9879\u4E2D\u7684\u6761\u4EF6\u503C
+ActionPGPDecryptFiles.Overwrite_File_IfFileExists.Label=\u8986\u76D6\u76EE\u6807\u6587\u4EF6
+ActionPGPDecryptFiles.Overwrite_Filename_IffMovedFileExists.Label=\u8986\u76D6\u6587\u4EF6
+ActionPGPDecryptFiles.Previous.Label=\u590D\u5236\u4E0A\u4E00\u6B65\u7ED3\u679C\u4F5C\u4E3A\u53C2\u6570
+ActionPGPDecryptFiles.Previous.Tooltip=\u9009\u4E2D\u6B64\u9009\u9879\u8868\u793A\u590D\u5236\u4E0A\u4E00 Action \u7684\u7ED3\u679C\u4F5C\u4E3A\u8FD9\u4E00\u6B65\u7684\u53C2\u6570. \r\n\u6CE8\u610F, \u53C2\u6570\u7684\u987A\u5E8F\u5FC5\u987B\u76F8\u540C\!\r\n\u4F8B\u5982\uFF1A(1)\u6E90\u6587\u4EF6\u5939/\u6587\u4EF6\r\n\t(2)\u901A\u914D\u7B26\r\n\t(3)\u5BC6\u94A5\r\n\t(4)\u76EE\u6807\u6587\u4EF6/\u6587\u4EF6\u5939
+ActionPGPDecryptFiles.Settings.Label=\u8BBE\u7F6E
+ActionPGPDecryptFiles.SourceFileFolder.Label=\u6E90\u6587\u4EF6/\u6587\u4EF6\u5939
+ActionPGPDecryptFiles.SourceFileFolder.Tooltip=\u8F93\u5165\u8981\u79FB\u52A8\u7684\u6587\u4EF6\u6216\u8005\u6587\u4EF6\u5939. \u5982\u679C\u662F\u6587\u4EF6\u5939, \u5FC5\u8981\u65F6\u9009\u4E2D\u9009\u9879\u201C\u5305\u542B\u5B50\u6587\u4EF6\u5939\u201D\!
+ActionPGPDecryptFiles.SpecifyFormat.Label=\u6307\u5B9A\u65E5\u671F\u65F6\u95F4\u683C\u5F0F
+ActionPGPDecryptFiles.SpecifyFormat.Tooltip=\u6307\u5B9A\u65E5\u671F\u65F6\u95F4\u683C\u5F0F
+ActionPGPDecryptFiles.SpecifyMoveFormat.Label=\u6307\u5B9A\u683C\u5F0F
+ActionPGPDecryptFiles.SpecifyMoveFormat.Tooltip=\u6307\u5B9A\u683C\u5F0F
+ActionPGPDecryptFiles.SuccessCondition.Label=\u6210\u529F\u6761\u4EF6
+ActionPGPDecryptFiles.SuccessOn.Group.Label=\u6210\u529F\u6761\u4EF6
+ActionPGPDecryptFiles.SuccessWhenAllWorksFine.Label=\u4E00\u5207\u5DE5\u4F5C\u6B63\u5E38
+ActionPGPDecryptFiles.SuccessWhenAtLeat.Label=\u5F53\u89E3\u5BC6\u6587\u4EF6\u6570\u4E0D\u5C11\u4E8E
+ActionPGPDecryptFiles.SuccessWhenErrorsLessThan.Label=\u5F53\u9519\u8BEF\u6570\u4E0D\u591A\u4E8E
+ActionPGPDecryptFiles.Tab.Advanced.Label=\u9AD8\u7EA7
+ActionPGPDecryptFiles.Tab.General.Label=\u4E00\u822C
+ActionPGPDecryptFiles.Title=PGP\u89E3\u5BC6
+ActionPGPDecryptFiles.UniqueName_IfMovedFileExists.Label=\u552F\u4E00\u540D\u79F0
+ActionPGPDecryptFiles.Unique_Name_IfFileExists.Label=\u4F7F\u7528\u552F\u4E00\u540D\u79F0\u521B\u5EFA\u6587\u4EF6
+ActionPGPDecryptFiles.Wildcard.Label=\u901A\u914D\u7B26
+ActionPGPDecryptFiles.Wildcard.Tooltip=\u6307\u5B9A\u5339\u914D\u6587\u4EF6\u7684\u901A\u914D\u7B26
+ActionPGPDecryptFiles.keyword=PGP,decrypt,files
diff --git a/plugins/actions/pgpfiles/src/main/resources/org/apache/hop/workflow/actions/pgpencryptfiles/messages/messages_zh_CN.properties b/plugins/actions/pgpfiles/src/main/resources/org/apache/hop/workflow/actions/pgpencryptfiles/messages/messages_zh_CN.properties
index 2f5d31d..76cd2fc 100644
--- a/plugins/actions/pgpfiles/src/main/resources/org/apache/hop/workflow/actions/pgpencryptfiles/messages/messages_zh_CN.properties
+++ b/plugins/actions/pgpfiles/src/main/resources/org/apache/hop/workflow/actions/pgpencryptfiles/messages/messages_zh_CN.properties
@@ -16,95 +16,145 @@
 # limitations under the License.
 #
 #
-#
-ActionPGPEncryptFiles.Description=Encrypt files with PGP (Pretty Good Privacy).\nThis action need GnuPG to work properly.
-ActionPGPEncryptFiles.Name=\u7528PGP\u52a0\u5bc6\u6587\u4ef6
-ActionPGPEncryptFiles.AddMovedTime.Label=\u6dfb\u52a0\u65f6\u95f4
-ActionPGPEncryptFiles.Overwrite_Filename_IffMovedFileExists.Label=\u8986\u76d6\u6587\u4ef6
-ActionPGPEncryptFiles.AddMovedDate.Label=\u6dfb\u52a0\u65e5\u671f
-ActionPGPEncryptFiles.SourceFileFolder.Label=\u6e90\u6587\u4ef6/\u6587\u4ef6\u5939
-ActionPGPEncryptFiles.DestinationFileFolder.Label=\u76ee\u6807\u6587\u4ef6/\u6587\u4ef6\u5939
-ActionPGPEncryptFiles.AddTime.Tooltip=\u6dfb\u52a0\u65f6\u95f4\u5230\u6587\u4ef6\u540d
-ActionPGPEncryptFiles.SourceFileFolder.Tooltip=\u8f93\u5165\u8981\u79fb\u52a8\u7684\u6587\u4ef6\u6216\u8005\u6587\u4ef6\u5939\u3002\u5982\u679c\u662f\u6587\u4ef6\u5939\uff0c\u5fc5\u8981\u65f6\u9009\u4e2d\u9009\u9879\u201c\u5305\u542b\u5b50\u6587\u4ef6\u5939\u201d\!
-ActionPGPEncryptFiles.SuccessWhenAtLeat.Label=\u5f53\u52a0\u5bc6\u6587\u4ef6\u6570\u4e0d\u5c11\u4e8e
-ActionPGPEncryptFiles.FilenameDelete.Button=&\u5220\u9664
-ActionPGPEncryptFiles.FilenameEdit.Tooltip=\u7f16\u8f91\u9009\u4e2d\u7684\u6587\u4ef6
-ActionPGPEncryptFiles.Fields.SourceFileFolder.Label=\u6e90\u6587\u4ef6/\u6587\u4ef6\u5939
-ActionPGPEncryptFiles.Settings.Label=\u8bbe\u7f6e
-ActionPGPEncryptFiles.FilenameEdit.Button=&\u7f16\u8f91
-ActionPGPEncryptFiles.SuccessWhenAllWorksFine.Label=\u4e00\u5207\u5de5\u4f5c\u6b63\u5e38
-ActionPGPEncryptFiles.Overwrite_File_IfFileExists.Label=\u8986\u76d6\u76ee\u6807\u6587\u4ef6
-ActionPGPEncryptFiles.Fields.DestinationFileFolder.Tooltip=\u8f93\u5165\u76ee\u6807\u6587\u4ef6\u5939\uff0c\u5982\u679c\u4f60\u9009\u62e9\u4e00\u4e2a\u6e90\u6587\u4ef6\uff0c\u4f60\u5c31\u53ef\u4ee5\u5b9a\u4e49\u4e00\u4e2a\u76ee\u6807\u6587\u4ef6
-ActionPGPEncryptFiles.AddMovedTime.Tooltip=\u6dfb\u52a0\u65f6\u95f4
-ActionPGPEncryptFiles.DoNotKeepFolderStructure.Tooltip=\u5982\u679c\u4f60\u4e0d\u60f3\u4fdd\u6301\u76ee\u6807\u6587\u4ef6\u5939\u7684\u7ed3\u6784 \u5e76 \u5728\u76ee\u6807\u6587\u4ef6\u5939\u4e2d\u521b\u5efa\u89e3\u5bc6\u6587\u4ef6\uff0c\u8bf7\u9009\u4e2d\u6b64\u9879
-ActionPGPEncryptFiles.SpecifyFormat.Label=\u6307\u5b9a\u65e5\u671f\u65f6\u95f4\u683c\u5f0f
-ActionPGPEncryptFiles.Fields.DestinationFileFolder.Label=\u76ee\u6807\u6587\u4ef6/\u6587\u4ef6\u5939
-ActionPGPEncryptFiles.Previous.Label=\u590d\u5236\u4e0a\u4e00\u6b65\u7ed3\u679c\u4f5c\u4e3a\u53c2\u6570
-ActionPGPEncryptFiles.MovedDateTimeFormat.Label=\u65e5\u671f\u683c\u5f0f
-ActionPGPEncryptFiles.AddFileToResult.Tooltip=\u6dfb\u52a0\u76ee\u6807\u6587\u4ef6\u5230\u7ed3\u679c\u6587\u4ef6\uff0c\u8fd9\u6837\u53ef\u4ee5\u5728\u540e\u9762\u7684\u6b65\u9aa4\u4e2d\u4f7f\u7528\u8fd9\u4e9b\u6587\u4ef6\uff0c\u4f8b\u5982\u4f5c\u4e3a\u90ae\u4ef6\u9644\u4ef6
-ActionPGPEncryptFiles.AddMovedDateBeforeExtension.Tooltip=\u5728\u6269\u5c55\u540d\u524d\u6dfb\u52a0\u65e5\u671f
-ActionPGPEncryptFiles.Tab.General.Label=\u4e00\u822c
-ActionPGPEncryptFiles.Unique_Name_IfFileExists.Label=\u4f7f\u7528\u552f\u4e00\u540d\u79f0\u521b\u5efa\u6587\u4ef6
-ActionPGPEncryptFiles.BrowseFiles.Label=\u6587\u4ef6
-ActionPGPEncryptFiles.AddFileToResult.Label=\u6dfb\u52a0\u6587\u4ef6\u5230\u7ed3\u679c\u6587\u4ef6\u540d
-ActionPGPEncryptFiles.DestinationIsAFile.Tooltip=Apache Hop\u4f1a\u5c06\u76ee\u6807\u770b\u6210\u4e00\u4e2a\u6587\u4ef6
-ActionPGPEncryptFiles.GpgExe.Tooltip=\u6307\u5b9a GPG \u6587\u4ef6\u8def\u5f84
-ActionPGPEncryptFiles.Wildcard.Label=\u901a\u914d\u7b26
-ActionPGPEncryptFiles.IncludeSubfolders.Tooltip=\u9009\u4e2d\u6b64\u9009\u9879\u8868\u793a\u5728\u5904\u7406\u4e00\u4e2a\u6587\u4ef6\u5939\u65f6\u4f1a\u540c\u65f6\u5904\u7406\u8be5\u6587\u4ef6\u5939\u4e0b\u7684\u6240\u6709\u5b50\u6587\u4ef6\u5939
-ActionPGPEncryptFiles.DestinationFileFolder.Tooltip=\u5982\u679c\u4f60\u9009\u62e9\u4e00\u4e2a\u6587\u4ef6\u505a\u4e3a\u6e90\uff0c\u4f60\u4e5f\u53ef\u4ee5\u9876\u4e00\u4e2a\u6587\u4ef6\u4f5c\u4e3a\u76ee\u6807
-ActionPGPEncryptFiles.Fields.Wildcard.Tooltip=\u6307\u5b9a\u7528\u6765\u5339\u914d\u6587\u4ef6\u7684\u901a\u914d\u7b26
-ActionPGPEncryptFiles.Fields.Wildcard.Label=\u901a\u914d\u7b26
-ActionPGPEncryptFiles.GpgExe.Label=GPG\u6587\u4ef6\u8def\u5f84
-ActionPGPEncryptFiles.AddTime.Label=\u6dfb\u52a0\u65f6\u95f4\u5230\u6587\u4ef6\u540d
-ActionPGPEncryptFiles.DateTimeFormat.Label=\u65e5\u671f\u65f6\u95f4\u683c\u5f0f
-ActionPGPEncryptFiles.AddDateBeforeExtension.Label=\u5728\u6269\u5c55\u540d\u586b\u6dfb\u52a0\u65e5\u671f
-ActionPGPEncryptFiles.IfFileExists.Label=\u5982\u679c\u76ee\u6807\u6587\u4ef6\u5df2\u5b58\u5728
-ActionPGPEncryptFiles.SuccessCondition.Label=\u6210\u529f\u6761\u4ef6
-ActionPGPEncryptFiles.AddDate.Label=\u6dfb\u52a0\u65e5\u671f\u5230\u6587\u4ef6\u540d
-ActionPGPEncryptFiles.Do_Nothing_IfMovedFileExists.Label=\u4ec0\u4e48\u4e5f\u4e0d\u505a
-ActionPGPEncryptFiles.CreateDestinationFolder.Label=\u521b\u5efa\u76ee\u6807\u6587\u4ef6\u5939
-ActionPGPEncryptFiles.Delete_Source_File_IfFileExists.Label=\u5220\u9664\u6e90\u6587\u4ef6
-ActionPGPEncryptFiles.FileResult.Group.Label=\u7ed3\u679c\u6587\u4ef6\u540d
-ActionPGPEncryptFiles.FilenameAdd.Button=&\u6dfb\u52a0
-ActionPGPEncryptFiles.CreateDestinationFolder.Tooltip=\u5fc5\u8981\u65f6\u521b\u5efa\u76ee\u6807\u6587\u4ef6\u5939\u3002\u5982\u679c\u76ee\u6807\u662f\u4e00\u4e2a\u6587\u4ef6\uff0c\u5219\u5b83\u7684\u7236\u6587\u4ef6\u5939\u4e5f\u4f1a\u88ab\u521b\u5efa
-ActionPGPEncryptFiles.DestinationIsAFile.Label=\u76ee\u6807\u662f\u4e00\u4e2a\u6587\u4ef6
-ActionPGPEncryptFiles.SpecifyMoveFormat.Tooltip=\u6307\u5b9a\u683c\u5f0f
-ActionPGPEncryptFiles.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0\uff1a
-ActionPGPEncryptFiles.NrErrorsLessThan.Tooltip=\u6761\u4ef6\u503c
-ActionPGPEncryptFiles.Name.Default=\u79fb\u52a8\u6587\u4ef6
-ActionPGPEncryptFiles.SuccessOn.Group.Label=\u6210\u529f\u6761\u4ef6
-ActionPGPEncryptFiles.SpecifyMoveFormat.Label=\u6307\u5b9a\u683c\u5f0f
-ActionPGPEncryptFiles.IncludeSubfolders.Label=\u5305\u542b\u5b50\u6587\u4ef6\u5939
-ActionPGPEncryptFiles.Do_Nothing_IfFileExists.Label=\u4ec0\u4e48\u90fd\u4e0d\u505a
-ActionPGPEncryptFiles.FilenameDelete.Tooltip=\u5220\u9664\u9009\u4e2d\u7684\u6587\u4ef6
-ActionPGPEncryptFiles.Fields.PassPhrase.Tooltip=\u5bc6\u94a5
-ActionPGPEncryptFiles.AddDateBeforeExtension.Tooltip=\u9009\u4e2d\u6b64\u9009\u9879\uff0cPDI\u4f1a\u6dfb\u52a0\u65e5\u671f\u5230\u6587\u4ef6\u6269\u5c55\u540d\u524d
-ActionPGPEncryptFiles.NrErrorsLessThan.Label=\u6570\u503c
-ActionPGPEncryptFiles.SuccessWhenErrorsLessThan.Label=\u5f53\u9519\u8bef\u6570\u4e0d\u591a\u4e8e
-ActionPGPEncryptFiles.IfMovedFileExists.Label=\u5982\u679c\u6587\u4ef6\u5728\u76ee\u6807\u6587\u4ef6\u5939\u4e2d\u5df2\u5b58\u5728
-ActionPGPEncryptFiles.GroupMoveToGroup.Label=\u79fb\u52a8\u5230\u6587\u4ef6\u5939
-ActionPGPEncryptFiles.Tab.Advanced.Label=\u9ad8\u7ea7
-ActionPGPEncryptFiles.Fields.SourceFileFolder.Tooltip=\u8981\u79fb\u52a8\u7684\u6587\u4ef6\u6216\u8005\u6587\u4ef6\u5939\u3002\u5982\u679c\u8f93\u5165\u7684\u662f\u6587\u4ef6\uff0c\u5219\u53ea\u6709\u5f53\u201c\u5305\u542b\u5b50\u6587\u4ef6\u5939\u201d\u9009\u9879\u9009\u4e2d\u65f6\uff0c\u4f5c\u4e1a\u9879\u624d\u4f1a\u5904\u7406\u8be5\u6587\u4ef6\u5939
-ActionPGPEncryptFiles.BrowseFolders.Label=\u6587\u4ef6\u5939
-ActionPGPEncryptFiles.AddDate.Tooltip=\u6dfb\u52a0\u65e5\u671f\u5230\u6587\u4ef6\u540d
-ActionPGPEncryptFiles.Move_To_Folder_IfFileExists.Label=\u79fb\u52a8\u6e90\u6587\u4ef6\u5230\u6587\u4ef6\u5939
-ActionPGPEncryptFiles.Fields.Label=\u6587\u4ef6/\u6587\u4ef6\u5939
-ActionPGPEncryptFiles.Filetype.All=\u5168\u90e8\u6587\u4ef6
-ActionPGPEncryptFiles.DestinationFolder.Label=\u76ee\u6807\u6587\u4ef6\u5939
-ActionPGPEncryptFiles.GroupDestinationFile.Label=\u76ee\u6807\u6587\u4ef6
-ActionPGPEncryptFiles.UniqueName_IfMovedFileExists.Label=\u552f\u4e00\u540d\u79f0
-ActionPGPEncryptFiles.DestinationFileTab.Label=\u76ee\u6807\u6587\u4ef6
-ActionPGPEncryptFiles.DoNotKeepFolderStructure.Label=\u4e0d\u4fdd\u6301\u6587\u4ef6\u5939\u7684\u7ed3\u6784
-ActionPGPEncryptFiles.CreateMoveToFolder.Tooltip=\u5fc5\u8981\u65f6\u521b\u5efa\u6587\u4ef6\u5939
-ActionPGPEncryptFiles.Fields.PassPhrase.Label=\u5bc6\u94a5
-ActionPGPEncryptFiles.Title=\u7528PGP\u52a0\u5bc6\u6587\u4ef6
-ActionPGPEncryptFiles.SpecifyFormat.Tooltip=\u6307\u5b9a\u65e5\u671f\u65f6\u95f4\u683c\u5f0f
-ActionPGPEncryptFiles.AddMovedDateBeforeExtension.Label=\u5728\u6269\u5c55\u540d\u524d\u6dfb\u52a0\u65e5\u671f
-ActionPGPEncryptFiles.AddMovedDate.Tooltip=\u6dfb\u52a0\u65e5\u671f
-ActionPGPEncryptFiles.Wildcard.Tooltip=\u6307\u5b9a\u5339\u914d\u6587\u4ef6\u7684\u901a\u914d\u7b26
-ActionPGPEncryptFiles.Previous.Tooltip=\u9009\u4e2d\u6b64\u9009\u9879\u8868\u793a\u590d\u5236\u4e0a\u4e00\u4f5c\u4e1a\u9879\u7684\u7ed3\u679c\u4f5c\u4e3a\u8fd9\u4e00\u6b65\u7684\u53c2\u6570\u3002\r\n\u6ce8\u610f\uff0c\u53c2\u6570\u7684\u987a\u5e8f\u5fc5\u987b\u76f8\u540c\!\r\n\u4f8b\u5982\uff1a\uff081\uff09\u6e90\u6587\u4ef6\u5939/\u6587\u4ef6\r\n\t\uff082\uff09\u901a\u914d\u7b26\r\n\t\uff083\uff09\u5bc6\u94a5\r\n\t\uff084\uff09\u76ee\u6807\u6587\u4ef6/\u6587\u4ef6\u5939
-ActionPGPEncryptFiles.CreateMoveToFolder.Label=\u521b\u5efa\u6587\u4ef6\u5939
+ActionPGPEncryptFiles.ActionsType.Encrypt.Label=\u52A0\u5BC6
+ActionPGPEncryptFiles.ActionsType.Sign.Label=\u7B7E\u540D
+ActionPGPEncryptFiles.ActionsType.SignAndEncrypt.Label=\u7B7E\u540D\u5E76\u52A0\u5BC6
+ActionPGPEncryptFiles.AddDate.Label=\u6DFB\u52A0\u65E5\u671F\u5230\u6587\u4EF6\u540D
+ActionPGPEncryptFiles.AddDate.Tooltip=\u6DFB\u52A0\u65E5\u671F\u5230\u6587\u4EF6\u540D
+ActionPGPEncryptFiles.AddDateBeforeExtension.Label=\u5728\u6269\u5C55\u540D\u586B\u6DFB\u52A0\u65E5\u671F
+ActionPGPEncryptFiles.AddDateBeforeExtension.Tooltip=\u9009\u4E2D\u6B64\u9009\u9879, PDI\u4F1A\u6DFB\u52A0\u65E5\u671F\u5230\u6587\u4EF6\u6269\u5C55\u540D\u524D
+ActionPGPEncryptFiles.AddFileToResult.Label=\u6DFB\u52A0\u6587\u4EF6\u5230\u7ED3\u679C\u6587\u4EF6\u540D
+ActionPGPEncryptFiles.AddFileToResult.Tooltip=\u6DFB\u52A0\u76EE\u6807\u6587\u4EF6\u5230\u7ED3\u679C\u6587\u4EF6, \u8FD9\u6837\u53EF\u4EE5\u5728\u4E0B\u6E38\u901A\u9053\u4E2D\u4F7F\u7528\u8FD9\u4E9B\u6587\u4EF6, \u4F8B\u5982\u4F5C\u4E3A\u90AE\u4EF6\u9644\u4EF6
+ActionPGPEncryptFiles.AddMovedDate.Label=\u6DFB\u52A0\u65E5\u671F
+ActionPGPEncryptFiles.AddMovedDate.Tooltip=\u6DFB\u52A0\u65E5\u671F
+ActionPGPEncryptFiles.AddMovedDateBeforeExtension.Label=\u5728\u6269\u5C55\u540D\u524D\u6DFB\u52A0\u65E5\u671F
+ActionPGPEncryptFiles.AddMovedDateBeforeExtension.Tooltip=\u5728\u6269\u5C55\u540D\u524D\u6DFB\u52A0\u65E5\u671F
+ActionPGPEncryptFiles.AddMovedTime.Label=\u6DFB\u52A0\u65F6\u95F4
+ActionPGPEncryptFiles.AddMovedTime.Tooltip=\u6DFB\u52A0\u65F6\u95F4
+ActionPGPEncryptFiles.AddTime.Label=\u6DFB\u52A0\u65F6\u95F4\u5230\u6587\u4EF6\u540D
+ActionPGPEncryptFiles.AddTime.Tooltip=\u6DFB\u52A0\u65F6\u95F4\u5230\u6587\u4EF6\u540D
+ActionPGPEncryptFiles.BrowseFiles.Label=\u6587\u4EF6
+ActionPGPEncryptFiles.BrowseFolders.Label=\u6587\u4EF6\u5939
+ActionPGPEncryptFiles.CreateDestinationFolder.Label=\u521B\u5EFA\u76EE\u6807\u6587\u4EF6\u5939
+ActionPGPEncryptFiles.CreateDestinationFolder.Tooltip=\u5FC5\u8981\u65F6\u521B\u5EFA\u76EE\u6807\u6587\u4EF6\u5939. \u5982\u679C\u76EE\u6807\u662F\u4E00\u4E2A\u6587\u4EF6, \u5219\u5B83\u7684\u7236\u6587\u4EF6\u5939\u4E5F\u4F1A\u88AB\u521B\u5EFA
+ActionPGPEncryptFiles.CreateMoveToFolder.Label=\u521B\u5EFA\u6587\u4EF6\u5939
+ActionPGPEncryptFiles.CreateMoveToFolder.Tooltip=\u5FC5\u8981\u65F6\u521B\u5EFA\u6587\u4EF6\u5939
+ActionPGPEncryptFiles.DateTimeFormat.Label=\u65E5\u671F\u65F6\u95F4\u683C\u5F0F
+ActionPGPEncryptFiles.Delete_Source_File_IfFileExists.Label=\u5220\u9664\u6E90\u6587\u4EF6
+ActionPGPEncryptFiles.Description=\u4F7F\u7528 PGP \u52A0\u5BC6\u6587\u4EF6(\u79C1\u5BC6\u6027\u8F83\u597D).\n\u8BE5 Action \u4F9D\u8D56\u4E8E GnuPG(\u786E\u4FDD\u5DF2\u5B89\u88C5 gpg \u5DE5\u5177), \u624D\u80FD\u6B63\u5E38\u4F7F\u7528
+ActionPGPEncryptFiles.DestinationFileFolder.Label=\u76EE\u6807\u6587\u4EF6/\u6587\u4EF6\u5939
+ActionPGPEncryptFiles.DestinationFileFolder.Tooltip=\u5982\u679C\u4F60\u9009\u62E9\u4E00\u4E2A\u6587\u4EF6\u505A\u4E3A\u6E90, \u4F60\u4E5F\u53EF\u4EE5\u9876\u4E00\u4E2A\u6587\u4EF6\u4F5C\u4E3A\u76EE\u6807
+ActionPGPEncryptFiles.DestinationFileTab.Label=\u76EE\u6807\u6587\u4EF6
+ActionPGPEncryptFiles.DestinationFolder.Label=\u76EE\u6807\u6587\u4EF6\u5939
+ActionPGPEncryptFiles.DestinationIsAFile.Label=\u76EE\u6807\u662F\u4E00\u4E2A\u6587\u4EF6
+ActionPGPEncryptFiles.DestinationIsAFile.Tooltip=Apache Hop\u4F1A\u5C06\u76EE\u6807\u770B\u6210\u4E00\u4E2A\u6587\u4EF6
+ActionPGPEncryptFiles.DoNotKeepFolderStructure.Label=\u4E0D\u4FDD\u6301\u6587\u4EF6\u5939\u7684\u7ED3\u6784
+ActionPGPEncryptFiles.DoNotKeepFolderStructure.Tooltip=\u5982\u679C\u4F60\u4E0D\u60F3\u4FDD\u6301\u76EE\u6807\u6587\u4EF6\u5939\u7684\u7ED3\u6784 \u5E76 \u5728\u76EE\u6807\u6587\u4EF6\u5939\u4E2D\u521B\u5EFA\u89E3\u5BC6\u6587\u4EF6, \u8BF7\u9009\u4E2D\u6B64\u9879
+ActionPGPEncryptFiles.Do_Nothing_IfFileExists.Label=\u4EC0\u4E48\u90FD\u4E0D\u505A
+ActionPGPEncryptFiles.Do_Nothing_IfMovedFileExists.Label=\u4EC0\u4E48\u4E5F\u4E0D\u505A
+ActionPGPEncryptFiles.Error.AddingToFilenameResult=\u6DFB\u52A0\u6587\u4EF6 [{0}] \u5230\u8FD4\u56DE\u6587\u4EF6\u5217\u8868\u65F6\u51FA\u9519, \u5F02\u5E38\: {1}
+ActionPGPEncryptFiles.Error.DestinationFolderNotFound=\u76EE\u6807\u76EE\u5F55\u4E0D\u5B58\u5728\!
+ActionPGPEncryptFiles.Error.Exception.MoveProcess=\u65E0\u6CD5\u79FB\u52A8\u6587\u4EF6 [{0}] \u5230 [{1}], \u5F02\u5E38\: {2}
+ActionPGPEncryptFiles.Error.Exception.MoveProcessError=\u52A0\u5BC6\u6587\u4EF6 [{0}] \u5230 [{1}] \u65F6\u51FA\u9519\: {2}
+ActionPGPEncryptFiles.Error.Exception.UnableLoadXML=\u65E0\u6CD5\u4ECE XML \u8282\u70B9\u52A0\u8F7D "PGP \u52A0\u5BC6" \u7C7B\u578B\u7684 Action
+ActionPGPEncryptFiles.Error.GettingFilename=\u8BBF\u95EE\u6587\u4EF6 [{0}] \u65F6\u51FA\u9519, \u5F02\u5E38\: {1}
+ActionPGPEncryptFiles.Error.SourceFileNotExists=\u6587\u4EF6 [{0}] \u4E0D\u5B58\u5728\!
+ActionPGPEncryptFiles.Error.SuccessConditionbroken=\u7EC8\u6B62\u6210\u529F\u6761\u4EF6\u68C0\u6D4B, \u51FA\u73B0 {0} \u4E2A\u9519\u8BEF
+ActionPGPEncryptFiles.Fail_IfFileExists.Label=\u5931\u8D25
+ActionPGPEncryptFiles.Fail_IfMovedFileExists.Label=\u5931\u8D25
+ActionPGPEncryptFiles.Fields.Action.Label=\u52A8\u4F5C
+ActionPGPEncryptFiles.Fields.DestinationFileFolder.Label=\u76EE\u6807\u6587\u4EF6/\u6587\u4EF6\u5939
+ActionPGPEncryptFiles.Fields.DestinationFileFolder.Tooltip=\u8F93\u5165\u76EE\u6807\u6587\u4EF6\u5939, \u5982\u679C\u4F60\u9009\u62E9\u4E00\u4E2A\u6E90\u6587\u4EF6, \u4F60\u5C31\u53EF\u4EE5\u5B9A\u4E49\u4E00\u4E2A\u76EE\u6807\u6587\u4EF6
+ActionPGPEncryptFiles.Fields.Label=\u6587\u4EF6/\u6587\u4EF6\u5939
+ActionPGPEncryptFiles.Fields.PassPhrase.Label=\u5BC6\u94A5
+ActionPGPEncryptFiles.Fields.PassPhrase.Tooltip=\u5BC6\u94A5
+ActionPGPEncryptFiles.Fields.SourceFileFolder.Label=\u6E90\u6587\u4EF6/\u6587\u4EF6\u5939
+ActionPGPEncryptFiles.Fields.SourceFileFolder.Tooltip=\u8981\u79FB\u52A8\u7684\u6587\u4EF6\u6216\u8005\u6587\u4EF6\u5939. \u5982\u679C\u8F93\u5165\u7684\u662F\u6587\u4EF6, \u5219\u53EA\u6709\u5F53\u201C\u5305\u542B\u5B50\u6587\u4EF6\u5939\u201D\u9009\u9879\u9009\u4E2D\u65F6, Action \u624D\u4F1A\u5904\u7406\u8BE5\u6587\u4EF6\u5939
 ActionPGPEncryptFiles.Fields.UserID.Label=\u7528\u6237ID
-ActionPGPEncryptFiles.asciiMode.Label=\u4f7f\u7528ASCII\u6a21\u5f0f
-ActionPGPEncryptFiles.Fields.Action.Label=\u52a8\u4f5c
-ActionPGPEncryptFiles.asciiMode.Tooltip=\u4f7f\u7528ASCII\u6a21\u5f0f\uff0c\u5426\u5219\u6587\u4ef6\u4ee5\u4e8c\u8fdb\u5236\u65b9\u5f0f\u521b\u5efa.
+ActionPGPEncryptFiles.Fields.UserID.Tooltip=\u952E\u540D
+ActionPGPEncryptFiles.Fields.Wildcard.Label=\u901A\u914D\u7B26
+ActionPGPEncryptFiles.Fields.Wildcard.Tooltip=\u6307\u5B9A\u7528\u6765\u5339\u914D\u6587\u4EF6\u7684\u901A\u914D\u7B26
+ActionPGPEncryptFiles.FileResult.Group.Label=\u7ED3\u679C\u6587\u4EF6\u540D
+ActionPGPEncryptFiles.FilenameAdd.Button=\u6DFB\u52A0(&A)
+ActionPGPEncryptFiles.FilenameDelete.Button=\u5220\u9664(&D)
+ActionPGPEncryptFiles.FilenameDelete.Tooltip=\u5220\u9664\u9009\u4E2D\u7684\u6587\u4EF6
+ActionPGPEncryptFiles.FilenameEdit.Button=\u7F16\u8F91(&E)
+ActionPGPEncryptFiles.FilenameEdit.Tooltip=\u7F16\u8F91\u9009\u4E2D\u7684\u6587\u4EF6
+ActionPGPEncryptFiles.Filetype.All=\u5168\u90E8\u6587\u4EF6
+ActionPGPEncryptFiles.GpgExe.Label=GPG\u6587\u4EF6\u8DEF\u5F84
+ActionPGPEncryptFiles.GpgExe.Tooltip=\u6307\u5B9A GPG \u6587\u4EF6\u8DEF\u5F84
+ActionPGPEncryptFiles.GroupDestinationFile.Label=\u76EE\u6807\u6587\u4EF6
+ActionPGPEncryptFiles.GroupMoveToGroup.Label=\u79FB\u52A8\u5230\u6587\u4EF6\u5939
+ActionPGPEncryptFiles.IfFileExists.Label=\u5982\u679C\u76EE\u6807\u6587\u4EF6\u5DF2\u5B58\u5728
+ActionPGPEncryptFiles.IfMovedFileExists.Label=\u5982\u679C\u6587\u4EF6\u5728\u76EE\u6807\u6587\u4EF6\u5939\u4E2D\u5DF2\u5B58\u5728
+ActionPGPEncryptFiles.IncludeSubfolders.Label=\u5305\u542B\u5B50\u6587\u4EF6\u5939
+ActionPGPEncryptFiles.IncludeSubfolders.Tooltip=\u9009\u4E2D\u6B64\u9009\u9879\u8868\u793A\u5728\u5904\u7406\u4E00\u4E2A\u6587\u4EF6\u5939\u65F6\u4F1A\u540C\u65F6\u5904\u7406\u8BE5\u6587\u4EF6\u5939\u4E0B\u7684\u6240\u6709\u5B50\u6587\u4EF6\u5939
+ActionPGPEncryptFiles.Log.ArgFromPrevious.Found=\u4ECE\u524D\u7F6E\u901A\u9053\u7684\u8FD4\u56DE\u7ED3\u679C\u4E2D\u627E\u5230 {0} \u4E2A\u53C2\u6570
+ActionPGPEncryptFiles.Log.CanNotCreateParentFolder=\u65E0\u6CD5\u521B\u5EFA\u7236\u76EE\u5F55 {0}\!
+ActionPGPEncryptFiles.Log.CanNotMoveFolderToFile=\u65E0\u6CD5\u52A0\u5BC6\u76EE\u5F55\u5185\u5BB9 [{0}] \u5230\u6587\u4EF6 [{1}]
+ActionPGPEncryptFiles.Log.Error=\u52A0\u5BC6\u65F6\u51FA\u9519\: {0}
+ActionPGPEncryptFiles.Log.Error.FolderMissing=\u65E0\u6CD5\u627E\u5230\u76EE\u5F55 [{0}]\!
+ActionPGPEncryptFiles.Log.Error.GettingMoveToFolder=\u65E0\u6CD5\u8BBF\u95EE\u76EE\u5F55 [{0}], \u5F02\u5E38\: {1}
+ActionPGPEncryptFiles.Log.Error.MoveToFolderMissing=\u7F3A\u5931\u76EE\u6807\u76EE\u5F55
+ActionPGPEncryptFiles.Log.Error.NotFolder=\u975E\u76EE\u5F55 [{0}]\!
+ActionPGPEncryptFiles.Log.FetchFolder=\u904D\u5386\u76EE\u5F55 [{0}]
+ActionPGPEncryptFiles.Log.FileAddedToResultFilesName=\u6DFB\u52A0\u6587\u4EF6 [{0}] \u5230\u8FD4\u56DE\u6587\u4EF6\u5217\u8868
+ActionPGPEncryptFiles.Log.FileDeleted=\u5DF2\u5220\u9664\u6E90\u6587\u4EF6 [{0}]
+ActionPGPEncryptFiles.Log.FileEncrypted=\u6587\u4EF6 [{0}] \u5DF2\u52A0\u5BC6\u5230 [{1}]
+ActionPGPEncryptFiles.Log.FileExists=\u6587\u4EF6 [{0}] \u5B58\u5728\!
+ActionPGPEncryptFiles.Log.FileOverwrite=\u8986\u76D6\u6587\u4EF6 [{0}]
+ActionPGPEncryptFiles.Log.FolderNotExist=\u76EE\u5F55 {0} \u4E0D\u5B58\u5728\!
+ActionPGPEncryptFiles.Log.FolderWasCreated=\u5DF2\u521B\u5EFA\u7236\u76EE\u5F55 {0}.
+ActionPGPEncryptFiles.Log.Forbidden=\u88AB\u62D2
+ActionPGPEncryptFiles.Log.IgnoringRow=\u5FFD\u7565\u65E0\u6548\u7A7A\u6570\u636E\u884C. \u6E90\u8DEF\u5F84\: [{0}], \u76EE\u6807\u8DEF\u5F84\: [{1}], \u5339\u914D\: [{2}]
+ActionPGPEncryptFiles.Log.IncludeSubFoldersOn=\u904D\u5386\u5B50\u76EE\u5F55...
+ActionPGPEncryptFiles.Log.Info.FilesInError=\u51FA\u9519\u6587\u4EF6\u603B\u6570\: {0}
+ActionPGPEncryptFiles.Log.Info.FilesInSuccess=\u5904\u7406\u6210\u529F\u6587\u4EF6\u6570\u91CF\: {0}
+ActionPGPEncryptFiles.Log.ProcessingRow=\u5904\u7406\u6570\u636E\u884C, \u6E90\u8DEF\u5F84\: [{0}], \u76EE\u6807\u8DEF\u5F84\: [{1}], \u5339\u914D\: [{2}]
+ActionPGPEncryptFiles.Move_To_Folder_IfFileExists.Label=\u79FB\u52A8\u6E90\u6587\u4EF6\u5230\u6587\u4EF6\u5939
+ActionPGPEncryptFiles.MovedDateTimeFormat.Label=\u65E5\u671F\u683C\u5F0F
+ActionPGPEncryptFiles.Name=\u7528PGP\u52A0\u5BC6\u6587\u4EF6
+ActionPGPEncryptFiles.Name.Default=\u79FB\u52A8\u6587\u4EF6
+ActionPGPEncryptFiles.Name.Label=Action \u540D\u79F0\:
+ActionPGPEncryptFiles.NrErrorsLessThan.Label=\u6570\u503C
+ActionPGPEncryptFiles.NrErrorsLessThan.Tooltip=\u6761\u4EF6\u503C
+ActionPGPEncryptFiles.Overwrite_File_IfFileExists.Label=\u8986\u76D6\u76EE\u6807\u6587\u4EF6
+ActionPGPEncryptFiles.Overwrite_Filename_IffMovedFileExists.Label=\u8986\u76D6\u6587\u4EF6
+ActionPGPEncryptFiles.Previous.Label=\u590D\u5236\u4E0A\u4E00\u6B65\u7ED3\u679C\u4F5C\u4E3A\u53C2\u6570
+ActionPGPEncryptFiles.Previous.Tooltip=\u9009\u4E2D\u6B64\u9009\u9879\u8868\u793A\u590D\u5236\u4E0A\u4E00 Action \u7684\u7ED3\u679C\u4F5C\u4E3A\u8FD9\u4E00\u6B65\u7684\u53C2\u6570. \r\n\u6CE8\u610F, \u53C2\u6570\u7684\u987A\u5E8F\u5FC5\u987B\u76F8\u540C\!\r\n\u4F8B\u5982\uFF1A(1)\u6E90\u6587\u4EF6\u5939/\u6587\u4EF6\r\n\t(2)\u901A\u914D\u7B26\r\n\t(3)\u5BC6\u94A5\r\n\t(4)\u76EE\u6807\u6587\u4EF6/\u6587\u4EF6\u5939
+ActionPGPEncryptFiles.Settings.Label=\u8BBE\u7F6E
+ActionPGPEncryptFiles.SourceFileFolder.Label=\u6E90\u6587\u4EF6/\u6587\u4EF6\u5939
+ActionPGPEncryptFiles.SourceFileFolder.Tooltip=\u8F93\u5165\u8981\u79FB\u52A8\u7684\u6587\u4EF6\u6216\u8005\u6587\u4EF6\u5939. \u5982\u679C\u662F\u6587\u4EF6\u5939, \u5FC5\u8981\u65F6\u9009\u4E2D\u9009\u9879\u201C\u5305\u542B\u5B50\u6587\u4EF6\u5939\u201D\!
+ActionPGPEncryptFiles.SpecifyFormat.Label=\u6307\u5B9A\u65E5\u671F\u65F6\u95F4\u683C\u5F0F
+ActionPGPEncryptFiles.SpecifyFormat.Tooltip=\u6307\u5B9A\u65E5\u671F\u65F6\u95F4\u683C\u5F0F
+ActionPGPEncryptFiles.SpecifyMoveFormat.Label=\u6307\u5B9A\u683C\u5F0F
+ActionPGPEncryptFiles.SpecifyMoveFormat.Tooltip=\u6307\u5B9A\u683C\u5F0F
+ActionPGPEncryptFiles.SuccessCondition.Label=\u6210\u529F\u6761\u4EF6
+ActionPGPEncryptFiles.SuccessOn.Group.Label=\u6210\u529F\u6761\u4EF6
+ActionPGPEncryptFiles.SuccessWhenAllWorksFine.Label=\u4E00\u5207\u5DE5\u4F5C\u6B63\u5E38
+ActionPGPEncryptFiles.SuccessWhenAtLeat.Label=\u5F53\u52A0\u5BC6\u6587\u4EF6\u6570\u4E0D\u5C11\u4E8E
+ActionPGPEncryptFiles.SuccessWhenErrorsLessThan.Label=\u5F53\u9519\u8BEF\u6570\u4E0D\u591A\u4E8E
+ActionPGPEncryptFiles.Tab.Advanced.Label=\u9AD8\u7EA7
+ActionPGPEncryptFiles.Tab.General.Label=\u4E00\u822C
+ActionPGPEncryptFiles.Title=\u7528PGP\u52A0\u5BC6\u6587\u4EF6
+ActionPGPEncryptFiles.UniqueName_IfMovedFileExists.Label=\u552F\u4E00\u540D\u79F0
+ActionPGPEncryptFiles.Unique_Name_IfFileExists.Label=\u4F7F\u7528\u552F\u4E00\u540D\u79F0\u521B\u5EFA\u6587\u4EF6
+ActionPGPEncryptFiles.Wildcard.Label=\u901A\u914D\u7B26
+ActionPGPEncryptFiles.Wildcard.Tooltip=\u6307\u5B9A\u5339\u914D\u6587\u4EF6\u7684\u901A\u914D\u7B26
+ActionPGPEncryptFiles.asciiMode.Label=\u4F7F\u7528ASCII\u6A21\u5F0F
+ActionPGPEncryptFiles.asciiMode.Tooltip=\u4F7F\u7528ASCII\u6A21\u5F0F, \u5426\u5219\u6587\u4EF6\u4EE5\u4E8C\u8FDB\u5236\u65B9\u5F0F\u521B\u5EFA.
+ActionPGPEncryptFiles.keyword=PGP,encrypt,files
+GPG.DeletingTempFile=\u5220\u9664 GPG \u4E34\u65F6\u6587\u4EF6 [{0}]...
+GPG.ErrorCheckingGPGFile=\u68C0\u67E5 PGP \u6587\u4EF6\u65F6\u51FA\u9519
+GPG.ErrorCreatingTempFile=\u65E0\u6CD5\u521B\u5EFA GPG \u4E34\u65F6\u6587\u4EF6\!
+GPG.ErrorWritingTempFile=\u65E0\u6CD5\u521B\u5EFA GPG \u4E34\u65F6\u6587\u4EF6\!
+GPG.Exception.ExistStatus=\u8FD0\u884C\u547D\u4EE4\u65F6\u51FA\u9519\: {0}
+GPG.ExceptionWait=\u7B49\u5F85\u65F6\u5F02\u5E38\!
+GPG.ExceptionWrite=\u5199\u6587\u4EF6\u65F6\u5F02\u5E38\!
+GPG.ExceptionillegalThreadStateException=\u975E\u6CD5\u7EBF\u7A0B\u72B6\u6001\u5F02\u5E38
+GPG.GPGFilenameMissing=\u7F3A\u5931 GPG \u6587\u4EF6\u540D\u79F0\!
+GPG.GPGFilenameNotFound=\u65E0\u6CD5\u627E\u5230 GPG \u6587\u4EF6 [{0}]\!
+GPG.GPGNotAFile=GPG \u6587\u4EF6 [{0}] \u975E\u6709\u6548\u6587\u4EF6\u7C7B\u578B\! \u8BF7\u6307\u5B9A\u666E\u901A\u6587\u4EF6.
+GPG.IOException=\u521B\u5EFA\u6267\u884C\u547D\u4EE4\u65F6 IO \u5F02\u5E38\!
+GPG.RunningCommand=\u8FD0\u884C GPG \u547D\u4EE4 [{0}]...
+GPG.TempFileCreated=\u5DF2\u521B\u5EFA GPG \u4E34\u65F6\u6587\u4EF6 [{0}].
diff --git a/plugins/actions/pgpfiles/src/main/resources/org/apache/hop/workflow/actions/pgpverify/messages/messages_zh_CN.properties b/plugins/actions/pgpfiles/src/main/resources/org/apache/hop/workflow/actions/pgpverify/messages/messages_zh_CN.properties
index a430bdb..2c83d2a 100644
--- a/plugins/actions/pgpfiles/src/main/resources/org/apache/hop/workflow/actions/pgpverify/messages/messages_zh_CN.properties
+++ b/plugins/actions/pgpfiles/src/main/resources/org/apache/hop/workflow/actions/pgpverify/messages/messages_zh_CN.properties
@@ -16,15 +16,20 @@
 # limitations under the License.
 #
 #
-#
 ActionPGPVerify.Description=Verify file signature with PGP (Pretty Good Privacy).\nThis action need GnuPG to work properly.
-ActionPGPVerify.Name=\u7528PGP\u9a8c\u8bc1\u6587\u4ef6\u7b7e\u540d
-ActionPGPVerify.GPGLocation.Label=GPG \u4f4d\u7f6e\uff1a
-ActionPGPVerify.Filename.Label=\u6587\u4ef6\u540d
-ActionPGPVerify.Filetype.All=\u5168\u90e8\u6587\u4ef6
-ActionPGPVerify.DetachedFilename.Label=\u5206\u79bb\u5f0f\u7b7e\u540d
-ActionPGPVerify.Title=\u7528PGP\u9a8c\u8bc1\u6587\u4ef6\u7b7e\u540d
-ActionPGPVerify.useDetachedSignature.Label=\u4f7f\u7528\u5206\u79bb\u5f0f\u7b7e\u540d
-ActionPGPVerify.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0\uff1a
-ActionPGPVerify.useDetachedSignature.Tooltip=\u5982\u679c\u7b7e\u540d\u548c\u6587\u4ef6\u65f6\u5206\u5f00\u7684\uff0c\u8bf7\u9009\u4e2d\u6b64\u9009\u9879
-ActionPGPVerify.Settings.Group.Label=\u8bbe\u7f6e
+ActionPGPVerify.DetachedFilename.Label=\u5206\u79BB\u5F0F\u7B7E\u540D\:
+ActionPGPVerify.DetachedSignatureMissing=\u7F3A\u5C11\u72EC\u7ACB\u7684\u7B7E\u540D\u6587\u4EF6\u540D\!
+ActionPGPVerify.ERROR_0001_Cannot_Load_Job_Entry_From_Xml_Node=\u65E0\u6CD5\u4ECE XML \u8282\u70B9\u52A0\u8F7D "PGP \u9A8C\u8BC1" \u7C7B\u578B\u7684 Action
+ActionPGPVerify.Error=\u68C0\u67E5\u7B7E\u540D\u65F6\u51FA\u9519\!
+ActionPGPVerify.Filename.Label=\u6587\u4EF6\u540D\:
+ActionPGPVerify.FilenameMissing=\u7F3A\u5931\u6587\u4EF6\u540D\!
+ActionPGPVerify.Filetype.All=\u5168\u90E8\u6587\u4EF6
+ActionPGPVerify.GPGLocation.Label=GPG \u4F4D\u7F6E\:
+ActionPGPVerify.Name=\u7528PGP\u9A8C\u8BC1\u6587\u4EF6\u7B7E\u540D
+ActionPGPVerify.Name.Default=PGP \u9A8C\u8BC1
+ActionPGPVerify.Name.Label=Action \u540D\u79F0\:
+ActionPGPVerify.Settings.Group.Label=\u8BBE\u7F6E
+ActionPGPVerify.Title=\u7528PGP\u9A8C\u8BC1\u6587\u4EF6\u7B7E\u540D
+ActionPGPVerify.keyword=pgp,verify
+ActionPGPVerify.useDetachedSignature.Label=\u4F7F\u7528\u5206\u79BB\u5F0F\u7B7E\u540D\:
+ActionPGPVerify.useDetachedSignature.Tooltip=\u5982\u679C\u7B7E\u540D\u548C\u6587\u4EF6\u65F6\u5206\u5F00\u7684, \u8BF7\u9009\u4E2D\u6B64\u9009\u9879
diff --git a/plugins/actions/ping/src/main/resources/org/apache/hop/workflow/actions/ping/messages/messages_zh_CN.properties b/plugins/actions/ping/src/main/resources/org/apache/hop/workflow/actions/ping/messages/messages_zh_CN.properties
index f1de9ae..a90bf36 100644
--- a/plugins/actions/ping/src/main/resources/org/apache/hop/workflow/actions/ping/messages/messages_zh_CN.properties
+++ b/plugins/actions/ping/src/main/resources/org/apache/hop/workflow/actions/ping/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,23 +15,32 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-ActionPing.Description=Ping\u4e3b\u673a
-ActionPing.Name=Ping \u4e00\u53f0\u4e3b\u673a
-ActionPing.HostAddress=\u4e3b\u673a\u5730\u5740:{0}
-ActionPing.NrPackets.Label=\u53d1\u5305\u6570\u91cf:
-ActionPing.Error.Label=\u9519\u8bef:
-ActionPing.TimeOut.Tooltip=\u8d85\u65f6
-ActionPing.Hostname.Label=\u4e3b\u673a\u540d/IP:
-ActionPing.SystemPing.Label=\u7cfb\u7edfping
-ActionPing.Title=Ping\u4e00\u53f0\u4e3b\u673a
-ActionPing.ClassicPing=\u7ecf\u5178ping
-ActionPing.TimeOut.Label=\u8d85\u65f6(ms):
-ActionPing.SpecifyHost.Label=\u8bf7\u6307\u5b9a\u4e00\u4e2a\u4e3b\u673a\u540d\u6216\u8005IP
-ActionPing.ClassicPing.Label=\u7ecf\u5178ping
-ActionPing.PingType.Label=Ping \u7c7b\u578b:
-ActionPing.ClassicPingInterrupted=\u7ecf\u5178ping\u4e2d\u65ad
-ActionPing.HostName=\u4e3b\u673a\u540d\u79f0:{0}
-ActionPing.SystemPing=\u7cfb\u7edfping
-ActionPing.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0:
-ActionPing.Name.Default=Ping \u4e00\u4e2a\u4e3b\u673a
-ActionPing.BothPings.Label=\u5148\u7cfb\u7edfping\u540e\u7ecf\u5178ping
+#
+ActionPing.BothPings.Label=\u4F18\u5148\u7CFB\u7EDF\u5185\u7F6E ping \u5DE5\u5177, \u7F16\u7801\u65B9\u5F0F\u7684 ping \u6B21\u4E4B
+ActionPing.CanNotGetAddress=\u65E0\u6CD5\u83B7\u53D6\u670D\u52A1\u5668 {0} \u7684 IP \u5730\u5740
+ActionPing.ClassicPing=\u7ECF\u5178ping
+ActionPing.ClassicPing.Label=\u7ECF\u5178ping
+ActionPing.ClassicPingInterrupted=\u7ECF\u5178ping\u4E2D\u65AD
+ActionPing.Description=Ping\u4E3B\u673A
+ActionPing.Error.Label=\u9519\u8BEF\:
+ActionPing.ErrorSystemPing=\u5C1D\u8BD5 ping \u670D\u52A1\u5668 {0} \u65F6\u51FA\u9519, \u5F02\u5E38\: {1}
+ActionPing.ExecClassicPing.Label=\u8FD0\u884C\u547D\u4EE4\: {0}
+ActionPing.Gettingresponse.Label=\u7B49\u5F85\u670D\u52A1\u5668 {0} \u54CD\u5E94
+ActionPing.HostAddress=\u4E3B\u673A\u5730\u5740\:{0}
+ActionPing.HostName=\u4E3B\u673A\u540D\u79F0\:{0}
+ActionPing.Hostname.Label=\u4E3B\u673A\u540D/IP\:
+ActionPing.NOK.Label=\u65E0\u6CD5 ping \u901A\u4E3B\u673A {0}
+ActionPing.Name=Ping \u4E00\u53F0\u4E3B\u673A
+ActionPing.Name.Default=Ping \u4E00\u4E2A\u4E3B\u673A
+ActionPing.Name.Label=Action \u540D\u79F0\:
+ActionPing.NbrPackets.Label=ping \u76EE\u6807\u4E3B\u673A, \u53D1\u9001 {0} \u6570\u636E\u5305...
+ActionPing.NrPackets.Label=\u53D1\u5305\u6570\u91CF\:
+ActionPing.OK.Label=\u4E3B\u673A [{0} \u6709\u6548.
+ActionPing.PingType.Label=Ping \u7C7B\u578B\:
+ActionPing.SpecifyHost.Label=\u8BF7\u6307\u5B9A\u4E00\u4E2A\u4E3B\u673A\u540D\u6216\u8005IP
+ActionPing.SystemPing=\u7CFB\u7EDFping
+ActionPing.SystemPing.Label=\u7CFB\u7EDFping
+ActionPing.TimeOut.Label=\u8D85\u65F6(ms)\:
+ActionPing.TimeOut.Tooltip=\u8D85\u65F6
+ActionPing.Title=Ping\u4E00\u53F0\u4E3B\u673A
+ActionPing.keyword=ping
diff --git a/plugins/actions/pipeline/src/main/resources/org/apache/hop/workflow/actions/pipeline/messages/messages_zh_CN.properties b/plugins/actions/pipeline/src/main/resources/org/apache/hop/workflow/actions/pipeline/messages/messages_zh_CN.properties
index 587a455..e2d06f0 100644
--- a/plugins/actions/pipeline/src/main/resources/org/apache/hop/workflow/actions/pipeline/messages/messages_zh_CN.properties
+++ b/plugins/actions/pipeline/src/main/resources/org/apache/hop/workflow/actions/pipeline/messages/messages_zh_CN.properties
@@ -16,49 +16,66 @@
 # limitations under the License.
 #
 #
-#
-ActionPipeline.Header=\u8f6c\u6362
-ActionPipeline.JobTransform.Label=\u4f5c\u4e1a\u9879\u540d\u79f0: 
-ActionPipeline.NameOfPipeline.Label=\u901a\u8fc7\u76ee\u5f55\u4e0e\u540d\u79f0\u6307\u5b9a\u8f6c\u6362: 
-ActionPipeline.Browse.Label=&\u6d4f\u89c8...
-ActionPipeline.PipelineFile.Label=\u8f6c\u6362\u6587\u4ef6\u540d: 
-ActionPipeline.LogSettings.Group.Label=\u8bbe\u7f6e\u65e5\u5fd7
-ActionPipeline.Specify.Logfile.Label=\u6307\u5b9a\u65e5\u5fd7\u6587\u4ef6? 
-ActionPipeline.NameOfLogfile.Label=\u65e5\u5fd7\u6587\u4ef6\u540d: 
-ActionPipeline.LogfileExtension.Label=\u65e5\u5fd7\u6587\u4ef6\u540e\u7f00\u540d: 
-ActionPipeline.Logfile.IncludeDate.Label=\u65e5\u5fd7\u6587\u4ef6\u5305\u542b\u65e5\u671f? 
-ActionPipeline.Logfile.IncludeTime.Label=\u65e5\u5fd7\u6587\u4ef6\u5305\u542b\u65f6\u95f4? 
-ActionPipeline.Loglevel.Label=\u65e5\u5fd7\u7ea7\u522b: 
-ActionPipeline.Previous.Label=\u590d\u5236\u4e0a\u4e00\u6b65\u7ed3\u679c\u5230\u4f4d\u7f6e\u53c2\u6570
-ActionPipeline.Previous.Tooltip=\u52fe\u4e0a\u8fd9\u4e2a\u5c06\u628a\u4ee5\u524d\u7684\u7ed3\u679c\u4f20\u9012\u7ed9\u5f53\u524d\u4efb\u52a1\u7684\u53c2\u6570. 
-ActionPipeline.ExecForEveryInputRow.Label=\u6267\u884c\u6bcf\u4e00\u4e2a\u8f93\u5165\u884c? 
-ActionPipeline.ExecForEveryInputRow.Tooltip=\u52fe\u4e0a\u8fd9\u4e2a\u5c06\u6267\u884c\u8fd9\u4e2a\u8f6c\u6362\u591a\u6b21: \u5bf9\u6bcf\u4e00\u4e2a\u8f93\u5165\u884c\u6267\u884c\u4e00\u6b21.
-ActionPipeline.ClearResultList.Label=\u5728\u6267\u884c\u524d\u6e05\u9664\u7ed3\u679c\u884c\u5217\u8868? 
-ActionPipeline.ClearResultFiles.Label=\u5728\u6267\u884c\u524d\u6e05\u9664\u7ed3\u679c\u6587\u4ef6\u5217\u8868? 
-ActionPipeline.RunPipelineInCluster.Label=\u5728\u96c6\u7fa4\u6a21\u5f0f\u4e0b\u8fd0\u884c\u8fd9\u4e2a\u8f6c\u6362? 
-ActionPipeline.Fields.Label=\u5b57\u6bb5: 
-ActionPipeline.Fields.Argument.Label=\u4f4d\u7f6e\u53c2\u6570
-ActionPipeline.Fileformat.Hop=Hop\u8f6c\u6362
-ActionPipeline.Fileformat.XML=XML\u6587\u4ef6
-ActionPipeline.Fileformat.All=\u6240\u6709\u6587\u4ef6
-ActionPipeline.ErrorReadingPipeline.Text=\u8b66\u544a!
-ActionPipeline.ErrorReadingPipeline.Message=\u65e0\u6cd5\u8bfb\u53d6\u8f6c\u6362\u4ece\u6587\u4ef6 '{0}': {1}
-ActionPipeline.CheckResult.PipelineDefined=\u8f6c\u6362\u88ab\u5b9a\u4e49\u4f5c [{0}]
-ActionPipeline.CheckResult.PipelineNotDefined=\u8f6c\u6362\u6ca1\u6709\u88ab\u5b9a\u4e49
-ActionPipeline.Specification.Group.Label=\u8f6c\u6362\u8bbe\u7f6e
-ActionPipeline.PipelineByReference.Label=\u901a\u8fc7\u5f15\u7528\u6307\u5b9a\u8f6c\u6362\u6587\u4ef6
-ActionPipeline.Advanced.Group.Label=\u9ad8\u7ea7
-ActionPipeline.PrevToParams.Label=\u590d\u5236\u4e0a\u4e00\u6b65\u7ed3\u679c\u5230\u547d\u540d\u53c2\u6570
-ActionPipeline.HopServer.Label=\u8fdc\u7a0b\u4ece\u670d\u52a1\u5668
-ActionPipeline.WaitToFinish.Label=\u7b49\u5f85\u8fdc\u7a0b\u8f6c\u6362\u6267\u884c\u7ed3\u675f
-ActionPipeline.AbortRemote.Label=\u672c\u5730\u8f6c\u6362\u7ec8\u6b62\u65f6\u8fdc\u7a0b\u8f6c\u6362\u4e5f\u901a\u77e5\u7ec8\u6b62
-ActionPipeline.Append.Logfile.Label=\u6dfb\u52a0\u5230\u65e5\u5fd7\u6587\u4ef6\u5c3e
-ActionPipeline.Append.Logfile.Tooltip=\u5c06\u65b0\u65e5\u5fd7\u6dfb\u52a0\u5230\u65e5\u5fd7\u6587\u4ef6\u5c3e\u90e8
-ActionPipeline.Logfile.CreateParentFolder.Label=\u521b\u5efa\u7236\u6587\u4ef6\u5939
-ActionPipeline.Logfile.CreateParentFolder.Tooltip=\u5fc5\u8981\u65f6\u81ea\u52a8\u521b\u5efa\u7236\u6587\u4ef6\u5939
-ActionPipeline.GetParameters.Button.Label=\u83b7\u53d6\u53c2\u6570
-ActionPipeline.Fields.Parameters.Label=\u547d\u540d\u53c2\u6570
-ActionPipeline.Parameters.Parameter.Label=\u547d\u540d\u53c2\u6570
-ActionPipeline.PassAllParameters.Label=\u5c06\u6240\u6709\u53c2\u6570\u503c\u90fd\u4f20\u9012\u5230\u5b50\u8f6c\u6362
-ActionPipeline.Parameters.Value.Label=\u503c
-ActionPipeline.Parameters.ColumnName.Label=\u6d41\u5217\u540d
+ActionPipeline.AbortRemote.Label=\u672C\u5730\u8F6C\u6362\u7EC8\u6B62\u65F6\u8FDC\u7A0B Pipeline \u4E5F\u901A\u77E5\u7EC8\u6B62
+ActionPipeline.Advanced.Group.Label=\u9AD8\u7EA7
+ActionPipeline.Append.Logfile.Label=\u6DFB\u52A0\u5230\u65E5\u5FD7\u6587\u4EF6\u5C3E
+ActionPipeline.Append.Logfile.Tooltip=\u5C06\u65B0\u65E5\u5FD7\u6DFB\u52A0\u5230\u65E5\u5FD7\u6587\u4EF6\u5C3E\u90E8
+ActionPipeline.Browse.Label=\u6D4F\u89C8(&B)...
+ActionPipeline.CheckResult.PipelineDefined=Pipeline \u88AB\u5B9A\u4E49\u4F5C [{0}]
+ActionPipeline.CheckResult.PipelineNotDefined=Pipeline \u6CA1\u6709\u88AB\u5B9A\u4E49
+ActionPipeline.ClearResultFiles.Label=\u5728\u6267\u884C\u524D\u6E05\u9664\u7ED3\u679C\u6587\u4EF6\u5217\u8868? 
+ActionPipeline.ClearResultList.Label=\u5728\u6267\u884C\u524D\u6E05\u9664\u7ED3\u679C\u884C\u5217\u8868? 
+ActionPipeline.Description=\u6267\u884C Pipeline
+ActionPipeline.Dialog.Exception.NoValidMappingDetailsFound=\u62B1\u6B49, \u6CA1\u6709\u6307\u5B9A\u6709\u6548\u7684\u6620\u5C04
+ActionPipeline.Error.UnableOpenAppender=\u65E0\u6CD5\u6253\u5F00\u65E5\u5FD7\u6587\u4EF6 [{0}]\: {1}
+ActionPipeline.Error.UnablePrepareExec=\u65E0\u6CD5\u9884\u5904\u7406\u8981\u6267\u884C\u7684 Pipeline
+ActionPipeline.ErrorReadingPipeline.Message=\u65E0\u6CD5\u8BFB\u53D6 Pipeline \u4ECE\u6587\u4EF6 '{0}'\: {1}
+ActionPipeline.ErrorReadingPipeline.Text=\u8B66\u544A\!
+ActionPipeline.ErrorUnableOpenPipeline=\u65E0\u6CD5\u6253\u5F00 Pipeline\: {0}
+ActionPipeline.Exception.LogFilenameMissing=\u672A\u6307\u5B9A\u65E5\u5FD7\u6587\u4EF6\u540D\u6216\u5176\u503C\u4E3A\u7A7A\!
+ActionPipeline.Exception.MetaDataLoad=\u5EF6\u8FDF\u52A0\u8F7D Pipeline \u5143\u6570\u636E\u65F6\u53D1\u751F\u5F02\u5E38
+ActionPipeline.Exception.UnableToRunWorkflow=\u65E0\u6CD5\u8FD0\u884C Workflow {0}, {1} \u51FA\u9519. {2}
+ActionPipeline.ExecForEveryInputRow.Label=\u6267\u884C\u6BCF\u4E00\u4E2A\u8F93\u5165\u884C? 
+ActionPipeline.ExecForEveryInputRow.Tooltip=\u52FE\u4E0A\u8FD9\u4E2A\u5C06\u6267\u884C\u8BE5 Pipeline \u591A\u6B21\: \u5BF9\u6BCF\u4E00\u4E2A\u8F93\u5165\u884C\u6267\u884C\u4E00\u6B21.
+ActionPipeline.Fields.Argument.Label=\u4F4D\u7F6E\u53C2\u6570
+ActionPipeline.Fields.Label=\u5B57\u6BB5\: 
+ActionPipeline.Fields.Parameters.Label=\u547D\u540D\u53C2\u6570
+ActionPipeline.Fileformat.All=\u6240\u6709\u6587\u4EF6
+ActionPipeline.Fileformat.Hop=Hop\u8F6C\u6362
+ActionPipeline.Fileformat.LOG=\u65E5\u5FD7\u6587\u4EF6
+ActionPipeline.Fileformat.TXT=\u6587\u4EF6\u6587\u4EF6
+ActionPipeline.Fileformat.XML=XML\u6587\u4EF6
+ActionPipeline.GetParameters.Button.Label=\u83B7\u53D6\u53C2\u6570
+ActionPipeline.Header=Pipeline 
+ActionPipeline.HopServer.Label=\u8FDC\u7A0B\u4ECE\u670D\u52A1\u5668
+ActionPipeline.JobTransform.Label=Action \u540D\u79F0\: 
+ActionPipeline.Log.OpeningPipeline=\u6253\u5F00 Pipeline \u6587\u4EF6\: [{0}]
+ActionPipeline.LogSettings.Group.Label=\u8BBE\u7F6E\u65E5\u5FD7
+ActionPipeline.Logfile.CreateParentFolder.Label=\u521B\u5EFA\u7236\u6587\u4EF6\u5939
+ActionPipeline.Logfile.CreateParentFolder.Tooltip=\u5FC5\u8981\u65F6\u81EA\u52A8\u521B\u5EFA\u7236\u6587\u4EF6\u5939
+ActionPipeline.Logfile.IncludeDate.Label=\u65E5\u5FD7\u6587\u4EF6\u5305\u542B\u65E5\u671F? 
+ActionPipeline.Logfile.IncludeTime.Label=\u65E5\u5FD7\u6587\u4EF6\u5305\u542B\u65F6\u95F4? 
+ActionPipeline.LogfileExtension.Label=\u65E5\u5FD7\u6587\u4EF6\u540E\u7F00\u540D\: 
+ActionPipeline.Loglevel.Label=\u65E5\u5FD7\u7EA7\u522B\: 
+ActionPipeline.Name=Pipeline
+ActionPipeline.NameOfLogfile.Label=\u65E5\u5FD7\u6587\u4EF6\u540D\: 
+ActionPipeline.NameOfPipeline.Label=\u901A\u8FC7\u76EE\u5F55\u4E0E\u540D\u79F0\u6307\u5B9A Pipeline \: 
+ActionPipeline.Parameters.ColumnName.Label=\u6D41\u5217\u540D
+ActionPipeline.Parameters.Parameter.Label=\u547D\u540D\u53C2\u6570
+ActionPipeline.Parameters.Value.Label=\u503C
+ActionPipeline.PassAllParameters.Label=\u5C06\u6240\u6709\u53C2\u6570\u503C\u90FD\u4F20\u9012\u5230\u5B50 Pipeline 
+ActionPipeline.PipelineByReference.Label=\u901A\u8FC7\u5F15\u7528\u6307\u5B9A Pipeline \u6587\u4EF6
+ActionPipeline.PipelineFile.Label=Pipeline \u6587\u4EF6\u540D\: 
+ActionPipeline.PrevToParams.Label=\u590D\u5236\u4E0A\u4E00\u6B65\u7ED3\u679C\u5230\u547D\u540D\u53C2\u6570
+ActionPipeline.Previous.Label=\u590D\u5236\u4E0A\u4E00\u6B65\u7ED3\u679C\u5230\u4F4D\u7F6E\u53C2\u6570
+ActionPipeline.Previous.Tooltip=\u52FE\u4E0A\u8FD9\u4E2A\u5C06\u628A\u4EE5\u524D\u7684\u7ED3\u679C\u4F20\u9012\u7ED9\u5F53\u524D\u4EFB\u52A1\u7684\u53C2\u6570. 
+ActionPipeline.ReferencedObject.Description=Pipeline
+ActionPipeline.RunConfig.Message=\u4F7F\u7528\u8FD0\u884C\u914D\u7F6E [{0}]
+ActionPipeline.RunPipelineInCluster.Label=\u5728\u96C6\u7FA4\u6A21\u5F0F\u4E0B\u8FD0\u884C\u8BE5 Pipeline ? 
+ActionPipeline.Specification.Group.Label=Pipeline \u8BBE\u7F6E
+ActionPipeline.Specify.Logfile.Label=\u6307\u5B9A\u65E5\u5FD7\u6587\u4EF6? 
+ActionPipeline.StartingPipeline=\u542F\u52A8 Pipeline (file\={0}, name\={1}, Info\={2})
+ActionPipeline.WaitToFinish.Label=\u7B49\u5F85\u8FDC\u7A0B\u8F6C\u6362\u6267\u884C\u7ED3\u675F
+ActionPipeline.keyword=pipeline
+ActionPipelineDialog.Exception.UnableToLoadPipeline.Message=\u65E0\u6CD5\u52A0\u8F7D\u6307\u5B9A\u7684 Pipeline
+ActionPipelineDialog.Exception.UnableToLoadPipeline.Title=\u52A0\u8F7D Pipeline \u65F6\u51FA\u9519
diff --git a/plugins/actions/repeat/src/main/resources/org/apache/hop/workflow/actions/repeat/messages/messages_zh_CN.properties b/plugins/actions/repeat/src/main/resources/org/apache/hop/workflow/actions/repeat/messages/messages_zh_CN.properties
new file mode 100644
index 0000000..f59a16b
--- /dev/null
+++ b/plugins/actions/repeat/src/main/resources/org/apache/hop/workflow/actions/repeat/messages/messages_zh_CN.properties
@@ -0,0 +1,45 @@
+#
+#
+# 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.
+#
+#
+EndRepeat.Description=\u901A\u77E5\u7236\u901A\u9053\u4E2D\u7684 "\u91CD\u590D\u6267\u884C" \u7C7B\u578B\u7684 Action, \u7ED3\u675F\u91CD\u590D\u64CD\u4F5C
+EndRepeat.Name=\u7ED3\u675F\u91CD\u590D
+EndRepeat.keywords=end,repeat
+Repeat.AddDateToFilename.Label=\u6DFB\u52A0\u65E5\u671F\u5230\u6587\u4EF6\u540D
+Repeat.AddReptNumToFilename.Label=\u6DFB\u52A0\u91CD\u590D\u7F16\u53F7\u5230\u6587\u4EF6\u540D
+Repeat.AddTimeToFilename.Label=\u6DFB\u52A0\u65F6\u95F4\u5230\u6587\u4EF6\u540D
+Repeat.AppendToExistingFile.Label=\u65E5\u5FD7\u6587\u4EF6\u540C\u540D\u65F6\u81EA\u52A8\u8FFD\u52A0
+Repeat.AppendUpdateInterval.Label=5000
+Repeat.BaseLogFilename.Label=\u4EC5\u6587\u4EF6\u540D\u79F0
+Repeat.Delay.Label=\u5EF6\u8FDF(\u79D2)
+Repeat.Description=\u91CD\u590D\u6267\u884C Workflow \u6216 Pipeline
+Repeat.Dialog.ActionMissing.Header=\u8B66\u544A
+Repeat.Dialog.ActionMissing.Message=\u672A\u6307\u5B9A\u8BE5 Action \u540D\u79F0
+Repeat.FileToRepeat.Label=\u8981\u91CD\u590D\u6267\u884C\u7684\u6587\u4EF6(.hpl \u6216 .hwf)
+Repeat.KeepVariableValues.Label=\u6267\u884C\u5B8C\u6210\u540E\u7EE7\u627F\u8FD4\u56DE\u53D8\u91CF\u503C
+Repeat.LogFileUpdateInterval.Label=\u65E5\u5FD7\u6587\u4EF6\u66F4\u65B0\u95F4\u9694\:
+Repeat.LogFilenameExt.Label=\u6269\u5C55\u540D
+Repeat.LogToFile.Label=\u8F93\u51FA\u5230\u6587\u4EF6
+Repeat.LoggingFileGroup.Label=\u65E5\u5FD7\u6587\u4EF6
+Repeat.Name=\u91CD\u590D\u6267\u884C
+Repeat.OptionalVarValue.Label=\u53D8\u91CF\u503C(\u53EF\u9009)
+Repeat.ParmsVarGroup.Label=\u53C2\u6570\u6216\u53D8\u91CF\u5217\u8868\:
+Repeat.ParmsVarGroup.Name.Column.Header=\u540D\u79F0
+Repeat.ParmsVarGroup.Value.Column.Header=\u503C
+Repeat.RunConfiguration.Label=\u8FD0\u884C\u65F6\u914D\u7F6E
+Repeat.StopRepeatingVar.Label=\u53D8\u91CF\u540D\u79F0(\u68C0\u6D4B\u5230\u8BE5\u53D8\u91CF\u65F6\u7EC8\u6B62\u91CD\u590D)
+Repeat.keywords=repeat
diff --git a/plugins/actions/sendnagiospassivecheck/src/main/resources/org/apache/hop/workflow/actions/sendnagiospassivecheck/messages/messages_zh_CN.properties b/plugins/actions/sendnagiospassivecheck/src/main/resources/org/apache/hop/workflow/actions/sendnagiospassivecheck/messages/messages_zh_CN.properties
index 6cd0a2c..23145c3 100644
--- a/plugins/actions/sendnagiospassivecheck/src/main/resources/org/apache/hop/workflow/actions/sendnagiospassivecheck/messages/messages_zh_CN.properties
+++ b/plugins/actions/sendnagiospassivecheck/src/main/resources/org/apache/hop/workflow/actions/sendnagiospassivecheck/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,38 +15,48 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
+#
+ActionSendNagiosPassiveCheck.Connected.NOK.ConnectionBad=\u670D\u52A1\u5668 [{0}] \u65E0\u6CD5\u8BBF\u95EE!
+ActionSendNagiosPassiveCheck.Connected.OK=\u670D\u52A1\u5668 [{0}] \u8FDE\u63A5\u6210\u529F!
+ActionSendNagiosPassiveCheck.Connected.Title.Bad=\u9519\u8BEF
+ActionSendNagiosPassiveCheck.Connected.Title.Ok=\u6210\u529F
+ActionSendNagiosPassiveCheck.ConnectionTimeOut.Label=\u8FDE\u63A5\u8D85\u65F6
+ActionSendNagiosPassiveCheck.ConnectionTimeOut.Tooltip=\u8FDE\u63A5\u8D85\u65F6
 ActionSendNagiosPassiveCheck.Description=Send passive check to Nagios via NSCA (Nagios Service Check Acceptor)
-ActionSendNagiosPassiveCheck.Name=\u53d1\u9001Nagios \u88ab\u52a8\u68c0\u67e5
-ActionSendNagiosPassiveCheck.SenderSettings.Group.Label=\u53d1\u9001\u8005
-ActionSendNagiosPassiveCheck.EncryptionMode.Label=\u52a0\u5bc6\u6a21\u5f0f
-ActionSendNagiosPassiveCheck.ConnectionTimeOut.Label=\u8fde\u63a5\u8d85\u65f6
-ActionSendNagiosPassiveCheck.SenderServerName.Tooltip=\u53d1\u9001\u8005\u7684\u540d\u79f0\u6216\u8005IP\u5730\u5740
-ActionSendNagiosPassiveCheck.LevelMode.Label=\u7ea7\u522b
-ActionSendNagiosPassiveCheck.Port.Label=\u670d\u52a1\u5668\u7aef\u53e3
-ActionSendNagiosPassiveCheck.SenderServerName.Label=\u540d\u79f0/IP
-ActionSendNagiosPassiveCheck.ServerSettings.General=\u4e00\u822c
-ActionSendNagiosPassiveCheck.EncryptionMode.TripleDES=Triple DES
-ActionSendNagiosPassiveCheck.Name.Default=\u53d1\u9001Nagios\u88ab\u52a8\u68c0\u67e5
-ActionSendNagiosPassiveCheck.EncryptionMode.Critical=\u5173\u952e\u7684
-ActionSendNagiosPassiveCheck.EncryptionMode.Warning=\u8b66\u544a
-ActionSendNagiosPassiveCheck.Server.Label=\u4e3b\u673a/IP\u5730\u5740
-ActionSendNagiosPassiveCheck.ServerSettings.Group.Label=\u670d\u52a1\u5668
-ActionSendNagiosPassiveCheck.Server.Tooltip=\u4e3b\u673a\u540d
-ActionSendNagiosPassiveCheck.Title=\u53d1\u9001Nagios\u88ab\u52a8\u68c0\u67e5
-ActionSendNagiosPassiveCheck.Message.Label=\u6d88\u606f
-ActionSendNagiosPassiveCheck.MessageGroup.Group.Label=\u6d88\u606f
-ActionSendNagiosPassiveCheck.SenderServiceName.Label=\u670d\u52a1\u540d\u79f0
-ActionSendNagiosPassiveCheck.Password.Label=\u5bc6\u7801
-ActionSendNagiosPassiveCheck.TestConnection.Label=\u6d4b\u8bd5\u8fde\u63a5
-ActionSendNagiosPassiveCheck.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0:
-ActionSendNagiosPassiveCheck.SenderServiceName.Tooltip=\u53d1\u9001\u8005\u670d\u52a1\u540d
-ActionSendNagiosPassiveCheck.EncryptionMode.OK=\u786e\u8ba4
-ActionSendNagiosPassiveCheck.Name.Tooltip=\u4f5c\u4e1a\u9879\u540d\u79f0
-ActionSendNagiosPassiveCheck.ResponseTimeOut.Tooltip=\u76f8\u5e94\u8d85\u65f6\u65f6\u95f4\uff08ms\uff09\uff0c0\u8868\u793a\u65e0\u9650\u5236
-ActionSendNagiosPassiveCheck.LevelType.Unknown=\u672a\u77e5
-ActionSendNagiosPassiveCheck.TestConnection.Tooltip=\u6d4b\u8bd5\u8fde\u63a5
+ActionSendNagiosPassiveCheck.EncryptionMode.Critical=\u5173\u952E\u7684
+ActionSendNagiosPassiveCheck.EncryptionMode.Label=\u52A0\u5BC6\u6A21\u5F0F
 ActionSendNagiosPassiveCheck.EncryptionMode.None=None
+ActionSendNagiosPassiveCheck.EncryptionMode.OK=\u786E\u8BA4
+ActionSendNagiosPassiveCheck.EncryptionMode.TripleDES=Triple DES
+ActionSendNagiosPassiveCheck.EncryptionMode.Warning=\u8B66\u544A
 ActionSendNagiosPassiveCheck.EncryptionMode.XOR=XOR
-ActionSendNagiosPassiveCheck.ConnectionTimeOut.Tooltip=\u8fde\u63a5\u8d85\u65f6
-ActionSendNagiosPassiveCheck.Port.Tooltip=\u670d\u52a1\u5668\u7aef\u53e3
-ActionSendNagiosPassiveCheck.ResponseTimeOut.Label=\u54cd\u5e94\u8d85\u65f6
+ActionSendNagiosPassiveCheck.Error.MessageMissing=\u7F3A\u5931\u8981\u53D1\u9001\u7684\u6D88\u606F!
+ActionSendNagiosPassiveCheck.Error.TargetServerMissing=\u7F3A\u5931\u670D\u52A1\u5668\u540D \u6216 IP\!
+ActionSendNagiosPassiveCheck.ErrorGetting=\u8FD0\u884C\u8BE5 Action \u65F6\u51FA\u9519\: {0}
+ActionSendNagiosPassiveCheck.LevelMode.Label=\u7EA7\u522B
+ActionSendNagiosPassiveCheck.LevelType.Unknown=\u672A\u77E5
+ActionSendNagiosPassiveCheck.Message.Label=\u6D88\u606F
+ActionSendNagiosPassiveCheck.MessageGroup.Group.Label=\u6D88\u606F
+ActionSendNagiosPassiveCheck.Name=Nagios \u88AB\u52A8\u68C0\u67E5
+ActionSendNagiosPassiveCheck.Name.Default=Nagios\u88AB\u52A8\u68C0\u67E5
+ActionSendNagiosPassiveCheck.Name.Label=Action \u540D\u79F0\:
+ActionSendNagiosPassiveCheck.Name.Tooltip=Action \u540D\u79F0
+ActionSendNagiosPassiveCheck.Password.Label=\u5BC6\u7801
+ActionSendNagiosPassiveCheck.Port.Label=\u670D\u52A1\u5668\u7AEF\u53E3
+ActionSendNagiosPassiveCheck.Port.Tooltip=\u670D\u52A1\u5668\u7AEF\u53E3
+ActionSendNagiosPassiveCheck.ResponseTimeOut.Label=\u54CD\u5E94\u8D85\u65F6
+ActionSendNagiosPassiveCheck.ResponseTimeOut.Tooltip=\u76F8\u5E94\u8D85\u65F6\u65F6\u95F4 (ms), 0\u8868\u793A\u65E0\u9650\u5236
+ActionSendNagiosPassiveCheck.SenderServerName.Label=\u540D\u79F0/IP
+ActionSendNagiosPassiveCheck.SenderServerName.Tooltip=\u53D1\u9001\u8005\u7684\u540D\u79F0\u6216\u8005IP\u5730\u5740
+ActionSendNagiosPassiveCheck.SenderServiceName.Label=\u670D\u52A1\u540D\u79F0
+ActionSendNagiosPassiveCheck.SenderServiceName.Tooltip=\u53D1\u9001\u8005\u670D\u52A1\u540D
+ActionSendNagiosPassiveCheck.SenderSettings.Group.Label=\u53D1\u9001\u8005
+ActionSendNagiosPassiveCheck.Server.Label=\u4E3B\u673A/IP\u5730\u5740
+ActionSendNagiosPassiveCheck.Server.Tooltip=\u4E3B\u673A\u540D
+ActionSendNagiosPassiveCheck.ServerSettings.General=\u4E00\u822C
+ActionSendNagiosPassiveCheck.ServerSettings.Group.Label=\u670D\u52A1\u5668
+ActionSendNagiosPassiveCheck.Started=\u5F00\u59CB\u5411 Nagios \u670D\u52A1\u5668 {0} \u53D1\u9001\u88AB\u52A8\u68C0\u6D4B\u6D88\u606F
+ActionSendNagiosPassiveCheck.TestConnection.Label=\u6D4B\u8BD5\u8FDE\u63A5
+ActionSendNagiosPassiveCheck.TestConnection.Tooltip=\u6D4B\u8BD5\u8FDE\u63A5
+ActionSendNagiosPassiveCheck.Title=\u53D1\u9001Nagios\u88AB\u52A8\u68C0\u67E5
+ActionSendNagiosPassiveCheck.keyword=send,nagios,passive,check
diff --git a/plugins/actions/setvariables/src/main/resources/org/apache/hop/workflow/actions/setvariables/messages/messages_zh_CN.properties b/plugins/actions/setvariables/src/main/resources/org/apache/hop/workflow/actions/setvariables/messages/messages_zh_CN.properties
index d253cbf..54b9273 100644
--- a/plugins/actions/setvariables/src/main/resources/org/apache/hop/workflow/actions/setvariables/messages/messages_zh_CN.properties
+++ b/plugins/actions/setvariables/src/main/resources/org/apache/hop/workflow/actions/setvariables/messages/messages_zh_CN.properties
@@ -16,30 +16,30 @@
 # limitations under the License.
 #
 #
-#
 ActionSetVariables.Description=Set one or several variables.
-ActionSetVariables.Name=\u8bbe\u7f6e\u53d8\u91cf
-ActionSetVariables.VariableType.RootWorkflow=\u5728\u6839\u4f5c\u4e1a\u4e2d\u6709\u6548
-ActionSetVariables.VarsReplace.Label=\u53d8\u91cf\u66ff\u6362
+ActionSetVariables.Error.UnableReadPropertiesFile=Error encountered while reading properties file "{0}"\: 
 ActionSetVariables.Error.UnableSetVariableCurrentWorkflow=Can not set variable [{0}] because we can not find current workflow\!
+ActionSetVariables.Error.UnableSetVariableParentWorkflow=Can not set variable [{0}] because we can not find parent workflow\!
 ActionSetVariables.Error.UnableSetVariableRootWorkflow=It was not possible to set variable [{0}] in the root workflow since that workflow is not present.
-ActionSetVariables.VarsReplace.Tooltip=\u5728\u8bbe\u7f6e\u53d8\u91cf\u4e4b\u524d\uff0c\u505a\u53d8\u91cf\u66ff\u6362\uff08\u5305\u62ec\u540d\u79f0\u548c\u503c\uff09
-ActionSetVariables.Name.Default=\u8bbe\u7f6e\u53d8\u91cf
+ActionSetVariables.Fields.Column.Value=\u503C
+ActionSetVariables.Fields.Column.VariableName=\u53D8\u91CF\u540D
+ActionSetVariables.Fields.Column.VariableType=\u53D8\u91CF\u6709\u6548\u8303\u56F4
+ActionSetVariables.FileVariableType.Label=\u53D8\u91CF\u6709\u6548\u8303\u56F4
+ActionSetVariables.Filename.Label=\u5C5E\u6027\u6587\u4EF6\u540D
+ActionSetVariables.FilenameGroup.Label=\u5C5E\u6027\u6587\u4EF6
 ActionSetVariables.Log.SetVariableToValue=Set variable {0} to value [{1}]
-ActionSetVariables.Variables.Label=\u53d8\u91cf \: 
-ActionSetVariables.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0\:
-ActionSetVariables.Error.UnableSetVariableParentWorkflow=Can not set variable [{0}] because we can not find parent workflow\!
-ActionSetVariables.VariableType.JVM=\u5728JVM\u4e2d\u6709\u6548
-ActionSetVariables.Fields.Column.VariableName=\u53d8\u91cf\u540d
-ActionSetVariables.UnExcpectedError=Unexpected error\! {0}
-ActionSetVariables.Title=\u8bbe\u7f6e\u53d8\u91cf
-ActionSetVariables.Fields.Column.VariableType=\u53d8\u91cf\u6709\u6548\u8303\u56f4
-ActionSetVariables.VariableType.CurrentWorkflow=\u5f53\u524d\u4f5c\u4e1a\u6709\u6548
 ActionSetVariables.Meta.UnableLoadXML=Unable to load action of type ''Set variables'' from XML node.Exception \: {0}
-ActionSetVariables.Fields.Column.Value=\u503c
-ActionSetVariables.VariableType.ParentWorkflow=\u5728\u7236\u4f5c\u4e1a\u4e2d\u6709\u6548
-ActionSetVariables.Settings.Label=\u8bbe\u7f6e
-ActionSetVariables.FilenameGroup.Label=\u5c5e\u6027\u6587\u4ef6
-ActionSetVariables.Filename.Label=\u5c5e\u6027\u6587\u4ef6\u540d
-ActionSetVariables.FileVariableType.Label=\u53d8\u91cf\u6709\u6548\u8303\u56f4
-ActionSetVariables.Error.UnableReadPropertiesFile=Error encountered while reading properties file ''{0}'': 
\ No newline at end of file
+ActionSetVariables.Name=\u8BBE\u7F6E\u53D8\u91CF
+ActionSetVariables.Name.Default=\u8BBE\u7F6E\u53D8\u91CF
+ActionSetVariables.Name.Label=Action \u540D\u79F0\:
+ActionSetVariables.Settings.Label=\u8BBE\u7F6E
+ActionSetVariables.Title=\u8BBE\u7F6E\u53D8\u91CF
+ActionSetVariables.UnExcpectedError=Unexpected error\! {0}
+ActionSetVariables.VariableType.CurrentWorkflow=\u5F53\u524D Action \u6709\u6548
+ActionSetVariables.VariableType.JVM=\u5728JVM\u4E2D\u6709\u6548
+ActionSetVariables.VariableType.ParentWorkflow=\u5728\u7236 Action \u4E2D\u6709\u6548
+ActionSetVariables.VariableType.RootWorkflow=\u5728\u6839 Action \u4E2D\u6709\u6548
+ActionSetVariables.Variables.Label=\u53D8\u91CF \: 
+ActionSetVariables.VarsReplace.Label=\u53D8\u91CF\u66FF\u6362
+ActionSetVariables.VarsReplace.Tooltip=\u5728\u8BBE\u7F6E\u53D8\u91CF\u4E4B\u524D, \u505A\u53D8\u91CF\u66FF\u6362 (\u5305\u62EC\u540D\u79F0\u548C\u503C)
+ActionSetVariables.keyword=set,variables
diff --git a/plugins/actions/shell/src/main/resources/org/apache/hop/workflow/actions/shell/messages/messages_zh_CN.properties b/plugins/actions/shell/src/main/resources/org/apache/hop/workflow/actions/shell/messages/messages_zh_CN.properties
index 3472e3a..c47adcb 100644
--- a/plugins/actions/shell/src/main/resources/org/apache/hop/workflow/actions/shell/messages/messages_zh_CN.properties
+++ b/plugins/actions/shell/src/main/resources/org/apache/hop/workflow/actions/shell/messages/messages_zh_CN.properties
@@ -16,30 +16,41 @@
 # limitations under the License.
 #
 #
-#
-ActionShell.Description=\u6267\u884c\u4e00\u4e2ashell\u811a\u672c
+ActionShell.Append.Logfile.Label=\u8FFD\u52A0\u65E5\u5FD7\u6587\u4EF6\:
+ActionShell.Append.Logfile.Tooltip=\u9009\u4E2D\u8BE5\u9879\u53EF\u4EE5\u8FFD\u52A0\u5230\u65E5\u5FD7\u6587\u4EF6.
+ActionShell.CommandFinished=\u547D\u4EE4 {0} \u5DF2\u5B8C\u6210
+ActionShell.Description=\u6267\u884C\u4E00\u4E2Ashell\u811A\u672C
+ActionShell.Error.UnableopenAppenderFile=\u65E0\u6CD5\u6253\u5F00 Shell\u811A\u672C\u6587\u4EF6 [{0}], {1}
+ActionShell.ErrorRunningShell=\u8FD0\u884C Shell \u811A\u672C [{0}] \u65F6\u51FA\u9519\: {1}
+ActionShell.Exception.LogFilenameMissing=\u65E5\u5FD7\u6587\u4EF6\u540D\u7F3A\u5931
+ActionShell.ExecCommand=\u6267\u884C\u547D\u4EE4\: {0}
+ActionShell.ExecForEveryInputRow.Label=\u5BF9\u6BCF\u4E2A\u8F93\u5165\u884C\u6267\u884C\u4E00\u6B21? 
+ActionShell.ExecForEveryInputRow.Tooltip=\u9009\u4E2D\u8BE5\u9009\u9879\u53EF\u4EE5\u5C06\u672C Action \u6267\u884C\u591A\u6B21\:\u4E0A\u4E00\u4E2A Action \u4F20\u5165\u7684\u6BCF\u4E00\u884C\u6570\u636E,\u90FD\u6267\u884C\u4E00\u6B21.
+ActionShell.ExitStatus=Shell \u811A\u672C {0} \u7684\u6267\u884C\u7ED3\u679C\: {1}
+ActionShell.Fields.Argument.Label=\u53C2\u6570
+ActionShell.Fields.Label=\u5B57\u6BB5\:
+ActionShell.Fileformat.All=\u6240\u6709\u6587\u4EF6
+ActionShell.Fileformat.Scripts=Shell \u811A\u672C
+ActionShell.Filename.Label=\u811A\u672C\u6587\u4EF6\u540D\:
+ActionShell.InsertScript.Label=\u63D2\u5165\u811A\u672C
+ActionShell.InsertScript.Tooltip=\u76F4\u63A5\u8FD0\u884C\u811A\u672C(\u53C2\u89C1 \u811A\u672C \u6807\u7B7E\u9875)
+ActionShell.Log.FoundPreviousRows=\u4ECE\u524D\u7F6E\u7ED3\u679C\u96C6\u6536\u5230 {0} \u884C\u6570\u636E
+ActionShell.LogSettings.Group.Label=\u65E5\u5FD7\u8BBE\u7F6E
+ActionShell.Logfile.IncludeDate.Label=\u65E5\u5FD7\u6587\u4EF6\u4E2D\u5305\u542B\u65E5\u671F\:
+ActionShell.Logfile.IncludeTime.Label=\u65E5\u5FD7\u6587\u4EF6\u4E2D\u5305\u542B\u65F6\u95F4\:
+ActionShell.LogfileExtension.Label=\u65E5\u5FD7\u6587\u4EF6\u6269\u5C55\u540D\:
+ActionShell.Loglevel.Label=\u65E5\u5FD7\u7EA7\u522B\:
 ActionShell.Name=Shell
-ActionShell.Fileformat.All=\u6240\u6709\u6587\u4ef6
-ActionShell.ExecForEveryInputRow.Label=\u5bf9\u6bcf\u4e2a\u8f93\u5165\u884c\u6267\u884c\u4e00\u6b21? 
-ActionShell.Previous.Label=\u5c06\u4e0a\u4e00\u7ed3\u679c\u4f5c\u4e3a\u53c2\u6570? 
-ActionShell.Logfile.IncludeDate.Label=\u65e5\u5fd7\u6587\u4ef6\u4e2d\u5305\u542b\u65e5\u671f?
-ActionShell.Fileformat.Scripts=Shell \u811a\u672c
-ActionShell.LogSettings.Group.Label=\u65e5\u5fd7\u8bbe\u7f6e
-ActionShell.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0\:
+ActionShell.Name.Label=Action \u540D\u79F0\:
+ActionShell.NameOfLogfile.Label=\u65E5\u5FD7\u6587\u4EF6\u540D\u79F0\:
+ActionShell.Previous.Label=\u5C06\u4E0A\u4E00\u7ED3\u679C\u4F5C\u4E3A\u53C2\u6570? 
+ActionShell.Previous.Tooltip=\u9009\u4E2D\u8BE5\u9009\u9879\u53EF\u4EE5\u5C06\u4E0A\u4E00\u4E2A Action \u7684\u7ED3\u679C\u4F5C\u4E3A\u672C Action \u7684\u53C2\u6570.
+ActionShell.RunningOn=\u8FD0\u884C\u5728 {0} \u64CD\u4F5C\u7CFB\u7EDF\u4E0A
+ActionShell.Shellinterupted=Shell \u811A\u672C\u7684\u6267\u884C {0} \u88AB\u7EC8\u6B62\: {1}
+ActionShell.Specify.Logfile.Label=\u6307\u5B9A\u65E5\u5FD7\u6587\u4EF6\:
+ActionShell.Tab.General.Label=\u4E00\u822C
+ActionShell.Tab.Script.Label=\u811A\u672C
 ActionShell.Title=Shell
-ActionShell.LogfileExtension.Label=\u65e5\u5fd7\u6587\u4ef6\u6269\u5c55\u540d\:
-ActionShell.Fields.Label=\u5b57\u6bb5\:
-ActionShell.Logfile.IncludeTime.Label=\u65e5\u5fd7\u6587\u4ef6\u4e2d\u5305\u542b\u65f6\u95f4?
-ActionShell.Fields.Argument.Label=\u53c2\u6570
-ActionShell.Specify.Logfile.Label=\u6307\u5b9a\u65e5\u5fd7\u6587\u4ef6?
-ActionShell.Append.Logfile.Label=\u8ffd\u52a0\u65e5\u5fd7\u6587\u4ef6?
-ActionShell.WorkingDirectory.Label=\u5de5\u4f5c\u8def\u5f84\:
-ActionShell.Loglevel.Label=\u65e5\u5fd7\u7ea7\u522b\:
-ActionShell.NameOfLogfile.Label=\u65e5\u5fd7\u6587\u4ef6\u540d\u79f0\:
-ActionShell.ExecForEveryInputRow.Tooltip=\u9009\u4e2d\u8be5\u9009\u9879\u53ef\u4ee5\u5c06\u672c\u4f5c\u4e1a\u9879\u6267\u884c\u591a\u6b21\:\u4e0a\u4e00\u4e2a\u4f5c\u4e1a\u9879\u4f20\u5165\u7684\u6bcf\u4e00\u884c\u6570\u636e,\u90fd\u6267\u884c\u4e00\u6b21.
-ActionShell.Filename.Label=\u811a\u672c\u6587\u4ef6\u540d\:
-ActionShell.Append.Logfile.Tooltip=\u9009\u4e2d\u8be5\u9879\u53ef\u4ee5\u8ffd\u52a0\u5230\u65e5\u5fd7\u6587\u4ef6.
-ActionShell.Previous.Tooltip=\u9009\u4e2d\u8be5\u9009\u9879\u53ef\u4ee5\u5c06\u4e0a\u4e00\u4e2a\u4f5c\u4e1a\u9879\u7684\u7ed3\u679c\u4f5c\u4e3a\u672c\u4f5c\u4e1a\u9879\u7684\u53c2\u6570.
-ActionShell.Tab.General.Label=\u4e00\u822c
-ActionShell.Tab.Script.Label=\u811a\u672c
-ActionShell.InsertScript.Label=\u63d2\u5165\u811a\u672c
\ No newline at end of file
+ActionShell.UnexpectedError=\u8FD0\u884C Shell \u811A\u672C {0} \u65F6\u51FA\u9519\u672A\u77E5\u9519\u8BEF\: {1}
+ActionShell.WorkingDirectory.Label=\u5DE5\u4F5C\u8DEF\u5F84\:
+ActionShell.keyword=shell
diff --git a/plugins/actions/simpleeval/src/main/resources/org/apache/hop/workflow/actions/simpleeval/messages/messages_zh_CN.properties b/plugins/actions/simpleeval/src/main/resources/org/apache/hop/workflow/actions/simpleeval/messages/messages_zh_CN.properties
index fb2f778..f030b1e 100644
--- a/plugins/actions/simpleeval/src/main/resources/org/apache/hop/workflow/actions/simpleeval/messages/messages_zh_CN.properties
+++ b/plugins/actions/simpleeval/src/main/resources/org/apache/hop/workflow/actions/simpleeval/messages/messages_zh_CN.properties
@@ -16,72 +16,73 @@
 # limitations under the License.
 #
 #
-#
+ActionSimple.Error.Exception.UnableLoadXML=Unable to load action from XML node 
+ActionSimpleEval.CheckingVariable=Checking variable [{0}] ...
+ActionSimpleEval.CompareValue.Label=\u503C
+ActionSimpleEval.CompareValue.Tooltip=\u503C
 ActionSimpleEval.Description=Evaluate one field or variable
-ActionSimpleEval.Name=\u68c0\u9a8c\u5b57\u6bb5\u7684\u503c
-ActionSimpleEval.Error.VariableMissing=Variable name is missing\!
-ActionSimpleEval.SuccessWhenGreaterOrEqualThan.Label=If value is greater or equal
-ActionSimpleEval.SuccessNumberCondition.Label=\u6210\u529f\u6761\u4ef6
-ActionSimpleEval.MaxValue.Label=Max
-ActionSimpleEval.Variable.Tooltip=\u53d8\u91cf\u540d\u79f0
-ActionSimpleEval.FieldType.Label=\u7c7b\u578b
-ActionSimpleEval.VariableSet=ActionSimpleEval.VariableSet\=Variable [{0}] was set.
-ActionSimpleEval.SuccessWhenNotStartWith.Label=\u5982\u679c\u503c\u7684\u5f00\u5934\u4e0d\u662f
-ActionSimpleEval.successWhenSet.Label=Success if variable set
-ActionSimpleEval.SuccessWhenFalse.Label=\u5982\u679c\u503c\u662fFALSE
-ActionSimpleEval.SuccessWhenSmallThan.Label=\u5982\u679c\u503c\u5c0f\u4e8e
+ActionSimpleEval.Error.Exception.UnableLoadXML=Unable to load action of type ''Simple evaluation'' from XML node
 ActionSimpleEval.Error.FieldNotExist=We can not field [{0}] in the previous action result\!
-ActionSimpleEval.Log.CompareWithValues=Comparing incoming value [{0}] (min) and [{1}] (max)...
-ActionSimpleEval.Error.NoRows=The previous result is empty\!
-ActionSimpleEval.ValueType.Label=\u68c0\u9a8c
-ActionSimpleEval.SuccessWhenDifferent.Label=\u5982\u679c\u503c\u4e0d\u7b49\u4e8e
-ActionSimple.Error.Exception.UnableLoadXML=Unable to load action from XML node 
-ActionSimpleEval.MinValue.Label=Min
-ActionSimpleEval.SuccessWhenRegExp.Label=If value valid regex
-ActionSimpleEval.MinValue.Tooltip=Min
-ActionSimpleEval.VariableNotSet=ActionSimpleEval.VariableNotSet\=Variable [{0}] was not set\!
-ActionSimpleEval.CompareValue.Tooltip=\u503c
-ActionSimpleEval.SuccessWhenTrue.Label=\u5982\u679c\u503c\u662fTRUE
-ActionSimpleEval.SuccessWhenNotEndWith.Label=\u5982\u679c\u503c\u7684\u7ed3\u5c3e\u4e0d\u662f
-ActionSimpleEval.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0\: 
 ActionSimpleEval.Error.IncorrectDates=Incorrect dates\! {0} (min) must be before {1} (max)\!
-ActionSimpleEval.FieldName.Label=\u5b57\u6bb5\u540d
-ActionSimpleEval.SuccessBetween.Label=If value is between
-ActionSimpleEval.Title=\u68c0\u9a8c\u5b57\u6bb5\u7684\u503c
+ActionSimpleEval.Error.IncorrectNumbers=Incorrect numbers\! [{0}] (min) must be before [{1}] (max)\!
+ActionSimpleEval.Error.NoRows=The previous result is empty\!
 ActionSimpleEval.Error.UnparsableBoolean=Error converting to boolean value [{0}]\! Error {1}
-ActionSimpleEval.SuccessWhenEqual.Label=\u5982\u679c\u503c\u4e0d\u7b49\u4e8e
-ActionSimpleEval.EvalPreviousField.Label=\u4e0a\u4e00\u6b65\u7ed3\u679c\u7684\u5b57\u6bb5
-ActionSimpleEval.Error.Exception.UnableLoadXML=Unable to load action of type ''Simple evaluation'' from XML node
-ActionSimpleEval.FieldTypeBoolean.Label=Boolean
-ActionSimpleEval.SuccessWhenGreaterThan.Label=\u5982\u679c\u503c\u5927\u4e8e
-ActionSimpleEval.SuccessWhenStartWith.Label=\u5982\u679c\u503c\u7684\u5f00\u59cb\u662f
 ActionSimpleEval.Error.UnparsableDate=Can not convert value {0} to date\!
-ActionSimpleEval.FieldTypeString.Label=String
-ActionSimpleEval.SuccessBooleanCondition.Label=\u6210\u529f\u6761\u4ef6
-ActionSimpleEval.Log.ValueToevaluate=Value to evaluate is {0}
 ActionSimpleEval.Error.UnparsableNumber=Can not convert value [{0}] to number\! {1}
-ActionSimpleEval.SuccessCondition.Label=\u6210\u529f\u6761\u4ef6
+ActionSimpleEval.Error.VariableMissing=Variable name is missing\!
+ActionSimpleEval.EvalPreviousField.Label=\u4E0A\u4E00\u6B65\u7ED3\u679C\u7684\u5B57\u6BB5
+ActionSimpleEval.EvalVariable.Label=\u53D8\u91CF
+ActionSimpleEval.FieldName.Label=\u5B57\u6BB5\u540D
+ActionSimpleEval.FieldName.Tooltip=\u5B57\u6BB5\u540D\u79F0
+ActionSimpleEval.FieldType.Label=\u7C7B\u578B
+ActionSimpleEval.FieldTypeBoolean.Label=Boolean
+ActionSimpleEval.FieldTypeDateTime.Label=Date time
 ActionSimpleEval.FieldTypeNumber.Label=Number
-ActionSimpleEval.Mask.Label=\u63a9\u7801
-ActionSimpleEval.SuccessWhenSet.Tooltip=\u5f53\u53d8\u91cf\u5df2\u8bbe\u7f6e
-ActionSimpleEval.SuccessWhenContains.Label=\u5982\u679c\u503c\u5305\u542b
-ActionSimpleEval.SuccessWhenSet.Label=Success when variable set
+ActionSimpleEval.FieldTypeString.Label=String
+ActionSimpleEval.Log.ArgFromPrevious.Found=found [{0}] row(s) from previous result
+ActionSimpleEval.Log.CompareWithValue=Comparing incoming value [{0}] with value [{1}]...
+ActionSimpleEval.Log.CompareWithValues=Comparing incoming value [{0}] (min) and [{1}] (max)...
+ActionSimpleEval.Log.ValueToevaluate=Value to evaluate is {0}
+ActionSimpleEval.Mask.Label=\u63A9\u7801
+ActionSimpleEval.MaxValue.Label=Max
 ActionSimpleEval.MaxValue.Tooltip=Max
-ActionSimpleEval.Variable.Label=\u53d8\u91cf\u540d
+ActionSimpleEval.MinValue.Label=Min
+ActionSimpleEval.MinValue.Tooltip=Min
+ActionSimpleEval.Name=\u68C0\u9A8C\u5B57\u6BB5\u7684\u503C
+ActionSimpleEval.Name.Default=\u6821\u9A8C\u5B57\u6BB5\u503C
+ActionSimpleEval.Name.Label=Action \u540D\u79F0\: 
+ActionSimpleEval.Source.Group.Label=\u6E90
+ActionSimpleEval.SuccessBetween.Label=If value is between
+ActionSimpleEval.SuccessBooleanCondition.Label=\u6210\u529F\u6761\u4EF6
+ActionSimpleEval.SuccessCondition.Label=\u6210\u529F\u6761\u4EF6
+ActionSimpleEval.SuccessNumberCondition.Label=\u6210\u529F\u6761\u4EF6
+ActionSimpleEval.SuccessOn.Group.Label=\u6210\u529F\u6761\u4EF6
+ActionSimpleEval.SuccessWhenContains.Label=\u5982\u679C\u503C\u5305\u542B
+ActionSimpleEval.SuccessWhenDifferent.Label=\u5982\u679C\u503C\u4E0D\u7B49\u4E8E
+ActionSimpleEval.SuccessWhenEndWith.Label=If value ends with
+ActionSimpleEval.SuccessWhenEqual.Label=\u5982\u679C\u503C\u4E0D\u7B49\u4E8E
+ActionSimpleEval.SuccessWhenFalse.Label=\u5982\u679C\u503C\u662FFALSE
+ActionSimpleEval.SuccessWhenGreaterOrEqualThan.Label=If value is greater or equal
+ActionSimpleEval.SuccessWhenGreaterThan.Label=\u5982\u679C\u503C\u5927\u4E8E
+ActionSimpleEval.SuccessWhenInList.Label=\u5982\u679C\u503C\u5728\u5217\u8868\u4E2D
+ActionSimpleEval.SuccessWhenNotContains.Label=\u5982\u679C\u503C\u4E0D\u5305\u542B
+ActionSimpleEval.SuccessWhenNotEndWith.Label=\u5982\u679C\u503C\u7684\u7ED3\u5C3E\u4E0D\u662F
+ActionSimpleEval.SuccessWhenNotInList.Label=\u5982\u679C\u503C\u4E0D\u5728\u5217\u8868\u4E2D
+ActionSimpleEval.SuccessWhenNotStartWith.Label=\u5982\u679C\u503C\u7684\u5F00\u5934\u4E0D\u662F
+ActionSimpleEval.SuccessWhenRegExp.Label=If value valid regex
+ActionSimpleEval.SuccessWhenSet.Label=Success when variable set
+ActionSimpleEval.SuccessWhenSet.Tooltip=\u5F53\u53D8\u91CF\u5DF2\u8BBE\u7F6E
 ActionSimpleEval.SuccessWhenSmallOrEqualThan.Label=If value is smaller or equal
+ActionSimpleEval.SuccessWhenSmallThan.Label=\u5982\u679C\u503C\u5C0F\u4E8E
+ActionSimpleEval.SuccessWhenStartWith.Label=\u5982\u679C\u503C\u7684\u5F00\u59CB\u662F
+ActionSimpleEval.SuccessWhenTrue.Label=\u5982\u679C\u503C\u662FTRUE
+ActionSimpleEval.Tab.General.Label=\u4E00\u822C
+ActionSimpleEval.Title=\u68C0\u9A8C\u5B57\u6BB5\u7684\u503C
+ActionSimpleEval.ValueType.Label=\u68C0\u9A8C
+ActionSimpleEval.Variable.Label=\u53D8\u91CF\u540D
+ActionSimpleEval.Variable.Tooltip=\u53D8\u91CF\u540D\u79F0
+ActionSimpleEval.VariableNotSet=ActionSimpleEval.VariableNotSet\=Variable [{0}] was not set\!
+ActionSimpleEval.VariableSet=ActionSimpleEval.VariableSet\=Variable [{0}] was set.
+ActionSimpleEval.keyword=simple,evaluation
+ActionSimpleEval.successWhenSet.Label=Success if variable set
 ActionSimpleEval.successWhenSet.Tooltip=The action will success if the variable was set\notherwise it will fail.
-ActionSimpleEval.EvalVariable.Label=\u53d8\u91cf
-ActionSimpleEval.SuccessWhenNotContains.Label=\u5982\u679c\u503c\u4e0d\u5305\u542b
-ActionSimpleEval.SuccessWhenEndWith.Label=If value ends with
-ActionSimpleEval.Name.Default=\u6821\u9a8c\u5b57\u6bb5\u503c
-ActionSimpleEval.Log.ArgFromPrevious.Found=found [{0}] row(s) from previous result
-ActionSimpleEval.Source.Group.Label=\u6e90
-ActionSimpleEval.Tab.General.Label=\u4e00\u822c
-ActionSimpleEval.Log.CompareWithValue=Comparing incoming value [{0}] with value [{1}]...
-ActionSimpleEval.CompareValue.Label=\u503c
-ActionSimpleEval.SuccessOn.Group.Label=\u6210\u529f\u6761\u4ef6
-ActionSimpleEval.FieldName.Tooltip=\u5b57\u6bb5\u540d\u79f0
-ActionSimpleEval.Error.IncorrectNumbers=Incorrect numbers\! [{0}] (min) must be before [{1}] (max)\!
-ActionSimpleEval.CheckingVariable=Checking variable [{0}] ...
-ActionSimpleEval.SuccessWhenInList.Label=\u5982\u679c\u503c\u5728\u5217\u8868\u4e2d
-ActionSimpleEval.SuccessWhenNotInList.Label=\u5982\u679c\u503c\u4e0d\u5728\u5217\u8868\u4e2d
\ No newline at end of file
diff --git a/plugins/actions/snmptrap/src/main/resources/org/apache/hop/workflow/actions/snmptrap/messages/messages_zh_CN.properties b/plugins/actions/snmptrap/src/main/resources/org/apache/hop/workflow/actions/snmptrap/messages/messages_zh_CN.properties
index 4de8f08..f4b8c4b 100644
--- a/plugins/actions/snmptrap/src/main/resources/org/apache/hop/workflow/actions/snmptrap/messages/messages_zh_CN.properties
+++ b/plugins/actions/snmptrap/src/main/resources/org/apache/hop/workflow/actions/snmptrap/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,38 +15,45 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
+#
+ActionSNMPTrap.AdvancedSettings.Group.Label=\u9AD8\u7EA7
+ActionSNMPTrap.CanNotGetAddress=\u65E0\u6CD5\u83B7\u53D6\u670D\u52A1\u5668 [{0}] \u7684 IP \u5730\u5740
+ActionSNMPTrap.ComString.Label=\u56E2\u5730\u5B57\u7B26\u4E32
+ActionSNMPTrap.ComString.Tooltip=\u56E2\u4F53\u5B57\u7B26\u4E32
+ActionSNMPTrap.Connected.NOK.ConnectionBad=\u670D\u52A1\u5668 [{0}] \u65E0\u6CD5\u8BBF\u95EE\!
+ActionSNMPTrap.Connected.OK=\u670D\u52A1\u5668 [{0}] \u65E0\u6CD5\u8BBF\u95EE!
+ActionSNMPTrap.Connected.Title.Bad=\u9519\u8BEF
+ActionSNMPTrap.Connected.Title.Ok=\u6210\u529F
 ActionSNMPTrap.Description=Send SNMP trap to a target host
-ActionSNMPTrap.Name=\u53d1\u9001 SNMP \u81ea\u9677
-ActionSNMPTrap.ComString.Label=\u56e2\u5730\u5b57\u7b26\u4e32
-ActionSNMPTrap.Passphrase.Label=\u5bc6\u94a5
-ActionSNMPTrap.Port.Tooltip=\u670d\u52a1\u5668\u7aef\u53e3
-ActionSNMPTrap.Timeout.Tooltip=\u8bbe\u7f6e\u8d85\u65f6\u65f6\u95f4\uff08\u79d2\uff09\uff0c0\u8868\u793a\u65e0\u9650\u5236
-ActionSNMPTrap.Retry.Label=\u91cd\u8bd5
-ActionSNMPTrap.MessageGroup.Group.Label=\u6d88\u606f
-ActionSNMPTrap.TestConnection.Tooltip=\u6d4b\u8bd5\u76ee\u6807\u4e3b\u673a\u662f\u5426\u53ef\u7528
-ActionSNMPTrap.Message.Label=\u6d88\u606f
-ActionSNMPTrap.TargetType.Label=\u76ee\u6807\u7c7b\u578b
-ActionSNMPTrap.User.Tooltip=\u7528\u6237
-ActionSNMPTrap.Connected.Title.Bad=\u9519\u8bef
-ActionSNMPTrap.EngineID.Tooltip=\u5f15\u64ce ID
-ActionSNMPTrap.Tab.General.Label=\u4e00\u822c
-ActionSNMPTrap.Name.Default=\u53d1\u9001 SNMP \u81ea\u9677
-ActionSNMPTrap.ServerSettings.Group.Label=\u670d\u52a1\u5668
-ActionSNMPTrap.Title=\u53d1\u9001SNMP\u81ea\u9677
-ActionSNMPTrap.Server.Label=\u670d\u52a1\u5668\u540d\u79f0/IP\u5730\u5740
-ActionSNMPTrap.TargetType.User=\u7528\u6237\uff08SNMP V3)
-ActionSNMPTrap.Timeout.Label=\u8d85\u65f6
+ActionSNMPTrap.EngineID.Label=\u5F15\u64CE ID
+ActionSNMPTrap.EngineID.Tooltip=\u5F15\u64CE ID
+ActionSNMPTrap.ErrorGetting=\u8FD0\u884C\u8BE5 Action \u65F6\u51FA\u9519\:
+ActionSNMPTrap.Message.Label=\u6D88\u606F
+ActionSNMPTrap.MessageGroup.Group.Label=\u6D88\u606F
+ActionSNMPTrap.Name=\u53D1\u9001 SNMP \u81EA\u9677
+ActionSNMPTrap.Name.Default=\u53D1\u9001 SNMP \u81EA\u9677
+ActionSNMPTrap.Name.Label=Action \u540D\u79F0\:
+ActionSNMPTrap.Name.Tooltip=Action \u540D\u79F0
 ActionSNMPTrap.OID.Label=OID
 ActionSNMPTrap.OID.Tooltip=OID
-ActionSNMPTrap.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0:
-ActionSNMPTrap.Passphrase.Tooltip=\u5bc6\u94a5
-ActionSNMPTrap.Port.Label=\u7aef\u53e3
-ActionSNMPTrap.TestConnection.Label=\u6d4b\u8bd5\u8fde\u63a5
-ActionSNMPTrap.Retry.Tooltip=\u91cd\u8bd5
-ActionSNMPTrap.ComString.Tooltip=\u56e2\u4f53\u5b57\u7b26\u4e32
-ActionSNMPTrap.Server.Tooltip=SNMP\u670d\u52a1\u5668\u7684\u670d\u52a1\u5668\u540d\u6216\u8005IP\u5730\u5740
-ActionSNMPTrap.Connected.Title.Ok=\u6210\u529f
+ActionSNMPTrap.Passphrase.Label=\u5BC6\u94A5
+ActionSNMPTrap.Passphrase.Tooltip=\u5BC6\u94A5
+ActionSNMPTrap.Port.Label=\u7AEF\u53E3
+ActionSNMPTrap.Port.Tooltip=\u670D\u52A1\u5668\u7AEF\u53E3
+ActionSNMPTrap.Retry.Label=\u91CD\u8BD5
+ActionSNMPTrap.Retry.Tooltip=\u91CD\u8BD5
+ActionSNMPTrap.Server.Label=\u670D\u52A1\u5668\u540D\u79F0/IP\u5730\u5740
+ActionSNMPTrap.Server.Tooltip=SNMP\u670D\u52A1\u5668\u7684\u670D\u52A1\u5668\u540D\u6216\u8005IP\u5730\u5740
+ActionSNMPTrap.ServerSettings.Group.Label=\u670D\u52A1\u5668
+ActionSNMPTrap.Tab.General.Label=\u4E00\u822C
+ActionSNMPTrap.TargetType.Community=\u57FA\u4E8E\u793E\u533A(SNMP V1)
+ActionSNMPTrap.TargetType.Label=\u534F\u8BAE\u7C7B\u578B
+ActionSNMPTrap.TargetType.User=\u57FA\u4E8E\u7528\u6237\u7684\u5B89\u5168\u534F\u8BAE(SNMP V3)
+ActionSNMPTrap.TestConnection.Label=\u6D4B\u8BD5\u8FDE\u63A5
+ActionSNMPTrap.TestConnection.Tooltip=\u6D4B\u8BD5\u76EE\u6807\u4E3B\u673A\u662F\u5426\u53EF\u7528
+ActionSNMPTrap.Timeout.Label=\u8D85\u65F6
+ActionSNMPTrap.Timeout.Tooltip=\u8BBE\u7F6E\u8D85\u65F6\u65F6\u95F4 (\u79D2), 0\u8868\u793A\u65E0\u9650\u5236
+ActionSNMPTrap.Title=\u53D1\u9001SNMP\u81EA\u9677
 ActionSNMPTrap.User.Label=\u7528\u6237
-ActionSNMPTrap.Name.Tooltip=\u4f5c\u4e1a\u9879\u540d\u79f0
-ActionSNMPTrap.EngineID.Label=\u5f15\u64ce ID
-ActionSNMPTrap.AdvancedSettings.Group.Label=\u9ad8\u7ea7
+ActionSNMPTrap.User.Tooltip=\u7528\u6237
+ActionSNMPTrap.keyword=snmp,trap
diff --git a/plugins/actions/sql/src/main/resources/org/apache/hop/workflow/actions/sql/messages/messages_zh_CN.properties b/plugins/actions/sql/src/main/resources/org/apache/hop/workflow/actions/sql/messages/messages_zh_CN.properties
index a563b1f..ef1f24d 100644
--- a/plugins/actions/sql/src/main/resources/org/apache/hop/workflow/actions/sql/messages/messages_zh_CN.properties
+++ b/plugins/actions/sql/src/main/resources/org/apache/hop/workflow/actions/sql/messages/messages_zh_CN.properties
@@ -16,29 +16,30 @@
 # limitations under the License.
 #
 #
-#
-ActionSQL.Description=\u5728\u67d0\u4e2a\u6570\u636e\u5e93\u8fde\u63a5\u4e0a\u6267\u884cSQL
+ActionSQL.Description=\u5728\u67D0\u4E2A\u6570\u636E\u5E93\u8FDE\u63A5\u4E0A\u6267\u884CSQL
+ActionSQL.ErrorRunAction=\u6267\u884C\u8BE5 Action \u65F6\u53D1\u751F\u4E86\u4E00\u4E2A\u9519\u8BEF\:{0}
+ActionSQL.ErrorRunningSQLfromFile=\u6267\u884C SQL \u6587\u4EF6\u9519\u8BEF
+ActionSQL.Filename.Label=SQL \u6587\u4EF6\u540D
+ActionSQL.Filename.Tooltip=SQL \u6587\u4EF6\u540D
+ActionSQL.Filetype.All=\u6240\u6709\u6587\u4EF6
+ActionSQL.Filetype.Sql=Sql \u6587\u4EF6
+ActionSQL.Filetype.Text=\u6587\u672C\u6587\u4EF6
+ActionSQL.LineNr.Label=\u884C\u53F7\:{0}
+ActionSQL.Log.SQlStatement=\u8FD0\u884C SQL \:{0}
 ActionSQL.Name=SQL
-ActionSQL.ErrorRunAction=\u6267\u884c\u8be5\u4f5c\u4e1a\u9879\u65f6\u53d1\u751f\u4e86\u4e00\u4e2a\u9519\u8bef\:{0}
-ActionSQL.NoSQLFileSpecified=\u8bf7\u6307\u5b9a SQL \u6587\u4ef6\u540d\!
-ActionSQL.Filename.Tooltip=SQL \u6587\u4ef6\u540d
-ActionSQL.Script.Label=SQL \u811a\u672c\:
-ActionSQL.Filetype.All=\u6240\u6709\u6587\u4ef6
-ActionSQL.SQLFileNotExist=\u65e0\u6cd5\u627e\u5230\u6587\u4ef6 [{0}]\!
-ActionSQL.UseVariableSubst.Label=\u4f7f\u7528\u53d8\u91cf\u66ff\u6362
-ActionSQL.Position.Label=\u884c {0} \u5217 {1}
 ActionSQL.Name.Default=SQL
-ActionSQL.SQLFromFile.Label=\u4ece\u6587\u4ef6\u4e2d\u5f97\u5230\u7684 SQL
-ActionSQL.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0
-ActionSQL.Filename.Label=SQL \u6587\u4ef6\u540d
-ActionSQL.SQLFileExists=SQL \u6587\u4ef6 [{0}] \u5b58\u5728
-ActionSQL.Log.SQlStatement=\u8fd0\u884c SQL \:{0}
-ActionSQL.LineNr.Label=\u884c\u53f7\:{0}
-ActionSQL.ErrorRunningSQLfromFile=\u6267\u884c SQL \u6587\u4ef6\u9519\u8bef
-ActionSQL.NoDatabaseConnection=\u6ca1\u6709\u5b9a\u4e49\u6570\u636e\u5e93\u8fde\u63a5.
-ActionSQL.UseVariableSubst.Tooltip=\u4f7f\u7528\u5b9e\u9645\u503c\u6765\u66ff\u6362 SQL \u811a\u672c\u91cc\u7684\u73af\u5883\u53d8\u91cf.
+ActionSQL.Name.Label=Action \u540D\u79F0:
+ActionSQL.NoDatabaseConnection=\u6CA1\u6709\u5B9A\u4E49\u6570\u636E\u5E93\u8FDE\u63A5.
+ActionSQL.NoSQLFileSpecified=\u8BF7\u6307\u5B9A SQL \u6587\u4EF6\u540D\!
+ActionSQL.Position.Label=\u884C {0} \u5217 {1}
+ActionSQL.SQLFileExists=SQL \u6587\u4EF6 [{0}] \u5B58\u5728
+ActionSQL.SQLFileNotExist=\u65E0\u6CD5\u627E\u5230\u6587\u4EF6 [{0}]\!
+ActionSQL.SQLFromFile.Label=\u4ECE\u6587\u4EF6\u4E2D\u5F97\u5230\u7684 SQL
+ActionSQL.SQLFromFile.Tooltip=\u4ECE\u6587\u4EF6\u4E2D\u5F97\u5230\u7684 SQL
+ActionSQL.Script.Label=SQL \u811A\u672C\:
+ActionSQL.SendOneStatement.Label=\u5C06SQL\u811A\u672C\u4F5C\u4E3A\u5355\u6761\u8BED\u53E5
+ActionSQL.SendOneStatement.Tooltip=\u9009\u4E2D\u5219\u5C06 SQL \u505A\u4E3A\u5355\u6761\u6267\u884C\u8BED\u53E5, \u5426\u5219 ';' \u7B26\u5C06\u505A\u4E3A\u5206\u9694\u7B26
 ActionSQL.Title=SQL
-ActionSQL.Filetype.Text=\u6587\u672c\u6587\u4ef6
-ActionSQL.Filetype.Sql=Sql \u6587\u4ef6
-ActionSQL.SQLFromFile.Tooltip=\u4ece\u6587\u4ef6\u4e2d\u5f97\u5230\u7684 SQL
-ActionSQL.SendOneStatement.Label=\u5c06SQL\u811a\u672c\u4f5c\u4e3a\u4e00\u6761\u8bed\u53e5\u53d1\u9001
\ No newline at end of file
+ActionSQL.UseVariableSubst.Label=\u4F7F\u7528\u53D8\u91CF\u66FF\u6362
+ActionSQL.UseVariableSubst.Tooltip=\u4F7F\u7528\u5B9E\u9645\u503C\u6765\u66FF\u6362 SQL \u811A\u672C\u91CC\u7684\u73AF\u5883\u53D8\u91CF.
+ActionSql.keyword=sql
diff --git a/plugins/actions/success/src/main/resources/org/apache/hop/workflow/actions/success/messages/messages_zh_CN.properties b/plugins/actions/success/src/main/resources/org/apache/hop/workflow/actions/success/messages/messages_zh_CN.properties
index c7cc8cc..9bf369c 100644
--- a/plugins/actions/success/src/main/resources/org/apache/hop/workflow/actions/success/messages/messages_zh_CN.properties
+++ b/plugins/actions/success/src/main/resources/org/apache/hop/workflow/actions/success/messages/messages_zh_CN.properties
@@ -16,10 +16,10 @@
 # limitations under the License.
 #
 #
-#
 ActionSuccess.Description=Success
-ActionSuccess.Name=\u6210\u529f
-ActionSuccessDialog.Title=\u6210\u529f 
-ActionSuccessDialog.ActionName.Label=\u4f5c\u4e1a\u9879\u540d\u79f0
-ActionSuccessDialog.Name.Default=\u6210\u529f
-ActionSuccessDialog.Label=\u6210\u529f
+ActionSuccess.Name=\u6210\u529F
+ActionSuccess.keyword=success
+ActionSuccessDialog.ActionName.Label=Action \u540D\u79F0:
+ActionSuccessDialog.Label=\u6210\u529F
+ActionSuccessDialog.Name.Default=\u6210\u529F
+ActionSuccessDialog.Title=\u6210\u529F 
diff --git a/plugins/actions/tableexists/src/main/resources/org/apache/hop/workflow/actions/tableexists/messages/messages_zh_CN.properties b/plugins/actions/tableexists/src/main/resources/org/apache/hop/workflow/actions/tableexists/messages/messages_zh_CN.properties
index 8ef5c19..f2a0896 100644
--- a/plugins/actions/tableexists/src/main/resources/org/apache/hop/workflow/actions/tableexists/messages/messages_zh_CN.properties
+++ b/plugins/actions/tableexists/src/main/resources/org/apache/hop/workflow/actions/tableexists/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,15 +15,18 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-ActionTableExists.Description=\u68c0\u67e5\u662f\u5426\u5728\u67d0\u4e2a\u6570\u636e\u5e93\u91cc\u5df2\u7ecf\u5b58\u5728\u67d0\u4e2a\u8868
-ActionTableExists.Name=\u68c0\u67e5\u8868\u662f\u5426\u5b58\u5728
-ActionTableExists.Tablename.Label=\u8868\u540d:
-TableExists.Error.RunningAction=\u5728\u6267\u884c\u8be5\u6b65\u9aa4\u65f6\u51fa\u9519:{0}
-TableExists.Error.NoConnectionDefined=\u6ca1\u6709\u5b9a\u4e49\u6570\u636e\u5e93\u8fde\u63a5
-TableExists.Log.SchemaTable=\u4f60\u6307\u5b9a\u4e86\u4e00\u4e2a\u6a21\u5f0f:\u65b0\u6a21\u5f0f\u8868\u662f{0}
-TableExists.Log.TableNotExists=\u8868[{0}]\u4e0d\u5b58\u5728!
-TableExists.Log.TableExists=\u8868[{0}]\u5b58\u5728
-ActionTableExists.Title=\u68c0\u67e5\u8868\u662f\u5426\u5b58\u5728
-ActionTableExists.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0:
-ActionTableExists.Schemaname.Label=\u6a21\u5f0f\u540d\u79f0:
-ActionTableExists.Name.Default=\u8868\u5b58\u5728
+#
+ActionTableExists.Description=\u68C0\u67E5\u662F\u5426\u5728\u67D0\u4E2A\u6570\u636E\u5E93\u91CC\u5DF2\u7ECF\u5B58\u5728\u67D0\u4E2A\u8868
+ActionTableExists.Name=\u68C0\u67E5\u8868\u662F\u5426\u5B58\u5728
+ActionTableExists.Name.Default=\u8868\u5B58\u5728
+ActionTableExists.Name.Label=Action \u540D\u79F0\:
+ActionTableExists.Schemaname.Label=\u6A21\u5F0F\u540D\u79F0\:
+ActionTableExists.Tablename.Label=\u8868\u540D\:
+ActionTableExists.Title=\u68C0\u67E5\u8868\u662F\u5426\u5B58\u5728
+ActionTableExists.keyword=table,exist
+TableExists.Error.NoConnectionDefined=\u6CA1\u6709\u5B9A\u4E49\u6570\u636E\u5E93\u8FDE\u63A5
+TableExists.Error.RunningAction=\u5728\u6267\u884C\u8BE5 Transform \u65F6\u51FA\u9519\:{0}
+TableExists.Log.SchemaTable=\u4F60\u6307\u5B9A\u4E86\u4E00\u4E2A\u6A21\u5F0F\:\u65B0\u6A21\u5F0F\u8868\u662F{0}
+TableExists.Log.TableExists=\u8868[{0}]\u5B58\u5728
+TableExists.Log.TableNotExists=\u8868[{0}]\u4E0D\u5B58\u5728\!
+TableExists.Meta.UnableLoadXml=\u65E0\u6CD5\u6839\u636E XML \u8282\u70B9\u52A0\u8F7D '\u8868\u5B58\u5728' \u7C7B\u578B\u7684 Action
diff --git a/plugins/actions/telnet/src/main/resources/org/apache/hop/workflow/actions/telnet/messages/messages_zh_CN.properties b/plugins/actions/telnet/src/main/resources/org/apache/hop/workflow/actions/telnet/messages/messages_zh_CN.properties
index c7a8abb..fb094fb 100644
--- a/plugins/actions/telnet/src/main/resources/org/apache/hop/workflow/actions/telnet/messages/messages_zh_CN.properties
+++ b/plugins/actions/telnet/src/main/resources/org/apache/hop/workflow/actions/telnet/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,11 +15,17 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-ActionTelnet.Name=\u8fdc\u7a0b\u767b\u5f55\u4e00\u53f0\u4e3b\u673a
-ActionTelnet.Name.Default=\u8fdc\u7a0b\u767b\u5f55\u4e00\u4e2a\u4e3b\u673a
-ActionTelnet.Port.Label=\u7aef\u53e3:
-ActionTelnet.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0:
-ActionTelnet.TimeOut.Label=\u8d85\u65f6(\u6beb\u79d2):
-ActionTelnet.Hostname.Label=\u4e3b\u673a\u540d/IP:
-ActionTelnet.SpecifyHost.Label=\u8bf7\u6307\u5b9a\u4e00\u4e2a\u4e3b\u673aIP\u6216\u8005\u4e3b\u673a\u540d\u79f0
-ActionTelnet.Title=\u8fdc\u7a0b\u767b\u5f55\u4e00\u53f0\u4e3b\u673a
+#
+ActionTelnet.Description=\u6267\u884C telnet \u547D\u4EE4
+ActionTelnet.Error.Label=\u9519\u8BEF\:
+ActionTelnet.Hostname.Label=\u4E3B\u673A\u540D/IP\:
+ActionTelnet.NOK.Label=\u65E0\u6CD5 telnet \u5230\u4E3B\u673A {0} \u7684 {1} \u7AEF\u53E3
+ActionTelnet.Name=\u8FDC\u7A0B\u767B\u5F55\u4E00\u53F0\u4E3B\u673A
+ActionTelnet.Name.Default=\u8FDC\u7A0B\u767B\u5F55\u4E00\u4E2A\u4E3B\u673A
+ActionTelnet.Name.Label=Action \u540D\u79F0\:
+ActionTelnet.OK.Label=\u4E3B\u673A [{0}] \u7684 {1} \u7AEF\u53E3\u65E0\u6CD5\u8BBF\u95EE
+ActionTelnet.Port.Label=\u7AEF\u53E3\:
+ActionTelnet.SpecifyHost.Label=\u8BF7\u6307\u5B9A\u4E00\u4E2A\u4E3B\u673AIP\u6216\u8005\u4E3B\u673A\u540D\u79F0
+ActionTelnet.TimeOut.Label=\u8D85\u65F6(\u6BEB\u79D2)\:
+ActionTelnet.Title=\u8FDC\u7A0B\u767B\u5F55\u4E00\u53F0\u4E3B\u673A
+ActionTelnet.keyword=telnet
diff --git a/plugins/actions/truncatetables/src/main/resources/org/apache/hop/workflow/actions/truncatetables/messages/messages_zh_CN.properties b/plugins/actions/truncatetables/src/main/resources/org/apache/hop/workflow/actions/truncatetables/messages/messages_zh_CN.properties
index e65aa7c..fd9fcea 100644
--- a/plugins/actions/truncatetables/src/main/resources/org/apache/hop/workflow/actions/truncatetables/messages/messages_zh_CN.properties
+++ b/plugins/actions/truncatetables/src/main/resources/org/apache/hop/workflow/actions/truncatetables/messages/messages_zh_CN.properties
@@ -16,21 +16,33 @@
 # limitations under the License.
 #
 #
-#
+ActionTruncateTables.ArgEmpty=\u8BE5\u53C2\u6570\u4E3A\u7A7A\!
+ActionTruncateTables.ConnectionError.DialogMessage=\u9519\u8BEF, \u65E0\u6CD5\u83B7\u53D6\u8868\u5217\u8868\!
 ActionTruncateTables.Description=Truncate one or several tables.
-ActionTruncateTables.Name=\u6e05\u7a7a\u8868
-ActionTruncateTables.Title=\u6e05\u7a7a\u8868
-ActionTruncateTables.Fields.Schema.Tooltip=\u6a21\u5f0f
-ActionTruncateTables.Fields.Schema.Label=\u6a21\u5f0f\u540d\u79f0
-ActionTruncateTables.Name.Default=\u6e05\u7a7a\u8868
-ActionTruncateTables.Previous.Tooltip=\u5c06\u4e0a\u4e00\u4e2a\u4f5c\u4e1a\u9879\u7684\u7ed3\u679c\u4f5c\u4e3a\u53c2\u6570\uff0c\u53c2\u6570\u7684\u987a\u5e8f\u5fc5\u987b\u662f:\r\n1.\u8868\u540d\r\n2.\u6a21\u5f0f\u540d
-ActionTruncateTables.Fields.Table.Tooltip=\u8981\u6e05\u7a7a\u7684\u8868
-ActionTruncateTables.SelectTables.Message=\u9009\u62e9\u4e00\u4e2a\u6216\u8005\u51e0\u4e2a\u8868
-ActionTruncateTables.TableDelete.Button=&\u5220\u9664
-ActionTruncateTables.Previous.Label=\u5c06\u4e0a\u4e00\u4f5c\u4e1a\u9879\u7684\u7ed3\u679c\u4f5c\u4e3a\u53c2\u6570
-ActionTruncateTables.GetTablenamesList.Auto=\u70b9\u51fb\u6b64\u5904\u8fd4\u56de\u8868\u540d\u5217\u8868
-ActionTruncateTables.Fields.Label=\u9009\u62e9\u7684\u8868
-ActionTruncateTables.SelectTables.Title=\u8868\u540d
-ActionTruncateTables.TableDelete.Tooltip=&\u5220\u9664\u9009\u4e2d\u7684\u9879
-ActionTruncateTables.Fields.Table.Label=\u8868\u540d
-ActionTruncateTables.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0:
+ActionTruncateTables.Error.CanNotFindTable=\u65E0\u6CD5\u627E\u5230\u8868 [{0}]\!
+ActionTruncateTables.Error.CanNotTruncateTables=\u65E0\u6CD5\u6E05\u7A7A\u8868 [{0}], \u5F02\u5E38\: {1}
+ActionTruncateTables.Error.RunningEntry=\u6267\u884C\u8BE5 Action \u65F6\u53D1\u751F\u9519\u8BEF\: {0}
+ActionTruncateTables.Fields.Label=\u9009\u62E9\u7684\u8868
+ActionTruncateTables.Fields.Schema.Label=\u6A21\u5F0F\u540D\u79F0\:
+ActionTruncateTables.Fields.Schema.Tooltip=\u6A21\u5F0F
+ActionTruncateTables.Fields.Table.Label=\u8868\u540D\:
+ActionTruncateTables.Fields.Table.Tooltip=\u8981\u6E05\u7A7A\u7684\u8868
+ActionTruncateTables.FoundPreviousRows=\u4ECE\u524D\u7F6E\u6267\u884C\u7ED3\u679C\u4E2D\u6536\u5230 {0} \u884C\u6570\u636E
+ActionTruncateTables.GetTablenamesList.Auto=\u70B9\u51FB\u6B64\u5904\u8FD4\u56DE\u8868\u540D\u5217\u8868
+ActionTruncateTables.Log.TableTruncated=\u8868 [{0}] \u5DF2\u7ECF\u6E05\u7A7A.
+ActionTruncateTables.Name=\u6E05\u7A7A\u8868
+ActionTruncateTables.Name.Default=\u6E05\u7A7A\u8868
+ActionTruncateTables.Name.Label=Action \u540D\u79F0\:
+ActionTruncateTables.NoDbConnection=\u672A\u6307\u5B9A\u6570\u636E\u5E93\u8FDE\u63A5.
+ActionTruncateTables.Previous.Label=\u5C06\u4E0A\u4E00 Action \u7684\u7ED3\u679C\u4F5C\u4E3A\u53C2\u6570\:
+ActionTruncateTables.Previous.Tooltip=\u5C06\u4E0A\u4E00\u4E2A Action \u7684\u7ED3\u679C\u4F5C\u4E3A\u53C2\u6570, \u53C2\u6570\u7684\u987A\u5E8F\u5FC5\u987B\u662F\:\r\n1.\u8868\u540D\r\n2.\u6A21\u5F0F\u540D
+ActionTruncateTables.ProcessingArg=\u6B63\u5728\u5904\u7406\: schema\=[{1}], table\=[{0}]
+ActionTruncateTables.ProcessingRow=\u5904\u7406\u6570\u636E\u884C schema\=[{1}], table\=[{0}] ...
+ActionTruncateTables.RowEmpty=\u8DF3\u8FC7\u7A7A\u6570\u636E\u884C(\u6CA1\u6709\u8868\u540D)...
+ActionTruncateTables.SelectTables.Message=\u9009\u62E9\u4E00\u4E2A\u6216\u8005\u51E0\u4E2A\u8868
+ActionTruncateTables.SelectTables.Title=\u8868\u540D
+ActionTruncateTables.TableDelete.Button=\u5220\u9664(&D)
+ActionTruncateTables.TableDelete.Tooltip=\u5220\u9664\u9009\u4E2D\u7684\u9879(&D)
+ActionTruncateTables.Title=\u6E05\u7A7A\u8868
+ActionTruncateTables.UnableLoadXML=\u65E0\u6CD5\u4ECE XML \u8282\u70B9\u52A0\u8F7D '\u6E05\u7A7A\u8868' \u7C7B\u578B\u7684 Action
+ActionTruncateTables.keyword=truncate,table
diff --git a/plugins/actions/unzip/src/main/resources/org/apache/hop/workflow/actions/unzip/messages/messages_zh_CN.properties b/plugins/actions/unzip/src/main/resources/org/apache/hop/workflow/actions/unzip/messages/messages_zh_CN.properties
index 84b17d0..4654a86 100644
--- a/plugins/actions/unzip/src/main/resources/org/apache/hop/workflow/actions/unzip/messages/messages_zh_CN.properties
+++ b/plugins/actions/unzip/src/main/resources/org/apache/hop/workflow/actions/unzip/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,99 +15,123 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
+#
+ActionUnZip.AddDate.Label=\u6587\u4EF6\u540D\u5305\u542B\u65E5\u671F
+ActionUnZip.AddDate.Tooltip=\u5982\u679C\u60F3\u5728\u6587\u4EF6\u540D\u91CC\u5305\u542B\u65E5\u671F,\u9009\u4E2D\u8BE5\u9009\u9879
+ActionUnZip.AddFileToResult.Label=\u5C06\u62BD\u53D6\u51FA\u6765\u7684\u6587\u4EF6\u589E\u52A0\u5230\u7ED3\u679C\u4E2D
+ActionUnZip.AddFileToResult.Tooltip=\u5982\u679C\u60F3\u5C06\u62BD\u53D6\u51FA\u6765\u7684\u6587\u4EF6\u589E\u52A0\u5230\u7ED3\u679C\u6587\u4EF6\u4E2D,\u4EE5\u65B9\u4FBF\u4E0B\u6E38\u901A\u9053\u4F7F\u7528\u8BE5\u6587\u4EF6, \u4F8B\u5982\u4F5C\u4E3A\u90AE\u4EF6\u7684\u9644\u4EF6,\u5219\u9009\u4E2D\u8BE5\u9009\u9879
+ActionUnZip.AddOriginalTimestamp.Label=\u6DFB\u52A0\u539F\u59CB\u65F6\u95F4\u6233
+ActionUnZip.AddOriginalTimestamp.Tooltip=\u63D0\u53D6\u51FA\u6587\u4EF6\u7684\u539F\u59CB\u65F6\u95F4\u6233
+ActionUnZip.AddTime.Label=\u6587\u4EF6\u540D\u5305\u542B\u65F6\u95F4
+ActionUnZip.AddTime.Tooltip=\u5982\u679C\u60F3\u5728\u6587\u4EF6\u540D\u4E2D\u5305\u542B\u65F6\u95F4,\u5219\u9009\u4E2D\u8BE5\u9009\u9879.
+ActionUnZip.AfterUnZip.Label=\u89E3\u538B\u7F29\u540E
+ActionUnZip.ArgsPrevious.Label=\u4ECE\u4E0A\u4E00\u4E2A Action \u83B7\u53D6\u53C2\u6570
+ActionUnZip.ArgsPrevious.Tooltip=\u4ECE\u4E0A\u4E00\u4E2A Action \u83B7\u53D6\u53C2\u6570
+ActionUnZip.BrowseFiles.Label=\u6587\u4EF6...
+ActionUnZip.BrowseFolders.Label=\u76EE\u5F55...
+ActionUnZip.Cant_Delete_File.Label=\u4E0D\u80FD\u5220\u9664\u6587\u4EF6 [{0}]
+ActionUnZip.Cant_Move_File.Label=\u4E0D\u80FD\u5C06\u6587\u4EF6 [{0}] \u79FB\u5230\u6587\u4EF6\u5939 [{1}].\u5F02\u5E38\: {1}
+ActionUnZip.CreateFolder.Label=\u65B0\u5EFA\u6587\u4EF6\u5939
+ActionUnZip.CreateFolder.Tooltip=\u5FC5\u8981\u65F6\u521B\u5EFA\u6587\u4EF6\u5939
+ActionUnZip.CreatingDirectory.Label=\u521B\u5EFA\u76EE\u5F55 [{0}]
+ActionUnZip.DateTimeFormat.Label=\u65E5\u671F\u65F6\u95F4\u683C\u5F0F
+ActionUnZip.Delete_Files_AfterUnZip.Label=\u5220\u9664\u6587\u4EF6
 ActionUnZip.Description=Unzip file in a target folder
-ActionUnZip.Name=\u89e3\u538b\u7f29\u6587\u4ef6
-ActionUnZip.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0
-ActionUnZip.AddDate.Tooltip=\u5982\u679c\u60f3\u5728\u6587\u4ef6\u540d\u91cc\u5305\u542b\u65e5\u671f,\u9009\u4e2d\u8be5\u9009\u9879
-ActionUnZip.WildcardExclude.Tooltip=\u901a\u914d\u7b26(\u6b63\u5219\u8868\u8fbe\u5f0f)
-ActionUnZip.CreatingDirectory.Label=\u521b\u5efa\u76ee\u5f55 [{0}]
-ActionUnZip.WildcardSource.Tooltip=\u6e90\u901a\u914d\u7b26(\u6b63\u5219\u8868\u8fbe\u5f0f)
-ActionUnZip.Overwrite.Label=\u8986\u76d6
-ActionUnZip.WildcardExclude.Label=\u4e0d\u5305\u542b\u901a\u914d\u7b26(\u6b63\u5219\u8868\u8fbe\u5f0f)\uff1a
-ActionUnZip.AddOriginalTimestamp.Tooltip=\u63d0\u53d6\u51fa\u6587\u4ef6\u7684\u539f\u59cb\u65f6\u95f4\u6233
-ActionUnZip.Cant_Move_File.Label=\u4e0d\u80fd\u5c06\u6587\u4ef6 [{0}] \u79fb\u5230\u6587\u4ef6\u5939 [{1}].\u5f02\u5e38\:  {1}
-ActionUnZip.Name.Default=\u89e3\u538b\u6587\u4ef6
-ActionUnZip.createMoveToFolder.Label=\u65b0\u5efa\u6587\u4ef6\u5939
-ActionUnZip.Log.FileEqualSize.Same=\u538b\u7f29\u6587\u4ef6[{0}] \u7684\u5927\u5c0f\u662f {1}. \u548c\u76ee\u6807\u6587\u4ef6 [{2}] (\u5927\u5c0f \= {3}) \u7684\u5927\u5c0f\u4e0d\u540c . \u76ee\u6807\u6587\u4ef6\u5c06\u88ab\u66ff\u6362.
-ActionUnZip.Do_Nothing_AfterUnZip.Label=\u4ec0\u4e48\u90fd\u4e0d\u505a
-ActionUnZip.Cant_Delete_File.Label=\u4e0d\u80fd\u5220\u9664\u6587\u4ef6 [{0}]
-ActionUnZip.Log.ArgFromPrevious.Found=\u4ece\u4e0a\u4e00\u4e2a\u4f5c\u4e1a\u9879\u7ed3\u679c\u4e2d\u83b7\u5f97 {0} \u884c\u6570\u636e
-ActionUnZip.Error.CanNotProcessZipEntry=\u4e0d\u80fd\u4ece\u6587\u4ef6 [{1}] \u4e2d\u5904\u7406\u538b\u7f29\u7684\u6761\u76ee [{0}] \!
-ActionUnZip.UnzippedFiles.Group.Label=\u89e3\u538b\u7f29\u6587\u4ef6
-ActionUnZip.Move_Files_AfterUnZip.Label=\u79fb\u52a8\u6587\u4ef6
-ActionUnZip.TargetDir.Label=\u76ee\u6807\u76ee\u5f55
-ActionUnZip.Log.FileBigEqualSize.Big=\u538b\u7f29\u6587\u4ef6[{0}] \u7684\u5927\u5c0f\u662f {1}. \u538b\u7f29\u6587\u4ef6\u6bd4\u76ee\u6807\u6587\u4ef6[{2}] (\u5927\u5c0f \= {3})\u5927. \u76ee\u6807\u6587\u4ef6\u5c06\u88ab\u66ff\u6362.
-ActionUnZip.Wildcard.Tooltip=\u901a\u914d\u7b26(\u6b63\u5219\u8868\u8fbe\u5f0f)
-ActionUnZip.Filetype.All=\u6240\u6709\u6587\u4ef6
-ActionUnZip.Log.FileBigEqualSize.Small=\u538b\u7f29\u6587\u4ef6[{0}] \u7684\u5927\u5c0f\u662f {1}. \u538b\u7f29\u6587\u4ef6\u6bd4\u76ee\u6807\u6587\u4ef6[{2}] (\u5927\u5c0f \= {3})\u5c0f. \u76ee\u6807\u6587\u4ef6\u5c06\u4e0d\u4f1a\u88ab\u66ff\u6362.
-ActionUnZip.TargetFolderNotFolder.Label=\u76ee\u6807{0}\u4e0d\u662f\u4e00\u4e2a\u6587\u4ef6\u5939\uff01
-ActionUnZip.OverwriteIfZipSmallerOrEqual.Label=\u5982\u679c\u538b\u7f29\u95ee\u4ef7\u4e0d\u5927\u4e8e\u6e90\u6587\u4ef6\u5927\u5c0f\u5c31\u8986\u76d6
-ActionUnZip.BrowseFolders.Label=\u76ee\u5f55...
-ActionUnZip.NrBadFormedLessThan.Tooltip=\u6761\u4ef6\u503c
-ActionUnZip.Log.FileBigSize.Small=\u538b\u7f29\u6587\u4ef6[{0}] \u7684\u5927\u5c0f\u662f {1}. \u76ee\u6807\u6587\u4ef6 [{2}] \u6bd4\u8f83\u5c0f (\u5927\u5c0f \= {3}). \u76ee\u6807\u6587\u4ef6\u5c06\u4e0d\u4f1a\u88ab\u88ab\u66ff\u6362.
-ActionUnZip.CreateFolder.Tooltip=\u5fc5\u8981\u65f6\u521b\u5efa\u6587\u4ef6\u5939
-ActionUnZip.ErrorUnzip.Label=\u4e0d\u80fd\u89e3\u538b\u7f29\u6587\u4ef6 [{0}]. \u5f02\u5e38\: [{1}]
-ActionUnZip.SuccessWhenAllWorksFine.Label=\u6240\u6709\u5de5\u4f5c\u6b63\u5e38
-ActionUnZip.SuccessWhenNrErrorsLessThan.Label=\u9519\u8bef\u6570\u5c11\u4e8e
-ActionUnZip.Log.FileError=\u6587\u4ef6 [{0}] \u88ab\u8df3\u8fc7,\u73b0\u5728\u6709 {1} \u4e2a\u9519\u8bef
-ActionUnZip.AddTime.Tooltip=\u5982\u679c\u60f3\u5728\u6587\u4ef6\u540d\u4e2d\u5305\u542b\u65f6\u95f4,\u5219\u9009\u4e2d\u8be5\u9009\u9879.
-ActionUnZip.Error.CanNotFindFile=\u4e0d\u80fd\u627e\u5230\u6587\u4ef6 [{0}]\!
-ActionUnZip.AddFileToResult.Label=\u5c06\u62bd\u53d6\u51fa\u6765\u7684\u6587\u4ef6\u589e\u52a0\u5230\u7ed3\u679c\u4e2d
-ActionUnZip.ZipFile.NotExists.Label=\u627e\u4e0d\u5230\u538b\u7f29\u6587\u4ef6[{0}]
-ActionUnZip.NrBadFormedLessThan.Label=\u6570\u503c
-ActionUnZip.Log.CreatingUniqFile=\u521b\u5efa\u4e00\u4e2a\u552f\u4e00\u7684\u76ee\u6807\u6587\u4ef6\u540d
-ActionUnZip.AfterUnZip.Label=\u89e3\u538b\u7f29\u540e
-ActionUnZip.AddOriginalTimestamp.Label=\u6dfb\u52a0\u539f\u59cb\u65f6\u95f4\u6233
-ActionUnZip.OverwriteIfZipBiggerOrEqual.Label=\u5982\u679c\u538b\u7f29\u7684\u6587\u4ef6\u4e0d\u5c0f\u4e8e\u6e90\u6587\u4ef6\u5c31\u8986\u76d6
-ActionUnZip.AddTime.Label=\u6587\u4ef6\u540d\u5305\u542b\u65f6\u95f4
-ActionUnZip.OverwriteIfZipSmaller.Label=\u5982\u679c\u538b\u7f29\u6587\u4ef6\u5927\u5c0f\u5c0f\u4e9b\u5c31\u8986\u76d6
-ActionUnZip.TargetFolderNotFound.Label=\u627e\u4e0d\u5230\u76ee\u6807\u6587\u4ef6\u5939\u3002\u8bf7\u786e\u8ba4
-ActionUnZip.CreateFolder.Label=\u65b0\u5efa\u6587\u4ef6\u5939
-ActionUnZip.ArgsPrevious.Tooltip=\u4ece\u4e0a\u4e00\u4e2a\u4f5c\u4e1a\u83b7\u53d6\u53c2\u6570
-ActionUnZip.Tab.General.Label=\u4e00\u822c
-ActionUnZip.BrowseFiles.Label=\u6587\u4ef6...
-ActionUnZip.AddDate.Label=\u6587\u4ef6\u540d\u5305\u542b\u65e5\u671f
-ActionUnZip.SetModificationDateToOriginal.Label=\u6dfb\u52a0\u4fee\u6539\u65e5\u671f\u5230\u6e90\u6587\u4ef6
-ActionUnZip.No_ZipFile_Defined.Label=\u538b\u7f29\u6587\u4ef6\u540d\u4e22\u5931\uff01
-ActionUnZip.Log.FileDiffSize.Same=\u538b\u7f29\u6587\u4ef6[{0}] \u7684\u5927\u5c0f\u662f {1}. \u548c\u76ee\u6807\u6587\u4ef6 [{2}] (\u5927\u5c0f \= {3}) \u7684\u5927\u5c0f\u4e0d\u540c . \u76ee\u6807\u6587\u4ef6\u5c06\u4e0d\u4f1a\u88ab\u88ab\u66ff\u6362.
-ActionUnZip.IfFileExists.Label=\u5982\u679c\u6587\u4ef6\u5b58\u5728
-ActionUnZip.Skip.Label=\u8df3\u8fc7
-ActionUnZip.MoveToDirectoryNotExists.Label=\u8fd0\u884c\u5b8c\u6210\u4e4b\u540e\u6e90\u6587\u4ef6\u5939\u5c06\u65e0\u6cd5\u88ab\u627e\u5230
-ActionUnZip.WildcardSource.Label=\u6e90\u901a\u914d\u7b26(\u6b63\u5219\u8868\u8fbe\u5f0f)
-ActionUnZip.RootZip.Label=\u4f7f\u7528\u538b\u7f29\u6587\u4ef6\u540d\u4f5c\u4e3a\u6839\u76ee\u5f55\u540d\u79f0
-ActionUnZip.TargetFolderExists.Label=\u76ee\u6807\u6587\u4ef6\u5939[{0}]\u5b58\u5728
-ActionUnZip.Wildcard.Label=\u5305\u542b\u901a\u914d\u7b26(\u6b63\u5219\u8868\u8fbe\u5f0f)\uff1a
-ActionUnZip.Log.FileEqualSize.Diff=\u538b\u7f29\u6587\u4ef6[{0}] \u7684\u5927\u5c0f\u662f {1}. \u548c\u76ee\u6807\u6587\u4ef6 [{2}] (\u5927\u5c0f \= {3}) \u7684\u5927\u5c0f\u4e0d\u540c . \u76ee\u6807\u6587\u4ef6\u5c06\u4e0d\u4f1a\u88ab\u66ff\u6362.
-ActionUnZip.Error.Label=\u9519\u8bef
-ActionUnZip.MovetoDirectory.Label=\u79fb\u52a8\u6587\u4ef6\u5230
-ActionUnZip.Fail.Label=\u5931\u8d25
-ActionUnZip.Error.CanNotCreateRootFolder=\u4e0d\u80fd\u521b\u5efa\u6839\u76ee\u5f55 [{0}] \!
-ActionUnZip.Title=\u89e3\u538b\u7f29\u6587\u4ef6
-ActionUnZip.Give_Unique_Name.Label=\u552f\u4e00\u540d\u79f0
-ActionUnZip.File_Moved.Label=\u6587\u4ef6[{0}] \u88ab\u79fb\u52a8\u5230 [{1}]
-ActionUnZip.SpecifyFormat.Label=\u8bbe\u7f6e\u65e5\u671f\u65f6\u95f4\u683c\u5f0f
-ActionUnZip.Filetype.Jar=Jar \u6587\u4ef6
-ActionUnZip.MoveToDirectoryEmpty.Label=\u8fd0\u884c\u5b8c\u6210\u4e4b\u540e\u6e90\u6587\u4ef6\u5939\u5c06\u53d8\u7a7a
-ActionUnZip.Log.FileBigSize.Big=\u538b\u7f29\u6587\u4ef6[{0}] \u7684\u5927\u5c0f\u662f {1}. \u76ee\u6807\u6587\u4ef6[{2}]\u6bd4\u8f83\u5c0f (\u5927\u5c0f \= {3}). \u76ee\u6807\u6587\u4ef6\u5c06\u88ab\u66ff\u6362.
-ActionUnZip.OverwriteIfSizeEquals.Label=\u5982\u679c\u5927\u5c0f\u4e00\u81f4\u5c31\u8986\u76d6
-ActionUnZip.Tab.Advanced.Label=\u9ad8\u7ea7
-ActionUnZip.ArgsPrevious.Label=\u4ece\u4e0a\u4e00\u4e2a\u4f5c\u4e1a\u83b7\u53d6\u53c2\u6570
-ActionUnZip.File_Deleted.Label=\u6587\u4ef6[{0}] \u88ab\u5220\u9664
-ActionUnZip.SuccessOn.Group.Label=\u6210\u529f\u6761\u4ef6
-ActionUnZip.SuccessCondition.Label=\u6210\u529f\u6761\u4ef6
-ActionUnZip.ZipFilename.Label=\u538b\u7f29\u6587\u4ef6\u540d\uff1a
-ActionUnZip.SuccessWhenAtLeat.Label=\u81f3\u5c11\u8fd0\u884c\u6210\u529f\u4e00\u5b9a\u6570\u91cf
-ActionUnZip.OverwriteIfSizeDifferent.Label=\u5982\u679c\u5927\u5c0f\u4e0d\u4e00\u81f4\u5c31\u8986\u76d6
-ActionUnZip.SpecifyFormat.Tooltip=\u8bbe\u7f6e\u65e5\u671f\u65f6\u95f4\u683c\u5f0f
-ActionUnZip.FileResult.Group.Label=\u7ed3\u679c\u6587\u4ef6\u540d
-ActionUnZip.OverwriteIfZipBigger.Label=\u5982\u679c\u538b\u7f29\u7684\u6587\u4ef6\u5927\u4e9b\u5c31\u8986\u76d6
-ActionUnZip.Delete_Files_AfterUnZip.Label=\u5220\u9664\u6587\u4ef6
-ActionUnZip.Filetype.Zip=Zip \u6587\u4ef6
-ActionUnZip.DateTimeFormat.Label=\u65e5\u671f\u65f6\u95f4\u683c\u5f0f
-ActionUnZip.AddFileToResult.Tooltip=\u5982\u679c\u60f3\u5c06\u62bd\u53d6\u51fa\u6765\u7684\u6587\u4ef6\u589e\u52a0\u5230\u7ed3\u679c\u6587\u4ef6\u4e2d,\u4ee5\u65b9\u4fbf\u540e\u7eed\u6b65\u9aa4\u4f7f\u7528\u8be5\u6587\u4ef6\uff0c\u4f8b\u5982\u4f5c\u4e3a\u90ae\u4ef6\u7684\u9644\u4ef6,\u5219\u9009\u4e2d\u8be5\u9009\u9879
-ActionUnZip.Log.FileDiffSize.Diff=\u538b\u7f29\u6587\u4ef6[{0}] \u7684\u5927\u5c0f\u662f {1}. \u548c\u76ee\u6807\u6587\u4ef6 [{2}] (\u5927\u5c0f \= {3}) \u7684\u5927\u5c0f\u4e0d\u540c . \u76ee\u6807\u6587\u4ef6\u5c06\u88ab\u66ff\u6362.
-ActionUnZip.Zip_FileExists.Label=\u538b\u7f29\u6587\u4ef6[{0}]\u5b58\u5728
-ActionUnZip.Source.Group.Label=\u6e90\u6587\u4ef6
-ActionUnZip.ExtractingEntry.Label=\u63d0\u53d6\u9879\u76ee[{0}] \u5230 [{1}]
-ActionUnZip.SetModificationDateToOriginal.Tooltip=\u4ee5\u4e0a\u4e00\u6b21\u7684\u4fee\u6539\u65e5\u671f\u66ff\u4ee3\u539f\u59cb\u65f6\u95f4\u6233
-ActionUnZip.MovetoDirectory.Tooltip=\u79fb\u52a8\u6587\u4ef6\u5230
+ActionUnZip.Do_Nothing_AfterUnZip.Label=\u4EC0\u4E48\u90FD\u4E0D\u505A
+ActionUnZip.Error.CanNotCreateRootFolder=\u4E0D\u80FD\u521B\u5EFA\u6839\u76EE\u5F55 [{0}] \!
+ActionUnZip.Error.CanNotFindFile=\u4E0D\u80FD\u627E\u5230\u6587\u4EF6 [{0}]\!
+ActionUnZip.Error.CanNotProcessZipEntry=\u4E0D\u80FD\u4ECE\u6587\u4EF6 [{1}] \u4E2D\u5904\u7406\u538B\u7F29\u7684\u6761\u76EE [{0}] \!
+ActionUnZip.Error.Label=\u9519\u8BEF
+ActionUnZip.Error.SuccessConditionbroken=\u6210\u529F\u6761\u4EF6\u88AB\u6253\u7834\! \u51FA\u9519\u6B21\u6570\: {0}
+ActionUnZip.Error.TargetFolderMissing=\u7F3A\u5931\u76EE\u6807\u76EE\u5F55\u540D\!
+ActionUnZip.ErrorUnzip.Label=\u4E0D\u80FD\u89E3\u538B\u7F29\u6587\u4EF6 [{0}]. \u5F02\u5E38\: [{1}]
+ActionUnZip.ExtractingEntry.Label=\u63D0\u53D6\u9879\u76EE[{0}] \u5230 [{1}]
+ActionUnZip.Fail.Label=\u5931\u8D25
+ActionUnZip.FileResult.Group.Label=\u7ED3\u679C\u6587\u4EF6\u540D
+ActionUnZip.File_Deleted.Label=\u6587\u4EF6[{0}] \u88AB\u5220\u9664
+ActionUnZip.File_Moved.Label=\u6587\u4EF6[{0}] \u88AB\u79FB\u52A8\u5230 [{1}]
+ActionUnZip.Filetype.All=\u6240\u6709\u6587\u4EF6
+ActionUnZip.Filetype.Jar=Jar \u6587\u4EF6
+ActionUnZip.Filetype.Zip=Zip \u6587\u4EF6
+ActionUnZip.Give_Unique_Name.Label=\u552F\u4E00\u540D\u79F0
+ActionUnZip.IfFileExists.Label=\u5982\u679C\u6587\u4EF6\u5B58\u5728
+ActionUnZip.Log.ArgFromPrevious.Found=\u4ECE\u4E0A\u4E00\u4E2A Action \u7ED3\u679C\u4E2D\u83B7\u5F97 {0} \u884C\u6570\u636E
+ActionUnZip.Log.CanNotFindFile=\u627E\u5230\u5C06\u88AB\u63D0\u53D6\u7684\u6587\u4EF6 [{0}]
+ActionUnZip.Log.CreatingUniqFile=\u521B\u5EFA\u4E00\u4E2A\u552F\u4E00\u7684\u76EE\u6807\u6587\u4EF6\u540D
+ActionUnZip.Log.FileBigEqualSize.Big=\u538B\u7F29\u6587\u4EF6[{0}] \u7684\u5927\u5C0F\u662F {1}. \u538B\u7F29\u6587\u4EF6\u6BD4\u76EE\u6807\u6587\u4EF6[{2}] (\u5927\u5C0F \= {3})\u5927. \u76EE\u6807\u6587\u4EF6\u5C06\u88AB\u66FF\u6362.
+ActionUnZip.Log.FileBigEqualSize.Small=\u538B\u7F29\u6587\u4EF6[{0}] \u7684\u5927\u5C0F\u662F {1}. \u538B\u7F29\u6587\u4EF6\u6BD4\u76EE\u6807\u6587\u4EF6[{2}] (\u5927\u5C0F \= {3})\u5C0F. \u76EE\u6807\u6587\u4EF6\u5C06\u4E0D\u4F1A\u88AB\u66FF\u6362.
+ActionUnZip.Log.FileBigSize.Big=\u538B\u7F29\u6587\u4EF6[{0}] \u7684\u5927\u5C0F\u662F {1}. \u76EE\u6807\u6587\u4EF6[{2}]\u6BD4\u8F83\u5C0F (\u5927\u5C0F \= {3}). \u76EE\u6807\u6587\u4EF6\u5C06\u88AB\u66FF\u6362.
+ActionUnZip.Log.FileBigSize.Small=\u538B\u7F29\u6587\u4EF6[{0}] \u7684\u5927\u5C0F\u662F {1}. \u76EE\u6807\u6587\u4EF6 [{2}] \u6BD4\u8F83\u5C0F (\u5927\u5C0F \= {3}). \u76EE\u6807\u6587\u4EF6\u5C06\u4E0D\u4F1A\u88AB\u88AB\u66FF\u6362.
+ActionUnZip.Log.FileDiffSize.Diff=\u538B\u7F29\u6587\u4EF6[{0}] \u7684\u5927\u5C0F\u662F {1}. \u548C\u76EE\u6807\u6587\u4EF6 [{2}] (\u5927\u5C0F \= {3}) \u7684\u5927\u5C0F\u4E0D\u540C . \u76EE\u6807\u6587\u4EF6\u5C06\u88AB\u66FF\u6362.
+ActionUnZip.Log.FileDiffSize.Same=\u538B\u7F29\u6587\u4EF6[{0}] \u7684\u5927\u5C0F\u662F {1}. \u548C\u76EE\u6807\u6587\u4EF6 [{2}] (\u5927\u5C0F \= {3}) \u7684\u5927\u5C0F\u4E0D\u540C . \u76EE\u6807\u6587\u4EF6\u5C06\u4E0D\u4F1A\u88AB\u88AB\u66FF\u6362.
+ActionUnZip.Log.FileEqualSize.Diff=\u538B\u7F29\u6587\u4EF6[{0}] \u7684\u5927\u5C0F\u662F {1}. \u548C\u76EE\u6807\u6587\u4EF6 [{2}] (\u5927\u5C0F \= {3}) \u7684\u5927\u5C0F\u4E0D\u540C . \u76EE\u6807\u6587\u4EF6\u5C06\u4E0D\u4F1A\u88AB\u66FF\u6362.
+ActionUnZip.Log.FileEqualSize.Same=\u538B\u7F29\u6587\u4EF6[{0}] \u7684\u5927\u5C0F\u662F {1}. \u548C\u76EE\u6807\u6587\u4EF6 [{2}] (\u5927\u5C0F \= {3}) \u7684\u5927\u5C0F\u4E0D\u540C . \u76EE\u6807\u6587\u4EF6\u5C06\u88AB\u66FF\u6362.
+ActionUnZip.Log.FileError=\u6587\u4EF6 [{0}] \u88AB\u8DF3\u8FC7,\u73B0\u5728\u6709 {1} \u4E2A\u9519\u8BEF
+ActionUnZip.Log.FileExists=\u627E\u5230\u8981\u63D0\u53D6\u7684\u6587\u4EF6 [{0}]
+ActionUnZip.Log.FileMovedTo=\u6587\u4EF6 [{0}] \u88AB\u79FB\u52A8\u5230 [{1}]
+ActionUnZip.Log.FileOverwrite=\u5C06\u8986\u76D6\u6587\u4EF6 [{0}].
+ActionUnZip.Log.FileSkip=\u8DF3\u8FC7\u6587\u4EF6 [{0}].
+ActionUnZip.Log.FileSmallEqualSize.Big=\u538B\u7F29\u6587\u4EF6 [{0}] \u7684\u5927\u5C0F({1}\u5B57\u8282)\u5927\u4E8E\u76EE\u6807\u6587\u4EF6 [{2}] \u7684\u5927\u5C0F({3}\u5B57\u8282), \u76EE\u6807\u6587\u4EF6\u4E0D\u4F1A\u88AB\u66FF\u6362.
+ActionUnZip.Log.FileSmallEqualSize.Small=\u538B\u7F29\u6587\u4EF6 [{0}] \u7684\u5927\u5C0F({1}\u5B57\u8282)\u5C0F\u4E8E\u6216\u7B49\u4E8E\u76EE\u6807\u6587\u4EF6 [{2}] \u7684\u5927\u5C0F({3}\u5B57\u8282), \u76EE\u6807\u6587\u4EF6\u5C06\u88AB\u66FF\u6362.
+ActionUnZip.Log.FileSmallSize.Big=\u538B\u7F29\u6587\u4EF6 [{0}] \u7684\u5927\u5C0F({1}\u5B57\u8282) \u5927\u4E8E\u76EE\u6807\u6587\u4EF6 [{2}] \u7684\u5927\u5C0F({3}\u5B57\u8282), \u76EE\u6807\u6587\u4EF6\u4E0D\u4F1A\u88AB\u66FF\u6362.
+ActionUnZip.Log.FileSmallSize.Small=\u538B\u7F29\u6587\u4EF6 [{0}] \u7684\u5927\u5C0F({1}\u5B57\u8282)\u5C0F\u4E8E\u76EE\u6807\u6587\u4EF6 [{2}] \u7684\u5927\u5C0F({3}\u5B57\u8282), \u76EE\u6807\u6587\u4EF6\u5C06\u88AB\u66FF\u6362.
+ActionUnZip.Log.Info.FilesInError=\u9519\u8BEF\u6B21\u6570\: {0}
+ActionUnZip.Log.Info.FilesInSuccess=\u89E3\u538B\u6587\u4EF6\u6570\: {0}
+ActionUnZip.Log.MoveToFolderCreated=\u521B\u5EFA\u76EE\u5F55 [{0}].
+ActionUnZip.Log.ProcessingFile=\u5904\u7406\u6587\u4EF6 [{0}]...
+ActionUnZip.Log.ProcessingZipEntry=\u89E3\u538B\u538B\u7F29\u6587\u4EF6 [{1}] \u4E2D\u7684\u538B\u7F29\u9879 [{0}]...
+ActionUnZip.Log.RootFolderCreated=\u521B\u5EFA\u89E3\u538B\u6839\u76EE\u5F55 [{0}].
+ActionUnZip.Log.TargetFolderCreated=\u521B\u5EFA\u76EE\u6807\u76EE\u5F55 {0}.
+ActionUnZip.MoveToDirectoryEmpty.Label=\u8FD0\u884C\u5B8C\u6210\u4E4B\u540E\u6E90\u6587\u4EF6\u5939\u5C06\u53D8\u7A7A
+ActionUnZip.MoveToDirectoryNotExists.Label=\u8FD0\u884C\u5B8C\u6210\u4E4B\u540E\u6E90\u6587\u4EF6\u5939\u5C06\u65E0\u6CD5\u88AB\u627E\u5230
+ActionUnZip.Move_Files_AfterUnZip.Label=\u79FB\u52A8\u6587\u4EF6
+ActionUnZip.MovetoDirectory.Label=\u79FB\u52A8\u6587\u4EF6\u5230
+ActionUnZip.MovetoDirectory.Tooltip=\u79FB\u52A8\u6587\u4EF6\u5230
+ActionUnZip.Name=\u89E3\u538B\u7F29\u6587\u4EF6
+ActionUnZip.Name.Default=\u89E3\u538B\u6587\u4EF6
+ActionUnZip.Name.Label=Action \u540D\u79F0:
+ActionUnZip.No_ZipFile_Defined.Label=\u538B\u7F29\u6587\u4EF6\u540D\u4E22\u5931!
+ActionUnZip.NrBadFormedLessThan.Label=\u6570\u503C
+ActionUnZip.NrBadFormedLessThan.Tooltip=\u6761\u4EF6\u503C
+ActionUnZip.Overwrite.Label=\u8986\u76D6
+ActionUnZip.OverwriteIfSizeDifferent.Label=\u5982\u679C\u5927\u5C0F\u4E0D\u4E00\u81F4\u5C31\u8986\u76D6
+ActionUnZip.OverwriteIfSizeEquals.Label=\u5982\u679C\u5927\u5C0F\u4E00\u81F4\u5C31\u8986\u76D6
+ActionUnZip.OverwriteIfZipBigger.Label=\u5982\u679C\u538B\u7F29\u7684\u6587\u4EF6\u5927\u4E9B\u5C31\u8986\u76D6
+ActionUnZip.OverwriteIfZipBiggerOrEqual.Label=\u5982\u679C\u538B\u7F29\u7684\u6587\u4EF6\u4E0D\u5C0F\u4E8E\u6E90\u6587\u4EF6\u5C31\u8986\u76D6
+ActionUnZip.OverwriteIfZipSmaller.Label=\u5982\u679C\u538B\u7F29\u6587\u4EF6\u5927\u5C0F\u5C0F\u4E9B\u5C31\u8986\u76D6
+ActionUnZip.OverwriteIfZipSmallerOrEqual.Label=\u5982\u679C\u538B\u7F29\u95EE\u4EF7\u4E0D\u5927\u4E8E\u6E90\u6587\u4EF6\u5927\u5C0F\u5C31\u8986\u76D6
+ActionUnZip.RootZip.Label=\u4F7F\u7528\u538B\u7F29\u6587\u4EF6\u540D\u4F5C\u4E3A\u6839\u76EE\u5F55\u540D\u79F0
+ActionUnZip.RootZip.Tooltip=\u538B\u7F29\u6587\u4EF6\u540D\u505A\u4E3A\u89E3\u538B\u76EE\u5F55
+ActionUnZip.SetModificationDateToOriginal.Label=\u6DFB\u52A0\u4FEE\u6539\u65E5\u671F\u5230\u6E90\u6587\u4EF6
+ActionUnZip.SetModificationDateToOriginal.Tooltip=\u4EE5\u4E0A\u4E00\u6B21\u7684\u4FEE\u6539\u65E5\u671F\u66FF\u4EE3\u539F\u59CB\u65F6\u95F4\u6233
+ActionUnZip.Skip.Label=\u8DF3\u8FC7
+ActionUnZip.Source.Group.Label=\u6E90\u6587\u4EF6
+ActionUnZip.SourceFolderNotFound.Label=\u672A\u627E\u5230\u6E90\u76EE\u5F55, \u8BF7\u68C0\u67E5\u8BE5\u76EE\u5F55\u662F\u5426\u5B58\u5728.
+ActionUnZip.SpecifyFormat.Label=\u8BBE\u7F6E\u65E5\u671F\u65F6\u95F4\u683C\u5F0F
+ActionUnZip.SpecifyFormat.Tooltip=\u8BBE\u7F6E\u65E5\u671F\u65F6\u95F4\u683C\u5F0F
+ActionUnZip.SuccessCondition.Label=\u6210\u529F\u6761\u4EF6
+ActionUnZip.SuccessOn.Group.Label=\u6210\u529F\u6761\u4EF6
+ActionUnZip.SuccessWhenAllWorksFine.Label=\u6240\u6709\u5DE5\u4F5C\u6B63\u5E38
+ActionUnZip.SuccessWhenAtLeat.Label=\u81F3\u5C11\u8FD0\u884C\u6210\u529F\u4E00\u5B9A\u6570\u91CF
+ActionUnZip.SuccessWhenNrErrorsLessThan.Label=\u9519\u8BEF\u6570\u5C11\u4E8E
+ActionUnZip.Tab.Advanced.Label=\u9AD8\u7EA7
+ActionUnZip.Tab.General.Label=\u4E00\u822C
+ActionUnZip.TargetDir.Label=\u76EE\u6807\u76EE\u5F55
+ActionUnZip.TargetDir.Tooltip=\u6587\u4EF6\u4E2D\u7684\u76EE\u5F55\u5FC5\u987B\u88AB\u538B\u7F29
+ActionUnZip.TargetFolderExists.Label=\u76EE\u6807\u6587\u4EF6\u5939[{0}]\u5B58\u5728
+ActionUnZip.TargetFolderNotFolder.Label=\u76EE\u6807{0}\u4E0D\u662F\u4E00\u4E2A\u6587\u4EF6\u5939!
+ActionUnZip.TargetFolderNotFound.Label=\u627E\u4E0D\u5230\u76EE\u6807\u6587\u4EF6\u5939. \u8BF7\u786E\u8BA4
+ActionUnZip.Title=\u89E3\u538B\u7F29\u6587\u4EF6
+ActionUnZip.UnzippedFiles.Group.Label=\u89E3\u538B\u7F29\u6587\u4EF6
+ActionUnZip.Wildcard.Label=\u5305\u542B\u901A\u914D\u7B26(\u6B63\u5219\u8868\u8FBE\u5F0F)\:
+ActionUnZip.Wildcard.Tooltip=\u901A\u914D\u7B26(\u6B63\u5219\u8868\u8FBE\u5F0F)
+ActionUnZip.WildcardExclude.Label=\u4E0D\u5305\u542B\u901A\u914D\u7B26(\u6B63\u5219\u8868\u8FBE\u5F0F)\:
+ActionUnZip.WildcardExclude.Tooltip=\u901A\u914D\u7B26(\u6B63\u5219\u8868\u8FBE\u5F0F)
+ActionUnZip.WildcardSource.Label=\u6E90\u901A\u914D\u7B26(\u6B63\u5219\u8868\u8FBE\u5F0F)
+ActionUnZip.WildcardSource.Tooltip=\u6E90\u901A\u914D\u7B26(\u6B63\u5219\u8868\u8FBE\u5F0F)
+ActionUnZip.ZipFile.NotExists.Label=\u627E\u4E0D\u5230\u538B\u7F29\u6587\u4EF6[{0}]
+ActionUnZip.ZipFilename.Label=\u538B\u7F29\u6587\u4EF6\u540D\:
+ActionUnZip.Zip_FileExists.Label=\u538B\u7F29\u6587\u4EF6[{0}]\u5B58\u5728
+ActionUnZip.createMoveToFolder.Label=\u65B0\u5EFA\u6587\u4EF6\u5939
+ActionUnZip.createMoveToFolder.Tooltip=\u81EA\u52A8\u521B\u5EFA\u76EE\u5F55
+ActionUnZip.keyword=unzip,
diff --git a/plugins/actions/waitforfile/src/main/resources/org/apache/hop/workflow/actions/waitforfile/messages/messages_zh_CN.properties b/plugins/actions/waitforfile/src/main/resources/org/apache/hop/workflow/actions/waitforfile/messages/messages_zh_CN.properties
index ff5fe62..65522cb 100644
--- a/plugins/actions/waitforfile/src/main/resources/org/apache/hop/workflow/actions/waitforfile/messages/messages_zh_CN.properties
+++ b/plugins/actions/waitforfile/src/main/resources/org/apache/hop/workflow/actions/waitforfile/messages/messages_zh_CN.properties
@@ -16,21 +16,22 @@
 # limitations under the License.
 #
 #
-#
-ActionWaitForFile.Description=\u7b49\u5f85\u4e00\u4e2a\u6587\u4ef6
-ActionWaitForFile.Name=\u7b49\u5f85\u6587\u4ef6
-ActionWaitForFile.Name.Label=\u4F5C\u4E1A\u9879\u540D\u79F0
-ActionWaitForFile.SuccessOnTimeout.Tooltip=\u8D85\u65F6\u5219\u6210\u529F
-ActionWaitForFile.MaximumTimeout.Label=\u8D85\u65F6
-ActionWaitForFile.Filetype.All=\u5168\u90E8\u6587\u4EF6
-ActionWaitForFile.AddFilenameResult.Tooltip=\u5982\u679C\u6587\u4EF6\u5B58\u5728\uFF0C\u5C06\u6587\u4EF6\u540D\u6DFB\u52A0\u5230\u7ED3\u679C\u6587\u4EF6\u5217\u8868\u4E2D
-ActionWaitForFile.MaximumTimeout.Tooltip=\u4EE5\u79D2\u4E3A\u5355\u4F4D\uFF0C0\u8868\u793A\u65E0\u9650\u5236
-ActionWaitForFile.Title=\u7B49\u5F85\u6587\u4EF6
-ActionWaitForFile.SuccessOnTimeout.Label=\u8D85\u65F6\u5219\u6210\u529F
-ActionWaitForFile.FileSizeCheck.Tooltip=\u6BCF\u9694\u4E00\u6BB5\u65F6\u95F4\u68C0\u67E5\u4E00\u6B21\uFF0C\u77E5\u9053\u6587\u4EF6\u5927\u5C0F\u4E0D\u5728\u589E\u957F
-ActionWaitForFile.Name.Default=\u7B49\u5F85\u6587\u4EF6
-ActionWaitForFile.FileSizeCheck.Label=\u68C0\u67E5\u6587\u4EF6\u5927\u5C0F
-ActionWaitForFile.CheckCycleTime.Label=\u5FAA\u73AF\u68C0\u67E5\u7684\u65F6\u95F4\u95F4\u9694
-ActionWaitForFile.Filename.Label=\u6587\u4EF6\u540D
 ActionWaitForFile.AddFilenameResult.Label=\u6DFB\u52A0\u6587\u4EF6\u540D\u5230\u7ED3\u679C
+ActionWaitForFile.AddFilenameResult.Tooltip=\u5982\u679C\u6587\u4EF6\u5B58\u5728, \u5C06\u6587\u4EF6\u540D\u6DFB\u52A0\u5230\u7ED3\u679C\u6587\u4EF6\u5217\u8868\u4E2D
+ActionWaitForFile.CheckCycleTime.Label=\u5FAA\u73AF\u68C0\u67E5\u7684\u65F6\u95F4\u95F4\u9694
 ActionWaitForFile.CheckCycleTime.Tooltip=\u5FAA\u73AF\u68C0\u67E5\u7684\u65F6\u95F4\u95F4\u9694
+ActionWaitForFile.Description=\u7B49\u5F85\u4E00\u4E2A\u6587\u4EF6
+ActionWaitForFile.FileSizeCheck.Label=\u68C0\u67E5\u6587\u4EF6\u5927\u5C0F
+ActionWaitForFile.FileSizeCheck.Tooltip=\u6BCF\u9694\u4E00\u6BB5\u65F6\u95F4\u68C0\u67E5\u4E00\u6B21, \u77E5\u9053\u6587\u4EF6\u5927\u5C0F\u4E0D\u5728\u589E\u957F
+ActionWaitForFile.Filename.Label=\u6587\u4EF6\u540D\:
+ActionWaitForFile.FilenameAdded=\u8BE5\u6587\u4EF6\u540D\u662F\u7531 "\u7B49\u5F85\u6587\u4EF6" Action \u6DFB\u52A0\u7684
+ActionWaitForFile.Filetype.All=\u5168\u90E8\u6587\u4EF6
+ActionWaitForFile.MaximumTimeout.Label=\u8D85\u65F6
+ActionWaitForFile.MaximumTimeout.Tooltip=\u4EE5\u79D2\u4E3A\u5355\u4F4D, 0\u8868\u793A\u65E0\u9650\u5236
+ActionWaitForFile.Name=\u7B49\u5F85\u6587\u4EF6
+ActionWaitForFile.Name.Default=\u7B49\u5F85\u6587\u4EF6
+ActionWaitForFile.Name.Label=Action \u540D\u79F0:
+ActionWaitForFile.SuccessOnTimeout.Label=\u8D85\u65F6\u5219\u6210\u529F
+ActionWaitForFile.SuccessOnTimeout.Tooltip=\u8D85\u65F6\u5219\u6210\u529F
+ActionWaitForFile.Title=\u7B49\u5F85\u6587\u4EF6
+ActionWaitForFile.keyword=wait,file
diff --git a/plugins/actions/waitforsql/src/main/resources/org/apache/hop/workflow/actions/waitforsql/messages/messages_zh_CN.properties b/plugins/actions/waitforsql/src/main/resources/org/apache/hop/workflow/actions/waitforsql/messages/messages_zh_CN.properties
index 84bb9ff..6104be3 100644
--- a/plugins/actions/waitforsql/src/main/resources/org/apache/hop/workflow/actions/waitforsql/messages/messages_zh_CN.properties
+++ b/plugins/actions/waitforsql/src/main/resources/org/apache/hop/workflow/actions/waitforsql/messages/messages_zh_CN.properties
@@ -16,40 +16,61 @@
 # limitations under the License.
 #
 #
-#
-ActionWaitForSQL.Name=\u7b49\u5f85SQL
-ActionWaitForSQL.Tablename.Tooltip=\u8981\u5bfc\u5165\u7684\u8868\u6216\u8005\u89c6\u56fe\u540d\u79f0
-ActionWaitForSQL.GetSQLAndSelectStatement=\u751f\u6210 SELECT SQL \u8bed\u53e5
-ActionWaitForSQL.MaximumTimeout.Tooltip=\u6700\u5927\u8d85\u65f6\u65f6\u95f4\uff08s\uff09\uff0c0\u8868\u793a\u65e0\u9650\u5236
-ActionWaitForSQL.SuccessGroup.Group.Label=\u6210\u529f\u6761\u4ef6
-ActionWaitForSQL.NoDbConnection=\u6ca1\u6709\u5b9a\u4e49\u6570\u636e\u5e93\u8fde\u63a5
-ActionWaitForSQL.SuccessWhenRowCountEqual.Label=\u7b49\u4e8e
-ActionWaitForSQL.customSQL.Tooltip=\u81ea\u5b9a\u4e49SQL
-ActionWaitForSQL.MaximumTimeout.Label=\u6700\u5927\u8d85\u65f6\u65f6\u95f4:
-ActionWaitForSQL.UseVariableSubst.Label=\u4f7f\u7528\u53d8\u91cf\u66ff\u6362
-ActionWaitForSQL.Schemaname.Tooltip=\u8868\u7684\u6a21\u5f0f\u540d
-ActionWaitForSQL.Title=\u7b49\u5f85SQL
-ActionWaitForSQL.AddRowsToResult.Label=\u6dfb\u52a0\u884c\u5230\u7ed3\u679c
-ActionWaitForSQL.CheckCycleTime.Tooltip=\u5faa\u73af\u68c0\u67e5\u65f6\u95f4\u95f4\u9694\uff08\u79d2\uff09
-ActionWaitForSQL.SuccessWhenRowCountGreaterThan.Label=\u5927\u4e8e
-ActionWaitForSQL.SuccessOnTimeout.Tooltip=\u5982\u679c\u8d85\u65f6\uff0c\u8868\u793a\u6210\u529f
-ActionWaitForSQL.ClearResultList.Label=\u5728\u6267\u884c\u524d\u6e05\u7a7a\u7ed3\u679c\u884c\u5217\u8868
-ActionWaitForSQL.ClearResultList.Tooltip=\u5728\u6267\u884c\u524d\u6e05\u7a7a\u7ed3\u679c\u884c\u5217\u8868
-ActionWaitForSQL.Schemaname.Label=\u76ee\u6807\u6a21\u5f0f:
-ActionWaitForSQL.RowsCountValue.Label=\u503c
-ActionWaitForSQL.SuccessCondition.Label=\u5f53\u884c\u6570
-ActionWaitForSQL.SuccessOnTimeout.Label=\u8d85\u65f6\u65f6\u6210\u529f
-ActionWaitForSQL.SuccessWhenRowCountDifferent.Label=\u4e0d\u7b49\u4e8e
-ActionWaitForSQL.SuccessWhenRowCountSmallerOrEqualThan.Label=\u4e0d\u5927\u4e8e
-ActionWaitForSQL.SuccessWhenRowCountSmallerThan.Label=\u5c0f\u4e8e
-ActionWaitForSQL.IncludeFieldNamesInSQL=\u662f\u5426\u5728SQL\u8bed\u53e5\u4e2d\u5305\u542b\u5b57\u6bb5
-ActionWaitForSQL.RowsCountValue.Tooltip=\u503c
-ActionWaitForSQL.CheckCycleTime.Label=\u5faa\u73af\u68c0\u67e5\u65f6\u95f4\u95f4\u9694
-ActionWaitForSQL.Tablename.Label=\u76ee\u6807\u8868\u540d:
-ActionWaitForSQL.UseVariableSubst.Tooltip=\u4f7f\u7528\u73af\u5883\u53d8\u91cf\u66ff\u6362SQL\u811a\u672c\u4e2d\u7684\u503c\u3002\u73af\u5883\u53d8\u91cf\u7684\u683c\u5f0f\u53d6\u51b3\u4e8e\u64cd\u4f5c\u7cfb\u7edf\uff0cwindows\u7cfb\u7edf\u4e2d\u73af\u5883\u53d8\u91cf\u7528\u4e24\u4e2a\#\u62ec\u8d77\u6765\uff08\#\#\uff09\uff0clinux\r\n\u7cfb\u7edf\u7684\u73af\u5883\u53d8\u91cf\u683c\u5f0f\u662f${}
-ActionWaitForSQL.AddRowsToResult.Tooltip=\u5c06\u6240\u6709\u8fd4\u56de\u7684\u884c\u6dfb\u52a0\u7ed3\u679c\u4e2d
-ActionWaitForSQL.SuccessWhenRowCountGreaterOrEqual.Label=\u4e0d\u5c0f\u4e8e
-ActionWaitForSQL.customSQL.Label=\u81ea\u5b9a\u4e49SQL
-ActionWaitForSQL.CustomGroup.Group.Label=\u81ea\u5b9a\u4e49SQL
-ActionWaitForSQL.Script.Label=SQL\u811a\u672c:
-ActionWaitForSQL.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0:
+ActionWaitForSQL.AddRowsToResult.Label=\u6DFB\u52A0\u884C\u5230\u7ED3\u679C
+ActionWaitForSQL.AddRowsToResult.Tooltip=\u5C06\u6240\u6709\u8FD4\u56DE\u7684\u884C\u6DFB\u52A0\u7ED3\u679C\u4E2D
+ActionWaitForSQL.AnErrorOccurred=\u53D1\u751F\u9519\u8BEF\:
+ActionWaitForSQL.CheckCycleTime.Label=\u5FAA\u73AF\u68C0\u67E5\u65F6\u95F4\u95F4\u9694
+ActionWaitForSQL.CheckCycleTime.Tooltip=\u5FAA\u73AF\u68C0\u67E5\u65F6\u95F4\u95F4\u9694 (\u79D2)
+ActionWaitForSQL.ClearResultList.Label=\u5728\u6267\u884C\u524D\u6E05\u7A7A\u7ED3\u679C\u884C\u5217\u8868
+ActionWaitForSQL.ClearResultList.Tooltip=\u5728\u6267\u884C\u524D\u6E05\u7A7A\u7ED3\u679C\u884C\u5217\u8868
+ActionWaitForSQL.ConnectionError2.DialogMessage=\u8BF7\u5148\u9009\u62E9\u4E00\u4E2A\u6709\u6548\u7684\u6570\u636E\u5E93\u8FDE\u63A5\!
+ActionWaitForSQL.ConnectionNoLongerAvailable=\u6570\u636E\u5E93\u8FDE\u63A5\u4E0D\u518D\u53EF\u7528\!
+ActionWaitForSQL.CustomGroup.Group.Label=\u81EA\u5B9A\u4E49SQL
+ActionWaitForSQL.Description=\u5F53 SQL \u811A\u672C\u7684\u6267\u884C\u7ED3\u679C\u6EE1\u8DB3\u6307\u5B9A\u6761\u4EF6\u65F6, \u6210\u529F\u9000\u51FA SQL \u626B\u63CF.
+ActionWaitForSQL.DialogCaptionError2=\u9519\u8BEF
+ActionWaitForSQL.DialogCaptionError3=\u9519\u8BEF\!
+ActionWaitForSQL.DialogCaptionError4=\u9519\u8BEF
+ActionWaitForSQL.DialogCaptionQuestion=\u786E\u8BA4
+ActionWaitForSQL.ERROR_CouldNotRetrieveFields=\u62B1\u6B49, \u65E0\u6CD5\u83B7\u53D6\u5B57\u6BB5\u5143\u6570\u636E\u4FE1\u606F\!
+ActionWaitForSQL.Error.NoCustomSQL=\u9009\u4E2D\u8BE5\u9009\u9879\u5219\u5FC5\u9700\u8F93\u5165\u81EA\u5B9A\u4E49 SQL \u811A\u672C
+ActionWaitForSQL.Error.NoTableName=\u672A\u6307\u5B9A\u8868\u540D\!
+ActionWaitForSQL.Error.RunningEntry=\u6267\u884C\u8BE5 Action \u65F6\u53D1\u751F\u9519\u8BEF\: {0}
+ActionWaitForSQL.GetSQLAndSelectStatement=\u751F\u6210 SELECT SQL \u8BED\u53E5
+ActionWaitForSQL.IncludeFieldNamesInSQL=\u662F\u5426\u5728SQL\u8BED\u53E5\u4E2D\u5305\u542B\u5B57\u6BB5
+ActionWaitForSQL.Log.EnteredCustomSQL=\u4F7F\u7528\u4EE5\u4E0B SQL \u67E5\u8BE2\: {0}
+ActionWaitForSQL.Log.NrRowsReturned=\u8FD4\u56DE\u884C\u6570\: {0} 
+ActionWaitForSQL.Log.RunSQLStatement=\u6267\u884C\u4EE5\u4E0B SQL \u67E5\u8BE2\: {0}
+ActionWaitForSQL.Log.customSQLreturnedNothing=SQL \u67E5\u8BE2\u6CA1\u6709\u8FD4\u56DE\u7ED3\u679C, \u81EA\u5B9A\u4E49 SQL\: {0}
+ActionWaitForSQL.Log.nrRowsLimit=\u6700\u5927\u7684\u8FD4\u56DE\u884C\u6570\: {0}
+ActionWaitForSQL.MaximumTimeout.Label=\u6700\u5927\u8D85\u65F6\u65F6\u95F4\:
+ActionWaitForSQL.MaximumTimeout.Tooltip=\u6700\u5927\u8D85\u65F6\u65F6\u95F4 (s), 0\u8868\u793A\u65E0\u9650\u5236
+ActionWaitForSQL.Name=\u7B49\u5F85SQL
+ActionWaitForSQL.Name.Default=\u7B49\u5F85 SQL
+ActionWaitForSQL.Name.Label=Action \u540D\u79F0\:
+ActionWaitForSQL.NoDbConnection=\u6CA1\u6709\u5B9A\u4E49\u6570\u636E\u5E93\u8FDE\u63A5
+ActionWaitForSQL.PerhapsNoPermissions=\u4E5F\u8BB8\u60A8\u6CA1\u6709\u67E5\u8BE2\u8868\u5143\u6570\u636E\u4FE1\u606F\u7684\u7684\u6743\u9650?
+ActionWaitForSQL.Position.Label=\u884C {0} \u5217 {1}
+ActionWaitForSQL.RowsCountValue.Label=\u503C
+ActionWaitForSQL.RowsCountValue.Tooltip=\u503C
+ActionWaitForSQL.Schemaname.Label=\u76EE\u6807\u6A21\u5F0F\:
+ActionWaitForSQL.Schemaname.Tooltip=\u8868\u7684\u6A21\u5F0F\u540D
+ActionWaitForSQL.Script.Label=SQL\u811A\u672C\:
+ActionWaitForSQL.SuccessCondition.Label=\u5F53\u884C\u6570
+ActionWaitForSQL.SuccessGroup.Group.Label=\u6210\u529F\u6761\u4EF6
+ActionWaitForSQL.SuccessOnTimeout.Label=\u8D85\u65F6\u65F6\u6210\u529F
+ActionWaitForSQL.SuccessOnTimeout.Tooltip=\u5982\u679C\u8D85\u65F6, \u8868\u793A\u6210\u529F
+ActionWaitForSQL.SuccessWhenRowCountDifferent.Label=\u4E0D\u7B49\u4E8E
+ActionWaitForSQL.SuccessWhenRowCountEqual.Label=\u7B49\u4E8E
+ActionWaitForSQL.SuccessWhenRowCountGreaterOrEqual.Label=\u4E0D\u5C0F\u4E8E
+ActionWaitForSQL.SuccessWhenRowCountGreaterThan.Label=\u5927\u4E8E
+ActionWaitForSQL.SuccessWhenRowCountSmallerOrEqualThan.Label=\u4E0D\u5927\u4E8E
+ActionWaitForSQL.SuccessWhenRowCountSmallerThan.Label=\u5C0F\u4E8E
+ActionWaitForSQL.Tablename.Label=\u76EE\u6807\u8868\u540D\:
+ActionWaitForSQL.Tablename.Tooltip=\u8981\u5BFC\u5165\u7684\u8868\u6216\u8005\u89C6\u56FE\u540D\u79F0
+ActionWaitForSQL.Title=\u7B49\u5F85SQL
+ActionWaitForSQL.UnableLoadXML=\u65E0\u6CD5\u4ECE XML \u8282\u70B9\u52A0\u8F7D "\u7B49\u5F85 SQL" \u7C7B\u578B\u7684 Action
+ActionWaitForSQL.UseVariableSubst.Label=\u4F7F\u7528\u53D8\u91CF\u66FF\u6362
+ActionWaitForSQL.UseVariableSubst.Tooltip=\u4F7F\u7528\u73AF\u5883\u53D8\u91CF\u66FF\u6362SQL\u811A\u672C\u4E2D\u7684\u503C. \u73AF\u5883\u53D8\u91CF\u7684\u683C\u5F0F\u53D6\u51B3\u4E8E\u64CD\u4F5C\u7CFB\u7EDF, windows\u7CFB\u7EDF\u4E2D\u73AF\u5883\u53D8\u91CF\u7528\u4E24\u4E2A\#\u62EC\u8D77\u6765 (\#\#), linux\r\n\u7CFB\u7EDF\u7684\u73AF\u5883\u53D8\u91CF\u683C\u5F0F\u662F${}
+ActionWaitForSQL.customSQL.Label=\u81EA\u5B9A\u4E49SQL
+ActionWaitForSQL.customSQL.Tooltip=\u81EA\u5B9A\u4E49SQL
+ActionWaitForSql.keyword=wait,sql
diff --git a/plugins/actions/webserviceavailable/src/main/resources/org/apache/hop/workflow/actions/webserviceavailable/messages/messages_zh_CN.properties b/plugins/actions/webserviceavailable/src/main/resources/org/apache/hop/workflow/actions/webserviceavailable/messages/messages_zh_CN.properties
index 5150380..5a6aecd 100644
--- a/plugins/actions/webserviceavailable/src/main/resources/org/apache/hop/workflow/actions/webserviceavailable/messages/messages_zh_CN.properties
+++ b/plugins/actions/webserviceavailable/src/main/resources/org/apache/hop/workflow/actions/webserviceavailable/messages/messages_zh_CN.properties
@@ -16,15 +16,17 @@
 # limitations under the License.
 #
 #
-#
+ActionWebServiceAvailable.ConnectTimeOut.Label=\u8FDE\u63A5\u8D85\u65F6\u65F6\u95F4(\u6BEB\u79D2)
+ActionWebServiceAvailable.ConnectTimeOut.Tooltip=\u8BBE\u7F6E\u8FDE\u63A5\u8D85\u65F6\u65F6\u95F4, \u4EE5\u6BEB\u79D2\u4E3A\u5355\u4F4D
 ActionWebServiceAvailable.Description=Check if a webservice is available
-ActionWebServiceAvailable.Name=\u68c0\u67e5web\u670d\u52a1\u662f\u5426\u53ef\u7528
-ActionWebServiceAvailable.ConnectTimeOut.Tooltip=\u8bbe\u7f6e\u8fde\u63a5\u8d85\u65f6\u65f6\u95f4\uff0c\u4ee5\u6beb\u79d2\u4e3a\u5355\u4f4d
-ActionWebServiceAvailable.ReadTimeOut.Label=\u8bfb\u8d85\u65f6\u65f6\u95f4(\u6beb\u79d2)
-ActionWebServiceAvailable.ERROR_0001_Cannot_Load_Job_Entry_From_Xml_Node=\u65e0\u6cd5\u4eceXML\u8282\u70b9\u4e2d\u52a0\u8f7d\u2018web \u670d\u52a1\u2019\u4f5c\u4e1a\u9879
-ActionWebServiceAvailable.Name.Default=web\u670d\u52a1\u6821\u9a8c
-ActionWebServiceAvailable.URL.Label=URL\uff1a
-ActionWebServiceAvailable.ConnectTimeOut.Label=\u8fde\u63a5\u8d85\u65f6\u65f6\u95f4(\u6beb\u79d2)
-ActionWebServiceAvailable.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0\uff1a
-ActionWebServiceAvailable.Title=\u68c0\u67e5web\u670d\u52a1\u662f\u5426\u53ef\u7528
-ActionWebServiceAvailable.ReadTimeOut.Tooltip=\u8bbe\u7f6e\u8bfb\u8d85\u65f6\u65f6\u95f4\uff0c\u4ee5\u6beb\u79d2\u4e3a\u5355\u4f4d
+ActionWebServiceAvailable.ERROR_0001_Cannot_Load_Job_Entry_From_Xml_Node=\u65E0\u6CD5\u4ECEXML\u8282\u70B9\u4E2D\u52A0\u8F7D\u2018web \u670D\u52A1\u2019 Action 
+ActionWebServiceAvailable.ERROR_0004_Exception=Webservice [{0}] \u4E0D\u53EF\u7528\! {1}
+ActionWebServiceAvailable.ERROR_0005_No_URL_Defined=\u672A\u6307\u5B9A URL.
+ActionWebServiceAvailable.Name=\u68C0\u67E5web\u670D\u52A1\u662F\u5426\u53EF\u7528
+ActionWebServiceAvailable.Name.Default=web\u670D\u52A1\u6821\u9A8C
+ActionWebServiceAvailable.Name.Label=Action \u540D\u79F0\:
+ActionWebServiceAvailable.ReadTimeOut.Label=\u8BFB\u8D85\u65F6\u65F6\u95F4(\u6BEB\u79D2)
+ActionWebServiceAvailable.ReadTimeOut.Tooltip=\u8BBE\u7F6E\u8BFB\u8D85\u65F6\u65F6\u95F4, \u4EE5\u6BEB\u79D2\u4E3A\u5355\u4F4D
+ActionWebServiceAvailable.Title=\u68C0\u67E5web\u670D\u52A1\u662F\u5426\u53EF\u7528
+ActionWebServiceAvailable.URL.Label=URL\:
+ActionWebServiceAvailable.keyword=web,service,availability
diff --git a/plugins/actions/workflow/src/main/resources/org/apache/hop/workflow/actions/workflow/messages/messages_zh_CN.properties b/plugins/actions/workflow/src/main/resources/org/apache/hop/workflow/actions/workflow/messages/messages_zh_CN.properties
index 56df398..9031fa1 100644
--- a/plugins/actions/workflow/src/main/resources/org/apache/hop/workflow/actions/workflow/messages/messages_zh_CN.properties
+++ b/plugins/actions/workflow/src/main/resources/org/apache/hop/workflow/actions/workflow/messages/messages_zh_CN.properties
@@ -16,53 +16,65 @@
 # limitations under the License.
 #
 #
-#
-ActionWorkflow.Name=\u4f5c\u4e1a
-ActionWorkflow.Description=\u6267\u884c\u4e00\u4e2ajob
-ActionWorkflow.Append.Logfile.Label=\u8ffd\u52a0\u65e5\u5fd7\u6587\u4ef6?
-ActionWorkflow.Title=\u4f5c\u4e1a
-ActionWorkflow.InternalName.Label=\u4f5c\u4e1a\u540d\u79f0\: 
-ActionWorkflow.ExecForEveryInputRow.Label=\u5bf9\u6bcf\u4e2a\u8f93\u5165\u884c\u6267\u884c\u4e00\u6b21? 
-ActionWorkflow.SelectFilename.Tooltip=\u9009\u62e9\u4f5c\u4e1a\u6587\u4ef6(.hwf or .xml)
-ActionWorkflow.LogSettings.Group.Label=\u65e5\u5fd7\u8bbe\u5b9a
-ActionWorkflow.Fields.Argument.Label=\u4f4d\u7f6e\u53c2\u6570
-ActionWorkflow.Fields.Label=\u5b57\u6bb5\: 
-ActionWorkflow.Logfile.IncludeTime.Label=\u65e5\u5fd7\u6587\u4ef6\u4e2d\u5305\u542b\u65f6\u95f4? 
-ActionWorkflow.Exception.UnableToFindRemoteHopServer=\u7236\u4f5c\u4e1a\u4e0d\u80fd\u627e\u5230\u6307\u5b9a\u7684\u8fdc\u7a0b\u4ece\u670d\u52a1\u5668''{0}''
-ActionWorkflow.ErrorReadingJob.Text=\u8b66\u544a\!
-ActionWorkflow.HopServer.Label=\u8fdc\u7a0b\u4ece\u670d\u52a1\u5668
-ActionWorkflow.Fileformat.XML=XML \u6587\u4ef6
-ActionWorkflow.WorkflowFile.Label=\u4f5c\u4e1a\u6587\u4ef6\u540d\: 
-ActionWorkflow.Loglevel.Label=\u65e5\u5fd7\u7ea7\u522b\: 
-ActionWorkflow.Append.Logfile.Tooltip=\u5982\u679c\u60f3\u8ffd\u52a0\u65e5\u5fd7\u6587\u4ef6,\u9009\u4e2d\u8be5\u9879.
-ActionWorkflow.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0\: 
-ActionWorkflow.HopServer.ToolTip=\u6307\u5b9a\u6267\u884c\u8be5\u4f5c\u4e1a\u7684\u8fdc\u7a0b\u4ece\u670d\u52a1\u5668.
-ActionWorkflow.Previous.Tooltip=\u9009\u4e2d\u8be5\u9009\u9879\u53ef\u4ee5\u5c06\u4e0a\u4e00\u4e2a\u4f5c\u4e1a\u9879\u7684\u7ed3\u679c\u4f5c\u4e3a\u672c\u4f5c\u4e1a\u9879\u7684\u53c2\u6570.
-ActionWorkflow.ExecForEveryInputRow.Tooltip=\u9009\u4e2d\u8be5\u9009\u9879\u53ef\u4ee5\u5c06\u672c\u4f5c\u4e1a\u9879\u6267\u884c\u591a\u6b21\:\u4e0a\u4e00\u4e2a\u4f5c\u4e1a\u9879\u4f20\u5165\u7684\u6bcf\u4e00\u884c\u6570\u636e,\u90fd\u6267\u884c\u4e00\u6b21.
-ActionWorkflowError.Recursive=\u68c0\u6d4b\u5230\u65e0\u9650\u5faa\u73af\:\u4f5c\u4e1a\u91cc\u7684\u4e00\u4e2a\u4f5c\u4e1a\u9879\u8c03\u7528\u4e86\u81ea\u5df1.\u6587\u4ef6\u540d\u662f[{0}]
-ActionWorkflow.Specify.Logfile.Label=\u6307\u5b9a\u65e5\u5fd7\u6587\u4ef6? 
-ActionWorkflow.Fileformat.All=\u5168\u90e8\u6587\u4ef6
-ActionWorkflow.NameOfLogfile.Label=\u65e5\u5fd7\u6587\u4ef6\u540d\: 
-ActionWorkflow.LogfileExtension.Label=\u65e5\u5fd7\u6587\u4ef6\u6269\u5c55\u540d\: 
-ActionWorkflow.ErrorReadingJob.Message=\u4e0d\u80fd\u4ece\u6587\u4ef6 '{0}'\u8bfb\u53d6\u4f5c\u4e1a\: {1}
-ActionWorkflow.Fileformat.Hop=\u4f5c\u4e1a
-ActionWorkflow.Logfile.IncludeDate.Label=\u65e5\u5fd7\u6587\u4ef6\u4e2d\u5305\u542b\u65e5\u671f? 
-ActionWorkflow.InternalName.Tooltip=\u6307\u5b9a\u4f5c\u4e1a\u522b\u540d
-ActionWorkflow.SelectJobRep.Tooltip=\u4ece\u5f53\u524d\u8d44\u6e90\u5e93\u91cc\u9009\u62e9\u4f5c\u4e1a
-ActionWorkflow.Specification.Group.Label=\u4f5c\u4e1a\u8bbe\u7f6e
-ActionWorkflow.JobFile.Label=\u4f5c\u4e1a\u6587\u4ef6\u540d
-ActionWorkflow.Advanced.Group.Label=\u9ad8\u7ea7
-ActionWorkflow.NameOfJob.Label=\u8d44\u6e90\u5e93\: \u901a\u8fc7\u540d\u79f0\u6307\u5b9a
-ActionWorkflow.JobByReference.Label=\u8d44\u6e90\u5e93\: \u901a\u8fc7\u5f15\u7528\u6307\u5b9a
-ActionWorkflow.Previous.Label=\u590d\u5236\u4e0a\u4e00\u6b65\u7ed3\u679c\u5230\u4f4d\u7f6e\u53c2\u6570 
-ActionWorkflow.PassExportToSlave.Label=\u5c06\u4f5c\u4e1a\u6267\u884c\u7ed3\u679c\u53d1\u9001\u5230\u4ece\u670d\u52a1\u5668\u4e0a
-ActionWorkflow.WaitToFinish.Label=\u7b49\u5f85\u8fdc\u7a0b\u4f5c\u4e1a\u7ed3\u675f
-ActionWorkflow.AbortRemote.Label=\u672c\u5730\u4f5c\u4e1a\u7ec8\u6b62\u5219\u8fdc\u7a0b\u4f5c\u4e1a\u4e5f\u540c\u65f6\u7ec8\u6b62
-ActionWorkflow.Logfile.CreateParentFolder.Label=\u521b\u5efa\u7236\u6587\u4ef6\u5939
-ActionWorkflow.PassAllParameters.Label=\u5c06\u6240\u6709\u53c2\u6570\u503c\u4e0b\u53d1\u5230\u5b50\u4f5c\u4e1a
-ActionWorkflow.Parameters.Value.Label=\u503c
-ActionWorkflow.Parameters.Parameter.Label=\u547d\u540d\u53c2\u6570
-ActionWorkflow.Parameters.ColumnName.Label=\u5217\u540d
-ActionWorkflow.GetParameters.Button.Label=\u83b7\u53d6\u547d\u540d\u53c2\u6570
-ActionWorkflow.Fields.Parameters.Label=\u547d\u540d\u53c2\u6570
-ActionWorkflow.PrevToParams.Label=\u590d\u5236\u4e0a\u4e00\u6b65\u7ed3\u679c\u5230\u547d\u540d\u53c2\u6570
+ActionWorkflow.AbortRemote.Label=\u672C\u5730 Action \u7EC8\u6B62\u5219\u8FDC\u7A0B Action \u4E5F\u540C\u65F6\u7EC8\u6B62
+ActionWorkflow.Advanced.Group.Label=\u9AD8\u7EA7
+ActionWorkflow.Append.Logfile.Label=\u8FFD\u52A0\u65E5\u5FD7\u6587\u4EF6\:
+ActionWorkflow.Append.Logfile.Tooltip=\u5982\u679C\u60F3\u8FFD\u52A0\u65E5\u5FD7\u6587\u4EF6,\u9009\u4E2D\u8BE5\u9879.
+ActionWorkflow.Description=\u6267\u884C\u4E00\u4E2Ajob
+ActionWorkflow.Error.ChekingParentLogFolder=\u68C0\u6D4B\u65E5\u5FD7\u76EE\u5F55 [{0}] \u65F6\u51FA\u9519\!
+ActionWorkflow.Error.ChekingParentLogFolderTitle=\u9519\u8BEF
+ActionWorkflow.ErrorReadingJob.Message=\u4E0D\u80FD\u4ECE\u6587\u4EF6 '{0}'\u8BFB\u53D6 Action \: {1}
+ActionWorkflow.ErrorReadingJob.Text=\u8B66\u544A\!
+ActionWorkflow.Exception.LogFilenameMissing=\u6CA1\u6709\u6307\u5B9A\u65E5\u5FD7\u6587\u4EF6\u540D, \u6216\u5176\u4E3A\u7A7A\u503C
+ActionWorkflow.Exception.UnableToFindRemoteHopServer=\u7236 Action \u4E0D\u80FD\u627E\u5230\u6307\u5B9A\u7684\u8FDC\u7A0B\u4ECE\u670D\u52A1\u5668"{0}"
+ActionWorkflow.ExecForEveryInputRow.Label=\u5BF9\u6BCF\u4E2A\u8F93\u5165\u884C\u6267\u884C\u4E00\u6B21? 
+ActionWorkflow.ExecForEveryInputRow.Tooltip=\u9009\u4E2D\u8BE5\u9009\u9879\u53EF\u4EE5\u5C06\u672C Action \u6267\u884C\u591A\u6B21\:\u4E0A\u4E00\u4E2A Action \u4F20\u5165\u7684\u6BCF\u4E00\u884C\u6570\u636E,\u90FD\u6267\u884C\u4E00\u6B21.
+ActionWorkflow.Fields.Argument.Label=\u4F4D\u7F6E\u53C2\u6570
+ActionWorkflow.Fields.Label=\u5B57\u6BB5\: 
+ActionWorkflow.Fields.Parameters.Label=\u547D\u540D\u53C2\u6570
+ActionWorkflow.Fileformat.All=\u5168\u90E8\u6587\u4EF6
+ActionWorkflow.Fileformat.Hop=\u4F5C\u4E1A
+ActionWorkflow.Fileformat.LOG=\u65E5\u5FD7\u6587\u4EF6
+ActionWorkflow.Fileformat.TXT=\u6587\u672C\u6587\u4EF6
+ActionWorkflow.Fileformat.XML=XML \u6587\u4EF6
+ActionWorkflow.GetParameters.Button.Label=\u83B7\u53D6\u547D\u540D\u53C2\u6570
+ActionWorkflow.Header=Workflow
+ActionWorkflow.HopServer.Label=\u8FDC\u7A0B\u4ECE\u670D\u52A1\u5668
+ActionWorkflow.HopServer.ToolTip=\u6307\u5B9A\u6267\u884C\u8BE5 Action \u7684\u8FDC\u7A0B\u4ECE\u670D\u52A1\u5668.
+ActionWorkflow.InternalName.Label=Action \u540D\u79F0\: 
+ActionWorkflow.InternalName.Tooltip=\u6307\u5B9A Action \u522B\u540D
+ActionWorkflow.JobByReference.Label=\u8D44\u6E90\u5E93\: \u901A\u8FC7\u5F15\u7528\u6307\u5B9A
+ActionWorkflow.JobFile.Label=Action \u6587\u4EF6\u540D
+ActionWorkflow.Log.ParentLogFolderCreated=\u521B\u5EFA\u65E5\u5FD7\u76EE\u5F55.
+ActionWorkflow.Log.ParentLogFolderExists=\u627E\u5230\u65E5\u5FD7\u76EE\u5F55 [{0}]
+ActionWorkflow.Log.ParentLogFolderNotExist=\u672A\u627E\u5230\u65E5\u5FD7\u76EE\u5F55 [{0}]\!
+ActionWorkflow.LogSettings.Group.Label=\u65E5\u5FD7\u8BBE\u5B9A
+ActionWorkflow.Logfile.CreateParentFolder.Label=\u521B\u5EFA\u7236\u6587\u4EF6\u5939\:
+ActionWorkflow.Logfile.IncludeDate.Label=\u65E5\u5FD7\u6587\u4EF6\u4E2D\u5305\u542B\u65E5\u671F\:
+ActionWorkflow.Logfile.IncludeTime.Label=\u65E5\u5FD7\u6587\u4EF6\u4E2D\u5305\u542B\u65F6\u95F4\:
+ActionWorkflow.LogfileExtension.Label=\u65E5\u5FD7\u6587\u4EF6\u6269\u5C55\u540D\: 
+ActionWorkflow.Loglevel.Label=\u65E5\u5FD7\u7EA7\u522B\: 
+ActionWorkflow.Name=\u4F5C\u4E1A
+ActionWorkflow.Name.Label=Action \u540D\u79F0\: 
+ActionWorkflow.NameOfJob.Label=\u8D44\u6E90\u5E93\: \u901A\u8FC7\u540D\u79F0\u6307\u5B9A
+ActionWorkflow.NameOfLogfile.Label=\u65E5\u5FD7\u6587\u4EF6\u540D\: 
+ActionWorkflow.Parameters.ColumnName.Label=\u5217\u540D
+ActionWorkflow.Parameters.Parameter.Label=\u547D\u540D\u53C2\u6570
+ActionWorkflow.Parameters.Value.Label=\u503C
+ActionWorkflow.PassAllParameters.Label=\u5C06\u6240\u6709\u53C2\u6570\u503C\u4E0B\u53D1\u5230\u5B50 Action 
+ActionWorkflow.PassExportToSlave.Label=\u5C06 Action \u6267\u884C\u7ED3\u679C\u53D1\u9001\u5230\u4ECE\u670D\u52A1\u5668\u4E0A
+ActionWorkflow.PrevToParams.Label=\u590D\u5236\u4E0A\u4E00\u6B65\u7ED3\u679C\u5230\u547D\u540D\u53C2\u6570
+ActionWorkflow.Previous.Label=\u590D\u5236\u4E0A\u4E00\u6B65\u7ED3\u679C\u5230\u4F4D\u7F6E\u53C2\u6570 
+ActionWorkflow.Previous.Tooltip=\u9009\u4E2D\u8BE5\u9009\u9879\u53EF\u4EE5\u5C06\u4E0A\u4E00\u4E2A Action \u7684\u7ED3\u679C\u4F5C\u4E3A\u672C Action \u7684\u53C2\u6570.
+ActionWorkflow.ReferencedObject.Description=Workflow
+ActionWorkflow.SelectFilename.Tooltip=\u9009\u62E9 Action \u6587\u4EF6(.hwf or .xml)
+ActionWorkflow.SelectJobRep.Tooltip=\u4ECE\u5F53\u524D\u8D44\u6E90\u5E93\u91CC\u9009\u62E9 Action 
+ActionWorkflow.Specification.Group.Label=Action \u8BBE\u7F6E
+ActionWorkflow.Specify.Logfile.Label=\u6307\u5B9A\u65E5\u5FD7\u6587\u4EF6? 
+ActionWorkflow.Title=\u4F5C\u4E1A
+ActionWorkflow.WaitToFinish.Label=\u7B49\u5F85\u8FDC\u7A0B Action \u7ED3\u675F
+ActionWorkflow.WorkflowFile.Label=Action \u6587\u4EF6\u540D\: 
+ActionWorkflow.keyword=workflow
+ActionWorkflowDialog.Exception.UnableToLoadJob.Message=\u65E0\u6CD5\u52A0\u8F7D\u6307\u5B9A\u7684 Workflow
+ActionWorkflowDialog.Exception.UnableToLoadJob.Title=\u52A0\u8F7D Workflow \u65F6\u51FA\u9519
+ActionWorkflowError.Recursive=\u68C0\u6D4B\u5230\u65E0\u9650\u5FAA\u73AF\: Action \u91CC\u7684\u4E00\u4E2A Action \u9879\u8C03\u7528\u4E86\u81EA\u5DF1.\u6587\u4EF6\u540D\u662F[{0}]
diff --git a/plugins/actions/writetofile/src/main/resources/org/apache/hop/workflow/actions/writetofile/messages/messages_zh_CN.properties b/plugins/actions/writetofile/src/main/resources/org/apache/hop/workflow/actions/writetofile/messages/messages_zh_CN.properties
index 82e2605..a140812 100644
--- a/plugins/actions/writetofile/src/main/resources/org/apache/hop/workflow/actions/writetofile/messages/messages_zh_CN.properties
+++ b/plugins/actions/writetofile/src/main/resources/org/apache/hop/workflow/actions/writetofile/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,25 +15,27 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
+#
+ActionWriteToFile.AppendFile.Label=\u8FFD\u52A0\u65B9\u5F0F
+ActionWriteToFile.AppendFile.Tooltip=\u5982\u679C\u6587\u4EF6\u5B58\u5728, \u6DFB\u52A0\u5230\u6587\u4EF6\u5C3E\u90E8.
+ActionWriteToFile.Content.Label=\u5185\u5BB9
+ActionWriteToFile.CreateParentFolder.Label=\u521B\u5EFA\u7236\u6587\u4EF6\u5939\:
+ActionWriteToFile.CreateParentFolder.Tooltip=\u5FC5\u8981\u65F6\u521B\u5EFA\u7236\u6587\u4EF6\u5939
 ActionWriteToFile.Description=Write text content to file.
-ActionWriteToFile.Name=\u5199\u5165\u6587\u4ef6
-ActionWriteToFile.Title=\u5199\u5165\u6587\u4ef6
-ActionWriteToFile.Name.Default=\u5199\u5165\u6587\u4ef6
-ActionWriteToFile.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0: 
-ActionWriteToFile.Filename.Label=\u6587\u4ef6\u540d: 
-ActionWriteToFile.CreateParentFolder.Label=\u521b\u5efa\u7236\u6587\u4ef6\u5939:
-ActionWriteToFile.CreateParentFolder.Tooltip=\u5fc5\u8981\u65f6\u521b\u5efa\u7236\u6587\u4ef6\u5939
-ActionWriteToFile.Filetype.All=\u5168\u90e8\u6587\u4ef6
-ActionWriteToFile.Content.Label=\u5185\u5bb9
-ActionWriteToFile.AppendFile.Label=\u8ffd\u52a0\u65b9\u5f0f
-ActionWriteToFile.AppendFile.Tooltip=\u5982\u679c\u6587\u4ef6\u5b58\u5728\uff0c\u6dfb\u52a0\u5230\u6587\u4ef6\u5c3e\u90e8.
-ActionWriteToFile.Encoding.Label=\u7f16\u7801
-ActionWriteToFile.Group.File.Label=\u6587\u4ef6
-ActionWriteToFile.Group.Content.Label=\u5185\u5bb9
+ActionWriteToFile.Encoding.Label=\u7F16\u7801
+ActionWriteToFile.Error.CheckingParentFolder=Error while checking parent folder of file [{0}]\!
+ActionWriteToFile.Error.MissinfgFile=Target file is missing\!
+ActionWriteToFile.Error.WritingFile=Error while writing to file [{0}], exception\: {1}
+ActionWriteToFile.Filename.Label=\u6587\u4EF6\u540D\: 
+ActionWriteToFile.Filetype.All=\u5168\u90E8\u6587\u4EF6
+ActionWriteToFile.Group.Content.Label=\u5185\u5BB9
+ActionWriteToFile.Group.File.Label=\u6587\u4EF6
+ActionWriteToFile.Log.ParentFolderCreated=Folder [{0}] was successfully created.
+ActionWriteToFile.Log.ParentFoldetNotExist=We can not find folder [{0}]\!
 ActionWriteToFile.Log.WritingToFile=Writing to file [{0}] ...
 ActionWriteToFile.Log.WritingToFileWithEncoding=Writing to file [{0}] with encoding [{1}] ...
-ActionWriteToFile.Error.WritingFile=Error while writing to file [{0}], exception: {1}
-ActionWriteToFile.Error.MissinfgFile=Target file is missing!
-ActionWriteToFile.Log.ParentFoldetNotExist=We can not find folder [{0}]!
-ActionWriteToFile.Log.ParentFolderCreated=Folder [{0}] was successfully created.
-ActionWriteToFile.Error.CheckingParentFolder=Error while checking parent folder of file [{0}]!
\ No newline at end of file
+ActionWriteToFile.Name=\u5199\u5165\u6587\u4EF6
+ActionWriteToFile.Name.Default=\u5199\u5165\u6587\u4EF6
+ActionWriteToFile.Name.Label=Action \u540D\u79F0\: 
+ActionWriteToFile.Title=\u5199\u5165\u6587\u4EF6
+ActionWriteToFile.keyword=write,file
diff --git a/plugins/actions/writetolog/src/main/resources/org/apache/hop/workflow/actions/writetolog/messages/messages_zh_CN.properties b/plugins/actions/writetolog/src/main/resources/org/apache/hop/workflow/actions/writetolog/messages/messages_zh_CN.properties
index ef90ace..f168d8f 100644
--- a/plugins/actions/writetolog/src/main/resources/org/apache/hop/workflow/actions/writetolog/messages/messages_zh_CN.properties
+++ b/plugins/actions/writetolog/src/main/resources/org/apache/hop/workflow/actions/writetolog/messages/messages_zh_CN.properties
@@ -16,13 +16,15 @@
 # limitations under the License.
 #
 #
-#
 ActionWriteToLog.Description=Write message to log
-ActionWriteToLog.Name=\u5199\u65e5\u5fd7
-WriteToLog.Title=\u5199\u65e5\u5fd7
-WriteToLog.Error.Label=\u9519\u8bef
-WriteToLog.LogSubject.Label=\u65e5\u5fd7\u4e3b\u9898
-WriteToLog.Loglevel.Label=\u65e5\u5fd7\u7ea7\u522b
-WriteToLog.LogMessage.Label=\u65e5\u5fd7\u6d88\u606f
-WriteToLog.Jobname.Label=\u4f5c\u4e1a\u9879\u540d\u79f0
-WriteToLog.Name.Default=\u5199\u65e5\u5fd7
+ActionWriteToLog.Name=\u5199\u65E5\u5FD7
+ActionWriteToLog.keyword=write,log
+WriteToLog.Error.Description=\u53D1\u751F\u4EE5\u4E0B\u9519\u8BEF
+WriteToLog.Error.Label=\u9519\u8BEF
+WriteToLog.Error.UnableToLoadFromXML.Label=\u65E0\u6CD5\u4ECE XML \u8282\u70B9\u52A0\u8F7D "\u5199\u65E5\u5FD7" \u7C7B\u578B\u7684 Action
+WriteToLog.Jobname.Label=Action \u540D\u79F0:
+WriteToLog.LogMessage.Label=\u65E5\u5FD7\u6D88\u606F
+WriteToLog.LogSubject.Label=\u65E5\u5FD7\u4E3B\u9898
+WriteToLog.Loglevel.Label=\u65E5\u5FD7\u7EA7\u522B
+WriteToLog.Name.Default=\u5199\u65E5\u5FD7
+WriteToLog.Title=\u5199\u65E5\u5FD7
diff --git a/plugins/actions/xml/src/main/resources/org/apache/hop/workflow/actions/xml/dtdvalidator/messages/messages_zh_CN.properties b/plugins/actions/xml/src/main/resources/org/apache/hop/workflow/actions/xml/dtdvalidator/messages/messages_zh_CN.properties
index 613793a..f84b0f1 100644
--- a/plugins/actions/xml/src/main/resources/org/apache/hop/workflow/actions/xml/dtdvalidator/messages/messages_zh_CN.properties
+++ b/plugins/actions/xml/src/main/resources/org/apache/hop/workflow/actions/xml/dtdvalidator/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,11 +15,25 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-ActionDTDValidator.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0:
-ActionDTDValidator.Name.Default=DTD \u9a8c\u8bc1
-ActionDTDValidator.DTDFilename.Label=DTD\u6587\u4ef6\u540d:
-ActionDTDValidator.DTDIntern.Label=\u5185\u7f6e DTD
-ActionDTDValidator.Filetype.Xml=XML\u6587\u4ef6
-ActionDTDValidator.Title=DTD \u9a8c\u8bc1
-ActionDTDValidator.xmlFilename.Label=XML \u6587\u4ef6\u540d:
-ActionDTDValidator.DTDIntern.Tooltip=\u5185\u7f6e DTD
+#
+ActionDTDValidator.AllFilesNotNull.Label=\u9700\u8981 2 \u4E2A\u6587\u4EF6\u540D\u79F0\!
+ActionDTDValidator.DTDFilename.Label=DTD\u6587\u4EF6\u540D\:
+ActionDTDValidator.DTDIntern.Label=\u5185\u7F6E DTD\:
+ActionDTDValidator.DTDIntern.Tooltip=\u5185\u7F6E DTD
+ActionDTDValidator.DTDValidatorKO=\u65E0\u6548\u6587\u4EF6 [{0}]\! \u51FA\u73B0 {1} \u4E2A\u9519\u8BEF. {2}
+ActionDTDValidator.DTDValidatorOK.Label=XML \u6587\u4EF6 [{0}] \u6709\u6548.
+ActionDTDValidator.DTDValidatorOK.Subject=XML \u6587\u4EF6\u6709\u6548
+ActionDTDValidator.ERRORDTDFileNotExists.Msg=XML \u7684\u5B9A\u4E49\u6587\u4EF6(DTD) \u4E0D\u5B58\u5728\!
+ActionDTDValidator.ERRORDTDFileNotExists.Subject=DTD \u6587\u4EF6\u4E0D\u5B58\u5728
+ActionDTDValidator.ERRORDTDFound.Label=\u5728\u6587\u4EF6 [{0}] \u4E2D\u672A\u627E\u5230\u6587\u6863\u7C7B\u578B\u6807\u8BB0(<\!DOCTYPE)
+ActionDTDValidator.ERRORDTDNotFound.Label=\u5728 XML \u6587\u6863 [{0}] \u4E2D\u627E\u4E0D\u5230\u6587\u6863\u7C7B\u578B\u5B9A\u4E49
+ActionDTDValidator.ErrorDTDValidator.Label=\u5F53\u4F7F\u7528 DTD \u6587\u4EF6 [{1}] \u68C0\u9A8C XML \u6587\u4EF6 [{0}] \u65F6\u51FA\u9519, \u5F02\u5E38\: {2}.
+ActionDTDValidator.FileDoesNotExist.Label=\u6307\u5B9A\u6587\u4EF6 [{0}] \u4E0D\u5B58\u5728.
+ActionDTDValidator.Filetype.All=\u6240\u6709\u6587\u4EF6
+ActionDTDValidator.Filetype.Dtd=DTD \u6587\u4EF6
+ActionDTDValidator.Filetype.Xml=XML\u6587\u4EF6
+ActionDTDValidator.Name.Default=DTD \u9A8C\u8BC1
+ActionDTDValidator.Name.Label=Action \u540D\u79F0\:
+ActionDTDValidator.Title=DTD \u9A8C\u8BC1
+ActionDTDValidator.xmlFilename.Label=XML \u6587\u4EF6\u540D\:
+DtdValidator.keyword=dtd,validator
diff --git a/plugins/actions/xml/src/main/resources/org/apache/hop/workflow/actions/xml/xmlwellformed/messages/messages_zh_CN.properties b/plugins/actions/xml/src/main/resources/org/apache/hop/workflow/actions/xml/xmlwellformed/messages/messages_zh_CN.properties
index 9eb0727..cc4ac12 100644
--- a/plugins/actions/xml/src/main/resources/org/apache/hop/workflow/actions/xml/xmlwellformed/messages/messages_zh_CN.properties
+++ b/plugins/actions/xml/src/main/resources/org/apache/hop/workflow/actions/xml/xmlwellformed/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,43 +15,62 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-ActionXMLWellFormed.Settings.Label=\u8bbe\u7f6e
-ActionXMLWellFormed.Wildcard.Tooltip=\u6307\u5b9a\u5339\u914d\u6587\u4ef6\u7684\u901a\u914d\u7b26\uff0c\u53ea\u6709\u5339\u914d\u7684\u6587\u4ef6\u624d\u4f1a\u88ab\u68c0\u67e5
-ActionXMLWellFormed.NrBadFormedLessThan.Label=\u6587\u4ef6\u6570\u91cf
-ActionXMLWellFormed.SourceFileFolder.Tooltip=\u6e90\u6587\u4ef6/\u6587\u4ef6\u5939
-ActionXMLWellFormed.AddAllFilenamesToResult.Label=\u6dfb\u52a0\u6240\u6709\u6587\u4ef6\u540d
-ActionXMLWellFormed.Filetype.All=\u5168\u90e8\u6587\u4ef6
-ActionXMLWellFormed.SuccessCondition.Label=\u6210\u529f\u6761\u4ef6
-ActionXMLWellFormed.Filetype.Xml=XML\u6587\u4ef6
-ActionXMLWellFormed.NrBadFormedLessThan.Tooltip=\u9519\u8bef\u683c\u5f0f\u7684\u6587\u4ef6\u6570\u5c11\u4e8e
-ActionXMLWellFormed.IncludeSubfolders.Tooltip=\u5305\u542b\u5b50\u6587\u4ef6\u5939
-ActionXMLWellFormed.AddOnlyBadFormedFilenames.Label=\u53ea\u6dfb\u52a0\u9519\u8bef\u683c\u5f0f\u7684\u6587\u4ef6\u540d
-ActionXMLWellFormed.Tab.Advanced.Label=\u9ad8\u7ea7
-ActionXMLWellFormed.SuccessWhenAtLeat.Label=\u683c\u5f0f\u6b63\u786e\u7684\u6587\u4ef6\u81f3\u5c11\u6709
-ActionXMLWellFormed.IncludeSubfolders.Label=\u5305\u542b\u5b50\u6587\u4ef6\u5939
-ActionXMLWellFormed.Fields.SourceFileFolder.Label=\u6e90\u6587\u4ef6/\u6587\u4ef6\u5939
-ActionXMLWellFormed.Previous.Label=\u590d\u5236\u4e0a\u4e00\u6b65\u7684\u7ed3\u679c\u5230\u53c2\u6570
-ActionXMLWellFormed.BrowseFiles.Label=\u6587\u4ef6
-ActionXMLWellFormed.Name.Default=\u68c0\u67e5XML\u6587\u4ef6\u683c\u5f0f
-ActionXMLWellFormed.Wildcard.Label=\u901a\u914d\u7b26(\u6b63\u5219\u8868\u8fbe\u5f0f)
-ActionXMLWellFormed.Fields.Label=\u6587\u4ef6/\u6587\u4ef6\u5939
-ActionXMLWellFormed.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0:
-ActionXMLWellFormed.SuccessOn.Group.Label=\u6210\u529f\u6761\u4ef6
-ActionXMLWellFormed.AddFilenameToResult.Label=\u6dfb\u52a0\u6587\u4ef6\u540d
-ActionXMLWellFormed.FilenameDelete.Tooltip=\u5220\u9664\u9009\u4e2d\u7684\u6587\u4ef6
-ActionXMLWellFormed.FilenameEdit.Button=&\u7f16\u8f91
-ActionXMLWellFormed.FilenameAdd.Button=&\u6dfb\u52a0
-ActionXMLWellFormed.Fields.Wildcard.Tooltip=\u6307\u5b9a\u5339\u914d\u6587\u4ef6\u7684\u901a\u914d\u7b26\uff0c\u53ea\u6709\u5339\u914d\u7684\u6587\u4ef6\u624d\u4f1a\u88ab\u79fb\u52a8
-ActionXMLWellFormed.Previous.Tooltip=\u6ce8\u610f\u6309\u7167\u4e0b\u9762\u7684\u53c2\u6570\u987a\u5e8f:(1)\u6e90\u6587\u4ef6/\u6587\u4ef6\u5939 (2)\u901a\u914d\u7b26
-ActionXMLWellFormed.FileResult.Group.Label=\u7ed3\u679c\u6587\u4ef6\u540d
-ActionXMLWellFormed.FilenameEdit.Tooltip=\u7f16\u8f91\u9009\u4e2d\u7684\u6587\u4ef6
-ActionXMLWellFormed.Fields.SourceFileFolder.Tooltip=\u8f93\u5165\u8981\u5904\u7406\u7684\u6587\u4ef6\u6216\u8005\u6587\u4ef6\u5939
-ActionXMLWellFormed.BrowseFolders.Label=\u6587\u4ef6\u5939
-ActionXMLWellFormed.SuccessWhenAllWorksFine.Label=\u6240\u6709\u7684\u6587\u4ef6\u683c\u5f0f\u90fd\u6b63\u786e
-ActionXMLWellFormed.Title=\u9a8c\u8bc1XML\u6587\u4ef6\u683c\u5f0f
-ActionXMLWellFormed.SourceFileFolder.Label=\u6e90\u6587\u4ef6/\u6587\u4ef6\u5939
-ActionXMLWellFormed.FilenameDelete.Button=&\u5220\u9664
-ActionXMLWellFormed.Fields.Wildcard.Label=\u901a\u914d\u7b26(\u6b63\u5219\u8868\u8fbe\u5f0f)
-ActionXMLWellFormed.AddOnlyWellFormedFilenames.Label=\u503c\u6dfb\u52a0\u6b63\u786e\u683c\u5f0f\u7684\u6587\u4ef6\u540d
-ActionXMLWellFormed.SuccessWhenBadFormedLessThan.Label=\u9519\u8bef\u683c\u5f0f\u7684\u6587\u4ef6\u6570\u5c11\u4e8e
-ActionXMLWellFormed.Tab.General.Label=\u4e00\u822c
+#
+ActionXMLWellFormed.AddAllFilenamesToResult.Label=\u6DFB\u52A0\u6240\u6709\u6587\u4EF6\u540D
+ActionXMLWellFormed.AddFilenameToResult.Label=\u6DFB\u52A0\u6587\u4EF6\u540D\:
+ActionXMLWellFormed.AddOnlyBadFormedFilenames.Label=\u53EA\u6DFB\u52A0\u9519\u8BEF\u683C\u5F0F\u7684\u6587\u4EF6\u540D
+ActionXMLWellFormed.AddOnlyWellFormedFilenames.Label=\u503C\u6DFB\u52A0\u6B63\u786E\u683C\u5F0F\u7684\u6587\u4EF6\u540D
+ActionXMLWellFormed.BrowseFiles.Label=\u6587\u4EF6
+ActionXMLWellFormed.BrowseFolders.Label=\u6587\u4EF6\u5939
+ActionXMLWellFormed.Error.AddingToFilenameResult=\u6DFB\u52A0\u6587\u4EF6 [{0}] \u5230\u8FD4\u56DE\u6587\u4EF6\u5217\u8868\u65F6\u51FA\u9519, \u5F02\u5E38\: {1}
+ActionXMLWellFormed.Error.Exception.Processing=\u5904\u7406\u6587\u4EF6 [{0}] \u65F6\u51FA\u9519, \u5F02\u5E38\: {1}
+ActionXMLWellFormed.Error.Exception.UnableLoadXML=\u65E0\u6CD5\u4ECE XML \u8282\u70B9\u52A0\u8F7D "XML \u683C\u5F0F" \u7C7B\u578B\u7684 Action
+ActionXMLWellFormed.Error.FileBadFormed=XML \u6587\u4EF6 [{0}] \u683C\u5F0F\u9519\u8BEF\!
+ActionXMLWellFormed.Error.FileWellFormed=XML \u6587\u4EF6 [{0}] \u683C\u5F0F\u6B63\u786E.
+ActionXMLWellFormed.Error.SourceFileNotExists=\u6587\u4EF6/\u76EE\u5F55 [{0}] \u4E0D\u5B58\u5728\!
+ActionXMLWellFormed.Error.SuccessConditionbroken=\u7EC8\u6B62\u6210\u529F\u6761\u4EF6\u68C0\u6D4B\! \u51FA\u73B0 {0} \u9519\u8BEF
+ActionXMLWellFormed.Error.UnknowFileFormat=\u65E0\u6CD5\u83B7\u53D6\u6587\u4EF6 [{0}] \u7684\u7C7B\u578B
+ActionXMLWellFormed.Fields.Label=\u6587\u4EF6/\u6587\u4EF6\u5939
+ActionXMLWellFormed.Fields.SourceFileFolder.Label=\u6E90\u6587\u4EF6/\u6587\u4EF6\u5939
+ActionXMLWellFormed.Fields.SourceFileFolder.Tooltip=\u8F93\u5165\u8981\u5904\u7406\u7684\u6587\u4EF6\u6216\u8005\u6587\u4EF6\u5939
+ActionXMLWellFormed.Fields.Wildcard.Label=\u901A\u914D\u7B26(\u6B63\u5219\u8868\u8FBE\u5F0F)
+ActionXMLWellFormed.Fields.Wildcard.Tooltip=\u6307\u5B9A\u5339\u914D\u6587\u4EF6\u7684\u901A\u914D\u7B26, \u53EA\u6709\u5339\u914D\u7684\u6587\u4EF6\u624D\u4F1A\u88AB\u79FB\u52A8
+ActionXMLWellFormed.FileResult.Group.Label=\u7ED3\u679C\u6587\u4EF6\u540D
+ActionXMLWellFormed.FilenameAdd.Button=\u6DFB\u52A0(&A)
+ActionXMLWellFormed.FilenameDelete.Button=\u5220\u9664(&D)
+ActionXMLWellFormed.FilenameDelete.Tooltip=\u5220\u9664\u9009\u4E2D\u7684\u6587\u4EF6
+ActionXMLWellFormed.FilenameEdit.Button=\u7F16\u8F91(&E)
+ActionXMLWellFormed.FilenameEdit.Tooltip=\u7F16\u8F91\u9009\u4E2D\u7684\u6587\u4EF6
+ActionXMLWellFormed.Filetype.All=\u5168\u90E8\u6587\u4EF6
+ActionXMLWellFormed.Filetype.Xml=XML\u6587\u4EF6
+ActionXMLWellFormed.IncludeSubfolders.Label=\u5305\u542B\u5B50\u6587\u4EF6\u5939
+ActionXMLWellFormed.IncludeSubfolders.Tooltip=\u5305\u542B\u5B50\u6587\u4EF6\u5939
+ActionXMLWellFormed.Log.ArgFromPrevious.Found=\u4ECE\u524D\u7F6E\u7ED3\u679C\u4E2D\u627E\u5230 [{0}] \u53C2\u6570
+ActionXMLWellFormed.Log.ErrorCheckingFile=\u68C0\u6D4B\u6587\u4EF6 [{0}] \u65F6\u51FA\u9519, \u5F02\u5E38\: {1}
+ActionXMLWellFormed.Log.FileAddedToResultFilesName=\u6587\u4EF6\u6587\u4EF6 [{0}] \u5230\u8FD4\u56DE\u6587\u4EF6\u5217\u8868\u4E2D
+ActionXMLWellFormed.Log.FileExists=\u6587\u4EF6 [{0}] \u5B58\u5728.
+ActionXMLWellFormed.Log.Info.FilesInBadFormed=XMl \u683C\u5F0F\u9519\u8BEF\u7684\u6587\u4EF6\u603B\u6570\: {0}
+ActionXMLWellFormed.Log.Info.FilesInError=\u683C\u5F0F\u9519\u8BEF\u6587\u4EF6\u603B\u6570\: {0}
+ActionXMLWellFormed.Log.Info.FilesInWellFormed=\u683C\u5F0F\u6B63\u786E\u6587\u4EF6\u603B\u6570\: {0}
+ActionXMLWellFormed.Log.ProcessingRow=\u5904\u7406\u5728\u6E90\u6587\u4EF6/\u76EE\u5F55 [{0}] \u4E2D\u5339\u914D [{1}] \u7684\u6587\u4EF6...
+ActionXMLWellFormed.Name.Default=\u68C0\u67E5XML\u6587\u4EF6\u683C\u5F0F
+ActionXMLWellFormed.Name.Label=Action \u540D\u79F0\:
+ActionXMLWellFormed.NrBadFormedLessThan.Label=\u6587\u4EF6\u6570\u91CF
+ActionXMLWellFormed.NrBadFormedLessThan.Tooltip=\u9519\u8BEF\u683C\u5F0F\u7684\u6587\u4EF6\u6570\u5C11\u4E8E
+ActionXMLWellFormed.Previous.Label=\u590D\u5236\u4E0A\u4E00\u6B65\u7684\u7ED3\u679C\u5230\u53C2\u6570
+ActionXMLWellFormed.Previous.Tooltip=\u6CE8\u610F\u6309\u7167\u4E0B\u9762\u7684\u53C2\u6570\u987A\u5E8F\:(1)\u6E90\u6587\u4EF6/\u6587\u4EF6\u5939 (2)\u901A\u914D\u7B26
+ActionXMLWellFormed.Settings.Label=\u8BBE\u7F6E
+ActionXMLWellFormed.SourceFileFolder.Label=\u6E90\u6587\u4EF6/\u6587\u4EF6\u5939
+ActionXMLWellFormed.SourceFileFolder.Tooltip=\u6E90\u6587\u4EF6/\u6587\u4EF6\u5939
+ActionXMLWellFormed.SuccessCondition.Label=\u6210\u529F\u6761\u4EF6
+ActionXMLWellFormed.SuccessOn.Group.Label=\u6210\u529F\u6761\u4EF6
+ActionXMLWellFormed.SuccessWhenAllWorksFine.Label=\u6240\u6709\u7684\u6587\u4EF6\u683C\u5F0F\u90FD\u6B63\u786E
+ActionXMLWellFormed.SuccessWhenAtLeat.Label=\u683C\u5F0F\u6B63\u786E\u7684\u6587\u4EF6\u81F3\u5C11\u6709
+ActionXMLWellFormed.SuccessWhenBadFormedLessThan.Label=\u9519\u8BEF\u683C\u5F0F\u7684\u6587\u4EF6\u6570\u5C11\u4E8E
+ActionXMLWellFormed.Tab.Advanced.Label=\u9AD8\u7EA7
+ActionXMLWellFormed.Tab.General.Label=\u4E00\u822C
+ActionXMLWellFormed.Title=\u9A8C\u8BC1XML\u6587\u4EF6\u683C\u5F0F
+ActionXMLWellFormed.Wildcard.Label=\u901A\u914D\u7B26(\u6B63\u5219\u8868\u8FBE\u5F0F)
+ActionXMLWellFormed.Wildcard.Tooltip=\u6307\u5B9A\u5339\u914D\u6587\u4EF6\u7684\u901A\u914D\u7B26, \u53EA\u6709\u5339\u914D\u7684\u6587\u4EF6\u624D\u4F1A\u88AB\u68C0\u67E5
+ActionXMLWellFormed.log.FileFolderEmpty=\u7A7A\u76EE\u5F55 {0} \!
+XmlWellFormed.keyword=xml,wellformed
diff --git a/plugins/actions/xml/src/main/resources/org/apache/hop/workflow/actions/xml/xsdvalidator/messages/messages_zh_CN.properties b/plugins/actions/xml/src/main/resources/org/apache/hop/workflow/actions/xml/xsdvalidator/messages/messages_zh_CN.properties
index 90bbe30..d74082d 100644
--- a/plugins/actions/xml/src/main/resources/org/apache/hop/workflow/actions/xml/xsdvalidator/messages/messages_zh_CN.properties
+++ b/plugins/actions/xml/src/main/resources/org/apache/hop/workflow/actions/xml/xsdvalidator/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,14 +15,23 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-ActionXSDValidator.Name.Default=XSD \u9a8c\u8bc1\u5668
-ActionXSDValidator.ErrorXML1.Label=XML \u6587\u4ef6\u540d [
-ActionXSDValidator.Filetype.Xml=XML \u6587\u4ef6
-ActionXSDValidator.xsdFilename.Label=XSD\u6587\u4ef6\u540d:
-ActionXSDValidator.Filetype.Xsd=XSD \u6587\u4ef6
+#
+ActionXSDValidator.AllFilesNotNull.Label=\u5FC5\u9700 2 \u4E2A\u6587\u4EF6\!
+ActionXSDValidator.AllowExternalEntities.Label=\u652F\u6301\u5916\u90E8\u5B9E\u4F53\u9A8C\u8BC1\:
+ActionXSDValidator.Error.DisallowedDocType=\u5F53\u542F\u7528\u7279\u6027 http\://apache.org/xml/features/disallow-doctype-decl \u65F6, \u4E0D\u5141\u8BB8\u4F7F\u7528 DOCTYPE\u6807\u8BB0.
+ActionXSDValidator.ErrorXML1.Label=XML \u6587\u4EF6\u540D [
 ActionXSDValidator.ErrorXML2.Label=]
-ActionXSDValidator.ErrorXSD2.Label=] \u9519\u8bef:
-ActionXSDValidator.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0:
-ActionXSDValidator.Title=XSD\u9a8c\u8bc1\u5668
-ActionXSDValidator.xmlFilename.Label=XML\u6587\u4ef6\u540d:
-ActionXSDValidator.ErrorXSD1.Label=XSD \u6587\u4ef6 [
+ActionXSDValidator.ErrorXSD1.Label=XSD \u6587\u4EF6 [
+ActionXSDValidator.ErrorXSD2.Label=] \u9519\u8BEF\:
+ActionXSDValidator.ErrorXSDValidator.Label=\u4F7F\u7528 XSD \u6587\u4EF6\u68C0\u9A8C\u65F6\u53D1\u751F\u9519\u8BEF
+ActionXSDValidator.FileDoesNotExist1.Label=\u6587\u4EF6 [
+ActionXSDValidator.FileDoesNotExist2.Label=] \u4E0D\u5B58\u5728\!
+ActionXSDValidator.Filetype.All=\u6240\u6709\u6587\u4EF6
+ActionXSDValidator.Filetype.Xml=XML \u6587\u4EF6
+ActionXSDValidator.Filetype.Xsd=XSD \u6587\u4EF6
+ActionXSDValidator.Name.Default=XSD \u9A8C\u8BC1\u5668
+ActionXSDValidator.Name.Label=Action \u540D\u79F0\:
+ActionXSDValidator.Title=XSD\u9A8C\u8BC1\u5668
+ActionXSDValidator.xmlFilename.Label=XML\u6587\u4EF6\u540D\:
+ActionXSDValidator.xsdFilename.Label=XSD\u6587\u4EF6\u540D\:
+XsdValidator.keyword=xsd,validator
diff --git a/plugins/actions/xml/src/main/resources/org/apache/hop/workflow/actions/xml/xslt/messages/messages_zh_CN.properties b/plugins/actions/xml/src/main/resources/org/apache/hop/workflow/actions/xml/xslt/messages/messages_zh_CN.properties
index 327a872..a9adf2e 100644
--- a/plugins/actions/xml/src/main/resources/org/apache/hop/workflow/actions/xml/xslt/messages/messages_zh_CN.properties
+++ b/plugins/actions/xml/src/main/resources/org/apache/hop/workflow/actions/xml/xslt/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,30 +15,55 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-ActionXSLT.Previous.ToolTip=\u4ece\u4e0a\u4e00\u6b65\u9aa4\u83b7\u53d6\u6587\u4ef6\u540d\u3002\u6ce8\u610f\uff0c\u987a\u5e8f\u5fc5\u987b\u662f:\r\n\r\nField1\=XML \u6587\u4ef6\u540d\r\n\r\nField2\=XSL \u6587\u4ef6\u540d\r\n\r\nField3\=\u8f93\u51fa \u6587\u4ef6\u540d
-XsltDialog.ColumnInfo.OutputProperties.Name=\u540d\u79f0
-ActionXSLT.Filetype.All=\u5168\u90e8\u6587\u4ef6
-XsltDialog.Parameters.Label=\u547d\u540d\u53c2\u6570
-ActionXSLT.xslFilename.Label=XSL\u6587\u4ef6\u540d:
-ActionXSLT.Filetype.Xml=XML\u6587\u4ef6
-ActionXSLT.Filetype.Xsl=XSL\u6587\u4ef6
-XsltDialog.ColumnInfo.Parameter=\u503c
-XsltDialog.ColumnInfo.Name=\u540d\u79f0
-ActionXSLT.Name.Default=XSL\u8f6c\u6362
-ActionXSLT.xmlFilename.Label=XML\u6587\u4ef6\u540d:
-ActionXSLT.Filetype.Xslt=XSLT\u6587\u4ef6
-ActionXSLT.IfFileExists.Label=\u5982\u679c\u6587\u4ef6\u5b58\u5728
-ActionXSLT.AddFileToResult.Tooltip=\u9009\u4e2d\u6b64\u9009\u9879\u4f1a\u5c06\u8f93\u51fa\u7ed3\u6587\u4ef6\u6dfb\u52a0\u5230\u7ed3\u679c\u4e2d\uff0c\u4ee5\u65b9\u4fbf\u540e\u7eed\u6b65\u9aa4\u4e2d\u4f7f\u7528\u8be5\u7ed3\u679c\u6587\u4ef6\uff0c\u4f8b\u5982\u4f5c\u4e3a\u90ae\u4ef6\u9644\u4ef6
-ActionXSLT.OutputFilename.Label=\u8f93\u51fa\u6587\u4ef6\u540d:
-ActionXSLT.Tab.General.Label=\u4e00\u822c
-ActionXSLT.Files.Group.Label=\u6587\u4ef6
-ActionXSLT.Title=XSL\u8f6c\u6362
-XsltDialog.OutputProperties.Label=\u8f93\u51fa\u5c5e\u6027
-ActionXSLT.AddFileToResult.Label=\u6dfb\u52a0\u8f93\u51fa\u6587\u4ef6\u5230\u7ed3\u679c
-XsltDialog.ColumnInfo.OutputProperties.Value=\u503c
-ActionXSLT.Do_Nothing_IfFileExists.Label=\u4ec0\u4e48\u4e5f\u4e0d\u505a
-ActionXSLT.XSLTFactory.Label=\u8f6c\u6362\u5668\u5de5\u5382:
-ActionXSLT.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0:
-ActionXSLT.Tab.Advanced.Label=\u9ad8\u7ea7
-ActionXSLT.Previous.Label=\u4ece\u4e0a\u4e00\u6b65\u7ed3\u679c\u4e2d\u83b7\u53d6\u6587\u4ef6\u540d
-ActionXSLT.FileResult.Group.Settings.Label=\u8bbe\u7f6e
+#
+ActionXSL.Log.TransformerClass=XSL \u9009\u7528\u8F6C\u6362\u7C7B\: [{0}]
+ActionXSL.Log.TransformerClassInfos=\u8F6C\u6362\u7C7B
+ActionXSL.Log.TransformerFactory=XSL \u9009\u7528\u8F6C\u6362\u5DE5\u5382\u7C7B\: [{0}]
+ActionXSL.Log.TransformerFactoryInfos=\u8F6C\u6362\u5DE5\u5382
+ActionXSLT.AddFileToResult.Label=\u6DFB\u52A0\u8F93\u51FA\u6587\u4EF6\u5230\u7ED3\u679C
+ActionXSLT.AddFileToResult.Tooltip=\u9009\u4E2D\u6B64\u9009\u9879\u4F1A\u5C06\u8F93\u51FA\u7ED3\u6587\u4EF6\u6DFB\u52A0\u5230\u7ED3\u679C\u4E2D, \u4EE5\u65B9\u4FBF\u4E0B\u6E38\u901A\u9053\u4E2D\u4F7F\u7528\u8BE5\u7ED3\u679C\u6587\u4EF6, \u4F8B\u5982\u4F5C\u4E3A\u90AE\u4EF6\u9644\u4EF6
+ActionXSLT.AllFilesNotNull.Label=\u9700\u8981 3 \u4E2A\u6587\u4EF6\u540D\u79F0\!
+ActionXSLT.Create_NewFile_IfFileExists.Label=\u4F7F\u7528\u552F\u4E00\u540D\u79F0\u521B\u5EFA\u65B0\u7684
+ActionXSLT.Do_Nothing_IfFileExists.Label=\u4EC0\u4E48\u4E5F\u4E0D\u505A
+ActionXSLT.ErrorXLST.Label=\u6267\u884C XSL \u8F6C\u6362\u8FDB\u7A0B\u65F6\u51FA\u9519
+ActionXSLT.ErrorXLSTXML1.Label=XML \u6587\u4EF6\u540D [
+ActionXSLT.ErrorXLSTXML2.Label=]
+ActionXSLT.ErrorXLSTXSL1.Label=XDL \u6587\u4EF6\u540D [
+ActionXSLT.ErrorXLSTXSL2.Label=] \u51FA\u9519\: 
+ActionXSLT.Fail_IfFileExists.Label=\u5931\u8D25
+ActionXSLT.FileDoesNotExist1.Label=\u6587\u4EF6 [
+ActionXSLT.FileDoesNotExist2.Label=] \u4E0D\u5B58\u5728\!
+ActionXSLT.FileResult.Group.Settings.Label=\u8BBE\u7F6E
+ActionXSLT.Files.Group.Label=\u6587\u4EF6
+ActionXSLT.Filetype.All=\u5168\u90E8\u6587\u4EF6
+ActionXSLT.Filetype.Xml=XML\u6587\u4EF6
+ActionXSLT.Filetype.Xsl=XSL\u6587\u4EF6
+ActionXSLT.Filetype.Xslt=XSLT\u6587\u4EF6
+ActionXSLT.IfFileExists.Label=\u5982\u679C\u6587\u4EF6\u5B58\u5728
+ActionXSLT.Log.ArgFromPrevious.Found=\u4ECE\u524D\u7F6E\u8FD4\u56DE\u7ED3\u679C\u4E2D\u6536\u5230 {0} \u884C\u6570\u636E
+ActionXSLT.Name.Default=XSL\u8F6C\u6362
+ActionXSLT.Name.Label=Action \u540D\u79F0\:
+ActionXSLT.OuputFileExists1.Label=\u8F93\u51FA\u6587\u4EF6 [
+ActionXSLT.OuputFileExists2.Label=] \u5B58\u5728\!
+ActionXSLT.OuputFileNameChange1.Label=\u65B0\u8F93\u51FA\u6587\u4EF6\u540D [
+ActionXSLT.OuputFileNameChange2.Label=]
+ActionXSLT.OutputFilename.Label=\u8F93\u51FA\u6587\u4EF6\u540D\:
+ActionXSLT.Previous.Label=\u4ECE\u4E0A\u4E00\u6B65\u7ED3\u679C\u4E2D\u83B7\u53D6\u6587\u4EF6\u540D
+ActionXSLT.Previous.ToolTip=\u4ECE\u524D\u7F6E\u901A\u9053\u83B7\u53D6\u6587\u4EF6\u540D. \u6CE8\u610F, \u987A\u5E8F\u5FC5\u987B\u662F\:\r\n\r\nField1\=XML \u6587\u4EF6\u540D\r\n\r\nField2\=XSL \u6587\u4EF6\u540D\r\n\r\nField3\=\u8F93\u51FA \u6587\u4EF6\u540D
+ActionXSLT.Tab.Advanced.Label=\u9AD8\u7EA7
+ActionXSLT.Tab.General.Label=\u4E00\u822C
+ActionXSLT.Title=XSL\u8F6C\u6362
+ActionXSLT.XSLTFactory.Label=\u8F6C\u6362\u5668\u5DE5\u5382\:
+ActionXSLT.xmlFilename.Label=XML\u6587\u4EF6\u540D\:
+ActionXSLT.xslFilename.Label=XSL\u6587\u4EF6\u540D\:
+XSLT.Category=XML
+XSLT.Description=XSL \u8F6C\u6362
+XSLT.Name=XSL \u8F6C\u6362
+Xslt.Exception.ParameterFieldMissing=\u7F3A\u5931\u53C2\u6570 [{0}](\u7D22\u5F15 \#{1}\#) \u7684\u503C
+Xslt.keyword=xslt
+XsltDialog.ColumnInfo.Name=\u540D\u79F0
+XsltDialog.ColumnInfo.OutputProperties.Name=\u540D\u79F0
+XsltDialog.ColumnInfo.OutputProperties.Value=\u503C
+XsltDialog.ColumnInfo.Parameter=\u503C
+XsltDialog.OutputProperties.Label=\u8F93\u51FA\u5C5E\u6027
+XsltDialog.Parameters.Label=\u547D\u540D\u53C2\u6570
diff --git a/plugins/actions/zipfile/src/main/resources/org/apache/hop/workflow/actions/zipfile/messages/messages_zh_CN.properties b/plugins/actions/zipfile/src/main/resources/org/apache/hop/workflow/actions/zipfile/messages/messages_zh_CN.properties
index 672a1aa..504b338 100644
--- a/plugins/actions/zipfile/src/main/resources/org/apache/hop/workflow/actions/zipfile/messages/messages_zh_CN.properties
+++ b/plugins/actions/zipfile/src/main/resources/org/apache/hop/workflow/actions/zipfile/messages/messages_zh_CN.properties
@@ -16,104 +16,108 @@
 # limitations under the License.
 #
 #
-#
-ActionZipFile.Description=\u628a\u76ee\u5f55\u91cc\u7684\u6587\u4ef6\u538b\u7f29(Zip)
-ActionZipFile.Name=Zip \u538b\u7f29\u6587\u4ef6
-ActionZipFile.BrowseFolders.Label=\u6587\u4ef6\u5939
-ActionZipFile.Log.MoveToFolderNotFolder=\u6587\u4ef6[{0}]\u4e0d\u662f\u4e00\u4e2a\u6587\u4ef6\u5939\uff01
-ActionZipFile.AfterZip.Label=\u538b\u7f29\u540e 
-ActionZipFile.Cant_CreateZipFile2.Label=] , \u5f02\u5e38\: 
-ActionZipFile.Zip_FileNameChange2.Label=]
-ActionZipFile.Add_FilesToZip2.Label=] \u6765\u81ea [
-ActionZipFile.SelectOutputFiles.DialogMessage=\u538b\u7f29\u6587\u4ef6\u540d
-ActionZipFile.createMoveToDirectory.Tooltip=\u5982\u679c\u9700\u8981\uff0c\u65b0\u5efa\u6587\u4ef6\u5939
-ActionZipFile.Log.MoveToFolderNotNotExist=\u627e\u4e0d\u5230\u79fb\u52a8\u5230\u7684\u76ee\u6807\u6587\u4ef6\u5939[{0}]\uff01
-ActionZipFile.Title=Zip \u538b\u7f29\u6587\u4ef6
-ActionZipFile.ArgFromPrevious.Found=\u4ece\u4e0a\u4e00\u6b65\u7ed3\u679c\u4e2d\u627e\u5230\u53c2\u6570[{0}]
-ActionZipFile.AddTime.Label=\u5728\u6587\u4ef6\u540d\u4e2d\u5305\u542b\u65f6\u95f4
-ActionZipFile.SourceDir.Label=\u6e90\u76ee\u5f55/\u6587\u4ef6\: 
-ActionZipFile.Move_Files_AfterZip.Label=\u79fb\u52a8\u6587\u4ef6
-ActionZipFile.MovetoDirectory.Label=\u79fb\u52a8\u6587\u4ef6\u5230
-ActionZipFile.Cant_CreateZipFile1.Label=\u65e0\u6cd5\u521b\u5efa\u6587\u4ef6 [
-ActionZipFile.AddDate.Label=\u5728\u6587\u4ef6\u540d\u4e2d\u5305\u542b\u65e5\u671f
-ActionZipFile.Zip_FileNameChange1.Label=\u65b0Zip\u6587\u4ef6\u88ab\u521b\u5efa [
-ActionZipFile.Tab.General.Label=\u4e00\u822c
-ActionZipFile.BrowseFiles.Label=\u6587\u4ef6
-ActionZipFile.AddTime.Tooltip=\u5982\u679c\u4f60\u60f3\u6dfb\u52a0\u65f6\u95f4\u5230\u6587\u4ef6\u540d\uff0c\u8bf7\u9009\u4e2d\u6b64\u9009\u9879
+ActionZipFile.AddDate.Label=\u5728\u6587\u4EF6\u540D\u4E2D\u5305\u542B\u65E5\u671F
+ActionZipFile.AddDate.Tooltip=\u5982\u679C\u4F60\u60F3\u6DFB\u52A0\u65E5\u671F\u5230\u538B\u7F29\u6587\u4EF6\u540D\u8BF7\u9009\u4E2D\u6B21\u9009\u9879
+ActionZipFile.AddFileToResult.Label=\u6DFB\u52A0\u538B\u7F29\u6587\u4EF6\u5230\u7ED3\u679C
+ActionZipFile.AddFileToResult.Tooltip=\u5982\u679C\u4F60\u60F3\u6DFB\u52A0\u538B\u7F29\u6587\u4EF6\u5230\u7ED3\u679C\u6587\u4EF6\u540D\u6216\u8005\u6DFB\u52A0\u5230\u90AE\u4EF6\u9644\u4EF6, \u8BF7\u9009\u4E2D\u6B64\u9009\u9879
+ActionZipFile.AddTime.Label=\u5728\u6587\u4EF6\u540D\u4E2D\u5305\u542B\u65F6\u95F4
+ActionZipFile.AddTime.Tooltip=\u5982\u679C\u4F60\u60F3\u6DFB\u52A0\u65F6\u95F4\u5230\u6587\u4EF6\u540D, \u8BF7\u9009\u4E2D\u6B64\u9009\u9879
+ActionZipFile.Add_FilesToZip1.Label=\u589E\u52A0\u6587\u4EF6 [
+ActionZipFile.Add_FilesToZip2.Label=] \u6765\u81EA [
+ActionZipFile.Add_FilesToZip3.Label=]
+ActionZipFile.Advanced.Group.Label=\u9AD8\u7EA7
+ActionZipFile.AfterZip.Label=\u538B\u7F29\u540E 
+ActionZipFile.AfterZip_No_DestinationFolder_Defined.Label=\u6CA1\u6709\u6307\u5B9A\u76EE\u6807\u6587\u4EF6\u5939.
+ActionZipFile.Append_File_IfFileExists.Label=\u5728\u5B58\u5728\u7684\u6587\u4EF6\u91CC\u6DFB\u52A0
+ActionZipFile.ArgFromPrevious.Found=\u4ECE\u4E0A\u4E00\u6B65\u7ED3\u679C\u4E2D\u627E\u5230\u53C2\u6570[{0}]
+ActionZipFile.BEST_COMP_CompressionRate.Label=\u6700\u4F73\u538B\u7F29
+ActionZipFile.BEST_SPEED_CompressionRate.Label=\u6700\u5FEB\u901F\u5EA6
+ActionZipFile.BrowseFiles.Label=\u6587\u4EF6
+ActionZipFile.BrowseFolders.Label=\u6587\u4EF6\u5939
+ActionZipFile.CanNotCreateFolder=\u65E0\u6CD5\u521B\u5EFA\u6587\u4EF6\u5939[{0}]!
+ActionZipFile.CanNotFindFolder=\u6587\u4EF6\u5939[{0}]\u4E0D\u5B58\u5728!
+ActionZipFile.Cant_CreateZipFile1.Label=\u65E0\u6CD5\u521B\u5EFA\u6587\u4EF6 [
+ActionZipFile.Cant_CreateZipFile2.Label=] , \u5F02\u5E38\: 
+ActionZipFile.Cant_Delete_File1.Label="\u65E0\u6CD5\u5220\u9664\u6587\u4EF6 ["
+ActionZipFile.Cant_Delete_File2.Label="]
+ActionZipFile.Cant_Move_File1.Label="\u65E0\u6CD5\u5220\u9664\u6587\u4EF6 ["
 ActionZipFile.Cant_Move_File2.Label="]
-ActionZipFile.SelectOutputFiles.DialogTitle=\u538b\u7f29\u6587\u4ef6\u540d
-ActionZipFile.Create_NewFile_IfFileExists.Label=\u4f7f\u7528\u552f\u4e00\u540d\u79f0\u521b\u5efa\u65b0\u6587\u4ef6
-ActionZipFile.getFromPrevious.Label=\u4ece\u4e0a\u4e00\u6b65\u4e2d\u83b7\u53d6\u53c2\u6570
-ActionZipFile.DateTimeFormat.Label=\u65e5\u671f\u65f6\u95f4\u683c\u5f0f
-ActionZipFile.IncludeSubfolders.Label=\u5305\u542b\u5b50\u76ee\u5f55
-ActionZipFile.FolderExists=\u6587\u4ef6\u5939[{0}]\u5b58\u5728
-ActionZipFile.NO_COMP_CompressionRate.Label=\u4e0d\u538b\u7f29
-ActionZipFile.AfterZip_No_DestinationFolder_Defined.Label=\u6ca1\u6709\u6307\u5b9a\u76ee\u6807\u6587\u4ef6\u5939.
-ActionZipFile.Do_Nothing_AfterZip.Label=\u4ec0\u4e48\u4e5f\u4e0d\u505a
-ActionZipFile.CompressionRate.Label=\u538b\u7f29\:
-ActionZipFile.Add_FilesToZip1.Label=\u589e\u52a0\u6587\u4ef6 [
-ActionZipFile.CanNotFindFolder=\u6587\u4ef6\u5939[{0}]\u4e0d\u5b58\u5728\uff01
-ActionZipFile.Cant_Rename_Temp3.Label=]
-ActionZipFile.FileResult.Group.Label=\u7ed3\u679c\u6587\u4ef6\u540d
-ActionZipFile.IfZipFileExists.Label=\u5982\u679czip\u6587\u4ef6\u5b58\u5728\: 
-ActionZipFile.SpecifyFormat.Tooltip=\u6307\u5b9a\u65e5\u671f\u65f6\u95f4\u683c\u5f0f
-ActionZipFile.Tab.Advanced.Label=\u9ad8\u7ea7
-ActionZipFile.Advanced.Group.Label=\u9ad8\u7ea7
-ActionZipFile.Name.Label=\u4f5c\u4e1a\u9879\u540d\u79f0\: 
-ActionZipFile.BEST_COMP_CompressionRate.Label=\u6700\u4f73\u538b\u7f29
-ActionZipFile.SpecifyFormat.Label=\u6307\u5b9a\u65e5\u671f\u65f6\u95f4\u683c\u5f0f
-ActionZipFile.Append_File_IfFileExists.Label=\u5728\u5b58\u5728\u7684\u6587\u4ef6\u91cc\u6dfb\u52a0
-ActionZipFile.ShowFile.Button=\u663e\u793a\u6587\u4ef6\u540d
-ActionZipFile.Cant_Move_File1.Label="\u65e0\u6cd5\u5220\u9664\u6587\u4ef6 ["
-ActionZipFile.Log.NoFilesInFolder=\u5728\u76ee\u5f55[{0}]\u4e2d\u627e\u4e0d\u5230\u4efb\u4f55\u6587\u4ef6\uff01
-ActionZipFile.Over_Write_IfFileExists.Label=\u5199\u8986\u76d6
-ActionZipFile.Filetype.Zip=Zip\u6587\u4ef6
-ActionZipFile.DEF_COMP_CompressionRate.Label=\u9ed8\u8ba4\u538b\u7f29
-ActionZipFile.CreateParentFolder.Tooltip=\u9009\u4e2d\u6b64\u9009\u9879\u5c06\u521b\u5efa\u6587\u4ef6\u7684\u7236\u76ee\u5f55\uff0c\u5426\u5219\u5f53\u7236\u76ee\u5f55\u4e0d\u5b58\u5728\u65f6\uff0cPDI\u5c06\u7236\u76ee\u5f55\u4e0d\u5b58\u5728\u7684\u9519\u8bef
-ActionZipFile.File_Deleted2.Label="] \u88ab\u5220\u9664\!"
+ActionZipFile.Cant_Rename_Temp1.Label=\u4E0D\u80FD\u91CD\u547D\u540D\u6587\u4EF6 [ 
 ActionZipFile.Cant_Rename_Temp2.Label=] \u5230 [
-ActionZipFile.Wildcard.Tooltip=\u901a\u914d\u7b26(jdk\u7684\u89c4\u5219\u8868\u8fbe\u5f0f\u3002\u4f8b\u5982\uff0c[A-Za-z]*.txt)
-ActionZipFile.Cant_Delete_File2.Label="]
-ActionZipFile.Zip_FileExists2.Label=] \u5df2\u7ecf\u5b58\u5728\!
-ActionZipFile.CanNotCreateFolder=\u65e0\u6cd5\u521b\u5efa\u6587\u4ef6\u5939[{0}]\uff01
-ActionZipFile.Zip_FileAppend2.Label=]
-ActionZipFile.FolderCreated=\u6210\u529f\u521b\u5efa\u6587\u4ef6\u5939[{0}]
-ActionZipFile.File_Moved2.Label="] \u88ab\u79fb\u8d70\!"
-ActionZipFile.Log.MoveToFolderCreaterd=\u6210\u529f\u521b\u5efa\u6587\u4ef6\u5939[{0}]
-ActionZipFile.ZipFilename.Label=Zip\u6587\u4ef6\u540d\: 
-ActionZipFile.WildcardExclude.Label=\u6392\u9664\u901a\u914d\u7b26(\u6b63\u5219\u8868\u8fbe\u5f0f)\:  
-ActionZipFile.IncludeSubfolders.Tooltip=\u5982\u679c\u4f60\u60f3\u5728\u538b\u7f29\u7684\u7ed3\u679c\u6587\u4ef6\u4e2d\u5305\u542b\u6240\u6709\u7684\u5b50\u76ee\u5f55\u7684\u6587\u4ef6\uff0c\u8bf7\u9009\u4e2d\u6b64\u9009\u9879
-ActionZipFile.Cant_Rename_Temp1.Label=\u4e0d\u80fd\u91cd\u547d\u540d\u6587\u4ef6 [ 
-ActionZipFile.Name.Default=\u521b\u5efaZip\u6587\u4ef6
-ActionZipFile.Cant_Delete_File1.Label="\u65e0\u6cd5\u5220\u9664\u6587\u4ef6 ["
-ActionZipFile.Zip_FileExists1.Label=\u8fd9\u4e2aZip\u6587\u4ef6 [
-ActionZipFile.Zip_FileAppend1.Label=\u6dfb\u52a0\u5230\u8fd9\u4e2aZip\u6587\u4ef6 [
+ActionZipFile.Cant_Rename_Temp3.Label=]
+ActionZipFile.CompressionRate.Label=\u538B\u7F29\:
+ActionZipFile.CreateParentFolder.Label=\u521B\u5EFA\u7236\u76EE\u5F55
+ActionZipFile.CreateParentFolder.Tooltip=\u9009\u4E2D\u6B64\u9009\u9879\u5C06\u521B\u5EFA\u6587\u4EF6\u7684\u7236\u76EE\u5F55, \u5426\u5219\u5F53\u7236\u76EE\u5F55\u4E0D\u5B58\u5728\u65F6, PDI\u5C06\u7236\u76EE\u5F55\u4E0D\u5B58\u5728\u7684\u9519\u8BEF
+ActionZipFile.Create_NewFile_IfFileExists.Label=\u4F7F\u7528\u552F\u4E00\u540D\u79F0\u521B\u5EFA\u65B0\u6587\u4EF6
+ActionZipFile.DEF_COMP_CompressionRate.Label=\u9ED8\u8BA4\u538B\u7F29
+ActionZipFile.DateTimeFormat.Label=\u65E5\u671F\u65F6\u95F4\u683C\u5F0F
+ActionZipFile.Delete_Files_AfterZip.Label=\u5220\u9664\u6587\u4EF6
+ActionZipFile.Description=\u628A\u76EE\u5F55\u91CC\u7684\u6587\u4EF6\u538B\u7F29(Zip)
+ActionZipFile.Do_Nothing_AfterZip.Label=\u4EC0\u4E48\u4E5F\u4E0D\u505A
+ActionZipFile.Do_Nothing_IfFileExists.Label=\u4EC0\u4E48\u4E5F\u4E0D\u505A
+ActionZipFile.ErrorGettingMoveToFolder.Label=\u4ECE\u6587\u4EF6\u5939 [{0}] \u79FB\u52A8\u65F6\u51FA\u9519!
+ActionZipFile.Fail_IfFileExists.Label=\u5931\u8D25
+ActionZipFile.FileResult.Group.Label=\u7ED3\u679C\u6587\u4EF6\u540D
+ActionZipFile.File_Deleted1.Label="\u6587\u4EF6 ["
+ActionZipFile.File_Deleted2.Label="] \u88AB\u5220\u9664\!"
+ActionZipFile.File_Moved1.Label="\u6587\u4EF6 ["
+ActionZipFile.File_Moved2.Label="] \u88AB\u79FB\u8D70\!"
+ActionZipFile.Files_Found1.Label=\u53D1\u73B0 
+ActionZipFile.Files_Found2.Label=\u6587\u4EF6\u5728\u76EE\u5F55[
 ActionZipFile.Files_Found3.Label=]
-ActionZipFile.Log.MoveToFolderExist=\u79fb\u52a8\u5230\u7684\u76ee\u6807\u6587\u4ef6\u5939[{0}]\u5b58\u5728
-ActionZipFile.ZipFile.Group.Label=Zip \u6587\u4ef6
-ActionZipFile.File_Deleted1.Label="\u6587\u4ef6 ["
-ActionZipFile.createMoveToDirectory.Label=\u65b0\u5efa\u6587\u4ef6\u5939
-ActionZipFile.Filetype.All=\u6240\u6709\u6587\u4ef6
-ActionZipFile.Log.FolderIsEmpty=\u6587\u4ef6\u5939[{0}]\u662f\u7a7a\u7684\uff01
-ActionZipFile.AddFileToResult.Tooltip=\u5982\u679c\u4f60\u60f3\u6dfb\u52a0\u538b\u7f29\u6587\u4ef6\u5230\u7ed3\u679c\u6587\u4ef6\u540d\u6216\u8005\u6dfb\u52a0\u5230\u90ae\u4ef6\u9644\u4ef6\uff0c\u8bf7\u9009\u4e2d\u6b64\u9009\u9879
-ActionZipFile.Wildcard.Label=\u5305\u542b\u901a\u914d\u7b26(\u6b63\u5219\u8868\u8fbe\u5f0f)\: 
-ActionZipFile.AddDate.Tooltip=\u5982\u679c\u4f60\u60f3\u6dfb\u52a0\u65e5\u671f\u5230\u538b\u7f29\u6587\u4ef6\u540d\u8bf7\u9009\u4e2d\u6b21\u9009\u9879
-ActionZipFile.SourceDir.Tooltip=\u76ee\u5f55\u4e0b\u7684\u6240\u6709\u6587\u4ef6\u5c06\u88ab\u538b\u7f29
-ActionZipFile.File_Moved1.Label="\u6587\u4ef6 ["
-ActionZipFile.Fail_IfFileExists.Label=\u5931\u8d25
-ActionZipFile.AddFileToResult.Label=\u6dfb\u52a0\u538b\u7f29\u6587\u4ef6\u5230\u7ed3\u679c
-ActionZipFile.Files_Found2.Label=\u6587\u4ef6\u5728\u76ee\u5f55[
-ActionZipFile.Log.TotalZippedFiles=\u538b\u7f29\u6587\u4ef6\u603b\u6570\uff1a{0}
-ActionZipFile.MovetoDirectory.Tooltip=\u79fb\u52a8\u6587\u4ef6\u5230
-ActionZipFile.getFromPrevious.Tooltip=\u5982\u679c\u4f60\u9009\u4e2d\u8be5\u9009\u9879\uff0c\u4f60\u9700\u8981\u63d0\u4f9b4\u4e2a\u53c2\u6570\uff1a\r\n1- \u6e90\u6587\u4ef6\u5939\u540d/\u6e90\u6587\u4ef6\u540d\r\n2- \u901a\u914d\u7b26\uff08\u5982\u679c\u538b\u7f29\u7684\u662f\u6587\u4ef6\u8bf7\u8bbe\u4e3anull\uff09\r\n3- \u6392\u9664\u901a\u914d\u7b26\uff08\u5982\u679c\u538b\u7f29\u7684\u662f\u6587\u4ef6\u8bf7\u8bbe\u4e3anull\uff09\r\n4- \u76ee\u6807\u538b\u7f29\u6587\u4ef6\u540d\uff08\u [...]
-ActionZipFile.WildcardExclude.Tooltip=\u901a\u914d\u7b26(jdk\u7684\u89c4\u5219\u8868\u8fbe\u5f0f\u3002\u4f8b\u5982\uff0c[A-Za-z]*.txt)
-ActionZipFile.Add_FilesToZip3.Label=]
-ActionZipFile.BEST_SPEED_CompressionRate.Label=\u6700\u5feb\u901f\u5ea6
-ActionZipFile.Do_Nothing_IfFileExists.Label=\u4ec0\u4e48\u4e5f\u4e0d\u505a
-ActionZipFile.Delete_Files_AfterZip.Label=\u5220\u9664\u6587\u4ef6
-ActionZipFile.NoFilesFound.DialogMessage=\u9519\u8bef\u7684\u538b\u7f29\u6587\u4ef6\u540d
-ActionZipFile.No_FolderCible_Defined.Label=\u627e\u4e0d\u5230\u6e90\u6587\u4ef6/\u6587\u4ef6\u5939[{0}]\uff01
-ActionZipFile.CreateParentFolder.Label=\u521b\u5efa\u7236\u76ee\u5f55
-ActionZipFile.SourceFiles.Group.Label=\u6e90\u6587\u4ef6
-ActionZipFile.No_ZipFile_Defined.Label=\u6ca1\u6709\u6307\u5b9aZip\u6587\u4ef6\u540d.
-ActionZipFile.Files_Found1.Label=\u53d1\u73b0 
+ActionZipFile.Filetype.All=\u6240\u6709\u6587\u4EF6
+ActionZipFile.Filetype.Zip=Zip\u6587\u4EF6
+ActionZipFile.FolderCreated=\u6210\u529F\u521B\u5EFA\u6587\u4EF6\u5939[{0}]
+ActionZipFile.FolderExists=\u6587\u4EF6\u5939[{0}]\u5B58\u5728
+ActionZipFile.IfZipFileExists.Label=\u5982\u679Czip\u6587\u4EF6\u5B58\u5728\: 
+ActionZipFile.IncludeSubfolders.Label=\u5305\u542B\u5B50\u76EE\u5F55
+ActionZipFile.IncludeSubfolders.Tooltip=\u5982\u679C\u4F60\u60F3\u5728\u538B\u7F29\u7684\u7ED3\u679C\u6587\u4EF6\u4E2D\u5305\u542B\u6240\u6709\u7684\u5B50\u76EE\u5F55\u7684\u6587\u4EF6, \u8BF7\u9009\u4E2D\u6B64\u9009\u9879
+ActionZipFile.Log.FolderIsEmpty=\u6587\u4EF6\u5939[{0}]\u662F\u7A7A\u7684!
+ActionZipFile.Log.MoveToFolderCreaterd=\u6210\u529F\u521B\u5EFA\u6587\u4EF6\u5939[{0}]
+ActionZipFile.Log.MoveToFolderExist=\u79FB\u52A8\u5230\u7684\u76EE\u6807\u6587\u4EF6\u5939[{0}]\u5B58\u5728
+ActionZipFile.Log.MoveToFolderNotFolder=\u6587\u4EF6[{0}]\u4E0D\u662F\u4E00\u4E2A\u6587\u4EF6\u5939!
+ActionZipFile.Log.MoveToFolderNotNotExist=\u627E\u4E0D\u5230\u79FB\u52A8\u5230\u7684\u76EE\u6807\u6587\u4EF6\u5939[{0}]!
+ActionZipFile.Log.NoFilesInFolder=\u5728\u76EE\u5F55[{0}]\u4E2D\u627E\u4E0D\u5230\u4EFB\u4F55\u6587\u4EF6!
+ActionZipFile.Log.TotalZippedFiles=\u538B\u7F29\u6587\u4EF6\u603B\u6570\uFF1A{0}
+ActionZipFile.Move_Files_AfterZip.Label=\u79FB\u52A8\u6587\u4EF6
+ActionZipFile.MovetoDirectory.Label=\u79FB\u52A8\u6587\u4EF6\u5230
+ActionZipFile.MovetoDirectory.Tooltip=\u79FB\u52A8\u6587\u4EF6\u5230
+ActionZipFile.NO_COMP_CompressionRate.Label=\u4E0D\u538B\u7F29
+ActionZipFile.Name=Zip \u538B\u7F29\u6587\u4EF6
+ActionZipFile.Name.Default=\u521B\u5EFAZip\u6587\u4EF6
+ActionZipFile.Name.Label=Action \u540D\u79F0\: 
+ActionZipFile.NoFilesFound.DialogMessage=\u9519\u8BEF\u7684\u538B\u7F29\u6587\u4EF6\u540D
+ActionZipFile.No_FolderCible_Defined.Label=\u627E\u4E0D\u5230\u6E90\u6587\u4EF6/\u6587\u4EF6\u5939[{0}]!
+ActionZipFile.No_ZipFile_Defined.Label=\u6CA1\u6709\u6307\u5B9AZip\u6587\u4EF6\u540D.
+ActionZipFile.Over_Write_IfFileExists.Label=\u5199\u8986\u76D6
+ActionZipFile.SelectOutputFiles.DialogMessage=\u538B\u7F29\u6587\u4EF6\u540D
+ActionZipFile.SelectOutputFiles.DialogTitle=\u538B\u7F29\u6587\u4EF6\u540D
+ActionZipFile.ShowFile.Button=\u663E\u793A\u6587\u4EF6\u540D
+ActionZipFile.SourceDir.Label=\u6E90\u76EE\u5F55/\u6587\u4EF6\: 
+ActionZipFile.SourceDir.Tooltip=\u76EE\u5F55\u4E0B\u7684\u6240\u6709\u6587\u4EF6\u5C06\u88AB\u538B\u7F29
+ActionZipFile.SourceFiles.Group.Label=\u6E90\u6587\u4EF6
+ActionZipFile.SpecifyFormat.Label=\u6307\u5B9A\u65E5\u671F\u65F6\u95F4\u683C\u5F0F
+ActionZipFile.SpecifyFormat.Tooltip=\u6307\u5B9A\u65E5\u671F\u65F6\u95F4\u683C\u5F0F
+ActionZipFile.StoredSourcePathDepth.Label=\u5B58\u50A8\u6E90\u8DEF\u5F84\u6DF1\u5EA6
+ActionZipFile.StoredSourcePathDepth.Tooltip=\u6307\u5B9A ZIP \u6587\u4EF6\u4E2D\u538B\u7F29\u4F7F\u7528\u7684\u8DEF\u5F84
+ActionZipFile.Tab.Advanced.Label=\u9AD8\u7EA7
+ActionZipFile.Tab.General.Label=\u4E00\u822C
+ActionZipFile.Title=Zip \u538B\u7F29\u6587\u4EF6
+ActionZipFile.UnableLoadActionXML=\u65E0\u6CD5\u4ECE XML \u8282\u70B9\u52A0\u8F7D "\u538B\u7F29\u6587\u4EF6" \u7C7B\u578B\u7684 Action
+ActionZipFile.Wildcard.Label=\u5305\u542B\u901A\u914D\u7B26(\u6B63\u5219\u8868\u8FBE\u5F0F)\: 
+ActionZipFile.Wildcard.Tooltip=\u901A\u914D\u7B26(jdk\u7684\u89C4\u5219\u8868\u8FBE\u5F0F. \u4F8B\u5982, [A-Za-z]*.txt)
+ActionZipFile.WildcardExclude.Label=\u6392\u9664\u901A\u914D\u7B26(\u6B63\u5219\u8868\u8FBE\u5F0F)\:
+ActionZipFile.WildcardExclude.Tooltip=\u901A\u914D\u7B26(jdk\u7684\u89C4\u5219\u8868\u8FBE\u5F0F. \u4F8B\u5982, [A-Za-z]*.txt)
+ActionZipFile.ZipFile.Group.Label=Zip \u6587\u4EF6
+ActionZipFile.ZipFilename.Label=Zip\u6587\u4EF6\u540D\: 
+ActionZipFile.Zip_FileAppend1.Label=\u6DFB\u52A0\u5230\u8FD9\u4E2AZip\u6587\u4EF6 [
+ActionZipFile.Zip_FileAppend2.Label=]
+ActionZipFile.Zip_FileExists1.Label=\u8FD9\u4E2AZip\u6587\u4EF6 [
+ActionZipFile.Zip_FileExists2.Label=] \u5DF2\u7ECF\u5B58\u5728\!
+ActionZipFile.Zip_FileNameChange1.Label=\u65B0Zip\u6587\u4EF6\u88AB\u521B\u5EFA [
+ActionZipFile.Zip_FileNameChange2.Label=]
+ActionZipFile.createMoveToDirectory.Label=\u65B0\u5EFA\u6587\u4EF6\u5939
+ActionZipFile.createMoveToDirectory.Tooltip=\u5982\u679C\u9700\u8981, \u65B0\u5EFA\u6587\u4EF6\u5939
+ActionZipFile.getFromPrevious.Label=\u4ECE\u4E0A\u4E00\u6B65\u4E2D\u83B7\u53D6\u53C2\u6570
+ActionZipFile.getFromPrevious.Tooltip=\u5982\u679C\u4F60\u9009\u4E2D\u8BE5\u9009\u9879, \u4F60\u9700\u8981\u63D0\u4F9B4\u4E2A\u53C2\u6570\uFF1A\r\n1- \u6E90\u6587\u4EF6\u5939\u540D/\u6E90\u6587\u4EF6\u540D\r\n2- \u901A\u914D\u7B26 (\u5982\u679C\u538B\u7F29\u7684\u662F\u6587\u4EF6\u8BF7\u8BBE\u4E3Anull)\r\n3- \u6392\u9664\u901A\u914D\u7B26(\u5982\u679C\u538B\u7F29\u7684\u662F\u6587\u4EF6\u8BF7\u8BBE\u4E3Anull)\r\n4- \u76EE\u6807\u538B\u7F29\u6587\u4EF6\u540D(\u5B8C\u6574\u8DEF\u5F84)
+ActionZipFile.keyword=zip,file
diff --git a/engine/src/main/resources/org/apache/hop/core/auth/messages/messages_zh_CN.properties b/plugins/databases/googlebigquery/src/main/resources/org/apache/hop/databases/googlebigquery/messages/messages_zh_CN.properties
similarity index 74%
copy from engine/src/main/resources/org/apache/hop/core/auth/messages/messages_zh_CN.properties
copy to plugins/databases/googlebigquery/src/main/resources/org/apache/hop/databases/googlebigquery/messages/messages_zh_CN.properties
index 0f7b46c..4e2827e 100644
--- a/engine/src/main/resources/org/apache/hop/core/auth/messages/messages_zh_CN.properties
+++ b/plugins/databases/googlebigquery/src/main/resources/org/apache/hop/databases/googlebigquery/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,7 +15,5 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.core.auth' in locale 'zh_CN'
-#
 #
-AuthenticationPersistenceManager.NotConsumerType=\u63D2\u4EF6\u5B9E\u73B0\u7C7B {0} \u7684\u7C7B\u578B\u4E0D\u6B63\u786E\uFF0C\u5E94\u8BE5\u5B9E\u73B0 {1}
+GoogleBigQueryDatabaseMeta.UnsupportedTableOutputMessage=Simba JDBC \u9A71\u52A8\u7A0B\u5E8F\u8FDE\u63A5 Google Big Query \u6570\u636E\u5E93\u65F6\u4E0D\u652F\u6301\u5E38\u89C4 DDL \u8BED\u53E5, \u8BF7\u4F7F\u7528 GBQ Bulk Loader Transform \u6765\u521B\u5EFA\u8868.
diff --git a/engine/src/main/resources/org/apache/hop/core/auth/messages/messages_zh_CN.properties b/plugins/databases/mariadb/src/main/resources/org/apache/hop/databases/mariadb/messages/messages_zh_CN.properties
similarity index 65%
copy from engine/src/main/resources/org/apache/hop/core/auth/messages/messages_zh_CN.properties
copy to plugins/databases/mariadb/src/main/resources/org/apache/hop/databases/mariadb/messages/messages_zh_CN.properties
index 0f7b46c..20f55c3 100644
--- a/engine/src/main/resources/org/apache/hop/core/auth/messages/messages_zh_CN.properties
+++ b/plugins/databases/mariadb/src/main/resources/org/apache/hop/databases/mariadb/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,7 +15,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.core.auth' in locale 'zh_CN'
-#
 #
-AuthenticationPersistenceManager.NotConsumerType=\u63D2\u4EF6\u5B9E\u73B0\u7C7B {0} \u7684\u7C7B\u578B\u4E0D\u6B63\u786E\uFF0C\u5E94\u8BE5\u5B9E\u73B0 {1}
+MariaDBDatabaseMeta.Exception.LegacyColumnNameException=\u5C1D\u8BD5\u83B7\u53D6\u5217\u540D\u6269\u5C55\u4FE1\u606F\u65F6\u610F\u5916\u51FA\u9519
+MariaDBDatabaseMeta.Exception.LegacyColumnNameNoDBMetaDataException=\u8BF7\u63D0\u4F9B\u6709\u6548\u7684 DatabaseMetaData \u5BF9\u8C61
+MariaDBDatabaseMeta.Exception.LegacyColumnNameNoRSMetaDataException=\u8BF7\u63D0\u4F9B\u6709\u6548\u7684 ResultSetMetaData \u5BF9\u8C61
diff --git a/engine/src/main/resources/org/apache/hop/core/auth/messages/messages_zh_CN.properties b/plugins/databases/mysql/src/main/resources/org/apache/hop/databases/mysql/messages/messages_zh_CN.properties
similarity index 65%
copy from engine/src/main/resources/org/apache/hop/core/auth/messages/messages_zh_CN.properties
copy to plugins/databases/mysql/src/main/resources/org/apache/hop/databases/mysql/messages/messages_zh_CN.properties
index 0f7b46c..eefc1a9 100644
--- a/engine/src/main/resources/org/apache/hop/core/auth/messages/messages_zh_CN.properties
+++ b/plugins/databases/mysql/src/main/resources/org/apache/hop/databases/mysql/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,7 +15,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.core.auth' in locale 'zh_CN'
-#
 #
-AuthenticationPersistenceManager.NotConsumerType=\u63D2\u4EF6\u5B9E\u73B0\u7C7B {0} \u7684\u7C7B\u578B\u4E0D\u6B63\u786E\uFF0C\u5E94\u8BE5\u5B9E\u73B0 {1}
+MySQLDatabaseMeta.Exception.LegacyColumnNameException=\u5C1D\u8BD5\u83B7\u53D6\u5217\u540D\u6269\u5C55\u4FE1\u606F\u65F6\u610F\u5916\u51FA\u9519
+MySQLDatabaseMeta.Exception.LegacyColumnNameNoDBMetaDataException=\u8BF7\u63D0\u4F9B\u6709\u6548\u7684 DatabaseMetaData \u5BF9\u8C61
+MySQLDatabaseMeta.Exception.LegacyColumnNameNoRSMetaDataException=\u8BF7\u63D0\u4F9B\u6709\u6548\u7684 ResultSetMetaData \u5BF9\u8C61
diff --git a/plugins/engines/beam/src/main/resources/org/apache/hop/beam/gui/messages/messages_zh_CN.properties b/plugins/engines/beam/src/main/resources/org/apache/hop/beam/gui/messages/messages_zh_CN.properties
new file mode 100644
index 0000000..ebe31a2
--- /dev/null
+++ b/plugins/engines/beam/src/main/resources/org/apache/hop/beam/gui/messages/messages_zh_CN.properties
@@ -0,0 +1,32 @@
+#
+#
+# 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.
+#
+#
+BeamGuiPlugin.ExportMetadata.Dialog.Header=\u5BFC\u51FA\u5F53\u524D\u5143\u6570\u636E(JSON)
+BeamGuiPlugin.ExportMetadata.Dialog.Message=\u662F\u5426\u5BFC\u51FA\u5F53\u524D\u53EF\u7528\u7684\u5143\u6570\u636E\u5BF9\u8C61\u5230 JSON \u6587\u4EF6?
+BeamGuiPlugin.FatJarCreated.Dialog.Header=\u521B\u5EFA fat-jar \u6587\u4EF6
+BeamGuiPlugin.FatJarCreated.Dialog.Message1=fat-jar \u6587\u4EF6 {0} \u521B\u5EFA\u6210\u529F
+BeamGuiPlugin.FatJarCreated.Dialog.Message2=\u590D\u5236\u6587\u4EF6\u540D
+BeamGuiPlugin.FileTypes.All.Label=\u6240\u6709\u6587\u4EF6(*.*)
+BeamGuiPlugin.FileTypes.Jars.Label=Jar \u6587\u4EF6(*.jar)
+BeamGuiPlugin.FileTypes.Json.Label=JSON \u6587\u4EF6(*.json)
+BeamGuiPlugin.GenerateFatJar.Dialog.Header=\u521B\u5EFA Hop fat-jar \u6587\u4EF6
+BeamGuiPlugin.GenerateFatJar.Dialog.Message1=\u8BE5\u51FD\u6570\u521B\u5EFA\u4E00\u4E2A\u5305\u542B Hop \u5E73\u53F0\u53CA\u6240\u6709\u63D2\u4EF6\u7684 Java \u5E93\u6587\u4EF6
+BeamGuiPlugin.GenerateFatJar.Dialog.Message2=\u786E\u5B9A\u4E4B\u540E, \u60A8\u53EA\u9700\u9009\u62E9 "fat-jar" \u6587\u4EF6\u7684\u4FDD\u5B58\u8DEF\u5F84, \u7CFB\u7EDF\u4F1A\u81EA\u52A8\u6536\u96C6\u6240\u6709\u4F9D\u8D56 jar \u6587\u4EF6
+BeamGuiPlugin.GenerateFatJar.Progress.Message=\u6784\u5EFA Hop fat-jar...
+BeamGuiPlugin.Menu.ExportMetadata.Text=\u5BFC\u51FA\u5143\u6570\u636E(JSON)
+BeamGuiPlugin.Menu.GenerateFatJar.Text=\u751F\u6210 Hop fat-jar...
diff --git a/engine/src/main/resources/org/apache/hop/core/auth/messages/messages_zh_CN.properties b/plugins/engines/beam/src/main/resources/org/apache/hop/beam/metadata/messages/messages_zh_CN.properties
similarity index 56%
copy from engine/src/main/resources/org/apache/hop/core/auth/messages/messages_zh_CN.properties
copy to plugins/engines/beam/src/main/resources/org/apache/hop/beam/metadata/messages/messages_zh_CN.properties
index 0f7b46c..a2609f9 100644
--- a/engine/src/main/resources/org/apache/hop/core/auth/messages/messages_zh_CN.properties
+++ b/plugins/engines/beam/src/main/resources/org/apache/hop/beam/metadata/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,7 +15,14 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.core.auth' in locale 'zh_CN'
-#
 #
-AuthenticationPersistenceManager.NotConsumerType=\u63D2\u4EF6\u5B9E\u73B0\u7C7B {0} \u7684\u7C7B\u578B\u4E0D\u6B63\u786E\uFF0C\u5E94\u8BE5\u5B9E\u73B0 {1}
+FileDefinitionDialog.Description.Label=\u63CF\u8FF0
+FileDefinitionDialog.Enclosure.Label=\u5B57\u6BB5\u5F15\u7528\u7B26
+FileDefinitionDialog.Fields.Column.FieldFormat=\u683C\u5F0F
+FileDefinitionDialog.Fields.Column.FieldLength=\u957F\u5EA6
+FileDefinitionDialog.Fields.Column.FieldName=\u5B57\u6BB5\u540D
+FileDefinitionDialog.Fields.Column.FieldPrecision=\u7CBE\u5EA6
+FileDefinitionDialog.Fields.Column.FieldType=\u7C7B\u578B
+FileDefinitionDialog.Fields.Label=\u5B57\u6BB5\u5B9A\u4E49\:
+FileDefinitionDialog.Name.Label=\u540D\u79F0
+FileDefinitionDialog.Separator.Label=\u5B57\u6BB5\u5206\u9694\u7B26
diff --git a/plugins/engines/beam/src/main/resources/org/apache/hop/beam/transforms/bigtable/messages/messages_zh_CN.properties b/plugins/engines/beam/src/main/resources/org/apache/hop/beam/transforms/bigtable/messages/messages_zh_CN.properties
new file mode 100644
index 0000000..7f8d3a8
--- /dev/null
+++ b/plugins/engines/beam/src/main/resources/org/apache/hop/beam/transforms/bigtable/messages/messages_zh_CN.properties
@@ -0,0 +1,37 @@
+#
+#
+# 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.
+#
+#
+BeamBigtableInput.Description=Beam \u4E2D\u8BFB\u53D6 Bigtable
+BeamBigtableInput.Name=Bigtable \u8F93\u5165
+BeamBigtableInputDialog.DialogTitle=Bigtable \u8F93\u5165
+BeamBigtableInputDialog.InstanceId=\u5B9E\u4F8B ID\:
+BeamBigtableInputDialog.ProjectId=\u9879\u76EE ID\:
+BeamBigtableInputDialog.TableId=\u8868 ID\:
+BeamBigtableInputMeta.keyword=beam,big,table,input
+BeamBigtableOutput.Description=Beam \u4E2D\u8F93\u51FA\u5230 Bigtable
+BeamBigtableOutput.Name=Bigtable \u8F93\u51FA
+BeamBigtableOutputDialog.Column.Family=\u5217\u7C07
+BeamBigtableOutputDialog.Column.Name=\u540D\u79F0
+BeamBigtableOutputDialog.Column.SourceField=\u6E90\u5B57\u6BB5
+BeamBigtableOutputDialog.Columns=\u8BBE\u7F6E\u5217\:
+BeamBigtableOutputDialog.DialogTitle=Bigtable \u8F93\u51FA
+BeamBigtableOutputDialog.InstanceId=\u5B9E\u4F8B ID\:
+BeamBigtableOutputDialog.KeyField=\u952E\u5B57\u6BB5\:
+BeamBigtableOutputDialog.ProjectId=\u9879\u76EE ID\:
+BeamBigtableOutputDialog.TableId=\u8868 ID\:
+BeamBigtableOutputMeta.keyword=beam,big,table,output
diff --git a/plugins/engines/beam/src/main/resources/org/apache/hop/beam/transforms/bq/messages/messages_zh_CN.properties b/plugins/engines/beam/src/main/resources/org/apache/hop/beam/transforms/bq/messages/messages_zh_CN.properties
new file mode 100644
index 0000000..d75598a
--- /dev/null
+++ b/plugins/engines/beam/src/main/resources/org/apache/hop/beam/transforms/bq/messages/messages_zh_CN.properties
@@ -0,0 +1,36 @@
+#
+#
+# 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.
+#
+#
+BeamBQInputDialog.DatasetId=\u6570\u636E\u96C6 ID\:
+BeamBQInputDialog.DialogTitle=BigQuery \u8F93\u5165
+BeamBQInputDialog.Fields=\u8FD4\u56DE\u9009\u62E9\u5B57\u6BB5\:
+BeamBQInputDialog.Fields.Column.HopType=Hop \u6570\u636E\u7C7B\u578B
+BeamBQInputDialog.Fields.Column.Name=BQ \u5B57\u6BB5\u540D
+BeamBQInputDialog.Fields.Column.NewName=\u91CD\u547D\u540D...(\u53EF\u9009)
+BeamBQInputDialog.ProjectId=\u9879\u76EE ID\:
+BeamBQInputDialog.Query=\u5728\u624B\u52A8\u6307\u5B9A\u8FD4\u56DE\u5B57\u6BB5, \u4E0D\u6307\u5B9A\u65F6\u5219\u8FD4\u56DE\u5168\u90E8\u5B57\u6BB5\:
+BeamBQInputDialog.TableId=\u8868 ID\:
+BeamBQInputDialog.keyword=beam,big query,input
+BeamBQOutputDialog.CreateIfNeeded=\u5FC5\u8981\u65F6\u521B\u5EFA\u8868\:
+BeamBQOutputDialog.DatasetId=\u6570\u636E\u96C6 ID\:
+BeamBQOutputDialog.DialogTitle=BigQuery \u8F93\u51FA
+BeamBQOutputDialog.FailIfNotEmpty=\u8868\u4E0D\u5B58\u5728\u65F6\u62A5\u9519\:
+BeamBQOutputDialog.ProjectId=\u9879\u76EE ID\:
+BeamBQOutputDialog.TableId=\u8868 ID\:
+BeamBQOutputDialog.TruncateTable=\u6E05\u7A7A\u8868\:
+BeamBQOutputDialog.keyword=beam,big query,output
diff --git a/engine/src/main/resources/org/apache/hop/core/auth/messages/messages_zh_CN.properties b/plugins/engines/beam/src/main/resources/org/apache/hop/beam/transforms/io/messages/messages_zh_CN.properties
similarity index 58%
copy from engine/src/main/resources/org/apache/hop/core/auth/messages/messages_zh_CN.properties
copy to plugins/engines/beam/src/main/resources/org/apache/hop/beam/transforms/io/messages/messages_zh_CN.properties
index 0f7b46c..a745218 100644
--- a/engine/src/main/resources/org/apache/hop/core/auth/messages/messages_zh_CN.properties
+++ b/plugins/engines/beam/src/main/resources/org/apache/hop/beam/transforms/io/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,7 +15,15 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.core.auth' in locale 'zh_CN'
-#
 #
-AuthenticationPersistenceManager.NotConsumerType=\u63D2\u4EF6\u5B9E\u73B0\u7C7B {0} \u7684\u7C7B\u578B\u4E0D\u6B63\u786E\uFF0C\u5E94\u8BE5\u5B9E\u73B0 {1}
+BeamInputDialog.DialogTitle=Beam \u8F93\u5165
+BeamInputDialog.FileDefinition=\u6587\u4EF6\u5B9A\u4E49\:
+BeamInputDialog.InputLocation=\u8F93\u5165\u4F4D\u7F6E\:
+BeamInputMeta.keyword=beam,input
+BeamOutputDialog.DialogTitle=Beam \u8F93\u51FA
+BeamOutputDialog.FileDefinition=\u6587\u4EF6\u5B9A\u4E49\:
+BeamOutputDialog.FilePrefix=\u6587\u4EF6\u524D\u7F00\:
+BeamOutputDialog.FileSuffix=\u6587\u4EF6\u540E\u7F00\:
+BeamOutputDialog.OutputLocation=\u8F93\u51FA\u4F4D\u7F6E\:
+BeamOutputDialog.Windowed=\u7A97\u53E3\u5316\u8F93\u51FA\:
+BeamOutputMeta.keyword=beam,output
diff --git a/plugins/engines/beam/src/main/resources/org/apache/hop/beam/transforms/kafka/messages/messages_zh_CN.properties b/plugins/engines/beam/src/main/resources/org/apache/hop/beam/transforms/kafka/messages/messages_zh_CN.properties
new file mode 100644
index 0000000..df0cabf
--- /dev/null
+++ b/plugins/engines/beam/src/main/resources/org/apache/hop/beam/transforms/kafka/messages/messages_zh_CN.properties
@@ -0,0 +1,43 @@
+#
+#
+# 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.
+#
+#
+BeamConsumeDialog.BootstrapServers=Bootstrap servers\:
+BeamConsumeDialog.DialogTitle=Kafka \u6D88\u8D39\u8005
+BeamConsumeDialog.GroupId=Group ID\:
+BeamConsumeDialog.KeyField=Key \u8F93\u51FA\u5B57\u6BB5\:
+BeamConsumeDialog.MessageField=Message \u8F93\u51FA\u5B57\u6BB5\:
+BeamConsumeDialog.MessageType=Message \u7C7B\u578B(\u9ED8\u8BA4 String)\:
+BeamConsumeDialog.SchemaRegistrySubject=Schema \u6CE8\u518C\u8BA2\u9605(Avro)\:
+BeamConsumeDialog.SchemaRegistryUrl=Schema \u6CE8\u518C URL(Avro)\:
+BeamConsumeDialog.Topics=\u6D88\u8D39 Topics\:
+BeamConsumeMeta.keyword=beam,consume
+BeamProduceDialog.AllowCommitConsumed=\u5141\u8BB8\u56DE\u9000 offset\:
+BeamProduceDialog.BootstrapServers=Bootstrap servers\:
+BeamProduceDialog.ConfigOptions=\u914D\u7F6E\u9009\u9879\:
+BeamProduceDialog.ConfigOptions.Column.Parameter=\u53C2\u6570
+BeamProduceDialog.ConfigOptions.Column.Type=\u7C7B\u578B
+BeamProduceDialog.ConfigOptions.Column.Value=\u503C
+BeamProduceDialog.DialogTitle=Kafka \u751F\u4EA7\u8005
+BeamProduceDialog.KeyField=\u952E\u5B57\u6BB5\:
+BeamProduceDialog.MessageField=\u6D88\u606F\u5B57\u6BB5\:
+BeamProduceDialog.RestrictToCommitted=\u6D88\u8D39\u6D88\u606F\u540E\u66F4\u65B0 offset\:
+BeamProduceDialog.Topic=Topics\:
+BeamProduceDialog.UseCreateTime=\u4F7F\u7528\u6D88\u606F\u521B\u5EFA\u65F6\u95F4\:
+BeamProduceDialog.UseLogAppendTime=\u4F7F\u7528\u65E5\u5FD7\u8FFD\u52A0\u65F6\u95F4\:
+BeamProduceDialog.UseProcessingTime=\u4F7F\u7528\u8FDB\u7A0B\u65F6\u95F4\:
+BeamProduceMeta.keyword=beam,produce
diff --git a/engine/src/main/resources/org/apache/hop/core/auth/messages/messages_zh_CN.properties b/plugins/engines/beam/src/main/resources/org/apache/hop/beam/transforms/pubsub/messages/messages_zh_CN.properties
similarity index 56%
copy from engine/src/main/resources/org/apache/hop/core/auth/messages/messages_zh_CN.properties
copy to plugins/engines/beam/src/main/resources/org/apache/hop/beam/transforms/pubsub/messages/messages_zh_CN.properties
index 0f7b46c..142743a 100644
--- a/engine/src/main/resources/org/apache/hop/core/auth/messages/messages_zh_CN.properties
+++ b/plugins/engines/beam/src/main/resources/org/apache/hop/beam/transforms/pubsub/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,7 +15,15 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.core.auth' in locale 'zh_CN'
-#
 #
-AuthenticationPersistenceManager.NotConsumerType=\u63D2\u4EF6\u5B9E\u73B0\u7C7B {0} \u7684\u7C7B\u578B\u4E0D\u6B63\u786E\uFF0C\u5E94\u8BE5\u5B9E\u73B0 {1}
+BeamPublishDialog.DialogTitle=Beam \u53D1\u5E03
+BeamPublishDialog.MessageField=\u6D88\u606F\u5B57\u6BB5\:
+BeamPublishDialog.MessageType=\u8981\u53D1\u5E03\u7684\u6D88\u606F\u7C7B\u578B\:
+BeamPublishDialog.Topic=\u53D1\u5E03\u5230 Topic\:
+BeamPublishMeta.keyword=beam,publish
+BeamSubscribeDialog.DialogTitle=Beam \u8BA2\u9605
+BeamSubscribeDialog.MessageField=\u8F93\u51FA\u5B57\u6BB5\u540D\:
+BeamSubscribeDialog.MessageType=\u6D88\u606F\u7C7B\u578B\:
+BeamSubscribeDialog.Subscription=\u8BA2\u9605\u540D\u79F0\:
+BeamSubscribeDialog.Topic=\u8BA2\u9605 Topic\:
+BeamSubscribeMeta.keyword=beam,subscribe
diff --git a/core/src/main/resources/org/apache/hop/compatibility/messages/messages_zh_CN.properties b/plugins/engines/beam/src/main/resources/org/apache/hop/beam/transforms/window/messages/messages_zh_CN.properties
similarity index 51%
copy from core/src/main/resources/org/apache/hop/compatibility/messages/messages_zh_CN.properties
copy to plugins/engines/beam/src/main/resources/org/apache/hop/beam/transforms/window/messages/messages_zh_CN.properties
index 8177b55..8cc5534 100644
--- a/core/src/main/resources/org/apache/hop/compatibility/messages/messages_zh_CN.properties
+++ b/plugins/engines/beam/src/main/resources/org/apache/hop/beam/transforms/window/messages/messages_zh_CN.properties
@@ -16,11 +16,15 @@
 # limitations under the License.
 #
 #
-#
-Row.EndOfFileReached=\u5230\u8FBE\u6587\u4EF6\u672B\u5C3E
-Row.ErrorDeserializing=\u4ECE\u5B57\u8282\u6570\u7EC4\u4E2D\u53CD\u5E8F\u5217\u5316\u6210\u884C\u6570\u636E\u65F6\u53D1\u751F\u9519\u8BEF
-Row.RowError=\u8BFB\u884C\u4FE1\u606F\u65F6\u53D1\u751F\u884C\u9519\u8BEF(ROW Error)
-Row.EndOfFileReadingRow=\u8BFB\u884C\u65F6\u5230\u8FBE\u672B\u5C3E(EOF)
-Row.ErrorWritingRow=\u5411\u8F93\u51FA\u6D41\u4E2D\u5199\u5165\u884C\u6570\u636E\u65F6\u53D1\u751F\u9519\u8BEF
-Row.ErrorReadingRowData=\u4ECE\u8F93\u5165\u6D41\u4E2D\u8BFB\u53D6\u884C\u6570\u636E\u65F6\u53D1\u751F\u9519\u8BEF
-Row.ErrorSerializing=\u5C06\u884C\u6570\u636E\u5E8F\u5217\u5316\u6210\u5B57\u8282\u6570\u7EC4\u65F6\u53D1\u751F\u9519\u8BEF
+BeamTimestampDialog.DialogTitle=Beam \u65F6\u95F4\u6233
+BeamTimestampDialog.FieldName=\u4F7F\u7528\u7CFB\u7EDF\u65F6\u95F4\:
+BeamTimestampDialog.Reading=\u4ECE\u6D41\u4E2D\u83B7\u53D6\u65F6\u95F4\u6233\:
+BeamTimestampMeta.keyword=beam,timestamp
+BeamWindowDialog.DialogTitle=Beam \u7A97\u53E3
+BeamWindowDialog.Duration=\u7A97\u53E3\u5927\u5C0F(\u5EF6\u8FDF\u79D2\u6570)\:
+BeamWindowDialog.EndTimeField=\u7A97\u53E3\u7ED3\u675F\u5B57\u6BB5\:
+BeamWindowDialog.Every=\u6BCF\u591A\u5C11\u79D2(\u65C1\u8DEF\u7A97\u53E3)\:
+BeamWindowDialog.MaxTimeField=\u5F53\u524D\u7A97\u53E3\u503C\u5B57\u6BB5\:
+BeamWindowDialog.StartTimeField=\u7A97\u53E3\u8D77\u59CB\u70B9\u5B57\u6BB5\:
+BeamWindowDialog.WindowType=\u7A97\u53E3\u7C7B\u578B\:
+BeamWindowMeta.keyword=beam,window
diff --git a/engine/src/main/resources/org/apache/hop/core/auth/messages/messages_zh_CN.properties b/plugins/misc/async/src/main/resources/org/apache/hop/www/async/messages/messages_zh_CN.properties
similarity index 56%
copy from engine/src/main/resources/org/apache/hop/core/auth/messages/messages_zh_CN.properties
copy to plugins/misc/async/src/main/resources/org/apache/hop/www/async/messages/messages_zh_CN.properties
index 0f7b46c..f6dcefb 100644
--- a/engine/src/main/resources/org/apache/hop/core/auth/messages/messages_zh_CN.properties
+++ b/plugins/misc/async/src/main/resources/org/apache/hop/www/async/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,7 +15,10 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.core.auth' in locale 'zh_CN'
-#
 #
-AuthenticationPersistenceManager.NotConsumerType=\u63D2\u4EF6\u5B9E\u73B0\u7C7B {0} \u7684\u7C7B\u578B\u4E0D\u6B63\u786E\uFF0C\u5E94\u8BE5\u5B9E\u73B0 {1}
+AsyncGuiPlugin.DisableAsyncLogging.Category=\u5F02\u6B65\u65E5\u5FD7
+AsyncGuiPlugin.DisableAsyncLogging.Name=\u7981\u7528\u5F02\u6B65\u65E5\u5FD7\u8BB0\u5F55
+AsyncGuiPlugin.DisableAsyncLogging.ToolTip=Web \u670D\u52A1\u8FD0\u884C\u671F\u95F4\u7981\u7528 Pipeliine \u7684\u5F02\u6B65\u65E5\u5FD7\u529F\u80FD
+AsyncGuiPlugin.EnableAsyncLogging.Category=\u5F02\u6B65\u65E5\u5FD7
+AsyncGuiPlugin.EnableAsyncLogging.Name=\u542F\u7528\u5F02\u6B65\u65E5\u5FD7\u8BB0\u5F55
+AsyncGuiPlugin.EnableAsyncLogging.ToolTip=Web \u670D\u52A1\u8FD0\u884C\u671F\u95F4\u542F\u7528 Pipeliine \u7684\u5F02\u6B65\u65E5\u5FD7\u529F\u80FD
diff --git a/plugins/misc/git/src/main/resources/org/apache/hop/git/messages/messages_zh_CN.properties b/plugins/misc/git/src/main/resources/org/apache/hop/git/messages/messages_zh_CN.properties
index e862867..5e4e72f 100644
--- a/plugins/misc/git/src/main/resources/org/apache/hop/git/messages/messages_zh_CN.properties
+++ b/plugins/misc/git/src/main/resources/org/apache/hop/git/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,32 +15,30 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.git' in locale 'zh_CN'
-#
 #
-GitGuiPlugin.Dialog.AddError.Message=\u6267\u884C git add \u65F6\u51FA\u9519
-GitGuiPlugin.Dialog.RevertFiles.Message=\u8BF7\u9009\u62E9\u8981\u6062\u590D\u7684\u6587\u4EF6
 GitGuiPlugin.Dialog.AddError.Header=Git \u6DFB\u52A0\u9519\u8BEF
-GitGuiPlugin.Dialog.NoFilesToCommit.Message=\u9057\u61BE\uFF0C\u6CA1\u6709\u8981\u63D0\u4EA4\u7684\u6587\u4EF6
+GitGuiPlugin.Dialog.AddError.Message=\u6267\u884C git add \u65F6\u51FA\u9519
+GitGuiPlugin.Dialog.CommitError.Header=\u63D0\u4EA4\u9519\u8BEF
+GitGuiPlugin.Dialog.CommitError.Message=\u6267\u884C git commit \u65F6\u51FA\u9519
+GitGuiPlugin.Dialog.NoFilesToCommit.Header=\u6CA1\u6709\u6587\u4EF6\u53EF\u63D0\u4EA4
+GitGuiPlugin.Dialog.NoFilesToCommit.Message=\u9057\u61BE, \u6CA1\u6709\u8981\u63D0\u4EA4\u7684\u6587\u4EF6
+GitGuiPlugin.Dialog.NoFilesToRevert.Header=\u6CA1\u6709\u8981\u8FD8\u539F\u7684\u6587\u4EF6
+GitGuiPlugin.Dialog.NoFilesToRevert.Message=\u9057\u61BE, \u6CA1\u6709\u8981\u8FD8\u539F\u7684\u6587\u4EF6
+GitGuiPlugin.Dialog.PullError.Header=Git \u62C9\u53D6\u9519\u8BEF
 GitGuiPlugin.Dialog.PullError.Message=\u6267\u884C git pull \u65F6\u51FA\u9519
-GitGuiPlugin.Project.Label=Git \u9879\u76EE
 GitGuiPlugin.Dialog.PushError.Header=GIT \u63A8\u9001\u9519\u8BEF
-GitGuiPlugin.Dialog.NoFilesToRevert.Message=\u9057\u61BE\uFF0C\u6CA1\u6709\u8981\u8FD8\u539F\u7684\u6587\u4EF6
-GitGuiPlugin.Dialog.NoFilesToRevert.Header=\u6CA1\u6709\u8981\u8FD8\u539F\u7684\u6587\u4EF6
-GitGuiPlugin.Dialog.CommitError.Header=\u63D0\u4EA4\u9519\u8BEF
+GitGuiPlugin.Dialog.PushError.Message=\u6267\u884C git push \u65F6\u51FA\u9519
+GitGuiPlugin.Dialog.RevertError.Header=GIT \u8FD8\u539F\u9519\u8BEF
+GitGuiPlugin.Dialog.RevertError.Message=\u6267\u884C git revert \u65F6\u51FA\u9519
 GitGuiPlugin.Dialog.RevertFiles.Header=\u9009\u62E9\u8981\u6062\u590D\u6587\u4EF6
+GitGuiPlugin.Dialog.RevertFiles.Message=\u8BF7\u9009\u62E9\u8981\u6062\u590D\u7684\u6587\u4EF6
 GitGuiPlugin.Dialog.SelectFilesToCommit.Header=\u63D0\u4EA4\u6D88\u606F
+GitGuiPlugin.Dialog.SelectFilesToCommit.Message=\u8BF7\u8F93\u5165\u63D0\u4EA4\u6D88\u606F\:
 GitGuiPlugin.Info.Label=Git \u4FE1\u606F\: {0}
+GitGuiPlugin.Project.Label=Git \u9879\u76EE
+GitGuiPlugin.Toolbar.Add.Tooltip=Git \u6DFB\u52A0
 GitGuiPlugin.Toolbar.Commit.Tooltip=Git \u63D0\u4EA4
-GitGuiPlugin.Toolbar.Push.Tooltip=Git \u63A8\u9001
-GitGuiPlugin.Dialog.RevertError.Message=\u6267\u884C git revert \u65F6\u51FA\u9519
 GitGuiPlugin.Toolbar.Info.Tooltip=Git \u4FE1\u606F
-GitGuiPlugin.Dialog.CommitError.Message=\u6267\u884C git commit \u65F6\u51FA\u9519
-GitGuiPlugin.Dialog.RevertError.Header=GIT \u8FD8\u539F\u9519\u8BEF
-GitGuiPlugin.Dialog.SelectFilesToCommit.Message=\u8BF7\u8F93\u5165\u63D0\u4EA4\u6D88\u606F\:
 GitGuiPlugin.Toolbar.Pull.Tooltip=Git \u62C9\u53D6
-GitGuiPlugin.Toolbar.Add.Tooltip=Git \u6DFB\u52A0
-GitGuiPlugin.Dialog.PushError.Message=\u6267\u884C git push \u65F6\u51FA\u9519
+GitGuiPlugin.Toolbar.Push.Tooltip=Git \u63A8\u9001
 GitGuiPlugin.Toolbar.Revert.Tooltip=Git \u6062\u590D\u5230\u6700\u8FD1\u7684\u7248\u672C(HEAD)
-GitGuiPlugin.Dialog.NoFilesToCommit.Header=\u6CA1\u6709\u6587\u4EF6\u53EF\u63D0\u4EA4
-GitGuiPlugin.Dialog.PullError.Header=Git \u62C9\u53D6\u9519\u8BEF
diff --git a/plugins/misc/git/src/main/resources/org/apache/hop/git/model/messages/messages_zh_CN.properties b/plugins/misc/git/src/main/resources/org/apache/hop/git/model/messages/messages_zh_CN.properties
index 9403da8..a011139 100644
--- a/plugins/misc/git/src/main/resources/org/apache/hop/git/model/messages/messages_zh_CN.properties
+++ b/plugins/misc/git/src/main/resources/org/apache/hop/git/model/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,9 +15,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.git.model' in locale 'zh_CN'
-#
 #
-Git.Dialog.UncommittedChanges.Message=\u6709\u672A\u63D0\u4EA4\u7684\u53D8\u66F4
 Dialog.Error=\u9519\u8BEF
 Dialog.Success=\u6210\u529F
+Git.Dialog.UncommittedChanges.Message=\u6709\u672A\u63D0\u4EA4\u7684\u53D8\u66F4
diff --git a/plugins/misc/import/src/main/resources/org/apache/hop/imports/gui/messages/messages_zh_CN.properties b/plugins/misc/import/src/main/resources/org/apache/hop/imports/gui/messages/messages_zh_CN.properties
index 3402aed..640e603 100644
--- a/plugins/misc/import/src/main/resources/org/apache/hop/imports/gui/messages/messages_zh_CN.properties
+++ b/plugins/misc/import/src/main/resources/org/apache/hop/imports/gui/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,7 +15,5 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.imports.gui' in locale 'zh_CN'
-#
 #
 HopGuiImport.Menu.Item=\u4ECE Kettle/PDI \u5BFC\u5165...
diff --git a/plugins/misc/import/src/main/resources/org/apache/hop/imports/kettle/messages/messages_zh_CN.properties b/plugins/misc/import/src/main/resources/org/apache/hop/imports/kettle/messages/messages_zh_CN.properties
index 05eda14..8caf682 100644
--- a/plugins/misc/import/src/main/resources/org/apache/hop/imports/kettle/messages/messages_zh_CN.properties
+++ b/plugins/misc/import/src/main/resources/org/apache/hop/imports/kettle/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,21 +15,19 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.imports.kettle' in locale 'zh_CN'
-#
 #
-KettleImportDialog.Workflow.RunConfiguration.Label=Workflow \u9ED8\u8BA4\u8FD0\u884C\u914D\u7F6E
+KettleImportDialog.Button.Browse=\u6D4F\u89C8...
 KettleImportDialog.Label.ImportFrom=\u5BFC\u5165\u4ECE
-KettleImportDialog.Label.SkipFolders=\u5FFD\u7565\u6E90\u8DEF\u5F84\u4E2D\u7684\u5B50\u76EE\u5F55
-KettleImportDialog.Label.ImportToFolder=\u5BFC\u5165\u5230\u76EE\u5F55
+KettleImportDialog.Label.ImportInExistingProject=\u5BFC\u5165\u5DF2\u6709\u9879\u76EE
 KettleImportDialog.Label.ImportInProject=\u5BFC\u5165\u9879\u76EE
+KettleImportDialog.Label.ImportToFolder=\u5BFC\u5165\u5230\u76EE\u5F55
 KettleImportDialog.Label.PathToJDBCProperties=jdbc.properties \u6587\u4EF6\u8DEF\u5F84
-KettleImportDialog.Label.SkipHiddenFiles=\u5FFD\u7565\u9690\u85CF\u6587\u4EF6\u4E0E\u76EE\u5F55
-KettleImportDialog.Label.ImportInExistingProject=\u5BFC\u5165\u5DF2\u6709\u9879\u76EE
-KettleImportDialog.Label.PathToSharedXml=shared.xml \u6587\u4EF6\u8DEF\u5F84
 KettleImportDialog.Label.PathToKettleProperties=kettle.properties \u6587\u4EF6\u8DEF\u5F84
-KettleImportDialog.Label.TargetConfigFile=\u76EE\u6807\u73AF\u5883\u53D8\u91CF\u914D\u7F6E\u6587\u4EF6
-KettleImportDialog.Shell.Name=Kettle/PDI \u5BFC\u5165\u5668
-KettleImportDialog.Button.Browse=\u6D4F\u89C8...
+KettleImportDialog.Label.PathToSharedXml=shared.xml \u6587\u4EF6\u8DEF\u5F84
 KettleImportDialog.Label.SkipExistingTargetFiles=\u8DF3\u8FC7\u540C\u540D\u6587\u4EF6
+KettleImportDialog.Label.SkipFolders=\u5FFD\u7565\u6E90\u8DEF\u5F84\u4E2D\u7684\u5B50\u76EE\u5F55
+KettleImportDialog.Label.SkipHiddenFiles=\u5FFD\u7565\u9690\u85CF\u6587\u4EF6\u4E0E\u76EE\u5F55
+KettleImportDialog.Label.TargetConfigFile=\u76EE\u6807\u73AF\u5883\u53D8\u91CF\u914D\u7F6E\u6587\u4EF6
 KettleImportDialog.Pipeline.RunConfiguration.Label=Pipeline \u9ED8\u8BA4\u8FD0\u884C\u914D\u7F6E
+KettleImportDialog.Shell.Name=Kettle/PDI \u5BFC\u5165\u5668
+KettleImportDialog.Workflow.RunConfiguration.Label=Workflow \u9ED8\u8BA4\u8FD0\u884C\u914D\u7F6E
diff --git a/plugins/misc/projects/src/main/resources/org/apache/hop/projects/config/messages/messages_zh_CN.properties b/plugins/misc/projects/src/main/resources/org/apache/hop/projects/config/messages/messages_zh_CN.properties
index 0f80e1b..d3b8ad7 100644
--- a/plugins/misc/projects/src/main/resources/org/apache/hop/projects/config/messages/messages_zh_CN.properties
+++ b/plugins/misc/projects/src/main/resources/org/apache/hop/projects/config/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,19 +15,17 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.projects.config' in locale 'zh_CN'
-#
 #
-ProjectConfig.DefaultProject.Message=\u672A\u6307\u5B9A\u65F6\u4F7F\u7528\u7684\u9ED8\u8BA4\u9879\u76EE
-ProjectConfig.Tab.Name=\u9879\u76EE
-ProjectConfig.ProjectMandatory.Message=\u9879\u76EE\u7684\u4F7F\u7528\u662F\u5F3A\u5236\u6027\u7684
-ProjectConfig.ProjectNotExists.StandardProject.Error.Message=\u65E0\u6CD5\u5C06\u9879\u76EE \u201C{0}\u201D \u8BBE\u7F6E\u4E3A\u5EFA\u8BAE\u7684\u7236\u9879\u76EE\uFF0C\u56E0\u4E3A\u5B83\u4E0D\u5B58\u5728\uFF01
-ProjectConfig.ParentProject.Message=\u521B\u5EFA\u9879\u76EE\u65F6\u8981\u5EFA\u8BAE\u7236\u9879\u76EE
+ProjectConfig.DefaultEnvironment.Message=\u672A\u6307\u5B9A\u65F6\u4F7F\u7528\u7684\u9ED8\u8BA4\u73AF\u5883\:
+ProjectConfig.DefaultProject.Message=\u672A\u6307\u5B9A\u65F6\u4F7F\u7528\u7684\u9ED8\u8BA4\u9879\u76EE\:
+ProjectConfig.EnableProjectPlugin.Message=\u542F\u7528\u9879\u76EE\u63D2\u4EF6\:
+ProjectConfig.EnvironmentMandatory.Message=\u5F3A\u5236\u4F7F\u7528\u73AF\u5883\u7279\u6027\:
+ProjectConfig.ParentProject.Message=\u521B\u5EFA\u9879\u76EE\u65F6\u8981\u5EFA\u8BAE\u7236\u9879\u76EE\:
+ProjectConfig.ProjectMandatory.Message=\u9879\u76EE\u7684\u4F7F\u7528\u662F\u5F3A\u5236\u6027\u7684\:
+ProjectConfig.ProjectNotExists.DefaultProject.Error.Message=\u65E0\u6CD5\u5C06\u9879\u76EE \u201C{0}\u201D \u8BBE\u7F6E\u4E3A\u5EFA\u8BAE\u7684\u9ED8\u8BA4\u9879\u76EE, \u56E0\u4E3A\u5B83\u4E0D\u5B58\u5728!
+ProjectConfig.ProjectNotExists.Error.Header=\u9879\u76EE\u4E0D\u5B58\u5728!
+ProjectConfig.ProjectNotExists.StandardProject.Error.Message=\u65E0\u6CD5\u5C06\u9879\u76EE \u201C{0}\u201D \u8BBE\u7F6E\u4E3A\u5EFA\u8BAE\u7684\u7236\u9879\u76EE, \u56E0\u4E3A\u5B83\u4E0D\u5B58\u5728!
 ProjectConfig.SavingOption.ErrorDialog.Header=\u9519\u8BEF
-ProjectConfig.EnableProjectPlugin.Message=\u542F\u7528\u9879\u76EE\u63D2\u4EF6
-ProjectConfig.EnvironmentMandatory.Message=\u5F3A\u5236\u4F7F\u7528\u73AF\u5883\u7279\u6027
-ProjectConfig.ProjectNotExists.DefaultProject.Error.Message=\u65E0\u6CD5\u5C06\u9879\u76EE \u201C{0}\u201D \u8BBE\u7F6E\u4E3A\u5EFA\u8BAE\u7684\u9ED8\u8BA4\u9879\u76EE\uFF0C\u56E0\u4E3A\u5B83\u4E0D\u5B58\u5728\uFF01
-ProjectConfig.ProjectNotExists.Error.Header=\u9879\u76EE\u4E0D\u5B58\u5728\uFF01
-ProjectConfig.DefaultEnvironment.Message=\u672A\u6307\u5B9A\u65F6\u4F7F\u7528\u7684\u9ED8\u8BA4\u73AF\u5883
 ProjectConfig.SavingOption.ErrorDialog.Message=\u4FDD\u5B58\u9009\u9879\u65F6\u51FA\u9519
-ProjectConfig.StdProjectFolder.Message=GUI\: \u521B\u5EFA\u9879\u76EE\u65F6\u5EFA\u8BAE\u7684\u6807\u51C6\u9879\u76EE\u6587\u4EF6\u5939
+ProjectConfig.StdProjectFolder.Message=Hop GUI\: \u521B\u5EFA\u9879\u76EE\u65F6\u5EFA\u8BAE\u7684\u6807\u51C6\u9879\u76EE\u6587\u4EF6\u5939\:
+ProjectConfig.Tab.Name=\u9879\u76EE
diff --git a/plugins/misc/projects/src/main/resources/org/apache/hop/projects/environment/messages/messages_zh_CN.properties b/plugins/misc/projects/src/main/resources/org/apache/hop/projects/environment/messages/messages_zh_CN.properties
index 548d714..850fd0b 100644
--- a/plugins/misc/projects/src/main/resources/org/apache/hop/projects/environment/messages/messages_zh_CN.properties
+++ b/plugins/misc/projects/src/main/resources/org/apache/hop/projects/environment/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,21 +15,19 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.projects.environment' in locale 'zh_CN'
-#
 #
+LifecycleEnvironmentDialog.Button.Edit=\u7F16\u8F91...
+LifecycleEnvironmentDialog.Button.New=\u65B0\u5EFA...
 LifecycleEnvironmentDialog.Button.Select=\u9009\u62E9...
-LifecycleEnvironmentDialog.Label.EnvironmentName=\u540D\u79F0
+LifecycleEnvironmentDialog.DetailTable.Label.Filename=\u6587\u4EF6\u540D
 LifecycleEnvironmentDialog.Group.Label.ConfigurationFiles=\u914D\u7F6E\u6587\u4EF6\:
-LifecycleEnvironmentDialog.Label.EnvironmentPurpose=\u9002\u7528\u4E8E
-LifecycleEnvironmentDialog.Purpose.Text.Development=\u5F00\u53D1
-LifecycleEnvironmentDialog.Purpose.Text.CI=\u6301\u7EED\u96C6\u6210
-LifecycleEnvironmentDialog.Button.New=\u65B0\u5EFA...
-LifecycleEnvironmentDialog.Button.Edit=\u7F16\u8F91...
+LifecycleEnvironmentDialog.Label.EnvironmentName=\u540D\u79F0
+LifecycleEnvironmentDialog.Label.EnvironmentPurpose=\u76EE\u6807\u73AF\u5883
 LifecycleEnvironmentDialog.Label.ReferencedProject=\u9879\u76EE
-LifecycleEnvironmentDialog.DetailTable.Label.Filename=\u6587\u4EF6\u540D
 LifecycleEnvironmentDialog.Purpose.Text.Acceptance=\u9A8C\u6536
-LifecycleEnvironmentDialog.Purpose.Text.Testing=\u6D4B\u8BD5
 LifecycleEnvironmentDialog.Purpose.Text.CB=\u901A\u7528\u6784\u5EFA
-LifecycleEnvironmentDialog.Shell.Name=\u73AF\u5883\u914D\u7F6E
-LifecycleEnvironmentDialog.Purpose.Text.Production=\u751F\u4EA7
+LifecycleEnvironmentDialog.Purpose.Text.CI=\u6301\u7EED\u96C6\u6210
+LifecycleEnvironmentDialog.Purpose.Text.Development=\u5F00\u53D1\u73AF\u5883
+LifecycleEnvironmentDialog.Purpose.Text.Production=\u751F\u4EA7\u73AF\u5883
+LifecycleEnvironmentDialog.Purpose.Text.Testing=\u6D4B\u8BD5\u73AF\u5883
+LifecycleEnvironmentDialog.Shell.Name=\u73AF\u5883\u5C5E\u6027
diff --git a/plugins/misc/projects/src/main/resources/org/apache/hop/projects/gui/messages/messages_zh_CN.properties b/plugins/misc/projects/src/main/resources/org/apache/hop/projects/gui/messages/messages_zh_CN.properties
index 6f03d66..fc65d5e 100644
--- a/plugins/misc/projects/src/main/resources/org/apache/hop/projects/gui/messages/messages_zh_CN.properties
+++ b/plugins/misc/projects/src/main/resources/org/apache/hop/projects/gui/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,63 +15,61 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.projects.gui' in locale 'zh_CN'
-#
 #
-ProjectGuiPlugin.EditEnvironment.Error.Dialog.Message=\u7F16\u8F91\u73AF\u5883\u53D8\u91CF "{0}" \u65F6\u51FA\u9519
-ProjectGuiPlugin.ZipDirectory.Error.Dialog.Message=\u538B\u7F29\u9879\u76EE\u65F6\u51FA\u9519
-HopGui.Toolbar.Project.Delete.Tooltip=\u5220\u9664\u9009\u4E2D\u7684\u9879\u76EE
-HopGui.Toolbar.Environment.Tooltip=\u5355\u51FB\u6B64\u5904\u7F16\u8F91\u5F53\u524D\u73AF\u5883
-ProjectGuiPlugin.AddProject.Error.Dialog.Message=\u6DFB\u52A0\u9879\u76EE\u65F6\u51FA\u9519
-ProjectGuiPlugin.DeleteEnvironment.Error.Dialog.Message=\u79FB\u52A8\u8FD0\u884C\u73AF\u5883 "{0}" \u65F6\u51FA\u9519
-ProjectGuiPlugin.LocalWFRunConfig.Dialog.Header=\u521B\u5EFA\u672C\u5730 Workflow \u8FD0\u884C\u914D\u7F6E
-ProjectGuiPlugin.AddProject.Error.Dialog.Header=\u9519\u8BEF
+FileDialog.Browse.Project.Home=\u5BFC\u822A\u5230\u9879\u76EE\u4E3B\u76EE\u5F55
 HopGui.FileMenu.Project.Export.Label=\u5F53\u524D\u9879\u76EE\u5BFC\u51FA\u5230(zip)...
-HopGui.Toolbar.Project.Add.Tooltip=\u6DFB\u52A0\u65B0\u9879\u76EE
+HopGui.Toolbar.Environment.Add.Tooltip=\u6DFB\u52A0\u65B0\u73AF\u5883
+HopGui.Toolbar.Environment.Delete.Tooltip=\u5220\u9664\u9009\u5B9A\u7684\u73AF\u5883
+HopGui.Toolbar.Environment.Edit.Tooltip=\u7F16\u8F91\u9009\u5B9A\u7684\u73AF\u5883
+HopGui.Toolbar.Environment.Label=\u73AF\u5883\:
+HopGui.Toolbar.Environment.Tooltip=\u5355\u51FB\u6B64\u5904\u7F16\u8F91\u5F53\u524D\u73AF\u5883
 HopGui.Toolbar.EnvironmentsList.Tooltip=\u9009\u62E9\u5F53\u524D\u73AF\u5883
-ProjectGuiPlugin.ZipDirectory.Dialog.Header=\u9879\u76EE zip \u6587\u4EF6\u5DF2\u521B\u5EFA
-ProjectGuiPlugin.DeleteProject.Error.Dialog.Message=\u5220\u9664\u9879\u76EE\u201C{0}\u201D\u65F6\u51FA\u9519
-ProjectGuiPlugin.ChangeProject.Error.Dialog.Header=\u9519\u8BEF
+HopGui.Toolbar.Project.Add.Tooltip=\u6DFB\u52A0\u65B0\u9879\u76EE
+HopGui.Toolbar.Project.Delete.Tooltip=\u5220\u9664\u9009\u4E2D\u7684\u9879\u76EE
 HopGui.Toolbar.Project.Edit.Tooltip=\u7F16\u8F91\u9009\u5B9A\u7684\u9879\u76EE
-ProjectGuiPlugin.ProjectExists.Dialog.Message=\u5728\u6307\u5B9A\u6587\u4EF6\u5939\u4E2D\u627E\u5230\u73B0\u6709\u9879\u76EE\u914D\u7F6E\u6587\u4EF6, \u5B83\u5C06\u88AB\u7528\u4E8E\u8FD9\u4E2A\u9879\u76EE
-ProjectGuiPlugin.ZipDirectory.Error.Dialog.Header=\u9519\u8BEF
-ProjectGuiPlugin.ZipDirectory.Dialog.Message1=zip \u6587\u4EF6 {0} \u521B\u5EFA\u6210\u529F
-ProjectGuiPlugin.Lifecycle.Dialog.Header=\u4E3A\u9879\u76EE\u521B\u5EFA\u5168\u751F\u547D\u5468\u671F\u73AF\u5883
-ProjectGuiPlugin.EditEnvironment.Error.Dialog.Header=\u9519\u8BEF
-ProjectGuiPlugin.ReloadProject.Dialog.Header=\u91CD\u65B0\u52A0\u8F7D\u9879\u76EE?
 HopGui.Toolbar.Project.Label=\u9879\u76EE\:
-ProjectGuiPlugin.ZipDirectory.Taskname.Text=\u538B\u7F29\u9879\u76EE\u76EE\u5F55...
-ProjectGuiPlugin.SelectProject.Tooltip="{1}" \u76EE\u5F55\u4E0A\u7684\u9879\u76EE {0} \u914D\u7F6E\u5728 "{2}" \u6587\u4EF6\u4E2D
-ProjectGuiPlugin.ZipDirectory.Dialog.Message2=\u6587\u4EF6\u540D\u5DF2\u590D\u5236\u5230\u526A\u8D34\u677F
-ProjectGuiPlugin.DeleteProject.Error.Dialog.Header=\u9519\u8BEF
-ProjectGuiPlugin.DeleteProject.Dialog.Message1=\u662F\u5426\u4ECE Hop \u914D\u7F6E\u4E2D\u5220\u9664\u9879\u76EE \u201C{0}\u201D?
-ProjectGuiPlugin.LocalWFRunConfig.Dialog.Message=\u60A8\u60F3\u4E3A\u8BE5\u9879\u76EE\u914D\u7F6E\u672C\u5730 Workflow \u8FD0\u884C\u914D\u7F6E\u5417?
-ProjectGuiPlugin.DeleteProject.Dialog.Message2=\u8BF7\u6CE8\u610F\uFF0C\u6587\u4EF6\u5939 \u201C{0}\u201D \u53CA\u5176\u4E2D\u7684\u9879\u76EE\u914D\u7F6E\u6587\u4EF6 {1} \u4E0D\u4F1A\u505A\u4EFB\u4F55\u6539\u52A8
-HopGui.Toolbar.Environment.Add.Tooltip=\u6DFB\u52A0\u65B0\u73AF\u5883
-ProjectGuiPlugin.FindEnvironment.Tooltip=\u73AF\u5883 {0} \u5728\u9879\u76EE \u201C{1}\u201D \u4E2D\u88AB\u7528\u4E8E {2}
-ProjectGuiPlugin.DeleteProject.Dialog.Header=\u5220\u9664\u9879\u76EE?
-ProjectGuiPlugin.DeleteEnvironment.Error.Dialog.Header=\u9519\u8BEF
-ProjectGuiPlugin.ChangeProject.Error.Dialog.Message=\u5207\u6362\u9879\u76EE "{0}" \u65F6\u51FA\u9519
-ProjectGuiPlugin.EditProject.Error.Dialog.Message=\u7F16\u8F91\u9879\u76EE "{0}" \u65F6\u51FA\u9519
-FileDialog.Browse.Project.Home=\u5BFC\u822A\u5230\u9879\u76EE\u4E3B\u76EE\u5F55
-ProjectGuiPlugin.ProjectExists.Dialog.Header=\u914D\u7F6E\u6587\u4EF6\u5DF2\u7ECF\u5B58\u5728\uFF01
-ProjectGuiPlugin.DeleteProject.ProjectReferencedAsParent.Header=\u65E0\u6CD5\u5220\u9664\u9879\u76EE\uFF01
-HopGui.Toolbar.Environment.Delete.Tooltip=\u5220\u9664\u9009\u5B9A\u7684\u73AF\u5883
-ProjectGuiPlugin.AddEnvironment.Error.Dialog.Header=\u9519\u8BEF
 HopGui.Toolbar.Project.Tooltip=\u5355\u51FB\u6B64\u5904\u7F16\u8F91\u5F53\u524D\u9879\u76EE
+HopGui.Toolbar.ProjectsList.Tooltip=\u9009\u62E9\u5F53\u524D\u9879\u76EE
+ProjectGuiPlugin.AddEnvironment.Error.Dialog.Header=\u9519\u8BEF
+ProjectGuiPlugin.AddEnvironment.Error.Dialog.Message=\u6DFB\u52A0\u8FD0\u884C\u73AF\u5883\u65F6\u51FA\u9519
+ProjectGuiPlugin.AddProject.Error.Dialog.Header=\u9519\u8BEF
+ProjectGuiPlugin.AddProject.Error.Dialog.Message=\u6DFB\u52A0\u9879\u76EE\u65F6\u51FA\u9519
 ProjectGuiPlugin.ChangeEnvironment.Error.Dialog.Header=\u9519\u8BEF
-ProjectGuiPlugin.EditProject.Error.Dialog.Header=\u9519\u8BEF
-ProjectGuiPlugin.LocalWFRunConfigDescription.Text=\u4F7F\u7528\u6807\u51C6\u672C\u5730 Hop Workflow \u5F15\u64CE\u505A\u4E3A\u672C\u5730\u8FD0\u884C\u914D\u7F6E
-ProjectGuiPlugin.Lifecycle.Dialog.Message2=\u60A8\u53EF\u4EE5\u4F7F\u7528\u5B83\u7BA1\u7406\u7279\u5B9A\u8BBE\u7F6E\uFF0C\u4F8B\u5982\u73AF\u5883\u7684\u4E3B\u673A\u540D\u548C\u8DEF\u5F84\u7B49\u4FE1\u606F
-ProjectGuiPlugin.DeleteEnvironment.Dialog.Message1=\u60A8\u786E\u8BA4\u8981\u5C06\u8FD0\u884C\u73AF\u5883 "{0}" \u4ECE\u5F53\u524D Hop \u914D\u7F6E\u4E2D\u5220\u9664?
 ProjectGuiPlugin.ChangeEnvironment.Error.Dialog.Message=\u4FEE\u6539\u9879\u76EE "{0}" \u65F6\u51FA\u9519
-HopGui.Toolbar.Environment.Label=\u73AF\u5883\:
-ProjectGuiPlugin.Lifecycle.Dialog.Message1=\u5982\u679C\u8FD9\u4E2A\u9879\u76EE\u662F\u751F\u547D\u5468\u671F\u7684\u4E00\u90E8\u5206\uFF0C\u5EFA\u8BAE\u60A8\u5C06\u5B83\u6DFB\u52A0\u5230\u751F\u547D\u5468\u671F\u73AF\u5883\u4E2D?
-ProjectGuiPlugin.DeleteEnvironment.Dialog.Message2=\u8BF7\u6CE8\u610F\uFF0C\u9879\u76EE\u201C{0}\u201D \u4E2D\u7684\u4EFB\u4F55\u6587\u4EF6\u53CA\u6587\u4EF6\u5939\u90FD\u4E0D\u4F1A\u88AB\u6539\u52A8
-HopGui.Toolbar.Environment.Edit.Tooltip=\u7F16\u8F91\u9009\u5B9A\u7684\u73AF\u5883
-ProjectGuiPlugin.ReloadProject.Dialog.Message=\u9700\u8981\u91CD\u65B0\u52A0\u8F7D\u6B64\u9879\u76EE, \u6240\u505A\u7684\u66F4\u6539\u624D\u4F1A\u751F\u6548\uFF0C\u4F60\u73B0\u5728\u60F3\u8FD9\u6837\u505A\u5417?
+ProjectGuiPlugin.ChangeProject.Error.Dialog.Header=\u9519\u8BEF
+ProjectGuiPlugin.ChangeProject.Error.Dialog.Message=\u5207\u6362\u9879\u76EE "{0}" \u65F6\u51FA\u9519
 ProjectGuiPlugin.DeleteEnvironment.Dialog.Header=\u5220\u9664\u73AF\u5883?
-ProjectGuiPlugin.DeleteProject.ProjectReferencedAsParent.Message1=\u5F53\u524D\u9879\u76EE\u65E0\u6CD5\u5220\u9664\uFF0C\u56E0\u4E3A\u5176\u88AB\u4EE5\u4E0B\u9879\u76EE\u5F15\u7528\u4E3A\u7236\u9879\u76EE\:
-HopGui.Toolbar.ProjectsList.Tooltip=\u9009\u62E9\u5F53\u524D\u9879\u76EE
-ProjectGuiPlugin.AddEnvironment.Error.Dialog.Message=\u6DFB\u52A0\u8FD0\u884C\u73AF\u5883\u65F6\u51FA\u9519
-ProjectGuiPlugin.DeleteProject.ProjectReferencedAsParent.Message2=\u8981\u6267\u884C\u5220\u9664\uFF0C\u60A8\u5FC5\u987B\u9996\u5148\u5220\u9664\u5217\u51FA\u7684\u9879\u76EE\u4E2D\u7684\u7236\u9879\u76EE\u5F15\u7528\uFF0C\u7136\u540E\u91CD\u8BD5.
+ProjectGuiPlugin.DeleteEnvironment.Dialog.Message1=\u60A8\u786E\u8BA4\u8981\u5C06\u8FD0\u884C\u73AF\u5883 "{0}" \u4ECE\u5F53\u524D Hop \u914D\u7F6E\u4E2D\u5220\u9664?
+ProjectGuiPlugin.DeleteEnvironment.Dialog.Message2=\u8BF7\u6CE8\u610F, \u9879\u76EE\u201C{0}\u201D \u4E2D\u7684\u4EFB\u4F55\u6587\u4EF6\u53CA\u6587\u4EF6\u5939\u90FD\u4E0D\u4F1A\u88AB\u6539\u52A8
+ProjectGuiPlugin.DeleteEnvironment.Error.Dialog.Header=\u9519\u8BEF
+ProjectGuiPlugin.DeleteEnvironment.Error.Dialog.Message=\u79FB\u52A8\u8FD0\u884C\u73AF\u5883 "{0}" \u65F6\u51FA\u9519
+ProjectGuiPlugin.DeleteProject.Dialog.Header=\u5220\u9664\u9879\u76EE?
+ProjectGuiPlugin.DeleteProject.Dialog.Message1=\u662F\u5426\u4ECE Hop \u914D\u7F6E\u4E2D\u5220\u9664\u9879\u76EE \u201C{0}\u201D?
+ProjectGuiPlugin.DeleteProject.Dialog.Message2=\u8BF7\u6CE8\u610F, \u6587\u4EF6\u5939 \u201C{0}\u201D \u53CA\u5176\u4E2D\u7684\u9879\u76EE\u914D\u7F6E\u6587\u4EF6 {1} \u4E0D\u4F1A\u505A\u4EFB\u4F55\u6539\u52A8
+ProjectGuiPlugin.DeleteProject.Error.Dialog.Header=\u9519\u8BEF
+ProjectGuiPlugin.DeleteProject.Error.Dialog.Message=\u5220\u9664\u9879\u76EE\u201C{0}\u201D\u65F6\u51FA\u9519
+ProjectGuiPlugin.DeleteProject.ProjectReferencedAsParent.Header=\u65E0\u6CD5\u5220\u9664\u9879\u76EE!
+ProjectGuiPlugin.DeleteProject.ProjectReferencedAsParent.Message1=\u5F53\u524D\u9879\u76EE\u65E0\u6CD5\u5220\u9664, \u56E0\u4E3A\u5176\u88AB\u4EE5\u4E0B\u9879\u76EE\u5F15\u7528\u4E3A\u7236\u9879\u76EE\:
+ProjectGuiPlugin.DeleteProject.ProjectReferencedAsParent.Message2=\u8981\u6267\u884C\u5220\u9664, \u60A8\u5FC5\u987B\u9996\u5148\u5220\u9664\u5217\u51FA\u7684\u9879\u76EE\u4E2D\u7684\u7236\u9879\u76EE\u5F15\u7528, \u7136\u540E\u91CD\u8BD5.
+ProjectGuiPlugin.EditEnvironment.Error.Dialog.Header=\u9519\u8BEF
+ProjectGuiPlugin.EditEnvironment.Error.Dialog.Message=\u7F16\u8F91\u73AF\u5883\u53D8\u91CF "{0}" \u65F6\u51FA\u9519
+ProjectGuiPlugin.EditProject.Error.Dialog.Header=\u9519\u8BEF
+ProjectGuiPlugin.EditProject.Error.Dialog.Message=\u7F16\u8F91\u9879\u76EE "{0}" \u65F6\u51FA\u9519
+ProjectGuiPlugin.FindEnvironment.Tooltip=\u73AF\u5883 {0} \u5728\u9879\u76EE \u201C{1}\u201D \u4E2D\u88AB\u7528\u4E8E {2}
+ProjectGuiPlugin.Lifecycle.Dialog.Header=\u4E3A\u9879\u76EE\u521B\u5EFA\u5168\u751F\u547D\u5468\u671F\u73AF\u5883
+ProjectGuiPlugin.Lifecycle.Dialog.Message1=\u5982\u679C\u8FD9\u4E2A\u9879\u76EE\u662F\u751F\u547D\u5468\u671F\u7684\u4E00\u90E8\u5206, \u5EFA\u8BAE\u60A8\u5C06\u5B83\u6DFB\u52A0\u5230\u751F\u547D\u5468\u671F\u73AF\u5883\u4E2D?
+ProjectGuiPlugin.Lifecycle.Dialog.Message2=\u60A8\u53EF\u4EE5\u4F7F\u7528\u5B83\u7BA1\u7406\u7279\u5B9A\u8BBE\u7F6E, \u4F8B\u5982\u73AF\u5883\u7684\u4E3B\u673A\u540D\u548C\u8DEF\u5F84\u7B49\u4FE1\u606F
+ProjectGuiPlugin.LocalWFRunConfig.Dialog.Header=\u521B\u5EFA\u672C\u5730 Workflow \u8FD0\u884C\u914D\u7F6E
+ProjectGuiPlugin.LocalWFRunConfig.Dialog.Message=\u60A8\u60F3\u4E3A\u8BE5\u9879\u76EE\u914D\u7F6E\u672C\u5730 Workflow \u8FD0\u884C\u914D\u7F6E\u5417?
+ProjectGuiPlugin.LocalWFRunConfigDescription.Text=\u4F7F\u7528\u6807\u51C6\u672C\u5730 Hop Workflow \u5F15\u64CE\u505A\u4E3A\u672C\u5730\u8FD0\u884C\u914D\u7F6E
+ProjectGuiPlugin.ProjectExists.Dialog.Header=\u914D\u7F6E\u6587\u4EF6\u5DF2\u7ECF\u5B58\u5728!
+ProjectGuiPlugin.ProjectExists.Dialog.Message=\u5728\u6307\u5B9A\u6587\u4EF6\u5939\u4E2D\u627E\u5230\u73B0\u6709\u9879\u76EE\u914D\u7F6E\u6587\u4EF6, \u5B83\u5C06\u88AB\u7528\u4E8E\u8FD9\u4E2A\u9879\u76EE
+ProjectGuiPlugin.ReloadProject.Dialog.Header=\u91CD\u65B0\u52A0\u8F7D\u9879\u76EE?
+ProjectGuiPlugin.ReloadProject.Dialog.Message=\u9700\u8981\u91CD\u65B0\u52A0\u8F7D\u6B64\u9879\u76EE, \u6240\u505A\u7684\u66F4\u6539\u624D\u4F1A\u751F\u6548, \u4F60\u73B0\u5728\u60F3\u8FD9\u6837\u505A\u5417?
+ProjectGuiPlugin.SelectProject.Tooltip="{1}" \u76EE\u5F55\u4E0A\u7684\u9879\u76EE {0} \u914D\u7F6E\u5728 "{2}" \u6587\u4EF6\u4E2D
+ProjectGuiPlugin.ZipDirectory.Dialog.Header=\u9879\u76EE zip \u6587\u4EF6\u5DF2\u521B\u5EFA
+ProjectGuiPlugin.ZipDirectory.Dialog.Message1=zip \u6587\u4EF6 {0} \u521B\u5EFA\u6210\u529F
+ProjectGuiPlugin.ZipDirectory.Dialog.Message2=\u6587\u4EF6\u540D\u5DF2\u590D\u5236\u5230\u526A\u8D34\u677F
+ProjectGuiPlugin.ZipDirectory.Error.Dialog.Header=\u9519\u8BEF
+ProjectGuiPlugin.ZipDirectory.Error.Dialog.Message=\u538B\u7F29\u9879\u76EE\u65F6\u51FA\u9519
+ProjectGuiPlugin.ZipDirectory.Taskname.Text=\u538B\u7F29\u9879\u76EE\u76EE\u5F55...
diff --git a/plugins/misc/projects/src/main/resources/org/apache/hop/projects/project/messages/messages_zh_CN.properties b/plugins/misc/projects/src/main/resources/org/apache/hop/projects/project/messages/messages_zh_CN.properties
index 7b86f8e..719a325 100644
--- a/plugins/misc/projects/src/main/resources/org/apache/hop/projects/project/messages/messages_zh_CN.properties
+++ b/plugins/misc/projects/src/main/resources/org/apache/hop/projects/project/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,35 +15,34 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.projects.project' in locale 'zh_CN'
-#
 #
-ProjectDialog.ProjectConfigError.Error.Dialog.Header=\u9519\u8BEF
-ProjectDialog.Label.HomeFolder=\u6839\u76EE\u5F55
+ProjectDialog.Button.Browse=\u6D4F\u89C8...
+ProjectDialog.CreateHome.Dialog.Header=\u521B\u5EFA\u9879\u76EE\u6839\u76EE\u5F55?
+ProjectDialog.CreateHome.Dialog.Message=\u9879\u76EE "{0}" \u7684\u6839\u76EE\u5F55\u4E0D\u5B58\u5728, \u60A8\u662F\u5426\u521B\u5EFA\u8BE5\u76EE\u5F55?
+ProjectDialog.DetailTable.Label.VariableDescription=\u63CF\u8FF0(\u53EF\u9009)
 ProjectDialog.DetailTable.Label.VariableName=\u540D\u79F0
+ProjectDialog.DetailTable.Label.VariableValue=\u503C
+ProjectDialog.FileList.AllFiles.Text=\u6240\u6709\u6587\u4EF6(*.*)
+ProjectDialog.FileList.PrjFiles.Text=\u9879\u76EE\u914D\u7F6E\u6587\u4EF6(*.json)
+ProjectDialog.Group.Label.ProjectVariablesToSet=\u9879\u76EE\u53D8\u91CF
+ProjectDialog.Label.Company=\u516C\u53F8
+ProjectDialog.Label.ConfigurationFile=\u914D\u7F6E\u6587\u4EF6(\u76F8\u5BF9\u8DEF\u5F84)
+ProjectDialog.Label.DatasetCSVFolder=CSV \u6570\u636E\u96C6\u76EE\u5F55(HOP_DATASETS_FOLDER)
+ProjectDialog.Label.Department=\u90E8\u95E8
+ProjectDialog.Label.Description=\u63CF\u8FF0
 ProjectDialog.Label.EnforceExecutionInHome=\u4ECE\u9879\u76EE\u6839\u76EE\u5F55\u5F3A\u5236\u6267\u884C
-ProjectDialog.ProjectDefinitionError.Error.Dialog.Message=\u9879\u76EE\u914D\u7F6E\u6709\u9519, \u6CA1\u6709\u8BBE\u7F6E\u67D0\u4E9B\u53D8\u91CF
-ProjectDialog.ProjectList.Error.Dialog.Message=\u83B7\u53D6\u9879\u76EE\u5217\u8868\u65F6\u51FA\u9519
-ProjectDialog.ProjectConfigError.Error.Dialog.Message=\u5728\u8BE5\u9879\u76EE\u4E2D\u6709\u9519\u8BEF\u914D\u7F6E
+ProjectDialog.Label.HomeFolder=\u6839\u76EE\u5F55
 ProjectDialog.Label.MetadataBaseFolder=\u5143\u6570\u636E\u76EE\u5F55(HOP_METADATA_FOLDER)
-ProjectDialog.Label.Description=\u63CF\u8FF0
-ProjectDialog.Label.Department=\u90E8\u95E8
+ProjectDialog.Label.ParentProject=\u7EE7\u627F\u81EA\u7236\u8350
 ProjectDialog.Label.ProjectName=\u540D\u79F0
 ProjectDialog.Label.UnitTestBaseFolder=\u5355\u5143\u6D4B\u8BD5\u76EE\u5F55(HOP_UNIT_TESTS_FOLDER)
-ProjectDialog.DetailTable.Label.VariableValue=\u503C
-ProjectGuiPlugin.WrongConfigPath.Dialog.Header=\u65E0\u6548\u7684\u9879\u76EE\u6839\u76EE\u5F55
-ProjectDialog.Label.Company=\u516C\u53F8
-ProjectDialog.Group.Label.ProjectVariablesToSet=\u9879\u76EE\u53D8\u91CF
-ProjectDialog.CreateHome.Dialog.Header=\u521B\u5EFA\u9879\u76EE\u6839\u76EE\u5F55?
+ProjectDialog.ProjectConfigError.Error.Dialog.Header=\u9519\u8BEF
+ProjectDialog.ProjectConfigError.Error.Dialog.Message=\u5728\u8BE5\u9879\u76EE\u4E2D\u6709\u9519\u8BEF\u914D\u7F6E
+ProjectDialog.ProjectDefinitionError.Error.Dialog.Header=\u9519\u8BEF
+ProjectDialog.ProjectDefinitionError.Error.Dialog.Message=\u9879\u76EE\u914D\u7F6E\u6709\u9519, \u6CA1\u6709\u8BBE\u7F6E\u67D0\u4E9B\u53D8\u91CF
+ProjectDialog.ProjectList.Error.Dialog.Header=\u9519\u8BEF
+ProjectDialog.ProjectList.Error.Dialog.Message=\u83B7\u53D6\u9879\u76EE\u5217\u8868\u65F6\u51FA\u9519
 ProjectDialog.Shell.Name=\u9879\u76EE\u914D\u7F6E
-ProjectDialog.FileList.PrjFiles.Text=\u9879\u76EE\u914D\u7F6E\u6587\u4EF6(*.json)
+ProjectGuiPlugin.WrongConfigPath.Dialog.Header=\u65E0\u6548\u7684\u9879\u76EE\u6839\u76EE\u5F55
 ProjectGuiPlugin.WrongConfigPath.Dialog.Message=\u7981\u6B62\u9009\u62E9\u9879\u76EE\u76EE\u5F55\u4E4B\u5916\u7684 project-config.json \u505A\u4E3A\u5176\u914D\u7F6E
-ProjectDialog.ProjectList.Error.Dialog.Header=\u9519\u8BEF
-ProjectDialog.Label.DatasetCSVFolder=CSV \u6570\u636E\u96C6\u76EE\u5F55(HOP_DATASETS_FOLDER)
-ProjectDialog.FileList.AllFiles.Text=\u6240\u6709\u6587\u4EF6(*.*)
-ProjectDialog.DetailTable.Label.VariableDescription=\u63CF\u8FF0(\u53EF\u9009)
-ProjectDialog.Label.ConfigurationFile=\u914D\u7F6E\u6587\u4EF6(\u76F8\u5BF9\u8DEF\u5F84)
-ProjectDialog.ProjectDefinitionError.Error.Dialog.Header=\u9519\u8BEF
-ProjectDialog.Label.ParentProject=\u7EE7\u627F\u81EA\u7236\u8350
-ProjectDialog.CreateHome.Dialog.Message=\u9879\u76EE "{0}" \u7684\u6839\u76EE\u5F55\u4E0D\u5B58\u5728, \u60A8\u662F\u5426\u521B\u5EFA\u8BE5\u76EE\u5F55?
-ProjectDialog.Button.Browse=\u6D4F\u89C8...
+ProjectDialog.Shell.Name=\u9879\u76EE\u5C5E\u6027
diff --git a/plugins/misc/reflection/src/main/resources/org/apache/hop/reflection/pipeline/meta/messages/messages_zh_CN.properties b/plugins/misc/reflection/src/main/resources/org/apache/hop/reflection/pipeline/meta/messages/messages_zh_CN.properties
index 5c9e86e..da9934b 100644
--- a/plugins/misc/reflection/src/main/resources/org/apache/hop/reflection/pipeline/meta/messages/messages_zh_CN.properties
+++ b/plugins/misc/reflection/src/main/resources/org/apache/hop/reflection/pipeline/meta/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,14 +15,12 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.reflection.pipeline.meta' in locale 'zh_CN'
-#
 #
-PipelineLoggingEditor.Filename.Label=\u6267\u884C Pipeline \u4EE5\u6355\u83B7\u65E5\u5FD7\u8BB0\u5F55
-PipelineLoggingEditor.AtStart.Label=\u5728 Pipeline \u542F\u52A8\u65F6\u6267\u884C
-PipelineLoggingEditor.Periodic.Label=\u6267\u884C\u671F\u95F4\u5B9A\u671F\u6267\u884C
-PipelineLoggingEditor.AtEnd.Label=\u5728 Pipeline \u5B8C\u6210\u65F6\u6267\u884C
-PipelineLoggingEditor.Enabled.Label=\u542F\u7528
-PipelineLoggingEditor.Interval.Label=\u95F4\u9694\u79D2\u6570
-PipelineLoggingEditor.LoggingParentsOnly.Label=\u4EC5\u8BB0\u5F55\u7236 Pipeline
-PipelineLoggingEditor.Name.Label=\u540D\u79F0
+PipelineLoggingEditor.AtEnd.Label=\u5728 Pipeline \u5B8C\u6210\u65F6\u6267\u884C\:
+PipelineLoggingEditor.AtStart.Label=\u5728 Pipeline \u542F\u52A8\u65F6\u6267\u884C\:
+PipelineLoggingEditor.Enabled.Label=\u542F\u7528\:
+PipelineLoggingEditor.Filename.Label=\u6267\u884C Pipeline \u4EE5\u6355\u83B7\u65E5\u5FD7\u8BB0\u5F55\:
+PipelineLoggingEditor.Interval.Label=\u95F4\u9694\u79D2\u6570\:
+PipelineLoggingEditor.LoggingParentsOnly.Label=\u4EC5\u8BB0\u5F55\u7236 Pipeline\:
+PipelineLoggingEditor.Name.Label=\u540D\u79F0\:
+PipelineLoggingEditor.Periodic.Label=\u6267\u884C\u671F\u95F4\u5B9A\u671F\u6267\u884C\:
diff --git a/plugins/misc/reflection/src/main/resources/org/apache/hop/reflection/pipeline/transform/messages/messages_zh_CN.properties b/plugins/misc/reflection/src/main/resources/org/apache/hop/reflection/pipeline/transform/messages/messages_zh_CN.properties
index f605383..28d74ae 100644
--- a/plugins/misc/reflection/src/main/resources/org/apache/hop/reflection/pipeline/transform/messages/messages_zh_CN.properties
+++ b/plugins/misc/reflection/src/main/resources/org/apache/hop/reflection/pipeline/transform/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,12 +15,10 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.reflection.pipeline.transform' in locale 'zh_CN'
-#
 #
+PipelineLogging.Transform.Description=\u63D0\u4F9B\u6709\u5173 Pipeline \u53CA\u5176 Transforms \u7684\u8BE6\u7EC6\u65E5\u5FD7\u8BB0\u5F55\u4FE1\u606F
+PipelineLogging.Transform.Name=Pipeline \u8BB0\u5F55
+PipelineLoggingDialog.LoggingTransforms.Label=\u540C\u65F6\u8BB0\u5F55 Transform \u7684\u8BE6\u7EC6\u4FE1\u606F\:
 PipelineLoggingDialog.Shell.Title=Pipeling \u8BB0\u5F55
+PipelineLoggingDialog.TransformName.Label=Transform \u540D\u79F0\:
 PipelineLoggingMeta.keyword=pipeline,logging
-PipelineLoggingDialog.LoggingTransforms.Label=\u540C\u65F6\u8BB0\u5F55 Transform  \u7684\u8BE6\u7EC6\u4FE1\u606F
-PipelineLoggingDialog.TransformName.Label=Transform \u540D\u79F0
-PipelineLogging.Transform.Description=\u4E3A\u60A8\u63D0\u4F9B\u6709\u5173 Pipeline \u53CA\u5176\u4E2D\u7684 Transform \u6267\u884C\u7684\u8BE6\u7EC6\u65E5\u5FD7\u8BB0\u5F55\u4FE1\u606F.
-PipelineLogging.Transform.Name=Pipeline \u8BB0\u5F55
diff --git a/plugins/misc/reflection/src/main/resources/org/apache/hop/reflection/probe/meta/messages/messages_zh_CN.properties b/plugins/misc/reflection/src/main/resources/org/apache/hop/reflection/probe/meta/messages/messages_zh_CN.properties
index f16535b..659d5e8 100644
--- a/plugins/misc/reflection/src/main/resources/org/apache/hop/reflection/probe/meta/messages/messages_zh_CN.properties
+++ b/plugins/misc/reflection/src/main/resources/org/apache/hop/reflection/probe/meta/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,12 +15,10 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.reflection.probe.meta' in locale 'zh_CN'
-#
 #
-PipelineProbeEditor.Name.Label=\u540D\u79F0
-PipelineProbeEditor.SourcesTable.Column.Transform=\u6E90 Transform
-PipelineProbeEditor.SourcesTable.Column.Pipeline=\u6E90 Pipeline
-PipelineProbeEditor.Filename.Label=\u6267\u884C Pipeline\u4EE5\u6355\u83B7\u65E5\u5FD7\u8BB0\u5F55
+PipelineProbeEditor.Enabled.Label=\u542F\u7528\:
+PipelineProbeEditor.Filename.Label=\u6267\u884C Pipeline\u4EE5\u6355\u83B7\u65E5\u5FD7\u8BB0\u5F55\:
+PipelineProbeEditor.Name.Label=\u540D\u79F0\:
 PipelineProbeEditor.Sources.Label=\u6355\u83B7\u4E0B\u5217 Transform \u7684\u8F93\u51FA\:
-PipelineProbeEditor.Enabled.Label=\u542F\u7528
+PipelineProbeEditor.SourcesTable.Column.Pipeline=\u6E90 Pipeline
+PipelineProbeEditor.SourcesTable.Column.Transform=\u6E90 Transform
diff --git a/plugins/misc/reflection/src/main/resources/org/apache/hop/reflection/probe/transform/messages/messages_zh_CN.properties b/plugins/misc/reflection/src/main/resources/org/apache/hop/reflection/probe/transform/messages/messages_zh_CN.properties
index 992a65e..279d7b9 100644
--- a/plugins/misc/reflection/src/main/resources/org/apache/hop/reflection/probe/transform/messages/messages_zh_CN.properties
+++ b/plugins/misc/reflection/src/main/resources/org/apache/hop/reflection/probe/transform/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,11 +15,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.reflection.probe.transform' in locale 'zh_CN'
-#
 #
-PipelineDataProbeDialog.TransformName.Label=Transform \u540D\u79F0
 PipelineDataProbe.Transform.Description=\u4E3A\u60A8\u63D0\u4F9B\u6765\u81EA Pipeline Probe \u5143\u6570\u636E\u5BF9\u8C61\u4E2D\u6307\u5B9A\u7684\u4E00\u4E2A\u6216\u591A\u4E2A Transform \u7684\u6807\u51C6\u5316\u5F62\u5F0F\u7684\u6570\u636E.
 PipelineDataProbe.Transform.Name=Pipelone \u55C5\u63A2\u5668
-PipelineDataProbeMeta.keyword=pipeline,data,probe
 PipelineDataProbeDialog.Shell.Title=Pipeline \u55C5\u63A2
+PipelineDataProbeDialog.TransformName.Label=Transform \u540D\u79F0\:
+PipelineDataProbeMeta.keyword=pipeline,data,probe
diff --git a/plugins/misc/reflection/src/main/resources/org/apache/hop/reflection/reader/meta/messages/messages_zh_CN.properties b/plugins/misc/reflection/src/main/resources/org/apache/hop/reflection/reader/meta/messages/messages_zh_CN.properties
index 57c2a31..d9d98b3 100644
--- a/plugins/misc/reflection/src/main/resources/org/apache/hop/reflection/reader/meta/messages/messages_zh_CN.properties
+++ b/plugins/misc/reflection/src/main/resources/org/apache/hop/reflection/reader/meta/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,7 +15,5 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.reflection.reader.meta' in locale 'zh_CN'
-#
 #
 LogReaderEditor.label.name=\u540D\u79F0
diff --git a/plugins/misc/reflection/src/main/resources/org/apache/hop/reflection/workflow/meta/messages/messages_zh_CN.properties b/plugins/misc/reflection/src/main/resources/org/apache/hop/reflection/workflow/meta/messages/messages_zh_CN.properties
index 4be2946..6053c25 100644
--- a/plugins/misc/reflection/src/main/resources/org/apache/hop/reflection/workflow/meta/messages/messages_zh_CN.properties
+++ b/plugins/misc/reflection/src/main/resources/org/apache/hop/reflection/workflow/meta/messages/messages_zh_CN.properties
@@ -1,4 +1,5 @@
 #
+#
 # 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.
@@ -14,14 +15,12 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-#File generated by Hop Translator for package 'org.apache.hop.reflection.workflow.meta' in locale 'zh_CN'
-#
 #
-WorkflowLoggingEditor.Periodic.Label=\u8FD0\u884C\u671F\u95F4\u5B9A\u671F\u6267\u884C
-WorkflowLoggingEditor.AtEnd.Label=\u5728 Pipeline \u7ED3\u675F\u65F6\u6267\u884C
-WorkflowLoggingEditor.Name.Label=\u540D\u79F0
-WorkflowLoggingEditor.AtStart.Label=\u5728 Pipeline \u5F00\u59CB\u65F6\u6267\u884C
-WorkflowLoggingEditor.LoggingParentsOnly.Label=\u4EC5\u8BB0\u5F55\u7236 Workflow
-WorkflowLoggingEditor.Interval.Label=\u95F4\u9694\u79D2\u6570
-WorkflowLoggingEditor.Enabled.Label=\u542F\u7528
-WorkflowLoggingEditor.Filename.Label=\u6267\u884C Pipeline \u4EE5\u6355\u83B7\u65E5\u5FD7\u8BB0\u5F55
+WorkflowLoggingEditor.AtEnd.Label=\u5728 Pipeline \u7ED3\u675F\u65F6\u6267\u884C\:
... 22854 lines suppressed ...