diff --git a/.gitignore b/.gitignore index 7134f6d3..5d4ff2c3 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ /*.o /zh_CN.qm /en_US.qm +/vi_VN.qm /fk_ver # IDE & LSP diff --git a/CMakeLists.txt b/CMakeLists.txt index 3ecd9c80..5bed8f25 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -49,6 +49,9 @@ if (NOT DEFINED FK_SERVER_ONLY) TS_FILES lang/en_US.ts QM_FILES_OUTPUT_VARIABLE en_US.qm + + TS_FILES lang/vi_VN.ts + QM_FILES_OUTPUT_VARIABLE vi_VN.qm ) endif() diff --git a/CMakeLists.txt.OSX b/CMakeLists.txt.OSX index 7788de68..42d318e7 100644 --- a/CMakeLists.txt.OSX +++ b/CMakeLists.txt.OSX @@ -55,6 +55,9 @@ if (NOT DEFINED FK_SERVER_ONLY) TS_FILES lang/en_US.ts QM_FILES_OUTPUT_VARIABLE en_US.qm + + TS_FILES lang/vi_VN.ts + QM_FILES_OUTPUT_VARIABLE vi_VN.qm ) endif() diff --git a/Fk/Config.qml b/Fk/Config.qml index edecced3..1945c132 100644 --- a/Fk/Config.qml +++ b/Fk/Config.qml @@ -125,6 +125,8 @@ QtObject { let ret = SysLocale; if (ret.startsWith('zh_')) { return 'zh_CN'; + } else if (ret.startsWith('vi_')) { + return 'vi_VN'; } else { return 'en_US'; } diff --git a/Fk/LobbyElement/BGSetting.qml b/Fk/LobbyElement/BGSetting.qml index 5076ade5..d2ecb2c0 100644 --- a/Fk/LobbyElement/BGSetting.qml +++ b/Fk/LobbyElement/BGSetting.qml @@ -93,7 +93,7 @@ ColumnLayout { text: "Language" } ComboBox { - model: ["zh_CN", "en_US"] + model: ["zh_CN", "en_US", "vi_VN"] currentIndex: model.indexOf(config.language) onCurrentTextChanged: { config.language = currentText; } } diff --git a/android/copy_assets.sh b/android/copy_assets.sh index 1bbce88c..be511d08 100755 --- a/android/copy_assets.sh +++ b/android/copy_assets.sh @@ -32,6 +32,7 @@ cp ../server/init.sql assets/res/server cp ../LICENSE assets/res cp ../zh_CN.qm assets/res cp ../en_US.qm assets/res +cp ../vi_VN.qm assets/res cp ../fk_ver assets/res cp ../waiting_tips.txt assets/res diff --git a/lang/vi_VN.ts b/lang/vi_VN.ts new file mode 100644 index 00000000..c9115559 --- /dev/null +++ b/lang/vi_VN.ts @@ -0,0 +1,597 @@ + + + ClientSocket + + Connection was refused or timeout + Kết nối bị từ chối hoặc hết thời gian + + + Remote host close this connection + Máy chủ từ xa đã đóng kết nối này + + + Host not found + Không tìm thấy máy chủ + + + Socket access error + Lỗi truy cập socket + + + Socket resource error + Lỗi tài nguyên socket + + + Socket timeout error + Lỗi thời gian chờ socket + + + Datagram too large error + Lỗi gói tin quá lớn + + + Network error + Lỗi mạng + + + Unsupprted socket operation + Hoạt động socket không được hỗ trợ + + + Unfinished socket operation + Hoạt động socket chưa hoàn thành + + + Proxy auth error + Lỗi xác thực proxy + + + Proxy refused + Proxy từ chối kết nối + + + Proxy closed + Proxy đã đóng kết nối + + + Proxy timeout + Proxy hết thời gian kết nối + + + Proxy protocol error + Lỗi giao thức proxy + + + Operation error + Lỗi thao tác + + + Temporary error + Lỗi tạm thời + + + Unknown error + Lỗi không xác định + + + Connection failed, error code = %1 + reason: %2 + Kết nối thất bại, mã lỗi = %1 + lý do: %2 + + + + Server + + %1 logged in + Người chơi <b>%1</b> đã đăng nhập vào máy chủ + + + %1 logged out + Người chơi <b>%1</b> đã đăng xuất khỏi máy chủ + + + %1 backed + Người chơi <b>%1</b> đã quay trở lại trò chơi + + + + PackMan + + Syncing packages, please do not close the application. + Đang đồng bộ gói mở rộng, vui lòng không đóng ứng dụng. + + + [%1/%2] upgrading package '%3' + [%1/%2] đang cập nhật gói mở rộng '%3' + + + packages/%1: some error occured. + Gói %1 gặp sự cố. Bạn có thể thử: vào “quản lý gói mở rộng”, tìm %1, xóa, rồi thử lại + + + + QmlBackend + + FreeKill + Tân Nguyệt Sát + + + help: others logged in again with this name + Ai đó đã đăng nhập với tên này. Hãy kiểm tra xem mật khẩu có bị rò rỉ không + + + help: unknown password error + Đề xuất: Hãy thử khởi động lại chương trình + + + help: you have been banned! + Đề xuất: Đây là lệnh cấm vĩnh viễn, hãy liên hệ với quản trị viên để được gỡ cấm + + + help: you have been temporarily banned! + Đề xuất: Đây là lệnh cấm tạm thời, hãy thử lại sau + + + help: user name not in whitelist + Đề xuất: Hãy liên hệ với chủ máy chủ để giải quyết + + + help: username or password error + Đề xuất: có thể tên người dùng đã bị chiếm dụng, hoặc mật khẩu sai, nếu bạn là người đăng ký lần đầu thì hãy xem xét sử dụng tên người dùng và mật khẩu khác để đăng nhập + + + help: md5 fail + Đề xuất: Đã phát hiện lỗi MD5, nếu tình trạng này xảy ra nhiều lần hãy xem xét nhấn vào văn bản “sửa chữa tài nguyên” màu xanh trên giao diện chính + + + fix resource + Sửa chữa tài nguyên + + + help: fix resource + Nhấn “Đồng ý” sẽ ngay lập tức đóng trò chơi, khi khởi động lại sẽ sao chép lại tài nguyên, áp dụng cho những lần vào máy chủ nhiều lần báo lỗi MD5, có tiếp tục không? + + + + Init + + FreeKill + Tân Nguyệt Sát + + + Join Server + Tham gia máy chủ + + + Console start + Bắt đầu chế độ đơn + + + PackageManage + Quản lý gói mở rộng + + + Quit Game + Thoát trò chơi + + + Making Mod + Thực hiện Mod + + + Welcome back! + Chào mừng trở lại! + + + ResFix + Sửa chữa tài nguyên + + + $LoginFAQ + + Các câu hỏi thường gặp trong quá trình đăng nhập: + + 1. Làm thế nào để kết nối? + Nhập địa chỉ IP của máy chủ vào khu vực chỉ định, sau đó nhập tên người dùng và mật khẩu để tham gia máy chủ. + + 2. Làm thế nào để đăng ký? + Không cần đăng ký, chỉ cần điền tên người dùng và mật khẩu, máy chủ sẽ tự động đăng ký cho bạn. Tên người dùng và mật khẩu của bạn sẽ được lưu trên máy chủ, lần sau đăng nhập vẫn cần nhập cùng tên người dùng và mật khẩu. Nhưng đừng lo, Tân Nguyệt Sát sẽ tự động nhớ mật khẩu cho bạn. + + + + updated packages for md5 + Đã đồng bộ gói mở rộng với máy chủ cho bạn, vui lòng thử kết nối lại + + + + JoinServer + + Join Server + Tham gia máy chủ + + + Add New Server + Thêm máy chủ mới + + + Edit Server + Chỉnh sửa máy chủ + + + List of Favorites and Public Servers + Danh sách máy chủ yêu thích và công khai + + + Refresh List + Làm mới danh sách + + + Detect LAN + Phát hiện mạng LAN + + + Go Back + Quay lại + + + Server Address + Địa chỉ máy chủ + + + Port + Cổng + + + @VersionMismatch + <font color="red" size="4"><b>!! v%1</b></font> + + + Server not up + Máy chủ dường như không hoạt động. + + + @NewServer + Thêm máy chủ mới + + + @NewServerHint + Vui lòng nhập địa chỉ IP hoặc tên miền của máy chủ, và nhập tên người dùng và mật khẩu mà bạn sử dụng trên máy chủ này. Nếu bạn chưa từng chơi trên máy chủ này, máy chủ sẽ tự động đăng ký tài khoản cho bạn. Sau này đăng nhập vào máy chủ này cần cùng tên người dùng và mật khẩu, đừng quên mật khẩu nhé! + + + Server Addr + Địa chỉ IP máy chủ + + + Username + Tên người dùng + + + Password + Mật khẩu + + + Show Password + Hiện mật khẩu + + + @EditServer + Chỉnh sửa máy chủ + + + @EditServerHint + Bạn có thể thay đổi tên người dùng và mật khẩu sử dụng trên máy chủ này. + Bạn không thể trực tiếp thay đổi địa chỉ IP của máy chủ; nếu cần, hãy xóa máy chủ này và thêm một cái mới. + + + Delete Server + Xóa máy chủ + + + LOGIN (Auto-registration) + ĐĂNG NHẬP (Đăng ký tự động lần đầu) + + + Remove from Favorites + Xóa khỏi danh sách yêu thích + + + + main + + FreeKill + Tân Nguyệt Sát + + + Are you sure to exit? + Bạn có chắc chắn muốn thoát không? + + + + Splash + + FreeKill + Tân Nguyệt Sát + + + Free + Free + + + Open + Open + + + Flexible + Flexible + + + Press Any Key... + Nhấn bất kỳ phím nào... + + + + Logic + + Detected Server %1 + Phát hiện máy chủ FreeKill - %1 + + + MD5 check failed! + Kiểm tra MD5 thất bại! Hãy đảm bảo đồng bộ với máy chủ trước khi đăng nhập + + + md5 fail + Lỗi tài nguyên + + + others logged in with this name + Đã có người đăng nhập với tên này + + + others logged in again with this name + Có người khác đã đăng nhập vào máy chủ với tên người dùng và mật khẩu của bạn + + + unknown password error + Lỗi đăng nhập không xác định + + + user name not in whitelist + Bạn không có trong danh sách cho phép của máy chủ này! + + + invalid user name + Tên người dùng không hợp lệ, chỉ được chứa ký tự chữ cái và số + + + username or password error + Tên người dùng hoặc mật khẩu không chính xác + + + INVALID SETUP STRING + Chuỗi thiết lập đăng nhập không đúng, có thể do phiên bản máy chủ quá cũ hoặc quá mới, hãy liên hệ với chủ máy chủ để giải quyết + + + server is still on version %1 + Máy chủ vẫn đang sử dụng phiên bản cũ (%1), hãy sử dụng phiên bản này để kết nối hoặc thông báo cho chủ máy chủ nâng cấp + + + server is using version %1, please update + Máy chủ đang sử dụng phiên bản %1, bạn nên cập nhật trò chơi. Truy cập <a href="https://tamquocsat.langkhach.org">https://tamquocsat.langkhach.org</a><br> + + + room password error + Lỗi mật khẩu phòng + + + room is outdated + Phòng đã lỗi thời + + + no such room + Không tồn tại phòng này + + + you have been banned! + Bạn đã bị cấm trên máy chủ này! + + + you have been temporarily banned! + Bạn đã bị cấm tạm thời do AFK hoặc hành vi không đúng mực! + + + Can only observe running room. + Chỉ có thể xem phòng đang hoạt động. + + + Room is full or already started! + Phòng đã đầy hoặc đã bắt đầu! + + + rejected your demand of joining room + Chủ phòng đã từ chối yêu cầu của bạn để gia nhập. + + + server is full! + Máy chủ đã đầy! + + + + PackageManage + + Install From URL + Cài đặt từ URL + + + Enable + Kích hoạt + + + Disable + Vô hiệu hóa + + + Remove + Xóa + + + Upgrade + Cập nhật + + + Copied %1. + Đã sao chép vào bộ nhớ tạm. (%1) + + + Package Manager + Quản lý gói mở rộng Tân Nguyệt Sát + + + Enable All + Kích hoạt tất cả + + + Disable All + Vô hiệu hóa tất cả + + + Upgrade All + Cập nhật tất cả + + + + ModInit + + ModMaker + Công cụ tạo Mod Tân Nguyệt Sát - Trang chính + + + Delete + Xóa + + + config is incomplete + Cấu hình công cụ Mod chưa hoàn chỉnh! +Hãy nhấp vào góc trên bên phải để cấu hình tên người dùng và email + + + cannot use this mod name + Không thể sử dụng tên mod này + + + + UserInfo + + help_text + Tên người dùng và email cần phải điền giống như trên máy chủ git. + + + username + Tên người dùng + + + email + Email + + + key_help_text + Public key là phương tiện để bạn chứng minh danh tính với máy chủ git. Hãy nhấp vào nút để sao chép Public key, sau đó thêm SSH Key trên trang web. Xem hướng dẫn về trình tạo Mod Tân Nguyệt Sát để biết thêm chi tiết. + + + copy pubkey + Sao chép Public key + + + pubkey copied + Public key đã được sao chép vào bộ nhớ tạm. + + + + CreateSomething + + validator_hint + Lưu ý: Bạn chỉ có thể nhập chữ cái, số và dấu gạch dưới, và độ dài tối thiểu là 4. Đây chỉ là tên mã, bạn có thể chỉ định tên đầy đủ sau + + + create_mod + Tạo Mod mới + + + create_mod_hint + Vui lòng nhập tên mod. + + + create_package + Tạo gói mở rộng mới + + + create_package_hint + Vui lòng nhập tên mã của gói mở rộng. + + + + Tutorial + + tutor_msg_1 + Chào mừng bạn đến với Tân Nguyệt Sát hay còn gọi là FreeKill!<br> + Vì đây là lần đầu bạn chạy, hãy xem hướng dẫn nhé.<br> + Nếu bạn bỏ qua cũng không sao, chỉ cần nhấp vào “<font color="blue"><u>FAQ</u></font>” trên giao diện chính để xem lại bất cứ lúc nào. + + + tutor_msg_2 + Tân Nguyệt Sát là một trò chơi miễn phí thể loại Tam Quốc Diễn Nghĩa, <br> + được mã nguồn mở theo giấy phép GPLv3!<br> + Thông tin chi tiết về dự án có thể được xem trong sảnh, <br> + nhấp vào nút “Thông tin” ở góc dưới bên phải. + + + tutor_msg_3 + Tân Nguyệt Sát mặc định chỉ có gói tiêu chuẩn!<br> + Để trải nghiệm nhiều tướng hơn, bạn cần kết nối mạng!<br> + Nhấn “Tham gia máy chủ” trên giao diện chính -> vào máy chủ công cộng hoặc thêm máy chủ mới. + + + tutor_msg_4 + Kết nối đến máy chủ cũng có thể không suôn sẻ.<br> + Đôi khi bạn có thể đã sử dụng tên người dùng đã được đăng ký, <br> + hoặc nhập sai IP, v.v. Khi gặp lỗi, đừng vội, <br> + hãy chú ý đến thông tin nhắc ở dưới màn hình. + + + tutor_msg_6 + Nếu muốn liên hệ với chúng tôi, bạn có thể dùng những cách này: <br> + Đội ngũ phát triển:<br> + Baidu Tieba: 新月杀吧<br> + Discord server: <a href="https://discord.gg/tp35GrQR6v">https://discord.gg/tp35GrQR6v</a><br> + QQ channel: freekill01<br> + + Đội ngũ Việt hóa<br> + Discord: <a href="https://discord.gg/jfm4PKpjmN">https://discord.gg/jfm4PKpjmN</a><br> + Facebook: <a href="https://www.facebook.com/groups/tqsvn">https://www.facebook.com/groups/tqsvn</a><br> + + + tutor_msg_7 + Cảm ơn bạn đã xem hết những điều này!<br> + Chúc bạn chơi vui vẻ!<br> + (Trò chơi miễn phí trực tuyến, hãy chơi một cách lịch sự!) + + + tutor_msg_5 + Để có thêm chỉ dẫn, bạn có thể tham khảo sách Tân Nguyệt (Hiện chưa có tiếng Việt) + Các tài liệu này được viết bởi các nhà phát triển, không chỉ giúp bạn nhanh chóng nắm vững cách chơi sâu hơn của trò chơi, mà còn cung cấp kiến thức về việc mở máy chủ riêng, tạo các bản mở rộng và nhiều kiến thức liên quan khác. + + + Skip + Bỏ qua + + + Prev + Trước + + + Next + Kế tiếp + + + diff --git a/packages/test/init.lua b/packages/test/init.lua index 001d4499..0552ceab 100644 --- a/packages/test/init.lua +++ b/packages/test/init.lua @@ -426,4 +426,42 @@ Fk:loadTranslationTable{ ["revive"] = "复活", } +Fk:loadTranslationTable({ + ["test_kansha"] = "Khán Sát", + [":test_kansha"] = "Tỏa định kỹ, bạn có thể thấy 【Sát】 trên tay của người khác", + ["blank_shibing"] = "Nam Binh Sĩ", + ["blank_nvshibing"] = "Nữ Binh Sĩ", + ["test_p_0"] = "Thử nghiệm", + ["test"] = "Test", + ["test_filter"] = "Phá Quân", + [":test_filter"] = "Những lá có điểm lớn hơn 11 của bạn được xem như [Vô Trung Sinh Hữu].", + ["mouxusheng"] = "Từ Thịnh - Mưu", + ["cheat"] = "Gian Lận", + [":cheat"] = "Giai đoạn ra bài, bạn có thể thu lấy lá bạn muốn.", + ["#cheat"] = "Cheat: Bạn có thể thu lấy 1 lá bạn muốn", + ["$cheat"] = "Uống nào!", + ["control"] = "Kiểm Soát", + [":control"] = "Giai đoạn ra bài, bạn có thể thay đổi trạng thái \"Kiểm Soát\" những người khác. Bạn được điều khiển người có trạng thái \"Kiểm Soát\"", + ["$control"] = "Chiến tướng lâm trận, chém cửa phá thành!", + ["test_vs"] = "Thị Vy", + [":test_vs"] = "Bạn có thể chuyển hóa sử dụng bài → công cụ.", + ["#test_vs"] = "Thị Vy: Bạn có thể học cách sử dụng công cụ", + ["damage_maker"] = "Chế Thương", + [":damage_maker"] = "Giai đoạn ra bài, bạn có thể gây 1 sát thương.", + ["#damage_maker"] = "Chế Thương: Chọn 1 con chuột bạch, có thể chọn 1 người khác làm nguồn sát thương(mặc định là Từ Thịnh - Mưu)", + ["#revive-ask"] = "Hồi sinh 1 người!", + ["$damage_maker"] = "Chỉ vài trăm quân Ngụy, xem ta 1 lần diệt hết!", + ["test_zhenggong"] = "Tốc Trắc", + [":test_zhenggong"] = "Tỏa định kỹ, khi bắt đầu lượt đầu tiên, bạn thực hiện thêm 1 lượt.", + ["$test_zhenggong"] = "Kế nghi binh này, đã làm quân định mất hết can đảm, chúng nào dám tiến gần!", + ["change_hero"] = "Biến Đổi", + [":change_hero"] = "Giai đoạn ra bài, bạn có thể đổi tướng của 1 người.", + ["$change_hero"] = "Quân địch ngoài mạnh trong yếu, có thể xây thành giả để lui địch!", + ["~mouxusheng"] = "Kiếp sau, nguyện lại là thần tử Giang Đông... ...", + ["heal_hp"] = "Hồi máu", + ["lose_max_hp"] = "Giảm giới hạn máu", + ["heal_max_hp"] = "Tăng giới hạn máu", + ["revive"] = "Hồi sinh", +}, "vi_VN") + return { extension } diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index ff6c407c..adedaa96 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -156,6 +156,7 @@ if (NOT DEFINED FK_SERVER_ONLY) install(FILES ${CMAKE_BINARY_DIR}/zh_CN.qm ${CMAKE_BINARY_DIR}/en_US.qm + ${CMAKE_BINARY_DIR}/vi_VN.qm DESTINATION share/FreeKill ) endif() diff --git a/src/freekill.cpp b/src/freekill.cpp index 9ef79e36..1d2e42c6 100644 --- a/src/freekill.cpp +++ b/src/freekill.cpp @@ -306,6 +306,8 @@ int freekill_main(int argc, char *argv[]) { QTranslator translator; if (localeName.startsWith("zh_")) { Q_UNUSED(translator.load("zh_CN.qm")); + } else if (localeName.startsWith("vi")) { + Q_UNUSED(translator.load("vi_VN.qm")); } else { Q_UNUSED(translator.load("en_US.qm")); }