Adding language translations to your site

Adding language translations to your site


There is perhaps no single add-on that will make your web site(s) look like a bigger, more professional operation than adding translations and a language switcher. We have all seen sites like this with a group of country flags displaying across the top. You click on one and the whole site suddenly switches from English to French or Spanish. For our purposes I’m going to divide sites into 3 categories: forums, content management systems such as Drupal and WordPress, and html sites.

If you are using forum software that supports translations such as Simple Machine Forums, you are good to go. You simply enable translation in your administrative panel and specify the languages you want.

Because everything was built to work together, you should experience few if any problems.


If you are using Drupal or Joomla you can search for translation modules and add and configure them as you would any module. Because you are dealing with a more open system here than the forum software, you may experience problems that will need minor code changes.


With the most commonly used content management software -Wordpress, translation is accomplished through the use of plug-ins. You can search for translation plug-ins through your WordPress dashboard or at


The plug-in that I recommend is Transposh  It is no longer available through the plug-in depository as the creators wish to keep a link to their site in the translation widget, which is against guidelines (if the link bothers you may move it to your footer). When it resided at the Transposh plugin had over 189,000 downloads, so it is fairly mature software. Transposh is available free from



If you have never used a plug-in that doesn’t come from here is how to install it:


Download the plug-in to your hard drive. No need to unzip it.

In your WordPress dashboard go to Install New Plug-ins

Select the upload tab at the top and browse to the plug-in zip file on your hard drive

Click ‘upload’




Once installed, Transposh will make translations of anything posted after the installation. If translations for existing material do not appear after you install the plug-in then go to the WordPress dashboard|Transposh|utilities and click on the “Translate All” button. These translations can be improved by manual editing. Words are color coded when editing the translations–red: was not translated, yellow: automatic translation, green: was edited by a human.

With Transposh your first four decisions are:

1) The default language. This should normally be the language you create your articles in.

2) Which languages will you enable support for? Do not simply select them all (unless you expect users from all over the world) as this may put a strain on the server and slow down your site. Also make sure you have a caching plug-in installed and configured correctly. A blog with 4 or 5 languages which has less than three posts per day should run fine on a shared server without your host complaining about excess CPU usage.


3) Who will be able to edit the translations? With Transposh the editing button may appear to everyone, or just logged in users, just authors, just editors, or only administrators. If you let everyone edit in the way that many wikis do, you may improve the quality of your translations. If you go that route you will want to make frequent backups of your site to protect your translations against vandalism. My personal preference is to only allow editors (not administrators either) to translate. The reason for this is that the people who are allowed to translate see an additional line in the widget which holds the edit button. This changes the position of everything that comes after it. As an administrator I want to see my pages the way visitors who are not logged in see them. It is simple enough to create a separate user login for editing.

4) How will the widget appear? Will it use flags only or a drop-down list of languages or a list of flags with countries next to them?


Go through all the tabs that open when you select dashboard|plugins|transposh and familiarize yourself with each of the settings. There are tutorials on if you are not sure of what a particular setting will do.


Note that Transposh is designed to be used as a widget If you want to place it in at the top or bottom of your pages you can add this line to your theme’s header.php or footer.php (back up any theme file before editing)

<?php if(function_exists(“transposh_widget”)) { transposh_widget(); }?>


If you wish to create a new a new widget area to display the Transposh widget, there are  instructions on creating widget areas at This method will add the widget area to your widgets page so you can drag the Transposh widget (or any other widget) in and out of it. Most people should be able to follow the examples and create a new widget area where they need it with a few hours of work. Again be sure to back up any theme file before you edit it.


What can you expect from a plug-in like Transposh? The machine translations are quite good–in my opinion they are better than the English you see all over the web in articles created by foreign language speakers in exchange for two to three dollars per article. They are not as good as a translation made carefully by hand by a native speaker. If you take pride in your blog, then every translation should be read over by a native speaker and edited. They will usually only need to make two or three small changes per page.

Although the plug-in will work out of the box with many themes there are some potential issues. It will not work with themes that don’t use wp_head() and wp_foot(). Fortunately few themes fall into that category. Translation is a complex task and you can’t expect the plug-in to work perfectly with every theme without adjustment. As an example: on one site Portuguese translations look very good but &nbsp; is displaying on the Spanish translations. If you run into this issue I would just make sure you don’t use &nbsp; on your site. If you have technical problems with the plug-in that you can’t solve, then you can either try a different plug-in, or contact support at At this time they are charging $99 for priority support.

Transposh (and other translation plug-ins) are powered by either Google or Bing translation software. There is a place in the plug-in settings for you to enter a key from your selected provider. At the present time the plug-in works with that setting left blank, but there is always the chance that Google or Bing will require an API number in the future and will charge users of high volume sites.

Adding Transposh to an html site:

Translation of html sites is a more manual process. I know of no switching plugin that will automatically do most of the work for you. Here are the steps I would take to add a language.

1)    Make sure that all internal links on your site use relative paths.

2)    Take the front page from your site and copy the text that displays. On a Windows computer you may need to press f8 in order to select the text.

3)    Go to    Paste the text into the box, select your output and use the translation to build a foreign language version of your page. Now upload that page e.g.  http://your site/French.html

4)    Repeat this step for every page using the same title as the original but uploading it to the ‘French’ directory.

5)    Repeat all of this for the other languages you want to add.

6)    Now you will need to add links to the homepages for each language to the front page of your site.

Note that you now have machine translations for each of your pages, but whenever possible you should have these edited by a native speaker. This solution is not as good as the ones for forums and WordPress sites as you can only get to each language version through the home page. If you need something more elaborate you will probably need to contact a developer.

There is ‘translation’ software available for html sites but it is not meant to translate the site. The purpose of html translation software is to allow professional translators a quick way to separate the content of a site that they need to translate from the html page code and then recombine them after they have translated the page.