是否有下划线对象构造函数需要" _(' string')"格式?

时间:2015-03-15 03:32:37

标签: backbone.js underscore.js netsuite

我正在开发一个html模板并对其进行剖析(Suitecommerce Reference Impl更具体 - 一个带有网络功能的ERP解决方案)。

这是模板的摘录。

    <li>
        <a href="#" data-touchpoint="customercenter" data-hashtag="#ordershistory">
                        <%= _('Order History').translate() %>
        </a>
    </li>

普通html标签之间的%标签写在backbonejs和underscorejs中。

由于下划线函数采用_.function()形式,我不会得到_(&#39;字符串&#39;)。

任何主干/下划线开发人员都在那里?

2 个答案:

答案 0 :(得分:1)

它看起来像一个翻译库,用于将文本翻译成用户浏览器中指定的语言,可能类似于this one

translate.js的文档页面上,看起来您可以使用传统的underscore.js样式调用该函数,或者您可以在下划线函数中发送主参数:

  

_.translate(text...) - 这是主要的翻译功能,也是基础对象(即你可以调用_(text))。翻译第一个参数。如果使用多个参数调用,它将调用&#34;格式&#34;函数,第一个参数已翻译,后跟其他参数。

使用下划线功能(例如,see Django)访问翻译库是非常常见的惯例:translated_text = _('Text to translate')

我建议查看脚本以查看是否正在使用语言翻译库。

答案 1 :(得分:1)

当您致电_(obj)时,Underscore会包裹obj参数。然后可以在包装对象上调用任何Underscore方法,而无需修改obj的原型。

您正在使用的其中一个库已将translate()方法添加到Underscore原型中,而_(string).translate()是在您的字符串上调用该方法的方法。

以下是以类似方式扩展Underscore的另一个示例:

_.mixin({
  logToConsole: function(str) {
    console.log(str)
  }
})

_('text to log').logToConsole()

参考文献:

Underscore OOP (wrapping)

Underscore mixin method