wuchale
is A non-invasive, normal code based compile-time internationalization (i18n) toolkit.
π― Smart translations, tiny runtime, full HMR. Extract strings at build time, generate optimized translation catalogs, support live translations (even with Gemini AI), and ship minimal code to production.
Why wuchale
?
Traditional i18n solutions require you to wrap every translatable string with function calls or components. wuchale
doesnβt.
<!-- Traditional i18n -->
<p>{t('Hello')}</p>
<p><Trans>Welcome {userName}</Trans></p>
<!-- With wuchale -->
<p>Hello</p>
<p>Welcome {userName}</p>
Write your code naturally. No imports, no wrappers, no annotations. wuchale
handles everything at compile time.
Try live examples in your browser, no setup required:
β¨ Key Features
- π§ Zero-effort integration - Add i18n to existing projects without rewriting code
- π Compile-time optimization - All transformations happen during build, minimal runtime overhead
- π Full, granular HMR support - Live updates during development, including auto-translation
- π¦ Tiny footprint - Only 2 additional dependencies (
wuchale
+pofile
), no bloatednode_modules
- π― Smart extraction - Uses AST analysis: handles nested markup, conditionals, loops, and complex interpolations
- π Standard .po files - Compatible with existing translation tools and workflows
- π€ Optional AI translation - Gemini integration for automatic translations during development
π Installation and usage
Please look at the Installation and Usage pages.
π€ Contributing
Contributions are welcome! Please check out our test suites located inside each package for examples of supported scenarios.
β€οΈ Sponsors
Thank you @hayzamjs for sponsoring the project and using it in Sylve, giving valuable feedback!