{"id":22719,"library":"vite-plugin-lingo","title":"vite-plugin-lingo","description":"Vite plugin that provides a visual editor for Gettext .po translation files in Vite projects. Current stable version is 0.1.4. The plugin adds a web UI for browsing and editing .po files, includes HMR support, and integrates with the wuchale i18n library. Key differentiators: framework-agnostic (works with any Vite setup), built-in HMR, and support for SvelteKit conventions. It is AGPL-3.0 licensed and published with npm provenance. Release cadence is rapid with frequent patches.","status":"active","version":"0.1.4","language":"javascript","source_language":"en","source_url":"https://github.com/Michael-Obele/vite-plugin-lingo","tags":["javascript","vite-plugin","vite","i18n","translation","po","gettext","localization","wuchale","typescript"],"install":[{"cmd":"npm install vite-plugin-lingo","lang":"bash","label":"npm"},{"cmd":"yarn add vite-plugin-lingo","lang":"bash","label":"yarn"},{"cmd":"pnpm add vite-plugin-lingo","lang":"bash","label":"pnpm"}],"dependencies":[{"reason":"Peer dependency required for the plugin to function","package":"vite","optional":false},{"reason":"Peer dependency required because the editor UI is built with Svelte","package":"svelte","optional":true}],"imports":[{"note":"Default export; named import will cause 'undefined' error.","wrong":"import { lingo } from 'vite-plugin-lingo'","symbol":"lingo","correct":"import lingo from 'vite-plugin-lingo'"},{"note":"TypeScript type import only; not a runtime value.","wrong":"import { VitePluginLingoOptions } from 'vite-plugin-lingo'","symbol":"VitePluginLingoOptions","correct":"import type { VitePluginLingoOptions } from 'vite-plugin-lingo'"},{"note":"Plugin is ESM-only; require() returns module object with .default.","wrong":"const lingo = require('vite-plugin-lingo')","symbol":"lingo (CommonJS)","correct":"const lingo = require('vite-plugin-lingo').default"}],"quickstart":{"code":"// vite.config.ts\nimport { defineConfig } from 'vite';\nimport lingo from 'vite-plugin-lingo';\n\nexport default defineConfig({\n  plugins: [\n    lingo({\n      route: '/_translations',\n      localesDir: './locales',\n    }),\n  ],\n});","lang":"typescript","description":"Sets up vite-plugin-lingo with a custom route and locales directory in Vite config."},"warnings":[{"fix":"Upgrade Vite to ^5.0.0, ^6.0.0, or ^7.0.0.","message":"Plugin requires Vite 5, 6, or 7; incompatible with Vite 4.x or older versions.","severity":"breaking","affected_versions":"<5.0.0"},{"fix":"Install svelte: npm install --save-dev svelte","message":"The plugin uses Svelte internally and requires Svelte as a peer dependency (^4.0.0 || ^5.0.0).","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"const lingo = require('vite-plugin-lingo').default;","message":"In CommonJS environments, require() returns the module object; use .default to get the plugin function.","severity":"gotcha","affected_versions":">=0.0.0"},{"fix":"Use `reloadOnPoChange: true` instead unless you have a plugin conflict.","message":"The `restartOnPoChange` option is a 'nuclear' option; enabling it unnecessarily causes dev server restarts on every .po file change.","severity":"gotcha","affected_versions":">=0.1.2"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"import lingo from 'vite-plugin-lingo'","cause":"Using named import { lingo } instead of default import lingo.","error":"Error: Default export is not a function"},{"fix":"const lingo = require('vite-plugin-lingo').default;","cause":"Using require() without .default in a CommonJS context.","error":"Error [ERR_REQUIRE_ESM]: require() of ES Module"},{"fix":"npm install --save-dev svelte","cause":"Missing Svelte peer dependency.","error":"Error: Cannot find module 'svelte'"}],"ecosystem":"npm","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}