Giter Club home page Giter Club logo

googletranslatefreeapi's Introduction

GoogleTranslateFreeApi

Api for free text translation using Google translate.

Badge
Target Framework .Net Standard 1.1
Nuget Nuget
License MIT

Main features:

  • Text corrections
  • Language corrections
  • Language auto detection
  • Transcriptions (original text, translated text)
  • Synonyms
  • Definitions + Examples
  • Extra translations
  • Proxy (Useful when getting a ban for a while)

Feature TranslateLiteAsync TranslateAsync
Text corrections + +
Language corrections + +
Language auto detection + +
Transcriptions + +
Synonyms - +
Definitions + Examples - +
Extra translations - +
See Also - +

Usage

Translation, transcription and text/language corrections

var translator = new GoogleTranslator();

Language from = Language.Auto;
Language to = GoogleTranslator.GetLanguageByName("Japanese");

TranslationResult result = await translator.TranslateLiteAsync("Hello. How are you?", from, to);

//The result is separated by the suggestions and the '\n' symbols
string[] resultSeparated = result.FragmentedTranslation;

//You can get all text using MergedTranslation property
string resultMerged = result.MergedTranslation;

//There is also original text transcription
string transcription = result.TranslatedTextTranscription; // Kon'nichiwa! Ogenkidesuka?

Language auto detection and correction

var result2 = await translator.TranslateLiteAsync("Drones", Language.Auto, Language.Czech);

foreach(LanguageDetection languageDetection in result2.LanguageDetections)
{
	Console.WriteLine(languageDetection);
}

// The output will be next. Double in brackets is confidence
// Spanish (0.61010)
// English (0.34365)

Language spanish = new Language("Spanish", "es"); // For the method, only the second parameter is important (ISO639)

result2 = await translator.TranslateLiteAsync("world", spanish, Language.Czech);
Console.WriteLine(result2.LanguageDetections.First()); // English (0.98828)
Console.WriteLine(result2.MergedTranslation) // мир

Text corrections

string misspellingsText = "The quik brown fox jumps ovver the lazy dog"

var english = new Language("English language", "en");
// you could also get language from Language static properties
// for example: Language.English or Language.Korean

// check language is valid for GoogleTranslator class
Console.WriteLine(GoogleTranslator.IsLanguageSupported(english)); 

var result3 = await translator.TranslateLiteAsync(misspellingsText, english, GoogleTranslator.GetLanguageByISO("ru"));

if(result3.Corrections.TextWasCorrected)
	Console.WriteLine(string.Join(",", result3.Corrections.CorrectedWords); // "quick", "over"
	
Console.WriteLine(result3.MergedTranslation) // "Быстрая коричневая лиса прыгает через ленивую собаку"

Synonyms, extra translations, definitions and so on.

GoogleTranslator translator = new GoogleTranslator();

var result4 = await translator.TranslateAsync("книга", Language.Russian, Language.English);

if(result.ExtraTranslations != null)
  Console.WriteLine(result.ExtraTranslations.ToString()); // ToString returns friendly for reading string
  

Example of ToString output:

Noun:
book: книга, книжка, журнал, книжечка, том, текст
volume: объем, том, громкость, книга, емкость, масса
Abbreviation:
bk: книга, назад, обратно

You can also get any part of the speech indently

foreach(ExtraTranslation item in result4.ExtraTranslations)
  Console.WriteLine($"{item.Phrase}: {String.Join(", ", item.PhraseTranslations)}"); 
  // just like item.ToString()

There are other translate information getting by the same principe

  • Definitions
  • Synonyms
  • See also

Google Translate can ban IP that sends too many requests at the same time. Ban lasts about a few hours, but you can use a Proxy

var proxy = new WebProxy(uri); // You also can use GoogleTranslateFreeApi.Proxy class for this
translator.Proxy = proxy;

LICENSE

Released under the MIT License.

This repository сontains part of the code from the library google-translate-token

googletranslatefreeapi's People

Contributors

grizley56 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

googletranslatefreeapi's Issues

Can I translate the text "html" page?

I have a "html" code page.
The page contains the text in "English".

Can the program "GoogleTranslateFreeApi" translate the text of the page into another language so that I get the "html" code of the page with the text in another language?
If this is not possible, could you give recommendations on how this can be implemented?

Translation failed when packaged added to Net Standard 2.0 project

System.Threading.Tasks.TaskCanceledException
HResult=0x8013153B
Message=A task was canceled.
Source=mscorlib
StackTrace:
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter1.GetResult() at GoogleTranslateFreeApi.GoogleKeyTokenGenerator.<GetNewExternalKeyAsync>d__17.MoveNext() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter1.GetResult()
at GoogleTranslateFreeApi.GoogleKeyTokenGenerator.d__16.MoveNext()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter1.GetResult() at GoogleTranslateFreeApi.GoogleTranslator.<GetTranslationResultAsync>d__26.MoveNext() at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) at System.Runtime.CompilerServices.TaskAwaiter1.GetResult()
at GoogleTranslateFreeApi.GoogleTranslator.d__24.MoveNext()
at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
at GoogleTrans.translater.d__0.MoveNext() in C:\Users\HMY\source\repos\stringCompare\GoogleTrans\translater.cs:line 21

This exception was originally thrown at this call stack:
[External Code]
GoogleTrans.translater.Trans() in translater.cs

Free?

How can this be free when google translate is not free?

The code is no longer functional ?

The code is no longer functional at startup I see this exception - System.NotSupportedException: 'The method is no longer valid, or something went wrong'

error: "TranslateLiteAsync" The specified method is not supported.

error: "TranslateLiteAsync" The specified method is not supported.
TranslationResult result = await translator.TranslateLiteAsync("Hello, how are you?", from, to);

/ 
using GoogleTranslateFreeApi;
// using TranslateResult;

namespace rsh
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private async void button1_Click(object sender, EventArgs e)
        {
            GoogleTranslator translator = new GoogleTranslator();
            // var translator = new GoogleTranslator();


            Language from = Language.Auto;
            // Language to = GoogleTranslator.GetLanguageByName("Japanese");
            //  "FullName": "Russian",
            // "ISO639": "ru"
            Language to = GoogleTranslator.GetLanguageByName("Russian");


            // TranslateResult result = await translator.TranslateLiteAsync("Hello. How are you?", from, to);
            TranslationResult result = await translator.TranslateLiteAsync("Hello, how are you?", from, to);
            

            //The result is separated by the suggestions and the '\n' symbols
            string[] resultSeparated = result.FragmentedTranslation;

            //You can get all text using MergedTranslation property
            string resultMerged = result.MergedTranslation;


            //There is also original text transcription
            string transcription = result.TranslatedTextTranscription; // Kon'nichiwa! Ogenkidesuka? ( Конничива! Ogenkidesuka?)


            richTextBox1.Text = resultSeparated.ToString() + "\r\n"
                                + "\r\n"
                                + "*** *** *** ****"
                                + resultMerged + "\r\n"
                                + "\r\n"
                                + "*** *** *** ****"
                                + transcription
                                ;
        }
    }
}

2018-10-14_18-48-11
2018-10-14_23-07-33

nuget package

Hello!

Currently exist a nuget package for the lib? Or if not exist plans to upload it as a package? :)

thanks! Is very awesome!

Can not convert Array to String exception

While using your library, when awaiting for the TranslateAsync method sometimes an exception is thrown:

Unhandled Exception: System.AggregateException: One or more errors occurred. (Can not convert Array to String.) ---> System.ArgumentException: Can not convert Array to String. at Newtonsoft.Json.Linq.JToken.op_Explicit(JToken value) at GoogleTranslateFreeApi.GoogleTranslator.GetMainTranslationInfo(JToken translationInfo, String[]& translate, String& originalTextTranscription, String& translatedTextTranscription) in D:\Temp Projects\GoogleTranslateFreeApi-master\GoogleTranslateFreeApi\GoogleTranslator.cs:line 345 at GoogleTranslateFreeApi.GoogleTranslator.ResponseToTranslateResultParse(String result, String sourceText, Language sourceLanguage, Language targetLanguage, Boolean additionInfo) in D:\Temp Projects\GoogleTranslateFreeApi-master\GoogleTranslateFreeApi\GoogleTranslator.cs:line 247 at GoogleTranslateFreeApi.GoogleTranslator.GetTranslationResultAsync(String originalText, Language fromLanguage, Language toLanguage, Boolean additionInfo) in D:\Temp Projects\GoogleTranslateFreeApi-master\GoogleTranslateFreeApi\GoogleTranslator.cs:line 232 at GoogleTranslateFreeApi.GoogleTranslator.TranslateAsync(String originalText, Language fromLanguage, Language toLanguage) in D:\Temp Projects\GoogleTranslateFreeApi-master\GoogleTranslateFreeApi\GoogleTranslator.cs:line 132 at GoogleTranslateFreeApi.Examples.Program.Translate(String text, String lang) in D:\Temp Projects\GoogleTranslateFreeApi-master\GoogleTranslateFreeApi.Examples\Program.cs:line 69 --- End of inner exception stack trace --- at System.Threading.Tasks.Task 1.GetResultCore(Boolean waitCompletionNotification) at GoogleTranslateFreeApi.Examples.Program.Main(String[] args) in D:\Temp Projects\GoogleTranslateFreeApi-master\GoogleTranslateFreeApi.Examples\Program.cs:line 42

no matter whether my own code is fired or your examples from GoogleTranslateFreeApi.Examples are used.

I tried to debug the issue and found out that sometimes JSON result from https://translate.google.com/translate_a/single
depending on the original text provided differs in size. So in your GetMainTranslationInfo method in this block of code

foreach (var item in translationInfo)
{
	if (item.Count() == 5)
		translations.Add(item.First.Value<string>());
	else
	{
		var transcriptionInfo = item;
		int elementsCount = transcriptionInfo.Count();
		if (elementsCount == 3)
		{
			translatedTextTranscription = (string)transcriptionInfo[elementsCount - 1];
		}
		else
		{
			if (transcriptionInfo[elementsCount - 2] != null)
				translatedTextTranscription = (string)transcriptionInfo[elementsCount - 2];
			else
				translatedTextTranscription = (string)transcriptionInfo[elementsCount - 1];

			originalTextTranscription = (string)transcriptionInfo[elementsCount - 1];
		}
	}
}

when json result [0] [0] 's length isn't 5 but for example 8 like in this case:

image

the check for if (item.Count() == 5) would not fire ending up with no translation, but
if (item.Count() >= 5) will.

I did not look much into it though, so maybe you can come up with something more accurate.

Thank you in advance.

TranslateLiteAsync Error

System.NotSupportedException
HResult=0x80131515
Message=The method is no longer valid, or something went wrong

at GoogleTranslateFreeApi.GoogleKeyTokenGenerator.d__16.MoveNext()
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at GoogleTranslateFreeApi.GoogleTranslator.d__26.MoveNext()
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at GoogleTranslateFreeApi.GoogleTranslator.d__22.MoveNext()
at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()

Hi i cant understant how to migrate to netstandard2.0

Thank you so much for this API...im trying to set it to my project...but im on Framework netstandard2.0...and you have 2 files for migrating to .Net Standard 1.1- .xml and .cs file...i cant understand where i have to create these files in my project...

How to increase the speed of text translation?

I apologize if I ask a lot of questions.
I have little programming experience.

I tried "salarcode / AutoResxTranslator" - link.
This application performs text translation faster than yours. It seems to me.
But I could be wrong.
Software did not check the speed of translation.

Maybe you will have the opportunity to help me?

Question.
1. Could you modify your application by analogy with "salarcode / AutoResxTranslator" to increase the speed of text translation?
If your application is running slower and I'm not mistaken about this.

Or could you help me with the following question
2. Could you help me with the solution of the question on "salarcode / AutoResxTranslator".
I used classes from the "salarcode / AutoResxTranslator" application in my application.
To translate the text, I made the usual class.
When I try to translate two copies of the text in one session, the following happens:

  • "Text_1" send to "_TranslateMain.cs" for translation;
  • in "txtDesc = result;" null is returned;
GTranslateService.TranslateAsync (
   text,
            lngSrc
            lngDest
            textTranslatorUrlKey
            , (success, result)
            =>
            {
                // SetResult (result);
                // IsBusy (false);
                txtDesc = result;
            });
  • "Text_2" is sent to "_TranslateMain.cs";
  • in "txtDesc = result;" returns "Text_1";

How to change "_TranslateMain.cs" to correctly get the translation result from "GTranslateService"?
Grid_uc.cs

_TranslateMain traslateText_cls;
 private void Grid_uc_Load(object sender, EventArgs e) // при загрузке формы
{
            // Перевод текста
            traslateText_cls = new _TranslateMain(); //             
}

// Присваиваем значение переменным. Заполняем ДатаТабле
// public async void VarAddValue()
public async Task<DataTable> VarAddValue()
{
 for (int i = 1; i <= 5; i++)
    {                
                        // Обращаемся к экземпляру репозитария
                        // var instanceRepo = resultRepo.Items[i];
                        instanceRepo = resultRepo.Items[i];
                        instanceRepoId = instanceRepo.Id;

                        descript = instanceRepo.Description; // описание репозитария краткое (которое под именем находится)                        
                        descrip_translate = traslateText_cls.TranslateText(descript);


                        var readme = await client_cur.Repository.Content.GetReadme(instanceRepoId);
                        var rawText = readme.Content;

                        readme_content = rawText.ToString(); // содержание "readme"                        
                        readme_content_translate = traslateText_cls.TranslateText(readme_content);
    }
}

_TranslateMain.cs

using System.Threading.Tasks;

//
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Windows.Forms;
// 
using AutoResxTranslator;

namespace rsh.Core.Translate
{
    class _TranslateMain
    {        
        public string txtDesc; // текст переведённый


        private readonly Dictionary<string, string> _languages = new Dictionary<string, string>
        {
                {"auto", "(Detect)"},
                {"af", "Afrikaans"},
                {"sq", "Albanian"},
                {"ar", "Arabic"},
                {"hy", "Armenian"},
                {"az", "Azerbaijani"},
                {"eu", "Basque"},
                {"be", "Belarusian"},
                {"bn", "Bengali"},
                {"bg", "Bulgarian"},
                {"ca", "Catalan"},
                {"zh-CN", "Chinese (Simplified)"},
                {"zh-TW", "Chinese (Traditional)"},
                {"hr", "Croatian"},
                {"cs", "Czech"},
                {"da", "Danish"},
                {"nl", "Dutch"},
                {"en", "English"},
                {"eo", "Esperanto"},
                {"et", "Estonian"},
                {"tl", "Filipino"},
                {"fi", "Finnish"},
                {"fr", "French"},
                {"gl", "Galician"},
                {"ka", "Georgian"},
                {"de", "German"},
                {"el", "Greek"},
                {"gu", "Gujarati"},
                {"ht", "Haitian Creole"},
                {"iw", "Hebrew"},
                {"hi", "Hindi"},
                {"hu", "Hungarian"},
                {"is", "Icelandic"},
                {"id", "Indonesian"},
                {"ga", "Irish"},
                {"it", "Italian"},
                {"ja", "Japanese"},
                {"kn", "Kannada"},
                {"km", "Khmer"},
                {"ko", "Korean"},
                {"lo", "Lao"},
                {"la", "Latin"},
                {"lv", "Latvian"},
                {"lt", "Lithuanian"},
                {"mk", "Macedonian"},
                {"ms", "Malay"},
                {"mt", "Maltese"},
                {"no", "Norwegian"},
                {"fa", "Persian"},
                {"pl", "Polish"},
                {"pt", "Portuguese"},
                {"ro", "Romanian"},
                {"ru", "Russian"},
                {"sr", "Serbian"},
                {"sk", "Slovak"},
                {"sl", "Slovenian"},
                {"es", "Spanish"},
                {"sw", "Swahili"},
                {"sv", "Swedish"},
                {"ta", "Tamil"},
                {"te", "Telugu"},
                {"th", "Thai"},
                {"tr", "Turkish"},
                {"uk", "Ukrainian"},
                {"ur", "Urdu"},
                {"vi", "Vietnamese"},
                {"cy", "Welsh"},
                {"yi", "Yiddish"}
        };

        void FillComboBoxes()
        {
            //cmbSrc.DisplayMember = "Value";
            //cmbSrc.ValueMember = "Key";

            //cmbDesc.DisplayMember = "Value";
            //cmbDesc.ValueMember = "Key";
            // lstResxLanguages.Items.Clear();

            //foreach (var k in _languages)
            //{
            //    cmbSrc.Items.Add(k);
            //    if (k.Key == "auto")
            //        continue;

            //    cmbDesc.Items.Add(k);

            //    // cmbSourceResxLng.Items.Add(k);
            //    // lstResxLanguages.Items.Add(k.Key, k.Value, -1);
            //}
            // cmbSrc.SelectedIndex = 0;
            // cmbDesc.Text = "English";
            // 
            // srcLang = "auto";
            // descLang = "Russian";
        }


        public string TranslateText(string text_str)
        {
            string lngSrc_str = "auto";
            string lngDest_str = "ru";
            // string text_str = textBox1.Text;

            var lngSrc = lngSrc_str; // язык "КОТОРЫЙ" нужно перевести 
            var lngDest = lngDest_str;  // язык "НА КОТОРЫЙ" нужно перевести
            var text = text_str; // текст для перевода

            // There is no longer a key to validate
            // Нет больше ключа для проверки
            var textTranslatorUrlKey = "";

            // IsBusy(true);

            GTranslateService.TranslateAsync(
                text,
                lngSrc,
                lngDest,
                textTranslatorUrlKey
                ,(success, result)
                =>
                {
                    // SetResult(result);
                    // IsBusy(false);
                    txtDesc = result;
                });

            return txtDesc;
        }
        void IsBusy(bool isbusy)
        {
            //if (this.InvokeRequired)
            //{
            //    this.BeginInvoke(new Action<bool>(IsBusy), isbusy);
            //    return;
            //}
            //else
            //{
            //    // tabMain.Enabled = !isbusy;
            //}
        }


        public void SetResult(string result)
        {
            #region MyRegion
            //// if (InvokeRequired)
            //// if (this.InvokeRequired)
            //{
            //    // this.BeginInvoke(new Action<string>(SetResult), result);
            //    // BeginInvoke(new Action<string>(SetResult), result);
            //    return;

            //}
            //else
            //{
            //    txtDesc = result; // переведённый текст
            //}

            #endregion

        }



    }
}

GTranslateService.cs

using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Text;
using System.Web;

namespace AutoResxTranslator
{
    public class GTranslateService
    {
        private const string RequestUserAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64; rv:55.0) Gecko/20100101 Firefox/55.0";
        private const string RequestGoogleTranslatorUrl = "https://translate.googleapis.com/translate_a/single?client=gtx&sl={0}&tl={1}&hl=en&dt=t&dt=bd&dj=1&source=icon&tk=467103.467103&q={2}";


        public delegate void TranslateCallBack(bool succeed, string result);
        public static void TranslateAsync(
            string text,
            string sourceLng,
            string destLng,
            string textTranslatorUrlKey,
            TranslateCallBack callBack)
        {
            var request = CreateWebRequest(text, sourceLng, destLng, textTranslatorUrlKey);

            request.BeginGetResponse(
                TranslateRequestCallBack,
                new KeyValuePair<WebRequest, TranslateCallBack>(request, callBack));
        }

        public static bool Translate(
            string text,
            string sourceLng,
            string destLng,
            string textTranslatorUrlKey,
            out string result)
        {
            var request = CreateWebRequest(text, sourceLng, destLng, textTranslatorUrlKey);
            try
            {
                var response = (HttpWebResponse)request.GetResponse();

                if (response.StatusCode != HttpStatusCode.OK)
                {
                    result = "Response is failed with code: " + response.StatusCode;
                    return false;
                }

                using (var stream = response.GetResponseStream())
                {
                    string output;
                    var succeed = ReadGoogleTranslatedResult(stream, out output);
                    result = output;
                    return succeed;
                }
            }
            catch (Exception ex)
            {
                result = ex.Message;
                return false;
            }
        }

        static WebRequest CreateWebRequest(
            string text,
            string lngSourceCode,
            string lngDestinationCode,
            string textTranslatorUrlKey)
        {
            text = HttpUtility.UrlEncode(text);

            var url = string.Format(RequestGoogleTranslatorUrl, lngSourceCode, lngDestinationCode, text);


            var create = (HttpWebRequest)WebRequest.Create(url);
            create.UserAgent = RequestUserAgent;
            create.Timeout = 50 * 1000;
            return create;
        }

        private static void TranslateRequestCallBack(IAsyncResult ar)
        {
            var pair = (KeyValuePair<WebRequest, TranslateCallBack>)ar.AsyncState;
            var request = pair.Key;
            var callback = pair.Value;
            HttpWebResponse response = null;
            try
            {
                response = (HttpWebResponse)request.EndGetResponse(ar);
                if (response.StatusCode != HttpStatusCode.OK)
                {
                    callback(false, "Response is failed with code: " + response.StatusCode);
                    return;
                }

                using (var stream = response.GetResponseStream())
                {
                    string output;
                    var succeed = ReadGoogleTranslatedResult(stream, out output);

                    callback(succeed, output);
                }
            }
            catch (Exception ex)
            {
                callback(false, "Request failed.\r\n" + ex.Message);
            }
            finally
            {
                if (response != null)
                {
                    response.Close();
                }
            }
        }

        /// <summary>
        ///  the main trick :)
        /// </summary>
        static bool ReadGoogleTranslatedResult(Stream rawdata, out string result)
        {
            string text;
            using (var reader = new StreamReader(rawdata, Encoding.UTF8))
            {
                text = reader.ReadToEnd();
            }

            try
            {
                dynamic obj = SimpleJson.DeserializeObject(text);

                var final = "";

                // the number of lines
                int lines = obj[0].Count;
                for (int i = 0; i < lines; i++)
                {
                    // the translated text.
                    final += (obj[0][i][0]).ToString();
                }
                result = final;
                return true;
            }
            catch (Exception ex)
            {
                result = ex.Message;
                return false;
            }
        }

    }

Can not convert Null to Double

I keep getting this exception when I send large texts to translate
I get it randomly and I can't really predict when it's thrown
this is the stack trace and I send the text I am sending as well

at Newtonsoft.Json.Linq.JToken.op_Explicit(JToken value)
at GoogleTranslateFreeApi.GoogleTranslator.GetTranslationCorrections(JToken response)
at GoogleTranslateFreeApi.GoogleTranslator.ResponseToTranslateResultParse(String result, String sourceText, Language sourceLanguage, Language targetLanguage, Boolean additionInfo)
at GoogleTranslateFreeApi.GoogleTranslator.GetTranslationResultAsync(String originalText, Language fromLanguage, Language toLanguage, Boolean additionInfo) at GoogleTranslateFreeApi.GoogleTranslator.TranslateLiteAsync(String originalText, Language fromLanguage, Language toLanguage)
at FreeTranslatorApiRest.Controllers.TranslateController.TranslateLongText(TranslationObject translationObject, String targetLang, String sourceLang) in {MyWorkSpace}\TranslateController.cs:line 142"

the text I am sending :
sample.txt

Not working

As I understand google changed its API (or link) and this nuget now is obsolete, check it, please.

Never a correct translation

Unfortunately i am unable to produce a single correct translation on any language i have tried.
The results is always related, but never even close.

await error in c# winForm application

The 'await' operator can only be used within an async method. Consider marking this method with the 'async' modifier and changing its return type to 'Task'.

image

"TranslateResult". Error "Could not find the type or name of the "TranslateResult" namespace   (perhaps there is no using directive or an assembly reference)."

"TranslateResult". Error "Could not find the type or name of the "TranslateResult" namespace   (perhaps there is no using directive or an assembly reference)."

How to fix the error?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

// 
using GoogleTranslateFreeApi;
// susing TranslateResult;

namespace rsh
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private async void button1_Click(object sender, EventArgs e)
        {
            // GoogleTranslator translator = new GoogleTranslator();
            var translator = new GoogleTranslator();

            Language from = Language.Auto;
            // Language to = GoogleTranslator.GetLanguageByName("Japanese");
            Language to = GoogleTranslator.GetLanguageByName("ru");

            // TranslateResult result = await translator.TranslateLiteAsync("Hello. How are you?", from, to);
            // TranslateResult result = await translator.TranslateLiteAsync («Привет, как вы?», От, до);
            // var result = await translator.TranslateLiteAsync("Hello. How are you?", from, to);
            TranslateResult result = await translator.TranslateLiteAsync("Hello. How are you?", from, to);

            //The result is separated by the suggestions and the '\n' symbols
            // Результат разделяется предложениями и символами '\ n'
            string[] resultSeparated = result.FragmentedTranslation;

            //You can get all text using MergedTranslation property
            // Вы можете получить весь текст, используя свойство MergedTranslation
            string resultMerged = result.MergedTranslation;


            //There is also original text transcription
            // Существует также оригинальная транскрипция текста
            string transcription = result.TranslatedTextTranscription; // Kon'nichiwa! Ogenkidesuka? ( Конничива! Ogenkidesuka?)

        }
    }
}

2018-09-29_14-02-53

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.