Selaa lähdekoodia

Add i18n dev command

Daniel Supernault 3 vuotta sitten
vanhempi
commit
7bef159119
1 muutettua tiedostoa jossa 74 lisäystä ja 0 poistoa
  1. 74 0
      app/Console/Commands/ExportLanguages.php

+ 74 - 0
app/Console/Commands/ExportLanguages.php

@@ -0,0 +1,74 @@
+<?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;
+    }
+}