public void languageUpdate(string language)
        {
            string userLanguagefile = AppDomain.CurrentDomain.BaseDirectory + "\\lngFls\\userLanguage";

            foreach (languageFile langugeFile in langugeFiles)
            {
                if (langugeFile.Name == language)
                {
                    Console.WriteLine("Language changed to " + language);
                    userLanguage = langugeFile;
                    try { File.WriteAllText(userLanguagefile, language); }
                    catch (Exception ex) { MessageBox.Show("Can't save userLanguage file" + Environment.NewLine + "Error: " + ex.Message); }
                    break;
                }
            }
        }
        public void initializeLanguages(ComboBox LangSelector)
        {
            if (!Directory.Exists(AppDomain.CurrentDomain.BaseDirectory + "\\lngFls\\"))
            {
                try { Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + "\\lngFls\\"); } catch { MessageBox.Show("Failed to create languages folder"); }
            }


            string userLanguagefile = AppDomain.CurrentDomain.BaseDirectory + "\\lngFls\\userLanguage";
            string language         = "English - Default";

            if (File.Exists(userLanguagefile))
            {
                try { language = File.ReadAllText(userLanguagefile); } catch { }
            }


            langugeFiles    = new List <languageFile>();
            defaultLanguage = null;
            userLanguage    = null;

            foreach (string filepath in Directory.EnumerateFiles(AppDomain.CurrentDomain.BaseDirectory + "\\lngFls\\", "*.csv", SearchOption.TopDirectoryOnly))
            {
                string       filename        = Path.GetFileNameWithoutExtension(filepath);
                languageFile currentLanguage = new languageFile(filename, new List <string[]>());

                try
                {
                    using (var reader = new StreamReader(filepath))
                    {
                        var      csv    = new CsvReader(reader, CultureInfo.InvariantCulture);
                        string[] header = new string[] { "slug", "translation", "original" };
                        csv.Configuration.HasHeaderRecord = true;
                        csv.Configuration.IgnoreQuotes    = false;
                        csv.Configuration.Delimiter       = ",";

                        var bad = new List <string>();
                        csv.Configuration.BadDataFound = context =>
                        {
                            bad.Add(context.RawRecord);
                        };

                        while (csv.Read())
                        {
                            if (csv.Context.Row == 1)
                            {
                                csv.ReadHeader();
                                continue;
                            }

                            csv.TryGetField(header[0], out string field1);
                            string field2;
                            if (filename == "English - Default")
                            {
                                csv.TryGetField(header[2], out field2);
                            }
                            else
                            {
                                csv.TryGetField(header[1], out field2);
                            }

                            if (!string.IsNullOrEmpty(field1) && !string.IsNullOrEmpty(field2))
                            {
                                currentLanguage.Rows.Add(new string[] { field1, field2 });
                            }
                        }

                        Console.WriteLine("Bad records: " + string.Join(",", bad));
                    }

                    ComboBoxItem item = new ComboBoxItem();
                    item.Content = filename;
                    item.Tag     = filename;
                    LangSelector.Items.Add(item);

                    langugeFiles.Add(currentLanguage);

                    if (currentLanguage.Rows.Count > 0 && filename == language)
                    {
                        userLanguage      = currentLanguage;
                        LangSelector.Text = filename;
                    }
                    if (currentLanguage.Rows.Count > 0 && filename == "English - Default")
                    {
                        defaultLanguage = currentLanguage;
                        if (string.IsNullOrEmpty(language))
                        {
                            LangSelector.Text = filename;
                        }
                    }

                    Console.WriteLine("Language file " + filename + " loaded, " + currentLanguage.Rows.Count + " records added");
                }
                catch (Exception e)
                {
                    MessageBox.Show("Error to parse \"\\lngFls\\" + language + ".csv\": " + e.Message);
                }
            }

            if (userLanguage == null)
            {
                MessageBox.Show("Language file " + language + ".csv is empty or does not exists.");
            }
        }