internal TtsDocumentCyrillica(string docText, MultiLangStringRegioned multiLangText, string foreignLangCode,
                                      bool highlightWordsOnly = true, bool invert = false)
        {
            Text          = docText;
            MultiLangText = multiLangText;
            this.Lang     = foreignLangCode;

            if (highlightWordsOnly)
            {
                if (invert)
                {
                    HighlightRegions.AddRange(Utils.FindAllCyrillicWords(docText));
                }
                else
                {
                    HighlightRegions.AddRange(Utils.FindAllLatinWords(docText));
                }
            }
            else
            {
                // NOTE: the following can be used for debugging purposes e.g. to check TTSer
                foreach (var region in multiLangText.Regions)
                {
                    var isRu = region.Lang == TtsGlobals.LangCodeRussian;
                    if (isRu == invert)
                    {
                        HighlightRegions.Add(new WordHighlight(region.Start, region.Length));
                    }
                }
            }
        }
예제 #2
0
        public static MultiLangStringRegioned ParseCyrillicaText(string docText, string latinaLangCode)
        {
            var result       = new MultiLangStringRegioned(docText);
            var splitIndices = Utils.FindAllNonCyrillics(docText);
            var start        = 0;

            for (int i = 0; i < splitIndices.Length; i++)
            {
                var end = splitIndices[i];
                result.AddRegion(start, end - start, (i % 2 == 0) ? TtsGlobals.LangCodeRussian : latinaLangCode);
                start = end;
            }
            if (start < docText.Length - 1)
            {
                result.AddRegion(start, docText.Length - 1 - start, (result.Count % 2 == 0) ? TtsGlobals.LangCodeRussian : latinaLangCode);
            }
            return(result);
        }