Mass Deface
Email Grabber
4:
msgid=msgid[2:]
if msgstr[:2]=='""' and len(msgstr)>4:
msgstr=msgstr[2:]
message=GTMessage(msgid,msgstr,refs)
self._messages.append(message)
msgstr=""
msgid=""
refs=[]
else:
msgstr=msgstr+line[pos:pos2+1]+"\n"
if inmsgid==0 and line[:5]=="msgid":
msgid=""
inmsgid=1
if inmsgid==1:
if pos==-1:
inmsgid=0
else:
msgid=msgid+line[pos:pos2+1]+"\n"
if msgstr and msgid:
message=GTMessage(msgid,msgstr,refs)
self._messages.append(message)
class GTMaster:
"""
A class containing a master catalogue of gettext dictionaries
"""
def __init__(self,dicts):
"""
The constructor for the GTMaster class
@self The object instance
@dicts An array of dictionaries to merge
"""
self._messages=[]
self.createMaster(dicts)
def createMaster(self,dicts):
"""
Create the master catalogue
@self The object instance
@dicts An array of dictionaries to merge
"""
self._master=dicts[0]
self._dicts=dicts[1:]
for message in self._master._messages:
gtm=GTMasterMessage(message._id,message._refs)
gtm.addMessage(message._message,self._master._filename[:-3])
for dict in self._dicts:
res=dict.getMsgstr(message._id)
if(res):
gtm.addMessage(res,dict._filename[:-3])
self._messages.append(gtm)
def __str__(self):
"""
Return a string representation of the object
@self The object instance
"""
res=""
for message in self._messages:
res=res+str(message)+"\n"
return res
def printUsage():
"Print the usage messages"
print "Usage: ", str(sys.argv[0])," [OPTION] file.po [ref.po]\n\
This program can be used to alter .po files in ways no sane mind would think about.\n\
-o result will be written to FILE\n\
--invert invert a po file by switching msgid and msgstr\n\
--master join any number of files in a master-formatted catalog\n\
--empty empty the contents of the .po file, creating a .pot\n\
--append append entries from ref.po that don't exist in file.po\n\
\n\
Note: It is just a replacement of msghack for backward support.\n"
if __name__=="__main__":
output=None
res=None
if("-o") in sys.argv:
if (len(sys.argv)<=sys.argv.index("-o")+1):
print "file.po and ref.po are not specified!\n"
printUsage()
exit(1)
output=sys.argv[sys.argv.index("-o")+1]
sys.argv.remove("-o")
sys.argv.remove(output)
if("--invert") in sys.argv:
if (len(sys.argv)<=sys.argv.index("--invert")+1):
print "file.po is not specified!\n"
printUsage()
exit(1)
file=sys.argv[sys.argv.index("--invert")+1]
gtf=GTFile(file)
res1=gtf.msgidDupes()
if res1:
sys.stderr.write(res1)
sys.exit(1)
res=str(gtf.invertedStrings())
elif("--empty") in sys.argv:
if (len(sys.argv)<=sys.argv.index("--empty")+1):
print "file.po is not specified!\n"
printUsage()
exit(1)
file=sys.argv[sys.argv.index("--empty")+1]
gtf=GTFile(file)
res=str(gtf.emptyMsgStrings())
elif("--master") in sys.argv:
if (len(sys.argv)<=sys.argv.index("--master")+1):
print "file.po is not specified!\n"
printUsage()
exit(1)
loc=sys.argv.index("--master")+1
gtfs=[]
for file in sys.argv[loc:]:
gtfs.append(GTFile(file))
master=GTMaster(gtfs)
res=str(master)
elif("--append") in sys.argv:
if (len(sys.argv)<=sys.argv.index("--append")+2):
print "file.po and/or ref.po are not specified!\n"
printUsage()
exit(1)
file=sys.argv[sys.argv.index("--append")+1]
file2=sys.argv[sys.argv.index("--append")+2]
gtf=GTFile(file)
gtf2=GTFile(file2)
gtf.append(gtf2)
res=str(gtf)
else:
#print "Not implemented: "+str(sys.argv)
printUsage()
sys.exit(1)
if not output:
print res
else:
file=open(output,"w")
file.write(res)
sys.exit(0)