Automapper Mapping for Localization Resolver in a Multi-Language Website

和自甴很熟 提交于 2019-12-06 07:18:24

You can extract an interface like below:

public interface ILocalizable
{
    string Name { get; set; }
    string Name_PT { get; set; }
    string Name_FR { get; set; }
    string Name_EN { get; set; }
}

public class FuelDto : ILocalizable
{
    // Primary properties
    public int Id { get; set; }
    public string Name { get; set; }
    public string Name_PT { get; set; }
    public string Name_FR { get; set; }
    public string Name_EN { get; set; }
}

Then tune your resolver like below:

public class CultureResolver : ValueResolver<ILocalizable, string>
{
    protected override string ResolveCore(ILocalizable dto)
    {
        switch(Thread.CurrentThread.CurrentUICulture.TwoLetterISOLanguageName.ToUpperInvariant())
        {
            case "FR":
                return dto.Name_FR;
            case "EN":
                return dto.Name_EN;
        }
        return dto.Name_PT;
    }   
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!