Ejemplo n.º 1
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.º 2
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);
        }