That's exactly my approach as well. My devices are usually in English, as it's the "lingua franca" of the OS and the internet. For non country-specific applications, it's much harder to search for, well, any issue if your OS/browser/IDE/complex application is not in English.
On the other hand, I want my local apps to use the local language, as they were developed with the native language in mind first for a use case that makes sense with that specific locale in mind, and it just doesn't make sense to be reading an English translation of something that you're used to see expressed in your local language. An English translation in that case is usually not only subpar but confusing if you're also fluent in the local language.
My ideal would be to somehow state that, say, "I speak English and German. My preference is to have content displayed in what you consider the "native" language of your application if it's on that list, otherwise my preference is English, then German."
In practice, no one would bother setting this up (as we see in the case of Accept-Language) and no one would bother implementing this correctly. The next best thing is just an application/website specific language override, which is easily explainable to any user.
On the other hand, I want my local apps to use the local language, as they were developed with the native language in mind first for a use case that makes sense with that specific locale in mind, and it just doesn't make sense to be reading an English translation of something that you're used to see expressed in your local language. An English translation in that case is usually not only subpar but confusing if you're also fluent in the local language.
My ideal would be to somehow state that, say, "I speak English and German. My preference is to have content displayed in what you consider the "native" language of your application if it's on that list, otherwise my preference is English, then German."
In practice, no one would bother setting this up (as we see in the case of Accept-Language) and no one would bother implementing this correctly. The next best thing is just an application/website specific language override, which is easily explainable to any user.