Community integrations
Community integrations
intl-ai’s contract is small: a stack runs intl-ai fill at the lifecycle point where translations should exist, and optionally intl-ai check --fail-on as a gate. Everything else (which build tool, which i18n library, which language) is interchangeable. That makes community-maintained integrations a natural fit.
Support tiers
Tier 1, maintained in this repo and versioned in lockstep with the binary:
| Integration | Stack | Shape |
|---|---|---|
intl-ai |
any | the binary itself |
@intl-ai/unplugin |
Vite, Webpack, Rollup, esbuild, Rspack, Farm | unplugin adapter, runs on buildStart |
@intl-ai/next |
Next.js (webpack and Turbopack) | withIntlAi() next.config wrapper |
@intl-ai/expo |
Expo / React Native | config plugin, runs during prebuild |
Tier-1 shims get released fixes and the same option surface (fill, failOn, validate, judgeThreshold, dev, strict, config, cwd, bin, args).
Community-supported: everything else, maintained by its author. A Flutter intl_ai package on pub.dev, a Gradle task, an Xcode build-phase script, a WordPress or Rails plugin, a Metro wrapper: all are welcome. We review and link them here and in the README, but they are owned by their authors for fixes and releases.
Building a shim
A good shim does three things:
- Locate the binary. For npm packages, depend on the
intl-aipackage (it installs the platform binary on postinstall) and resolve it like@intl-ai/unplugindoes:binoption,INTL_AI_BINenv, the npm package, thenPATH. Outside npm, document the install channels (install script, brew, mise) and resolve the binary the same way. - Spawn at the right lifecycle.
intl-ai fillwhere translations should exist (build start, prebuild, asset pipeline), plusintl-ai check --fail-on <kinds>if the shim acts as a build gate. - Expose the quality controls. Map the CLI’s quality surface to your platform’s conventions: the
[fill].validategate,judgethreshold via--judge-threshold,--fail-onseverities, and a dev opt-out. Do not reimplement validation in the shim; always delegate to the binary.
Prefer to translate formats other than JSON/YAML (ARB, .strings, .xml, PO)? Register an exec format plugin via [[formats]] in intl-ai.toml, no Rust required (see Format plugins). To ship a reusable plugin for a format’s community, open an issue or PR to link it here.
Getting listed
Open a PR that adds your integration to this page and the README’s community section, with a one-line description, install command, and repo link. Requirements: open source, maintained (recent commits), and the shim delegates to the intl-ai binary rather than reimplementing fill or checks.