2015-11-02 54 views
2

我想創建一個多語言(國家)項目,如EN-USEN-UKZH-CN。 EN-US和EN-UK網站的內容與貨幣不同,但對於中國用戶的網站ZH-CN網站來說,它會有不同的內容,比如頁腳不會有社交媒體鏈接(如facebook,twitter,youtube,因爲這項服務在中國是封鎖的)。在Laravel 5中創建多語言(國家)網站的最佳方式是什麼?

每個網站都能夠在兩到三種語言(如EN-US網站)之間切換,用戶可以在英語和西班牙語之間切換。我知道如何在語言之間切換。

我目前不知道該怎麼做的是創建路線以及如何輸出不同的內容。像我一樣硬編碼路由,如在手工編寫/en-us,/en-uk,/zh-cn進入routes.php文件併爲每個路由輸出不同的內容。

硬編碼的路線和輸出的意見(只是一個例子)

Route::group(['domain' => 'mysite.local'], function() { 
    Route::get('/en-us', function() { 
     return view('english.home'); 
    }); 
    Route::get('/zh-cn', function() { 
     return view('chinese.home'); 
    }); 
}); 

有誰知道一個更好的方式來創建這種類型的網站。任何幫助表示讚賞。

謝謝你

+0

看看文檔:http://laravel.com/docs/5.1/localization – Daan

+0

@達安這不是我想要的,正如我上面提到的我知道如何在語言之間切換。 tks回覆 – Paper9oll

+0

您在問如何創建路線,以及他們是否在文檔中提及它。 – Daan

回答

1

我做了一些非常相似的事情,它工作得很好。 我的繼承人多領域L4 APP

應用程序的快速片段/ HTTP/routes.php文件

use App\Domain; 

Route::bind('tld', function($value, $route) 
{ 
    $project = $route->getParameter('projectSlug'); 
    if($project->tld !== $value) 
     App::abort(404); 
    return $value; 
}); 
Route::bind('projectSlug', function($value, $route) 
{ 
    return Domain::where('slug', '=', $value)->firstOrFail(); 
}); 
// routes.php 
Route::group(['domain' => '{projectSlug}.{tld}'], function($projectSlug) 
{ 
    Route::get('/', [ 'as' => 'index.index', 'uses' => 'Frontend\[email protected]' ]); 
}); 

而在你的控制器,你可以這樣做:

public function index($projectSlug) { 
... 
$domain = Domain::findorFail($projectSlug->id); 
.. 
return view('domain.view', compact('domain')); 
.. 

每個域法它的名字保存在數據庫中。現在,如果用戶訪問該網站,laravel正在尋找這個域名。 Et瞧 - 你有一個多域的Laravel應用:)

相關問題