Although you have done a beautiful job switching Language automatically, the SEO Agency is correct!
That google may not index the site correctly for each diffferent language.
This is true! Google doesn't send the accept-language header last time I checked. This means that Google will only index the default language.
They have suggested that the site may be accused of cloaking,
This differs from your Excact implementation, but it is possible your site will receive a penalty!
There IS advantage having unique URLs (for each language version) on the site!
First of all, for your users: they can link to the language they prefer. Secondary for the Search Engines as they can index your site correctly.
I advice most of the time to redirect the user only on the home page for a language switch using a 302 redirect to the correct URL (and so the correct language). (edit: You can review the post by Matt Cutts "SEO Advice: Discussing 302 redirects")
To verify my advice: install fiddler and surf to http://www.ibm.com. As shown below, i received a 302 redirect to the appropriate language, arriving at www.ibm.com/be/en.
Result Protocol Host URL Body Caching Content-Type
4 302 HTTP www.ibm.com / 209 text/html
5 200 HTTP www.ibm.com /be/en/ 5.073 no-cache text/html;charset=UTF-8
There are a few solutions you can solve this:
- Start Rewriting Urls (adding e.g. a directory using the language)
- If you don't want to go through the hassle of adding directories (or rewriting url's) adding a QueryString would be the easiest solution (although try limiting them to maximum 2 parameters)
- Another option is using different sub-domains! www.website.com for the default language, es.website.com, fr.website.com
Just make sure you supply every time the same content for the same URL.
Good luck with it!