public DefaultResourcesLocalizationDictionaryProvider(IDefaultResourceDictionarySettings settings,
                                                              ILocalizationDictionaryParser localizationDictionaryParser,
                                                              ILanguageProvider languageProvider = null)
        {
            _languageProvider             = languageProvider ?? new DefaultLanguageProvider();
            _settings                     = settings ?? throw new ArgumentNullException(nameof(settings));
            _localizationDictionaryParser = localizationDictionaryParser;

            _directoryPath  = settings.DefaultResourcesDirectory;
            _fileNameFormat = settings.DefaultResourceFileNameFormat;

            UpdateDirectoryFormat();
        }
        public LocalizationManager(ILocalizationManagerSettings settings,
                                   ILocalizationDictionaryProvider localizationDictionaryProvider,
                                   ILanguageProvider languageProvider,
                                   ILocalizationDictionaryParser localizationDictionaryParser)
        {
            _settings = settings ?? new LocalizationManagerSettings();
            _localizationDictionaryProvider = localizationDictionaryProvider ??
                                              new DefaultResourcesLocalizationDictionaryProvider(_settings,
                                                                                                 localizationDictionaryParser, languageProvider);

            _unknownKeyService = new UnknownKeyService(_settings.UnknownKeyPolitics, _settings.DefaultString);
            try
            {
                _dictionary = _localizationDictionaryProvider.LoadDictionary();
            }
            catch (DataException e)
            {
                if (_settings.TestMode)
                {
                    Debug.LogError($"{PackagePrefix} {e.Message}");
                }
            }
        }