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."); } }