ied3vil / language-switcher
Laravel 语言切换器
Requires
- php: >=5.3.0
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 并找到中间件数组。您有两个选项
- 将中间件注册为路由并在需要它的路由中使用它,如果您只想为需要它的路由使用它
- 推荐:在 'web' 中间件组中包含中间件,使其全局可用。如果不包含中间件,将无法注册区域设置,所选语言将无法注册。请确保将中间件放在数组的末尾,因为它依赖于会话来工作。
'web' => [
.
.
.
\ied3vil\LanguageSwitcher\Middleware\LanguageSwitcherMiddleware::class,
],
现在您已经准备好使用语言切换器了!
使用方法
在您的 app.locale 配置值中设置的默认语言将被设置。您可以在 config/app.php 配置文件中找到它。
切换当前语言有多种方式。
- 使用提供的门面:
LanguageSwitcher::setLanguage($language) - 使用提供的
/lang/{language}路由。配置文件提供了更改实际 "lang" 路由的灵活性。此路由可以通过配置更改。
当使用提供的路由切换语言时,设置新语言后,您将被重定向到 '/' 路由。
您应该已经设置好了!您现在可以开始用多种语言编写内容!有关更多信息,请参阅 Laravel 文档。
或者,您可以使用自己的路由自行设置,只需将会话值 'language' 设置为新区域设置并重定向。
配置
此包附带了许多配置选项
return [
'switchPath' => 'lang',
'store' => 'session',
'key' => 'language',
'redirect' => 'route', //can be set to route | back
'redirect_route' => '/',
];
如上所述的配置选项可用于自定义切换器的功能,具体说明如下。您可以自由使用任何方法来配置包。请记住使用 publish:vendor 命令以避免意外问题。
设置选项,您可以采用以下任何一种方法
- 修改配置文件
config/languageswitcher.php,编辑提供的键的值(推荐) - 使用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.redirect和languageswitcher.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进行问题反馈和提出改进建议。