Would stronger typing help here?
If I were to design those APIs, I'd maybe suggest a more opaque type called "LanguageCode" that is NOT a String and could not be returned from or passed as a String. Then getLanguage() could return a LanguageCode type, and the Locale() constructor could take the LanguageCode type as its parameter, and then tooling could enforce that you can't mix LanguageCode with String.
Then, calling Locale's constructor with the return value from getDisplayLanguage() would produce an easy-to-find error.