lang:add — 翻訳文字列を追加するコマンド
artisan
lang:add は Laravel 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) |
オプション
| オプション | 型 | デフォルト | 説明 |
|---|
--force | bool | false | 既存ファイルを強制的に上書きします。 |
--help | bool | false | コマンドのヘルプを表示します。 |
コード例
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:publish | laravel-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();
});