---
tags: PHP, Laravel, Backend, Vue
---
# 在Vue裡使用Laravel Localization
## 我的開發環境
```json=
// package.json
"laravel-mix": "^6.0.6",
"vue": "^2.6.14",
// composer.json
"laravel/framework": "^8.65",
"mariuzzo/laravel-js-localization": "^1.9",
```
## Vue 的 Laravel 本地化包
[Laravel-JS-Localization](https://github.com/rmariuzzo/Laravel-JS-Localization)
[laravel-localization-to-vue](https://github.com/kg-bot/laravel-localization-to-vue)
[laravel-vue-i18n-generator](https://github.com/martinlindhe/laravel-vue-i18n-generator)(已停止維護)
此次範例使用`Laravel-JS-Localization`
## 安裝
### composer
`composer require mariuzzo/laravel-js-localization`
### 生成messages.js
`Laravel-JS-Localization` 包提供了一個命令,可以生成所有消息的 `JavaScript` 版本,這些消息位於:`app/lang` (Laravel 4) 或 `resources/lang` (Laravel 5) 目錄。 生成的 `JavaScript` 文件將包含您的所有消息以及 `Lang.js`(一個受 `Laravel` 的 `Translator` 類高度啟發的精簡庫)。
#### 生成 JS 消息
`php artisan lang:js`
#### 自定義生成位置
`php artisan lang:js public/assets/dist/lang.dist.js`
更多指令查看[Laravel-JS-Localization#Usage](https://github.com/rmariuzzo/Laravel-JS-Localization#Usage)
### 配置
#### 發佈配置
`php artisan vendor:publish --provider="Mariuzzo\LaravelJsLocalization\LaravelJsLocalizationServiceProvider"`
之後可以到`config/localization-js.php`修改配置,可以修改只載入哪些語系檔案,以下的範例表示只會讀取到語系資料夾下的`pagination.php`跟`validation.php`
```php=
<?php
return [
'messages' => [
'pagination',
'validation',
],
];
```
### 執行webpack時同時執行發佈`messages.js`
安裝`laravel-mix-serve`
`npm i laravel-mix-serve`
In `webpack.mix.js`
```javascript=
require("laravel-mix-serve");
mix.serve("php artisan lang:js");
```
## 實作
`npm run dev`產生`messages.js`檔案
在都會使用到的模板引入 `app.blade.php`
```htmlembedded=
<script src="{{ asset('messages.js') }}"></script>
```
在 `vue` 中使用`Lang.get('messages.home');`取得語系訊息
```javascript=
<template>
<p>{{ Lang.get("messages.hello") }}</p>
</template>
<script>
export default {
data: () => ({
Lang: Lang,
}),
};
```
如果結構如下,就可以依照當前語系輸出對應的文字,假如當前語系是`'zh-tw'`,他就會找到`zh-tw`下的`messages.php`裡的`hello' => '你好'`,及顯示**你好**
```
/resources
/lang
/en
messages.php
/zh-tw
messages.php
```
更多`Lang`用法[Documentation](https://github.com/rmariuzzo/Laravel-JS-Localization#Documentation)