diff --git a/CHANGELOG.md b/CHANGELOG.md
index 0dbb46685..e19e77c0c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -8,6 +8,7 @@ All notable changes to this project will be documented in this file.
- [#1888], [#1892] AS3 option to select SWF dependencies to properly resolve namespaces, types, etc. (currently in GUI only)
- FileAttributes tag - SWF relative Urls flag
- AS3 P-code editing class trait
+- [#355] Updated Chinese translation
### Fixed
- [#1981] AS3 fully qualified (colliding) types in submethods
@@ -3000,6 +3001,7 @@ All notable changes to this project will be documented in this file.
[alpha 7]: https://github.com/jindrapetrik/jpexs-decompiler/releases/tag/alpha7
[#1888]: https://www.free-decompiler.com/flash/issues/1888
[#1892]: https://www.free-decompiler.com/flash/issues/1892
+[#355]: https://www.free-decompiler.com/flash/issues/355
[#1981]: https://www.free-decompiler.com/flash/issues/1981
[#1982]: https://www.free-decompiler.com/flash/issues/1982
[#1986]: https://www.free-decompiler.com/flash/issues/1986
@@ -3693,7 +3695,6 @@ All notable changes to this project will be documented in this file.
[#378]: https://www.free-decompiler.com/flash/issues/378
[#325]: https://www.free-decompiler.com/flash/issues/325
[#210]: https://www.free-decompiler.com/flash/issues/210
-[#355]: https://www.free-decompiler.com/flash/issues/355
[#313]: https://www.free-decompiler.com/flash/issues/313
[#330]: https://www.free-decompiler.com/flash/issues/330
[#332]: https://www.free-decompiler.com/flash/issues/332
diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/locales/AppResources_zh.properties b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/locales/AppResources_zh.properties
index 36e1dd257..26100455f 100644
--- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/locales/AppResources_zh.properties
+++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/locales/AppResources_zh.properties
@@ -27,7 +27,7 @@ decompilation.unsupported = \u4e0d\u53d7\u53cd\u7f16\u8bd1\u5668\u652f\u6301
decompilerMark = \u53cd\u7f16\u8bd1\u6807\u8bb0
#example: 1 hour and 2 minutes
-timeFormat.and = \
+timeFormat.and = \u548c
timeFormat.hour = \u65f6
timeFormat.hours = \u65f6
timeFormat.minute = \u5206
@@ -40,3 +40,8 @@ fontNotFound = \u65e0\u6cd5\u627e\u5230id\u4e3a%fontId%\u7684\u5b57\u4f53.
trait.scriptinitializer = \u811a\u672c\u521d\u59cb\u5316\u5668
trait.instanceinitializer = \u5b9e\u4f8b\u521d\u59cb\u5316\u5668
trait.classinitializer = \u7c7b\u521d\u59cb\u5316\u5668
+#after 16.3.1
+package.default = <\u9ed8\u8ba4\u5305>
+error.swf.invalid = \u4e0d\u53ef\u7528\u7684SWF\u6587\u4ef6
+error.swf.headerTooShort = SWF\u6807\u5934\u8fc7\u77ed
+error.abc.invalid = \u4e0d\u53ef\u7528\u7684ABC\u6587\u4ef6
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 5f07a2a35..44436508a 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
@@ -61,6 +61,8 @@ trait.flag.OVERRIDE = \u8986\u76d6\u7236\u9879\u7684\u7279\u5f81
trait.dispid = \u6d3e\u9063 id
#slot/const/class/function
trait.slotid = \u63d2\u69fd id
+trait.type = \u7279\u5f81\u7c7b\u578b
+trait.value = \u7279\u5f81\u9ed8\u8ba4\u503c
method = \u65b9\u6cd5
method.name = \u65b9\u6cd5\u540d\u79f0
@@ -89,3 +91,4 @@ method.body.try.target = \u5982\u679c\u629b\u51fa\u6b64\u7c7b\u578b\u7684\u5f02\
method.body.try.type = \u6355\u83b7\u7684\u5f02\u5e38\u7c7b\u578b
method.body.try.name = \u5f02\u5e38\u7684\u5bf9\u8c61\u540d\u79f0
method.body.code = \u65b9\u6cd5\u4e3b\u4f53\u4ee3\u7801
+method.body.trait = \u65b9\u6cd5\u4e3b\u4f53\u7279\u5f81
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 769181ef5..885e12ef0 100644
--- a/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_zh.properties
+++ b/src/com/jpexs/decompiler/flash/gui/locales/AdvancedSettingsDialog_zh.properties
@@ -516,3 +516,113 @@ config.description.displayAs3PCodeDocsPanel = \u5728AS3 P-code\u4e2d\u663e\u793a
config.name.displayAs3TraitsListAndConstantsPanel = \u663e\u793aAS3\u7279\u5f81\u548c\u5e38\u91cf\u9762\u677f
config.description.displayAs3TraitsListAndConstantsPanel = \u5728AS3\u7684\u6807\u7b7e\u6811\u4e0b\u663e\u793atraits\u548cconstants\u5217\u8868\u9762\u677f
+#after 14.1.0
+config.name.useAsTypeIcons = \u6839\u636e\u9879\u76ee\u7c7b\u578b\u4f7f\u7528\u811a\u672c\u56fe\u6807
+config.description.useAsTypeIcons = \u5bf9\u4e0d\u540c\u7684\u811a\u672c\u7c7b\u578b\u4f7f\u7528\u4e0d\u540c\u7684\u56fe\u6807(\u7c7b/\u63a5\u53e3/\u5e27/...)
+config.name.limitAs3PCodeOffsetMatching = AS3 P-code\u504f\u79fb\u5339\u914d\u9650\u5236
+config.description.limitAs3PCodeOffsetMatching = \u4e0eAS3\u811a\u672c\u504f\u79fb\u5339\u914d\u7684AS3 P-code\u6307\u4ee4\u9650\u5236
+#after 14.2.1
+config.name.showSlowRenderingWarning = \u6e32\u67d3\u8fc7\u6162\u65f6\u65e5\u5fd7\u8b66\u544a
+config.description.showSlowRenderingWarning = \u5185\u90e8\u64ad\u653e\u5668\u8fc7\u6162\u65f6\u65e5\u5fd7\u8b66\u544a
+#after 14.3.1
+config.name.autoCloseQuotes = \u811a\u672c\u7f16\u8f91\u4e2d\u81ea\u52a8\u5173\u95ed''
+config.description.autoCloseQuotes = \u8f93\u5165'\u65f6\u81ea\u52a8\u63d2\u5165\u7b2c\u4e8c\u4e2a
+config.name.autoCloseDoubleQuotes = \u811a\u672c\u7f16\u8f91\u4e2d\u81ea\u52a8\u5173\u95ed""
+config.description.autoCloseDoubleQuotes = \u8f93\u5165"\u65f6\u81ea\u52a8\u63d2\u5165\u7b2c\u4e8c\u4e2a
+config.name.autoCloseBrackets = \u811a\u672c\u7f16\u8f91\u4e2d\u81ea\u52a8\u5173\u95ed[]
+config.description.autoCloseBrackets = \u8f93\u5165[\u65f6\u81ea\u52a8\u63d2\u5165]
+config.name.autoCloseParenthesis = \u811a\u672c\u7f16\u8f91\u4e2d\u81ea\u52a8\u5173\u95ed()
+config.description.autoCloseParenthesis = \u8f93\u5165(\u65f6\u81ea\u52a8\u63d2\u5165)
+config.name.showDialogOnError = \u51fa\u9519\u65f6\u5747\u5f39\u51fa\u9519\u8bef\u5bf9\u8bdd\u6846
+config.description.showDialogOnError = \u6bcf\u4e2a\u9519\u8bef\u53d1\u751f\u65f6\u90fd\u663e\u793a\u9519\u8bef\u5bf9\u8bdd\u6846
+#after 14.4.0
+config.name.limitSameChars = \u76f8\u540c\u5b57\u7b26\u9650\u5236
+config.description.limitSameChars = P-code\u5b57\u7b26\u4e32\u4e00\u884c\u4e2d\u7684\u76f8\u540c\u5b57\u7b26\u6216\u88ab\u66ff\u6362\u4e3a\\{xx}C (repeat) escape\u524d\u6df7\u6dc6\u540d\u79f0\u7684\u6700\u5927\u503c
+#after 14.5.2
+config.name.showImportScriptsInfo = \u5bfc\u5165\u811a\u672c\u524d\u663e\u793a\u4fe1\u606f
+config.description.showImportScriptsInfo = \u5728\u83dc\u5355\u4e2d\u70b9\u51fb\u5bfc\u5165\u811a\u672c\u540e\uff0c\u663e\u793a\u5bfc\u5165\u811a\u672c\u7684\u6559\u7a0b
+config.name.showImportTextInfo = \u5bfc\u5165\u6587\u672c\u524d\u663e\u793a\u4fe1\u606f
+config.description.showImportTextInfo = \u5728\u83dc\u5355\u4e2d\u70b9\u51fb\u5bfc\u5165\u6587\u672c\u540e\uff0c\u663e\u793a\u5bfc\u5165\u6587\u672c\u7684\u6559\u7a0b
+config.name.showImportSymbolClassInfo = \u5bfc\u5165\u7b26\u53f7\u7c7b\u524d\u663e\u793a\u4fe1\u606f
+config.description.showImportSymbolClassInfo = \u5728\u83dc\u5355\u4e2d\u70b9\u51fb\u5bfc\u5165\u7b26\u53f7\u7c7b\u540e\uff0c\u663e\u793a\u5bfc\u5165\u7b26\u53f7\u7c7b\u7684\u6559\u7a0b
+config.name.showImportXmlInfo = \u5bfc\u5165XML\u524d\u663e\u793a\u4fe1\u606f
+config.description.showImportXmlInfo = \u5728\u83dc\u5355\u4e2d\u70b9\u51fb\u5bfc\u5165XML\u540e\uff0c\u663e\u793a\u5bfc\u5165XML\u7684\u6559\u7a0b
+#after 15.1.1
+config.name.lastSessionTagListSelection = \u4e0a\u6b21\u4f1a\u8bdd\u6807\u7b7e\u5217\u8868\u9009\u62e9
+config.description.lastSessionTagListSelection = \u5305\u542b\u4e0a\u6b21\u4f1a\u8bdd\u5217\u8868\u9009\u62e9\u89c6\u56fe\u4e2d\u7684\u9009\u62e9
+config.name.lastView = \u4e0a\u6b21\u89c6\u56fe
+config.description.lastView = \u4e0a\u6b21\u663e\u793a\u7684\u89c6\u56fe\u6a21\u5f0f
+config.name.swfSpecificCustomConfigs = SWF\u7279\u5b9a\u81ea\u5b9a\u4e49\u914d\u7f6e
+config.description.swfSpecificCustomConfigs = \u5305\u542b\u81ea\u5b9a\u4e49\u683c\u5f0f\u7684SWF\u7279\u5b9a\u914d\u7f6e
+config.name.warningOpeningReadOnly = \u6253\u5f00\u53ea\u8bfbSWF\u65f6\u8b66\u544a
+config.description.warningOpeningReadOnly = \u4ece\u53ea\u8bfb\u6e90\u6253\u5f00SWF\u65f6\u8b66\u544a
+# after 16.1.0
+config.name.showImportImageInfo = \u5bfc\u5165\u56fe\u50cf\u524d\u663e\u793a\u4fe1\u606f
+config.description.showImportImageInfo = \u5728\u83dc\u5355\u4e2d\u70b9\u51fb\u5bfc\u5165\u56fe\u50cf\u540e\uff0c\u663e\u793a\u5bfc\u5165\u56fe\u50cf\u7684\u6559\u7a0b
+config.name.autoPlaySwfs = \u81ea\u52a8\u64ad\u653eSWF\u9884\u89c8
+config.description.autoPlaySwfs = \u9009\u62e9SWF\u8282\u70b9\u65f6\u81ea\u52a8\u64ad\u653eSWF\u9884\u89c8
+config.name.expandFirstLevelOfTreeOnLoad = SWF\u52a0\u8f7d\u65f6\u5c55\u5f00\u4e00\u7ea7\u8282\u70b9
+config.description.expandFirstLevelOfTreeOnLoad = \u6253\u5f00SWF\u65f6\u81ea\u52a8\u5c55\u5f00\u5206\u652f\u4e2d\u7684\u4e00\u7ea7\u8282\u70b9
+# after 16.2.0
+config.name.allowPlacingDefinesIntoSprites = \u5c06define\u6807\u7b7e\u653e\u5165DefineSprite
+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 = \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
+config.name.animateSubsprites = \u9884\u89c8\u5b50\u52a8\u753b
+config.description.animateSubsprites = \u9884\u89c8\u65f6\u95f4\u8f74\u4e2d\u7684\u5b50\u52a8\u753b
+config.name.autoPlayPreviews = \u9884\u89c8\u81ea\u52a8\u64ad\u653e
+config.description.autoPlayPreviews = \u81ea\u52a8\u64ad\u653e\u9884\u89c8\u52a8\u753b
+config.name.maxCachedTime = \u4e34\u65f6\u7f13\u5b58\u65f6\u95f4
+config.description.maxCachedTime = \u9879\u76ee\u4e0d\u8bbf\u95ee\u540e\u4ece\u7f13\u5b58\u79fb\u9664\u7684\u6700\u5927\u65f6\u95f4.0\u4e3a\u65e0\u9650\u5236
+config.name.airLibLocation = 6) AIR\u5e93\u8def\u5f84(airglobal.swc)
+config.description.airLibLocation = AIR\u5e93(airglobal.swc)\u7684\u8def\u5f84. \u5e38\u7528\u4e8eAS3\u6c47\u7f16.
+config.name.showImportShapeInfo = \u5bfc\u5165\u5f62\u72b6\u524d\u663e\u793a\u4fe1\u606f
+config.description.showImportShapeInfo = \u5728\u83dc\u5355\u4e2d\u70b9\u51fb\u5bfc\u5165\u5f62\u72b6\u540e\uff0c\u663e\u793a\u5bfc\u5165\u5f62\u72b6\u7684\u6559\u7a0b
+config.name.pinnedItemsTagTreePaths = \u6807\u7b7e\u89c6\u56fe\u4e2d\u56fa\u5b9a\u7684\u9879\u76ee\u8def\u5f84
+config.description.pinnedItemsTagTreePaths = \u5df2\u56fa\u5b9a\u7684\u6807\u7b7e\u8282\u70b9\u7684\u8def\u5f84
+config.name.pinnedItemsTagListPaths = \u6807\u7b7e\u5217\u8868\u4e2d\u56fa\u5b9a\u7684\u9879\u76ee\u8def\u5f84
+config.description.pinnedItemsTagListPaths = \u5df2\u56fa\u5b9a\u7684\u6807\u7b7e\u8282\u70b9\u7684\u8def\u5f84
+config.name.flattenASPackages = \u5c55\u5f00ActionScript\u5305
+config.description.flattenASPackages = \u6bcf\u4e2a\u5305\u5355\u72ec\u4e00\u4e2a\u9879\u76ee\u800c\u4e0d\u662f\u5305\u5206\u652f\u7ed3\u6784
+config.name.gui.scale = UI\u7f29\u653e\u8bbe\u7f6e
+config.description.gui.scale = \u56fe\u5f62\u754c\u9762\u7684\u7f29\u653e\u8bbe\u7f6e.Mac Retina\u8bbe\u7f6e\u4e3a2.0.\u9700\u8981\u5b8c\u5168\u5173\u95ed\u8f6f\u4ef6
+config.name.warning.video.vlc = VLC\u64ad\u653e\u5668\u63d0\u793a
+config.description.warning.video.vlc = \u6253\u5f00\u6709DefineVideostream\u6807\u7b7e\u7684SWF\u65f6\uff0c\u663e\u793aVLC media player\u76f8\u5173\u63d0\u793a
+config.name.playFrameSounds = \u64ad\u653e\u5e27\u58f0\u97f3
+config.description.playFrameSounds = \u663e\u793a\u5e27\u65f6\u64ad\u653e\u58f0\u97f3
+config.name.fixAntialiasConflation = \u5c1d\u8bd5\u4fee\u590d\u6297\u952f\u9f7f\u878d\u5408(\u5b9e\u9a8c\u6027,\u6162)
+config.description.fixAntialiasConflation = \u5c1d\u8bd5\u4fee\u590d\u6297\u952f\u9f7f\u5bfc\u81f4\u7684\u76f8\u90bb\u5f62\u72b6\u4e4b\u95f4\u7684\u6297\u952f\u9f7f\u878d\u5408.\u8fd9\u5c06\u51cf\u6162\u6e32\u67d3.\u5b9e\u9a8c\u6027\u529f\u80fd.
+config.name.autoPlaySounds = \u81ea\u52a8\u64ad\u653e\u58f0\u97f3
+config.description.autoPlaySounds = \u9009\u4e2d\u8282\u70b9\u65f6\u81ea\u52a8\u64ad\u653eDefineSound
+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.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
+config.name.doubleClickNodeToEdit = \u53cc\u51fb\u5f00\u59cb\u7f16\u8f91
+config.description.doubleClickNodeToEdit = \u53cc\u51fb\u8282\u70b9\u5bf9\u5176\u5f00\u59cb\u7f16\u8f91
+config.name.warningDeobfuscation = \u5207\u6362\u53cd\u6df7\u6dc6\u65f6\u8b66\u544a
+config.description.warningDeobfuscation = \u5f00\u5173\u53cd\u6df7\u6dc6\u65f6\u663e\u793a\u8b66\u544a
+config.name.warningRenameIdentifiers = \u5207\u6362\u81ea\u52a8\u91cd\u547d\u540d\u6807\u8bc6\u7b26\u65f6\u8b66\u544a
+config.description.warningRenameIdentifiers = \u5f00\u5173\u81ea\u52a8\u91cd\u547d\u540d\u6807\u8bc6\u7b26\u65f6\u663e\u793a\u8b66\u544a
+config.name.showImportMovieInfo = \u5bfc\u5165\u89c6\u9891\u524d\u663e\u793a\u4fe1\u606f
+config.description.showImportMovieInfo = \u5728\u83dc\u5355\u4e2d\u70b9\u51fb\u5bfc\u5165\u89c6\u9891\u540e\uff0c\u663e\u793a\u5bfc\u5165\u89c6\u9891\u7684\u6559\u7a0b
+config.name.showImportSoundInfo = \u5bfc\u5165\u58f0\u97f3\u524d\u663e\u793a\u4fe1\u606f
+config.description.showImportSoundInfo = \u5728\u83dc\u5355\u4e2d\u70b9\u51fb\u5bfc\u5165\u58f0\u97f3\u540e\uff0c\u663e\u793a\u5bfc\u5165\u58f0\u97f3\u7684\u6559\u7a0b
+config.name.svgRetainBounds = \u5bfc\u51faSVG\u65f6\u4fdd\u6301\u5f62\u72b6\u754c\u9650
+config.description.svgRetainBounds = \u5bfc\u51faSVG\u65f6, \u5f62\u72b6\u7684x,y\u4f4d\u7f6e\u4e0eSWF\u4e2d\u4fdd\u6301\u4e00\u81f4(\u4f8b\u5982\u6b63\u6216\u8d1f)
+config.name.disableBitmapSmoothing = \u7981\u7528\u5e73\u6ed1\u4f4d\u56fe
+config.description.disableBitmapSmoothing = \u663e\u793a\u65f6\u7981\u7528\u5e73\u6ed1\u4f4d\u56fe\u586b\u5145 - \u5168\u90e8\u663e\u793a\u4e3a\u975e\u5e73\u6ed1(\u50cf\u7d20).\u4e0d\u9002\u7528\u4e8e\u5bfc\u51fa\u7684\u56fe\u50cf
+config.name.pinnedItemsScrollPos = \u56fa\u5b9a\u9879\u76ee\u6eda\u52a8/\u63d2\u5165\u4f4d\u7f6e
+config.description.pinnedItemsScrollPos = \u56fa\u5b9a\u9879\u76ee\u7684\u6eda\u52a8/\u63d2\u5165\u4f4d\u7f6e
+config.name.maxRememberedScrollposItems = \u6eda\u52a8\u4f4d\u7f6e\u6700\u5927\u8bb0\u5fc6\u6570
+config.description.maxRememberedScrollposItems = \u8bb0\u5fc6\u6eda\u52a8\u4f4d\u7f6e\u9879\u76ee\u7684\u6700\u5927\u503c
+config.name.rememberScriptsScrollPos = \u8bb0\u4f4f\u811a\u672c\u6eda\u52a8/\u63d2\u5165\u4f4d\u7f6e
+config.description.rememberScriptsScrollPos = \u811a\u672c\u6eda\u52a8/\u63d2\u5165\u4f4d\u7f6e\u5728\u5207\u6362\u9879\u76ee\u65f6\u4fdd\u5b58
+config.name.rememberFoldersScrollPos = \u8bb0\u4f4f\u6587\u4ef6\u5939\u6eda\u52a8\u4f4d\u7f6e
+config.description.rememberFoldersScrollPos = \u6587\u4ef6\u5939\u6eda\u52a8\u4f4d\u7f6e\u5728\u5207\u6362\u9879\u76ee\u65f6\u4fdd\u5b58
diff --git a/src/com/jpexs/decompiler/flash/gui/locales/ExportDialog_zh.properties b/src/com/jpexs/decompiler/flash/gui/locales/ExportDialog_zh.properties
index 27af01804..0369855c2 100644
--- a/src/com/jpexs/decompiler/flash/gui/locales/ExportDialog_zh.properties
+++ b/src/com/jpexs/decompiler/flash/gui/locales/ExportDialog_zh.properties
@@ -98,3 +98,5 @@ zoom.invalid = \u65e0\u6548\u7f29\u653e\u503c\u3002
symbolclass = \u7b26\u53f7\u7c7b\u6620\u5c04
symbolclass.csv = CSV
+#after 18.0.0
+images.png_gif_jpeg_alpha = PNG/GIF/JPEG+alpha
diff --git a/src/com/jpexs/decompiler/flash/gui/locales/LoadFromMemoryFrame_zh.properties b/src/com/jpexs/decompiler/flash/gui/locales/LoadFromMemoryFrame_zh.properties
index 6f1572fbe..d17576810 100644
--- a/src/com/jpexs/decompiler/flash/gui/locales/LoadFromMemoryFrame_zh.properties
+++ b/src/com/jpexs/decompiler/flash/gui/locales/LoadFromMemoryFrame_zh.properties
@@ -30,3 +30,7 @@ column.fileSize = \u6587\u4ef6\u5927\u5c0f
column.pid = PID
column.processName = \u8fdb\u7a0b\u540d\u79f0
column.address = \u5730\u5740
+#after 17.0.4
+hex = \u5341\u516d\u8fdb\u5236
+align = \u4ec5\u5bf9\u9f50\u5230:
+align.bytes = \u5b57\u8282
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 fbd80a67e..d729e6a97 100644
--- a/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_zh.properties
+++ b/src/com/jpexs/decompiler/flash/gui/locales/MainFrame_zh.properties
@@ -33,7 +33,7 @@ menu.tools.gotoDocumentClass = \u8df3\u8f6c\u5230\u4e3b\u7c7b
menu.settings = \u8bbe\u7f6e
menu.settings.autodeobfuscation = \u81ea\u52a8\u53cd\u6df7\u6dc6
-menu.settings.internalflashviewer = \u4f7f\u7528\u5185\u90e8FlashViewr
+menu.settings.internalflashviewer = \u4f7f\u7528\u5185\u90e8\u64ad\u653e\u5668
menu.settings.parallelspeedup = \u591a\u7ebf\u7a0b\u52a0\u901f
menu.settings.disabledecompilation = \u7981\u7528\u53cd\u7f16\u8bd1 (\u4ec5\u53cd\u6c47\u7f16)
menu.settings.addtocontextmenu = \u6dfb\u52a0FFDec\u5230SWF\u53f3\u952e\u83dc\u5355
@@ -89,7 +89,7 @@ message.confirm = \u786e\u8ba4
message.confirm.autodeobfuscate = \u81ea\u52a8\u53cd\u6df7\u6dc6\u662f\u53cd\u7f16\u8bd1\u6df7\u6dc6\u4ee3\u7801\u7684\u4e00\u79cd\u65b9\u6cd5\u3002\r\n\u53cd\u6df7\u6dc6\u4f1a\u5bfc\u81f4\u53cd\u7f16\u8bd1\u901f\u5ea6\u53d8\u6162\uff0c\u4f46\u53ef\u4ee5\u6d88\u9664\u4e00\u4e9b\u65e0\u6548\u4ee3\u7801\u3002\r\n\u5982\u679c\u672a\u6df7\u6dc6\u4ee3\u7801\uff0c\u5219\u6700\u597d\u5173\u95ed\u81ea\u52a8\u53cd\u6df7\u6dc6\u3002
message.parallel = \u591a\u7ebf\u7a0b
-message.trait.saved = \u5df2\u6210\u529f\u4fdd\u5b58Trait
+message.trait.saved = \u5df2\u6210\u529f\u4fdd\u5b58\u7279\u5f81
message.constant.new.string = \u5e38\u91cf\u8868\u4e2d\u4e0d\u5b58\u5728String "%value%"\uff0c\u9700\u8981\u6dfb\u52a0\u5417\uff1f
message.constant.new.string.title = \u6dfb\u52a0String
@@ -394,8 +394,8 @@ fontName.name = \u5b57\u4f53\u663e\u793a\u540d\u79f0:
fontName.copyright = \u5b57\u4f53\u7248\u6743:
button.preview = \u9884\u89c8
button.reset = \u91cd\u7f6e
-errors.info = \u65e5\u5fd7\u4e2d\u6709INFORMATIONS\uff0c\u70b9\u51fb\u67e5\u770b\u3002
-errors.warning = \u65e5\u5fd7\u4e2d\u6709\u8b66\u544a\uff0c\u70b9\u51fb\u67e5\u770b\u3002
+errors.info = \u65e5\u5fd7\u4e2d\u5b58\u5728INFORMATIONS\uff0c\u70b9\u51fb\u67e5\u770b\u3002
+errors.warning = \u65e5\u5fd7\u4e2d\u5b58\u5728WARNINGS\uff0c\u70b9\u51fb\u67e5\u770b\u3002
decompilationError = \u53cd\u7f16\u8bd1\u9519\u8bef
@@ -702,7 +702,7 @@ message.warning.svgImportExperimental = \u5e76\u975e\u6240\u6709\u7684SVG\u529f\
message.imported.swf = \u6b64\u6587\u4ef6\u4f7f\u7528\u4e86\u5bfc\u5165SWF\u6587\u4ef6\u4e2d\u7684\u8d44\u6e90:\n%url%\n\u662f\u5426\u4ece\u8be5URL\u52a0\u8f7d\u8d44\u6e90\uff1f
message.imported.swf.manually = \u65e0\u6cd5\u52a0\u8f7d\u5bfc\u5165SWF\n%url%\n\u6587\u4ef6\u6216URL\u4e0d\u5b58\u5728\u3002\n\u662f\u5426\u8981\u9009\u62e9\u672c\u5730\u6587\u4ef6\uff1f
-message.warning.hexViewNotUpToDate = \u5341\u516d\u8fdb\u5236\u89c6\u56fe\u4e0d\u662f\u6700\u65b0\u7684\uff0c\u8bf7\u4fdd\u5b58\u5e76\u91cd\u65b0\u52a0\u8f7d\u6587\u4ef6\u4ee5\u66f4\u65b0\u5341\u516d\u8fdb\u5236\u89c6\u56fe\u3002
+message.warning.hexViewNotUpToDate = \u5341\u516d\u8fdb\u5236\u89c6\u56fe\u672a\u66f4\u65b0\uff0c\u8bf7\u4fdd\u5b58\u5e76\u91cd\u65b0\u52a0\u8f7d\u6587\u4ef6\u4ee5\u66f4\u65b0\u5341\u516d\u8fdb\u5236\u89c6\u56fe\u3002
message.font.replace.updateTexts = \u66ff\u6362\u4e86\u67d0\u4e9b\u5b57\u7b26\uff0c\u60a8\u8981\u66f4\u65b0\u73b0\u6709\u6587\u672c\u5417\uff1f
menu.settings.simplifyExpressions = \u7b80\u5316\u8868\u8fbe\u5f0f
@@ -728,9 +728,9 @@ generic.editor.amf3.help = AMF3\u503c\u8bed\u6cd5:\n\
%nonscalar_samples%\
\n\
\u6ce8\u610f:\n\
- * \u975e\u6807\u91cf\u6570\u636e\u7c7b\u578b\u53ef\u4ee5\u7531\u5148\u524d\u4f7f\u7528#\u8bed\u6cd5\u58f0\u660e\u7684"id"\u5c5e\u6027\u5f15\u7528:\n\
+ * \u975e\u6807\u91cf\u6570\u636e\u7c7b\u578b\u53ef\u4ee5\u7531\u5148\u524d\u4f7f\u7528#\u8bed\u6cd5\u58f0\u660e\u7684"id"\u5c5e\u6027\u5f15\u7528:\n\
%reference_sample%\n\
- * \u8bcd\u5178\u6761\u76ee\u4e2d\u7684\u952e\u53ef\u4ee5\u662f\u4efb\u4f55\u7c7b\u578b\n
+ * \u8bcd\u5178\u6761\u76ee\u4e2d\u7684\u952e\u53ef\u4ee5\u662f\u4efb\u4f55\u7c7b\u578b\n
contextmenu.showInResources = \u5728\u8d44\u6e90\u4e2d\u663e\u793a
message.flexpath.notset = \u627e\u4e0d\u5230Flex SDK\uff0c\u8bf7\u5728\u9ad8\u7ea7\u8bbe\u7f6e/\u8def\u5f84(4)\u4e2d\u914d\u7f6e\u5176\u8def\u5f84\u3002
@@ -792,6 +792,240 @@ message.confirm.remove.nodep = \u60a8\u786e\u5b9a\u8981\u5220\u9664%item%\uff1f
message.confirm.removemultiple.nodep = \u60a8\u786e\u5b9a\u8981\u5220\u9664%count%\u4e2a\u9879\u76ee\uff1f
-menu.recentSearches = \u641c\u7d22\u8bb0\u5f55
+menu.recentSearches = \u5f53\u524d\u6587\u4ef6\u7684\u6700\u8fd1\u641c\u7d22
menu.recentSearches.empty = \u641c\u7d22\u8bb0\u5f55\u4e3a\u7a7a
-menu.tools.otherTools.clearRecentSearches = \u6e05\u7a7a\u641c\u7d22\u8bb0\u5f55
+#after 14.1.0
+menu.tools.otherTools.clearRecentSearches = \u6e05\u7a7a\u6700\u8fd1\u641c\u7d22
+menu.recentSearches.clear = \u6e05\u7a7a\u641c\u7d22\u7ed3\u679c
+message.confirm.recentSearches.clear = \u786e\u5b9a\u8981\u6e05\u7a7a\u5f53\u524d\u6587\u4ef6\u7684\u6700\u8fd1\u641c\u7d22\u5417\uff1f
+message.input.gotoCharacter.title = \u53bb\u5230\u5b57\u7b26
+message.input.gotoCharacter = \u8f93\u5165\u5b57\u7b26ID
+message.character.notfound = \u672a\u627e\u5230\u5b57\u7b26 %characterid% .
+FileChooser.preview = \u9884\u89c8
+FileChooser.previewNotAvailable = (\u9884\u89c8\u4e0d\u53ef\u7528)
+#after 14.2.1
+button.freetransform = \u81ea\u7531\u53d8\u6362
+#after 14.3.1
+error.outOfMemory.title = \u9519\u8bef - \u5185\u5b58\u6ea2\u51fa
+error.outOfMemory = \u53cd\u7f16\u8bd1\u5668\u5185\u5b58\u6ea2\u51fa. \u5f53\u524d\u7684Java\u5806\u6700\u5927\u503c\u4e3a %maxheap%.
+error.outOfMemory.windows = \u901a\u8fc7"ffdec.exe"\u8fd0\u884c\u65f6, \u5b83\u5c06\u88ab\u8bbe\u7f6e\u4e3a\u6700\u5927\u53ef\u7528\u503c.\n\u5982\u679c\u901a\u8fc7"ffdec.bat"\u8fd0\u884c, \u4f60\u53ef\u4ee5\u5728\u8be5\u6587\u4ef6\u4e2d\u66f4\u6539\u8be5\u503c.
+error.outOfMemory.unixmac = \u4f60\u53ef\u4ee5\u901a\u8fc7\u7f16\u8f91"ffdec.sh"\u6587\u4ef6\u6765\u589e\u52a0\u6b64\u6700\u5927\u503c.
+error.outOfMemory.64bit = \u4f60\u9700\u898164\u4f4d\u7cfb\u7edf\u548cJava\u6765\u4f7f\u7528\u6bd4CCA 1GB\u66f4\u591a\u7684\u5185\u5b58.
+error.outOfMemory.32BitJreOn64bitOs = \u8b66\u544a: \u4f60\u6b63\u572864\u4f4d\u7cfb\u7edf\u4f7f\u752832\u4f4d\u7684Java. \u8bf7\u4f7f\u752864\u4f4d\u7684Java.
+notavailable.internalviewer = \u6b64\u5bf9\u8c61\u7684\u9884\u89c8\u9700\u8981Flash ActiveX\u7ec4\u4ef6.\n \
+ \u4f60\u53ef\u4ee5\u5728"\u9ad8\u7ea7\u8bbe\u7f6e/\u5176\u4ed6"\u4e2d\n \
+ \u52fe\u9009"(\u5f03\u7528)\u4f7f\u7528Adobe Flash Player\u9884\u89c8"
+notavailable.activex = \u7531\u4e8eFlash ActiveX\u65e0\u6cd5\u8fd0\u884c, \u6b64\u5bf9\u8c61\u7684\u9884\u89c8\u4e0d\u53ef\u7528.\n \
+ \u8fd9\u662f\u6b63\u5e38\u73b0\u8c61, \u56e0\u4e3aAdobe\u57282021\u5e74\u505c\u6b62\u4e86\u652f\u6301.
+notavailable.activex.disable = \u4f60\u53ef\u4ee5\u53d6\u6d88\u52fe\u9009"\u9ad8\u7ea7\u8bbe\u7f6e/\u5176\u4ed6/(\u5f03\u7528)\u4f7f\u7528Adobe Flash Player\u9884\u89c8"\n \
+ \u4ee5\u4f7f\u7528\u5185\u90e8\u64ad\u653e\u5668\n \
+ \u4f46\u8fd9\u4e0d\u652f\u6301\u89c6\u9891\u6807\u7b7e.
+#after 14.5.2
+button.showin.flashprojector = \u5728Flash Projector\u4e2d\u663e\u793a
+message.info = \u4fe1\u606f
+message.info.importScripts = \u5bfc\u5165\u811a\u672c\u65f6,\u60a8\u9700\u8981\u9009\u62e9\u4e00\u4e2a\u6587\u4ef6\u5939.\r\n \
+ \u6587\u4ef6\u5939\u5fc5\u987b\u5305\u542b"scripts"\u5b50\u6587\u4ef6\u5939,\u5176\u7ed3\u6784\u9700\u8981\u4e0e\u5f53\u524dSWF\u5339\u914d.\r\n \
+ \u4f7f\u7ed3\u6784\u6b63\u786e\u7684\u6700\u597d\u529e\u6cd5\u662f\u5148\u5bfc\u51fa\u5f53\u524dSWF\u7684\u811a\u672c. \r\n\r\n \
+ \u6ce8\u610f\u6b64\u5bfc\u5165\u4f7f\u7528\u4e0eFFDec\u4e2d\u7684\u7f16\u8f91\u5668\u76f8\u540c\u7684\u7f16\u8bd1\u5668(AS3\u5b9e\u9a8c\u6027).
+message.info.importTexts = \u5bfc\u5165\u6587\u672c\u65f6,\u60a8\u9700\u8981\u9009\u62e9\u4e00\u4e2a\u6587\u4ef6\u5939.\r\n \
+ \u6587\u4ef6\u5939\u5fc5\u987b\u5305\u542b"texts"\u5b50\u6587\u4ef6\u5939,\u5176\u7ed3\u6784\u9700\u8981\u4e0e\u5f53\u524dSWF\u5339\u914d.\r\n \
+ \u4f7f\u7ed3\u6784\u6b63\u786e\u7684\u6700\u597d\u529e\u6cd5\u662f\u5148\u5bfc\u51fa\u5f53\u524dSWF\u7684\u6587\u672c.
+message.info.importSymbolClass = \u5bfc\u5165\u7b26\u53f7\u7c7b\u65f6,\u60a8\u9700\u8981\u9009\u62e9\u4e00\u4e2a\u5305\u542b"%file%"\u6587\u4ef6\u7684\u6587\u4ef6\u5939.\r\n \
+ \u4e0e\u5bfc\u51fa\u65f6\u4f7f\u7528\u7684\u6587\u4ef6\u540d\u662f\u76f8\u540c\u7684.
+message.info.importXml = \u5bfc\u5165XML\u65f6,\u60a8\u9700\u8981\u4e00\u4e2a\u7279\u6b8a\u683c\u5f0f\u7684XML\u6587\u4ef6 - FFDec\u5bfc\u51fa\u7684\u683c\u5f0f.\r\n \
+ \u521b\u5efa\u6b64XML\u6587\u4ef6\u7684\u6700\u597d\u529e\u6cd5\u662f\u5148\u4ece\u5f53\u524dSWF\u5bfc\u51faXML.
+#after 14.6.0
+tagInfo.dependentFrames = \u4f9d\u8d56\u5e27
+#after 15.0.0
+imagePanel.depth = \u6df1\u5ea6:
+work.importing_as = \u6b63\u5728\u5bfc\u5165\u811a\u672c
+importing_as.finishedin = \u9884\u8ba1\u9700\u8981 %time%
+work.deobfuscating_pcode = \u53cd\u6df7\u6dc6pcode
+work.injecting_debuginfo = \u6ce8\u5165\u8c03\u8bd5\u4fe1\u606f
+work.generating_swd = \u751f\u6210SWD\u6587\u4ef6
+#after 15.1.1
+button.replaceRefs = \u7528\u5176\u4ed6\u5b57\u7b26ID\u66ff\u6362\u53c2\u8003
+contextmenu.cloneTag = \u590d\u5236\u6807\u7b7e
+contextmenu.moveTagAround = \u79fb\u52a8\u6807\u7b7e
+contextmenu.addTagBefore = \u5728\u524d\u9762\u6dfb\u52a0\u6807\u7b7e
+contextmenu.addTagAfter = \u5728\u540e\u9762\u6dfb\u52a0\u6807\u7b7e
+menu.file.view.tagList = \u6807\u7b7e\u5217\u8868
+contextmenu.showInTagList = \u5728\u6807\u7b7e\u5217\u8868\u4e2d\u663e\u793a
+message.input.addFrames.title = \u6dfb\u52a0\u5e27
+message.input.addFrames.howmany = \u9700\u8981\u6dfb\u52a0\u7684\u5e27\u6570
+contextmenu.addFramesBefore = \u5728\u524d\u9762\u6dfb\u52a0\u5e27
+contextmenu.addFramesAfter = \u5728\u540e\u9762\u6dfb\u52a0\u5e27
+contextmenu.addFrames = \u6dfb\u52a0\u5e27
+error.readonly.cannotSave = \u6587\u4ef6\u5c06\u65e0\u6cd5\u4fdd\u5b58. \u6b64SWF\u6587\u4ef6\u6e90\u4e0d\u5141\u8bb8\u4fdd\u5b58\u66f4\u6539.\r\n\
+ \u8fd9\u901a\u5e38\u662f\u5728\u4e8c\u8fdb\u5236\u6a21\u5f0f\u4e0b\u52a0\u8f7d\u672a\u77e5\u6269\u5c55\u540d\u7684\u4e8c\u8fdb\u5236\u6570\u636e\u6216\u6587\u4ef6\u5f15\u8d77\u7684.\r\n\
+ \u8bf7\u4f7f\u7528"\u53e6\u5b58\u4e3a"\u5bfc\u51fa\u7279\u5b9a\u7684SWF\u6587\u4ef6.
+warning.readonly = \u6587\u4ef6"%file%"\u4ee5\u53ea\u8bfb\u6a21\u5f0f\u52a0\u8f7d. \r\n\
+ \u82e5\u4e0d\u901a\u8fc7"\u53e6\u5b58\u4e3a",\u4f60\u6240\u505a\u7684\u4fee\u6539\u4e0d\u4f1a\u4fdd\u5b58.\r\n\
+ \u8fd9\u901a\u5e38\u662f\u7531\u4e8e\u4e8c\u8fdb\u5236\u641c\u7d22\u6a21\u5f0f\u6253\u5f00\u6587\u4ef6\u5f15\u8d77\u7684,\r\n\
+ \u6587\u4ef6\u53ef\u80fd\u5177\u6709\u672a\u77e5\u7684\u6269\u5c55\u540d\u5e76\u56e0\u6b64\u65e0\u6cd5\u4fdd\u5b58
+#after 16.0.0
+contextmenu.addTagInside = \u5728\u5185\u90e8\u6dfb\u52a0\u6807\u7b7e
+contextmenu.cloneFrame = \u590d\u5236\u5e27
+contextmenu.clone = \u590d\u5236
+#after 16.0.4
+error.action.save.valueTooLarge = \u4ee3\u7801\u65e0\u6cd5\u4fdd\u5b58. FFDecs\u9700\u8981\u7684\u7a7a\u95f4\u8d85\u8fc7\u5b57\u8282\u6700\u5927\u9650\u5236\r\n\
+ action\u6807\u7b7e\u6216ActionDefineFunction/2\u6709\u5b57\u8282\u5b58\u50a8\u9650\u5236.\r\n\
+ \u4f60\u53ef\u4ee5\u5c1d\u8bd5\u7f29\u77ed\u4ee3\u7801\u5e76\u91cd\u8bd5.
+contextmenu.attachTag = \u9644\u52a0\u6807\u7b7e
+contextmenu.showInHexDump = \u663e\u793a\u5341\u516d\u8fdb\u5236
+menu.file.new = \u65b0\u5efa\u6587\u4ef6
+new.filename = \u672a\u547d\u540d
+error.missing.characterTag.single = \u9519\u8bef: \u6b64\u6807\u7b7e\u9700\u8981\u6807\u7b7e %tag%,\u4f46\u8be5\u6807\u7b7e\u672a\u5728\u6b64\u6807\u7b7e\u4e4b\u524d\u5b9a\u4e49. \
+ \u8bf7\u5b9a\u4e49\u6216\u5c06\u8be5\u6807\u7b7e\u79fb\u52a8\u5230\u6b63\u786e\u7684\u4f4d\u7f6e.
+error.missing.characterTag.multi = \u9519\u8bef: \u6b64\u6807\u7b7e\u9700\u8981\u6807\u7b7e %tags%,\u4f46\u5b83\u4eec\u672a\u5728\u6b64\u6807\u7b7e\u4e4b\u524d\u5b9a\u4e49. \
+ \u8bf7\u5b9a\u4e49\u6216\u5c06\u5b83\u4eec\u79fb\u52a8\u5230\u6b63\u786e\u7684\u4f4d\u7f6e.
+#after 16.1.0
+contextmenu.clipboard = \u6807\u7b7e\u526a\u8d34\u677f
+contextmenu.cutTag = \u526a\u5207\u81f3\u6807\u7b7e\u526a\u8d34\u677f
+contextmenu.cutTagWithDependencies = \u4e0e\u4f9d\u8d56\u526a\u5207\u81f3\u6807\u7b7e\u526a\u8d34\u677f
+contextmenu.paste = \u7c98\u8d34
+contextmenu.pasteBefore = \u5728\u524d\u9762\u7c98\u8d34
+contextmenu.pasteAfter = \u5728\u540e\u9762\u7c98\u8d34
+contextmenu.pasteInside = \u5728\u5185\u90e8\u7c98\u8d34
+menu.file.import.other = \u5bfc\u5165\u5176\u4ed6
+menu.file.import.image = \u5bfc\u5165\u56fe\u50cf
+message.info.importImages = \u5bfc\u5165\u56fe\u50cf\u65f6,\u60a8\u9700\u8981\u9009\u62e9\u4e00\u4e2a\u6587\u4ef6\u5939.\r\n \
+ \u6587\u4ef6\u5939\u5fc5\u987b\u5305\u542b"images"\u5b50\u6587\u4ef6\u5939,\u5176\u7ed3\u6784\u9700\u8981\u4e0e\u5f53\u524dSWF\u5339\u914d.\r\n \
+ \u4f7f\u7ed3\u6784\u6b63\u786e\u7684\u6700\u597d\u529e\u6cd5\u662f\u5148\u5bfc\u51fa\u5f53\u524dSWF\u7684\u56fe\u50cf.
+work.importing = \u6b63\u5728\u5bfc\u5165
+import.finishedin = \u9884\u8ba1\u9700\u8981 %time%
+error.import = \u5bfc\u5165\u51fa\u9519
+import.image.result = \u5df2\u5bfc\u5165%count%\u4e2a\u56fe\u50cf.
+clipboard.hint = \u6807\u7b7e\u526a\u8d34\u677f\u4e2d\u7684\u9879\u76ee\u6570
+clipboard.item = 1\u4e2a\u9879\u76ee
+clipboard.items = %count%\u4e2a\u9879\u76ee
+clipboard.clear = \u6e05\u7a7a\u526a\u8d34\u677f
+#after 16.2.0
+contextmenu.moveTagWithDependencies = \u79fb\u52a8\u6807\u7b7e\u4e0e\u4f9d\u8d56\u81f3
+contextmenu.moveUp = \u79fb\u52a8\u81f3\u4e0a\u65b9
+contextmenu.moveDown = \u79fb\u52a8\u81f3\u4e0b\u65b9
+contextmenu.changeCharset = \u66f4\u6539\u5b57\u7b26\u96c6(\u5f53\u524d: %charset%)
+contextmenu.more = \u66f4\u591a...
+error.charset.nocharacter = \u9009\u4e2d\u7684\u5b57\u7b26\u96c6\u4e0d\u5305\u542b\u5b57\u7b26 "%char%".
+#after 16.3.1
+button.show = \u663e\u793a/\u9690\u85cf\u9884\u89c8
+button.freeze = \u51bb\u7ed3(\u4e0d\u64ad\u653e\u5b50\u52a8\u753b)
+library = \u5e93:
+message.airpath.lib.notset = \u672a\u53d1\u73b0AirGlobal (.SWC). \u8bf7\u5728"\u9ad8\u7ea7\u8bbe\u7f6e/\u8def\u5f84(6)"\u4e2d\u914d\u7f6e\u8def\u5f84.
+message.action.airglobal.title = \u9700\u8981AirGlobal\u5e93
+menu.file.import.shape = \u5bfc\u5165\u5f62\u72b6
+menu.file.import.shapeNoFill = \u5bfc\u5165\u5f62\u72b6 - \u66f4\u65b0\u8fb9\u754c
+message.info.importShapes = \u5bfc\u5165\u5f62\u72b6\u65f6,\u60a8\u9700\u8981\u9009\u62e9\u4e00\u4e2a\u6587\u4ef6\u5939.\r\n \
+ \u6587\u4ef6\u5939\u5fc5\u987b\u5305\u542b"shapes"\u5b50\u6587\u4ef6\u5939,\u5176\u7ed3\u6784\u9700\u8981\u4e0e\u5f53\u524dSWF\u5339\u914d.\r\n \
+ \u4f7f\u7ed3\u6784\u6b63\u786e\u7684\u6700\u597d\u529e\u6cd5\u662f\u5148\u5bfc\u51fa\u5f53\u524dSWF\u7684\u5f62\u72b6.
+import.shape.result = \u5df2\u5bfc\u5165%count%\u4e2a\u5f62\u72b6
+pin = \u70b9\u51fb\u56fa\u5b9a\u6b64\u9879\u76ee
+unpin = \u5df2\u56fa\u5b9a - \u70b9\u51fb\u53d6\u6d88\u56fa\u5b9a
+contextmenu.unpin = \u53d6\u6d88\u56fa\u5b9a
+contextmenu.unpin.all = \u5168\u90e8\u53d6\u6d88\u56fa\u5b9a
+contextmenu.unpin.others = \u53d6\u6d88\u56fa\u5b9a\u5176\u4ed6
+menu.tools.otherTools.clearPinnedItems = \u6e05\u7a7a\u56fa\u5b9a\u9879\u76ee
+menu.settings.flattenASPackages = \u5c55\u5f00ActionScript\u5305
+work.reading.abc = \u8bfb\u53d6ABC
+filter.abc = ActionScript3\u5b57\u8282\u7801\u6587\u4ef6(*.abc)
+contextmenu.exportAbc = \u5bfc\u51faABC
+contextmenu.pin = \u56fa\u5b9a
+#after 17.0.4
+productinfo.product = \u751f\u4ea7:
+productinfo.product.unknown = \u672a\u77e5
+productinfo.edition = \u7f16\u8f91:
+productinfo.edition.none = \u65e0
+productinfo.version = \u7248\u672c:
+productinfo.build = \u6784\u5efa:
+productinfo.compileDate = \u7f16\u8bd1\u65e5\u671f:
+message.video.installvlc = \u6587\u4ef6"%file%"\u5305\u542b\u89c6\u9891\u6807\u7b7e(DefineVideoStream).\r\n\
+ \u8981\u5728FFDec\u4e2d\u663e\u793a\u5b83\u4eec\u9700\u8981\u5b89\u88c53.0\u4ee5\u4e0a\u7684VLC\u5a92\u4f53\u64ad\u653e\u5668.\r\n\
+ \u4f46\u4e0d\u5b89\u88c5\u4f60\u4e5f\u53ef\u4ee5\u5c06\u5b83\u4eec\u5bfc\u51fa\u4e3aFLV\u683c\u5f0f.
+button.mute = \u9759\u97f3
+button.transform = \u8f6c\u6362
+transform = \u8f6c\u6362
+transform.transformPoint = \u8f6c\u6362\u70b9
+transform.basic = \u57fa\u672c
+transform.basic.flip.horizontally = \u6c34\u5e73\u7ffb\u8f6c
+transform.basic.flip.vertically = \u5782\u76f4\u7ffb\u8f6c
+transform.basic.rotate90.clockwise = \u65cb\u8f6c +90\u00b0
+transform.basic.rotate90.anticlockwise = \u65cb\u8f6c -90\u00b0
+transform.basic.rotate180 = \u65cb\u8f6c 180\u00b0
+transform.move = \u79fb\u52a8
+transform.move.horizontal = \u6c34\u5e73:
+transform.move.vertical = \u5782\u76f4:
+transform.move.relative = \u76f8\u5bf9\u79fb\u52a8
+transform.scale = \u7f29\u653e
+transform.scale.width = \u5bbd:
+transform.scale.height = \u9ad8:
+transform.scale.proportionally = \u6bd4\u4f8b\u7f29\u653e
+transform.rotate = \u65cb\u8f6c
+transform.rotate.angle = \u89d2\u5ea6:
+transform.skew = \u626d\u66f2:
+transform.skew.horizontal = \u6c34\u5e73:
+transform.skew.vertical = \u5782\u76f4:
+transform.matrix = \u77e9\u9635
+transform.matrix.a = A
+transform.matrix.b = B
+transform.matrix.c = C
+transform.matrix.d = D
+transform.matrix.e = E
+transform.matrix.f = F
+transform.matrix.editCurrent = \u7f16\u8f91\u5f53\u524d\u77e9\u9635
+transform.apply = \u5e94\u7528
+transform.clear = \u6e05\u7a7a
+status.editing = \u60a8\u5df2\u8fdb\u5165\u7f16\u8f91\u6a21\u5f0f. \u70b9\u51fb\u4fdd\u5b58\u6309\u94ae\u4fdd\u5b58\u66f4\u6539. \u6216\u70b9\u51fb\u53d6\u6d88\u6309\u94ae\u653e\u5f03\u66f4\u6539. \u7f16\u8f91\u4e2d\u65e0\u6cd5\u5207\u6362\u5230\u5176\u4ed6\u6807\u7b7e.
+#after 18.0.0
+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
+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 \
+ \u6587\u4ef6\u5939\u7ed3\u6784\u9700\u8981\u4e0e\u5f53\u524dSWF\u5339\u914d.\r\n \
+ \u5982\u679c\u5b58\u5728"shapes"\u5b50\u6587\u4ef6\u5939, \u8bf7\u9009\u62e9\u5b83.\r\n \
+ \u4f7f\u7ed3\u6784\u6b63\u786e\u7684\u6700\u597d\u529e\u6cd5\u662f\u5148\u5bfc\u51fa\u5f53\u524dSWF\u7684\u5f62\u72b6.
+message.info.importScripts2 = \u5bfc\u5165\u811a\u672c\u65f6,\u60a8\u9700\u8981\u9009\u62e9\u4e00\u4e2a\u6587\u4ef6\u5939.\r\n \
+ \u6587\u4ef6\u5939\u7ed3\u6784\u9700\u8981\u4e0e\u5f53\u524dSWF\u5339\u914d.\r\n \
+ \u5982\u679c\u5b58\u5728"scripts"\u5b50\u6587\u4ef6\u5939, \u8bf7\u9009\u62e9\u5b83.\r\n \
+ \u4f7f\u7ed3\u6784\u6b63\u786e\u7684\u6700\u597d\u529e\u6cd5\u662f\u5148\u5bfc\u51fa\u5f53\u524dSWF\u7684\u811a\u672c. \r\n\r\n \
+ \u6ce8\u610f\u6b64\u5bfc\u5165\u4f7f\u7528\u4e0eFFDec\u4e2d\u7684\u7f16\u8f91\u5668\u76f8\u540c\u7684\u7f16\u8bd1\u5668(AS3\u5b9e\u9a8c\u6027).
+message.info.importTexts2 = \u5bfc\u5165\u6587\u672c\u65f6,\u60a8\u9700\u8981\u9009\u62e9\u4e00\u4e2a\u6587\u4ef6\u5939.\r\n \
+ \u6587\u4ef6\u5939\u7ed3\u6784\u9700\u8981\u4e0e\u5f53\u524dSWF\u5339\u914d.\r\n \
+ \u5982\u679c\u5b58\u5728"texts"\u5b50\u6587\u4ef6\u5939, \u8bf7\u9009\u62e9\u5b83.\r\n \
+ \u4f7f\u7ed3\u6784\u6b63\u786e\u7684\u6700\u597d\u529e\u6cd5\u662f\u5148\u5bfc\u51fa\u5f53\u524dSWF\u7684\u6587\u672c.
+message.info.importImages2 = \u5bfc\u5165\u56fe\u50cf\u65f6,\u60a8\u9700\u8981\u9009\u62e9\u4e00\u4e2a\u6587\u4ef6\u5939.\r\n \
+ \u6587\u4ef6\u5939\u7ed3\u6784\u9700\u8981\u4e0e\u5f53\u524dSWF\u5339\u914d.\r\n \
+ \u5982\u679c\u5b58\u5728"images"\u5b50\u6587\u4ef6\u5939, \u8bf7\u9009\u62e9\u5b83.\r\n \
+ \u4f7f\u7ed3\u6784\u6b63\u786e\u7684\u6700\u597d\u529e\u6cd5\u662f\u5148\u5bfc\u51fa\u5f53\u524dSWF\u7684\u56fe\u50cf.
+transform.clipboard = \u526a\u8d34\u677f
+transform.clipboard.copy = \u590d\u5236\u77e9\u9635\u81f3\u526a\u8d34\u677f
+transform.clipboard.paste = \u4ece\u526a\u8d34\u677f\u7c98\u8d34\u77e9\u9635
+status.editing.autosave = \u60a8\u5df2\u8fdb\u5165\u7f16\u8f91\u6a21\u5f0f. \u70b9\u51fb\u4fdd\u5b58\u6309\u94ae\u4fdd\u5b58\u66f4\u6539. \u6216\u70b9\u51fb\u53d6\u6d88\u6309\u94ae\u653e\u5f03\u66f4\u6539. \u5982\u679c\u4f60\u5207\u6362\u5230\u5176\u4ed6\u6807\u7b7e, \u5f53\u524d\u7684\u66f4\u6539\u5c06\u4f1a\u81ea\u52a8\u4fdd\u5b58.
+error.sound.rate = \u5bfc\u5165\u7684\u58f0\u97f3\u5b58\u5728\u4e0d\u652f\u6301\u7684\u91c7\u6837\u7387: %saplingRate%.\r\n\
+ \u5728\u5bfc\u5165\u524d\u60a8\u5e94\u8be5\u5c06\u5176\u8f6c\u6362\u4e3a\u652f\u6301\u7684\u91c7\u6837\u7387(%supportedRates%).
+filter.movies = \u652f\u6301\u7684\u89c6\u9891\u683c\u5f0f(%extensions%)
+error.movie.invalid = \u89c6\u9891\u4e0d\u53ef\u7528.
+menu.file.import.movie = \u5bfc\u5165\u89c6\u9891
+message.info.importMovies2 = \u5bfc\u5165\u89c6\u9891\u65f6,\u60a8\u9700\u8981\u9009\u62e9\u4e00\u4e2a\u6587\u4ef6\u5939.\r\n \
+ \u6587\u4ef6\u5939\u7ed3\u6784\u9700\u8981\u4e0e\u5f53\u524dSWF\u5339\u914d.\r\n \
+ \u5982\u679c\u5b58\u5728"movies"\u5b50\u6587\u4ef6\u5939, \u8bf7\u9009\u62e9\u5b83.\r\n \
+ \u4f7f\u7ed3\u6784\u6b63\u786e\u7684\u6700\u597d\u529e\u6cd5\u662f\u5148\u5bfc\u51fa\u5f53\u524dSWF\u7684\u89c6\u9891.
+import.movie.result = \u5df2\u5bfc\u5165%count%\u4e2a\u89c6\u9891.
+menu.file.import.sound = \u5bfc\u5165\u58f0\u97f3
+message.info.importSounds2 = \u5bfc\u5165\u58f0\u97f3\u65f6,\u60a8\u9700\u8981\u9009\u62e9\u4e00\u4e2a\u6587\u4ef6\u5939.\r\n \
+ \u6587\u4ef6\u5939\u7ed3\u6784\u9700\u8981\u4e0e\u5f53\u524dSWF\u5339\u914d.\r\n \
+ \u5982\u679c\u5b58\u5728"sounds"\u5b50\u6587\u4ef6\u5939, \u8bf7\u9009\u62e9\u5b83.\r\n \
+ \u4f7f\u7ed3\u6784\u6b63\u786e\u7684\u6700\u597d\u529e\u6cd5\u662f\u5148\u5bfc\u51fa\u5f53\u524dSWF\u7684\u58f0\u97f3.
+import.sound.result = \u5df2\u5bfc\u5165%count%\u4e2a\u58f0\u97f3.
+#after 18.2.1
+button.edit.points = \u7f16\u8f91\u70b9
+edit.points.x = X:
+edit.points.y = Y:
+button.morph.show = \u663e\u793a:
+button.morph.animation = \u52a8\u753b
+button.morph.start = \u5f00\u59cb
+button.morph.end = \u7ed3\u675f
+header.displayrect.unit.pixels = \u50cf\u7d20
+header.displayrect.unit.twips = \u7f07
diff --git a/src/com/jpexs/decompiler/flash/gui/locales/NewFileDialog_zh.properties b/src/com/jpexs/decompiler/flash/gui/locales/NewFileDialog_zh.properties
new file mode 100644
index 000000000..0e5d63215
--- /dev/null
+++ b/src/com/jpexs/decompiler/flash/gui/locales/NewFileDialog_zh.properties
@@ -0,0 +1,24 @@
+# Copyright (C) 2022 JPEXS
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+dialog.title = \u65b0\u5efa\u6587\u4ef6
+background.color = \u80cc\u666f\u989c\u8272
+width = \u5bbd
+height = \u9ad8
+unit.pixels = \u50cf\u7d20
+unit.twips = \u7f07
+canvas.size = \u753b\u5e03\u5927\u5c0f
+script.type = \u811a\u672c\u7c7b\u578b
+script.type.actionscript1_2 = AS 1/2
+script.type.actionscript3 = AS 3
diff --git a/src/com/jpexs/decompiler/flash/gui/locales/SearchDialog_zh.properties b/src/com/jpexs/decompiler/flash/gui/locales/SearchDialog_zh.properties
index 6c04d7649..1f34dd357 100644
--- a/src/com/jpexs/decompiler/flash/gui/locales/SearchDialog_zh.properties
+++ b/src/com/jpexs/decompiler/flash/gui/locales/SearchDialog_zh.properties
@@ -16,8 +16,9 @@ checkbox.ignorecase = \u5ffd\u7565\u5927\u5c0f\u5199
checkbox.regexp = \u6b63\u5219\u8868\u8fbe\u5f0f
button.ok = \u786e\u5b9a
button.cancel = \u53d6\u6d88
-label.searchtext = \u641c\u7d22\u6587\u5b57:
-#dialog.title = \u641c\u7d22AS
+label.searchtext = \u641c\u7d22\u6587\u672c:
+label.replacementtext = \u66ff\u6362\u6587\u672c
+#dialog.title = ActionScript search
dialog.title = \u6587\u672c\u641c\u7d22
dialog.title.replace = \u6587\u672c\u66ff\u6362
@@ -29,9 +30,12 @@ checkbox.searchAS = \u5728AS\u4e2d\u641c\u7d22
checkbox.replaceInParameters = \u66ff\u6362\u53c2\u6570
checkbox.searchPCode = \u5728P-Code\u4e2d\u641c\u7d22
+#after 13.0.3
label.scope = \u8303\u56f4:
scope.currentFile = \u5f53\u524dSWF
scope.selection = \u9009\u4e2d(%selection%)
scope.allFiles = \u6240\u6709\u6253\u5f00\u7684SWF
scope.selection.items = %count%\u9879
+#after 16.3.1
+scope.currentFile.abc = \u5f53\u524dABC
diff --git a/src/com/jpexs/decompiler/flash/gui/locales/SelectTagPositionDialog_zh.properties b/src/com/jpexs/decompiler/flash/gui/locales/SelectTagPositionDialog_zh.properties
new file mode 100644
index 000000000..556cbba02
--- /dev/null
+++ b/src/com/jpexs/decompiler/flash/gui/locales/SelectTagPositionDialog_zh.properties
@@ -0,0 +1,18 @@
+# Copyright (C) 2022 JPEXS
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+dialog.title = \u9009\u62e9\u6807\u7b7e\u4f4d\u7f6e
+button.ok = \u786e\u5b9a
+button.cancel = \u53d6\u6d88
+timeline.end = \u65f6\u95f4\u8f74\u672b\u5c3e
diff --git a/src/com/jpexs/decompiler/flash/gui/locales/abc/AddClassDialog_zh.properties b/src/com/jpexs/decompiler/flash/gui/locales/abc/AddClassDialog_zh.properties
index 2da649b96..57126f60d 100644
--- a/src/com/jpexs/decompiler/flash/gui/locales/abc/AddClassDialog_zh.properties
+++ b/src/com/jpexs/decompiler/flash/gui/locales/abc/AddClassDialog_zh.properties
@@ -1,4 +1,23 @@
+# Copyright (C) 2021 JPEXS
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
dialog.title = \u6dfb\u52a0\u811a\u672c
button.ok = \u786e\u5b9a
button.cancel = \u53d6\u6d88
classname = \u5168\u9650\u5b9a\u7c7b\u540d
+#after 16.3.1
+button.proceed = \u7ee7\u7eed
+abc.where = \u521b\u5efa\u5b57\u8282\u4ee3\u7801\u7684\u4f4d\u7f6e
+abc.where.existing = \u5df2\u5b58\u5728\u7684DoABC\u6807\u7b7e
+abc.where.new = \u65b0\u5efaDoABC\u6807\u7b7e
diff --git a/src/com/jpexs/decompiler/flash/gui/locales/abc/DeobfuscationDialog_zh.properties b/src/com/jpexs/decompiler/flash/gui/locales/abc/DeobfuscationDialog_zh.properties
index da0c3ec78..c2c8a73b3 100644
--- a/src/com/jpexs/decompiler/flash/gui/locales/abc/DeobfuscationDialog_zh.properties
+++ b/src/com/jpexs/decompiler/flash/gui/locales/abc/DeobfuscationDialog_zh.properties
@@ -22,3 +22,8 @@ deobfuscation.restorecontrolflow = \u91cd\u5efa\u63a7\u5236\u6d41
button.ok = \u786e\u5b9a
button.cancel = \u53d6\u6d88
+deobfuscation.scope = \u8303\u56f4
+deobfuscation.scope.method = \u5f53\u524d\u65b9\u6cd5
+deobfuscation.scope.script = \u5f53\u524d\u811a\u672c
+deobfuscation.scope.swf = \u6574\u4e2aSWF
+warning.modify = \u8b66\u544a: \u6b64\u64cd\u4f5c\u5c06\u66f4\u6539\u6574\u4e2aSWF\u6587\u4ef6.\r\n\u5982\u679c\u4f60\u53ea\u9700\u8981\u53cd\u6df7\u6dc6\u663e\u793a, \r\n\u8bf7\u4f7f\u7528\u8bbe\u7f6e\u754c\u9762\u4e2d\u7684"\u81ea\u52a8\u53cd\u6df7\u6dc6"\u9009\u9879\r\n\u6216\u70b9\u51fb\u811a\u672c\u7f16\u8f91\u5668\u4e0a\u65b9\u7684\u5c0f\u836f\u4e38\u56fe\u6807.
diff --git a/src/com/jpexs/decompiler/flash/gui/locales/abc/SelectDoABCDialog_zh.properties b/src/com/jpexs/decompiler/flash/gui/locales/abc/SelectDoABCDialog_zh.properties
new file mode 100644
index 000000000..f12c15321
--- /dev/null
+++ b/src/com/jpexs/decompiler/flash/gui/locales/abc/SelectDoABCDialog_zh.properties
@@ -0,0 +1,17 @@
+# Copyright (C) 2022 JPEXS
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see .
+dialog.title = \u9009\u62e9DoABC\u6807\u7b7e
+button.ok = \u786e\u5b9a
+button.cancel = \u53d6\u6d88