Mercurial > babel > old > mirror
annotate scripts/import_cldr.py @ 29:cbda87af9aa0
Changing `write_po` to include licensing info, same as the project. Since the method is also to create the initial pot file, we also include the year in the copyright. We also mark the translations catalog template as fuzzy as it should be, only localized translations catalogs ready to be compiled should not include the fuzzy bit on the header.
author | palgarvio |
---|---|
date | Sun, 03 Jun 2007 15:30:07 +0000 |
parents | 695884591af6 |
children | 9a00ac84004c |
rev | line source |
---|---|
3 | 1 #!/usr/bin/env python |
2 # -*- coding: utf-8 -*- | |
3 # | |
4 # Copyright (C) 2007 Edgewall Software | |
5 # All rights reserved. | |
6 # | |
7 # This software is licensed as described in the file COPYING, which | |
8 # you should have received as part of this distribution. The terms | |
9 # are also available at http://babel.edgewall.org/wiki/License. | |
10 # | |
11 # This software consists of voluntary contributions made by many | |
12 # individuals. For the exact contribution history, see the revision | |
13 # history and logs, available at http://babel.edgewall.org/log/. | |
14 | |
15 import copy | |
16 from optparse import OptionParser | |
17 import os | |
18 import pickle | |
19 import sys | |
20 try: | |
21 from xml.etree.ElementTree import parse | |
22 except ImportError: | |
23 from elementtree.ElementTree import parse | |
24 | |
11 | 25 from babel import dates, numbers |
3 | 26 |
17 | 27 weekdays = {'mon': 0, 'tue': 1, 'wed': 2, 'thu': 3, 'fri': 4, 'sat': 5, |
28 'sun': 6} | |
10
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
29 |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
30 try: |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
31 any |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
32 except NameError: |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
33 def any(iterable): |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
34 return filter(None, list(iterable)) |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
35 |
3 | 36 def _text(elem): |
37 buf = [elem.text or ''] | |
38 for child in elem: | |
39 buf.append(_text(child)) | |
40 buf.append(elem.tail or '') | |
41 return u''.join(filter(None, buf)).strip() | |
42 | |
43 def main(): | |
44 parser = OptionParser(usage='%prog path/to/cldr') | |
45 options, args = parser.parse_args() | |
46 if len(args) != 1: | |
47 parser.error('incorrect number of arguments') | |
48 | |
49 srcdir = args[0] | |
50 destdir = os.path.join(os.path.dirname(os.path.abspath(sys.argv[0])), | |
51 '..', 'babel', 'localedata') | |
52 | |
10
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
53 sup = parse(os.path.join(srcdir, 'supplemental', 'supplementalData.xml')) |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
54 |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
55 # build a territory containment mapping for inheritance |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
56 regions = {} |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
57 for elem in sup.findall('//territoryContainment/group'): |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
58 regions[elem.attrib['type']] = elem.attrib['contains'].split() |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
59 |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
60 # Resolve territory containment |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
61 territory_containment = {} |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
62 region_items = regions.items() |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
63 region_items.sort() |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
64 for group, territory_list in region_items: |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
65 for territory in territory_list: |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
66 containers = territory_containment.setdefault(territory, set([])) |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
67 if group in territory_containment: |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
68 containers |= territory_containment[group] |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
69 containers.add(group) |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
70 |
3 | 71 filenames = os.listdir(os.path.join(srcdir, 'main')) |
72 filenames.remove('root.xml') | |
73 filenames.sort(lambda a,b: len(a)-len(b)) | |
74 filenames.insert(0, 'root.xml') | |
75 | |
76 dicts = {} | |
77 | |
78 for filename in filenames: | |
79 print>>sys.stderr, 'Processing input file %r' % filename | |
80 stem, ext = os.path.splitext(filename) | |
81 if ext != '.xml': | |
82 continue | |
83 | |
28
695884591af6
* Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents:
24
diff
changeset
|
84 tree = parse(os.path.join(srcdir, 'main', filename)) |
3 | 85 data = {} |
86 | |
10
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
87 language = None |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
88 elem = tree.find('//identity/language') |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
89 if elem is not None: |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
90 language = elem.attrib['type'] |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
91 print>>sys.stderr, ' Language: %r' % language |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
92 |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
93 territory = None |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
94 elem = tree.find('//identity/territory') |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
95 if elem is not None: |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
96 territory = elem.attrib['type'] |
15 | 97 else: |
98 territory = '001' # world | |
10
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
99 print>>sys.stderr, ' Territory: %r' % territory |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
100 regions = territory_containment.get(territory, []) |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
101 print>>sys.stderr, ' Regions: %r' % regions |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
102 |
3 | 103 # <localeDisplayNames> |
104 | |
105 territories = data.setdefault('territories', {}) | |
106 for elem in tree.findall('//territories/territory'): | |
107 if 'draft' in elem.attrib and elem.attrib['type'] in territories: | |
108 continue | |
109 territories[elem.attrib['type']] = _text(elem) | |
110 | |
111 languages = data.setdefault('languages', {}) | |
112 for elem in tree.findall('//languages/language'): | |
113 if 'draft' in elem.attrib and elem.attrib['type'] in languages: | |
114 continue | |
115 languages[elem.attrib['type']] = _text(elem) | |
116 | |
117 variants = data.setdefault('variants', {}) | |
118 for elem in tree.findall('//variants/variant'): | |
119 if 'draft' in elem.attrib and elem.attrib['type'] in variants: | |
120 continue | |
121 variants[elem.attrib['type']] = _text(elem) | |
122 | |
123 scripts = data.setdefault('scripts', {}) | |
124 for elem in tree.findall('//scripts/script'): | |
125 if 'draft' in elem.attrib and elem.attrib['type'] in scripts: | |
126 continue | |
127 scripts[elem.attrib['type']] = _text(elem) | |
128 | |
129 # <dates> | |
130 | |
10
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
131 week_data = data.setdefault('week_data', {}) |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
132 supelem = sup.find('//weekData') |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
133 |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
134 for elem in supelem.findall('minDays'): |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
135 territories = elem.attrib['territories'].split() |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
136 if territory in territories or any([r in territories for r in regions]): |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
137 week_data['min_days'] = int(elem.attrib['count']) |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
138 |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
139 for elem in supelem.findall('firstDay'): |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
140 territories = elem.attrib['territories'].split() |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
141 if territory in territories or any([r in territories for r in regions]): |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
142 week_data['first_day'] = weekdays[elem.attrib['day']] |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
143 |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
144 for elem in supelem.findall('weekendStart'): |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
145 territories = elem.attrib['territories'].split() |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
146 if territory in territories or any([r in territories for r in regions]): |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
147 week_data['weekend_start'] = weekdays[elem.attrib['day']] |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
148 |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
149 for elem in supelem.findall('weekendEnd'): |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
150 territories = elem.attrib['territories'].split() |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
151 if territory in territories or any([r in territories for r in regions]): |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
152 week_data['weekend_end'] = weekdays[elem.attrib['day']] |
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
153 |
3 | 154 time_zones = data.setdefault('time_zones', {}) |
155 for elem in tree.findall('//timeZoneNames/zone'): | |
156 time_zones[elem.tag] = unicode(elem.findtext('displayName')) | |
157 | |
158 for calendar in tree.findall('//calendars/calendar'): | |
159 if calendar.attrib['type'] != 'gregorian': | |
160 # TODO: support other calendar types | |
161 continue | |
162 | |
163 months = data.setdefault('months', {}) | |
164 for ctxt in calendar.findall('months/monthContext'): | |
165 ctxts = months.setdefault(ctxt.attrib['type'], {}) | |
166 for width in ctxt.findall('monthWidth'): | |
167 widths = ctxts.setdefault(width.attrib['type'], {}) | |
168 for elem in width.findall('month'): | |
169 if 'draft' in elem.attrib and int(elem.attrib['type']) in widths: | |
170 continue | |
171 widths[int(elem.attrib.get('type'))] = unicode(elem.text) | |
172 | |
173 days = data.setdefault('days', {}) | |
174 for ctxt in calendar.findall('days/dayContext'): | |
175 ctxts = days.setdefault(ctxt.attrib['type'], {}) | |
176 for width in ctxt.findall('dayWidth'): | |
177 widths = ctxts.setdefault(width.attrib['type'], {}) | |
178 for elem in width.findall('day'): | |
10
0ca5dd65594f
Pull in some supplemental data from the CLDR, for things like the first day of the week.
cmlenz
parents:
3
diff
changeset
|
179 dtype = weekdays[elem.attrib['type']] |
3 | 180 if 'draft' in elem.attrib and dtype in widths: |
181 continue | |
182 widths[dtype] = unicode(elem.text) | |
183 | |
184 quarters = data.setdefault('quarters', {}) | |
185 for ctxt in calendar.findall('quarters/quarterContext'): | |
186 ctxts = quarters.setdefault(ctxt.attrib['type'], {}) | |
187 for width in ctxt.findall('quarterWidth'): | |
188 widths = ctxts.setdefault(width.attrib['type'], {}) | |
189 for elem in width.findall('quarter'): | |
190 if 'draft' in elem.attrib and int(elem.attrib['type']) in widths: | |
191 continue | |
192 widths[int(elem.attrib.get('type'))] = unicode(elem.text) | |
193 | |
194 eras = data.setdefault('eras', {}) | |
195 for width in calendar.findall('eras/*'): | |
196 ewidth = {'eraNames': 'wide', 'eraAbbr': 'abbreviated'}[width.tag] | |
197 widths = eras.setdefault(ewidth, {}) | |
198 for elem in width.findall('era'): | |
199 if 'draft' in elem.attrib and int(elem.attrib['type']) in widths: | |
200 continue | |
201 widths[int(elem.attrib.get('type'))] = unicode(elem.text) | |
202 | |
203 # AM/PM | |
204 periods = data.setdefault('periods', {}) | |
205 for elem in calendar.findall('am'): | |
206 if 'draft' in elem.attrib and elem.tag in periods: | |
207 continue | |
208 periods[elem.tag] = unicode(elem.text) | |
209 for elem in calendar.findall('pm'): | |
210 if 'draft' in elem.attrib and elem.tag in periods: | |
211 continue | |
212 periods[elem.tag] = unicode(elem.text) | |
213 | |
214 date_formats = data.setdefault('date_formats', {}) | |
215 for elem in calendar.findall('dateFormats/dateFormatLength'): | |
216 if 'draft' in elem.attrib and elem.attrib.get('type') in date_formats: | |
217 continue | |
218 try: | |
219 date_formats[elem.attrib.get('type')] = \ | |
11 | 220 dates.parse_pattern(unicode(elem.findtext('dateFormat/pattern'))) |
3 | 221 except ValueError, e: |
28
695884591af6
* Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents:
24
diff
changeset
|
222 print>>sys.stderr, 'ERROR: %s' % e |
3 | 223 |
224 time_formats = data.setdefault('time_formats', {}) | |
225 for elem in calendar.findall('timeFormats/timeFormatLength'): | |
226 if 'draft' in elem.attrib and elem.attrib.get('type') in time_formats: | |
227 continue | |
228 try: | |
229 time_formats[elem.attrib.get('type')] = \ | |
11 | 230 dates.parse_pattern(unicode(elem.findtext('timeFormat/pattern'))) |
3 | 231 except ValueError, e: |
28
695884591af6
* Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents:
24
diff
changeset
|
232 print>>sys.stderr, 'ERROR: %s' % e |
3 | 233 |
234 # <numbers> | |
235 | |
236 number_symbols = data.setdefault('number_symbols', {}) | |
237 for elem in tree.findall('//numbers/symbols/*'): | |
238 number_symbols[elem.tag] = unicode(elem.text) | |
239 | |
240 decimal_formats = data.setdefault('decimal_formats', {}) | |
241 for elem in tree.findall('//decimalFormats/decimalFormatLength'): | |
242 if 'draft' in elem.attrib and elem.attrib.get('type') in decimal_formats: | |
243 continue | |
28
695884591af6
* Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents:
24
diff
changeset
|
244 pattern = unicode(elem.findtext('decimalFormat/pattern')) |
695884591af6
* Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents:
24
diff
changeset
|
245 decimal_formats[elem.attrib.get('type')] = numbers.parse_pattern(pattern) |
3 | 246 |
247 scientific_formats = data.setdefault('scientific_formats', {}) | |
248 for elem in tree.findall('//scientificFormats/scientificFormatLength'): | |
249 if 'draft' in elem.attrib and elem.attrib.get('type') in scientific_formats: | |
250 continue | |
28
695884591af6
* Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents:
24
diff
changeset
|
251 # FIXME: should use numbers.parse_pattern |
3 | 252 scientific_formats[elem.attrib.get('type')] = unicode(elem.findtext('scientificFormat/pattern')) |
253 | |
254 currency_formats = data.setdefault('currency_formats', {}) | |
255 for elem in tree.findall('//currencyFormats/currencyFormatLength'): | |
256 if 'draft' in elem.attrib and elem.attrib.get('type') in currency_formats: | |
257 continue | |
28
695884591af6
* Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents:
24
diff
changeset
|
258 # FIXME: should use numbers.parse_pattern |
3 | 259 currency_formats[elem.attrib.get('type')] = unicode(elem.findtext('currencyFormat/pattern')) |
260 | |
261 percent_formats = data.setdefault('percent_formats', {}) | |
262 for elem in tree.findall('//percentFormats/percentFormatLength'): | |
263 if 'draft' in elem.attrib and elem.attrib.get('type') in percent_formats: | |
264 continue | |
28
695884591af6
* Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents:
24
diff
changeset
|
265 pattern = unicode(elem.findtext('percentFormat/pattern')) |
695884591af6
* Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents:
24
diff
changeset
|
266 percent_formats[elem.attrib.get('type')] = numbers.parse_pattern(pattern) |
3 | 267 |
28
695884591af6
* Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents:
24
diff
changeset
|
268 currency_names = data.setdefault('currency_names', {}) |
695884591af6
* Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents:
24
diff
changeset
|
269 currency_symbols = data.setdefault('currency_symbols', {}) |
3 | 270 for elem in tree.findall('//currencies/currency'): |
28
695884591af6
* Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents:
24
diff
changeset
|
271 name = elem.findtext('displayName') |
695884591af6
* Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents:
24
diff
changeset
|
272 if name: |
695884591af6
* Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents:
24
diff
changeset
|
273 currency_names[elem.attrib['type']] = unicode(name) |
695884591af6
* Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents:
24
diff
changeset
|
274 symbol = elem.findtext('symbol') |
695884591af6
* Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents:
24
diff
changeset
|
275 if symbol: |
695884591af6
* Reduce size of locale data pickles by only storing the data provided by each locale itself, and merging inherited data at runtime.
cmlenz
parents:
24
diff
changeset
|
276 currency_symbols[elem.attrib['type']] = unicode(symbol) |
3 | 277 |
278 dicts[stem] = data | |
279 outfile = open(os.path.join(destdir, stem + '.dat'), 'wb') | |
280 try: | |
281 pickle.dump(data, outfile, 2) | |
282 finally: | |
283 outfile.close() | |
284 | |
285 if __name__ == '__main__': | |
286 main() |