static Manager() { if (LicenseManager.UsageMode == LicenseUsageMode.Designtime) { return; } string path = TaxonUtils.GetConfigFilePath(); if (Directory.Exists(path)) { string[] files = Directory.GetFiles(path); string prefix = Path.GetFileNameWithoutExtension(TaxonUtils.GetConfigFileName("language_")).ToLower(); foreach (string f in files) { string fname = Path.GetFileNameWithoutExtension(f).ToLower(); if (fname.StartsWith(prefix)) { fname = fname.Replace(prefix, ""); if (fname.Length == 2) { Languages.Add(fname); } } } } Languages.Load(); Languages.Save(); CurrentLanguage = Languages.GetDefault(); IsDirty = false; StartWatcher(); }
private static void StartWatcher() { _Watcher = new FileSystemWatcher(); _Watcher.Path = TaxonUtils.GetConfigFilePath(); _Watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName; _Watcher.Filter = "*.xml"; _Watcher.IncludeSubdirectories = false; _Watcher.Changed += new FileSystemEventHandler(OnChanged); _Watcher.EnableRaisingEvents = true; }
//========================================================================================= // Export / Import // public static void ExportAllLanguages() { Dictionary <Language, Dictionary <string, string> > allText = new Dictionary <Language, Dictionary <string, string> >(); foreach (var lang in Languages.GetAvailableLanguages()) { Dictionary <string, string> result = LoadLanguage(lang.Iso); if (result != null) { allText[lang] = result; } } // get all keys Dictionary <string, bool> allKeys = new Dictionary <string, bool>(); foreach (var perLang in allText) { foreach (string key in perLang.Value.Keys) { allKeys[key] = true; } } List <string> listKeys = allKeys.Keys.ToList(); listKeys.Sort(); string exportFile = Path.Combine(TaxonUtils.GetConfigFilePath(), "AllTexts.csv"); using (TextWriter writer = new StreamWriter(exportFile)) { string headerLine = "Key;" + string.Join(";", allText.Keys); writer.WriteLine(headerLine); foreach (string key in listKeys) { string line = key; foreach (var dico in allText.Values) { line += ";"; if (dico.TryGetValue(key, out string value)) { line += value; } } writer.WriteLine(line); } } }
public static void ImportAllLanguages() { Regex isoRegex = new Regex("\\((.*)\\)"); using (TextReader reader = new StreamReader(Path.Combine(TaxonUtils.GetConfigFilePath(), "AllTexts.csv"))) { // reade head line string line = reader.ReadLine(); if (line == null) { return; } string[] parts = line.Split(';'); int numColumns = parts.Length; if (numColumns <= 1) { return; } if (parts[0].Trim().ToLower() != "key") { return; } List <Tuple <Language, Dictionary <string, string> > > allText = new List <Tuple <Language, Dictionary <string, string> > >(); for (int i = 1; i < numColumns; i++) { Match isoMatch = isoRegex.Match(parts[i]); if (!isoMatch.Success || isoMatch.Groups.Count < 2) { return; } string iso = isoMatch.Groups[1].Value; Language lang = Languages.Get(iso, true); allText.Add(new Tuple <Language, Dictionary <string, string> >(lang, new Dictionary <string, string>())); } Dictionary <string, bool> keyDone = new Dictionary <string, bool>(); while ((line = reader.ReadLine()) != null) { parts = line.Split(';'); if (parts.Length != numColumns) { continue; } if (keyDone.ContainsKey(parts[0])) { continue; } keyDone[parts[0]] = true; for (int i = 1; i < numColumns; i++) { if (!String.IsNullOrEmpty(parts[i])) { allText[i - 1].Item2[parts[0]] = parts[i]; } } } foreach (var data in allText) { SaveLanguage(data.Item1.Iso, data.Item2); } } }