Zenoss中menu的汉化

最近在做对Zenoss的汉化工作,在汉化菜单的时候发现很多菜单的内容都是放在 souce\trunk\zenoss\Products\ZenModel\migrate\menus.py文件中,可是不管怎么改这个文件都不生效,后来终于在zenoss的开发文档中发现了奥秘

Adding a new menu item is fairly straightforward. Because menu items are persistent objects, modifications must
happen in a migrate script (or be included as XML in a ZenPack). The method ZenMenuable.buildMenus()accepts
a dictionary of menus, each of which is a list of dictionaries representing the attributes of menu items. Instructions
on writing migrate scripts can be found elsewhere in this guide


最后经总结汉化菜单的步骤如下:

1 确保menus.py文件中对应的字段的格式是_t('key')
2 确保zenoss.po中有对应的汉化
3 确保menus.py的MenuRelations类的version变量的值是当前zenoss的版本 例如4.2.4

4 确保menus.py在zenoss\Products\ZenModel\migrate\__init__.py中被导入

5 执行 zenmigrate --dont-commit,确保输出了INFO:zen.migrate:Installing MenuRelations (4.2.4)
6 执行zenmigrate


由于menus.py中有很多的菜单都没有采用_t(“key”)的格式,如果一个去添加会很麻烦,下面的脚本可以利用已有的menus.py生成一个新的文件,该文件所有的description都符合_t("key") 的格式,以及生成一个esult.txt,该文件包含了所有未在po文件中存在的空实现

__author__ = 'Eric.sunah'

#列出所有没有以_t开头的菜单,并且生成新的文件,新文件中所有的菜单都符合_t('key')格式
def i18NAllMenu(menusFile,newMenusFile):
    menus = open(menusFile)
    newmenus=open(newMenusFile,"w")
    DESC = 'description'
    no_i18N_key=[]
    for line in menus:
        if line.strip().find('\'description') != -1:
            #'description': 'Set Systems...',
            new_line = line[len(DESC):]
            if new_line.find('_t') != -1:
                newmenus.write(line)
            else:
                new_key=new_line.strip()[16:-2]
                #print(new_key)
                no_i18N_key.append(new_key)
                newmenus.write("                'description': _t('"+new_key+"'),"+"\n")
        else:
            newmenus.write(line)
    print(len(no_i18N_key))
    print(no_i18N_key)
    return no_i18N_key

#列出所有没有以_t开头的菜单,并且没有在zenoss.po中定义的key
def noI18NKeyInPO(i18Keys,poFile):
    f=open(poFile, encoding='utf-8')
    poKeys=[]
    for line in f:
        #msgid "Add to Graphs..."
        #msgstr "添加到图表..."
        if(line.strip().startswith('msgid')):
            poKeys.append(line[7:-2])
    #print(poKeys)
    nokeyi18n=[]
    resultfile=open('D:\soucecode\CorePython\zenoss\esult.txt','w')
    for no_i18key in i18Keys:
        if no_i18key not in poKeys:
            poKeys.append(no_i18key)
            nokeyi18n.append(no_i18key)
            #print(no_i18key)
            resultfile.write("msgid \""+no_i18key+"\""+"\n")
            resultfile.write("msgstr \"\"")
            resultfile.write("\n")
            resultfile.write("\n")

    print(nokeyi18n)
    print(len(nokeyi18n))


if __name__ == "__main__":
    no_i18N_key=i18NAllMenu('D:\soucecode\CorePython\zenoss\menus.py','D:\soucecode\CorePython\zenoss\ewmenus.py')
    noI18NKeyInPO(no_i18N_key,'D:\soucecode\CorePython\zenoss\zenoss.po');


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
第1篇 了解开源软件 第1章 开源软件概述 1.1 开源软件的理解 1.2 开源软件的定义 1.3 开源软件定义的意义 1.4 开源软件和其他类型软件的比较 第2章 开源软件的历史与未来 2.1 开源软件的历史 2.2 开源运动背后的理想与现实 2.2.1 理想主义的兴起 2.2.2 技术精英的推动 2.2.3 现实业界的需求 2.3 开源社区的壮大 2.4 开源软件的领袖 2.5 开源软件的未来 第3章 开源软件的好处 3.1 高质量 3.2 零许可证费 3.3 开放和自由 3.4 灵活可定制 3.5 公开透明 3.6 良好的学习平台 第4章 开源软件的成本 4.1 部署和迁移成本 4.2 人员和培训成本 4.3 管理维护和技术支持成本 4.4 风险控制成本 第2篇 使用开源软件 第5章 正确使用开源软件 5.1 管理体制 5.2 法律风险 5.2.1 法律因素之著作权 5.2.2 法律因素之许可证 5.2.3 法律因素之专利 5.2.4 问题解析 5.2.5 验证著作权,正本清源 5.2.6 调查专利,借力打力 5.2.7 解读许可证,明察秋毫 5.3 成熟度 5.3.1 优秀的领导者 5.3.2 差异化的开发者社区 5.3.3 庞大的优质用户群 5.3.4 健康的项目“脉动” 5.3.5 健全的安全补丁体制 5.3.6 较完善的文档 5.4 服务 5.5 寻找合适的开源软件 第6章 开源软件之语言和平台 6.1 Harmony 6.2 Android 6.3 Python 6.4 Ruby 6.5 PHP 6.6 Groovy 6.7 Perl 6.8 Flex 6.9 OpenLaszlo 第7章 开源软件之框架和库 7.1 Spring 7.2 Struts 7.3 JBossSeam 7.4 Equinox 7.5 Hibernate 7.6 iBATIS 7.7 Lucene 7.8 Webkit 第8章 开源软件之服务器软件 8.1 ApacheHTTP服务器 8.2 Tomcat 8.3 Jetty 8.4 Geronimo 8.5 JBoss 8.6 GlassFish 8.7 MySQL 8.8 PostgreSQL 8.9 Derby 8.10 FileZillaServer 第9章 开源软件之开发工具 9.1 Eclipse 9.2 NetBeans 9.3 ApacheAnt 9.4 ApacheMaven 9.5 CVS 9.6 Subversion 9.7 GIT 9.8 Bugzilla 9.9 JUnit 9.10 TestNG 第10章 开源软件之桌面应用 10.1 GNOME 10.2 OpenOffice.org 10.3 Emacs 10.4 Firefox 10.5 Thunderbird 10.6 GIMP 10.7 FreeMind 10.8 7-Zip 第3篇 参与开源项目 第11章 开源社区的基础设施 11.1 基础设施 11.1.1 主页(HomePage) 11.1.2 代码库(CodeRepository) 11.1.3 邮件列表(MailingList) 11.1.4 缺陷追踪系统(BugTrackingSystem) 11.1.5 Wiki 11.1.6 其他 11.2 开源项目托管网站 第12章 开源组织和社区 12.1 Apache软件基金会 12.1.1 Apache的历史 …… 第13章 商业模式与实例 第14章 参与开源社区 第15章 开创事业
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值