This commit is contained in:
Kovid Goyal 2011-08-17 19:46:28 -06:00
parent 14124e8550
commit edb6081f31
5 changed files with 16 additions and 7 deletions

View File

@ -730,8 +730,6 @@ class Metadata(object):
if self.identifiers:
fmt('Identifiers', u', '.join(['%s:%s'%(k, v) for k, v in
self.identifiers.iteritems()]))
if self.languages:
fmt('Languages', u', '.join(self.languages))
if self.comments:
fmt('Comments', self.comments)

View File

@ -1328,7 +1328,8 @@ def metadata_to_opf(mi, as_string=True):
'[http://calibre-ebook.com]'
if not mi.languages:
mi.languages = ['UND']
lang = get_lang().replace('_', '-').partition('-')[0]
mi.languages = [lang]
root = etree.fromstring(textwrap.dedent(
'''
@ -1380,7 +1381,7 @@ def metadata_to_opf(mi, as_string=True):
factory(DC('rights'), mi.rights)
for lang in mi.languages:
if not lang or lang.lower() == 'und':
lang = get_lang().replace('_', '-').partition('-')[0]
continue
factory(DC('language'), lang)
if mi.tags:
for tag in mi.tags:

View File

@ -4,6 +4,7 @@ __copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net'
__docformat__ = 'restructuredtext en'
from struct import pack
from calibre.utils.localization import lang_as_iso639_1
lang_codes = {
}
@ -314,7 +315,8 @@ def iana2mobi(icode):
subtags = list(icode.split('-'))
while len(subtags) > 0:
lang = subtags.pop(0).lower()
if lang in IANA_MOBI:
lang = lang_as_iso639_1(lang)
if lang and lang in IANA_MOBI:
langdict = IANA_MOBI[lang]
break

View File

@ -61,9 +61,11 @@ def meta_info_to_oeb_metadata(mi, m, log, override_input_metadata=False):
m.add('identifier', val, scheme=typ.upper())
if override_input_metadata and not set_isbn:
m.filter('identifier', lambda x: x.scheme.lower() == 'isbn')
if not mi.is_null('language'):
if not mi.is_null('languages'):
m.clear('language')
m.add('language', mi.language)
for lang in mi.languages:
if lang and lang.lower() not in ('und', ''):
m.add('language', lang)
if not mi.is_null('series_index'):
m.clear('series_index')
m.add('series_index', mi.format_series_index())

View File

@ -260,6 +260,12 @@ def langnames_to_langcodes(names):
return ans
def lang_as_iso639_1(name_or_code):
code = canonicalize_lang(name_or_code)
if code is not None:
iso639 = _load_iso639()
return iso639['3to2'].get(code, None)
_udc = None
def get_udc():