gpt-translate-json
v0.2.3
Published
Command to automatically translate your app JSON files using OpenAI GPT Chat Completions API
Downloads
137
Readme
GPT Translate JSON
Command to automatically translate your app JSON files using OpenAI GPT Chat Completions API
npm install gpt-translate-json --save-devRequirements
- Node.js >= 16
- OpenAI Api key
Usage
Add the command in package.json, and provide required parameters:
"scripts": {
"gpt-translate-json": "gpt-translate-json --apiKey=openai_api_key --model=gpt-3.5-turbo --maxTokens=3000 --langs=en-US,it-IT --originalLang=en-US"
}Available options:
apiKeyOpenAI API key. RequiredmodelOpenAI Chat Completion model. RequiredmaxTokensOpenAI model max tokens per request. RequiredlangsAll supported languages. RequiredoriginalLangOriginal language. RequiredbasePathThe base path. Default to'./'assetsPathPath to translation files:[basePath]/[assetsPath]/[lang]/*.json. Default to'i18n'rulesPrompt rules. Defaults:'do not translate proper names''do not translate texts enclosed in double braces {{}}''do not translate the html tags'''do not translate URLs'
Depending on the model used, requests can use up to
maxTokensshared between prompt and completion. Keep the number ofmaxTokenslower than the maximum allowed by the model: in fact, the command splits the files into multiple requests to respect the maximum number of tokens in each request based on the English language, but depending on the target language, the number of tokens used can vary significantly
Having a file structure like this:
i18n/
│
└───en-US/
app.jsoni18n/en-US/app.json
{
"app": {
"title": "<h1>Library to translate JSON using GPT</h1>"
}
}the command:
npm run gpt-translate-jsonwill generate:
i18n/
│
└───en-US/
│ app.json
└───it-IT/
│ app.json
└───.metadata/
translated.json
translated-langs.jsoni18n/it-IT/app.json
{
"app": {
"title": "<h1>Libreria per tradurre JSON usando GPT</h1>>"
}
}Add translations
The file .metadata/translated.json contains the paths of translated values, so if you add new translations:
i18n/en-US/app.json
{
"app": {
"title": "<h1>Library to translate JSON using GPT</h1>"
},
"about": "About us"
}the command will request only the new translations, reducing tokens usage, and the files will be updated:
i18n/it-IT/app.json
{
"app": {
"title": "<h1>Libreria per tradurre JSON usando GPT</h1>>"
},
"about": "Chi siamo"
}Add languages
The file .metadata/translated-langs.json contains the langs already translated, so if you add a new lang:
"scripts": {
"gpt-translate-json": "gpt-translate-json --apiKey=openai_api_key --model=gpt-3.5-turbo --maxTokens=3000 --langs=en-US,it-IT,es-ES --originalLang=en-US"
}will generate:
i18n/
│
└───en-US/
│ app.json
└───it-IT/
│ app.json
└───es-ES/
│ app.json
└───.metadata/
translated.json
translated-langs.jsoni18n/es-ES/app.json
{
"app": {
"title": "<h1>Biblioteca para traducir JSON usando GPT</h1>"
},
"about": "Sobre nosotros"
}Using it programmatically
Rather than using the command, you can invoke gptTranslateJson function:
import { gptTranslateJson } from 'gpt-translate-json';
await gptTranslateJson({
apiKey: 'openai_api_key',
model: 'gpt-3.5-turbo',
maxTokens: 3000,
langs: ['en-US', 'it-IT'],
originalLang: 'en-US',
rules: [
// your custom rules
]
});Development Builds
Build
npm install
npm run build
npm testLicense
MIT
