This is a technical post explaining how to use
Google's AdSense on a multiple languages website.
The problem: having a dynamic website that is available in many languages is great but there has to be a way to let AdSense know which languages the user is currently using so relevant ads would appear in that user's language.
Solution: as I've researched the issue for
colnect.com (available in 25 languages), it seems the only way to let AdSense know the page's language is by using different URIs for each language. There's currently no way to pass the language as a parameter to the JavaScript responsible for showing the ads.
The following pictures show the same page in different languages. Note that the AdSense ads match the language of the page.
On colnect.com, each link is now prefixed by two letters which signal which language is used. Thus:
http://telecards.colnect.com/fr/browse.php
Refers to a French-language (fr) page while:
http://telecards.colnect.com/es/browse.php
refers to a Spanish-language (es) page.
Calling the relevant PHP script and converting the language prefix to a parameter is easily done using Apache's mod_rewrite.
An important issue I had to address is what happens when one user sends a link or publishes a link. Let's say I know both Spanish and English and prefer to view colnect.com in Spanish. However, perhaps some of my contacts know Hebrew and English but not Spanish. Thus if I send a Spanish-language link to a Hebrew-speaking user, it would be a shame if the site would show up in Spanish and confuse the other person.
To address this issue the language information is saved in the session and the user is redirected to the appropriate link according to his session language. If no session information is found, the language referred to in the link is used. The language is also saved in the user's account so if one logs in using a page in any language, upon a successful log in the language is changed to the previously chosen one
Here's the example (the two letters note the language: es = Spanish, en = English):
If you're visiting the site for the first time, this link will show a Spanish page:
http://telecards.colnect.com/es/browsecoll.php?filter_country=y
Now, if you change the language to English (on the bottom of the side menu - there's a combo-box), you will be redirected to:
http://telecards.colnect.com/en/browsecoll.php?filter_country=y
So now, if you try a Spanish link such as:
http://telecards.colnect.com/es/browsecoll.php?filter_country=y&country=105
You'll automatically be redirected to:
http://telecards.colnect.com/en/browsecoll.php?filter_country=y&country=105
You can change into any of the 25 supported languages and you'll see the AdSense ads now appear in the correct language:
|
English |
العربية |
Български |
汉字 |
Hrvatski |
Česky |
Nederlands |
Suomi |
Français |
Deutsch |
Ελληνικά |
עברית |
Magyar |
Italiano |
우리말 |
Polski |
Português BR |
Português PT |
Română |
Русский |
Slovenščina |
Español |
Svenska |
ภาษาไทย |
Türkçe |
Hopefully this post gave a sufficient outline to a working solution.