An unofficial i18next CLI utility to extract labels from any source code, in any format with the help of OpenAI.
Converts
// src/app.jsx
function App(){
const [t] = useTranslation();
return (<div>t("main:title-"+"page")</div>);
}
// src/component/home.jsx
function Home(){
const [t] = useTranslation();
const myTranlsation = t;
return (<div>myTranlsation("home:welcome")</div>);
}
to
{
"main:title-page": true,
"home:welcome": true
}
npm i -g i18next-ai-keyscan
# MacOS (optional)
# export OPENAI_API_KEY='your-api-key-here'
# Windows (optional)
# setx OPENAI_API_KEY "your-api-key-here"
cd /tmp && git clone https://github.com/locize/react-tutorial
# Gets a cost prediction to process all files ending with .js in ``/tmp/react-tutorial``
i18next-ai-keyscan --target /tmp/react-tutorial --filter .*\.js$ --dry-run
# Scans all files ending with .js in ``/tmp/react-tutorial`` (absolute path)
i18next-ai-keyscan --target /tmp/react-tutorial --filter .*\.js$ --output /tmp/labels.json --chunk-length 12000 --verbose
# Scans all files ending with .js in ``./react-tutorial`` (relative path)
i18next-ai-keyscan --target ./react-tutorial --filter .*\.js$ --output ./labels.json --chunk-length 12000 --verbose
# Scans all files ending with .js in ``./react-tutorial`` (relative path) providing a custom prompt
# Note: summary is the key selected key of the provided custom-prompts.json
i18next-ai-keyscan --target ./react-tutorial --filter .*\.js$ --output ./labels.json --chunk-length 12000 --verbose --prompts-file ./examples/custom-prompts.json --prompt summary
- Scan recursively all files and prompt OpenAI
- Regex filter on files
- Provide custom prompt chains
- File splitting into chunks for fitting OpenAI max token limitation
- Respect OpenAI rate limiting + Parallelization
- Web GUI
- Provide more output options and support creation of drop in locize translation files.