martinlindhe/laravel-vue-i18n-generator
最新稳定版本:0.1.46
Composer 安装命令:
composer require martinlindhe/laravel-vue-i18n-generator
包简介
Generates a vue-i18n compatible include file from your Laravel translations.
README 文档
README
NO LONGER MAINTAINED
Laravel 5 package that allows you to share your Laravel localizations with your vue front-end, using vue-i18n or vuex-i18n.
Laravel 5.7 notice!
Configuration paths have changed in Laravel 5.7, in order for this package to function properly you need to configure correct paths for jsPath and jsFile in your config\vue-i18n-generator.php.
Install the package
In your project:
composer require martinlindhe/laravel-vue-i18n-generator --dev
For Laravel 5.4 and below:
For older versions of the framework:
Register the service provider in config/app.php
MartinLindhe\VueInternationalizationGenerator\GeneratorProvider::class,
Next, publish the package default config:
php artisan vendor:publish --provider="MartinLindhe\VueInternationalizationGenerator\GeneratorProvider"
Using vue-i18n
Next, you need to install one out of two supported VueJs i18n libraries. We support vue-i18n as default library. Beside that we also support vuex-i18n.
When you go with the default option, you only need to install the library through your favorite package manager.
vue-i18n
npm i --save vue-i18n
yarn add vue-i18n
Then generate the include file with
php artisan vue-i18n:generate
Assuming you are using a recent version of vue-i18n (>=6.x), adjust your vue app with something like:
import Vue from 'vue'; import VueInternationalization from 'vue-i18n'; import Locale from './vue-i18n-locales.generated'; Vue.use(VueInternationalization); const lang = document.documentElement.lang.substr(0, 2); // or however you determine your current app locale const i18n = new VueInternationalization({ locale: lang, messages: Locale }); const app = new Vue({ el: '#app', i18n, components: { ... } }
For older vue-i18n (5.x), the initialization looks something like:
import Vue from 'vue'; import VueInternationalization from 'vue-i18n'; import Locales from './vue-i18n-locales.generated.js'; Vue.use(VueInternationalization); Vue.config.lang = 'en'; Object.keys(Locales).forEach(function (lang) { Vue.locale(lang, Locales[lang]) }); ...
Using vuex-i18n
vuex-i18n
npm i --save vuex-i18n
yarn add vuex-i18n vuex
Next, open config/vue-i18n-generator.php and do the following changes:
- 'i18nLib' => 'vue-i18n', + 'i18nLib' => 'vuex-i18n',
Then generate the include file with
php artisan vue-i18n:generate
Assuming you are using a recent version of vuex-i18n, adjust your vue app with something like:
import Vuex from 'vuex'; import vuexI18n from 'vuex-i18n'; import Locales from './vue-i18n-locales.generated.js'; const store = new Vuex.Store(); Vue.use(vuexI18n.plugin, store); Vue.i18n.add('en', Locales.en); Vue.i18n.add('de', Locales.de); // set the start locale to use Vue.i18n.set(Spark.locale); require('./components/bootstrap'); var app = new Vue({ store, mixins: [require('spark')] });
Output Formats
You can specify the output formats from es6, umd, or json with the --format option. (defaults to es6)
php artisan vue-i18n:generate --format {es6,umd,json}
Use case example for UMD module
php artisan vue-i18n:generate --format umd
An UMD module can be imported into the browser, build system, node and etc.
Now you can include the generated script in the browser as a normal script and reference it with window.vuei18nLocales.
<script src="{{ asset('js/vue-i18n-locales.generated.js') }}"></script> // in your js Vue.use(VueI18n) Vue.config.lang = Laravel.language Object.keys(window.vuei18nLocales).forEach(function (lang) { Vue.locale(lang, window.vuei18nLocales[lang]) })
You can still require/import it in your build system as stated above.
One advantage of doing things like this is you are not obligated to do a build of your javascript each time a the translation files get changed/saved. A good example is if you have a backend that can read and write to your translation files (like Backpack). You can listen to a save event there and call vue-i18n-generator.
Generating Multiple Files
Sometimes you may want to generate multiple files as you want to make use of lazy loading. As such, you can specify that the generator produces multiple files within the destination directory.
There are two options:
- One file per laravel module language file using switch
--multi - One file per locale using switch
--multi-locales
php artisan vue-i18n:generate --multi{-locales}
Parameters
The generator adjusts the strings in order to work with vue-i18n's named formatting, so you can reuse your Laravel translations with parameters.
resource/lang/message.php:
return [ 'hello' => 'Hello :name', ];
in vue-i18n-locales.generated.js:
...
"hello": "Hello {name}",
...
Blade template:
<div class="message"> <p>{{ trans('message.hello', ['name' => 'visitor']) }}</p> </div>
Vue template:
<div class="message"> <p>{{ $t('message.hello', {name: 'visitor'}) }}</p> </div>
Notices
- The generated file is an ES6 module.
The more sophisticated pluralization localization as described here is not supported since neither vue-i18n or vuex-i18n support this.
License
Under MIT
martinlindhe/laravel-vue-i18n-generator 适用场景与选型建议
martinlindhe/laravel-vue-i18n-generator 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 1.13M 次下载、GitHub Stars 达 294, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「laravel」 「vue-i18n」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 martinlindhe/laravel-vue-i18n-generator 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 martinlindhe/laravel-vue-i18n-generator 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 martinlindhe/laravel-vue-i18n-generator 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Generates a vue-i18n compatible include file from your Laravel translations.
Generates a vue-i18n compatible include file from your Laravel translations.
Generates a vue-i18n compatible include file from your Laravel translations.
Generates a vue-i18n compatible include file from your Laravel translations.
Generates a vue-i18n compatible include file from your Laravel translations.
Generates a vue-i18n compatible include file from your Laravel translations.
统计信息
- 总下载量: 1.13M
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 295
- 点击次数: 23
- 依赖项目数: 7
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 未知