# Alternative to [TranslationServer] that works inside the editor # This is a modified version of AnidemDex's TranslationService # https://github.com/AnidemDex/Godot-TranslationService tool class_name DTS var translations = {} #var testText = "Initial Text" func _init(): translations_initial_load() # Translates a message using translation catalogs configured in the Editor Settings. func translate(message:String)->String: var translation translation = _get_translation(message) return translation func translations_initial_load(): var translations_resources = ['en', 'zh_CN', 'es', 'fr', 'de'] translations = {} for resource in translations_resources: var t:PHashTranslation = load('res://addons/dialogic/Localization/dialogic.' + resource + '.translation') if translations.has(t.locale): translations[t.locale].append(t) else: translations[t.locale] = [t] # Each value is an Array of [PHashTranslation]. func get_translations() -> Dictionary: return translations func _get_translation(message)->String: var returned_translation = message var default_fallback = 'en' var editor_plugin = EditorPlugin.new() var editor_settings = editor_plugin.get_editor_interface().get_editor_settings() var locale = editor_settings.get('interface/editor/editor_language') var cases = translations.get( locale, translations.get(default_fallback, [PHashTranslation.new()]) ) for case in cases: returned_translation = (case as PHashTranslation).get_message(message) if returned_translation: break else: # If there's no translation, returns the original string returned_translation = message #print('Message: ', message, ' - locale: ', locale, ' - ', returned_translation) return returned_translation