https://github.com/danpoletaev/i18n-openai
🚀 The i18n-openai NPM package simplifies and accelerates the translation of i18n JSON files using the power of OpenAI's language capabilities.
https://github.com/danpoletaev/i18n-openai
automtatic i18n json next openai react translation
Last synced: about 1 year ago
JSON representation
🚀 The i18n-openai NPM package simplifies and accelerates the translation of i18n JSON files using the power of OpenAI's language capabilities.
- Host: GitHub
- URL: https://github.com/danpoletaev/i18n-openai
- Owner: danpoletaev
- License: mit
- Created: 2023-08-05T15:58:03.000Z (almost 3 years ago)
- Default Branch: master
- Last Pushed: 2025-03-03T15:28:57.000Z (over 1 year ago)
- Last Synced: 2025-03-27T10:13:37.135Z (over 1 year ago)
- Topics: automtatic, i18n, json, next, openai, react, translation
- Language: TypeScript
- Homepage:
- Size: 646 KB
- Stars: 9
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# 🚀 i18n-openai

[](https://badge.fury.io/js/i18n-openai)
[](https://github.com/danpoletaev/i18n-openai/pulls)

[](https://opensource.org/licenses/MIT)

## Table of contents
- [Getting started](#getting-started)
- [Installation](#installation)
- [Create config file](#create-config-file-optional)
- [Add API key](#add-openaai-api-key-to-env)
- [Translate](#translate)
- [Arguments](#possible-arguments)
- [Configuration Options](#configuration-options)
- [Custom prompt](#custom-prompt)
## Getting started
### Installation
There is two variants of installing a package. Either install it for a certain project to dev dependencies or install it globally.
#### Installing to dev dependencies:
Install using yarn:
```shell
yarn add i18n-openai -D
```
Install using npm:
```shell
npm i i18n-openai --save-dev
```
### Create config file (optional)
You can add your custom config by creating `i18n-openai.config.js`. If no config file would be provided, default config would be used 👇
```js
module.exports = {
skipLocales: [], // (optional)
mainLocale: 'en', // (optional)
pathToLocalesFolders: 'public/locales', // (optional)
customPrompt:
'Return content translated to {0}. Keep all sequences /n. Keep all special characters. Do not return any additional information, return only translated text.', // (optional)
model: 'gpt-3.5-turbo', // (optional)
}
```
If config file is provided, but some of the variables from config are not provided, then default values would be used.
### OpenaAI API key
In order to use OpenAI translation, the key can be provided in .env file.
```js
OPENAI_API_KEY=
```
Or export API Key
```shell
export OPENAI_API_KEY=
npx i18n-openai
```
Or directy in the cli
```shell
npx i18n-openai -apiKey
```
### Translate
If you have installed package in dev dependencies, then run:
```shell
npx i18n-openai
```
:warning: If no arguments are provided. `i18n-openai` will translate all files for all locales, except mainLocale provided in config.
### Possible arguments
#### Locales
Use `-locales` to specify locales for translation. The separator is `,`:
```shell
npx i18n-openai -locales ar,cs,de
npx i18n-openai -locales de
```
#### Files
Use `-files` to specify files for translation(files are being taken from main locale folder). The separator is `,`:
```shell
npx i18n-openai -files firstFile.json,secondFile.json
npx i18n-openai -files test.json
```
#### Model
Use `-model` to specify the model to use for translation':
```shell
npx i18n-openai -model gpt-4o
```
#### To see list of all available arguments in terminal use `-h`
```shell
npx i18n-openai -h
```
#### Arguments can be combined (order of arguments does not matter):
```shell
npx i18n-openai -files firstFile.json,secondFile.json -locales ar,de
```
## Configuration Options
| property | description | type |
| --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------ |
| skipLocales(optional) | Locales which will not be translated(Default: []) | string[] |
| mainLocale (optional) | From what locale translation would be. (Default: en) | string |
| pathToLocalesFolders (optional) | Relative path to locales folder (Default: public/locales) | string |
| customPrompt(optional) | [see section custom prompt](#custom-prompt) | string |
| model(optional) | Model to use for translation (Default: gpt-3.5-turbo) | string |
## Custom prompt
You can specify your custom prompt to use with OpenAI for translation. Custom prompt should contain `{0}` sequence. Language is being replaced by `{0}` once request to OpenaAI is being made.
Default custom prompt: `Return content translated to {0}. Keep all sequences /n. Keep all special characters. Do not return any additional information, return only translated text.`
## Contribution
All PRs are welcome :)