openstack 本地化

研究了一下 openstack中的本地化;主要使用gettext模块;

其中本地化包括对一般字符串的本地化和log的本地化;

(1)

_localedir = os.environ.get(‘essential‘.upper() + ‘_LOCALEDIR‘)

_t = gettext.translation(‘essential‘, localedir=_localedir, fallback=True)

def _(msg):

if USE_LAZY:

return Message(msg, domain=‘essential‘)

else:

if six.PY3:

return _t.gettext(msg)

return _t.ugettext(msg)

这个就是字符串本地化函数 _(),只不过openstack中有多一了一个USE_LAZY变量;是延迟翻译的意思;如果延迟翻译,返回的是Message类;

Message 是一个继承于six.text_type的类,是一个unicode object。可以调用Message中的translate()方法他进行翻译;

(2)

下面是对log的本地化

_t_log_levels = dict(

(level, gettext.translation(‘essential‘ + ‘-log-‘ + level,

localedir=_localedir,

fallback=True))

for level in [‘info‘, ‘warning‘, ‘error‘, ‘critical‘]

)

每一个级别的log都有自己的domain

_log_translation(msg, level):

"""Build a single translation of a log message

"""

if USE_LAZY:

return Message(msg, domain=‘essential‘ + ‘-log-‘ + level)

else:

translator = _t_log_levels[level]

if six.PY3:

return translator.gettext(msg)

return translator.ugettext(msg)

为了方便使用,封装了下面的方法:

_LI = functools.partial(_log_translation, level=‘info‘)

_LW = functools.partial(_log_translation, level=‘warning‘)

_LE = functools.partial(_log_translation, level=‘error‘)

_LC = functools.partial(_log_translation, level=‘critical‘)

(3)

还有一个install()方法,

if lazy:

def _lazy_gettext(msg):

"""Create and return a Message object.

return Message(msg, domain=domain)

from six import moves

moves.builtins.__dict__[‘_‘] = _lazy_gettext

else:

localedir = ‘%s_LOCALEDIR‘ % domain.upper()

if six.PY3:

gettext.install(domain,

localedir=os.environ.get(localedir))

else:

gettext.install(domain,

localedir=os.environ.get(localedir),

unicode=True)

其作用是在__builtins__中加入_(),这样你的应用中的各个模块都可以使用到_()方法。不过这样影响比较大,局部的模块最好别使用install()方法,而是用类似下面的方式来做

import gettext
t = gettext.translation(‘mymodule‘, ...)

_ = t.gettext

(4)

在这个模块中还有一个translateHandler,是为log准备的。可以在打log的时候,对log进行翻译;

时间: 2024-10-10 12:55:06

openstack 本地化的相关文章

Openstack folsom installation

rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epelrelease-6-8.noarch.rpm 前提:本文档中涉及到的所有主机的OS均为RHEL 6.4 x86_64系统. Control Node: 172.16.200.6     node1.magedu.com Compute Node: 172.16.200.7   node2.magedu.com Object Storage Node: 172.16.200

零基础学习openstack【完整中级篇】及openstack资源汇总

1.你是如何学习openstack的?2.你对openstack的组件了解多少?3.你认为openstack该如何学习? 一直想写关于openstack的方面的内容,今天终于整理完成.算是完成一桩心事,内容整合来自: 零基础学习openstack(上)[中级篇] 零基础学习openstack(下)[中级篇] 是在 零基础学习openstack[初级篇]基础上的一个继续: 初级篇,我们主要是有这么一个概念,openstack的组成openstack由哪些部分来组成: Identity(代号为“Ke

OpenStack项目概况

转载于:http://doc.okbase.net/limlee/archive/451.html OpenStack旗下包含了一组由社区维护的开源项目,他们分别是OpenStackCompute(Nova)&OpenStackObjectStorage(Swift)& OpenStackImageService(Glance). OpenStackCompute[1],为云组织的控制器,它提供一个工具来部署云,包括运行实例.管理网络以及控制用户和其他项目对云的访问(thecloudthr

OpenStack 2014.1(Icehouse) 更新说明

OpenStack 2014.1(Icehouse) 更新说明 1.综合升级说明 ?   Windows安装包应使用PBR 0.8版本,以避免发生bug1294246 ?   log-config选项被重命名为log-config-append, 该选项现在用于增加任意指定的配置,而不是像现在这样覆盖其他选项.(https://bugs.launchpad.net/oslo/+bug/1169328, https://bugs.launchpad.net/oslo/+bug/1238349) ?

CentOS7下利用cobbler搭建openstack本地源

前面提到了使用cobbler进行自动化部署系统,下面我们介绍下如何利用cobbler快速搭建openstack本地源(这里我以我的测试环境中的openstack的Mitaka版本为例). 操作步骤如下: 1.添加openstack源: [[email protected] ~]# cobbler repo add --name=openstack-mitaka --mirror=http://mirrors.163.com/centos/7.3.1611/cloud/x86_64/opensta

OpenStack组件系列?Keystone搭建

一:版本信息 官网:http://docs.openstack.org/newton/install-guide-rdo/keystone.html 二:部署keystone 官网文档:http://docs.openstack.org/newton/install-guide-rdo/ 查看系统信息: [[email protected] ~]# cat /etc/redhat-release CentOS Linux release 7.0.1406 (Core) [[email prote

OpenStack各组件介绍

OpenStack是一个开源的云计算管理平台项目,由几个组件组合起来完成具体的工作. 先列出其中的3个核心项目: 1. 控制台 服务名:Dashboard 项目名:Horizon 功能:web方式管理云平台,就像你登录aliyun账号一样所见和操作,建立主机,分配带宽,加云盘 2.计算 服务名:Compute 项目名:Nova 功能:负责响应虚拟机的创建请求.调度.销毁 3.网络 服务名:Networking 项目名:Neutron 功能:实现SDN(软件定义网络),提供一整套API,用户可以通

58 Openstack基础、openstack之glance、openstack之keystone

03 openstack之keystone 配置环境 Controller CentOS release 6.7 controller eth0:仅主机 192.168.28.121 eth1:桥接 192.168.1.121 node2 192.168.1.122 CentOS release 6.7 compute1 eth0:仅主机,eth1:VMnet2 不会直接与外部网络通信 node3 192.168.1.123 CentOS release 6.7 networking eth0:

云计算之openstack基础服务之一keystone服务最佳实践

1.openstack简介 Openstack是一个项目,该项目支持所有类型的云环境的一个开源云计算平台,该项目的目的是为了实现简单,大规模可扩展性,以及丰富功能集,来自世界各地的云计算专家项目作出贡献.Openstack提供了一个基础架构即服务(Iaas)并通过各种配套服务的解决方案,每个服务提供一个应用编程接口来完成整个openstack的结合. 架构图如下: 相关服务介绍: 服务名称 项目名称 描述 Dashboard Horizon 基于openstackAPI接口使用Django开发的