最近几天空闲时间比较多,就研究Abp的多语言,Abp是基于接口的依赖注入,有很多思想与方法都很好,需自己深入体会与应用,转化成自己的思想应用于实践。

  本篇介绍基于 开源Demo ModuleZeroSampleProject,多语言分为两部分,基于后台的CS代码和前台的JS。

  资源文件定义分为Web端和嵌入DLL层

  基于Dll层的资源文件需设置文件属性为嵌入,否则发布后找不到资源文件。

  基于Web端的初始化方法

//Add/remove localization sources here
Configuration.Localization.Sources.Add(newXmlLocalizationSource(ModuleZeroSampleProjectConsts.LocalizationSourceName,HttpContext.Current.Server.MapPath("~/Localization/ModuleZeroSampleProject")));

嵌入Dll的初始化方法 abp是命名空间,Localization.Sources.AbpXmlSource是文件路径。

Configuration.Localization.Sources.Add(newDictionaryBasedLocalizationSource(AbpConsts.LocalizationSourceName,newXmlEmbeddedFileLocalizationDictionaryProvider(Assembly.GetExecutingAssembly(),"Abp.Localization.Sources.AbpXmlSource")));

  后台CS 分为三部分,分别对应Controller、Application、Core

  多语言的使用第一步是初始化,只能指定了资源文件名称才能正常解析与使用,

Cotroller 初始化方法,创建Cotroller基类 ModuleZeroSampleProjectControllerBase,在构造函数添加 资源路径

public abstract classModuleZeroSampleProjectControllerBase : AbpController{protectedModuleZeroSampleProjectControllerBase(){LocalizationSourceName=ModuleZeroSampleProjectConsts.LocalizationSourceName;}}

View Code

  Application、Core 初始化方法,创建Service基类,所有的方法都继承该基类,资源文件属性都要设置 嵌入

public classMarketApplicationServiceBase : ApplicationService{protectedMarketApplicationServiceBase(){LocalizationSourceName=MarketCoreConsts.LocalizationSourceName;}}

View Code

前端JS部分初始化,一空要引用abp.js 在abp.js里定义了资源初始化的相关方法

abp.localization = abp.localization || {};abp.localization.localize = function (key, sourceName) {sourceName = sourceName || abp.localization.defaultSourceName;var source = abp.localization.values[sourceName];if (!source) {abp.log.warn('Could not find localization source: ' + sourceName);return key;}var value = source[key];if (value == undefined) {return key;}var copiedArguments = Array.prototype.slice.call(arguments, 0);copiedArguments.splice(1, 1);copiedArguments[0] = value;return abp.utils.formatString.apply(this, copiedArguments);};abp.localization.getSource = function (sourceName) {return function (key) {var copiedArguments = Array.prototype.slice.call(arguments, 0);copiedArguments.splice(1, 0, sourceName);return abp.localization.localize.apply(this, copiedArguments);};};abp.localization.isCurrentCulture = function (name) {return abp.localization.currentCulture&& abp.localization.currentCulture.name&& abp.localization.currentCulture.name.indexOf(name) == 0;};abp.localization.defaultSourceName = undefined;abp.localization.abpWeb = abp.localization.getSource('AbpWeb');

View Code

通过如何方法可以读取资源文件

<script>$(function() {varappLocalizationSource=abp.localization.getSource('Market');//xml文件名functionlocalize() {returnappLocalizationSource.apply(this, arguments);};alert(localize('Role_IsDefault'))//xml当中定义的字段
})</script>

前端加载的资源文件都来源于JS 动态生成  <script src="~/AbpScripts/GetScripts?v=@(Abp.Timing.Clock.Now.Ticks)" type="text/javascript"></script>

引用上面的Js文件会生成如下 内容

Views 界面也可以通过如下方法显示多语言,L 方法位于如下命名空间 Abp.Web.Mvc.Views.AbpWebViewPage

转载于:https://www.cnblogs.com/Fengger/p/4601158.html

ABP 初探 之 多语言相关推荐

  1. 基于DDD的.NET开发框架 - ABP初探

    全称:Asp.Net Boilerplate 官网地址:https://aspnetboilerplate.com/ GitHub地址:https://github.com/aspnetboilerp ...

  2. 第02章 c语言初探(c语言笔记)2.1 第一个 C 语言程序

    2.1 第一个 C 语言程序 写C/C++可以用这个软件: 打开这个软件,然后点击左上角的[文件],[新建],[源代码] 之后会出现这样的界面: 先写一个简单的程序: 然后点击[编译运行],如下图: ...

  3. ABP快速开发一个.NET Core电商平台

    总听.NETer羡慕Java有SSM框架,其实.NET也有ABP,极度优秀的开源应用程序框架,支持.NET Framework和.NET Core. 羡慕Java有SpringCloud,其实.NET ...

  4. 设置ABP默认使用中文

    ABP提供的启动模板, 默认使用是英文: 虽然可以通过右上角的菜单切换成中文, 但是对于国内项目来说, 默认使用中文是很正常的需求. 前期准备 使用ABP CLI创建一个名为AbpStudy的ASP. ...

  5. 新学习的语言Groovy

    什么是 Groovy? Groovy 是 JVM 的一个替代语言 -替代 是指可以用 Groovy 在 Java 平台上进行 Java 编程,使用方式基本与使用 Java 代码的方式相同.在编写新应用 ...

  6. ABP开发框架的总体介绍

     ABP  FRAMEWORK 中文文档 https://docs.abp.io/zh-Hans/abp/latest ABP官方网站:http://www.aspnetboilerplate.com ...

  7. ABP理论学习之本地化

    本篇目录 应用语言 本地化资源 获取本地化文本 扩展本地化资源 最佳实践 应用语言 一个应用至少有一种UI语言,许多应用不止有一种语言.ABP为应用提供了一个灵活的本地化系统. 第一件事情就是声明支持 ...

  8. 日语编程语言抚子-第三版实现初探

    前文日语编程语言"抚子" - 第三版特色初探仅对语言的语法进行了初步了解. 之前的语言原型实现尝试(如编程语言试验之Antlr4+JavaScript实现"圈4" ...

  9. 2017-12-22 日语编程语言抚子-第三版实现初探

    前文日语编程语言"抚子" - 第三版特色初探仅对语言的语法进行了初步了解. 之前的语言原型实现尝试(如编程语言试验之Antlr4+JavaScript实现"圈4" ...

最新文章

  1. Centos6.5子域名绑定子目录
  2. 【Linux】25.ubuntu使用 nethogs 监测网络流量情况
  3. 《系统集成项目管理工程师》必背100个知识点-42项目成本管理的过程
  4. React 新特性 Hooks 讲解及实例(四)
  5. javascript笔记整理(对象基础)
  6. centos和redhat启用epel软件库
  7. python扫地机器人开发学校_扫地机器人源码及解释
  8. matlab如何换背景图片_紫外特征吸光度/光谱斜率/一阶导数紫外光谱(S275295/S350400/SR)+matlab...
  9. ECshop新手入门模板制作教程[转载]
  10. 支持iCloud的html文本编辑,人人都可用 iCloud网页版iWork完全开放
  11. 创业型公司,你要不要去?
  12. volatile能保证原子性吗?
  13. switch中break用法
  14. Linux之父-林纳斯 配置命令基操
  15. ConstraintLayout 流式布局:Flow的用法
  16. matlab圆周率计算,matlab代码求圆周率的简单算法
  17. 软件测试 QA、QC、QM的关系与区别
  18. 大气顶层反射率无量纲_环境星CCD数据大气校正研究
  19. LORA扩频技术的特点和应用
  20. Java:如何让长度一样的中英文对其

热门文章

  1. 彩虹云商城模板NiceShopV0.4完结版
  2. 一文读懂 B2B 内容营销
  3. 【跟李沐学AI学习笔记】数据操作
  4. ssm mysql过程抛错_下列关于 SSM 框架的整合说法错误的是 。 ( ) B : 。 C : 。 D : 。_学小易找答案...
  5. Vuex固化插件下载
  6. 预告 - 英诺森《2022-2023三位一体重资产企业物资仓储综合服务体系》白皮书解读会来袭
  7. MySQL Connector/C++ 操作MySQL数据库
  8. Oracle EBS BOM模块常用表结构
  9. 【MATLAB教程案例70】通过MATLAB编程实现模糊控制器1——编程定义模糊规则和隶属函数(不使用FIS Editor)
  10. python提取xml文件中的坐标点(labelimg标记文档)