0

tornado.locale.Locale.translate追加のロジックを追加するには、デフォルトをデコレートする必要があります。

テンプレートでは、translate メソッドはアンダースコア (gettext 規則で義務付けられているため) ですが、定義または渡された場所が見つかりません (前述の translate メソッドをエイリアス化するテンプレート環境変数として指定されると予想していました)。

私の他のオプションは、「_」メソッドのすべての出現を独自のメソッドに置き換えることですが、後で文字列抽出を微調整する必要がないように、標準の表記法に固執したいと思います。

4

1 に答える 1

2

気にしないでください、私はそれを見つけました:

竜巻のweb.pyで:

   def render_string(self, template_name, **kwargs):
        """Generate the given template with the given arguments.

        We return the generated string. To generate and write a template
        as a response, use render() above.
        """
        # If no template_path is specified, use the path of the calling file
        template_path = self.get_template_path()
        if not template_path:
            frame = sys._getframe(0)
            web_file = frame.f_code.co_filename
            while frame.f_code.co_filename == web_file:
                frame = frame.f_back
            template_path = os.path.dirname(frame.f_code.co_filename)
        with RequestHandler._template_loader_lock:
            if template_path not in RequestHandler._template_loaders:
                loader = self.create_template_loader(template_path)
                RequestHandler._template_loaders[template_path] = loader
            else:
                loader = RequestHandler._template_loaders[template_path]
        t = loader.load(template_name)
        args = dict(
            handler=self,
            request=self.request,
            current_user=self.current_user,
            locale=self.locale,
            _=self.locale.translate,
            static_url=self.static_url,
            xsrf_form_html=self.xsrf_form_html,
            reverse_url=self.application.reverse_url
        )
        args.update(self.ui)
        args.update(kwargs)
        return t.generate(**args)

args ディクショナリには_=self.locale.translate; ハンドラーでそのオブジェクトを装飾できます。

于 2012-09-24T15:41:34.607 に答える