Exemple #1
0
        internal Language(LocaleData data)
        {
            LanguageCode = data.LanguageCode;

            Fullname            = data.FullLangName;
            Mapping             = data.Language;
            ReverseMapping      = new Dictionary <string, int>();
            RedefinitionMapping = new Dictionary <int, int>();
            foreach (KeyValuePair <int, string> item in Mapping)
            {
                if (ReverseMapping.ContainsKey(item.Value))
                {
                    RedefinitionMapping.Add(item.Key, ReverseMapping[item.Value]);
                }
                else
                {
                    ReverseMapping.Add(item.Value, item.Key);
                }
            }
        }
        private static LocaleData ParseLangFile(string filePath)
        {
            try {
                string completeName = Path.GetFileNameWithoutExtension(filePath);
                int    first        = completeName.IndexOf('-', 0);
                int    second       = completeName.IndexOf('-', first + 1);
                if (second == -1)
                {
                    second = completeName.Length;
                }
                string     mainLangCode = completeName.Substring(0, second);
                LocaleData data         = new LocaleData {
                    Language     = new Dictionary <int, string>(),
                    LanguageCode = mainLangCode
                };

                using (StreamReader reader = File.OpenText(filePath)) {
                    Regex regex = new Regex(@"(-?\d+):(.+)");
                    while (!reader.EndOfStream)
                    {
                        string line = reader.ReadLine();
                        if (line.StartsWith("#") || string.IsNullOrEmpty(line))
                        {
                            continue;
                        }
                        if (line.StartsWith("/"))
                        {
                            data.FullLangName = line.Substring(1);
                            continue;
                        }
                        Match match = regex.Match(line);
                        data.Language.Add(int.Parse(match.Groups[1].Value), match.Groups[2].Value);
                    }
                }
                return(data);
            }
            catch {
                return(null);
            }
        }