sheepy85/l5-localization

Laravel 5 的简单本地化中间件

v1.0.4 2014-10-30 15:00 UTC

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 ) 获取可用的本地化简码,可选空第一行