/// <summary>
        /// Creates for language.
        /// </summary>
        /// <param name="culture">The culture.</param>
        /// <returns>Collection of prompts</returns>
        public TypePromptCollection CreateForLanguage(CultureInfo culture)
        {
            var prompts = new TypePromptCollection(culture);

            SaveLanguage(culture, prompts);
            _languages.Add(culture, prompts);
            return(prompts);
        }
        /// <summary>
        /// Create translation for a new language
        /// </summary>
        /// <param name="culture">Language to create</param>
        /// <param name="templateCulture">Language to use as a template</param>
        public void CreateLanguage(CultureInfo culture, CultureInfo templateCulture)
        {
            var prompts     = GetLanguage(templateCulture).Select(p => new TypePrompt(culture.LCID, p));
            var newLanguage = new TypePromptCollection(culture);

            newLanguage.AddRange(prompts);
            lock (_languages)
            {
                _languages[culture] = newLanguage;
            }
        }
        /// <summary>
        /// Load a language
        /// </summary>
        /// <param name="culture">Culture to get.</param>
        /// <returns>Collection if found; otherwise <c>null</c>.</returns>
        protected TypePromptCollection LoadLanguage(CultureInfo culture)
        {
            var filename = GetFullPath(culture);

            if (!File.Exists(filename))
            {
                return(null);
            }

            using (var stream = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
            {
                var prompts = new TypePromptCollection(culture);
                var items   = Deserialize(stream);
                prompts.AddRange(items);
                return(prompts);
            }
        }