public bool containsCongruents(ISO639[] targets)
        {
            ISO639 last = targets[0];

            for (int i = 1; i < targets.Length; i++)
            {
                if (last.Value == targets[i].Value)
                {
                    return(true);
                }
                last = targets[i];
            }
            return(false);
        }
示例#2
0
        // ISO369-3 codes: http://www.sil.org/iso639-3/codes.asp
        public static IPostProcessor createProcessor(ISO639 code)
        {
            IPostProcessor processor;

            switch (code)
            {
                //            case eng:
                //                processor = new EngPP();
                //                break;
                case ISO639.vie:
                    processor = new ViePP();
                    break;
                default:
                    throw new Exception(code.ToString());
            }

            return processor;
        }
示例#3
0
        // ISO369-3 codes: http://www.sil.org/iso639-3/codes.asp


        public static IPostProcessor createProcessor(ISO639 code)
        {
            IPostProcessor processor;

            switch (code)
            {
            //            case eng:
            //                processor = new EngPP();
            //                break;
            case ISO639.vie:
                processor = new ViePP();
                break;

            default:
                throw new Exception(code.ToString());
            }

            return(processor);
        }
示例#4
0
        public async Task <Translation> GetTranslation(string text, ISO639 source, ISO639 target)
        {
            string key = null;             //Use your own key, thanks. Also, don't store it in a string.

            var uri = new Uri($"https://translation.googleapis.com/language/translate/v2?key={key}");

            var postData = new JsonObject();

            postData.Add("source", JsonValue.CreateStringValue(source.Value));
            postData.Add("target", JsonValue.CreateStringValue(target.Value));

            var queryArray = new JsonArray();

            queryArray.Add(JsonValue.CreateStringValue(text));
            postData.Add("q", queryArray);

            var json = new StringContent(
                postData.ToString(),
                Encoding.UTF8, "application/json"
                );

            var response = await client.PostAsync(uri, json);

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

            if (!response.IsSuccessStatusCode)
            {
                return(new Translation(null, target));
            }

            var responseJson = JsonValue.Parse(responseText).GetObject();

            var responseTranslation = responseJson["data"].GetObject()["translations"].GetArray()[0].GetObject()["translatedText"].GetString();

            responseTranslation = System.Net.WebUtility.HtmlDecode(responseTranslation);

            return(new Translation(responseTranslation, target));
        }
示例#5
0
        async Task <IEnumerable <Translation[]> > ITranslationService.GetSuperTranslation(string text, ISO639 source, int threads, int layers)
        {
            var translationThreads = new List <Translation[]>();
            var languages          = LanguageManager.GetAllLanguages();


            for (int i = 0; i < threads; i++)
            {
                var targets = LanguageManager.GetRandomTargets(
                    random,
                    languages,
                    source.Language,
                    layers
                    );

                var translations = new Translation[targets.Length];

                translations[0] = await GetTranslation(text, source, targets[0]);

                if (translations[0].Text == null)
                {
                    return(null);
                }

                for (int i2 = 1; i2 < translations.Length; i2++)
                {
                    var translatedText = await GetTranslation(
                        translations[i2 - 1].Text,
                        translations[i2 - 1].ISO639,
                        targets[i2]
                        );

                    if (translatedText.Text == null)
                    {
                        return(null);
                    }

                    translations[i2] = new Translation(
                        translatedText.Text, targets[i2]
                        );
                }

                translationThreads.Add(translations);
            }

            return(translationThreads);
        }
示例#6
0
 Task <Translation> ITranslationService.GetTranslation(string text, ISO639 source, ISO639[] targets)
 {
     throw new NotImplementedException();
 }
示例#7
0
 async Task <Translation> ITranslationService.GetTranslation(string text, ISO639 source, ISO639[] targets)
 {
     return(new Translation(text, targets[targets.Length - 1]));
 }
示例#8
0
 async Task <Translation> ITranslationService.GetTranslation(string text, ISO639 source, ISO639 target)
 {
     return(new Translation(text, target));
 }