Returning an error instead of simply calling die allows more robust error handling. Secondly initialisation may continue even if the messages have not been loaded which is more friendly than simply dropping dead with no communication to the user.