private static TextObject Translate(string id, bool isFullId = false) { TextObject translatedText; if (!isFullId) { var fullId = Main.ModId + "_" + id; var text = LocalizedTextManager.GetTranslatedText(BannerlordConfig.Language, fullId); if (!"VARTS".Equals(Main.GetGuildName()) && text.Contains("VARTS")) { text = text.Replace("VARTS", Main.GetGuildName()); } translatedText = new TextObject(text); translatedText.AddIDToValue(fullId); } else { var text = LocalizedTextManager.GetTranslatedText(BannerlordConfig.Language, id); if (!"VARTS".Equals(Main.GetGuildName()) && text.Contains("VARTS")) { text = text.Replace("VARTS", Main.GetGuildName()); } translatedText = new TextObject(text); translatedText.AddIDToValue(id); } return(translatedText); }
internal static string GetStringByTextObject(string id) { try { var value = LocalizedTextManager.GetTranslatedText(BannerlordConfig.Language, id); if (!string.IsNullOrWhiteSpace(value)) { return(value); } } catch (Exception e) { Utils.DisplayMessage(e); } return(null); }
public static string ET(string text) { if (BannerlordConfig.Language != "English") { return(text); } StringBuilder stringBuilder1 = new StringBuilder(); StringBuilder stringBuilder2 = new StringBuilder(); if (text == null || text.Length <= 2 || (text[0] != '{' || text[1] != '=')) { return(text); } for (int index1 = 2; index1 < text.Length; ++index1) { if (text[index1] != '}') { stringBuilder1.Append(text[index1]); } else { for (int index2 = index1 + 1; index2 < text.Length; ++index2) { stringBuilder2.Append(text[index2]); } if (!(stringBuilder1.ToString() == "*") && !(stringBuilder1.ToString() == "!")) { string input = LocalizedTextManager.GetTranslatedText(BannerlordConfig.Language, stringBuilder1.ToString()); if (input != null) { string pattern = "{%.+?}"; foreach (Match match in Regex.Matches(input, pattern)) { input = input.Replace(match.Value, ""); } return(input); } } return(stringBuilder2.ToString()); } } return(stringBuilder2.ToString()); }
static void Main(string[] args) { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Form1 frm = new Form1(); frm.TopLevel = true; frm.BringToFront(); frm.Focus(); string path = ""; if (args.Length > 0) { path = args[0]; } else { path = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "Mount and Blade II Bannerlord", "Configs", "TournamentsXPanded", "tournamentxpsettings.json"); } DirectoryInfo di = new DirectoryInfo(Assembly.GetEntryAssembly().Location); LocalizedTextManager.LoadLocalizationXmls(di.Parent.Parent.Parent.Parent.Parent.FullName); frm.SetupLanguageDropdown(); frm.LoadConfig(path); #if DEBUG string pathxml = "E:\\Users\\Brandon\\OneDrive - Mathis Consulting, LLC\\Development\\BannerLord\\BrandonMods\\TournamentXPanded.Configurator\\Languages\\settings-en.xml"; string pathcs = "E:\\Users\\Brandon\\OneDrive - Mathis Consulting, LLC\\Development\\BannerLord\\BrandonMods\\TournamentsXPanded.Settings\\TournamentXPSettings.cs"; string pathoutput = "e:\\settings.cs"; var xmlstrings = File.ReadAllLines(pathxml); var csfile = File.ReadAllLines(pathcs); using (var sw = new StreamWriter(pathoutput, false)) { foreach (var line in csfile) { if (line.Trim().StartsWith("[SettingProperty")) { var parts = line.Split('"'); var newparts = ""; foreach(var p in parts) { var pt = LocalizedTextManager.FindStringId("English", p); if (pt.StartsWith("{")) { //pt = pt + LocalizedTextManager.GetTranslatedText("English", LocalizedTextManager.GetStringId(pt)); pt = LocalizedTextManager.GetTranslatedText("English", LocalizedTextManager.GetStringId(pt)); } newparts += pt + "\""; } newparts = newparts.Substring(0,newparts.Length - 1); sw.WriteLine(newparts); } else { sw.WriteLine(line); } } } #endif Application.Run(frm); }
public void SetProperty(SettingPropertyAttribute attr, PropertyInfo pInfo, TournamentXPSettings settings) { _pInfo = pInfo; _settings = settings; string text = attr.DisplayName; if (text.Trim().StartsWith("{")) { var id = LocalizedTextManager.GetStringId(text); text = LocalizedTextManager.GetTranslatedText(languageId, id); } lblName.Text = text; if (!string.IsNullOrWhiteSpace(attr.HintText)) { string text2 = attr.HintText; if (text2.Trim().StartsWith("{")) { var id = LocalizedTextManager.GetStringId(text2); text2 = LocalizedTextManager.GetTranslatedText(languageId, id); } ToolTip tt = new ToolTip(); tt.IsBalloon = true; tt.SetToolTip(lblName, text2); } checkBox1.Visible = false; textBox1.Visible = false; textBox1.TextAlign = HorizontalAlignment.Right; trackBar1.Visible = false; trackBar2.Visible = false; switch (pInfo.PropertyType.Name) { case "Boolean": checkBox1.Visible = true; checkBox1.Checked = (bool)pInfo.GetValue(settings); break; case "Int32": case "Int64": case "Integer": textBox1.Visible = true; textBox1.Text = ((int)pInfo.GetValue(settings)).ToString(); trackBar1.Visible = true; trackBar1.Minimum = (int)attr.MinValue; trackBar1.Maximum = (int)attr.MaxValue; trackBar1.Value = ((int)pInfo.GetValue(settings)); break; case "Single": textBox1.Visible = true; textBox1.Text = ((float)pInfo.GetValue(settings)).ToString(); trackBar2.Visible = true; trackBar2.Minimum = attr.MinValue; trackBar2.Maximum = attr.MaxValue; trackBar2.Value = ((float)pInfo.GetValue(settings)); break; default: break; } }
public static TextObject Localized(this string id, string fallback) => new TextObject($"{{={id}}}{LocalizedTextManager.GetTranslatedText("English", id) ?? fallback}");
public void LoadConfig(TournamentXPSettings settings) { _settings = settings; pnlSettings.Controls.Clear(); settingprops = new List <XPSettingControlBase>(); //var groups = new List<SettingPropertyGroup>(); propList = (from p in typeof(TournamentXPSettings).GetProperties(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance) let propAttr = p.GetCustomAttribute <SettingPropertyAttribute>(true) let groupAttr = p.GetCustomAttribute <SettingPropertyGroupAttribute>(true) where propAttr != null let groupAttrToAdd = groupAttr ?? null select new ConfigInfo { attribute = propAttr, propertyInfo = p, pgroup = groupAttrToAdd }).ToList(); List <string> descriptions = new List <string>(); List <string> hints = new List <string>(); List <string> groups = new List <string>(); List <FlowLayoutPanel> groupPanels = new List <FlowLayoutPanel>(); groupPanels.Add(new FlowLayoutPanel() { Name = "Default" }); var groupcount = 0; foreach (var pr in propList) { FlowLayoutPanel pnl = groupPanels.Where(x => x.Name == "Default").First(); if (pr.pgroup != null) { pnl = groupPanels.Where(x => x.Name == pr.pgroup.GroupName).FirstOrDefault(); if (pnl == null) { pnl = new FlowLayoutPanel() { Name = pr.pgroup.GroupName }; pnl.AutoScroll = false; pnl.AutoSize = true; pnl.AutoSizeMode = AutoSizeMode.GrowAndShrink; pnl.BorderStyle = BorderStyle.FixedSingle; string text = pr.pgroup.GroupName; if (text.Trim().StartsWith("{")) { var id = LocalizedTextManager.GetStringId(text); text = LocalizedTextManager.GetTranslatedText(ddlLanguage.SelectedItem.ToString(), id); } pnl.Controls.Add(new Label() { AutoSize = true, MinimumSize = new Size(700, 50), Text = text, Font = new System.Drawing.Font("Arial Narrow", 22F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))) }); groupPanels.Add(pnl); groupcount++; groups.Add(pr.pgroup.GroupName); } } var uc = new XPSettingControlBase(ddlLanguage.SelectedItem.ToString()); uc.Anchor = AnchorStyles.Top; uc.SetProperty(pr.attribute, pr.propertyInfo, _settings); pnl.Controls.Add(uc); settingprops.Add(uc); #if DEBUG descriptions.Add(pr.attribute.DisplayName); if (!string.IsNullOrWhiteSpace(pr.attribute.HintText)) { hints.Add(pr.attribute.HintText); } #endif } foreach (var pnl in groupPanels) { if (pnl.Controls.Count > 0) { pnlSettings.Controls.Add(pnl); } } pnlSettings.Refresh(); #if DEBUG using (var sw = new System.IO.StreamWriter("E:\\texts.json")) { var count = 0; foreach (var s in groups) { count++; string id = ("000" + count.ToString()); id = id.Substring(id.Length - 4); sw.WriteLine("<string id=\"txpg" + id + "\" text=\"" + s + "\" />"); } foreach (var s in descriptions) { count++; string id = ("000" + count.ToString()); id = id.Substring(id.Length - 4); sw.WriteLine("<string id=\"txpd" + id + "\" text=\"" + s + "\" />"); } foreach (var s in hints) { count++; string id = ("000" + count.ToString()); id = id.Substring(id.Length - 4); sw.WriteLine("<string id=\"txph" + id + "\" text=\"" + s + "\" />"); } } #endif }