Join us at the Oolite Anniversary Party -- London, 7th July 2024, 1pm
More details in this thread.

Multilingual Oolite

General discussion for players of Oolite.

Moderators: another_commander, winston

User avatar
Commander McLane
---- E L I T E ----
---- 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:

Post by Commander McLane »

Yes, as I already wrote, the station names. They are also used as both displayed namestring and unique identifier in the dockedStationName_string-query.

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.

You're right that in principle all old OXPs have to be re-done in order to convert them into other languages. But as far as missiontexts, descriptions and so on are concerned, this is purely cosmetic. The Italian player would perhaps wonder why in a certain mission everything turns to English again, but he would be able to play the mission, if he understands English.

The commodities-naming is different to that. If in an old script.plist the commodities are still English, this doesn't affect their display at all (the player wouldn't notice), but plainly breaks the OXP in question. It wouldn't do anymore what it is supposed to do. And that is unacceptable.
User avatar
Commander McLane
---- E L I T E ----
---- 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:

Post by Commander McLane »

I begin to notice that translating isn't that easy. In some aspects English is surprisingly different from German, e.g. in its Latin influences, which probably make it sometimes more easy to translate into e.g. Italian.

Anyway, just now I've stumbled over the "Maintenance Overhaul"-entry in equipment.plist and I've a question to the native English speakers: what exactly does "detailed valeting" mean in this context? My dictionary tells me that a valet is a man's personal male attendant, responsible for his clothes and appearance or a person employed to parking cars, none of which seems to make much sense here, especially together with the adverb "detailed". So what does it mean?
User avatar
Cmdr. Maegil
Sword-toting nut-job
Sword-toting nut-job
Posts: 1294
Joined: Tue Feb 27, 2007 10:28 pm
Location: On the mend in Western Africa

Post by Cmdr. Maegil »

I'm not a native speaker, but IMO it's just a figure of speech, meaning that they'll service and overhaul every piece of equipment fitted on the ship (within their tech level).
You know those who, having been mugged and stabbed, fired, dog run over, house burned down, wife eloped with best friend, daughters becoming prostitutes and their countries invaded - still say that "all is well"?
I'm obviously not one of them.
User avatar
Commander McLane
---- E L I T E ----
---- 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:

Post by Commander McLane »

Okay, tried to translate it that way. Thanks!

Now I'm in descriptions.plist. That's going to give me some major headaches! English grammar is so simple compared to German! One "s" added, and you have a plural. Impossible in German! We do have grammatical rules, too, but we have way more exceptions than rules! :?

My first (small) task: Find five words indicating pirates or criminals, that have the same way of flexing from singular into plural, so that the German equivalent of "We are [7] by [describe-pirate]s! Please help!" makes sense with all of them.

Might be that in the end I have to reduce the number of entries in certain parts of the list.

:idea: Or I have to introduce a seperate [describe-pirate-plural] array.

Anyway: Don't expect this to be finished anytime soon...
User avatar
Star Gazer
---- E L I T E ----
---- E L I T E ----
Posts: 633
Joined: Sat Aug 14, 2004 4:55 pm
Location: North Norfolk, UK, (Average Agricultural, Feudal States,Tech Level 8)

Post by Star Gazer »

'Valeting' in this context has been taken from the usage in the motor vehicle trade, where it refers to cleaning the seats, carpets, inside of the windscreen, inside the boot(trunk in the USA), blacking the tyres(unless they need whitewalls), replacement air freshener, and maybe refilling the screen wash.

Generally it consists of 'tarting up' the vehicle following a service or repair so that it looks/smells nice for the customer. :wink:
Very funny, Scotty, now beam down my clothes...
User avatar
Commander McLane
---- E L I T E ----
---- 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:

Post by Commander McLane »

Aha! Then the German equivalent would be "aufpolieren". Thanks! :D
another_commander
Quite Grand Sub-Admiral
Quite Grand Sub-Admiral
Posts: 6557
Joined: Wed Feb 28, 2007 7:54 am

Post by another_commander »

Commander McLane wrote:
:idea: Or I have to introduce a seperate [describe-pirate-plural] array.
Yep, that's the way to do it. I had to resort to such tactics as well for the Italian translation and had to also rearrange the order of some strings as they appear in certain entries e.g. <string>a [15] [16]</string> , which would normally become a dull place had to be modified to <string>un [16] [15]</string> (giving un posto noioso), because in Italian the noun comes before the adjective (opposite to English). It is quite difficult indeed to make something that works and in the Italian version some "strange" description pops up every now and then. But generally speaking, it is certainly doable. Depends how much time you are prepared to devote to it.
User avatar
Hoopy
---- E L I T E ----
---- E L I T E ----
Posts: 438
Joined: Wed Oct 03, 2007 8:54 pm
Location: Durham, England

Post by Hoopy »

have different string formats for each language, ie [15][16] for one and [16][15] for another is the standard approach for C# programming. You can then have a different table for each language, decide once which language to use and then let it work everything out. Not sure if Objective C does this...
another_commander
Quite Grand Sub-Admiral
Quite Grand Sub-Admiral
Posts: 6557
Joined: Wed Feb 28, 2007 7:54 am

Post by another_commander »

It is actually much more complicated than this. I just mentioned the inveresed order strings as an example of one out of many problems that had to be overcome. It has to do with the grammar rules of a particular language and, apart from everything else, it is not possible to have different "rule tables" for each existing language coded in. But there is no need to take this approach. Careful and intuitive editing of the description.plist phrase fragments, although quite a task on its own, has the advantage of not being limited to a pre-existing set of languages. Anyone wanting to do a translation will just have to create an appropriate set of descriptions and that's about it, really. No need to create overhead for the game engine.

At the end of the day, the system descriptions themselves are not that important for the actual gameplay. They are there to create ambience. So, although it would be nice to have the actual translations of the original scriptures, I can definitely forgive one for omitting or slightly changing a word or a phrase in a description, if it is not possible to have it otherwise.

Come to think of it, what you are describing, Hoopy, is not that different at all to what we do here. The different language tables are the different plists and the rulesets are the different ways plist descriptions are constructed. The game chooses the correct table to use by finding the <Your Language Here>.oxp folder and goes with it.
User avatar
Hoopy
---- E L I T E ----
---- E L I T E ----
Posts: 438
Joined: Wed Oct 03, 2007 8:54 pm
Location: Durham, England

Post by Hoopy »

thinking about it the different language OXPs could just as easily be themes rather than languages. So if you like Star Wars you could trade in erm, whatever they trade in in a galaxy far far away :)
another_commander
Quite Grand Sub-Admiral
Quite Grand Sub-Admiral
Posts: 6557
Joined: Wed Feb 28, 2007 7:54 am

Post by another_commander »

This is absolutely true. Since the entire game text has been externalized, one can take it and modify it to whatever they prefer, limited only by one's imagination. You can modify the entire style of the game, like, make the Monty Python style Oolite (where the Thargoid insults could be changed to "Ni!") or even the adult-language Oolite (no, I'm not going to give an example), if you feel like it. I can only begin to imagine what Captain Hesperus or Disembodied could do with a simple line of text like "Pirates are attacking us. Please help!" and I won't even touch the possibilities of changes in the planet descriptions ;-)
User avatar
Commander McLane
---- E L I T E ----
---- 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:

Post by Commander McLane »

Noticed another problem when I came to this line in descriptions.plist:

Code: Select all

	<key>load-previous-commander</key>
	<string>Load Previous Commander (Y/N)?</string>
The problem is of course not the translation itself, but the assigned keys. In German it would have to be (J/N) for Ja/Nein (and in Italian (S/N) for Si/No, or in French (O/N) for Oui/Non).

We can't assign new keycontrols in an OXP, and I guess this one is hard-coded anyway. How do we handle this?

@another_commander: I see that in your Italian descriptions.plist there are a lot of items that I don't have in my original descriptions.plist from 1.70. How come? For instance all that starts with "gameoptions". Have you modified the engine to use these, because they were hard-coded before? Or are you using a version of Oolite I don't know of?
another_commander
Quite Grand Sub-Admiral
Quite Grand Sub-Admiral
Posts: 6557
Joined: Wed Feb 28, 2007 7:54 am

Post by another_commander »

For the moment, I have translated only the message, leaving Y/N as it is. This will most probably require code modification.

As for the contents of the descriptions.plist, the things that are extra in my versions are things that were hardcoded before and were farmed out to descriptions.plist, so that they become modifiable. 1.70 will not do anything with these. I sent them to you, so that you will be able to see what is added on top of what was in the 1.70 description.plist and generate translations for these as well. So, when 1.71 comes out, the German edition will already contain what's required. By the way, I am using SVN revision 1312 (soon to become 1313, as I am about to commit a fix for a contracts related bug).
another_commander
Quite Grand Sub-Admiral
Quite Grand Sub-Admiral
Posts: 6557
Joined: Wed Feb 28, 2007 7:54 am

Post by another_commander »

Commander McLane wrote:
Noticed another problem when I came to this line in descriptions.plist:

Code: Select all

	<key>load-previous-commander</key>
	<string>Load Previous Commander (Y/N)?</string>
The problem is of course not the translation itself, but the assigned keys. In German it would have to be (J/N) for Ja/Nein (and in Italian (S/N) for Si/No, or in French (O/N) for Oui/Non).

We can't assign new keycontrols in an OXP, and I guess this one is hard-coded anyway. How do we handle this?
This is how it will be handled: In your descriptions.plist add the following lines (preferably under the Intro1 screen section, to keep things referring to the same screen together):

Code: Select all

<key>load-previous-commander-yes</key>
	<string>y</string>
	<key>load-previous-commander-no</key>
	<string>n</string>
Use lower case characters for the y/n answer. That's all. The engine has been modified to read the values in the above keys and assign the y/n response appropriately. If you do not include those entries in descriptions.plist, the normal [yY] and [nN] keys are assigned.

Edit: Corrected mistyping: It is not shipdata.plist, it is descriptions.plist.
Last edited by another_commander on Sat Jan 19, 2008 12:38 pm, edited 2 times in total.
User avatar
Commander McLane
---- E L I T E ----
---- 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:

Post by Commander McLane »

Nice! :D

Unfortunately I can't build Oolite, so I'm just downloading whatever new version Ahruman puts out on BerliOs. But it's nice to be able to be distinctly ahead, even if it's just indirectly through you. :wink:
Post Reply