OpenStack(kilo)界面dashboard的二次开发(四)-国际化

本文介绍了如何在OpenStack Kilo的dashboard进行国际化二次开发,详细讲解了通过django的ugettext_lazy函数标记待翻译字符串,并在locale目录下进行翻译文件的编辑和编译,以实现界面语言的切换,例如将实例标题改为'我的实例'。

openstack界面支持英语、简体中文、繁体中文等多种语言。用户可以在用户设置中进行设置。如果要对openstack进行二次开发,那么就一定要对界面上的标题、提示的内容等进行修改。

国际化

看下面两幅图,分别是简体中文、English的实例页面:
这里写图片描述
这里写图片描述
openstack的界面采用的是django的架构,django国际化就是开发者对需要翻译的字符串进行标记,并对相应的字符串进行翻译。
进入/usr/share/openstack-dashboard/openstack_dashboard/dashboards/project/instances目录,并打开panel.py:

from django.utils.translation import ugettext_lazy as _

import horizon

from openstack_dashboard.dashboards.project import dashboard


class Instances(horizon.Panel):
    name = _("Instances")
    slug = 'instances'
    permissions = ('openstack.services.compute',)


dashboard.Project.register(Instances)

以上代码的结构在博主前面博文中已经进行简单的说明。这里看到class Instances,它的name属性即是上面两幅图中箭头所指显示的部分。可以看到它是import的django.utils.translation的ugettxt_lazy这个函数,这个函数就可以对其内容进行翻译。(具体原理博主没有深入研究,想要知道所以然的朋友可以自行研究学习,该博文仅总结具体方法。)而翻译的依据则是/usr/share/openstack-dashboard/openstack_dashboard/locale/目录下的文件。简体中文对应的是该目录下的zh_CN。进入该目录可以看到一个django.mo文件,该文件即是翻译成简体中文的核心文件。mo文件是不可编辑的文件,首先得将其反编译成po文件。网上有很多的方法,这里就不再赘述。

打开生成的django.po文件,找到instances。
这里写图片描述
为了测试,这里我把改成“我的实例”,然后编译成mo文件,重启httpd服务。效果图如下:
这里写图片描述

当然修改标题这些现实问题不止这一种方法,但是这种通过国际化这种方式,兼容性更好,便于支持多种语言。
更多精彩文章,请搜索微信公众号“扶艾”。我们定期分享OpenStack相关技术文章,在这里,只有纯干货
这里写图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值