如何创建本地化的handlebarsjs模板?

时间:2016-10-03 14:51:38

标签: javascript php handlebars.js

我有php后端,用手柄模板构建动态网站。站点必须按用户首选项支持UI本地化(站点具有用户身份验证及其UI设置)。现在,所有由php处理器生成的把手模板,例如:

{{!-- Template for dispatch table --}}
<table id="records" class="table-data">
    <caption>
        <h3>
            <div class="column-right"><span class="icon-clock"></span><span id="clock"></span></div>
            <div><span class="icon-database"></span><?php echo _('Records in the order for dispatching.'); ?></div>
            <div class="clear"></div>
        </h3>
    </caption>
    <thead>
        <tr>
            <th colspan="2"><span class="icon-database"></span><?php echo _('Name'); ?></th>
            <th><span class="icon-clock"></span><?php echo _('Record Date'); ?></th>
            <th><span class="icon-user"></span><?php echo _('Client'); ?></th>
            <th><span class="icon-pencil"></span><?php echo _('Conclusion'); ?></th>
            <th><span class="icon-doc"></span><?php echo _('Status'); ?></th>
            <th><span class="icon-doc-text"></span><?php echo _('Doctor'); ?></th>
            <th><span class="icon-code"></span><?php echo _('Type'); ?></th>
        </tr>
    </thead>
    <tbody>
        {{#each records}}
        .................
        {{/each}}
    </tbody>
</table>

它并不酷:(模板中的<?php echo ... ?>太多了。 可能有一些解决这个问题的方法吗?

P.S。:在后端生成的模板,但是在用户端进行编译和工作。

更新 我想减少后端执行的工作。对我来说,最好的解决方案是将动态hbs模板转换为静态集(一个用于支持的本地化)。为此,我想编译模板,以便将所有<?php echo _('...'); ?>语句转换为localy字符串。 但我不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

为了避免使用echo语句,您可以使用像Smarty这样的Php模板引擎。这样,您将编译已在html文件中编写的模板,而不是使用echo。这个html文件还将包含handlebars指令,因此它将由用户端编译。但是在这一点上,你为什么不只使用Php模板引擎?这取决于你。 。