3 December, 2019
This article was made back when The Software House first released Babelsheet – its open-source spreadsheet-based tool for software translators. Over the years, Babelsheet gained a lot of supporters, but was also moved from PHP to Node.js, getting a lot of new upgrades in the process. So much has happened that it called for some serious update to this article in order to showcase the new Babelsheet and remind you why it’s worth giving it a try in your software project.
Let’s start with what Babelsheet is. The gist of it hasn’t really changed that much.
Managing translations in a software project – please, not another tool…
There are plenty of solutions which can help you manage the translations. Most of them are very flexible, robust and able to deal with hundreds of languages. It, however, introduces another tool in the stack which you need to get familiar with, another set of logins for both the team and the client and, of course, additional cost. Many tools can also overwhelm you with their features (especially when the UI is not that good) or, even worse, overwhelm your clients.
“But there is one tool which all the business users are very comfortable with – a spreadsheet. Combine this with the collaboration features of Google Suite and you get an almost perfect solution for small to medium projects.”
Spreadsheets + translations = BabelSheet
This was our exact plan: to take Google Sheets and try to create a translation management tool based upon it. But how to do it? We started with the description of syntax – first column contains tags, then there are columns holding key hierarchy and finally one column for every language. Tags and keys are protected so only the dev team has access to it – previously, when given the translation files, clients would often break the syntax of XML or JSON.
What started as a small script parsing the spreadsheets, soon turned into a fully-fledged solution with its own JSON configuration file syntax and multiple supported formats. We have also created a docker image which does the parsing and generates a file from within the container and hence can be integrated with CI. The whole tool was called BabelSheet. You get the joke, don’t you?
See also: Fogger – another of our open-source projects, which helps with GDPR-friendy data masking
For the team, for the clients
As a result, you get a tool that creates the spreadsheet for you. You can share the spreadsheet with all the parties involved, using built-in Google Apps collaboration features. In the config, you can define what format do you want: BableSheet is currently supporting Android, iOS, JSON, Yaml, Xliff, gettext (an updated list) text files, but thanks to plugin architecture any other desired format can be easily introduced. You can also decide if you want to generate one big file or split the translation into multiple files using either tags or sections. It’s a one-liner that can be executed on a local machine or during a CI build.
Probably the most important thing about BabelSheet is that it’s very intuitive both for your team and for your clients. It makes the collaboration super easy, so you can wrap up the translations faster than with the more complicated tools – making sure that what happened to the Babel Tower won’t happen to your project. 😉
Moving to Node.js to address new challenges
Most of open-source projects made by The Software House are multi-purpose. We made them available to the public, but we also use them in our commercial projects. After all, they are made to address common software development challenges. One of the projects called for a Node.js microservice responsible for serving translations to other microservices in real-time. It wasn’t possible with the original Babelsheet.
We decided to rewrite Babelsheet so that it can function as Node.js microservice. However, it can still be used in the usual way – by rebuilding translations to get files to work with. With an additional masking mechanism, you can also fetch only the parts of the translation that you need.
It’s still getting better!
In the process of transforming Babelsheet into a Node.js app, we made it better than ever before. Babelsheet now supports multiple ways of fetching translations and does it faster. It is also now equipped with a commenting mechanism – a great way for translators to give or catch a context. The new version also sports format transformers so that you can add support for new formats easily.
Despite all this, Babelsheet is still very much a work in progress. We have many ideas to further improve it, including a way to make words pluralization easier. Having said that, it’s already very practical to use and flexible enough to support all kinds of workflows between developers and translators. Our ambitions don’t end here so try out and use Babelsheet while it’s still completely free! 😉