ini files, a good idea? – You’re Speaking my Language?

Bad Advice

Build your own, it sounds great! It is quite easy as well. And cheap (you bill $0 for your own hours, don’t you?, developing your software costs nothing ;-)

Go ahead and do it!
For example, have an .ini file with localized language strings and call it from your program, something like this:

GetPrivateProfileString(L"DeleteDialog",
          L"DeleteFileFailed",
          L"Sorry, the delete failed",
          translated, _countof(translated), L"German.ini");

(GetPrivateProfileString docs)

Now you call it for the Cancel button. The German translation is “Abbrechen“…. oooops, That doesn’t fit inside the Cancel button.

OK, You make the button a bit wider, it takes a few emails with your German translator to get it right, but now it looks good (mmmm, does that look weird for American customers? The button is veeeeery wide now)

Just ignore all those emails from your translator about “what do you mean with…”, “what is the context of…”
He only sees the ini file, he doesn’t get any feedback where those strings are used.

After some time, you will have a fine localized program for the German market. Probably a very frustrated translator as well.

How much did you enjoy writing all those GetPrivateProfileString calls in your code?
Now go for the French, Spanish, Italian markets…. Those are just the easy languages.

Dare I say, Chinese, Japanese, Hindi….

You Need Tools

You really need Good Language Localization Tools. No, I didn’t test Sisu with all above languages yet.
I did with German and Spanish language translation, though…

The result: A fine new German language .exe! Your code untouched, it is not even aware it speaks German now…

Did you enjoy this post? Why not leave a comment below and continue the conversation, or subscribe to my feed and get articles like this delivered automatically to your feed reader.

Comments

No comments yet.

Leave a comment

(required)

(required)


For spam filtering purposes, please copy the number 4530 to the field below: