Answer
Call Fnd_Session_API.Get_Language directly inside the custom field's PL/SQL script to get the current user's language as an ISO code — rather than relying on the #USER_LANGUAGE# substitution variable (which is meant for prompt/label-level substitution, not for driving logic inside a read-only field's own script). Get_Language returns the correct ISO code for the session's actual active language, which the script can then use to pick the right translated message text.