【发布时间】:2015-09-27 02:33:22
【问题描述】:
我正在尝试使用 Jade 做一些字符串插值 + i18n
我写了一个自定义标签
mixin unsubscribe
a(title='unsubscribe_link', href='#{target_address}/',
target='_blank', style='color:#00b2e2;text-decoration:none;')
= __("Click here")
然后我得到了以下工作
p
| #[+unsubscribe] to unsubscribe
但是,为了支持 i18n,我还想将整个字符串包装在一个翻译块中,使用 __() 调用该函数。
但是当我将字符串包装在代码块中时,它不再呈现自定义标签。
p
| #{__("#[+unsubscribe] to unsubscribe")}
p
= __("#[+unsubscribe] to unsubscribe")
将按字面意思输出[+unsubscribe] to unsubscribe。有没有办法强制从函数返回字符串?
编辑 1
正如已经指出的那样,嵌套 "Click here" 并没有什么意义,因为它会创建单独的字符串。
我的目标实际上是创建一个可以传递给翻译服务的简化文本字符串:
所以理想情况下应该是:
"#[+unsubscribe('Click here')] to unsubscribe"
我会回来的
"Klicken Sie #[+unsubscribe hier] um Ihr auszutragen"
我的理由是,因为使用 gettext 之类的东西会精确匹配字符串,所以我想抽象出标签背后的所有逻辑。
【问题讨论】:
-
你已经包裹了
__("Click here")。您应该只将纯字符串传递给 i18n 函数。通过整个玉块是没有意义的。在完成所有函数调用(包括您的 i18n 转换)之后,渲染整个玉字符串(到 html)始终是最后一步。 -
@laggingreflex 你是对的,我实际上想要内联“单击此处”,以便它显示为内联字符串(我将修复我的示例)。只传递纯文本的问题在于它会创建几个字符串,然后这些字符串会在翻译人员看来脱离上下文。