Templates have scope, so yes, this is expected. Any nodes in a derived
template that aren't {% block %} or inside a {% block %} tag are
ignored or not output*.
An alternative would be to pass a list or dictionary of shared
translations to the template.
Cheers
Tom
* I must admit, I don't know precisely how template rendering handles
this. Certain tags, eg loading tag libraries will work fine. Any tag
that outputs anything will not, and any tag that sets things in the
context will not be in scope in other blocks.