removed the possibility to pass a message to the trans tag
The trans tag should only be used with static texts as automatic output escaping does not occur.
This commit is contained in:
parent
cad6643e77
commit
286c45733e
18
UPDATE.md
18
UPDATE.md
@ -6,8 +6,22 @@ one. It only discusses changes that need to be done when using the "public"
|
|||||||
API of the framework. If you "hack" the core, you should probably follow the
|
API of the framework. If you "hack" the core, you should probably follow the
|
||||||
timeline closely anyway.
|
timeline closely anyway.
|
||||||
|
|
||||||
PR12 to PR13
|
PR12 to beta1
|
||||||
------------
|
-------------
|
||||||
|
|
||||||
|
* The `trans` tag does not accept a message as an argument anymore:
|
||||||
|
|
||||||
|
{% trans "foo" %}
|
||||||
|
{% trans foo %}
|
||||||
|
|
||||||
|
Use the long version the tags or the filter instead:
|
||||||
|
|
||||||
|
{% trans %}foo{% endtrans %}
|
||||||
|
{{ foo|trans }}
|
||||||
|
|
||||||
|
This has been done to clarify the usage of the tag and filter and also to
|
||||||
|
make it clearer when the automatic output escaping rules are applied (see
|
||||||
|
the doc for more information).
|
||||||
|
|
||||||
* Some methods in the DependencyInjection component's ContainerBuilder and
|
* Some methods in the DependencyInjection component's ContainerBuilder and
|
||||||
Definition classes have been renamed to be more specific and consistent:
|
Definition classes have been renamed to be more specific and consistent:
|
||||||
|
@ -53,7 +53,7 @@ class TranslationExtension extends \Twig_Extension
|
|||||||
public function getTokenParsers()
|
public function getTokenParsers()
|
||||||
{
|
{
|
||||||
return array(
|
return array(
|
||||||
// {% trans "Symfony is great!" %}
|
// {% trans %}Symfony is great!{% endtrans %}
|
||||||
new TransTokenParser(),
|
new TransTokenParser(),
|
||||||
|
|
||||||
// {% transchoice count %}
|
// {% transchoice count %}
|
||||||
|
@ -36,20 +36,14 @@ class TransTokenParser extends \Twig_TokenParser
|
|||||||
$vars = new \Twig_Node_Expression_Array(array(), $lineno);
|
$vars = new \Twig_Node_Expression_Array(array(), $lineno);
|
||||||
$domain = new \Twig_Node_Expression_Constant('messages', $lineno);
|
$domain = new \Twig_Node_Expression_Constant('messages', $lineno);
|
||||||
if (!$stream->test(\Twig_Token::BLOCK_END_TYPE)) {
|
if (!$stream->test(\Twig_Token::BLOCK_END_TYPE)) {
|
||||||
if (!$stream->test('from') && !$stream->test('with')) {
|
|
||||||
// {% trans "message" %}
|
|
||||||
// {% trans message %}
|
|
||||||
$body = $this->parser->getExpressionParser()->parseExpression();
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($stream->test('with')) {
|
if ($stream->test('with')) {
|
||||||
// {% trans "message" with vars %}
|
// {% trans with vars %}
|
||||||
$stream->next();
|
$stream->next();
|
||||||
$vars = $this->parser->getExpressionParser()->parseExpression();
|
$vars = $this->parser->getExpressionParser()->parseExpression();
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($stream->test('from')) {
|
if ($stream->test('from')) {
|
||||||
// {% trans "message" from "messages" %}
|
// {% trans from "messages" %}
|
||||||
$stream->next();
|
$stream->next();
|
||||||
$domain = $this->parser->getExpressionParser()->parseExpression();
|
$domain = $this->parser->getExpressionParser()->parseExpression();
|
||||||
} elseif (!$stream->test(\Twig_Token::BLOCK_END_TYPE)) {
|
} elseif (!$stream->test(\Twig_Token::BLOCK_END_TYPE)) {
|
||||||
@ -57,11 +51,9 @@ class TransTokenParser extends \Twig_TokenParser
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (null === $body) {
|
// {% trans %}message{% endtrans %}
|
||||||
// {% trans %}message{% endtrans %}
|
$stream->expect(\Twig_Token::BLOCK_END_TYPE);
|
||||||
$stream->expect(\Twig_Token::BLOCK_END_TYPE);
|
$body = $this->parser->subparse(array($this, 'decideTransFork'), true);
|
||||||
$body = $this->parser->subparse(array($this, 'decideTransFork'), true);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!$body instanceof \Twig_Node_Text && !$body instanceof \Twig_Node_Expression) {
|
if (!$body instanceof \Twig_Node_Text && !$body instanceof \Twig_Node_Expression) {
|
||||||
throw new \Twig_Error_Syntax('A message must be a simple text');
|
throw new \Twig_Error_Syntax('A message must be a simple text');
|
||||||
|
@ -47,16 +47,9 @@ class TranslationExtensionTest extends TestCase
|
|||||||
{
|
{
|
||||||
return array(
|
return array(
|
||||||
// trans tag
|
// trans tag
|
||||||
array('{% trans "Hello" %}', 'Hello'),
|
|
||||||
array('{% trans "Hello %name%" %}', 'Hello Symfony2', array('name' => 'Symfony2')),
|
|
||||||
array('{% trans name %}', 'Symfony2', array('name' => 'Symfony2')),
|
|
||||||
array('{% trans hello with { \'%name%\': \'Symfony2\' } %}', 'Hello Symfony2', array('hello' => 'Hello %name%')),
|
|
||||||
array('{% set vars = { \'%name%\': \'Symfony2\' } %}{% trans hello with vars %}', 'Hello Symfony2', array('hello' => 'Hello %name%')),
|
|
||||||
|
|
||||||
array('{% trans %}Hello{% endtrans %}', 'Hello'),
|
array('{% trans %}Hello{% endtrans %}', 'Hello'),
|
||||||
array('{% trans %}%name%{% endtrans %}', 'Symfony2', array('name' => 'Symfony2')),
|
array('{% trans %}%name%{% endtrans %}', 'Symfony2', array('name' => 'Symfony2')),
|
||||||
|
|
||||||
array('{% trans "Hello" from elsewhere %}', 'Hello'),
|
|
||||||
array('{% trans from elsewhere %}Hello{% endtrans %}', 'Hello'),
|
array('{% trans from elsewhere %}Hello{% endtrans %}', 'Hello'),
|
||||||
|
|
||||||
array('{% trans %}Hello %name%{% endtrans %}', 'Hello Symfony2', array('name' => 'Symfony2')),
|
array('{% trans %}Hello %name%{% endtrans %}', 'Hello Symfony2', array('name' => 'Symfony2')),
|
||||||
|
Reference in New Issue
Block a user