Product Recall

Building a Multilingual Product Recall Portal, Down to the Dialect

A recall that crosses borders is not one recall translated. It is a set of locales, each with its own vocabulary, number format, plural rules and legal duty, and getting the variant wrong sends an affected consumer away.

A recall that crosses borders is not one recall in several languages. It is several recalls that share a defect, and the consumer-facing website is where that distinction becomes expensive. The remedy differs by market, the regulator differs, the legally required wording differs, and the language a consumer reads is not a language at all. It is a locale: a language plus a region, and sometimes a script.

This is the part clients underestimate most. "We need it in Spanish" is not a requirement. Spanish for Mexico and Spanish for Spain disagree on the word for a tyre, on where the decimal point goes, and on which day the week starts. If your lookup asks a consumer to type a quantity or read a date code, those disagreements decide whether they get the right answer.

The failure mode is not a mistranslation someone laughs at on social media. It is an affected consumer reading a correct sentence, concluding their product is not in scope, and keeping it. That is a safety failure produced by a locale bug.

Start from the legal duty, not the traffic

Which languages you must publish is usually settled by law before marketing gets an opinion. The obligations are concrete and they differ by market.

  • European Union. The General Product Safety Regulation, in force since 13 December 2024, requires clear instructions and safety information "in a language which can be easily understood by consumers, as determined by the Member State in which the product is made available on the market" (Article 9(7)). Sell into eleven member states and you owe eleven language decisions, drawn from the EU's 24 official languages.
  • EU recall notice wording. Article 36(3) requires the notice to describe the risk clearly and to avoid "any terms, expressions or other elements that may decrease consumers' perception of the risk". Words like voluntary and precautionary are the usual offenders. Recital 87 gives the reason: roughly one third of consumers keep using a dangerous product after seeing a recall notice, partly because notices are complex or play the risk down. Implementing Regulation (EU) 2024/1435 supplies an optional notice template.
  • United States, vehicles. 49 CFR 577.5(a) states that notification sent to an owner whose address is in Puerto Rico "shall be written in both English and Spanish". That is the only federal language mandate in the part. Everything else you do in Spanish is voluntary and, given the population, advisable.
  • Quebec. Under the Charter of the French Language as amended by Bill 96, commercial web content directed at Quebec must be available in French, and that duty does not depend on headcount. Fines run from $3,000 to $30,000 for a business, with higher amounts for repeat offences.
  • India. The Legal Metrology (Packaged Commodities) Rules require mandatory declarations in English or Hindi, with most states expecting the local language as well, drawn from the 22 languages in the Eighth Schedule.

Write the language list down before design starts, with the legal basis next to each entry. On a recall the schedule is set by a press release, and discovering a mandatory language at hour 14 is how launches slip.

Who you are actually leaving out

In the United States the Census Bureau's American Community Survey for 2017 to 2021 found that more than one in five people aged five and over, 22%, speak a language other than English at home, across more than 500 languages and language groups. About 61% of them speak Spanish. Of everyone who speaks another language at home, 62% also speak English very well, which means roughly 38% do not.

That last group is the one a recall loses. They are reachable, they are not exotic, and an English-only portal converts them into contact-centre calls at best and unremedied products at worst.

Language is not the unit. Locale is.

The identifier you build around is a BCP 47 language tag: a language subtag, optionally a script, optionally a region. es is Spanish. es-MX is Spanish as used in Mexico. zh-Hant-HK is Chinese in traditional script as used in Hong Kong. Get this taxonomy right and the rest of the system has somewhere to hang.

What surprises most teams is the fallback. When a string is missing, resolution does not simply chop off the region. Unicode CLDR defines explicit parent locales, and reading the supplemental data directly shows how far that goes: es-419, Latin American Spanish, is the declared parent of 23 locales including es-MX and es-AR. en-001, world English, parents 86. pt-PT parents 11 African and Asian Portuguese locales, because plain pt carries Brazilian data. Macau traditional Chinese inherits from Hong Kong, not Taiwan.

Diagram of three locale fallback chains: es-MX to es-419 to es to root; pt-AO to pt-PT to pt to root; zh-Hant-MO to zh-Hant-HK to zh-Hant to root
The middle step in each chain is the one home-grown translation systems skip, which is why a missing Mexican string silently arrives from Spain.

The practical consequence: if a Mexican string is missing, a correct system serves the Latin American one, and only then the Spanish one. A naive system jumps straight to Spain. The consumer gets a sentence that is grammatical, regionally wrong, and quietly less trustworthy at the exact moment you need to be believed.

Dialect is not decoration, it is comprehension

On a recall portal the words that vary by region are precisely the words that identify the product and the remedy. This is not stylistic preference. A consumer scanning for the part named in the notice will not find it under another region's noun.

LanguageVariants that divergeExample that matters on a recall
Spanishes-ES, es-MX, es-AR and the es-419 groupingA tyre is neumático in Spain, llanta in Mexico, goma in Argentina. In Spain llanta means the rim, so the Mexican word names a different component. Brake pads are pastillas de freno in Spain and balatas in Mexico; the bonnet is capó or, in Mexico, cofre.
Portuguesept-BR and pt-PTThe 1990 Orthographic Agreement raised shared spelling to about 98% of common vocabulary but kept two standards. Everyday nouns still split, and pt-PT is the CLDR parent for African Portuguese, so Brazilian copy is the wrong default for Angola or Mozambique.
Chinesezh-Hans, zh-Hant-TW, zh-Hant-HKNot a script conversion. Simplified 发 maps to either 髮 (hair) or 發 (develop). Everyday nouns differ between Taiwan and the mainland, and Hong Kong uses Cantonese-influenced forms that Taiwan does not.
Germande-DE, de-AT, de-CHSwiss Standard German does not use ß at all; it writes ss everywhere, so Strasse is correct and not a typo. Search and exact-match validation must treat ß and ss as equivalent or Swiss consumers fail lookups.
Frenchfr-FR, fr-CA, fr-BEQuebec French is regulated, not merely preferred. Terminology follows Quebec norms, and the legal duty to publish in French applies to commercial web content aimed at Quebec.
Arabicar with regional conventions, plus script directionModern Standard Arabic is the safe register for a notice, but digits are not settled: our measurements show ar-EG rendering numerals as ١٢٣ while ar-MA renders 123. The same language, two digit systems.
Englishen-US, en-GB and the en-001 groupingBonnet and boot against hood and trunk. A US recall notice describing a "trunk latch" reads as luggage to a British owner.
Regional vocabulary is where a recall lookup loses people. Every row above changes a noun a consumer is scanning for.

The number and date traps, measured

Formatting is where dialect stops being a translation question and becomes a data-integrity question. We ran the locale data directly through Node's Intl formatters, which are backed by the same ICU and CLDR data browsers use, and printed the same value and the same date in each locale.

Locale1234567.89 renders as3 April 2026 renders asWeek starts
es-ES1.234.567,893/4/2026Monday
es-MX1,234,567.893/4/2026Sunday
es-AR1.234.567,893/4/2026Monday
pt-BR1.234.567,8903/04/2026Sunday
pt-PT1 234 567,8903/04/2026Sunday
de-DE1.234.567,893.4.2026Monday
de-CH1'234'567.893.4.2026Monday
fr-FR1 234 567,8903/04/2026Monday
fr-CA1 234 567,892026-04-03Sunday
en-US1,234,567.894/3/2026Sunday
en-GB1,234,567.8903/04/2026Monday
ar-EG١٬٢٣٤٬٥٦٧٫٨٩٣/٤/٢٠٢٦Saturday
Measured with Node.js Intl.NumberFormat, Intl.DateTimeFormat and Intl.Locale getWeekInfo on 8 September 2026. Read the Spanish rows and the German rows against each other.

Two results deserve to be stared at. Within Spanish, es-MX groups with commas and marks decimals with a dot, while es-ES and es-AR do the exact opposite. Within German, de-CH groups with an apostrophe and marks decimals with a dot, while de-DE uses a dot for grouping and a comma for decimals. So a reimbursement rendered as "1.500" means one thousand five hundred in Madrid and one and a half in Mexico City. If a consumer types that figure back into a claim form, you have created a hundredfold error inside a safety programme.

Dates are worse, because recall eligibility often depends on them. A lot code or a production window written all in numbers is ambiguous whenever both numbers are twelve or lower. Enumerate the combinations and 132 of the 144 flip meaning depending on whether the market writes the day or the month first.

A twelve by twelve grid where 132 of 144 squares are filled, showing that only the 12 squares where both numbers match read the same in day-first and month-first markets
Only the diagonal is safe. Everywhere else, the same string names two different dates, one of which may be inside the recalled range.

The fix is not clever parsing. It is refusing to be ambiguous: show the month as a word in the consumer's language, accept structured input with separate day and month fields or a locale-correct date picker, echo the interpreted date back in words before submission, and store everything in ISO 8601. A recall portal should never make a consumer guess which convention the form is using.

Plurals, and the string files that quietly lie

"1 product affected" and "3 products affected" is a two-form model, and it is English's model. Unicode CLDR defines six plural categories: zero, one, two, few, many and other. How many a language actually uses varies, and we measured it rather than assumed it.

Bar chart of distinct plural categories by language: Japanese, Chinese and Korean 1; English, French, German and Spanish 2; Polish, Russian and Czech 4; Arabic and Welsh 6
Counted with Intl.PluralRules over integers 0 to 200 plus fractions. A two-form string file is wrong in Warsaw, Moscow and Cairo.

Polish and Russian need four forms; Arabic and Welsh need all six. A string file with only a singular and a plural does not error. It silently picks one and reads wrong to a native speaker, which on a recall notice reads as a machine wrote it, which is exactly the impression that depresses response. Use ICU message format, let the library choose the category, and never build a sentence by concatenating a number to a noun.

Right-to-left is a layout change, not a text change

Arabic, Hebrew and Persian markets need dir="rtl" on the document, not a CSS text alignment. Set that and flexbox and grid flow correctly on their own, and logical CSS properties such as margin-inline-start do the rest.

  • Mirror directional things: progress rails, back and next controls, carets and sliders. Do not mirror non-directional icons such as a magnifying glass, an envelope or a warning triangle.
  • Numbers, VINs, serials and phone numbers still read left to right inside a right-to-left sentence. Forcing direction onto them scrambles the very identifier the consumer is checking.
  • Test with real strings, not lorem ipsum. Bidirectional bugs appear only where scripts meet, which on a recall portal is exactly where a Latin-script serial sits inside an Arabic sentence.

Layout has to survive translation

Translated text is usually longer. French and Spanish typically run 15% to 30% longer than English, and German and Finnish can exceed 35%. On a recall portal the casualties are predictable: the eligibility result banner, the remedy selector, and the button that starts the claim. Build with content-sized containers rather than fixed widths, avoid text baked into images because it cannot be translated or read by a screen reader, and run pseudo-localisation before translations arrive so the layout is already proven against long strings and accented characters.

Fonts deserve the same care. A typeface that carries your brand in Latin may have no Greek, Cyrillic, Arabic or CJK coverage at all, and the browser fallback will not match. Confirm coverage per script, and check line breaking for languages such as Thai that do not use spaces between words.

Accessibility ties the languages together

Two WCAG criteria exist precisely for this. 3.1.1 Language of Page, a Level A requirement, means the lang attribute on the html element must carry the correct BCP 47 tag, because that is how a screen reader picks its pronunciation rules and voice. 3.1.2 Language of Parts, Level AA, means any passage in a different language is marked with its own lang. On a recall portal that applies to the language switcher itself, which should name each language in that language, and to any untranslated legal phrase left in the original.

Get this wrong and an Arabic page declared as English is read aloud as gibberish, which for a screen-reader user is indistinguishable from the site being broken. It is also the cheapest defect on this list to fix.

Serving the right version, and letting search find it

Give every locale a stable URL. Subdirectories such as /es-mx/ are the simplest thing that works and the easiest to stand up quickly on a recall timeline. Then set expectations correctly on both sides.

  • Negotiate with the Accept-Language header using the lookup algorithm in RFC 4647, which returns a single best tag rather than a set. Falling back through the CLDR parent chain is what makes a request for es-CR land on Latin American Spanish instead of Spain.
  • Never hard-redirect on detection alone. Offer the detected locale, show a visible switcher, and remember the choice. A consumer travelling abroad or using a work laptop must still be able to reach their own language.
  • Use hreflang across the set. Google requires the annotations to be reciprocal, every version must list itself as well as all others, and an x-default should point at the selector or the neutral version for users who match nothing.
  • Provide a catch-all for a language when you serve several regions of it, which is exactly what es alongside es-MX and es-AR is for.

Translation quality control on a safety deadline

Machine translation is fast, and on a recall it is genuinely useful for the first pass and for the long tail of interface strings. It is not sufficient on its own for safety copy. A US health agency review of the literature found error rates "unacceptable for actual deployment in health settings", and research on clinical machine translation found physicians using back-translation correctly rejected inadequate output 94.3% of the time, against 53.5% using quality-estimation scores.

The workflow that survives an announcement deadline looks like this.

  • Write the source copy for translation: short sentences, one idea each, no idioms, no wordplay, and no sentences assembled from fragments at runtime.
  • Machine translate for speed, then have a human linguist post-edit every string a consumer relies on to decide whether they are affected or how to claim.
  • Back-translate the safety-critical strings, the eligibility results and the remedy instructions, and read the back-translation against the source. It is the cheapest way to catch a reversal of meaning.
  • Have your in-market team review, not just any native speaker. They will catch the regional noun and the wording legal will not accept.
  • Check the EU wording constraint in every language, because a risk-minimising word can enter during translation even when the English was compliant.
  • Freeze a glossary of product names, identifier names and remedy terms per locale, and keep it as the source of truth for the notice, the portal, the emails and the contact-centre scripts.

A recall notice that reads as though nobody who speaks the language checked it is a recall notice consumers discount.

Dude Lemon delivery guideline

What we build into a multilingual recall portal

On RecallPilot the multilingual layer is part of the platform rather than a per-project bolt-on, because a recall that expands into a new market cannot wait for a rebuild. Every market runs in its own language with locale-correct dates, addresses, phone formats and units, reviewed by the client's local teams before launch, and the EU and US deployments are independent so European consumer data stays in European infrastructure.

  • Locale-aware eligibility lookup, so a date-coded lot entered by a Mexican consumer is interpreted the way a Mexican consumer wrote it.
  • Conditional form logic keyed on market and language, because the fields a recall must collect differ by jurisdiction.
  • Notification templates per market and language across email, SMS and postal waves, so the channel copy and the portal copy cannot drift apart.
  • WCAG 2.2 AA across the whole journey in every language, including correct lang declarations and a switcher that is reachable by keyboard.
  • Expansion as configuration: an added language or market goes live in hours, not as a new project at the worst possible moment.

Frequently asked questions

How many languages does a product recall portal need?

As many as the markets you sold into require by law, which in the EU means the official language of each member state where the product was made available. Start from the legal list, then add languages your affected population actually speaks, such as Spanish across the United States, where 22% of people aged five and over speak a language other than English at home.

What is the difference between a language and a locale on a recall site?

A language is Spanish. A locale is Spanish as used in a specific place, written as a BCP 47 tag such as es-MX. The locale carries vocabulary, number and date formats, plural rules and week conventions. Recall eligibility often depends on a date or a quantity, so the locale, not the language, is the correct unit to build around.

Do dialects really matter, or is one Spanish version enough?

They matter where the words identify the product. A tyre is neumático in Spain, llanta in Mexico and goma in Argentina, and in Spain llanta means the rim instead. Formats diverge too: es-MX writes 1,234,567.89 while es-ES writes 1.234.567,89. A consumer who cannot find their part, or who misreads a figure, does not complete the remedy.

Can we use machine translation for a recall notice?

Use it for the first pass and for interface strings, then have a human linguist post-edit anything a consumer relies on to decide whether they are affected or how to claim, and back-translate the safety-critical strings. Reviews of machine translation in health settings have found unedited error rates too high for deployment.

How do you handle right-to-left languages on a recall portal?

Set dir="rtl" on the document rather than realigning text, mirror directional controls but not neutral icons, and leave identifiers such as VINs, serial numbers and phone numbers reading left to right inside right-to-left sentences. Test with real Arabic or Hebrew strings, because bidirectional bugs only appear where the two scripts meet.

How quickly can a multilingual recall portal go live?

RecallPilot commits to a production portal on the client domain in under 24 hours once approved recall copy, affected-product data, decision rules, languages and DNS access are supplied. Translation turnaround is usually the constraint, which is why the language list and the glossary should be settled before an incident rather than during one.

If a recall in front of you crosses borders, the language list is worth settling this week rather than during the announcement. The capability set is on the RecallPilot page, the build itself is described in how we ship a recall portal in under 24 hours, and the surrounding programme is covered by the recall plan template and checklist. For a platform comparison, read the best recall management software in 2026.

Need help building this?

Let our team build it for you.

Dude Lemon builds production-grade web apps, APIs, and cloud infrastructure. Get a free consultation and project proposal within 48 hours.

Start a Project

Related articles

View all articles →