Laravel 5 – Dil (Language) Sistemi

19 yorum

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>

Yorumlar (19)

Tayfun Erbilen demiş ki;

@Atilla akar, ikisi farklı şeyler. Bu Laravel altyapısı kullanarak yapacağın yöntem, diğeri kendi kodlarınla yapabileceğin yöntem :)

Atilla akar demiş ki;

https://www.youtube.com/watch?v=cWtfNWMnXmI&index=5&list=PLfAfrKyDRWrHZG1YIJS7B_uWAIHDpud65&t=3s Hocam bu sistem saglıklımı sizin eski Dil destegi olan hangisini önerirsiniz acaba

Mert Ali demiş ki;

Laravel eğitimi neden bu kadar az ki.

Ronaldo demiş ki;

Teşekkürler

Tural Ziyatkhanli demiş ki;

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

emr k demiş ki;

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

Mr Gokceoglu demiş ki;

Hocam senin bu konuylada ilgili derslerini bekliyoruz

Tayfun Erbilen demiş ki;

@Halil BILGIN, orası tartışılır tabi. Ama sıkıntı yok, google her türlü doğru yolu bulacaktır :)

Halil BILGIN demiş ki;

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.

Mert Ali demiş ki;

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.

Fatih Görhan demiş ki;

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

Remzi demiş ki;

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.

Hamza Yılmaz demiş ki;

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

Uğur Özgen demiş ki;

Teşekkürler.

Tayfun Erbilen demiş ki;

@Yakup TAŞLIBEYAZ, tercih sizin tabi, ama yine de laravel 5 ile proje geliştirmekte keyifli, öneririm.

Yakup TAŞLIBEYAZ demiş ki;

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ış :D

Tayfun Erbilen demiş ki;

@ERAY HAN, işkence olan nedir ki :) Her şey gayet düzenli ve mantıklı.

ERAY HAN demiş ki;

framework'lerin işi kolaylaştırması lazım diye biliyorum bu bildiğin işkence :D

Zahid Efe demiş ki;

Abi Laravel'e de mi el attın yaa :D :D Allah başarılarının devamını nasip etsin. Kolay gelsin :)

Yorum Gönder