corecave / laratrans
Laravel 帮助包,用于构建数据库多语言网站。
This package is auto-updated.
Last update: 2024-09-07 09:26:03 UTC
README
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 包后,您需要将 MasterTranslatable 和 DetailsTranslatable 特性添加到您想要本地化的模型中。另外,
注意:请注意,从属模型必须以下划线 _ 开头,其相关表必须以前置双下划线 __ 开头(例如 Person => _Person,people => __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'); } }
然后,为 locales、people 和 __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)。有关更多信息,请参阅 许可文件。