/** * @param $id * @param TranslatableEntity $entity */ private function insertTranslation($id, TranslatableEntity $entity) { $table = $this->getTable(); $languageColumn = $this->mapper->getLanguageColumn(); $translationsTable = $this->mapper->getTranslationsTable($table); $translationsViaColumn = $this->mapper->getTranslationsColumn($table); // Translation $translation = array_intersect_key($entity->getModifiedRowData(), $entity->getTranslatableColumns()); $translation[$translationsViaColumn] = $id; if ($entity->isDetached()) { foreach ($this->languages->getLanguages() as $language) { if (!isset($translation[$languageColumn]) || $translation[$languageColumn] != $language->id) { $translation[$languageColumn] = $language->id; } $this->connection->query('INSERT INTO %n %v', $translationsTable, $translation); } } else { if (isset($translation[$languageColumn])) { $row = $this->connection->select('*')->from($translationsTable)->where('%n = %i', $languageColumn, $translation[$languageColumn])->where('%n = %i', $translationsViaColumn, $id)->fetchSingle(); if (!$row) { $this->connection->query('INSERT INTO %n %v', $translationsTable, $translation); } else { $this->connection->query('UPDATE %n SET %a WHERE %n = ? AND %n = %s', $translationsTable, $translation, $translationsViaColumn, $id, $languageColumn, $translation[$languageColumn]); } } } }
public function __construct($mask, $metadata = [], Languages $languages) { if (count($languages->getLanguages()) > 1) { $mask = $this->languageMask . $mask; if (!isset(Route::$styles['lang'])) { Route::addStyle('lang'); Route::setStyleProperty('lang', Route::FILTER_IN, function ($code) use($languages) { $languages->setCurrent($code); return $languages->getCurrent()->code; }); } } parent::__construct($mask, $metadata); }
public function injectLocalization(Languages $languages, Translator $translator) { $this->languages = $languages->getLanguages(); $this->language = $languages->getLanguage(); $this->translator = $translator; }
public function __construct(Languages $languages) { $this->languages = $languages->getLanguages(); }