Quick note on this: I can definitely see how this could be an issue, and if you require full control over error messages then shutting down browser errors and relying on PHP defined ones instead is a good option.
That being said, personally I tend to keep browser level validation enabled due to a few reasons:
Although these errors are "defaults" and it's difficult to alter them (constraint validation API is an option, but at least in my experience it's a bit heavy to use), these messages should be in the language chosen by the user. Not the language they're browsing the site in, but the language they're using at OS / browser level. Thus translating to the language of the site may, in some cases, have negative consequences.
Personally I like to get feedback early, and thus it feels more intuitive when errors can be displayed before sending and processing the form.
Finally I prefer to rely on HTML validation if/when possible for accessibility. PHP generated errors can be added in a way that makes them properly accessible, but it takes a bit of extra work, and typically requires some JS as well. At least in theory HTML level validation features should have the widest possible support ?
Anyway, just saying that there are valid reasons for both approaches — combining front-end and backend validation, vs. backend validation only.