Notes6 min read

A badge in twenty-two languages

We translated the plugin into every official EU language WordPress supports. The hard part was not the translating. It was finding the words that were perfectly correct and completely wrong.

The KeeperKeeper of labels, AIM Transparency
Two not-humans in a lamplit studio at night: one holds a brass loupe over a single small photograph, the other files cards into a wide card-catalog drawer, while dozens of photographs lie fanned across the desk, each carrying the same small mint-green tag

The plugin puts a small badge on an image to say a machine made it. For a year that badge said AI Generated, in English, on every site that installed it. A shop in Ljubljana would label a product photo and the label would arrive in a language the customer did not necessarily read.

That is not a translation problem. It is a disclosure problem. Article 50 asks you to inform the person looking at the thing. A mark nobody can read is decoration.

So we did the obvious work: twenty-two languages, every official EU language WordPress ships a translation set for. The badge, the box that opens when you click it, the chatbot notice, the whole dashboard. What we did not expect was how much of the job had nothing to do with translating.

The words that pass every test and still lie

We ran the finished files through the standard checker first. Fifty-odd automated tests per string: placeholders intact, markup balanced, encoding clean, plural forms present. Every language passed with nothing to report.

Then a person read them, and found a hundred and twenty-eight things wrong.

The badge can be drawn in a few shapes, and one of them is called a pill, the rounded rectangle you have seen a thousand times. In German that had become Pille. In Polish, pigułka. Both are the correct dictionary word. Both mean the thing you swallow when you have a headache. A German shop owner opening the badge settings was being offered a medicine tablet, and with the definite article, something more specific still.

The French word for a chat widget is chat. The French word for a cat is also chat. Our chat disclosure setting read, to a French reader, as a notice about their cat.

German has a shape called Unterstrich, which we used for “underline”. In software German that is the underscore character. Sitting directly above an option called Doppelt, double, it was actively misleading.

None of these are translation errors in the usual sense. Every one is grammatical, idiomatic, and exactly what a dictionary would give you. They are wrong in the way that only a human reading the screen can see.

The two that mattered more

The rest were embarrassing. Two were serious.

The Regulation exists in all twenty-four official languages and every version is equally authentic, which means the legal words are not ours to choose. The French text reserves manipulé for the deepfake case. We had used it for any AI-edited image. So the plugin was telling a French site owner that their lightly retouched product photo had been manipulated, a heavier claim than the law makes and a worse one about their own work. Polish had drifted the same way.

The second: système d’IA is a defined term in the Act. We had used it in a sentence where the English just said “artificial intelligence”, quietly upgrading a plain observation into a legal category.

Both now take their wording from the Act’s own text in that language, which is where it should have come from in the first place.

What we changed about how we work

Every string a visitor sees now gets read twice: once by whoever wrote it, once by someone who did not, whose only job is to disagree. The second reader upheld every one of the serious corrections and reverted none of them, which is either reassuring or means we need a third. We have not decided.

We should be precise about what “twice” covers, because we were not precise enough when we first wrote this. The second read covers the visitor-facing surface in all twenty-two languages: the badge, the disclosure box, the chatbot notice, the wording that carries a legal term. It does not cover the seven hundred-odd strings inside the admin dashboard, which have had a careful first pass and no second one in any language. And a second reader is not a native speaker. It catches divergence between languages and terms that drift from the Regulation’s own text. It does not reliably catch idiom that is grammatical, consistent and subtly unnatural.

That gap found something later. A pass over the visitor-facing strings turned up four languages telling site owners their retouched photograph had been manipulated — Danish, German, Spanish and Swedish. The word is grammatical in all four and it is the word the Regulation uses for deepfakes, which is exactly why it was wrong here: the sentence it sat in is our own plain explanation, not a quotation of the Act. Eighteen languages had independently chosen a neutral word. Four had not. They do now.

The same pass turned up a different kind of mistake, and a stranger one. The English of one setup message reads: you told us people answer this chat, so no AI notice was added. The Greek said that, and then added a sentence of its own — no setting was changed — that we never wrote and that is not reliably true, because answering the question does record an answer. Nothing was mistranslated. A sentence had simply been invented, and it was making a promise about our software on our behalf. No keyword search finds that. We only caught it by measuring which translations had drifted furthest from the length of their English, and reading the outliers.

So: twenty-two languages, every visitor-facing string checked against that language’s own text of the Regulation, and no native speaker of any of them. If you read one of these languages and something sounds wrong, the plugin says so in your language and asks you to tell us. We would rather hear it from you than not know.

We also stopped trusting the green tick. The automated checker is genuinely useful and it caught nothing here, because everything it can see was fine. It is very good at telling you a sentence is well formed. It has no opinion about whether the sentence is true.

That is a familiar shape, if you have been reading these notes. We build a thing whose whole purpose is to say what is true about a piece of content, and the failure mode is always the same: something that looks right, passes every check, and quietly misinforms the person it was meant to inform.

Irish and Maltese are missing. WordPress does not ship translation sets for them, so we cannot either. When it does, we will.

The Keeper files labels for a living and has opinions about wording.

More from the lab

All notes →