diff --git a/language/np3_zh_cn/dialogs_zh_cn.rc b/language/np3_zh_cn/dialogs_zh_cn.rc
new file mode 100644
index 000000000..8f19d12ad
Binary files /dev/null and b/language/np3_zh_cn/dialogs_zh_cn.rc differ
diff --git a/language/np3_zh_cn/dllmain.cpp b/language/np3_zh_cn/dllmain.cpp
new file mode 100644
index 000000000..fa05c50f9
Binary files /dev/null and b/language/np3_zh_cn/dllmain.cpp differ
diff --git a/language/np3_zh_cn/encode_zh_cn.rc b/language/np3_zh_cn/encode_zh_cn.rc
new file mode 100644
index 000000000..861bfade1
Binary files /dev/null and b/language/np3_zh_cn/encode_zh_cn.rc differ
diff --git a/language/np3_zh_cn/lexer_zh_cn.rc b/language/np3_zh_cn/lexer_zh_cn.rc
new file mode 100644
index 000000000..eade05315
Binary files /dev/null and b/language/np3_zh_cn/lexer_zh_cn.rc differ
diff --git a/language/np3_zh_cn/menu_zh_cn.rc b/language/np3_zh_cn/menu_zh_cn.rc
new file mode 100644
index 000000000..42f115b9e
Binary files /dev/null and b/language/np3_zh_cn/menu_zh_cn.rc differ
diff --git a/language/np3_zh_cn/np3_zh_cn.cpp b/language/np3_zh_cn/np3_zh_cn.cpp
new file mode 100644
index 000000000..43ae795b9
Binary files /dev/null and b/language/np3_zh_cn/np3_zh_cn.cpp differ
diff --git a/language/np3_zh_cn/np3_zh_cn.rc b/language/np3_zh_cn/np3_zh_cn.rc
new file mode 100644
index 000000000..861b0a688
Binary files /dev/null and b/language/np3_zh_cn/np3_zh_cn.rc differ
diff --git a/language/np3_zh_cn/np3_zh_cn.vcxproj b/language/np3_zh_cn/np3_zh_cn.vcxproj
new file mode 100644
index 000000000..52af88355
--- /dev/null
+++ b/language/np3_zh_cn/np3_zh_cn.vcxproj
@@ -0,0 +1,264 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Release
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ x64
+
+
+
+ 15.0
+ {7E16647B-CA40-43E8-8ABB-E4C430C186CA}
+ Win32Proj
+ np3zhcn
+ 10.0.17134.0
+
+
+
+ DynamicLibrary
+ true
+ v141
+ Unicode
+
+
+ DynamicLibrary
+ false
+ v141
+ true
+ Unicode
+
+
+ DynamicLibrary
+ true
+ v141
+ Unicode
+
+
+ DynamicLibrary
+ false
+ v141
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ ..\..\Bin\$(Configuration)_$(PlatformShortName)_$(PlatformToolset)\lng\obj\
+ ..\..\Bin\$(Configuration)_$(PlatformShortName)_$(PlatformToolset)\obj\$(ProjectName)\
+ false
+
+
+ true
+ ..\..\Bin\$(Configuration)_$(PlatformShortName)_$(PlatformToolset)\lng\obj\
+ ..\..\Bin\$(Configuration)_$(PlatformShortName)_$(PlatformToolset)\obj\$(ProjectName)\
+ false
+
+
+ false
+ ..\..\Bin\$(Configuration)_$(PlatformShortName)_$(PlatformToolset)\lng\obj\
+ ..\..\Bin\$(Configuration)_$(PlatformShortName)_$(PlatformToolset)\obj\$(ProjectName)\
+ false
+
+
+ false
+ ..\..\Bin\$(Configuration)_$(PlatformShortName)_$(PlatformToolset)\lng\obj\
+ ..\..\Bin\$(Configuration)_$(PlatformShortName)_$(PlatformToolset)\obj\$(ProjectName)\
+ false
+
+
+
+ Use
+ Level3
+ Disabled
+ true
+ _DEBUG;NP3ENUS_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
+ true
+
+
+ Windows
+ true
+
+
+ mkdir "$(TargetDir)..\zh-CN"
+"$(UCRTContentRoot)bin\$(WindowsTargetPlatformVersion)\x86\muirct.exe" -q "$(SolutionDir)language\DoReverseMuiLoc.rcconfig" -v 2 -x 0x0804 -g 0x0409 "$(TargetDir)$(TargetFileName)" "$(TargetDir)$(TargetFileName).discard" "$(TargetDir)..\zh-CN\np3lng.dll.mui"
+"$(UCRTContentRoot)bin\$(WindowsTargetPlatformVersion)\x86\muirct.exe" -c "$(TargetDir)..\np3lng.dll" -e "$(TargetDir)..\zh-CN\np3lng.dll.mui"
+
+
+
+ MUI Split
+
+
+ 0x0804
+ $(ProjectDir)..\..\res;%(AdditionalIncludeDirectories)
+
+
+
+
+ Use
+ Level3
+ Disabled
+ true
+ WIN32;_DEBUG;NP3ENUS_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
+ true
+
+
+ Windows
+ true
+
+
+ mkdir "$(TargetDir)..\zh-CN"
+"$(UCRTContentRoot)bin\$(WindowsTargetPlatformVersion)\x86\muirct.exe" -q "$(SolutionDir)language\DoReverseMuiLoc.rcconfig" -v 2 -x 0x0804 -g 0x0409 "$(TargetDir)$(TargetFileName)" "$(TargetDir)$(TargetFileName).discard" "$(TargetDir)..\zh-CN\np3lng.dll.mui"
+"$(UCRTContentRoot)bin\$(WindowsTargetPlatformVersion)\x86\muirct.exe" -c "$(TargetDir)..\np3lng.dll" -e "$(TargetDir)..\zh-CN\np3lng.dll.mui"
+
+
+
+ MUI Split
+
+
+ 0x0804
+ $(ProjectDir)..\..\res;%(AdditionalIncludeDirectories)
+
+
+
+
+ Use
+ Level3
+ MaxSpeed
+ true
+ true
+ true
+ WIN32;NDEBUG;NP3ENUS_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
+ true
+
+
+ Windows
+ true
+ true
+ true
+
+
+ mkdir "$(TargetDir)..\zh-CN"
+"$(UCRTContentRoot)bin\$(WindowsTargetPlatformVersion)\x86\muirct.exe" -q "$(SolutionDir)language\DoReverseMuiLoc.rcconfig" -v 2 -x 0x0804 -g 0x0409 "$(TargetDir)$(TargetFileName)" "$(TargetDir)$(TargetFileName).discard" "$(TargetDir)..\zh-CN\np3lng.dll.mui"
+"$(UCRTContentRoot)bin\$(WindowsTargetPlatformVersion)\x86\muirct.exe" -c "$(TargetDir)..\np3lng.dll" -e "$(TargetDir)..\zh-CN\np3lng.dll.mui"
+
+
+
+ MUI Split
+
+
+ 0x0804
+ $(ProjectDir)..\..\res;%(AdditionalIncludeDirectories)
+
+
+
+
+ Use
+ Level3
+ MaxSpeed
+ true
+ true
+ true
+ NDEBUG;NP3ENUS_EXPORTS;_WINDOWS;_USRDLL;%(PreprocessorDefinitions)
+ true
+
+
+ Windows
+ true
+ true
+ true
+
+
+ mkdir "$(TargetDir)..\zh-CN"
+"$(UCRTContentRoot)bin\$(WindowsTargetPlatformVersion)\x86\muirct.exe" -q "$(SolutionDir)language\DoReverseMuiLoc.rcconfig" -v 2 -x 0x0804 -g 0x0409 "$(TargetDir)$(TargetFileName)" "$(TargetDir)$(TargetFileName).discard" "$(TargetDir)..\zh-CN\np3lng.dll.mui"
+"$(UCRTContentRoot)bin\$(WindowsTargetPlatformVersion)\x86\muirct.exe" -c "$(TargetDir)..\np3lng.dll" -e "$(TargetDir)..\zh-CN\np3lng.dll.mui"
+
+
+
+ MUI Split
+
+
+ 0x0804
+ $(ProjectDir)..\..\res;%(AdditionalIncludeDirectories)
+
+
+
+
+
+
+
+
+
+
+
+ Create
+ Create
+ Create
+ Create
+
+
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+ true
+ true
+ true
+ true
+
+
+
+ true
+ true
+ true
+ true
+
+
+
+
+
+
\ No newline at end of file
diff --git a/language/np3_zh_cn/np3_zh_cn.vcxproj.filters b/language/np3_zh_cn/np3_zh_cn.vcxproj.filters
new file mode 100644
index 000000000..b6e7fab9a
--- /dev/null
+++ b/language/np3_zh_cn/np3_zh_cn.vcxproj.filters
@@ -0,0 +1,59 @@
+
+
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hh;hpp;hxx;hm;inl;inc;ipp;xsd
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+ Resource Files
+
+
+ Resource Files
+
+
+ Resource Files
+
+
+ Resource Files
+
+
+ Resource Files
+
+
+ Resource Files
+
+
+
\ No newline at end of file
diff --git a/language/np3_zh_cn/resource.h b/language/np3_zh_cn/resource.h
new file mode 100644
index 000000000..3970b4a0d
--- /dev/null
+++ b/language/np3_zh_cn/resource.h
@@ -0,0 +1,16 @@
+//{{NO_DEPENDENCIES}}
+// Von Microsoft Visual C++ generierte Includedatei.
+// Verwendet durch strings_zh_cn.rc
+//
+
+// Next default values for new objects
+//
+#ifdef APSTUDIO_INVOKED
+#ifndef APSTUDIO_READONLY_SYMBOLS
+#define _APS_NO_MFC 1
+#define _APS_NEXT_RESOURCE_VALUE 0
+#define _APS_NEXT_COMMAND_VALUE 0
+#define _APS_NEXT_CONTROL_VALUE 0
+#define _APS_NEXT_SYMED_VALUE 0
+#endif
+#endif
diff --git a/language/np3_zh_cn/stdafx.cpp b/language/np3_zh_cn/stdafx.cpp
new file mode 100644
index 000000000..83933fc33
Binary files /dev/null and b/language/np3_zh_cn/stdafx.cpp differ
diff --git a/language/np3_zh_cn/stdafx.h b/language/np3_zh_cn/stdafx.h
new file mode 100644
index 000000000..4ca98c3b3
Binary files /dev/null and b/language/np3_zh_cn/stdafx.h differ
diff --git a/language/np3_zh_cn/strings_zh_cn.rc b/language/np3_zh_cn/strings_zh_cn.rc
new file mode 100644
index 000000000..ba3784328
Binary files /dev/null and b/language/np3_zh_cn/strings_zh_cn.rc differ
diff --git a/language/np3_zh_cn/targetver.h b/language/np3_zh_cn/targetver.h
new file mode 100644
index 000000000..6fcbd5af9
Binary files /dev/null and b/language/np3_zh_cn/targetver.h differ
diff --git a/src/Notepad3.c b/src/Notepad3.c
index 688e71c12..392d915c3 100644
--- a/src/Notepad3.c
+++ b/src/Notepad3.c
@@ -134,9 +134,9 @@ bool g_bFindReplCopySelOrClip = true;
WCHAR g_tchPrefLngLocName[MINI_BUFFER];
LANGID g_iPrefLngLocID = MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT);
HMODULE g_hLngResContainer = NULL;
-#define LNG_AVAILABLE_COUNT 6
-static WCHAR* const g_tchAvailableLanguages = L"af-ZA de-DE es-ES en-GB fr-FR nl-NL"; // en-US internal
-static LANGID const g_iAvailableLanguages[LNG_AVAILABLE_COUNT] = { 1078, 1031, 3082, 2057, 1036, 1043 }; // 1033 internal
+#define LNG_AVAILABLE_COUNT 7
+static WCHAR* const g_tchAvailableLanguages = L"af-ZA de-DE es-ES en-GB fr-FR nl-NL zh-CN"; // en-US internal
+static LANGID const g_iAvailableLanguages[LNG_AVAILABLE_COUNT] = { 1078, 1031, 3082, 2057, 1036, 1043, 2052 }; // 1033 internal
WCHAR g_tchFileDlgFilters[XXXL_BUFFER] = { L'\0' };