😺

続・Laravel Jetstream + Vue の多言語対応(i18n)

2022/03/10に公開

そうだ、フォークしよう

https://zenn.dev/blancpanda/articles/jetstream-vue-i18n

前回(↑)の投稿後、また修正漏れを発見してしまい...
もうこの際だからちゃんと修正したやつ(それでもきっと完全ではないけど)のまとめを作ろうと思い立ちまして。公式からフォークしてインストールコマンドとスタブを書き換える!

2022/8/2 追記

Laravel 本体が v9.2 から Vite に対応したので、こちらも Vite で動くように変更しました。

Laravel Jetstream Inertia Localized

https://github.com/blancpanda/jetstream

今回作ったリポジトリはこちら。inertia-i18n ブランチに修正をまとめてある。
※ Packagistには登録していませんが、リポジトリ自体は公開してあるので自己責任でご利用ください。

どういう修正をする?

Jetstream はインストールコマンドのオプションによってコピー元のファイルが変わるので、inertia が指定されたときのコピー元ファイルを書き換える。
インストールコマンドの中で vue-i18n と laravel-lang-publisher もインストールするようにする。
config/app.php のロケールとフォールバックロケールから必要な言語ファイルも取得してしまおう。

インストールの方法

  1. まっさらな Laravel をインストールする(migrate はまだしない)

  2. config/app.php の locale、fallback_locale を修正する(Jetstream インストール時に対応する言語ファイルを取得するため)

  3. 上記リポジトリの Localized 版 Jetstream をインストールする

    1. composer.json に書き足し

      composer.json
          "repositories": [
              {
                  "type": "vcs",
                  "url": "https://github.com/blancpanda/jetstream"
              }
          ],
          "require": {
              "laravel/jetstream": "dev-inertia-i18n",
          }
      
    2. 更新

      composer update laravel/jetstream
      
  4. Jetstream のインストールコマンドを実行する

    ※ チーム機能を使う場合はオプション --teams をつける

    php artisan jetstream:install inertia
    
    php artisan jetstream:install inertia --teams
    
  5. コンパイルとマイグレーション

    npm install
    npm run dev
    php artisan migrate
    

    さらっと翻訳されているはず!!

言語ファイルについて

Laravel Lang Publisher を一緒にインストールするので、必要に応じて他の言語のファイルも取得できる。
Laravel Lang Publisher のガイド

例1 )フランス語の追加

php artisan lang:add fr

例2 )翻訳データの更新

php artisan lang:reset

苦労したところ

Laravel 9 から lang ディレクトリの位置が変更になったので、app.js からの相対パスを書き分けなきゃいけなくて、絶対パス2つから相対パスを得る処理をインストールコマンドに書き足した(stack overflow 様々)。
まだ不安だ…ちょいちょい更新しそうな感じ。

Discussion