rene-roscher / laravel-i18n-json-converter
A Package for Laravel that converts PHP array-based translation files into flattened JSON files, making them compatible with Vue i18n
Fund package maintenance!
Rene-Roscher
Requires
- php: >=8.2
- illuminate/contracts: ^10.0||^11.0||^12.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- laravel/pint: ^1.14
- nunomaduro/collision: ^8.1.1||^7.10.0
- orchestra/testbench: ^10.0.0||^9.0.0||^8.22.0
- pestphp/pest: ^3.0
- pestphp/pest-plugin-arch: ^3.0
- pestphp/pest-plugin-laravel: ^3.0
README
A Package for Laravel that converts PHP array-based translation files into flattened JSON files, making them compatible with e.g. xiCO2k/laravel-vue-i18n
A Package for Laravel that converts PHP array-based translation files into flattened JSON files, making them compatible with xiCO2k/laravel-vue-i18n.
Installation
You can install the package via composer:
composer require rene-roscher/laravel-i18n-json-converter
You can convert your PHP array-based translation files into flattened JSON files by running the following command:
php artisan i18n:convert
Configure i18n for vue-i18n
import { i18nVue } from 'laravel-vue-i18n' // Register the i18n plugin like this // Tested with Vue 3 (Inertia) and Vite 4 // You need to add the locales manually to the switch, dynamic loading is not supported yet app.use(i18nVue, { resolve: async (lang) => { const langFiles = import.meta.glob('../lang/*.json', { eager: true }) let modules switch (lang) { case 'en': modules = import.meta.glob('../lang/json/en/*.json', { eager: true }) break case 'de': modules = import.meta.glob('../lang/json/de/*.json', { eager: true }) break } const messages = langFiles[`../lang/${lang}.json`] || {} for (const path in modules) { const regex = new RegExp(`../lang/json/${lang}/(.+)\\.json$`) const match = path.match(regex) if (match) { const prefix = match[1] const moduleMessages = modules[path].default for (const key in moduleMessages) { messages.default[`${prefix}.${key}`] = moduleMessages[key] } } } return messages } })
Changelog
Please see CHANGELOG for more information on what has changed recently.
License
The MIT License (MIT). Please see License File for more information.