# fallback agent served english strings for translated locales silently

## TL;DR

Fixes the fallback agent hiding missing translations by silently serving English. Log every fallback so missing translations surface in QA. Use when translated locales show English with no warning. Not for intentional fallback.

## The error

```text
German UI shows English strings in several places with no missing-translation warning anywhere.
```

## Fix it

### Step 1: Find where fallback fires

```bash
node -e "console.log('instrument the lookup to log each fallback with the key and locale')"
```

Expected: You see exactly which keys fall back.

### Step 2: Decide per key: translate or accept

```bash
node -e "console.log('send real gaps to translation, allowlist intentional fallbacks')"
```

Expected: Every fallback is either fixed or explicitly accepted.

### Step 3: Keep the logging on in QA

```bash
node -e "console.log('confirm the next QA run reports fallbacks instead of hiding them')"
```

Expected: Missing translations surface before release.

## When to use this

- A translated locale shows English with no warning
- Fallbacks are invisible in logs

## When NOT to use this

- Fallback is intentional for a brand term, allowlist it
- The string is missing in every locale, add it to the source

## Tool and version compatibility

- i18next, vue-i18n, and FormatJS fallback chains
- Any lookup with silent fallback

## Variant phrasings

### fallback to English in one component only

That component has its own lookup config. Align it with the global one.

### fallback fires for brand names

Brand terms are intentionally untranslated. Allowlist them so the log stays clean.

## Why it happens

Silent fallback is a good runtime behavior and a terrible QA behavior. It keeps the UI working while hiding the fact that translations are missing, so the gaps ship release after release.

## Edge cases

- Fallback chains can cascade through several locales; log the whole chain
- Pseudo-locale testing makes fallbacks visible as unexpanded text
- Some keys legitimately exist only in the source language

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_sHqQ5I0ouXQb0F3U6MxWXA
