views:

512

answers:

14

I'm building a C++/MFC program in a multilingual environment. I have one main (national) language and three international languages. Every time I add a feature to the program I have to keep the international languages up-to-date with the national one. The resource editor in Visual Studio is not very helpful because I frequently end up leaving a string, dialog box, etc., untranslated.

I wonder if you guys know of a program that can edit resource (.rc) files and

  • Build a file that includes only the strings to be translated and their respective IDs and accepts the same (or similar) file in another language (this would be helpful since usually the translation is done by someone else), or
  • Handle the translations itself, allowing to view the same string in different languages at the same time.
A: 

If there isn't one, it would be pretty easy to loop through all the strings in a resource a compare them to the international resources. You could probably do this with a simple grid.

Nick Berardi
A: 

In the end we have ended up building our own external tools to manage this. Our devs work in the english string table and every automated build sends our strings that have been added/changed and deleted to translation manager. He can also run a report at anytime from an old build to determine what is required for translation.

Nic Strong
+1  A: 

In my experience, internationalization requires a little more than translating strings. Many strings when translated, require more space on a dialog. Because of this it's useful to be able to customize the dialogs for each language. Otherwise you have to create dialogs with extra space for the translated strings which then looks less than optimal when displayed in English.

Quite a while back I was using a translation tool for an MFC application but the company that produced the software stopped selling it. When I tried to find a reasonably priced replacement I did not find one.

jmatthias
A: 

Check out RC-WinTrans. Its a commercial tool that my company uses. It basically imports our .RC files (or .resx files) into a database which we send to a different office for translation. The tool can then export a translated .RC file (or .resx file) for each language from the database. It even has a basic dialog box editor so the translator can adjust the size of various controls in the dialog box to be sure the translated text fits.

It also accepts a number of command line arguments and has a COM automation interface so you can integrate it into a build process more easily. It works quite well for us and we literally have thousands and thousands of strings and dialog boxes, etc.

(We currently have version 7 so what I've said might be a little bit different than their latest version 8.)

Brian Ensink
+2  A: 

Check out Lingobit Localizer. Expensive, but well worth it.

On Freund
+2  A: 

Here's a script I use to generate resource files for testing in different languages. It just parses a response from babelfish so clearly the translation will be about as high quality as that done by a drunken monkey, but it's useful for testing and such


for i in $trfile
do
 key=`echo $i | sed 's/^\(.*\)=\(.*\)$/\1/g'`
 value=`echo $i | sed 's/^\(.*\)=\(.*\)$/\2/g'`
 url="http://babelfish.altavista.com/tr?doit=done&intl=1&tt=urltext&lp=$langs&btnTrTxt=Translate&trtext=$value"
 wget -O foo.html -A "$agent" "$url" *&> /dev/null
 tx=`grep "<td bgcolor=white class=s><div style=padding:10px;>" foo.html`
 tx=`echo $tx | iconv -f latin1 -t utf-8 | sed 's/<td bgcolor=white class=s><div style=padding:10px;>\(.*\)<\/div><\/td>/\1/g'`
 echo $key=$tx
done

rm foo.html
+1  A: 

Also try AppTranslator: http://www.apptranslator.com/. It has a build-in resource editor so that translators can, for example, enlargen a text box when need bo. It has separate versions for developers and translators and much more.

Roel
+2  A: 

Check out appTranslator, its relatively cheap and works rather well. The guy developing it is really responsive to enhancement requests and bug report, so you get really good support.

titanae
+1  A: 

appTranslator!

Serge - appTranslator
A: 

We are using Multilizer (http://www.multilizer.com/) and although sometimes it's a bit tricky to use, at the end with a bit of patient it works pretty well.

We even have a translation web site where translators can download our projects and then upload the translations using Multilizer command-line features.

Javier De Pedro
+1  A: 

You might take a look at Sisulizer http://www.sisulizer.com. Expensive though. We're evaluating it for use at my company to manage the headache of ongoing translation. I read on their About page that the company was founded by people who left Multilizer and other similar companies.

Larry Silverman
+1  A: 

Managing localization and translations using .rc files and Visual Studio is not a good idea. It's much smarter (though counter-intuitive) to start localization through the exe. Read here why: http://www.apptranslator.com/misconceptions.html

Serge - appTranslator
A: 

ResxCrunch will be out soon, it will edit multiple resource files in multiple languages in one single table.

Germstorm
but it will edit ResX files, not RC files...
djeidot
A: 

http://www.heartsome.net/EN/xlfedit.html