/** * {@inheritdoc} * * @return ClientView */ public function render(Request $request, array $routeParams = []) { $actor = app('flarum.actor'); $assets = $this->getAssets(); $locale = $this->getLocale($actor, $request); $localeCompiler = $this->getLocaleCompiler($locale); $view = new ClientView($this->apiClient, $request, $actor, $assets, $localeCompiler, $this->layout); $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. $translations = $this->locales->getTranslations($locale); $keys = $this->translationKeys; event(new BuildClientView($this, $view, $keys)); $translations = $this->filterTranslations($translations, $keys); $localeCompiler->setTranslations($translations); return $view; }