20
20
*/
21
21
class TranslationNodeVisitor implements \Twig_NodeVisitorInterface
22
22
{
23
+ const UNDEFINED_DOMAIN = '_undefined ' ;
24
+
23
25
private $ enabled = false ;
24
26
private $ messages = array ();
25
27
@@ -57,7 +59,7 @@ public function enterNode(\Twig_NodeInterface $node, \Twig_Environment $env)
57
59
// extract constant nodes with a trans filter
58
60
$ this ->messages [] = array (
59
61
$ node ->getNode ('node ' )->getAttribute ('value ' ),
60
- $ node ->getNode ('arguments ' )->hasNode (1 ) ? $ node ->getNode ('arguments ' )->getNode (1 )-> getAttribute ( ' value ' ) : null ,
62
+ $ this -> readDomain ( $ node ->getNode ('arguments ' )->hasNode (1 ) ? $ node ->getNode ('arguments ' )->getNode (1 ) : null ) ,
61
63
);
62
64
} elseif (
63
65
$ node instanceof \Twig_Node_Expression_Filter &&
@@ -67,13 +69,13 @@ public function enterNode(\Twig_NodeInterface $node, \Twig_Environment $env)
67
69
// extract constant nodes with a trans filter
68
70
$ this ->messages [] = array (
69
71
$ node ->getNode ('node ' )->getAttribute ('value ' ),
70
- $ node ->getNode ('arguments ' )->hasNode (2 ) ? $ node ->getNode ('arguments ' )->getNode (2 )-> getAttribute ( ' value ' ) : null ,
72
+ $ this -> readDomain ( $ node ->getNode ('arguments ' )->hasNode (2 ) ? $ node ->getNode ('arguments ' )->getNode (2 ) : null ) ,
71
73
);
72
74
} elseif ($ node instanceof TransNode) {
73
75
// extract trans nodes
74
76
$ this ->messages [] = array (
75
77
$ node ->getNode ('body ' )->getAttribute ('data ' ),
76
- null === $ node -> getNode ( ' domain ' ) ? ' messages ' : $ node ->getNode ('domain ' )-> getAttribute ( ' value ' ),
78
+ $ this -> readDomain ( $ node ->getNode ('domain ' )),
77
79
);
78
80
}
79
81
@@ -95,4 +97,17 @@ public function getPriority()
95
97
{
96
98
return 0 ;
97
99
}
100
+
101
+ private function readDomain (\Twig_Node $ node = null )
102
+ {
103
+ if (null === $ node ) {
104
+ return null ;
105
+ }
106
+
107
+ if ($ node instanceof \Twig_Node_Expression_Constant) {
108
+ return $ node ->getAttribute ('value ' );
109
+ }
110
+
111
+ return self ::UNDEFINED_DOMAIN ;
112
+ }
98
113
}
0 commit comments