+David_P Posted January 15, 2017 Share Posted January 15, 2017 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. Quote Link to comment Share on other sites More sharing options...
flashjazzcat Posted January 15, 2017 Share Posted January 15, 2017 Resource files. Have all the text in the application stored as tokens which index into a resource file full of strings. Quote Link to comment Share on other sites More sharing options...
Justin Payne Posted January 15, 2017 Share Posted January 15, 2017 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. :-) Quote Link to comment Share on other sites More sharing options...
pirx Posted January 16, 2017 Share Posted January 16, 2017 this is info from PC project I worked on - 16x16 BW, no anti aliasing Chinese characters are just barely OKish. I have found a 12x12 font, but our Chinese partners said it was not readable. Quote Link to comment Share on other sites More sharing options...
baktra Posted January 17, 2017 Share Posted January 17, 2017 (edited) 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 January 17, 2017 by baktra Quote Link to comment Share on other sites More sharing options...
snicklin Posted February 11, 2017 Share Posted February 11, 2017 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. Quote Link to comment Share on other sites More sharing options...
+David_P Posted February 16, 2017 Author Share Posted February 16, 2017 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... Quote Link to comment Share on other sites More sharing options...
snicklin Posted February 18, 2017 Share Posted February 18, 2017 Now I just need someone to find me the extra 5-6 hours per day needed to give me the time to do them... If you find that person, send them to me once you're finished with them. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.