(dev/core#1546) Fix translation of seed data
Overview
--------
This fixes a regression in which seed data is not translated.
Before
------
The `civicrm_data.*.mysql` files are not translated.
After
-----
The `civicrm_data.*.mysql` files are translated.
There's a unit-test to check this.
Comments
--------
This regression stems from #15411, which aimed to allow extensions to define
custom variants of `ts()`. The crux of the issue is "What happens if you
try to translate a string before the system is bootstrapped - before the
extension is loaded? What's your fallback behavior?"
In #15411, it used a fallback behavior of "do no translation". In theory,
you shouldn't really get into this scenario since UIs are pretty much always
generated post-boot.
However, it turns out that there is a situation where you have an un-booted
system and need to translate strings -- i.e. when generating the localized
`civicrm_data.*.mysql` data. Hence the bug.
This patch preserves most of the changes from #15411, but it changes the
fallback behavior from "do no translation" to "use the built-in/default
translator".