天天看點

php多語言插件,laravel 多語言插件 laravel-localization

項目下輸入: composer require mcamara/laravel-localization

在 config/app.php

'providers' => [

// [...]

Mcamara\LaravelLocalization\LaravelLocalizationServiceProvider::class,

],

'aliases' => [

// [...]

'LaravelLocalization' => Mcamara\LaravelLocalization\Facades\LaravelLocalization::class,

],

然後輸入指令:

~ php artisan vendor:publish –provider="Mcamara\LaravelLocalization\LaravelLocalizationServiceProvider"

然後 在 config/laravellocalization.php 配置你的語言配置,把zh 注釋打開。

你也可以使用另一種方式,單獨配置語言檔案conf

建立 app/providers/ConfigServicePovider.php 檔案

輸入如下内容,并添加到config/app.php ( App\Providers\ConfigServiceProvider::class )

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class ConfigServiceProvider extends ServiceProvider {

public function register()

{

config([

'laravellocalization.supportedLocales' => [

'en' => array( 'name' => 'English', 'script' => 'Latn', 'native' => 'English' ),

'zh' => ['name' => 'Chinese (Simplified)', 'script' => 'Hans', 'native' => '簡體中文', 'regional' => 'zh'],

],

'laravellocalization.useAcceptLanguageHeader' => true,

'laravellocalization.hideDefaultLocaleInURL' => true

]);

}

然後在配置路由,在routes/web.php增加:

Route::group(['prefix' => LaravelLocalization::setLocale()], function()

{

Route::get('/', function()

{

return trans('welcome.name');

});

});

在resources增加對應zh目錄,建立welcome.php

内容為:

return [‘name’=>’你好’];

在resources增加對應en目錄,建立welcome.php

内容為:

return [‘name’=>’hello’];

然後通路

域名.com/en

域名.com/cn

域名.com

就可以看到翻譯檔案生效了

中間件形式

在 app/Http/Kernel.php 添加如下内容

use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel {

protected $routeMiddleware = [

'localize' => \Mcamara\LaravelLocalization\Middleware\LaravelLocalizationRoutes::class,

'localizationRedirect' => \Mcamara\LaravelLocalization\Middleware\LaravelLocalizationRedirectFilter::class,

'localeSessionRedirect' => \Mcamara\LaravelLocalization\Middleware\LocaleSessionRedirect::class,

'localeViewPath' => \Mcamara\LaravelLocalization\Middleware\LaravelLocalizationViewPath::class

// REDIRECTION MIDDLEWARE

];

}

路由檔案這樣寫:

// app/Http/routes.php

Route::group(

[

'prefix' => LaravelLocalization::setLocale(),

'middleware' => [ 'localeSessionRedirect', 'localizationRedirect', 'localeViewPath' ]

],

function()

{

Route::get('/', function()

{

return View::make('hello');

});

Route::get('test',function(){

return View::make('test');

});

});