Not all languages work like English: what Mastodon UI developers fail to consider

Hello, fellow fedizens! My name is Anna, I proofread Russian Mastodon translations in my free time. I’d like to share some pain points that I as a translator have to face.

  • Plural forms are not the same across languages. In English, {count, plural, one} always means exactly “1”. In Russian, it also means “21”, “31”, “41” and so on (see Unicode CLDR for the full list). Always use {count, plural, =1} when you mean “exactly one” because Crowdin doesn’t allow us to change it ourselves.
  • Always use plural forms with numbers. In English (as in a typical analytic language), there is no difference between “I’ve got 4 apples” and “I’ve got 5 apples”, so a developer can feel that plural forms are not necessary here: I've got {count} apples (count != 1). But in synthetic languages it matters what the number is to choose the correct form of the word “apple”.
    If the variable is included in the source string, I can add plural forms myself (example), although it’s not obvious and unfortunately not possible with Ruby strings. If the variable isn’t included (like “Followers” or “Active users” followed by a number), a good translation is not possible at all.
  • There is a huge problem with {name} placeholders. A user always enters their display name in the nominative case, which is not a problem for English, but for languages with many grammatical cases this is a massive pain. For example, there is a person whose display name is “Саша”:
    • to form the possessive form, I have to use a clumsy and unnatural sounding construction: “Профиль пользователя Саша” (“Profile of the user named Sasha”);
    • same with the genitive case and other oblique cases: “Заблокировать пользователя Саша” ("Block the user named Sasha);
    • even when the name is in the nominative case, there is another problem…
  • In some languages verbs have a grammatical gender. I try my best to include both forms (e.g. “Саша подписался (-лась) на вас”) but when it’s not possible I often fall back to “This user” because it’s always masculine.
  • I have no option but to include the name. If I remove %{name} from my translation, CI will fail because of mismatched placeholders. It’s a lot easier for me when there are @usernames instead of display names because unlike names they are immutable.
  • Frequent redesigns and renamings drive me nuts! When something is renamed, good translations are often lost and replaced by awful machine translations that drive-by contributors copy verbatim. I have to recover good translations from Translation Memory or even Git history.
  • There is not enough screenshots and context. Volunteer translators have to use Git to find the context themselves and post the link to the relevant PR in the comments. Proofreading is severely limited unless you have a staging Mastodon server with the latest (preferably nightly) version as a testing playground.
5 Likes

Some of these problems also show up when translating into Esperanto, and, I imagine, a lot of other European languages:

  • in English, the label for “following” (users who are being followed by the subject) is the same for both singular and plural (unlike “followers”), but it would not be the same in Esperanto, where it’s “sekvato(j)”, which in English translates to “those being followed” and would be like if “followed(s)” was a noun and (as seen by the parenthesis) requires pluralization.
  • Likewise, “(follow / block / mute) (someone)” normally requires to put the “someone” in the accusative case, and while it’s easy to do so with regular nouns, it is not so easy with proper names, unless they are already Esperanto words. If someone’s name is Karlo, I can write “Sekvi Karlon”, but “Sekvi Charlesn” wouldn’t work. Much like the Russian translation, it is usually resolved by saying “Sekvi uzanton Charles” or even avoiding mentioning the display name at all, if possible.
  • And yes, lack of screenshots and proper context is a problem. A simple word like “Post” can mean both “a message” or “to publish a message”, and it is not always clear whether each individual string is a dialog box title, a button command (infinitive verb), an advice to the user (imperative verb) or (worst case) reused in several instances.
2 Likes