/// <summary>
        ///     Adds the localizations.
        /// </summary>
        /// <param name="localizations">The localizations.</param>
        /// <param name="loadMode">The load mode.</param>
        /// <param name="conflictResolution">The conflict resolution.</param>
        /// <exception cref="DuplicateNameException">A localization already exists in [{Locale}] for the key [{localization.Key}]!</exception>
        internal void AddLocalizations(Dictionary <string, string> localizations, LocalizationLoadMode loadMode = LocalizationLoadMode.Truncate, ConflictResolution conflictResolution = ConflictResolution.RaiseException)
        {
            if (loadMode == LocalizationLoadMode.Truncate)
            {
                ClearCache();
            }

            foreach (var localization in localizations)
            {
                switch (conflictResolution)
                {
                case ConflictResolution.Override:
                    _cache[localization.Key] = localization.Value;
                    break;

                case ConflictResolution.RaiseException:
                case ConflictResolution.Skip:
                    if (_cache.ContainsKey(localization.Key))
                    {
                        if (conflictResolution == ConflictResolution.RaiseException)
                        {
                            throw new DuplicateNameException($"A localization already exists in [{Locale}] for the key [{localization.Key}]!");
                        }

                        break;
                    }

                    _cache[localization.Key] = localization.Value;
                    break;
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Adds the localizations.
        /// </summary>
        /// <param name="localizations">The localizations.</param>
        /// <param name="locale">The locale. Defaults to the CurrentLocale.</param>
        /// <param name="loadMode">The load mode. Defaults to LocalizationLoadMode.Truncate.</param>
        /// <param name="conflictResolution">The conflict resolution. Defaults to ConflictResolution.RaiseException.</param>
        /// <exception cref="KeyNotFoundException">The locale [{actualLocale}] does not exist!</exception>
        public void AddLocalizations(Dictionary <string, string> localizations, string locale = null, LocalizationLoadMode loadMode = LocalizationLoadMode.Truncate, ConflictResolution conflictResolution = ConflictResolution.RaiseException)
        {
            // let's make sure we have a locale to load to...
            var actualLocale = GetAndCheckActualLocale(locale);

            // assign the loaded localizations as required
            _locales[actualLocale.Item1].AddLocalizations(localizations, loadMode, conflictResolution);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Loads the localization.
        /// </summary>
        /// <param name="file">The file.</param>
        /// <param name="locale">The locale. Defaults to the CurrentLocale.</param>
        /// <param name="loadMode">The load mode. Defaults to LocalizationLoadMode.Truncate.</param>
        /// <param name="conflictResolution">The conflict resolution. Defaults to ConflictResolution.RaiseException.</param>
        /// <param name="enableMachineTranslation">Whether to enable machine translations.</param>
        /// <exception cref="KeyNotFoundException">The locale [{actualLocale}] does not exist!</exception>
        public void LoadLocalization(Stream file, string locale = null, bool autoAddLocale = false, LocalizationLoadMode loadMode = LocalizationLoadMode.Truncate, ConflictResolution conflictResolution = ConflictResolution.RaiseException, bool enableMachineTranslation = false)
        {
            if (LocalizationLoader == null)
            {
                throw new Exception("Localization loader is not configured! Please create a localization loader when initializing the LocalizationSystem or attach it to the LocalizationSystem.Localization property.");
            }

            // let's make sure we have a locale to load to...
            var actualLocale = GetAndCheckActualLocale(locale, !autoAddLocale);

            if (!actualLocale.Item2 && autoAddLocale)
            {
                AddLanguage(actualLocale.Item1, DefaultLocalization, ConflictResolution.Skip, enableMachineTranslation);
            }

            // run the loader against the file contents
            var localizations = LocalizationLoader.LoadLocalizationFromFile(file);

            // assign the loaded localizations as required
            AddLocalizations(localizations, actualLocale.Item1, loadMode, conflictResolution);
        }