Easyling Release Notes – 2016 September


With September came the new school year in Budapest, and with that, the Proxy returned to school to gain new and enhanced capabilities. Among the new features in September are the progress follower UI providing real-time feedback from long-running tasks, the ability to expel historic untranslated content from a project, and a number of invisible-but-important backend enhancements. See the full details after the jump!

Progress Follower

One common gripe about the Dashboard in the past was that users had no way of knowing if a long-running process was still executing in the background. This was mainly due to the way AppEngine’s task queue operated, where once a task was started, it had very limited ability to communicate its state. Then along came the Progress Follower: this utility system allows us to track long-running backend tasks, and report to the user.

The Crawler and XLIFF/TMX imports, as well as the Pre-Translate function currently use the Follower, and their states can be seen in a pop-out panel in the lower right corner. We are working on bringing more systems into the fold, however, so new indicators will appear in the future. This means you can safely close the dialog signifying the start of the task, and go about your work in Easyling, with the panel always supplying up-to-date information on the current project’s tasks.

Progress follower

The Progress Follower will display the state of currently-running background tasks, so you can carry on working on the project with peace of mind

Untranslated entry purge

Some websites can be changing extremely rapidly. Over time (for example, between quoting and the actual launch of the project), untranslated entries accumulate, and can distort word counts, sometimes significantly. This means after some time, an accurate word count can be impossible to achieve.

To combat this, we have developed a “Reset” function. At the click of a button (appropriately styled red), the Proxy discards all source language entries from the project that do not have translations in any of the target languages. This will allow the next scan to achieve an accurate word count, having been freed from content that no longer appears on the site, but did some time ago.
The decision on whether or not an entry is to be discarded is made on the result of a query for any related target language entries: this will come back positive if the entry has translations in at least one target language, if it is completely untranslated, the check will come back negative, and the entry will be discarded. Once the entry is discarded, it may be added back if it appears in the proxied page again.

Purge all untranslated entries from the project to achieve an accurate word count

Javascript String-concatenation

Previously, we have seen many instances of JavaScript containing fully-formed HTML, split into pieces that are concatenated to one another to form the final code that is inserted into the document. Sadly, we used to be powerless against this, as our JavaScript parser interpreted each constant on its own, yielding invalid pieces of HTML that could not be parsed further. Not any more.
Under Tweaks on the Advanced Settings screen, you can activate a new option that enables the Translator to “take a step back”, and interpret the result of the concatenation (which generally yields valid HTML). To note, this feature will only work if there are no variables in the chain, only String-constants!
For example, this will be handled:

var addedContent = "This " + "string is " + "concatenated to give the final result";

But this will not:

var resultCountDisplay = "Number of valid results: " + resultCount + "; out of " + articleCount + " articles.";

due to the two variables being injected into the string, which are not yet available during the translation.


JavaScript String-constants can be concatenated, provided there are no variables

Invisible backend upgrades

HTML5 Prescanner

The HTML5 standard describes an algorithm to determine the character encoding of a document, starting from metadata and finishing with a so-called Prescanner, a customized system that can scan the raw datastream to determine the encoding used.
Within the Proxy, this encoding information is used if you specify On-The-Fly Regex Search-and-Replace rules, as those take place before any other operations. With this Prescanner in place, the Proxy will be able to execute this search-and-replace any time, and more importantly, we will always be able to determine the correct charset used in the document and serialize the translated document accordingly.

New Translator pipe

Also started was a complete rework of the Translator, which is expected to yield much more flexible and streamlined operation. We are expecting to roll out the new system in the coming month.

Dedicated demo for You