# i18next-resources-for-ts

> This package helps to transform resources to be used in a typesafe i18next project.

Latest version **2.1.1** (published 2026-09-24) · MIT license · 0 weekly downloads

## Install

```sh
npm install i18next-resources-for-ts
pnpm add i18next-resources-for-ts
yarn add i18next-resources-for-ts
bun add i18next-resources-for-ts
```

Provides the command `i18next-resources-for-ts`.

## Health

**Score 70/100 (B)** — status: active.

Positive: has types; esm support; no vulnerabilities; recently updated; high maintenance score; high quality score.

Warnings: low downloads.

## Facts

| | |
|---|---|
| Version | 2.1.1 |
| Published | 2026-09-24 |
| First published | 2023-06-12 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 4 |
| Unpacked size | 57.5 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 54 |
| Maintainers | adrai, jamuhl |
| Keywords | i18next, typescript |

## Links

- npm: https://www.npmjs.com/package/i18next-resources-for-ts
- Repository: https://github.com/i18next/i18next-resources-for-ts
- Issues: https://github.com/i18next/i18next-resources-for-ts/issues
- npm.io page: https://npm.io/package/i18next-resources-for-ts

## Dependencies (4)

- [yaml](https://npm.io/package/yaml.md) ^2.8.2
- [chokidar](https://npm.io/package/chokidar.md) ^5.0.0
- [@swc/core](https://npm.io/package/@swc/core.md) ^1.15.18
- [@babel/runtime](https://npm.io/package/@babel/runtime.md) ^7.28.6

## Alternatives

- [@openai/codex-sdk](https://npm.io/package/@openai/codex-sdk.md) — 731.4K weekly downloads
- [babel-plugin-transform-react-jsx](https://npm.io/package/babel-plugin-transform-react-jsx.md) — 565.0K weekly downloads
- [babel-helper-remove-or-void](https://npm.io/package/babel-helper-remove-or-void.md) — 508.5K weekly downloads
- [@pnpm/store-controller-types](https://npm.io/package/@pnpm/store-controller-types.md) — 186.9K weekly downloads
- [react-native-signature-canvas](https://npm.io/package/react-native-signature-canvas.md) — 155.6K weekly downloads

## Recent versions

- 2.1.1 (latest) — 2026-09-24
- 2.1.0 — 2026-04-17
- 2.0.2 — 2026-03-16
- 2.0.1 — 2026-03-10
- 2.0.0 — 2025-12-11
- 1.9.0 — 2025-12-05
- 1.8.0 — 2025-11-17
- 1.7.4 — 2025-09-04
- 1.7.3 — 2025-09-04
- 1.7.2 — 2025-09-04
- 1.7.1 — 2025-08-29
- 1.7.0 — 2025-08-28
- 1.6.0 — 2025-04-08
- 1.5.0 — 2024-01-08
- 1.4.0 — 2023-11-10
- … 10 more at https://npm.io/package/i18next-resources-for-ts/versions

## README

# Introduction

[![Actions](https://github.com/i18next/i18next-resources-for-ts/workflows/node/badge.svg)](https://github.com/i18next/i18next-resources-for-ts/actions?query=workflow%3Anode)
[![npm version](https://img.shields.io/npm/v/i18next-resources-for-ts.svg?style=flat-square)](https://www.npmjs.com/package/i18next-resources-for-ts)

This package helps to transform resources to be used in a typesafe i18next project.

# Getting started

Source can be loaded via [npm](https://www.npmjs.com/package/i18next-resources-for-ts).

```bash
# npm package
$ npm install -D i18next-resources-for-ts
```

## Usage via code (toc):

```js
import { tocForResources } from 'i18next-resources-for-ts'

const nsA = {
  name: 'nsA',
  path: '/some/path/locales/en/nsA.json'
}
const nsB = {
  name: 'nsB',
  path: '/some/path/locales/en/nsB.json'
}

const toc = tocForResources([nsA, nsB], '/some/path')
// import nsA from './locales/en/nsA.json';
// import nsB from './locales/en/nsB.json';
// 
// const resources = {
//   nsA,
//   nsB
// };
// 
// export default resources;
```

## Usage via code (merge):

```js
import { mergeResources } from 'i18next-resources-for-ts'

const nsA = {
  name: 'nsA',
  resources: {
    k1: 'v1',
    k2: 'v2',
    k3: {
      d3: 'v3'
    }
  }
}
const nsB = {
  name: 'nsB',
  resources: {
    k21: 'v21',
    k22: 'v22',
    k23: {
      d23: 'v23'
    }
  }
}

const merged = mergeResources([nsA, nsB])
// {
//   nsA: {
//     k1: 'v1',
//     k2: 'v2',
//     k3: {
//       d3: 'v3'
//     }
//   },
//   nsB: {
//     k21: 'v21',
//     k22: 'v22',
//     k23: {
//       d23: 'v23'
//     }
//   }
// }
```

## Usage via code (interface):

```js
import { mergeResourcesAsInterface } from 'i18next-resources-for-ts'

const nsA = {
  name: 'nsA',
  resources: {
    k1: 'v1',
    k2: 'v2',
    k3: {
      d3: 'v3'
    }
  }
}
const nsB = {
  name: 'nsB',
  resources: {
    k21: 'v21',
    k22: 'v22',
    k23: {
      d23: 'v23'
    }
  }
}
// you can optionaly provide a second argument, with options:
// { optimize: boolean } - if true (false is default) it will optimize the interface, to be `enableSelector: "optimize"` or `"strict"` compatible (see TypeScript i18next docs)
const definition = mergeResourcesAsInterface([nsA, nsB])
// export default interface Resources {
//   nsA: {
//     k1: 'v1',
//     k2: 'v2',
//     k3: {
//       d3: 'v3'
//     }
//   },
//   nsB: {
//     k21: 'v21',
//     k22: 'v22',
//     k23: {
//       d23: 'v23'
//     }
//   }
// }
```

## Usage via CLI:

```sh
# use it with npx
npx i18next-resources-for-ts subcommand -i /Users/user/my/input -o /Users/user/my/output

# or install it globally
npm install i18next-resources-for-ts -g

# subcommand is either toc or merge or interface
# -i is the input path
# -o is the output path
# if the output path is not provided, it will use the input path as base path for the result file
# when using `interface`, you can also set:
# --optimize will make the output compatible with `enableSelector: "optimize"` or `"strict"` (see TypeScript i18next docs)

i18next-resources-for-ts toc -i /Users/user/my/input -o /Users/user/my/output.ts
i18next-resources-for-ts interface -i /Users/user/my/input -o /Users/user/my/output.d.ts
i18next-resources-for-ts merge -i /Users/user/my/input -o /Users/user/my/output.json
# i18next-resources-for-ts toc /Users/user/my/input -o /Users/user/my/output
# i18next-resources-for-ts toc -o /Users/user/my/output
# i18next-resources-for-ts toc -i /Users/user/my/input
# i18next-resources-for-ts toc
# 
# toc accepts also the optional -cts argument that will automatically convert json to ts files and the optional -d argument that will delete the original json files
# toc and interface accepts also the optional -c argument, that will add a file-level comment on the output file (i.e. -c "This file is generated by i18next-resources-for-ts")
```

## Watch mode

The CLI supports a watch mode that regenerates the requested output when translation files change. Use `-w` or `--watch` with `toc`, `merge` or `interface`.


*Make sure your folder structure contains all relevant namespaces (in your source/reference language):*

```sh
└── namespace.json
```
or
```sh
└── namespace.yml
```
or
```sh
└── namespace.yaml
```
or
```sh
└── namespace.js
```
or
```sh
└── namespace.ts
```

i.e.
```sh
├── translation.json
└── common.json
```
or
```sh
├── translation.yml
└── common.yml
```
or
```sh
├── translation.yaml
└── common.yaml
```
or
```sh
├── translation.ts
└── common.ts
```

### Check these examples to see how to use it:

- [next-i18next](https://github.com/i18next/next-i18next/blob/c419b2be3b4772de17309db474facd6dbeb86888/examples/simple/package.json#L13)
- [next-13-app-dir-i18next-example-ts](https://github.com/i18next/next-13-app-dir-i18next-example-ts/blob/5ae41d390dd61630becf5671fb886d925b42cc10/package.json#L13)
- [react-i18next-example-app-ts](https://github.com/locize/react-i18next-example-app-ts/blob/574531491d7e8a7c67bea1187e2d9c13982d5112/package.json#L35)

---

<h3 align="center">Gold Sponsors</h3>

<p align="center">
  <a href="https://www.locize.com/?utm_source=i18next_resources_for_ts_readme&utm_medium=github&utm_campaign=readme" target="_blank">
    <img src="https://raw.githubusercontent.com/i18next/i18next/master/assets/locize_sponsor_240.gif" width="240px">
  </a>
</p>

---

**From the creators of i18next: localization as a service - locize.com**

A translation management system built around the i18next ecosystem - [locize.com](https://www.locize.com?utm_source=i18next_resources_for_ts_readme&utm_medium=github&utm_campaign=readme).

![locize](https://www.locize.com/img/ads/github_locize.png)

With using [locize](https://www.locize.com/?utm_source=i18next_resources_for_ts_readme&utm_medium=github&utm_campaign=readme) you directly support the future of i18next.

---

---
_Source: https://npm.io/package/i18next-resources-for-ts · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
