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: if self.identifiers:
fmt('Identifiers', u', '.join(['%s:%s'%(k, v) for k, v in fmt('Identifiers', u', '.join(['%s:%s'%(k, v) for k, v in
self.identifiers.iteritems()])) self.identifiers.iteritems()]))
if self.languages:
fmt('Languages', u', '.join(self.languages))
if self.comments: if self.comments:
fmt('Comments', self.comments) fmt('Comments', self.comments)

View File

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

View File

@ -4,6 +4,7 @@ __copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net'
__docformat__ = 'restructuredtext en' __docformat__ = 'restructuredtext en'
from struct import pack from struct import pack
from calibre.utils.localization import lang_as_iso639_1
lang_codes = { lang_codes = {
} }
@ -314,7 +315,8 @@ def iana2mobi(icode):
subtags = list(icode.split('-')) subtags = list(icode.split('-'))
while len(subtags) > 0: while len(subtags) > 0:
lang = subtags.pop(0).lower() 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] langdict = IANA_MOBI[lang]
break 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()) m.add('identifier', val, scheme=typ.upper())
if override_input_metadata and not set_isbn: if override_input_metadata and not set_isbn:
m.filter('identifier', lambda x: x.scheme.lower() == '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.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'): if not mi.is_null('series_index'):
m.clear('series_index') m.clear('series_index')
m.add('series_index', mi.format_series_index()) m.add('series_index', mi.format_series_index())

View File

@ -260,6 +260,12 @@ def langnames_to_langcodes(names):
return ans 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 _udc = None
def get_udc(): def get_udc():