コード例 #1
0
ファイル: FbuDataLoader.cs プロジェクト: fxMem/FBU
        /// <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);
        }
コード例 #2
0
ファイル: FbuDataLoader.cs プロジェクト: fxMem/FBU
        /// <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);
        }