Multilingual Oolite
Moderators: winston, another_commander
- LittleBear
- ---- E L I T E ----
- Posts: 2882
- Joined: Tue Apr 04, 2006 7:02 pm
- Location: On a survey mission for GalCop. Ship: Cobra Corvette: Hidden Dragon Rated: Deadly.
Think the main difficulty with auto-translation is context. Even in my own native English I had to fiddle a lot with the random generator in Random Hits to get messages that make sense (in as much as deadly arts graduates and edible poets make sense) and at least have a semblance of grammar. Eg in English "precious" can mean well loved or valuable. In another context it can even mean pedantic or pretentious "a precious arts graduate" could mean someone who is always going on about the meaning of modern art works! So in English I can use this word in multiple contexts "wanted for hurling my precious daughter into a massive food blender" and "suspected of slashing my precious glove puppet with a nine-bladed sword" both make sense. But if you translated precious as "valuable" then it works in one context but not the other. An / a are also tricky in English when your trying to do somthing procedurally "an edible poet" as against "a deadly goat" but other languages don't have an equivilent rule or the rule is different. Plurals are also a problem. In English you can generally get away with just adding s, but they're are still loads of exceptions to the rule "wolves" not "wolfs" "fish" not "fishs" etc. "The" as well need s the computer to know what word is coming next. In English it doesn't matter as "the Lavian Grand Inquisitor" or "the Getevian Arch Bishop" both use "the". In French though it would need to be le or la. Always fun to fiddle though, so best of luck!
Last edited by LittleBear on Wed Jan 23, 2008 1:09 pm, edited 2 times in total.
OXPS : The Assassins Guild, Asteroid Storm, The Bank of the Black Monks, Random Hits, The Galactic Almanac, Renegade Pirates can be downloaded from the Elite Wiki here.
- Commander McLane
- ---- E L I T E ----
- Posts: 9520
- Joined: Thu Dec 14, 2006 9:08 am
- Location: a Hacker Outpost in a moderately remote area
- Contact:
Well spoken, LittleBear. And this is indeed why I'm currently toasting my brain, searching for clever solutions for the planet-descriptions.
And a "correct" literal translation is only the starting-point, anyway. In many cases it would be wrong and/or nonsense, e.g. with idiomatic phrases (one simple example from the beginners-course: in German it isn't "raining cats and dogs", but "es schüttet wie aus Kübeln" (something like "it pours like emptying buckets")).
It get's even more complex and complicated when we come to mission-texts, because in the best of all worlds the translation would not only transfer the direct meaning of a word or a sentence, but also (and more important!) the allusions and puns contained in that sentence. And Oolite is quite rich of these! So, if there is for instance somewhere in a text a pun referring to a phrase from a popular English TV-series of the 70's that happens to be completely unknown in Germany, it makes no sense to "translate" the words. The translator would have to find a similar pun referring to a phrase in German popular culture. Chances are (at least in my case; I have mentioned my lack of familiarity with English popular culture several times) that he misses the pun completely.
And a "correct" literal translation is only the starting-point, anyway. In many cases it would be wrong and/or nonsense, e.g. with idiomatic phrases (one simple example from the beginners-course: in German it isn't "raining cats and dogs", but "es schüttet wie aus Kübeln" (something like "it pours like emptying buckets")).
It get's even more complex and complicated when we come to mission-texts, because in the best of all worlds the translation would not only transfer the direct meaning of a word or a sentence, but also (and more important!) the allusions and puns contained in that sentence. And Oolite is quite rich of these! So, if there is for instance somewhere in a text a pun referring to a phrase from a popular English TV-series of the 70's that happens to be completely unknown in Germany, it makes no sense to "translate" the words. The translator would have to find a similar pun referring to a phrase in German popular culture. Chances are (at least in my case; I have mentioned my lack of familiarity with English popular culture several times) that he misses the pun completely.
-
- Competent
- Posts: 47
- Joined: Sun Jan 20, 2008 3:51 pm
- LittleBear
- ---- E L I T E ----
- Posts: 2882
- Joined: Tue Apr 04, 2006 7:02 pm
- Location: On a survey mission for GalCop. Ship: Cobra Corvette: Hidden Dragon Rated: Deadly.
Well give it a go, but you may run into context problems and end up "looking a bit of a Smeghead". Try auto-translating that and you'll get some very strange (and highly misogynistic / gynaecological) results that the phrase does not have in its native (Liverpool) dialect!
OXPS : The Assassins Guild, Asteroid Storm, The Bank of the Black Monks, Random Hits, The Galactic Almanac, Renegade Pirates can be downloaded from the Elite Wiki here.
-
- Competent
- Posts: 47
- Joined: Sun Jan 20, 2008 3:51 pm
- Commander McLane
- ---- E L I T E ----
- Posts: 9520
- Joined: Thu Dec 14, 2006 9:08 am
- Location: a Hacker Outpost in a moderately remote area
- Contact:
@zimmermic: Putting all texts into plists and translating them is exactly what we are doing right now. So, please, just shut up if you don't understand anything, and let us just do our work.
Or, to put it into a German phrase that has become famous: Wenn man keine Ahnung hat, einfach mal die Fresse halten!
Or, to put it into a German phrase that has become famous: Wenn man keine Ahnung hat, einfach mal die Fresse halten!
- Eric Walch
- Slightly Grand Rear Admiral
- Posts: 5536
- Joined: Sat Jun 16, 2007 3:48 pm
- Location: Netherlands
The same is valid for a French comic book like "Asterix and Obelisc". The text writer often uses words with double meaning. But that is in French and on translating a lot of those jokes are just left out, as in the new language the word-game was impossible. Only some translators (like the English) added new word games on places were the original had none. Just to compensate for other placed he could not make one in English.McLane wrote:So, if there is for instance somewhere in a text a pun referring to a phrase from a popular English TV-series of the 70's that happens to be completely unknown in Germany, it makes no sense to "translate" the words. The translator would have to find a similar pun referring to a phrase in German popular culture.
Those types of translations are the best (and the most difficult). Not literally translating but translating in the sense of the original. Such a thing is only possible by hand.
An extra problem arises with completely filled screens. The new translation must also fit on that screen. English is a more compact language than Dutch or German. It is likely that a computed translation will be longer.
-
- Competent
- Posts: 47
- Joined: Sun Jan 20, 2008 3:51 pm
-
- Quite Grand Sub-Admiral
- Posts: 6682
- Joined: Wed Feb 28, 2007 7:54 am
With Ahruman's latest 8-bit text encoding improvements, this can really take off. See below some examples of Commander McLane's work-in-progress German version of Oolite. Note that to go from the Italian version to the German one, all I had to do was remove the Italian.oxp from AddOns and replace it with the German.oxp one. Easy. Game translated.
So, do we have any takers for other languages?
So, do we have any takers for other languages?
- JensAyton
- Grand Admiral Emeritus
- Posts: 6657
- Joined: Sat Apr 02, 2005 2:43 pm
- Location: Sweden
- Contact:
I remember something bothering me about this thread when I first read it, but I got distracted. This discussion seems to have been dropped, but it’s important:
However, I don’t agree with the idea of putting the user-readable name at the top of the commodities.plist entry; this would introduce unnecessary backwards-compatibility issues. A better approach would be to add a "misc stuff" dictionary as an optional last entry, in the same way as done in equipment.plist. However, I think it’d be simpler to put the localized names in descriptions.plist, with keys like "COMMODITY_Food" = "Food", and have a CommodityName() function to look these up as necessary. (The function should also be exposed to JavaScript.)
I strongly agree here. Requiring scripts to use localized names to identify commodities is unacceptably bad design.Commander McLane wrote:And sorry if I'm annoying you with insisting on the commodities issue. But it is an issue. We have to distinguish between cosmetics and gameplay.
However, I don’t agree with the idea of putting the user-readable name at the top of the commodities.plist entry; this would introduce unnecessary backwards-compatibility issues. A better approach would be to add a "misc stuff" dictionary as an optional last entry, in the same way as done in equipment.plist. However, I think it’d be simpler to put the localized names in descriptions.plist, with keys like "COMMODITY_Food" = "Food", and have a CommodityName() function to look these up as necessary. (The function should also be exposed to JavaScript.)
E-mail: [email protected]
- Commander McLane
- ---- E L I T E ----
- Posts: 9520
- Joined: Thu Dec 14, 2006 9:08 am
- Location: a Hacker Outpost in a moderately remote area
- Contact:
I think the most simple approach is the best, and I am indeed also concerned with backwards compatibility. The suggestion of a seperate entry in the commodities-array was made mainly in order to raise the issue.
Having the localized names in descriptions.plist is obviously the better solution - and perfectly analogous to the way another_commander has handled everything else. I support it whole-heartedly.
*****
By the way: I got distracted from my work on the German version a bit, because this week I wanted to wrap up Anarchies.oxp. I succeded . Now I am busy writing wiki-pages for everything in it, but as soon as I'm done with that I will return to German Oolite.
Having the localized names in descriptions.plist is obviously the better solution - and perfectly analogous to the way another_commander has handled everything else. I support it whole-heartedly.
*****
By the way: I got distracted from my work on the German version a bit, because this week I wanted to wrap up Anarchies.oxp. I succeded . Now I am busy writing wiki-pages for everything in it, but as soon as I'm done with that I will return to German Oolite.
- JensAyton
- Grand Admiral Emeritus
- Posts: 6657
- Joined: Sat Apr 02, 2005 2:43 pm
- Location: Sweden
- Contact:
Test of localizable commodity names (via descriptions.plist). Also a start on a Swedish localization.
The OXP description.plist looks like this (XML due to copy&pasting):
Edit: syntax change
The OXP description.plist looks like this (XML due to copy&pasting):
Code: Select all
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>commodity-name food</key>
<string>Føød</string>
<key>commodity-name textiles</key>
<string>Tëxtïlës</string>
<key>commodity-name radioactives</key>
<string>Rädïøäctïvës</string>
<key>commodity-name slaves</key>
<string>Slävës</string>
<key>commodity-name liquor/wines</key>
<string>Lïqüør/Wïnës</string>
<key>commodity-name luxuries</key>
<string>Lüxürïës</string>
<key>commodity-name narcotics</key>
<string>Närcøtïcs</string>
<key>commodity-name computers</key>
<string>Cømpütërs</string>
<key>commodity-name machinery</key>
<string>Mächïnëry</string>
<key>commodity-name alloys</key>
<string>Älløys</string>
<key>commodity-name firearms</key>
<string>Fïrëärms</string>
<key>commodity-name furs</key>
<string>Fürs</string>
<key>commodity-name minerals</key>
<string>Minëräls</string>
<key>commodity-name gold</key>
<string>Gøld</string>
<key>commodity-name platinum</key>
<string>Plätïnüm</string>
<key>commodity-name gem-stones</key>
<string>Gëm-Stønës</string>
<key>commodity-name alien items</key>
<string>Älïën Ïtëms</string>
<key>commodity-column-title</key>
<string>Børk Bork:</string>
<key>price-column-title</key>
<string>Börk:</string>
<key>for-sale-column-title</key>
<string>Bøørk:</string>
<key>in-hold-column-title</key>
<string>Bork:</string>
</dict>
</plist>
Last edited by JensAyton on Tue Feb 12, 2008 10:31 am, edited 1 time in total.
E-mail: [email protected]
-
- Quite Grand Sub-Admiral
- Posts: 6682
- Joined: Wed Feb 28, 2007 7:54 am
The Cyrillic font is already included as an example in the tests folder in the trunk tree. The Greek font is not there yet, but you could probably use the fonttexgen utility in tools to build it. I cannot give any more details on this, as I have not tried building the utility yet and it looks like the code is Mac-specific. Maybe Ahruman can shed some light on how to actually generate new fonts.
Here is what it looks like. Check out the Condition: Docked text.
Here is what it looks like. Check out the Condition: Docked text.
- JensAyton
- Grand Admiral Emeritus
- Posts: 6657
- Joined: Sat Apr 02, 2005 2:43 pm
- Location: Sweden
- Contact:
Anyone interested in the structure of the fonts can look in http://svn.berlios.de/svnroot/repos/ool ... rilic.oxp/ (Edit: moved, see below). The font is defined in oolite-font.plist, which specifies a texture (oolite-font-cy.png), an encoding (currently the magic number 11, I’ll change that to a string), a substitution table (which allows certain strings to be replaced with other strings; previously this was hard-coded) and a list of the widths of each symbol (glyph).
As another_commander guessed, this was mostly generated with the “fonttexgen” tool, which is a hacked-together Mac-only app. (The original font was generated by hand by Giles, by laying it out on a grid in a graphics package and, apparently, measuring in place.)
The Cyrillic font OXP works, but would benefit from a better substitution table to work well. For instance, in the “Docked” text in the screen shot, the “d” is actually a “Latin small letter d”, not a “Cyrillic small letter komi de”.
The useful 8-bit encodings supported by both Mac OS X and GNUStep appear to be: Windows Latin 1 (the default), Windows Cyrillic, Windows Greek and Windows Turkish. (Why the Windows ones? Because they’re strict supersets of the corresponding ISO encodings, which each have 32 unassigned code points.) I’ll generate “starter packs” for Greek and Turkish as well as Cyrillic.
While we’re talking about the fonts, I should mention that I’ve switched to a higher resolution for 1.70. Despite being eight times as big as the old font, it will only use twice as much memory (1 MB) since it uses one channel instead of four. I think this is fair, given that it has twice as many glyphs. :-)
Edit: I’m not sure I mentioned this anywhere else, but the new credits symbol (actually a Brazilian cruzeiro symbol, ₢) replaces the Euro symbol (€) in the new Oolite fonts. either character can be used in text to generate a credits symbol on the screen.
As another_commander guessed, this was mostly generated with the “fonttexgen” tool, which is a hacked-together Mac-only app. (The original font was generated by hand by Giles, by laying it out on a grid in a graphics package and, apparently, measuring in place.)
The Cyrillic font OXP works, but would benefit from a better substitution table to work well. For instance, in the “Docked” text in the screen shot, the “d” is actually a “Latin small letter d”, not a “Cyrillic small letter komi de”.
The useful 8-bit encodings supported by both Mac OS X and GNUStep appear to be: Windows Latin 1 (the default), Windows Cyrillic, Windows Greek and Windows Turkish. (Why the Windows ones? Because they’re strict supersets of the corresponding ISO encodings, which each have 32 unassigned code points.) I’ll generate “starter packs” for Greek and Turkish as well as Cyrillic.
While we’re talking about the fonts, I should mention that I’ve switched to a higher resolution for 1.70. Despite being eight times as big as the old font, it will only use twice as much memory (1 MB) since it uses one channel instead of four. I think this is fair, given that it has twice as many glyphs. :-)
Edit: I’m not sure I mentioned this anywhere else, but the new credits symbol (actually a Brazilian cruzeiro symbol, ₢) replaces the Euro symbol (€) in the new Oolite fonts. either character can be used in text to generate a credits symbol on the screen.
Last edited by JensAyton on Sun Feb 10, 2008 6:07 pm, edited 1 time in total.
E-mail: [email protected]