I'm thinking of a website which is basically the following:

  • users can push some pins on a map with some text and additional information regarding the location they are pinning
  • other users can see those locations and read the text and the additional information
  • maybe some search and list pages
  • I suppose my audience is going to come from all over the world, speaking different languages

Now I have a big trouble with i18n (internationalization), mostly because of SEO:

  • I would like to offer the user-interface (UI) in English and some other languages for the users based on accept-language parsing, GeoIP, etc...or user's choice
  • I would like the pins to have a permalink, so that users can find them in search engines
  • I don't want to translate the text which comes from the user, just the UI
  • I don't want to hide content from users which were written in a different language, since there are other things which make that content valuable without understanding all the text

My question is: what are the best options for my users and for Google. The options I think I have:

  • Detect user location or accept-language, or use a user preference (e.g., cookie, URL path, or query string), and render the whole page in that language, except the content I cannot translate (user generated content)
  • Always render the page with the English UI, and with JavaScript translate it to the language of the user
  • I could use locales as subdomains (e.g., en.example.com, de.xample.com, etc...) - but what do I do with www.example.com?

I think in both cases I might have some trouble with search engines. Do you maybe have some clever idea how to solve this problem?

2 Answers 2


Using a combination of localised sites (de.example.com or www.example.com/de/), with a global default landing page at www.example.com in conjunction with conditional redirects based on Accept-Language value is a common and perfectly search engine friendly approach, if properly optimised.

Optimise the regional variants by applying lang attribute for those search engines which support it, and for Google use their hreflang markup (details here) along with x-default (details here) set to your global default. For all, be sure to use correct ISO values, e.g., en-GB not en-UK. Also, if you are using a gTLD, geotarget the localised versions accordingly with Google and Bing Webmaster Tools.

You can then conditionally redirect from the global default page, while the localised sites should be returned in the appropriate localised searches. Cookies can be set to store user preference if required (in EU, be sure it complies with local applications of the E Privacy directive).

Remember that search engines don't send the Accept-Language header, so allow the conditional redirect to default to the global page (marked as x-default for Google).

Any content generated by JavaScript is essentially invisible to a search engine, so don't rely on that to translate content or do anything else you want a search engine to discover.


Here is my suggestion:

  • You can find out the best language to show to user using the user agent along with user IP, if there is no user preference record.
  • If you want to show up for searches in all languages, don't use java script for translation at all. You can redirect users to the appropriate domain (e.g. de.example.com) which has the localized text in html. This way, you actually have different sites for different languages, and Google will concern all and each for a specific language. No need to translate all the site (including user content). You can store user content in database and have the same template for all different language sites to fill them with user content.
  • You can use www.example.com for English (International) and use redirections to other subdomains like de.example.com if needed.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.