diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Localization/zh-Hant.json b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Localization/zh-Hant.json
new file mode 100644
index 0000000000..12eea67007
--- /dev/null
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy/Volo/Abp/AspNetCore/Mvc/UI/MultiTenancy/Localization/zh-Hant.json
@@ -0,0 +1,12 @@
+{
+ "culture": "zh-Hant",
+ "texts": {
+ "GivenTenantIsNotAvailable": "指定的租戶不可用: {0}",
+ "SwitchTenant": "切換租戶",
+ "Name": "名稱",
+ "SwitchTenantHint": "將name欄位留空以切換到主控端.",
+ "Tenant": "租戶",
+ "Switch": "切換",
+ "NotSelected": "尚未選定"
+ }
+}
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo.Abp.Ddd.Application.Contracts.csproj b/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo.Abp.Ddd.Application.Contracts.csproj
index 6f1674f8ce..7da250da5a 100644
--- a/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo.Abp.Ddd.Application.Contracts.csproj
+++ b/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo.Abp.Ddd.Application.Contracts.csproj
@@ -15,9 +15,9 @@
+
-
diff --git a/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/Localization/Resources/AbpDdd/zh-Hant.json b/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/Localization/Resources/AbpDdd/zh-Hant.json
new file mode 100644
index 0000000000..97a615e901
--- /dev/null
+++ b/framework/src/Volo.Abp.Ddd.Application.Contracts/Volo/Abp/Application/Localization/Resources/AbpDdd/zh-Hant.json
@@ -0,0 +1,6 @@
+{
+ "culture": "zh-Hant",
+ "texts": {
+ "MaxResultCountExceededExceptionMessage": "{0}禁止超過{1}! 請在伺服器端增加{2}.{3}以獲得更多結果."
+ }
+}
diff --git a/framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/Localization/zh-Hant.json b/framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/Localization/zh-Hant.json
new file mode 100644
index 0000000000..a66a6d2ff8
--- /dev/null
+++ b/framework/src/Volo.Abp.Emailing/Volo/Abp/Emailing/Localization/zh-Hant.json
@@ -0,0 +1,23 @@
+{
+ "culture": "zh-Hant",
+ "texts": {
+ "DisplayName:Abp.Mailing.DefaultFromAddress": "預設發信者地址",
+ "DisplayName:Abp.Mailing.DefaultFromDisplayName": "預設發信者名稱",
+ "DisplayName:Abp.Mailing.Smtp.Host": "主機",
+ "DisplayName:Abp.Mailing.Smtp.Port": "埠號",
+ "DisplayName:Abp.Mailing.Smtp.UserName": "使用者名稱",
+ "DisplayName:Abp.Mailing.Smtp.Password": "密碼",
+ "DisplayName:Abp.Mailing.Smtp.Domain": "網域",
+ "DisplayName:Abp.Mailing.Smtp.EnableSsl": "啟用SSL",
+ "DisplayName:Abp.Mailing.Smtp.UseDefaultCredentials": "使用預設憑證",
+ "Description:Abp.Mailing.DefaultFromAddress": "預設的發信者地址.",
+ "Description:Abp.Mailing.DefaultFromDisplayName": "預設的發信者名稱.",
+ "Description:Abp.Mailing.Smtp.Host": "SMTP 服務的主機名稱或主機IP位址.",
+ "Description:Abp.Mailing.Smtp.Port": "SMTP 服務的埠號.",
+ "Description:Abp.Mailing.Smtp.UserName": "憑證使用者名稱.",
+ "Description:Abp.Mailing.Smtp.Password": "憑證使用者密碼.",
+ "Description:Abp.Mailing.Smtp.Domain": "驗證憑證的網域名稱或電腦名稱.",
+ "Description:Abp.Mailing.Smtp.EnableSsl": "設定 SmtpClient 是否使用安全通訊協定.",
+ "Description:Abp.Mailing.Smtp.UseDefaultCredentials": "設定是否使用預設憑證."
+ }
+}
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpLocalization/zh-Hant.json b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpLocalization/zh-Hant.json
new file mode 100644
index 0000000000..9ff62f43bb
--- /dev/null
+++ b/framework/src/Volo.Abp.Localization/Volo/Abp/Localization/Resources/AbpLocalization/zh-Hant.json
@@ -0,0 +1,7 @@
+{
+ "culture": "zh-Hant",
+ "texts": {
+ "DisplayName:Abp.Localization.DefaultLanguage": "預設語系",
+ "Description:Abp.Localization.DefaultLanguage": "應用程式的預設語系."
+ }
+}
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Localization/Resource/zh-Hant.json b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Localization/Resource/zh-Hant.json
new file mode 100644
index 0000000000..a592b42fff
--- /dev/null
+++ b/framework/src/Volo.Abp.UI.Navigation/Volo/Abp/Ui/Navigation/Localization/Resource/zh-Hant.json
@@ -0,0 +1,6 @@
+{
+ "culture": "zh-Hant",
+ "texts": {
+ "Menu:Administration": "管理"
+ }
+}
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hant.json b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hant.json
new file mode 100644
index 0000000000..d19dc7cbc6
--- /dev/null
+++ b/framework/src/Volo.Abp.UI/Localization/Resources/AbpUi/zh-Hant.json
@@ -0,0 +1,58 @@
+{
+ "culture": "zh-Hant",
+ "texts": {
+ "InternalServerErrorMessage": "對不起,在處理你的請求期間,產生了一個伺服器內部錯誤!",
+ "ValidationErrorMessage": "你的請求無效!",
+ "ValidationNarrativeErrorMessageTitle": "驗證時發現以下錯誤.",
+ "DefaultErrorMessage": "發生錯誤!",
+ "DefaultErrorMessageDetail": "伺服器未發送錯誤的詳細信息.",
+ "DefaultErrorMessage401": "未通過身份驗證!",
+ "DefaultErrorMessage401Detail": "你需要進行身份認證(登入)後再執行此操作.",
+ "DefaultErrorMessage403": "你沒有權限!",
+ "DefaultErrorMessage403Detail": "你不能執行此操作!",
+ "DefaultErrorMessage404": "未找到資源!",
+ "DefaultErrorMessage404Detail": "未在服務中找到請求的資源!",
+ "EntityNotFoundErrorMessage": "實體 {0} 不存在,id = {1}!",
+ "Error": "錯誤",
+ "AreYouSure": "你確定嗎?",
+ "Cancel": "取消",
+ "Yes": "是",
+ "No": "否",
+ "Close": "關閉",
+ "Save": "保存",
+ "SavingWithThreeDot": "保存中...",
+ "Actions": "操作",
+ "Delete": "刪除",
+ "Edit": "修改",
+ "Refresh": "刷新",
+ "ProcessingWithThreeDot": "處理中...",
+ "LoadingWithThreeDot": "載入中...",
+ "Welcome": "歡迎",
+ "Login": "登入",
+ "Register": "註冊",
+ "Logout": "登出",
+ "Submit": "提交",
+ "Back": "返回",
+ "PagerSearch": "搜尋",
+ "PagerNext": "下一頁",
+ "PagerPrevious": "上一頁",
+ "PagerFirst": "首頁",
+ "PagerLast": "末頁",
+ "PagerInfo": "顯示 _TOTAL_ 個紀錄的 _START_ 到 _END_ 個.",
+ "PagerInfoEmpty": "顯示0個紀錄中的0到0",
+ "PagerInfoFiltered": "(從 _MAX_ 所有紀錄中過濾掉)",
+ "NoDataAvailableInDatatable": "資料表中沒有資料",
+ "PagerShowMenuEntries": "顯示 _MENU_ 實體",
+ "DatatableActionDropdownDefaultText": "操作",
+ "ChangePassword": "修改密碼",
+ "PersonalInfo": "個人資料",
+ "AreYouSureYouWantToCancelEditingWarningMessage": "你有未保存的更改.",
+ "UnhandledException": "未處理的異常!",
+ "401Message": "未授權",
+ "403Message": "禁止訪問",
+ "404Message": "網頁未找到",
+ "500Message": "內部伺服器錯誤",
+ "GoHomePage": "返回首頁",
+ "GoBack": "返回"
+ }
+}
\ No newline at end of file
diff --git a/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/zh-Hant.json b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/zh-Hant.json
new file mode 100644
index 0000000000..1e7e419625
--- /dev/null
+++ b/framework/src/Volo.Abp.Validation/Volo/Abp/Validation/Localization/zh-Hant.json
@@ -0,0 +1,34 @@
+{
+ "culture": "zh-Hant",
+ "texts": {
+ "'{0}' and '{1}' do not match.": "'{0}'與'{1}'不匹配.",
+ "The {0} field is not a valid credit card number.": "欄位{0}不是有效的信用卡號碼.",
+ "{0} is not valid.": "{0}驗證未通過.",
+ "The {0} field is not a valid e-mail address.": "欄位{0}不是有效的電子郵件地址.",
+ "The {0} field only accepts files with the following extensions: {1}": "{0}欄位只允許以下副檔名的文件: {1}",
+ "The field {0} must be a string or array type with a maximum length of '{1}'.": "欄位{0}必須是最大長度為'{1}'的字串或陣列.",
+ "The field {0} must be a string or array type with a minimum length of '{1}'.": "欄位{0}必須是最小長度為'{1}'的字串或陣列.",
+ "The {0} field is not a valid phone number.": "欄位{0}不是有效的電話號碼.",
+ "The field {0} must be between {1} and {2}.": "欄位{0}值必須在{1}和{2}範圍內.",
+ "The field {0} must match the regular expression '{1}'.": "欄位{0}必須匹配正規表示式'{1}'.",
+ "The {0} field is required.": "欄位{0}不可為空.",
+ "The field {0} must be a string with a maximum length of {1}.": "欄位{0}必須是長度為{1}的字串.",
+ "The field {0} must be a string with a minimum length of {2} and a maximum length of {1}.": "欄位{0}必須是最小長度為{2}並且最大長度{1}的字串.",
+ "The {0} field is not a valid fully-qualified http, https, or ftp URL.": "欄位{0}不是有效的完全限定的http,https或ftp URL.",
+ "The field {0} is invalid.": "此欄位{0}是無效值.",
+ "ThisFieldIsNotAValidCreditCardNumber.": "此欄位不是有效的信用卡號碼.",
+ "ThisFieldIsNotValid.": "此驗證未通過.",
+ "ThisFieldIsNotAValidEmailAddress.": "此欄位不是有效的郵箱地址.",
+ "ThisFieldOnlyAcceptsFilesWithTheFollowingExtensions:{0}": "此欄位只允許以下副檔名的文件: {0}",
+ "ThisFieldMustBeAStringOrArrayTypeWithAMaximumLengthoOf{0}": "此欄位必須是最大長度為'{0}'的字串或陣列.",
+ "ThisFieldMustBeAStringOrArrayTypeWithAMinimumLengthOf{0}": "此欄位必須是最小長度為'{0}'的字串或陣列.",
+ "ThisFieldIsNotAValidPhoneNumber.": "此欄位不是有效的電話號碼.",
+ "ThisFieldMustBeBetween{0}And{1}": "此欄位值必須在{0}和{1}範圍內.",
+ "ThisFieldMustMatchTheRegularExpression{0}": "此欄位必須匹配正規表示式'{0}'.",
+ "ThisFieldIsRequired.": "此欄位不可為空.",
+ "ThisFieldMustBeAStringWithAMaximumLengthOf{0}": "此欄位必須是長度為{0}的字串.",
+ "ThisFieldMustBeAStringWithAMinimumLengthOf{1}AndAMaximumLengthOf{0}": "此欄位必須是最小長度為{1}並且最大長度{0}的字串.",
+ "ThisFieldIsNotAValidFullyQualifiedHttpHttpsOrFtpUrl": "此欄位不是有效的完全限定的http,https或ftp URL.",
+ "ThisFieldIsInvalid.": "此欄位是無效值."
+ }
+}
\ No newline at end of file
diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/Resource/zh-Hant.json b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/Resource/zh-Hant.json
new file mode 100644
index 0000000000..c70842f0b2
--- /dev/null
+++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Localization/Resource/zh-Hant.json
@@ -0,0 +1,7 @@
+{
+ "culture": "zh-Hant",
+ "texts": {
+ "BirthDate": "生日",
+ "Value1": "值1"
+ }
+}
\ No newline at end of file
diff --git a/framework/test/Volo.Abp.Emailing.Tests/Volo/Abp/Emailing/Localization/zh-Hant.json b/framework/test/Volo.Abp.Emailing.Tests/Volo/Abp/Emailing/Localization/zh-Hant.json
new file mode 100644
index 0000000000..dd12964f70
--- /dev/null
+++ b/framework/test/Volo.Abp.Emailing.Tests/Volo/Abp/Emailing/Localization/zh-Hant.json
@@ -0,0 +1,6 @@
+{
+ "culture": "zh-Hant",
+ "texts": {
+ "hello": "哈囉"
+ }
+}
\ No newline at end of file
diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/CountryNames/zh-Hant.json b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/CountryNames/zh-Hant.json
new file mode 100644
index 0000000000..8ce2ad288a
--- /dev/null
+++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/CountryNames/zh-Hant.json
@@ -0,0 +1,7 @@
+{
+ "culture": "zh-Hant",
+ "texts": {
+ "USA": "美國",
+ "Brazil": "巴西"
+ }
+}
\ No newline at end of file
diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/Validation/zh-Hant.json b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/Validation/zh-Hant.json
new file mode 100644
index 0000000000..1c0f506d34
--- /dev/null
+++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Base/Validation/zh-Hant.json
@@ -0,0 +1,7 @@
+{
+ "culture": "zh-Hant",
+ "texts": {
+ "ThisFieldIsRequired": "此欄位為必填欄位",
+ "MaxLenghtErrorMessage": "此欄位最多可包含'{0}'個字元"
+ }
+}
\ No newline at end of file
diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/zh-Hant.json b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/zh-Hant.json
new file mode 100644
index 0000000000..17289c28ea
--- /dev/null
+++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/Source/zh-Hant.json
@@ -0,0 +1,11 @@
+{
+ "culture": "zh-Hans",
+ "texts": {
+ "Hello {0}.": "您好 {0}.",
+ "Car": "汽車",
+ "CarPlural": "汽車",
+ "MaxLenghtErrorMessage": "此欄位的長度最多'{0}'個字元",
+ "Universe": "宇宙",
+ "FortyTwo": "四十二"
+ }
+}
\ No newline at end of file
diff --git a/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/SourceExt/zh-Hant.json b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/SourceExt/zh-Hant.json
new file mode 100644
index 0000000000..c779d77a25
--- /dev/null
+++ b/framework/test/Volo.Abp.Localization.Tests/Volo/Abp/Localization/TestResources/SourceExt/zh-Hant.json
@@ -0,0 +1,6 @@
+{
+ "culture": "zh-Hant",
+ "texts": {
+ "SeeYou": "再會"
+ }
+}
\ No newline at end of file