![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/demo.intellicart.co/vendor/barryvdh/laravel-translation-manager/src/ |
<?php namespace Barryvdh\TranslationManager; use Barryvdh\TranslationManager\Models\Translation; use Illuminate\Http\Request; use Illuminate\Routing\Controller as BaseController; use Illuminate\Support\Collection; use Illuminate\Support\Str; class Controller extends BaseController { /** @var \Barryvdh\TranslationManager\Manager */ protected $manager; public function __construct(Manager $manager) { $this->manager = $manager; } public function getIndex($nameSpace = null, $group = null) { $nameSpaces = []; $loader = app()['translator']->getLoader(); $name_spaces = $loader->namespaces(); $nameSpaces = ['' => 'Choose a nameSpace']; $nameSpaces[] = 'Default'; foreach ($name_spaces as $module => $path) { $nameSpaces[] = $module; } $locales = $this->manager->getLocales(); $groups = Translation::groupBy('group'); $excludedGroups = $this->manager->getConfig('exclude_groups'); if ($excludedGroups) { $groups->whereNotIn('group', $excludedGroups); } $groups = $groups->where('namespace', '=', $nameSpace)->select('group')->orderBy('group')->get()->pluck('group', 'group'); if ($groups instanceof Collection) { $groups = $groups->all(); } $groups = ['' => 'Choose a group'] + $groups; $numChanged = Translation::where('group', $group)->where('namespace', '=', $nameSpace) ->where('status', Translation::STATUS_CHANGED)->count(); $allTranslations = Translation::where('group', $group)->where('namespace', '=', $nameSpace) ->orderBy('key', 'asc')->get(); $numTranslations = count($allTranslations); $translations = []; foreach ($allTranslations as $translation) { $translations[$translation->key][$translation->locale] = $translation; } return view('translation-manager::index') ->with('nameSpaces', $nameSpaces) ->with('nameSpace', $nameSpace) ->with('translations', $translations) ->with('locales', $locales) ->with('groups', $groups) ->with('group', $group) ->with('numTranslations', $numTranslations) ->with('numChanged', $numChanged) ->with('editUrl', $group ? action('\Barryvdh\TranslationManager\Controller@postEdit', [$group, $nameSpace]) : null) ->with('deleteEnabled', $this->manager->getConfig('delete_enabled')); } public function getView($nameSpace = null, $group = null) { return $this->getIndex($nameSpace, $group); } public function getNameSpace($nameSpace = null) { return $this->getIndex($nameSpace); } protected function loadLocales() { //Set the default locale as the first one. $locales = Translation::groupBy('locale') ->select('locale') ->get() ->pluck('locale'); if ($locales instanceof Collection) { $locales = $locales->all(); } $locales = array_merge([config('app.locale')], $locales); return array_unique($locales); } public function postAdd($group = null) { $keys = explode("\n", request()->get('keys')); foreach ($keys as $key) { $key = trim($key); if ($group && $key) { $this->manager->missingKey('*', $group, $key); } } return redirect()->back(); } public function postEdit($group = null, $nameSpace = null) { if (!in_array($group, $this->manager->getConfig('exclude_groups'))) { $name = request()->get('name'); $value = request()->get('value'); list($locale, $key) = explode('|', $name, 2); $translation = Translation::firstOrNew([ 'locale' => $locale, 'group' => $group, 'key' => $key, 'namespace' => $nameSpace ]); $translation->value = (string)$value ?: null; $translation->status = Translation::STATUS_CHANGED; $translation->save(); return array('status' => 'ok'); } } public function postDelete($nameSpace, $group, $key) { if (!in_array($group, $this->manager->getConfig('exclude_groups')) && $this->manager->getConfig('delete_enabled')) { Translation::where('group', $group)->where('namespace', '=', $nameSpace) ->where('key', $key)->delete(); return ['status' => 'ok']; } } public function postImport(Request $request) { $nameSpace = $request->get('nameSpace'); if ($nameSpace == 'Default') { $base = null; } else { $loader = app()['translator']->getLoader(); $name_spaces = $loader->namespaces(); $base = isset($name_spaces[$nameSpace]) ? $name_spaces[$nameSpace] : null; } $replace = $request->get('replace', false); $counter = $this->manager->importTranslations($replace, $base, $nameSpace); return ['status' => 'ok', 'counter' => $counter]; } public function postFind() { $numFound = $this->manager->findTranslations(); return ['status' => 'ok', 'counter' => (int)$numFound]; } public function postPublish($nameSpace = null,$group = null) { $json = false; if ($group === '_json') { $json = true; } $loader = app()['translator']->getLoader(); $name_spaces = $loader->namespaces(); $base = isset($name_spaces[$nameSpace]) ? $name_spaces[$nameSpace] : null; $this->manager->exportTranslations($group, $json, $nameSpace, $base); return ['status' => 'ok']; } public function postAddGroup(Request $request) { $group = str_replace(".", '', $request->input('new-group')); if ($group) { return redirect()->action('\Barryvdh\TranslationManager\Controller@getView', $group); } else { return redirect()->back(); } } public function postAddLocale(Request $request) { $locales = $this->manager->getLocales(); $newLocale = str_replace([], '-', trim($request->input('new-locale'))); if (!$newLocale || in_array($newLocale, $locales)) { return redirect()->back(); } $this->manager->addLocale($newLocale); return redirect()->back(); } public function postRemoveLocale(Request $request) { foreach ($request->input('remove-locale', []) as $locale => $val) { $this->manager->removeLocale($locale); } return redirect()->back(); } public function postTranslateMissing(Request $request) { $locales = $this->manager->getLocales(); $newLocale = str_replace([], '-', trim($request->input('new-locale'))); if ($request->has('with-translations') && $request->has('base-locale') && in_array($request->input('base-locale'), $locales) && $request->has('file') && in_array($newLocale, $locales)) { $base_locale = $request->get('base-locale'); $group = $request->get('file'); $nameSpace = $request->get('nameSpace'); $base_strings = Translation::where('group', $group)->where('locale', $base_locale)->get(); foreach ($base_strings as $base_string) { $base_query = Translation::where('group', $group)->where('locale', $newLocale)->where('key', $base_string->key); if ($base_query->exists() && $base_query->whereNotNull('value')->exists()) { // Translation already exists. Skip continue; } $translated_text = Str::apiTranslateWithAttributes($base_string->value, $newLocale, $base_locale); request()->replace([ 'value' => $translated_text, 'name' => $newLocale . '|' . $base_string->key, ]); app()->call( 'Barryvdh\TranslationManager\Controller@postEdit', [ 'nameSpace' => $nameSpace, 'group' => $group ] ); } return redirect()->back(); } return redirect()->back(); } }