Wrong; we got complaints from users that their app was in English instead of Dutch. Even though their device was set to English or another unsupported language.
We begrudgingly added an app specific language preference. I repeated this later on for a package shipping webapp where on the login screen (and elsewhere iirc?) you can select a language; it defaults to your browser's Accept-Language header, but allows the user to override it.
Lesson learned; Accept-Language is fine for the initial language, and if that header is not to be trusted, maybe IP / geolocation based. But always offer an easy way to set the language; you may be dealing with someone who doesn't live in the country of origin on a device / browser that isn't theirs.
Also remember that location, locale and language are three different concepts entirely.