Ejemplo n.º 1
0
        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();
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
            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();
        }
Ejemplo n.º 6
0
 private static string GetGeneralValue(string key) => ConfigWriter.GetValue("General", key);