/// <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);
            }
        }
示例#2
0
 /// <summary>
 /// Gets all phrases
 /// </summary>
 /// <returns>A collection of phrases</returns>
 public IEnumerable <RegisteredPhrase> GetAllPhrases()
 {
     return(_phraseRepository.GetAllPhrases());
 }