如何向ABP模板添加新语言



我正在使用免费的样板(ASP.NET CORE MVC& JQUERY)此站点https://aspnetboilerplate.com/templates

可以添加新的语言支持吗?

我已经在数据库中添加了本地化的.xml文件,更新" abplanguages"表,但它不起作用。我正在改变语言,但文字仍在英语中。已经用像" Espanol-Mexico"这样的样板运输的预定义语言的情况不起作用,但是当我选择"法语"时,页面被翻译。这很奇怪,因为在文档中说可以做到。https://aspnetboilerplate.com/pages/documents/localization#exting-localization-sources

我想知道它是免费的模板限制吗?

注入IApplicationLanguageManager接口并使用AddAsync()方法添加新语言。

private readonly IApplicationLanguageManager _applicationLanguageManager;

public LanguageAppService(
    IApplicationLanguageManager applicationLanguageManager,
    IApplicationLanguageTextManager applicationLanguageTextManager,
    IRepository<ApplicationLanguage> languageRepository)
{
    _applicationLanguageManager = applicationLanguageManager;
    _languageRepository = languageRepository;
    _applicationLanguageTextManager = applicationLanguageTextManager;
}

protected virtual async Task CreateLanguageAsync(ApplicationLanguageEditDto input)
{
    if (AbpSession.MultiTenancySide != MultiTenancySides.Host)
    {
        throw new UserFriendlyException(L("TenantsCannotCreateLanguage"));
    }
    var culture = CultureHelper.GetCultureInfoByChecking(input.Name);
    await _applicationLanguageManager.AddAsync(
        new ApplicationLanguage(
            AbpSession.TenantId,
            culture.Name,
            culture.DisplayName,
            input.Icon
        )
        {
            IsDisabled = !input.IsEnabled
        }
    );
}
public static class CultureHelper
{
    public static CultureInfo[] AllCultures = CultureInfo.GetCultures(CultureTypes.AllCultures);
    public static bool IsRtl => CultureInfo.CurrentUICulture.TextInfo.IsRightToLeft;
    public static bool UsingLunarCalendar = CultureInfo.CurrentUICulture.DateTimeFormat.Calendar.AlgorithmType == CalendarAlgorithmType.LunarCalendar;
    public static CultureInfo GetCultureInfoByChecking(string name)
    {
        try
        {
            return CultureInfo.GetCultureInfo(name);
        }
        catch (CultureNotFoundException)
        {
            return CultureInfo.CurrentCulture;
        }
    }
}

public class ApplicationLanguageEditDto
{
    public virtual int? Id { get; set; }
    [Required]
    [StringLength(ApplicationLanguage.MaxNameLength)]
    public virtual string Name { get; set; }
    [StringLength(ApplicationLanguage.MaxIconLength)]
    public virtual string Icon { get; set; }
    /// <summary>
    /// Mapped from Language.IsDisabled with using manual mapping in CustomDtoMapper.cs
    /// </summary>
    public bool IsEnabled { get; set; }
}

我弄清楚了。就我而言,这是不正确的构建动作属性。在vs右键单击本地化源文件: *.xml file -> Advanced -> Build action: Embedded resource

最新更新