farrer {l Wrote}:Finally, got some time and translated the editor's strings. I've uploaded it
here.
Thank you! I'll add it ASAP.
farrer {l Wrote}:A few notes about the translation process. Although I believe that you already measured the pros and cons of using a translatable header file, I do believe that there are some big concerns that could make future translations' process awful:
1. The translated strings are position dependent. It's too easy to make a mistake when translating, removing or adding a string. The error will be noticeable when compiling, but discovering the additional or removed string is a pain.
Quote the contrary, being position dependent makes it super easy, you just have to take a quick look at the line number and that's it.
farrer {l Wrote}:2. Adding new strings to be translated will be an arduous process: if added at the end of file (the easiest to update), you'll lose the context of use that the translator could take as a hint. If you add near other strings of the same context, doing the same process on each already translated file will be a pain (and also to the translators of those already existent translations to find what they should update. etc).
Try using an editor which shows the line numbers. Most IDE can do this, but also supported by many many text editors. That's how I do it: I open all language headers on different tabs, and scroll them simultaneously, so I can see if the line numbers are aligned.
farrer {l Wrote}:3. As a translator, the need to compile/recompile the project just to see how the translation works on-the-screen is maybe too much. It also keep away potential translators which aren't programmers or know how to compile it.
That's true. However the application must be a portable executable, which means no installation and no shipped configuration (like language) files, it must embed the dictionaries. I'll try to add more header files for languages to the repo, so that translators will only have to fix one or two strings in them, and they won't have to worry about creating files, line positions and compilation etc. (BTW, using defines and string arrays for dictionaries was originally
ESR's idea, I've just splitted that array into separate header files.)
farrer {l Wrote}:4. Some strings are duplicated (or even more), and so, re-translated n-times.
No, they are not, they just look like it :-) Joke aside, English is a very simple language with a not so big vocabulary. For example, in German the string "Login" needs different translations if it appears as a heading ("Loginseite") or as a button label ("Einloggen"). Or another example, in my language "Player" has more translations: one for the tool that plays the game ("Lejátszó") and one for the person using the tool and actually playing the game ("Játékos"). These are different strings, they just happen to be using the same word in English.
farrer {l Wrote}:Anyway, just to point it out. Header translatable files works and for the end-user it's what is important.
Yes, they admittedly aren't perfect, but nevertheless the simplest possible solution for embedding dictionaries.
Thanks again for your work! In return I can offer you an editor license which allows creating encrypted game files and allows you to choose whatever license you want for your game (commercial and proprietary included as long as you only use game assets for which you own the copyright).
Cheers,
bzt