pygettext-py.diff
上传用户:gyjinxi
上传日期:2007-01-04
资源大小:159k
文件大小:2k
源码类别:

WEB邮件程序

开发平台:

Python

  1. 93c93
  2. < __version__ = '0.2'
  3. ---
  4. > __version__ = '0.2-1'
  5. 169a170,224
  6. > try: from cStringIO import StringIO
  7. > except: from StringIO import StringIO
  8. > from string import find, split
  9. > from sgmllib import SGMLParser
  10. > class I18NParser(SGMLParser):
  11. >  gettext_tags = ["dtml-gettext", "dtml-gt"]
  12. >  def __init__(self):
  13. >  SGMLParser.__init__(self)
  14. >  self.data = ""
  15. >  self.messages = []
  16. >  self.startpos = 0
  17. >  def unknown_starttag(self, tag, attrs):
  18. >      for k, v in attrs:
  19. >  for t in self.gettext_tags:
  20. >      if find(v, t):
  21. >  p = I18NParser()
  22. >  p.feed(v)
  23. >  if p.messages: self.messages.extend(p.messages)
  24. >  break
  25. >      if tag in self.gettext_tags:
  26. >  self.data = ""
  27. >  def unknown_endtag(self, tag):
  28. >  if tag in self.gettext_tags:
  29. >  f = find(self.rawdata, self.data, self.startpos)
  30. >  row = len(split(self.rawdata[:f], "n"))
  31. >  self.messages.append((self.data, row))
  32. >  self.startpos = f + 1
  33. >  self.data = ""
  34. >  def handle_entityref(self, name): self.handle_data("&%s;" % name)
  35. >  def handle_charref(self, name): self.handle_data("&#%s;" % name)
  36. >  def handle_comment(self, data): self.handle_data("<!--%s-->" % data)
  37. >  def handle_data(self, data): self.data = self.data + data
  38. > def htmlfilter(fp):
  39. >     buf, row = "", 1
  40. >     p = I18NParser()
  41. >     p.feed(fp.read())
  42. >     for msg, lineno in p.messages:
  43. >  while row < lineno:
  44. >      buf = buf + "n"
  45. >      row = row + 1
  46. >  buf = buf + '_("%s"); ' % msg
  47. >     return StringIO(buf)
  48. 300c355,358
  49. <         fp = open(filename)
  50. ---
  51. >  ext = os.path.splitext(filename)[1]
  52. >  if ext in [".htm", ".html"]:
  53. >      fp = htmlfilter(open(filename))
  54. >  else: fp = open(filename)