1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 import zipfile
24 from lxml import etree
25 from translate.storage.xml_name import XmlNamer
26
28 z = zipfile.ZipFile(filename, 'r')
29 return {'content.xml': z.read("content.xml"),
30 'meta.xml': z.read("meta.xml"),
31 'styles.xml': z.read("styles.xml")}
32
33 -def copy_odf(input_zip, output_zip, exclusion_list):
34 for name in [name for name in input_zip.namelist() if name not in exclusion_list]:
35 output_zip.writestr(name, input_zip.read(name))
36 return output_zip
37
39 return '{%s}%s' % (nsmap[short_namespace], tag)
40
41 -def add_file(output_zip, manifest_data, new_filename, new_data):
42 root = etree.fromstring(manifest_data)
43 namer = XmlNamer(root)
44 namespacer = namer.namespace('manifest')
45 file_entry_tag = namespacer.name('file-entry')
46 media_type_attr = namespacer.name('media-type')
47 full_path_attr = namespacer.name('full-path')
48
49 root.append(etree.Element(file_entry_tag, {media_type_attr: 'application/x-xliff+xml',
50 full_path_attr: new_filename}))
51 output_zip.writestr(new_filename, new_data)
52 output_zip.writestr('META-INF/manifest.xml', etree.tostring(root, xml_declaration=True, encoding="UTF-8"))
53 return output_zip
54