openstack界面支持英语、简体中文、繁体中文等多种语言。用户可以在用户设置中进行设置。如果要对openstack进行二次开发,那么就一定要对界面上的标题、提示的内容等进行修改。
国际化
看下面两幅图,分别是简体中文、English的实例页面:
openstack的界面采用的是django的架构,django国际化就是开发者对需要翻译的字符串进行标记,并对相应的字符串进行翻译。
进入/usr/share/openstack-dashboard/openstack_dashboard/dashboards/project /instances目录,并打开panel.py:
1from django.utils.translation import ugettext_lazy as _
2
3import horizon
4
5from openstack_dashboard.dashboards.project import dashboard
6
7
8class Instances(horizon.Panel):
9 name = _("Instances")
10 slug = 'instances'
11 permissions = ('openstack.services.compute',)
12
13
14dashboard.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服务。效果图如下:
当然修改标题这些现实问题不止这一种方法,但是这种通过国际化这种方式,兼容性更好,便于支持多种语言。