Language update

Added different level of language preference functionaloty which can be
set from the new option in top navigation bar
Lanaguage preference can be set as
* System language (Default for all users)
* Session based   (User who are not logged in and want to see they
system in language of their choice can set their preference in browser
session)
* User lever (for authenticated users who have updated their language
preference, system will change into their selected language when they
log into the system)
This commit is contained in:
Manish Verma
2018-08-08 15:37:25 +05:30
parent 1013c89634
commit 3b76605892
11 changed files with 136 additions and 7 deletions

View File

@@ -48,6 +48,7 @@ class Handler extends ExceptionHandler
*/
public function report(Exception $e)
{
dd($e);
Bugsnag::setBeforeNotifyFunction(function ($error) { //set bugsnag
return false;
});

View File

@@ -84,6 +84,7 @@ class LanguageController extends Controller
$path = base_path('resources/lang');
$values = scandir($path); //Extracts names of directories present in lang directory
$values = array_slice($values, 2); // skips array element $value[0] = '.' & $value[1] = '..'
$sysLanguage = \Cache::get('language');
return \Datatable::collection(new Collection($values))
->addColumn('language', function ($model) {
if ($model == Config::get('app.fallback_locale')) {
@@ -95,15 +96,15 @@ class LanguageController extends Controller
->addColumn('id', function ($model) {
return $model;
})
->addColumn('status', function ($model) {
if (Lang::getLocale() === $model) {
->addColumn('status', function ($model) use ($sysLanguage){
if ($sysLanguage === $model) {
return "<span style='color:green'>".Lang::trans('lang.active').'</span>';
} else {
return "<span style='color:red'>".Lang::trans('lang.inactive').'</span>';
}
})
->addColumn('Action', function ($model) {
if (Lang::getLocale() === $model) {
->addColumn('Action', function ($model) use ($sysLanguage) {
if ($model === $sysLanguage) {
return "<a href='change-language/".$model."'><input type='button' class='btn btn-info btn-xs btn-flat' disabled value='".Lang::trans('lang.disable')."'/></a>
<a href='change-language/".$model."' class='btn btn-danger btn-xs btn-flat' disabled><i class='fa fa-trash' style='color:black;'> </i> ".Lang::trans('lang.delete').'</a>';
} else {

View File

@@ -19,6 +19,7 @@ use Hash;
// classes
use Illuminate\Http\Request;
use Lang;
use Session;
/**
* GuestController.
@@ -415,4 +416,30 @@ class UnAuthController extends Controller
}
}
}
/**
* Function to chnage user language preference
*
* @param string $lang //desired language's iso code
*
* @category function to change system's language
*
* @return response
*/
public static function changeUserLanguage($lang)
{
$path = base_path('resources/lang'); // Path to check available language packages
if (array_key_exists($lang, \Config::get('languages')) && in_array($lang, scandir($path))) {
if (\Auth::check()) {
$id = \Auth::user()->id;
$user = User::find($id);
$user->user_language = $lang;
$user->save();
} else {
Session::put('language', $lang);
}
}
return redirect()->back();
}
}