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

WEB邮件程序

开发平台:

Python

  1. """ GNU gettext for DocumentTemplates !
  2. If you want to use _ for translating
  3. patch name_match in dtml_class.search (file DT_HTML.py)
  4. Otherwise you can use <dtml-gettext>Some text</dtml-gettext>
  5. or better <dtml-gt>Some other text</dtml-gt>"""
  6. from DocumentTemplate.DT_Util import *
  7. from DocumentTemplate.DT_String import String
  8. import fintl, os
  9. class I18NTag:
  10. """
  11. This tag-extension for Zope's DocumentTemplates provides
  12. i18n-facilities as known from GNU gettext
  13. """
  14. name = "gettext"
  15. blockContinuations = ()
  16. def __init__(self, blocks):
  17. self.tname, self.args, self.section = blocks[0]
  18. def render(self, md):
  19. args = parse_params(self.args, domain=None, locale=None, language=None)
  20. domain = args.get("domain", None)
  21. locale = args.get("locale", None)
  22. lang = args.get("language", None)
  23. if domain and locale:
  24. fintl.bindtextdomain(domain, locale)
  25. fintl.textdomain(domain)
  26. elif domain or locale:
  27. raise KeyError, "DTML-gettext: You have to set both  - domain and locale."
  28. if lang:
  29. os.environ["LANGUAGE"] = lang
  30. return fintl.gettext(self.section())
  31. __call__ = render
  32. class ITag(I18NTag): name = "gt"
  33. String.commands["gettext"] = I18NTag
  34. String.commands["gt"] = ITag