# How to Translate All Missing Cells at Once

> Fill every gap across every non-base locale in one pass. Palette-driven, progress-tracked, cancellable.

Source: https://stringlane.app/docs/translate-all-missing
Last updated: 2026-08-19

When your project has gaps in multiple locales and you don't want to click ✨ on every row, run **Translate all missing with AI** from the command palette. One pass fills every empty or copy-paste cell across every non-base locale.

![Translate all missing dialog showing the confirm phase with total count and locale list](/docs-screenshots/translate-all-missing-dialog.webp)

## Opening the dialog

1. Press **⌘P** to open the command palette.
2. Pick **Translate all missing with AI** (or type `translate` to filter).
3. The dialog computes what's missing:
   - Cells where the target locale value is absent, empty, or exactly equal to the base locale value (indicating an untranslated copy-paste).
   - Plural keys where the target locale is missing any quantity the base locale defines. Each is translated with the CLDR-required categories the target is still missing, so an empty Ukrainian key gets `one`, `few`, `many` and `other` from an English `one`/`other` source. Quantities already filled in the target are left alone.

## Phases

- **Checking**, verifying your API key is available.
- **Empty**, if nothing's missing, the dialog shows "All locales up to date" + Dismiss.
- **No key**, if no API key is configured for the provider, routes you to Settings → App → AI Providers.
- **Confirm**: total count + the first five locales involved (or the first five plus "…and N more"). Click **Translate** to start.
- **Translating**: progress bar with running count ("N / M across K locales") + the locale currently being processed. **Cancel** is available between chunks.
- **Done**: summary: `Translated N of M keys. K error(s).` plus the last error message if any chunk failed.

## What happens under the hood

- Runs up to **two locales at a time** (a conservative cap on AI calls in flight), calling `translateKeysBatch` and then `translatePluralKeysBatch` per locale.
- Each successful translation is applied via the normal auto-save path: writes hit your source files with the same format-preserving behaviour as manual edits.
- Canceling between chunks keeps every result written so far. You can always re-run the command to pick up the remaining gaps.
- Failed chunks surface their error messages in the summary so you can retry.

## Related

- [Set up AI translation](/docs/set-up-ai-translation): prerequisite (BYOK provider + API key).
- [Translate individual keys](/docs/translate-individual-keys): the per-cell ✨ flow, still useful for one-off edits.
- [Bulk translate a locale](/docs/bulk-translate-a-locale): focused single-locale bulk flow via the toolbar Translate… menu.
