dev_chengFeng
parent
608c296452
commit
d62d808e80
|
|
@ -1,7 +1,12 @@
|
||||||
|
# -*- coding: UTF-8 -*-
|
||||||
|
|
||||||
|
|
||||||
from xlutils import copy
|
from xlutils import copy
|
||||||
import xlwt
|
import xlwt
|
||||||
import xlrd
|
import xlrd
|
||||||
|
import openpyxl
|
||||||
import os
|
import os
|
||||||
|
import shutil
|
||||||
|
|
||||||
#
|
#
|
||||||
import sys
|
import sys
|
||||||
|
|
@ -26,12 +31,16 @@ class Test():
|
||||||
_TranslateName = "LanguageXlsx"
|
_TranslateName = "LanguageXlsx"
|
||||||
_TranslateTitle = ['original', 'change', 'tchinese', 'english', 'korean']
|
_TranslateTitle = ['original', 'change', 'tchinese', 'english', 'korean']
|
||||||
|
|
||||||
|
# out path
|
||||||
|
_TranslateOutPath = os.getcwd() + '/../'
|
||||||
|
|
||||||
def init(self):
|
def init(self):
|
||||||
|
print("*********************")
|
||||||
print("init")
|
print("init")
|
||||||
self.LoadExportConfig()
|
self.LoadExportConfig()
|
||||||
self.LoadTranslateData()
|
self.LoadTranslateData()
|
||||||
print("init done...")
|
print("init done...")
|
||||||
|
print("*********************")
|
||||||
|
|
||||||
|
|
||||||
####TOOL
|
####TOOL
|
||||||
|
|
@ -115,12 +124,12 @@ class Test():
|
||||||
|
|
||||||
# clear all path
|
# clear all path
|
||||||
def ClearTranslateDataPath(self):
|
def ClearTranslateDataPath(self):
|
||||||
|
print("clear path...")
|
||||||
for ol in self._TranslateData:
|
for ol in self._TranslateData:
|
||||||
self._TranslateData[ol]["pathData"] = {}
|
self._TranslateData[ol]["pathData"] = {}
|
||||||
|
|
||||||
# Add a new data
|
# Add a new data
|
||||||
def AddTranslateData(self, content, fileName, colName, rowNum):
|
def AddTranslateData(self, content, fileName, colName, rowNum):
|
||||||
|
|
||||||
if not self._TranslateData.has_key(content):
|
if not self._TranslateData.has_key(content):
|
||||||
self._TranslateData[content] = self.CreateEmptyTranslateItem()
|
self._TranslateData[content] = self.CreateEmptyTranslateItem()
|
||||||
self._TranslateData[content]["original"] = content
|
self._TranslateData[content]["original"] = content
|
||||||
|
|
@ -172,15 +181,14 @@ class Test():
|
||||||
|
|
||||||
def WriteXlsxDataByCol(self, content, path, fileName, colName, rowNums):
|
def WriteXlsxDataByCol(self, content, path, fileName, colName, rowNums):
|
||||||
_savePath = path + fileName +'.xlsx'
|
_savePath = path + fileName +'.xlsx'
|
||||||
_rworkBook = xlrd.open_workbook(_savePath)
|
_rBook = xlrd.open_workbook(_savePath)
|
||||||
_wworkBook = copy.copy(_rworkBook)
|
_wBook = copy.copy(_rBook)
|
||||||
_workSheet = _wworkBook.get_sheet(0)
|
_workSheet = _wBook.get_sheet(0)
|
||||||
|
|
||||||
_colNum = self.ColToNum(colName)
|
_colNum = self.ColToNum(colName)
|
||||||
for row in rowNums:
|
for row in rowNums:
|
||||||
_workSheet.write(row, _colNum, content)
|
_workSheet.write(row, _colNum, content)
|
||||||
|
_wBook.save(_savePath)
|
||||||
_wworkBook.save(_savePath)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -195,28 +203,96 @@ class Test():
|
||||||
_cData = _workSheet.col_values(_colNum)
|
_cData = _workSheet.col_values(_colNum)
|
||||||
for _index in range(len(_cData)):
|
for _index in range(len(_cData)):
|
||||||
if _index >= self._col_offset:
|
if _index >= self._col_offset:
|
||||||
_content = str(_cData[_index])
|
_content = str(_cData[_index]).decode('utf-8')
|
||||||
if _content and _content != "":
|
if _content and _content != "":
|
||||||
self.AddTranslateData(_content, fileName, colName, _index)
|
self.AddTranslateData(_content, fileName, colName, _index)
|
||||||
|
|
||||||
def Export(self):
|
def Export(self):
|
||||||
|
print("*********************")
|
||||||
|
print("Start Export...")
|
||||||
|
self.ClearTranslateDataPath()
|
||||||
for _index in range(len(self._ExportConfig)):
|
for _index in range(len(self._ExportConfig)):
|
||||||
_row = self._ExportConfig[_index]
|
_row = self._ExportConfig[_index]
|
||||||
print("Read:"+_row[0])
|
print("*Read:"+_row[0])
|
||||||
for i in range(len(_row)):
|
for i in range(len(_row)):
|
||||||
if i != 0 and _row[i] != "":
|
if i != 0 and _row[i] != "":
|
||||||
self.ExportRead(self.excelFilePath, _row[0], _row[i])
|
self.ExportRead(self.excelFilePath, _row[0], _row[i])
|
||||||
self.WriteTranslateDataToLocal()
|
self.WriteTranslateDataToLocal()
|
||||||
|
print("Export Done!")
|
||||||
|
print("*********************")
|
||||||
|
|
||||||
|
|
||||||
|
def ReplaceChanges(self):
|
||||||
|
# ReExport
|
||||||
|
self.Export()
|
||||||
|
# replace
|
||||||
|
print("*********************")
|
||||||
|
print("replace changes...")
|
||||||
|
_replace = 0
|
||||||
|
for key in self._TranslateData:
|
||||||
|
_tData = self._TranslateData[key]
|
||||||
|
_original = _tData['original']
|
||||||
|
_change = _tData['change']
|
||||||
|
_pathData = _tData['pathData']
|
||||||
|
if _change.strip() != "" and _pathData != {} and _original != _change:
|
||||||
|
print("*Replace "+ _change +" to "+ _original)
|
||||||
|
for fl in _pathData:
|
||||||
|
l = fl.split('|')
|
||||||
|
self.WriteXlsxDataByCol(_change, self.excelFilePath, l[0], l[1], _pathData[fl])
|
||||||
|
_replace += 1
|
||||||
|
|
||||||
|
# ReExport again
|
||||||
|
if _replace > 0:
|
||||||
|
self.Export()
|
||||||
|
else:
|
||||||
|
print("no available changes")
|
||||||
|
print("replace done!")
|
||||||
|
print("*********************")
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def DoTranslate(self, language, path, fileName, colName):
|
||||||
|
_colNum = self.ColToNum(colName)
|
||||||
|
_filePath = path + fileName + ".xlsx"
|
||||||
|
|
||||||
|
_rBook = xlrd.open_workbook(_filePath)
|
||||||
|
_wBook = copy.copy(_rBook)
|
||||||
|
_rSheet = _rBook.sheet_by_index(0)
|
||||||
|
_wSheet = _wBook.get_sheet(0)
|
||||||
|
|
||||||
|
_cData = _rSheet.col_values(_colNum)
|
||||||
|
for _index in range(len(_cData)):
|
||||||
|
if _index >= self._col_offset:
|
||||||
|
_content = str(_cData[_index]).decode('utf-8')
|
||||||
|
if _content and _content != "":
|
||||||
|
if self._TranslateData.has_key(_content):
|
||||||
|
_translateContent = self._TranslateData[_content][language].decode('utf-8')
|
||||||
|
if _translateContent and _translateContent != "":
|
||||||
|
_wSheet.write(_index, _colNum, _translateContent)
|
||||||
|
else:
|
||||||
|
print("no ["+ language +"] translate for :" + _content)
|
||||||
|
_wBook.save(_filePath)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def applyChange(self):
|
def Translate(self, language):
|
||||||
pass
|
_absPath = os.path.abspath(os.path.join(os.path.dirname("__file__"),os.path.pardir))
|
||||||
|
_path = _absPath + "/base_data_" + language
|
||||||
|
if os.path.exists(_path):
|
||||||
|
shutil.rmtree(_path)
|
||||||
|
shutil.copytree(_absPath + "/base_data", _path)
|
||||||
|
|
||||||
|
for _index in range(len(self._ExportConfig)):
|
||||||
|
_row = self._ExportConfig[_index]
|
||||||
|
for i in range(len(_row)):
|
||||||
|
if i != 0 and _row[i] != "":
|
||||||
|
self.DoTranslate(language, _path+"/", _row[0], _row[i])
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
t = Test()
|
t = Test()
|
||||||
t.init()
|
t.init()
|
||||||
t.Export()
|
# t.Export()
|
||||||
|
t.ReplaceChanges()
|
||||||
|
# t.Translate("tchinese")
|
||||||
|
|
@ -5,4 +5,6 @@ https://www.runoob.com/w3cnote/python-pip-install-usage.html
|
||||||
|
|
||||||
3、安装读写xls表的插件
|
3、安装读写xls表的插件
|
||||||
pip install xlrd
|
pip install xlrd
|
||||||
pip install xlwt
|
pip install xlwt
|
||||||
|
pip install xlutils
|
||||||
|
pip install openpyxl
|
||||||
Loading…
Reference in New Issue