diff --git a/jadx-gui/src/main/java/jadx/gui/utils/NLS.java b/jadx-gui/src/main/java/jadx/gui/utils/NLS.java
index 94b89d07a..9d91fd105 100644
--- a/jadx-gui/src/main/java/jadx/gui/utils/NLS.java
+++ b/jadx-gui/src/main/java/jadx/gui/utils/NLS.java
@@ -33,6 +33,7 @@ public class NLS {
LANG_LOCALES.add(new LangLocale("en", "US")); // As default language
LANG_LOCALES.add(new LangLocale("zh", "CN"));
+ LANG_LOCALES.add(new LangLocale("zh", "TW"));
LANG_LOCALES.add(new LangLocale("es", "ES"));
LANG_LOCALES.add(new LangLocale("de", "DE"));
LANG_LOCALES.add(new LangLocale("ko", "KR"));
diff --git a/jadx-gui/src/main/resources/i18n/Messages_zh_TW.properties b/jadx-gui/src/main/resources/i18n/Messages_zh_TW.properties
new file mode 100644
index 000000000..3419c46cd
--- /dev/null
+++ b/jadx-gui/src/main/resources/i18n/Messages_zh_TW.properties
@@ -0,0 +1,295 @@
+language.name=中文 (繁體)
+
+menu.file=檔案
+menu.view=檢視
+menu.recent_projects=近期專案
+menu.no_recent_projects=無近期專案
+menu.preferences=選項
+menu.sync=與編輯器同步
+menu.flatten=展開顯示套件
+menu.heapUsageBar=顯示記憶體使用率條
+menu.alwaysSelectOpened=總是選擇已開啟的檔案/類別
+menu.navigation=瀏覽
+menu.text_search=文字搜尋
+menu.class_search=類別搜尋
+menu.comment_search=註解搜尋
+menu.tools=工具
+menu.deobfuscation=去模糊化
+menu.log=日誌檢視器
+menu.help=幫助
+menu.about=關於
+menu.update_label=新版本 %s 可供下載!
+
+file.open_action=開啟檔案...
+file.add_files_action=新增檔案
+file.open_title=開啟檔案
+file.new_project=新建專案
+file.save_project=儲存專案
+file.save_project_as=另存專案...
+file.save_all=全部儲存
+file.export_gradle=另存為 gradle 專案
+file.save_all_msg=選擇儲存反編譯原始碼的路徑
+file.exit=離開
+
+tree.sources_title=原始碼
+tree.resources_title=資源
+tree.loading=載入中...
+
+progress.load=載入中
+progress.decompile=正在反編譯
+#progress.index=Indexing
+
+error_dialog.title=錯誤
+
+search.previous=上一個
+search.next=下一個
+search.mark_all=全部標記
+search.regex=Regex
+search.match_case=大小寫須相符
+search.whole_word=全字拼寫須相符
+search.find=尋找
+
+tabs.copy_class_name=複製名稱
+tabs.close=關閉
+tabs.closeOthers=關閉其他
+tabs.closeAll=關閉全部
+tabs.code=程式碼
+tabs.smali=Smali
+
+nav.back=返回
+nav.forward=向前
+
+message.taskTimeout=工作超過時間限制 (%d 毫秒)。
+message.userCancelTask=工作被使用者取消了。
+message.memoryLow=Jadx 的記憶體不足。請增加最大堆疊大小並重新啟動。
+message.taskError=工作發生錯誤 (查看日誌以了解詳情)。
+message.errorTitle=錯誤
+message.load_errors=載入失敗。\n錯誤數:%d\n點擊 OK 以開啟日誌檢視器
+message.no_classes=未載入任何類別,沒有東西可以反編譯!
+
+message.saveIncomplete=儲存未完成。
%s
%d 個類別或資源尚未儲存!
+message.indexIncomplete=某些類別的索引被略過。
%s
%d 個類別未被索引,故不會出現在搜尋結果中。
+message.indexingClassesSkipped=Jadx 的記憶體不足。故 %d 個類別未被索引。
如果您想要索引所有類別,請增加最大堆疊大小並重新啟動。
+
+heapUsage.text=JADX 記憶體使用率:%.2f GB / %.2f GB
+
+common_dialog.ok=Ok
+common_dialog.cancel=取消
+common_dialog.add=新增
+common_dialog.update=更新
+common_dialog.remove=移除
+
+search_dialog.open=開啟
+search_dialog.cancel=取消
+search_dialog.open_by_name=搜尋文字:
+search_dialog.search_in=搜尋定義:
+search_dialog.class=類別
+search_dialog.method=方法
+search_dialog.field=欄位
+search_dialog.code=程式碼
+search_dialog.options=搜尋選項:
+search_dialog.ignorecase=不區分大小寫
+search_dialog.next_page=顯示下一頁
+search_dialog.prev_page=顯示上一頁
+search_dialog.info_label=顯示搜尋結果 %1$d 至 %2$d (共 %3$d)
+search_dialog.col_node=無
+search_dialog.col_code=程式碼
+search_dialog.regex=Regex
+search_dialog.active_tab=僅使用中分頁
+search_dialog.comments=註解
+search_dialog.resource=資源
+search_dialog.keep_open=保持開啟
+search_dialog.tip_searching=正在搜尋 ...
+
+usage_dialog.title=使用情況搜尋
+usage_dialog.label=使用情況:
+
+comment_dialog.title.add=新增程式碼註解
+comment_dialog.title.update=更新程式碼註解
+comment_dialog.label=註解:
+comment_dialog.usage=按下 Shift + Enter 來換行
+
+log_viewer.title=日誌檢視器
+log_viewer.log_level=紀錄層級:
+
+about_dialog.title=關於 JADX
+
+preferences.title=選項
+preferences.deobfuscation=去模糊化
+preferences.appearance=外觀
+preferences.decompile=反編譯
+preferences.project=專案
+preferences.other=其他
+preferences.language=語言
+preferences.lineNumbersMode=編輯器行號模式
+preferences.check_for_updates=啟動時檢查更新
+preferences.fallback=後援模式 (簡易傾印)
+preferences.useDx=使用 dx/d8 來轉換 Java 位元組碼
+preferences.showInconsistentCode=顯示不一致的程式碼
+preferences.escapeUnicode=Unicode 逸出
+preferences.replaceConsts=替換常數
+preferences.respectBytecodeAccessModifiers=遵守位元組碼存取修飾詞
+preferences.useImports=使用 import 陳述式
+preferences.inlineAnonymous=內嵌匿名類別
+preferences.inlineMethods=內嵌方式
+preferences.fsCaseSensitive=檔案系統區分大小寫
+preferences.skipResourcesDecode=不要為資源解碼
+preferences.commentsLevel=程式碼註解層級
+preferences.autoSave=自動儲存
+preferences.threads=執行緒數
+preferences.excludedPackages=被排除的套件
+preferences.excludedPackages.tooltip=排除於索引或反編譯外的套件列表 (以空格分隔) (節省 RAM)
+preferences.excludedPackages.button=編輯
+preferences.excludedPackages.editDialog=排除於索引或反編譯外的套件列表 (以空格分隔) (節省 RAM)
例如 android.support
+preferences.cfg=產生方法 CFG 圖表 ('dot' 格式)
+preferences.raw_cfg=產生 RAW CFG 圖表
+preferences.font=編輯器字型
+preferences.smali_font=Smali 編輯器字型
+preferences.laf_theme=主題
+preferences.theme=編輯器主題
+preferences.start_jobs=自動開始背景反編譯
+preferences.select_font=變更
+preferences.select_smali_font=變更
+preferences.deobfuscation_on=啟用去模糊化
+preferences.deobfuscation_force=強制覆寫去模糊化對應檔
+preferences.deobfuscation_min_len=最小名稱長度
+preferences.deobfuscation_max_len=最大名稱長度
+preferences.deobfuscation_source_alias=將原始檔案名稱作為類別別名
+preferences.deobfuscation_kotlin_metadata=剖析 Kotlin 中繼資料來取得類別及套件名稱
+preferences.save=儲存
+preferences.cancel=取消
+preferences.reset=重設
+preferences.reset_message=要將設定重設為預設值嗎?
+preferences.reset_title=重設設定
+preferences.copy=複製至剪貼簿
+preferences.copy_message=已將所有設定值複製至剪貼簿
+preferences.rename=重新命名識別碼
+preferences.rename_case=以修復區分大小寫問題
+preferences.rename_valid=以使其有效
+preferences.rename_printable=以使其可列印
+preferences.search_res_title=搜尋資源
+preferences.res_file_ext=副檔名 (e.g. .xml|.html), * 表示全部
+preferences.res_skip_file=略過大於此值的檔案 (MB)
+
+msg.open_file=請開啟檔案
+msg.saving_sources=正在儲存原始碼
+msg.language_changed_title=已更改語言
+msg.language_changed=新語言將於下次應用程式啟動時套用。
+msg.index_not_initialized=索引尚未初始化,搜尋將被停用!
+msg.project_error_title=錯誤
+msg.project_error=無法載入專案
+msg.cmd_select_class_error=無法選擇類別\n%s\n類別不存在。
+msg.rename_node_disabled=無法重新命名此節點
+msg.rename_node_failed=無法重新命名 %s
+msg.cant_add_comment=無法在此新增註解
+
+popup.bytecode_col=顯示 Dalvik 位元組碼
+popup.line_wrap=自動換行
+popup.undo=復原
+popup.redo=取消復原
+popup.cut=剪下
+popup.copy=複製
+popup.paste=貼上
+popup.delete=刪除
+popup.select_all=全選
+popup.find_usage=尋找使用情況
+popup.go_to_declaration=前往宣告
+popup.exclude=排除
+popup.exclude_packages=排除套件
+popup.add_comment=註解
+popup.search_comment=搜尋註解
+popup.rename=重新命名
+popup.search=搜尋 "%s"
+popup.search_global=全域搜尋 "%s"
+
+exclude_dialog.title=套件選擇
+exclude_dialog.ok=OK
+exclude_dialog.select_all=全選
+exclude_dialog.deselect=取消選取
+exclude_dialog.invert=反轉選取
+
+confirm.save_as_title=確認另存為
+confirm.save_as_message=%s 已存在。\n您要覆寫它嗎?
+confirm.not_saved_title=儲存專案
+confirm.not_saved_message=在繼續進行前要先儲存目前專案嗎?
+
+certificate.cert_type=類型
+certificate.serialSigVer=版本
+certificate.serialNumber=序號
+certificate.cert_subject=主體
+certificate.serialValidFrom=有效期自
+certificate.serialValidUntil=有效期限
+certificate.serialPubKeyType=公鑰類型
+certificate.serialPubKeyExponent=指數
+certificate.serialPubKeyModulus=模數
+certificate.serialPubKeyModulusSize=模數大小 (位元)
+certificate.serialSigType=簽名類型
+certificate.serialSigOID=簽名 OID
+certificate.serialMD5=MD5 指紋
+certificate.serialSHA1=SHA-1 指紋
+certificate.serialSHA256=SHA-256 指紋
+certificate.serialPubKeyY=Y
+
+apkSignature.signer=簽署者
+apkSignature.verificationSuccess=簽名驗證成功
+apkSignature.verificationFailed=簽名驗證失敗
+apkSignature.signatureSuccess=找到可用的 APK 簽名 v%d
+apkSignature.signatureFailed=找到無效的 APK 簽名 v%d
+apkSignature.errors=錯誤
+apkSignature.warnings=警告
+apkSignature.exception=APK 驗證失敗
+apkSignature.unprotectedEntry=未被 APK 簽名 v1 保護的檔案。對這些項目進行未經授權的更動僅能由 APK 簽名 v2 及以上版本偵測。
+
+issues_panel.label=問題:
+issues_panel.errors=%d 錯誤
+issues_panel.warnings=%d 警告
+issues_panel.tooltip=在日誌檢視器中開啟
+
+debugger.process_selector=選擇要偵錯的處理程序
+debugger.step_into=逐步執行 (F7)
+debugger.step_over=不進入函式 (F8)
+debugger.step_out=跳離函式 (Shift + F8)
+debugger.run=執行 (F9)
+debugger.stop=停止偵錯工具並終止應用程式
+debugger.pause=暫停
+debugger.rerun=重新執行
+debugger.cfm_dialog_title=偵錯時離開
+debugger.cfm_dialog_msg=您確定要終止除錯工具嗎?
+
+debugger.popup_set_value=設置數值
+debugger.popup_change_to_zero=修改為 0
+debugger.popup_change_to_one=修改為 1
+debugger.popup_copy_value=複製數值
+
+set_value_dialog.label_value=數值
+set_value_dialog.btn_set=設置數值
+set_value_dialog.title=設置數值
+set_value_dialog.neg_msg=設置數值失敗。
+set_value_dialog.sel_type=選擇要設置數值的類型。
+
+adb_dialog.addr=ADB 位址
+adb_dialog.port=ADB 連接埠
+adb_dialog.path=ADB 路徑
+adb_dialog.launch_app=啟動應用程式
+adb_dialog.start_server=啟動 ADB 伺服器
+adb_dialog.refresh=重新整理
+adb_dialog.tip_devices=%d 裝置
+adb_dialog.device_node=裝置
+adb_dialog.missing_path=必須提供 ADB 路徑才能啟動 ADB 伺服器。
+adb_dialog.waiting=正在等待連接至 ADB 伺服器...
+adb_dialog.connecting=正在連接至 ADB 伺服器,位址:%s:%s...
+adb_dialog.connect_okay=已連接至 ADB 伺服器,位址:%s:%s
+adb_dialog.connect_fail=無法連接至 ADB 伺服器。
+adb_dialog.disconnected=已與 ADB 伺服器斷開連線。
+adb_dialog.start_okay=ADB 伺服器已於此連接埠啟動:%s。
+adb_dialog.start_fail=無法於此連接埠啟動 ADB 伺服器:%s!
+adb_dialog.forward_fail=因某些原因而無法轉發。
+adb_dialog.being_debugged_msg=此執行程序貌似已在偵錯,要繼續嗎?
+adb_dialog.unknown_android_ver=無法取得 Android 發行版本,是否要使用預設版本 Android 8?
+adb_dialog.being_debugged_title=正在由他人偵錯。
+adb_dialog.init_dbg_fail=無法初始化偵錯工具。
+adb_dialog.msg_read_mani_fail=無法解碼 AndroidManifest.xml
+adb_dialog.no_devices=無法找到任何可以啟動應用程式的裝置。
+adb_dialog.restart_while_debugging_title=偵錯時重新啟動
+adb_dialog.restart_while_debugging_msg=您正在為應用程式偵錯,您確定要重新啟動工作階段嗎?
+adb_dialog.starting_debugger=正在啟動偵錯工具...