从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的多语言文件等是无法匹配的。

  1. 修改Seed中的DefaultLanguagesCreator类中的标识,zh-Hans改为zh。
  2. 修改数据库language表中的标识。
  3. 在Core的Localization/SourceFiles中新增Ceci-zh.json。并设置其始终复制。
  • 移除找不到Key时加的[]

  在Core中已经不再建议使用Key的方式来使用默认语言,而是直接将需表达的默认语言表现为Key,但是我们移除掉默认语言的Json后,ABP会在显示语言处加【】标识,我们可以移除这个标识:

Configuration.Localization.WrapGivenTextIfNotFound = false;

ABP实战--修改语言配置XML至Json的更多相关文章

  1. SQL Server 2005的XML数据修改语言(XML DML)

    转:http://www.microsoft.com/china/msdn/library/data/sqlserver/XMLDML.mspx?mfr=true 作为对XQuery语言的扩展,XML ...

  2. ABP进阶教程5 - 多语言配置

    点这里进入ABP进阶教程目录 更新脚本 打开展示层(即JD.CRS.Web.Mvc)的\wwwroot\view-resources\Views\Course\Index.js //用以存放Cours ...

  3. .net 温故知新:【8】.NET 中的配置从xml转向json

    一.配置概述 在.net framework平台中我们常见的也是最熟悉的就是.config文件作为配置,控制台桌面程序是App.config,Web就是web.config,里面的配置格式为xml格式 ...

  4. c#通用配置文件读写类(xml,ini,json)

    .NET下编写程序的时候经常会使用到配置文件.配置文件格式通常有xml.ini.json等几种,操作不同类型配置文件需要使用不同的方法,操作较为麻烦.特别是针对同时应用不同格式配置文件的时候,很容易引 ...

  5. abp 设置默认语言为中文

    abp 设置默认语言为中文 abp的默认语言设置,存放于数据库表AbpSettings中,这样配置可使默认语言为中文: name: Abp.Localization.DefaultLanguageNa ...

  6. c#通用配置文件读写类与格式转换(xml,ini,json)

    .NET下编写程序的时候经常会使用到配置文件.配置文件格式通常有xml.ini.json等几种,操作不同类型配置文件需要使用不同的方法,操作较为麻烦.特别是针对同时应用不同格式配置文件的时候,很容易引 ...

  7. iOS:网络编程中三个数据解析协议HTTP、XML、JSON的详细介绍

    网络编程:HTTP协议.XML数据协议.JSON数据协议: HTTP: 1.HTTP传输数据有四种方式:Get方式.Post方式.同步请求方式.异步请求方式. 说明:同步和异步请求方式在创建链接对象和 ...

  8. XML和JSON

    XML XML(EXtensible Markup Language),可扩展标记语言 特点 XML与操作系统.编程语言的开发平台无关 实现不同系统之间的数据交换 作用: 数据交互 配置应用程序和网站 ...

  9. abp实战-ContosoUniversity Abp版-2添加菜单与创建实体

    这里略过理论篇,但需要了解abp分层,对于小项目来说abp分层有点复杂,这里只是演示,个别地方没有完全按照ddd理论去写,后期我将会完善. 1. 创建ContosoUniversity相关功能的菜单 ...

随机推荐

  1. Python2.7升级至Python3.6

    Python2.7升级至Python3.6 今天在CentOS7.2上将python2.7升级至python3.6时遇到了诸多问题,下面将升级步骤以及解决方法一一列举. 1.安装Python3.6 安 ...

  2. 自适应XAML布局经验总结 (二) 局部布局设计模式1

    本系列对实际项目中的XAML布局场景进行总结,给出了较优化的自适应布局解决方案,希望对大家有所帮助. 下面开始介绍局部布局设计模式. 1. 工具栏模式 适用于工具栏,标题等的布局. 此块布局区域外层使 ...

  3. JSONP的原理与实现(基于jQuery)

    为什么会有JSONP?因为我们使用AJAX,使用AJAX可能就会遇到跨域的需求,如何解决呢,对,就是JSONP. 这里注意下JSON和JSONP不是一类,虽然他们只是一个字母只差,但是实际差别很大.这 ...

  4. clob 转 String

    import javax.sql.rowset.serial.SerialClob; import java.io.BufferedReader; import java.io.IOException ...

  5. ie下警告console未定义

    低版本IE6/7/8/9浏览器没有定义console对象,所以代码会中断执行.自己测试,ie11也没有(打开控制台的情况下可以用) 可以用如下代码完美解决. window.console = wind ...

  6. easyui datagrid sort 表头 排序

    datagrid的点击列表头刷新,分为两种,一种是页面刷新,不涉及后台服务器数据,不会从新查询数据库,只会刷新当前页数据: 一种是服务器级刷新,会重新加载全部数据. 如果不需要自定义排序,可以直接使用 ...

  7. Linux下安装python虚拟环境(virtualenv,vritulaenvwrapper)

    一.virtualenv virtualenv是如何创建"独立"的Python运行环境的呢? 原理很简单,就是把系统Python复制一份到virtualenv的环境,用命令sour ...

  8. android界面

    自定义控件EditText 在src中的drawable新建myeditext.xml文件<?xml version="1.0" encoding="utf-8&q ...

  9. 纯文本-FileOutputStream的解码方式

    1.通过string.getBytes(charsetNane)获得的字节数组,字节数组的编码方式,决定了FileOutStream写出文件的格式 例1:字节数组采用“GBK”编码,write生成的文 ...

  10. IAP远程在线升级

    IAP远程在线升级 在上一篇中实现了LWIP网口通讯,那么肯定要加个在线升级功能,这个功能所占用的资源很少,但在物联网中很重要也很实用.在线升级就是像手机一样,先下载好系统,然后点击升级~然后就没然后 ...