@@ -206,6 +206,68 @@ public function testDefaultTranslationDomainWithNamedArguments()
206206 $ this ->assertEquals ('foo (custom)foo (foo)foo (custom)foo (custom)foo (fr)foo (custom)foo (fr) ' , trim ($ template ->render ([])));
207207 }
208208
209+ public function testDefaultTranslationDomainWithExpression ()
210+ {
211+ $ templates = [
212+ 'index ' => '
213+ {%- extends "base" %}
214+
215+ {%- trans_default_domain custom_domain %}
216+
217+ {%- block content %}
218+ {{- "foo"|trans }}
219+ {%- endblock %}
220+ ' ,
221+
222+ 'base ' => '
223+ {%- block content "" %}
224+ ' ,
225+ ];
226+
227+ $ translator = new Translator ('en ' );
228+ $ translator ->addLoader ('array ' , new ArrayLoader ());
229+ $ translator ->addResource ('array ' , ['foo ' => 'foo (messages) ' ], 'en ' );
230+ $ translator ->addResource ('array ' , ['foo ' => 'foo (custom) ' ], 'en ' , 'custom ' );
231+ $ translator ->addResource ('array ' , ['foo ' => 'foo (foo) ' ], 'en ' , 'foo ' );
232+
233+ $ template = $ this ->getTemplate ($ templates , $ translator );
234+
235+ $ this ->assertEquals ('foo (foo) ' , trim ($ template ->render (['custom_domain ' => 'foo ' ])));
236+ }
237+
238+ public function testDefaultTranslationDomainWithExpressionAndInheritance ()
239+ {
240+ $ templates = [
241+ 'index ' => '
242+ {%- extends "base" %}
243+
244+ {%- trans_default_domain foo_domain %}
245+
246+ {%- block content %}
247+ {{- "foo"|trans }}
248+ {%- endblock %}
249+ ' ,
250+
251+ 'base ' => '
252+ {%- trans_default_domain custom_domain %}
253+
254+ {{- "foo"|trans }}
255+ {%- block content "" %}
256+ {{- "foo"|trans }}
257+ ' ,
258+ ];
259+
260+ $ translator = new Translator ('en ' );
261+ $ translator ->addLoader ('array ' , new ArrayLoader ());
262+ $ translator ->addResource ('array ' , ['foo ' => 'foo (messages) ' ], 'en ' );
263+ $ translator ->addResource ('array ' , ['foo ' => 'foo (custom) ' ], 'en ' , 'custom ' );
264+ $ translator ->addResource ('array ' , ['foo ' => 'foo (foo) ' ], 'en ' , 'foo ' );
265+
266+ $ template = $ this ->getTemplate ($ templates , $ translator );
267+
268+ $ this ->assertEquals ('foo (custom)foo (foo)foo (custom) ' , trim ($ template ->render (['foo_domain ' => 'foo ' , 'custom_domain ' => 'custom ' ])));
269+ }
270+
209271 private function getTemplate ($ template , ?TranslatorInterface $ translator = null ): TemplateWrapper
210272 {
211273 $ translator ??= new Translator ('en ' );
0 commit comments