Jump to content
IGNORED

Multi language software


Recommended Posts

Any thoughts on the best way (s) to support multiple languages in a program? With folks from around the world it's nice if text could be changed from English to Polish to Slovak to French to German to ... with relative ease, and not have multiple versions. Even better if there are design ideas to support the addition of new languages in the future.

Link to comment
Share on other sites

Back in the day, I think you were pretty much out of luck when it came to the 8-bit but with the ST, I do remember many games allowing you to choose the language. You usually had English, French, German, and Spanish. What you would end up doing is making a resource file for each language. Then you just fill it will key value pairs where the key is the same for each but the value is the text you want printed. Since German words usually takes up the most space on the screen, this is the one you usually test first to ensure it all fits on the screen. As we know with Japanese to English conversion, the translations aren't always the best (ex: All your base belong to us) so having someone who speaks both languages fluently is helpful, especially when it comes to understanding the subtleties of the language.

 

Since English is spoken in many places, I think it's safe to go with that but I agree that providing support for more languages opens up the game to more people. I would definitely attempt doing this if I ever create something that had a significant amount of text in it OR if some explanation on how to play the game was required but I'd have to also be limited to languages that wouldn't easily work by jiggering my characters set. I mean, think about how much work it would be to create a character set that wasn't supported by the system. For example, let's take this paragraph from Wikipedia about Chinese characters;

 

Altogether there are over 50,000 characters, though a comprehensive modern dictionary will rarely list over 20,000 in use. An educated Chinese person will know about 8,000 characters, but you will only need about 2-3,000 to be able to read a newspaper.

 

 

It's possible we could limit this down to the necessary characters but there is not guarantee that this could be done. Of course, how many people in China really want to play on 30+ year old systems. We can probably rule out the Chinese language. :-)

Link to comment
Share on other sites

It can be a difficult task when the text displayed contains variable portions (such as numerals) that are known only during execution, not during translation.

Same problem with variable length texts - It will fit to 40 characters in English, but not in French. What to do? Sometimes one can shorten, sometimes not.

 

Separate resource files are the first step.

Also separate versions are not bad thing if their creation is highly automated (in case you want to distribute your program as a standalone binary load file). One source code, three resource files, one automation script and three .xex files on output.

 

This can be an interesting reading (general principles of i18n): https://docs.oracle.com/javase/tutorial/i18n/

https://docs.oracle.com/javase/tutorial/i18n/format/messageintro.html

Edited by baktra
Link to comment
Share on other sites

  • 4 weeks later...

I once wrote a translation system for HP around 15 years ago. It was dead simple.

 

As people are saying, you essentially have a key and then you look that up in your resource file.

 

The difficulty with the Atari is fitting it all into memory at the same time with all the languages. That may be practical for a platformer but probably not so for an adventure game. You'd be better off dynamically loading the text from disk in such a case.

 

Text length issues can be resolved before translation, you just tell the translator the restrictions and ensure that they comply with them.

 

Fonts can be dynamically loaded from disk to support different character sets.

 

You didn't state what kind of program that this is - you also need to ensure that you translate other things in GUIs such as the use of red as a warning doesn't work for Chinese people who think they've got lucky, as red is a lucky colour, not a warning colour. A mailbox icon may mean one thing to an American, but something very different to people from other cultures (or potentially nothing for some cultures as they have letterboxes in their front door).

 

Then there are the localisations also, do we use 'colour' or 'color'? All this needs to be considered. It's easier to treat the different localisations as different languages, though they use up more disk.

 

I know that you've said 'no' to different versions of the software, but they would allow you to not have runtime reading of the text from disk or using more complex look up systems in your code. A good build system for your software would allow many versions to all be created at the same time.

Link to comment
Share on other sites

Thanks for all the thoughtful replies. I am blueprinting a couple of projects right now, with different challenges and constraints, and tapping into the collective knowledge here has helped.

 

Now I just need someone to find me the extra 5-6 hours per day needed to give me the time to do them...

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...