Having worked in the ecomm industry for quite a while, one thing that always drove me nuts was stores that did not understand that your current location should not drive your store choice and certainly shouldn't drive your language choice. Sure, if you need to guess, then you can use assumed geographic location as a starting point if you like. If you don't know what language someone wants, by all means, use the Accept-Language header to make a best effort. After that, let your visitor select a location and language that they want.
I went through a lot of effort on one project that had something like 90+ country stores to make it work as expected. We used IP-based location to select a store if you hadn't already selected one. We used Accept-Language header if you hadn't selected a language. If we couldn't determine a location via IP address, we had a world map landing page you'd get redirected to so you could select a store where you'd be directed back to the product page for the correct store. Language display was best effort. All of the 'chrome' of the site could be displayed in most every language. Products had limited subsets of language. I don't recall how we resolved that disparity.
> I don't suddenly start speaking a different language if I look at a your site from a different country.
As someone that traveled a lot, I always hated this. Sorry, maybe I'm not fluent enough in German to read your site, but I really do want to order from your German store. Or maybe I really want to order from the US store even though I'm in Germany.
One other aspect of all of this that was *extra* fun was payments. Anti-fraud systems frequently get super suspicious if your location and the store location don't match.