示例#1
0
 def testEscapeUnescaped(self):
   text = '©  & "<hello>"'
   unescaped = util.UnescapeHtml(text)
   self.failUnless(unescaped == u'\u00a9\u00a0 & "<hello>"')
   escaped_unescaped = util.EscapeHtml(unescaped, True)
   self.failUnless(escaped_unescaped ==
                   u'\u00a9\u00a0 &amp; &quot;&lt;hello&gt;&quot;')
示例#2
0
    def Translations(self):
        if "message-entries" not in self:
            return {}

        translations = {}

        for _seq, node in sorted(self["message-entries"].values()):
            clique = node.GetCliques()
            if not clique:
                continue
            clique = clique[0]
            message_id = clique.GetId()
            for lang in clique.clique.keys():
                translations.setdefault(lang, {})
            translated = clique.AllMessagesThatMatch(re.compile(".*"))
            if isinstance(translated, dict):
                for lang, tmessage in translated.items():
                    parts = tmessage.GetContent()
                    text = "".join([
                        (util.EscapeHtml(x) if isinstance(x, (str, )) else
                         """<ph name="%s" />""" % x.GetPresentation())
                        for x in parts
                    ])
                    translations.setdefault(lang, {})[message_id] = text

        return translations
示例#3
0
    def Translate(self,
                  lang,
                  pseudo_if_not_available=True,
                  skeleton_gatherer=None,
                  fallback_to_english=False):
        '''Returns this document with translateable messages filled with
    the translation for language 'lang'.

    Args:
      lang: 'en'
      pseudo_if_not_available: True

    Return:
      'ID_THIS_SECTION TYPE\n...BEGIN\n  "Translated message"\n......\nEND

    Raises:
      grit.exception.NotReady() if used before Parse() has been successfully
      called.
      grit.exception.NoSuchTranslation() if 'pseudo_if_not_available' is false
      and there is no translation for the requested language.
    '''
        if len(self.skeleton_) == 0:
            raise exception.NotReady()

        # TODO(joi) Implement support for skeleton gatherers here.

        out = []
        for item in self.skeleton_:
            if isinstance(item, types.StringTypes):
                out.append(item)
            else:
                msg = item.MessageForLanguage(lang, pseudo_if_not_available,
                                              fallback_to_english)
                for content in msg.GetContent():
                    if isinstance(content, tclib.Placeholder):
                        out.append(content.GetOriginal())
                    else:
                        # We escape " characters to increase the chance that attributes
                        # will be properly escaped.
                        out.append(util.EscapeHtml(content, True))

        return ''.join(out)