ied3vil/language-switcher

Laravel 语言切换器

1.1.1 2017-11-01 12:08 UTC

This package is not auto-updated.

Last update: 2024-09-14 19:14:47 UTC


README

Laravel 语言切换器包

描述

此包提供了一个易于使用的语言切换器,您可以使用多种配置选项在项目中使用。它会自动启动到您的Laravel项目中,设置区域设置,并在需要时切换语言。

提供的配置支持动态数组的不同选项,以调整包的功能以满足您的需求,而默认提供的配置将允许您在安装后立即使用包,几乎不需要额外的工作。

我知道它可能看起来非常简单,也许过于复杂,但您不需要在简单的事情上浪费时间和精力。

安装

要安装此包,只需运行 composer require ied3vil/language-switcher 并按照说明进行操作。如果您想手动将其添加到 composer.json,只需打开 composer.json 并搜索 "autoload" 字段,然后添加

composer require ied3vil/language-switcher

安装包后,您应该在控制台中运行 vendor:publish 命令,以便包将配置文件发布到您的应用程序中。即使不执行此步骤,所有配置选项也有回退 - 然而,这可能会影响未来的使用,因此建议不要跳过 vendor:publish 命令。

php artisan vendor:publish

要开始使用此包,您必须在应用程序中包含其服务提供程序和中间件。要包含服务提供程序,只需转到您的 config/app.php 文件,找到 providers 数组,并在底部追加语言切换器提供程序。

    'providers' => [
        .
        .
        .
        ied3vil\LanguageSwitcher\Providers\LanguageSwitcherProvider::class,
    ],

接下来,转到 app/Http/Kernel.php 并找到中间件数组。您有两个选项

  1. 将中间件注册为路由并在需要它的路由中使用它,如果您只想为需要它的路由使用它
  2. 推荐:在 'web' 中间件组中包含中间件,使其全局可用。如果不包含中间件,将无法注册区域设置,所选语言将无法注册。请确保将中间件放在数组的末尾,因为它依赖于会话来工作。
        'web' => [
            .
            .
            .
            \ied3vil\LanguageSwitcher\Middleware\LanguageSwitcherMiddleware::class,
        ],

现在您已经准备好使用语言切换器了!

使用方法

在您的 app.locale 配置值中设置的默认语言将被设置。您可以在 config/app.php 配置文件中找到它。

切换当前语言有多种方式。

  1. 使用提供的门面:LanguageSwitcher::setLanguage($language)
  2. 使用提供的 /lang/{language} 路由。配置文件提供了更改实际 "lang" 路由的灵活性。此路由可以通过配置更改。

当使用提供的路由切换语言时,设置新语言后,您将被重定向到 '/' 路由。

您应该已经设置好了!您现在可以开始用多种语言编写内容!有关更多信息,请参阅 Laravel 文档

或者,您可以使用自己的路由自行设置,只需将会话值 'language' 设置为新区域设置并重定向。

配置

此包附带了许多配置选项

return [
    'switchPath' => 'lang',
    'store' => 'session',
    'key' => 'language',
    'redirect' => 'route', //can be set to route | back
    'redirect_route' => '/',
];

如上所述的配置选项可用于自定义切换器的功能,具体说明如下。您可以自由使用任何方法来配置包。请记住使用 publish:vendor 命令以避免意外问题。

设置选项,您可以采用以下任何一种方法

  1. 修改配置文件 config/languageswitcher.php,编辑提供的键的值(推荐)
  2. 使用laravel的运行时配置助手 - Config::set() | config()->set(),并指定您使用'languageswitcher'前缀的键(例如,languageswitcher.switchPath用于更改切换路径)。
修改切换器的路由(默认:lang/{language_flag})
  • 配置键:languageswitcher.switchPath
  • 默认值:lang

此配置设置动态设置包中为切换语言创建的路由。

更改存储方法 - 会话 | cookie(默认:会话)
  • 配置键:languageswitcher.store
  • 默认值:session
  • 接受的值:session | cookie

此配置设置更改语言标志的存储方法。默认为会话,但可以使用cookie,其有效期设置为永久。最初这是设置为具有可配置有效期的cookie,但出于明显的原因,它被设置为永远不会过期。

更改存储语言标志的键(默认:lang)
  • 配置键:languageswitcher.key
  • 默认值:language

此配置设置决定在会话或cookie中存储语言标志时使用哪个键。

更改重定向类型(默认:重定向到'/'路由)
  • 配置键:languageswitcher.redirectlanguageswitcher.redirect_route
  • languageswitcher.redirect的默认值:route
  • 接受的值:route | back
  • languageswitcher.redirect_route的默认值:/

languageswitcher.redirect配置值设置为route时,在设置新的语言标志后,用户将被重定向到指定的languageswitcher.redirect_route。将languageswitcher.redirect设置为back将在设置新的语言标志后将用户重定向回上一页。

示例

我最喜欢的用法是:我包含库,创建我的语言切换UI,然后开始翻译!

示例HTML

<ul class="dropdown-menu">
    <li><a href="{{ url('lang/en') }}"><img src="/img/flags/en.png" alt="">{{ trans('locale.en') }}</a></li>
    <li><a href="{{ url('lang/dk') }}"><img src="/img/flags/dk.png" alt="">{{ trans('locale.dk') }}</a></li>
    <li><a href="{{ url('lang/sw') }}"><img src="/img/flags/sw.png" alt="">{{ trans('locale.sw') }}</a></li>
</ul>

如果您想突出显示当前选择的语言,您可以使用App::getLocale()或LanguageSwitcher::getCurrentLanguage()。

错误/问题/改进

请随意使用github进行问题反馈和提出改进建议。