diff --git a/core/string/translation.cpp b/core/string/translation.cpp index 2f25f56eac6..0a0052d6cbe 100644 --- a/core/string/translation.cpp +++ b/core/string/translation.cpp @@ -1012,6 +1012,29 @@ bool TranslationServer::is_placeholder(String &p_message, int p_index) const { p_message[p_index + 1] == 'o' || p_message[p_index + 1] == 'x' || p_message[p_index + 1] == 'X' || p_message[p_index + 1] == 'f'); } +#ifdef TOOLS_ENABLED +void TranslationServer::get_argument_options(const StringName &p_function, int p_idx, List *r_options) const { + const String pf = p_function; + if (p_idx == 0) { + HashMap *target_hash_map = nullptr; + if (pf == "get_language_name") { + target_hash_map = &language_map; + } else if (pf == "get_script_name") { + target_hash_map = &script_map; + } else if (pf == "get_country_name") { + target_hash_map = &country_name_map; + } + + if (target_hash_map) { + for (const KeyValue &E : *target_hash_map) { + r_options->push_back(E.key.quote()); + } + } + } + Object::get_argument_options(p_function, p_idx, r_options); +} +#endif // TOOLS_ENABLED + void TranslationServer::_bind_methods() { ClassDB::bind_method(D_METHOD("set_locale", "locale"), &TranslationServer::set_locale); ClassDB::bind_method(D_METHOD("get_locale"), &TranslationServer::get_locale); diff --git a/core/string/translation.h b/core/string/translation.h index bd7082dc9df..470ba882329 100644 --- a/core/string/translation.h +++ b/core/string/translation.h @@ -197,6 +197,10 @@ public: void load_translations(); +#ifdef TOOLS_ENABLED + virtual void get_argument_options(const StringName &p_function, int p_idx, List *r_options) const override; +#endif // TOOLS_ENABLED + TranslationServer(); };