public void LoadLanguages() { cmbLanguages.Items.Clear(); cmbLanguages.Items.Add("(default) 简体中文"); string str = AppString.Other.Translators + Environment.NewLine + new string('-', 74); if (Directory.Exists(AppConfig.LangsDir)) { languages.Clear(); foreach (string fileName in Directory.GetFiles(AppConfig.LangsDir, "*.ini")) { string langName = Path.GetFileNameWithoutExtension(fileName); IniWriter reader = new IniWriter(fileName); string language = reader.GetValue("General", "Language"); if (language.IsNullOrWhiteSpace()) { language = langName; } string translator = reader.GetValue("General", "Translator"); str += Environment.NewLine + language + new string('\t', 5) + translator; cmbLanguages.Items.Add(language); languages.Add(langName); } } txtTranslators.Text = str; cmbLanguages.SelectedIndex = GetSelectIndex(); }
public static string GetLocalizedFileNames(string filePath, bool translate = false) { IniWriter writer = new IniWriter(GetDesktopIniPath(filePath)); string fileName = Path.GetFileName(filePath); string name = writer.GetValue(LocalizedFileNames, fileName); if (translate) { name = ResourceString.GetDirectString(name); } return(name); }
private static bool TryGetValue(Guid guid, string key, out string value) { //用户自定义字典优先 string section = guid.ToString(); value = UserDic.GetValue(section, key); if (value != string.Empty) { return(true); } if (WebDic.TryGetValue(section, key, out value)) { return(true); } if (AppDic.TryGetValue(section, key, out value)) { return(true); } return(false); }
private void InitializeComponents() { this.Controls.AddRange(new Control[] { lblSections, cmbSections, lblKeys, cmbKeys, lblDefault, txtDefault, lblOld, txtOld, lblNew, txtNew, btnBrowse, btnSave, btnCancel }); txtDefault.SetAutoShowScroll(ScrollBars.Vertical); txtOld.SetAutoShowScroll(ScrollBars.Vertical); txtNew.SetAutoShowScroll(ScrollBars.Vertical); txtDefault.CanSelectAllWhenReadOnly(); txtOld.CanSelectAllWhenReadOnly(); int a = 20.DpiZoom(); lblSections.Top = lblSections.Left = cmbSections.Top = lblKeys.Left = lblDefault.Left = lblOld.Left = lblNew.Left = btnBrowse.Left = a; lblKeys.Top = cmbKeys.Top = cmbSections.Bottom + a; lblDefault.Top = txtDefault.Top = cmbKeys.Bottom + a; txtDefault.Height = txtOld.Height = txtNew.Height = 4 * a; cmbSections.Width = cmbKeys.Width = txtDefault.Width = txtOld.Width = txtNew.Width = 20 * a; int h = cmbSections.Height + cmbKeys.Height + btnBrowse.Height; int[] ws = { lblSections.Width, lblKeys.Width, lblDefault.Width, lblOld.Width, lblNew.Width }; int w = ws.Max(); cmbSections.Left = cmbKeys.Left = txtDefault.Left = txtOld.Left = txtNew.Left = w + 2 * a; this.Resize += (sender, e) => { txtDefault.Height = txtOld.Height = txtNew.Height = (this.ClientSize.Height - h - 7 * a) / 3; lblOld.Top = txtOld.Top = txtDefault.Bottom + a; lblNew.Top = txtNew.Top = txtOld.Bottom + a; btnBrowse.Top = btnSave.Top = btnCancel.Top = txtNew.Bottom + a; cmbSections.Width = cmbKeys.Width = txtDefault.Width = txtOld.Width = txtNew.Width = this.ClientSize.Width - (w + 3 * a); btnCancel.Left = this.ClientSize.Width - btnCancel.Width - a; btnSave.Left = btnCancel.Left - btnSave.Width - 2 * a; btnBrowse.Left = btnSave.Left - btnBrowse.Width - 2 * a; }; this.ClientSize = new Size(w + 23 * a, h + 3 * 4 * a + 7 * a); this.MinimumSize = this.Size; cmbSections.Items.AddRange(DefaultDic.Keys.ToArray()); cmbSections.SelectedIndexChanged += (sender, e) => { cmbKeys.Items.Clear(); cmbKeys.Items.AddRange(DefaultDic[Section].Keys.ToArray()); cmbKeys.SelectedIndex = 0; }; cmbKeys.SelectedIndexChanged += (sender, e) => { txtNew.Text = EditingDic[Section][Key].Replace("\\n", Environment.NewLine); txtDefault.Text = DefaultDic[Section][Key].Replace("\\n", Environment.NewLine); txtOld.Text = ReferentialWirter.GetValue(Section, Key).Replace("\\n", Environment.NewLine); }; cmbSections.SelectedIndex = 0; txtOld.TextChanged += (sender, e) => { if (txtNew.Text == string.Empty) { txtNew.Text = txtOld.Text; } }; txtNew.TextChanged += (sender, e) => EditingDic[Section][Key] = txtNew.Text.Replace(Environment.NewLine, "\\n"); btnBrowse.Click += (sender, e) => SelectFile(); btnSave.Click += (sender, e) => Save(); }
public void LoadLanguages() { cmbLanguages.Items.Clear(); cmbLanguages.Items.Add("(default) 简体中文"); languages.Clear(); languages.Add("default"); pnlTranslators.SuspendLayout(); pnlTranslators.Controls.Remove(lblHeader); foreach (Control ctr in pnlTranslators.Controls) { ctr.Dispose(); } pnlTranslators.Controls.Clear(); pnlTranslators.Controls.Add(lblHeader); if (Directory.Exists(AppConfig.LangsDir)) { Dictionary <Label, Control[]> dic = new Dictionary <Label, Control[]>(); foreach (string fileName in Directory.GetFiles(AppConfig.LangsDir, "*.ini")) { IniWriter writer = new IniWriter(fileName); string language = writer.GetValue("General", "Language"); string translator = writer.GetValue("General", "Translator"); string translatorUrl = writer.GetValue("General", "TranslatorUrl"); string langName = Path.GetFileNameWithoutExtension(fileName); if (string.IsNullOrEmpty(language)) { language = langName; } string[] translators = translator.Split(new[] { "\\r\\n", "\\n" }, StringSplitOptions.RemoveEmptyEntries); string[] urls = translatorUrl.Split(new[] { "\\r\\n", "\\n" }, StringSplitOptions.RemoveEmptyEntries); Label lblLanguage = new Label { ForeColor = Color.DodgerBlue, Text = language, AutoSize = true, Font = this.Font }; Label[] ctrTranslators = new Label[translators.Length]; for (int i = 0; i < translators.Length; i++) { ctrTranslators[i] = new Label { AutoSize = true, Font = this.Font, Text = translators[i], ForeColor = Color.DimGray, }; if (urls.Length > i) { string url = urls[i].Trim(); if (url != "null") { toolTip.SetToolTip(ctrTranslators[i], url); ctrTranslators[i].ForeColor = Color.SkyBlue; ctrTranslators[i].Font = new Font(ctrTranslators[i].Font, FontStyle.Underline); ctrTranslators[i].Click += (sender, e) => ExternalProgram.OpenWebUrl(url); } } } dic.Add(lblLanguage, ctrTranslators); cmbLanguages.Items.Add(language); languages.Add(langName); } int left = 0; dic.Keys.ToList().ForEach(lbl => left = Math.Max(left, lbl.Width)); left += 250.DpiZoom(); int top = lblHeader.Bottom + 10.DpiZoom(); foreach (var item in dic) { item.Key.Top = top; pnlTranslators.Controls.Add(item.Key); foreach (var ctr in item.Value) { ctr.Location = new Point(left, top); pnlTranslators.Controls.Add(ctr); top += ctr.Height + 10.DpiZoom(); } } } pnlTranslators.ResumeLayout(); cmbLanguages.SelectedIndex = GetSelectIndex(); }
private static string GetGeneralValue(string key) => ConfigWriter.GetValue("General", key);