corecave/laratrans

Laravel 帮助包,用于构建数据库多语言网站。

v1.0.1 2020-07-06 21:28 UTC

This package is auto-updated.

Last update: 2024-09-07 09:26:03 UTC


README

GitHub issues GitHub forks GitHub stars GitHub license

Laravel 翻译包,用于构建数据库本地化多语言网站。

内容

安装

您可以通过 composer 安装此包

composer require corecave/laratrans

Laravel 自动发现服务提供者
或者
手动添加服务提供者

// config/app.php
'providers' => [
    // ...
    CoreCave\Laratrans\LaratransServiceProvider::class,
],

CoreCave\Laratrans\Middleware\Locale 添加到 app\Http\Kernel.php 文件中的 $routeMiddleware 数组。

// app\Http\Kernel.php
  protected $routeMiddleware = [
        // ...

        'laratrans' => \CoreCave\Laratrans\Middleware\Locale::class,
    ];

将您的数据库凭证放入您的 .env 文件中

然后您应该迁移数据库

php artisan migrate

使用

安装 laratrans 包后,您需要将 MasterTranslatableDetailsTranslatable 特性添加到您想要本地化的模型中。另外,
注意:请注意,从属模型必须以下划线 _ 开头,其相关表必须以前置双下划线 __ 开头(例如 Person => _Personpeople => __people
然后,在迁移中定义包为本地化工作所需的所有字段

//app\Person.php

<?php

namespace App;

use CoreCave\Laratrans\Translation\MasterTranslatable;
use Illuminate\Database\Eloquent\Model;

class Person extends Model
{
    use MasterTranslatable;
}
//app\_Person.php

<?php

namespace App;

use CoreCave\Laratrans\Translation\DetailsTranslatable;
use Illuminate\Database\Eloquent\Model;

class _Person extends Model
{
    use DetailsTranslatable;
}

如果您需要为您的模型指定不同的外键名称,只需在 MasterTranslatable 特性上覆盖 getForeignKeyName

//database\migrations\2020_07_06_185838_create_people_table.php

<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

class CreatePeopleTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('people', function (Blueprint $table) {
            $table->id();
            $table->integer('age');
            $table->float('hight');
            $table->float('weight');
            $table->timestamps();
        });

        Schema::create('__people', function (Blueprint $table) {
            $table->id();
            $table->string('name');
            $table->mediumText('bio');
            $table->integer('person_id');
            $table->integer('locale_id');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('people');
        Schema::dropIfExists('__people');
    }
}

然后,为 localespeople__people 表设置一些模型、迁移、工厂和种子,或者您可以发布它们以加快开发速度

php artisan vendor:publish --tag="laratrans"

如果您想查看本地化功能,只需在您的 routes/web.php) 文件中设置一些虚拟路由。

// routes/web.php

use App\Person;
use Illuminate\Support\Facades\Route;

Route::get('/', function () {
    return Person::first()->trans();
});

Route::get('/ar', function () {
    return Person::first()->trans('ar');
});

Route::middleware('laratrans:web')->get('/trans', function () {
    return Person::first()->trans();
});

更改应用程序语言。

要更改您的应用程序本地化代码,请向 http://yourdomain.com/localize/web/en 发送 GET 请求。

此路由的构造方式为 http://yourdomain.com/localize/{guard}/{locale-code}

考虑捐赠

成为 Patreon 成员,鼓励我们做得更多。[成为 Patreon 成员]

致谢

许可

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