diff --git a/lib/jsyntaxpane-0.9.5.jar b/lib/jsyntaxpane-0.9.5.jar
index b61ea7ccd..49cf5e60f 100644
Binary files a/lib/jsyntaxpane-0.9.5.jar and b/lib/jsyntaxpane-0.9.5.jar differ
diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/locales/docs/pcode/AS2_zh.properties b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/locales/docs/pcode/AS2_zh.properties
new file mode 100644
index 000000000..131ad9e3b
--- /dev/null
+++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/locales/docs/pcode/AS2_zh.properties
@@ -0,0 +1,5 @@
+action.stop.stackBefore =
+action.stop.stackAfter =
+action.stop.operands =
+action.togglequality.stackBefore =
+action.togglequality.stackAfter =
diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/locales/docs/pcode/AS3other_zh.properties b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/locales/docs/pcode/AS3other_zh.properties
index 3452bea01..c2b547be4 100644
--- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/locales/docs/pcode/AS3other_zh.properties
+++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/locales/docs/pcode/AS3other_zh.properties
@@ -12,10 +12,10 @@
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library.
-ui.list.heading = AVM2 p-code
-ui.list.pageTitle = AVM2 p-code
-ui.list.documentTitle = AVM2 p-code
-ui.list.pageDescription = p-code \u8bbe\u7f6e\u5217\u8868
+ui.list.heading = AVM2 P\u4ee3\u7801
+ui.list.pageTitle = AVM2 P\u4ee3\u7801
+ui.list.documentTitle = AVM2 P\u4ee3\u7801
+ui.list.pageDescription = P\u4ee3\u7801 \u8bbe\u7f6e\u5217\u8868
name.QName = \u9650\u5b9a\u540d
name.QNameA = \u5c5e\u6027\u9650\u5b9a\u540d
name.RTQName = \u8fd0\u884c\u65f6\u9650\u5b9a\u540d
diff --git a/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/defaultsyntaxkit/config_zh.properties b/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/defaultsyntaxkit/config_zh.properties
index 71ae7753f..e3f414882 100644
--- a/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/defaultsyntaxkit/config_zh.properties
+++ b/libsrc/jsyntaxpane/jsyntaxpane/src/main/resources/META-INF/services/jsyntaxpane/defaultsyntaxkit/config_zh.properties
@@ -10,12 +10,12 @@ Action.find-next.ToolTip = \u91cd\u590d\u4e0a\u6b21\u67e5\u627e
Action.goto-line.MenuText = \u8df3\u8f6c\u5230\u884c\u53f7
Action.goto-line.ToolTip = \u8df3\u8f6c\u5230\u884c\u53f7
Action.indent.MenuText = \u7f29\u8fdb
-Action.unindent.MenuText = \u53cd\u7f29\u8fdb
+Action.unindent.MenuText = \u53d6\u6d88\u7f29\u8fdb
Action.undo.MenuText = \u64a4\u9500
Action.redo.MenuText = \u91cd\u505a
Action.delete-lines.MenuText = \u5220\u9664\u884c
Action.dup-lines-up.MenuText = \u590d\u5236\u4e0a\u4e00\u884c
-Action.dup-lines-down.MenuText = \u590d\u5236\u4e0a\u4e00\u884c
+Action.dup-lines-down.MenuText = \u590d\u5236\u4e0b\u4e00\u884c
Action.toggle-lines.MenuText = \u663e\u793a\u884c\u53f7
Action.show-abbs.MenuText = \u663e\u793a\u7f29\u5199
Action.show-abbs.ToolTip = \u663e\u793a\u7f29\u5199
@@ -23,7 +23,7 @@ Action.complete-word.MenuText = \u81ea\u52a8\u5b8c\u6210
Action.jump-to-pair.MenuText = \u8df3\u8f6c\u5230\u914d\u5bf9
Action.toggle-comments.MenuText = \u6ce8\u91ca\u4ee3\u7801
-# !!!! FFDec translators - \u8bf7\u52ff\u4fee\u6539\u5206\u5272\u7ebf\u4e0b\u65b9\u7684\u4efb\u4f55\u5185\u5bb9 !!!
+# !!!! FFDec translators - please do not edit anything below this line !!!
#==========================================================================
Components = jsyntaxpane.components.PairsMarker, \
diff --git a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_zh.properties b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_zh.properties
index 90143e84c..44b0f5a0b 100644
--- a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_zh.properties
+++ b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_zh.properties
@@ -30,7 +30,7 @@ config.group.name.limit = \u9650\u5236
config.group.description.limit = \u6df7\u6dc6\u4ee3\u7801\u7b49\u7684\u53cd\u7f16\u8bd1\u9650\u5236\u76f8\u5173
config.group.name.ui = \u754c\u9762
config.group.description.ui = \u7528\u6237\u754c\u9762\u8bbe\u7f6e
-config.group.name.debug = Debug
+config.group.name.debug = \u8c03\u8bd5
config.group.description.debug = \u8c03\u8bd5\u76f8\u5173\u7684\u8bbe\u7f6e
config.group.name.display = \u663e\u793a
config.group.description.display = Flash\u7b49\u5bf9\u8c61\u663e\u793a\u76f8\u5173
@@ -156,8 +156,8 @@ config.name.check.updates.delay = \u66f4\u65b0\u68c0\u67e5\u5ef6\u8fdf
config.description.check.updates.delay = \u8f6f\u4ef6\u542f\u52a8\u4e0e\u66f4\u65b0\u81ea\u52a8\u68c0\u67e5\u4e4b\u95f4\u7684\u6700\u77ed\u65f6\u95f4
config.name.check.updates.stable = \u7a33\u5b9a\u7248\u672c
config.description.check.updates.stable = \u68c0\u67e5\u7a33\u5b9a\u7248\u672c\u66f4\u65b0
-config.name.check.updates.nightly = \u6d4b\u8bd5\u7248\u672c
-config.description.check.updates.nightly = \u68c0\u67e5\u6d4b\u8bd5\u7248\u672c\u66f4\u65b0
+config.name.check.updates.nightly = \u6bcf\u591c\u6784\u5efa\u7248\u672c
+config.description.check.updates.nightly = \u68c0\u67e5\u6bcf\u591c\u6784\u5efa\u7248\u672c\u66f4\u65b0
config.name.check.updates.enabled = \u542f\u7528\u66f4\u65b0\u68c0\u67e5
config.description.check.updates.enabled = \u5728\u5e94\u7528\u7a0b\u5e8f\u542f\u52a8\u65f6\u81ea\u52a8\u68c0\u67e5\u66f4\u65b0
config.name.export.formats = (\u5185\u90e8)\u5bfc\u51fa\u683c\u5f0f
@@ -250,7 +250,7 @@ config.name.overwriteExistingFiles = \u8986\u76d6\u73b0\u6709\u6587\u4ef6
config.description.overwriteExistingFiles = \u5728\u5bfc\u51fa\u8fc7\u7a0b\u4e2d\u8986\u76d6\u73b0\u6709\u6587\u4ef6\u3002 \u5f53\u524d\u4ec5\u9002\u7528\u4e8eAS2/3\u811a\u672c
config.name.smartNumberFormatting = \u4f7f\u7528\u667a\u80fd\u6570\u5b57\u683c\u5f0f
config.description.smartNumberFormatting = \u683c\u5f0f\u5316\u7279\u6b8a\u6570\u5b57(\u4f8b\u5982\u989c\u8272\u548c\u65f6\u95f4)
-config.name.enableScriptInitializerDisplay = (REMOVED) \u663e\u793a\u811a\u672c\u521d\u59cb\u5316\u5668
+config.name.enableScriptInitializerDisplay = (\u5df2\u79fb\u9664) \u663e\u793a\u811a\u672c\u521d\u59cb\u5316\u5668
config.description.enableScriptInitializerDisplay = \u542f\u7528\u811a\u672c\u521d\u59cb\u5316\u7a0b\u5e8f\u7684\u663e\u793a\u548c\u7f16\u8f91\u3002 \u6b64\u8bbe\u7f6e\u53ef\u4ee5\u5411\u6bcf\u4e2a\u7c7b\u6587\u4ef6\u6dfb\u52a0\u4e00\u4e2a\u6362\u884c\u7b26\u4ee5\u7a81\u51fa\u663e\u793a\u3002
config.name.autoOpenLoadedSWFs = \u5728\u8fd0\u884c\u671f\u95f4\u6253\u5f00\u52a0\u8f7d\u7684SWF(\u5916\u90e8\u67e5\u770b\u5668=\u4ec5WIN)
config.description.autoOpenLoadedSWFs = \u5728FFDec\u5916\u90e8\u64ad\u653e\u5668\u4e2d\u64ad\u653e\u65f6\uff0c\u901a\u8fc7\u8fd0\u884cSWF\u81ea\u52a8\u6253\u5f00\u7531AS3\u7c7b\u52a0\u8f7d\u7a0b\u5e8f\u52a0\u8f7d\u7684\u6240\u6709SWF\u3002 \u6b64\u529f\u80fd\u4ec5Windows\u3002
@@ -404,7 +404,7 @@ config.name.allowPlacingDefinesIntoSprites = \u5c06define\u6807\u7b7e\u653e\u516
config.description.allowPlacingDefinesIntoSprites = \u5c06(moving/copying/dragging into)define\u6807\u7b7e\u653e\u5165DefineSprite
config.name.allowDragAndDropInTagListTree = \u6807\u7b7e\u5217\u8868\u62d6\u653e
config.description.allowDragAndDropInTagListTree = \u5141\u8bb8\u5728\u6807\u7b7e\u5217\u8868\u901a\u8fc7\u62d6\u653e\u79fb\u52a8/\u590d\u5236\u6807\u7b7e
-config.name.allowMiterClipLinestyle = (REMOVED) \u659c\u5207\u5939\u7ebf\u6837\u5f0f(\u6162)
+config.name.allowMiterClipLinestyle = (\u5df2\u79fb\u9664)\u659c\u5207\u5939\u7ebf\u6837\u5f0f(\u6162)
config.description.allowMiterClipLinestyle = \u5141\u8bb8\u4f7f\u7528\u652f\u6301\u659c\u5207\u5939\u7ebf\u6837\u5f0f\u7684\u81ea\u5b9a\u4e49\u6e32\u67d3\u5668\uff0c\u4f46\u901f\u5ea6\u5f88\u6162
advancedSettings.search = \u641c\u7d22:
# after 16.3.1
@@ -437,6 +437,7 @@ config.description.autoPlaySounds = \u9009\u4e2d\u8282\u70b9\u65f6\u81ea\u52a8\u
config.name.deobfuscateAs12RemoveInvalidNamesAssignments = AS1/2\u53cd\u6df7\u6dc6: \u5220\u9664\u5e26\u6df7\u6dc6\u540d\u79f0\u7684\u53d8\u91cf\u58f0\u660e
config.description.deobfuscateAs12RemoveInvalidNamesAssignments = AS1/2\u53cd\u6df7\u6dc6\u65f6, \u5220\u9664\u5177\u6709\u975e\u6807\u51c6\u540d\u79f0\u7684\u53d8\u91cf\u58f0\u660e. \u8b66\u544a: \u8fd9\u53ef\u80fd\u4f1a\u635f\u574f\u4f9d\u8d56\u6df7\u6dc6\u540d\u79f0\u7684SWF
config.name.gui.splitPanePlace.dividerLocationPercent = (\u5185\u90e8)\u5206\u79bb\u5668\u4f4d\u7f6e
+config.description.gui.splitPanePlace.dividerLocationPercent =
config.name.gui.splitPaneTransform1.dividerLocationPercent = (\u5185\u90e8)\u5206\u79bb\u5668\u8f6c\u63621\u4f4d\u7f6e
config.name.gui.splitPaneTransform2.dividerLocationPercent = (\u5185\u90e8)\u5206\u79bb\u5668\u8f6c\u63622\u4f4d\u7f6e
config.name.gui.transform.lastExpandedCards = (\u5185\u90e8)\u4e0a\u6b21\u5c55\u5f00\u7684\u8f6c\u6362\u5361
@@ -467,3 +468,25 @@ config.name.warning.initializers.class = \u5173\u4e8e\u811a\u672c\u521d\u59cb\u5
config.description.warning.initializers.class = \u5728AS3\u7c7b\u7279\u5f81\u7f16\u8f91\u4e2d\u663e\u793a\u6709\u5173\u521d\u59cb\u5316\u7a0b\u5e8f\u7684\u8b66\u544a
#after 18.4.1
config.name.maxCachedNum = \u6bcf\u4e2a\u7f13\u5b58\u7684\u6700\u5927\u7f13\u5b58\u9879\u6570
+config.description.maxCachedNum = \u4ece\u7f13\u5b58\u4e2d\u5220\u9664\u65e7\u9879\u76ee\u4e4b\u524d\u7684\u6700\u5927\u7f13\u5b58\u9879\u76ee\u6570.\u66f4\u4f4e\u7684\u6570\u503c = \u66f4\u5c11\u7684\u5185\u5b58, \u5219\u5e94\u7528\u7a0b\u5e8f\u8d8a\u6162. \u66f4\u9ad8\u7684\u6570\u503c = \u66f4\u591a\u7684\u5185\u5b58, \u5219\u5e94\u7528\u7a0b\u5e8f\u8d8a\u5feb.\u5c06\u5176\u8bbe\u7f6e\u4e3a0\u5373\u53ef\u5b9e\u73b0\u65e0\u9650\u5236\u7f13\u5b58.
+config.name.warning.cannotencrypt = \u65e0\u6cd5\u4fdd\u5b58\u52a0\u5bc6\u65f6\u53d1\u51fa\u8b66\u544a
+config.description.warning.cannotencrypt = \u65e0\u6cd5\u4fdd\u5b58\u4f7f\u7528HARMAN Air\u52a0\u5bc6\u6280\u672f\u52a0\u5bc6\u7684SWF\u6587\u4ef6\u65f6\u663e\u793a\u8b66\u544a
+#after 18.5.0
+config.name.lastExportEnableEmbed = \u5bfc\u51fa\u5d4c\u5165\u8d44\u6e90\u7684\u6700\u540e\u8bbe\u7f6e
+config.description.lastExportEnableEmbed = \u901a\u8fc7[Embed]\u5143\u6570\u636e\u6807\u7b7e\u5bfc\u51fa\u5d4c\u5165\u8d44\u6e90\u7684\u6700\u540e\u8bbe\u7f6e
+config.name.lastFlaExportVersion = \u6700\u65b0\u7684FLA\u5bfc\u51fa\u7248\u672c
+config.description.lastFlaExportVersion = \u4e0a\u6b21\u5bfc\u51fa\u7684FLA\u7248\u672c
+config.name.lastFlaExportCompressed = \u6700\u65b0\u7684FLA\u538b\u7f29\u65b9\u5f0f
+config.description.lastFlaExportCompressed = \u4e0a\u6b21\u5bfc\u51fa\u7684FLA\u538b\u7f29\u65b9\u5f0f
+#after 19.0.0
+config.name.showImportSpriteInfo = \u5bfc\u5165\u7cbe\u7075(sprite)\u524d\u663e\u793a\u4fe1\u606f
+config.name.lastMainWindowScreenIndex = \u6700\u540e\u4e00\u4e2a\u4e3b\u7a97\u53e3\u7684\u5c4f\u5e55\u7d22\u5f15
+config.description.lastMainWindowScreenIndex = \u6700\u540e\u4e00\u4e2a\u4e3b\u7a97\u53e3\u7684\u5c4f\u5e55\u7d22\u5f15
+config.name.lastMainWindowScreenX = \u6700\u540e\u4e00\u4e2a\u4e3b\u7a97\u53e3\u7684\u5c4f\u5e55X
+config.description.lastMainWindowScreenX = \u6700\u540e\u4e00\u4e2a\u4e3b\u7a97\u53e3\u7684\u5c4f\u5e55X\u5750\u6807
+config.name.lastMainWindowScreenY = \u6700\u540e\u4e00\u4e2a\u4e3b\u7a97\u53e3\u7684\u5c4f\u5e55Y
+config.description.lastMainWindowScreenY = \u6700\u540e\u4e00\u4e2a\u4e3b\u7a97\u53e3\u7684\u5c4f\u5e55Y\u5750\u6807
+config.name.lastMainWindowScreenWidth = \u6700\u540e\u4e00\u4e2a\u4e3b\u7a97\u53e3\u7684\u5c4f\u5e55\u5bbd\u5ea6
+config.description.lastMainWindowScreenWidth = \u6700\u540e\u4e00\u4e2a\u4e3b\u7a97\u53e3\u7684\u5c4f\u5e55\u5bbd\u5ea6
+config.name.lastMainWindowScreenHeight = \u6700\u540e\u4e00\u4e2a\u4e3b\u7a97\u53e3\u7684\u5c4f\u5e55\u5bbd\u5ea6
+config.description.lastMainWindowScreenHeight = \u6700\u540e\u4e00\u4e2a\u4e3b\u7a97\u53e3\u7684\u5c4f\u5e55\u5bbd\u5ea6
diff --git a/src/com/jpexs/decompiler/flash/gui/locales/AsLinkageDialog_zh.properties b/src/com/jpexs/decompiler/flash/gui/locales/AsLinkageDialog_zh.properties
index f19af4a99..1c463e6e3 100644
--- a/src/com/jpexs/decompiler/flash/gui/locales/AsLinkageDialog_zh.properties
+++ b/src/com/jpexs/decompiler/flash/gui/locales/AsLinkageDialog_zh.properties
@@ -16,3 +16,11 @@ dialog.title = AS\u94fe\u63a5
button.ok = \u786e\u5b9a
button.proceed = \u7ee7\u7eed
button.cancel = \u53d6\u6d88
+identifier = ActionScript\u6807\u8bc6\u7b26
+classname = ActionScript2\u7c7b(\u5b8c\u5168\u9650\u5b9a\u7684)
+class.parentname = \u7236\u7c7b\u540d\u79f0(\u5b8c\u5168\u9650\u5b9a\u7684)
+error.alreadyExistsClass = \u9519\u8bef:\u8be5\u7c7b\u5df2\u5b58\u5728
+error.cannotRemoveIdentifierClassExists = \u9519\u8bef:\u65e0\u6cd5\u79fb\u9664\u6807\u8bc6\u7b26,\u7c7b\u5df2\u5b58\u5728
+linkage.notfound.exportAssets.where = \u94fe\u63a5\u6570\u636e\u7684\u5b58\u50a8\u4f4d\u7f6e:
+linkage.notfound.exportAssets.where.existing = \u73b0\u6709\u7684\u5bfc\u51fa\u7d20\u6750(ExportAssets)\u6807\u7b7e
+linkage.notfound.exportAssets.where.new = \u65b0\u7684\u5bfc\u51fa\u7d20\u6750(ExportAssets)\u6807\u7b7e
diff --git a/src/com/jpexs/decompiler/flash/gui/locales/CollectDepthAsSpritesDialog_zh.properties b/src/com/jpexs/decompiler/flash/gui/locales/CollectDepthAsSpritesDialog_zh.properties
index bb3707541..cddb0c7e1 100644
--- a/src/com/jpexs/decompiler/flash/gui/locales/CollectDepthAsSpritesDialog_zh.properties
+++ b/src/com/jpexs/decompiler/flash/gui/locales/CollectDepthAsSpritesDialog_zh.properties
@@ -13,5 +13,9 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
dialog.title = \u6536\u96c6\u9009\u9879
+collect.depths = \u6536\u96c6\u6df1\u5ea6:
+collect.replace = \u4f7f\u7528sprite\u66ff\u6362\u539f\u59cb\u6807\u7b7e
+collect.offset = \u5c06\u5de6\u4e0a\u89d2\u504f\u79fb\u81f3(0,0)
+collect.matrix = \u4f7f\u7528\u524d\u51e0\u5e27\u77e9\u9635\u4f5c\u4e3a\u7b2c\u4e00\u4e2a\u653e\u7f6e\u5bf9\u8c61(PlaceObject)\u77e9\u9635
button.ok = \u786e\u5b9a
button.cancel = \u53d6\u6d88
diff --git a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_zh.properties b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_zh.properties
index 63f14a2f2..6ac2fe5f4 100644
--- a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_zh.properties
+++ b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_zh.properties
@@ -16,7 +16,7 @@ menu.file = \u6587\u4ef6
menu.file.open = \u6253\u5f00...
menu.file.save = \u4fdd\u5b58
menu.file.saveas = \u53e6\u5b58\u4e3a...
-menu.file.export.fla = \u5bfc\u51fa\u5230FLA
+menu.file.export.fla = \u5bfc\u51fa\u4e3aFLA\u6587\u4ef6
menu.file.export.all = \u5bfc\u51fa\u6240\u6709\u63a7\u4ef6
menu.file.export.selection = \u5bfc\u51fa\u5df2\u9009
menu.file.exit = \u9000\u51fa
@@ -27,7 +27,7 @@ menu.tools.deobfuscation = \u53cd\u6df7\u6dc6
menu.tools.deobfuscation.pcode = P-code\u53cd\u6df7\u6dc6...
menu.tools.deobfuscation.globalrename = \u5168\u5c40\u91cd\u547d\u540d\u6807\u8bc6\u7b26
menu.tools.deobfuscation.renameinvalid = \u91cd\u547d\u540d\u65e0\u6548\u6807\u8bc6\u7b26
-menu.tools.gotoDocumentClass = \u8df3\u8f6c\u5230\u4e3b\u7c7b
+menu.tools.gotoDocumentClass = \u8df3\u8f6c\u5230\u4e3b(\u6587\u6863)\u7c7b
menu.settings = \u8bbe\u7f6e
menu.settings.autodeobfuscation = \u81ea\u52a8\u53cd\u6df7\u6dc6
menu.settings.internalflashviewer = \u4f7f\u7528\u5185\u90e8\u64ad\u653e\u5668
@@ -382,7 +382,7 @@ header.compression.none = \u65e0\u538b\u7f29
header.version = SWF\u7248\u672c:
header.gfx = GFX:
header.filesize = \u6587\u4ef6\u5927\u5c0f
-header.framerate = \u5e27\u901f:
+header.framerate = \u5e27\u7387:
header.framecount = \u5e27\u6570:
header.displayrect = \u663e\u793a\u533a\u57df:
header.displayrect.value.twips = %xmin%,%ymin% => %xmax%,%ymax% \u7f07
@@ -806,7 +806,7 @@ status.editing = \u60a8\u5df2\u8fdb\u5165\u7f16\u8f91\u6a21\u5f0f. \u70b9\u51fb\
button.deobfuscate = \u53cd\u6df7\u6dc6
button.deobfuscate_options = \u53cd\u6df7\u6dc6\u9009\u9879
deobfuscate_options.simplify_expressions = \u7b80\u5316\u8868\u8fbe\u5f0f
-deobfuscate_options.remove_obfuscated_declarations = \u5220\u9664\u5355\u4e2a\u5206\u914d\u7684\u6df7\u6dc6\u58f0\u660e
+deobfuscate_options.remove_obfuscated_declarations = \u79fb\u9664\u5355\u4e2a\u5206\u914d\u7684\u6df7\u6dc6\u58f0\u660e
message.confirm.autoRenameIdentifiers = \u81ea\u52a8\u91cd\u547d\u540d\u6807\u8bc6\u7b26\u529f\u80fd\u5c06\u5728\u6253\u5f00SWF\u6587\u4ef6\u65f6\u4f5c\u4e3aAS\u4ee3\u7801\u6267\u884c\r\n\u5e76\u5c06\u6240\u6709\u975e\u6807\u51c6\u540d\u79f0\u91cd\u547d\u540d\u4e3a\u6709\u6548\u6807\u8bc6\u7b26.\r\n\u6b64\u529f\u80fd\u6709\u53ef\u80fd\u5728\u4fdd\u5b58\u65f6\u5bfc\u81f4SWF\u6587\u4ef6\u635f\u574f - \u98ce\u9669\u81ea\u8d1f.
error.deobfuscation = \u53cd\u6df7\u6dc6\u56e0\u90e8\u5206\u65b9\u6cd5\u5931\u8d25.
message.info.importShapes2 = \u5bfc\u5165\u5f62\u72b6\u65f6,\u60a8\u9700\u8981\u9009\u62e9\u4e00\u4e2a\u6587\u4ef6\u5939.\r\n \
@@ -862,13 +862,46 @@ abc.linkedSwfs.one = +1 swf
abc.linkedSwfs.more = +%num% swfs
#class trait P-code editor
error.class = \u7c7b\u9519\u8bef
+warning.initializers.class = "extends"\u5bf9\u8c61\u4e5f\u7528\u4e8e\u811a\u672c\u521d\u59cb\u5316\u8303\u56f4\u5806\u6808\n\u5728\u7c7b\u7279\u5f81\u4e2d\u7f16\u8f91\u8fd9\u91cc\u7684\u503c\u662f\u4e0d\u591f\u7684
+contextmenu.addScript.doaction = \u6dfb\u52a0\u5e27\u811a\u672c - DoAction
+contextmenu.addScript.buttoncondaction = \u6dfb\u52a0\u6309\u94ae\u65f6\u95f4\u811a\u672c - BUTTONCONDACTION
+contextmenu.addScript.clipactionrecord = \u6dfb\u52a0\u5b9e\u4f8b\u4e8b\u4ef6\u811a\u672c - CLIPACTIONRECORD
+contextmenu.addScript.doinitaction = \u6dfb\u52a0\u7cbe\u7075(sprite)\u521d\u59cb\u811a\u672c - DoInitAction
+#after 18.4.1
+warning.cannotencrypt = \u8b66\u544a:\u6587\u4ef6%file%\u4f7f\u7528HARMAN Air\u52a0\u5bc6\u6280\u672f\u8fdb\u884c\u52a0\u5bc6\r\n\u73b0\u5df2\u6210\u529f\u89e3\u5bc6\u5e76\u52a0\u8f7d,\u4f46\u5982\u679c\u60a8\u60f3\u7a0d\u540e\u4fdd\u5b58\u4fee\u6539\u540e\u7684\u6587\u4ef6,\r\n\u52a0\u5bc6\u5c06\u88ab\u5378\u9664(=\u672a\u52a0\u5bc6)
+#after 18.5.0
+warning.edit.headerframecount = \u8b66\u544a:\u7f16\u8f91\u6587\u4ef6\u5934(header)\u4e2d\u7684\u5e27\u6570\u4e0d\u4f1a\u66f4\u65b0SWF\u65f6\u95f4\u8f74\u4e0a\u663e\u793a\u5e27(ShowFrame)\u6807\u7b7e\u7684\u5fc5\u8981\u6570\u91cf\r\n\u8981\u6dfb\u52a0\u65b0\u7684\u5e27\uff0c\u60a8\u6700\u597d\u4f7f\u7528SWF\u4e0a\u7684\u53f3\u952e\u5355\u51fb\u4e0a\u4e0b\u6587\u83dc\u5355 -> \u6dfb\u52a0\u5e27\r\n\
+ \u82e5\u5982\u6b64\u505a,\u8fd9\u5c06\u76f8\u5e94\u7684\u66f4\u65b0\u6587\u4ef6\u5934(header)\u4e2d\u7684\u5e27\u6570
+menu.tools.abcexplorer = ABC\u6d4f\u89c8\u5668
+contextmenu.abcexplorer = \u6d4f\u89c8ABC\u5b57\u8282\u7801
+import.sprite.result = \u5df2\u5bfc\u5165%count%\u4e2a\u7cbe\u7075
+menu.file.import.sprite = \u4eceGIF\u5bfc\u5165\u7cbe\u7075
#after 19.1.2
-tagInfo.fileName = \u6587\u4ef6\u540d
+tagInfo.fileName = \u6587\u4ef6\u540d\u79f0
+tagInfo.exportName = \u5bfc\u51fa\u540d\u79f0
+tagInfo.bitmapFormat = \u4f4d\u56fe\u683c\u5f0f
+tagInfo.imageId = \u56fe\u7247Id
tagInfo.x1 = x1
tagInfo.y1 = y1
tagInfo.x2 = x2
tagInfo.y2 = y2
+tagInfo.bitmapsFormat = \u4f4d\u56fe\u683c\u5f0f
+tagInfo.version = \u7248\u672c
+tagInfo.flags = \u6807\u5fd7
+tagInfo.prefix = \u524d\u7f00
+tagInfo.swfName = SWF\u540d\u79f0
+tagInfo.codeOffsets = \u4ee3\u7801\u504f\u79fb\u91cf
+tagInfo.textureId = \u7eb9\u7406Id
+tag.shape.create = \u4ece\u6587\u4ef6\u521b\u5efa\u5f62\u72b6(shape)...
+tag.image.create = \u4ece\u6587\u4ef6\u521b\u5efa\u56fe\u50cf(image)...
+action.edit.flex = (Flex \u7f16\u8bd1\u5668)
+header.encrypted = Harman\u52a0\u5bc6
+header.warning.unsupportedGfxEncryption = GFX\u4e0d\u652f\u6301Harman\u52a0\u5bc6
+contextmenu.applyUnpacker = \u5e94\u7528\u89e3\u5305\u5668
+button.breakpointList = \u663e\u793a\u65ad\u70b9\u5217\u8868
node.scenes = \u573a\u666f
+contextmenu.setAsLinkage = \u8bbe\u7f6eAS\u94fe\u63a5
+contextmenu.exportFlashDevelop = \u5bfc\u51fa\u4e3aFlashDevelop\u5de5\u7a0b
filter.as3proj = FlashDevelop AS3\u5de5\u7a0b (*.as3proj)
work.exporting.flashDevelop = \u6b63\u5728\u5bfc\u51fa\u4e3aFlashDevelop\u5de5\u7a0b
menu.file.export.flashDevelop = \u5bfc\u51fa\u4e3aFlashDevelop\u5de5\u7a0b
@@ -876,9 +909,22 @@ contextmenu.exportIdea = \u5bfc\u51fa\u4e3aIntelliJ IDEA\u5de5\u7a0b
filter.iml = IntelliJ IDEA\u5de5\u7a0b (*.iml)
work.exporting.idea = \u6b63\u5728\u5bfc\u51fa\u4e3aIntelliJ IDEA\u5de5\u7a0b
menu.file.export.idea = \u5bfc\u51fa\u4e3aIntelliJ IDEA\u5de5\u7a0b
-contextmenu.exportFla = \u5bfc\u51fa\u4e3a FLA \u6587\u4ef6
+contextmenu.exportFla = \u5bfc\u51fa\u4e3aFLA\u6587\u4ef6
export.project.select.directory = \u9009\u62e9\u65b0\u5de5\u7a0b\u4f4d\u7f6e
menu.file.saveAll = \u4fdd\u5b58\u5168\u90e8
+filter.exe.wrapper = \u5c01\u88c5\u5668\u53ef\u6267\u884c\u6587\u4ef6(*.exe)
+filter.exe.projectorWin = Windows\u653e\u6620\u6587\u4ef6(*.exe)
+filter.exe.projectorMac = Mac Os\u653e\u6620\u6587\u4ef6(*.dmg)
+filter.exe.projectorLinux = Linux\u653e\u6620\u6587\u4ef6
callStack.header.swf = SWF
#after 21.0.0
button.addfunction = \u6dfb\u52a0\u65b0\u51fd\u6570
+addfunction.result.title = \u65b0\u65b9\u6cd5\u4fe1\u606f
+#after 21.0.2
+filter.air.as3proj = FlashDevelop AS3\u5de5\u7a0b (*.as3proj)
+packer.key.title = \u5bc6\u94a5: %packer%
+packer.key = \u8f93\u5165\u6253\u5305\u5de5\u5177"%packer%"\u7684\u5bc6\u94a5:
+#after 21.0.5
+contextmenu.exportVsCode = \u5bfc\u51fa\u4e3aVS Code\u5de5\u7a0b
+work.exporting.vsCode = \u6b63\u5728\u5bfc\u51fa\u4e3aVS Code\u5de5\u7a0b
+menu.file.export.vsCode = \u5bfc\u51fa\u4e3aVS Code\u5de5\u7a0b
diff --git a/src/com/jpexs/decompiler/flash/gui/locales/abc/ABCExplorerDialog_zh.properties b/src/com/jpexs/decompiler/flash/gui/locales/abc/ABCExplorerDialog_zh.properties
index 3ff003449..aac01e8ee 100644
--- a/src/com/jpexs/decompiler/flash/gui/locales/abc/ABCExplorerDialog_zh.properties
+++ b/src/com/jpexs/decompiler/flash/gui/locales/abc/ABCExplorerDialog_zh.properties
@@ -12,11 +12,25 @@
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see .
-title = ABC \u5bfc\u51fa\u5de5\u5177
+title = ABC\u6d4f\u89c8\u5668
abc = ABC:
+abc.info = \u5f53\u524d%index%, \u603b\u8ba1%count%, v%major%.%minor%, %size%, \u5e27%frame%
+abc.info.standalone = v%major%.%minor%, %size%
show.script = \u5728\u4e3b\u7a97\u53e3\u4e2d\u663e\u793a\u811a\u672c
show.method = \u5728\u4e3b\u7a97\u53e3\u4e2d\u663e\u793a\u65b9\u6cd5
show.trait = \u5728\u4e3b\u7a97\u53e3\u4e2d\u663e\u793a\u7279\u5f81
show.class = \u5728\u4e3b\u7a97\u53e3\u4e2d\u663e\u793a\u7c7b
+copy.row = \u5c06\u884c\u590d\u5236\u5230\u526a\u8d34\u677f
+copy.typeid = \u5c06typeId\u590d\u5236\u5230\u526a\u8d34\u677f
+copy.title = \u5c06\u6807\u9898\u590d\u5236\u5230\u526a\u8d34\u677f
+copy.value = \u5c06\u503c\u590d\u5236\u5230\u526a\u8d34\u677f
+copy.rawstring = \u5c06\u539f\u59cb\u5b57\u7b26\u4e32\u503c\u590d\u5236\u5230\u526a\u8d34\u677f
+#after 20.1.0
+usages = %item%\u7684\u7528\u6cd5
+copy.path = \u5c06\u8def\u5f84(path)\u590d\u5236\u5230\u526a\u8d34\u677f
+copy.paths = \u5c06\u9009\u5b9a\u7684\u8def\u5f84\u590d\u5236\u5230\u526a\u8d34\u677f
+copy.paths.all = \u5c06\u6240\u6709\u8def\u5f84\u590d\u5236\u5230\u526a\u8d34\u677f
hilight.usage = \u7a81\u51fa\u663e\u793a\u6240\u9009\u5b9a\u7684\u8def\u5f84
goto.path = \u8f6c\u5230\u8def\u5f84
+goto.path.label = \u8f93\u5165\u8def\u5f84\u4ee5\u5bfc\u822a\u81f3
+button.clean = \u6e05\u7406 - \u79fb\u9664\u672a\u4f7f\u7528\u7684\u9879\u76ee
diff --git a/src/com/jpexs/decompiler/flash/gui/locales/abc/As3ClassLinkageDialog_zh.properties b/src/com/jpexs/decompiler/flash/gui/locales/abc/As3ClassLinkageDialog_zh.properties
index 47e808cb8..476d2022c 100644
--- a/src/com/jpexs/decompiler/flash/gui/locales/abc/As3ClassLinkageDialog_zh.properties
+++ b/src/com/jpexs/decompiler/flash/gui/locales/abc/As3ClassLinkageDialog_zh.properties
@@ -17,6 +17,16 @@ button.ok = \u786e\u5b9a
button.proceed = \u7ee7\u7eed
button.cancel = \u53d6\u6d88
classname = \u5b8c\u5168\u9650\u5b9a\u7c7b\u540d\u79f0:
+error.multipleClasses = \u9519\u8bef:\u8fd9\u4e2a\u5b57\u7b26\u5df2\u88ab\u5206\u914d\u7ed9\u4e86\u591a\u4e2a\u7c7b,\u65e0\u6cd5\u901a\u8fc7\u6b64\u5de5\u5177\u91cd\u65b0\u547d\u540d.\u5c3d\u7ba1\u5982\u6b64,\u60a8\u4ecd\u53ef\u4ee5\u81ea\u884c\u624b\u52a8\u4fee\u6539\u7b26\u53f7\u7c7b(SymbolClass)\u6807\u7b7e
+error.alreadyAssignedClass = \u9519\u8bef:\u8fd9\u4e2a\u7c7b\u5df2\u7ecf\u88ab\u5206\u914d\u7ed9\u4e86\u4e0d\u540c\u7684\u5b57\u7b26
+error.needToModify = \u5c06\u7c7b\u540d\u4fee\u6539\u4e3a\u65b0\u540d\u79f0
+class.found = \u5df2\u627e\u5230\u5177\u6709\u8be5\u540d\u79f0\u7684\u73b0\u6709\u7c7b
+class.notfound = \u5177\u6709\u8be5\u540d\u79f0\u7684\u7c7b\u5c1a\u4e0d\u5b58\u5728
+symbolClassAppropriate = \u5c06\u4fee\u6539\u6216\u521b\u5efa\u6700\u5408\u9002\u5e27/\u6846\u67b6(frame)\u7684\u7b26\u53f7\u7c7b(SymbolClass)\u6807\u7b7e
+class.notfound.createAsk = \u60a8\u60f3\u8981\u521b\u5efa\u8fd9\u4e2a\u7c7b\u5417
+class.notfound.create = \u662f\u7684,\u521b\u5efa\u7c7b
+class.notfound.create.parentType = \u7236\u7c7b\u540d\u79f0(\u5b8c\u5168\u9650\u5b9a\u7684)
+class.notfound.create.abc.where = \u5728\u54ea\u91cc\u521b\u5efa\u5b57\u8282\u7801:
class.notfound.create.abc.where.existing = \u73b0\u6709\u7684DoABC\u6807\u7b7e
class.notfound.create.abc.where.new = \u65b0\u7684ABC\u6807\u7b7e
class.notfound.onlySetClassName = \u4e0d,\u4ec5\u5206\u914d\u7c7b\u540d\u79f0