2016-12-01 189 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