webnuvola / laravel-i18n
Laravel 国际化包
v2.2.0
2024-03-06 15:51 UTC
Requires
- php: ^8.1
- laravel/framework: ^9.0||^10.0||^11.0
Requires (Dev)
- orchestra/testbench: ^7.0||^8.0||^9.0
- pestphp/pest: ^1.0||^2.34
README
此包允许您为 Laravel 应用注册 i18n 路由。
安装
通过 composer 安装
composer require webnuvola/laravel-i18n
安装后,您必须发布配置文件并根据需要设置。
php artisan vendor:publish --provider="Webnuvola\Laravel\I18n\I18nServiceProvider" --tag="config"
配置
发布后,配置将位于 config/i18n.php
。
您必须配置至少一个区域才能使用此包。
示例配置
<?php return [ /* |-------------------------------------------------------------------------- | Available regions |-------------------------------------------------------------------------- | | List of languages and countries to view your site in the format {language}-{country}. | Available languages: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes | Available countries: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 | Examples: en-us, en-gb, it-it, ... | */ 'regions' => [ 'en-us', 'en-gb', ], /* |-------------------------------------------------------------------------- | Default region |-------------------------------------------------------------------------- | | The default region that will be assigned if running from console or current | route is not i18n. If null, the first element of regions will be used | as default. | */ 'default' => null, ];
使用方法
在 routes/web.php
中定义 i18n 路由
use Illuminate\Routing\Router; use Webnuvola\Laravel\I18n\Facades\I18nRoutes; I18nRoutes::group(static function (Router $router): void { Route::get('/', [HomeController::class, 'show'])->name('home'); Route::get('/profile', [ProfileController::class, 'show'])->name('profile.show'); });
这将注册以下路由(使用上一步骤的配置文件)
I18n 函数
要设置或获取当前区域,您可以使用以下方法
use Webnuvola\Laravel\I18n\Facades\I18n; I18n::setRegion('en-us'); I18n::getRegion(); // en-us I18n::getCountry(); // us I18n::getLanguage(); // en
辅助函数
此包将通过添加 i18n 支持来扩展默认 Laravel 辅助函数
url() -> i18n_url()
I18n::setRegion('en-us'); url('page'); // /page i18n_url('page'); // /en-us/page
route() -> i18n_route()
I18n::setRegion('en-us'); route('profile.show'); // /profile i18n_route('profile.show'); // /en-us/profile // If you want a fixed region i18n url route('en-gb.profile.show'); // /en-gb/profile
redirect() -> i18n_redirect()
I18n::setRegion('en-us'); redirect('redirect-page'); // /redirect-page i18n_redirect('redirect-page'); // /en-us/redirect-page
安全
如果您发现任何与安全相关的问题,请通过电子邮件fabio@webnuvola.com报告,而不是使用问题跟踪器。
致谢
许可证
MIT 许可证(MIT)。有关更多信息,请参阅许可证文件。