mojira.dev
MC-8647

Death messages not translatable

The new death messages do not conform to the norms for internationalization. They assume you can break down sentences into parts that will be recombined using something like English grammar. This is not so.

Example messages
death.attack.generic: died
death.cause.kill: %1$s %2$s
death.cause.assist: %1$s %2$s and %3$s
death.fell.by.accident: fell %1$s
death.fell.by.killer: was %1$s
death.fell.by.assist: was %1$s by %2$s
death.fell.cause.arrow: shot %1$s

These and many more assume a particular word order making them untranslatable in many languages.

In Irish (& all Celtic languages) word order is Verb Subject Object. You can't just use fragments starting with "was" because the verb has to come before the subject! The same goes for a fragment like "died". What am I supposed to do with that? You are assuming that the verb comes second when in Irish it's complex expression - Fuair X bás "X died".

Assumptions in programming are bad. Same goes for internationalization.

It would be nice to see Mojang take translations a little more seriously.

Linked issues

Comments

fuj1n

"It would be nice to see Mojang take translations a little more seriously."

Please remember that this is only a snapshot, and please do not blame Mojang for missing something, reporting is a good thing however. Also, from what I believe, Mojang are not doing the translations, the community is.

MiiNiPaa

Many articles on internalization strongly advises against "building" messages.
Actually Mojang have falled in many pits which exist in internationalization: MC have problems with right-to-left languages, with languages which combine their symbols (arabic), and with non-roman (SOV) syntax. Guess, they need a specialist in this field.

Ezekiel

Arthur Uzulin, although they aren't making the translations, they need to make it translation-compatible.

Seán Ó Séaghdha

I know this is OT, but although the translation is done by the community it is still in Mojang's interest to have it work well. Bad translations, community produced or not, reflect badly on Mojang's product.

There is very little information on, or co-ordination of, the translations. I've been part of a few community translation efforts and they are almost inherently contentious affairs. They need some level of oversight to achieve a consistent result. The allow-random-people-to-contribute-and-vote model (as used to a much worse extent by Facebook) does not produce a good result. When I discovered a few months ago that there was such a thing as "proofreader status" on crowdin.net I was surprised how many other translation teams had also never even heard of this (e.g. French). People don't know this stuff because there is no co-ordination or useful info coming from Mojang. This is what I meant by taking translations seriously.

You can say "oh, it's only a snapshot" but there is no notification system so it's only by visiting crowdin.net that you can even know there are new terms to translate. This stuff can easily slip into a release. And seriously, this is basic, basic stuff. This is not a mistake that should be made in the first place.

For a robust, reliable translation process we need:

  1. Info/Co-ordinator: easy to find info and a contact to help people in a general way with translation and crowdin.net

  2. Less drive-bys: translators should not be able to contribute unless they join the language team. I don't even know if crowdin.net can do this but I spend too much time deleting random additions by people who have no clue. That's not a good way to keep volunteers.

  3. Proofreaders: each language team should aim to have at least one proofreader who can be trusted to keep the translation consistent with agreed vocab

  4. Forum: crowdin.net is isolating. Yes, language teams have forums, but they are pretty lame and are cut off from translators in other languages. Similar story for comments on translation texts - you can compare notes across languages, but there is no notification of new comments. You can send personal messages to other translators, but it's not obvious how.

No doubt someone will say "well, can't you do some of that anyway?" and maybe I will, but I just want to make the point that this is a serious issue.

fuj1n

This ticket is a language translation change/add request and is currently not supported on this JIRA.
Please use the Crowdin MineCraft Translation Project for all translation change/add requests.

Seán Ó Séaghdha

Wow, that was really helpful...not.

Seán Ó Séaghdha

Could you explain where on crowdin.net there is a central place for recording problems with the translation strings?

kumasasa

Reopened.
@fuj1n: This cannot be resolved in crowdin.net.

Jens Bergensten

Seán: Can you please provide more death message examples, so I can see how to change the message form? For example, translate "jeb fell off a ladder" and "jeb fell off a ladder and was slain by Zombie", for starters.

Seán Ó Séaghdha

Well, I can do that, but I think you're missing the point. You can't code the grammar of all languages into the program messages. It's better to use more messages that are complete sentences.

Jeb fell off a ladder
Thit Jeb de dréimire (lit. Fell Jeb from ladder)

Jeb fell off a ladder and was slain by a zombie
Thit Jeb de dréimire agus bhásaigh zombaí é/í ("...and a zombie slew him/her" Irish has an autonomous verb but you don't usually use it when there's an agent unlike this English passive contruction. You also need a pronoun here which you don't in English, but if you only see a fragment no have no way of knowing)

(Late) dinner time for me, so I'll have to come back to this tomorrow.

GrygrFlzr

Seems like a good solution to have an extra variable for the victim name (in this case, 'jeb').
So instead of

death.fell.by.killer: was %1$s

it uses something similar to

death.fell.by.killer:%1$s was %2$s
Seán Ó Séaghdha

Yes, that's what I mean. Don't use sentence fragments, use sentences. It's much more likely to be translatable into any language.

megascience

Would make more sense to just introduce the dynamic variables directly into the statements, yes. What complications would that have other than adding the adaptation to replace all of them?

Bastiaan de Jong

This is indeed a problem. However I also see that with all the possible sentence combination, a list of full sentences would quickly become very huge. I can´t do the math exactly, because i don´t know the amount of combination in the code.
Lets say there would only be three parts in a sentence and for each part there would only be 3 possibilities. To write this in full sentences, there would have to be 3*3*3 = 27 sentences.
To write all of the possible death messages in minecraft in full, you'd probably need somewhere in between 10 and a 25 full pages of sentences, which wouldn't be practical in any way. A different solution should be found.
I don't see this as a bug and there is no easy fix. Don't think this should be here though.

Jens Bergensten

Bastian: Yes, I tried to figure out a way to keep the dynamic feeling of the death messages, but I couldn't find one. I've simplifed the death messages and made them full sentences. I'll upload a new translation sheet to crowdin tomorrow.

Bastiaan de Jong

I figured that was the only sollution, to bad, I really liked them.

megascience

As nice as modular messages would be, as we know by this point, having to give special settings for all supported languages and any languages to be supported in the future would be... odd. If someone does think of a nicer solution, hopefully they'll come here or similarly to present it. But for now, this will at least make translation easier.

Seán Ó Séaghdha

The problem with being in a different time zone...everything happens while you're asleep.

There might be a way of making this work but you'd have to have some kind of meta-sentence with named parameters. Even then it might be tricky for some languages...wish I understood enough Japanese to check how they're doing with this.

E.g.

<playername> fell <falltype>

instead of

fell %1$

I'd try to do the whole list of problem strings, but the other thing is that I still have no idea what some of them are supposed to be because there is no contextual information. What are these, for example?

death.cause.kill                      %1$s %2$s
death.cause.assist                    %1$s %2$s and %3$s

There's absolutely no way to know the significance of these and crowdin even advises you don't change the order of strings that only contain variables.

It's probably an exaggeration to say you can't do any dynamic sentences, you just need to show the translator the whole sentence, i.e. include a parameter for the subject, and make it clear somehow which are the strings that will be substituted so they can be found and checked.

The other problem ones for me are...

...the generalised passives...

death.fell.by.killer                  was %1$s
death.fell.by.assist                  was %1$s by %2$s

...and their complements (I'm guessing?)...

death.fell.cause.arrow                shot %1$s
death.fell.cause.thrown               pummeled %1$s
death.fell.cause.explosion.player     blown %1$s
death.fell.cause.explosion            blown %1$s
death.fell.cause.fireball             fireballed %1$s
death.fell.cause.generic              knocked %1$s

All of the other strings could easily be fixed by turning them back into full sentences - i.e. the same number of sentences, not some factorial madness.

E.g. the 1.4.7 strings

death.magic                           %1$s was killed by magic                 Maraíodh %1$s leis an draíocht      (Autonomous verb)
death.wither                          %1$s withered away                       Seargadh %1$s                       (Autonomous verb)
death.anvil                           %1$s was squashed by a falling anvil     Thit inneoin agus bhasc  %1$s     "Fell anvil and squashed she %1$s"
death.fallingBlock                    %1$s was squashed by a falling block     Thit bloc agus bhasc  %1$s        (can't use the equiv of "falling" as an adjective)

rather than

death.attack.magic                    was killed by magic
death.attack.wither                   withered away
death.attack.anvil                    was squashed by a falling anvil
death.attack.fallingBlock             was squashed by a falling block

Unless you were doing something nefarious like inserting them into other strings.

Jens Bergensten

It's fine to change the order of parameters, that's why they are numbered. Ie you can change "blah %1$s bleh %2$s" to "blah %2$s bleh %1$s" if you want, though it's difficult to know what they are replaced with.

The %1$s was removed from the death reasons because they were used as fragments as either "jeb withered away" and "jeb was shot off a ladder by Skeleton and withered away". That sentence was a combination of the following fragments:

playername=jeb
death.fell.by.assist=was %1$s by %2$s
death.fell.cause.arrow=shot %1$s
death.fell.from.ladder=off a ladder
entity.Skeleton.name=Skeleton
death.cause.assist=%1$s %2$s and %3$s
death.attack.wither=withered away

It's probably very difficult to find a fragment system that works in all languages, as you say, so I had to simplify the system. It's no longer possible to get falling+death combinations, and all different ways of being pushed by someone has been removed. In the example above, if I had been killed by the Skeleton's arrow it would've been "jeb was shot by Skeleton", if I had been killed by the fall "jeb was doomed to fall by Skeleton", and if I had been killed by the wither effect after the fall "jeb withered away" (as previously).

Bastiaan de Jong

I agree with Jeb.
If there was a way of coding languages, it would have been done.
As an example, Google with all it's resources and programmers isn't able to translate web pages into different languages properly.
The system Seán Ó Séaghdha has come up with might work for some languages, and might not for others, there is no way to know without hiring a language specialist, which wouldn't make sence for such a small thing.

Moo

Instead of having a complex sentence like "jeb was shot off a ladder by Skeleton and withered away" which is hard to split in a way that's compatible with all languages, why not simply split it into as many sentences as required?
"jeb was shot off a ladder by Skeleton. He then withered away."
"jeb fell from a ladder. Then a zombie ate him."
This should be translatable easily, and doesn't lose any details. It'd only really need additional "then.." type equivalents for the follow-on sentences.

pizza2004

I like moo's idea. I would be sad to see the loss of the new dynamic system.

Bastiaan de Jong

If possible i´d be cool with that.

pizza2004

This is obviously only an idea, and probably not a super effective one, but you could just implement a little script that lets them code the death messages and how they're parsed together in the language files. Nothing too complex, but I think that could work.

Marcus Vinícius Araújo Peixoto

Moo's idea is really good! Instead of picking fragments of the same sentence, for example:

Jeb [was shot (...) by Skeleton] + [off a ladder] + [withered away] = Jeb was shot off a ladder by Skeleton and withered away.

You could split up in MORE THAN ONE SENTENCE! Example:

Jeb [was shot by Skeleton]. Then, he [fell off a ladder]. Finally, he [withered away]

Or
Jeb [was shot off a ladder by Skeleton]. Then he [withered away]

The second is better because three sentences with "then" and "finally" is too repetitive!

Guess this is the only way to make death messages funnier! ;-;

user-f2760

This has been fixed over 2 years now....

Marcus Vinícius Araújo Peixoto

But the bug reappeared! I can't even get the "doomed to fall"

kumasasa

@unknown: Where exactly is your problem when translating

%1$s was doomed to fall by %2$s

in any other language ?

Seán Ó Séaghdha

(Unassigned)

Unconfirmed

translation

Minecraft 1.4.7, Snapshot 13w03a, Snapshot 13w04a

Snapshot 13w05b

Retrieved