首页 > 解决方案 > 显示来自 mustache 的 javascript 变量内容

问题描述

我有一个用小胡子制作的页面模板。问题是我必须将数据的内容翻译成另一种语言而不是英语。

{{#variableToTranslate}}    
    <tr>
       <th>title</th>
       <td>{{variableToTranslate}}</td>
    </tr>
{{/variableToTranslate}}

为了解决这个问题,我使用了一个返回翻译变量的 javascript 函数。

我的问题是:

<script>
    function translate(arg1,arg2){
        return arg1+arg2;}
</script>
{{#variableToTranslate}}    
    <tr>
        <th>title</th>
        <td>translate(arg1,arg2);</td>
    </tr>
{{/variableToTranslate}} 

谢谢你。

标签: javascriptinternationalizationmustache

解决方案


Mustache 模板实际上支持 lambda:

来自文档:https ://mustache.github.io/mustache.5.html


拉姆达斯

当值是可调用对象时,例如函数或 lambda,该对象将被调用并传递文本块。传递的文本是未渲染的文字块。{{tags}} 不会被扩展 - lambda 应该自己做。通过这种方式,您可以实现过滤器或缓存。

模板:

{{#wrapped}}
  {{name}} is awesome.
{{/wrapped}}

哈希:

{
  "name": "Willy",
  "wrapped": function() {
    return function(text, render) {
      return "<b>" + render(text) + "</b>"
    }
  }
}

输出:

<b>Willy is awesome.</b>

推荐阅读