Continuous localization allows software developers to localize their content without impeding the development process. Here’s how Xsolla achieved it with the help of freely available tools.
The advent of agile development practices and web-based tools added even more challenges to relationships between developers and localizers. If previously new content used to come every few months, now release cycles can be as short as weeks. Each new release bears new content, and it must be localized within days. Take Xsolla, a global video games distributor and publisher providing game developers with tools to enhance their games’ potential reach. The company has 8 key products, a 2-week release cycle, and 6 to 21 languages to localize each product to.
The company has historically used various online translation platforms to get the job done, but was in many regards unhappy with them. “Localizing a few new strings into 20 languages took more project management than translation time,” says Natalya Pavlikova, localization engineer at Xsolla. For this reason, Xsolla started looking for an alternative solution.
Xsolla wanted the new platform to:
- Automatically grab localizable content from the company’s code repository,
- Enable a transparent and flexible localization process, and
- Send the localized content back to the code repository.
The solution came with a bundle of two free tools, Serge and Smartcat. Serge — the string extraction and resource generation engine — is a standalone tool that enables continuous localization (see callout). It automatically gathers new source material, publishes it for translation, acquires completed translations, and integrates them back into the product. Serge is an open-source project maintained by Evernote. Smartcat, in turn, is a translation platform where one can keep projects and translation memories, find translators, assign them to documents, and pay for their work.
Continuous localization: when do you need it?Continuous localization works best in scenarios where you have lots of content that is constantly updated and/or where different teams manage development and localization. Some cases include:
In Xsolla’s case, the continuous localization workflow looks like this:
- Xsolla’s developers update project files in a Git repository.
- Serge continuously monitors the repository in real time and, once needed, extracts strings from the updates, creates PO resource files with them, and sends them to Smartcat.
- Xsolla’s localization manager distributes untranslated strings among the freelancers in its team.
- Freelancers translate the documents and mark them as completed.
- Serge takes the localized strings, puts them back into source files, and pushes them to Xsolla’s Git repository.
- Xsolla’s developers publish the release together with the localization.
Smartcat supports different file formats by itself. So why one would use Serge as a proxy between original resource files and a translation service?
“On the surface, Serge may look like a file format converter. It’s not,” says Igor Afanasyev, localization director at Evernote and the person behind Serge. “Serge is a flexible file processing and synchronization pipeline that can be configured to meet different localization workflows, enabling truly continuous integration. Serge guarantees that localized resource files have the same structure as the source ones and handles cases where source files change while their older versions are still in translation. This spares engineers from merging in changes and unblocks the development cycle. In a way, with Serge, engineers feel like there’s no ‘localization process’ at all.” Another important feature of Serge is that it maintains its own translations database and runs on client premises. This means that Smartcat doesn’t need to access Xsolla’s private Git repositories, and the translation files that Smartcat gets from Serge are rectified resource files that contain no sensitive information. Finally, as Serge runs locally on Xsolla’s server in a non-stop fashion, it gets updated localized resources within minutes. This guarantees that localized files are always up-to-date and builds don’t fail because of outdated resources.
The main result of the switch to continuous localization is that project managers can focus on their work, while developers can focus on theirs. This saves a lot of project management effort, and no one has to do the file-sending and format-converting mumbo jumbo — that’s what Serge does.
“Now we can manage our strings just as we manage our code,” says Maxim Kungurtsev, Xsolla front-end developer. “We can create new branches, merge them, roll them back — and all the while be sure that the Serge–Smartcat bundle does all the background job to get the strings for that specific branch localized in our repo. Works like magic!” Not less importantly, Smartcat’s team management capabilities make it easier to ensure the quality of localized content. “We already have a tight-knit team of translators on Smartcat who make sure that our voice stays consistent throughout,” says Natalya. “And for the most critical content, we can add more linguists as proofreaders for the same content.”
This was the first-ever continuous localization project for Smartcat with Serge, and the team works closely with both Xsolla and Igor Afanasyev. There are still many things that Xsolla looks forward to in the future, such as:
- One-click translator assignments,
- Support of pluralizable labels,
- Assigning editors for source texts,
- More flexible notifications.
But Smartcat is optimistic. “We’ll work hard to implement Xsolla’s feature requests,” says Pavel Doronin, product manager at Smartcat. “Not just because they are one of highest-paying customers, but also to provide our other users with better workflows for continuous localization, which we’re sure is here to stay.” In the future, we plan to provide even more options for continuous localization with Smartcat, including both native scenarios and external integrations underlining our ecosystemic approach to growth. In the end of the day, what matters is what our users like most, and that’s what we’ll be focusing on.
If you want to configure a continuous localization workflow similarly to Xsolla, you’ll need to:
Both tools are free and well-documented, so setting up should be easy. If it’s not, feel free to write us at email@example.com.