如何在 ZPT 宏中为 i18n 提取属性?

发布于 2024-11-15 21:16:59 字数 621 浏览 3 评论 0原文

我正在使用 Pyramid 和 ZPT 模板来制作一个 Web 应用程序。我正在尝试制作一个表单模板宏库,以使设置表单字段的当前值等事情变得更容易。我还使用 lingua 消息提取器自动选取字符串进行本地化。不过,我不知道如何使提取器与宏标签上的属性一起使用。例如,假设我有一个如下所示的宏:

<tal:block metal:define-macro="text">
    <input type="text" name="${field}" value="${request.params.get(field) or default_value}"/>
</tal:block>

我在这样的页面模板中使用它:

<tal:block tal:define="field 'fred'; default_value _('initial value')" metal:use-macro="form.macros['text']"/>

消息提取器不会拾取文本“初始值”。有办法实现这一点吗?如果可能的话,我想将字符串保留在模板内,我知道我可以通过在可调用视图中生成默认值的所有字符串来解决这个问题。也许有更好的方法将值传递给宏以在属性中使用?

I'm using Pyramid with ZPT templates to make a web app. I'm attempting to make a form template macro library to make life easier for things like setting current values of form fields, etc. I'm also using the lingua message extractors to automatically pick up strings for localization. I can't figure out how to make the extractors work with attributes on macro tags though. For example, say I have a macro that looks like this:

<tal:block metal:define-macro="text">
    <input type="text" name="${field}" value="${request.params.get(field) or default_value}"/>
</tal:block>

And I use it in a page template like this:

<tal:block tal:define="field 'fred'; default_value _('initial value')" metal:use-macro="form.macros['text']"/>

The text "initial value" won't get picked up by the message extractor. Is there a way to make this happen? I'd like to keep the strings inside the template if possible, I know I could work around this by having all the strings for default values generated in the view callable. Maybe there is there a better way of passing values to macros for use in attributes?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一杯敬自由 2024-11-22 21:16:59

您需要使用 [lingua] 版本 2(或更高版本)从模板中提取消息才能正常工作。

You need to use [lingua] to version 2 (or later) to extract messages from templates for this to work.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文