Esempio n. 1
0
        private ToolStripMenuItem CreateMenuItem(MenuTypes menuType, LngKeys lngKey, bool enabled)
        {
            ToolStripMenuItem menuItem = new ToolStripMenuItem(LngText(lngKey))
            {
                Enabled = enabled,
                Tag     = menuType,
                Checked = false,
            };

            menuItem.Click += Menu_Click;
            _menuItemList.Add(menuItem);
            return(menuItem);
        }
Esempio n. 2
0
        /// <summary>
        /// Get a list of all language keys
        /// </summary>
        /// <returns></returns>
        //public List<string> GetLanguageKeys()
        //{
        //	return (from l in LanguageList orderby l.Key select $"{l.Key} {l.DisplayName}").ToList();
        //}

        public string GetText(LngKeys textKey)
        {
            if (CurrentLanguage == null)
            {
                SetDefaultLanguage();
            }

            string keyStr = textKey.ToString();

            // get text from current language
            if (CurrentLanguage.Items.ContainsKey(textKey))
            {
                return((from l in CurrentLanguage.Items where l.Key == textKey select l.Value).FirstOrDefault());
            }

            // get text from default language
            if (DefaultLanguage.Items.ContainsKey(textKey))
            {
                return((from l in DefaultLanguage.Items where l.Key == textKey select l.Value).FirstOrDefault());
            }

            // get language text key
            return(keyStr);
        }
Esempio n. 3
0
        public Language LoadLanguage(string filename)
        {
            const char REPLACE_CHAR = '\x01';

            try
            {
                Language language = new Language();
                string[] lines;
                try
                {
                    lines = File.ReadAllLines(filename);
                }
                catch (Exception ex)
                {
                    Logging.Instance.Error(TAG, nameof(LoadLanguage), $"Error loading {filename}", ex);
                    return(null);
                }
                for (int i = 0; i < lines.Length; i++)
                {
                    string line = lines[i];
                    if (string.IsNullOrWhiteSpace(line))
                    {
                        // empty line
                        continue;
                    }
                    line = line.Trim();
                    if (line[0] == ';')
                    {
                        // comment line
                        continue;
                    }

                    line = ReplaceQuotedBlanks(line, REPLACE_CHAR);
                    string[] words = line.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                    if (words.Length < 2)
                    {
                        Logging.Instance.Error(TAG, nameof(LoadLanguage), $"File {filename}: error in line #{line} ({line})");
                        return(null);
                    }
                    string cmd = words[0].ToLower();
                    string prm = words[1].Replace(REPLACE_CHAR, ' ');
                    switch (words[0].ToLower())
                    {
                    case "key":
                        language.Key = prm.ToLower();
                        break;

                    case "version":
                        if (prm != "1")
                        {
                            Logging.Instance.Error(TAG, nameof(LoadLanguage), $"File {filename}: Version {prm} not supported");
                            return(null);
                        }
                        language.Version = prm;
                        break;

                    case "name":
                        language.DisplayName = prm;
                        break;

                    case "text":
                        if (words.Length < 3)
                        {
                            Logging.Instance.Error(TAG, nameof(LoadLanguage), $"File {filename}: error in line #{line} ({line})");
                        }
                        LngKeys lngKey = Language.StringToLngKey(prm);
                        if (lngKey == LngKeys.Invalid)
                        {
                            Logging.Instance.Error(TAG, nameof(LoadLanguage), $"File {filename}: invalid key {prm} in line #{line}");
                        }
                        string text = words[2].Replace(REPLACE_CHAR, ' ');
                        language.Items.Add(lngKey, text);
                        break;
                    }
                }

                if (string.IsNullOrWhiteSpace(language.Key))
                {
                    Logging.Instance.Error(TAG, nameof(LoadLanguage), $"File {filename}: missing key");
                    return(null);
                }
                if (string.IsNullOrWhiteSpace(language.DisplayName))
                {
                    Logging.Instance.Error(TAG, nameof(LoadLanguage), $"File {filename}: missing name");
                    return(null);
                }
                if (language.Items.Count == 0)
                {
                    Logging.Instance.Error(TAG, nameof(LoadLanguage), $"File {filename}: not text items");
                    return(null);
                }
                return(language);
            }
            catch (Exception ex)
            {
                Logging.Instance.Error(TAG, "LoadLanguage", $"language file {filename} not found", ex);
                return(null);
            }
        }
Esempio n. 4
0
 private string LngText(LngKeys key)
 {
     return(LanguageManager.Instance.GetText(key));
 }
Esempio n. 5
0
 public MenuItemTag(MainStripMenu.MenuTypes menuType, LngKeys lngKey)
 {
     MenuType = menuType;
     LngKey   = lngKey;
 }