ABP提供的启动模板, 默认使用是英文:

虽然可以通过右上角的菜单切换成中文, 但是对于国内项目来说, 默认使用中文是很正常的需求.

本文介绍了如何实现默认语言的几种方法, 希望能对ABP爱好者有所帮助, Let's begin!

前期准备

使用ABP CLI创建一个名为AbpStudy的ASP.NET MVC项目:

abp new AbpStudy

关于MVC的启动模板可以看文档, 这里就不赘述.

使用ABP版本的是当前最新的v0.19, 后续版本应该也适用

方法1: 通过服务设置

该方法参考了此回答, 谢谢@maliming.

  1. 编辑AbpStudy.Web工程下的Startup.cs文件, 在Configure方法的开始增加一行代码:
        public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
{
app.ApplicationServices.GetService<ISettingDefinitionManager>().Get(LocalizationSettingNames.DefaultLanguage).DefaultValue = "zh-Hans"; // 默认使用中文
app.InitializeApplication();
}

该方法首先获取了SettingDefinitionManager的服务实例, 然后调用Get方法获取了默认语言的SettingDefinition, 然后设置了默认值"zh-Hans", 即中文.

运行, 就会发现默认语言已经变成中文了:

怎么样, 非常简单吧?

关于ABP的Setting, 现在官方的文档还未写完. 等待官方文档完善后我会更新到文章里

2019/11/9更新: 文档已上线 点击查看

方法2: 通过数据设置

虽然方法1非常简单, 但是因为是通过代码写死了默认语言, 如果想设置其他默认语言, 只能再次修改代码.

既然默认语言是通过Setting设置的, 那么我们可不可以通过数据设置默认语言呢?答案是肯定的.

ABP启动模板的数据库中有一个名为AbpSettings的表, 里面即是各种Setting的值.

我们可以向其中增加一条默认语言的记录:

INSERT INTO AbpSettings(Id, Name, Value, ProviderName)
Values(newid(), 'Abp.Localization.DefaultLanguage', 'zh-Hans', 'Global')

其中的Name的值即是方法1中LocalizationSettingNames.DefaultLanguage的值, 相当于默认语言Setting的一个Key.

插入后的结果:

把方法1中我们增加的那行代码删除后, 再次运行确认默认语言仍然是中文.

如果我们把记录中的"zh-Hans"改为"en", 重新运行后默认语言就会切换成英文了.

方法3: 通过Seed设置

方法3实际上是方法2的一个改进: 我们利用了ABP提供了Seed系统(即可通过代码初始化系统的一些数据), 这样我们在正式上线项目时, 不需要再额外执行SQL语句来执行数据初始化了.

首先我们把AbpSettings表中我们手动插入的那条记录删除.

然后在AbpStudy.Domain工程的Settings文件夹中增加一个名为AbpStudySettingDataSeedContributor的类, 用来为Setting设置初始化数据. 类代码如下:

    public class AbpStudySettingDataSeedContributor : IDataSeedContributor, ITransientDependency
{
private readonly IGuidGenerator _guidGenerator;
private readonly ISettingRepository _settingRepository; public AbpStudySettingDataSeedContributor(IGuidGenerator guidGenerator, ISettingRepository settingRepository)
{
_settingRepository = settingRepository;
_guidGenerator = guidGenerator;
} public async Task SeedAsync(DataSeedContext context)
{
await _settingRepository.InsertAsync(new Setting(
_guidGenerator.Create(),
LocalizationSettingNames.DefaultLanguage,
"zh-Hans",
GlobalSettingValueProvider.ProviderName
));
}

该类注入GuidGenerator用来生成GUID, 和SettingRepository用来向AbpSettings表插入数据.

SeedAsync方法中使用InsertAsync方法插入了默认语言的记录, 记录的值与方法2中SQL中是一致的.

然后我们运行AbpStudy.DbMigrator工程, 这是启动模板附带的一个用来执行数据库迁移的一个工具, 它会扫描到我们刚写的AbpStudySettingDataSeedContributor类并调用它, 从而完成数据初始化.

AbpStudy.DbMigrator工程有自己的数据库连接串, 定义在appsettings.json文件中, 别忘了将它修改成与Web工程中的一样.

运行DbMigrator截图:

再次查看AbpSettings表中的数据, 发现记录已经插入了, 与我们使用SQL语句插入的一样, 所以默认中文也同样可以生效.

禁用其他语言

如果你的项目不用考虑多语言, 那么右上角的语言切换菜单就显得有点多余了, 我们可以通过以下修改禁用其他语言:

修改AbpStudy.Web工程下的AbpStudyWebModule类, 将ConfigureLocalizationServices方法中其他语言的 options.Languages.Add(...)代码删除, 只保留中文的即可:

        private void ConfigureLocalizationServices()
{
Configure<AbpLocalizationOptions>(options =>
{
options.Resources
.Get<AbpStudyResource>()
.AddBaseTypes(
typeof(AbpUiResource)
); //options.Languages.Add(new LanguageInfo("cs", "cs", "Čeština"));
//options.Languages.Add(new LanguageInfo("en", "en", "English"));
//options.Languages.Add(new LanguageInfo("pt-BR", "pt-BR", "Português"));
//options.Languages.Add(new LanguageInfo("tr", "tr", "Türkçe"));
options.Languages.Add(new LanguageInfo("zh-Hans", "zh-Hans", "简体中文"));
});
}

再次运行, 发现右上角语言切换的菜单就不见了, 完美!

关于ABP框架设置默认语言的方法就介绍到这, 示例工程放到GITHUB中.

Happy Coding!

设置ABP默认使用中文的更多相关文章

  1. 设置Jmeter默认为中文, 就是这么简单!

    Jmeter默认加载的全英文,想要看的更加明白,想到的就是汉化了. Jmeter汉化真的非常简单,意料之外的简单,只需要到配置文件 jmeter.properties ,将里面的 “#language ...

  2. 设置Jmeter默认中文页面

    下载安装好Jmeter后默认的是英文,对于我这种学渣来说简直就是受到了1000000点攻击. 所以,如何把英文界面换成中文呢? 方法一(从网上看到的) 启动Jmeter找到 options >c ...

  3. 设置ubuntu默认中文字符

    一. Ubuntu默认的中文字符编码 Ubuntu默认的中文字符编码为zh_CN.UTF-8,这个可以在 /etc/environment中看到:sudo gedit /etc/environment ...

  4. 【PHP基础】常用mySQL语句以及WampServer2.2设置数据库默认编码

    一.WampServer2.2设置数据库默认编码(此部分转自http://www.cnsecer.com/5984.html) wamp下MySQL的默认编码是Latin1,不支持中文,要支持中文的话 ...

  5. (转)关于Tomcat的点点滴滴(体系架构、处理http请求的过程、安装和配置、目录结构、设置压缩和对中文文件名的支持、以及Catalina这个名字的由来……等)

    转自:http://itfish.net/article/41668.html   总结Tomcat的体系架构.处理http请求的过程.安装和配置.目录结构.设置压缩和对中文文件名的支持.以及Cata ...

  6. 01_Linux系统系统语言查询,设置Xshell工具,中文显示,测试Xshell中文字符显示,Linux中文显示乱码设置

              Xshell是一个强大的安全终端模拟软件,它支持SSH1,SSH2,以及Microsoft Windows平台的TELNETNetSarang Xshell 4 Build 0 ...

  7. C# Winform 中如何获取本机安装输入法,并设置为默认输出语言,如何打开搜狗输入法和手写板

    一.问题: 今天,我整理了一下两个问题 1.如何获取本机安装所有输入法,并设置为系统输出语言 2.如何打开搜狗拼音输入法工具栏和手写板: 二.解决方法 比如:我们要设置搜狗输入法为本机输入语言,要怎么 ...

  8. 关于Tomcat的点点滴滴(体系架构、处理http请求的过程、安装和配置、文件夹结构、设置压缩和对中文文件名称的支持、以及Catalina这个名字的由来……等)

    总结Tomcat的体系架构.处理http请求的过程.安装和配置.文件夹结构.设置压缩和对中文文件名称的支持.以及Catalina这个名字的由来--等. Tomcat和JVM: 一个Tomcat仅仅会启 ...

  9. 解决 Onenote 默认全角输入的一种解决办法(输入法已经设置为默认半角)

    环境说明:Windows 7 x64 Ultimate SP1, QQ 拼音输入法 6.1(5306),Onenote 2016 x64 问题描述:每次打开Onenote,在输入法已经设置为默认半角的 ...

随机推荐

  1. 使用RabbitMQ做数据接收和处理时,自动关闭

    场景:N个客户端向MQ里发送数据:服务器上有另一个控制台程序(假设叫ServerClient)来处理这里数据(往数据库保存).方向为Client * n→MQSERVER→ServerClient 问 ...

  2. pycharm编辑器配置(持续更新完善)

    谨记:pycharm仅是一款编辑器,不要太依赖 pycharm的提示,不然后期换了编辑器就不行了 python解释器安装.多版本共存等 去python官网下载安装,配置环境变量.多版本共存等问题请参见 ...

  3. 利用Github Pages创建的Jekyll模板个人博客添加阅读量统计功能

    目录 前言 准备工作 模板文件修改 写在最后 内容转载自我自己的博客 @(文章目录) 前言 Jekyll 是一个简单的免费的 Blog 生成工具,类似 WordPress .它只是一个生成静态网页的工 ...

  4. lr录制选项设置代理

    解决录制时浏览器打不开录制时录不到脚本等浏览器兼容问题一.lr录制选项设置代理1.点击Options 2.点击Port Mapping→Newentrv 3.lr代理设置 ·Socket Servic ...

  5. Flutter学习笔记(12)--列表组件

    如需转载,请注明出处:Flutter学习笔记(12)--列表组件 在日常的产品项目需求中,经常会有列表展示类的需求,在Android中常用的做法是收集数据源,然后创建列表适配器Adapter,将数据源 ...

  6. jsp数据交互(二).1

    对象的作用域:   JSP中提供了四种作用域,分别是page作用域,request作用域,session作用域和application作用域. page作用域: page作用域指单一JSP页面的范围, ...

  7. bean的创建(五)第一部分

    AbstractBeanFactory.doGetBean protected <T> T doGetBean( final String name, final Class<T&g ...

  8. handlerAdapter与方法返回值的处理

    前提:处理器方法被调用并返回了结果 public void invokeAndHandle(ServletWebRequest webRequest, ModelAndViewContainer ma ...

  9. abp(net core)+easyui+efcore实现仓储管理系统——使用 WEBAPI实现CURD (十一)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  10. Apache Flink 1.9 重大特性提前解读

    今天在 Apache Flink meetup ·北京站进行 Flink 1.9 重大新特性进行了讲解,两位讲师分别是 戴资力/杨克特,zhisheng 我也从看完了整个 1.9 特性解读的直播,预计 ...