示例#1
0
        public string GetValue(string Key, string fallback = null)
        {
            string v = null;

            v = RawData.FindValue(Key);
            if (v is null)
            {
                v = fallback;
            }
            return(v);
        }
示例#2
0
        /// <summary>
        /// Init language dictionary with given culture information string (e.g.: en-US).
        /// </summary>
        /// <param name="CultureInfo"></param>
        public static void Initialize(string CultureInfo)
        {
            Assembly      assembly    = typeof(Language).Assembly;
            DirectoryInfo location    = new DirectoryInfo(Path.Combine(new FileInfo(assembly.Location).DirectoryName, "Locales", CultureInfo.ToUpper()));
            DirectoryInfo location_en = new DirectoryInfo(Path.Combine(new FileInfo(assembly.Location).DirectoryName, "Locales", "EN-US"));

            if (!location.Exists)
            {
                location = new DirectoryInfo(Path.Combine(new FileInfo(assembly.Location).DirectoryName, "Locales", "EN-US"));
            }
            if (!location.Exists)
            {
                Trace.WriteLine("Cannot find applicable language files.");
                return;
            }
            LanguageStrings.Clear();
            //Load english first.
            foreach (var item in location_en.EnumerateFiles())
            {
                INILikeData keyValuePairs = INILikeData.LoadFromWR(new FileWR(item));
                string      Namespace     = keyValuePairs.FindValue("Namespace");
                foreach (var ID in keyValuePairs)
                {
                    if (ID.Key != "Namespace")
                    {
                        var Key = $"{Namespace}.{ID.Key}";
                        if (LanguageStrings.ContainsKey(Key))
                        {
                            LanguageStrings[Key] = ID.Value;
                        }
                        else
                        {
                            LanguageStrings.Add(Key, ID.Value);
                        }
                    }
                }
                keyValuePairs.Dispose();
            }

            //Then load target language.
            if (location.FullName != location_en.FullName)
            {
                foreach (var item in location.EnumerateFiles())
                {
                    INILikeData keyValuePairs = INILikeData.LoadFromWR(new FileWR(item));
                    string      Namespace     = keyValuePairs.FindValue("Namespace");
                    foreach (var ID in keyValuePairs)
                    {
                        if (ID.Key != "Namespace")
                        {
                            var Key = $"{Namespace}.{ID.Key}";
                            if (LanguageStrings.ContainsKey(Key))
                            {
                                LanguageStrings[Key] = ID.Value;
                            }
                            else
                            {
                                LanguageStrings.Add(Key, ID.Value);
                            }
                        }
                    }
                    keyValuePairs.Dispose();
                }
            }
        }