Localizing your .NET app, now with custom translations

07 November 2013

The .NET Framework, from time immemorial, has provided extensive support for localizing your applications. Providing that you have followed some general, common sense guidelines from the outset, you won’t have to tear your application apart in order to provide a user interface that isn’t just in American English. Without going into great detail, this involves the use of and linking at run-time to localized resource assemblies that contain translations of every displayable string in your application.

Translate Computer Key In Blue Showing Online TranslatorAs a control developer and vendor, we’ve supplied these localized resource assemblies for all of our controls for free for all of our customers for some time. In fact it’s more than that: we’ve relied on our customers to provide these translations in the first place and to continue to give us updates and to correct mistakes. It’s a herculean effort. (I like to think I’m bilingual – English and French – but my French comes nowhere near the quality for any of this.)

The effort is large, not only because of the resources needed to gather, edit and recompile the translations, but because people, rightly so, ask for little tweaks to the translations for their particular applications. Since the resource assemblies have to be signed with the same key we use for our main assemblies, it adds an extra burden to our support team’s work.

So, a year or so ago, some key developers here at DevExpress took another look at the problem and used a bit of lateral thinking to come up with another way of doing this. The problem space boiled down to this:

  • We need to provide localization resource assemblies for our controls at no extra cost.
  • We want to have a base set (a default set, if you like) of translations for a particular language.
  • We want to provide custom translations to those customers who want to fine-tune for a particular application or vertical market.
  • Oh, and those custom translations have to be saved somewhere for the next time the customer wants to edit them.
  • We want to remove the need for human creation of these localized resource assemblies.

Finally, after a year of design and implementation work, we are announcing the beta of the DevExpress Localization Service.

DevExpress Localization Service Main Page

After logging in and accepting a License Agreement, you are presented with a page that lists the translations you’ve already created or edited. The first time you visit the page this list will be empty, of course. (There is also a link here to watch a video on how to use the DevExpress Localization Service and how to use the custom translations in your app.) From this page you can add another translation (that is, language coupled with DevExpress version) or modify one you have already created.

DevExpress Localization Service Edit Page

The edit page shows you all (!) the strings in the resource (together with their names in the source code) that can be translated. There are over 15000, so beware. You can filter the list to include those strings that still need translating (together with a suggested translation – we use Bing), those that have a translation already (these are our default set), or all of them. You can search through the strings (otherwise this edit page would be unusable!) to find the ones you are most interested in modifying. Once you are done fine-tuning the translations for your particular app or market, click the Save button to save your translations. The Localization Service saves your translations in the cloud on DevExpress’ servers so that they are available to you for editing again at some future point.

You can also click Download here as well to initiate a build process for your custom localized resource assemblies (or you can click Download on the main list of translations to get several at once).

Once the build process has completed, you will get an email with a link to download your particular signed custom assemblies. The link will remain active for a couple of days, after which you will have to initiate another build process. Once downloaded, the assemblies are ready to be added to your particular project and deployed.

And with that I welcome you to the new DevExpress Localization Service! Please do try it out if you are interested in localizing your applications and particularly if you want to create custom assemblies. I’d love to hear what you think, so please do provide feedback. Our support team are also ready to answer your technical questions. It’s pretty solid right now, but I will remind you that it is in beta, so there might be some issues that can only come from throwing a lot of people at it all at once :).

8 comment(s)
Christian Peters

Amazing !!!!!!!!!!!!!!!!

7 November, 2013
Taradanov

I want to use DevExpress approved translation in my applications, but since there still some untranslated strings in the new components, i will translate them by using this service.

So, i think there must be function or button or whatever to revert custom translated strings to their DevExpress translated variants.

That'll be great.

7 November, 2013
Daz

Looks good but needs more room in the "Your Translation" column as any word that doesn't fit in the column width is not visible due to being pushed onto the next (invisible) line.

Possibly make the columns sizeable as the "Name" column is the widest but for the most of the time is rather irrelevant.

8 November, 2013
Alexander Vousvounis

Nice idea.

Although it would be better to be community based and not individual. You could borrow some ideas from Transifex. There is an administrator for each project (language) and contributors.

Also it seems that you started everything from Bing, which means that most suggestions are not acceptable (at least for the greek set). You could implement an import from our (users) resources and then continue with the rest.

8 November, 2013
Andrew L (DevExpress Support)

@Alexey,

We do not provide functionality to remove a translated string from a custom translation. However, I have registered a new request :

www.devexpress.com/.../S172551, when it becomes implemented you will be able to detect when the default translation appears for the translated string and replace it with the default one.

8 November, 2013
Julian Bucknall (DevExpress)

Alexander: You are filtering to show just the "not yet translated" strings in the edit page. We use Bing's (not very good but getting better) auto-translations for the strings that have not been human-translated. Change your filter on that page.

Cheers, Julian

8 November, 2013
Miguel Therriault

Génial!

8 November, 2013
Andrew L (DevExpress Support)

Daz:

Thank you for your comment.

We plan to improve this grid form in future updates to make columns resizable.

11 November, 2013

Please login or register to post comments.