/**
* {@inheritdoc}
*
* @return ClientView
*/
public function render(Request $request)
{
$actor = $request->getAttribute('actor');
$assets = $this->getAssets();
$locale = $this->locales->getLocale();
$localeCompiler = $locale ? $this->getLocaleCompiler($locale) : null;
$view = new ClientView($this->api, $request, $actor, $assets, $this->layout, $localeCompiler);
$view->setVariable('locales', $this->locales->getLocales());
$view->setVariable('locale', $locale);
// Now that we've set up the ClientView instance, we can fire an event
// to give extensions the opportunity to add their own assets and
// translations. We will pass an array to the event which specifies
// which translations should be included in the locale file. Afterwards,
// we will filter all of the translations for the actor's locale and
// compile only the ones we need.
$keys = $this->translationKeys;
$this->events->fire(new ConfigureClientView($this, $view, $keys));
if ($localeCompiler) {
$translations = array_get($this->locales->getTranslator()->getMessages(), 'messages', []);
$translations = $this->filterTranslations($translations, $keys);
$localeCompiler->setTranslations($translations);
}
app('view')->share('translator', $this->locales->getTranslator());
return $view;
}