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)); } } } }
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); }