设置ABP默认使用中文
ABP提供的启动模板, 默认使用是英文:
虽然可以通过右上角的菜单切换成中文, 但是对于国内项目来说, 默认使用中文是很正常的需求.
本文介绍了如何实现默认语言的几种方法, 希望能对ABP爱好者有所帮助, Let's begin!
前期准备
使用ABP CLI创建一个名为AbpStudy
的ASP.NET MVC项目:
abp new AbpStudy
关于MVC的启动模板可以看文档, 这里就不赘述.
使用ABP版本的是当前最新的v0.19, 后续版本应该也适用
方法1: 通过服务设置
该方法参考了此回答, 谢谢@maliming.
- 编辑
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默认使用中文的更多相关文章
- 设置Jmeter默认为中文, 就是这么简单!
Jmeter默认加载的全英文,想要看的更加明白,想到的就是汉化了. Jmeter汉化真的非常简单,意料之外的简单,只需要到配置文件 jmeter.properties ,将里面的 “#language ...
- 设置Jmeter默认中文页面
下载安装好Jmeter后默认的是英文,对于我这种学渣来说简直就是受到了1000000点攻击. 所以,如何把英文界面换成中文呢? 方法一(从网上看到的) 启动Jmeter找到 options >c ...
- 设置ubuntu默认中文字符
一. Ubuntu默认的中文字符编码 Ubuntu默认的中文字符编码为zh_CN.UTF-8,这个可以在 /etc/environment中看到:sudo gedit /etc/environment ...
- 【PHP基础】常用mySQL语句以及WampServer2.2设置数据库默认编码
一.WampServer2.2设置数据库默认编码(此部分转自http://www.cnsecer.com/5984.html) wamp下MySQL的默认编码是Latin1,不支持中文,要支持中文的话 ...
- (转)关于Tomcat的点点滴滴(体系架构、处理http请求的过程、安装和配置、目录结构、设置压缩和对中文文件名的支持、以及Catalina这个名字的由来……等)
转自:http://itfish.net/article/41668.html 总结Tomcat的体系架构.处理http请求的过程.安装和配置.目录结构.设置压缩和对中文文件名的支持.以及Cata ...
- 01_Linux系统系统语言查询,设置Xshell工具,中文显示,测试Xshell中文字符显示,Linux中文显示乱码设置
Xshell是一个强大的安全终端模拟软件,它支持SSH1,SSH2,以及Microsoft Windows平台的TELNETNetSarang Xshell 4 Build 0 ...
- C# Winform 中如何获取本机安装输入法,并设置为默认输出语言,如何打开搜狗输入法和手写板
一.问题: 今天,我整理了一下两个问题 1.如何获取本机安装所有输入法,并设置为系统输出语言 2.如何打开搜狗拼音输入法工具栏和手写板: 二.解决方法 比如:我们要设置搜狗输入法为本机输入语言,要怎么 ...
- 关于Tomcat的点点滴滴(体系架构、处理http请求的过程、安装和配置、文件夹结构、设置压缩和对中文文件名称的支持、以及Catalina这个名字的由来……等)
总结Tomcat的体系架构.处理http请求的过程.安装和配置.文件夹结构.设置压缩和对中文文件名称的支持.以及Catalina这个名字的由来--等. Tomcat和JVM: 一个Tomcat仅仅会启 ...
- 解决 Onenote 默认全角输入的一种解决办法(输入法已经设置为默认半角)
环境说明:Windows 7 x64 Ultimate SP1, QQ 拼音输入法 6.1(5306),Onenote 2016 x64 问题描述:每次打开Onenote,在输入法已经设置为默认半角的 ...
随机推荐
- C# 不同访问符的访问级别
public----成员可以由任何代码访问. private----成员只能由类中的代码访问(如果没有使用任何关键字,就默认使用这个关键字). internal----成员只能由定义它的项目(程序集) ...
- Face++实习体验
旷视Face++ 实习体验 已经在Face++呆了快20天了,自从实习,github和blog也碰的少了,我工作是做聚类(也是头一次接触机器学习,以前想都没敢想的),毕竟工作内容很多都是不熟悉的,需要 ...
- 【iOS】[[NSBundle mainBundle] loadNibNamed:nibTitle owner:self options:nil] 异常
这两天照书上的例子写代码时,出现了这个异常. 上网查了不少,有人说链接失效什么的……但发现都不是那些原因,问题出现在下面这句代码: [[NSBundle mainBundle] loadNibName ...
- spring boot中的声明式事务管理及编程式事务管理
这几天在做一个功能,具体的情况是这样的: 项目中原有的几个功能模块中有数据上报的功能,现在需要在这几个功能模块的上报之后生成一条消息记录,然后入库,在写个接口供前台来拉取消息记录. 看到这个需求,首先 ...
- python协程详解
目录 python协程详解 一.什么是协程 二.了解协程的过程 1.yield工作原理 2.预激协程的装饰器 3.终止协程和异常处理 4.让协程返回值 5.yield from的使用 6.yield ...
- Maven项目的打包发布到Nexus私服和服务器
1.编写pom文件如下: <build> <plugins> <plugin> <groupId>org.apache.maven.plugins< ...
- 理解nodejs中的stream(流)
阅读目录 一:nodeJS中的stream(流)的概念及作用? 二:fs.createReadStream() 可读流 三:fs.createWriteStream() 可写流 回到顶部 一:node ...
- 使用富文本编辑器Kindeditor
今天在做需求的时候,遇到有一个字段,需要保存带有格式的内容,决定使用富文本框编辑器Kindeditor来实现,解决方法如下: 登录官网下载控件包: http://kindeditor.net/down ...
- 0x03 前缀和与差分
前缀和 [例题]BZOJ1218 激光炸弹 计算二位前缀和,再利用容斥原理计算出答案即可. #include <iostream> #include <cstdio> #inc ...
- Pandas 库之 DataFrame
How to use DataFrame ? 简介 创建 DataFrame 查看与筛选数据:行列选取 DataFrame 数据操作:增删改 一.About DataFrame DataFrame 是 ...