用python将Android资源文件中的不同语言的ResourceName提取到excel中

背景

公司最近要输出app的各语种的翻译内容,但app的语种太多,人工统计极为麻烦,通过python程序自动识别资源文件中不同语种的strings.xml的分析,并将最终结果以excel的方式展示出来。

工具

xlwt xml.dom

准备工作

  • python环境
  • 安装xlwt

实现

分析Android资源文件的目录
Android资源文件
所有的资源都存放在values*文件夹下,我们只要values文件夹下的strings.xml文件

初始化excel表操作部分
def init_xls(sheetname):
    font = xlwt.Font()
    font.name = 'SimSun'
    style = xlwt.XFStyle()
    style.font = font
    fxls = xlwt.Workbook(encoding='utf-8')
    table = fxls.add_sheet(sheetname, cell_overwrite_ok=True)
    return fxls, table
解析strings.xml,将解析结果存到字典中
def read_string_xml(xmlname):
    sdict = {}
    doc = minidom.parse(xmlname)
    stringtaglen = len(doc.getElementsByTagName('string'))
    itemlen = len(doc.getElementsByTagName('item'))

    for idx in range(0, stringtaglen):
        nameattr = doc.getElementsByTagName('string')[idx].getAttribute('name')
        fc = doc.getElementsByTagName('string')[idx].firstChild
        if fc is None:
            content = ""
        else:
            content = fc.data
        sdict[nameattr] = content

    for idx in range(0, itemlen):
        nameattr = doc.getElementsByTagName('item')[idx].getAttribute('name')
        fc = doc.getElementsByTagName('item')[idx].firstChild
        if fc is None:
            content = ""
        else:
            content = fc.data
        sdict[nameattr] = content
    return sdict
输出到excel中
def main():
    inputfilepath = r'C:\Users\XXX\Desktop\res-MediaCenter'
    xls, table = init_xls('Language')
    table.write(0, 0, 'ResourceName')
    dir_list = os.listdir(inputfilepath)
    list = []
    dict = {}
    i = 1
    for file in dir_list:
        if file.__contains__('values'):
            filename = inputfilepath + '/' + file + '/' + 'strings.xml'
            if not os.path.exists(filename):
                continue
            resourcedict = read_string_xml(filename)
            for resource in resourcedict:
                if resource not in list:
                    list.append(resource)
                    dict[resource] = i
                    table.write(i, 0, resource)
                    i = i + 1
    k = 1
    for file in dir_list:
        if file.__contains__('values'):
            filename = inputfilepath + '/' + file + '/' + 'strings.xml'
            if not os.path.exists(filename):
                continue
            resourcedict = read_string_xml(filename)
            colname = file[7:]
            if colname == "":
                colname = "default"
            table.write(0, k, colname)
            for resource in resourcedict:
                table.write(dict[resource], k, resourcedict[resource])
            k = k + 1
    outputfilepath = r'C:\Users\XXX\Desktop\MediaCenter.xls'
    if os.path.exists(outputfilepath):
        os.remove(outputfilepath)
    xls.save(outputfilepath)

结语

一秒钟完成统计,编程提高工作效率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值