/// <summary> /// Gets a phrase translation dictionary instance /// </summary> /// <returns>The phrase translation dictionary</returns> public PhraseTranslationDictionary GetDictionary() { if (RegisteredPhraseTranslatorFactory.CachedDictionary != null) { return(RegisteredPhraseTranslatorFactory.CachedDictionary); } else { var translator = new PhraseTranslationDictionary(); var languages = _languageRepository.GetAllLanguages().ToList(); var phrases = _phraseRepository.GetAllPhrases().ToList(); foreach (var phrase in phrases) { var translations = new Dictionary <Language, string>(); foreach (var translation in phrase.Translations.ToList()) { var language = ToLanguage ( translation.LanguageId ); translations.Add ( language, translation.TranslatedText ); } translator.Add ( phrase.PhraseText, translations ); } Language ToLanguage(Guid languageId) { var registeredLanguage = languages.FirstOrDefault ( l => l.Id == languageId ); if (registeredLanguage == null) { throw new KeyNotFoundException ( "The registered language was not found." ); } return(registeredLanguage.ToLanguage()); } RegisteredPhraseTranslatorFactory.CachedDictionary = translator; return(translator); } }
/// <summary> /// Gets all registered languages /// </summary> /// <returns>A collection of registered languages</returns> public IEnumerable <RegisteredLanguage> GetAllLanguages() { return(_languageRepository.GetAllLanguages()); }