Why Is It Useful? Our Story
We have a website with several of our own applications. Users periodically send offers to translate the program into a particular language. Previously, we included the translations received from users in the programs’ setup packages. However, it was rather uncomfortable because the users’ translations were coming later than the new version of our program. The delay was because the translator needed to download the new version, find the new untranslated strings and send us the updated language file. However, the other users of this language, after updating the program, had to stay with the previous, non-updated version of the translation until we received the updated one from the translator and put the new setup package on our site.
Since various translators sent the updated versions of the translation after different amounts of time following the new version’s release, we used to update the setup package many times in order to include each newly received translation with it.
In addition, in that model we had to send to each translator the notice about the necessity of translating the new version. If the translation was made and sent to us, we used to manually process the email messages from the translators: Open the message, save the attachment to the appropriate folder, maybe add the corresponding strings to the install script, etc.
Such a model was fairly tedious, so we used to agree to add the translations into only a few languages that are the most popular for our users, while rejecting most of the translation offers. This caused us to lose users who speak in less common languages.
In search of this problem’s solution, we concluded that it would be better to store the translation files somewhere on the server. In this case, our apps would be able to download and apply them as soon as they were uploaded by the translator, without the need to repack the application’s setup package.
After we implemented the new system, our applications have got the translations into more than 20 languages during the year. Our experience has shown that the translators, having an easy way to update the translation in automatic mode, without sending it each time to the technical support staff member, are beginning to actively improve the translations by sending the new version through the website repeatedly. For example, they might send a new version just after they fixed a small grammar error in the translation. This did not happen when the translators were forced to send new translations to the support staff member.
We have added to our library some other useful functions, such as asking the user about the translation’s quality and showing its rating, reminding the translators to update the translation if this has not been done after releasing the new version of the app, and other features. Thereafter we decided to separate this functionality into its own library to make it available for everyone.