1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 """ Convert Python format .po files to PHP format .po files """
23
24 import re
25 from translate.storage import po
26 from translate.misc.multistring import multistring
27
30 """Converts a given .po file (Python Format) to a PHP format .po file, the difference being
31 how variable substitutions work. PHP uses a %1$s format, and Python uses
32 a {0} format (zero indexed). This method will convert, e.g.:
33 I have {1} apples and {0} oranges
34 to
35 I have %2$s apples and %1$s oranges
36 This method ignores strings with %s as both languages will recognize that.
37 """
38 thetargetfile = po.pofile(inputfile="")
39
40 for unit in inputstore.units:
41 newunit = self.convertunit(unit)
42 thetargetfile.addunit(newunit)
43 return thetargetfile
44
54
56 return re.sub('\{(\d)\}', lambda x: "%%%d$s" % (int(x.group(1))+1), string)
57
59 if isinstance(input, multistring):
60 strings = input.strings
61 elif isinstance(input, list):
62 strings = input
63 else:
64 return self.convertstring(input)
65
66 for index, string in enumerate(strings):
67 strings[index] = re.sub('\{(\d)\}', lambda x: "%%%d$s" % (int(x.group(1))+1), string)
68 return strings
69
71 """Converts from Python .po to PHP .po
72
73 @param inputfile: file handle of the source
74 @param outputfile: file handle to write to
75 @param template: unused
76 """
77 convertor = pypo2phppo()
78 inputstore = po.pofile(inputfile)
79 outputstore = convertor.convertstore(inputstore)
80 if outputstore.isempty():
81 return False
82 outputfile.write(str(outputstore))
83 return True
84
86 """Converts from Python .po to PHP .po"""
87 from translate.convert import convert
88
89 formats = {"po":("po", convertpy2php)}
90 parser = convert.ConvertOptionParser(formats, description=__doc__)
91 parser.run(argv)
92
93 if __name__ == '__main__':
94 main()
95