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
51
53 if isinstance(input, multistring):
54 strings = input.strings
55 elif isinstance(input, list):
56 strings = input
57 else:
58 strings = [input]
59
60 for index, string in enumerate(strings):
61 strings[index] = re.sub('\{(\d)\}', lambda x: "%%%d$s" % (int(x.group(1))+1), string)
62 if len(strings) == 1:
63 return strings[0]
64 else:
65 return strings
66
68 """Converts from Python .po to PHP .po
69
70 @param inputfile: file handle of the source
71 @param outputfile: file handle to write to
72 @param template: unused
73 """
74 convertor = pypo2phppo()
75 inputstore = po.pofile(inputfile)
76 outputstore = convertor.convertstore(inputstore)
77 if outputstore.isempty():
78 return False
79 outputfile.write(str(outputstore))
80 return True
81
83 """Converts from Python .po to PHP .po"""
84 from translate.convert import convert
85
86 formats = {"po":("po", convertpy2php)}
87 parser = convert.ConvertOptionParser(formats, description=__doc__)
88 parser.run(argv)
89
90 if __name__ == '__main__':
91 main()
92