static void Init() { window = (AutomaticLanguageAdd)EditorWindow.GetWindow(typeof(AutomaticLanguageAdd), true, "All texts without Language Loader"); allTexts = EditorUtils.FindObjectsOfTypeAll <Text>(); textToMapButton.Clear(); allTextWithoutLoader.Clear(); providerKeyToMapButton.Clear(); allLanguageKeysProvider.Clear(); languageKeysProviderToAdd.Clear(); if (allLanguageNames == null) { List <SystemLanguage> allLanguagesValue = SystemLanguage.GetValues(typeof(SystemLanguage)).Cast <SystemLanguage>().ToList(); allLanguageNames = new List <string>(); foreach (SystemLanguage lang in allLanguagesValue) { allLanguageNames.Add(lang.ToString()); } } for (int i = 0; i < allTexts.Count; i++) { GameObject currentGameobject = allTexts[i].gameObject; if (currentGameobject.GetComponent <LanguageLoader>() == null) { textToMapButton.Add(allTexts[i], false); allTextWithoutLoader.Add(allTexts[i]); } } allLanguageKeysProvider = EditorUtils.FindObjectsOfTypeAll <ISourceCodeLanguageProvider>(); for (int i = 0; i < allLanguageKeysProvider.Count; i++) { ISourceCodeLanguageProvider currentGameobject = allLanguageKeysProvider[i]; List <string> allKeys = currentGameobject.GetAllProvidedKeys(); foreach (string currentkey in allKeys) { if (!providerKeyToMapButton.ContainsKey(currentkey)) { providerKeyToMapButton.Add(currentkey, false); languageKeysProviderToAdd.Add(currentkey); } else { Debug.Log("The key " + currentkey + " is already here"); } } } window.Show(); }