A kitchen called Loco Lime is called Loco Lime in every language
We put the whole product into 26 languages and immediately had to answer a harder question: which words are language, and which are somebody’s name? Get it wrong and a guest orders a Beef Taco from a menu that says Taco de Birria.
A guest scans a QR code in a food hall and the menu is in English. Their phone has been asking for Polish since they took it out of the box. Translating the page for them is obvious and worth doing.
What is not obvious is where to stop.
Two kinds of text on the same screen
Every screen in a hospitality system is a mix of two things. There is our copy — Add to order, Out of stock, What did you think? — which exists to be read and should be read in whatever language the reader has. And there is the venue's own data: the kitchen's name, the dish, the section heading somebody typed at four in the afternoon, the street address on the receipt.
A machine translator cannot tell them apart. It sees text.
So a system that translates the page naively will faithfully turn a stall called Loco Lime into whatever "crazy lime" is in Polish, and a guest looking for the sign above the counter will not find it. Worse the other way: a dish named Taco de Birria rendered as Beef Taco is a different order arriving at a different pass.
Where we drew the line
Names are never translated. A venue, a market, a supplier, a person, a street address, an account reference — these come back exactly as they were typed, in every one of the languages we offer.
Dishes and menu sections are translated, but only on the guest menu, because that is the one place where a translation helps somebody decide what to eat. In the back office the same dish keeps its name, because the person looking at it is the person who named it and a report full of translated dish names is a report nobody can reconcile.
It is more work than it sounds
The mechanism is one marker on the element that holds a name. The work is finding every place a name is printed — and there were more than we thought. The obvious ones are the tables: products, recipes, staff, suppliers. The one that cost us most was subtler. Nearly every screen has a sub-heading built from the venue you are looking at:
Transfers
Loco Lime · full audit trail
That is one sentence with a name inside it. Translated as a sentence, it becomes one stored translation per venue, per screen — the corpus grows every time somebody signs up, and it can never be finished. Splitting the sub-heading into "our words" and "their name" was the change that made the whole thing bounded.
One more, once we started looking: a text box you have typed into is a text node like any other. A venue's address, sitting in a form field, was being sent off to be translated and handed back changed. Form fields are the user's own words and are now left alone everywhere.
How to check yours
If you run a hall on a system that offers languages, switch one on and look for your own stalls' names on the vendor grid. If any of them changed, the system cannot tell your data from its own labels, and the menu is the next thing it will get wrong.