industryarena/laravel-subdomain-localization

此软件包已被废弃,不再维护。未建议替代软件包。

Laravel的子域名本地化支持

dev-master 2024-06-26 10:47 UTC

This package is auto-updated.

Last update: 2024-06-26 10:48:03 UTC


README

Laravel-Subdomain-Localization

Latest Stable Version Total Downloads Build Status

Laravel的子域名本地化支持。仅适用于 Laravel 5.4 版本(Fork LaurentEsc/Laravel-Subdomain-Localization

目录

安装

Composer

将Laravel-Subdomain-Localization添加到您的composer.json文件中。

"industryarena/laravel-subdomain-localization": "dev-master"

运行composer install以获取软件包的最新版本。

手动

建议使用Composer,但是您也可以从该存储库下载并安装。

Laravel

Laravel-Subdomain-Localization为Laravel提供了一个服务提供者。

要在您的Laravel应用程序中注册服务提供者,打开config/app.php并将以下行添加到providers数组中

	...
	LaurentEsc\Localization\LocalizationServiceProvider::class
	...

Laravel-Subdomain-Localization提供了2个外观:LocalizeRouter

如果您想使用它们,打开config/app.php并将以下行添加到aliases数组中

	...
    'Localize'  => LaurentEsc\Localization\Facades\Localize::class,
    'Router'    => LaurentEsc\Localization\Facades\Router::class,
	...

Laravel提供了一个中间件,可用于强制使用语言子域名。

如果您想使用它,打开app/Http/kernel.php并将该路由中间件添加到routeMiddleware数组中

	...
    'localize' => \LaurentEsc\Localization\Middleware\Localization::class,
	...

使用方法

区域设置检测

打开app/Providers/RouteServiceProvider.php并在boot方法中调用detectLocale()。例如,使用外观

	...
	use LaurentEsc\Localization\Facades\Localize;
	...
    public function boot(Router $router)
    {
        // This will guess a locale from the current HTTP request
        // and set the application locale
        Localize::detectLocale();
        
        parent::boot($router);
    }
	...

完成此操作后,您就无需再进行任何操作。Laravel应用程序的区域设置已设置,您可以使用其他区域依赖的Laravel组件(例如翻译)像平常一样使用。

中间件

如果您想强制某些路由使用语言子域名,您可以简单地分配提供的中间件,例如在app/Http/routes.php中如下所示

    // Without the localize middleware, this route can be reached with or without language subdomain
    Route::get('logout', 'AuthController@logout');
    
    // With the localize middleware, this route cannot be reached without language subdomain
    Route::group([ 'middleware' => [ 'localize' ]], function() {
    
        Route::get('welcome', 'WelcomeController@index');
    
    });

有关中间件的更多信息,请参阅Laravel文档

路由翻译

如果您想使用翻译的路线(en.yourdomain.com/welcome,fr.yourdomain.com/bienvenue),请按照以下步骤操作

首先,为支持的语言创建语言文件

resources/lang/en/routes.php:

    return [
    
        // route name => route translation
        'welcome' => 'welcome',
        'user_profile' => 'user/{username}',
    
    ];

resources/lang/fr/routes.php:

    return [
    
        // route name => route translation
        'welcome' => 'bienvenue',
        'user_profile' => 'utilisateur/{username}',
    
    ];

然后,这是在app/Http/routes.php中定义翻译路线的方法

    Route::group([ 'middleware' => [ 'localize' ]], function() {
    
        Route::get(Router::resolve('routes.welcome'), 'WelcomeController@index');
    
    });

当然,您可以随意命名语言文件,并将适当的前缀(例如示例中的routes.)传递给resolve()方法。

配置

配置文件

要编辑默认软件包配置,请运行以下Artisan命令

php artisan vendor:publish --provider="LaurentEsc\Localization\LocalizationServiceProvider" --tag="config"

完成后,您将在config/localization.php中找到配置文件。

配置值

  • available_locales(默认:['en', 'de']

路由系统接受的区域设置数组。

  • cookie_localization(默认:true

使用此选项启用或禁用区域设置检测期间使用cookie。

  • browser_localization(默认:true

使用此选项启用或禁用区域设置检测期间使用浏览器设置。

  • cookie_name(默认:'locale'

在此处您可以更改用于保存区域设置的cookie的名称。此选项仅在启用cookie本地化时使用。

  • domain(默认:env('DOMAIN')

在这里您可以更改应用程序中使用的域名。默认情况下,域名是从 .env 文件中读取的。

有用的函数

该包提供了一些有用的函数,您可以在视图中使用 - 例如 -

翻译当前 URL

    <a href="{{ Router::current('fr') }}">See the french version</a>

使用 Router::current(string $locale) 生成当前路由的替代版本。这将返回一个包含正确子域的 URL,并在必要时翻译 URI。

获取当前 URL 的替代版本

    @foreach (Router::getCurrentVersions() as $locale => $url)
    <a href="{{ $url }}">{{ $locale }}</a>
    @endforeach

使用 Router::getCurrentVersions(bool $excludeCurrentLocale = true) 获取当前路由的所有本地化版本。这将返回一个包含 $locale => $url 的数组,您可以使用它来生成链接到替代版本。

false 作为 $excludeCurrentLocale 的参数传递,以让函数也返回当前语言环境的条目。

获取给定路由的本地化版本

    <a href="{{ Router::url('user_profile', [ 'username' => 'JohnDoe' ], 'fr') }}">See JohnDoe's profile</a>

使用 Router::url($routeName, $routeAttributes = null, $locale = null) 生成给定路由的替代版本。这将返回一个包含正确子域的 URL,并在必要时翻译 URI。

如果需要,您可以传递路由参数。如果您没有指定特定的语言环境,它将使用当前语言环境。

变更日志

要查看最新版本中的更改,请参阅 变更日志

许可协议

此软件包受 MIT 许可证 许可。