Pages: [1] 2 3
|
|
|
Author
|
Topic: Star Control 2 Localization (Read 14637 times)
|
zap
Zebranky food
Offline
Gender:
Posts: 15
|
Hello!
I know you guys don't want to make any serious modifications to UQM until the 1.0 release, but I and my friends just can't wait and the potential gain (IMHO) from the proposed changes is very noticeable, while the changes themselves are very simple. So I thought it would be good to ask your opinion on this.
My daughter likes the game alot, but alas he doesn't know English Also some of my frends that even know English to some extent won't play the game because they have to think hard on every phrase, and this is not fun at all; at the same time they like the game as a whole.
So I thought a little localization for the game would help spread the word about the game, and - who knows - bring new developers to help.
---
Now about the actual implementation. I thought it wouldn't be too intrusive to make it possible to translate at least the most important parts of the game to other languages. In general, the main part that matters most is the text of the dialogs. And since dialogs are separated into text files, and also every letter is separated into a .png file, it is possible to just create subdirectories like en/ de/ fi/ and so on under the same directory where text and font files are placed, and put the additional font characters and localized text files there. Something like this (I don't have the source tree at hand, so I may misspell some file names here):
065.png (letter 'A') 066.png (letter 'B') mycoon.txt
ru/mycoon.txt (russian dialogs) ru/128.png (cyrillic letter 'A') ru/129.png (another cyrillic letter)
de/mycoon.txt (German dialogs) de/155.png (some german letter) de/159.png (perhaps another german letter)
The code will have to be modified just a little:
First there should be a command-line argument to switch to a specific language (--lang=ru), also it would be good to have some platform-specific function like GetUserLanguage() to fetch current language from environment (LANG), registry and so on. The default implementation can just return "en".
Then the dialog loader will have to be modified so that it first looks under the $LANG/ directory for the respective text file, and if it is not found, load the default (English) file. Same about the font loader - it will have to load all characters that are in main directory and additional characters that possibly are under the $LANG/ subdirectory.
These simple modifications already will allow translators work to begin. What do you think of the idea?
|
|
|
Logged
|
Greetings, Andrew
|
|
|
PRH
*Many bubbles*
Offline
Gender:
Posts: 209
|
There was a Russian translation project for UQM before. I don't know how does it fare now, but I have decided to participate in it once, and translated some conversations for the Ur-Quan, but abandoned it very soon. Maybe I'll return to it later though.
|
|
« Last Edit: November 13, 2004, 02:48:36 am by PRH »
|
Logged
|
|
|
|
tfwo
Zebranky food
Offline
Posts: 8
|
I think the .png "fonts" are a serious problem. How can one bind specific symbols to png-letters? Then there's a whole charset mess...
I think the best approach would be to give some truetype love for the dialog engine (looking there right now), then we can simply translate the messages with help of unicode and put all different fonts and nice utf-8 encoded messages into language-packs. Umm, Utopia...
|
|
|
Logged
|
|
|
|
|
zap
Zebranky food
Offline
Gender:
Posts: 15
|
Just read that old thread about translation and have some comments.
First, it is a bad thing that the XML translation is put as a obstacle for the translators. If the XML translation will be eventually automated, it's not a problem to translate several sets of files instead of one.
Second, the game can just have zero knowledge about Unicode, UTF-8 and so on. Every language can choose an appropiate (single-byte) encoding, and draw the appropiate character PNGs with appropiate filenames (which are derivates of the character code). Also, if input will be desirable, the appropiate keyboard mapping will have to be done somewhere (not a priority task though).
For languages with more than 255 characters it is possible to use something simple to decode like UTF-8. Then we'll have just more characters to load, thats all.
Right-to-left scripting is something totally unknown to me, but I presume this also can be defined as a per-language attribute, and the text renderer will have to be slightly modified to account for that. Not a top priority task (for me, at least) though.
Okay, I'll try to start doing something this evening and see what problems will pop up.
|
|
|
Logged
|
Greetings, Andrew
|
|
|
tfwo
Zebranky food
Offline
Posts: 8
|
Yep, looks like trutype will not payoff. Agreed... Still some work is required to draw the per-font per-language letters. In which case, a lang-pack will contain, additional letters for png's, the translated messages and maybe the translated voices (loading of the former two needs implementation?)
Unicode also is out of the ground, because utf-8 and utf-16 are multibyte encodings and I think they're unusable, if a character is picked by it's byte number. This is ok for most european languages though to use iso-* charsets...
Update: looks like the game does not even need to know about lang-packs -- the addon-loader is supposed to _replace_ files from content packages with files from the addons, right? I think it can replace just anything: fonts, txts, pics (like the ones used in game menu).
|
|
« Last Edit: November 14, 2004, 08:57:20 am by tfwo »
|
Logged
|
|
|
|
zap
Zebranky food
Offline
Gender:
Posts: 15
|
Unicode also is out of the ground, because utf-8 and utf-16 are multibyte encodings and I think they're unusable, if a character is picked by it's byte number. This is ok for most european languages though to use iso-* charsets...
Well, it's not so straight-ahead as using single-byte encodings but still it's achievable. UTF-8 is an encoding that use bytes, and the upper half of the code table (128-255) are really prefixes, and you can easily decode UTF-8 characters to a code in the range 0 ... 2^31-1.
However, multi-byte character set support is not a stringent need right now, it can be added later if the translation project turns to be viable.
looks like the game does not even need to know about lang-packs -- the addon-loader is supposed to _replace_ files from content packages with files from the addons, right? I think it can replace just anything: fonts, txts, pics (like the ones used in game menu).
Yes, looking at uio_mountDir procedure in io.c, it has options to mount a zip file on top of a existing virtual directory, I think that's exactly what we want. And mountContentDir() function actually uses this option, so addons will perfectly suit our needs. So basically the --lang switch will be equivalent to --addon.
|
|
« Last Edit: November 14, 2004, 03:13:20 pm by zap »
|
Logged
|
Greetings, Andrew
|
|
|
|
|
meep-eep
Forum Admin
Enlightened
Offline
Posts: 2847
|
Ah it looks nice indeed. I wrote once ago a very similar system called VFS (Virtual File System) for the Crystal Space project Heh. VFS was the first name I thought of using too, as it describes the system best. But I considered that too confusing as it's used in many places, including in the Linux kernel itself.
I have created a page on the Ultronomicon which describes uio from a user's perspective, on http://uqm.stack.nl/wiki/index.php?title=Content_Management.
Okay, here's the first problem. The addons are mounted with the uio_MOUNT_BELOW option, which means, addons can't override files from the base content. This is only a problem if you use the content unzipped. If you use zipped content, the .zip files will be in the content/packages dir, which you can override. It was an intentional design decision. The idea was that people should use the .zip files still zipped, and to use separate files only where you want to override the packages. But I agree that it can be a problem in some circumstances, like for people who run the game directly from CVS (like myself), or for distributions that for some reason or another extract the .zip files (like Debian). I have been planning on doing it a bit differently in a future release. Stay tuned.
Any special reasons to use the BELOW option instead of the uio_MOUNT_ABOVE? Also the base content dir is mounted as uio_MOUNT_TOP; I think it would be better to have it mounted as uio_MOUNT_BOTTOM although it shouldnt matter (or TOP/BOTTOM are absolute? or they have effect only at the uio_mountDir time?)
uio_MOUNT_TOP and uio_MOUNT_BOTTOM are absolute. uio_MOUNT_ABOVE and uio_MOUNT_BELOW specify that the new mount should end up directly above cq. below the mount specified in the 9th argument. And indeed, this refers to the locations at mount time. If later another directory is mounted below the same location, then it will end up above one that was mounted below that location earlier.
|
|
« Last Edit: November 15, 2004, 01:14:02 am by meep-eep »
|
Logged
|
“When Juffo-Wup is complete when at last there is no Void, no Non when the Creators return then we can finally rest.”
|
|
|
zap
Zebranky food
Offline
Gender:
Posts: 15
|
Thanks for clarification. I'm indeed running the CVS version, so I did a temporary hack to mount the addon packages with the ABOVE flag, and it works okay now. Waiting to see what solution will you propose in the next version
After that everything worked as by magic... I just added some dummy character images with codes above 128 under the respective .fon directories, and translated some text to Russian... it worked! The only problem I've encountered so far is that the dialog history (the one that pops instead of the alien when you press Space) for some reason doesn't seem to like characters with codes above 128 (just skips them), although the text that displays above the alien is painted perfectly.
I almost finished a small tool that takes the .fon directory and combines all the characters on a single canvas, and saves it into a .PNG file; also it does the reverse process (e.g. splits one PNG into multiple characters). I hope I did not reinvent the wheel. I'll start painting the Cyrillic character set as soon as time will permit, there are a lot of fonts to draw, luckily some Latin glyphs are same or very similar to some Cyrillic characters... that will simplify my job.
-------------
Okay, so I'm inviting everybody interested in the Russian translation of Star Control to start a discussion on the subject... I'd propose a irc conference, as the forums discussions proceed slow and if we disagree we can never came to a decision. For example, we can meet on irc.freenode.net, channel #uqm, I'll be there everyday from 12:00 to 24:00 Moscow time. If it makes sense, we can set up some dedicated Web page for this.
--------------
Another thing I wanted to ask knowledgeaboe StarCon people what special meaning have the names of some races... for example it was a nice surprise to discover the deciphering of the VUX name... are there any other hidden jokes inside names, etc?
I think race names are the first and one of the most important things to translate correctly. Sure, we can just transliterate, but this is not so good as it can be.
|
|
|
Logged
|
Greetings, Andrew
|
|
|
Art
Guest
|
The VUX aren't actually *named* Very Ugly Xenoforms (in English). That's just what Rand called them, and it's a rather forced joke (you never hear any other extraterrestrials or aliens being called "xenoforms").
The alien names do reference things in English, but most of them are rather obscure, except for Syreen being an obvious takeoff of "siren". (Not counting the ones that are actually supposed to be Greek words: "Mycon" comes from the Greek for "fungus", "Androsynth" "constructed man", "Slylandro" "sky man". See the stuff I've been saying on Ultronomicon about how Humans appear to have a convention of using Greek to name alien things.) "Ilwrath", I remember, comes from a Scottish friend of Paul and Fred whose last name was McIlwraith, "Yehat" seems to come from the Yeehat tribe of Indians in Jack London's Call of the Wild, "Melnorme" comes from singer Mel Torme (seriously), and so on. The references are obscure enough that I wouldn't worry about "translating" them, unless you're a really hardcore Tolkien-style linguist who wants to translate the words into words that "feel" the same way in Russian, which seems to me to be an impossible task. (As in, "Ilwrath" evokes "ill" and "wrath", and "Spathi" invokes "spastic" and "pathetic" and "pathology", and "VUX" invokes "vile" and "yuck" and "suck", so we have to find equivalent made-up words that correspond to the same set of *Russian* words... argh.)
My recommendation would be just to do a straight transliteration. (If you want to find a way to wrangle VUX so that it becomes an acronym in Russian, be my guest, but I'd rather just rewrite that story -- which isn't ever in the game's actual dialogue anyway.)
|
|
|
Logged
|
|
|
|
zap
Zebranky food
Offline
Gender:
Posts: 15
|
Thanks for your in-depth reply, I'm impressed
I think I'll mostly go by transliteration, except some slight modifications where I can add a little expression by just adding/moving a letter and such. Sure, it's impossible to translate the feeling and the associative row, I just hope the translated names will have their own associations (and here's where a careful choice would help a little).
So what, are there any volunteers? I'm not in a urgent need, I can finish the whole translation task myself, but if anybody wants to feel himself -- even marginally -- involved in this task, I'll be glad to hear their opinions on #uqm, irc.freenode.net from 12:00 to 24:00 GMT+4 every day So far only Meep-Eep visited me there, just to tell me there's the #sc2 channel there too where The Real Guys are sleeping online
|
|
|
Logged
|
Greetings, Andrew
|
|
|
Babelfish
Zebranky food
Offline
Gender:
Posts: 3
|
Hi all,
I was thinking about a spanish translation. I can manage pretty well with the translation itself, but I'm still a rookie in coding and don't know in depth the source of UQM yet.
The spanish case turns to be quite simple -at least compared to cyrilic languages-, as the special characters (á,é,í,ó,ú,ü and the one and only "ñ") are easy to obtain editing regular alphabet PNGs. So I was trying to translate the first dialogue scene -for easier playtesting- between Fwiffo and the Player. Already edited part of the txt file, and added to the spathi.fon folder new PNGs named according to the ASCII codes of the special characters above. However, there's something I'm missing, maybe related to the txt files coding, because the special characters still do not appear.
It may be a silly question, but I'd appreciate some indications on what's going wrong
Thanks in advance.
|
|
|
Logged
|
|
|
|
|
Pages: [1] 2 3
|
|
|
|
|