langColumns(), true); } /** * Separate lang attributes * @param bool $separate separate or merge */ public function moveLangAttributes($separate = true) { if ($separate) { $this->langAttributes = []; foreach ($this->langColumns() as $key) { if (isset($this->attributes[$key])) { $this->langAttributes[$key] = $this->attributes[$key]; unset($this->attributes[$key]); } } } else { foreach ($this->langAttributes as $key => $value) { $this->attributes[$key] = $value; } $this->langAttributes = []; } } /** * Get application languages list * * @return array */ public function langsList() { return bff::locale()->getLanguages(); } /** * Set default language (scope) * * @param QueryBuilder $query * @param string|null $lang language key or null - current language * @return QueryBuilder */ public function scopeLang($query, $lang = null) { $this->langDefault($lang); return $query; } /** * Set default language * * @param string|null $lang * @param bool $reset reset to default * @return string */ public function langDefault($lang = null, $reset = false) { if ($reset) { $lang = ($this->langCurrent = null); } if (! empty($lang)) { return ($this->langCurrent = $lang); } elseif (! empty($this->langCurrent)) { return $this->langCurrent; } else { return bff::locale()->getCurrentLanguage(); } } }