在 Twig 中的 Mustache 中使用 Twig 翻译
Using twig translations inside Moustache inside Twig
我的树枝模板中有一个小胡子模板。我在 javascript 中使用了 mustache 模板,它包含一些文本和 JS 变量。
{# _partial.html.twig #}
{% verbatim %}
<script id="insuranceOptionTpl" type="text/template">
{{ #. }}
<strong>My template is {{ adjective }}</strong>
{{ /. }}
</script>
{% endverbatim %}
现在我需要将此页面国际化,但我的 twig 翻译无法在内部逐字翻译。有什么优雅的方法可以做到这一点吗?我可能会有很多不同的文本要翻译,所以总是结束和开始一个新的逐字块并不理想。
通过删除逐字块并将 Twig 分隔符自定义为不同于 Mustache 分隔符,例如将 {{
和 }}
替换为 [[
和 ]]
(例如已解释 in 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);
});
我的树枝模板中有一个小胡子模板。我在 javascript 中使用了 mustache 模板,它包含一些文本和 JS 变量。
{# _partial.html.twig #}
{% verbatim %}
<script id="insuranceOptionTpl" type="text/template">
{{ #. }}
<strong>My template is {{ adjective }}</strong>
{{ /. }}
</script>
{% endverbatim %}
现在我需要将此页面国际化,但我的 twig 翻译无法在内部逐字翻译。有什么优雅的方法可以做到这一点吗?我可能会有很多不同的文本要翻译,所以总是结束和开始一个新的逐字块并不理想。
通过删除逐字块并将 Twig 分隔符自定义为不同于 Mustache 分隔符,例如将 {{
和 }}
替换为 [[
和 ]]
(例如已解释 in 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);
});