Blog

Translation Analytics - A Reporting Tool

The next major addition to Translation Management will be the addition of a reporting tool.

This reporting tool will answer questions like these:

  • How are translations progressing?
  • Who's the French translator, responsible for the delays?
  • Which urgent documents are still not translated?
  • Are all marketing documents for product X translated?
  • How much work did we send to translation service Y in June?

To answer these questions, and more, we're setting up a Translation Analytics tool, which would work very similarly to the famous Google tool for Website Analytics.

Translation Analytics

The idea is that you can define special taxonomy for documents, like urgency, budget code, project, etc. The Translation Analytics will identify these fields and create database entries for them.

You will be able to drill down through the translation statistics and create reports that give you the information you're looking for.

Translation Management will collect this data for you. You can specify which taxonomy terms it should track and add to the Analytics report.

What do You Think?

This tool is intended for project managers, who want to know how their budget is used and how the project is progressing.

What kind of information would you track? Any ideas, before we dive into the implementation?

How to Translate Interface Strings

Translating interface strings is always a painful process. Actually, it's difficult to achieve in many content management systems, not just in Drupal.

Unlike node contents, interface strings can come from many different places.

They can be part of Drupal core, from modules, themes or dynamically generated by the site's admin.

The hard part is locating these interface strings which appear to site visitors and translating them. To visitors, it doesn't really matter where the strings come from. All user-facing strings must be translated, for the entire page to appear in the right language.

Choosing Strings With The Localization Client Module

The localization client allows searching for untranslated strings easily. For site admins, the most important feature is the ability to spot strings as they are used on public pages.

Once installed and enabled, the Localization Client opens a panel at the bottom of public pages. These pages are viewable to admins only and not to site visitors.

l10n Client and Translation Management

Translation Management adds the Queue for translation button to the Localization Client panel. When you click on it, you're adding the selected string to the translation queue.

Strings that you queue here would be sent to translation from the Translation Dashboard.

Searching for Strings Manually

Drupal's core includes a simple string search tool.

Go to Administer » Site building » Translate interface and click on Search.

String translation screen

Enter the string to search for, choose the string's context (optional) and hit Search.

When you're using Translation Management, you'll notice the same Queue for translation button at the bottom of the search results.

Instead of entering the translations in this page, you can queue string for translation and send them via the Translation dashboard.

Sending the Strings to Translation

Once you've queues strings for translation, head back to the Translation Dashboard.

Go to Administer » Content management » Translation Management » Translation dashboard

Queued strings

You'll see everything that needs translation, including the interface strings that you selected.

This means that you can send interface strings to the same translators who work on the site's contents, without having to teach them about Drupal's string translation facilities.

Translation Management for Production Sites

Translation Management is out of beta and ready for production sites!

We're using it for our own Drupal Translation site and it's running smooth.

This is an important release for us as it includes migration from the old ICanLoclaize translator module to the new Translation Management module. Many of our clients have been waiting for this.

To migrate from ICanLocalize Translator to the Translation Management module you need to:

  1. Download and install the Translation Management
  2. Delete the ICanLocalize module from your modules directory.
  3. Enable the Translation Management modules from admin/build/modules/list
  4. Run update.php
  5. You may also need to select "Update Display" in the translation dashboard when you first view it.

Meet Us in DrupalCon Copenhagen

We're giving a session about Translation Management in DrupalCon next week.

It's on Wednesday, Aug 25th at 4pm.

We'll talk about who needs Translation Management and go over case studies of users such as CNN, International Red Cross and UNAIDS.

We're also going to use this opportunity to discuss plans for Drupal 7 support and the 'big picture' of building and running multilingual Drupal sites.

Translation Management for Drupal 7

Just as we're getting ready to release the first production version of Translation Management for Drupal 6, we're starting to think about what it takes to port it to Drupal 7.

The number and depth of the changes between Drupal 6 and Drupal 7 is impressive (to say the least). So, it looks like us and every other module developer will have to maintain a completely different branch for D7.

What we want to know is when folks might start using Drupal 7 for production sites.

Drupal 7 release date should be somewhere in September.

Do you have plans for starting to use Drupal 7 for client sites?

Translation Management - Last Beta Release

We have just released what should be the last beta release of the Translation Management module. The next release should be non-beta, ready for production sites.

We're pretty happy with the module now. The module provides a unified translation interface for Drupal and allows translation to be done locally by Drupal users with the Translator role or translation jobs can be sent to external translation services for translation.

Translation Service Providers Interface

Two translation services are already using the module's API and can do translation jobs via Translation Management.

icanlocalize

ICanLocalize specializes in website translation and software localization. A global network of professional translators, paired with world class translation tools allow delivering accurate translation at very low rates.

OTH

OneHourTranslation is optimized for quick turnaround and fast jobs.

More translation service providers are already working on building their interfaces for Translation Management. The beauty is, that site admins are never locked in to any specific provider. They can assign each translation job to any of their translator or to a translation service provider.

Admins can choose which translation service to use according to the need of the moment, availability and fields of expertise. Lock-in is a thing of the past!

XLIFF Import and Export

This release includes a complete XLIFF interface. Translators can either edit using the module's Unified Translation editor or download an XLIFF file to edit offline using their favorite CAT tool. To use the XLIFF export and import, you must have the XLIFF module enabled.

Improved Email Notification Messages

When the admin sends new documents to translation, translators receive email notifications. When translations complete, the admin is notified back (http://drupal.org/node/875998).

WYSIWYG Translation

If you have CKEditor, Translation Management will use it in the Unified Translation editor. Translation Management will automatically enable visual editing for fields that were originally written using a visual editor (http://drupal.org/node/874644).

Automatic Setting for Home Path
The module now includes special handling for the home page path. All translations of the home page will have the same path, without having to edit it manually (http://drupal.org/node/874946).

Lots of Small Bug Fixes
Besides these new features, we've also fixed a handful of small bugs (like http://drupal.org/node/874138). We'd like to thank everyone who reported bugs and encourage you to continue. We'll do our best to address everything as fast as possible.

Translation Management - Automatic Link Translation

Drupal pages often link to one another. When you translate them, translated pages need to link to other translated pages and not the originals.

Translation Management includes a handy feature that does just that. It makes sure that any translated pages link to each-other.

The cool part is how it works. Unlike "post-processing" solutions, such as Multilink, Translation Management does the link updates in the database, when saving the nodes.

Supposing Page.A links to Page.B. The translator might first translate Page.A or Page.B. The way this link update works, it doesn't matter. When both pages are translated, the links will be updated as well.

This feature is enabled by default. You can control it by going to:

Admin -> Content Management -> Translation Management -> Translation Setting

Translation settings

Step 1) Check links to other pages when saving

If a page includes links to other pages, we check if these other pages have translations to the same language (as the page being saved). If so, we update the links so that they go to the translations.

In case there are links to pages that are not translated yet, we mark the page as dirty.

Step 2) Check all Dirty pages and update links in them

Next, we go through all pages marked as dirty. Remember, this means we scan all pages that link to other pages which were not translated before.

And, if there are no more links to other untranslated pages, we clear the dirty status.

Performance

This has minimal performance impact. All checks are done when saving pages, not when displaying them.

The changes are saved to the database, so nothing is needed when rendering.

Because we only scan dirty pages and not all of them, the processing time during each save is small too. As the translation progresses, older pages are all clean (only link to other translated pages) and we only need to rescan the last few pages.

Handling paths

This processing takes into account the paths module. When we see a link, we first convert it to the default URL. Then, we check if there's any translation and eventually, we reapply the path of the translation.

Works the same no matter who's translating

The link update operation is done when translations are saved in the module. It happens the same way if you translate from within Drupal (from the Unified translation editor or if you're sending out translations to a translation service (such as our ICanLocalize interface).

The end result - easier translation

This whole mechanism makes it easier to translate and to administer a multilingual site. Without it, someone needs to manually go through translations and update links in them. It's especially time consuming when you translate a page that has many incoming links.

Email Notifications and Translation Service Integration

We're happy to announce a new version of Translation Management.

This new Beta includes most of the functionality of the final module and is short only on real-world testing.

Email Notifications

The module now sends email notifications to translators when there's new work. It also notifies the admin when translations complete.

This means that you no longer need to send dozens of emails to your translators every time you send a new document to translation. The module does that for you.

Translation Service Integration

Another major addition is a complete API for interfacing to translation services.

Translation Service providers who want to give great service for Drupal sites can write a tiny glue module that interfaces between this API and their own unique API.

Then, Translation Management will send them translation jobs. When completed, these translations will appear directly in Drupal.

The advantage of using this API is that 95% of the work is done by Translation Management. It manages the translation process and collects everything for translation. All that's left to do is call their own API and send the contents to their server. Piece of cake!

This interface is already working and tested with ICanLocalize's professional translation service.

Next Up - XLIFF Interface

Many freelance translators like using their own translation tools, instead of doing the translations in Drupal.

The next release will include the ability to download translation jobs as XLIFF files. Translators can use their favorite CAT tool and return the translation as XLIFF. We'll extract the completed translations and place everything back to its place in Drupal

Test and Let Us Know

We're eager to get your feedback. So far, we've been getting great suggestions (and bug reports) via the module's issue tracking. Keep them coming!

Translation Management and XLIFF

One of the most critical features for the Translation Management module is being able to send translation jobs to translation agencies and receive back completed translations.

To illustrate the importance of this, I'll start with how not to do it, based on an actual case, we're working on.

Overly Complicated Translation Process

One of our largest clients is using a closed-code CMS. That CMS indeed has a translation module, so we can get jobs and return completed translations. However, the integration between the translation module and the CMS is loose.

As a result, the process for the content admins is complicated. Admins need to go from one page to the other and send each to translation. Then, they need to get the completed translations from us, go back to the pages and upload the translation files - one at a time.

This (kinda) works, but requires someone on a full time basis to manage translations.

Obviously, no one is happy with this arrangement. More work means higher expenses to the client and less profit for the translation service.

Streamlined Process for Translation Services

Tight integration is key to creating an efficient process. If the different blocks know how to operate with each-other, the user has less work to do.

The Translation Management module offers two ways to work with translation services:

  • The built in Translation Service interface (in the TM module)
  • The standard XLIFF module

These are complementary routs, which cater to different needs.

Proprietary Interface Directly from Drupal DB

Many translation services (like ICanLocalize) already have their own API for receiving and returning translation jobs.

For them, it makes little sense to go through another format. The easiest implementation is to get the fields for translation from the database and send directly to their server.

Translation Management includes the hooks that allow 3rd party module to interface to it and register themselves as translation services. We even use these hooks ourselves for our own interface.

Standard XLIFF Interface

On the other hand, some translation services and many freelance translators want to use a standard tool-chain to translate. They're willing to sacrifice some integration in order to use their existing tools.

For example, Trados (the most popular translation software), can read and write XLIFF. So, allowing translators to get the XLIFF output and return XLIFF to Drupal would be a huge leap in workflow for them.

Drupal's XLIFF module does most of the work we need. With some changes, it looks like it's going to play very nice with Translation Management.

Our plan is to contribute patches to the XLIFF module to achieve maximum integration, so that instead of duplicating the code in our module, we can rely on XLIFF to do the job.

Your Views on Translation Service Integration?

What do you think? Do you use translation tools? What kind of integration would you like to see?

Multilingual Image Management

A picture is worth a thousand words, so it's pretty important that these words be in the right language. Translation Management includes an Image Translation admin page that helps content managers set translations for images, Flash and other embedded media.

Central Control Over Multilingual Media

Image translation

This admin page allows content managers to specify rules for how to replace images in contents.

For example, you can tell it that if an English image is called machines.png, the Spanish replacement will be machines_es.png. Alternatively, the translated images can keep the exact same name, but be stored in a language directory, so it would be called es/machines.png.

Image Replacement When Saving Translations

Once the admin sets the rules for replacing images, the Translation Management module is responsible for the actual replacement.

When translators save translations, the module scans it for images. It checks if you've supplied a replacement image. If so, it replaces the image in the translated contents. This replacement is done once, in the database, so there's no speed penalty when displaying pages.

You can supply replacement images after translation complete too. In this case, you can click on the button to scan translated contents.

Translating ALT and TITLE Attributes

The ALT and TITLE attributes in the HTML are translated normally, along with the content. When translators work on content, they translate all the texts. These attributes are sent to translation, just like everything else. So, the only missing step it to replace the SRC attribute, pointing to the translated image itself. This is the purpose of this function.

Interaction with Translation Services

Image replacement in Drupal is especially important when you're working with a translation service (like our own ICanLocalize). The translators work on dozens of different pages each day, so allowing them to concentrate on contents, without worrying about managing links to images can save a lot of time.

This way, translators only need to translate the texts, while site admins supply replacement media. The module takes the translations from the translators and the media replacement rules and produces the final HTML.

Translation Management in DrupalCon - Are You Coming?

We're going to talk about the Translation Management module in the TM For Enterprise session in DrupalCon Copenhagen.

If you're coming to DrupalCon, we'd love to meet you there and I'm pretty sure you'll come out with a thing or two from this session.

Translation Dashboard

Know What Interests Your Clients

In this session, we'll spend some time teaching about the Translation Management module module, but it's not the point. You can do that yourself using the handbook.

What we'd really like to do is share our experience working with enterprise clients on multilingual Drupal sites.

When you deliver a multilingual Drupal site for a large organization, your work ends (sort of) and their work only begins.

Managing Translations Can Be A Lot of Work

Do you know how content managers, translators, reviewers, marketing VPs and upper management are all involved in the translation process?

If you're not exactly sure, you should attend the Translation Management For The Enterprise session in DrupalCon, because that's exactly what we're going to talk about.

Many European sites are multilingual, by definition (Canadian sites are multilingual by law). When you show your clients that you understand their needs for multilingual content management and know how to address them, you'll make them extra happy.

The methods folks use today involve sticky notes, excel sheets, hundreds of emails and a lot of manual work and wasted time. They know it, but have no better tools.

Translation Management Reduces Work for Your Clients

We're changing this with the Translation Management module. Your clients will enjoy a systematic solution for managing translations. They probably know that these solutions existed before, but never for Drupal and never without shelling out obscene amounts of money.

ICanLocalize, the translation business driving the Translation Management module is serving global organizations such as the International Red Cross and CNN. We're importing a world-class solution for Translation Management into a Drupal module. Free and open for all.

So, if you're coming to Copenhagen in August, we'd love to see you in our session. And, before going, you should check out the session page and vote for it!

Syndicate content