Try your search with a different keyword or use * as a wildcard.
using Nop.Services.Localization;
using Nop.Web.Framework.Models;
namespace Nop.Web.Framework.Factories;
/// <summary>
/// Represents the base localized model factory implementation
/// </summary>
public partial class LocalizedModelFactory : ILocalizedModelFactory
{
#region Fields
protected readonly ILanguageService _languageService;
#endregion
#region Ctor
public LocalizedModelFactory(ILanguageService languageService)
{
_languageService = languageService;
}
#endregion
#region Methods
/// <summary>
/// Prepare localized model for localizable entities
/// </summary>
/// <typeparam name="T">Localized model type</typeparam>
/// <param name="configure">Model configuration action</param>
/// <returns>
/// A task that represents the asynchronous operation
/// The task result contains the list of localized model
/// </returns>
public virtual async Task<IList<T>> PrepareLocalizedModelsAsync<T>(Func<T, int, Task> configure = null) where T : ILocalizedLocaleModel
{
//get all available languages
var availableLanguages = await _languageService.GetAllLanguagesAsync(true);
//prepare models
var localizedModels = await availableLanguages.SelectAwait(async language =>
{
//create localized model
var localizedModel = Activator.CreateInstance<T>();
//set language
localizedModel.LanguageId = language.Id;
//invoke the model configuration action
if (configure != null)
await configure(localizedModel, localizedModel.LanguageId);
return localizedModel;
}).ToListAsync();
return localizedModels;
}
#endregion
}