/// <summary> /// Формирует Single Translated запись /// </summary> /// <param name="line"></param> /// <param name="id"></param> /// <returns></returns> private DataEntry getSingleTranslatedEntry(string line, int id) { var textLine = line.GetMatch(EscapeSeqHelper.SingleTranslatedTextTemplate); var template = line.GetTemplateFromLine(textLine); var temp = new DefaultEntry(EntryType.SingleTranslated, id, template); temp.AddTextLine(new TextLine(temp, "ST1", Language.NotSpecified, "FROM_NATIVE", DateTime.Now, textLine)); return(temp); }
/// <summary> /// Считывает из входного потока Default-запись /// </summary> /// <param name="japLine"></param> /// <param name="reader"></param> /// <param name="id"></param> /// <returns></returns> private DataEntry getDefaultEntry(string japLine, StreamReader reader, int id) { // 1-я строка - на японском (оригинал) // Получам строку с переменными - заполнителями var lineWithoutVars = japLine.GetTemplateFromVars(_variables, Language.Jap); /// Получаем строчку текста var japTextLine = lineWithoutVars.GetLine(); // Получаем "шаблон" var template = lineWithoutVars.GetTemplateFromLine(japTextLine); var temp = new DefaultEntry(EntryType.Default, id, template); temp.AddTextLine(new TextLine(temp, "JAP1", Language.Jap, "FROM_NATIVE", DateTime.Now, japTextLine)); // Английским переводом считается 1-я закоментированная строчка после японской. // Остальные закоментированные строчки игнорируются bool englishTranslateFound = false; bool russianTranslateFound = false; while (true) { var nextLine = reader.ReadLine(); if (string.IsNullOrEmpty(nextLine)) { if (!russianTranslateFound) { throw new ArgumentException("Line MUST contain russian translate!"); } // Больше в этой группе строчек нет return(temp); } if (nextLine.IsMatchesToRegex(EscapeSeqHelper.CommentLineTemplate)) { if (englishTranslateFound) { continue; } // Строка с английским переводом englishTranslateFound = true; var engTextLine = nextLine.GetTextLine(Language.Eng); temp.AddTextLine(new TextLine(temp, "ENG1", Language.Eng, "FROM_NATIVE", DateTime.Now, engTextLine)); } else { // Найдена незакоментированная строка if (!englishTranslateFound) { // Английского перевода до сих пор не было найдено // throw new InvalidDataException("Can't find english translation"); } // Это русский перевод var rusTextLine = nextLine.GetTextLine(Language.Rus); temp.AddTextLine(new TextLine(temp, "RUS1", Language.Rus, "FROM_NATIVE", DateTime.Now, rusTextLine)); russianTranslateFound = true; break; } } return(temp); }