lankhaar/laravel-multilingual

为您的多语言Laravel应用程序添加语言切换器

dev-main 2022-06-21 21:24 UTC

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.comexample.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'),
],