diff options
Diffstat (limited to 'editor/editor_translation.cpp')
-rw-r--r-- | editor/editor_translation.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/editor/editor_translation.cpp b/editor/editor_translation.cpp index 426daad823..54a9d2f068 100644 --- a/editor/editor_translation.cpp +++ b/editor/editor_translation.cpp @@ -35,6 +35,7 @@ #include "core/io/translation_loader_po.h" #include "editor/doc_translations.gen.h" #include "editor/editor_translations.gen.h" +#include "editor/property_translations.gen.h" Vector<String> get_editor_locales() { Vector<String> locales; @@ -101,3 +102,29 @@ void load_doc_translations(const String &p_locale) { dtl++; } } + +void load_property_translations(const String &p_locale) { + PropertyTranslationList *etl = _property_translations; + while (etl->data) { + if (etl->lang == p_locale) { + Vector<uint8_t> data; + data.resize(etl->uncomp_size); + int ret = Compression::decompress(data.ptrw(), etl->uncomp_size, etl->data, etl->comp_size, Compression::MODE_DEFLATE); + ERR_FAIL_COND_MSG(ret == -1, "Compressed file is corrupt."); + + Ref<FileAccessMemory> fa; + fa.instantiate(); + fa->open_custom(data.ptr(), data.size()); + + Ref<Translation> tr = TranslationLoaderPO::load_translation(fa); + + if (tr.is_valid()) { + tr->set_locale(etl->lang); + TranslationServer::get_singleton()->set_property_translation(tr); + break; + } + } + + etl++; + } +} |