sheepy85 / l5-localization
Laravel 5 的简单本地化中间件
v1.0.4
2014-10-30 15:00 UTC
Requires
- php: >=5.4.0
- illuminate/support: 5.0.*
This package is not auto-updated.
Last update: 2024-09-24 01:53:22 UTC
README
Laravel 5 的简单本地化中间件,用于使动态前缀的路由名称指向相同的控制器操作。
特性
- SEO 优化友好的 URL 生成:example.com/news, example.com/en/news, example.com/es/noticias, example.com/fr/nouvelles
- 会话存储的本地化数据。
- 本地化前缀路由名称
- 存储有模型名称的 Lang 文件中的路由 URL
- 路由缓存
外观别名:Locale
设置
步骤 1:添加到堆栈
// App\Http\Kernel.php protected $stack = [ ... 'Sheepy85\L5Localization\Middleware\Localization', ];
步骤 2:使用 routes.php 文件
// App\Providers\RouteServiceProvider.php public function map( Router $router ) { require app_path( 'Http/routes.php' ); // uncomment }
步骤 3:添加 ServiceProvider
// config/app.php 'providers' => [ ... 'Sheepy85\L5Localization\L5LocalizationServiceProvider' , ] ,
步骤 4:使用文件生成器
> php artisan locale:select en es fr
使用 -l 或 --list 获取本地化简码的完整列表
示例
项目文件夹中的示例文件。
Locale::locales()
在 config/locale.php 中查找,将可选参数设置为 true
以生成原始 URL,Locale::router()
返回 Laravel 路由实例,只接受 [get, post, put, delete, patch]
方法
为所有语言生成 route:cache
1 个参数:如果您的路由语言文件不包含路由名称,请将其用作原始 URI 2 个参数:路由名称 3 个参数:操作 4 个参数:本地化简码
// routes.php foreach ( Locale::codes( true ) as $code ) { // or //foreach ( Locale::locales( true ) as $code => $locale ) { Route::group( [ 'namespace' => '\App\Http\Controllers' , 'prefix' => $code , ] , function() use( $code ) { Locale::router()->get( '/' , 'home' , 'HomeController@index' , $code ); Locale::router()->get( 'routes.news' , 'news' , 'HomeController@news' , $code ); Locale::router()->post( 'login' , 'login' , 'AuthController@login' , $code ); } ); }
结果
GET|HEAD / | home | App\Http\Controllers\HomeController@index GET|HEAD news | news | App\Http\Controllers\HomeController@news POST login | login | App\Http\Controllers\AuthController@login GET|HEAD en | en.home | App\Http\Controllers\HomeController@index GET|HEAD en/news | en.news | App\Http\Controllers\HomeController@news POST en/login | en.login | App\Http\Controllers\AuthController@login GET|HEAD hu | hu.home | App\Http\Controllers\HomeController@index GET|HEAD hu/hirek | hu.news | App\Http\Controllers\HomeController@news POST hu/belepes | hu.login | App\Http\Controllers\AuthController@login
生成 URL
带有会话当前区域设置的辅助工具
{{ lroute('news') }}
或 Laravel 的辅助工具,注意需要在 Illuminate\Foundation\helpers.php
文件中注释掉原始函数
{{ route('news') }}
API Locale:
has()
确定本地化状态get()
获取当前本地化set( $locale )
设置当前本地化flush()
取消设置会话变量exist( $locale )
确定本地化可调整notExist( $locale )
确定本地化不可调整fallback()
设置回退本地化locale()
获取当前本地化name()
获取当前本地化的英文名称native()
获取当前本地化的本地名称script()
获取当前本地化的代码脚本direction()
获取当前本地化的阅读方向locales( $withNull = false )
获取可用的本地化,可选空第一行codes( $withNull = false )
获取可用的本地化简码,可选空第一行