nniicc / language-switcher
Laravel 语言切换器
Requires
- php: >=5.3.0
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 并找到中间件数组。您有两个选项
- 将中间件注册为路由并在您需要的路由中使用它
- 推荐:将中间件包含在 'web' 中间件组中,使其全局可用。如果不包含中间件,将无法注册区域设置,并且当前选定的语言将无法注册。请确保在数组末尾包含中间件,因为它依赖于会话才能工作。
'web' => [
.
.
.
\nniicc\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
此配置设置会动态设置包中创建的用于切换语言的路由。#####更改存储方法 - 会话 | cookies(默认:会话)
- 配置键:
languageswitcher.store - 默认值:
session - 接受值:
session | cookie
此配置设置更改语言标记的存储方法。默认为会话,但可以使用有效期无限的cookies。最初这是设置为具有可配置有效期的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上报告问题或提出改进建议。##更多信息您可以在我的网站上找到有关此包的更多信息,网址为www.nniicc.com。