1

我的树枝模板中有一个小胡子模板。我在 javascript 中使用 mustache 模板,它包含一些文本和 JS 变量。

{# _partial.html.twig #}
{% verbatim %}
    <script id="insuranceOptionTpl" type="text/template">
        {{ #. }}
            <strong>My template is {{ adjective }}</strong>
        {{ /. }}
    </script>
{% endverbatim %}

现在我需要将此页面国际化,但我的树枝翻译无法逐字进行。有什么优雅的方法可以做到这一点吗?我可能会有很多不同的文本要翻译,所以一直结束和开始一个新的逐字块并不理想。

4

1 回答 1

2

通过删除逐字块并将 Twig 定界符自定义为与 Mustache 不同的定界符,替换{{and }}by[[]]例如(如Twig doc 中所述),您将能够在同一模板中使用 Twig 和 Mustache:

$twig = new Twig_Environment();

$lexer = new Twig_Lexer($twig, array(
    'tag_comment'   => array('{#', '#}'),
    'tag_block'     => array('{%', '%}'),
    'tag_variable'  => array('[[', ']]'),
    'interpolation' => array('#{', '}'),
));
$twig->setLexer($lexer);

由于您的大多数模板已经在 Twig 中,您可以改为更改 Mustache 分隔符:

$(document).ready(function () {
    var output = $("#output");    
    var template = $("#insuranceOptionTpl").html();

    //Custom tags for Mustache
    var customTags = [ '[[', ']]' ];
    Mustache.tags = customTags;

    // render string
    var data1 = "Hello world!";
    var html = Mustache.render(template, data1);
    output.append(html);
});
于 2016-12-01T16:04:31.567 回答