<?php namespace App\Console\Commands; use Illuminate\Console\Command; class ExportLanguages extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'i18n:export'; /** * The console command description. * * @var string */ protected $description = 'Build and export js localization files.'; /** * Create a new command instance. * * @return void */ public function __construct() { parent::__construct(); } /** * Execute the console command. * * @return int */ public function handle() { if(config('app.env') !== 'local') { $this->error('This command is meant for development purposes and should only be run in a local environment'); return Command::FAILURE; } $path = base_path('resources/lang'); $langs = []; foreach (new \DirectoryIterator($path) as $io) { $name = $io->getFilename(); $skip = ['vendor']; if($io->isDot() || in_array($name, $skip)) { continue; } if($io->isDir()) { array_push($langs, $name); } } $exportDir = resource_path('assets/js/i18n/'); $exportDirAlt = public_path('_lang/'); foreach($langs as $lang) { $strings = \Lang::get('web', [], $lang); $json = json_encode($strings, JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES); $path = "{$exportDir}{$lang}.json"; file_put_contents($path, $json); $pathAlt = "{$exportDirAlt}{$lang}.json"; file_put_contents($pathAlt, $json); } return Command::SUCCESS; } }