vsamovarov / laravel-localizer
为 Laravel 提供非常简单的本地化
Requires
- php: ^7.2
- laravel/framework: ^6.0||^7.0||^8.0
Requires (Dev)
- orchestra/testbench: ^4.0
- orchestra/testbench-browser-kit: ^4.0
- phpunit/phpunit: ^8.0
Suggests
- ext-intl: *
This package is auto-updated.
Last update: 2024-09-04 17:56:50 UTC
README
简单的 Laravel 本地化。本地化值从 URL 中提取。
- 可翻译路由
- 可以在 URL 中隐藏默认的本地化
- 支持缓存
- 支持命名路由
安装
使用 Composer 安装
composer require vsamovarov/laravel-localizer
... 选项
php artisan vendor:publish --provider="VSamovarov\LaravelLocalizer\LocalizerServiceProvider"
用法
路由分组
Laravel Localizator 为每个本地化创建路由分组,并预设 'prefix' 和 'as' 参数。
使用宏,使语法类似于路由组声明。
例如
routes/web.php
Route::localizedGroup([], function () { Route::get('/','Controller@metod')->name('home'); Route::get('article/about','Controller@metod')->name('about'); } );
将为预定义的语言 en, ru, uk 创建路由
默认情况下,URL 中的语言前缀会被隐藏。
可以通过配置文件中的 hideDefaultLocaleInURL
选项来改变行为。
那么将创建这样的路由
在主页上的额外路由,重复了默认本地化的页面
翻译后的路由
您可以将您的路由进行翻译。例如...
http://example.com/en/article/about, http://example.com/ru/statya/o-nas(俄语)
... 将重定向到同一控制器/视图。
需要为相应的本地化创建翻译文件,默认为 routes.php
,在其中为每个 URL 的 段 设置翻译。
如果未找到匹配,则段将保持不变。
例如
// resources/lang/ru/routes.php return [ "article" => "statya", "about" => "o-nas" , ];
// routes/web.php Route::localizedGroup([], function () { Route::get('article/about','Controller@metod')->name('about'); } );
将为预定义的语言 en, ru 创建路由
请注意,不需要任何额外的代码来翻译路由。
命名路由
命名路由可以通过辅助函数方便地获取
$url = t_route('about'); $url = t_route('article', ['id'=>'24']); //с параметрами $url = t_route('article', [],'ru'); //с указаной локалью
这简化了需要指定复杂前缀的构造
// $url = t_route('article', ['id'=>'24']); $url = route(app('localizer')->getNamePrefix() . app()->getLocale() . '.' .'article', ['id'=>'24']);
配置
库的配置位于配置文件 'config/laravel-localizer.php' 中
本地化在 'supportedLocales' 部分,通过数组定义。例如
'supportedLocales' => [ 'uk' => ['name' => 'Ukrainian', 'script' => 'Cyrl', 'native' => 'українська', 'regional' => 'uk_UA'], 'en' => ['name' => 'English', 'script' => 'Latn', 'native' => 'English', 'regional' => 'en_GB'], 'ru' => ['name' => 'Russian', 'script' => 'Cyrl', 'native' => 'русский', 'regional' => 'ru_RU'], ],
数组中的第一个将被设置为默认语言。
中间件
应用程序的本地化通过 'LocalizerMiddleware' 中间件按 URL 确定。
中间件会自动安装到 'web' 组
不需要对代码进行任何额外操作.
许可
MIT 许可证(MIT)。请参阅 许可文件 获取更多信息。