ABP实战--修改语言配置XML至Json
从ABP官网下载的Zero的多语言配置默认是使用XML文件的,实际使用中XML是没有Json简洁明了的,所以我们将其修改为Json格式。
修改MyLocalizationConfigurer.cs文件
我们在Core-Localization下找到LocalizationConfigurer.cs文件,将其替换为:
public static void Configure(ILocalizationConfiguration localizationConfiguration)
{
//获得dll的全路径
var location = Assembly.GetEntryAssembly().Location;
var sourceDir = Directory.GetParent(location) + "/Localization/SourceFiles"; localizationConfiguration.Sources.Add(
new DictionaryBasedLocalizationSource(CeciConsts.LocalizationSourceName,
new JsonFileLocalizationDictionaryProvider(sourceDir)
)
);
}
注意,这里获得我们运行目录下的/Localization/SourceFiles下的文件作为资源文件。
修改资源文件的拷贝
同样的SourceFiles下,参照xml文件名添加对应的json文件,并F4设置其`复制到输出目录`为`始终复制`。
添加的Json文件内容参照如下,`culture`标明具体的语言,详细参照ABP文档。
{
"culture": "en",
"texts": {
"HomePage": "Home page",
"About": "About",
"WellcomeMessage": "Welcome to Ceci!",
"FormIsNotValidMessage": "Form is not valid. Please check and fix errors.",
"TenantNameCanNotBeEmpty": "Tenant name can not be empty",
"InvalidUserNameOrPassword": "Invalid user name or password",
"ThereIsNoTenantDefinedWithName{0}": "There is no tenant defined with name {0}",
"TenantIsNotActive": "Tenant {0} is not active.",
"UserIsNotActiveAndCanNotLogin": "User {0} is not active and can not log in.",
"UserEmailIsNotConfirmedAndCanNotLogin": "Your email address is not confirmed. You can not login.",
"UserLockedOutMessage": "The user account has been locked out. Please try again later.",
"PleaseEnterLoginInformation": "Please enter login information",
"TenancyName": "Tenancy name",
"UserNameOrEmail": "User name or email",
"Password": "Password",
"RememberMe": "Remember me",
"LogIn": "Log in",
"LoginFailed": "Login failed!",
"NameSurname": "Name surname",
"UserName": "User name",
"Name": "Name",
"Surname": "Surname",
"EmailAddress": "Email address",
"Tenants": "Tenants",
"SavedSuccessfully": "Saved successfully",
"CreateNewTenant": "Create new tenant",
"AdminEmailAddress": "Admin email address",
"Save": "Save",
"Cancel": "Cancel",
"TenantName_Regex_Description": "Tenant name must be at least 2 chars, starts with a letter and continue with letter, number, dash or underscore.",
"DefaultPasswordIs": "Default password is {0}",
"CanBeEmptyToLoginAsHost": "Can be empty to login as host.",
"Register": "Register",
"OrLoginWith": "Or login with",
"WaitingForActivationMessage": "Your account is waiting to be activated by system admin.",
"TenantSelection": "Tenant Selection",
"TenantSelection_Detail": "Please select one of the following tenants.",
"Logout": "Logout",
"RegisterFormUserNameInvalidMessage": "Please don't enter an email address for username.",
"DatabaseConnectionString": "Database connection string",
"Users": "Users",
"IsActive": "Is active",
"FullName": "Full name",
"CreateNewUser": "Create new user",
"Yes": "Yes",
"No": "No",
"Optional": "Optional",
"LeaveEmptyToSwitchToHost": "Leave empty to switch to the host",
"CurrentTenant": "Current tenant",
"NotSelected": "Not selected",
"Change": "Change",
"ChangeTenant": "Change tenant",
"MultiLevelMenu": "Multi Level Menu",
"Back": "Back",
"SuccessfullyRegistered": "Successfully registered",
"WaitingForEmailActivation": "Your email address should be activated",
"Roles": "Roles",
"DisplayName": "Display Name",
"Edit": "Edit",
"Delete": "Delete",
"CreateNewRole": "Create new role",
"RoleName": "Role Name",
"Actions": "Actions",
"CouldNotCompleteLoginOperation": "Could not complete login operation. Please try again later.",
"CouldNotValidateExternalUser": "Could not validate external user",
"EditRole": "Edit role",
"EditTenant": "Edit tenant",
"EditUser": "Edit user",
"TenantIdIsNotActive{0}": "TenantId {0} is not active",
"UnknownTenantId{0}": "Unknown tenantId {0}",
"ThisFieldIsRequired": "This field is required",
"PleaseWait": "Please wait...",
"Administration": "Administration",
"ClearAll": "Clear all",
"ClearOthers": "Clear others",
"LabelOptions": "Label options",
"Permissions": "Permissions",
"RoleDescription": "Role description",
"Refresh": "Refresh",
"Create": "Create",
"UserDetails": "User details",
"UserRoles": "User roles",
"ConfirmPassword": "Confirm password",
"Version": "Version",
"On": "On",
"Off": "Off",
"AreYouSureWantToDelete": "Are you sure want to delete {0}?",
"StartTyping": "Start Typing",
"Skins": "Skins",
"Settings": "Settings"
}
}
修改简体中文
ABP Zero中中文简体的标识是zh-Hans,我们需要修改掉,否则Jquery的多语言文件等是无法匹配的。
- 修改Seed中的DefaultLanguagesCreator类中的标识,zh-Hans改为zh。
- 修改数据库language表中的标识。
- 在Core的Localization/SourceFiles中新增Ceci-zh.json。并设置其始终复制。
移除找不到Key时加的[]
在Core中已经不再建议使用Key的方式来使用默认语言,而是直接将需表达的默认语言表现为Key,但是我们移除掉默认语言的Json后,ABP会在显示语言处加【】标识,我们可以移除这个标识:
Configuration.Localization.WrapGivenTextIfNotFound = false;
ABP实战--修改语言配置XML至Json的更多相关文章
- SQL Server 2005的XML数据修改语言(XML DML)
转:http://www.microsoft.com/china/msdn/library/data/sqlserver/XMLDML.mspx?mfr=true 作为对XQuery语言的扩展,XML ...
- ABP进阶教程5 - 多语言配置
点这里进入ABP进阶教程目录 更新脚本 打开展示层(即JD.CRS.Web.Mvc)的\wwwroot\view-resources\Views\Course\Index.js //用以存放Cours ...
- .net 温故知新:【8】.NET 中的配置从xml转向json
一.配置概述 在.net framework平台中我们常见的也是最熟悉的就是.config文件作为配置,控制台桌面程序是App.config,Web就是web.config,里面的配置格式为xml格式 ...
- c#通用配置文件读写类(xml,ini,json)
.NET下编写程序的时候经常会使用到配置文件.配置文件格式通常有xml.ini.json等几种,操作不同类型配置文件需要使用不同的方法,操作较为麻烦.特别是针对同时应用不同格式配置文件的时候,很容易引 ...
- abp 设置默认语言为中文
abp 设置默认语言为中文 abp的默认语言设置,存放于数据库表AbpSettings中,这样配置可使默认语言为中文: name: Abp.Localization.DefaultLanguageNa ...
- c#通用配置文件读写类与格式转换(xml,ini,json)
.NET下编写程序的时候经常会使用到配置文件.配置文件格式通常有xml.ini.json等几种,操作不同类型配置文件需要使用不同的方法,操作较为麻烦.特别是针对同时应用不同格式配置文件的时候,很容易引 ...
- iOS:网络编程中三个数据解析协议HTTP、XML、JSON的详细介绍
网络编程:HTTP协议.XML数据协议.JSON数据协议: HTTP: 1.HTTP传输数据有四种方式:Get方式.Post方式.同步请求方式.异步请求方式. 说明:同步和异步请求方式在创建链接对象和 ...
- XML和JSON
XML XML(EXtensible Markup Language),可扩展标记语言 特点 XML与操作系统.编程语言的开发平台无关 实现不同系统之间的数据交换 作用: 数据交互 配置应用程序和网站 ...
- abp实战-ContosoUniversity Abp版-2添加菜单与创建实体
这里略过理论篇,但需要了解abp分层,对于小项目来说abp分层有点复杂,这里只是演示,个别地方没有完全按照ddd理论去写,后期我将会完善. 1. 创建ContosoUniversity相关功能的菜单 ...
随机推荐
- JAVA实现WC.exe功能
项目要求 实现一个统计程序,它能正确统计程序文件中的字符数.单词数.行数,以及还具备其他扩展功能,并能够快速地处理多个文件. 具体功能要求: 程序处理用户需求的模式为: wc.exe [paramet ...
- 用Java取指定时区的时间 北京时间,纽约时间,班加罗尔时间
/** * 取北京时间 * @return */ public static String getBeijingTime(){ return getFormatedDateString(8); } / ...
- JavaScript中Ajax的使用
AJAX全称为“Asynchronous javascript and XML”(异步javascript和XML),是指一种创建交互式网页应用的网页开发技术.通过在后台与服务器进行少量数据交换,AJ ...
- MessageBox实现自动延时关闭
1,首先新建一个winform窗体:MessageForm,设置StartPosition属性为Manual,Location属性值-500, -500 主要是为了让MessageForm窗体不显示在 ...
- Mac OS 10.12 - 如何关闭Rootless机制?
一,进入恢复模式(Recovery):具体操作方法参见下面这篇博客: http://www.cnblogs.com/sunylat/p/6414697.html 二,关闭Rootless机制 1,选择 ...
- jquery判断滚动到某个div显示底部按钮
判读滚动某个div显示底部按钮 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta char ...
- jzoj5950
我們發現如下結論: 1.只有編號小的點才會對編號大的點產生影響 2.當當前點的y坐標大小為1~i最大的,則不會被以前的點影響 於是,維護一個斜率單調遞增的隊列 當當前點的y坐標大小為1~i最大的,則這 ...
- poj1511
Invitation Cards Time Limit: 8000MS Memory Limit: 262144K Total Submissions: 25099 Accepted: 829 ...
- http 缓存策略浅析
从一道经典的面试题说起 "用户输入 URL 到浏览器显示页面,这个过程发生了什么?",作为前端开发,这个题目相信大家并不陌生.楼主的答案分为两部: 一.网络通信 应用层 DNS 域 ...
- 【learning】微信跳一跳辅助c++详解 轻松上万 【上】
写在前面 17年年底Wechat出了这个跳一跳的小游戏,今年2月份的时候简单地玩了一下,发现被游戏虐了(手太残了只能跳20多). 今天刚好有点空,于是就花了一个下午的时间写了一个跳一跳的c++ ...