Skip to content

Proofreading a translation

Stefan Wintermeyer edited this page Aug 27, 2026 · 1 revision

Proofreading a translation

vutuv's interface is available in English, German and Italian. Nearly all of that text lives in a handful of plain text files per language, and you can read them in the browser without installing anything.

The files for one language

Each language has a two-letter code: en English, de German, it Italian. Put the code into the paths below and you have that language's files. Italian, as the example:

File What is in it Entries
priv/gettext/it/LC_MESSAGES/default.po Everything on screen: buttons, labels, menus, confirmations 3,965
priv/gettext/it/LC_MESSAGES/errors.po Form validation messages ("can't be blank") 69

Both files are sorted alphabetically by the English original, so the browser's find-in-page is a good enough index.

Reading an entry

#: lib/vutuv_web/controllers/address_controller.ex:57
#, elixir-autogen
msgid "Address created successfully."
msgstr "Indirizzo creato."
  • msgid is the English original. It doubles as the lookup key, so it must stay exactly as it is.
  • msgstr is the translation, and usually the only line a correction changes.
  • The #: lines name the file the string is rendered in. They are often the only clue about context, so read them when a word could go two ways.

Four things worth knowing before you flag something:

Plurals carry two translations.

msgid "%{count} month"
msgid_plural "%{count} months"
msgstr[0] "%{count} mese"
msgstr[1] "%{count} mesi"

Placeholders are filled in at runtime. %{count}, %{name}, %{date} and their siblings must survive verbatim. Moving one inside the sentence is fine; renaming, translating or inventing one is not, because a placeholder the code does not supply makes the whole string fall back to English.

An empty-looking msgstr "" is usually not empty. A translation longer than one line is written as an empty first line plus indented pieces that get glued together:

msgid "It doesn't look like you're following anyone yet. …"
msgstr ""
"Sembra che non segua ancora nessuno. Cerchi il profilo di una persona che "
"conosce, o che La incuriosisce, e prema il pulsante «Segui»."

A genuinely empty one is not a crash; it shows the English sentence on screen.

A fuzzy flag means a machine guessed. The line reads #, elixir-autogen, elixir-format, fuzzy, and the guess is frequently a different string altogether. German and Italian are fuzzy-free today, so any you find is fresh and unreviewed.

Emails

Message bodies are not in the catalogs. Every mail has two files per language saying the same thing, so a correction usually belongs in both:

  • lib/vutuv_web/templates/email/<name>_it.text.eex for the plain text part
  • lib/vutuv_web/templates/email_body/<name>_it.html.heex for the HTML part

Anything inside <%= … %> is code and stays untouched. Italian has 28 such pairs plus a signature file, _signature_it.text.eex.

Two help pages sit outside all of this and are ordinary Markdown: priv/help/markdown_it.md and priv/help/mastodon_it.md.

Seeing a string in context

The fastest way to judge wording is on the site. Set your browser's preferred language to Italian, or sign in and pick the language under Settings → Preferences (/settings/preferences). Appending ?lang=it to a URL does nothing for a normal web page; the browser's own header decides.

What is deliberately not translated

  • The legal pages. Impressum, privacy policy and terms are written by whoever runs the installation and stay in their language.
  • What members write. Posts are translated on demand by a model, never by us.
  • A few operator mails. They never reach a member and are German only.
  • English itself. The en catalog has empty translations on purpose, because English is the msgid. Fixing an English wording means changing the source code, so report those instead of editing priv/gettext/en/.

Sending a correction

With a GitHub account: open the file, click the pencil icon, change the msgstr lines, and GitHub walks you through the pull request. Leave every msgid alone and keep one language per pull request. If you would rather not touch the file, open an issue with the English original and your better wording.

Without a GitHub account: mail the corrections to sw@wintermeyer-consulting.de. Name the language, quote the English original (the msgid, or a screenshot of the page it appears on) and give the sentence as it should read. A plain list in a plain mail is genuinely welcome, and none of the machinery above is required.

Clone this wiki locally