# Translation: Much work ahead

**URL:** <https://discourse.cataclysmdda.org/t/translation-much-work-ahead/2330>\
**Category:** Translations Team Discussion\
**Created:** [July 21, 2013, 2:04am UTC](https://discourse.cataclysmdda.org/t/translation-much-work-ahead/2330 "2013-07-21T02:04:58Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![Wuzzy](https://sea2.discourse-cdn.com/flex016/user_avatar/discourse.cataclysmdda.org/wuzzy/32/41_2.png) [@Wuzzy](https://discourse.cataclysmdda.org/u/Wuzzy)\
**Post date:** [July 21, 2013, 2:04am UTC](https://discourse.cataclysmdda.org/t/translation-much-work-ahead/2330/1 "2013-07-21T02:04:58Z")

</div>

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?)

---

<div class="post-metadata">

**Author:** ![kevin.granade](https://sea2.discourse-cdn.com/flex016/user_avatar/discourse.cataclysmdda.org/kevin.granade/32/1316_2.png) [@kevin.granade](https://discourse.cataclysmdda.org/u/kevin.granade)\
**Post date:** [July 21, 2013, 3:08am UTC](https://discourse.cataclysmdda.org/t/translation-much-work-ahead/2330/2 "2013-07-21T03:08:39Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![vultures](https://sea2.discourse-cdn.com/flex016/user_avatar/discourse.cataclysmdda.org/vultures/32/69_2.png) [@vultures](https://discourse.cataclysmdda.org/u/vultures)\
**Post date:** [July 21, 2013, 3:13pm UTC](https://discourse.cataclysmdda.org/t/translation-much-work-ahead/2330/3 "2013-07-21T15:13:18Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![Wuzzy](https://sea2.discourse-cdn.com/flex016/user_avatar/discourse.cataclysmdda.org/wuzzy/32/41_2.png) [@Wuzzy](https://discourse.cataclysmdda.org/u/Wuzzy)\
**Post date:** [July 21, 2013, 3:16pm UTC](https://discourse.cataclysmdda.org/t/translation-much-work-ahead/2330/4 "2013-07-21T15:16:12Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![Otaku](https://sea2.discourse-cdn.com/flex016/user_avatar/discourse.cataclysmdda.org/otaku/32/27_2.png) [@Otaku](https://discourse.cataclysmdda.org/u/Otaku)\
**Post date:** [July 22, 2013, 8:32am UTC](https://discourse.cataclysmdda.org/t/translation-much-work-ahead/2330/5 "2013-07-22T08:32:57Z")

</div>

> [@Wuzzy](#):
>
> 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.

---

<div class="post-metadata">

**Author:** ![utunnels](https://sea2.discourse-cdn.com/flex016/user_avatar/discourse.cataclysmdda.org/utunnels/32/81_2.png) [@utunnels](https://discourse.cataclysmdda.org/u/utunnels)\
**Post date:** [July 22, 2013, 8:47am UTC](https://discourse.cataclysmdda.org/t/translation-much-work-ahead/2330/6 "2013-07-22T08:47:36Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![OzoneH3](https://sea2.discourse-cdn.com/flex016/user_avatar/discourse.cataclysmdda.org/ozoneh3/32/849_2.png) [@OzoneH3](https://discourse.cataclysmdda.org/u/OzoneH3)\
**Post date:** [July 22, 2013, 10:10am UTC](https://discourse.cataclysmdda.org/t/translation-much-work-ahead/2330/7 "2013-07-22T10:10:50Z")

</div>

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

Feel free to join in 🙂

@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?

---

<div class="post-metadata">

**Author:** ![Wuzzy](https://sea2.discourse-cdn.com/flex016/user_avatar/discourse.cataclysmdda.org/wuzzy/32/41_2.png) [@Wuzzy](https://discourse.cataclysmdda.org/u/Wuzzy)\
**Post date:** [July 22, 2013, 1:14pm UTC](https://discourse.cataclysmdda.org/t/translation-much-work-ahead/2330/8 "2013-07-22T13:14:58Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![utunnels](https://sea2.discourse-cdn.com/flex016/user_avatar/discourse.cataclysmdda.org/utunnels/32/81_2.png) [@utunnels](https://discourse.cataclysmdda.org/u/utunnels)\
**Post date:** [July 22, 2013, 2:00pm UTC](https://discourse.cataclysmdda.org/t/translation-much-work-ahead/2330/9 "2013-07-22T14:00:35Z")

</div>

@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](http://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](http://TRANSLATING.md), there should be lots of fuzzy entries after merging. Just find and resolve them you should be OK.

---

<div class="post-metadata">

**Author:** ![OzoneH3](https://sea2.discourse-cdn.com/flex016/user_avatar/discourse.cataclysmdda.org/ozoneh3/32/849_2.png) [@OzoneH3](https://discourse.cataclysmdda.org/u/OzoneH3)\
**Post date:** [July 22, 2013, 4:27pm UTC](https://discourse.cataclysmdda.org/t/translation-much-work-ahead/2330/10 "2013-07-22T16:27:49Z")

</div>

@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 ? 😉

---

<div class="post-metadata">

**Author:** ![kevin.granade](https://sea2.discourse-cdn.com/flex016/user_avatar/discourse.cataclysmdda.org/kevin.granade/32/1316_2.png) [@kevin.granade](https://discourse.cataclysmdda.org/u/kevin.granade)\
**Post date:** [July 22, 2013, 6:29pm UTC](https://discourse.cataclysmdda.org/t/translation-much-work-ahead/2330/11 "2013-07-22T18:29:32Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![Pux](https://avatars.discourse-cdn.com/v4/letter/p/9f8e36/32.png) [@Pux](https://discourse.cataclysmdda.org/u/Pux)\
**Post date:** [July 22, 2013, 11:03pm UTC](https://discourse.cataclysmdda.org/t/translation-much-work-ahead/2330/12 "2013-07-22T23:03:54Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![utunnels](https://sea2.discourse-cdn.com/flex016/user_avatar/discourse.cataclysmdda.org/utunnels/32/81_2.png) [@utunnels](https://discourse.cataclysmdda.org/u/utunnels)\
**Post date:** [July 23, 2013, 12:05am UTC](https://discourse.cataclysmdda.org/t/translation-much-work-ahead/2330/13 "2013-07-23T00:05:54Z")

</div>

[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

---

<div class="post-metadata">

**Author:** ![yobbo](https://avatars.discourse-cdn.com/v4/letter/y/b9e5f3/32.png) [@yobbo](https://discourse.cataclysmdda.org/u/yobbo)\
**Post date:** [July 24, 2013, 1:58pm UTC](https://discourse.cataclysmdda.org/t/translation-much-work-ahead/2330/14 "2013-07-24T13:58:48Z")

</div>

> [@utunnels](#):
>
> 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.

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.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/flex016/uploads/cataclysmdda/original/1X/21b5d044e8473b25d0bf905d60477e25f6fbe0cf.png) [@system](https://discourse.cataclysmdda.org/u/system)\
**Post date:** [July 24, 2013, 10:01pm UTC](https://discourse.cataclysmdda.org/t/translation-much-work-ahead/2330/15 "2013-07-24T22:01:48Z")

</div>

I’ll fork it tomorrow and begin the process of translating to Greek. My OSS translation credentials are listed at [my Lichess page](http://en.lichess.org/@/Hellball). 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](http://virtaal.translatehouse.org/?id=virtaal/index). 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](https://www.transifex.com/) 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](http://Transifex.com) service if I were you, as it’s free of charge for open-source projects like Cataclysm.

---

<div class="post-metadata">

**Author:** ![utunnels](https://sea2.discourse-cdn.com/flex016/user_avatar/discourse.cataclysmdda.org/utunnels/32/81_2.png) [@utunnels](https://discourse.cataclysmdda.org/u/utunnels)\
**Post date:** [July 25, 2013, 2:29am UTC](https://discourse.cataclysmdda.org/t/translation-much-work-ahead/2330/16 "2013-07-25T02:29:42Z")

</div>

@yobbo  
It is good to see you around. 😛

[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.

---

<div class="post-metadata">

**Author:** ![vultures](https://sea2.discourse-cdn.com/flex016/user_avatar/discourse.cataclysmdda.org/vultures/32/69_2.png) [@vultures](https://discourse.cataclysmdda.org/u/vultures)\
**Post date:** [July 25, 2013, 2:38am UTC](https://discourse.cataclysmdda.org/t/translation-much-work-ahead/2330/17 "2013-07-25T02:38:33Z")

</div>

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.

---

<div class="post-metadata">

**Author:** ![Wuzzy](https://sea2.discourse-cdn.com/flex016/user_avatar/discourse.cataclysmdda.org/wuzzy/32/41_2.png) [@Wuzzy](https://discourse.cataclysmdda.org/u/Wuzzy)\
**Post date:** [July 26, 2013, 9:00pm UTC](https://discourse.cataclysmdda.org/t/translation-much-work-ahead/2330/18 "2013-07-26T21:00:54Z")

</div>

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](https://github.com/OzoneH3/Cataclysm-DDA/blob/master/lang/po/de_DE.po) (OzoneH3’s fork), after commit [57dab3ef9c73ddfe1cdb2f613328ad7b56667f88](https://github.com/OzoneH3/Cataclysm-DDA/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](https://us1.discourse-cdn.com/flex016/uploads/cataclysmdda/original/1X/559a242b1bb97697f341ff366280002f189592aa.xz) (101 KB)

---

<div class="post-metadata">

**Author:** ![yobbo](https://avatars.discourse-cdn.com/v4/letter/y/b9e5f3/32.png) [@yobbo](https://discourse.cataclysmdda.org/u/yobbo)\
**Post date:** [August 1, 2013, 12:14am UTC](https://discourse.cataclysmdda.org/t/translation-much-work-ahead/2330/19 "2013-08-01T00:14:55Z")

</div>

[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.

---

<div class="post-metadata">

**Author:** ![Tankra](https://avatars.discourse-cdn.com/v4/letter/t/ac91a4/32.png) [@Tankra](https://discourse.cataclysmdda.org/u/Tankra)\
**Post date:** [August 1, 2013, 3:06am UTC](https://discourse.cataclysmdda.org/t/translation-much-work-ahead/2330/20 "2013-08-01T03:06:56Z")

</div>

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.

[Next page](https://discourse.cataclysmdda.org/t/translation-much-work-ahead/2330.md?page=2)
