adamibrahim/localization

Laravel 5.6 本地化包,包含语言选择器

v0.2.8 2018-03-16 11:17 UTC

README

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

Laravel 5.6 本地化包,包含

  • 语言选择器
  • 网站和CMS/后端的不同语言会话
  • 语言列表存储在数据库的languages表中
  • 在languages表中,你可以为[active, default]设置布尔值

演示

你可以看到演示

安装

通过Composer安装包
$ composer require adamibrahim/localization
如果你在安装Laravel 5.5或更高版本,可以直接跳到发布,否则你将需要编辑composer.json,注册服务提供者和中间件

composer.json

将以下代码添加到主目录下的composer.json的autoload部分

"psr-4": {
            "Adam\\Localization\\": "vendor/adamibrahim/localization/src"
        }

服务提供者

在文件config/app.php中,在* 包服务提供者...下注册服务提供者

Adam\Localization\LocalizationServiceProvider::class,
中间件

如果你使用的Laravel版本低于5.5,需要在App\Http\Kernel.php中注册lang中间件

  • 在protected $routeMiddleware = []数组中添加以下代码
'lang' => \Adam\Localization\Middleware\Localization::class,

发布

可选发布标志文件夹,包含标志svg图片/和配置文件

$ php artisan vendor:publish --tag=Localization --force

数据库迁移

运行Artisan迁移命令

$ php artisan migrate

播种

运行Artisan播种命令

$ php artisan db:seed --class=Adam\Localization\database\seeds\LanguagesTableSeeder

Artisan播种错误

如果你收到这个错误

类Adam\Localization\database\seeds\LanguagesTableSeeder不存在

那么你可能需要通过运行以下命令来卸载自动加载

$ composer dump-autoload

然后再次运行播种命令

$ php artisan db:seed --class=Adam\Localization\database\seeds\LanguagesTableSeeder

使用方法

你需要将'lang'中间件添加到所有路由中

->middleware('lang')

将语言更改按钮添加到你的网站页面/

@if (($languages)->count() > 1)
    <li class="nav-item dropdown">
        <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" 
        data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
            <img src="{{ asset('img/flags/'.$lang['flag']) }}"> {{ $lang['abbr'] }}<span class="caret"></span>
        </a>

        <div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdownMenuLink">
            @foreach($languages as $language)
                <a href="{{ route('language.change', $language->abbr) }}" class="dropdown-item">
                    <img src="{{ asset('img/flags/'.$language->flag) }}"> {{$language->native}}
                </a>
            @endforeach
        </div>
    </li>
@endif

可选地,如果你需要,可以添加不同的语言会话,例如管理控制台

@if (($languages_back)->count() > 1)
    <li class="nav-item dropdown">
        <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" 
        data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
            <img src="{{ asset('img/flags/'.$lang_back['flag']) }}"> {{ $lang_back['abbr'] }}<span class="caret"></span>
        </a>

        <div class="dropdown-menu dropdown-menu-right" aria-labelledby="navbarDropdownMenuLink">
            @foreach($languages_back as $language)
                <a href="{{ route('admin.back.language', $language->abbr) }}" class="dropdown-item">
                    <img src="{{ asset('img/flags/'.$language->flag) }}"> {{$language->native}}
                </a>
            @endforeach
        </div>
    </li>
@endif

可选地,如果路由前缀为'admin',lang_back会话将设置应用程序的区域设置。如果你希望更改路由前缀,简单修改config\localization.php配置文件中的前缀

贡献

贡献

有关详细信息,请参阅CONTRIBUTINGCODE_OF_CONDUCT

安全

如果你发现任何安全相关的问题,请通过:author_email发送电子邮件,而不是使用问题跟踪器。

致谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件