lang:add — 翻訳文字列を追加するコマンド

artisan

lang:addLaravel 12 から正式サポートされた Artisan コマンドで、プロジェクトに新しいロケール(言語ファイル)を追加します。
resources/lang/{locale} ディレクトリを生成し、デフォルトの翻訳ファイル (auth.php, validation.php など) を自動作成します。

  • カテゴリ: Artisan
  • 掲載バージョン: Laravel 12・PHP 8.4
  • FQCN: Laravel\Lang\Console\AddLocaleCommand
  • 関連コマンド: lang:update, lang:publish, lang:make
  • 変更履歴: Laravel 12 で正式サポート開始。以前は lang:make + 手動コピーが必要だった。

TL;DR

php artisan lang:add ja

ja というロケールを追加すると、resources/lang/ja にデフォルト翻訳ファイルが生成されます。


用途・実装

  • ローカライズの初期化:新しいロケールを追加する際、既存の翻訳ファイルがあれば「上書きするかスキップするか」を対話で確認。
  • 安全な更新lang:update と組み合わせることで、既存キーを消失させずに翻訳を更新できます。

コマンド構文

php artisan lang:add {locale}
引数必須説明
locale✔︎追加したいロケールコード(例:ja, fr, es

オプション

オプションデフォルト説明
--forceboolfalse既存ファイルを強制的に上書きします。
--helpboolfalseコマンドのヘルプを表示します。

コード例

1. シンプルな追加

php artisan lang:add ja
> Adding locale: ja
> Locale ja added successfully.

2. 上書きを許可しない(スキップ)

php artisan lang:add ja
# 既存フォルダがある場合は確認プロンプトが表示されます。

3. スクリプトで自動実行(CI/CD 例)

// tests/Feature/LocaleTest.php
public function test_add_locale()
{
    exec('php artisan lang:add ja', $output, $return);
    $this->assertEquals(0, $return);
    $this->assertFileExists(resource_path('lang/ja/auth.php'));
}

実装概要(内部構造)

class AddLocaleCommand extends Command
{
    protected $signature = 'lang:add {locale}';

    public function handle()
    {
        $locale = $this->argument('locale');
        $path = resource_path("lang/{$locale}");

        if (is_dir($path) && !$this->option('force')) {
            if (!$this->confirm("{$locale} already exists. Overwrite?", false)) {
                $this->info("Skipped adding {$locale}");
                return 0;
            }
        }

        $this->createLocaleFiles($locale);
        $this->info("Locale {$locale} added successfully.");
        return 0;
    }
}

トラブルシューティング

問題原因対処
コマンドが認識されないArtisan のキャッシュが残っているphp artisan optimize:clear
上書き確認が表示されない既存フォルダが空でない--force を付与、またはフォルダを手動削除
生成ファイルが不足しているパッケージが不完全composer update laravel-lang/lang

典型的なワークフロー

composer update
php artisan lang:add ja
php artisan lang:update
php artisan lang:publish

関連コマンド

コマンド役割
lang:update依存パッケージ更新後に翻訳ファイルを自動更新
lang:publishlaravel-lang/lang パッケージのベース翻訳を公開
lang:makeカスタムロケール用のダミー翻訳ファイルを作成

エラーハンドリング

php artisan lang:add xx
# 例: 無効なロケールコード
> Invalid locale: xx. Supported locales are en, ja, fr, es, ...

テスト例 (Pest)

it('adds a new locale', function () {
    exec('php artisan lang:add ja', $output, $status);
    expect($status)->toBe(0);
    expect(is_dir(resource_path('lang/ja')))->toBeTrue();
});

レン (Wren)

こんにちは。レンです。

Laravelのコードの森に住んでいる、小さな案内役です。
ルーティングの枝やクラスの影を歩きながら、コードの流れや仕組みを眺めています。

このサイトでは、Laravelの基本から実装のコツまで、開発で役立つポイントを静かに整理しています。
難しいことを増やすのではなく、コードの見通しが少し良くなるヒントを届けるのが役目です。

「この処理はどこに書くのがいいのか」
「Laravelではどう考えると整理できるのか」

そんな疑問に、小さなメモを残すような気持ちで記事を書いています。

コードを書いている途中で迷ったとき、
このサイトが少し立ち止まって整理できる場所になればうれしいです。

レン (Wren)をフォローする