i18next-typescript
Advanced tools
| export type TranslationKeys = | ||
| | 'extractKeys' | ||
| | 'typescript' | ||
| | 'common:greetings.evening' | ||
| | 'common:greetings.morning' | ||
| | 'common:greetings.welcome' |
+87
| ## 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) |
| { | ||
| "inFolder": "example/locales/en", | ||
| "outFile": "example/i18next.keys.d.ts", | ||
| "outFile": "example/i18next.keys.ts", | ||
| "defaultNs": "translation", | ||
| "indent": 2, | ||
| "typeName": "TranslationKeys", | ||
| "quoteChart": "'" | ||
| "quoteChar": "'" | ||
| } |
+9
-2
@@ -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
@@ -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"} |
+2
-2
@@ -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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"} |
+4
-2
| { | ||
| "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": { |
+16
-2
@@ -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)); |
+2
-2
@@ -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' |
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
No README
QualityPackage does not have a README. This may indicate a failed publish or a low quality package.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
24973
21.16%31
3.33%403
5.22%1
-50%88
Infinity%