Multiple language Website SEO advice

08.27.2010 · Posted in seo
(Note: Now we have a regular discussion group at Facebook, we discuss every day and a major topic every Monday, Join http://www.facebook.com/home.php?sk=group_169365023081183&ap=1)

I am just copying the whole content from WMW to start the conversation about Multiple Language website SEO. This is a tricky one, we have been work on it for last one year and have faced a lot of problems ourselves. Here is a checklist to start with, I will keep adding it here:

- all page content is translated, (except for UGC sections)
- all window s and <meta>s are translated<br /> - all pages are in UTF-8<br /> - all data is stored as UTF-8<br /> - images that have text in them are available in i18n versions<br /> - all images have @alt text and @title attributes translated<br /> - page delivers a “Content-Language” HTTP header<br /> - the <html> tag has attributes @lang and @xml:lang<br /> - dates are presented in translated formats (eg “el 4 de agosto 2010″)<br /> - outgoing emails are translated into the user’s preferred language<br /> - numbers are presented with internationalized formatting (eg. $1,234.56 vs $1.234,56)<br /> - other subtle formatting, eg. 50% vs 50 %, Name: vs Nom :</p> <p><strong>Some practical things I learned during this project:</strong><br /> - Pages that contain a lot of mixed UGC language can/should be blocked from indexes using a <meta> tag, because they can only do more harm than good<br /> - alt language pages all have unique URLs, they are not dynamically rendered using a cookie or geo-targeting<br /> - geotargeting may be useful for setting sessions but should not override URL-based navigation to another language<br /> - ccTLDs are perceptually better than subdomains or subfolders<br /> - massive cross-linking of pages is good<br /> - for storing the phrase lexicon, SQLite is faster than MySQL, XML, or even a hard-coded array, on a typical LAMP server. see: [webmasterworld.com...]<br /> - liberal use of memcache is a good thing<br /> - <a title="offering" href="http://www.jeetbo.com/offering">offering</a> translated file paths is good, if your architecture is flexible enough to do that without causing great suffering.<br /> - start every project using UTF-8 for everything. It’ll save you big headaches later on.<br /> - Translating will take longer than you expect<br /> - Not all translators are comfortable with internet jargon like “download” and “ringtone” and “widget” etc. You may need to shop around for someone specialized… or pretty much anyone under 25. LOL<br /> - Store verbal metadata (name, description, tags) in a separate table from non-verbal metadata (price, popularity), keyed with a language code (“en”, “es”, “fr”…), with a one-to-many relationship with the item ID. That way you can offer verbal metadata in more than one language without rewriting all your SQL queries. (I had to do that. Not fun.)<br /> - May be worthwhile to hire folks who read/write the other languages to do some blitzkrieg link-building<br /> - In some situations a templating language like Smarty comes in handy</p> <p><strong>Some of the debate is still on:</strong><br /> >Translating will take longer than you expect<br /> Absolutely – and you should use local people if you’re really serious. Stay AWAY – far AWAY – from automated services. Google translate will NOT be good enough! </p><div class="addtoany_share_save_container"><div class="a2a_kit addtoany_list"><a class="a2a_dd addtoany_share_save" href="http://www.addtoany.com/share_save"><img src="http://www.jeetbo.com/wp-content/plugins/add-to-any/share_save_256_24.png" width="256" height="24" alt="Share"/></a></div> <script type="text/javascript"><!-- var a2a_config = a2a_config || {}; a2a_config.linkname="Multiple language Website SEO advice"; a2a_config.linkurl="http://www.jeetbo.com/seo/multiple-language-website-seo-advice.html"; //--></script><script type="text/javascript" src="http://static.addtoany.com/menu/page.js"></script> </div> <p>No related posts.</p> <p>Related posts brought to you by <a href='http://mitcho.com/code/yarpp/'>Yet Another Related Posts Plugin</a>.</p> </div> <div class="ptags"></div> </article> <div id="respond"> <h3>Leave a Reply</h3> <div id="cancel-comment-reply"> <small><a rel="nofollow" id="cancel-comment-reply-link" href="/seo/multiple-language-website-seo-advice.html#respond" style="display:none;">Click here to cancel reply.</a></small> </div> <form action="http://www.jeetbo.com/wp-comments-post.php" method="post" id="commentform"> <p> <input type="text" name="author" id="author" value="" size="22" tabindex="1" aria-required='true' /> <label for="author">Name (<span style="color:red">*</span>)</label> </p> <p> <input type="text" name="email" id="email" value="" size="22" tabindex="2" aria-required='true' /> <label for="email">Mail (will not be published) (<span style="color:red">*</span>)</label> </p> <p> <input type="text" name="url" id="url" value="" size="22" tabindex="3" /> <label for="url">Website</label> </p> <p><textarea name="comment" id="comment" cols="100%" rows="10" tabindex="4"></textarea></p> <div style="display:block;" id="captchaImgDiv"> <div style="display:block; padding-top:5px;" id="captchaInputDiv"><input type="text" value="" name="captcha_code" id="captcha_code" tabindex="4" style="width:65px;" /> <label for="captcha_code"><small>CAPTCHA Code</small></label> </div> <div style="width: 250px; height: 40px; padding-top:10px;"><img class="si-captcha" id="si_image_com" style="border-style:none; margin:0; padding-right:5px; float:left;" src="http://www.jeetbo.com/wp-content/plugins/si-captcha-for-wordpress/captcha-secureimage/securimage_show.php?si_form_id=com&prefix=8wEGokVhxpnWtJNm" alt="CAPTCHA Image" title="CAPTCHA Image" /> <input id="si_code_com" type="hidden" name="si_code_com" value="8wEGokVhxpnWtJNm" /> <div id="si_audio_com"> <a id="si_aud_com" href="http://www.jeetbo.com/wp-content/plugins/si-captcha-for-wordpress/captcha-secureimage/securimage_play.php?si_form_id=com&prefix=8wEGokVhxpnWtJNm" rel="nofollow" title="CAPTCHA Audio"> <img src="http://www.jeetbo.com/wp-content/plugins/si-captcha-for-wordpress/captcha-secureimage/images/audio_icon.png" alt="CAPTCHA Audio" style="border-style:none; margin:0; vertical-align:top;" onclick="this.blur();" /></a> </div> <div id="si_refresh_com"> <a href="#" rel="nofollow" title="Refresh Image" onclick="si_captcha_refresh('si_image_com','com','mp3','/wp-content/plugins/si-captcha-for-wordpress/captcha-secureimage','http://www.jeetbo.com/wp-content/plugins/si-captcha-for-wordpress/captcha-secureimage/securimage_show.php?si_form_id=com&prefix='); return false;"> <img src="http://www.jeetbo.com/wp-content/plugins/si-captcha-for-wordpress/captcha-secureimage/images/refresh.png" alt="Refresh Image" style="border-style:none; margin:0; vertical-align:bottom;" onclick="this.blur();" /></a> </div> </div> </div> <p style="display: none;"><input type="hidden" id="akismet_comment_nonce" name="akismet_comment_nonce" value="762d9065de" /></p> <p> <input name="submit" type="submit" id="submit" tabindex="5" value="Submit Comment" /> <input type='hidden' name='comment_post_ID' value='400' id='comment_post_ID' /> <input type='hidden' name='comment_parent' id='comment_parent' value='0' /> </p> </form> </div> </div><!-- end #content --> <aside> <div id="sidebar1"> <div class="section widget_text"> <div class="textwidget"> <b>The best Web marketing search engine</b> <div id="cse" style="width: 100%;">Loading</div> <script src="http://www.google.com/jsapi" type="text/javascript"></script> <script type="text/javascript"> google.load('search', '1', {language : 'en'}); google.setOnLoadCallback(function(){ var customSearchControl = new google.search.CustomSearchControl('013115297221850661076:ewgozt9n1dg'); customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET); customSearchControl.draw('cse'); }, true); </script> <link rel="stylesheet" href="http://www.google.com/cse/style/look/default.css" type="text/css" /></div> </div><!-- .section --> <div class="section widget_text"> <div class="textwidget"><a href="http://www.jeetbo.com/free">Download Free PDF on SEO factors – Over 50 factors of Ranking explained</a></div> </div><!-- .section --> <div class="section widget_text"> <div class="textwidget"></div> </div><!-- .section --> <!-- Wordpress Popular Posts Plugin v2.1.4 [W] [all] [regular] --> <div class="section popular-posts"> <h3>Popular Posts</h3><ul> <li><a href="http://www.jeetbo.com/social-media/how-to-change-facebook-page-type.html" title="How to change facebook page type - Facebook marketing series"><span class="wpp-post-title">How to change facebook page type - Facebook marketing series</span></a> <span class="post-stats"><span class="wpp-comments">0 comment(s)</span></span> </li> <li><a href="http://www.jeetbo.com/" title="Home"><span class="wpp-post-title">Home</span></a> <span class="post-stats"><span class="wpp-comments">0 comment(s)</span></span> </li> <li><a href="http://www.jeetbo.com/questions/does-file-extension-matter-for-seo.html" title="Does file extension matter from SEO point of view? "><span class="wpp-post-title">Does file extension matter from SEO point of view? </span></a> <span class="post-stats"><span class="wpp-comments">2 comment(s)</span></span> </li> <li><a href="http://www.jeetbo.com/seo/canonical-tag-https-http-content-issues.html" title="Canonical Tag - HTTPs & HTTP content issues"><span class="wpp-post-title">Canonical Tag - HTTPs & HTTP content issues</span></a> <span class="post-stats"><span class="wpp-comments">0 comment(s)</span></span> </li> <li><a href="http://www.jeetbo.com/project-planning/pre-sales-client-discovery-questionnaire-for-seo-and-web-marketing.html" title="Pre-Sales Client Discovery Questionnaire for SEO and Web Marketing"><span class="wpp-post-title">Pre-Sales Client Discovery Questionnaire for SEO and Web Marketing</span></a> <span class="post-stats"><span class="wpp-comments">0 comment(s)</span></span> </li> <li><a href="http://www.jeetbo.com/ugc/how-to-make-the-careers-section-of-your-website-more-effective.html" title="How to make the "Careers" section of your website more effective?"><span class="wpp-post-title">How to make the "Careers" section of your website more effective?</span></a> <span class="post-stats"><span class="wpp-comments">0 comment(s)</span></span> </li> <li><a href="http://www.jeetbo.com/seo/domain-name-seo-registrar.html" title="Domain name and SEO - Registrar changes, domain registration length"><span class="wpp-post-title">Domain name and SEO - Registrar changes, domain registration length</span></a> <span class="post-stats"><span class="wpp-comments">1 comment(s)</span></span> </li> <li><a href="http://www.jeetbo.com/human-resource/hr-and-social-media.html" title="HR and Social Media"><span class="wpp-post-title">HR and Social Media</span></a> <span class="post-stats"><span class="wpp-comments">2 comment(s)</span></span> </li> <li><a href="http://www.jeetbo.com/team" title="Team"><span class="wpp-post-title">Team</span></a> <span class="post-stats"><span class="wpp-comments">0 comment(s)</span></span> </li> <li><a href="http://www.jeetbo.com/indian-web/we-get-good-traffic-for-sbi-mf-what-to-do.html" title="We get good traffic for SBI MF, what to do"><span class="wpp-post-title">We get good traffic for SBI MF, what to do</span></a> <span class="post-stats"><span class="wpp-comments">0 comment(s)</span></span> </li> </ul> </div><!-- .section --> <!-- End Wordpress Popular Posts Plugin v2.1.4 --> <div class="section widget_recent_entries"> <h3>Recent Posts</h3> <ul> <li><a href="http://www.jeetbo.com/human-resource/hr-and-social-media.html" title="HR and Social Media">HR and Social Media</a></li> <li><a href="http://www.jeetbo.com/seo/what-is-important-content-or-link.html" title="What is important – content or link? Content vs link in SEO">What is important – content or link? Content vs link in SEO</a></li> <li><a href="http://www.jeetbo.com/seo/canonical-tag-https-http-content-issues.html" title="Canonical Tag – HTTPs & HTTP content issues">Canonical Tag – HTTPs & HTTP content issues</a></li> <li><a href="http://www.jeetbo.com/seo/should-i-get-links-from-lesser-pr-website-pr-pages.html" title="Should I get links from lesser PR websites or lesser PR pages">Should I get links from lesser PR websites or lesser PR pages</a></li> <li><a href="http://www.jeetbo.com/careers/i-want-to-do-better-job-not-this-one-plz.html" title="I want to do better job, not this one plz">I want to do better job, not this one plz</a></li> <li><a href="http://www.jeetbo.com/social-media/how-to-change-facebook-page-type.html" title="How to change facebook page type – Facebook marketing series">How to change facebook page type – Facebook marketing series</a></li> <li><a href="http://www.jeetbo.com/seo/how-long-will-it-take-to-rank.html" title="How long will it take to rank?">How long will it take to rank?</a></li> <li><a href="http://www.jeetbo.com/seo/shifting-the-domain-impact-on-ranking.html" title="Shifting the domain – Impact on Ranking">Shifting the domain – Impact on Ranking</a></li> <li><a href="http://www.jeetbo.com/human-resource/client-communication.html" title="Online Client Communication">Online Client Communication</a></li> <li><a href="http://www.jeetbo.com/email-marketing/checking-your-ip-reputation-email-marketing-mailing.html" title="Checking your IP reputation – Email marketing, mailing">Checking your IP reputation – Email marketing, mailing</a></li> <li><a href="http://www.jeetbo.com/social-media/social-media-marketing-for-b2b.html" title="Social Media marketing for B2B">Social Media marketing for B2B</a></li> <li><a href="http://www.jeetbo.com/social-media/youtube-as-a-marketing-channel.html" title="Youtube as a marketing channel">Youtube as a marketing channel</a></li> <li><a href="http://www.jeetbo.com/uncategorized/hr-seo.html" title="The Changing face of Recruitment and the role of SEO in HR">The Changing face of Recruitment and the role of SEO in HR</a></li> <li><a href="http://www.jeetbo.com/project-planning/pre-sales-client-discovery-questionnaire-for-seo-and-web-marketing.html" title="Pre-Sales Client Discovery Questionnaire for SEO and Web Marketing">Pre-Sales Client Discovery Questionnaire for SEO and Web Marketing</a></li> <li><a href="http://www.jeetbo.com/seo/starting-a-forum-any-advice.html" title="Starting a forum, any advice">Starting a forum, any advice</a></li> <li><a href="http://www.jeetbo.com/seo/cache-of-com-for-nl-domain.html" title="cache of .com for the .nl domain, what’s the mystery">cache of .com for the .nl domain, what’s the mystery</a></li> <li><a href="http://www.jeetbo.com/seo/multiple-language-website-seo-advice.html" title="Multiple language Website SEO advice">Multiple language Website SEO advice</a></li> <li><a href="http://www.jeetbo.com/ugc/history-of-seo-industry-2.html" title="History of SEO industry">History of SEO industry</a></li> <li><a href="http://www.jeetbo.com/seo/geolocation-domain-name-and-hosting-ip-for-local-ranking.html" title="GeoLocation domain name and Hosting IP for Local ranking">GeoLocation domain name and Hosting IP for Local ranking</a></li> <li><a href="http://www.jeetbo.com/ugc/how-to-make-the-careers-section-of-your-website-more-effective.html" title="How to make the “Careers” section of your website more effective?">How to make the “Careers” section of your website more effective?</a></li> </ul> </div><!-- .section --> <div class="section widget_text"> <div class="textwidget"><b>Ask a query</b><br /> <form enctype="multipart/form-data" action="/ask#usermessage4a" method="post"> <input type="text" name="cf4_field_1" size="23" value="Name" onfocus="clearField(this)" onblur="setField(this)"/><span class="reqtxt"></span> <input type="text" name="cf4_field_2" size="23" value="Email" onfocus="clearField(this)" onblur="setField(this)"/><span class="emailreqtxt"></span> <input type="text" name="cf4_field_3" size="23" value="Phone Number" onfocus="clearField(this)" onblur="setField(this)"/><br /><br /> <textarea cols="19" rows="8" name="cf4_field_4" id="cf4_field_4" class="area fldrequired">Message</textarea><span class="reqtxt"></span> <input type="hidden" name="cf_working4" id="cf_working4" value="One%20moment%20please..."/> <input type="hidden" name="cf_failure4" id="cf_failure4" value="Please%20fill%20in%20all%20the%20required%20fields."/> <input type="hidden" name="cf_codeerr4" id="cf_codeerr4" value="Please%20double-check%20your%20verification%20code."/> <input type="hidden" name="cf_customerr4" id="cf_customerr4" value="yyy"/> <input type="hidden" name="cf_popup4" id="cf_popup4" value="yy"/> <p class="cf-sb"> <P ALIGN=LEFT> <input type="submit" name="sendbutton4" id="sendbutton4" class="sendbutton" value="Submit" onclick="return cforms_validate('4', false)"/></p> </form> </div> </div><!-- .section --> <div class="section widget_archive"> <h3>Archives</h3> <ul> <li><a href='http://www.jeetbo.com/2011/05' title='May 2011'>May 2011</a> (1)</li> <li><a href='http://www.jeetbo.com/2010/12' title='December 2010'>December 2010</a> (1)</li> <li><a href='http://www.jeetbo.com/2010/11' title='November 2010'>November 2010</a> (1)</li> <li><a href='http://www.jeetbo.com/2010/10' title='October 2010'>October 2010</a> (6)</li> <li><a href='http://www.jeetbo.com/2010/09' title='September 2010'>September 2010</a> (4)</li> <li><a href='http://www.jeetbo.com/2010/08' title='August 2010'>August 2010</a> (13)</li> <li><a href='http://www.jeetbo.com/2010/07' title='July 2010'>July 2010</a> (3)</li> <li><a href='http://www.jeetbo.com/2010/05' title='May 2010'>May 2010</a> (2)</li> <li><a href='http://www.jeetbo.com/2010/04' title='April 2010'>April 2010</a> (13)</li> <li><a href='http://www.jeetbo.com/2010/03' title='March 2010'>March 2010</a> (3)</li> <li><a href='http://www.jeetbo.com/2009/12' title='December 2009'>December 2009</a> (1)</li> </ul> </div><!-- .section --> </div><!-- end #l-sidebar --> <div id="sidebar2"> <div class="section widget_text"> <div class="textwidget"><div class="section widget_pages"> <ul> <li class="page_item page-item-75"><a href="http://www.jeetbo.com/pro" title="Professionals">Professionals</a> <ul> <li class="page_item page-item-5"><a href="http://www.jeetbo.com/pro/jobs" title="Jobs">Jobs</a> </li> <li class="page_item page-item-38"><a href="http://www.jeetbo.com/pro/submit-resume" title="Submit Resume">Submit Resume</a> </li> </ul> </li> <li class="page_item page-item-84"><a href="http://www.jeetbo.com/companies" title="Companies">Companies</a> <ul> <li class="page_item page-item-33"><a href="http://www.jeetbo.com/companies/add-job" title="Add a Job">Add a Job</a> </li> </ul> </li> <li class="page_item page-item-94"><a href="http://www.jeetbo.com/ask" title="Ask A Question">Ask A Question</a></li> <li class="page_item page-item-101"><a href="http://www.jeetbo.com/documents" title="Documents">Documents</a></li> <li class="page_item page-item-103"><a href="http://www.jeetbo.com/consulting" title="Consulting">Consulting</a></li> <li class="page_item page-item-104"><a href="http://www.jeetbo.com/mentoring" title="Mentoring">Mentoring</a></li> <li class="page_item page-item-105"><a href="/videos" title="Videos">Videos</a></li> <li class="page_item page-item-111"><a href="http://www.jeetbo.com/offering" title="Offering">Offering</a></li> <li class="page_item page-item-112"><a href="http://www.jeetbo.com/team" title="Team">Team</a></li> <li class="page_item page-item-159"><a href="http://www.jeetbo.com/membership" title="Membership">Membership</a> </li> </ul> </div> <a href="http://www.twitter.com/jeetbo" target=blank><img src="http://www.nctc.edu/User_Images/twitter_logo_3.jpg"></a></div> </div><!-- .section --> <div class="section widget_text"> <div class="textwidget"><script type="text/javascript" src="http://static.ak.connect.facebook.com/connect.php/en_GB"></script><script type="text/javascript">FB.init("794a2b3f92151527894f35a22e45f361");</script><fb:fan profile_id="341939356898" stream="0" connections="4" logobar="0" width="168" height="310"></fb:fan><div style="font-size:16px; padding-left:6px"><a href="http://www.facebook.com/Jeetbo">Jeetbo</a> on Facebook</div></div> </div><!-- .section --> </div><!-- end #r-sidebar --> </aside></section> <footer> © 2009 <a href="http://www.jeetbo.com">Jeetbo.com</a> <a href="http://www.facebook.com/Jeetbo"><img src="http://www.gaanza.com/wp-content/uploads/2010/02/facebook.png"><a/> |<a href="http://twitter.com/jeetbo"> <img src="http://www.gaanza.com/wp-content/uploads/2010/02/twitter.png"></a> </footer> </div><!-- #wrapper --> <script type="text/javascript"> var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); </script> <script type="text/javascript"> try { var pageTracker = _gat._getTracker("UA-15638988-1"); pageTracker._trackPageview(); } catch(err) {}</script> <!-- Begin Web-Stat code 2.0 http --> <script type="text/javascript" src="http://server4.web-stat.com/wtslog.pl?al206583,3"></script> <noscript><p><a href="http://www.web-stat.com"> <img src="http://server4.web-stat.com/3/al206583.gif" style="border:0px;" alt="site statistics"/></a></p></noscript> <!-- End Web-Stat code v 2.0 --> </body> </html>