需求:
项目开发中需要支持多种语言,需要将英文翻译成其他语言如 俄语、泰语等等,
就需要将项目中的英文字符串导入到excel表格中交给客户去翻译。
下面python代码是以win32编程中的字符串资源导入excel表格的示例
上面是用到的4个字符串资源rc文件
win32编程字符串资源文件内容的格式如下所示:
STRINGTABLE
BEGIN
IDS_STRING1 "iphone"
IDS_STRING2 "xiaomi"
IDS_STRING3 "Music"
IDS_STRING4 "movie"
IDS_STRING5 "picture"
END
由一系列的 IDS_STRING1 "iphone" 方式定义了项目中用到的所以字符串资源。
'''
将Win32编程字符串资源rc文件里定义的IDS字符串导入到Excel表格中,
方便将对应的字符串翻译成其他语言
Win32编程字符串资源rc文件里的内容格式如下:
STRINGTABLE
BEGIN
IDS_STRING1 "iphone"
IDS_STRING2 "xiaomi"
IDS_STRING3 "Music"
IDS_STRING4 "movie"
IDS_STRING5 "picture"
END
'''
import sys
import re
import xlwt
# 获取执行Python脚本 命令行参数列表
def get_param_list():
param_list = []
for param in sys.argv:
param_list.append(param)
return param_list
# 创建Excel文件对象,并返回文件对象
def create_excel_workbook():
excelworkbook = xlwt.Workbook(encoding='utf-8')
return excelworkbook
# 保存Excel内容到resource.xls中
def save_excel_workbook(excelworkbook):
excelworkbook.save('win32_resource_string.xls')
# 先读取IDS资源文件,然后用正则表达式匹配出含有字符串内容的有效数据,然后把匹配到的有效数据写入到Excel表格里面
# 参数1:创建的Excel表格文件对象
# 参数2:需要读取的“字符串资源rc文件”
def write_resource_data_to_excel(excelworkbook, sourcefilename):
# 往Excel表格文件对象里添加 sheet 并取名为资源的文件名
workexcelsheet = excelworkbook.add_sheet(sourcefilename)
# 只读的方式打开资源文件
sourcefile = open(sourcefilename, 'r')
# readlines()读取整个文件每行的内容并返回一个列表
sourcefileLinestr = sourcefile.readlines()
line = 0 # 定义写入excel表格的行数
for strline in sourcefileLinestr:
# 编译正则表达式,生成一个正则表达式对象,用于匹配有效的字符串内容
pattern = re.compile(r'IDS.*')
strIDSValue = re.search(pattern, strline) # 按正则表达式的规则匹配有效的内容
if strIDSValue is None:
pass
else:
strIDSLine = strIDSValue.group() # 获取到匹配到的内容,例如:IDS_STRING1 "iphone"
strIDSLineSplit = strIDSLine.split('"') # 按 " 将字符串内容进行分割,并返回分割后的列表
workexcelsheet.write(line, 0, label=strIDSLineSplit[0]) # 将分割字符串得到的列表内容写入到Excel表格中(行,列,写入的值)
workexcelsheet.write(line, 1, label=strIDSLineSplit[1]) # 将分割字符串得到的列表内容写入到Excel表格中(行,列,写入的值)
line = line + 1 # 写完一行,行数加 1
if __name__ == '__main__':
# 获取命令行参数列表,列表第一个值是该python脚本的名称,其他参数是资源文件的名称
param_list = get_param_list()
param_list.pop(0) # 去掉参数列表第一个值,得到真正的参数值列表,资源文件名
print(param_list)
excelworkbook = create_excel_workbook() # 创建Excel文件对象,并返回文件对象
for param in param_list:
filename = param.split(".") # 将资源文件的名称用 . 分割得到一个列表
try:
if filename[1] == 'rc': # 如果资源文件名的后缀是 rc 表明输入参数正确
print(param)
write_resource_data_to_excel(excelworkbook, param) # 读取资源文件,得到有效数据,并写入Excel表格
else:
print('the input param "{}" is not resource file !!!'.format(param))
except:
print('the input param "{}" is wrong or the resource file content format is wrong!!!'.format(param))
save_excel_workbook(excelworkbook) # 保存数据到Excel表格中
运行上述python程序:
启动Windows DOS 命令行执行该程序
或者写一个bat批处理脚本,执行双击运行该bat脚本即可
就可以得到我们想要的excel文件了(excelworkbook.save('win32_resource_string.xls'))