diff --git a/src/Preferences/HandleLanguages.gd b/src/Preferences/HandleLanguages.gd index 4318ac5b9..17249c921 100644 --- a/src/Preferences/HandleLanguages.gd +++ b/src/Preferences/HandleLanguages.gd @@ -27,21 +27,21 @@ const LANGUAGES_DICT := { "uk_UA": ["Українська", "Ukrainian"], } -var loaded_locales: Array -onready var system_language: CheckBox = $"System Language" +var loaded_locales := LANGUAGES_DICT.keys() func _ready() -> void: - loaded_locales = TranslationServer.get_loaded_locales() + loaded_locales.sort() # Make sure locales are always sorted + var locale_index := -1 + var saved_locale := OS.get_locale() + # Load language + if Global.config_cache.has_section_key("preferences", "locale"): + saved_locale = Global.config_cache.get_value("preferences", "locale") + locale_index = loaded_locales.find(saved_locale) + TranslationServer.set_locale(saved_locale) # If no language is saved, OS' locale is used - # Make sure locales are always sorted, in the same order - loaded_locales.sort() - var button_group: ButtonGroup = system_language.group - - # Create radiobuttons for each language - for locale in loaded_locales: - if !locale in LANGUAGES_DICT: - continue + var button_group: ButtonGroup = $"System Language".group + for locale in loaded_locales: # Create radiobuttons for each language var button := CheckBox.new() button.text = LANGUAGES_DICT[locale][0] + " [%s]" % [locale] button.name = LANGUAGES_DICT[locale][1] @@ -49,36 +49,19 @@ func _ready() -> void: button.mouse_default_cursor_shape = Control.CURSOR_POINTING_HAND button.group = button_group add_child(button) - - # Load language - if Global.config_cache.has_section_key("preferences", "locale"): - var saved_locale: String = Global.config_cache.get_value("preferences", "locale") - TranslationServer.set_locale(saved_locale) - - # Set the language option menu's default selected option to the loaded locale - var locale_index: int = loaded_locales.find(saved_locale) - system_language.pressed = false # Unset System Language option in preferences - get_child(locale_index + 2).pressed = true - else: # If the user doesn't have a language preference, set it to their OS' locale - TranslationServer.set_locale(OS.get_locale()) - - for child in get_children(): - if child is Button: - child.connect("pressed", self, "_on_Language_pressed", [child.get_index()]) - child.hint_tooltip = child.name + button.connect("pressed", self, "_on_Language_pressed", [button.get_index()]) + get_child(locale_index + 2).pressed = true # Select the appropriate button func _on_Language_pressed(index: int) -> void: - get_child(index).pressed = true if index == 1: TranslationServer.set_locale(OS.get_locale()) else: TranslationServer.set_locale(loaded_locales[index - 2]) - Global.config_cache.set_value("preferences", "locale", TranslationServer.get_locale()) Global.config_cache.save("user://cache.ini") - # Update Translations + # Update some UI elements with the new translations Global.update_hint_tooltips() Global.preferences_dialog.list.clear() Global.preferences_dialog.add_tabs(true) diff --git a/src/Preferences/PreferencesDialog.tscn b/src/Preferences/PreferencesDialog.tscn index 2e86244bf..1a45d3b25 100644 --- a/src/Preferences/PreferencesDialog.tscn +++ b/src/Preferences/PreferencesDialog.tscn @@ -158,6 +158,7 @@ size_flags_horizontal = 3 [node name="System Language" type="CheckBox" parent="HSplitContainer/ScrollContainer/VBoxContainer/Language"] margin_right = 506.0 margin_bottom = 24.0 +hint_tooltip = "System Language" mouse_default_cursor_shape = 2 pressed = true group = SubResource( 1 ) @@ -1528,6 +1529,7 @@ show_hidden_files = true [connection signal="about_to_show" from="." to="." method="_on_PreferencesDialog_about_to_show"] [connection signal="popup_hide" from="." to="." method="_on_PreferencesDialog_popup_hide"] [connection signal="item_selected" from="HSplitContainer/List" to="." method="_on_List_item_selected"] +[connection signal="pressed" from="HSplitContainer/ScrollContainer/VBoxContainer/Language/System Language" to="HSplitContainer/ScrollContainer/VBoxContainer/Language" method="_on_Language_pressed" binds= [ 1 ]] [connection signal="value_changed" from="HSplitContainer/ScrollContainer/VBoxContainer/Interface/ShrinkContainer/ShrinkHSlider" to="." method="_on_ShrinkHSlider_value_changed"] [connection signal="pressed" from="HSplitContainer/ScrollContainer/VBoxContainer/Interface/ShrinkContainer/ShrinkApplyButton" to="." method="_on_ShrinkApplyButton_pressed"] [connection signal="item_selected" from="HSplitContainer/ScrollContainer/VBoxContainer/Extensions/InstalledExtensions" to="HSplitContainer/ScrollContainer/VBoxContainer/Extensions" method="_on_InstalledExtensions_item_selected"]