首页 > 其他分享 >ABP与BootstrapBlazor 本地化相关处理

ABP与BootstrapBlazor 本地化相关处理

时间:2023-06-21 10:22:25浏览次数:36  
标签:assembly 本地化 factory ret ABP BootstrapBlazor null

最近研究ABP与BootstrapBlazor搭配使用。
但涉及到本地化文件格式,及处理上,两者不同。但各有千秋。
同CRUD下:ABP是有创建、修改、查询、显示等多个模型。但是BootstrapBlazor只需一个模型就能处理所有。
BootstrapBlazor很多组件是根据模型自动解析生成编辑组件。也只适配自己的本地化文件格式。如果想体现多业务模型这时候,就得创建好几个基本一模一样本地化文件内容。
想着极限偷懒的原则,在请教BootstrapBlazor作者后。经过多次研究,在此代码中添加一段代码即可。

public static IStringLocalizer? GetStringLocalizerFromService(Assembly assembly, string typeName) => assembly.IsDynamic
        ? null
        : Instance.GetOrCreate($"{nameof(GetStringLocalizerFromService)}-{CultureInfo.CurrentUICulture.Name}-{assembly.GetName().Name}-{typeName}", entry =>
    {
        IStringLocalizer? ret = null;
        var factories = Instance.Provider.GetServices<IStringLocalizerFactory>();
        if (factories != null)
        {
            var factory = factories.LastOrDefault(a => a is not JsonStringLocalizerFactory);
            if (factory != null)
            {
                var type = assembly.GetType(typeName);
                if (type != null)
                {
                    ret = factory.Create(type);

                    #region BB各组件 兼容Abp本地化
                    if (ret.GetType().FullName == "Microsoft.Extensions.Localization.ResourceManagerStringLocalizer")
                    {
                        var fType = factory.GetType();
                        if (fType.Name == "AbpStringLocalizerFactory")
                        {
                            ret = (IStringLocalizer)fType.InvokeMember("CreateDefaultOrNull", BindingFlags.Default | BindingFlags.InvokeMethod, null, factory, null);
                        }
                    }
                    #endregion
                }
            }
        }
        return ret;
    });

以上为本人一厢情愿想法,如有想法雷同,可借鉴参考。

标签:assembly,本地化,factory,ret,ABP,BootstrapBlazor,null
From: https://www.cnblogs.com/HUGO_CM/p/17495564.html

相关文章

  • ChatGPT小型平替之ChatGLM-6B本地化部署、接入本地知识库体验
    本文期望通过本地化部署一个基于LLM模型的应用,能让大家对构建一个完整的应用有一个基本认知。包括基本的软硬环境依赖、底层的LLM模型、中间的基础框架及最上层的展示组件,最终能达到在本地零编码体验的目的。一、ChatGLM-6B模型介绍https://github.com/THUDM/ChatGLM-6B[Star......
  • abp 动态切换连接字符串并执行sql
    abp动态切换连接字符串并执行sql仓储层1//创建DbContextOptionsBuilder实例2varoptionsBuilder=newDbContextOptionsBuilder<MicroServiceDbContext>();34//设置连接字符串5optionsBuilder.UseSqlServ......
  • 【机译】ABP Helper Methods
    在编码时,我们经常使用扩展方法和辅助方法。它们帮助我们以声明的方式实现通用操作。我们使用它们将文本分成几行,按条件查询集合,从一种类型转换为另一种类型,以及用于许多其他目的……在本文中,我想展示ABP框架定义和使用的一些有用的扩展方法。我个人在日常代码中经常使用它们,它们......
  • ABP点滴:API无权访问资源时,返回 PolicyName 信息
    ABP无权访问API时,返回的是403Forbidden和重定向Localtion,但不知道具体是哪个Policy受阻。整改思路:重写MethodInvocationAuthorizationService,抛出AbpAuthorizationException异常时附带PolicyName重写DefaultAbpAuthorizationExceptionHandler,在http响应头中增加上......
  • ABP框架中UnitOfWorkManager.Current.SetTenantId()并不是修改AbpSession.TenantId的
    1.结论UnitOfWorkManager.Current.SetTenantId()修改的是ABP过滤器中使用的TenantId,并不会修改AbpSession.TenantId代码演示:2.关于UnitOfWorkManager.Current.SetTenantId()方法的作用前提:ABP框架是是支持多租户的,对于单数据库的多租户设计,需要通过TenantId来区分宿主和......
  • ABP入门教程4 - 初始化运行
    点这里进入ABP入门教程目录 编译解决方案重新生成解决方案,确保生成成功。连接数据库打开JD.CRS.Web.Host/appsettings.json,修改数据库连接设置ConnectionStrings.打开JD.CRS.Web.Host/appsettings.json,做同样修改.   迁移数据库方法一设置JD.CRS.Web.Mvc为启始项目打开工具/......
  • ABP入门教程3 - 解决方案
    点这里进入ABP入门教程目录 创建项目点这里进入ABP启动模板 如图操作,我们先生成一个基于.NETCore的MPA(多页面应用).点击"Createmyproject!"即可创建项目. 解读项目展示层(JD.CRS.Web.Mvc)提供一个用户界面,实现用户交互操作。ASP.NETCoreMVC(模型-视图-控制器)可以视为展示层......
  • ABP入门教程5 - 界面调整
    点这里进入ABP入门教程目录 调整前调整后调整项页面标题把favicon.ico替换为指定LogoJD.CRS.Web.Mvc\wwwroot\favicon.ico顶部工具栏把logo.png替换为指定LogoJD.CRS.Web.Mvc\wwwroot\images\logo.png更新Layout JD.CRS.Web.Mvc\Views\Shared\_Layout.cshtml 左侧菜单栏调整用户......
  • ABP入门教程2 - 体系架构
    点这里进入ABP入门教程目录 介绍应用程序代码库的分层是一种广泛接受的技术,可帮助降低复杂性并提高代码可重用性。为了实现分层体系结构,ASP.NETBoilerplate遵循域驱动设计的原理。DDD分层体系架构领域驱动设计(DDD:Domain-DrivenDesign)有四个基本层:展示层:为用户提供界面。使用......
  • ABP入门教程6 - 领域层创建实体
    点这里进入ABP入门教程目录 创建实体在领域层(即JD.CRS.Core)下新建文件夹Entitys//用以存放实体对象添加一个实体类Course.cs//课程信息1usingAbp.Domain.Entities;2usingAbp.Domain.Entities.Auditing;3usingAbp.Timing;4usingSystem;5usingSystem.Collecti......