Procházet zdrojové kódy

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

Load needed editor translation only on demand
Rémi Verschelde před 7 roky
rodič
revize
0671035d4f
2 změnil soubory, kde provedl 29 přidání a 28 odebrání
  1. 29 27
      editor/editor_settings.cpp
  2. 0 1
      editor/editor_settings.h

+ 29 - 27
editor/editor_settings.cpp

@@ -256,8 +256,11 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
 
 		String best;
 
-		for (int i = 0; i < translations.size(); i++) {
-			String locale = translations[i]->get_locale();
+		EditorTranslationList *etl = _editor_translations;
+
+		while (etl->data) {
+
+			const String &locale = etl->lang;
 			lang_hint += ",";
 			lang_hint += locale;
 
@@ -268,6 +271,8 @@ void EditorSettings::_load_defaults(Ref<ConfigFile> p_extra_config) {
 			if (best == String() && host_lang.begins_with(locale)) {
 				best = locale;
 			}
+
+			etl++;
 		}
 
 		if (best == String()) {
@@ -883,11 +888,29 @@ void EditorSettings::setup_language() {
 	if (lang == "en")
 		return; //none to do
 
-	for (int i = 0; i < translations.size(); i++) {
-		if (translations[i]->get_locale() == lang) {
-			TranslationServer::get_singleton()->set_tool_translation(translations[i]);
-			break;
+	EditorTranslationList *etl = _editor_translations;
+
+	while (etl->data) {
+
+		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;
 	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();
 }
 

+ 0 - 1
editor/editor_settings.h

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