Как добавить новый язык в шаблон ABP? - PullRequest
0 голосов
/ 20 декабря 2018

Я использую бесплатный шаблон (ASP.NET Core MVC & jQuery) с этого сайта https://aspnetboilerplate.com/Templates

Возможно ли добавить поддержку нового языка?

Я уже добавил локализованный.XML-файл, обновите таблицу «abplanguages» в базе данных, но она не работает.Я меняю язык, но текст по-прежнему на английском.Та же самая ситуация с предопределенными языками, уже поставляемыми с образцом как «espanol-mexico», не работает, но когда я выбираю «французский», страница переводится.Это странно, потому что в документации сказано, что это можно сделать.https://aspnetboilerplate.com/Pages/Documents/Localization#extending-localization-sources

Интересно, это ограничение бесплатного шаблона?

Ответы [ 2 ]

0 голосов
/ 14 января 2019

Я понял это.В моем случае это было неправильное свойство build build.В VS щелкните правой кнопкой мыши на исходном файле локализации: *.xml file -> Advanced -> Build action: Embedded resource.

0 голосов
/ 08 января 2019

введите 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; }
}
...