Internationalization 玉石中的强制弦插值

Internationalization 玉石中的强制弦插值,internationalization,pug,Internationalization,Pug,我正在尝试使用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

我正在尝试使用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]以取消订阅
。有没有办法强制函数返回字符串

编辑1

正如已经指出的,嵌套
“Click here”
实际上没有意义,因为它将创建单独的字符串

我的目标是创建一个可以传递给翻译服务的简化文本字符串:

因此,理想情况下应该是:

“#[+unsubscribe('Click here')]取消订阅”

我会回来的

“请取消订阅您的手机”


我的理由是,因为使用像gettext这样的东西将通过精确的字符串进行匹配,所以我想抽象出标记背后的所有逻辑。

您真正想要实现的是:

<p>
  <a href='the link' title='it should also be translated!' 
     target='_blank' class='classes are better'>Click here</a> to unsubscribe
</p>

这当然会导致额外的
标记,但仍然无法解决真正的问题(将“单击此处”与“取消订阅”分开),也无法重新排序这句话,但是。。。我想唯一有效的选择是将插值内置到翻译引擎中,并写出未转换的标记。否则,您需要重新设计页面以避免出现句子内部的链接。

您已经包装了
。(“单击此处”)
。您应该只将普通字符串传递给i18n函数。穿过整个玉石块是没有意义的。在所有函数调用(包括i18n转换)完成后,呈现整个jade字符串(到html)始终是最后一步。@如果您是正确的,我实际上希望将“单击此处”内联,以便它显示为内联字符串(我将修复我的示例)。只传递纯文本的问题在于,它会创建多个字符串,然后这些字符串会在翻译人员面前断章取义。我可能对我的目标太模糊了。您是对的,单击此处不应出现在自定义标记中。理想情况下,我希望传递类似于:
“[+unsubscribe Click here]的内容,以便将“
取消订阅”
传递给翻译人员,这样我就可以回到
“Klicken Sie[+unsubscribe hier]um Ihr auszutragen”
。由于替换是完全匹配的,我想尽量减少查找失败,因为链接的详细信息已更改。
mixin unsubscribe(title, target_address, click_here, to_unsubscribe)
  a(title=title, href=target_address, target='_blank', style='color:#00b2e2;text-decoration:none;')= click_here
    span= to_unsubscribe