Switch to using more modern language names/translations from the iso-codes package, rather than pycountry

This commit is contained in:
Kovid Goyal 2011-08-25 08:34:28 -06:00
parent b950d14b0c
commit a30460bda8
84 changed files with 2673807 additions and 2197 deletions

View File

@ -9,6 +9,12 @@ License: GPL-2 or later
The full text of the GPL is distributed as in The full text of the GPL is distributed as in
/usr/share/common-licenses/GPL-2 on Debian systems. /usr/share/common-licenses/GPL-2 on Debian systems.
Files: setup/iso_639/*
Copyright: Various
License: LGPL 2.1
The full text of the LGPL is distributed as in
/usr/share/common-licenses/LGPL-2.1 on Debian systems.
Files: src/calibre/ebooks/BeautifulSoup.py Files: src/calibre/ebooks/BeautifulSoup.py
Copyright: Copyright (c) 2004-2007, Leonard Richardson Copyright: Copyright (c) 2004-2007, Leonard Richardson
License: BSD License: BSD

File diff suppressed because it is too large Load Diff

3
setup/iso_639/README Normal file
View File

@ -0,0 +1,3 @@
These files are taken from the iso-codes package, licensed under the LGPL 2.1
All the files are from the iso_639_3 sub-directory.

34266
setup/iso_639/af.po Normal file

File diff suppressed because it is too large Load Diff

33173
setup/iso_639/am.po Normal file

File diff suppressed because it is too large Load Diff

33365
setup/iso_639/ar.po Normal file

File diff suppressed because it is too large Load Diff

33394
setup/iso_639/az.po Normal file

File diff suppressed because it is too large Load Diff

30849
setup/iso_639/bg.po Normal file

File diff suppressed because it is too large Load Diff

33998
setup/iso_639/bn_IN.po Normal file

File diff suppressed because it is too large Load Diff

30899
setup/iso_639/br.po Normal file

File diff suppressed because it is too large Load Diff

33078
setup/iso_639/bs.po Normal file

File diff suppressed because it is too large Load Diff

33173
setup/iso_639/byn.po Normal file

File diff suppressed because it is too large Load Diff

33938
setup/iso_639/ca.po Normal file

File diff suppressed because it is too large Load Diff

30926
setup/iso_639/crh.po Normal file

File diff suppressed because it is too large Load Diff

33542
setup/iso_639/cs.po Normal file

File diff suppressed because it is too large Load Diff

34256
setup/iso_639/cy.po Normal file

File diff suppressed because it is too large Load Diff

34952
setup/iso_639/da.po Normal file

File diff suppressed because it is too large Load Diff

35241
setup/iso_639/de.po Normal file

File diff suppressed because it is too large Load Diff

32435
setup/iso_639/el.po Normal file

File diff suppressed because it is too large Load Diff

34969
setup/iso_639/eo.po Normal file

File diff suppressed because it is too large Load Diff

34978
setup/iso_639/es.po Normal file

File diff suppressed because it is too large Load Diff

33392
setup/iso_639/et.po Normal file

File diff suppressed because it is too large Load Diff

33195
setup/iso_639/eu.po Normal file

File diff suppressed because it is too large Load Diff

34699
setup/iso_639/fa.po Normal file

File diff suppressed because it is too large Load Diff

35015
setup/iso_639/fi.po Normal file

File diff suppressed because it is too large Load Diff

30860
setup/iso_639/fr.po Normal file

File diff suppressed because it is too large Load Diff

35031
setup/iso_639/ga.po Normal file

File diff suppressed because it is too large Load Diff

33173
setup/iso_639/gez.po Normal file

File diff suppressed because it is too large Load Diff

30865
setup/iso_639/gl.po Normal file

File diff suppressed because it is too large Load Diff

30893
setup/iso_639/gu.po Normal file

File diff suppressed because it is too large Load Diff

33228
setup/iso_639/he.po Normal file

File diff suppressed because it is too large Load Diff

33178
setup/iso_639/hi.po Normal file

File diff suppressed because it is too large Load Diff

33298
setup/iso_639/hr.po Normal file

File diff suppressed because it is too large Load Diff

35252
setup/iso_639/hu.po Normal file

File diff suppressed because it is too large Load Diff

34070
setup/iso_639/id.po Normal file

File diff suppressed because it is too large Load Diff

33229
setup/iso_639/is.po Normal file

File diff suppressed because it is too large Load Diff

39178
setup/iso_639/iso_639_3.xml Normal file

File diff suppressed because it is too large Load Diff

30851
setup/iso_639/it.po Normal file

File diff suppressed because it is too large Load Diff

43196
setup/iso_639/ja.po Normal file

File diff suppressed because it is too large Load Diff

30927
setup/iso_639/kn.po Normal file

File diff suppressed because it is too large Load Diff

33380
setup/iso_639/ko.po Normal file

File diff suppressed because it is too large Load Diff

33153
setup/iso_639/kok.po Normal file

File diff suppressed because it is too large Load Diff

30897
setup/iso_639/lt.po Normal file

File diff suppressed because it is too large Load Diff

33227
setup/iso_639/lv.po Normal file

File diff suppressed because it is too large Load Diff

33247
setup/iso_639/mi.po Normal file

File diff suppressed because it is too large Load Diff

33236
setup/iso_639/mk.po Normal file

File diff suppressed because it is too large Load Diff

34585
setup/iso_639/mn.po Normal file

File diff suppressed because it is too large Load Diff

30867
setup/iso_639/mr.po Normal file

File diff suppressed because it is too large Load Diff

33374
setup/iso_639/ms.po Normal file

File diff suppressed because it is too large Load Diff

34967
setup/iso_639/mt.po Normal file

File diff suppressed because it is too large Load Diff

34114
setup/iso_639/nb.po Normal file

File diff suppressed because it is too large Load Diff

34201
setup/iso_639/nl.po Normal file

File diff suppressed because it is too large Load Diff

33810
setup/iso_639/nn.po Normal file

File diff suppressed because it is too large Load Diff

33062
setup/iso_639/nso.po Normal file

File diff suppressed because it is too large Load Diff

30863
setup/iso_639/oc.po Normal file

File diff suppressed because it is too large Load Diff

30863
setup/iso_639/or.po Normal file

File diff suppressed because it is too large Load Diff

30932
setup/iso_639/pa.po Normal file

File diff suppressed because it is too large Load Diff

30850
setup/iso_639/pl.po Normal file

File diff suppressed because it is too large Load Diff

31615
setup/iso_639/ps.po Normal file

File diff suppressed because it is too large Load Diff

34936
setup/iso_639/pt.po Normal file

File diff suppressed because it is too large Load Diff

32497
setup/iso_639/pt_BR.po Normal file

File diff suppressed because it is too large Load Diff

33391
setup/iso_639/ro.po Normal file

File diff suppressed because it is too large Load Diff

34947
setup/iso_639/ru.po Normal file

File diff suppressed because it is too large Load Diff

34991
setup/iso_639/rw.po Normal file

File diff suppressed because it is too large Load Diff

33228
setup/iso_639/sk.po Normal file

File diff suppressed because it is too large Load Diff

34187
setup/iso_639/sl.po Normal file

File diff suppressed because it is too large Load Diff

35064
setup/iso_639/sr.po Normal file

File diff suppressed because it is too large Load Diff

35064
setup/iso_639/sr@latin.po Normal file

File diff suppressed because it is too large Load Diff

35702
setup/iso_639/sv.po Normal file

File diff suppressed because it is too large Load Diff

30933
setup/iso_639/ta.po Normal file

File diff suppressed because it is too large Load Diff

30938
setup/iso_639/th.po Normal file

File diff suppressed because it is too large Load Diff

33173
setup/iso_639/ti.po Normal file

File diff suppressed because it is too large Load Diff

33173
setup/iso_639/tig.po Normal file

File diff suppressed because it is too large Load Diff

34572
setup/iso_639/tr.po Normal file

File diff suppressed because it is too large Load Diff

33506
setup/iso_639/tt.po Normal file

File diff suppressed because it is too large Load Diff

30851
setup/iso_639/uk.po Normal file

File diff suppressed because it is too large Load Diff

34473
setup/iso_639/ve.po Normal file

File diff suppressed because it is too large Load Diff

34958
setup/iso_639/vi.po Normal file

File diff suppressed because it is too large Load Diff

34192
setup/iso_639/wa.po Normal file

File diff suppressed because it is too large Load Diff

33142
setup/iso_639/xh.po Normal file

File diff suppressed because it is too large Load Diff

33214
setup/iso_639/zh_CN.po Normal file

File diff suppressed because it is too large Load Diff

33204
setup/iso_639/zh_TW.po Normal file

File diff suppressed because it is too large Load Diff

33228
setup/iso_639/zu.po Normal file

File diff suppressed because it is too large Load Diff

View File

@ -7,7 +7,6 @@ __copyright__ = '2009, Kovid Goyal <kovid@kovidgoyal.net>'
__docformat__ = 'restructuredtext en' __docformat__ = 'restructuredtext en'
import os, tempfile, shutil, subprocess, glob, re, time, textwrap import os, tempfile, shutil, subprocess, glob, re, time, textwrap
from distutils import sysconfig
from functools import partial from functools import partial
from setup import Command, __appname__, __version__ from setup import Command, __appname__, __version__
@ -142,19 +141,18 @@ class Translations(POT): # {{{
os.makedirs(base) os.makedirs(base)
self.info('\tCompiling translations for', locale) self.info('\tCompiling translations for', locale)
subprocess.check_call(['msgfmt', '-o', dest, f]) subprocess.check_call(['msgfmt', '-o', dest, f])
if locale in ('en_GB', 'en_CA', 'en_AU', 'si', 'ur', 'sc', 'ltg', 'nds', 'te', 'yi'): iscpo = {'bn':'bn_IN', 'zh_HK':'zh_CN'}.get(locale, locale)
continue iso639 = self.j(self.d(self.SRC), 'setup', 'iso_639',
pycountry = self.j(sysconfig.get_python_lib(), 'pycountry', '%s.po'%iscpo)
'locales', locale, 'LC_MESSAGES')
if os.path.exists(pycountry): if os.path.exists(iso639):
iso639 = self.j(pycountry, 'iso639.mo') dest = self.j(self.d(dest), 'iso639.mo')
dest = self.j(self.d(dest), self.b(iso639)) if self.newer(dest, iso639):
if self.newer(dest, iso639) and os.path.exists(iso639):
self.info('\tCopying ISO 639 translations') self.info('\tCopying ISO 639 translations')
shutil.copy2(iso639, dest) subprocess.check_call(['msgfmt', '-o', dest, iso639])
else: elif locale not in ('en_GB', 'en_CA', 'en_AU', 'si', 'ur', 'sc',
self.warn('No ISO 639 translations for locale:', locale, 'ltg', 'nds', 'te', 'yi', 'fo', 'sq', 'ast', 'ml'):
'\nDo you have pycountry installed?') self.warn('No ISO 639 translations for locale:', locale)
self.write_stats() self.write_stats()
self.freeze_locales() self.freeze_locales()
@ -212,7 +210,7 @@ class Translations(POT): # {{{
# }}} # }}}
class GetTranslations(Translations): class GetTranslations(Translations): # {{{
description = 'Get updated translations from Launchpad' description = 'Get updated translations from Launchpad'
BRANCH = 'lp:~kovid/calibre/translations' BRANCH = 'lp:~kovid/calibre/translations'
@ -273,24 +271,25 @@ class GetTranslations(Translations):
subprocess.check_call(['bzr', 'commit', '-m', subprocess.check_call(['bzr', 'commit', '-m',
'IGN:Translation corrections', cls.PATH]) 'IGN:Translation corrections', cls.PATH])
# }}}
class ISO639(Command): class ISO639(Command): # {{{
description = 'Compile translations for ISO 639 codes' description = 'Compile translations for ISO 639 codes'
DEST = os.path.join(os.path.dirname(POT.SRC), 'resources', 'localization', DEST = os.path.join(os.path.dirname(POT.SRC), 'resources', 'localization',
'iso639.pickle') 'iso639.pickle')
def run(self, opts): def run(self, opts):
src = self.j(self.d(self.SRC), 'setup', 'iso639.xml') src = self.j(self.d(self.SRC), 'setup', 'iso_639')
if not os.path.exists(src): if not os.path.exists(src):
raise Exception(src + ' does not exist') raise Exception(src + ' does not exist')
dest = self.DEST dest = self.DEST
if not self.newer(dest, src): if not self.newer(dest, [src, __file__]):
self.info('Pickled code is up to date') self.info('Pickled code is up to date')
return return
self.info('Pickling ISO-639 codes to', dest) self.info('Pickling ISO-639 codes to', dest)
from lxml import etree from lxml import etree
root = etree.fromstring(open(src, 'rb').read()) root = etree.fromstring(open(self.j(src, 'iso_639_3.xml'), 'rb').read())
by_2 = {} by_2 = {}
by_3b = {} by_3b = {}
by_3t = {} by_3t = {}
@ -298,12 +297,16 @@ class ISO639(Command):
m3to2 = {} m3to2 = {}
m3bto3t = {} m3bto3t = {}
nm = {} nm = {}
codes2, codes3t, codes3b = set([]), set([]), set([]) codes2, codes3t, codes3b = set(), set(), set()
for x in root.xpath('//iso_639_entry'): for x in root.xpath('//iso_639_3_entry'):
two = x.get('part1_code', None)
threet = x.get('id')
threeb = x.get('part2_code', None)
if threeb is None:
# Only recognize langauges in ISO-639-2
continue
name = x.get('name') name = x.get('name')
two = x.get('iso_639_1_code', None)
threeb = x.get('iso_639_2B_code')
threet = x.get('iso_639_2T_code')
if two is not None: if two is not None:
by_2[two] = name by_2[two] = name
codes2.add(two) codes2.add(two)
@ -313,13 +316,10 @@ class ISO639(Command):
by_3t[threet] = name by_3t[threet] = name
if threeb != threet: if threeb != threet:
m3bto3t[threeb] = threet m3bto3t[threeb] = threet
codes3b.add(x.get('iso_639_2B_code')) codes3b.add(threeb)
codes3t.add(x.get('iso_639_2T_code')) codes3t.add(threet)
base_name = name.lower() base_name = name.lower()
nm[base_name] = threet nm[base_name] = threet
simple_name = base_name.partition(';')[0].strip()
if simple_name not in nm:
nm[simple_name] = threet
from cPickle import dump from cPickle import dump
x = {'by_2':by_2, 'by_3b':by_3b, 'by_3t':by_3t, 'codes2':codes2, x = {'by_2':by_2, 'by_3b':by_3b, 'by_3t':by_3t, 'codes2':codes2,
@ -331,4 +331,5 @@ class ISO639(Command):
if os.path.exists(self.DEST): if os.path.exists(self.DEST):
os.remove(self.DEST) os.remove(self.DEST)
# }}}