Inheritance: System.Windows.Forms.Form
        private void GenerateTranslationText(object sender, EventArgs e)
        {            
            System.IO.File.WriteAllText(@"D:\localization.txt", "");
            System.IO.File.AppendAllText(@"D:\localization.txt", "Main" + Environment.NewLine);
            Form test;

            #region
            foreach (Control c in panel1.Controls)
            {                
                AddLocalizationItem(c, @"D:\localization.txt", "Main");
            }

            foreach (Control c in panel2.Controls)
            {
                AddLocalizationItem(c, @"D:\localization.txt", "Main");
            }
            #endregion

            #region
            System.IO.File.AppendAllText(@"D:\localization.txt", "Custom Speed" + Environment.NewLine);
            test = new CustomSpeed();
            foreach (Control c in test.Controls)
            {
                AddLocalizationItem(c, @"D:\localization.txt", "Speed");
            }
            #endregion

            #region
            System.IO.File.AppendAllText(@"D:\localization.txt", "Add Ability" + Environment.NewLine);
            test = new AddAbilityForm();
                        
            foreach (Control c in test.Controls)
            {
                AddLocalizationItem(c, @"D:\localization.txt", "Ability");                
            }
            #endregion

            #region
            System.IO.File.AppendAllText(@"D:\localization.txt", "Add Action" + Environment.NewLine);
            test = new AddActionForm();

            foreach (Control c in test.Controls)
            {                
                AddLocalizationItem(c, @"D:\localization.txt", "Action");                                 
            }
            #endregion

            #region
            System.IO.File.AppendAllText(@"D:\localization.txt", "Add Legendary" + Environment.NewLine);
            test = new AddLegendaryForm();
            foreach (Control c in test.Controls)
            {                
                AddLocalizationItem(c, @"D:\localization.txt", "Legendary");
            }
            #endregion
        }
        // Allows for customized speeds
        private void CustomizeSpeed(object sender, EventArgs e)
        {
            Label temp = (Label)sender;
            NumericUpDown target = null;
            bool isFly = false;

            switch (temp.Tag.ToString())
            {
                case "Speed":
                    target = (NumericUpDown)SpeedUpDown;
                    break;
                case "Swim":
                    target = (NumericUpDown)SwimUpDown;
                    break;
                case "Fly":
                    target = (NumericUpDown)FlyUpDown;
                    isFly = true;
                    break;
                case "Burrow":
                    target = (NumericUpDown)burrowUpDown;
                    break;
                case "Climb":
                    target = (NumericUpDown)ClimbUpDown;
                    break;
            }

            target.Enabled = !target.Enabled;
            if (target.Enabled)
            {
                target.Tag = null;
                TraitsListPopUp.SetToolTip(this, "");
            }
            else
            {
                CustomSpeed speedPrompt = new CustomSpeed();
                speedPrompt.SpeedUpDown.Value = target.Value;
                if (isFly)
                {
                    speedPrompt.HoverCheckBox.Enabled = true;
                    speedPrompt.HoverCheckBox.Checked = HoverCheckBox.Checked;
                }
                speedPrompt.Show();

                speedPrompt.FormClosed += (senders, es) =>
                {
                    if (String.IsNullOrWhiteSpace(speedPrompt.SpeedDescription.Text) || String.IsNullOrEmpty(speedPrompt.SpeedDescription.Text))
                    {
                        target.Enabled = true;
                        target.Tag = null;
                        TraitsListPopUp.SetToolTip(this, "");
                    }
                    else
                    {
                        target.Value = speedPrompt.SpeedUpDown.Value;
                        target.Tag = speedPrompt.SpeedDescription.Text;
                        if (isFly)
                        {
                            HoverCheckBox.Checked = speedPrompt.HoverCheckBox.Checked;
                        }
                    }
                };
            }
        }
        public static void Apply(Form target)
        {
            if (translationData.data == null)
            {
                return;
            }

            if (target is DND_Monster.Main)
            {
                #region
                DND_Monster.Main temp = (DND_Monster.Main)target;
                foreach (Control c in temp.panel1.Controls)
                {
                    foreach (string item in translationData.data.main.items)
                    {
                        if (c.Name == item.Split(':')[0])
                        {
                            try { TranslateControl(c, item); }
                            catch (Exception ex) { Console.WriteLine("Error: " + item.Split(':')[0] + " " + ex.Message); }
                        }
                    }
                }
                foreach (Control c in temp.panel2.Controls)
                {
                    foreach (string item in translationData.data.main.items)
                    {
                        if (c.Name == item.Split(':')[0])
                        {
                            try { TranslateControl(c, item); }
                            catch (Exception ex) { Console.WriteLine("Error: " + item.Split(':')[0] + " " + ex.Message); }
                        }
                    }
                }
                #endregion
            }

            if (target is AddAbilityForm)
            {
                #region
                AddAbilityForm temp = (AddAbilityForm)target;
                foreach (Control c in temp.Controls)
                {
                    if (c is TabControl)
                    {
                        TabControl tctemp = (TabControl)c;
                        foreach (TabPage i in tctemp.Controls)
                        {
                            foreach (Control item in i.Controls)
                            {
                                foreach (string ability in translationData.data.ability.items)
                                {
                                    if (item.Name == ability.Split(':')[0])
                                    {
                                        TranslateControl(item, ability);
                                    }
                                }

                                if (item is TableLayoutPanel)
                                {
                                    TableLayoutPanel tabletemp = (TableLayoutPanel)item;

                                    for (int x = 0; x < tabletemp.ColumnCount; x++)
                                    {
                                        for (int y = 0; y < tabletemp.RowCount; y++)
                                        {
                                            Control check = tabletemp.GetControlFromPosition(x, y);

                                            foreach (string ability in translationData.data.ability.items)
                                            {
                                                if (check.Name == ability.Split(':')[0])
                                                {
                                                    TranslateControl(check, ability);
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
                #endregion
            }

            if (target is AddActionForm)
            {
                #region
                AddActionForm temp = (AddActionForm)target;
                foreach (Control c in temp.Controls)
                {
                    if (c is TabControl)
                    {
                        TabControl tctemp = (TabControl)c;
                        foreach (TabPage i in tctemp.Controls)
                        {
                            foreach (Control item in i.Controls)
                            {
                                foreach (string action in translationData.data.action.items)
                                {
                                    if (item.Name == action.Split(':')[0])
                                    {
                                        TranslateControl(item, action);
                                    }
                                }
                            }
                        }
                    }
                }
                #endregion
            }

            if (target is AddLegendaryForm)
            {
                #region
                AddLegendaryForm temp = (AddLegendaryForm)target;
                foreach (Control c in temp.Controls)
                {
                    foreach (string item in translationData.data.legendary.items)
                    {
                        if (c.Name == item.Split(':')[0])
                        {
                            try { TranslateControl(c, item); }
                            catch (Exception ex) { Console.WriteLine("Error: " + item.Split(':')[0] + " " + ex.Message); }
                        }
                    }
                }
                #endregion
            }

            if (target is CustomSpeed)
            {
                #region
                CustomSpeed temp = (CustomSpeed)target;
                foreach (Control c in temp.Controls)
                {
                    foreach (string item in translationData.data.speed.items)
                    {
                        if (c.Name == item.Split(':')[0])
                        {
                            try { TranslateControl(c, item); }
                            catch (Exception ex) { Console.WriteLine("Error: " + item.Split(':')[0] + " " + ex.Message); }
                        }
                    }
                }
                #endregion
            }
        }