public ActionResult Edit([Bind(Include = "SerialNo,IdNo,FullName,EnglishFullName,Email,Podobi,Salary,Category,Department,JoiningDate,AccountNo,MainSalaryGrade,IncrementNo,Sex,IsFreedomFighter,IsAddiitonalDuties,IsStudentAdviser,IsDean,IsChairman,IsProvost,IsProctor,IsAssistantProctor,HasOwnTransportationMethod,IsTeacher")] Employee employee) { if (ModelState.IsValid) { var grade = from a in db.Grades where a.GradeRange.Equals(employee.MainSalaryGrade) select a; Grade orDefault = grade.FirstOrDefault(); if (orDefault != null) { int grad = orDefault.GradeNo; int increment = Int32.Parse(LanguageConverter.BanglaToEnglish(employee.IncrementNo)); var mainsalaryString = from a in db.Taxes where a.Grade.Equals(grad) && a.Scale.Equals(increment) select a; var firstOrDefault = mainsalaryString.FirstOrDefault(); if (firstOrDefault != null) { employee.Salary = firstOrDefault.MainSalary; } } db.Entry(employee).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } return(View(employee)); }
internal static string GetAbout(Update update, string[] args) { var language = GetLanguage(update.Message.From.Id); var files = Directory.GetFiles(Bot.LanguageDirectory); XDocument doc; var file = files.First(x => Path.GetFileNameWithoutExtension(x) == language); { doc = LanguageConverter.Load(file); } var strings = doc.Descendants("string") .FirstOrDefault(x => x.Attribute("key").Value.ToLower() == args[0].ToLower()); if (strings == null) { var efile = LanguageConverter.Load(Path.Combine(Bot.LanguageDirectory, "English.yaml")); strings = efile.Descendants("string") .FirstOrDefault(x => x.Attribute("key").Value.ToLower() == args[0].ToLower()); } if (strings == null) { return(null); } var values = strings.Descendants("value"); var choice = Bot.R.Next(values.Count()); var selected = values.ElementAt(choice); return(string.Format(selected.Value.FormatHTML(), args).Replace("\\n", Environment.NewLine)); }
public void ValidateCode(object sender, RoutedEventArgs e) { object context = Utils.GetDataContext(sender); IEnumerable <XmlNode> data = Utils.GetXmlDataContext(context); if (null != data) { foreach (XmlNode node in data) { XmlNode attr = node.SelectSingleNode("languageCode/@value"); if (null != attr) { string code = attr.Value; if (2 == code.Length) { string threeLetter = LanguageConverter.GetThreeLetterCode(code); if (null != threeLetter) { attr.Value = threeLetter; MetadataEditorControl.UpdateDataContext(this as DependencyObject); } } } break; // just one } } }
private static void Main(string[] args) { //set up exception logging. It appears nodes are crashing and I'm not getting any output AppDomain.CurrentDomain.UnhandledException += (sender, eventArgs) => { var ex = eventArgs.ExceptionObject as Exception; using (var sw = new StreamWriter(Path.Combine(RootDirectory, "../Logs/NodeFatalError.log"), true)) { sw.WriteLine($"{DateTime.Now} - {Version} - {ex.Message}"); sw.WriteLine(ex.StackTrace); while (ex.InnerException != null) { ex = ex.InnerException; sw.WriteLine($"{ex.Message}"); sw.WriteLine(ex.StackTrace); } sw.WriteLine("--------------------------------------------------------"); } }; English = LanguageConverter.Load(Path.Combine(LanguageDirectory, "English.yaml")); APIToken = Environment.GetEnvironmentVariable("TELEGRAM_TOKEN"); Bot = new TelegramBotClient(APIToken); Me = Bot.GetMeAsync().Result; ClientId = Guid.NewGuid(); new Thread(KeepAlive).Start(); Console.Title = $"{ClientId} - {Version.FileVersion}"; Thread.Sleep(-1); }
void Awake() { #if UNITY_EDITOR var awaken = UnityLua.GlobalLua["___EDITOR_AWAKEN"].ConvertType <int>(); if (awaken == 0) { UnityLua.GlobalLua["___EDITOR_AWAKEN"] = 1.WrapDynamic(); ResManager.RecordCacheVersion("editor", int.MaxValue); LanguageConverter.InitData(); string pathCachedMain = LuaFramework.AppDataPath + "/CapstonesScripts/spt/init.lua"; if (UnityLua.GlobalLua.DoFile(pathCachedMain) == 0) { } else { if (GLog.IsLogErrorEnabled) { GLog.LogError(UnityLua.GlobalLua.L.GetLua(-1).UnwrapDynamic()); } } } #endif BindLua(); _Awaken = true; if (_DestroyRegIndex > 0) { RemoveDestroyRegIndex(_DestroyRegIndex); _DestroyRegIndex = 0; } CallLuaFunc("awake"); // Notice! The awake will NOT be called for the runtime binded behaviours! }
private static string GetLocaleString(string key, string language, params object[] args) { try { var files = Directory.GetFiles(Bot.LanguageDirectory); XDocument doc; var file = files.First(x => Path.GetFileNameWithoutExtension(x) == language); { doc = LanguageConverter.Load(file); } var strings = doc.Descendants("string").FirstOrDefault(x => x.Attribute("key").Value == key) ?? Bot.English.Descendants("string").FirstOrDefault(x => x.Attribute("key").Value == key); var values = strings.Descendants("value"); var choice = Bot.R.Next(values.Count()); var selected = values.ElementAt(choice); return(string.Format(selected.Value.FormatHTML(), args).Replace("\\n", Environment.NewLine)); } catch (Exception) { var strings = Bot.English.Descendants("string").FirstOrDefault(x => x.Attribute("key").Value == key); var values = strings.Descendants("value"); var choice = Bot.R.Next(values.Count()); var selected = values.ElementAt(choice); return(string.Format(selected.Value.FormatHTML(), args).Replace("\\n", Environment.NewLine)); } }
public static void loadData() { lan = LanguageConverter.convertLan(Application.systemLanguage.ToString().ToLower()); xmlData = new XmlDocument(); TextAsset textAsset = Resources.Load("Translation/MainScreen") as TextAsset; xmlData.LoadXml(textAsset.text); }
public static string GetMonth() { var month = DateTime.Now.Month; var year = DateTime.Now.Year; var banglaMonth = MonthMap.GetMonthData()[month - 1].MonthNameInBangla; var yearBangla = LanguageConverter.EnglishToBangla(year + ""); return(banglaMonth + "/" + yearBangla); }
public LangFile(string path) { Doc = LanguageConverter.Load(path); Name = Doc.Descendants("language").First().Attribute("name")?.Value; Base = Doc.Descendants("language").First().Attribute("base")?.Value; Variant = Doc.Descendants("language").First().Attribute("variant")?.Value; FilePath = path; FileName = Path.GetFileNameWithoutExtension(path); LatestUpdate = File.GetLastWriteTimeUtc(path); }
public static void Initialize(string updateid = null) { //get api token from registry var key = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64) .OpenSubKey("SOFTWARE\\Werewolf"); TelegramApiKey = key.GetValue("ProductionAPI").ToString(); Api = new Client(TelegramApiKey, LogDirectory); English = LanguageConverter.Load(Path.Combine(LanguageDirectory, "English.yaml")); //load the commands list foreach (var m in typeof(Commands).GetMethods()) { var c = new Command(); foreach (var a in m.GetCustomAttributes(true)) { if (!(a is Attributes.Command ca)) { continue; } c.Blockable = ca.Blockable; c.DevOnly = ca.DevOnly; c.GlobalAdminOnly = ca.GlobalAdminOnly; c.GroupAdminOnly = ca.GroupAdminOnly; c.Trigger = ca.Trigger; c.Method = (ChatCommandMethod)Delegate.CreateDelegate(typeof(ChatCommandMethod), m); c.InGroupOnly = ca.InGroupOnly; Commands.Add(c); } } Api.InlineQueryReceived += UpdateHandler.InlineQueryReceived; Api.UpdateReceived += UpdateHandler.UpdateReceived; Api.CallbackQueryReceived += UpdateHandler.CallbackReceived; Api.ReceiveError += ApiOnReceiveError; //Api.OnReceiveGeneralError += ApiOnOnReceiveGeneralError; Api.StatusChanged += ApiOnStatusChanged; //Api.UpdatesReceived += ApiOnUpdatesReceived; Me = Api.GetMeAsync().Result; //Api.OnMessage += ApiOnOnMessage; Console.Title += " " + Me.Username; if (!string.IsNullOrEmpty(updateid)) { Api.SendTextMessageAsync(updateid, "Control updated\n" + Program.GetVersion()); } StartTime = DateTime.UtcNow; //now we can start receiving Api.StartReceiving(); }
public static string GetLanguageName(string baseName) { var files = Directory.GetFiles(Bot.LanguageDirectory); XDocument doc; var file = files.First(x => Path.GetFileNameWithoutExtension(x) == baseName); { doc = LanguageConverter.Load(file); } var langNode = doc.Descendants("language").First(); return($"{langNode.Attribute("base").Value}"); // - {langNode.Attribute("variant").Value} }
public static string GetAllowanceFromDb(string searchString) { _db = new BUEMSDbContext(); string all = "০"; var results = from a in _db.Allowances where a.DutyName.Equals(searchString) select a; foreach (Allowance allowance in results) { all = allowance.AllowanceAmount; } return(LanguageConverter.BanglaToEnglish(all)); }
static void Main(string[] args) { _ = args; //コメントをチャット出力します Debug.ChatLocalToSelf = false; Debug.ChatToAll = true; LanguageConverter.SetLocalLang(LanguageConverter.LocalLang.Japanese); //RootAIFileクラスを継承したクラスを生成して //OutputFiles()で、.aiファイルと関連する.perファイルを出力します。 new AISharp2( @"C:\Program Files (x86)\Steam\steamapps\common\Age2HD\resources\_common\ai", "S.T" ).OutputFiles(); }
public static int UpdateLanguageConverter(IntPtr l) { if (l.istable(1)) { Dictionary <string, string> updatedMap = new Dictionary <string, string>(); l.pushnil(); while (l.next(1)) { string key, val; l.GetLua(-2, out key); l.GetLua(-1, out val); if (key != null) { updatedMap[key] = val; } l.pop(1); } LanguageConverter.UpdateDict(updatedMap); } return(0); }
private string FormatMessage(string msg) { if (FormatMessageFunc != null) { return(FormatMessageFunc(msg)); } string val = LanguageConverter.GetLangValue(msg); if (val == null || ReferenceEquals(val, msg)) { if (DefaultFormatMessageDict.TryGetValue(msg, out val)) { return(val); } } else { return(val); } return(msg); }
public ActionResult NewIndex(string month, string year) { if (month.Equals("") && year.Equals("")) { DateTime dateTime = DateTime.Now; int monthInt = dateTime.Month; month = MonthMap.GetMonthData()[monthInt].MonthNameInEnglish; int yearInt = dateTime.Year; year = yearInt + ""; } var data = MonthMap.GetMonthData().Find(i => i.MonthNameInEnglish.Equals(month)); var monthBangla = data.MonthNameInBangla; var yearBangla = LanguageConverter.EnglishToBangla(year); string searchString = monthBangla + "/" + yearBangla; var datam = from a in db.Salaries where a.Month.Equals(searchString) select a; return(Json(datam, JsonRequestBehavior.AllowGet)); }
//public void EditorPrepareLuaRes() //{ // ResManager.ResLoader.Init(); // LanguageConverter.Init(); //} void Awake() { #if UNITY_EDITOR var awaken = GlobalLua.L["___EDITOR_AWAKEN"].ConvertType <int>(); if (awaken == 0) { GlobalLua.EditorCheckRunningState(); GlobalLua.L["___EDITOR_AWAKEN"] = 1; //Init(); //EditorPrepareLuaRes(); //var l = GlobalLua.L.L; //l.pushcfunction(LuaHub.LuaFuncOnError); // err //l.GetGlobal("require"); // err require //l.PushString("init"); // err require "main" //if (l.pcall(1, 0, -3) == 0) //{ // l.pop(1); //} //else //{ // DynamicHelper.LogError(l.GetLua(-1)); // l.pop(2); //} } #endif BindLua(); LanguageConverter.IterateText(transform); _Awaken = true; if (_DestroyRegIndex > 0) { RemoveDestroyRegIndex(_DestroyRegIndex); _DestroyRegIndex = 0; } CallLuaFunc("awake"); // Notice! The awake will NOT be called for the runtime binded behaviours! }
private static void Main(string[] args) { //set up exception logging. It appears nodes are crashing and I'm not getting any output AppDomain.CurrentDomain.UnhandledException += (sender, eventArgs) => { var ex = eventArgs.ExceptionObject as Exception; using (var sw = new StreamWriter(Path.Combine(RootDirectory, "../Logs/NodeFatalError.log"), true)) { sw.WriteLine($"{DateTime.Now} - {Version} - {ex.Message}"); sw.WriteLine(ex.StackTrace); while (ex.InnerException != null) { ex = ex.InnerException; sw.WriteLine($"{ex.Message}"); sw.WriteLine(ex.StackTrace); } sw.WriteLine("--------------------------------------------------------"); } }; English = LanguageConverter.Load(Path.Combine(LanguageDirectory, "English.yaml")); //get api token from registry var key = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64) .OpenSubKey("SOFTWARE\\Werewolf"); APIToken = key.GetValue("ProductionAPI").ToString(); Bot = new TelegramBotClient(APIToken); Me = Bot.GetMeAsync().Result; ClientId = Guid.NewGuid(); new Thread(KeepAlive).Start(); Console.Title = $"{ClientId} - {Version.FileVersion}"; Thread.Sleep(-1); }
private object BindDictionary(IServiceProvider serviceProvider) { string uid = _uid ?? GetUid(_target); string vid = _property.Name; Binding binding = new Binding("Dictionary"); binding.Source = LanguageContext.Instance; binding.Mode = BindingMode.TwoWay; LanguageConverter converter = new LanguageConverter(uid, vid, _default); if (_parameters.Count == 0) { binding.Converter = converter; object value = binding.ProvideValue(serviceProvider); return value; } else { MultiBinding multiBinding = new MultiBinding(); multiBinding.Mode = BindingMode.TwoWay; multiBinding.Converter = converter; multiBinding.Bindings.Add(binding); if (string.IsNullOrEmpty(uid)) { Binding uidBinding = _parameters[0] as Binding; if (uidBinding == null) { throw new ArgumentException("Uid Binding parameter must be the first, and of type Binding"); } } foreach (Binding parameter in _parameters) { multiBinding.Bindings.Add(parameter); } object value = multiBinding.ProvideValue(serviceProvider); return value; } }
public void TestInitialize() { this.testSubject = new LanguageConverter(); }
private static int ClrFuncGetLangValue(IntPtr l, bool isStringType) { var oldtop = l.gettop(); if (l.istable(1)) { l.pushnumber(1); // 1 l.gettable(1); // key if (l.IsString(-1)) { string key = l.GetString(-1); l.pop(1); // X var len = l.getn(1); object[] args = new object[len - 1]; for (int i = 2; i <= len; ++i) { l.pushnumber(i); l.gettable(1); args[i - 2] = l.GetLua(-1); l.pop(1); } string val = LanguageConverter.GetLangValue(key, args); if (isStringType) { l.pushstring(val); } else { l.PushLuaObject(val); } return(1); } else { l.settop(oldtop); return(0); } } else { if (l.IsString(1)) { string key = l.GetString(1); object[] args = new object[oldtop - 1]; for (int i = 2; i <= oldtop; ++i) { args[i - 2] = l.GetLua(i); } string val = LanguageConverter.GetLangValue(key, args); if (isStringType) { l.pushstring(val); } else { l.PushLuaObject(val); } return(1); } else { l.settop(oldtop); return(0); } } }
public static void ValidateFiles(long id, int msgId, string choice = null) { var errors = new List <LanguageError>(); //first, let's load up the English file, which is our master file var master = LanguageConverter.Load(Path.Combine(Bot.LanguageDirectory, "English.yaml")); foreach (var langfile in Directory.GetFiles(Bot.LanguageDirectory).Where(x => !x.EndsWith("English.yaml")) .Select(x => new LangFile(x))) { if (langfile.Base == choice || choice == null) { //first check the language node CheckLanguageNode(langfile, errors); //test the length TestLength(langfile, errors); //get the file errors GetFileErrors(langfile, errors, master); } } //now pack up the errors and send var result = ""; foreach (var file in errors.Select(x => x.File).Distinct().ToList()) { var langfile = new LangFile(Path.Combine(Bot.LanguageDirectory, $"{file}.yaml")); result += $"*{langfile.FileName}.yaml* (Last updated: {langfile.LatestUpdate.ToString("MMM dd")})\n"; if (errors.Any(x => x.Level == ErrorLevel.Ads)) { result += "*Ads detected:"; result = errors.Where(x => x.File == langfile.FileName && x.Level == ErrorLevel.Ads) .Aggregate(result, (current, fileError) => current + fileError.Key + ", ") .TrimEnd(',', ' ') + "\n"; continue; } if (errors.Any(x => x.Level == ErrorLevel.DuplicatedString)) { result += "_Duplicated Strings: _"; result = errors.Where(x => x.File == langfile.FileName && x.Level == ErrorLevel.DuplicatedString) .Aggregate(result, (current, fileError) => current + fileError.Key + ", ") .TrimEnd(',', ' ') + "\n"; } if (errors.Any(x => x.Level == ErrorLevel.JoinLink)) { result += "_Join commands: _"; result = errors.Where(x => x.File == langfile.FileName && x.Level == ErrorLevel.JoinLink) .Aggregate(result, (current, fileError) => current + fileError.Key + ", ") .TrimEnd(',', ' ') + "\n"; } result += $"_Missing strings:_ {errors.Count(x => x.Level == ErrorLevel.MissingString && x.File == langfile.FileName)}\n"; if (errors.Any(x => x.File == langfile.FileName && x.Level == ErrorLevel.Error)) { result = errors.Where(x => x.File == langfile.FileName && x.Level == ErrorLevel.Error) .Aggregate(result, (current, fileError) => current + $"_{fileError.Level} - {fileError.Key}_\n{fileError.Message}\n"); } result += "\n"; } Bot.Api.SendTextMessageAsync(id, result, parseMode: ParseMode.Markdown); var sortedfiles = Directory.GetFiles(Bot.LanguageDirectory).Select(x => new LangFile(x)) .Where(x => x.Base == (choice ?? x.Base)).OrderBy(x => x.LatestUpdate); result = $"*Validation complete*\nErrors: {errors.Count(x => x.Level == ErrorLevel.Error)}\nMissing strings: {errors.Count(x => x.Level == ErrorLevel.MissingString)}"; result += $"\nMost recently updated file: {sortedfiles.Last().FileName}.yaml ({sortedfiles.Last().LatestUpdate.ToString("MMM dd")})\nLeast recently updated file: {sortedfiles.First().FileName}.yaml ({sortedfiles.First().LatestUpdate.ToString("MMM dd")})"; Bot.Api.EditMessageTextAsync(id, msgId, result, ParseMode.Markdown); }
public static void UseNewLanguageFile(string fileName, long id, int msgId) { var msg = "Moving file to production..\n"; msg += "Checking paths for duplicate language file...\n"; Bot.Api.EditMessageTextAsync(id, msgId, msg); fileName += ".yaml"; var tempPath = Bot.TempLanguageDirectory; var langPath = Bot.LanguageDirectory; var newFilePath = Path.Combine(tempPath, fileName); var copyToPath = Path.Combine(langPath, fileName); //get the new files language var doc = LanguageConverter.Load(newFilePath); var newFileLang = new { Name = doc.Descendants("language").First().Attribute("name").Value, Base = doc.Descendants("language").First().Attribute("base").Value, Variant = doc.Descendants("language").First().Attribute("variant").Value }; //check for existing file var langs = Directory.GetFiles(langPath).Select(x => new LangFile(x)).ToList(); var lang = langs.FirstOrDefault(x => x.Name == newFileLang.Name && x.FilePath != copyToPath); if (lang != null) { msg += $"Found duplicate language (name attribute) with filename {Path.GetFileNameWithoutExtension(lang.FilePath)}\n"; copyToPath = lang.FilePath; } else { lang = langs.FirstOrDefault(x => x.Base == newFileLang.Base && x.Variant == newFileLang.Variant && x.Name != newFileLang.Name); if (lang != null) { msg += $"Found duplicate language (matching base and variant) with filename {Path.GetFileNameWithoutExtension(lang.FilePath)}\n"; msg += "Aborting!"; Bot.Api.EditMessageTextAsync(id, msgId, msg); return; } } File.Copy(newFilePath, copyToPath, true); msg += "File copied to bot\n"; //#if RELEASE // msg += $"File copied to bot 1\n"; //#elif RELEASE2 // msg += $"File copied to bot 2\n"; //#endif //Bot.Api.EditMessageTextAsync(id, msgId, msg); //#if RELEASE // copyToPath = copyToPath.Replace("Werewolf 3.0", "Werewolf 3.0 Clone"); // System.IO.File.Copy(newFilePath, copyToPath, true); // msg += $"File copied to bot 2\n"; // Bot.Api.EditMessageTextAsync(id, msgId, msg); //#endif var gitPath = Path.Combine(@"C:\Werewolf Source\Werewolf\Werewolf for Telegram\Languages", Path.GetFileName(copyToPath)); File.Copy(newFilePath, gitPath, true); File.Delete(newFilePath); msg += $"File copied to git directory\n"; if (newFilePath.EndsWith("English.yaml")) { var p = new Process { StartInfo = { FileName = @"C:\Werewolf Source\Werewolf\Werewolf for Telegram\Languages\commit.bat", Arguments = $"\"Syncing langfiles from Telegram (English.yaml update)\"", WorkingDirectory = @"C:\Werewolf Source\Werewolf\Werewolf for Telegram\Languages", UseShellExecute = false, RedirectStandardOutput = true, RedirectStandardError = true, CreateNoWindow = true } }; p.Start(); msg += "Started the committing process. Reading output from git..."; Bot.Edit(id, msgId, msg); var output = ""; while (!p.StandardOutput.EndOfStream) { output += p.StandardOutput.ReadLine() + Environment.NewLine; } while (!p.StandardError.EndOfStream) { output += p.StandardError.ReadLine() + Environment.NewLine; } msg += "\nValidating the output..."; Bot.Edit(id, msgId, msg); //validate the output if (output.Contains("failed")) { msg += "\n<b>Failed</b> to commit files. See control output for information"; Console.WriteLine(output); } else if (output.Contains("nothing to commit")) { msg += "\nNothing to commit."; } else { //try to grab the commit var regex = new Regex("(\\[master .*])"); var match = regex.Match(output); var commit = ""; if (match.Success) { commit = match.Value.Replace("[master ", "").Replace("]", ""); } msg += $"\n<b>Files committed successfully.</b> {(string.IsNullOrEmpty(commit) ? "" : $"<a href=\"https://github.com/GreyWolfDev/Werewolf/commit/" + commit + $"\">{commit}</a>")}"; } } msg += "\n<b>Operation complete.</b>"; Bot.Api.EditMessageTextAsync(id, msgId, msg, ParseMode.Html); }
internal static void UploadFile(string fileid, long id, string newFileCorrectName, int msgID) { var file = Bot.Api.GetFileAsync(fileid).Result; var path = Directory.CreateDirectory(Bot.TempLanguageDirectory); //var fileName = file.FilePath.Substring(file.FilePath.LastIndexOf("/") + 1); var uri = $"https://api.telegram.org/file/bot{Bot.TelegramApiKey}/{file.FilePath}"; var newFilePath = Path.Combine(path.FullName, newFileCorrectName); using (var client = new WebClient()) { client.DownloadFile(new Uri(uri), newFilePath); } //ok, we have the file. Now we need to determine the language, scan it and the original file. var newFileErrors = new List <LanguageError>(); //first, let's load up the English file, which is our master file var langs = Directory.GetFiles(Bot.LanguageDirectory, "*.yaml").Select(x => new LangFile(x)); var master = LanguageConverter.Load(Path.Combine(Bot.LanguageDirectory, "English.yaml")); var newFile = new LangFile(newFilePath); //make sure it has a complete langnode CheckLanguageNode(newFile, newFileErrors); //test the length TestLength(newFile, newFileErrors); //check uniqueness var error = langs.FirstOrDefault(x => x.FileName.ToLower() == newFile.FileName.ToLower() && x.Name != newFile.Name || //check for matching filename and mismatching name x.Name == newFile.Name && (x.Base != newFile.Base || x.Variant != newFile.Variant) || //check for same name and mismatching base-variant x.Base == newFile.Base && x.Variant == newFile.Variant && x.FileName != newFile.FileName //check for same base-variant and mismatching filename //if we want to have the possibility to rename the file, change previous line with FileName -> Name ); if (error != null) { //problem.... newFileErrors.Add(new LanguageError(newFile.FileName, "*Language Node*", $"ERROR: The following file partially matches the same language node. Please check the file name, and the language name, base and variant. Aborting.\n\n*{error.FileName}.yaml*\n_Name:_{error.Name}\n_Base:_{error.Base}\n_Variant:_{error.Variant}", ErrorLevel.FatalError)); } //get the errors in it GetFileErrors(newFile, newFileErrors, master); //need to get the current file var curFile = langs.FirstOrDefault(x => x.Name == newFile.Name); var curFileErrors = new List <LanguageError>(); if (curFile != null) { //test the length TestLength(curFile, curFileErrors); ////validate current file name / base / variants match //if (newFile.Base != lang.Base) //{ // newFileErrors.Add(new LanguageError(curFileName, "Language Node", $"Mismatched Base! {newFile.Base} - {lang.Base}", ErrorLevel.Error)); //} //if (newFile.Variant != lang.Variant) //{ // newFileErrors.Add(new LanguageError(curFileName, "Language Node", $"Mismatched Variant! {newFile.Variant} - {lang.Variant}", ErrorLevel.Error)); //} //get the errors in it GetFileErrors(curFile, curFileErrors, master); } //send the validation result Bot.Api.SendTextMessageAsync(id, OutputResult(newFile, newFileErrors, curFile, curFileErrors), parseMode: ParseMode.Markdown); Thread.Sleep(500); if (newFileErrors.All(x => x.Level != ErrorLevel.FatalError && x.Level != ErrorLevel.Ads)) { //load up each file and get the names var buttons = new[] { new InlineKeyboardCallbackButton($"New", $"upload|{id}|{newFile.FileName}"), new InlineKeyboardCallbackButton($"Old", $"upload|{id}|current") }; var menu = new InlineKeyboardMarkup(buttons.ToArray()); Bot.Api.SendTextMessageAsync(id, "Which file do you want to keep?", replyToMessageId: msgID, replyMarkup: menu); } else { Bot.Api.SendTextMessageAsync(id, "Fatal errors present, cannot upload.", replyToMessageId: msgID); } }
public static void ValidateLanguageFile(long id, string filePath, int msgId) { var errors = new List <LanguageError>(); var langfile = new LangFile(filePath); //first, let's load up the English file, which is our master file var master = LanguageConverter.Load(Path.Combine(Bot.LanguageDirectory, "English.yaml")); //first check the language node CheckLanguageNode(langfile, errors); //now test the length TestLength(langfile, errors); //get the errors GetFileErrors(langfile, errors, master); //send the result var result = $"*{langfile.FileName}.yaml* (Last updated: {langfile.LatestUpdate:MMM dd})" + Environment.NewLine; if (errors.Any(x => x.Level == ErrorLevel.Ads)) { result += "*ADS DETECTED*\n"; result = errors.Where(x => x.Level == ErrorLevel.Error) .Aggregate(result, (current, fileError) => current + $"{fileError.Key}\n"); } else { if (errors.Any(x => x.Level == ErrorLevel.Error)) { result += "_Errors:_\n"; result = errors.Where(x => x.Level == ErrorLevel.Error).Aggregate(result, (current, fileError) => current + $"{fileError.Key}\n{fileError.Message}\n\n"); } if (errors.Any(x => x.Level == ErrorLevel.MissingString)) { result += "_Missing Values:_\n"; result = errors.Where(x => x.Level == ErrorLevel.MissingString) .Aggregate(result, (current, fileError) => current + $"{fileError.Key}\n"); } if (errors.Any(x => x.Level == ErrorLevel.DuplicatedString)) { result += "\n_Duplicated Strings:_\n"; result = errors.Where(x => x.Level == ErrorLevel.DuplicatedString) .Aggregate(result, (current, fileError) => current + fileError.Key + ", ") .TrimEnd(',', ' ') + "\n"; } if (errors.Any(x => x.Level == ErrorLevel.JoinLink)) { result += "\n_Join commands:_\n"; result = errors.Where(x => x.Level == ErrorLevel.JoinLink) .Aggregate(result, (current, fileError) => current + fileError.Key + ", ") .TrimEnd(',', ' ') + "\n"; } if (errors.Any(x => x.Level == ErrorLevel.FatalError)) { result += "\n*Fatal errors:*\n"; result = errors.Where(x => x.Level == ErrorLevel.FatalError).Aggregate(result, (current, fileError) => current + $"{fileError.Key}\n{fileError.Message}\n"); } } result += "\n"; //Program.Send(result, id); Thread.Sleep(500); result += $"*Validation complete*.\nErrors: {errors.Count(x => x.Level == ErrorLevel.Error)}\nMissing strings: {errors.Count(x => x.Level == ErrorLevel.MissingString)}"; Bot.Api.EditMessageTextAsync(id, msgId, result, ParseMode.Markdown); }
public FileResult LanguageConverter(RemoveHtmlModel model, string lang) { string result; var converter = new LanguageConverter(); switch (lang) { case "en-us": result = converter.BritishToAmericanEnglish(model.Html); break; default: result = converter.AmericanToBritishEnglish(model.Html); break; } return this.File(Encoding.Unicode.GetBytes(result), "text/plain", "convert-english.txt"); }