2016-12-01 150 views
1

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

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

现在我需要国际化这个页面,但我的树枝翻译将不会在逐字逐句的内部工作。有没有什么优雅的方法来做到这一点?我可能会翻译很多不同的文本,所以始终结束并启动一个新的逐字块并不理想。

回答

2

通过消除逐字块,并通过自定义的树枝分隔符是比型动物胡子的,由[[]]例如(如解释in Twig doc)更换{{}},你就可以用嫩枝和小胡子在同一模板:

$twig = new Twig_Environment(); 

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

由于大部分你的模板已经在嫩枝,你可以改变胡子的分隔符,而不是:

$(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); 
}); 
+0

哦,当然!我正在考虑使用JS翻译,但这实在不太优雅。我有太多的树枝模板,只有一些小胡子。我能改变胡须的分隔符吗? – ecc