lankhaar / laravel-multilingual
为您的多语言Laravel应用程序添加语言切换器
dev-main
2022-06-21 21:24 UTC
Requires
- php: ^8.1
Requires (Dev)
- orchestra/testbench: ^7.5
- phpstan/phpstan: ^1.7
This package is not auto-updated.
Last update: 2024-09-26 06:27:05 UTC
README
安装
您可以通过composer安装此软件包
composer require lankhaar/laravel-multilingual
然后发布配置
php artisan vendor:publish --provider="Lankhaar\Multilingual\MultilingualServiceProvider"
用法
配置可用的区域设置
您可以通过以下方式编辑config/multilingual.php文件来配置可用的区域设置:
'availableLocales' => [ 'en' => 'English', 'nl' => 'Dutch', ],
在导航中显示语言切换器
当前的语言切换器仅与bootstrap navbars兼容。如果您在项目中未使用bootstrap,您可以轻松地为它创建自己的布局。如果您正在使用bootstrap,只需在navbar中调用@multilingualSwitcher即可,如下所示
<nav id="navbar" class="navbar"> <ul class="nav"> <li class="nav-item"> <a class="nav-link" href="{{ route('home') }}">{{ __('Home') }}</a> </li> <li class="nav-item"> <a class="nav-link" href="{{ route('about') }}">{{ __('About') }}</a> </li> <li class="nav-item"> <a class="nav-link" href="{{ route('services') }}">{{ __('Services') }}</a> </li> <li class="nav-item"> <a class="nav-link" href="{{ route('contact') }}">{{ __('Contact') }}</a> </li> @multilingualSwitcher </ul> </nav>
创建自己的语言切换器布局
如前所述,软件包附带的标准布局专门设计用于适应bootstrap导航。如果您没有使用bootstrap,您可能最好创建自己的布局。
在您的项目中创建一个名为resources/views/vendor/laravel-multilingual/language-switcher.blade.php的文件以覆盖现有的语言切换器模板。请参阅下面的代码片段,了解如何遍历可用的区域设置并将它们链接起来。
@if(count($locales = getMultilingualLocales()) > 1) <li class="dropdown"> <a href="#"><span>{{ __('Language') }}</span> <i class="fa fa-chevron-down" aria-hidden="true"></i></a> <ul> @foreach($locales as $locale => $label) <li><a href="{{ route('switch-locale', ['locale' => $locale]) }}">{{ __($label) }}</a></li> @endforeach </ul> </li> @endif
现在您可以使用@multilingualSwitcher blade指令在任何您想的地方调用它
测试
composer test
变更日志
有关最近更改的更多信息,请参阅变更日志
支持的功能
请随意创建问题以请求功能!
- 按会话支持语言(不更改域或URL结构);
- 支持按域支持语言(
example.com,example.nl); - 支持URL中的语言(
/en/example,/nl/example);
高级配置
/* * Define the default locale. */ 'defaultLocale' => env('LOCALE_DEFAULT', 'en'), /* * Define the locale identifier type. * * Possible values: * - session: Locale chosen by the user is stored in the session; * - domain: Domain will switch based of chosen locale (domains can be configured in localeDomains config); * - url: URL's change based of the chosen locale (routes will be prefixed with the locale like /en/example or /nl/example); */ 'localeIdentifierType' => env('LOCALE_IDENTIFIER_TYPE', 'session'), /* * Configure the available locales for your application. * Define as an array with locale as array key and label in language switcher as array value. */ 'availableLocales' => [ 'en' => 'English', 'nl' => 'Dutch', ], /* * Locale domains (only used when localeIdentifierType is set to domain). */ 'localeDomains' => [ 'en' => env('LOCALE_EN_DOMAIN_URL', 'example.com'), 'nl' => env('LOCALE_NL_DOMAIN_URL', 'example.nl'), ],