npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

lazylocales

v0.1.27

Published

CLI for LazyLocales — AI-powered translation management

Readme

LazyLocales CLI

AI-powered translation management for modern applications. Translate your app into multiple languages with a single command.

npm version License: MIT

Features

  • 🚀 One-command translationnpx lazylocales translate handles everything
  • 🤖 AI-powered — High-quality translations using GPT-4o
  • 🔄 Incremental updates — Only translates changed or new keys
  • 🎯 Context-aware — Supports pluralization, variables, and technical terminology
  • 📦 i18next integration — Works seamlessly with i18next-http-backend
  • 🔐 CI/CD ready — Use API tokens for automated translation pipelines

Quick Start

Installation

npm install --save-dev lazylocales

Or use directly without installing:

npx lazylocales translate

Usage

  1. Authenticate with your LazyLocales account:

    npx lazylocales login
  2. Run translation:

    npx lazylocales translate

The CLI will guide you through:

  • Project selection (create new or use existing)
  • Source file selection (interactive file picker)
  • Target locale selection (multi-select with fuzzy search)
  • Live translation progress with real-time updates
  1. Get translated files written to your locales directory automatically.

Commands

lazylocales translate

Main command that handles the complete translation workflow:

  • Detects or creates project configuration
  • Picks source locale file interactively
  • Selects target languages
  • Pushes source file
  • Triggers translation jobs
  • Polls for completion with progress bars
  • Pulls translated files

Options:

  • --locale <locales...> — Translate specific locales only
  • --dry-run — Show diff without triggering translation

lazylocales login

Authenticate using Device Authorization Flow. Opens your browser for authorization.

lazylocales logout

Clear stored credentials from ~/.config/lazylocales/.

lazylocales status

Show translation coverage for all configured locales.

lazylocales push

Upload source locale file only (without triggering translation).

lazylocales pull

Download translated locale files only (without triggering translation).

lazylocales whoami

Show currently logged-in user information.

Configuration

After the first run, a lazylocales.config.json file is created at your repo root:

{
  "projectId": "proj_abc123",
  "localesDir": "./public/locales",
  "sourceLocale": "en"
}

This file is safe to commit — it never contains secrets, only environment variable names.

CI/CD Usage

For non-interactive environments (GitHub Actions, GitLab CI, etc.):

  1. Generate an API token in your LazyLocales project settings
  2. Add token to CI secrets as LAZYLOCALES_API_KEY
  3. Run in CI — the CLI automatically uses the token when the env var is set:
    - name: Translate
      run: npx lazylocales translate --json
      env:
        LAZYLOCALES_API_KEY: ${{ secrets.LAZYLOCALES_API_KEY }}

i18next Integration

Load translations at runtime using i18next-http-backend:

import i18next from 'i18next';
import HttpBackend from 'i18next-http-backend';

i18next.use(HttpBackend).init({
  backend: {
    loadPath: 'https://your-deployment.convex.site/v1/projects/PROJ_ID/locales/{{lng}}',
    customHeaders: {
      Authorization: 'Bearer ll_your_api_token',
    },
  },
  lng: 'en',
  fallbackLng: 'en',
});

Requirements

How It Works

  1. Source file detection — Interactive file picker with smart heuristics
  2. Diff computation — Only changed/new keys are translated
  3. AI translation — High-quality translations using GPT-4o with context awareness
  4. Progress tracking — Live progress bars showing translation status per locale
  5. File writing — Translated files written to your locales directory

Example Output

✓ Project: my-app (proj_abc123)
✓ Source: public/locales/en.json
✓ Output: public/locales/

Source file changed since last run
+ 3 new keys
~ 1 modified key
- 0 deleted keys

Translating 3 locales...
nl-NL (Dutch)   ████████████████████ 142/142 ✓ done (18s)
fr-FR (French)  ████████████████████ 142/142 ✓ done (22s)
de (German)     ████████████████████ 142/142 ✓ done (16s)

3 files written to public/locales/

Documentation

Support

License

MIT © LazyLocales