/** * Save separately the model attributes and polyglot ones * * @param Polyglot $model * * @return boolean|null */ public function saving(Polyglot $model) { // Extract polyglot attributes $translated = $this->extractTranslatedAttributes($model); // If no localized attributes, continue if (empty($translated)) { return true; } // Save new model if (!$model->exists) { $model->save(); } // Get the current lang and Lang model $lang = array_get($translated, 'lang', Lang::getLocale()); $langModel = $model->{$lang}; $translated['lang'] = $lang; // If no Lang model or the fallback was returned, create a new one if (!$langModel || $langModel->lang !== $lang) { $langModel = $model->getLangClass(); $langModel = new $langModel($translated); $model->translations()->save($langModel); $model->setRelation($lang, $langModel); } $langModel->fill($translated); // Save and update model timestamp if ($model->exists && $model->timestamps && $langModel->getDirty()) { $time = $model->freshTimestamp(); $model->setUpdatedAt($time); } if ($model->save() && $langModel->save()) { return true; } }
/** * BelongToLang constructor. * * @param Builder $query * @param Eloquent $parent * @param string $foreignKey * @param string $otherKey * @param string $langKey * @param string $relation * @param null $lang * @param null $fallback */ public function __construct(Builder $query, Eloquent $parent, $foreignKey, $otherKey, $langKey, $relation, $lang = null, $fallback = null) { $this->lang = $lang ?: Lang::getLocale(); $this->fallback = $fallback ?: Lang::getFallback(); $this->langKey = $langKey ?: 'lang'; $this->fallbackQuery = clone $query; parent::__construct($query, $parent, $foreignKey, $otherKey, $relation); }
/** * Display a listing of the resource. * * @return \Illuminate\Http\Response */ public function index() { Sitemap::addTag('http://' . env(strtoupper(Lang::getLocale()) . '_WEB') . '/' . Lang::get('routes.services'), date('c', time()), 'monthly', '1'); Sitemap::addTag('http://' . env(strtoupper(Lang::getLocale()) . '_WEB') . '/' . Lang::get('routes.seo'), date('c', time()), 'monthly', '1'); Sitemap::addTag('http://' . env(strtoupper(Lang::getLocale()) . '_WEB') . '/' . Lang::get('routes.design'), date('c', time()), 'monthly', '1'); Sitemap::addTag('http://' . env(strtoupper(Lang::getLocale()) . '_WEB') . '/' . Lang::get('routes.programming'), date('c', time()), 'monthly', '1'); Sitemap::addTag('http://' . env(strtoupper(Lang::getLocale()) . '_WEB') . '/' . Lang::get('routes.contacts'), date('c', time()), 'monthly', '1'); Sitemap::addTag('http://' . env(strtoupper(Lang::getLocale()) . '_WEB'), date('c', time()), 'monthly', '1'); return Sitemap::render(); }
/** * If using the return method, it will return an array of the variable */ function lang($text = false, $vars = null, $value = null, $group = null, $locale = null, $force_add = false) { $original_locale = Lang::getLocale(); $params['value'] = $value ? $value : 0; $params['vars'] = $vars ? $vars : []; $params['locale'] = $locale ? $locale : $original_locale; $params['group'] = $group ? $group : 'general'; $params['dynamic'] = false; if (preg_match('/dynamic_/', $params['group'])) { $params['group'] = preg_replace('/dynamic_/', '', $params['group']); $params['dynamic'] = true; } $hash = md5($text) . sha1($text); $file_namespace = 'dbtranslator'; if (preg_match('/\\|/', $text)) { $choose = true; } else { $choose = false; } $config = config('db-translator'); /** * Before anything lets change the locale to the intl locale */ App::setLocale($params['locale']); /** * This will check the existence of the translation on the locale given, not the default */ if (!$force_add) { if (Lang::has($file_namespace . '::' . $params['group'] . '.' . $hash)) { if ($choose) { $text = trans_choice($file_namespace . '::' . $params['group'] . '.' . $hash, $params['value'], $params['vars']); App::setLocale($original_locale); return $text; } else { $text = trans($file_namespace . '::' . $params['group'] . '.' . $hash, $params['vars']); App::setLocale($original_locale); return $text; } } else { /** * If we are using the database translations */ if ($config['use_database']) { if (!Intl::whereText($text)->whereGroup($params['group'])->get()->count()) { $intl = new Intl(); $intl->text = $text; $intl->group = $params['group']; $intl->md5sha1 = $hash; $intl->dynamic = $params['dynamic']; $intl->save(); } } else { /** * first we will check if the translation exists under the fallback language */ App::setLocale($config['default_locale']); if (!Lang::has($file_namespace . '::' . $params['group'] . '.' . $hash)) { // if we don't find it, we should include the file for the original locale // change it with the new array, and save it. /** * Determine if the file exists */ if (Storage::disk($config['storage_driver'])->exists($config['default_locale'] . '/' . $params['group'] . '.php')) { $lang_array = (require base_path('resources/lang/vendor/dbtranslator/' . $config['default_locale'] . '/' . $params['group'] . '.php')); if (!isset($lang_array[$hash])) { $lang_array[$hash] = $text; $file = "<?php\n return [\r\n"; foreach ($lang_array as $k => $v) { $file .= " \"" . $k . "\" => \"" . str_replace('"', '\\"', $v) . "\",\r\n"; } $file .= "];"; Storage::disk($config['storage_driver'])->put($config['default_locale'] . '/' . $params['group'] . '.php', $file); } } else { $file = "<?php\n return [\r\n"; $file .= " \"" . $hash . "\" => \"" . str_replace('"', '\\"', $text) . "\",\r\n"; $file .= "];"; Storage::disk($config['storage_driver'])->put($config['default_locale'] . '/' . $params['group'] . '.php', $file); } } App::setLocale($params['locale']); } // now we will process the string if ($choose) { $params['vars']['count'] = $params['value']; $ms = new MessageSelector(); $text = $ms->choose($text, $params['value'], $params['locale']); $params['vars'] = (new Collection($params['vars']))->sortBy(function ($value, $key) { return mb_strlen($key) * -1; }); foreach ($params['vars'] as $key => $value) { $text = str_replace(':' . $key, $value, $text); } App::setLocale($original_locale); return $text; } else { if (count($params['vars'])) { $params['vars'] = (new Collection($params['vars']))->sortBy(function ($value, $key) { return mb_strlen($key) * -1; }); foreach ($params['vars'] as $key => $value) { $text = str_replace(':' . $key, $value, $text); } } App::setLocale($original_locale); return $text; } } } else { if ($config['use_database']) { if (!Intl::whereText($text)->whereGroup($params['group'])->get()->count()) { $intl = new Intl(); $intl->text = $text; $intl->group = $params['group']; $intl->md5sha1 = $hash; $intl->dynamic = $params['dynamic']; $intl->save(); } } } }
public function scopeLocaled($query) { $query->where('locale', '=', Lang::getLocale()); }
public static function getCategories() { $posts = Post::where('lang', '=', Lang::getLocale())->where('published', '=', 1)->lists('id'); $categories = Category::whereIn('post_id', $posts)->lists('name'); return array_count_values($categories); }
public static function news() { return Post::where('lang', '=', Lang::getLocale())->where('published', '=', 1)->orderBy('created_at', 'DESC')->take(3)->get(); }
/** * Administration Ajax Handler * @param Request $request * @return mixed * @author Vini Dubey */ public function administrationAjaxHandler(Request $request) { $inputData = $request->input(); $method = $inputData['method']; $ObjLanguageModel = Languages::getInstance(); $ObjLocationModel = Location::getInstance(); $ObjLanguageValuesModel = LanguageValues::getInstance(); switch ($method) { case 'manageLanguage': $available_languages = $ObjLanguageModel->getAvailableLanguageDetails(); return Datatables::of($available_languages)->addColumn('action', function ($available_languages) { return '<div role="group" class="btn-group "> <button aria-expanded="false" data-toggle="dropdown" class="btn btn-default dropdown-toggle" type="button"> <i class="fa fa-cog"></i> <span class="caret"></span> </button> <ul role="menu" class="dropdown-menu"> <li><a href="/admin/edit-language/' . $available_languages->lang_id . '""><i class="fa fa-pencil"></i> ' . trans('message.langedit') . '</a> </li> <li><a href="/admin/edit-language/' . $available_languages->lang_id . '""><i class="fa fa-pencil"></i> ' . trans('message.langexport') . '</a> </li> </ul> </div> <span class="tooltips" title="Delete Language Details." data-placement="top"> <a href="#" data-cid="' . $available_languages->lang_id . '" class="btn btn-danger delete-language" style="margin-left: 10%;"> <i class="fa fa-trash-o"></i> </a> </span>'; })->addColumn('status', function ($available_languages) { $button = '<td style="text-align: center">'; $button .= '<button class="btn ' . ($available_languages->status == 1 ? "btn-success" : "btn-danger") . ' language-status" data-id="' . $available_languages->lang_id . '">' . ($available_languages->status == 1 ? trans('message.langactive') : trans('message.langinactive')) . ' </button>'; $button .= '</td>'; return $button; })->addColumn('Add Langauge', function ($available_languages) { return '<a href="/admin/multi-lang-text/' . $available_languages->lang_code . '">Add Converted Langauge Variables</a>'; })->make(); break; case 'changeLanguageStatus': $userId = $inputData['UserId']; $where = ['rawQuery' => 'lang_id = ?', 'bindParams' => [$userId]]; $dataToUpdate['status'] = $inputData['status']; $updateResult = $ObjLanguageModel->updateLanguageStatus($dataToUpdate, $where); if ($updateResult == 1) { echo json_encode(['status' => 'success', 'msg' => 'Status has been changed.']); } else { echo json_encode(['status' => 'error', 'msg' => 'Something went wrong, please reload the page and try again.']); } break; case 'deleteLanguageStatus': $userId = $inputData['UserId']; $where = ['rawQuery' => 'lang_id = ?', 'bindParams' => [$userId]]; $deleteStatus = $ObjLanguageModel->deleteLanguage($where); if ($deleteStatus) { echo json_encode(['status' => 'success', 'msg' => 'Language Deleted']); } else { echo json_encode(['status' => 'error', 'msg' => 'Something went wrong, please reload the page and try again . ']); } break; case 'manageLanguageValue': $manage_language_value = $ObjLanguageValuesModel->getLanguageValueDetails(); return Datatables::of($manage_language_value)->addColumn('action', function ($manage_language_value) { return '<div role="group" class="btn-group "> <button aria-expanded="false" data-toggle="dropdown" class="btn btn-default dropdown-toggle" type="button"> <i class="fa fa-cog"></i> <span class="caret"></span> </button> <ul role="menu" class="dropdown-menu"> <li><a href="/admin/edit-language-value/' . $manage_language_value->lang_value_id . '""><i class="fa fa-pencil"></i> ' . trans('message.langedit') . '</a> </li> </ul> </div> <span class="tooltips" title="Delete Language Details." data-placement="top"> <a href="#" data-cid="' . $manage_language_value->lang_value_id . '" class="btn btn-danger delete-language" style="margin-left: 10%;"> <i class="fa fa-trash-o"></i> </a> </span>'; })->addColumn('check', function ($manage_language_value) { return '<input id="' . $manage_language_value->lang_value_id . '" class="questionCheckBox" type="checkbox" />'; })->make(); break; case 'multi-lang-text': $ObjLanguageValue = LanguageValues::getInstance(); $lcode = Lang::getLocale(); if ($lcode == 'en') { $lcode = 'value'; } $selectColumn = ['language_values.*']; $langDetail = $ObjLanguageValue->getAllLanguageVariable($selectColumn, $lcode); unset($lcode); $langInfo = json_decode(json_encode($langDetail), true); $lang = new Collection(); $lcode = Lang::getLocale(); if ($lcode == 'en') { $lcode = 'en'; } foreach ($langInfo as $key => $val) { $lang->push(['lang_value_id' => $val['lang_value_id'], 'name' => $val['name'], 'value' => $val['value'], $lcode => $val[$lcode]]); } return Datatables::of($lang, $lcode)->editColumn('value', function ($lang) use($lcode) { if ($lcode == 'en') { // return '<td class="text-center"><input type="text" class="form-control" readonly="readonly" id="langValue" // value="' . $lang['value'] . '" name="lang_value"></td>'; return '<td class="text-center" style="display:none"><input type="text" class="form-control" style="display:none" id="lnagId" value="' . $lang['lang_value_id'] . '" name="lang_id[]"></td><td class="text-center" style="display:none"><input type="text" class="form-control" style="display:none" id="lnagId" value="' . $lang['name'] . '"> <td class="text-center" ><input type="text" class="form-control" id="langName" readonly="readonly" value="' . $lang['name'] . '" name="lang_name[]"></td>'; } else { return '<td class="text-center" style="display:none"><input type="text" class="form-control" style="display:none" id="lnagId" value="' . $lang['lang_value_id'] . '" name="lang_id[]"></td> <td class="text-center" ><input type="text" class="form-control" style="display:none" id="langName" value="' . $lang['name'] . '" name="lang_name[]"></td> <td class="text-center"><input type="text" class="form-control" readonly="readonly" id="langValue" value="' . $lang['value'] . '" name="lang_value"></td>'; } })->editColumn($lcode, function ($lang) use($lcode) { if ($lcode == 'en') { return '<td class="text-center"><input type="text" class="form-control" id="langCode" value="' . $lang['value'] . '" name="convertname[]"></td>'; } else { return '<td class="text-center"><input type="text" class="form-control" id="langCode" value="' . $lang[$lcode] . '" name="convertname[]"></td>'; } })->removeColumn('lang_value_id')->removeColumn('name')->make(); break; case 'submitconvertlang': $ObjLanguageValue = LanguageValues::getInstance(); $lcode = Lang::getLocale(); if ($lcode == 'en') { $lcode = 'value'; } $postData = $request->all(); $lang_name['name'] = $postData['lang_name']; $lang_id['lang_value_id'] = $postData['lang_id']; $convertName[$lcode] = $postData['convertname']; $case = implode(' ', array_map(function ($v, $k) { return ' WHEN ' . $v . ' THEN "' . $k . '"'; }, $postData['lang_id'], $postData['convertname'])); if ($lcode == 'en') { $lcode = 'value'; $updateData = [$lcode => DB::raw("(CASE lang_value_id {$case} END)")]; } else { $updateData = [$lcode => DB::raw("(CASE lang_value_id {$case} END)")]; } $whereForUpdate = ['rawQuery' => 'lang_value_id IN(' . implode(',', $postData['lang_id']) . ')']; $updateLang = $ObjLanguageValue->updateLanguageValueStatus($updateData, $whereForUpdate); $langval = array_combine($lang_name['name'], $convertName[$lcode]); $whereForAllValues = ['rawQuery' => '1']; $selectedColumns = ['name', $lcode . ' AS code']; $array = $ObjLanguageValue->getAllLanguageVariableWhere($whereForAllValues, $selectedColumns); $case = '<?php return ['; $case .= implode(',', array_map(function ($v) { return "'" . $v->name . "'" . '=>' . "'" . $v->code . "'"; }, $array)); $case = rtrim($case, ','); $case .= '];'; File::put(env('LANG_PATH') . '/' . Lang::getLocale() . '/message.php', $case); // echo json_encode($updateLang) ? // ['status' => 'success', 'msg' => 'Language Updated.'] : // ['status' => 'error', 'msg' => 'Nothing to update.']; if ($updateLang) { echo json_encode(['status' => 'success', 'msg' => 'Language Updated.']); } else { echo json_encode(['status' => 'error', 'msg' => 'Nothing to update.']); } break; default: break; } }
/** * Localize a "with" method * * @param Query $query * @param string $relations ... * * @return Query */ public function scopeWithLang() { $relations = func_get_args(); $query = array_shift($relations); if (empty($relations)) { $relations = array(Lang::getLocale()); } return $query->with($relations); }
/** * @param $category * @param $page * @return $this */ public function build($category, $page) { $morePage = 0; $posts = Post::get($category, $page); if ($category == null) { if (Config::get('app.max_post_per_page') * $page < Post::where('lang', '=', Lang::getLocale())->where('published', '=', 1)->count()) { $morePage = 1; } } else { $ids = Category::where('name', '=', $category)->lists('post_id'); if (Config::get('app.max_post_per_page') * $page < Post::whereIn('id', $ids)->where('lang', '=', Lang::getLocale())->where('published', '=', 1)->count()) { $morePage = 1; } } $this->statistics->incrementPage('welcome'); return view('welcome')->with(array('posts' => $posts, 'page' => $page, 'category' => $category, 'morePage' => $morePage)); }
/** * Return the mail as html. * @return string */ public function show() { // Set the email's locale: $currentLocale = Lang::getLocale(); $newLocale = $this->locale ?: Lang::getLocale(); Lang::setLocale($newLocale); // Generate HTML: $html = View::make($this->view, $this->data)->render(); $css = File::get($this->cssFile); $inliner = new CssInline($html, $css); $body = $inliner->convert(); // Return App locale to former value: Lang::setLocale($currentLocale); return $body; }