This package helps to transform resources to be used in a typesafe i18next project.
Source can be loaded via npm.
# npm package
$ npm install -D i18next-resources-for-ts
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;
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'
// }
// }
// }
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'
}
}
}
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;
# 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
# -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
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")
Make sure your folder structure contains all relevant namespaces (in your source/reference language):
└── namespace.json
or
└── namespace.yml
or
└── namespace.yaml
i.e.
├── translation.json
└── common.json
or
├── translation.yml
└── common.yml
or
├── translation.yaml
└── common.yaml
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.