Laravel 10 Google Translate Install Package Example

27-Apr-2023

.

Admin

Laravel 10 Google Translate Install Package Example

Hey Friends,

In this tute, we will discuss laravel 10 google translate package example. you can see laravel google translate a multi-language website. you can understand a concept of laravel multi-language google translate. you'll learn how to use google translate api in laravel. follow bellow step for how to use google translator in laravel.

Google Translate library used for multi-language websites without entering manually the translation of your website words. Laravel also provides a multi-language website using localization but you need to add every work on a configuration file. so using google translate you don't have to do anything.

You can use this example with laravel 6, laravel 7, laravel 8, laravel 9 and laravel 10 version.

Step 1: Install Laravel 10


This is optional; however, if you have not created the laravel app, then you may go ahead and execute the below command:

composer create-project laravel/laravel example-app

Step 2: Install Google Translate Package

In this step, we will install stichoza/google-translate-php composer package and add aliase on config file.

Let's run the below command with the config file.

composer require stichoza/google-translate-php

let's add aliase on app.php file:

config/app.php

<?PHP

...

...

...

'aliases' => Facade::defaultAliases()->merge([

'GoogleTranslate' => Stichoza\GoogleTranslate\GoogleTranslate::class

])->toArray(),

];

Step 3: Create Routes

In this step, we will create two routes one for displaying the dashboard page with a language drop-down and another for you can change language logic.

so add the below routes.

routes/web.php

<?php

use Illuminate\Support\Facades\Route;

use App\Http\Controllers\LangController;

/*

|--------------------------------------------------------------------------

| Web Routes

|--------------------------------------------------------------------------

|

| Here is where you can register web routes for your application. These

| routes are loaded by the RouteServiceProvider within a group which

| contains the "web" middleware group. Now create something great!

|

*/

Route::get('lang/home', [LangController::class, 'index']);

Route::get('lang/change', [LangController::class, 'change'])->name('changeLang');

Step 4: Create LangController Controller

At this point, now we should create a new controller as LangController. this controller will manage layout and change language dynamically logic, so put the below content in the controller file:

app/Http/Controllers/LangController.php

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App;

class LangController extends Controller

{

/**

* Display a listing of the resource.

*

* @return \Illuminate\Http\Response

*/

public function index()

{

return view('lang');

}

/**

* Display a listing of the resource.

*

* @return \Illuminate\Http\Response

*/

public function change(Request $request)

{

App::setLocale($request->lang);

session()->put('locale', $request->lang);

return redirect()->back();

}

}

Step 5: Create View

In Last step, let's create lang.blade.php(resources/views/lang.blade.php) for layout and we will write design code here and put following code:

resources/views/lang.blade.php

<!DOCTYPE html>

<html>

<head>

<title>Laravel 10 Google Translate Package Example - NiceSnippets.com</title>

<meta charset="utf-8">

<meta http-equiv="X-UA-Compatible" content="IE=edge">

<meta name="viewport" content="width=device-width, initial-scale=1">

<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>

</head>

<body>

<div class="container">

<div class="card">

<div class="card-header">

<h1>Laravel Google Translate Example - NiceSnippets.com</h1>

</div>

<div class="card-body">

<div class="row">

<div class="col-md-2">

<strong>Select Language: </strong>

</div>

<div class="col-md-4">

<select class="form-select changeLang">

<option value="en" {{ session()->get('locale') == 'en' ? 'selected' : '' }}>English</option>

<option value="fr" {{ session()->get('locale') == 'fr' ? 'selected' : '' }}>France</option>

<option value="es" {{ session()->get('locale') == 'es' ? 'selected' : '' }}>Spanish</option>

</select>

</div>

</div>

<h3>{{ GoogleTranslate::trans('Welcome to NiceSnippets.com', app()->getLocale()) }}</h3>

<h3>{{ GoogleTranslate::trans('Hello World', app()->getLocale()) }}</h3>

</div>

</div>

</div>

</body>

<script type="text/javascript">

var url = "{{ route('changeLang') }}";

$(".changeLang").change(function(){

window.location.href = url + "?lang="+ $(this).val();

});

</script>

</html>

Step 6: Create Middleware

In this file, we need to create one middleware that will manage the dynamic language that we selected on the dropdown. so let's create middleware using the bellow language.

php artisan make:middleware LanguageManager

Now you have to update the middleware file like below:

app/Http/Middleware/LanguageManager.php

<?php

namespace App\Http\Middleware;

use Closure;

use App;

class LanguageManager

{

/**

* Handle an incoming request.

*

* @param \Illuminate\Http\Request $request

* @param \Closure $next

* @return mixed

*/

public function handle($request, Closure $next)

{

if (session()->has('locale')) {

App::setLocale(session()->get('locale'));

}

return $next($request);

}

}

Now we need to register it to the kernel file. so let's add it as below:

app/Http/Kernel.php

<?php

namespace App\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel

{

....

/**

* The application's route middleware groups.

*

* @var array

*/

protected $middlewareGroups = [

'web' => [

\App\Http\Middleware\EncryptCookies::class,

\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,

\Illuminate\Session\Middleware\StartSession::class,

\Illuminate\View\Middleware\ShareErrorsFromSession::class,

\App\Http\Middleware\VerifyCsrfToken::class,

\Illuminate\Routing\Middleware\SubstituteBindings::class,

\App\Http\Middleware\LanguageManager::class,

],

'api' => [

'throttle:60,1',

\Illuminate\Routing\Middleware\SubstituteBindings::class,

],

];

...

Run Laravel App:

All the required steps have been done, now you have to type the given below command and hit enter to run the Laravel app:

php artisan serve

Now, Go to your web browser, type the given URL and view the app output:

http://localhost:8000/lang/home

English Language:

Franch Language:

Spanish Language:

I hope it can help you...

#Laravel 10