Skip to content

Scan any source code for i18next/locize labels, in any format with the help of OpenAI.

Notifications You must be signed in to change notification settings

ggcaponetto/i18next-ai-keyscan

Repository files navigation

i18next-ai-keyscan

Statements Branches Functions Lines

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
}

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

  • 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.

About

Scan any source code for i18next/locize labels, in any format with the help of OpenAI.

Resources

Stars

Watchers

Forks

Packages

No packages published