Translation: Much work ahead

Now that version 0.7 is finally translatable, I peeked into one of that “.po” files and …
Holy shit, there’s a shitload full of strings there!

Poedit reported 2091 strings and this sounds like a lot. It would take some time to fully translate this game. But I am very happy that translation support has been added to the game.

Now I have some questions:

[ul][]How stable are the strings now? (Do they change often? Were you still adding a lot of strings lately?)
[
]Would you, the core developers, say that C:DDA is ready now for being translated?
[]Which translation plans for the game do exist at the moment?
[
]Especially: Does someone else already plan to translate the game into German?[/ul]

I am willing to translate this game into German, although it sounds like a lot of work. But luckily, I also have lots of time :-). But before I even consider starting the translation, the following conditions must be met:

[ul][]The strings are stable enough. I think small fluctuations are ok but if large chunks of text get mangled over and over again I just risk writing for the trash bin and no-one really benefits.
[
]There is at least another German-speaking player around here who agrees to proof-read or at least “proof-plays” the translation. The reason for that: texts are very important in a roguelike game and it is important to do them right. Badly translated strings may do a very good job destroying the gameplay.[/ul]

It would be nice if some people sticked around in IRC or forum who could answer my questions in case some ambigiuty in a certain string pops up or in case I have no idea where that string is supposed to be etc. This is optional, but if there are no such people, I simply can’t translate the strings in question. (Makes sense, right?)

There’s not much churn, but on the other hand the string annotation isn’t complete yet either.
The main risk for churn is if strings defined in the source code get moved to JSON files. I think if that happens they will be unchanged in the .po files, but I’m not sure of that.
Planning is fairly sporadic, Konata is doing a Chinese translation with I think a few others, there’s a Japanese translation under way, those are the only two I know anything about.

I’m sure new strings that needeth translation will be posted, or featured on the server.
And I’m sure that someone that’s not serious enough wouldn’t be working on a 10k lines of text.
On the other hand, with a slightly more detailed changelog the translation work would be more efficient in the future.

Kevin Granade, what do you mean with “churn”?

I think that he means turn over, or change.
So like if you translate milkin this version, they are probably not going to change it very much in the following versions (maybe to something similar like skim milk) but they probably are not going to take things out and throw them away.

Maybe you can try editing some of the lines to see how it actually works.
There aren’t enough testers around to discover bugs and give suggestions.
For example, plural forms in many European languages, should be a problem if someone actually used them.

@Wuzzy: Ive already started working on the german translation.
Github branch: https://github.com/OzoneH3/Cataclysm-DDA/tree/translate_de
Also Pux is helping out: https://github.com/pux1/cataclysm-DDA/tree/translate_de

Feel free to join in :slight_smile:

@utunnels: With the latest update of the .po file there are a ton of conflicts, is there an easy way to fix those, without loosing a whole bunch of translated stuff?

Sounds good so far. I guess I’ll join in at 24 July 2013.

@OzoneH3

I’m not sure. It might have been changed a lot recently.
Also I changed sort method from alpha-beta to file name because it is easier to find related text without going through the whole list. Maybe I should update TRANSLATING.md too.

Did you merge using msgmerge tool or you just updated your local file using git?

Edit, if you have followed the method in TRANSLATING.md, there should be lots of fuzzy entries after merging. Just find and resolve them you should be OK.

@utunnels: I tried using smartgit, but it was a mess … Didnt know there was a program that could handle this.

I ran msgmerge now to merge them, there are still a few things wrong but way better overall.

Changing the sorting was a good idea, sometimes it was a pain to find things.

PS: Are there any other useful tools we should know about ? :wink:

As has been said, “churn” is when you have something, but it gets replaced over and over. We aren’t going around changing strings much at all, mostly adding new strings, which is why I said churn is low, sorry for using jargon, occupational hazard.

There’s a special version of the printf family that gettext supplies that lets you supply normal and plural forms of a word, and a number indicating how many of the item the current message is handling, the reason you supply the number of items instead of “singular/plural” is that evidently some languages have many different versions based on the exact number of item you’re talking about. We’ll want to integrate this at some point, and it should handle the pluralization issues we have even in english too.

As for tools, there are a few things. First there are many tools that are bundled with gettext itself such as msgfmt that manipulate .po files and similar. Sedond there are various web applications that present a more streamlined translation interface you can use. Konata’s group is using LaunchPad for example, I don’t know about the pros/cons of the different services, though I can try and look into it if that’s desired.

I think that Launchpad would be a very good idea because coordinating translations with 3+ people is probably a pain on github.
You also don’t need large preparations which may lead to more people helping with the translations.

[quote=“OzoneH3, post:10, topic:2330”]@utunnels: I tried using smartgit, but it was a mess … Didnt know there was a program that could handle this.

I ran msgmerge now to merge them, there are still a few things wrong but way better overall.

Changing the sorting was a good idea, sometimes it was a pain to find things.

PS: Are there any other useful tools we should know about ? ;)[/quote]

msgmerge is the best bet so far. Like I said, those ambiguous items will be marked by a fuzzy tag, for example:

blahblah

#, fuzzy
msgid "original text"
msgstr “translation”

Usually this is wrong so just change it to

#blahblah
msgid "original text"
msgstr “”

Changing -s to -F will sort them by file names instead. For example:

msgmerge -F -U lang/po/en_NZ.po lang/po/cataclysm-dda.pot

Feel free to update it.

I just used “-s” because that’s what was in the instructions i copied from ;). Sorting by file makes more sense.

I’ll fork it tomorrow and begin the process of translating to Greek. My OSS translation credentials are listed at my Lichess page. By the way, I consider the Greek translation of Lichess my finest work so far.

I used to edit .po files in Emacs like most other files until I discovered Virtaal. It is a masterpiece in the field of translation tools. As someone who regularly works with Gettext, XLIFF and other translation file formats, Virtaal has proven to be a joy to use. It significantly speeds up my work and beats Poedit in every single way.

May I also recommend to the project managers Transifex as a platform for localisation (l10n) and internationalisation (i18n)? It has a very friendly interface and can integrate with git. All the projects I have seen switch to it have immediately seen a jump in contributors as the barrier to entry is far lower. The system also lends itself better to collaborative work than git. The backend is open source, but I’d just use the Transifex.com service if I were you, as it’s free of charge for open-source projects like Cataclysm.

@yobbo
It is good to see you around. :stuck_out_tongue:

[hr]

Actually, I kinda get stuck at editing melee.cpp yesterday. The messages are break down according to English grammar.

For example:

You sweep your at zombie for 30 damage.
sweep his/her/their at zombie for 30 damage.

So the message is break down into subject, verb, s, weapon, target, damage, etc.
I don’t know if this applis to other European languages, but I guess the chance is tiny.

You can be smart and stick to gender wide grammar usage.
"He/She uses and hits for <##> hitpoints."
That, with as much infinitive forms as possible, to comply with singular/plural usage, and you’re a go.
That’s all I’ve ever seen in MMOs.

In the last two days, I translated around 214 strings into German. My “.po” file is based on https://github.com/OzoneH3/Cataclysm-DDA/blob/master/lang/po/de_DE.po (OzoneH3’s fork), after commit 57dab3ef9c73ddfe1cdb2f613328ad7b56667f88.
You find my version of the “.po” file in xz-compressed form. GNU/Linux users: install XZ Utils to uncompress it. Windows users: Install 7-Zip (7-Zip handles a lot of archive formats) to uncompress it.


de_DE.po.xz (101 KB)

[quote=“utunnels, post:16, topic:2330”]Actually, I kinda get stuck at editing melee.cpp yesterday. The messages are break down according to English grammar.

For example:

You sweep your at zombie for 30 damage.
sweep his/her/their at zombie for 30 damage.

So the message is break down into subject, verb, s, weapon, target, damage, etc.
I don’t know if this applis to other European languages, but I guess the chance is tiny.[/quote]
Yeah those are pretty horrible. It’s probably a matter of splitting them into all their component possibilities, making each one a full sentence.
There’s still gonna be some issue with European languages and noun gender, but it works passably if the translator is very careful, as vultures points out :).

I figure first priority is to aim for full translatability, then only after that to try to fix up all the little issues with gender, pluralization, etc…

I think there were still a few more json files to add to that python script as well, but that should be straightforward.

I’ll see if i can do some work on it this weekend.

I’m a native French speaker who’s 100% billingual, and I’d be willing to contribute to a French translation.

If anyone wants to help and is French, we can get in touch and perhaps split this monumental task.