Fix #888029 (downloaded index/feed page do not display Japanese charactor on Sony T1)

This commit is contained in:
Kovid Goyal 2011-11-10 08:32:30 +05:30
parent 5e56b3dd60
commit a893ed6fca
2 changed files with 30 additions and 9 deletions

View File

@ -842,12 +842,22 @@ class BasicNewsRecipe(Recipe):
finally:
self.cleanup()
@property
def lang_for_html(self):
try:
lang = self.language.replace('_', '-').partition('-')[0].lower()
if lang == 'und':
lang = None
except:
lang = None
return lang
def feeds2index(self, feeds):
templ = templates.IndexTemplate()
templ = (templates.TouchscreenIndexTemplate if self.touchscreen else
templates.IndexTemplate)
templ = templ(lang=self.lang_for_html)
css = self.template_css + '\n\n' +(self.extra_css if self.extra_css else '')
timefmt = self.timefmt
if self.touchscreen:
templ = templates.TouchscreenIndexTemplate()
return templ.generate(self.title, "mastheadImage.jpg", timefmt, feeds,
extra_css=css).render(doctype='xhtml')
@ -871,8 +881,6 @@ class BasicNewsRecipe(Recipe):
return ans+u'\u2026' if isinstance(ans, unicode) else ans + '...'
return ans
def feed2index(self, f, feeds):
feed = feeds[f]
if feed.image_url is not None: # Download feed image
@ -900,12 +908,11 @@ class BasicNewsRecipe(Recipe):
feed.image_url = feed.image_url.decode(sys.getfilesystemencoding(), 'strict')
templ = templates.FeedTemplate()
templ = (templates.TouchscreenFeedTemplate if self.touchscreen else
templates.FeedTemplate)
templ = templ(lang=self.lang_for_html)
css = self.template_css + '\n\n' +(self.extra_css if self.extra_css else '')
if self.touchscreen:
templ = templates.TouchscreenFeedTemplate()
return templ.generate(f, feeds, self.description_limiter,
extra_css=css).render(doctype='xhtml')

View File

@ -22,6 +22,9 @@ class Template(object):
IS_HTML = True
def __init__(self, lang=None):
self.html_lang = lang
def generate(self, *args, **kwargs):
if not kwargs.has_key('style'):
kwargs['style'] = ''
@ -100,6 +103,8 @@ class IndexTemplate(Template):
ul,
CLASS('calibre_rescale_100'))
self.root = HTML(head, BODY(div))
if self.html_lang:
self.root.set('lang', self.html_lang)
class FeedTemplate(Template):
@ -174,6 +179,9 @@ class FeedTemplate(Template):
div.append(ul)
div.append(self.get_navbar(f, feeds, top=False))
self.root = HTML(head, body)
if self.html_lang:
self.root.set('lang', self.html_lang)
class NavBarTemplate(Template):
@ -262,6 +270,9 @@ class TouchscreenIndexTemplate(Template):
DIV(CLASS('divider')),
toc)
self.root = HTML(head, BODY(div))
if self.html_lang:
self.root.set('lang', self.html_lang)
class TouchscreenFeedTemplate(Template):
@ -363,6 +374,9 @@ class TouchscreenFeedTemplate(Template):
div.append(BR())
div.append(bottom_navbar)
self.root = HTML(head, body)
if self.html_lang:
self.root.set('lang', self.html_lang)
class TouchscreenNavBarTemplate(Template):