In language/ batch translate and batch replace it should not be possible to enter a translation with more or less or other placeholders ({1} etc)
For example
This should also be checked after import.
Ok in your case I agree, so it should be something of a checking/warning system, leaving the decision to the user.
In my opinion translations should be in the platform and should not request a pretty complex data structure including specializations and thus many inner joins requiring more database resources.
I don't completely agree.
Sometimes I have a Translation entity with an attribute for each language in my app. In a specialised entity, I enter those values.
To show the translated content to the user, I simply define all languages as parameters for the caption and for each language, I use a different placeholder.
Generalization:
Specializations:
Usage in a page, with NL as active language. And for EN the caption would be {2} etc.