The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

    • @matijn (: Enneh: sterkte! 8 minutes ago
    • @IanColdwater Welcome back. I was worried too. Good to know that you are OK. Hope the turned down notifications made things bearable. 11 minutes ago
    • RT @francesc: I updated the slide deck from my "Introduction to Go" at @CERN earlier this year It now includes links to the recordings for… 19 minutes ago
    • RT @danidonovan: therapist: and what do we do when we’re feeling stressed? me: stop making plans, avoid text messages, and accidentally al… 27 minutes ago
    • RT @michaelbolton: 1) Thinking about counting things to measure quality? You might be able to measure *some things* *that bear on* quality.… 29 minutes ago
  • My Flickr Stream

  • Pages

  • All categories

  • Enter your email address to subscribe to this blog and receive notifications of new posts by email.

    Join 1,642 other followers

.RESX translation and tools examples based on Paint.NET Forum -> Translation and Localization

Posted by jpluimers on 2011/10/20

The process of translating RESX files is time consuming, so it is wise to study a good example before starting such a journey.

Paint.NET (driven by Rick Brewster) happens to have great (and complete!) translations serving as great )ample materia.

So below are steps that you can use to get started.

The process

Create good Base RESX files

The first step is to create good .RESX files for your base language. This alone is a tedious process in itself, as for all the strings (and potentially other resources) used in your application, you need to determine if they should be translated. If so, you should make a key for each one, put them in the appropriate .resx file, and access it. The MSDN documentation explains how.

Use version control and differencing/merging/syncing tools

When translating software, you not only have the history axis, but also a language axis. That combination makes it much harder to keep everything, so a good version control together with good differencing tools is very handy.

I’ve had good experience with Team Foundation Server, Subversion (SVN), Git, and Mercurial (Hg), but less good experience with StarTeam, Visual SourceSafe and Serena Dimensions.

Beyond Compare is my favourite tool of choice for comparing files and managing with differences, merges and syncs.

Translate the RESX files

This is the really hard part; many translation agencies are specialized in this, companies have complete teams working on it (for instance, the Microsoft Developer Devision did the Paint.NET translation for 4 years in their free time).

Often, it helps to generate Excel or Word documents from the RESX files, but often translation deportments or agencies can handle RESX files fine.

Usually, there is much more to do than just translating, you should look at the whole internationalization picture, for instance by reading Guy Smith Ferriers book on .NET internationalization.

Verify the RESX files are complete and valid using ResxCheck

A important requirement of translation is to make sure the translated resources are at least technically valid and complete.

Doing that by hand is a very tedious job. Luckiliy, Rick Brewster (yes the Paint.NET one) wrote a great Resx tool to do just that.

An example is below.

Compile the RESX files into .resource and assembly files

When your RESX files are ready to be tested, you need to generate .resource files from that and sometimes resource assemblies.

You can use ResGen to generate resource files, and the Assembly Linker to link the resource files into assemblies, or generate sattelite assemblies.

Using the resources

I won’t go into much detail here, as there are many ways to use the translated resources.

The tooling

There are many tools you can use, and the actual use highly depends on the size of your project, the number of translations, and how your process is organized.

I’ll point to a few tools that are interesting or that I have used.

The Bing Translation API

Now that the Google Translate API has been deprecated, the only online translation API is the Bing Translate API provided by the Bing Translator team. There are plenty of examples on how to do that from various environments.  You need a Bing AppID in order to use this. And you can do “only” 50 translations per minute (each at a maximum of slightly less than 64 kilobyte).

Examples

I downloaded the Dutch 3.10 translations of Paint.NET because it includes an Excel document that is a good example of how to track progress or compare multiple translations.

Then I downloaded the Paint.NET 3.5.x original strings, and the Dutch 3.5.x translations and unpacked them in the C:\TEMP directory.

Finally, I ran the ResxCheck on them:

C:\temp\PaintDotNet.Strings.3.NL>ResxCheck.exe ..\Strings\Strings.resx PaintDotNet.Strings.3.NL.resx
ResxCheck v3.30.3033.25892
Copyright (C) 2008 dotPDN LLC, http://www.dotpdn.com/

--- Start @ 13:46:01
Analyzing base Strings.resx ...
Analyzing mui PaintDotNet.Strings.3.NL.resx ...
--- End @ 13:46:02 (156.25 ms), processed 2 resx files
There were no errors

Hopefully this will save you some time, and me too when I’m working on another translation project.

–jeroen

via: Paint.NET Forum -> Translation and Localization.

PS: If you want the Paint.NET installer to be multi-lingual, follow these steps on the Paint.NET forum.

PS2: For the people wondering why the Dutch language is not called Nederlandisch or something similar, please read the Wikipedia articles on  Names for the Dutch language and Netherlands (terminology).

2 Responses to “.RESX translation and tools examples based on Paint.NET Forum -> Translation and Localization”

  1. John said

    This tool isn’t free http://www.hexadigm.com but very affordable and highly cost-effective for what it offers (much better than zeta IMO)

  2. I would check out this tool http://www.zeta-resource-editor.com/ pretty cool and free.

Leave a Reply to John Cancel reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

 
%d bloggers like this: