翻译Laravel路线参数

时间:2018-03-23 17:44:16

标签: php laravel routes localization

我使用Laravel 5.6并尝试找出翻译路线的最佳方法。

我使用顶级域名对区域设置进行排序,以便

mydomain.pt -> locale pt
mydomain.es -> locale es
mydomain.com -> locale en

我创建了一个中间件来处理这个

class Language
{

    public function handle($request, Closure $next)
    {
        $url_array = explode('.', parse_url($request->url(), PHP_URL_HOST));
        $top_domain = end($url_array);

        if(!empty($top_domain)){
            App::setLocale($top_domain);
        }
    }
}

这很正常,当我切换域时,各个文件中的翻译字符串都能正常工作。

但是,我希望能够出于搜索引擎优化的目的,拥有像这样的链接

mydomain.pt/dynamic/perto-de-mim
mydomain.es/dynamic/cerca-de-mi
mydomain.com/dynamic/near-me

在laravel中获得路线的最佳方法是什么

Route::get('{category}/near-me/', 'ServicesController@nearMe');

使用上面的所有示例?

谢谢

1 个答案:

答案 0 :(得分:0)

Laravel允许您提供translation string

/resources
    /lang
        /en
            routes.json
        /es
            routes.json

在resources / lang / es / routes.json中:

{
    "near-me": "cerca-de-mi"
}

你的路线变成了:

Route::get('{category}/' . __('routes.near-me') . '/', 'ServicesController@nearMe');

您可以在此处看到使用Laravel辅助方法 __()从xx / routes.json文件中检索转换。