Troubleshooting
Common issues and solutions for Stringer CLI
Quick Solutions
Installation Issues
Problem: stringer: command not found
Solution: Install Stringer CLI globally:
Problem: Command still not found after installing (ZSH users)
Solution: Add npm's global bin directory to your PATH:
nvm users: The PATH should be handled automatically by nvm. If stringer isn't found, try:
- Restart your terminal
- Or reinstall:
npm install -g stringer-cli - Make sure you're using the same node version where stringer was installed (
nvm use <version>)
Problem: Permission denied during installation
Solution: Use sudo or fix npm permissions:
Authentication Issues
Problem: stringer login fails
Solution: Clear cache and re-authenticate:
🦁 If using Brave browser, disable the Ad Blocker to complete authentication between stringer-cli.com and the CLI.
Framework Detection Issues
Problem: Framework not detected
Solution: Run stringer and manually select framework:
Conversion Issues
Strings Not Converting
Stringer focuses on user-facing strings. The following are not converted:
- Code comments
- Console logs and debug messages
- Content inside
<style>tags - Strings in
/composablesfolders - Technical identifiers and constants
Composables Causing Errors
Strings in /composables are skipped because injected t() calls can cause errors depending on whether the composable runs client or server-side.
Solution: Move user-facing strings to components, pages, or inside defineEventHandler scope.
Server-Side Strings Outside Event Handlers
For Nuxt server routes, strings outside defineEventHandler are not converted because there's no event context.
Legal Documents Not Converting
Stringer automatically detects and skips legal documents (terms of service, privacy policies) to prevent accidental translation.
To speed up processing: Add // @stringer-ignore to legal files you know should be skipped.
To force conversion:
Use with caution. Translated legal documents may have different legal implications in different jurisdictions.
Lists Not Updating on Language Change
If dropdowns or menus don't update when language changes:
Conversion Missed a String?
Use the Stringer VSCode Extension as a companion to the CLI for quick fixes:
- Select the string
- Right-click → "🌎 Add i18n key via Stringer"
- Run
stringer alignto sync across languages
The extension lets you one-click convert user-facing strings into Stringer i18n keys and trigger smart CLI commands (like align or url repairs) directly from VSCode, but it still relies on the CLI under the hood and is not a replacement for it.
URL-based i18n Issues
404 Errors or Infinite Redirects
If you experience 404 errors, infinite redirects, or pages not loading after enabling URL-based routing:
Use the Repair feature:
- Run
stringer - Select Advanced
- Select Repair URL-based i18n routing
This repair flow fixes:
- Middleware conflicts causing redirects
- Incorrect route handling logic
- i18n configuration issues
- Missing
localePath()wrappers on links
Additional Troubleshooting Steps
If the repair doesn't resolve your issue:
- Disable custom middleware temporarily to identify conflicts
- Check middleware order — Stringer locale middleware should run first
- Review excluded paths — API routes should be excluded from locale prefixing
Missing Locale Prefixes on Links
Stringer wraps existing links automatically during conversion, but new links you add need manual wrapping.
Quick Fix: Run stringer → Advanced → Repair i18n Links to automatically wrap new links with localePath().
Template Links:
Programmatic Navigation:
Server-Side Redirects:
Middleware Redirects:
Ignoring Content
Skip an Entire File
Add @stringer-ignore near the top:
Skip a Single Line
Add @stringer-ignore-next-line above the line:
Skip From a Point Onwards
Add @stringer-ignore-from-here to skip everything below that point in the file:
Local Cache
Stringer caches converted files to avoid reprocessing.
Cache locations:
- macOS:
~/Library/Caches/stringer-cli/parse-cache.json - Windows:
%APPDATA%/stringer-cli/parse-cache.json - Linux:
~/.cache/stringer-cli/parse-cache.json
The cache is stored locally. On a different machine, you may pay for processing files already converted elsewhere. Keep your project in version control to avoid re-converting.
To clear the cache:
Supported Content Formats
Markdown and YAML Files
Stringer now supports translating Markdown (.md) and YAML (.yml, .yaml) files! These content files will be automatically detected and processed during translation, making it easy to localize your documentation and configuration files.
Common Error Messages
"Project not initialized"
Run stringer to set up your project.
"Framework not supported"
Ensure you're using Vue or Nuxt.
Billing Questions
Will I be charged for failed conversions?
No. You're only charged for files that are successfully converted.
How are tokens calculated?
Tokens are calculated after removing style blocks, imports, exports, and config files. You only pay for translatable code. See Pricing.
Still Need Help?
Helpful Links
- Commands — CLI command reference
- Languages — All 47 supported languages
- Configuration — Project settings
- Pricing — Pricing and free tier
- Get the Stringer companion VSCode Extension — Inline previews and quick key insertion