Пример #1
0
        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();
        }
Пример #2
0
 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;
 }
Пример #3
0
        //=========================================================================================
        // 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);
                }
            }
        }
Пример #4
0
        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);
                }
            }
        }