The quick answer is to enter the SYSERR message for message number nnnn for language code 2 so it finds it. No program should be written to throw a message code that has no text… that should be detected in the QA process.
But I have not heard of any way to change the message hierarchy. The only things you can control is the existence of error messages and the steplib structure of your applications. For example, you can define message MYLIB nnnn which will apply to all code running from MYLIB. If no other steplibs exist besides the default SYSTEM, then it will look for SYSTEM nnnn. You could have other steplibs in your environment.
Aside from that, if it doesn’t find SYSTEM nnnn for language 2, it will look for SYSTEM nnnn in language 1, then it will look for SYSTEM n000, and that is built in.