Translation

Translate your code and data with the help of Bing Translate and the synchronizer.

There’s one world but many languages. Sooner or later your application could need to support a different language that the one it was programmed in the first place.

Built-in Framework support

If you build your application with Signum Framework you’re in an excellent position to localize it.

Signum Framework has already all the string in resources, even better, many of the texts that appear in the screens come directly from the entities (entity page, search page, charting, omnibox…), minimizing the number of strings to localize.

Any other sentences that needs to be translated (e.g., Dialogs, Error messages,…) are stored in enums with the Message postfix, instead of a global Resource class. This way the messages are logically grouped and much easier to maintain.

Additionally, the framework has been designed for grammars with gender and plural (Spanish, German, French, Italian,…), letting us write just one string for all entities, instead of hundreds (i.e., “Nuev[o|a] {0}” can generate “Nuevo Empleado” or “Nueva Factura”).

Even more, the framework has heuristics for determining the gender of an entity given its name (currently only implemented in Spanish and German), or determine its plural name (implemented in English, Spanish and German).

Translating code

Translation module gives you the ability to translate all the necessary resources in the code of the application (messages, entity names and properties...).

To facilitate the task, an automatic translation service can be connected, like Microsoft Bing Translate (recommended) or Google Translate, just by implementing an interface. Examples are provided to implement both.

The user will have to select one automatic translation or fix it. If two or more automatic translations from different languages produce the same result, the translation is automatically selected, but still can be fixed.

If the translation service insists in a particular mistake, an automatic replacement can be registered in the database to fix it.

With this strategy, we archive a perfect balance between translation productivity and translation quality.

As the application evolves, new strings appear and some are removed. The translation synchronizer will clean the old ones and show the new ones to the user.

The translated texts are stored in easy-to-read XML files, and grouped by type.

Translating instances

Sometimes, translating the application code is not enough. If you have a public catalog of products, probably you'd like to show the product name and description in the language of the potential customer, but your products are entities in the database, not code.

Translation module let you choose which database columns (of type string) you want to translate and, using a similar user interface, let users translate them with the help of a translation service (Bing, Google...).

From the developer point of view, the only necessary thing is to register the database columns to translate (using lambda expressions), and use a translation-aware HtmlHelper to render the string in the public page (e.g., Catalog.cshtml).

For the user, a similar experience is provided, letting them view and find translations, or sync the new translations as new entities are created, or their original text is modified.

The translations are stored in the database, but can also be imported/exported to a professional translation software like SDL Trados Studio using Excel files.

The translations remember the original text so, if the origian text changes, they are able to spot the differences and help in the synhronization.


Turn back to Signum Extensions