php artisan lang:publish は、Laravel パッケージからアプリケーションへ翻訳ファイル(ローカリゼーション)をコピーするための Artisan コマンドです。
パッケージの resources/lang ディレクトリにある言語ファイルを、プロジェクトの resources/lang/vendor/{vendor}/{package} に出力します。
コマンド概要
| 項目 | 内容 |
|---|---|
| コマンド名 | php artisan lang:publish |
| 実行場所 | アプリケーションルート(./) |
| 主な目的 | パッケージ翻訳ファイルを resources/lang/vendor/{vendor}/{package} へコピー |
オプション
| オプション | 型 | 必須 | デフォルト | 説明 |
|---|---|---|---|---|
--provider= | string | いいえ | なし | 翻訳ファイルを持つパッケージの ServiceProvider を指定。複数指定可。 |
--locale= | string | いいえ | すべて | コピー対象のロケール。en、ja などを指定。 |
--force | flag | いいえ | なし | 既存ファイルを上書き。 |
注意
--providerが省略されると、プロジェクトに登録済みのすべての ServiceProvider から翻訳ファイルをコピーします。
典型的な使い方
# 1. パッケージをインストール
composer require vendor/package
# 2. パッケージの翻訳ファイルをコピー
php artisan lang:publish --provider="Vendor\Package\ServiceProvider" --locale=ja
# 3. 必要なら既存ファイルを上書き
php artisan lang:publish --provider="Vendor\Package\ServiceProvider" --locale=ja --force
出力例
Publishing translations for `Vendor\Package`…
✔ 5 translations published
実務上の落とし穴
| ケース | 何が起きるか | 対処 |
|---|---|---|
lang:publish が ./lang にファイルを置くように見える | Laravel は resources/lang を参照するため、コピー先が誤っている | resources/lang/vendor/... へ正しくコピーされているか確認 |
| 既存ファイルがある | そのままでは上書きされず、古いファイルが残る | --force を付与 |
--locale を指定しない | すべてのロケールがコピーされる | 必要なロケールだけを指定して無駄なファイルを省く |
| 複数パッケージを同時に公開 | 出力先が混乱しやすい | --provider を複数列挙し、順序を明示 |
参考情報
| リンク | 内容 |
|---|---|
| Laravel Docs – lang:publish | コマンドの詳細とオプション |
| GitHub Issue: lang:publish bug | 既知のバグと回避策 |
| Laravel Lang – Package Publisher | パッケージ翻訳ファイルの自動更新方法 |
まとめphp artisan lang:publish はパッケージの翻訳ファイルを手軽にプロジェクトへ持ち込む便利なツールです。
--providerで対象パッケージを絞る--localeで必要なロケールだけをコピー--forceで既存ファイルを上書き
を活用して、翻訳管理をスムーズに行いましょう。

