mirror of
git://github.com/kovidgoyal/calibre.git
synced 2025-12-27 01:36:28 +01:00
Add ISO 3166 country codes
This commit is contained in:
parent
b4f677c99d
commit
0753e908ab
5 changed files with 1749 additions and 3 deletions
|
|
@ -7,7 +7,7 @@
|
|||
__docformat__ = 'restructuredtext en'
|
||||
|
||||
__all__ = [
|
||||
'pot', 'translations', 'get_translations', 'iso639',
|
||||
'pot', 'translations', 'get_translations', 'iso639', 'iso3166',
|
||||
'build', 'server', 'mathjax',
|
||||
'gui',
|
||||
'develop', 'install',
|
||||
|
|
@ -25,11 +25,12 @@
|
|||
]
|
||||
|
||||
|
||||
from setup.translations import POT, GetTranslations, Translations, ISO639
|
||||
from setup.translations import POT, GetTranslations, Translations, ISO639, ISO3166
|
||||
pot = POT()
|
||||
translations = Translations()
|
||||
get_translations = GetTranslations()
|
||||
iso639 = ISO639()
|
||||
iso3166 = ISO3166()
|
||||
|
||||
from setup.extensions import Build
|
||||
build = Build()
|
||||
|
|
|
|||
|
|
@ -56,7 +56,7 @@ class Develop(Command):
|
|||
short_description = 'Setup a development environment for calibre'
|
||||
MODE = 0o755
|
||||
|
||||
sub_commands = ['build', 'resources', 'iso639', 'gui',]
|
||||
sub_commands = ['build', 'resources', 'iso639', 'iso3166', 'gui',]
|
||||
|
||||
def add_postinstall_options(self, parser):
|
||||
parser.add_option('--make-errors-fatal', action='store_true', default=False,
|
||||
|
|
|
|||
1710
setup/iso3166.xml
Normal file
1710
setup/iso3166.xml
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -22,6 +22,7 @@ class Stage1(Command):
|
|||
'resources',
|
||||
'translations',
|
||||
'iso639',
|
||||
'iso3166',
|
||||
'gui',
|
||||
]
|
||||
|
||||
|
|
|
|||
|
|
@ -399,3 +399,37 @@ def clean(self):
|
|||
|
||||
# }}}
|
||||
|
||||
class ISO3166(ISO639): # {{{
|
||||
|
||||
description = 'Compile country code maps for performance'
|
||||
DEST = os.path.join(os.path.dirname(POT.SRC), 'resources', 'localization',
|
||||
'iso3166.pickle')
|
||||
|
||||
def run(self, opts):
|
||||
src = self.j(self.d(self.SRC), 'setup', 'iso_639_3.xml')
|
||||
if not os.path.exists(src):
|
||||
raise Exception(src + ' does not exist')
|
||||
dest = self.DEST
|
||||
base = self.d(dest)
|
||||
if not os.path.exists(base):
|
||||
os.makedirs(base)
|
||||
if not self.newer(dest, [src, __file__]):
|
||||
self.info('Pickled code is up to date')
|
||||
return
|
||||
self.info('Pickling ISO-3166 codes to', dest)
|
||||
from lxml import etree
|
||||
root = etree.fromstring(open(src, 'rb').read())
|
||||
codes = set()
|
||||
three_map = {}
|
||||
name_map = {}
|
||||
for x in root.xpath('//iso_3166_entry'):
|
||||
two = x.get('alpha_2_code', None)
|
||||
three = x.get('alpha_3_code')
|
||||
codes.add(two)
|
||||
name_map[two] = x.get('name')
|
||||
if three:
|
||||
three_map[three] = two
|
||||
from cPickle import dump
|
||||
x = {'names':name_map, 'codes':frozenset(codes), 'three_map':three_map}
|
||||
dump(x, open(dest, 'wb'), -1)
|
||||
# }}}
|
||||
|
|
|
|||
Loading…
Reference in a new issue