This package helps to transform resources to be used in a typesafe i18next project.
npm install i18next-resources-for-ts

This package helps to transform resources to be used in a typesafe i18next project.
Source can be loaded via npm.
``bash`npm package
$ npm install -D i18next-resources-for-ts
`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;
`
`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'
// }
// }
// }
`
`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" compatible (see TypeScript i18next docs)
const definition = mergeResourcesAsInterface([nsA, nsB])
// interface Resources {
// nsA: {
// k1: 'v1',
// k2: 'v2',
// k3: {
// d3: 'v3'
// }
// },
// nsB: {
// k21: 'v21',
// k22: 'v22',
// k23: {
// d23: 'v23'
// }
// }
// }
// export default Resources;
`
`shuse it with npx
npx i18next-resources-for-ts subcommand -i /Users/user/my/input -o /Users/user/my/output
, you can also set: (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
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
``- next-i18next
- next-13-app-dir-i18next-example-ts
- react-i18next-example-app-ts
---
---
From the creators of i18next: localization as a service - locize.com
A translation management system built around the i18next ecosystem - locize.com.
With using locize you directly support the future of i18next.
---