I have a website with a couple of games, presented in a couple of languages. What’s the best technical way to go about structuring such a multi-language site?* Some of the goals are:
- Let people spread the word about the site by linking to the games from forums, emails and so on; I don’t have the resources for giant advertising campaigns.
- Let people feel home on the site because it’s showing in their native language; the site should have a global appeal, everyone ought to be able to play the games.
- Let’s make some money along the way with AdSense; the more revenues the site brings in, the more time I can spent creating new games.
- Be somehow fitting a niche because there’s so many games sites out there already; I don’t want to create yet another Flash games portal, and I can’t compete with the likes of Yahoo Games.
Point 4 was tackled by choosing to make games with an educational edge, like puzzles which train your memory. Another niche was making the games easy to understand, accessible (e.g. mobile-optimized, plug-in free), and uncluttered. Fair enough – but points 1, 2, 3 (let people share links, let pages be targeted to the user language, and letting the AdSense work) are partially pulling the site into different directions. Let me explain why by giving some use cases:
- Bob lives in the US and finds a link to game on an English “fun links” page; he wants to easily understand the game, and play it, and perhaps later find more games on the site.
- Mary from France saw the link on TV. She enter the website URL in the browser. She prefers French.
- Joe from Italy is writing an English-language blog on games. He saw a link to the game on an Italian blog and wants to check if this site is something for his readers.
- Akemi is a Japanese backpacker traveling through Canada and she wants to play the games from an internet cafe.
- Googlebot is, well, the Googlebot and wants to spider the content of pages.
- Google AdSense bot is the AdSense bot, wanting to deliver targeted ads to the page.
To deliver the game to Bob we need to make every game stand on its own, so to speak: the game title on top, the navigation at the bottom. The frontpage on the other hand which Mary lands on will contain a focus on the navigation to get to all the different games. But what language do we display the game and frontpage in?
One approach, perhaps the most technically smart, is to deliver all pages based on content negotiation. What content negotiation does is check the browser’s language accept headers. Typically, a browser installed in Germany will have this value set to German, and a browser installed in the US will have this set to English. This works great for Bob, who will see the page in English, and for Mary, who will see the games in French (some translations are from friends who helped out, for others I paid translators to translate the English UTF-8 language files, which my server-side script then reads out to inserts different strings into the games where needed).
But wait a second: Joe from Italy will see the page in Italian, and he may not realize that the games are available in English too, hence ignore the site for a review for his blog. And oops: Akemi, the Japanese backpacker, can’t toggle the language preferences in the internet cafe, and she will only see an English or French version as she’s in Canada. And the Googlebot will only index the English pages, because it doesn’t really “get” content negotiation. And the AdSense bot too will only see the English content, thus not target the ads that come with the games, creating poor click-through rates.
How do you combine all these different needs into a single solution? Well, let’s start with the opposite technical implementation. Let’s get rid of content negotiation and store every game language under a unique URL, and let the user choose their preferred language from the homepage, which will now present a list of language links. This is great for the Googlebot, and it’s great for the Google ad bot, because Spanish ads can now be served on Spanish pages, French ads on French pages, and so on.
But the language selection on the homepage is a bit annoying for users. So let’s go for a mixture of the above two: let’s display the frontpage in the preferred user language, via content negotiation, linking to the language-specific URLs for games. This will get rid of the language selection step for most users, but still allow the Google ad bot to target ads through the language-specific games. Additionally, so users like backpacking Akemi can find their preferred language, let’s link to a page listing all languages (we’ll use English for this link, nevermind the preferred user language). This special overview page will also help the Googlebot find all pages, for what it’s worth. And it will give Joe from Italy, who wants to find the English version for his readers, a chance to locate it as well.
There are still some troubles ahead. Let’s add new use-cases:
- Alberto, for some reason, stumbled upon an Italian version of a game, but he only speaks Spanish, and very little English (maybe someone posted the Italian link on a “fun links” site which Alberto tracks).
- Elena from Russia stumbled upon a Russian version of a game, and wants to send her friend Susan from the UK a game, but Susan only speaks English.
Remember, Alberto has landed on a non-content-negotiated version of the game, because we needed this statir URL for the Google AdSense bot to target ads, and for users to escape content-negotiation when needed (though that on its own may also have been tackled with cookies). But let’s introduce a new feature to the site: we do a little content negotiation on otherwise non-content-negotiated pages to display a link to the current game in the preferred user language if that language differs from the displayed language. In other words, Alberto lands on an Italian page, but spots an “Español” link somewhere on top, clicks it, and finds the page switching to Spanish.
We solved Alberto’s problem, but we still have a problem with Elena. Because Elena landed on the Russian page and she’s in Russia, she will only see a display of her native tongue, thus not realize that the page may be available in English (unless she reads through the frontpage, which unlike Joe from Italy, she won’t). So Elena won’t end up sending her friend Susan from the UK a link to the game because she knows Susan isn’t interested in Russian pages. So let’s introduce a feature similar to what Alberto got: we’ll display a link to the English version anyway even if someone is on a page that already matches their own language preference (unless that page is English already). So Elena will see the link “English” on top – we won’t use country flags because we’re targeting languages, not countries –, she’ll click it, and copy the resulting URL from the address bar to paste it in an email to Susan.
Well, and that’s about how I structured my lil’ games site at the moment. Your experiences with structuring multi-language application-type sites are welcome!
*After the technical implementation of a hopefully robust structure comes the word of mouth marketing done by those of your players who like the games. You can’t do anything about that but improve the games to be as much fun as possible. But isn’t there any way that you can help spread the word within a specific country? I haven’t found a great solution to this yet. I know only two “web language zones” by heart: German and English, simply because those are the ones I can read, so I may know webmasters who might be interested in web games to send the link to. Maybe I’ll submit to CollegeHumor.com, Boing Boing, I-Am-Bored.com. Those sites are happy for contributions and maybe one of them will post the link. In Germany, I know similar sites. But how do I find out about the “Russian College Humor” website? And even if I heard about it – e.g. by checking my referrer stats – how do I find out how to post a link on that site?