public void Translate(string fromlanguage, string tolanguage)
        {
            Dictionary <int, SrtUtterance> ToDict = new Dictionary <int, SrtUtterance>();

            Parallel.ForEach(SrtContent, (srtutterance) =>
            {
                SrtUtterance toutterance = new SrtUtterance();
                toutterance           = srtutterance.Value;
                toutterance.utterance = TranslationServices.Core.TranslationServiceFacade.TranslateString(srtutterance.Value.utterance, fromlanguage, tolanguage, "text/plain");
                ToDict.Add(srtutterance.Key, toutterance);
            });
            _langcode  = tolanguage;
            SrtContent = ToDict;        //Replace the master collection with the translated version.
        }
Example #2
0
        /// <summary>
        /// Load the SRT file into the internal document format, a dictionary.
        /// Key of the dictionary is the utterance number.
        /// </summary>
        /// <param name="srtdocument">A string containing the SRT document</param>
        /// <param name="langcode">The language code of the document</param>
        /// <returns>Count of utterances</returns>
        public int LoadSRT(string srtdocument, string langcode)
        {
            _langcode = langcode;
            string[] srt            = srtdocument.Split('\n');
            int      lineindex      = 0;
            int      utteranceindex = 0;

            while (lineindex < srt.Length)
            {
                srt[lineindex] = srt[lineindex].Trim();
                try
                {
                    utteranceindex = Convert.ToInt16(srt[lineindex]);
                }
                catch
                {
                    lineindex++;        // skip line and move on
                    continue;
                }
                if (utteranceindex > 0)
                {
                    SrtUtterance srtutterance = new SrtUtterance();
                    srtutterance.uttno = utteranceindex;
                    lineindex++;
                    srtutterance.timefromto = srt[lineindex];
                    lineindex++;
                    srtutterance.utterance = string.Empty;
                    srtutterance.spanlines = 0;
                    while (srt[lineindex].Trim().Length > 0)
                    {
                        srtutterance.utterance += srt[lineindex];
                        //add a space between the lines for languages that use space
                        if (!nonspacelanguages.Contains(langcode.ToLowerInvariant()))
                        {
                            srtutterance.utterance += " ";
                        }
                        lineindex++;
                        srtutterance.spanlines++;
                    }
                    srtutterance.utterance = srtutterance.utterance.Replace("\r", string.Empty);
                    SrtContent.Add(utteranceindex, srtutterance);
                }
            }
            return(SrtContent.Count);
        }