Merge pull request #15399 from poke1024/load-one-translation

Load needed editor translation only on demand
This commit is contained in:
Rémi Verschelde 2018-02-14 17:04:44 +01:00 committed by GitHub
commit 0671035d4f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 29 additions and 28 deletions

View File

@ -256,8 +256,11 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
String best; String best;
for (int i = 0; i < translations.size(); i++) { EditorTranslationList *etl = _editor_translations;
String locale = translations[i]->get_locale();
while (etl->data) {
const String &locale = etl->lang;
lang_hint += ","; lang_hint += ",";
lang_hint += locale; lang_hint += locale;
@ -268,6 +271,8 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
if (best == String() && host_lang.begins_with(locale)) { if (best == String() && host_lang.begins_with(locale)) {
best = locale; best = locale;
} }
etl++;
} }
if (best == String()) { if (best == String()) {
@ -883,11 +888,29 @@ void EditorSettings::setup_language() {
if (lang == "en") if (lang == "en")
return; //none to do return; //none to do
for (int i = 0; i < translations.size(); i++) { EditorTranslationList *etl = _editor_translations;
if (translations[i]->get_locale() == lang) {
TranslationServer::get_singleton()->set_tool_translation(translations[i]); while (etl->data) {
break;
if (etl->lang == lang) {
Vector<uint8_t> data;
data.resize(etl->uncomp_size);
Compression::decompress(data.ptrw(), etl->uncomp_size, etl->data, etl->comp_size, Compression::MODE_DEFLATE);
FileAccessMemory *fa = memnew(FileAccessMemory);
fa->open_custom(data.ptr(), data.size());
Ref<Translation> tr = TranslationLoaderPO::load_translation(fa, NULL, "translation_" + String(etl->lang));
if (tr.is_valid()) {
tr->set_locale(etl->lang);
TranslationServer::get_singleton()->set_tool_translation(tr);
break;
}
} }
etl++;
} }
} }
@ -1457,27 +1480,6 @@ EditorSettings::EditorSettings() {
optimize_save = true; optimize_save = true;
save_changed_setting = true; save_changed_setting = true;
EditorTranslationList *etl = _editor_translations;
while (etl->data) {
Vector<uint8_t> data;
data.resize(etl->uncomp_size);
Compression::decompress(data.ptrw(), etl->uncomp_size, etl->data, etl->comp_size, Compression::MODE_DEFLATE);
FileAccessMemory *fa = memnew(FileAccessMemory);
fa->open_custom(data.ptr(), data.size());
Ref<Translation> tr = TranslationLoaderPO::load_translation(fa, NULL, "translation_" + String(etl->lang));
if (tr.is_valid()) {
tr->set_locale(etl->lang);
translations.push_back(tr);
}
etl++;
}
_load_defaults(); _load_defaults();
} }

View File

@ -95,7 +95,6 @@ private:
int last_order; int last_order;
Ref<Resource> clipboard; Ref<Resource> clipboard;
Vector<Ref<Translation> > translations;
Map<String, Ref<ShortCut> > shortcuts; Map<String, Ref<ShortCut> > shortcuts;
String resource_path; String resource_path;