vortgo/laravel-translate

laravel项目的翻译系统

1.0.0 2017-05-27 10:34 UTC

This package is not auto-updated.

Last update: 2024-09-15 02:35:33 UTC


README

SensioLabsInsight

翻译实体

关于包

此包旨在为您的模型添加多语言支持。如果您的应用程序已经运行,您需要向数据库中的内容添加一个或多个额外的语言,这将非常简单。

安装

在您的composer.json中要求此包

$ composer reqiure vortgo/laravel-translate

将服务提供者添加到您的配置文件config/app.php

Vortgo\Translate\ModelTranslateServiceProvider::class

发布供应商

    $ php artisan vendor:publish

运行迁移以创建您的可翻译内容的表

$ php artisan migrate

将特质添加到需要翻译的模型中,并为您的模型设置默认语言

    class Category extends Model
    {
        use Translate;
        protected $defaultLocale = 'en';
    }

用法

您可以使用通常的方式创建带有翻译的实体

        Category::create([
            'name' => 'name',
            'ru' => [
                'name' => 'название'
            ],
            'fr' => [
                'name' => 'fr name'
            ]
        ]);

访问翻译值,您可以使用以下变体

确定调用时机

    $category->translate('fr')->name

使用您的应用程序区域设置

    App()->setLocale('fr')
    $category->name

获取当前模型的全部翻译属性

$category->getTranslations('fr')

附加功能

您可以使用关系为预加载您的模型

    App()->setLocale('fr');
    $item = Item::with('category', 'category.rTranslate')->first();
    $item->category->name;

带有关系的数组

    App()->setLocale('fr');
    $item = Item::with('category', 'category.rTranslate')->first();
    $item->toArray();
    Result = [
        'id' =>1,
        'item_name' => 'name',
        'category' => [
            'name' => 'fr name'
        ]
    ];

如果您想覆盖函数toArray(),请在您的模型中使用translateToArray()

    public function toArray()
    {
        $array = $this->translateToArray(); //parent::toArray()

        // Your code here

        return $array;
    }