From 588d8129397a600ac8b88b000e9134276392a97d Mon Sep 17 00:00:00 2001 From: Tiger Date: Tue, 31 Mar 2026 19:54:11 +0800 Subject: [PATCH 1/4] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96UI=E6=93=8D?= =?UTF-8?q?=E4=BD=9C=E9=80=BB=E8=BE=91=EF=BC=8C=E5=A2=9E=E5=8A=A0=E9=80=80?= =?UTF-8?q?=E5=87=BA=E6=B8=B8=E6=88=8F=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scenes/main_menu.tscn | 10 ++++++++++ scenes/settings.tscn | 10 +++++----- scripts/game/game.gd | 1 + scripts/main_menu/main_menu.gd | 4 +++- scripts/settings/settings.gd | 2 +- 5 files changed, 20 insertions(+), 7 deletions(-) diff --git a/scenes/main_menu.tscn b/scenes/main_menu.tscn index 4d35e19..eb67f59 100644 --- a/scenes/main_menu.tscn +++ b/scenes/main_menu.tscn @@ -44,6 +44,15 @@ theme_override_fonts/font = ExtResource("1_l6cm7") theme_override_font_sizes/font_size = 36 text = "加入局域网游戏" +[node name="QuitGame" type="Button" parent="." unique_id=70898198] +offset_left = 932.0 +offset_top = 959.0 +offset_right = 1248.0386 +offset_bottom = 1058.0 +theme_override_fonts/font = ExtResource("1_l6cm7") +theme_override_font_sizes/font_size = 36 +text = "退出游戏" + [node name="CreateGameUI" type="Node2D" parent="." unique_id=462604530] visible = false position = Vector2(585, 355) @@ -150,6 +159,7 @@ text = "设置" [connection signal="pressed" from="StartGame" to="." method="_on_start_game_pressed"] [connection signal="pressed" from="JoinGame" to="." method="_on_join_game_pressed"] +[connection signal="pressed" from="QuitGame" to="." method="_on_quit_game_pressed"] [connection signal="pressed" from="CreateGameUI/CreateGameButton" to="CreateGameUI" method="_on_create_game_button_pressed"] [connection signal="pressed" from="CreateGameUI/Warn/WarnButton" to="CreateGameUI" method="_on_warn_button_pressed"] [connection signal="pressed" from="JoinGameUI/JoinGameButton" to="JoinGameUI" method="_on_join_game_button_pressed"] diff --git a/scenes/settings.tscn b/scenes/settings.tscn index e86c140..04fd0ba 100644 --- a/scenes/settings.tscn +++ b/scenes/settings.tscn @@ -96,10 +96,10 @@ offset_bottom = 60.0 theme_override_font_sizes/font_size = 25 [node name="SaveButton" type="Button" parent="." unique_id=1377249836] -offset_left = 150.0 -offset_top = 1321.0 -offset_right = 314.0 -offset_bottom = 1398.0 +offset_left = 147.0 +offset_top = 1315.0 +offset_right = 311.0 +offset_bottom = 1392.0 theme_override_fonts/font = ExtResource("2_6wm04") theme_override_font_sizes/font_size = 30 text = "保存设置" @@ -120,7 +120,7 @@ offset_right = 550.0 offset_bottom = 1394.0 theme_override_fonts/font = ExtResource("2_6wm04") theme_override_font_sizes/font_size = 30 -text = "取消" +text = "返回" [node name="LoadButton" type="Button" parent="." unique_id=2015694853] offset_left = 135.0 diff --git a/scripts/game/game.gd b/scripts/game/game.gd index b2897bb..5f1323a 100644 --- a/scripts/game/game.gd +++ b/scripts/game/game.gd @@ -20,6 +20,7 @@ func init() -> void: for address in addresses: if address.substr(0, GameManager.ip_begin.length()) == GameManager.ip_begin: ipaddress = address + break $IPLabel.text = ipaddress $Player1/Username.text = GameManager.username diff --git a/scripts/main_menu/main_menu.gd b/scripts/main_menu/main_menu.gd index 3db6c3c..ea5c96c 100644 --- a/scripts/main_menu/main_menu.gd +++ b/scripts/main_menu/main_menu.gd @@ -7,6 +7,8 @@ func _on_join_game_pressed() -> void: func _on_start_game_pressed() -> void: $CreateGameUI.show() - func _on_setting_button_pressed() -> void: SceneManager.goto_scene("settings") + +func _on_quit_game_pressed() -> void: + get_tree().quit() diff --git a/scripts/settings/settings.gd b/scripts/settings/settings.gd index 6ec0cc6..c3fcd5d 100644 --- a/scripts/settings/settings.gd +++ b/scripts/settings/settings.gd @@ -20,7 +20,7 @@ func _on_save_button_pressed() -> void: GameManager.ip_begin = $IPBeginSetting/LineEdit.text GameManager.username = $UsernameSetting/LineEdit.text GameManager.source = $LoadSource/ChooseSource.get_selected() - SceneManager.goto_scene("main_menu") + $Tips.text = "提示:保存设置成功" func _on_cancel_button_pressed() -> void: From 3258c22b18f58d17f02692d9746a6ac2c9a8e245 Mon Sep 17 00:00:00 2001 From: Tiger Date: Tue, 31 Mar 2026 20:02:46 +0800 Subject: [PATCH 2/4] =?UTF-8?q?feat:=20=E5=88=9D=E6=AD=A5=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0=E5=8D=A1=E7=89=8C=E4=BD=8D=E7=BD=AE=E7=9B=B8=E5=85=B3?= =?UTF-8?q?=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- scripts/game/card.gd | 6 ++++++ scripts/game/game.gd | 2 ++ 2 files changed, 8 insertions(+) diff --git a/scripts/game/card.gd b/scripts/game/card.gd index 0df88fa..5f20fb4 100644 --- a/scripts/game/card.gd +++ b/scripts/game/card.gd @@ -12,3 +12,9 @@ func set_texture(pic: String) -> void: func set_card(cname: String) -> void: card_name = cname set_texture("user://download/sources/%s/assets/pics/%s" % [DownloadManager.uuid, GameManager.pic_list[card_name]]) + +func set_pos(x: int, y: int) -> void: + $Sprite.position = Vector2(x, y) + +func get_pos() -> Vector2: + return $Sprite.position diff --git a/scripts/game/game.gd b/scripts/game/game.gd index 5f1323a..6524b4f 100644 --- a/scripts/game/game.gd +++ b/scripts/game/game.gd @@ -8,6 +8,8 @@ func _ready() -> void: init() var card = create_card("Oxygen") card.show() + card.set_pos(300, 300) + print(card.get_pos()) func init() -> void: if multiplayer.is_server(): From feb5d4b0301df8111b1cc47c859446d41a01a0bc Mon Sep 17 00:00:00 2001 From: Tiger Date: Wed, 1 Apr 2026 09:25:22 +0800 Subject: [PATCH 3/4] =?UTF-8?q?feat:=20=E5=AE=8C=E6=88=90=E6=9C=AC?= =?UTF-8?q?=E5=9C=B0=E5=8C=96=E4=BB=A3=E7=A0=81=E5=B9=B6=E9=83=A8=E5=88=86?= =?UTF-8?q?=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 9 +++-- assets/translation/trans.csv | 28 ++++++++++++++ assets/translation/trans.csv.import | 19 ++++++++++ assets/translation/trans.en.translation | Bin 0 -> 1708 bytes assets/translation/trans.zh.translation | Bin 0 -> 1859 bytes project.godot | 4 ++ scenes/game.tscn | 2 +- scenes/main_menu.tscn | 10 ++--- scenes/settings.tscn | 47 ++++++++++++++++++------ scripts/game/game.gd | 4 +- scripts/settings/settings.gd | 23 ++++++++---- 11 files changed, 115 insertions(+), 31 deletions(-) create mode 100644 assets/translation/trans.csv create mode 100644 assets/translation/trans.csv.import create mode 100644 assets/translation/trans.en.translation create mode 100644 assets/translation/trans.zh.translation diff --git a/README.md b/README.md index e424f1e..7fb94d6 100644 --- a/README.md +++ b/README.md @@ -16,8 +16,9 @@ game/ - assets/ - fonts/ - AlibabaPuHuiTi-3-65-Medium.ttf # 阿里巴巴普惠体 - - pics/ -- scenes + - translation/ + - trans.csv +- scenes/ - main_menu.tscn - game.tscn - settings.tscn @@ -43,7 +44,7 @@ game/ ## 如何运行 -请先运行数据后端,在游戏设置中输入后端 URL(包含端口号和 `http://` 或 `https://` 前缀,或者选择本地已有的数据源,然后创建游戏或加入游戏开始游玩。 +请先运行数据后端,在游戏设置中输入后端 URL(包含端口号和 `http://` 或 `https://` 前缀),或者选择本地已有的数据源,然后创建游戏或加入游戏开始游玩。 ## 最佳实践 @@ -51,7 +52,7 @@ game/ 你的开发应当遵循 Godot 引擎提供的[最佳实践](https://docs.godotengine.org/zh-cn/4.x/tutorials/best_practices/)及[GDScript 编写风格指南](https://docs.godotengine.org/zh-cn/4.x/tutorials/scripting/gdscript/gdscript_styleguide.html)。但下面提到的除外: -除 `autoload` 目录下的单例脚本使用大驼峰式命名,其余脚本均应使用小蛇形式命令。所有节点均应使用大驼峰式命名。 +除 `autoload` 目录下的单例脚本使用大驼峰式命名,其余脚本均应使用小蛇形式命名。所有节点均应使用大驼峰式命名。 除连接了信号或 HTTPRequest、MultiplayerAPI 的函数外,任何函数都不应该以下划线(`_`)开头。 diff --git a/assets/translation/trans.csv b/assets/translation/trans.csv new file mode 100644 index 0000000..7b39374 --- /dev/null +++ b/assets/translation/trans.csv @@ -0,0 +1,28 @@ +keys,en,zh-cn +en,English,English +zh-cn,简体中文,简体中文 +MAINMENU_TITLE,Paper Chemis Community,纸片化学社区版 +MAINMENU_CREATEGAME,Create LAN Game,创建局域网游戏 +MAINMENU_JOINGAME,Join LAN Game,加入局域网游戏 +MAINMENU_QUITGAME,Quit Game,退出游戏 +MAINMENU_SETTINGS,Settings,设置 +SETTINGS_SETSOURCE,Set Data Source,数据源设置 +SETTINGS_IPBEGIN,Auto IP Beginning,自动识别 IP 地址的起始部分 +SETTINGS_NICKNAME,Nickname in Game,局内显示昵称 +SETTINGS_LOADDATA,Load Local Data,加载本地数据 +SETTINGS_SAVESETTINGS,Save Settings,保存设置 +SETTINGS_BACK,Back,返回 +SETTINGS_DOWNLOAD,Download,下载文件 +SETTINGS_LOAD,Load Data,加载数据 +SETTINGS_CHOOSELANG,Choose Language,选择语言 +SETTINGS_TIP_NULL,Tip: None,提示:无 +SETTINGS_TIP_SAVESETTINGS,Tip: Successfully saved settings,提示:保存设置成功 +SETTINGS_TIP_STARTDOWNLOAD,Tip: Have started downloading. do not close the settings page,提示:已开始下载,请勿关闭设置页面 +SETTINGS_TIP_SOURCEERROR,Tip: Download failed. Data source path error,提示:下载失败。数据源路径错误 +SETTINGS_TIP_REQUESTERROR,Tip: Download failed. Failed to create a request,提示:下载失败。创建请求失败 +SETTINGS_TIP_LOADING,Tip: Loading Resources. do not close the settings page,提示:正在加载资源,请勿关闭设置页面 +SETTINGS_TIP_LOADED,Tip: Finish Loading,提示:完成加载 +SETTINGS_TIP_NOLOCALSOURCE,Tip: No local data or no selection,提示:无本地数据或未选择,无法加载 +GAMEUI_URNULL,Roome Running: You are XXX XXXX,啊啊啊啊啊:啊啊啊啊 +GAMEUI_URHOST,Room Running: You are the Host,房间运行中:您是房主 +GAMEUI_URGUEST,Room Running: You are a Guest,房间运行中:您是房客 \ No newline at end of file diff --git a/assets/translation/trans.csv.import b/assets/translation/trans.csv.import new file mode 100644 index 0000000..0ebaf09 --- /dev/null +++ b/assets/translation/trans.csv.import @@ -0,0 +1,19 @@ +[remap] + +importer="csv_translation" +type="Translation" +uid="uid://bkanjeodutw2s" + +[deps] + +files=["res://assets/translation/trans.en.translation", "res://assets/translation/trans.zh.translation"] + +source_file="res://assets/translation/trans.csv" +dest_files=["res://assets/translation/trans.en.translation", "res://assets/translation/trans.zh.translation"] + +[params] + +compress=1 +delimiter=0 +unescape_keys=false +unescape_translations=true diff --git a/assets/translation/trans.en.translation b/assets/translation/trans.en.translation new file mode 100644 index 0000000000000000000000000000000000000000..14befcd1b313f8f99838961d0b6ca1dd6195bff9 GIT binary patch literal 1708 zcma)7ZEO=|9Dmr3x^@hv$QaO!8^msr%|-*LV-B{~j?G#}TeSgffxo0ejw3I-l7oPTwEl^_+{~nMB@jmesCYAl9((+O&lRU^Z#$3+v)`3CBOSU z|KIa}d0y|rk+6^OM*wzktN?x~WhuSNKH3#EWX)7%OVKs%N=PxZCd>bdel^^+V@~`Z z4JY_i0t{;EX(LW0RgcT6Wa*L_ry3jT%Feg;7}o>w_mAhb4}tBx6BBQ0Rp5x{ zt{z~=t@z-Hj}l-%!trch+t6Fkw)1?vp)qv{Y&>HKtcAFBYPuB92VNzFtsi>zw`-q* zu@*G3K)<8Ecjg_i7y7@ikMwtP9c$YAR=Z&$eiLkay|T*}-+dSI;=bV=?0R(-#W-Ao zdxWs{yXRxazUTfp7QEBQWl-RGEukuAlKgt@@YH96Q{z{E89GK-hw$|a%vWA-G2dYQ zq&LEd&!DnJ#b9$tY{id6yRK;S){eAd<@E@)tlT|kk)rj?Uo*@i*$gAiX-gN|I>Z*5 zP&5r32n!uyJx)Ol5!NcGj0APLOAO+-N%YH>Od|4LD$ZqVk>fqYufL(G;FkBzc`@G& zheTL#^%jqChmoj~Y7j#@eAZaBq>(ic7V)?<7wbIdT3v!(B^9?vU2LvzyP!9H`TMp? zN3*lSaVs!Tx$Ee(Ln<390=Jcon9t7Q&$}dr+bsh)snMa#!J6Z1%q9162?)2hb-Js6 zK3&cFJe!N>y@F7Ou<+(=#`S=5fn|>!XXrW~7}{0gaK|px3}64GY2>?;PUs0c21{9Z y(iy;ccJ5r&H(L~o#mKAx?^v!IUIpEY2;1&>F(3Hvo?+IS8zr0x``m=#KlKlt_t^sg literal 0 HcmV?d00001 diff --git a/assets/translation/trans.zh.translation b/assets/translation/trans.zh.translation new file mode 100644 index 0000000000000000000000000000000000000000..643e109691dd662b3286505d0fa33f1007bea84d GIT binary patch literal 1859 zcma)7ZD?Cn7(Q;+O@|*aHa{2|CWz3nigf7252QM&f0X*Mf?~K!Z=0~&n|g1mWz%t~ zZFAdXTf`=fTVva;+p>=&?b_H&(lq#|`?n$bW4IswFz4JGg!PwD8KUo-dyl!qO?JqW z_kExDGw(T&j`up+h;!}*d7p!AAm8Z=1$qOA#IE-hK~^Op6bQ;rC?Oj`d$bsT>zc5z z{a^Afl=~s(F@Pef!G6UjdZnOGki4OwSM`aqNFH+gWT96in9(b$s?Z~n`|k_W*&(C<4ah8$uu5Nb#X$USyJ)u#md zLO>F758!D)t;b6(Ew|f&w|kHDT!6G;ESx*8stKI9CN2;8YpMsR7Qo+dK-46z9c?_1 zIQkPV&g1CMfZXNcpLg^Z9r>yw-vIeGpcByTaFQbxN7~)~`#s?Jk2q2Xd8{D^=k)-_ z0k{T4{?`wUW>8u|M{IET9|s=TIRpAu2l6YeH~#<~uLZ&5&VLj;Y(V}Cz#-HfKYj2y zIG+L?fjtmk#?|)yAbCFL+gghI@MatN^|St+ct`kN5IjDTOs_u-#tz^RoEP@|&~1U; zSm*Kej~BXt$0vy3@z?i#@#Il3nt?-bzV+%aJ!@d_zW5Z-XH-6U4dXcf*Nv2X18m-J zb#++wLf~%T5Ik?&#ohCV!Nxa$*!yXFVi6?Y>tgfEeLsWUIG=Uw=9bri=lyU7#F72K zXZPM_zkdd2#;<^%&%@(qgO>*m0*~(#!SC(a=2hPY2;%YAw>I5s0w;e5Jb%~rjiZo8 z@Qx6izm@6?ce>`l`SHFJz`ZH=NCDMP%&b-^eN!G!=h)FKE5sbz3SXdO zX)8BE^^2bNcRh4+j;1v8#E_L=qUR#juhLW>Ay|22m?c-t*#b-E&2w|u(khkMHO7VN1QyYO)wNVy1Z{;#pS|jXu3`(yppI{Tyb;Dhd z=`lJsRrk@Q%XC?T5$z6Z%TX)0L?dN7yilFU*h5rj^3~L-dX61RXXmZOGrwtr^<6CG z=*m!a{97xRyJNJyd1%7s2kjE|P?kAOC)4&yto#tH_paul*=X%&;U- void: func init() -> void: if multiplayer.is_server(): - $IsServerLabel.text = "房间运行中:您是房主" + $IsServerLabel.text = "GAMEUI_URHOST" else: - $IsServerLabel.text = "房间运行中:您是房客" + $IsServerLabel.text = "GAMEUI_URGUEST" var addresses: PackedStringArray = IP.get_local_addresses() var ipaddress: String = "" diff --git a/scripts/settings/settings.gd b/scripts/settings/settings.gd index c3fcd5d..bf39004 100644 --- a/scripts/settings/settings.gd +++ b/scripts/settings/settings.gd @@ -9,6 +9,12 @@ func init_text() -> void: $IPBeginSetting/LineEdit.text = GameManager.ip_begin $UsernameSetting/LineEdit.text = GameManager.username $LoadSource/ChooseSource.select(GameManager.source) + var language = "automatic" + if language == "automatic": + var preferred_language = OS.get_locale_language() + TranslationServer.set_locale(preferred_language) + else: + TranslationServer.set_locale(language) func init_sources() -> void: DownloadManager.get_sources() @@ -20,7 +26,8 @@ func _on_save_button_pressed() -> void: GameManager.ip_begin = $IPBeginSetting/LineEdit.text GameManager.username = $UsernameSetting/LineEdit.text GameManager.source = $LoadSource/ChooseSource.get_selected() - $Tips.text = "提示:保存设置成功" + TranslationServer.set_locale($ChooseLanguage/ChooseLanguage.text) + $Tips.text = "SETTINGS_TIP_SAVESETTINGS" func _on_cancel_button_pressed() -> void: @@ -28,24 +35,24 @@ func _on_cancel_button_pressed() -> void: func _on_download_button_pressed() -> void: - $Tips.text = "提示:已开始下载,请勿关闭设置页面" + $Tips.text = "SETTINGS_TIP_STARTDOWNLOAD" var result: int = await DownloadManager.download_from_origin() if result == 1: - $Tips.text = "提示:下载失败。数据源路径错误" + $Tips.text = "SETTINGS_TIP_SOURCEERROR" return elif result == 2: - $Tips.text = "提示:下载失败。创建请求失败" + $Tips.text = "SETTINGS_TIP_REQUESTERROR" return - $Tips.text = "提示:正在加载资源,请勿关闭设置页面" + $Tips.text = "SETTINGS_TIP_LOADING" DownloadManager.load_resource() - $Tips.text = "提示:完成加载" + $Tips.text = "SETTINGS_TIP_LOADED" func _on_load_button_pressed() -> void: if GameManager.sources.size() == 0 or GameManager.source == -1: - $Tips.text = "提示:无本地数据或未选择,无法加载" + $Tips.text = "SETTINGS_TIP_NOLOCALSOURCE" return; DownloadManager.uuid = GameManager.sources[$LoadSource/ChooseSource.text] DownloadManager.load_resource() - $Tips.text = "提示:完成加载" + $Tips.text = "SETTINGS_TIP_LOADED" From 42f36a142eacf7ecc44a92afb5fb676192023ecf Mon Sep 17 00:00:00 2001 From: Tiger Date: Wed, 1 Apr 2026 09:33:43 +0800 Subject: [PATCH 4/4] =?UTF-8?q?feat:=20=E5=AE=8C=E6=88=90=E5=AF=B9?= =?UTF-8?q?=E6=B8=B8=E6=88=8F=E5=BD=93=E5=89=8D=E5=86=85=E5=AE=B9=E7=9A=84?= =?UTF-8?q?=E7=BF=BB=E8=AF=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/translation/trans.csv | 6 ++++++ assets/translation/trans.en.translation | Bin 1708 -> 1972 bytes assets/translation/trans.zh.translation | Bin 1859 -> 2159 bytes scenes/main_menu.tscn | 13 ++++++------- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/assets/translation/trans.csv b/assets/translation/trans.csv index 7b39374..68beaa9 100644 --- a/assets/translation/trans.csv +++ b/assets/translation/trans.csv @@ -2,8 +2,14 @@ keys,en,zh-cn en,English,English zh-cn,简体中文,简体中文 MAINMENU_TITLE,Paper Chemis Community,纸片化学社区版 +UI_CONFIRM,Confirm,确定 MAINMENU_CREATEGAME,Create LAN Game,创建局域网游戏 +MAINMENU_INPUTPLAYERNUM,Please Input max Player Number (2~4),请输入最大玩家数(2~4) +MAINMENU_PLAYERNUMERROR,Error! Please Input an integer between 2 and 4,输入数据错误!请输入2~4之间的整数! +MAINMENU_CREATEROOM,Create Room,创建房间 MAINMENU_JOINGAME,Join LAN Game,加入局域网游戏 +MAINMENU_INPUTSERVERIP,Please Input IP Address (No Port),请输入服务器IP(无需加端口) +MAINMENU_JOINROOM,Join Room,加入房间 MAINMENU_QUITGAME,Quit Game,退出游戏 MAINMENU_SETTINGS,Settings,设置 SETTINGS_SETSOURCE,Set Data Source,数据源设置 diff --git a/assets/translation/trans.en.translation b/assets/translation/trans.en.translation index 14befcd1b313f8f99838961d0b6ca1dd6195bff9..4f307051c5389514a29e2bb7c8be56946ea326e7 100644 GIT binary patch delta 1004 zcmZ9KUr1A77{<^3S-RCqEvZD$Cdrm=)mW@zWot=HV~nk`bc6$E2<{x)nIU8j455Oo zm~{~a1-t2=SX!)`APOmnq#}q6x~a$lZ|Xvm&U(J>JvBV=<9WX4eZN2FJLk@_3FBC| zD#_s~0$Dr;Qs!5a=Sgd!_2eDUt>kw?_mKCK?k8=9wgUn51GerU>FK;CS@!Q4rXmYQ z$X_8%LvIz-$Kct)dGHXZh`QZ(Gwtv-U?XL$_TbaO%yF0v@a)j)Tn+F4y065%fWZo| z5(qn-vmP`WDa$u<+|9NNCuWedn{WZC^6i0M6xYI60k#R_Ut^B3>7W-dJbCS}r8 zB%h+n&b%4G=5W6HaMXw;%P=kn8p<=Dk2Gw8XLrH)Gks04V^T3ZV{&pxxQ;QqTpLj4 zt-5W$H-m90vF(`evL1a{Bbi%hqR!o8MW90i12)IE;aNTV>dOfwA87e8>c#=9k@G;w z=fxW%>o8c{|FisMdKdMsFX&H;n)`jzDU-IMG=OQ!Exj+(Etu7*CavAphF#bvWIHLl z)TkOhKE_ySUqbcssdL);q$qTD#bcZ|9*rcT{63GL-y4ZVIXTc`*UP?Q_p`a*7@P_9 z%l=whxH+q{I0l?nPHr?v2H8~5=khnsH-|MBr(}n#DywpGve)#5lY>PmnQIceg#T*? zx}y;(%KL<#-b6L;3-F$fj(Aj(c#B`;17bX3%})r5Vr=}K_Jzv8{u}l>!BEiq7vEL$ Ai~s-t delta 661 zcmdnOzlL{14rBd)AYcFj5X}aqL2LmiTM9``0m@bb(mF`uMo_i|l(vJ?E{y5Q7}T1Qown z!KG9QWP>~=2*i1|Chzt$*fTKjLj_?9S4K~$P6wI>@})Tt7t34@{S4%TLP8FRVHVX+ zE%tPqe2__a@*5@-$s0f!86Z|fQjutSFl{SHg{dkr8Baxw`2y*)Q?4UmSJa_m@Zp4{YzK;7v;Q6VU{EcBe# z31q``ZPB(VSPtZ~LNUzl7k%%zEhZbXh)eDQ3dsXy6@VBf`!j#xl$k(TVb&%2n<^qF zPh=4nItP^Jg5n#(tiKm9PTs|$Cwdd82NXCUBiNxd?_^O{9hsuk#FA76A4fk0_r%;( c2Cw|gJUDOjeb$qVd<+a6Kph}UgMx#c0aReb_y7O^ diff --git a/assets/translation/trans.zh.translation b/assets/translation/trans.zh.translation index 643e109691dd662b3286505d0fa33f1007bea84d..88794a3a2bdb77855b308ba52233bd3f8a169139 100644 GIT binary patch delta 931 zcmZ9JOK1~O6o!+T@r6|?)d`V+0mX&Uh#^+3FMObOBc=6Gqk`S&rbNY!Qn6_|OcDiWp@N`A|5NV`p%*^>bMCqSId|qhn`@S* znyk$htm)t{RvA-@WfnV`E`=^Gr~?^8e0yWAb8by6%4tM z&tUK&KU%A_=h$1uXjuL9Xc(rc-R-{)4bQTwt3-LB2VQDL@b=!9?~g?UwLz49^fL5v z#Kebgf1sq>*jUgn!R|(l5COGVFz6m~BA^#0)}5@rdH^~9MQPWD6KAaI8&S3=QReN* zN}SvORr_>BvUwVjO}+W|`7aW?aA*mGn-a(Go-W51N%FkD65G3qX}<^5dTFJ50vBBb z6TwZ3t(!lZ$oUZZom5{hs@>9x=3HFUwU|X$uIY~+>O%p&rzbah*~nxJrQMQG-p@Z) z_24a|E1)O(a&7&(Hey6mW>)c-qu0G=_JV~Sh^CCNR)}=wlSwn%QZ!B;`~2Wyp(CA( zoj0QCNp}mIXDHGWRMc_FR#~(dU12>G*E?@l*IuR_C0~9Yc4*&oF delta 667 zcmaDaaF}mHHDmpMAYcFj5X}aqL2LmiTM9``0m@bb(mF`uMo_i|l(vJ?EX8SsK^SIi?bKq=@X0Tj+@<(| zLNY)Z5QfPnnjTDh!7#aySxhPgD9jGUFzFj^HFCX-lNU0JS-l5}i2GycN_ISn zv)6`-fyDpbo||_YNb^GRv16@y@r;u{GK*PO1BF1r55ks(p3}AfX_$|;XxkKA0rJsp zf6@1j+i|i3i@1>`7LWbRUpVDBP#4THn46d6Z>q>