# How to Use the Command Palette

> Press ⌘P to open one searchable menu for every StringLane action: add keys, translate, jump to a key, toggle panels, open settings.

Source: https://stringlane.app/docs/use-command-palette
Last updated: 2026-08-21

Press **⌘P** anywhere in the editor to open the command palette: one fuzzy-searchable menu with every action in the app.

![Command palette open with the Add key row pre-selected](/docs-screenshots/command-palette-open.webp)

The palette is the fastest way to:

- Add a new key (**Add key…**: the default accent row)
- Jump to any key by name across your whole project
- Run bulk actions: **Translate all missing with AI**, **Generate AI metadata for all keys**
- Reload every locale file from disk after a branch switch, or run **flutter gen-l10n** without leaving the app
- Toggle panels, switch theme, open Settings or the keyboard shortcuts cheatsheet

## How it works

1. Press **⌘P**: modal opens, input focused.
2. Type: the list filters by fuzzy match across action name, hint, and your project's keys.
3. **↑ / ↓**, navigate rows. **↵**, run the selected row. **Esc**: dismiss.

![Command palette filtered by the query translate, showing three Actions rows: Translate all missing with AI, Add key…, and Generate AI metadata for all keys](/docs-screenshots/command-palette-filtered.webp)

## Sections

The palette groups results under section labels that appear only when the section has visible rows:

- **Recent**: the 5 most-recent commands you ran, in reverse chronological order. Appears at the top when you open the palette with an empty query.
- **Actions**: the primary bulk actions — **Add key…**, **Translate all missing with AI**, and **Generate AI metadata for all keys**.
- **View & settings**: **Toggle Issues panel**, switch theme (Light / Dark / System), flip the Issues panel orientation, **Open Settings**.
- **Project**: **Open folder…**, **Close project**, **Reload from disk**, and on Flutter projects **Run flutter gen-l10n**.
- **Jump to key**: one row per key in your project. Fuzzy-matches both the key name and (when you type a value fragment) its translations. Selecting a row loads that key into the detail pane.
- **Help**: Keyboard shortcuts (`?`).

## Running a batch translation from the palette

The **Translate all missing with AI** action walks you through translating every gap across every non-base locale in one go. It:

1. Scans the project for missing keys OR cells where the target value equals the base verbatim (likely untranslated copy-paste).
2. Shows a confirm dialog with the count and the involved locales.
3. Runs `translateKeysBatch` per locale sequentially; you see running progress "N / M across K locales" plus the current locale.
4. Cancel between chunks keeps partial results.
5. Shows a summary with counts + the last error message (if any).

See [Translate all missing](/docs/translate-all-missing) for the full flow, including the no-API-key path.

## Commands that appear conditionally

Some rows are format- or project-dependent, so the palette will not always show them:

| Command | Appears when |
|---|---|
| **Run flutter gen-l10n** | The project is ARB *and* has an `l10n.yaml` at its root. |
| **Reload from disk** / **Close project** | A project is open. See [Reload from Disk](/docs/reload-from-disk). |
| **Generate AI metadata for all keys** | A project is open — on every format. See [How to Add Key Descriptions and Limits on Any Format](/docs/annotate-keys-any-format). |

**Generate AI metadata for all keys** used to be ARB-only. It now runs on `.xcstrings`, `.strings`, Android XML and i18next JSON as well, filling in descriptions; on ARB it fills placeholder types too.

## Rebinding ⌘P

The palette trigger is rebindable: **Settings → App → Keybindings** → click the chord next to **Open command palette** → press your preferred shortcut. See [Customize keybindings](/docs/customize-keybindings).
