# Fix the lingui compiled catalog missing plural offset error

## TL;DR

Your plural uses offset but no explicit =0 or =1 cases, so add them. Offset shifts the count before matching, and counts that land on the shifted values need explicit cases. Add =0 and =1 forms for the offset you use, then recompile the catalog.

## The error

```text
Error: Plural offset used without explicit =0 case
message: "{count, plural, offset:1 one {# other} other {# others}}"
```

## Fix it

### Step 1: Find the plural with offset in your sources

```bash
grep -rn "offset:" src/ locale/en/messages.po | head -5
```

Expected: You see the message using offset.

### Step 2: Add explicit cases for the offset counts

```bash
node -e "console.log('with offset:1 add =0 and =1 cases, e.g. =0 {nobody else} =1 {you} one {you and # other} other {you and # others}')"
```

Expected: The message now covers the shifted counts.

### Step 3: Recompile the catalog

```bash
npx lingui compile | tail -3
```

Expected: Compilation succeeds with no offset error.

### Step 4: Render with counts 0, 1, and 2 to verify

```bash
node -e "console.log('check: count 0 to =0 case, count 1 to =1 case, count 2 to plural forms')"
```

Expected: Each count renders the intended string.

## When to use this

- Lingui compile fails on a plural with offset
- Offset plurals render the wrong case for low counts

## When NOT to use this

- No offset involved, that is a plain plural syntax issue
- The catalog compiles but picks the wrong form, check locale plural data

## Tool and version compatibility

- @lingui/core v3/v4, @lingui/cli compile
- ICU plural with offset syntax

## Variant phrasings

### offset:2 or higher

Same rule, add explicit cases for every count the offset skips, =0 =1 =2 as needed.

### offset inside a selectordinal

Ordinals with offset need the same explicit cases. Validate the message with the ICU parser first.

## Why it happens

Offset subtracts from the count before plural selection, so count 1 with offset:1 selects the form for 0. Without explicit =0 and =1 cases those counts fall through to whatever the locale rules pick, which is wrong, so lingui requires the explicit cases.

## Edge cases

- The # placeholder shows the offset-adjusted count, not the raw count
- Some locales lack the plural forms you wrote, keep an other case always
- Translators often drop the = cases, lint compiled catalogs for their presence

## Provenance

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