最新车企给了一份多语言的翻译表,需要进行多语言支持,像下面这样
针对这种文件,我们肯定不能一个个字符串取拷贝,很容易出错,所以想用python取处理这个表格然后生成对应的string文件.
1.首先我们建立好string的文件夹,这个在AndroidStudio上进行操作:
按照上面的图步骤一个个去加
2.开始编写python解析excel
2.1 导入包
import xlrd
from xml.dom.minidom import Document
import pandas as pd #也可以用这种方式取读取,这个工程采用另一种方式
2.2 读取文件
创建全局DOM文档对象,使用xlrd模块的open_workbook函数打开指定Excel文件并获得Book对象(工作簿)SR24 App Translations_230516.xls’
doc = Document()
wb = xlrd.open_workbook('SR24 App Translations_230516.xls')
注意工作目录:
2.3 创建方法,指定某一列数据写入string的name和value
从Android strings.xml的格式和excel的对比的话,我们知道,我们需要把excel第一列的值写入到string文件中name=“” 这里面,然后把第三列到最后一列的值从第二行开始插入到value区域,最后把这些内容写入strings.xml里面
def generateXml():
# 创建根元素
message_ele = doc.createElement('resources')
doc.appendChild(message_ele)
for row in range(1,worksheet.nrows):#从第二行开始遍历,过滤掉key name
value = worksheet.cell_value(row, 16) # 第三列的数据,下标从0开始
keys = worksheet.cell_value(row, 0) # 第一列的key,下标从0开始
message_body_ele = doc.createElement('string')
message_body_ele.setAttribute('name', keys)
message_body_ele.appendChild(doc.createTextNode(value))
message_ele.appendChild(message_body_ele)
print(value)
# ===== 创建message_body_ele元素 =====
f_name_full = f'strings.xml'
with open(f_name_full, 'w', encoding='utf-8') as f:
doc.writexml(f, indent='\t', newl='\n', addindent='\t', encoding='utf-8')
print(f"Write to {f_name_full} OK")