The subject of translation crops up regularly in the RoboHelp forums and it is a task I have not been personally involved in. Whilst my work did not require projects to be translated, I have read various articles about it. I decided to embark on writing this article when I saw a post on the RoboHelp forums. Jutta Geisler-Sanders does undertake translation of her projects and she had responded to someone seeking help and it prompted me to write the first draft.
Translating a project the first time may seem fairly straightforward. It gets more complex when the translator is not a RoboHelp user and more so when the subject matter is updated as you only want to translate the changes. The aim here is to look at the methods that can be used and the issues involved.
Jutta helped me by commenting on the first draft and all I had to do was rewrite it! Being serious, her comments helped me structure it in a different and I hope better way.
I am indebted to Jutta for her assistance. For those of you who do not speak German, Jutta is the German equivalent of Judith.
June 2019 - This page covers the steps for use with RoboHelp Classic versions up to and including RoboHelp 2019 Classic. The general principles will be the same in RoboHelp 2019.
July 2020 - The 2020 version of RoboHelp has a new translation feature that greatly simplifies translating a project. See the RoboHelp Tour for information.
Essentially there are two methods of working:
Both methods have their issues whether this is the first time you are translating the help or the time has come to update it. Whether you are doing the job yourself or via an agency, you don't want to translate the whole help again. Let's look at both methods.
In a small project, this might be viable in some scenarios.
If you are personally undertaking the translation into every language and not translating the topic file names is not an issue, then you could use this method. Keep in mind though that in a big project, it might be easier to find your way around a large maze than work with what is described above.
If someone else is undertaking some or all of the translation work, it is unlikely they will be skilled in the use of RoboHelp so you have to think about how the work can be done. What format will you give them the topics in and what will they give you back. It will likely not be HTML in a RoboHelp friendly format. Also how will the TOC, the index and glossary get translated? The translator cannot work in RoboHelp so how do they get translated.
There are translation agencies who specialise in translating RoboHelp projects but they will not work with this method, principally because in your interests that they use specialised software that will not work this way. If you use an agency that does not specialise in translating RoboHelp projects, then you have all the same issues as if it is being done by someone in-house other than yourself.
When it comes to updating the help, then you have to find a way of identifying the changes, either to yourself or whoever is undertaking the changes. I have seen the suggestion that you generate a Word document from the first version of the help and another from the project that has been updated in the core language, then use Word's File Compare feature. Consider here how the translation will be given back to you and how well that content will work in RoboHelp. The method might not be as efficient as you would hope.
Whilst a RoboHelp project can be translated this way, most people will use the multiple project method for reasons explained below.
Keep in mind that the objective is to translate everything the user sees without changing the underlying HTML. If you don't believe how important and complex that can get, you will soon learn when you try!
I read that most people who have undertaken the task, find that this is the best solution and it is the method that Jutta uses. Each language is neatly in a self contained project. Here the main considerations are:
If you are doing all the translation yourself, about the only issue is identifying the changes. You could use Word's File Compare as described above or create your own solution.
If someone else in-house is going to be involved, then unless they can use RoboHelp, you will have to come up with a method of working so that things like the TOC, the snippets, the indexes, the glossaries and the LNG file get updated.
This is pretty much the same as using an agency that specialises in RoboHelp projects and uses Trados or suchlike. The difference is that the translator, be that you or someone else, has to know how to use Trados or the chosen translation tool. Jutta's workflow with Trados is described below.
The advantage of using an external agency that specialises in working with RoboHelp projects is that you just give them the core language project and they give you back a project for each language. When an update is required, their software will tell them what has changed so you only get charged for translating the changes.
The disadvantage is you have to pay for that service!
If you use a translation agency that does not work with RoboHelp, you have many of the same problems as when the translation is done in-house. Someone has to get into all those nooks and crannies, the TOC, the snippets, the indexes, the glossaries and the LNG file. Then of course you have the problem when updates come along. They don't have the software that tracks the changes.
A difference with the multiple project method is that you can, if you wish, also translate the topic HTML file names. They do appear in some searches and whether or not this is a necessary step will depend on your view.
The way forward is going to depend, as always, on budget and resources.
I suggest that what you do, is look at what has been covered and draw up a list covering how these factors will work in your organisation.
Do try to get the translated content checked by native speakers of each language. Of course there will always be someone who speaks a language better than a native because they have had to study it rather than learn along the way and have not fallen into bad habits. Generally though, a native speaker is going to be the better option.
With Jutta's permission and assistance, the information she posted about working with a translation tool such as Trados has been edited and included below.
Click here for the additional information.
I use RoboHelp 188.8.131.521 and SDL TRADOS Studio 2015 Professional SR3 – 12.3.5262.0
I am the technical writer for software and I start the Robohelp project in German, it is then translated into serveral languages.
I use multiple projects with copies for each language because for some products we translate up into 8 other languages. For example product aaa_V9.0 is translated into 4 languages but next release aaa_V9.1 I may need to translate into 7 languages. It's straightforward to create another copy of the core language product for another language. I have used Robohelp and Trados this way for many years.
I create Responsive HTML5 and Microsoft HTML (CHM) help.
SDL Trados or Transit NXT
I create a new Trados-project for every translation.
TRADOS - filtersettings for *.hhc + *.hhk + *.glo
For Trados you have to copy the settings below to a file with the ending <*.sdlftsettings>. In Trados you have to import them for each new project.
<?xml version="1.0" encoding="utf-8"?><SettingsBundle><SettingsGroup Id="Robohelp"><Setting Id="SnifferNamespaces">True</Setting><Setting Id="SnifferRootElements0">glossary</Setting><Setting Id="SnifferRootElements">True</Setting><Setting Id="SnifferXPaths">True</Setting><Setting Id="ElementData3IsInlinePlaceholder">false</Setting><Setting Id="ElementData2IsInlinePlaceholder">false</Setting><Setting Id="ElementData3IsInline">false</Setting><Setting Id="ElementData3Name">glossdef</Setting><Setting Id="ElementData3">True</Setting><Setting Id="ElementData0AttributeData0"><AttributeData xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Sdl.FileTypeSupport.Native.Xml.FilterSettings"><Name>version</Name></AttributeData></Setting><Setting Id="ElementData0AttributeData">True</Setting><Setting Id="ElementData1IsInlinePlaceholder">false</Setting><Setting Id="ElementData2IsInline">false</Setting><Setting Id="ElementData2Name">glossterm</Setting><Setting Id="ElementData2">True</Setting><Setting Id="ElementData1AttributeData">True</Setting><Setting Id="ElementData0IsInlinePlaceholder">false</Setting><Setting Id="ElementData1IsInline">false</Setting><Setting Id="ElementData1Name">glossentry</Setting><Setting Id="ElementData1">True</Setting><Setting Id="ElementData2AttributeData">True</Setting><Setting Id="ElementData">True</Setting><Setting Id="ElementData0IsInline">false</Setting><Setting Id="ElementData0Name">glossary</Setting><Setting Id="ElementData0">True</Setting><Setting Id="ElementData3AttributeData">True</Setting><Setting Id="Xml_Translate_Rule_4">True</Setting><Setting Id="Xml_Translate_Rule_3">True</Setting><Setting Id="Xml_Translate_Rule_4Translate">yes</Setting><Setting Id="Xml_Translate_Rule_2">True</Setting><Setting Id="Xml_Translate_Rule_5XPathSelector">//section/@name</Setting><Setting Id="Xml_Translate_Rule_1XPathSelector">//glossentry</Setting><Setting Id="Xml_Translate_Rule_5Translate">yes</Setting><Setting Id="Xml_Translate_Rule_3XPathSelector">//glossdef</Setting><Setting Id="Xml_Translate_Rule_4XPathSelector">//item/@name</Setting><Setting Id="Xml_WithinText_Rule_">True</Setting><Setting Id="Xml_Translate_Rule_1">True</Setting><Setting Id="Xml_Translate_Rule_2XPathSelector">//glossterm</Setting><Setting Id="SnifferRootElements1">toc</Setting><Setting Id="Xml_Translate_Rule_5">True</Setting><Setting Id="SnifferRootElements2">index</Setting><Setting Id="Xml_Translate_Rule_">True</Setting><Setting Id="Xml_Translate_Rule_0XPathSelector">//glossary</Setting><Setting Id="Xml_Translate_Rule_0">True</Setting><Setting Id="FileTypeConfiguration_ComponentBuilderId">XML v 184.108.40.206</Setting><Setting Id="FileTypeConfiguration_ProfileData"><FileTypeInformation xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.sdl.com/filetypesupport"><Description></Description><Expression>(^[\d\D]*\.[gG][lL][oO]$)|(^[\d\D]*\.[hH][hH][cC] $)|(^[\d\D]*\.[hH][hH][kK]$)</Expression><FileDialogWildcardExpression>*.glo;*.hhc;*.hhk</ FileDialogWildcardExpression><FileTypeDefinitionId>Robohelp</FileTypeDefinitionId><FileTyp eDocumentName>Robohelp-Dokument</FileTypeDocumentName><FileTypeDocumentsName>Robohelp-Doku mente</FileTypeDocumentsName><FileTypeName>Robohelp</FileTypeName></FileTypeInformation></ Setting></SettingsGroup></SettingsBundle>
End of filter settings.
If you find the information and tutorials on my site save you time figuring it out for yourself and help improve what you produce, please consider making a small donation.
Changes to this page
17 Jun 2019
Amended to cover applicable RoboHelp versions.
04 Apr 2017