|
@@ -89,15 +89,24 @@ class TransNode extends \Twig_Node
|
|
|
return array($body, $vars);
|
|
|
}
|
|
|
|
|
|
- $current = array();
|
|
|
- foreach ($vars as $name => $var) {
|
|
|
- $current[$name] = true;
|
|
|
- }
|
|
|
-
|
|
|
preg_match_all('/(?<!%)%([^%]+)%/', $msg, $matches);
|
|
|
- foreach ($matches[1] as $var) {
|
|
|
- if (!isset($current['%'.$var.'%'])) {
|
|
|
- $vars->setNode('%'.$var.'%', new \Twig_Node_Expression_Name($var, $body->getLine()));
|
|
|
+
|
|
|
+ if (version_compare(\Twig_Environment::VERSION, '1.5', '>=')) {
|
|
|
+ foreach ($matches[1] as $var) {
|
|
|
+ $key = new \Twig_Node_Expression_Constant('%'.$var.'%', $body->getLine());
|
|
|
+ if (!$vars->hasElement($key)) {
|
|
|
+ $vars->addElement(new \Twig_Node_Expression_Name($var, $body->getLine()), $key);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ $current = array();
|
|
|
+ foreach ($vars as $name => $var) {
|
|
|
+ $current[$name] = true;
|
|
|
+ }
|
|
|
+ foreach ($matches[1] as $var) {
|
|
|
+ if (!isset($current['%'.$var.'%'])) {
|
|
|
+ $vars->setNode('%'.$var.'%', new \Twig_Node_Expression_Name($var, $body->getLine()));
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|