mirror of
https://github.com/prurigro/hypothetical.git
synced 2024-11-21 15:42:31 -05:00
Add multi-language functionality and don't create unnecessary variables in the contact controller
This commit is contained in:
parent
93ac8b5697
commit
54613bf60b
8 changed files with 96 additions and 9 deletions
|
@ -1,6 +1,8 @@
|
|||
SITE_NAME='Hypothetical Template'
|
||||
SITE_DESC='A website template'
|
||||
|
||||
DEFAULT_LANGUAGE=en
|
||||
|
||||
APP_ENV=local
|
||||
APP_DEBUG=true
|
||||
APP_LOG_LEVEL=debug
|
||||
|
|
|
@ -14,14 +14,10 @@ class ContactController extends Controller {
|
|||
'message' => 'required'
|
||||
]);
|
||||
|
||||
$name = $request['name'];
|
||||
$email = $request['email'];
|
||||
$message = $request['message'];
|
||||
|
||||
$contact = new Contact;
|
||||
$contact->name = $name;
|
||||
$contact->email = $email;
|
||||
$contact->message = $message;
|
||||
$contact->name = $request['name'];
|
||||
$contact->email = $request['email'];
|
||||
$contact->message = $request['message'];
|
||||
$contact->save();
|
||||
|
||||
// Send the email if the MAIL_SENDTO variable is set
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
namespace App\Providers;
|
||||
|
||||
use Illuminate\Support\Facades\Blade;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
|
||||
class AppServiceProvider extends ServiceProvider
|
||||
|
@ -13,7 +14,9 @@ class AppServiceProvider extends ServiceProvider
|
|||
*/
|
||||
public function boot()
|
||||
{
|
||||
//
|
||||
Blade::directive('lang', function($expression) {
|
||||
return "<?php echo Language::select($expression); ?>";
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
57
app/Utilities/Language.php
Normal file
57
app/Utilities/Language.php
Normal file
|
@ -0,0 +1,57 @@
|
|||
<?php
|
||||
|
||||
namespace App\Utilities;
|
||||
|
||||
class Language
|
||||
{
|
||||
/**
|
||||
* The language cookie name
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public static $language_cookie = 'locale';
|
||||
|
||||
/**
|
||||
* Retrieve the language from the cookie or fall back on the default
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public static function getSessionLanguage()
|
||||
{
|
||||
return session(self::$language_cookie, env('DEFAULT_LANGUAGE', 'en'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the configured language cookie
|
||||
*
|
||||
* @param string
|
||||
* @return boolean
|
||||
*/
|
||||
public static function setSessionLanguage($language)
|
||||
{
|
||||
session([ self::$language_cookie => $language ]);
|
||||
return self::getSessionLanguage() == $language;
|
||||
}
|
||||
|
||||
/**
|
||||
* Take an array of strings and return the string associated with
|
||||
* the currently configured language or fall back on the default
|
||||
*
|
||||
* @param array
|
||||
* @return string
|
||||
*/
|
||||
public static function select($string_array)
|
||||
{
|
||||
$session_language = self::getSessionLanguage();
|
||||
$default_language = env('DEFAULT_LANGUAGE');
|
||||
$string = '';
|
||||
|
||||
if (array_key_exists($session_language, $string_array)) {
|
||||
$string = $string_array[$session_language];
|
||||
} else if (array_key_exists($default_language, $string_array)) {
|
||||
$string = $string_array[$default_language];
|
||||
}
|
||||
|
||||
return $string;
|
||||
}
|
||||
}
|
|
@ -240,6 +240,7 @@ return [
|
|||
'Newsletter' => Spatie\Newsletter\NewsletterFacade::class,
|
||||
'Image' => Intervention\Image\Facades\Image::class,
|
||||
'Excel' => Maatwebsite\Excel\Facades\Excel::class,
|
||||
'Language' => App\Utilities\Language::class,
|
||||
|
||||
]
|
||||
|
||||
|
|
21
readme.md
21
readme.md
|
@ -2,6 +2,27 @@
|
|||
|
||||
The Hypothetical website template
|
||||
|
||||
## Utilities
|
||||
|
||||
### Language
|
||||
|
||||
The default language is set by the `DEFAULT_LANGUAGE` variable in the `.env` file. This will be the language used until it is changed, which can be done using the `/language/{lang}` route or directly using `Language::setSessionLanguage($lang)` where in both cases `lang` is the language code for a given language.
|
||||
|
||||
In the view, a block of text can be configured with multiple languages using the following syntax:
|
||||
|
||||
```php
|
||||
@lang([
|
||||
'en' => "This is a sentence",
|
||||
'fr' => "C'est une phrase"
|
||||
])
|
||||
```
|
||||
|
||||
or
|
||||
|
||||
```php
|
||||
{{ Language::select([ 'en' => "This is a sentence", 'fr' => "C'est une phrase" ]) }}
|
||||
```
|
||||
|
||||
## Dashboard
|
||||
|
||||
Unless otherwise stated all examples in this section are to be added to `app/Http/Controllers/DashboardController.php`.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<html lang="{{ Language::getSessionLanguage() }}">
|
||||
@set('page_title', (isset($title) ? $title . ' - ' : '') . env('SITE_NAME'))
|
||||
@set('device_mobile', preg_match('/Mobi/', Request::header('User-Agent')) || preg_match('/iP(hone|ad|od);/', Request::header('User-Agent')))
|
||||
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
<?php
|
||||
|
||||
use App\Utilities\Language;
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Web Routes
|
||||
|
@ -25,6 +27,11 @@ Route::get('/contact', function() {
|
|||
return view('website.contact');
|
||||
});
|
||||
|
||||
Route::get('/language/{lang}', function($lang) {
|
||||
Language::setSessionLanguage($lang);
|
||||
return redirect()->back();
|
||||
});
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Authentication Routes
|
||||
|
|
Loading…
Reference in a new issue