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

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

    • 国际化

国际化

看下面两幅图,分别是简体中文、English的实例页面:
OpenStack(kilo)界面dashboard的二次开发(四)-国际化_第1张图片
OpenStack(kilo)界面dashboard的二次开发(四)-国际化_第2张图片
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。
OpenStack(kilo)界面dashboard的二次开发(四)-国际化_第3张图片
为了测试,这里我把改成“我的实例”,然后编译成mo文件,重启httpd服务。效果图如下:
OpenStack(kilo)界面dashboard的二次开发(四)-国际化_第4张图片

当然修改标题这些现实问题不止这一种方法,但是这种通过国际化这种方式,兼容性更好,便于支持多种语言。
更多精彩文章,请搜索微信公众号“扶艾”。我们定期分享OpenStack相关技术文章,在这里,只有纯干货
OpenStack(kilo)界面dashboard的二次开发(四)-国际化_第5张图片

你可能感兴趣的:(openstack)