public function boot() { /* * Set the page context for translation caching. */ Event::listen('cms.page.beforeDisplay', function ($controller, $url, $page) { if (!$page) { return; } $translate = Translator::instance(); $translate->loadLocaleFromSession(); Message::setContext($translate->getLocale(), $page->url); }); /* * Adds language suffixes to content files. */ Event::listen('cms.page.beforeRenderContent', function ($controller, $fileName) { if (!strlen(File::extension($fileName))) { $fileName .= '.htm'; } /* * Splice the active locale in to the filename * - content.htm -> content.en.htm */ $locale = Translator::instance()->getLocale(); $fileName = substr_replace($fileName, '.' . $locale, strrpos($fileName, '.'), 0); if (($content = Content::loadCached($controller->getTheme(), $fileName)) !== null) { return $content; } }); /* * Automatically replace form fields for multi lingual equivalents */ Event::listen('backend.form.extendFieldsBefore', function ($widget) { if (!($model = $widget->model)) { return; } if (!method_exists($model, 'isClassExtendedWith')) { return; } if (!$model->isClassExtendedWith('RainLab.Translate.Behaviors.TranslatableModel')) { return; } if (!is_array($model->translatable)) { return; } if (!empty($widget->config->fields)) { $widget->fields = $this->processFormMLFields($widget->fields, $model); } if (!empty($widget->config->tabs['fields'])) { $widget->tabs['fields'] = $this->processFormMLFields($widget->tabs['fields'], $model); } if (!empty($widget->config->secondaryTabs['fields'])) { $widget->secondaryTabs['fields'] = $this->processFormMLFields($widget->secondaryTabs['fields'], $model); } }); }
public function testGetCopiesFromDeprecated() { $this->seedDeprecatedData(); Message::setContext('en-US'); Message::get('Hello Piñata!'); $newMessage = Message::whereCode('hello.piñata')->first(); $deprecatedMessage = Message::whereCode('hello.pinata')->first(); $this->assertNotNull($newMessage); $this->assertEquals($newMessage->messageData, $deprecatedMessage->messageData); Message::truncate(); }
public function boot() { /* * Set the page context for translation caching. */ Event::listen('cms.page.beforeDisplay', function ($controller, $url, $page) { if (!$page) { return; } $translator = Translator::instance(); Message::setContext($translator->getLocale(), $page->url); }); /* * Adds language suffixes to content files. */ Event::listen('cms.page.beforeRenderContent', function ($controller, $fileName) { if (!strlen(File::extension($fileName))) { $fileName .= '.htm'; } /* * Splice the active locale in to the filename * - content.htm -> content.en.htm */ $locale = Translator::instance()->getLocale(); $fileName = substr_replace($fileName, '.' . $locale, strrpos($fileName, '.'), 0); if (($content = Content::loadCached($controller->getTheme(), $fileName)) !== null) { return $content; } }); /* * Import messages defined by the theme */ Event::listen('cms.theme.setActiveTheme', function ($code) { try { (new ThemeScanner())->scanThemeConfigForMessages(); } catch (Exception $ex) { } }); /* * Prune localized content files from template list */ Event::listen('pages.content.templateList', function ($widget, $templates) { return $this->pruneTranslatedContentTemplates($templates); }); }
/** * Set the page context for translation caching. */ public function setMessageContext($page) { if (!$page) { return; } $translator = Translator::instance(); Message::setContext($translator->getLocale(), $page->url); }