// Получает перевод (если таковой есть) для фразы, в которой содержится заданное слово. Так как фраза для слова может быть // Только одна то тут либо будет ее перевод либо будет 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); }
// Получает перевод (если таковой есть) для заданного слова. То есть перевод самого слова, без фразы 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); }