Managing application resources, which need to be translated, has been a struggle on most projects that I have been involved in. Normally resources are developed in XML or plain text formats; however it all depends on the platform that it’s being developed on.And, most professional translators require that you send the resources in an Excel spreadsheet.
In most cases the process in the conversion between a source and a translator format is a manual one and as bad as copying and pasting. This as well as sending the spreadsheets back and forth which is done via emails and attachments and holds a high risk of errors… and is a boring task for the developers!
When we were facing a roll-out of more than 80 applications for European Directories (the Yellow Pages across 8 countries), we saw the problems coming. We had a combination of 6 apps for 8 countries on 5 platforms. Each app contains more than 300 string resources, which had to be translated into the native language for each country. Quite a lot of resources and properties to manage!
I started to analyze the requirements of a tool, and wanted the following features:
- A web application, so that the translator can log in to the same service as the developers, in order to reduce e-mails and conversions
- Separation between translated data and platform resource file formats, i.e. the possibility to export your resources to any formats
- Configuring subsets or variants of resources, to allow using the same database for different variants of the applications
- Available for all software projects, not only open-source, Linux or Mozilla projects, but also commercial projects
- Suitable for both server-side and mobile application development
As I did not find such a solution for commercial use, I started developing a new tool from scratch.
I first deployed the Translation Management tool Ricotta version 1 to AppEngine in January 2011 and since then we’ve continued to update it.
Ricotta handles a number of projects, so anyone can create a database for their project. Each project has one or more users, each with a role being Owner, Developer, Translator or Viewer.
A string or resource that you would want to handle is called a Token. Each token has a name, which is the reference in your code. Further, a token has a translated value for each language you support in your project. If you do not provide a translated value for a certain value, you can have the default language being exported if you wish.
You can also upload screen-shots of your views and group your tokens to screen shots. This is called the Context of the token, which helps the translators and developers to understand where the token appears in the application.
For each platform, there is also a template, which makes sure all resources are converted into the right format. If you cannot find a suitable template for your platform or project, you can add one to Ricotta.
For maven-based projects, there is also a maven-plugin, which helps you download the resource files in the right variant to the correct path in your source folder structure.
The Ricotta project is open-source, and hosted on Atlassian’s BitBucket. You can check out the code from http://bitbucket.org/f94os/ricotta-ost/
The SCM chosen is Mercurial, which is a distributed versioning system similar to Git.
Currently, the Ricotta project is looking for more designers and developers who want to contribute. For any questions, please contact us.