Apollo 刨析:Localization
九月 30 2014 11:27 上午 admin
今天我们来看一看Apollo中的Localization Component。
本地化在Apollo中的使用


像这样的代码大家在Apollo中肯定经常见到,那么NullLocalizer.Instance是什么?我们来看一看NullLocalizer。

LocalizationModule
不知道大家对“Apollo刨析:前奏曲”中的CachingModule还有没有印象,Apollo用了类似的机制,只不过这一次把构造函数注入变成了属性注入。

在Load方法我们可以看到Apollo注册了一个IText接口,那这个IText接口是干什么用的?请看下面!
我们看到的是 LocalizationUtilities.Resolve 实现了具体的注入。

,但是怎么确保它是以属性输入的方式被注入进来的?下面我们接着看。
这个方法比较简单,最终 T 属性被注入成 IText.Get 方法。上面我们说到我们注册了IText接口,最终的实现类是
Text。我们看下Text 是怎么实现的。

var currentCulture = workContext.CurrentCulture;
这个是获取网站的语言种类。

这里我们进行了调整了一下,期初是从站点配置文件中获取语言种类。
下面我们主要看下 _localizedStringManager.GetLocalizedString(_scope, textHint, currentCulture)

第一行 LoadCulture(cultureName);从下面的几个.po文件中进行加载语言化。优先级从头到尾。

.PO 文件格式如下:

Apollo 刨析:Localization的更多相关文章
- Apollo 刨析:简介
Apollo是配置在IIS服务器上的一个Web站点,它使用了.NET4.0和ASP.Net的技术. 代码是C#编写的.是基于ASP.NET MVC3的Web开发框架上编写的一个应用. 它使用到了N ...
- Orchard 刨析:导航篇
之前承诺过针对Orchard Framework写一个系列.本应该在昨天写下这篇导航篇,不过昨天比较累偷懒的去玩了两盘单机游戏哈哈.下面进入正题. 写在前面 面向读者 之前和本文一再以Orchard ...
- Orchard 刨析:Logging
最近事情比较多,有预研的,有目前正在研发的,都是很需要时间的工作,所以导致这周只写了两篇Orchard系列的文章,这边不能保证后期会很频繁的更新该系列,但我会写完这整个系列,包括后面会把正在研发的东西 ...
- Orchard 刨析:Caching
关于Orchard中的Caching组件已经有一些文章做了介绍,为了系列的完整性会再次对Caching组件进行一次介绍. 缓存的使用 在Orchard看到如下一段代码: 可以看到使用缓存的方法Get而 ...
- Learning Cocos2d-x for WP8(2)——深入刨析Hello World
原文:Learning Cocos2d-x for WP8(2)--深入刨析Hello World cocos2d-x框架 在兄弟篇Learning Cocos2d-x for XNA(1)——小窥c ...
- MapReduce源码刨析
MapReduce编程刨析: Map map函数是对一些独立元素组成的概念列表(如单词计数中每行数据形成的列表)的每一个元素进行指定的操作(如把每行数据拆分成不同单词,并把每个单词计数为1),用户可以 ...
- 30s源码刨析系列之函数篇
前言 由浅入深.逐个击破 30SecondsOfCode 中函数系列所有源码片段,带你领略源码之美. 本系列是对名库 30SecondsOfCode 的深入刨析. 本篇是其中的函数篇,可以在极短的时间 ...
- Golang 性能测试 (3) 跟踪刨析 golang trace
简介 对于绝大部分服务,跟踪刨析是用不到的.但是如果遇到了下面问题,可以不妨一试: 怀疑哪个协程慢了 系统调用有问题 协程调度问题 (chan 交互.互斥锁.信号量等) 怀疑是 gc (Garbage ...
- 温故知新-多线程-深入刨析volatile关键词
文章目录 摘要 volatile的作用 volatile如何解决线程可见? CPU Cache CPU Cache & 主内存 缓存一致性协议 volatile如何解决指令重排序? volat ...
随机推荐
- zookeeper单节点安装
1.安装jdk 2.安装解压zookeeper 先创建文件夹 解压zookeeper压缩包 3. 创建配置文件zoo.cfg 4.运行测试
- qq邮箱、qq空间点击后以word方式打开解决办法
解决办法: Internet--工具--Internet选项--程序--设为默认值
- VUE v-bind绑定class和style
1.绑定class (1)对象语法 <!DOCTYPE html> <html lang="zh"> <head> <meta chars ...
- 使用 dbdeploy.net 管理数据库变更
使用 dbdeploy.net 管理数据库变更 没有包含数据库的持续集成都是假的.这可不是我说的.一直以来都没能找到一个理想的数据库变更管理工具.直到转了 java 再回来,才发现 dbdeploy ...
- Public Private Protect Inheritance and access specifiers
In the previous lessons on inheritance, we've been making all of our data members public in order to ...
- 彻底删除Oracle 11g的方法
1.关闭oracle所有的服务. 可以在windows的服务管理器中关闭. 2.打开注册表:regedit 打开路径:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlS ...
- ASP.NET绑定CHECKBOXLIST--------JQUERY绑定CLICK事件,获取CHECKBOX的VALUE和显示值
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs ...
- Rabbitmq消息队列(四) 发布订阅
1.简介 在上篇教程中,我们搭建了一个工作队列,每个任务只分发给一个工作者,在本篇教程中,我们要做的跟之前完全不一样 —— 分发一个消息给多个消费者(consumers).这种模式被称为“发布/订阅” ...
- 以登录实例简单介绍Servlet使用
1.简单介绍 Java Servlet 是执行在 Web server或应用server上的程序,使用 Servlet.您能够收集来自网页表单的用户输入.呈现来自数据库或者其它源的记录.还能够动态创建 ...
- 如何给app客户端进行埋点?
1.什么是数据埋点? 当一款app开发完成后,一定需要查看数据,来分析用户访问量,点击量,转化率等等指标.想要查看数据,就得先做好数据埋点 注:html和app数据埋点的方式不同 2.常用app数据分 ...