# What changed in @inlang/plugin-i18next

> 30 changes in @inlang/plugin-i18next 5 to 6 from its official release notes, upgrade guides and advisories: 6 breaking, 6 new APIs and options. Each one cited. Sources checked 2026-10-25. HTML: https://unstale.sh/npm/@inlang/plugin-i18next/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## @inlang/plugin-i18next 6

### Breaking changes

- Unsupported exact numbers and conflicting forms now fail export with errors that identify the relevant number or key, bundle and locale. (6.4.0) — [release notes](https://github.com/opral/inlang/blob/d41d3bfdfc0aed18e9035a363f949cbd1ed54d3e/packages/plugins/i18next/CHANGELOG.md#640)
- Plugins returning files must also return a file for each previously read file whose messages are no longer present and are not otherwise written. (6.4.0) — [release notes](https://github.com/opral/inlang/blob/d41d3bfdfc0aed18e9035a363f949cbd1ed54d3e/packages/plugins/i18next/CHANGELOG.md#640)
- Functions with options that cannot be exported now fail with an error naming the options, function, variable, bundle and locale. (6.4.0) — [release notes](https://github.com/opral/inlang/blob/d41d3bfdfc0aed18e9035a363f949cbd1ed54d3e/packages/plugins/i18next/CHANGELOG.md#640)
- A pound sign no longer inside a plural exports as {{count, number}}; pound signs with plural offsets fail with an error naming the bundle, locale and offset. (6.4.0) — [release notes](https://github.com/opral/inlang/blob/d41d3bfdfc0aed18e9035a363f949cbd1ed54d3e/packages/plugins/i18next/CHANGELOG.md#640)
- Namespace matching uses the namespace prefix in the bundle id; overlapping matches retain existing messages in the namespace whose files contain them, while new messages use the longer namespace. (6.4.0) — [release notes](https://github.com/opral/inlang/blob/d41d3bfdfc0aed18e9035a363f949cbd1ed54d3e/packages/plugins/i18next/CHANGELOG.md#640)
- Selectors that i18next cannot represent are rejected instead of having their variants silently dropped during export. (6.2.4) — [release notes](https://github.com/opral/inlang/blob/d41d3bfdfc0aed18e9035a363f949cbd1ed54d3e/packages/plugins/i18next/CHANGELOG.md#624)

### New APIs and options

- Add contextValues to resolve ambiguous context suffixes, including single-context resources and values containing underscores. (6.3.0) — [release notes](https://github.com/opral/inlang/blob/d41d3bfdfc0aed18e9035a363f949cbd1ed54d3e/packages/plugins/i18next/CHANGELOG.md#630)
- Mixed cardinal/ordinal MF2 bundles use a pluralType input to preserve lookup behavior. (6.3.0) — [release notes](https://github.com/opral/inlang/blob/d41d3bfdfc0aed18e9035a363f949cbd1ed54d3e/packages/plugins/i18next/CHANGELOG.md#630)
- Ordinal plural keys are parsed as a dedicated selector using Intl.PluralRules with ordinal rules, producing ordinal forms from a plain count input and preserving context-plus-ordinal keys on export. (6.2.0) — [release notes](https://github.com/opral/inlang/blob/d41d3bfdfc0aed18e9035a363f949cbd1ed54d3e/packages/plugins/i18next/CHANGELOG.md#620)
- Adds an optional metadata field, counterpart to ImportFile.toBeImportedFilesMetadata, for plugins to pass information such as an exported file's namespace to the writer. (6.2.0) — [release notes](https://github.com/opral/inlang/blob/d41d3bfdfc0aed18e9035a363f949cbd1ed54d3e/packages/plugins/i18next/CHANGELOG.md#620)

### Performance

- Imports avoid unnecessary parsing and batch unambiguous fresh messages, speeding up imports while preserving message behavior. (6.4.3) — [release notes](https://github.com/opral/inlang/blob/d41d3bfdfc0aed18e9035a363f949cbd1ed54d3e/packages/plugins/i18next/CHANGELOG.md#643)

### Behavior and default changes

- Namespaced pathPattern objects are resolved using ExportFile.metadata.namespace; files without a resolvable namespace fall back to file.name instead of throwing. The i18next plugin supplies namespace metadata for exported files. (6.2.0) — [release notes](https://github.com/opral/inlang/blob/d41d3bfdfc0aed18e9035a363f949cbd1ed54d3e/packages/plugins/i18next/CHANGELOG.md#620)

### Tooling

- The plugin publishes TypeScript declarations and explicit type exports for consumers. (6.3.0) — [release notes](https://github.com/opral/inlang/blob/d41d3bfdfc0aed18e9035a363f949cbd1ed54d3e/packages/plugins/i18next/CHANGELOG.md#630)

### Fixes and other changes

- Suffixes are now read only from the last path segment, fixing bundle IDs for keys whose group names were previously read as contexts or plural suffixes. (6.4.3) — [release notes](https://github.com/opral/inlang/blob/d41d3bfdfc0aed18e9035a363f949cbd1ed54d3e/packages/plugins/i18next/CHANGELOG.md#643)
- Deleting every message from a translation file now persists on disk, while files are kept and entries the plugin does not import are preserved where supported. (6.4.0) — [release notes](https://github.com/opral/inlang/blob/d41d3bfdfc0aed18e9035a363f949cbd1ed54d3e/packages/plugins/i18next/CHANGELOG.md#640)
- The safety check now re-imports kept files in project load order, preventing stale duplicate messages from overriding edits on the next load. (6.4.0) — [release notes](https://github.com/opral/inlang/blob/d41d3bfdfc0aed18e9035a363f949cbd1ed54d3e/packages/plugins/i18next/CHANGELOG.md#640)
- Exact zero values on un-annotated aliases of count export as key_zero, like exact zero values on count itself. (6.4.0) — [release notes](https://github.com/opral/inlang/blob/d41d3bfdfc0aed18e9035a363f949cbd1ed54d3e/packages/plugins/i18next/CHANGELOG.md#640)
- Every locale placeholder in a pathPattern is now replaced when files are read, matching save behavior. (6.4.0) — [release notes](https://github.com/opral/inlang/blob/d41d3bfdfc0aed18e9035a363f949cbd1ed54d3e/packages/plugins/i18next/CHANGELOG.md#640)
- Keys containing colons remain keys rather than being incorrectly split into namespaces when saved; colon-containing namespaces are saved to their own files. (6.4.0) — [release notes](https://github.com/opral/inlang/blob/d41d3bfdfc0aed18e9035a363f949cbd1ed54d3e/packages/plugins/i18next/CHANGELOG.md#640)
- Saving changes only edited, added or removed entries while preserving other entries, ordering and formatting; new keys are inserted after their preceding export key. (6.4.0) — [release notes](https://github.com/opral/inlang/blob/d41d3bfdfc0aed18e9035a363f949cbd1ed54d3e/packages/plugins/i18next/CHANGELOG.md#640)
- Locales written with underscores now resolve their plural rules. (6.4.0) — [release notes](https://github.com/opral/inlang/blob/d41d3bfdfc0aed18e9035a363f949cbd1ed54d3e/packages/plugins/i18next/CHANGELOG.md#640)
- Ordinal zero no longer overwrites cardinal zero on export. (6.3.0) — [release notes](https://github.com/opral/inlang/blob/d41d3bfdfc0aed18e9035a363f949cbd1ed54d3e/packages/plugins/i18next/CHANGELOG.md#630)
- Underscored i18next keys are preserved, and contexts are classified consistently across locales. (6.3.0) — [release notes](https://github.com/opral/inlang/blob/d41d3bfdfc0aed18e9035a363f949cbd1ed54d3e/packages/plugins/i18next/CHANGELOG.md#630)
- Production builds now emit the TypeScript declarations advertised by the package. (6.2.4) — [release notes](https://github.com/opral/inlang/blob/d41d3bfdfc0aed18e9035a363f949cbd1ed54d3e/packages/plugins/i18next/CHANGELOG.md#624)
- Removing the static IDE extension metadata lets Sherlock inject plugin settings into matchers, restoring inline annotations, hovers, and extraction for i18next projects. (6.2.1) — [release notes](https://github.com/opral/inlang/blob/d41d3bfdfc0aed18e9035a363f949cbd1ed54d3e/packages/plugins/i18next/CHANGELOG.md#621)
- Variants without a literal context or plural match, including catchall variants and the base key fallback, serialize back to their base key so imported bundles round-trip. (6.2.0) — [release notes](https://github.com/opral/inlang/blob/d41d3bfdfc0aed18e9035a363f949cbd1ed54d3e/packages/plugins/i18next/CHANGELOG.md#620)
- Imports use explicit catchall matches on base key variants, consistent selectors, and most-specific-first ordering so first-match-wins consumers resolve context as i18next does. (6.2.0) — [release notes](https://github.com/opral/inlang/blob/d41d3bfdfc0aed18e9035a363f949cbd1ed54d3e/packages/plugins/i18next/CHANGELOG.md#620)
- Imports _zero keys with an exact count = 0 match ahead of the plural category, plus the Intl zero-category fallback, so zero translations work in languages that do not select that category. (6.2.0) — [release notes](https://github.com/opral/inlang/blob/d41d3bfdfc0aed18e9035a363f949cbd1ed54d3e/packages/plugins/i18next/CHANGELOG.md#620)

## @inlang/plugin-i18next 5

### New APIs and options

- The i18next plugin adds support for pluralization. (5.0.0) — [release notes](https://github.com/opral/inlang/blob/HEAD/packages/plugins/i18next/CHANGELOG.md)
- The i18next plugin adds support for selectors. (5.0.0) — [release notes](https://github.com/opral/inlang/blob/HEAD/packages/plugins/i18next/CHANGELOG.md)
