AvalonGUIConfig.Translation.LoadTranslations C# (CSharp) Метод

LoadTranslations() публичный статический Метод

public static LoadTranslations ( string lang ) : int
lang string
Результат int
        public static int LoadTranslations(string lang)
        {
            XmlDocument doc = new XmlDocument();
            Dictionary<string, string> TranslatedStrings = new Dictionary<string, string>();
            string langPath = "";
            try
            {
                langPath = Path.Combine(_path, lang + ".xml");
                doc.Load(langPath);
            }
            catch (Exception e)
            {
                if (lang == "en")
                    return 0; // otherwise we are in an endless loop!

                if (e.GetType() == typeof(FileNotFoundException))
                    Log.Info(string.Format("Avalon Translation: Cannot find translation file {0}.  Failing back to English", langPath));
                else
                {
                    Log.Info(string.Format("Avalon Translation: Error in translation xml file: {0}. Failing back to English", lang));
                    Log.Info("Avalon Translation:" + e.ToString());
                }

                return LoadTranslations("en");
            }
            foreach (XmlNode stringEntry in doc.DocumentElement.ChildNodes)
            {
                if (stringEntry.NodeType == XmlNodeType.Element)
                    try
                    {
                        if (stringEntry.Attributes.GetNamedItem("Field").Value.StartsWith("#"))
                        {
                            FixedTranslations.Add(stringEntry.Attributes.GetNamedItem("Field").Value, stringEntry.InnerText);
                        }
                        else
                            TranslatedStrings.Add(stringEntry.Attributes.GetNamedItem("Field").Value, stringEntry.InnerText);
                    }
                    catch (Exception ex)
                    {
                        Log.Error("Avalon Translation: Error in Translation Engine");
                        Log.Error("Avalon Translation:" + ex.ToString());
                    }
            }

            Type TransType = typeof(Translation);
            var fieldInfos = TransType.GetFields(BindingFlags.Public | BindingFlags.Static)
                             .Where(p => p.FieldType == typeof(string));

            foreach (var fi in fieldInfos)
            {
                if (TranslatedStrings != null && TranslatedStrings.ContainsKey(fi.Name))
                    TransType.InvokeMember(fi.Name, BindingFlags.SetField, null, TransType, new object[] { TranslatedStrings[fi.Name] });
                else
                {
                    // There is no hard-coded translation so create one
                    Log.Info(string.Format("Avalon Translation: Translation not found for field: {0}.  Using hard-coded English default.", fi.Name));
                }
            }
            return TranslatedStrings.Count;
        }