A little while ago I started looking at Variations within SharePoint and how it can be used to provide multi-lingual content on a SharePoint site. Variations is all good when your dealing with a Publishing site (like I tend to) but what can we do for other templates – like the standard Team Site. Fortunately SharePoint provides a fairly robust mechanism to providing translations – without the use of Variations. The approach we can use here is arguably simpler than Variation as we don't have to go through Variation labels, workflows, timer jobs etc. But the downside is that it's not quite as flexible. We'll take a look at some of the options available.
Setting up the Team site
To begin with you'll need to install the appropriate language packs for each language on each SharePoint server within the farm. For this example I'm going to be using English and French for my multi-lingual team site. I'm also starting with a blank team site and creating everything from scratch but the same should work for an existing site as well.
Ensure that you can logon to your site and that you're able to switch between languages. If you need help with this step, you can check out this post.
Creating a new site
I'm going to create a new site, again based on the team site and I'm going to call this 'Company profile'. If we go back to the root of the site, this is how our top navigation looks.
As you can see, in the French version of the site the 'Home' link is 'Accueil' but our new site still retains it's English title which isn't brilliant if you're trying to produce a French site. So here's how we can provide translations:
- Browse to the 'Company profile' site and Site Actions > Site Settings > Language settings
- Enable the French and German languages
- For now leave 'Overwrite translations' as No
- Now switch to French and go back to Site Action > Site Settings
- Find the link for ''Title, description and icon', or 'Titre, description et icône' in French
- Change the Title to 'Profil de société'
Now if you go to the root of the 'Company profile' site in both English and French you'll see that the name changes according to the language. However, if you go to the root of the site itself the top navigation still hasn't changed. Fear not, we can change that too!
- From the root site (in French), Site Actions > Site Settings > Barre de liens supérieure (aka Top link bar)
- Find the 'Company profile' entry and click on the edit icon
- Provide a French version
Now if you head back to the root of the site the top link menu has updated!
Now as a start we can at least get our sites and navigation updated so that we can support different languages for the same sites.
Lists & Libraries
The same approach can be used when creating new lists and libraries – create it in one language and then switch to another language and provide a translation. We can create new lists and libraries, add additional columns, modify the navigation all so that they support translations. And all of this without writing a single line of code!
Exporting and Importing translations
Having spent time providing your translations for your site, SharePoint provides a helpful way to export those translations into a resource file (.resx). There's a few limitation – firstly, the export is done at the web level so if you've got a number of these then there's a lot of files to generate. Another thing is that the keys that are used are generated so they are not always readable! For example, the key used by my site is "00000000000000000000000000000000_NavNode2008" – not exactly the easiest naming. If you want to use the export/import to actual manage your translations then I'd recommend exporting the resource file first, modify the translations and then import those back in.
You can also export a resource file, change the language and translations and import for a different language. So for example, say we've finished translating our team site into French, it would be a pain to have to go back through the site translating everything into German. Instead what we can do is:
- Export the French resource file, Site Actions > Site Settings > Export Translations
- Select French and ensure 'Only export text that is not translated' is No
- Find the *.resx file that's been downloaded and edit it
- Modify the translations as required
- Update the language Id – find <data name="ExportedLanguage"> and update the <value>, e.g. going from French to German change 1036 to 1031
- Jump back to the site, Site Actions > Site Settings > Import Translations
- Upload your modified file, select German and away you go
Only export text that is not translated - from what I can gather with this setting is that when you select 'No' it exports all of the values that have been translated for the selected language, when you select 'Yes' it exports the unchanged/default values. However, if you select the default language it exports all the currently available keys. Something to note is that a 'resource key' doesn't exist until you provide a translation. For example, if I create a new site now and then export the English translations then my new site doesn't exist. However, if I edit the top menu bar again and provide a French translation and then re-export the English resource file I get a new key.
Out of the box SharePoint gives you a lot of flexibility when it comes to multi-lingual support. As we've seen here there's a number of ways that a Team site can be customised and tweaked – all without writing any code!