mirror of
https://github.com/Orama-Interactive/Pixelorama.git
synced 2025-02-08 19:39:50 +00:00
92e0e7e11c
Got rid of the second for loop, so maybe this is a minor speedup as well.
68 lines
2.5 KiB
GDScript
68 lines
2.5 KiB
GDScript
extends Node
|
|
|
|
const LANGUAGES_DICT := {
|
|
"en_US": ["English", "English"],
|
|
"cs_CZ": ["Czech", "Czech"],
|
|
"da_DK": ["Dansk", "Danish"],
|
|
"de_DE": ["Deutsch", "German"],
|
|
"el_GR": ["Ελληνικά", "Greek"],
|
|
"eo": ["Esperanto", "Esperanto"],
|
|
"es_ES": ["Español", "Spanish"],
|
|
"fr_FR": ["Français", "French"],
|
|
"id_ID": ["Indonesian", "Indonesian"],
|
|
"it_IT": ["Italiano", "Italian"],
|
|
"lv_LV": ["Latvian", "Latvian"],
|
|
"pl_PL": ["Polski", "Polish"],
|
|
"pt_BR": ["Português Brasileiro", "Brazilian Portuguese"],
|
|
"pt_PT": ["Português", "Portuguese"],
|
|
"ru_RU": ["Русский", "Russian"],
|
|
"zh_CN": ["简体中文", "Chinese Simplified"],
|
|
"zh_TW": ["繁體中文", "Chinese Traditional"],
|
|
"nb_NO": ["Norsk Bokmål", "Norwegian Bokmål"],
|
|
"hu_HU": ["Magyar", "Hungarian"],
|
|
"ro_RO": ["Română", "Romanian"],
|
|
"ko_KR": ["한국어", "Korean"],
|
|
"tr_TR": ["Türkçe", "Turkish"],
|
|
"ja_JP": ["日本語", "Japanese"],
|
|
"uk_UA": ["Українська", "Ukrainian"],
|
|
}
|
|
|
|
var loaded_locales := LANGUAGES_DICT.keys()
|
|
|
|
|
|
func _ready() -> void:
|
|
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
|
|
|
|
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]
|
|
button.hint_tooltip = LANGUAGES_DICT[locale][1]
|
|
button.mouse_default_cursor_shape = Control.CURSOR_POINTING_HAND
|
|
button.group = button_group
|
|
add_child(button)
|
|
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:
|
|
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 some UI elements with the new translations
|
|
Global.update_hint_tooltips()
|
|
Global.preferences_dialog.list.clear()
|
|
Global.preferences_dialog.add_tabs(true)
|