vite-plugin-laravel-translations

Vite Plugin to make Laravel Translations globally available as JSON field.
18,030 11
Install
npm install vite-plugin-laravel-translations
Latest Version:0.3.1
License:MIT
Last Updated:Oct 27, 2025
Links: GitHub  ·  npm
Maintainer: dcodegroup-forge

npm Last Commit npm Total Downloads Vulnerabilities Issues npm peer dependency version

Installation

With pnpm:

pnpm i vite-plugin-laravel-translations

with npm:

npm i vite-plugin-laravel-translations

or with yarn:

yarn add vite-plugin-laravel-translations

Setup with Vite

import laravelTranslations from 'vite-plugin-laravel-translations';

export default defineConfig({
	...
	plugins: [
		laravelTranslations({
			// # TBC: To include JSON files
			includeJson: false,
			// # Declare: namespace (string|false)
			namespace: false,
		}),
	],
});

Usage in Vue 3.x.x

For more information on usage with vue-i18n refer to https://vue-i18n.intlify.dev/guide/#javascript.

// app.js
// 1. Create i18n instance with options
const i18n = VueI18n.createI18n({
  locale: 'ja', // set locale
  fallbackLocale: 'en', // set fallback locale
  messages: import.meta.env.VITE_LARAVEL_TRANSLATIONS, // set locale messages
  // If you need to specify other options, you can set other options
  // ...
})


// 2. Create a vue root instance
const app = Vue.createApp({
  // set something options
  // ...
})

// 3. Install i18n instance to make the whole app i18n-aware
app.use(i18n)

// 4. Mount
app.mount('#app')

// Now the app has started!
...

Usage in Vue 2.x.x

// app.js
import VueI18n from 'vue-i18n';
Vue.use(VueI18n);

Vue.config.productionTip = false;

var i18n = new VueI18n({
  locale: 'en',
  fallbackLocale: 'en-gb',
  messages: import.meta.env.VITE_LARAVEL_TRANSLATIONS
});

...
new Vue({
  router,
  i18n,
  render: (h) => h(App),
}).$mount('#app');
...

Usage in React

This example uses i18nnext and react-i18next packages. Refer to https://dev.to/adrai/how-to-properly-internationalize-a-react-application-using-i18next-3hdb#getting-started for extended example.

Vite Config

import laravelTranslations from 'vite-plugin-laravel-translations';

export default defineConfig({
	...
	plugins: [
		laravelTranslations({
			// # Declare: namespace
			namespace: 'translation',
		}),
	],
});

Javascript

// i18n.js
import i18n from "i18next";
import { initReactI18next } from "react-i18next";
import LanguageDetector from "i18next-browser-languagedetector";

i18n
  // detect user language
  // learn more: https://github.com/i18next/i18next-browser-languageDetector
  .use(LanguageDetector)
  // pass the i18n instance to react-i18next.
  .use(initReactI18next)
  // init i18next
  // for all options read: https://www.i18next.com/overview/configuration-options
  .init({
    debug: true,
    fallbackLng: "en",
    interpolation: {
      escapeValue: false, // not needed for react as it escapes by default
    },
    resources: import.meta.env.VITE_LARAVEL_TRANSLATIONS,
  });

export default i18n;

// index.js (React >= 18.0.0)
import React from "react";
import { createRoot } from "react-dom/client";
import "./index.css";
import App from "./App";

import "./i18n";

const root = createRoot(document.getElementById("root"));
root.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>,
);

Usage in JavaScript/NodeJS

const translations = import.meta.env.VITE_LARAVEL_TRANSLATIONS;
console.log(translations);
...

Custom language directory

By default, the plugin will look for language files in the resources/lang directory if the laravel version is minor than v9, otherwise it will look for language files in the lang directory. You can specify a custom directory by passing the absoluteLanguageDirectory option to the plugin.

...
plugins: [
    laravelTranslations({
        absoluteLanguageDirectory: 'custom/path/to/lang',
    }),
],

Asserting JSON Imports

When using pnpm as dependencies manager or when our vite file doesn't have a .mts o .mjs extension, we need to assert the JSON imports to prevent errors. This can be done by adding the following to the vite.config.js file:

[!IMPORTANT] By default, this option is set to false.

...
plugins: [
    laravelTranslations({
        assertJsonImport: true,
    }),
],

When this option is enabled, the plugin will modify the import statement as follows:

const { default: translations } = await import(fullPath, { with: { type: "json" } });

Hot-Module Replacement (HMR)

When running vite with dev server running, any changes on any detected lang/ folder for .{php,json} files will restart vite dev server so that the language configurations can be updated.

Changes

For any version and breaking changes please see CHANGELOG.md.

Related Packages

@sydgren/vite-plugin-laravel-translations

Vite 8 plugin that makes Laravel translations available as a JSON variable for i...

1,050 0
@tomjs/vite-plugin-iconify

A Vite plugin for handling iconify icon sets in environments without internet ac...

11,231 9
@onoxm/vite-plugin-auto-router

a vite plugin for automatically generating react or vue route files

12,808
vite-plugin-generate-file

Generate extra file to dist folder.

1,840,535 16
webpack-vite-serve

为webpack项目提供一键接入Vite的能力

848 15

Version History

Version Released License
0.3.1 MIT
0.3.0 MIT
0.2.5 MIT
0.2.4 MIT
0.2.3 MIT
Pre-releases (6)
Version Released License
0.0.1-rc.6 MIT
0.0.1-rc.5 MIT
0.0.1-rc.4 MIT
0.0.1-rc.3 MIT
0.0.1-rc.2 MIT