Laravel 5 – Dil (Language) Sistemi

Laravel 5 ile proje geliştiren arkadaşlar için, dil sisteminin kullanımını anlatmak istiyorum.
4. sürüme göre biraz daha farklı bir konsepti var, malum filter’lar gitti middleware geldi vs. (4’ü hiç kullanmadığım için tam emin değilim ama neyse :D)



Videoda anlatırken düzenlediğim ve oluşturduğum dosyaların kodları aşağıdadır;

app/Http/routes.php

<?php

Route::get('/', '[email protected]');
Route::get('/lang/{lang}', '[email protected]');

app/Http/Kernel.php

<?php namespace App\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel {

	/**
	 * The application's global HTTP middleware stack.
	 *
	 * @var array
	 */
	protected $middleware = [
		'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode',
		'Illuminate\Cookie\Middleware\EncryptCookies',
		'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse',
		'Illuminate\Session\Middleware\StartSession',
		'Illuminate\View\Middleware\ShareErrorsFromSession',
		'App\Http\Middleware\VerifyCsrfToken',
		'App\Http\Middleware\Lang'
	];

	/**
	 * The application's route middleware.
	 *
	 * @var array
	 */
	protected $routeMiddleware = [
		'auth' => 'App\Http\Middleware\Authenticate',
		'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth',
		'guest' => 'App\Http\Middleware\RedirectIfAuthenticated',
	];

}

app/Http/Controllers/HomeController.php

<?php namespace App\Http\Controllers;

use App\Http\Requests;
use App\Http\Controllers\Controller;

use Illuminate\Http\Request;

class HomeController extends Controller {

	/**
	 * Display a listing of the resource.
	 *
	 * @return Response
	 */
	public function index()
	{
		return view('home');
	}

}

app/Http/Controllers/LangController.php

<?php namespace App\Http\Controllers;

use App\Http\Requests;
use App\Http\Controllers\Controller;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\Session;

class LangController extends Controller {

	/**
	 * Display a listing of the resource.
	 *
	 * @return Response
	 */
	public function index($lang)
	{
        $langs = ['tr', 'en'];
        if ( in_array($lang, $langs) ){
            Session::set('lang', $lang);
            return Redirect::back()->with('lang_msg', 'Dil değiştirildi.');
        }
	}

}

app/Http/Middleware/Lang.php

<?php namespace App\Http\Middleware;

use Closure;
use Illuminate\Support\Facades\Session;

class Lang {

	/**
	 * Handle an incoming request.
	 *
	 * @param  \Illuminate\Http\Request  $request
	 * @param  \Closure  $next
	 * @return mixed
	 */
	public function handle($request, Closure $next)
	{

        if ( $lang = Session::get('lang') ){
            \Lang::setLocale($lang);
        }

		return $next($request);

	}

}

resources/lang/en/home.php

<?php

return [
    'hello' => 'Hello World!'
];

resources/lang/tr/home.php

<?php

return [
    'hello' => 'Merhaba Dünya!'
];

resources/views/home.blade.php

<!doctype html>
<html lang="en">
<head>

    <meta charset="UTF-8">
    <title>Document</title>

</head>
<body>

@if( $lang_msg = session('lang_msg') )
<p style="background: yellow; padding: 10px;">
    {{ $lang_msg }}
</p>
@endif

<h3>{{ Lang::get('home.hello') }}</h3>

Site Mevcut Dili: {{ Lang::getLocale() }} <br/> <br/>

Dil Değiştir: <a href="{{ url('lang/tr') }}">Türkçe</a> | <a href="{{ url('lang/en') }}">İngilizce</a>

</body>
</html>

Yayınlayan

Tayfun Erbilen

2009’dan beri web işleriyle uğraşan, aynı zamanda amatör müziklede ilgilenen sıradan birisi..

“Laravel 5 – Dil (Language) Sistemi” üzerine 20 yorum

  1. Abi Laravel’e de mi el attın yaa 😀 😀 Allah başarılarının devamını nasip etsin. Kolay gelsin 🙂

  2. framework’lerin işi kolaylaştırması lazım diye biliyorum bu bildiğin işkence 😀

  3. Merhaba Tayfun;
    laravel 4.2 sürümünü öneririrm laravel 5 çok karışık geldi bana 4.2. devam ediyorum ama bana göre 4.2 le 5 arasında fark seviyesi biraz fazla ERAY HAN ARKADAŞIMIZ ‘A KATILIYORUM Pardon Eli Shift Tuşuna Basılı Kalmış 😀

  4. Laravel 5 videolarının devamını bekliyoruz. Sizin kadar açıklayıcı video çeken pek bulunmuyor. Lütfen dikkate alın.

  5. Laravel’e el atman güzel olmus 🙂 Laravel’in tek sorunu, iki de bir Büyük (Major) Güncelleme cikarmasiydi. Bunuda 5.1 ile cözdüler.

  6. Usta laraveli baştan anlatıp ders ders yaparsan çok iyi olur eskigünlerdeki gibi 🙂 şöyle laravel ile blog yazsak çok iyi olur inşallah yaparsın

  7. Laravel 5 ile Bir Blog Scripti Yazma(BBSY) 🙂 Projesini tekrar hayata geçirirseniz çok sevinirim. Not: Galiba bu aralar çok yoğunsunuz ki diğer derslerden bile video yayınlamıyorsunuz. İyi Günler.

  8. Bir önerim var. Videodaki sistem SEO açısından yeterli olmayabilir. Örneğin, Google index’lerken muhtemelen varsayılan olan ingilizceyi indexleyecek. Yada karışık olarak yapacak. Çünkü link’te dili belirten ayrım yok. Bu yüzden dili ya sub domain olarak ya da siteismi.com/tr/Home/index şeklinde domain’den sonra belirtmeniz daha mantıklı bana göre.

  9. Laravel5 baştan anlatıp ders verseniz gerçekten çok iyi olur 🙂 Bağış kutusu da koy 😀 her bölüm için bağış yaparım 😀

  10. ERAY HAN her dil ogrenmeden once isgencedir. Bunu bir dil ogrenme gibi dusune bilirsin. Ama ogrendikden sonra cok kolay yaparsin islerini.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir