| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- # -*- coding:utf-8 -*-
- # 导出哪些翻译未翻译(找出个别的几个没有翻译, 或者多余的词条)
- import os
- from optparse import OptionParser
- from xml.dom import minidom
- import pyExcelerator
- APP_MOUDULE = 'app'
- FIND_DIDS = [APP_MOUDULE, 'frame', 'module']
- LANGUAGE_CODE = ['', 'zh', 'ar', 'hi', 'tr', 'th']
- def option_parser():
- parser = OptionParser()
- parser.add_option("-o", "--outputDir",
- help="输出路径",
- metavar="outputDir")
- (options, _) = parser.parse_args()
- return options
- def read_xml_2_dom(path):
- f = open(path, 'r')
- try:
- dom = minidom.parse(f)
- f.close()
- return dom
- except:
- print('xml_2_dom error, path:{}'.format(path))
- f.close()
- return
- def read_strings_2_dict(strings_path):
- string_dict = {}
- if not os.path.exists(strings_path):
- return string_dict
- dom = read_xml_2_dom(strings_path)
- if dom == None:
- return
- root = dom.documentElement
- strings = root.getElementsByTagName('string')
- for string in strings:
- translatable = string.getAttribute('translatable')
- if translatable == 'false':
- continue
- key = string.getAttribute('name')
- # print("read_strings_2_dict, key:{0}".format(key))
- value = string.firstChild.data
- string_dict[key] = value
- return string_dict
- def module_export_untranslate(module_name, module_dir, output_dir):
- print("module_export_untranslate, module_name:{0}, module_dir:{1}".format(
- module_name, module_dir))
- all_en_strings = os.path.join(
- module_dir, 'src/main/res/values/strings.xml')
- all_zh_strings = os.path.join(
- module_dir, 'src/main/res/values-zh/strings.xml')
- all_ar_strings = os.path.join(
- module_dir, 'src/main/res/values-ar/strings.xml')
- all_hi_strings = os.path.join(
- module_dir, 'src/main/res/values-hi/strings.xml')
- all_tr_strings = os.path.join(
- module_dir, 'src/main/res/values-tr/strings.xml')
- all_th_strings = os.path.join(
- module_dir, 'src/main/res/values-th/strings.xml')
- en_strings_dict = read_strings_2_dict(all_en_strings)
- zh_strings_dict = read_strings_2_dict(all_zh_strings)
- ar_strings_dict = read_strings_2_dict(all_ar_strings)
- hi_strings_dict = read_strings_2_dict(all_hi_strings)
- tr_strings_dict = read_strings_2_dict(all_tr_strings)
- th_strings_dict = read_strings_2_dict(all_th_strings)
- all_keys = set()
- all_keys.update(en_strings_dict.keys())
- all_keys.update(zh_strings_dict.keys())
- all_keys.update(ar_strings_dict.keys())
- all_keys.update(hi_strings_dict.keys())
- all_keys.update(tr_strings_dict.keys())
- all_keys.update(th_strings_dict.keys())
- module_untranslate_list = [['keyName', 'en', 'zh', 'ar', 'hi', 'tr', 'th']]
- for key in all_keys:
- if not en_strings_dict.has_key(key) or not zh_strings_dict.has_key(key) or not ar_strings_dict.has_key(
- key) or not hi_strings_dict.has_key(key) or not tr_strings_dict.has_key(key) or not th_strings_dict.has_key(key):
- en_value = en_strings_dict.get(key)
- zh_value = zh_strings_dict.get(key)
- ar_value = ar_strings_dict.get(key)
- hi_value = hi_strings_dict.get(key)
- tr_value = tr_strings_dict.get(key)
- th_value = th_strings_dict.get(key)
- module_untranslate_list.append([key, en_value, zh_value, ar_value, hi_value, tr_value, th_value])
- if len(module_untranslate_list) <= 1:
- return
- workbook = pyExcelerator.Workbook()
- ws = workbook.add_sheet(module_name)
- row_index = 0
- for row in module_untranslate_list:
- column_index = 0
- print(row)
- for column in row:
- # print("module_export_untranslate, row_index:{0}, column_index:{1}, column:{2}".format(
- # row_index, column_index, column.encode('utf-8')))
- columnStr = column
- if column is None:
- columnStr = ""
- ws.write(row_index, column_index, columnStr)
- column_index += 1
- row_index += 1
- output_path = os.path.join(output_dir, '{}.xls'.format(module_name))
- workbook.save(output_path)
- def export_untranslate(options):
- output_dir = options.outputDir
- cwd = os.getcwd()
- print("export_untranslate, cwd:{0}, output_dir:${1}".format(cwd, output_dir))
- for dir in FIND_DIDS:
- full_dir = os.path.join(cwd, dir)
- if not os.path.exists(full_dir):
- continue
- if dir == APP_MOUDULE:
- module_export_untranslate(APP_MOUDULE, full_dir, output_dir)
- else:
- for module in os.listdir(full_dir):
- module_export_untranslate(
- module, os.path.join(full_dir, module), output_dir)
- options = option_parser()
- export_untranslate(options)
|