Example #1
0
        public async Task <IActionResult> Post(IFormFile file, TranslatedFileViewModel model)
        {
            var pipeline = new Markdig.MarkdownPipelineBuilder().UseAdvancedExtensions().Build();

            model.Languages.AddRange(LanguagesList());

            var filePath = Path.Combine(
                Directory.GetCurrentDirectory(), "wwwroot",
                file.FileName);

            if (file.Length > 0)
            {
                using (var stream = new FileStream(filePath, FileMode.Create))
                {
                    await file.CopyToAsync(stream);
                }

                var tr = System.IO.File.ReadAllText(filePath);
                System.IO.File.Delete(filePath);

                model.OriginalHtml = Markdown.ToHtml(tr);
                model.OriginalText = tr.Replace("\r\n", "<br>");

                var translatedText = await Translate(tr, model);

                model.TranslatedHtml = Markdown.ToHtml(translatedText, pipeline);
                model.TranslatedText = translatedText.Replace("\r\n", "<br>");

                model.TranslatedPlainText = translatedText;
                model.from = OriginLanguage;
            }

            return(View("Index", model));
        }
Example #2
0
        private async Task <string> Translate(string text, TranslatedFileViewModel model)
        {
            uri = uri + "&to=" + model.to;

            System.Object[] body        = new System.Object[] { new { Text = text } };
            var             requestBody = JsonConvert.SerializeObject(body);

            using (var client = new HttpClient())
                using (var request = new HttpRequestMessage())
                {
                    request.Method     = HttpMethod.Post;
                    request.RequestUri = new Uri(uri);
                    request.Content    = new StringContent(requestBody, Encoding.UTF8, "application/json");
                    request.Headers.Add("Ocp-Apim-Subscription-Key", key);

                    var response = await client.SendAsync(request);

                    var responseBody = await response.Content.ReadAsStringAsync();

                    var result = JsonConvert.DeserializeObject <List <Translated> >(responseBody);

                    var textResult = result.FirstOrDefault().translations.FirstOrDefault(x => x.to.Equals(model.to)).text;
                    OriginLanguage = result.FirstOrDefault().detectedLanguage.language;

                    return(FilterResponse(textResult));
                }
        }
Example #3
0
        public IActionResult Index()
        {
            TranslatedFileViewModel model = new TranslatedFileViewModel();

            model.Languages.AddRange(LanguagesList());

            return(View(model));
        }