Launch Week Day 5: Introducing Reachability for PHP.Learn More
Socket
Book a DemoSign in
Socket

i18next-typescript

Package Overview
Dependencies
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

i18next-typescript - npm Package Compare versions

Comparing version
0.0.1-rc4
to
0.0.1-rc5
+6
example/i18next.keys.ts
export type TranslationKeys =
| 'extractKeys'
| 'typescript'
| 'common:greetings.evening'
| 'common:greetings.morning'
| 'common:greetings.welcome'
## i18next-typescript
Stronger type support for [i18-next](https://github.com/i18next/i18next)
### What does it do?
- Provides a CLI tool to extract all your translations keys, exporting them as a typescipt type definition. Includes support for nested keys and namespaces.
- Provides type definitions to override types like `TFunction` to provide strong type support for translation keys.
### How to use?
```
Usage: i18next-typescript generate|g [options]
Generate type definitions for all your translation keys.
Options:
-i, --in [inFolder] Path to a folder with your translation files
-o, --out [outFile] Path to the output file
--default-namespace [defaultNamespace] Default Namespace in your i18next configuration (default: "translation")
--indent [indent] Indentation level of output file (default: "2")
--type-name [typeName] Exported type name in the generated file (default: "TranslationKeys")
--quote-char [quoteChar] Character to use to quote strings (default: "'")
-c, --config [configFile] Path to config file (default: "i18next-typescript.config.json")
-h, --help display help for command
```
```
Usage: i18next-typescript watch|w [options]
Watch your translation files and generate type definitions for all your translations keys when they change.
Options:
-i, --in [inFolder] Path to a folder with your translation files
-o, --out [outFile] Path to the output file
--default-namespace [defaultNamespace] Default Namespace in your i18next configuration (default: "translation")
--indent [indent] Indentation level of output file (default: "2")
--type-name [typeName] Exported type name in the generated file (default: "TranslationKeys")
--quote-char [quoteChar] Character to use to quote strings (default: "'")
-c, --config [configFile] Path to config file (default: "i18next-typescript.config.json")
-h, --help display help for command
```
While all options can be provided through the command line, it's recommended to use a configuration file like the one below in your root folder:
```json
{
"inFolder": "public/locales/en",
"outFile": "app/src/i18next.keys.ts",
"defaultNs": "translation", // optional
"indent": 2, // optional
"typeName": "TranslationKeys", // optional
"quoteChar": "'" // optional
}
```
To leverage the auto-generated types, override and re-export the `TFunction` and/or `WithT`.
```typescript
// e.g. /app/src/i18next-overrides.ts
import { TypedTFunction } from "i18next-typescript";
import { TranslationKeys } from "./i18next.keys.ts";
export type TFunction = TypedTFunction<TranslationKeys>;
// e.g. /app/src/index.ts
import { TFunction } from "./i18next-overrides.ts";
// calling 't' will now autocomplete and complain if you use a key which doesn't exist
const greeting = (t: TFunction) => t("common:greeting.evening");
```
Run `i18next-typescript` watch to automatically update the auto-generated types whenever you make changes to your translation files.
### Run an example
- Check out this repository
- Install dependencies: `yarn` or `npm install`
- Run the translation file watcher: `yarn example:watch` or `npx run example:watch`
- Change on of the translation files in `example/locales`
- Observe changes to the type definitions in `example/i18next.keys.d.ts`
### Bindings for specific languages
- React: [ react-i18next-typescript ](https://github.com/LFDM/react-i18next-typescript)
+2
-2
{
"inFolder": "example/locales/en",
"outFile": "example/i18next.keys.d.ts",
"outFile": "example/i18next.keys.ts",
"defaultNs": "translation",
"indent": 2,
"typeName": "TranslationKeys",
"quoteChart": "'"
"quoteChar": "'"
}

@@ -33,7 +33,14 @@ #!/usr/bin/env node

});
withOptions(commander.command("generate").alias("g")).action((c) => __awaiter(void 0, void 0, void 0, function* () {
withOptions(commander
.command("generate")
.alias("g")
.description("Generate type definitions for all your translation keys.")).action((c) => __awaiter(void 0, void 0, void 0, function* () {
const options = yield parseOptions(c.opts());
console.log(options);
yield generate_1.generate(options);
}));
withOptions(commander.command("watch").alias("w")).action((c) => __awaiter(void 0, void 0, void 0, function* () {
withOptions(commander
.command("watch")
.alias("w")
.description("Watch your translation files and generate type definitions for all your translations keys when they change.")).action((c) => __awaiter(void 0, void 0, void 0, function* () {
const options = yield parseOptions(c.opts());

@@ -40,0 +47,0 @@ watch_1.watch({ inFolder: options.inFolder }, () => generate_1.generate(options));

@@ -1,1 +0,1 @@

{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,uCAAuC;AACvC,yCAA+C;AAC/C,iCAAkC;AAClC,mCAAgC;AAEhC,MAAM,WAAW,GAAG,CAAC,OAA0B,EAAE,EAAE;IACjD,OAAO,OAAO;SACX,MAAM,CACL,qBAAqB,EACrB,8CAA8C,CAC/C;SACA,MAAM,CAAC,qBAAqB,EAAE,yBAAyB,CAAC;SACxD,MAAM,CACL,wCAAwC,EACxC,iDAAiD,EACjD,aAAa,CACd;SACA,MAAM,CAAC,mBAAmB,EAAE,kCAAkC,EAAE,GAAG,CAAC;SACpE,MAAM,CACL,wBAAwB,EACxB,0CAA0C,EAC1C,iBAAiB,CAClB;SACA,MAAM,CACL,0BAA0B,EAC1B,mCAAmC,EACnC,GAAG,CACJ;SACA,MAAM,CACL,2BAA2B,EAC3B,qBAAqB,EACrB,gCAAgC,CACjC,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAO,IAAS,EAAoB,EAAE;IACzD,MAAM,MAAM,GAAqB,IAAI,CAAC,MAAM;QAC1C,CAAC,CAAC,MAAM,eAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnE,CAAC,CAAC,EAAE,CAAC;IACP,uBACE,QAAQ,EAAE,IAAI,CAAC,EAAE,EACjB,OAAO,EAAE,IAAI,CAAC,GAAG,EACjB,SAAS,EAAE,IAAI,CAAC,mBAAmB,CAAC,EACpC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EACjC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,EAC3B,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,IAC1B,MAAM,EACT;AACJ,CAAC,CAAA,CAAC;AAEF,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAO,CAAC,EAAE,EAAE;IACvE,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7C,MAAM,mBAAQ,CAAC,OAAO,CAAC,CAAC;AAC1B,CAAC,CAAA,CAAC,CAAC;AAEH,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAO,CAAC,EAAE,EAAE;IACpE,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7C,aAAK,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,mBAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACjE,CAAC,CAAA,CAAC,CAAC;AAEH,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,uCAAuC;AACvC,yCAA+C;AAC/C,iCAAkC;AAClC,mCAAgC;AAEhC,MAAM,WAAW,GAAG,CAAC,OAA0B,EAAE,EAAE;IACjD,OAAO,OAAO;SACX,MAAM,CACL,qBAAqB,EACrB,8CAA8C,CAC/C;SACA,MAAM,CAAC,qBAAqB,EAAE,yBAAyB,CAAC;SACxD,MAAM,CACL,wCAAwC,EACxC,iDAAiD,EACjD,aAAa,CACd;SACA,MAAM,CAAC,mBAAmB,EAAE,kCAAkC,EAAE,GAAG,CAAC;SACpE,MAAM,CACL,wBAAwB,EACxB,0CAA0C,EAC1C,iBAAiB,CAClB;SACA,MAAM,CACL,0BAA0B,EAC1B,mCAAmC,EACnC,GAAG,CACJ;SACA,MAAM,CACL,2BAA2B,EAC3B,qBAAqB,EACrB,gCAAgC,CACjC,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAO,IAAS,EAAoB,EAAE;IACzD,MAAM,MAAM,GAAqB,IAAI,CAAC,MAAM;QAC1C,CAAC,CAAC,MAAM,eAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnE,CAAC,CAAC,EAAE,CAAC;IAEP,uBACE,QAAQ,EAAE,IAAI,CAAC,EAAE,EACjB,OAAO,EAAE,IAAI,CAAC,GAAG,EACjB,SAAS,EAAE,IAAI,CAAC,mBAAmB,CAAC,EACpC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,EACjC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,EAC3B,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,IAC1B,MAAM,EACT;AACJ,CAAC,CAAA,CAAC;AAEF,WAAW,CACT,SAAS;KACN,OAAO,CAAC,UAAU,CAAC;KACnB,KAAK,CAAC,GAAG,CAAC;KACV,WAAW,CAAC,0DAA0D,CAAC,CAC3E,CAAC,MAAM,CAAC,CAAO,CAAC,EAAE,EAAE;IACnB,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACrB,MAAM,mBAAQ,CAAC,OAAO,CAAC,CAAC;AAC1B,CAAC,CAAA,CAAC,CAAC;AAEH,WAAW,CACT,SAAS;KACN,OAAO,CAAC,OAAO,CAAC;KAChB,KAAK,CAAC,GAAG,CAAC;KACV,WAAW,CACV,6GAA6G,CAC9G,CACJ,CAAC,MAAM,CAAC,CAAO,CAAC,EAAE,EAAE;IACnB,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7C,aAAK,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,mBAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACjE,CAAC,CAAA,CAAC,CAAC;AAEH,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}

@@ -28,3 +28,3 @@ "use strict";

};
const keysToTs = ({ keys, indent, quoteChar, typeName = "TranslationKey", }) => {
const keysToTs = ({ keys, indent, quoteChar, typeName, }) => {
const whitespace = Array(indent)

@@ -39,3 +39,3 @@ .fill(null)

};
exports.generate = ({ inFolder, outFile, defaultNs = "translation", indent = 2, typeName = "TranslationKey", quoteChar = `'`, }) => __awaiter(void 0, void 0, void 0, function* () {
exports.generate = ({ inFolder, outFile, defaultNs = "translation", indent = 2, typeName = "TranslationKeys", quoteChar = `'`, }) => __awaiter(void 0, void 0, void 0, function* () {
const files = yield util_1.readdir(inFolder);

@@ -42,0 +42,0 @@ const jsonFiles = files.filter((f) => f.endsWith(".json"));

@@ -1,1 +0,1 @@

{"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../src/generate.ts"],"names":[],"mappings":"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"}
{
"name": "i18next-typescript",
"version": "0.0.1-rc4",
"version": "0.0.1-rc5",
"main": "lib/index.js",

@@ -23,3 +23,5 @@ "author": "LFDM <1986gh@gmail.com>",

"dev": "ts-node src/cli.ts",
"prepack": "yarn build"
"prepack": "yarn build",
"example:watch": "yarn dev watch -c example/i18next-typescript.config.json",
"example:generate": "yarn dev generate -c example/i18next-typescript.config.json"
},

@@ -26,0 +28,0 @@ "bin": {

@@ -42,2 +42,3 @@ #!/usr/bin/env node

: {};
return {

@@ -54,8 +55,21 @@ inFolder: opts.in,

withOptions(commander.command("generate").alias("g")).action(async (c) => {
withOptions(
commander
.command("generate")
.alias("g")
.description("Generate type definitions for all your translation keys.")
).action(async (c) => {
const options = await parseOptions(c.opts());
console.log(options);
await generate(options);
});
withOptions(commander.command("watch").alias("w")).action(async (c) => {
withOptions(
commander
.command("watch")
.alias("w")
.description(
"Watch your translation files and generate type definitions for all your translations keys when they change."
)
).action(async (c) => {
const options = await parseOptions(c.opts());

@@ -62,0 +76,0 @@ watch({ inFolder: options.inFolder }, () => generate(options));

@@ -24,3 +24,3 @@ import * as path from "path";

quoteChar,
typeName = "TranslationKey",
typeName,
}: {

@@ -56,3 +56,3 @@ keys: string[];

indent = 2,
typeName = "TranslationKey",
typeName = "TranslationKeys",
quoteChar = `'`,

@@ -59,0 +59,0 @@ }: Options) => {

export type TranslationKeys =
| 'extractKeys'
| 'typescript'
| 'common:greetings.evening'
| 'common:greetings.morning'
| 'common:greetings.welcome'