1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 """Produces a clean file from an unclean file (Trados/Wordfast) by stripping
23 out the tw4win indicators.
24
25 This does not convert an RTF file to PO/XLIFF, but produces the target file
26 with only the target text in from a text version of the RTF.
27 """
28
29 from translate.storage import factory
30 from translate.misc.multistring import multistring
31 import re
32
33 tw4winre = re.compile(r"\{0>.*?<\}\d{1,3}\{>(.*?)<0\}", re.M | re.S)
34
36 """cleans the targets in the given unit"""
37 if isinstance(unit.target, multistring):
38 strings = unit.target.strings
39 else:
40 strings = [unit.target]
41 for index, string in enumerate(strings):
42 string = string.replace("\par", "")
43 strings[index] = tw4winre.sub(r"\1", string)
44 if len(strings) == 1:
45 unit.target = strings[0]
46 else:
47 unit.target = strings
48
50 """cleans the given file"""
51 for unit in thefile.units:
52 cleanunit(unit)
53 return thefile
54
55 -def runclean(inputfile, outputfile, templatefile):
56 """reads in inputfile, cleans, writes to outputfile"""
57 fromfile = factory.getobject(inputfile)
58
59 cleanfile(fromfile)
60
61
62 outputfile.write(str(fromfile))
63 return True
64
66 from translate.convert import convert
67 formats = {"po":("po", runclean), "xlf":("xlf", runclean), None:("po", runclean)}
68 parser = convert.ConvertOptionParser(formats, usetemplates=False, description=__doc__)
69 parser.run()
70
71 if __name__ == '__main__':
72 main()
73