public string Get(TranslateModel wordToTranslate) { // TODO Replace with in-memory caching of localized file. // TODO Determine user's culture and return translation based on that. // Although to be useful across multiple consumers, requesting the culture would be best. // TODO Request culture on initial poke to API. Put culture in JWT. // TODO Add token/JWT to API. if (Utils.Utils.IsValidCulture(wordToTranslate.Culture)) { JObject translation = JObject.Parse(System.IO.File.ReadAllText("./Localization/" + wordToTranslate.Culture + ".json")); var translatedWord = (string)translation[wordToTranslate.Word]; if (translatedWord == null) { //TODO Log error regarding missing/invalid word. return("-1"); } else { Utils.Utils.WriteToConsoleDB(translatedWord, _writeToConfig); return(translatedWord); } } else { // TODO Log error regarding missing/invalid culture. return(null); } }
public ActionResult Edit(TranslateModel inmodel) { var model = CreateModel(inmodel.TextKey); model.Text = inmodel.Text; if (!ModelState.IsValid) { return(View(model)); } if (!ModelState.IsValid) { return(View(model)); } try { _repository.Update(CultureInfo.CurrentUICulture, new TypePromptKey(model.TextKey), model.Text); return(RedirectToAction("Index")); } catch (Exception err) { ModelState.AddModelError("", err.Message); return(View(model)); } }
private async Task HandlingMessage(TranslateMessage translateMessage, TranslateModel translateModel) { Boolean bReult = false; await Task.Run(() => bReult = translateModel.SaveTextSegment(translateMessage)); translateMessage.ClientId = this.clientId; translateMessage.SendTime = DateTime.Now; translateMessage.UserId = this.userId; translateMessage.UserName = this.userName; translateMessage.Color = this.userColor.Name; string jsonMessage = JsonConvert.SerializeObject(translateMessage); this.lastMessage = jsonMessage; if (bReult) { foreach (var item in clients) { if (item != this && ((APVTranslator_Web.Socket.wsHandler)item).projectId == this.projectId && ((APVTranslator_Web.Socket.wsHandler)item).fileId == this.fileId) { string msgBack = jsonMessage; item.Send(msgBack); } } ; } else { string msgBack = string.Format("{0} have sent {1} at {2}", this.WebSocketContext.User.Identity.Name, "Something error!", DateTime.Now.ToLongTimeString()); this.Send(msgBack); } }
public ActionResult SaveTargetLang(int projectId, int fileId, string targetLang) { ControllerResult oControllerResult = new ControllerResult(); try { if (User.Identity.IsAuthenticated && GetUserPermission(SessionUser.GetUserId(), projectId)) { TranslateModel translateModel = new TranslateModel(); ProjectFile oProjectFile = translateModel.GetFile(projectId, fileId); if (oProjectFile != null && !String.IsNullOrEmpty(targetLang)) { translateModel.SaveTargetLang(projectId, fileId, targetLang); } else { oControllerResult.IsSuccess = false; oControllerResult.Message = "project or file don't exists!"; } } else { oControllerResult.IsSuccess = false; oControllerResult.Message = "You don't had permission in file!"; } } catch (Exception ex) { oControllerResult.IsSuccess = false; oControllerResult.Message = ex.Message; } return(Json(new { success = oControllerResult.IsSuccess, responseText = oControllerResult.Message }, JsonRequestBehavior.AllowGet)); }
private void TbKey_LostFocus(object sender, RoutedEventArgs e) { if (TbKey.Text == "") { TranslateModels = null; Word_Panel.Visibility = Visibility.Collapsed; } }
/// <summary> /// 当前的语言包配置文件 /// </summary> /// <returns></returns> private Result Data() { TranslateModel model = new TranslateModel(this.context.GetParam("Language")) { Content = TranslateAgent.Instance().GetTranslate(this.GetToken()) }; if (this.context.GetParam("type") == "xml") { return(new Result(ContentType.XML, model.ToXml())); } return(new Result(true, this.GetToken(), model)); }
public void ProcessRequest(HttpContext context) { try { var user = HttpContext.Current.User; var projectId = context.Request["projectId"]; var fileId = context.Request["fileId"]; var fileExportName = context.Request["fileExportName"]; if (user.Identity.IsAuthenticated && projectId != null && fileId != null && GetUserPermission(SessionUser.GetUserId(), Convert.ToInt32(projectId))) { TranslateModel translateModel = new TranslateModel(); Project project = translateModel.GetProject(Convert.ToInt32(projectId)); ProjectFile file = translateModel.GetFile(Convert.ToInt32(projectId), Convert.ToInt32(fileId)); if (project != null && file != null) { context.Response.Clear(); context.Response.ContentType = "application/octet-stream"; string exportPath = String.Empty; var fileExt = Path.GetExtension(file.FileName); string translatedFile = string.Empty; if (fileExportName != null) { exportPath = Utility.GetRootPath() + Contanst.rootProject + "\\" + project.Title + "\\Exports\\" + fileExportName; context.Response.AddHeader("Content-Disposition", "attachment; filename=" + fileExportName); context.Response.WriteFile(exportPath); context.Response.Flush(); File.Delete(exportPath); } else { exportPath = Utility.GetRootPath() + Contanst.rootProject + "\\" + project.Title + "\\Exports\\" + file.FileName; translatedFile = exportPath.Replace(fileExt, $"_Export{fileExt}"); context.Response.AddHeader("Content-Disposition", "attachment; filename=" + file.FileName); context.Response.WriteFile(translatedFile); context.Response.Flush(); File.Delete(translatedFile); } context.Response.SuppressContent = true; context.ApplicationInstance.CompleteRequest(); } } } catch (Exception ex) { //context.Response.ContentType = "text/plain"; context.Response.Write(ex.Message); } }
public IActionResult Index(String wort, String Zielsprache) { TranslateModel tm = new TranslateModel("maitenant tout est parfait"); ViewData["phrase"] = tm.translatePhrase(); tm.setPhrase(wort); tm.setZielsprache(Zielsprache); ViewData["phrase2"] = tm.translatePhrase(); ViewData["zielsprache"] = Zielsprache; var model = new ZielspracheViewModel(); return(View(model)); }
public override void OnMessage(string message) { try { TranslateMessage translateMessage; if (!string.IsNullOrEmpty(message)) { TranslateModel translateModel = new TranslateModel(); translateMessage = JsonConvert.DeserializeObject <TranslateMessage>(message); Task taskHandlingMessage = HandlingMessage(translateMessage, translateModel); } } catch (Exception) { throw; } }
private bool GetUserPermission(int userId, int projectId) { try { TranslateModel translateModel = new TranslateModel(); ApplicationDbContext appDb = new ApplicationDbContext(); List <Role> lstUserRoles = appDb.GetUserRoleId(SessionUser.GetUserId()); if (lstUserRoles.Any(r => r.Id == (int)UserRoles.Admin)) { return(true); } return(translateModel.GetUserPermission(userId, projectId)); } catch (Exception) { return(false); } }
public ServiceResult GetSugestion(String listTexsegment) { ServiceResult sResult = new ServiceResult(); try { var user = HttpContext.Current.User; if (user.Identity.IsAuthenticated) { TranslateModel translateModel = new TranslateModel(); List <TextSegment> lstTextSegment = JsonConvert.DeserializeObject <List <TextSegment> >(listTexsegment); if (lstTextSegment.Count > 0) { var projectId = lstTextSegment[0].ProjectId; List <ReferenceDB> lstReferenceDB = new List <ReferenceDB>(); lstReferenceDB = translateModel.GetConditionData(projectId); List <Int32> lstProjectIDRef = new List <int>(); foreach (ReferenceDB itReferenceDB in lstReferenceDB) { lstProjectIDRef.Add(itReferenceDB.ProjectReferID); } lstProjectIDRef.Add(projectId); TextSuggestion oTextSuggestion = new TextSuggestion(); foreach (var item in lstTextSegment) { oTextSuggestion = translateModel.GetSuggestion(item.TextSegment1, lstProjectIDRef); if (oTextSuggestion != null) { item.Suggestion = oTextSuggestion.TextSegment2; } } } sResult.Value = lstTextSegment; } } catch (Exception ex) { sResult.IsSuccess = false; sResult.Message = "Some word can't get suggestion !"; } return(sResult); }
public void ShouldReturnNull() { WriteToConfig writeToConfig = new WriteToConfig(); writeToConfig.TargetConsole = false; writeToConfig.TargetDB = false; IOptions <WriteToConfig> options = Options.Create <WriteToConfig>(writeToConfig); var controller = new HelloWorldAPI.Controllers.TranslateController(options); TranslateModel wordToTranslate = new TranslateModel(); wordToTranslate.Culture = "zn-ZN"; wordToTranslate.Word = "helloWorld"; var result = controller.Get(wordToTranslate); Assert.Equal(null, result); }
public void ShouldReturnErrorCode() { WriteToConfig writeToConfig = new WriteToConfig(); writeToConfig.TargetConsole = false; writeToConfig.TargetDB = false; IOptions <WriteToConfig> options = Options.Create <WriteToConfig>(writeToConfig); var controller = new HelloWorldAPI.Controllers.TranslateController(options); TranslateModel wordToTranslate = new TranslateModel(); wordToTranslate.Culture = "en-US"; wordToTranslate.Word = "SuperCallousFragileMysticHexedByHalitosis"; var result = controller.Get(wordToTranslate); Assert.Equal("-1", result); }
public async Task Translate(CommandContext ctx, string language, string target, [RemainingText] string text) { HttpClient client = new HttpClient(); HttpRequestMessage request = new HttpRequestMessage { Method = HttpMethod.Post, RequestUri = new Uri("https://google-translate1.p.rapidapi.com/language/translate/v2"), Headers = { { "x-rapidapi-key", Startup.Configuration.RapidApiKey }, { "x-rapidapi-host", "google-translate1.p.rapidapi.com" } }, Content = new FormUrlEncodedContent(new Dictionary <string, string> { { "q", text }, { "target", target }, { "source", language } }) }; using (HttpResponseMessage response = await client.SendAsync(request)) { response.EnsureSuccessStatusCode(); string body = await response.Content.ReadAsStringAsync(); TranslateModel translation = JsonConvert.DeserializeObject <TranslateModel>(body); DiscordEmbedBuilder embed = new DiscordEmbedBuilder { Title = "Translation", Description = $"Source language: `{language}`, target language: `{target}`\n" + $"Text: `{text}`\n" + $"Translation: `{translation.Data.Translations[0].Content}`" }; await ctx.RespondAsync(embed.Build()); } }
public ActionResult Edit(TranslateModel inmodel) { var model = CreateModel(inmodel.TextKey); model.Text = inmodel.Text; if (!ModelState.IsValid) { return(View(model)); } try { var prompt = _repository.GetPrompt(CultureInfo.CurrentUICulture, new ViewPromptKey(inmodel.TextKey)); _repository.Save(CultureInfo.CurrentUICulture, prompt.ViewPath, prompt.TextName, inmodel.Text); return(RedirectToAction("Index")); } catch (Exception err) { ModelState.AddModelError("", err.Message); return(View(model)); } }
public async Task <TranslateModel> FetchTranslate(string from, string to, string text) { try { using (HttpClient client = new HttpClient()) using (HttpResponseMessage response = await client.GetAsync( "https://translation.googleapis.com/language/translate/v2?key=AIzaSyDnnlklIb2lddAcerawuzZJEz7BIovYOM4&q=" + text + "&source=" + from + "&target=" + to).ConfigureAwait(true)) using (HttpContent content = response.Content) { string result = await content.ReadAsStringAsync().ConfigureAwait(true); TranslateModel translation = JsonConvert.DeserializeObject <TranslateModel>(result); return(translation); } } catch (Exception e) { Console.WriteLine(e); } return(null); }
//public ActionResult Index() //{ // return View(); //} public ActionResult Index() { if (User.Identity.IsAuthenticated) { ViewBag.ProjectId = Request.QueryString["projectId"]; ViewBag.FileId = Request.QueryString["fileId"]; ViewBag.UserId = SessionUser.GetUserId(); TranslateModel translateModel = new TranslateModel(); if (ViewBag.ProjectId != null && ViewBag.FileId != null) { ProjectFile oProjectFile = translateModel.GetFile(Convert.ToInt32(ViewBag.ProjectId), Convert.ToInt32(ViewBag.FileId)); if (oProjectFile != null) { ViewBag.TargetLang = oProjectFile.TargetLang; } } return(View()); } else { return(View("Error")); } }
public async Task<JsonResult> Translate(TranslateModel translateModel) { HttpClient client = new HttpClient(); apiUrl = string.Format(apiUrl, translateModel.LanguageSource, translateModel.LanguageDestinaton, translateModel.Source); string translateResponse = await client.GetStringAsync(apiUrl); ResponseModel responseModel = JsonConvert.DeserializeObject<ResponseModel>(translateResponse); if (string.IsNullOrEmpty(responseModel.Message) && responseModel.Code == 200) { translateModel.Destination = string.Join(",", responseModel.Text); translateModel.IsSuccess = true; Upsert(translateModel.Source); } else { translateModel.ErrorText = responseModel.Message; } return Json(translateModel, JsonRequestBehavior.AllowGet); }
private void BtnTranslate_Click(object sender, RoutedEventArgs e) { API api = API.Init(); api.Translate(TbKey.Text, FromLanguage.Short, ToLanguage.Short, new Action <TranslateModel>((mod) => { if (mod == null) { MessageBox.Show("翻译失败!"); } base.Dispatcher.Invoke(new Action(() => { TranslateModels = mod; if (mod.Word_Name != null) { Word_Panel.Visibility = Visibility.Visible; } else { Word_Panel.Visibility = Visibility.Collapsed; } })); })); }
public Boolean BuildExportFile() { try { TranslateModel translateModel = new TranslateModel(); Project project = translateModel.GetProject(_projectId); ProjectFile file = translateModel.GetFile(_projectId, _fileId); if (project != null && file != null) { this.fileName = file.FileName; string rootPath = Utility.GetRootPath(); string importPath = rootPath + Contanst.rootProject + "\\" + project.Title + "\\Imports"; string exportPath = rootPath + Contanst.rootProject + "\\" + project.Title + "\\Exports"; if (Directory.Exists(exportPath)) { Directory.CreateDirectory(exportPath); } this.filePath = importPath + "\\" + file.FileName; if (!File.Exists(this.filePath)) { throw new Exception("File don't exits!"); } exportPath = exportPath + "\\" + file.FileName; var fileExt = Path.GetExtension(file.FileName); if (fileExt == null) { throw new Exception("Extension file error"); } this.translatedFile = exportPath.Replace(fileExt, $"_Export{fileExt}"); string fileNameExport = Path.GetFileName(translatedFile); try { File.Copy(filePath, translatedFile, true); } catch (Exception) { Random r = new Random(); translatedFile = filePath.Replace(fileExt, $"_r" + r.Next(100, 999) + "_vn" + fileExt); fileNameExport = Path.GetFileName(translatedFile); File.Copy(filePath, translatedFile, true); } switch (fileExt) { case ".xls": case ".xlsx": using (var excel = new ExcelHelper(translatedFile, false)) { try { List <TextSegment> lstTextSegment = translateModel.GetTextSegment(this._projectId, this._fileId); List <TextSegment> lstTextSegmentNoExists = new List <TextSegment>(); foreach (var item in lstTextSegment) { var textSegment = lstTextSegment.Where(a => !String.IsNullOrEmpty(a.TextSegment2) && a.TextSegment1 == item.TextSegment1 && String.IsNullOrEmpty(item.TextSegment2)).FirstOrDefault(); if (textSegment != null) { lstTextSegmentNoExists.Add(new TextSegment() { TextSegment1 = item.TextSegment1, TextSegment2 = textSegment.TextSegment2, Type = item.Type, Row = item.Row, Col = item.Col, SheetName = item.SheetName, IsSheetName = item.IsSheetName, SheetIndex = item.SheetIndex }); } else { lstTextSegmentNoExists.Add(new TextSegment() { TextSegment1 = item.TextSegment1, TextSegment2 = item.TextSegment2, Type = item.Type, Row = item.Row, Col = item.Col, SheetName = item.SheetName, IsSheetName = item.IsSheetName, SheetIndex = item.SheetIndex }); } } lstTextSegmentNoExists = lstTextSegmentNoExists.OrderByDescending(x => x.TextSegment1.Length).ToList(); int count = lstTextSegmentNoExists.Count == 0 ? 1 : lstTextSegmentNoExists.Count; foreach (TextSegment itTextSegment in lstTextSegmentNoExists) { //try //{ // loading.UpdateProcessStatus(i * 100 / count); //} //catch (Exception) //{ // continue; //} //finally //{ if (!string.IsNullOrEmpty(itTextSegment.TextSegment2)) { if ((TextSegmentType)itTextSegment.Type == TextSegmentType.TEXT) { excel.ReplaceText(itTextSegment.TextSegment1, itTextSegment.TextSegment2, Convert.ToInt32(itTextSegment.Row), Convert.ToInt32(itTextSegment.Col), itTextSegment.SheetName, Convert.ToBoolean(itTextSegment.IsSheetName), Convert.ToInt32(itTextSegment.SheetIndex)); // Replace all text segment in words } else { excel.ReplaceObject(itTextSegment.TextSegment1, itTextSegment.TextSegment2); } } } excel.Save(); } catch (Exception ex) { throw ex; } } break; case ".doc": case ".docx": using (var word = new WordHelper(translatedFile)) { List <TextSegment> lstTextSegment = translateModel.GetTextSegment(this._projectId, this._fileId); lstTextSegment = lstTextSegment.OrderByDescending(x => x.TextSegment1.Length).ToList(); int count = lstTextSegment.Count == 0 ? 1 : lstTextSegment.Count; foreach (TextSegment itTextSegment in lstTextSegment) { //try //{ // loading.UpdateProcessStatus(i * 100 / count); //} //catch (Exception) //{ // continue; //} //finally //{ if (!string.IsNullOrEmpty(itTextSegment.TextSegment2)) { if ((TextSegmentType)itTextSegment.Type == TextSegmentType.TEXT) { word.ReplaceText(itTextSegment.TextSegment1, itTextSegment.TextSegment2); // Replace all text segment in words } else { word.ReplaceObject(itTextSegment.TextSegment1, itTextSegment.TextSegment2); } } //} } word.Save(); } break; case ".ppt": case ".pptx": using (var powerpoint = new PowerPointHelper(translatedFile)) { List <TextSegment> lstTextSegment = translateModel.GetTextSegment(this._projectId, this._fileId); lstTextSegment = lstTextSegment.OrderByDescending(x => x.TextSegment1.Length).ToList(); int count = lstTextSegment.Count == 0 ? 1 : lstTextSegment.Count; foreach (TextSegment itTextSegment in lstTextSegment) { //try //{ // loading.UpdateProcessStatus(i * 100 / count); //} //catch (Exception) //{ // continue; //} //finally //{ if (!string.IsNullOrEmpty(itTextSegment.TextSegment2)) { powerpoint.ReplaceObject(itTextSegment.TextSegment1, itTextSegment.TextSegment2); } } powerpoint.Save(); } break; case ".pdf": break; default: break; } return(true); } else { return(false); } } catch (Exception) { throw; } }
/// <summary> /// 翻译接口 /// </summary> public void Translate(string key, string form, string to, Action <TranslateModel> action) { //地址http://fanyi.baidu.com/v2transapi // from: zh // to:en // query:1 // transtype: realtime // simple_means_flag:3 Dictionary <string, string> parameters = new Dictionary <string, string> { { "from", form }, { "to", to }, { "query", key.Replace("\r\n", "%0A") }, { "transtype", "realtime" }, { "simple_means_flag", "3" } }; string poststr = "http://fanyi.baidu.com/v2transapi"; TranslateModel mod = new TranslateModel() { Data = new List <Result>(), Word_Means = new List <string>() }; HTTP.Open(parameters, poststr, null, new Action <string>((str) => { JObject obj = JsonConvert.DeserializeObject <JObject>(str); JObject trans_result = (JObject)obj["trans_result"]; //data为结果集合 if (obj["dict_result"] is JObject dict_result) //简明释义 { if (dict_result["simple_means"] is JObject simple_means) //simple_means { if (simple_means["word_means"] is JArray word_means) { foreach (var item in word_means) { mod.Word_Means.Add(item.ToString()); } } if (simple_means["symbols"] is JArray symbols) { if (symbols[0] is JObject symbol) { if (symbol["symbol_mp3"] is Object Symbol_Mp3) { mod.Symbol_Mp3 = Symbol_Mp3.ToString(); } if (symbol["word_symbol"] is Object Word_Symbol) { string temp = Word_Symbol.ToString(); if (temp != null && temp != "") { mod.Word_Symbol = "[" + temp + "]"; } } } } mod.Word_Name = simple_means["word_name"].ToString(); } } //try //{ // JObject liju_result = (JObject)obj["liju_result"]; // JValue logid = (JValue)obj["logid"]; //} //catch (Exception) //{ // MessageBox.Show("翻译服务器出错!"); //} if (trans_result != null) { JArray data = (JArray)trans_result["data"]; foreach (JObject item in data) { var re = new Result() { DST = item["dst"].ToString(), SRC = item["src"].ToString() }; mod.Data.Add(re); mod.DataString += re.DST + "\r\n"; } } action(mod); }), new Action <Exception>((ex) => { action(mod); })); }
public void Translate(TranslateModel input) { PostManager.Translate(input.Id, input.Title, input.Content); }
public ActionResult BuildExportFile(int projectId, int fileId) { ControllerResult cResult = new ControllerResult(); JsonResult jsonResult = new JsonResult(); if (User.Identity.IsAuthenticated && GetUserPermission(SessionUser.GetUserId(), projectId)) { Thread thrGetText = new Thread(new ThreadStart(() => { #region "build file export" try { TranslateModel translateModel = new TranslateModel(); Project project = translateModel.GetProject(projectId); ProjectFile file = translateModel.GetFile(projectId, fileId); if (project != null && file != null) { string rootPath = Utility.GetRootPath(); string importPath = rootPath + Contanst.rootProject + "\\" + project.Title + "\\Imports"; string exportPath = rootPath + Contanst.rootProject + "\\" + project.Title + "\\Exports"; if (Directory.Exists(exportPath)) { Directory.CreateDirectory(exportPath); } string filePath = importPath + "\\" + file.FileName; if (!System.IO.File.Exists(filePath)) { throw new Exception("File don't exits!"); } exportPath = exportPath + "\\" + file.FileName; var fileExt = Path.GetExtension(file.FileName); if (fileExt == null) { throw new Exception("Extension file error"); } string translatedFile = exportPath.Replace(fileExt, $"_Export{fileExt}"); string fileNameExport = Path.GetFileName(translatedFile); try { int i = 1; while (System.IO.File.Exists(translatedFile)) { translatedFile = exportPath.Replace(fileExt, $"(" + i + ")_Export" + fileExt); i++; } System.IO.File.Copy(filePath, translatedFile, true); } catch (Exception) { Random r = new Random(); translatedFile = filePath.Replace(fileExt, $"_r" + r.Next(100, 999) + "_vn" + fileExt); fileNameExport = Path.GetFileName(translatedFile); System.IO.File.Copy(filePath, translatedFile, true); } switch (fileExt) { case ".xls": case ".xlsx": using (var excel = new ExcelHelper(translatedFile, false)) { try { List <TextSegment> lstTextSegment = translateModel.GetTextSegment(projectId, fileId); List <TextSegment> lstTextSegmentNoExists = new List <TextSegment>(); foreach (var item in lstTextSegment) { var textSegment = lstTextSegment.Where(a => !String.IsNullOrEmpty(a.TextSegment2) && a.TextSegment1 == item.TextSegment1 && String.IsNullOrEmpty(item.TextSegment2)).FirstOrDefault(); if (textSegment != null) { lstTextSegmentNoExists.Add(new TextSegment() { TextSegment1 = item.TextSegment1, TextSegment2 = textSegment.TextSegment2, Type = item.Type, Row = item.Row, Col = item.Col, SheetName = item.SheetName, IsSheetName = item.IsSheetName, SheetIndex = item.SheetIndex }); } else if (!String.IsNullOrEmpty(item.TextSegment2)) { lstTextSegmentNoExists.Add(new TextSegment() { TextSegment1 = item.TextSegment1, TextSegment2 = item.TextSegment2, Type = item.Type, Row = item.Row, Col = item.Col, SheetName = item.SheetName, IsSheetName = item.IsSheetName, SheetIndex = item.SheetIndex }); } } lstTextSegmentNoExists = lstTextSegmentNoExists.OrderByDescending(x => x.TextSegment1.Length).ToList(); foreach (TextSegment itTextSegment in lstTextSegmentNoExists) { if (!string.IsNullOrEmpty(itTextSegment.TextSegment2)) { if ((TextSegmentType)itTextSegment.Type == TextSegmentType.TEXT) { excel.ReplaceText(itTextSegment.TextSegment1, itTextSegment.TextSegment2, Convert.ToInt32(itTextSegment.Row), Convert.ToInt32(itTextSegment.Col), itTextSegment.SheetName, Convert.ToBoolean(itTextSegment.IsSheetName), Convert.ToInt32(itTextSegment.SheetIndex)); // Replace all text segment in words } else { excel.ReplaceObject(itTextSegment.TextSegment1, itTextSegment.TextSegment2); } } } excel.Save(); } catch (Exception ex) { throw ex; } } break; case ".doc": case ".docx": using (var word = new WordHelper(translatedFile)) { List <TextSegment> lstTextSegment = translateModel.GetTextSegment(projectId, fileId); List <TextSegment> lstTextSegmentNoExists = new List <TextSegment>(); foreach (var item in lstTextSegment) { var textSegment = lstTextSegment.Where(a => !String.IsNullOrEmpty(a.TextSegment2) && a.TextSegment1 == item.TextSegment1 && String.IsNullOrEmpty(item.TextSegment2)).FirstOrDefault(); if (textSegment != null) { lstTextSegmentNoExists.Add(new TextSegment() { TextSegment1 = item.TextSegment1, TextSegment2 = textSegment.TextSegment2, Type = item.Type, Row = item.Row, Col = item.Col, SheetName = item.SheetName, IsSheetName = item.IsSheetName, SheetIndex = item.SheetIndex, ParagraphsOrShapeIndex = item.ParagraphsOrShapeIndex }); } else if (!String.IsNullOrEmpty(item.TextSegment2)) { lstTextSegmentNoExists.Add(new TextSegment() { TextSegment1 = item.TextSegment1, TextSegment2 = item.TextSegment2, Type = item.Type, Row = item.Row, Col = item.Col, SheetName = item.SheetName, IsSheetName = item.IsSheetName, SheetIndex = item.SheetIndex, ParagraphsOrShapeIndex = item.ParagraphsOrShapeIndex }); } } lstTextSegmentNoExists = lstTextSegmentNoExists.OrderByDescending(x => x.TextSegment1.Length).ToList(); foreach (TextSegment itTextSegment in lstTextSegmentNoExists) { if (!string.IsNullOrEmpty(itTextSegment.TextSegment2)) { if ((TextSegmentType)itTextSegment.Type == TextSegmentType.TEXT) { word.ReplaceText(itTextSegment.TextSegment1, itTextSegment.TextSegment2, itTextSegment.ParagraphsOrShapeIndex); // Replace all text segment in words } else { word.ReplaceObject(itTextSegment.TextSegment1, itTextSegment.TextSegment2, itTextSegment.ParagraphsOrShapeIndex); } } } word.Save(); } break; case ".ppt": case ".pptx": using (var powerpoint = new PowerPointHelper(translatedFile, false)) { List <TextSegment> lstTextSegment = translateModel.GetTextSegment(projectId, fileId); List <TextSegment> lstTextSegmentNoExists = new List <TextSegment>(); foreach (var item in lstTextSegment) { var textSegment = lstTextSegment.Where(a => !String.IsNullOrEmpty(a.TextSegment2) && a.TextSegment1 == item.TextSegment1 && String.IsNullOrEmpty(item.TextSegment2)).FirstOrDefault(); if (textSegment != null) { lstTextSegmentNoExists.Add(new TextSegment() { TextSegment1 = item.TextSegment1, TextSegment2 = textSegment.TextSegment2, Type = item.Type, Row = item.Row, Col = item.Col, SheetName = item.SheetName, IsSheetName = item.IsSheetName, SheetIndex = item.SheetIndex, ParagraphsOrShapeIndex = item.ParagraphsOrShapeIndex }); } else if (!String.IsNullOrEmpty(item.TextSegment2)) { lstTextSegmentNoExists.Add(new TextSegment() { TextSegment1 = item.TextSegment1, TextSegment2 = item.TextSegment2, Type = item.Type, Row = item.Row, Col = item.Col, SheetName = item.SheetName, IsSheetName = item.IsSheetName, SheetIndex = item.SheetIndex, ParagraphsOrShapeIndex = item.ParagraphsOrShapeIndex }); } } lstTextSegmentNoExists = lstTextSegmentNoExists.OrderByDescending(x => x.TextSegment1.Length).ToList(); foreach (TextSegment itTextSegment in lstTextSegmentNoExists) { if (!string.IsNullOrEmpty(itTextSegment.TextSegment2)) { powerpoint.ReplaceObject(itTextSegment.TextSegment1, itTextSegment.TextSegment2, itTextSegment.ParagraphsOrShapeIndex); } } powerpoint.Save(); } break; case ".pdf": break; default: break; } cResult.IsSuccess = true; cResult.Value = Path.GetFileName(translatedFile); } else { cResult.IsSuccess = false; cResult.Message = "Project or file had deleted or don't exits!"; } } catch (Exception ex) { cResult.IsSuccess = false; cResult.Message = "Build export file error!"; } #endregion })); thrGetText.Start(); thrGetText.Join(); } else { cResult.IsSuccess = false; cResult.Message = "User don't has permissions!"; } return(Json(cResult)); }
public ActionResult GetTextSegment(int projectId, int fileId) { JsonResult jsonResult = new JsonResult(); SegmentsResult sResult = new SegmentsResult(); if (User.Identity.IsAuthenticated && GetUserPermission(SessionUser.GetUserId(), projectId)) { Thread thrGetText = new Thread(new ThreadStart(() => { try { TranslateModel translateModel = new TranslateModel(); Project project = translateModel.GetProject(projectId); ProjectFile file = translateModel.GetFile(projectId, fileId); if (project != null && file != null) { sResult.FileName = file.FileName; sResult.ProjectName = project.Title; string importFile = Utility.GetRootPath() + Contanst.rootProject + "\\" + project.Title + "\\Imports\\" + file.FileName; var extFile = Path.GetExtension(importFile); switch (extFile) { case ".xls": case ".xlsx": sResult.FileType = (int)FileTypes.EXCEL; if (System.IO.File.Exists(importFile) && file.IsLoadText == true) { List <TextSegment> lstPureTextSegment = translateModel.GetTextSegment(projectId, fileId); List <TextSegment> lstTextSegment = new List <TextSegment>(); foreach (var textSegment in lstPureTextSegment) { int iRow = textSegment.Row != null ? Convert.ToInt32(textSegment.Row) : -1; int iCol = textSegment.Col != null ? Convert.ToInt32(textSegment.Col) : -1; if (!(lstTextSegment.Any(a => a.TextSegment1 == textSegment.TextSegment1) && iRow != -1 && iCol != -1)) //&& iRow != -1 && iCol != -1 { lstTextSegment.Add(textSegment); } } sResult.ControllerResult.Value = lstTextSegment; } else if (System.IO.File.Exists(importFile) && file.IsLoadText == false) { List <TextRead> segments = new List <TextRead>(); List <TextRead> objects = new List <TextRead>(); using (var excel = new ExcelHelper(importFile, true)) { segments = excel.GetTextSegment(); objects = excel.GetTextObject(); } List <TextSegment> lstTextSegment = translateModel.GetTextSegment(projectId, fileId); List <TextRead> lstTextSegments = new List <TextRead>(); List <TextRead> lstTextObjects = new List <TextRead>(); foreach (var item in segments) { if (!lstTextSegment.Any(a => a.Row == item.Row && a.Col == item.Col && a.SheetName == item.SheetName && a.TextSegment1 == item.Value)) { lstTextSegments.Add(item); } } foreach (var item in objects) { if (!lstTextSegment.Any(a => a.Row == item.Row && a.Col == item.Col && a.SheetName == item.SheetName && a.TextSegment1 == item.Value)) { lstTextObjects.Add(item); } } var insertedTxt = translateModel.BatchInsert(lstTextSegments, fileId, projectId, (int)FileTypes.EXCEL, (int)TextSegmentType.TEXT); var insertedObj = translateModel.BatchInsert(lstTextObjects, fileId, projectId, (int)FileTypes.EXCEL, (int)TextSegmentType.OBJECT); translateModel.UpdateStatusFileTranslate(projectId, fileId, true); List <TextSegment> lstPureTextSegment = translateModel.GetTextSegment(projectId, fileId); List <TextSegment> lstSegments = new List <TextSegment>(); foreach (var textSegment in lstPureTextSegment) { int iRow = textSegment.Row != null ? Convert.ToInt32(textSegment.Row) : -1; int iCol = textSegment.Col != null ? Convert.ToInt32(textSegment.Col) : -1; if (!(lstSegments.Any(a => a.TextSegment1 == textSegment.TextSegment1) && iRow != -1 && iCol != -1)) //&& iRow != -1 && iCol != -1 { lstSegments.Add(textSegment); } } sResult.ControllerResult.Value = lstSegments; } else { sResult.ControllerResult.IsSuccess = false; sResult.ControllerResult.Message = "Physical file don't exist in server!"; } break; case ".doc": case ".docx": sResult.FileType = (int)FileTypes.WORD; if (System.IO.File.Exists(importFile) && file.IsLoadText == true) { List <TextSegment> lstTextSegment = translateModel.GetTextSegment(projectId, fileId); sResult.ControllerResult.Value = lstTextSegment; } else if (System.IO.File.Exists(importFile) && file.IsLoadText == false) { List <TextRead> segments = new List <TextRead>(); List <TextRead> objects = new List <TextRead>(); using (var word = new WordHelper(importFile, true)) { segments = word.GetTextSegmentInWord(); objects = word.GetTextObjectInWord(); } List <TextSegment> lstTextSegment = translateModel.GetTextSegment(projectId, fileId); List <TextRead> lstTextSegments = new List <TextRead>(); List <TextRead> lstTextObjects = new List <TextRead>(); foreach (var item in segments) { if (!lstTextSegment.Any(a => a.TextSegment1 == item.Value && a.ParagraphsOrShapeIndex == item.ParagraphsOrShapeIndex)) { lstTextSegments.Add(item); } } foreach (var item in objects) { if (!lstTextSegment.Any(a => a.TextSegment1 == item.Value && a.ParagraphsOrShapeIndex == item.ParagraphsOrShapeIndex)) { lstTextObjects.Add(item); } } var insertedTxt = translateModel.BatchInsert(lstTextSegments, fileId, projectId, (int)FileTypes.WORD, (int)TextSegmentType.TEXT); var insertedObj = translateModel.BatchInsert(lstTextObjects, fileId, projectId, (int)FileTypes.WORD, (int)TextSegmentType.OBJECT); translateModel.UpdateStatusFileTranslate(projectId, fileId, true); List <TextSegment> lstPureTextSegment = translateModel.GetTextSegment(projectId, fileId); List <TextSegment> lstSegments = new List <TextSegment>(); foreach (var textSegment in lstPureTextSegment) { if (!(lstSegments.Any(a => a.TextSegment1 == textSegment.TextSegment1))) { lstSegments.Add(textSegment); } } sResult.ControllerResult.Value = lstSegments; } else { sResult.ControllerResult.IsSuccess = false; sResult.ControllerResult.Message = "Physical file don't exist in server!"; } break; case ".ppt": case ".pptx": sResult.FileType = (int)FileTypes.POWERPOINT; if (System.IO.File.Exists(importFile) && file.IsLoadText == true) { List <TextSegment> lstTextSegment = translateModel.GetTextSegment(projectId, fileId); sResult.ControllerResult.Value = lstTextSegment; } else if (System.IO.File.Exists(importFile) && file.IsLoadText == false) { List <TextRead> textSegments = new List <TextRead>(); using (var powerpoint = new PowerPointHelper(importFile)) { textSegments = powerpoint.GetTexts(); } List <TextSegment> lstTextSegment = translateModel.GetTextSegment(projectId, fileId); List <TextRead> lstTextSegments = new List <TextRead>(); foreach (var item in textSegments) { if (!lstTextSegment.Any(a => a.TextSegment1 == item.Value && a.ParagraphsOrShapeIndex == item.ParagraphsOrShapeIndex)) { lstTextSegments.Add(item); } } var insertedTxt = translateModel.BatchInsert(lstTextSegments, fileId, projectId, (int)FileTypes.WORD, (int)TextSegmentType.OBJECT); translateModel.UpdateStatusFileTranslate(projectId, fileId, true); List <TextSegment> lstPureTextSegment = translateModel.GetTextSegment(projectId, fileId); List <TextSegment> lstSegments = new List <TextSegment>(); foreach (var textSegment in lstPureTextSegment) { if (!(lstSegments.Any(a => a.TextSegment1 == textSegment.TextSegment1))) { lstSegments.Add(textSegment); } } sResult.ControllerResult.Value = lstSegments; } else { sResult.ControllerResult.IsSuccess = false; sResult.ControllerResult.Message = "Physical file don't exist in server!"; } break; case ".pdf": //not yet complete break; default: break; } } else { sResult.ControllerResult.IsSuccess = false; sResult.ControllerResult.Message = "Project or file don't exist!"; } } catch (Exception ex) { sResult.ControllerResult.IsSuccess = false; if (ex.Message == "Exception from HRESULT: 0x800AC472") { sResult.ControllerResult.Message = "Office driver is busying can't call to Interop service or office on server don't actived!"; } else { sResult.ControllerResult.Message = ex.Message; } } jsonResult = Json(sResult, JsonRequestBehavior.AllowGet); jsonResult.MaxJsonLength = Int32.MaxValue; })); thrGetText.Start(); thrGetText.Join(); } else { sResult.ControllerResult.IsSuccess = false; sResult.ControllerResult.Message = "User don't has permissions!"; } return(jsonResult); }
/// <summary> /// 将给定的表结构信息转换成完整表名 /// </summary> /// <param name="table"></param> /// <returns></returns> public static string GetTableName(TranslateModel.Table table) { var tableName = string.Empty; tableName = string.Format("{0}[{1}]", tableName, table.Name); return tableName; }