nniicc/language-switcher

Laravel 语言切换器

v0.1 2017-09-13 09:22 UTC

This package is not auto-updated.

Last update: 2024-09-29 03:31:16 UTC


README

Laravel 语言切换器包

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

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

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

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

composer require nniicc/language-switcher

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

php artisan vendor:publish

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

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

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

  1. 将中间件注册为路由并在您需要的路由中使用它
  2. 推荐:将中间件包含在 'web' 中间件组中,使其全局可用。如果不包含中间件,将无法注册区域设置,并且当前选定的语言将无法注册。请确保在数组末尾包含中间件,因为它依赖于会话才能工作。
        'web' => [
            .
            .
            .
            \nniicc\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

此配置设置会动态设置包中创建的用于切换语言的路由。#####更改存储方法 - 会话 | cookies(默认:会话)

  • 配置键:languageswitcher.store
  • 默认值:session
  • 接受值:session | cookie

此配置设置更改语言标记的存储方法。默认为会话,但可以使用有效期无限的cookies。最初这是设置为具有可配置有效期的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上报告问题或提出改进建议。##更多信息您可以在我的网站上找到有关此包的更多信息,网址为www.nniicc.com