Using export translations and import translations.
Language packs only translate the default SharePoint functionality. Your own lists, content types, fields, etc.. are not translated. Since SharePoint 2010 there is an option in SharePoint to translate elements in the user interface and export them. This export can then be imported again on another server. In my case this is mainly between development, test and production machines (DEV, TST, PRD)
The following items can be translated
- Website title and description
- List title and description
- Contenttype name and description
- Field name and description
- field names are also used in the columns of your lists
How to enable?
- First you need to install the SharePoint Server language packs for the desired language(s)
- Note: since SharePoint 2013 you do not need to install the “Foundation language packs” anymore on a SharePoint Server
- After the language pack is installed. Go to site (Site Settings -> Language Settings)
- Enable the desired languages (in my sample: French and Dutch)
- To translate, sign-in with a user with the correct language set and start changing the titles, descriptions by using the default SharePoint interface.
- you can set the user language by simply setting the browser language
- or overrule the browser setting by editing the language settings in the user profile (User Profile is the new name of the “mySite”)
- When all the translations are done go to Site Settings- > “Export Translations” (or “Import Translations”)
- Select the desired options to create an export file (which is actually an XML based resource file (.resx))
- Save the file on your harddrive
- Repeat the above step on your target server but now you select “Import Translations”
Note: for easier testing/validating I always use 2 users with a different language setting. One user I sign-in while using the Google Chrome browser. With the other user I sign-in while using IE browser.
It’s all about the ids!
It’s important to know that the translation seems to work with the ID of your SharePoint elements. This means that if you want to use this translations functionality, the id’s of your lists , websites, contentypes, fields, etc.. on both environments (source and target) must be the same!
So what will not work?
If you create your SharePoint elements manually in both ( source and target) environments. All the elements will have different id’s. The translation will not happen.
What will work.
- If you have deployed your content types and fields with a SharePoint solution. On every server where you deploy this solution the id’s of the content types and fields will be the same. You can translate them on one server and bring the translation over to another server.
- If you build your sites on one server, create a content backup of this and restore the backup on another server.
- The restore will use the same id’s on the target server.
- Note: If you delete for example a list on the target server and manually recreate it it will not be translated anymore since the new list has a new id (even if you used the same name etc..)
How do I use it?
I always deploy my content types and fields with a SharePoint solution. This way all the ids fo the content types stay the same on every server (DEV, TST, PRD). I do not bother with translating them in my (Visual Studio) SharePoint solution.
Why not? Two main reasons: my experience is that names of content types and fields get changed a lot during the development process. Often even the day before going live. The other reason is that I find it too complex to manage resource files for n amount of languages in Visual Studio. I prefer that the content editors do the translations for me.
We build our solution on a dedicated web application and do a site backup / site restore from this to web app to TST and even PRD. During the initial development phase this is very workable. When your solution is already alive and kicking in PRD, the restore to PRD is not an option anymore of course.