mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-08 18:54:09 -04:00
Add ISO 3166 country codes
This commit is contained in:
parent
b4f677c99d
commit
0753e908ab
@ -7,7 +7,7 @@ __copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>'
|
||||
__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 @@ __all__ = [
|
||||
]
|
||||
|
||||
|
||||
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 @@ class ISO639(Command): # {{{
|
||||
|
||||
# }}}
|
||||
|
||||
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…
x
Reference in New Issue
Block a user