我想向我的網站添加多語言支持,但我不知道如何最好地實現它。 Laravel文檔(https://laravel.com/docs/5.3/localization)非常少見,因此我已經做了一些研究,但似乎每個人都使用不同的解決方案,並且正在使用其中包含語言的URL - 例如example.com/en/pagename
。如何使用SESSION向Laravel 5.3添加多語言
我想要一個沒有語言標記的URL架構。事情是這樣的:example.com/pagename
現在,根據用戶的語言,該URL應譯爲:
example.com/pagename (english)
example.com/seitenname (german)
最初的語言應該通過瀏覽器設置/語言檢測。用戶還應該有選擇在提供的語言之間切換。
在我的網站上,用戶可以註冊一個帳戶。他將能夠將他的首選語言保存在數據庫中 - 比如users
中的表pref_lang
。爲了在這種情況下保持簡單,它只是一個像「en」(英語)或「德」(德語)的字符串。
翻譯的路線很容易通過創建這樣的語言文件:
// resources/lang/de/routes.php
return array(
'contact' => 'kontakt',
'pagename' => 'seitenname'
);
...,一個用於EN:
// resources/lang/en/routes.php
return array(
'contact' => 'contact',
'pagename' => 'pagename'
);
......這樣的路線,例如combinded:
// routes/web.php
Route::get('/', function() {
return view('pages.dashboard');
});
Route::get('/{contact}', function() {
return view('pages.contact');
});
Route::get('/{pay2gether-system}', function() {
return view('pages.pagename');
});
現在只是一個問題,我如何創建這樣一個「語言切換」按鈕,將語言從瀏覽器設置/切換操作或從SESSION中的數據庫中獲取數據,以及如何將其重用爲HTML <a href="#">
標記中的路由和URL?
謝謝,但Laravel從瀏覽器中讀取第一個/默認語言,如果它尚未設置在數據庫中,它在哪裏?這是缺少,或?另外:我不想像'{{url('/')那樣存儲語言。 '?language ='。 $ language}}',但在cookie/session中。這不可能嗎? – user2966991
數據庫中有一個默認值,它被設置爲'en'。你可以改變它到任何你想要的。 – tomirons