The translation process is a lot of work. If you start thinking about it and all the permutations and possibilities you can go mad. Especially in a system where anyone can author content in any language.
The old system we had in place took a lot of human processes which is prone to errors. So I wanted to go with a very simple straight forward system. We initially write our doc in English and translate it to German, French and Japanese. The system also needs to be extensible for Piglatin and Klingon. In previous releases the documentation was locked down two or more months prior to shipping then sent out for translation. This cycle we are doing simship, which means everything must be done at the same time or have very little lag behind the English version. One of the luxuries the translation team had was they had more time to fix bugs. This means that the doc was out of sync with the English versions which caused me a lot of headaches for comparison reasons. One of the things I do is compare the structure of the XML files to make sure that same file in all four languages is the same. I keep around MD5 hashes of each one so I can compare and know if one changed. Since we are now using subversion new possibilities have opened up because we can ask subversion about the files in the repository and add properties to each file.
The most important tool I've written generates translation packs. Translations packs are bunches of English XML files that are sent to a translation agency and come back in German, French, Japanese, Piglatin or Klingon. The main goal of this tool was that I didn't want to run the process, so it needed to be something easy. One button and a progress bar is always simple to use so I dropped a button on the form, added a progress bar and a memo for errors/warnings, double clicked on the button and started writing some code. The process when the button is clicked is pretty simple:
- gather all the .xml files in the repository
- remove any files that are in a not to be translated list (this is an override list)
- remove any files that weren't modified
- remove any files with the subversion property of translate=false
- force include any files with the subversion property of translate=true (if found then remove it, only want to force include once)
- zip the new files up into a .zip file
- zip the modified files up into a .zip file
At the moment there is no process for tracking each file through the system to make sure it gets translated. That is on the list of things to do along with finding an agency that can translate into Klingon.