extends Node ## Multilingual strings DE/EN/BY with DE fallback. signal locale_changed var _strings: Dictionary = {} func _ready() -> void: reload() func reload() -> void: _strings = _load_lang("de") var lang := Settings.language if Settings else "de" if lang != "de": var overlay := _load_lang(lang) for key in overlay.keys(): _strings[key] = overlay[key] locale_changed.emit() func _load_lang(lang: String) -> Dictionary: var path := "res://data/locales/%s.json" % lang var file := FileAccess.open(path, FileAccess.READ) if file == null: push_warning("Missing locale: %s" % path) return {} var parsed: Variant = JSON.parse_string(file.get_as_text()) if typeof(parsed) == TYPE_DICTIONARY: return parsed return {} func tr_key(key: String, args: Array = []) -> String: var text := str(_strings.get(key, key)) if args.is_empty(): return text return text % args