public Dictionary <string, LiteLanguageUnit> getLanguagesList()
        {
            Dictionary <string, LiteLanguageUnit> langs = new Dictionary <string, LiteLanguageUnit>();

            foreach (string filePath in Directory.GetFiles(FullPath))
            {
                if (Path.GetExtension(filePath) != ".txt")
                {
                    continue;                                        //only accept txt files
                }
                string fileName = Path.GetFileNameWithoutExtension(filePath);

                LiteLanguageUnit element = new LiteLanguageUnit();

                element.filePath = filePath;
                element.fileName = fileName;
                CultureInfo ci = GetCultureInfo(fileName);
                element.DisplayName = (ci == null ? fileName : ci.NativeName);

                if (!langs.TryAdd(element.DisplayName, element))
                {
                    BetterLanguagesPlugin.log.LogWarning("Duplicate of language:" + element.DisplayName);
                    BetterLanguagesPlugin.log.LogInfo("Discarded new entry.");
                }
            }
            return(langs);
        }
        public FullLanguageUnit GetLang(LiteLanguageUnit lite)
        {
            FullLanguageUnit full = null;

            using (StreamReader streamReader = File.OpenText(lite.filePath))
            {
                BetterLanguagesPlugin.log.LogInfo(lite.filePath);
                full = new FullLanguageUnit(streamReader);
            }
            return(full);
        }
        /// <summary>
        /// Sets language corresponding to the same title.
        /// </summary>
        /// <param name="langName">language name to be set</param>
        public static void SetLanguage(string langName)
        {
            LiteLanguageUnit lite = null;

            if (AllLanguages.TryGetValue(langName, out lite))
            {
                BetterLanguagesPlugin.log.LogMessage("Putain ça marche ou quoi ?");
                CurrentLanguage     = loader.GetLang(lite);
                CurrentLanguageName = langName;
            }
        }
/*		public LanguageManager() {
 *                      managers.Add(this);
 *              }*/

/*		public static LanguageManager Start()
 *              {
 *                      LanguageManager Instance = new LanguageManager();
 *                      Instance.ReloadLanguages();
 *                      return Instance;
 *              }*/

        /// <summary>
        /// In case you See issues, you may call this function so that the data be reset
        /// </summary>
        public static void ReloadLanguages()
        {
            loader.LoadLanguages();
            AllLanguages = loader.getLanguagesList();

            LiteLanguageUnit lite        = null;
            string           FallbackKey = PluginSingleton <BetterLanguagesPlugin> .Instance.FallBackLanguage.Value;
            CultureInfo      ci          = LanguageLoader.GetCultureInfo(FallbackKey);

            if (ci == null || !AllLanguages.TryGetValue(ci.NativeName, out lite))
            {
                AllLanguages.TryGetValue(FallbackKey, out lite);
            }

            FallbackLanguage = loader.GetLang(lite);
            if (CurrentLanguage == null)
            {
                CurrentLanguage = FallbackLanguage;
            }
        }