stringer-cli
v1.5.0-beta
Published
A powerful CLI tool to extract, manage, and translate text strings in your codebase. Supports Vue, React, Next.js, Nuxt, and more.
Downloads
64
Maintainers
Readme
Stringer CLI
Effortless i18n for modern web apps
Transform your codebase into a globally-ready application with intelligent string extraction, seamless translation workflows, and framework-specific optimizations.
🚀 Get Started • 📚 Documentation • 📦 VSCode Extension • 💬 Discord
⚡ Installation
npm install -g stringer-cli🔄 Updating Stringer CLI
If you're updating to a new version and the stringer command doesn't use the latest version, uninstall and reinstall:
# For npm users
npm uninstall -g stringer-cli
npm install -g stringer-cli
# For pnpm users
pnpm uninstall -g stringer-cli
pnpm install -g stringer-cliThis ensures the global symlink is properly updated. The postinstall script will verify your installation automatically.
Who is behind Stringer CLI?
Stringer CLI is a project by Titus Decali, a full-stack developer living in Seoul, S. Korea.
This project was selected and funded in part by the Korean government's K-Startup Social Venture program in February of 2025.
After the pain of localizing many React and Vue projects using i18n, I decided to build a tool that would make this complex and frustrating process easier for all devs. Stringer handles the intricacies of i18n for you: manually extracting, translating and managing text strings in your app.
The CLI itself is built with Clack and utilizes Stringer's own open-source clack-tree-select prompt for selecting files to process:
clack-tree-select.
🎯 Why Stringer CLI?
Stop wrestling with manual string extraction and translation management. Stringer CLI automates the entire internationalization process, letting you focus on building great products while we handle the complexity of going global.
Beyond simple string extraction, Stringer handles the heavy lifting of i18n configuration—URL-based routing, automatic link prefixing, and even middleware repair to ensure your existing code works seamlessly with i18n routing (without breaking what you've already built). Under the hood, a multi-step processing pipeline combines logical operations with fine-tuned AI to deliver accurate results quickly and affordably.
From this:
<h1>Welcome to our application</h1>
<p>Please enter your email address</p>To this in seconds:
<h1>{{ t('welcome.9824') }}</h1>
<p>{{ t('welcome.2516') }}</p>And will even generate the i18n locale files for you!
{
"welcome": {
"9824": "Welcome to our application",
"2516": "Please enter your email address"
}
}🚀 Quick Start
Start the magic:
stringerFollow the beautiful interactive prompts - we'll guide you through everything!
✨ Key Features
| Feature | Description | | ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- | | 🎨 Interactive CLI | Beautiful prompts that guide you through the entire process | | 🧠 Framework Support | Vue, Nuxt, React, and Next.js with automatic i18n setup | | ⚡ Fast Processing | Handles large codebases efficiently | | 🌍 Translation Management | Convert strings and translate to multiple languages | | 🔧 Zero Config | Get started immediately without complex setup | | 🔒 Secure | Your code is encrypted in transit and never stored | | 🧩 VS Code Extension | Stringer i18n Helper for inline previews and quick key additions |
🔄 Team Sync
When working with a team, Stringer automatically tracks changes to your base language file via a .stringer-sync.json file in your locales folder. This file should be committed to Git — it enables automatic sync detection across all team members without any additional setup.
Key benefits:
- 🔄 Automatic re-translation: Modified base language text automatically re-translates to all supported languages
- 💰 Token efficiency: Only changed keys are re-translated, dramatically reducing token usage compared to full re-translation
⚠️ Important: Do not add
.stringer-sync.jsonto your.gitignore— this file must be committed to enable team sync.
🌐 URL-based i18n (SEO-friendly locale prefixes)
Add language prefixes to your URLs (e.g., /en/..., /fr/...) to improve global SEO while minimizing risk to existing routing and middleware.
- Opt-in and reversible: You'll be prompted during the convert flow.
- Safe scaffolds per framework (no auto-writes unless you choose to integrate)
stringer url-i18n --analyze # Analyze your project without changes
stringer url-i18n --scaffold # Generate scaffold files
stringer url-i18n --enable # Toggle feature on
stringer url-i18n --disable # Toggle feature off
stringer url-i18n --revert # Remove generated scaffolds📖 Commands
🎪 Interactive Mode (Recommended)
stringerThe most user-friendly way to work with Stringer. Perfect for first-time users and complex workflows.
⚡ Direct Commands (For Power Users)
# Authentication
stringer login # Connect your account
stringer logout # Log out of your account
stringer auth-status # Check connection status
stringer -v # Check version
# Core Operations (all available in interactive mode via `stringer` command)
stringer convert # Extract and convert strings
stringer translate # Translate to target languages
stringer align # Sync translation files
# Utilities
stringer help # Get detailed help
stringer --help-path # Fix PATH issues (for users of OhMyZSH, etc.)📦 Supported Frameworks
- Vue 3
- Nuxt.js
- React
- Next.js
🐛 Known Issues
- If using 🦁 Brave browser, you will need to disable the Ad Blocker to complete authentication between the Stringer-cli.com site and the CLI.
🚀 Ready to Go Global?
Getting started with internationalization has never been easier. Join thousands of developers who trust Stringer CLI to power their global applications.
💰 Simple, Usage-Based Pricing
Pay only for what you use. Convert your React/Vue strings to i18n format, then translate them.
- Conversion: $0.00035 per token
- Translation: $0.00055 per token
🎉 Launch promo: 45% off until February 28th, 2026
🛠️ System Requirements
- Node.js 16.0.0 or higher
- Vue 3 & Nuxt 3/4 are supported currently, with support for React & Next.js coming very soon!
- Unfortunately, we are not supporting the Options API in Vue projects at this time.
🆘 Need Help?
- 📚 Complete Documentation - Detailed guides and tutorials
- 🌐 Visit Our Website - Learn more about features and pricing
- 💬 Join our Discord - Report bugs and request features
- 🐛 Submit Code Edge Cases - Help us improve accuracy
