Licence
MIT
Version
0.3.0
Deps
4
Size
21 kB
Vulns
0
Weekly
14
@intl-ai/unplugin
AI-powered i18n translation plugin for all bundlers.
Install
npm install -D @intl-ai/unpluginQuick Start
Create an intl-ai.config.ts (or .json) at your project root:
// intl-ai.config.ts
import { createOpenAICompatible } from "@ai-sdk/openai-compatible";
const openai = createOpenAICompatible({
name: "openai",
baseURL: "https://api.openai.com/v1",
apiKey: process.env.OPENAI_API_KEY,
});
export default {
model: openai("your-model-name"),
defaultLocale: "en",
locales: ["en", "es", "fr"],
localeDir: "./locales",
};Then add the plugin to your bundler config:
Vite
// vite.config.ts
import { defineConfig } from "vite";
import IntlAi from "@intl-ai/unplugin/vite";
export default defineConfig({
plugins: [
IntlAi({
sourceLanguage: "en",
targetLanguages: ["es", "fr", "de"],
}),
],
});Webpack
// webpack.config.js
const IntlAi = require("@intl-ai/unplugin/webpack").default;
module.exports = {
plugins: [new IntlAi({ sourceLanguage: "en", targetLanguages: ["es", "fr", "de"] })],
};Rollup
// rollup.config.js
import IntlAi from "@intl-ai/unplugin/rollup";
export default {
plugins: [IntlAi({ sourceLanguage: "en", targetLanguages: ["es", "fr", "de"] })],
};esbuild
// esbuild.config.js
import { esbuildPlugin } from "@intl-ai/unplugin/esbuild";
export default {
plugins: [esbuildPlugin({ sourceLanguage: "en", targetLanguages: ["es", "fr", "de"] })],
};Rspack
// rspack.config.js
const IntlAi = require("@intl-ai/unplugin/rspack").default;
module.exports = {
plugins: [new IntlAi({ sourceLanguage: "en", targetLanguages: ["es", "fr", "de"] })],
};Bun
// bunfig.toml
[plugins][plugins.prebuild];
script = "intl-ai fill";Or use the plugin directly:
import IntlAi from "@intl-ai/unplugin/bun";
export default {
plugins: [IntlAi({ sourceLanguage: "en", targetLanguages: ["es", "fr", "de"] })],
};Nuxt
// nuxt.config.ts
export default defineNuxtConfig({
modules: ["@intl-ai/unplugin/nuxt"],
intlAi: {
sourceLanguage: "en",
targetLanguages: ["es", "fr", "de"],
},
});Zero-config usage also works — the plugin auto-discovers intl-ai.config.{ts,json} from your project root.