i18next-ai-keyscan
v1.0.3
Published
i18next-ai-keyscan is an unofficial i18next key scanner that uses OpenAI. Scan your source code and extract the key/values into a JSON file.
Downloads
6
Maintainers
Readme
i18next-ai-keyscan
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] = useTransition();
return (<div>t("main:title-"+"page")</div>);
}
// src/component/home.jsx
function Home(){
const [t] = useTransition();
const myTranlsation = t;
return (<div>myTranlsation("home:welcome")</div>);
}
to
{
"main:title-page": true,
"home:welcome": true
}
Getting Started
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"
Clone any repository containing locize/i18next-react source code.
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
Roadmap
- [x] Scan recursively all files and prompt OpenAI
- [x] Regex filter on files
- [x] Provide custom prompt chains
- [x] 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.