Skip to content
Next Next commit
Add support for splitting up the messages.js file into language/local…
…e based .js files as well.
  • Loading branch information
carestad committed Apr 19, 2018
commit 8bfc0aac6f0de61d3e0d208f1be403800a98092c
7 changes: 7 additions & 0 deletions config/config.php
Original file line number Diff line number Diff line change
Expand Up @@ -60,4 +60,11 @@
*/
'disable_config_cache' => false,

/*
|--------------------------------------------------------------------------
| Whether or not to split up the exported messages.js file into separate
| lang-{locale}.js files.
|--------------------------------------------------------------------------
*/
'split_export_files' => false,
];
30 changes: 29 additions & 1 deletion src/Console/ExportCommand.php
Original file line number Diff line number Diff line change
Expand Up @@ -88,15 +88,43 @@ public function createPath($filename)
*/
public function generateMessagesFile($path)
{
$splitFiles = Config::get('js-localization.split_export_files');
$messages = MessageCachingService::getMessagesJson();

$contents = 'Lang.addMessages(' . $messages . ');';
if ($splitFiles) {
$this->generateMessageFiles(File::dirname($path), $messages);
}

$contents = 'Lang.addMessages(' . $messages . ');';

File::put($path, $contents);

$this->line("Generated $path");
}

/**
* Generate the lang-{locale}.js files
*
* @param string $path Directory to where we will store the files
* @param string $messages JSON string of messages
*/
protected function generateMessageFiles(string $path, string $messages)
{
$locales = Config::get('js-localization.locales');
$messages = json_decode($messages, true);

foreach ($locales as $locale) {
$fileName = $path . "/lang-{$locale}.js";

if (key_exists($locale, $messages)) {
$content = 'Lang.addMessages(' . json_encode([$locale => $messages[$locale]], JSON_PRETTY_PRINT) . ');';
}

File::put($fileName, $content);
$this->line("Generated $fileName");
}
}

/**
* Generage the config file.
*
Expand Down