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 0000000..14befcd Binary files /dev/null and b/assets/translation/trans.en.translation differ diff --git a/assets/translation/trans.zh.translation b/assets/translation/trans.zh.translation new file mode 100644 index 0000000..643e109 Binary files /dev/null and b/assets/translation/trans.zh.translation differ diff --git a/project.godot b/project.godot index 4c7188e..4f3512f 100644 --- a/project.godot +++ b/project.godot @@ -31,6 +31,10 @@ DownloadManager="*res://scripts/autoload/DownloadManager.gd" window/size/viewport_width=2560 window/size/viewport_height=1440 +[internationalization] + +locale/translations=PackedStringArray("res://assets/translation/trans.en.translation", "res://assets/translation/trans.zh.translation") + [rendering] renderer/rendering_method="gl_compatibility" diff --git a/scenes/game.tscn b/scenes/game.tscn index a422641..f1966ed 100644 --- a/scenes/game.tscn +++ b/scenes/game.tscn @@ -20,7 +20,7 @@ offset_right = 255.0 offset_bottom = 63.0 theme_override_fonts/font = ExtResource("1_uwrxv") theme_override_font_sizes/font_size = 20 -text = "啊啊啊啊啊:啊啊啊啊" +text = "GAMEUI_URNULL" [node name="IPLabel" type="Label" parent="." unique_id=2017838611] offset_left = 54.0 diff --git a/scenes/main_menu.tscn b/scenes/main_menu.tscn index eb67f59..1f5c276 100644 --- a/scenes/main_menu.tscn +++ b/scenes/main_menu.tscn @@ -23,7 +23,7 @@ offset_bottom = 207.0 size_flags_horizontal = 4 theme_override_fonts/font = ExtResource("1_l6cm7") theme_override_font_sizes/font_size = 84 -text = "纸片化学社区版" +text = "MAINMENU_TITLE" horizontal_alignment = 1 [node name="StartGame" type="Button" parent="." unique_id=1933485497] @@ -33,7 +33,7 @@ offset_right = 1247.0385 offset_bottom = 632.0 theme_override_fonts/font = ExtResource("1_l6cm7") theme_override_font_sizes/font_size = 36 -text = "创建局域网游戏" +text = "MAINMENU_CREATEGAME" [node name="JoinGame" type="Button" parent="." unique_id=1061477634] offset_left = 932.0 @@ -42,7 +42,7 @@ offset_right = 1248.0385 offset_bottom = 847.0 theme_override_fonts/font = ExtResource("1_l6cm7") theme_override_font_sizes/font_size = 36 -text = "加入局域网游戏" +text = "MAINMENU_JOINGAME" [node name="QuitGame" type="Button" parent="." unique_id=70898198] offset_left = 932.0 @@ -51,7 +51,7 @@ offset_right = 1248.0386 offset_bottom = 1058.0 theme_override_fonts/font = ExtResource("1_l6cm7") theme_override_font_sizes/font_size = 36 -text = "退出游戏" +text = "MAINMENU_QUITGAME" [node name="CreateGameUI" type="Node2D" parent="." unique_id=462604530] visible = false @@ -155,7 +155,7 @@ offset_right = 2106.0 offset_bottom = 200.0 theme_override_fonts/font = ExtResource("1_l6cm7") theme_override_font_sizes/font_size = 30 -text = "设置" +text = "MAINMENU_SETTINGS" [connection signal="pressed" from="StartGame" to="." method="_on_start_game_pressed"] [connection signal="pressed" from="JoinGame" to="." method="_on_join_game_pressed"] diff --git a/scenes/settings.tscn b/scenes/settings.tscn index 04fd0ba..461323f 100644 --- a/scenes/settings.tscn +++ b/scenes/settings.tscn @@ -23,7 +23,7 @@ offset_right = 193.0 offset_bottom = 90.0 theme_override_fonts/font = ExtResource("2_6wm04") theme_override_font_sizes/font_size = 30 -text = "数据源设置" +text = "SETTINGS_SETSOURCE" [node name="LineEdit" type="LineEdit" parent="DataSetting" unique_id=34011310] offset_left = 217.0 @@ -44,7 +44,7 @@ offset_right = 193.0 offset_bottom = 90.0 theme_override_fonts/font = ExtResource("2_6wm04") theme_override_font_sizes/font_size = 30 -text = "自动识别IP地址的起始部分" +text = "SETTINGS_IPBEGIN" [node name="LineEdit" type="LineEdit" parent="IPBeginSetting" unique_id=1179342188] offset_left = 424.0 @@ -65,7 +65,7 @@ offset_right = 193.0 offset_bottom = 90.0 theme_override_fonts/font = ExtResource("2_6wm04") theme_override_font_sizes/font_size = 30 -text = "局内显示昵称" +text = "SETTINGS_NICKNAME" [node name="LineEdit" type="LineEdit" parent="UsernameSetting" unique_id=694430941] offset_left = 424.0 @@ -86,7 +86,7 @@ offset_right = 132.0 offset_bottom = 40.0 theme_override_fonts/font = ExtResource("2_6wm04") theme_override_font_sizes/font_size = 30 -text = "加载本地数据" +text = "SETTINGS_LOADDATA" [node name="ChooseSource" type="OptionButton" parent="LoadSource" unique_id=1045074926] offset_left = 381.0 @@ -95,14 +95,39 @@ offset_right = 830.0 offset_bottom = 60.0 theme_override_font_sizes/font_size = 25 +[node name="ChooseLanguage" type="Node2D" parent="." unique_id=323270128] +position = Vector2(39, 405) +metadata/_edit_group_ = true + +[node name="ChooseLanguageLabel" type="Label" parent="ChooseLanguage" unique_id=1719434618] +offset_left = 9.0 +offset_top = 10.0 +offset_right = 132.0 +offset_bottom = 40.0 +theme_override_fonts/font = ExtResource("2_6wm04") +theme_override_font_sizes/font_size = 30 +text = "SETTINGS_CHOOSELANG" + +[node name="ChooseLanguage" type="OptionButton" parent="ChooseLanguage" unique_id=476490830] +offset_left = 381.0 +offset_top = 5.0 +offset_right = 830.0 +offset_bottom = 60.0 +theme_override_font_sizes/font_size = 25 +item_count = 2 +popup/item_0/text = "en" +popup/item_0/id = 0 +popup/item_1/text = "zh-cn" +popup/item_1/id = 1 + [node name="SaveButton" type="Button" parent="." unique_id=1377249836] -offset_left = 147.0 +offset_left = 132.0 offset_top = 1315.0 -offset_right = 311.0 +offset_right = 338.0 offset_bottom = 1392.0 theme_override_fonts/font = ExtResource("2_6wm04") theme_override_font_sizes/font_size = 30 -text = "保存设置" +text = "SETTINGS_SAVESETTINGS" [node name="DownloadButton" type="Button" parent="." unique_id=315804661] offset_left = 598.0 @@ -111,7 +136,7 @@ offset_right = 774.0 offset_bottom = 1405.0 theme_override_fonts/font = ExtResource("2_6wm04") theme_override_font_sizes/font_size = 30 -text = "下载文件" +text = "SETTINGS_DOWNLOAD" [node name="CancelButton" type="Button" parent="." unique_id=135993345] offset_left = 371.0 @@ -120,7 +145,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 = "SETTINGS_BACK" [node name="LoadButton" type="Button" parent="." unique_id=2015694853] offset_left = 135.0 @@ -129,7 +154,7 @@ offset_right = 311.0 offset_bottom = 1287.0 theme_override_fonts/font = ExtResource("2_6wm04") theme_override_font_sizes/font_size = 30 -text = "加载数据" +text = "SETTINGS_LOAD" [node name="Tips" type="Label" parent="." unique_id=1777076648] offset_left = 893.0 @@ -138,7 +163,7 @@ offset_right = 1920.0 offset_bottom = 1388.0 theme_override_fonts/font = ExtResource("2_6wm04") theme_override_font_sizes/font_size = 50 -text = "提示:无" +text = "SETTINGS_TIP_NULL" [connection signal="pressed" from="SaveButton" to="." method="_on_save_button_pressed"] [connection signal="pressed" from="DownloadButton" to="." method="_on_download_button_pressed"] diff --git a/scripts/game/game.gd b/scripts/game/game.gd index 6524b4f..4882882 100644 --- a/scripts/game/game.gd +++ b/scripts/game/game.gd @@ -13,9 +13,9 @@ func _ready() -> 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"