We are starting the process of internationalizing our software. To do this we will be writing a series of filters to convert all of our different resource files (resx, text, java resource, etc) into a common format. We will then be outputting xliff files for translation. After translation the process will run in reverse.

We would like to keep the central store updated with any changes that developers make to the resource files ideally using ant during the build process, maintaining knowledge of which branch or version of the software is using which resources. We'd also like to keep track of which version of software the resources were taken from which are sent for translation, the dates when the files were sent and received back and also who translated them.

The idea then being we apply the translations to the correct branch, we can take diffs of the central store in future to send partial resources for translations and we can report on quantity of translation at a point in time.

We are considering storing all of this data within the svn repository as a tree of xliffs, perhaps branched in a mirror of the main code repository. Is this sufficient or would we be better off just using a database to maintain this information?


I've found SVN (or other good source control system with branching and diff tools) to be really good for this (oh and don't forget the power of patch files). For example, we use it to compare and contrast Jboss Application server configuration files across the various versions they release as well as our modifications. Using branches and diff we can pretty quickly figure out that X, Y and Z changed in this point release and we can patch on our regular A & B patches.

But do take the time up front to design your branches and your workflow. Test it out with small examples first, we had to go through a few iterations before we found a logical way of working.

  • 1
    After a fair amount of consideration we will be going ahead with a source control to maintain this data. Branches to maintain an up to date store of resource data mapped to out main release branch structure and tags created when files are sent for translation. This way we can write minimal code for converting formats and manually work through the processes until we are happy at which point we'll introduce more automation. – Gruffputs Nov 10 '10 at 15:30
  • Cool, let me know how it goes, it'll be interesting to hear you rexperiences – Martijn Verburg Nov 10 '10 at 15:40

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.