mindtwo/laravel-translatable

此包是Laravel的扩展,用于轻松翻译模型属性,使您的应用程序能够无缝支持多语言。

1.2.2 2024-07-05 07:31 UTC

README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

概述

mindtwo/laravel-translatable 包为Laravel应用程序中管理多语言模型提供了一种简单而有效的方式。它允许您轻松地将Eloquent模型属性翻译成多种语言,无需为每种语言单独创建表。

功能

  • 易于与Eloquent模型集成。
  • 无缝翻译模型属性。
  • 简单配置和使用。

安装

要在您的Laravel项目中安装此包,请运行以下命令

composer require mindtwo/laravel-translatable

您可以使用以下命令发布并运行迁移

php artisan vendor:publish --tag="translatable-migrations"
php artisan migrate

您可以使用以下命令发布配置文件

php artisan vendor:publish --tag="translatable-config"

这是发布后的配置文件内容

<?php

use mindtwo\LaravelTranslatable\Models\Translatable;

return [
    'model' => Translatable::class,
];

设置

安装后,您需要发布并运行迁移

php artisan vendor:publish --provider="mindtwo\LaravelTranslatable\TranslatableServiceProvider"
php artisan migrate

这将创建数据库中的 translatable 表。

使用方法

创建可翻译模型

  1. 迁移:使用提供的 create_translatable_table.php 迁移来设置 translatable 表。

  2. 模型特质:在您的模型中包含 HasTranslations 特质。此特质提供与翻译交互的方法。

    use mindtwo\LaravelTranslatable\Traits\HasTranslations;
    
    class YourModel extends Model
    {
        use HasTranslations;
    
        // Model content
    }
  3. 可翻译模型:使用 Translatable 模型来存储翻译。它使用 AutoCreateUuid 特质进行唯一标识。

    use mindtwo\LaravelTranslatable\Models\Translatable;
    
    // Usage within your application logic

处理翻译

  • 添加翻译:

    $yourModelInstance->translations()->create([
        'key' => 'your_key',
        'locale' => 'en',
        'text' => 'Your translation text'
    ]);
  • 检查翻译:

    $exists = $yourModelInstance->hasTranslation('your_key', 'en');
  • 获取翻译:

    $translation = $yourModelInstance->getTranslation('your_key', 'en');
  • 检索所有翻译:

    $translations = $yourModelInstance->getTranslations();

最佳实践

  • 在尝试检索翻译之前,请始终检查翻译是否存在。
  • 在不同模型间使用一致的键,以保持清晰。
  • 定期备份您的翻译,因为它们存储在数据库中。

测试

composer test

变更日志

请参阅 变更日志 了解最近更改的更多信息。

贡献

请参阅 贡献指南 了解详细信息。

安全漏洞

请参阅 我们的安全策略 了解如何报告安全漏洞。

鸣谢

许可证

MIT许可证(MIT)。请参阅 许可证文件 了解更多信息。