webnuvola/laravel-i18n

Laravel 国际化包

v2.2.0 2024-03-06 15:51 UTC

README

Latest Version on Packagist GitHub Tests Action Status Total Downloads

此包允许您为 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)。有关更多信息,请参阅许可证文件