mirror of
				https://github.com/kovidgoyal/calibre.git
				synced 2025-11-04 03:27:00 -05:00 
			
		
		
		
	DOCX Input: if no language is defined in the metadata, use the language specified in the document default style. Fixes #1321346 [DOCX Input language detection](https://bugs.launchpad.net/calibre/+bug/1321346)
This commit is contained in:
		
							parent
							
								
									2a3071b8ea
								
							
						
					
					
						commit
						6c1dc2da8d
					
				@ -71,6 +71,14 @@ def read_app_props(raw, mi):
 | 
				
			|||||||
    company = root.xpath('//*[local-name()="Company"]')
 | 
					    company = root.xpath('//*[local-name()="Company"]')
 | 
				
			||||||
    if company and company[0].text and company[0].text.strip():
 | 
					    if company and company[0].text and company[0].text.strip():
 | 
				
			||||||
        mi.publisher = company[0].text.strip()
 | 
					        mi.publisher = company[0].text.strip()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def read_default_style_language(raw, mi):
 | 
				
			||||||
 | 
					    root = fromstring(raw)
 | 
				
			||||||
 | 
					    for lang in XPath('/w:styles/w:docDefaults/w:rPrDefault/w:rPr/w:lang/@w:val')(root):
 | 
				
			||||||
 | 
					        lang = canonicalize_lang(lang)
 | 
				
			||||||
 | 
					        if lang:
 | 
				
			||||||
 | 
					            mi.languages = [lang]
 | 
				
			||||||
 | 
					            break
 | 
				
			||||||
# }}}
 | 
					# }}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class DOCX(object):
 | 
					class DOCX(object):
 | 
				
			||||||
@ -207,6 +215,13 @@ class DOCX(object):
 | 
				
			|||||||
                pass
 | 
					                pass
 | 
				
			||||||
            else:
 | 
					            else:
 | 
				
			||||||
                read_doc_props(raw, mi)
 | 
					                read_doc_props(raw, mi)
 | 
				
			||||||
 | 
					        if mi.is_null('language'):
 | 
				
			||||||
 | 
					            try:
 | 
				
			||||||
 | 
					                raw = self.read('word/styles.xml')
 | 
				
			||||||
 | 
					            except KeyError:
 | 
				
			||||||
 | 
					                pass
 | 
				
			||||||
 | 
					            else:
 | 
				
			||||||
 | 
					                read_default_style_language(raw, mi)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        name = self.relationships.get(APPPROPS, None)
 | 
					        name = self.relationships.get(APPPROPS, None)
 | 
				
			||||||
        if name is None:
 | 
					        if name is None:
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user