A CLI tool for translating Discord JSON files with OpenAI.
It supports two workflows:
- Locale translation: translate
en-US.jsoninto all other supported Discord locales in the same directory. - Command manifest translation: translate Discord application command JSON files in the current directory.
- Translates
en-US.jsonto supported Discord locales - Can also process command manifest JSON files in place
- Parallel translation with a simple progress indicator
- Uses OpenAI chat completions
- Designed for use with the skeleton Discord.js app template
- Node.js 18+ recommended
- An OpenAI API key
- A
.envfile next to the repository root
cd /opt
# Clone the repository
git clone https://github.com/eliware/translate.git
cd translate
npm install
# Optional: run tests
npm test
# Copy and edit the .env file
cp .env.example .env
# Optional: symlink for global CLI usage
# Requires sudo/root
ln -s /opt/translate/translate.mjs /usr/bin/translate-
Obtain an OpenAI API key and add it to your
.envfile:OPENAI_API_KEY=your_openai_api_key_here
-
For locale translation, place your English source translations in
en-US.jsonin the directory you want to process. -
For command translation, place Discord command manifest JSON files in the directory you want to process.
cd /path/to/your/locales/
translateIf en-US.json exists in the current directory, the tool will:
- read
en-US.json - load
prompt.json - generate translations for all supported locales
- write files such as
fr.json,de.json, andzh-CN.jsoninto the same directory
Existing locale files are overwritten.
cd /path/to/your/commands/
translateIf en-US.json is not present, the tool will scan the current directory for .json files that look like Discord command manifests. Files must contain at least:
nameas a stringtypeas a number
Each matching file is then passed through prompt-commands.json, and the result is written back to the same file.
Discord locales supported by the locale workflow include:
bg, cs, da, de, el, en-GB, es-419, es-ES, fi, fr, hi, hr, hu, id, it, ja, ko, lt, nl, no, pl, pt-BR, ro, ru, sv-SE, th, tr, uk, vi, zh-CN, zh-TW
prompt.jsonis used for locale translation.prompt-commands.jsonis used for command manifest translation.- The locale workflow replaces
{json}with the raw contents ofen-US.jsonwhen that placeholder is present. - Both workflows support
{target_locale}in prompt text.
src/- Main source codetests/- Test suiteprompt.json- Locale translation prompt templateprompt-commands.json- Command translation prompt templatetranslate.mjs- CLI entry point
For help or questions, join the community and chat with the author:

