private void InitLanguageTable()
{
dataGridView_translations.Rows.Clear();
langCodes.Clear();
string translationsPath = Path.Combine(MaidFiddler.DATA_PATH, Translation.TRANSLATIONS_PATH);
if (!Directory.Exists(translationsPath))
{
Debugger.WriteLine(LogLevel.Warning, "No translation folder found. Creating one...");
Directory.CreateDirectory(translationsPath);
}
string[] files = Directory.GetFiles(translationsPath, "*.txt");
List<LangData> installedLanguages = new List<LangData>();
foreach (string filePath in files)
{
using (StreamReader sr = File.OpenText(filePath))
{
string line = sr.ReadLine();
if (line == null || line.Trim() == string.Empty)
continue;
Match match = Translation.TagPattern.Match(line);
if (!match.Success)
continue;
LangData lang = new LangData
{
Name = Path.GetFileNameWithoutExtension(filePath),
Version = match.Groups["ver"].Value
};
installedLanguages.Add(lang);
Debugger.WriteLine(LogLevel.Info, $"Found language: File={lang.Name}, Version={lang.Version}");
}
}
foreach (string[] langs in
translationList.Split(new[] {'\n', '\r'}, StringSplitOptions.RemoveEmptyEntries)
.Select(s => s.Split(new[] {'\t'}, StringSplitOptions.RemoveEmptyEntries)))
{
LangData lang =
installedLanguages.FirstOrDefault(
data => string.Equals(data.Name, langs[0], StringComparison.InvariantCultureIgnoreCase));
Debugger.WriteLine(LogLevel.Info, $"Lang name: {lang.Name}, Ver: {lang.Version}");
string version = Equals(lang, default(LangData))
? Translation.GetTranslation("TL_NOT_INSTALLED") : lang.Version;
dataGridView_translations.Rows.Add(langs[2], langs[1], langs[3], version);
langCodes.Add(langs[0].ToUpperInvariant());
Debugger.WriteLine(LogLevel.Info, $"Available language: Code={langs[0]}, Version={langs[3]}");
}
}