国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

ABP 初探 之 多語(yǔ)言

2019-11-17 02:10:53
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

ABP 初探 之 多語(yǔ)言

最近幾天空閑時(shí)間比較多,就研究Abp的多語(yǔ)言,Abp是基于接口的依賴(lài)注入,有很多思想與方法都很好,需自己深入體會(huì)與應(yīng)用,轉(zhuǎn)化成自己的思想應(yīng)用于實(shí)踐。

  本篇介紹基于 開(kāi)源DemoModuleZeroSamplePRoject,多語(yǔ)言分為兩部分,基于后臺(tái)的CS代碼和前臺(tái)的JS。

  資源文件定義分為Web端和嵌入DLL層

  基于Dll層的資源文件需設(shè)置文件屬性為嵌入,否則發(fā)布后找不到資源文件。

  基于Web端的初始化方法

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

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

Configuration.Localization.Sources.Add(                new DictionaryBasedLocalizationSource(                    AbpConsts.LocalizationSourceName,                    new XmlEmbeddedFileLocalizationDictionaryProvider(                        Assembly.GetExecutingAssembly(), "Abp.Localization.Sources.AbpXmlSource"                        )));

  后臺(tái)CS 分為三部分,分別對(duì)應(yīng)Controller、application、Core

  多語(yǔ)言的使用第一步是初始化,只能指定了資源文件名稱(chēng)才能正常解析與使用,

Cotroller 初始化方法,創(chuàng)建Cotroller基類(lèi)ModuleZeroSampleProjectControllerBase,在構(gòu)造函數(shù)添加 資源路徑

public abstract class ModuleZeroSampleProjectControllerBase : AbpController    {        protected ModuleZeroSampleProjectControllerBase()        {            LocalizationSourceName = ModuleZeroSampleProjectConsts.LocalizationSourceName;        }    }
View Code

  Application、Core 初始化方法,創(chuàng)建Service基類(lèi),所有的方法都繼承該基類(lèi),資源文件屬性都要設(shè)置 嵌入

public class MarketApplicationServiceBase : ApplicationService    {        protected MarketApplicationServiceBase()        {            LocalizationSourceName = MarketCoreConsts.LocalizationSourceName;        }    }
View Code

前端JS部分初始化,一空要引用abp.js 在abp.js里定義了資源初始化的相關(guān)方法

 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

通過(guò)如何方法可以讀取資源文件

<script>            $(function () {                var appLocalizationSource = abp.localization.getSource('Market');  //xml文件名                function localize() {                    return appLocalizationSource.apply(this, arguments);                };                alert(localize('Role_IsDefault')) // xml當(dāng)中定義的字段            })        </script>

前端加載的資源文件都來(lái)源于JS 動(dòng)態(tài)生成 <script src="~/AbpScripts/GetScripts?v=@(Abp.Timing.Clock.Now.Ticks)" type="text/javascript"></script>

引用上面的Js文件會(huì)生成如下 內(nèi)容

Views 界面也可以通過(guò)如下方法顯示多語(yǔ)言,L 方法位于如下命名空間Abp.Web.Mvc.Views.AbpWebViewPage


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 泸溪县| 泗水县| 淮阳县| 马龙县| 延吉市| 宜州市| 称多县| 昌宁县| 隆昌县| 永福县| 横峰县| 富蕴县| 大渡口区| 咸丰县| 长治县| 黄冈市| 渭源县| 柳林县| 信丰县| 丽江市| 喜德县| 湄潭县| 南康市| 阿城市| 大港区| 习水县| 福鼎市| 唐海县| 普兰县| 长泰县| 永清县| 石狮市| 桐梓县| 科技| 紫阳县| 怀远县| 沭阳县| 额尔古纳市| 铜山县| 泾川县| 清新县|