The point of using per module translations is to have separate translation domains, so that modules are independent and key collisions are eliminated.
What you are basically doing is translate('x', 'default')
, that always returns 'y'
if you define the translation of 'x'
to 'y'
in the domain 'default'
.
If you write your modules as independent, you should use different translation domains. If you don't plan on using the modules separately, you can use just one translation domain and one translation file, e. g. in the Application module or by using the database for translation storage/update.