sourceLanguage = 'de'; $this->selectLanguage = 'en'; $this->keys = []; $this->model = ""; } /** */ public function index($model, $lang=null) { //Request::get('key') //Request::get('language') $this->initByModel($model); $languages = $this->allLanguages(); $languages->forget('de'); $translations = $this->getTranslationsFormModel(); $data = [ 'keys' => $this->keys, 'languages' => $languages, 'model' => $this->model, 'select_language' => $this->selectLanguage, 'source_language' => $this->sourceLanguage, 'translations' => $translations, 'select_key' => $this->selectKey ]; return view('translation::languages.translations.custom', $data); } /** */ public function initByModel($model) { if($model === 'products'){ $this->model = $model; $this->keys = [ 'name'=>'Produktname', 'copy'=>'Produktbeschreibung', 'description'=>'Beschreibung', 'usage'=>'Anwendung', 'ingredients'=>'Hinweise', ]; $this->selectKey = 'name'; } if($model === 'ingredients'){ $this->model = $model; $this->keys = [ 'name'=>'Name', 'inci'=>'INCI', 'effect'=>'Wirkung', ]; $this->selectKey = 'name'; } if($model === 'user_levels'){ $this->model = $model; $this->keys = [ 'name'=>'Name', ]; $this->selectKey = 'name'; } if($model === 'shippings'){ $this->model = $model; $this->keys = [ 'name'=>'Name', ]; $this->selectKey = 'name'; } if($model === 'categories'){ $this->model = $model; $this->keys = [ 'name'=>'Name', 'headline'=>'Headline', ]; $this->selectKey = 'name'; } if(Request::get('key')){ $this->selectKey = Request::get('key'); } if(Request::get('language')){ $this->selectLanguage = Request::get('language'); } //Request::get('language') } public function getTranslationsFormModel(){ if($this->model === 'products'){ return Product::all()->mapWithKeys(function ($value) { return [$value->id => [ 'master' => $value->name, 'source' => $value->{$this->selectKey}, 'trans' => $value->getTrans($this->selectKey, $this->selectLanguage), ] ]; }); } if($this->model === 'ingredients'){ return Ingredient::all()->mapWithKeys(function ($value) { return [$value->id => [ 'master' => $value->name, 'source' => $value->{$this->selectKey}, 'trans' => $value->getTrans($this->selectKey, $this->selectLanguage), ] ]; }); } if($this->model === 'user_levels'){ return UserLevel::all()->mapWithKeys(function ($value) { return [$value->id => [ 'master' => $value->name, 'source' => $value->{$this->selectKey}, 'trans' => $value->getTrans($this->selectKey, $this->selectLanguage), ] ]; }); } if($this->model === 'shippings'){ return Shipping::all()->mapWithKeys(function ($value) { return [$value->id => [ 'master' => $value->name, 'source' => $value->{$this->selectKey}, 'trans' => $value->getTrans($this->selectKey, $this->selectLanguage), ] ]; }); } if($this->model === 'categories'){ return Category::all()->mapWithKeys(function ($value) { return [$value->id => [ 'master' => $value->name, 'source' => $value->{$this->selectKey}, 'trans' => $value->getTrans($this->selectKey, $this->selectLanguage), ] ]; }); } } public function update($model) { $id = Request::get('key'); //id $key = Request::get('group'); //key colum $language = Request::get('language'); //selectLanguage $value = Request::get('value') ?: ''; //value if($model === 'products'){ TransProduct::updateOrCreate([ 'language' => $language, 'product_id' => $id, 'key' => $key, ], [ 'key' => $key, 'value' => $value, ]); } if($model === 'ingredients'){ TransIngredient::updateOrCreate([ 'language' => $language, 'ingredient_id' => $id, 'key' => $key, ], [ 'key' => $key, 'value' => $value, ]); } if($model === 'user_levels'){ TransUserLevel::updateOrCreate([ 'language' => $language, 'user_level_id' => $id, 'key' => $key, ], [ 'key' => $key, 'value' => $value, ]); } if($model === 'shippings'){ TransShipping::updateOrCreate([ 'language' => $language, 'shipping_id' => $id, 'key' => $key, ], [ 'key' => $key, 'value' => $value, ]); } if($model === 'categories'){ TransCategory::updateOrCreate([ 'language' => $language, 'categorie_id' => $id, 'key' => $key, ], [ 'key' => $key, 'value' => $value, ]); } return ['success' => true]; } /** * Get all languages from the application. * * @return Collection */ public function allLanguages() { return Language::all()->mapWithKeys(function ($language) { return [$language->language => $language->name ?: $language->language]; }); } }