syscover / langlocale
该软件包已被废弃,不再维护。作者建议使用syscover/navTools软件包。
NavTools软件包
v3.0.9
2017-03-29 16:02 UTC
Requires
- php: >=5.6.4
README
安装
1 - 在命令行运行
composer require syscover/laravel-nav-tools
2 - 注册服务提供者,在文件config/app.php中添加到providers数组
Syscover\NavTools\NavToolsServiceProvider::class,
3 - 要发布软件包,必须在控制台中输入
php artisan vendor:publish --provider="Syscover\NavTools\NavToolsServiceProvider"
4 - 注册中间件pulsar.navTools,在文件app/Http/Kernel.php中添加到routeMiddleware数组
'pulsar.navTools' => \Syscover\NavTools\Middleware\NavTools::class,
通用配置环境值
在环境文件.env中设置NAVTOOLS_URL_TYPE选项
设置您网站的URL类型,您有三种类型:lang、country或lang-country,对于URL类型lang
NAVTOOLS_URL_TYPE=lang
您可以处理这些URL
hrrp://mydomain.com/en/any-page
对于URL类型country
NAVTOOLS_URL_TYPE=country
您可以处理这些URL
hrrp://mydomain.com/us/any-page
对于URL类型lang-country
NAVTOOLS_URL_TYPE=lang-country
您可以处理这些URL
hrrp://mydomain.com/en-us/any-page
在环境文件.env中设置NAVTOOLS_LANGS选项
设置您网站中可用的国家
NAVTOOLS_LANGS=en|es
在环境文件.env中设置NAVTOOLS_COUNTRIES选项
设置您网站中可用的国家
NAVTOOLS_COUNTRIES=us|gb|es
在环境文件.env中设置NAVTOOLS_DEFAULT_COUNTRY选项
设置您网站的默认国家
NAVTOOLS_DEFAULT_COUNTRY=es
使用NavTools进行路由
在app\Http\routes.php文件中使用此闭包实现具有翻译的路由
Route::group(['middleware' => ['pulsar.navTools']], function() {
// write here your routes
});
路由配置
您有多个URL配置选项,取决于所选的NAVTOOLS_URL_TYPE参数
使用lang变量编写您的路由
Route::group(['middleware' => ['pulsar.navTools']], function() {
Route::get('/', function(){ return view('www.index'); });
Route::get('{lang}', function(){ return view('www.index'); });
Route::post('{lang}/contact', ['as'=>'contact', 'uses'=>'FrontEndController@contact']);
});
或在您的路由中设置lang变量
Route::group(['middleware' => ['pulsar.navTools']], function() {
Route::get('/', function(){ return view('www.index'); });
Route::get('en', function(){ return view('www.index'); });
Route::get('es', function(){ return view('www.index'); });
Route::post('en/contact', ['as' => 'contact-en', 'uses'=>'FrontEndController@contact']);
Route::post('es/contacto', ['as' => 'contact-es', 'uses'=>'FrontEndController@contact']);
});
或在您的路由中设置常量lang但country变量
Route::group(['middleware' => ['pulsar.navTools']], function() {
Route::get('/', function(){ return view('www.index'); });
Route::get('/en-{country}', function(){ return view('www.index'); });
Route::get('/es-{country}', function(){ return view('www.index'); });
Route::post('en-{country}'/contact', ['as' => 'contact-en', 'uses'=>'FrontEndController@contact']);
Route::post('es-{country}'/contacto', ['as' => 'contact-es', 'uses'=>'FrontEndController@contact']);
});
或使用lang和country变量获取语言值。
Route::group(['middleware' => ['pulsar.navTools']], function() {
Route::get('/', function(){ return view('www.index'); });
Route::get('/{lang}-{country}', function(){ return view('www.index'); });
Route::post('/{lang}-{country}/contact', ['as' => 'contact-en', 'uses'=>'FrontEndController@contact']);
});
在您的应用程序中获取值
您可以使用这些助手获取lang和country值。
user_country(); // to get country user
user_lang(); // to get language user
设置路由时,您需要根据NAVTOOLS_URL_TYPE添加lang或country参数。
route('routeName', ['lang' => 'en', 'country' => 'us']);
您可以使用自定义助手nt_route(),此助手会自动插入lang和country变量,除非您指定这些变量。
nt_route('routeName');
您可以使用redirect()助手而不会有任何麻烦,我们已经扩展了Laravel核心,使redirect()->route()与nt_route()做相同的事情。
如果您想更改语言或国家,您必须使用这些助手
change_language('en');
change_country('us');
许可
NavTools是开源软件,根据MIT许可授权。