Ejemplo n.º 1
0
        public Article(Workspace workspace, WorkspaceRepository repository, string articleName)
        {
            m_workspace = workspace;
            m_repository = repository;

            Name = articleName;

            // Запрашиваем текст статьи у БД
            WorkspaceRepository.FinishedText originalFinishedText = m_repository.GetArticleText(Name);

            // Создаем оригинальный текст статьи
            OriginalText = new TextInLanguage(workspace.Language.Code, originalFinishedText.text, originalFinishedText.finished);

            CurrentArtisticalTranslation = null;

            UpdateTranslationUnits();

        }
Ejemplo n.º 2
0
 public TranslationUnit(TextInLanguage.SyntaxLayout.Word[] originalPhrase)
 {
     OriginalPhrase = originalPhrase;
 }
        void BuildUniversal_FinishWord(TextInLanguage.SyntaxLayout.Sentence sentence, ref string word, int startIndex, int endIndex)
        {
            if (word != string.Empty)
            {
                var props = new TextInLanguage.SyntaxLayout.Word.Properties();

                sentence.AddWord(word, startIndex, endIndex, props);
                word = string.Empty;
            }
        }
Ejemplo n.º 4
0
        // Получает перевод (если таковой есть) для фразы, в которой содержится заданное слово. Так как фраза для слова может быть
        // Только одна то тут либо будет ее перевод либо будет null, в случае если фразы у этого слова нет
        public TranslationUnit GetPhraseTranslation(string languageCode, TextInLanguage.SyntaxLayout.Word wordInPhrase)
        {
            if (wordInPhrase == null)
                return null;

            // Получаем для заданного языка все еденицы перевода
            List<TranslationUnit> translationLanguageUnits;
            bool languageExists = m_translationUnits.TryGetValue(languageCode, out translationLanguageUnits);
            Debug.Assert(languageExists);

            // Пробегаем все еденицы перевода для заданного языка
            foreach (TranslationUnit translationUnit in translationLanguageUnits)
            {
                // Возвратим перевод если перевод идет для фразы (более 1го слова) и перевод содержит заданное слово
                if (translationUnit.OriginalPhrase.Length > 1 &&
                    wordInPhrase.FirstIndex >= translationUnit.OriginalPhrase[0].FirstIndex &&
                    wordInPhrase.LastIndex <= translationUnit.OriginalPhrase[translationUnit.OriginalPhrase.Length - 1].LastIndex &&
                    translationUnit.OriginalPhrase.Contains(wordInPhrase))
                {
                    return translationUnit;
                }
            }

            return null;
        }
Ejemplo n.º 5
0
        // Получает перевод (если таковой есть) для заданного слова. То есть перевод самого слова, без фразы
        public TranslationUnit GetWordTranslation(string languageCode, TextInLanguage.SyntaxLayout.Word word)
        {
            if (word == null)
                return null;

            // Получаем для заданного языка все еденицы перевода
            List<TranslationUnit> translationLanguageUnits;
            bool languageExists = m_translationUnits.TryGetValue(languageCode, out translationLanguageUnits);
            Debug.Assert(languageExists);

            // Пробегаем все еденицы перевода для заданного языка
            foreach (TranslationUnit translationUnit in translationLanguageUnits)
            {
                // Возвратим перевод если он состоит из 1го слова и это слово совпадает с заданным
                if (translationUnit.OriginalPhrase.Length == 1 && translationUnit.OriginalPhrase[0].Equals(word))
                    return translationUnit;
            }

            return null;
        }
Ejemplo n.º 6
0
        // Открывает художественный перевод по заданному языку. Если язык не присутсвует в списке языков для перевода, либо передан null, то 
        // CurrentArtisticalTranslation будет установлен в null, в другом случае в CurrentArtisticalTranslation будет открыт перевод либо пустой вариант перевода (добавление нового перевода)
        public void OpenArtisticalTranslation(string languageCode)
        {
            // Если заданный язык null, либо не является языком для перевода
            if (languageCode == null || m_workspace.TranslationLanguages.First(lang => lang.Code == languageCode) == null)
            {
                CurrentArtisticalTranslation = null;
                return;
            }

            WorkspaceRepository.FinishedText finishedText = m_repository.GetArtisticalTranslaionText(Name, languageCode);

            // В случае, если перевода для этого языка еще нет, считаем как будто он есть, но с пустым текстом
            if (finishedText.text == null)
            {
                finishedText.text = string.Empty;
                finishedText.finished = false;
            }

            // Создаем текущий текст перевода
            CurrentArtisticalTranslation = new TextInLanguage(languageCode, finishedText.text, finishedText.finished);
        }