private void asyncLib_Click(object sender, RoutedEventArgs e) { CreateClientContext(); List inList = cc.Web.Lists.GetByTitle(this.inputFile.Text); List outList = cc.Web.Lists.GetByTitle(this.outputFile.Text); TranslationJob job = new TranslationJob(cc, this.culture.Text); job.AddLibrary(inList, outList); job.Start(); cc.Load(job); ThreadPool.QueueUserWorkItem(new WaitCallback(CreateThreadForAsync), job); }
private void asyncFolder_Click(object sender, RoutedEventArgs e) { CreateClientContext(); Folder folderIn = cc.Web.GetFolderByServerRelativeUrl(this.inputFile.Text); Folder folderOut = cc.Web.GetFolderByServerRelativeUrl(this.outputFile.Text); TranslationJob job = new TranslationJob(cc, this.culture.Text); job.AddFolder(folderIn, folderOut, true); job.Start(); cc.Load(job); ThreadPool.QueueUserWorkItem(new WaitCallback(CreateThreadForAsync), job); }
private void asyncFile_Click(object sender, RoutedEventArgs e) { CreateClientContext(); TranslationJob job = new TranslationJob(cc, this.culture.Text); string input = this.inputFile.Text; string output = this.outputFile.Text; job.AddFile(input, output); job.Name = this.jobName.Text; job.Start(); cc.Load(job); ThreadPool.QueueUserWorkItem(new WaitCallback(CreateThreadForAsync), job); }
static void AsyncFolder(string culture, string inFolder, string outFolder, string name) { Folder folderIn = cc.Web.GetFolderByServerRelativeUrl(inFolder); Folder folderOut = cc.Web.GetFolderByServerRelativeUrl(outFolder); TranslationJob job = new TranslationJob(cc, culture); job.AddFolder(folderIn, folderOut, true); job.Name = name; job.Start(); cc.Load(job); cc.ExecuteQuery(); Console.WriteLine("JobId: " + job.JobId); Console.WriteLine("JobName: " + job.Name); Console.WriteLine("Done"); }
static void AsyncLib(string culture, string inputList, string outputList, string name) { List inList = cc.Web.Lists.GetByTitle(inputList); List outList = cc.Web.Lists.GetByTitle(outputList); TranslationJob job = new TranslationJob(cc, culture); job.AddLibrary(inList, outList); job.Name = name; job.Start(); cc.Load(job); cc.ExecuteQuery(); Console.WriteLine("JobId: " + job.JobId); Console.WriteLine("JobName: " + job.Name); Console.WriteLine("Done"); }
static void AsyncFile(string culture, string input, string output, string name) { TranslationJob job = new TranslationJob(cc, culture); Console.WriteLine("Adding files"); Console.WriteLine("Input: " + input); Console.WriteLine("Output: " + output); job.AddFile(input, output); job.Name = name; //test job.Start(); cc.Load(job); cc.ExecuteQuery(); Console.WriteLine("JobId: " + job.JobId); Console.WriteLine("JobName: " + job.Name); Console.WriteLine("Done"); }
private void OnSingleTranslationCompleted(TranslationJob job, string[] translatedTexts, bool useTranslatorFriendlyArgs) { var translatedText = translatedTexts[0]; ConsecutiveErrors = 0; job.TranslatedText = PostProcessTranslation(job.Key, translatedText, useTranslatorFriendlyArgs); job.State = TranslationJobState.Succeeded; RemoveOngoingTranslation(job.Key); if (!Settings.EnableSilentMode) { XuaLogger.AutoTranslator.Info($"Completed: '{job.Key.TemplatedOriginal_Text}' => '{job.TranslatedText}'"); } Manager.InvokeJobCompleted(job); }
private TranslationJob AddUnstartedJob(UntranslatedText key, TranslationJob job) { if (!_unstartedJobs.ContainsKey(key)) { int countBefore = _unstartedJobs.Count; _unstartedJobs.Add(key, job); Manager.UnstartedTranslations++; if (countBefore == 0) { Manager.ScheduleUnstartedJobs(this); } return(job); } return(null); }
private void CreateThreadForListAllFileExt(object dummy) { try { string result = ""; result += "Print Supported file extensions \n"; IEnumerable <string> fileExitems = TranslationJob.EnumerateSupportedFileExtensions(cc); cc.ExecuteQuery(); foreach (string item in fileExitems) { result += item + ", "; } DispatcherOperation dop = Dispatcher.BeginInvoke(new Action <string>(PrintResult), result); } catch (Exception e) { DispatcherOperation dop = Dispatcher.BeginInvoke(new Action <string>(PrintResult), e.ToString()); } }
private string GetTextToTranslate(TranslationJob job) { var removeInternalWhitespace = Settings.IgnoreWhitespaceInDialogue && job.Key.Original_Text.Length > Settings.MinDialogueChars; string text; if (removeInternalWhitespace) { text = job.Key.TemplatedOriginal_Text_FullyTrimmed; } else { text = job.Key.TemplatedOriginal_Text_ExternallyTrimmed; } text = PreProcessUntranslatedText(text); return(text); }
public async Task <IHttpActionResult> Post(TranslationJob job) { try { Guid userId = RoboBrailleProcessor.getUserIdFromJob(this.Request.Headers.Authorization.Parameter); job.UserId = userId; Guid jobId = await _repository.SubmitWorkItem(job); return(Ok(jobId.ToString("D"))); } catch (Exception e) { var resp = new HttpResponseMessage(HttpStatusCode.InternalServerError) { Content = new StringContent(string.Format("Internal error: {0}", e)), ReasonPhrase = e.Message }; throw new HttpResponseException(resp); } }
public void TestModelLanguageToLanguage() { TranslationJob trj = new TranslationJob() { Id = Guid.NewGuid(), FileContent = Encoding.UTF8.GetBytes("This is the first translation job."), UserId = Guid.Parse("d2b97532-e8c5-e411-8270-f0def103cfd0"), FileExtension = "txt", FileName = "test", MimeType = "text/plain", Status = JobStatus.Started, SubmitTime = DateTime.Now, DownloadCounter = 0, InputFileHash = new byte[8], SourceLanguage = Language.enGB.ToString(), TargetLanguage = Language.daDK.ToString() }; var repo = new TranslationRepository(); var jobID = repo.SubmitWorkItem(trj).Result; while (repo.GetWorkStatus(jobID) == 2) { //wait Task.Delay(200); } byte[] res = null; if (repo.GetWorkStatus(jobID) == 1) { //sucess FileResult result = repo.GetResultContents(jobID); res = result.getFileContents(); } else { //fail throw new Exception("Task with job ID: " + jobID + " failed"); } NUnit.Framework.Assert.AreEqual("This is the first translation job.", Encoding.UTF8.GetString(res)); }
public bool EnqueueTranslation(object ui, UntranslatedText key, InternalTranslationResult translationResult, ParserTranslationContext context, bool checkOtherEndpoints, bool saveResultGlobally) { var added = AssociateWithExistingJobIfPossible(ui, key, translationResult, context, saveResultGlobally); if (added) { return(false); } if (checkOtherEndpoints) { var endpoints = Manager.ConfiguredEndpoints; var len = endpoints.Count; for (int i = 0; i < len; i++) { var endpoint = endpoints[i]; if (endpoint == this) { continue; } added = endpoint.AssociateWithExistingJobIfPossible(ui, key, translationResult, context, saveResultGlobally); if (added) { return(false); } } } if (!Settings.EnableSilentMode) { XuaLogger.AutoTranslator.Debug("Queued: '" + key.TemplatedOriginal_Text + "'"); } var newJob = new TranslationJob(this, key, saveResultGlobally); newJob.Associate(key, ui, translationResult, context, saveResultGlobally); return(AddUnstartedJob(key, newJob)); }
public bool EnqueueTranslation(object ui, UntranslatedText key, TranslationResult translationResult, ParserTranslationContext context) { var added = AssociateWithExistingJobIfPossible(ui, key, translationResult, context); if (added) { return(false); } var checkOtherEndpoints = translationResult == null; if (checkOtherEndpoints) { var endpoints = Manager.ConfiguredEndpoints; var len = endpoints.Count; for (int i = 0; i < len; i++) { var endpoint = endpoints[i]; if (endpoint == this) { continue; } added = endpoint.AssociateWithExistingJobIfPossible(ui, key, translationResult, context); if (added) { return(false); } } } XuaLogger.Current.Debug("Queued: '" + key.TrimmedTranslatableText + "'"); var saveResultGlobally = checkOtherEndpoints; var newJob = new TranslationJob(this, key, saveResultGlobally); newJob.Associate(ui, translationResult, context); return(AddUnstartedJob(key, newJob)); }
private string GetTextToTranslate(TranslationJob job) { bool isNgui = job.Components.Any(x => x.Item.IsNGUI()) || job.Contexts.Any(x => x.Component.IsNGUI()); var removeInternalWhitespace = (Settings.IgnoreWhitespaceInDialogue && job.Key.Original_Text.Length > Settings.MinDialogueChars) || (Settings.IgnoreWhitespaceInNGUI && isNgui); string text; if (removeInternalWhitespace) { text = job.Key.TemplatedOriginal_Text_FullyTrimmed; } else { text = job.Key.TemplatedOriginal_Text_ExternallyTrimmed; } text = PreProcessUntranslatedText(text); return(text); }
/// <summary> /// submit an async job to translate a file /// </summary> /// <param name="culture">target langauge</param> /// <param name="input">full URL of input file</param> /// <param name="output">full URL of output file</param> static void AddAsyncFile(string culture, string input, string output, string user) { SPServiceContext sc = SPServiceContext.GetContext(new SPSite(site)); TranslationJob job = new TranslationJob(sc, CultureInfo.GetCultureInfo(culture)); Encoding encoding = new System.Text.UTF8Encoding(); if (!String.IsNullOrEmpty(user)) { job.UserToken = ConvertHexStringToByteArray(user); //job.UserToken = encoding.GetBytes(user); } Console.WriteLine("Input: " + input); Console.WriteLine("Output: " + output); Console.WriteLine("targetlang {0}:", job.TargetLanguage.Name); job.AddFile(input, output); Console.WriteLine("Submitting the job"); job.Start(); if (job.UserToken != null) { Console.WriteLine("User Token:" + encoding.GetString(job.UserToken)); } ListJobItemInfo(job); }
/// <summary> /// submit an async job to translate folder(s) /// </summary> /// <param name="culture">target langauge</param> /// <param name="inputFolder">Full URL of the input folder on SharePoint</param> /// <param name="outputFolder">Full URL of the output folder on SharePoint</param> static void AddAsyncFolder(string culture, string inputFolder, string outputFolder) { SPServiceContext sc = SPServiceContext.GetContext(new SPSite(site)); TranslationJob job = new TranslationJob(sc, CultureInfo.GetCultureInfo(culture)); using (SPSite siteIn = new SPSite(inputFolder)) { Console.WriteLine("In site: {0}", siteIn); using (SPWeb webIn = siteIn.OpenWeb()) { Console.WriteLine("In web: {0}", webIn); using (SPSite siteOut = new SPSite(outputFolder)) { Console.WriteLine("Out site: {0}", siteOut); using (SPWeb webOut = siteOut.OpenWeb()) { Console.WriteLine("Out web: {0}", webOut); SPFolder folderIn = webIn.GetFolder(inputFolder); SPFolder folderOut = webOut.GetFolder(outputFolder); Console.WriteLine("Input: " + folderIn); Console.WriteLine("Output: " + folderOut); //true means to recursive all the sub folders job.AddFolder(folderIn, folderOut, true); Console.WriteLine("Submitting the job"); job.Start(); ListJobItemInfo(job); } } } } }
/// <summary> /// submit an async job to translate a document library /// </summary> /// <param name="culture">target langauge</param> /// <param name="inputList">Full URL of the input document library on SharePoint</param> /// <param name="outputList">Full URL of the output document library on SharePoint</param> static void AddAsyncLibrary(string culture, string inputList, string outputList) { SPServiceContext sc = SPServiceContext.GetContext(new SPSite(site)); TranslationJob job = new TranslationJob(sc, CultureInfo.GetCultureInfo(culture)); using (SPSite siteIn = new SPSite(inputList)) { Console.WriteLine("In site: {0}", siteIn); using (SPWeb webIn = siteIn.OpenWeb()) { Console.WriteLine("In web: {0}", webIn); using (SPSite siteOut = new SPSite(outputList)) { Console.WriteLine("Out site: {0}", siteOut); using (SPWeb webOut = siteOut.OpenWeb()) { Console.WriteLine("Out web: {0}", webOut); SPDocumentLibrary listIn = (SPDocumentLibrary)webIn.GetList(inputList); SPDocumentLibrary listOut = (SPDocumentLibrary)webOut.GetList(outputList); Console.WriteLine("Input: " + listIn); Console.WriteLine("Output: " + listOut); job.AddLibrary(listIn, listOut); Console.WriteLine("Submitting the job"); job.Start(); ListJobItemInfo(job); } } } } }
static TranslationJob createTranslationJob(string jobCulture) { Console.WriteLine("Creating job"); TranslationJob job = new TranslationJob(sc, CultureInfo.GetCultureInfo(jobCulture)); return job; }
public UntranslatedTextInfo PrepareUntranslatedText(string unpreparedUntranslatedText, TranslationJob job) { var untranslatedText = job.Key.PrepareUntranslatedText(unpreparedUntranslatedText); var info = job.UntranslatedTextInfo; if (info != null) { return(new UntranslatedTextInfo(untranslatedText, info.ContextBefore, info.ContextAfter)); } else { return(new UntranslatedTextInfo(untranslatedText)); } }
static void ListJobItemInfo(TranslationJob job) { Console.WriteLine("Enumerating items in the job..."); foreach (KeyValuePair<string, string> kv in job.EnumerateItems()) { Console.WriteLine(kv.Key + " " + kv.Value); } }
public ActionResult File() { try { Uri hostWebUri = new Uri(Request.QueryString["SPHostUrl"]); Uri appWebUri = new Uri(Request.QueryString["SPAppWebUrl"]); string listId = Request.QueryString["SPListId"]; string listItemId = Request.QueryString["SPListItemId"]; string culture = string.Empty; string destination = string.Empty; //Get the settings List <Setting> settings = new List <Setting>(); using (ClientContext ctx = TokenHelper.GetS2SClientContextWithWindowsIdentity(appWebUri, Request.LogonUserIdentity)) { List settingsList = ctx.Web.Lists.GetByTitle("Settings"); ctx.Load(settingsList); ListItemCollection settingItems = settingsList.GetItems(CamlQuery.CreateAllItemsQuery()); ctx.Load(settingItems); ctx.ExecuteQuery(); foreach (ListItem settingItem in settingItems) { settings.Add(new Setting() { Title = settingItem["Title"].ToString(), Value = settingItem["Value"].ToString(), }); } } culture = settings.Where <Setting>(s => s.Title == "Culture").FirstOrDefault().Value; destination = settings.Where <Setting>(s => s.Title == "Destination").FirstOrDefault().Value; //Translate file synchronously using (ClientContext ctx = TokenHelper.GetS2SClientContextWithWindowsIdentity(hostWebUri, Request.LogonUserIdentity)) { //Get the file to translate ListItem listItem = ctx.Web.Lists.GetById(new Guid(listId)).GetItemById(listItemId); ctx.Load(listItem, i => i.File); ctx.ExecuteQuery(); //Get the destination library Folder destinationFolder = ctx.Web.Lists.GetByTitle(destination).RootFolder; ctx.Load(destinationFolder, f => f.ServerRelativeUrl); ctx.ExecuteQuery(); string ext = listItem.File.Name.Substring(listItem.File.Name.LastIndexOf(".")); string inPath = hostWebUri.Scheme + "://" + hostWebUri.Authority + ":" + hostWebUri.Port + listItem.File.ServerRelativeUrl; string outPath = hostWebUri.Scheme + "://" + hostWebUri.Authority + ":" + hostWebUri.Port + destinationFolder.ServerRelativeUrl + "/" + listItem.File.Name; string returnPath = hostWebUri.Scheme + "://" + hostWebUri.Authority + ":" + hostWebUri.Port + destinationFolder.ServerRelativeUrl; ViewBag.ReturnPath = returnPath; //Check if extension is supported ClientResult <bool> isSupported = TranslationJob.IsFileExtensionSupported(ctx, ext.Substring(1)); ctx.ExecuteQuery(); if (!isSupported.Value) { throw new Exception("File extension is not supported."); } //Translate SyncTranslator job = new SyncTranslator(ctx, culture); job.OutputSaveBehavior = SaveBehavior.AlwaysOverwrite; ClientResult <TranslationItemInfo> cr = job.Translate(inPath, outPath); ctx.ExecuteQuery(); if (!cr.Value.Succeeded) { throw new Exception(cr.Value.ErrorMessage); } //Return to library Response.Redirect(returnPath); } } catch (Exception x) { ViewBag.Message = x.Message; } return(View()); }
public TranslationLineTracker(TranslationJob job) { Job = job; LinesCount = job.Key.GetDictionaryLookupKey().Count(c => c == '\n') + 1; }
public void TestPostLanguageToLanguage() { //init var mockJobs = new Mock <DbSet <Job> >(); var mockServiceUsers = new Mock <DbSet <ServiceUser> >(); var mockContext = new Mock <RoboBrailleDataContext>(); // arrange var users = new List <ServiceUser> { new ServiceUser { EmailAddress = "*****@*****.**", UserId = Guid.Parse("d2b97532-e8c5-e411-8270-f0def103cfd0"), ApiKey = Encoding.UTF8.GetBytes("7b76ae41-def3-e411-8030-0c8bfd2336cd"), FromDate = new DateTime(2015, 1, 1), ToDate = new DateTime(2020, 1, 1), UserName = "******", Jobs = null } }.AsQueryable(); TranslationJob trj = new TranslationJob() { Id = Guid.NewGuid(), FileContent = Encoding.UTF8.GetBytes("This is the first translation job."), UserId = Guid.Parse("d2b97532-e8c5-e411-8270-f0def103cfd0"), FileExtension = "txt", FileName = "test", MimeType = "text/plain", Status = JobStatus.Started, SubmitTime = DateTime.Now, DownloadCounter = 0, InputFileHash = new byte[8], SourceLanguage = Language.enGB.ToString(), TargetLanguage = Language.daDK.ToString() }; TranslationJob trj2 = new TranslationJob() { Id = Guid.NewGuid(), FileContent = Encoding.UTF8.GetBytes("This is the second translation job."), UserId = Guid.Parse("d2b87532-e8c5-e411-8270-f0def103cfd0"), FileExtension = "txt", FileName = "test2", MimeType = "text/plain", Status = JobStatus.Done, SubmitTime = DateTime.Now, DownloadCounter = 2, InputFileHash = new byte[2], SourceLanguage = Language.enGB.ToString(), TargetLanguage = Language.svSE.ToString() }; var jobs = new List <TranslationJob> { trj2 }.AsQueryable(); mockJobs.As <IDbAsyncEnumerable <Job> >().Setup(m => m.GetAsyncEnumerator()).Returns(new TestDbAsyncEnumerator <Job>(jobs.GetEnumerator())); mockJobs.As <IQueryable <Job> >().Setup(m => m.Provider).Returns(new TestDbAsyncQueryProvider <Job>(jobs.Provider)); mockJobs.As <IQueryable <Job> >().Setup(m => m.Expression).Returns(jobs.Expression); mockJobs.As <IQueryable <Job> >().Setup(m => m.ElementType).Returns(jobs.ElementType); mockJobs.As <IQueryable <Job> >().Setup(m => m.GetEnumerator()).Returns(jobs.GetEnumerator()); mockServiceUsers.As <IDbAsyncEnumerable <ServiceUser> >().Setup(m => m.GetAsyncEnumerator()).Returns(new TestDbAsyncEnumerator <ServiceUser>(users.GetEnumerator())); mockServiceUsers.As <IQueryable <ServiceUser> >().Setup(m => m.Provider).Returns(new TestDbAsyncQueryProvider <ServiceUser>(users.Provider)); mockServiceUsers.As <IQueryable <ServiceUser> >().Setup(m => m.Expression).Returns(users.Expression); mockServiceUsers.As <IQueryable <ServiceUser> >().Setup(m => m.ElementType).Returns(users.ElementType); mockServiceUsers.As <IQueryable <ServiceUser> >().Setup(m => m.GetEnumerator()).Returns(users.GetEnumerator()); mockContext.Setup(m => m.Jobs).Returns(mockJobs.Object); mockContext.Setup(m => m.ServiceUsers).Returns(mockServiceUsers.Object); var repo = new TranslationRepository(mockContext.Object); var request = new HttpRequestMessage(); request.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Authorization", "Hawk id=\"d2b97532-e8c5-e411-8270-f0def103cfd0\", ts=\"1470657024\", nonce=\"VkcMGB\", mac=\"hXW+BLRoqwlUaQZQtpPToOWnVAh5KbAXGGT5f8dLMVk=\""); var serviceController = new TranslationController(repo); serviceController.Request = request; //call var jobid = serviceController.Post(trj).Result; //test mockJobs.Verify(m => m.Add(It.IsAny <Job>()), Times.Once()); mockContext.Verify(m => m.SaveChanges(), Times.Exactly(1)); //twice if it is synced //mockContext.Verify(m => m.SaveChanges(), Times.Exactly(2)); }
static void TestCancelJob(string jobid) { TranslationJob.CancelJob(cc, new Guid(jobid)); cc.ExecuteQuery(); }
public ActionResult Library() { try { Uri hostWebUri = new Uri(Request.QueryString["SPHostUrl"]); Uri appWebUri = new Uri(Request.QueryString["SPAppWebUrl"]); string listId = Request.QueryString["SPListId"]; string listItemId = Request.QueryString["SPListItemId"]; string culture = string.Empty; string destination = string.Empty; List <Setting> settings = new List <Setting>(); //Get the settings using (ClientContext ctx = TokenHelper.GetS2SClientContextWithWindowsIdentity(appWebUri, Request.LogonUserIdentity)) { List settingsList = ctx.Web.Lists.GetByTitle("Settings"); ctx.Load(settingsList); ListItemCollection settingItems = settingsList.GetItems(CamlQuery.CreateAllItemsQuery()); ctx.Load(settingItems); ctx.ExecuteQuery(); foreach (ListItem settingItem in settingItems) { settings.Add(new Setting() { Title = settingItem["Title"].ToString(), Value = settingItem["Value"].ToString(), }); } } culture = settings.Where <Setting>(s => s.Title == "Culture").FirstOrDefault().Value; destination = settings.Where <Setting>(s => s.Title == "Destination").FirstOrDefault().Value; //Translate library asynchronously using (ClientContext ctx = TokenHelper.GetS2SClientContextWithWindowsIdentity(hostWebUri, Request.LogonUserIdentity)) { //Get library to translate Folder rootFolder = ctx.Web.Lists.GetById(new Guid(listId)).RootFolder; ctx.Load(rootFolder, f => f.ServerRelativeUrl); //Get destination library Folder destinationFolder = ctx.Web.Lists.GetByTitle(destination).RootFolder; ctx.Load(destinationFolder, f => f.ServerRelativeUrl); ctx.ExecuteQuery(); TranslationJob job = new TranslationJob(ctx, culture); job.AddFolder(rootFolder, destinationFolder, true); job.Name = "LibraryTranslation"; job.Start(); ctx.Load(job); ctx.ExecuteQuery(); string returnPath = hostWebUri.Scheme + "://" + hostWebUri.Authority + ":" + hostWebUri.Port + destinationFolder.ServerRelativeUrl; ViewBag.ReturnPath = returnPath; ViewBag.Message = "The translation job has been scheduled."; } } catch (Exception x) { ViewBag.Message = x.Message; } return(View()); }
/// <summary> /// cancel submitted job /// call GetJobStatus() to get job ids /// </summary> /// <param name="jobid">job guid</param> static void CancelJob(string jobid) { TranslationJob.CancelJob(sc, new Guid(jobid)); }