我想创建一个多语言(国家)的项目,如 EN-US , EN-UK , ZH-CN 。 EN-US和EN-UK网站将具有相同的内容与不同的货币,但对于作为中国用户的网站的ZH-CN网站,它将具有不同的内容,例如页脚将不具有社交媒体链接(比如facebook,twitter,youtube,因为这项服务在中国是阻止的。)
每个网站都可以使用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 :(得分: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\ReportsController@index' ]);
});
在您的控制器中,您可以执行以下操作:
public function index($projectSlug) {
...
$domain = Domain::findorFail($projectSlug->id);
..
return view('domain.view', compact('domain'));
..
每个域及其名称都保存在数据库中。现在,如果用户访问该网站,laravel正在寻找此域名。 Et voila - 你有一个多域Laravel应用程序:)