Evernote Tech

Serge 1.2 is Out

About this time last year, we released Serge, our continuous localization solution, as an open-source project. During this year we collected some good feedback from users who are experimenting with it and start to use it at their organizations. Based on the feedback, and according to our internal needs, we’ve been constantly improving Serge during this year. While internally we’re using the code directly from the master branch, it makes sense to make formal releases once in a while. Today we’re announcing Serge 1.2, which accumulates the enhancements that we’d like to highlight here:

  1. Support for multiple translation interchange file formats. Serge has a pluggable architecture for everything: parsers are plugins, version control support is realized via plugins, there are plugins for translation service synchronization and control plugins to change the behavior of the localization logic. Serge 1.2 makes the last bit—translation interchange file serialization and parsing—pluggable as well. Previously the only option was to use .PO files as a translation interchange format. With this change, .PO support was moved into a plugin. We also implemented a plugin for .CSV files, which your translators can directly edit in Excel (surprisingly, there’s still a need for that!). One can now also implement support for XLIFF files or any other format your translation tool or localization vendor are comfortable working with.
  2. Better support for serge import in different plugins. As you start working with Serge, the first thing that comes to your mind is how to import all existing translations into Serge. Serge has a serge import command for this purpose, but it requires some support in file parser plugins to align source text and translations across files. Serge 1.2 adds support for importing translations from JSON, PLIST and POT files. We add this support based on the requests from the community, so if you need to support other files, just let us know.
  3. Support for Ruby-on-Rails YAML files. Thanks to our external contributors, our YAML parser can automatically deal with RoR-specific YAML files.
  4. New leave_untranslated_blank option in localization job configuration allows, as its name implies, to leave untranslated strings blank in generated files (by default they are pre-populated with source strings). This, in turn, makes it possible to implement custom translation fallback mechanisms across multiple locales, or efficiently reuse fallback mechanisms provided by specific platforms. For example, if your source language is other than English, and you want to translate your application into English and other languages, but want other languages to fall back to English translations, this option allows you to achieve the goal.

Highlighted above are the most notable changes. Check out release notes for a full list of improvements and fixed bugs.

If you’ve had a chance to try out Serge in your project or organization, we’d like to hear your feedback in comments!

Upgrade your notes with Evernote Personal.

Go Personal