Monday, May 5, 2008

Google's AdSense for an international website


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.

1 comment:

  1. Does anyone know the answer to this question: If you want to run two languages on your web site, how do you get Google Adsense to serve them? Do you have to open two AdSense accounts -- one in each language?

    ReplyDelete

We welcome comments to our blog post but MANUALLY verify each comment. Spam comments will be reported. When asking for an answer on anything Colnect related, please use Colnect's forums. Thanks and happy Colnecting :)

Link and Search

Did you like reading it? Stay in the loop via RSS. Thanks :)