private void DrawAddNewLanguageButton()
    {
        GUILayout.Space(8);
        EditorGUILayout.LabelField("Input new Language name:");

        EditorGUI.BeginChangeCheck();
        m_newLanguageName = EditorGUILayout.TextField(m_newLanguageName);
        if (EditorGUI.EndChangeCheck())
        {
            m_showSureToDelete = false;
            m_languageToDelete = Languages.English;
        }

        if (showAddFeedback)
        {
            EditorGUILayout.HelpBox(m_newLanguageName + " added", MessageType.Info);

            framesFeedbackShown++;
            if (framesFeedbackShown >= 15)
            {
                framesFeedbackShown = 0;
                showAddFeedback     = false;
            }
        }

        m_canAddNewLanguage = !string.IsNullOrEmpty(m_newLanguageName) &&
                              !Enum.IsDefined(typeof(Languages), m_newLanguageName) &&
                              TextFieldCheck(ref m_newLanguageName, true);
        string addButtonText = "Add new language";

        if (Enum.IsDefined(typeof(Languages), m_newLanguageName))
        {
            addButtonText = "Language already exists";
        }
        if (!TextFieldCheck(ref m_newLanguageName, true))
        {
            addButtonText = "Illegal characters detected";
        }

        GUI.enabled = m_canAddNewLanguage;
        if (GUILayout.Button(addButtonText))
        {
            List <string> possibleLanguage = Enum.GetNames(typeof(Languages)).ToList();
            possibleLanguage.Add(m_newLanguageName);

            EnumGenerator.GenerateEnumFromList(Application.dataPath + LANGUAGES_ENUM_PATH, "Languages",
                                               possibleLanguage);

            showAddFeedback = true;
        }
        GUI.enabled = true;

        if (!TextFieldCheck(ref m_newLanguageName, true))
        {
            EditorGUILayout.HelpBox("Languages are only allowed to consist of characters and numbers. \nNo numbers in the first position.", MessageType.Warning);
        }
    }
    private void DeleteLanguage()
    {
        GUILayout.Space(5);
        EditorGUILayout.LabelField("Select Language to delete:");

        EditorGUI.BeginChangeCheck();
        m_languageToDelete = (Languages)EditorGUILayout.EnumPopup(m_languageToDelete);
        if (EditorGUI.EndChangeCheck())
        {
            m_showSureToDelete = false;
        }

        GUI.enabled = m_languageToDelete != Languages.English && !m_showSureToDelete;
        if (GUILayout.Button("Delete Language"))
        {
            m_showSureToDelete = true;
        }

        GUI.enabled = true;

        GUILayout.BeginHorizontal();
        GUILayout.Space(position.width / 4);
        if (m_showSureToDelete)
        {
            if (GUILayout.Button("Are you sure?", GUILayout.Width(position.width / 2)))
            {
                m_showSureToDelete = false;
                showRemoveFeedback = true;
                if (m_loadedLanguage == m_languageToDelete)
                {
                    m_secondLanguageFile = new LanguageFile();
                }

                List <string> currentEnum = Enum.GetNames(typeof(Languages)).ToList();
                currentEnum.RemoveAt((int)m_languageToDelete);

                languageRemoved = m_languageToDelete.ToString();

                LocalizationManager.RemoveLanguageFile(m_languageToDelete);
                EnumGenerator.GenerateEnumFromList(Application.dataPath + LANGUAGES_ENUM_PATH, "Languages",
                                                   currentEnum);

                m_languageToDelete = Languages.English;
                AssetDatabase.Refresh();
            }
        }
        GUILayout.EndHorizontal();


        if (showRemoveFeedback)
        {
            EditorGUILayout.HelpBox(languageRemoved + " removed", MessageType.Info);

            framesFeedbackShown++;
            if (framesFeedbackShown >= 15)
            {
                framesFeedbackShown = 0;
                showRemoveFeedback  = false;
                languageRemoved     = "";
            }
        }
    }