首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在ABP模板中添加新的语言?

如何在ABP模板中添加新的语言?
EN

Stack Overflow用户
提问于 2018-12-20 16:58:33
回答 2查看 1.3K关注 0票数 0

我正在使用这个站点的免费样板(ASP.NET Core & jQuery),https://aspnetboilerplate.com/Templates

是否可以增加新的语言支持?

我已经添加了本地化的.xml文件,在数据库中更新了‘abplanguage’表,但是它不起作用。我正在改变语言,但文本仍然用英语。同样的情况下,预先定义的语言已经随样板,如‘埃斯潘诺-墨西哥’不起作用,但当我选择‘法语’的网页是翻译的。这很奇怪,因为文档中说这是可以做到的。https://aspnetboilerplate.com/Pages/Documents/Localization#extending-localization-sources

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-14 10:48:40

我想明白了。在我的例子中,它是不正确的生成操作属性。在VS中右键单击本地化源文件:*.xml file -> Advanced -> Build action: Embedded resource

票数 -1
EN

Stack Overflow用户

发布于 2019-01-08 10:28:14

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

代码语言:javascript
复制
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; }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53873025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档