ozanakman/laravel-multilingual

此包已被废弃,不再维护。没有建议的替代包。

为 Laravel 应用提供简单的本地化。

安装: 11

依赖: 0

建议者: 0

安全: 0

星标: 11

关注者: 1

分支: 0

类型:项目

1.0 2018-11-03 15:43 UTC

This package is auto-updated.

Last update: 2020-08-28 19:56:47 UTC


README

简介

Multilingual 是一个用于 Laravel 应用的本地化包。它具有内置方法,使本地化变得简单。它旨在为您提供开发速度,无需担心区域设置。

此包由 Ozan Akman 创建

  • 轻松处理重定向(基于域名或路径)
  • 扩展了本地化路由的路由类
  • Blade 指令 @forEachLocale
  • 高度可定制

安装

您可以使用 Composer 将 Multilingual 安装到您的 Laravel 项目中

composer require ozanakman/laravel-multilingual

注意: Multilingual 需要 Laravel 5.7.0+。

安装 Multilingual 后,使用 multilingual:install Artisan 命令发布其资产。它将迁移 localestranslations 表。

php artisan multilingual:install

发布 Multilingual 的资产后,其主配置文件位于 config/multilingual.php

配置

在配置文件中有两个选项。

pattern 用于处理重定向以及系统如何处理 URL。模式只能是 domainpath

当您选择 domain 作为模式时,本地化 URL 将类似于这样:en.domain.comtr.domain.com

当您选择 path 作为模式时,本地化 URL 将类似于这样:domain.com/endomain.com/tr

另一个选项仅用于自定义 中间件。您可以使用处理重定向的 OzanAkman\Multilingual\Middleware\Localize,或者创建自己的。

发布配置文件的内容

return [
    /*
     * How we should treat urls to get the selected language?
     * http://{domain}.site.com
     * http://site.com/{path}
     *
     * Supported: "domain", "path"
     */
    'pattern' => 'path',

    /**
     * Localization middleware to handle user redirects.
     */
    'middleware' => OzanAkman\Multilingual\Middleware\Localize::class,
];

本地化路由

您可以混合使用本地化路由。 Route::locale 为每个区域创建本地化 URL。在下面的示例中,用户通过访问 domain.com/en/homedomain.com/tr/home 将看到 welcome 视图。

Route::locale(function () {
    Route::get('/home', function () {
        return view('welcome');
    });
});

您还可以像 Route::group 方法一样向 Route::locale 添加属性。

Route::locale(['middleware' => 'auth'], function () {
    Route::get('/invoice/{invoiceId}', 'InvoiceController@show');
});

最终,这只是一个快捷方式。

Blade 指令

您可以轻松处理基于区域的组件,如语言选择下拉菜单或多语言内容编辑器等。

您可以像需要一样使用此指令。区域设置在幕后被缓存。因此,无需担心。

@forEachLocale($item)
{{ $item->code }}
{{ $item->name }}
{{ $item->native_name }}
{{ $item->enabled }}
{{ $item->default }}
@endForEachLocale

模型

LocaleTranslation 模型文件位于 OzanAkman\Multilingual\Models 命名空间下。

区域设置

  • 您可以通过调用 Artisan 命令添加新区域设置
php artisan multilingual:add {code} {name} {native name}
php artisan multilingual:add tr Turkish Türkçe
  • 删除语言
php artisan multilingual:remove tr

请注意,此命令将删除属于该区域设置的所有翻译。

手动,您可以使用区域模型添加/编辑/删除区域设置。

翻译

OzanAkman\Multilingual\Models\Traits\HasMultilingualContent 特性添加到您的模型文件中。

  • 获取模型的翻译版本
$model->translate('en');
  • 将模型翻译成其他语言
$model->translate('en', [
    'column' => 'translated_version'
]);
  • 删除翻译
$model->removeTranslation('en');
  • 处理翻译别名(slug)非常简单。您只需将 slugSource() 方法添加到您的主体模型中。
class ExampleModel extends Model
{
    public function slugSource()
    {
        // Column
        return 'title';
    }
}

现在,当您添加翻译时,Multilingual 将通过 cocur/slugify 包从 title 列生成 slug

测试

Multilingual 使用 Orchestra\Testbench 运行测试。

vendor/bin/phpunit

贡献

有关详细信息,请参阅 CONTRIBUTING