DNN Community Blog

The Community Blog is a personal opinion of community members and by no means the official standpoint of DNN Corp or DNN Platform. This is a place to express personal thoughts about DNNPlatform, the community and its ecosystem. Do you have useful information that you would like to share with the DNN Community in a featured article or blog? If so, please contact community@dnnsoftware.com.


Introducing DNN Translator: a new translation tool for DotNetNuke

As most of you are aware, DotNetNuke has rolled out with 5 extra languages over the past year: German, Spanish, French, Italian and Dutch. These translations are done by trusted partners under contract so DNN Corp can assure their quality and them being available on time when a new version of DNN is released. This may have gone largely unnoticed in places like the US, Canada or Australia. But it has made quite an impact in the mentioned language zones.

And things will get even better. The above is just one (visible) step that is being taken to make the platform more accessible to those in the non-English speaking regions. In the future we aim to open up other languages in a much more fluid way than is currently the case. But one step at the time. As part of our effort to get there, a new tool has been developed to help translators speed up the translation process. This tool is called the “DNN Translator” and is available on CodePlex at https://dnntranslator.codeplex.com/

Why this new tool?

As you may know the texts that are used in DotNetNuke’s code are stored in so-called resource files. These are XML files with the .resx extension that you find in “App_LocalResources” folders all over the place. Localized (i.e. translated) versions of said files override the original texts when a page is requested in this other language. You’ll spot the localized versions as for instance AddModule.ascx.nl-NL.resx. This would be the Dutch translation of texts used in the AddModule control.

DotNetNuke includes a module to help users edit these resource files. You can opt to edit the original (i.e. for en-US), a specific language or a text specific for the portal. Although this tool is fine for the occasional translator, we found translators found it also a cumbersome tool to work with. And flipping back and forth between the editor and the result is also a suboptimal experience.

Thinking outside the box we came up with the idea of an “offline” tool. I.e. a resource translation tool that works on an installation locally on your hard drive. All translators tend to work with a translation on their own machine, so there was no strict reason to have the tool online (i.e. as a module). Having it offline opens up the door to some interesting possibilities and in general makes the tool more responsive (don’t need to go through IIS). This tool became the DNN Translator.

Who should get excited about this?

The target audience for this tool are translators who maintain language packs. The occasional translation or portal text override are still perfectly possible with the built in editor. But if you are translating the whole framework you have hundreds of files to get through, and you’re better off with this tool. So translators should use this, (end/admin) users should use the Language Editor built into DNN.

What are its features?

What follows is a summary of features. This tool is in no way “done”. We foresee new features being added as the tool gains traction and we begin to get some feedback. But what follows is where we are at at roughly DNN 7 release time.

A modern look and feel

Main UI

We intended to make the experience as pleasant as possible for translators and to make sure we were up to date in terms of UI standard practice. This is probably the hardest part of the application to do well. We are happy with the way it now presents itself to the user, but we remain open to suggestions.

On screen editing as in the Language Editor


The basics still remain. The translator sees side-by-side the original text and the translation. Clicking Save (or Ctrl-S) the resource files is instantly saved and changes can be seen in the application if you’re viewing it through IIS at that point. The focus in this bit on the UI is really productivity. Jumping from one field to the next easily. Highlighting empty fields or those where the text is equal to the original.

Edit any piece of your installation

DNN Translator Component Selector

It is important to realize that the tool is not solely meant for translators translating the core. It is equally valid for users that are responsible for translating (3rd party) modules. The application attempts to read from the site’s database which components are installed and brings this up in a dropdown. Selecting a component brings up its resource files in the tree in the main window.

Support for Google and Bing translation services

Translation Service

We find that most translators use Google or Bing to prime their translation first. Then they’ll go in and adjust those translations. The tool supports this scenario. Register your favourite translation service and leverage the translations they provide. You can have the translation service provide the translations in a separate column to avoid overriding your existing texts. This allows you to play without risk of destroying data.

Note: both Google and Bing now require you to create an account with them to use these services. Bing has a threshold of free translations per Month for you. For more details consult Google and Microsoft.

HTML text editor

Regularly we store HTML in resource files. They are encoded to keep the file valid XML and show up like this:


This is impractical for editors as they have to sift through the added blurbs the encoding adds to the field. Instead we can use an HTML editor to edit the field:

HTML editor

This allows the translator to focus on the text. Note it is naturally not possible to include images as HTML only caters for links to images and links will not work. But the editor will allow you to use all the text styling necessary.

Support for your own dictionary


Some translators keep an internal list of frequently translated terms. “Cancel” and “download” are terms that you find often when translating. The Translator allows you to maintain your own dictionary and can prime fields (just like the translation fields) when it finds texts already in the dictionary. Note this works on whole phrases only. So “Do you wish to delete this item?” would go in the dictionary in its entirety.

Save and compare to snapshots


A snapshot is a freeze of all original texts. Use this to compare changes over versions of what you are translating. Let’s say you are translating DNN 6.2.3, save the snapshot as DNN623. Then, when 6.2.4 comes out you upgrade the installation you’re working on and run a compare against the DNN623 file. It will tell you what changes there have been (i.e. changed texts, deprecated texts and new texts) and allow you to quickly bring up these changes for editing.

Connect to Localization Editor module

LE Settings


This is the most exciting part for the translation managers (like myself). The Translator can hook into the Localization Editor module remotely. The Localization Editor is a module meant to help maintain language packs. It can monitor different modules, different versions thereof and different locales. And it is also available on CodePlex. The idea is that in the future DNN Corp will open up a central repository where translators can submit any pack with this tool (the DNN Translator leverages the new services framework in DNN 7 for this). So if you have a Hungarian translation for the Events module version 6.0.3, you could just upload it instantly and the translation would be available to others.

Note: as this will be making use of the new and upcoming Web API in DNN 7 this part is still a bit in flux as we wait for the definitive release of DNN 7. But this is where the tool will be heading and how we envision its use in the DNN community in the future.

Create language packs


Finally, and most importantly, the Translator can generate language packs. In the program’s settings you can specify the various fields to include in the pack for the translator (name/license/etc). The packs conform to the DNN standard for packaging resource files. You can even generate “Full” packs, meaning packaging the translated resource files for both the framework and any installed module in one go.

Getting started

So how can you get started? Well, head over to Codeplex and download this tool and install it. There is a manual in the downloads which will guide you through the first steps.


Comment Form

Only registered users may post comments.


October 2014 (2)
September 2014 (19)
August 2014 (25)
July 2014 (17)
June 2014 (10)
May 2014 (6)
April 2014 (9)
March 2014 (3)
February 2014 (4)
January 2014 (8)
December 2013 (5)
November 2013 (2)
October 2013 (9)
September 2013 (10)
August 2013 (8)
July 2013 (4)
June 2013 (8)
May 2013 (13)
April 2013 (2)
March 2013 (7)
February 2013 (7)
January 2013 (10)
December 2012 (6)
November 2012 (20)
October 2012 (12)
September 2012 (27)
August 2012 (29)
July 2012 (22)
June 2012 (17)
May 2012 (23)
April 2012 (24)
March 2012 (27)
February 2012 (21)
January 2012 (12)
December 2011 (18)
November 2011 (20)
October 2011 (27)
September 2011 (17)
August 2011 (18)
July 2011 (45)
June 2011 (22)
May 2011 (23)
April 2011 (19)
March 2011 (36)
February 2011 (19)
January 2011 (22)
December 2010 (29)
November 2010 (37)
October 2010 (32)
September 2010 (43)
August 2010 (46)
July 2010 (37)
June 2010 (46)
May 2010 (29)
April 2010 (38)
March 2010 (27)
February 2010 (33)
January 2010 (34)
December 2009 (13)
November 2009 (20)
October 2009 (29)
September 2009 (18)
August 2009 (29)
July 2009 (19)
June 2009 (18)
May 2009 (23)
April 2009 (16)
March 2009 (13)
February 2009 (20)
January 2009 (25)
December 2008 (25)
November 2008 (29)
October 2008 (34)
September 2008 (33)
August 2008 (36)
July 2008 (31)
June 2008 (25)
May 2008 (26)
April 2008 (33)
March 2008 (31)
February 2008 (24)
January 2008 (18)
December 2007 (27)
November 2007 (51)
October 2007 (24)
September 2007 (32)
August 2007 (24)
July 2007 (20)
June 2007 (28)
May 2007 (27)
April 2007 (24)
March 2007 (47)
February 2007 (21)
January 2007 (41)
December 2006 (21)
November 2006 (16)
October 2006 (24)
September 2006 (36)
August 2006 (30)
July 2006 (31)
June 2006 (37)
May 2006 (13)
April 2006 (13)
March 2006 (18)
February 2006 (20)
January 2006 (13)
December 2005 (6)
November 2005 (15)
October 2005 (15)
September 2005 (16)
August 2005 (7)
April 2005 (1)
March 2004 (4)
February 2004 (6)
January 2004 (1)
November 2003 (4)
October 2003 (22)
September 2003 (22)
August 2003 (15)
July 2003 (14)

Copyright 2014 by DNN Corp | Terms of Use | Privacy | Design by Parker Moore Design