e24920df9d538ebf1516adda0d8e02372ff241da
[Evergreen.git] / build / i18n / scripts / merge_ils_events.py
1 #!/usr/bin/env python
2 import xml.dom.minidom
3 import optparse
4
5 def merge_events(master, localization):
6     """
7     Merge two event definition files
8     """
9
10     master_xml = xml.dom.minidom.parse(master)
11     l10n_xml = xml.dom.minidom.parse(localization)
12     impl = xml.dom.minidom.getDOMImplementation()
13
14     merged = impl.createDocument(None, 'ils_events', None)
15
16     # Add notes
17     notes = master_xml.getElementsByTagName('notes')[0]
18     merged.documentElement.appendChild(notes)
19
20     events = master_xml.getElementsByTagName('event')
21     for event in events:
22         merged.documentElement.appendChild(event)
23         event.appendChild(get_l10n_event_desc(l10n_xml, event.getAttribute('code')))
24
25     return merged
26
27 def get_l10n_event_desc(l10n_xml, code):
28     """
29     Gets a localized event description
30     """
31
32     desc_nodes = ''
33
34     events = l10n_xml.getElementsByTagName('event')
35     for event in events:
36         if event.getAttribute('code') == code:
37             for node in event.childNodes:
38                 if node.nodeName == 'desc':
39                     return node
40         else:
41             continue
42             
43 def main():
44     """
45     Determine what action to take
46     """
47     opts = optparse.OptionParser()
48     opts.add_option('-m', '--master', action='store', \
49         help='Master ils_events.xml file into which we are merging our additional localized strings', \
50         metavar='FILE')
51     opts.add_option('-l', '--localization', action='store', \
52         help='Localized ils_events.xml file', \
53         metavar='FILE')
54     opts.add_option('-o', '--output', dest='outfile', \
55         help='Write output to FILE (defaults to STDOUT)', metavar='FILE')
56     (options, args) = opts.parse_args()
57
58     if not options.master:
59         opts.error('Must specify the master ils_events file (-m option)')
60     elif not options.localization:
61         opts.error('Must specify the localized ils_events file to merge (-l option)')
62     else:
63         merged = merge_events(options.master, options.localization)
64
65     if options.outfile:
66         outfile = open(options.outfile, 'w')
67         outfile.write(merged.toprettyxml(encoding='utf-8'))
68     else:
69         print merged.toprettyxml(encoding='utf-8')
70
71 if __name__ == '__main__':
72     main()
73
74 # vim:et:ts=4:sw=4: