翻译只熟悉excel表格,因此做了互转的工具
#-*- coding=utf-8 -*-
import xml.etree.ElementTree
import sys
def fetchMap(path):
strmap={}
for line in file(path):
line=line.strip()
if '<string' in line:
pos0=line.find('name="')
pos1=line.find('"', pos0+6)
pos2=line.find('>', pos1)
pos3=line.find('</string>', pos2)
val=line[pos2+1:pos3].decode('utf8').encode("gb2312")
if "," in val: val='"%s"'%val
strmap[line[pos0+6:pos1]] = val
# strmap={}
# e = xml.etree.ElementTree.parse(path).getroot()
# for item in e.findall('string'):
# if item.text!=None:
# strmap[item.attrib["name"]] = (item.text).encode("gb2312")
# else:
# strmap[item.attrib["name"]] = ""
return strmap
strmap=fetchMap('values/strings.xml')
strmap2=fetchMap('values-zh-rCN/strings.xml')
f_handler=open('out.csv', 'w')
sys.stdout=f_handler
for k,v in strmap.items():
if k in strmap2:
print "%s,%s,%s,"%(k,v,strmap2[k])
else:
print "%s,%s,,"%(k,v)
#-*- coding=utf-8 -*-
import sys
import csv
import os
def fetchMap(path):
strmap={}
for line in file(path):
line=line.strip()
if '<string' in line:
pos0=line.find('name="')
pos1=line.find('"', pos0+6)
pos2=line.find('>', pos1)
pos3=line.find('</string>', pos2)
val=line[pos2+1:pos3].decode('utf8').encode("gb2312")
if "," in val: val='"%s"'%val
strmap[line[pos0+6:pos1]] = val
return strmap
strmap=fetchMap('values/strings.xml')
csvmap={}
with open('strs.csv') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
csvmap[row['id']]=row
#sys.stdout=f_handler
f0=file("values/strings1.xml", 'w')
if not os.path.exists('values-zh-rCN'): os.mkdir('values-zh-rCN')
f1=file("values-zh-rCN/strings.xml", 'w')
if not os.path.exists('values-pt-rPT'): os.mkdir('values-pt-rPT')
f2=file("values-pt-rPT/strings.xml", 'w')
if not os.path.exists('values-zh-rTW'): os.mkdir('values-zh-rTW')
f3=file("values-zh-rTW/strings.xml", 'w')
if not os.path.exists('values-ko-rKR'): os.mkdir('values-ko-rKR')
f4=file("values-ko-rKR/strings.xml", 'w')
for line in file('values/strings.xml'):
if '<string' in line:
pos0=line.find('name="')
pos1=line.find('"', pos0+6)
pos2=line.find('>', pos1)
pos3=line.find('</string>', pos2)
val=line[pos2+1:pos3].decode('utf8').encode("gb2312")
if "," in val: val='"%s"'%val
key=line[pos0+6:pos1]
if key not in csvmap: continue
row=csvmap[key]
# 'zh-rCN': '', 'en': '', 'pt-pt': '', 'zh-tw': '', 'ko-kr':
if len(row['en'])==0: continue
f0.write((line[:pos2+1]+row['en']+line[pos3:]))
if len(row['zh-rCN'])!=0:
f1.write((line[:pos2+1]+row['zh-rCN']+line[pos3:]))
if len(row['pt-pt'])!=0:
f2.write((line[:pos2+1]+row['pt-pt']+line[pos3:]))
if len(row['zh-tw'])!=0:
f3.write((line[:pos2+1]+row['zh-tw']+line[pos3:]))
if len(row['ko-kr'])!=0:
f4.write((line[:pos2+1]+row['ko-kr']+line[pos3:]))
else:
f0.write(line)
f1.write(line)
f2.write(line)
f3.write(line)
f4.write(line)
f0.close()
os.rename('values/string1.xml','values/string.xml')