A Node.js command line tool to translate formatted localized strings into other languages using OpenAI's GPT API.
- 🤖️ Translate strings in a file using OpenAI's GPT API.
- 🚀 Automatically split strings into chunks by GPT's max token length.
- 💰 Compare the strings to a list of previously translated strings and only translate those that have not been translated yet.
- Read a file containing a list of strings to translate.
- Unmarshal the file into a structured object.
- Compare the structured object to a list of previously translated strings, pick those that have not been translated yet, and create a new data structure containing only those strings.
- Split the strings into chunks by GPT's max token length.
- Send each chunk to the GPT API for translation.
- Combine the translated chunks into a single data structure.
- Combine the translated strings with the previously translated strings.
- Marshal the data structure into a file.
npm install -g translatorchain
tc -k <api-key> -o <output-file> <input-file>
You can specify the OpenAI API key using the -k
flag or by setting the OPENAI_API_KEY
environment variable.
Supported arguments:
-k
,--key
: OpenAI API key-o
,--output
: Output file-s
,--src
: Source language (default:auto
, detected automatically)-d
,--dst
: Destination language (default:English
)-f
,--format
: Input file format (default:auto
, detected automatically)-t
,--type
: Data structure type (default:auto
, detected automatically)-c
,--chunk
: Chunk size (default:500
)-m
,--model
: GPT chat model (default:gpt-3.5-turbo-0301
)-p
,--prompt
: GPT prompt to describe what the translation document is about (e.g.This is a iOS app to help you learn English.
)-h
,--help
: Show help
Automatically detect the data structure type.
Key-value pairs.
Sample input file(json format):
{
"lang": "中文(简体)",
"description": "这是一个自动翻译工具。",
"hello": "你好,世界!",
"goodbye": "再见!",
"login": "登录",
"logout": "登出"
}
Tree structure.
Sample input file(json format):
{
"lang": "中文(简体)",
"description": "这是一个自动翻译工具。",
"hello": "你好,世界!",
"goodbye": "再见!",
"login": "登录",
"logout": "登出",
"menu": {
"home": "主页",
"about": "关于",
"contact": "联系我们"
}
}
auto
: Automatically detect the file format.json
: JSON format.yaml
: YAML format.markdown
: Markdown format.